diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..388f4c0
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,285 @@
+//
+// SPDX-FileCopyrightText: 2023 The LineageOS Project
+// SPDX-License-Identifier: Apache-2.0
+//
+
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+android_app {
+    name: "Dialer",
+    aaptflags: [
+        "--auto-add-overlay",
+        "--extra-packages com.android.contacts.common",
+        "--extra-packages com.android.dialer.app",
+        "--extra-packages com.android.dialer.assisteddialing",
+        "--extra-packages com.android.dialer.assisteddialing.ui",
+        "--extra-packages com.android.dialer.blocking",
+        "--extra-packages com.android.dialer.blockreportspam",
+        "--extra-packages com.android.dialer.calldetails",
+        "--extra-packages com.android.dialer.calllog.database",
+        "--extra-packages com.android.dialer.calllog.ui",
+        "--extra-packages com.android.dialer.calllog.ui.menu",
+        "--extra-packages com.android.dialer.calllogutils",
+        "--extra-packages com.android.dialer.clipboard",
+        "--extra-packages com.android.dialer.common",
+        "--extra-packages com.android.dialer.contactphoto",
+        "--extra-packages com.android.dialer.contacts.displaypreference",
+        "--extra-packages com.android.dialer.contacts.resources",
+        "--extra-packages com.android.dialer.contactsfragment",
+        "--extra-packages com.android.dialer.databasepopulator",
+        "--extra-packages com.android.dialer.dialpadview",
+        "--extra-packages com.android.dialer.dialpadview.theme",
+        "--extra-packages com.android.dialer.glidephotomanager.impl",
+        "--extra-packages com.android.dialer.historyitemactions",
+        "--extra-packages com.android.dialer.interactions",
+        "--extra-packages com.android.dialer.lettertile",
+        "--extra-packages com.android.dialer.location",
+        "--extra-packages com.android.dialer.main.impl",
+        "--extra-packages com.android.dialer.main.impl.bottomnav",
+        "--extra-packages com.android.dialer.main.impl.toolbar",
+        "--extra-packages com.android.dialer.notification",
+        "--extra-packages com.android.dialer.oem",
+        "--extra-packages com.android.dialer.phonelookup.database",
+        "--extra-packages com.android.dialer.phonenumberutil",
+        "--extra-packages com.android.dialer.postcall",
+        "--extra-packages com.android.dialer.precall.externalreceiver",
+        "--extra-packages com.android.dialer.precall.impl",
+        "--extra-packages com.android.dialer.preferredsim.impl",
+        "--extra-packages com.android.dialer.preferredsim.suggestion",
+        "--extra-packages com.android.dialer.promotion.impl",
+        "--extra-packages com.android.dialer.rtt",
+        "--extra-packages com.android.dialer.searchfragment.common",
+        "--extra-packages com.android.dialer.searchfragment.cp2",
+        "--extra-packages com.android.dialer.searchfragment.directories",
+        "--extra-packages com.android.dialer.searchfragment.list",
+        "--extra-packages com.android.dialer.searchfragment.nearbyplaces",
+        "--extra-packages com.android.dialer.shortcuts",
+        "--extra-packages com.android.dialer.simulator.impl",
+        "--extra-packages com.android.dialer.simulator.service",
+        "--extra-packages com.android.dialer.spannable",
+        "--extra-packages com.android.dialer.speeddial",
+        "--extra-packages com.android.dialer.theme",
+        "--extra-packages com.android.dialer.theme.base",
+        "--extra-packages com.android.dialer.theme.base.impl",
+        "--extra-packages com.android.dialer.theme.common",
+        "--extra-packages com.android.dialer.theme.hidden",
+        "--extra-packages com.android.dialer.util",
+        "--extra-packages com.android.dialer.voicemail.listui",
+        "--extra-packages com.android.dialer.voicemail.listui.error",
+        "--extra-packages com.android.dialer.voicemail.settings",
+        "--extra-packages com.android.dialer.voicemailstatus",
+        "--extra-packages com.android.dialer.widget",
+        "--extra-packages com.android.incallui",
+        "--extra-packages com.android.incallui.answer.impl",
+        "--extra-packages com.android.incallui.answer.impl.affordance",
+        "--extra-packages com.android.incallui.answer.impl.answermethod",
+        "--extra-packages com.android.incallui.answer.impl.hint",
+        "--extra-packages com.android.incallui.audioroute",
+        "--extra-packages com.android.incallui.autoresizetext",
+        "--extra-packages com.android.incallui.callpending",
+        "--extra-packages com.android.incallui.commontheme",
+        "--extra-packages com.android.incallui.contactgrid",
+        "--extra-packages com.android.incallui.disconnectdialog",
+        "--extra-packages com.android.incallui.hold",
+        "--extra-packages com.android.incallui.incall.impl",
+        "--extra-packages com.android.incallui.rtt.impl",
+        "--extra-packages com.android.incallui.rtt.protocol",
+        "--extra-packages com.android.incallui.sessiondata",
+        "--extra-packages com.android.incallui.spam",
+        "--extra-packages com.android.incallui.telecomeventui",
+        "--extra-packages com.android.incallui.video.impl",
+        "--extra-packages com.android.incallui.video.protocol",
+        "--extra-packages com.android.voicemail",
+        "--extra-packages com.android.voicemail.impl",
+        "--extra-packages com.android.voicemail.impl.configui",
+    ],
+    aidl: {
+        local_include_dirs: ["java"],
+    },
+    certificate: "shared",
+    exclude_srcs: ["java/com/android/dialer/rootcomponentgenerator/*.java"],
+    libs: [
+        "auto_value_annotations",
+        "org.apache.http.legacy",
+    ],
+    optimize: {
+        proguard_flags_files: [
+            "java/com/android/dialer/common/proguard.flags",
+            "java/com/android/dialer/proguard/proguard.flags",
+            "java/com/android/dialer/proguard/proguard_base.flags",
+            "java/com/android/dialer/proguard/proguard_release.flags",
+            "java/com/android/incallui/answer/impl/proguard.flags",
+            "java/com/android/voicemail/impl/proguard.flags",
+            "proguard.flags",
+        ],
+    },
+    optional_uses_libs: ["org.apache.http.legacy"],
+    plugins: [
+        "auto_value_plugin",
+        "dagger2-compiler",
+        "dialer-rootcomponentprocessor",
+        "glide-annotation-processor",
+    ],
+    privileged: true,
+    product_specific: true,
+    required: [
+        "privapp_whitelist_com.android.dialer",
+        "privapp_whitelist_com.android.dialer-ext.xml",
+    ],
+    resource_dirs: [
+        "assets/quantum/res",
+        "java/com/android/contacts/common/res",
+        "java/com/android/dialer/app/res",
+        "java/com/android/dialer/assisteddialing/res",
+        "java/com/android/dialer/assisteddialing/ui/res",
+        "java/com/android/dialer/blocking/res",
+        "java/com/android/dialer/blockreportspam/res",
+        "java/com/android/dialer/calldetails/res",
+        "java/com/android/dialer/calllog/ui/menu/res",
+        "java/com/android/dialer/calllogutils/res",
+        "java/com/android/dialer/callrecord/res",
+        "java/com/android/dialer/callstats/res",
+        "java/com/android/dialer/clipboard/res",
+        "java/com/android/dialer/common/res",
+        "java/com/android/dialer/contactphoto/res",
+        "java/com/android/dialer/contacts/displaypreference/res",
+        "java/com/android/dialer/contacts/resources/res",
+        "java/com/android/dialer/contactsfragment/res",
+        "java/com/android/dialer/dialpadview/res",
+        "java/com/android/dialer/dialpadview/theme/res",
+        "java/com/android/dialer/glidephotomanager/impl/res",
+        "java/com/android/dialer/helplines/res",
+        "java/com/android/dialer/historyitemactions/res",
+        "java/com/android/dialer/interactions/res",
+        "java/com/android/dialer/lettertile/res",
+        "java/com/android/dialer/lookup/res",
+        "java/com/android/dialer/main/impl/bottomnav/res",
+        "java/com/android/dialer/main/impl/res",
+        "java/com/android/dialer/main/impl/toolbar/res",
+        "java/com/android/dialer/notification/res",
+        "java/com/android/dialer/oem/res",
+        "java/com/android/dialer/phonenumberutil/res",
+        "java/com/android/dialer/postcall/res",
+        "java/com/android/dialer/precall/impl/res",
+        "java/com/android/dialer/preferredsim/impl/res",
+        "java/com/android/dialer/preferredsim/suggestion/res",
+        "java/com/android/dialer/promotion/impl/res",
+        "java/com/android/dialer/rtt/res",
+        "java/com/android/dialer/searchfragment/common/res",
+        "java/com/android/dialer/searchfragment/cp2/res",
+        "java/com/android/dialer/searchfragment/directories/res",
+        "java/com/android/dialer/searchfragment/list/res",
+        "java/com/android/dialer/searchfragment/nearbyplaces/res",
+        "java/com/android/dialer/searchfragment/remote/res",
+        "java/com/android/dialer/shortcuts/res",
+        "java/com/android/dialer/spannable/res",
+        "java/com/android/dialer/speeddial/res",
+        "java/com/android/dialer/theme/base/res",
+        "java/com/android/dialer/theme/common/res",
+        "java/com/android/dialer/theme/hidden/res",
+        "java/com/android/dialer/theme/res",
+        "java/com/android/dialer/util/res",
+        "java/com/android/dialer/voicemail/listui/error/res",
+        "java/com/android/dialer/voicemail/listui/res",
+        "java/com/android/dialer/voicemail/settings/res",
+        "java/com/android/dialer/widget/res",
+        "java/com/android/incallui/answer/impl/affordance/res",
+        "java/com/android/incallui/answer/impl/answermethod/res",
+        "java/com/android/incallui/answer/impl/res",
+        "java/com/android/incallui/audioroute/res",
+        "java/com/android/incallui/autoresizetext/res",
+        "java/com/android/incallui/callpending/res",
+        "java/com/android/incallui/commontheme/res",
+        "java/com/android/incallui/contactgrid/res",
+        "java/com/android/incallui/disconnectdialog/res",
+        "java/com/android/incallui/hold/res",
+        "java/com/android/incallui/incall/impl/res",
+        "java/com/android/incallui/res",
+        "java/com/android/incallui/rtt/impl/res",
+        "java/com/android/incallui/sessiondata/res",
+        "java/com/android/incallui/spam/res",
+        "java/com/android/incallui/telecomeventui/res",
+        "java/com/android/incallui/theme/res",
+        "java/com/android/incallui/video/impl/res",
+        "java/com/android/incallui/video/protocol/res",
+        "java/com/android/voicemail/impl/configui/res",
+        "java/com/android/voicemail/impl/res",
+    ],
+    sdk_version: "system_current",
+    srcs: [
+        "java/**/I*.aidl",
+        "java/**/*.java",
+    ],
+    static_libs: [
+        "android-common",
+        "androidx.annotation_annotation",
+        "androidx.appcompat_appcompat",
+        "androidx.cardview_cardview",
+        "androidx.collection_collection",
+        "androidx.coordinatorlayout_coordinatorlayout",
+        "androidx.dynamicanimation_dynamicanimation",
+        "androidx.exifinterface_exifinterface",
+        "androidx.fragment_fragment",
+        "androidx.localbroadcastmanager_localbroadcastmanager",
+        "androidx.preference_preference",
+        "androidx.recyclerview_recyclerview",
+        "apache-commons-compress",
+        "com.google.android.material_material",
+        "dagger2",
+        "dialer-apache-mime4j-core",
+        "dialer-apache-mime4j-dom",
+        "dialer-commons-io",
+        "dialer-protos",
+        "error_prone_annotations",
+        "glide-annotation-and-compiler-prebuilt",
+        "glide-disklrucache-prebuilt",
+        "glide-gifdecoder-prebuilt",
+        "glide-prebuilt",
+        "guava",
+        "jsr305",
+        "jsr330",
+        "libphonenumber",
+        "org.lineageos.lib.phone",
+        "volley",
+    ],
+    use_embedded_native_libs: true,
+}
+
+java_library {
+    name: "dialer-protos",
+    proto: {
+        canonical_path_from_root: false,
+        type: "lite",
+    },
+    sdk_version: "system_current",
+    srcs: ["java/**/*.proto",],
+    static_libs: ["libprotobuf-java-lite"],
+}
+
+java_plugin {
+    name: "dialer-rootcomponentprocessor",
+    processor_class: "com.android.dialer.rootcomponentgenerator.RootComponentProcessor",
+    srcs: [
+        "java/com/android/dialer/rootcomponentgenerator/*.java",
+        "java/com/android/dialer/inject/HasRootComponent.java",
+        "java/com/android/dialer/inject/IncludeInDialerRoot.java",
+        "java/com/android/dialer/inject/RootComponentGeneratorMetadata.java",
+    ],
+    static_libs: [
+        "auto_common",
+        "auto_service_annotations",
+        "dagger2",
+        "guava",
+        "javapoet",
+        "jsr330",
+    ],
+}
+
+prebuilt_etc {
+    name: "privapp_whitelist_com.android.dialer-ext.xml",
+    product_specific: true,
+    src: "privapp_whitelist_com.android.dialer-ext.xml",
+    sub_dir: "permissions",
+}
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 99e2272..0000000
--- a/Android.mk
+++ /dev/null
@@ -1,199 +0,0 @@
-# Local modifications:
-# * removed com.google.android.geo.API_KEY key. This should be added to
-#      the manifest files in java/com/android/incallui/calllocation/impl/
-#      and /java/com/android/incallui/maps/impl/
-# * b/62417801 modify translation string naming convention:
-#      $ find . -type d | grep 262 | rename 's/(values)\-([a-zA-Z\+\-]+)\-(mcc262-mnc01)/$1-$3-$2/'
-# * b/37077388 temporarily disable proguard with javac
-# * b/62875795 include manually generated GRPC service class:
-#      $ protoc --plugin=protoc-gen-grpc-java=prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-linux-x86_64.exe \
-#               --grpc-java_out=lite:"packages/apps/Dialer/java/com/android/voicemail/impl/" \
-#               --proto_path="packages/apps/Dialer/java/com/android/voicemail/impl/transcribe/grpc/" "packages/apps/Dialer/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto"
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# The base directory for Dialer sources.
-BASE_DIR := java/com/android
-
-# Exclude files incompatible with AOSP.
-EXCLUDE_FILES := \
-	$(BASE_DIR)/incallui/calllocation/impl/AuthException.java \
-	$(BASE_DIR)/incallui/calllocation/impl/CallLocationImpl.java \
-	$(BASE_DIR)/incallui/calllocation/impl/CallLocationModule.java \
-	$(BASE_DIR)/incallui/calllocation/impl/DownloadMapImageTask.java \
-	$(BASE_DIR)/incallui/calllocation/impl/GoogleLocationSettingHelper.java \
-	$(BASE_DIR)/incallui/calllocation/impl/HttpFetcher.java \
-	$(BASE_DIR)/incallui/calllocation/impl/LocationFragment.java \
-	$(BASE_DIR)/incallui/calllocation/impl/LocationHelper.java \
-	$(BASE_DIR)/incallui/calllocation/impl/LocationPresenter.java \
-	$(BASE_DIR)/incallui/calllocation/impl/LocationUrlBuilder.java \
-	$(BASE_DIR)/incallui/calllocation/impl/ReverseGeocodeTask.java \
-	$(BASE_DIR)/incallui/calllocation/impl/TrafficStatsTags.java \
-	$(BASE_DIR)/incallui/maps/impl/MapsImpl.java \
-	$(BASE_DIR)/incallui/maps/impl/MapsModule.java \
-	$(BASE_DIR)/incallui/maps/impl/StaticMapFragment.java \
-
-# Exclude testing only class, not used anywhere here
-EXCLUDE_FILES += \
-	$(BASE_DIR)/contacts/common/format/testing/SpannedTestUtils.java
-
-# Exclude rootcomponentgenerator
-EXCLUDE_FILES += \
-	$(call all-java-files-under, $(BASE_DIR)/dialer/rootcomponentgenerator) \
-	$(call all-java-files-under, $(BASE_DIR)/dialer/inject/demo)
-
-# Exclude build variants for now
-EXCLUDE_FILES += \
-	$(BASE_DIR)/dialer/constants/googledialer/ConstantsImpl.java \
-	$(BASE_DIR)/dialer/binary/google/GoogleStubDialerRootComponent.java \
-	$(BASE_DIR)/dialer/binary/google/GoogleStubDialerApplication.java \
-
-# * b/62875795
-ifneq ($(wildcard packages/apps/Dialer/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java),)
-$(error Please remove file packages/apps/Dialer/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java )
-endif
-
-EXCLUDE_RESOURCE_DIRECTORIES := \
-	java/com/android/incallui/maps/impl/res \
-
-# All Dialers resources.
-RES_DIRS := $(call all-subdir-named-dirs,res,.)
-RES_DIRS := $(filter-out $(EXCLUDE_RESOURCE_DIRECTORIES),$(RES_DIRS))
-
-EXCLUDE_MANIFESTS := \
-	$(BASE_DIR)/dialer/binary/aosp/testing/AndroidManifest.xml \
-	$(BASE_DIR)/dialer/binary/google/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/calllocation/impl/AndroidManifest.xml \
-	$(BASE_DIR)/incallui/maps/impl/AndroidManifest.xml \
-
-# Dialer manifest files to merge.
-DIALER_MANIFEST_FILES := $(call all-named-files-under,AndroidManifest.xml,.)
-DIALER_MANIFEST_FILES := $(filter-out $(EXCLUDE_MANIFESTS),$(DIALER_MANIFEST_FILES))
-
-# Merge all manifest files.
-LOCAL_FULL_LIBS_MANIFEST_FILES := \
-	$(addprefix $(LOCAL_PATH)/, $(DIALER_MANIFEST_FILES))
-
-LOCAL_SRC_FILES := $(call all-java-files-under, $(BASE_DIR))
-LOCAL_SRC_FILES += $(call all-proto-files-under, $(BASE_DIR))
-LOCAL_SRC_FILES += $(call all-Iaidl-files-under, $(BASE_DIR))
-LOCAL_AIDL_INCLUDES :=  $(LOCAL_PATH)/java/
-LOCAL_SRC_FILES := $(filter-out $(EXCLUDE_FILES),$(LOCAL_SRC_FILES))
-
-LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)
-
-LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(RES_DIRS))
-
-EXCLUDE_EXTRA_PACKAGES := \
-	com.android.dialer.binary.aosp.testing \
-	com.android.dialer.binary.google \
-	com.android.incallui.calllocation.impl \
-	com.android.incallui.maps.impl \
-
-# We specify each package explicitly to glob resource files.
-include ${LOCAL_PATH}/packages.mk
-
-LOCAL_AAPT_FLAGS := $(filter-out $(EXCLUDE_EXTRA_PACKAGES),$(LOCAL_AAPT_FLAGS))
-LOCAL_AAPT_FLAGS := $(addprefix --extra-packages , $(LOCAL_AAPT_FLAGS))
-LOCAL_AAPT_FLAGS += \
-	--auto-add-overlay \
-	--extra-packages me.leolin.shortcutbadger \
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-	android-common \
-	android-support-dynamic-animation \
-	com.android.vcard \
-	dialer-common-m2-target-deps \
-	dialer-glide-target-deps \
-	error_prone_annotations \
-	jsr305 \
-	libbackup \
-	libphonenumber \
-	volley \
-	zxing-core-1.7 \
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
-	android-support-core-ui \
-	$(ANDROID_SUPPORT_DESIGN_TARGETS) \
-	android-support-transition \
-	android-support-v13 \
-	android-support-v4 \
-	android-support-v7-appcompat \
-	android-support-v7-cardview \
-	android-support-v7-recyclerview \
-
-LOCAL_JAVA_LIBRARIES := \
-	auto_value_annotations \
-	org.apache.http.legacy \
-
-LOCAL_ANNOTATION_PROCESSORS := \
-	auto_value_plugin \
-	javapoet \
-	dialer-common-m2-host-deps \
-	dialer-dagger2-compiler-deps \
-	dialer-glide-host-deps \
-	dialer-rootcomponentprocessor
-
-LOCAL_ANNOTATION_PROCESSOR_CLASSES := \
-  com.google.auto.value.processor.AutoValueProcessor,dagger.internal.codegen.ComponentProcessor,com.bumptech.glide.annotation.compiler.GlideAnnotationProcessor,com.android.dialer.rootcomponentgenerator.RootComponentProcessor
-
-# Proguard includes
-LOCAL_PROGUARD_FLAG_FILES := proguard.flags $(call all-named-files-under,proguard.*flags,$(BASE_DIR))
-LOCAL_PROGUARD_ENABLED := custom
-
-LOCAL_PROGUARD_ENABLED += optimization
-
-LOCAL_SDK_VERSION := system_current
-LOCAL_MODULE_TAGS := optional
-LOCAL_PACKAGE_NAME := Dialer
-LOCAL_CERTIFICATE := shared
-LOCAL_PRIVILEGED_MODULE := true
-LOCAL_PRODUCT_MODULE := true
-LOCAL_USE_AAPT2 := true
-LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.dialer
-LOCAL_USES_LIBRARIES := org.apache.http.legacy
-
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-include $(BUILD_PACKAGE)
-
-# Cleanup local state
-BASE_DIR :=
-EXCLUDE_FILES :=
-RES_DIRS :=
-DIALER_MANIFEST_FILES :=
-EXCLUDE_MANIFESTS :=
-EXCLUDE_EXTRA_PACKAGES :=
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := dialer-rootcomponentprocessor
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_IS_HOST_MODULE := true
-BASE_DIR := java/com/android
-
-LOCAL_SRC_FILES := \
-	$(call all-java-files-under, $(BASE_DIR)/dialer/rootcomponentgenerator) \
-        $(BASE_DIR)/dialer/inject/DialerRootComponent.java \
-        $(BASE_DIR)/dialer/inject/DialerVariant.java \
-        $(BASE_DIR)/dialer/inject/HasRootComponent.java \
-        $(BASE_DIR)/dialer/inject/IncludeInDialerRoot.java \
-        $(BASE_DIR)/dialer/inject/InstallIn.java \
-        $(BASE_DIR)/dialer/inject/RootComponentGeneratorMetadata.java
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-	dialer-common-m2-host-deps \
-	javapoet \
-	auto_service_annotations \
-	auto_common \
-	error_prone_annotations
-
-LOCAL_JAVA_LANGUAGE_VERSION := 1.8
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(CLEAR_VARS)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a106e12..677e757 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -14,113 +14,749 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  coreApp="true"
-  package="com.android.dialer"
-  android:versionCode="2900000"
-  android:versionName="23.0">
+    xmlns:tools="http://schemas.android.com/tools"
+    coreApp="true"
+    package="com.android.dialer"
+    android:versionCode="2900000"
+    android:versionName="23.0">
 
-  <uses-sdk
-    android:minSdkVersion="24"
-    android:targetSdkVersion="30"/>
+    <uses-feature
+        android:name="android.hardware.telephony"
+        android:required="false" />
+    <uses-feature
+        android:name="android.hardware.camera"
+        android:required="false" />
 
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
+    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
+    <uses-permission android:name="android.permission.CALL_PHONE" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
+    <uses-permission android:name="android.permission.READ_CALL_LOG" />
+    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
+    <uses-permission android:name="android.permission.READ_PROFILE" />
+    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
+    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+    <uses-permission android:name="android.permission.GET_ACCOUNTS_PRIVILEGED" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
+    <uses-permission android:name="android.permission.NFC" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
+    <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
+    <uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL" />
+    <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL" />
+    <uses-permission android:name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK" />
+    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.RECEIVE_SMS" />
+    <uses-permission android:name="android.permission.SEND_SMS" />
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+    <uses-permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" />
+    <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
+    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
 
-  <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
-  <uses-permission android:name="android.permission.CALL_PHONE"/>
-  <uses-permission android:name="android.permission.READ_CONTACTS"/>
-  <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
-  <uses-permission android:name="android.permission.READ_CALL_LOG"/>
-  <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
-  <uses-permission android:name="android.permission.READ_PROFILE"/>
-  <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
-  <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
-  <uses-permission android:name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
-  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
-  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
-  <uses-permission android:name="android.permission.INTERNET"/>
-  <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
-  <uses-permission android:name="android.permission.NFC"/>
-  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
-  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
-  <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
-  <uses-permission android:name="android.permission.WAKE_LOCK"/>
-  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-  <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
-  <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
-  <uses-permission android:name="android.permission.VIBRATE"/>
-  <uses-permission android:name="android.permission.BLUETOOTH"/>
-  <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
-  <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL"/>
-  <uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL"/>
-  <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL"/>
-  <uses-permission android:name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK"/>
-  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
-  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
-  <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
-  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
-  <uses-permission android:name="android.permission.SEND_SMS"/>
-  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
-  <uses-permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"/>
-  <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT"/>
-  <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
-  <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
+    <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE" />
+    <!-- We use this to disable the status bar buttons of home, back and recent
+    during an incoming call. By doing so this allows us to not show the user
+    is viewing the activity in full screen alert, on a fresh system/factory
+    reset state of the app. -->
+    <uses-permission android:name="android.permission.STATUS_BAR" />
+    <uses-permission android:name="android.permission.CAMERA" />
 
-  <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
-  <!-- We use this to disable the status bar buttons of home, back and recent
-  during an incoming call. By doing so this allows us to not show the user
-  is viewing the activity in full screen alert, on a fresh system/factory
-  reset state of the app. -->
-  <uses-permission android:name="android.permission.STATUS_BAR"/>
-  <uses-permission android:name="android.permission.CAMERA"/>
+    <!-- This tells the activity manager to not delay any of our activity
+     start requests, even if they happen immediately after the user
+     presses home. -->
+    <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
 
-  <!-- This tells the activity manager to not delay any of our activity
-   start requests, even if they happen immediately after the user
-   presses home. -->
-  <uses-permission android:name="android.permission.STOP_APP_SWITCHES"/>
+    <!-- Used for sending PendingIntents to dynamically registered receivers -->
+    <permission
+        android:name="com.android.dialer.permission.DIALER_ORIGIN"
+        android:protectionLevel="signature" />
 
-  <!-- Used for sending PendingIntents to dynamically registered receivers -->
-  <uses-permission android:name="com.android.dialer.permission.DIALER_ORIGIN"
-    android:protectionLevel="signature" />
+    <uses-permission android:name="com.android.dialer.permission.DIALER_ORIGIN" />
 
-  <!-- Permissions needed for badger count showing on launch icon. -->
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />
 
-  <!--for Samsung-->
-  <uses-permission android:name="com.sec.android.provider.badge.permission.READ"/>
-  <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>
+    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
+    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" />
 
-  <!--for htc-->
-  <uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
-  <uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT"/>
+    <uses-permission android:name="lineageos.permission.WRITE_SETTINGS" />
 
-  <!--for sony-->
-  <uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE"/>
-  <uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"/>
+    <!-- This is used for querying Cequint caller id. -->
+    <uses-permission android:name="com.cequint.ecid.CALLER_ID_LOOKUP" />
 
-  <!--for apex-->
-  <uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT"/>
+    <!-- This is used by MotorolaInCallUiNotifier to send broadcasts. -->
+    <uses-permission android:name="com.motorola.incallui.permission.INCOMING_CALL_VISIBILITY_CHANGED" />
 
-  <!--for solid-->
-  <uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE"/>
+    <!-- Required when the "Enable Do Not Disturb during call" setting is enabled -->
+    <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
 
-  <!--for huawei-->
-  <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
-  <uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/>
-  <uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/>
+    <!-- Required to close the notification shade -->
+    <uses-permission android:name="android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS" />
 
-  <!--for ZUK-->
-  <uses-permission android:name="android.permission.READ_APP_BADGE"/>
+    <application
+        android:name="com.android.dialer.binary.aosp.AospDialerApplication"
+        android:appCategory="social"
+        android:extractNativeLibs="false"
+        android:hardwareAccelerated="true"
+        android:icon="@mipmap/ic_launcher"
+        android:label="@string/applicationLabel"
+        android:supportsRtl="true"
+        android:usesCleartextTraffic="false">
 
-  <!--for OPPO-->
-  <uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/>
-  <uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
+        <activity
+            android:name=".callstats.CallStatsDetailActivity"
+            android:exported="true"
+            android:label="@string/call_stats_detail_title"
+            android:screenOrientation="portrait"
+            android:theme="@style/Dialer.ThemeBase.NoActionBar"
+            tools:ignore="LockedOrientationActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
 
-  <application
-    android:hardwareAccelerated="true"
-    android:icon="@mipmap/ic_launcher_phone"
-    android:label="@string/applicationLabel"
-    android:name="com.android.dialer.binary.aosp.AospDialerApplication"
-    android:supportsRtl="true"
-    android:usesCleartextTraffic="false"
-    android:extractNativeLibs="false">
-  </application>
+        <service
+            android:name="com.android.dialer.callrecord.impl.CallRecorderService"
+            android:process="com.android.incallui" />
+
+        <activity
+            android:name="com.android.contacts.common.dialog.CallSubjectDialog"
+            android:exported="true"
+            android:theme="@style/Theme.CallSubjectDialogTheme"
+            android:windowSoftInputMode="stateVisible|adjustResize" />
+
+        <!-- Broadcast receiver that passively listens to location updates -->
+        <receiver android:name="com.android.dialer.location.CountryDetector$LocationChangedReceiver" />
+
+        <activity
+            android:name="com.android.dialer.app.calllog.CallLogActivity"
+            android:label="@string/call_log_activity_title"
+            android:theme="@style/DialtactsTheme" />
+
+        <activity
+            android:name="com.android.dialer.app.AccountSelectionActivity"
+            android:exported="false"
+            android:theme="@style/TransparentTheme" />
+
+        <activity
+            android:name="com.android.dialer.app.settings.DialerSettingsActivity"
+            android:exported="true"
+            android:label="@string/dialer_settings_label"
+            android:parentActivityName="com.android.dialer.main.impl.MainActivity"
+            android:theme="@style/SettingsStyle">
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="header" />
+            </intent-filter>
+        </activity>
+
+        <receiver
+            android:name="com.android.dialer.app.calllog.CallLogReceiver"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.intent.action.NEW_VOICEMAIL" />
+
+                <data
+                    android:host="com.android.voicemail"
+                    android:mimeType="vnd.android.cursor.item/voicemail"
+                    android:scheme="content" />
+                <data
+                    android:host="com.android.voicemail"
+                    android:mimeType="vnd.android.cursor.dir/voicemails"
+                    android:scheme="content" />
+            </intent-filter>
+            <intent-filter android:priority="100">
+                <action android:name="android.intent.action.BOOT_COMPLETED" />
+            </intent-filter>
+        </receiver>
+
+        <activity
+            android:name="com.android.dialer.app.calllog.CallLogNotificationsActivity"
+            android:theme="@style/Theme.AppCompat.Translucent" />
+
+        <service
+            android:name="com.android.dialer.app.calllog.CallLogNotificationsService"
+            android:directBootAware="true"
+            android:exported="false" />
+
+        <service
+            android:name="com.android.dialer.app.calllog.VoicemailNotificationJobService"
+            android:permission="android.permission.BIND_JOB_SERVICE" />
+
+        <receiver
+            android:name="com.android.dialer.app.calllog.MissedCallNotificationReceiver"
+            android:directBootAware="true"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION" />
+            </intent-filter>
+        </receiver>
+        <!-- Handles voicemail notifications from telephony. Requires O -->
+        <receiver
+            android:name="com.android.dialer.app.voicemail.LegacyVoicemailNotificationReceiver"
+            android:directBootAware="true"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.telephony.action.SHOW_VOICEMAIL_NOTIFICATION" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="com.android.voicemail.VoicemailClient.ACTION_SHOW_LEGACY_VOICEMAIL" />
+            </intent-filter>
+        </receiver>
+
+        <provider
+            android:name="androidx.core.content.FileProvider"
+            android:authorities="com.android.dialer.files"
+            android:exported="false"
+            android:grantUriPermissions="true">
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                android:resource="@xml/file_paths" />
+        </provider>
+
+        <provider
+            android:name="androidx.startup.InitializationProvider"
+            android:authorities="${applicationId}.androidx-startup"
+            android:exported="false"
+            tools:replace="android:authorities" />
+
+        <meta-data
+            android:name="supports_per_number_preferred_account"
+            android:value="true" />
+
+        <activity
+            android:name="com.android.dialer.assisteddialing.ui.AssistedDialingSettingActivity"
+            android:exported="true"
+            android:label="@string/assisted_dialing_setting_title"
+            android:parentActivityName="com.android.dialer.app.settings.DialerSettingsActivity"
+            android:theme="@style/SettingsStyle">
+            <intent-filter>
+                <action android:name="com.android.dialer.app.settings.SHOW_ASSISTED_DIALING_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <!-- Provide this since upgrade path seems to be messy; Only a stub class exists there -->
+        <provider
+            android:name="com.android.dialer.blocking.FilteredNumberProvider"
+            android:authorities="com.android.dialer.blocking.filterednumberprovider"
+            android:exported="false"
+            android:multiprocess="false" />
+
+        <activity
+            android:name="com.android.dialer.calldetails.OldCallDetailsActivity"
+            android:exported="false"
+            android:label="@string/call_details" />
+
+        <activity
+            android:name="com.android.dialer.calldetails.CallDetailsActivity"
+            android:exported="false"
+            android:label="@string/call_details" />
+
+        <provider
+            android:name="com.android.dialer.calllog.database.AnnotatedCallLogContentProvider"
+            android:authorities="com.android.dialer.annotatedcalllog"
+            android:exported="false"
+            android:multiprocess="false" />
+
+        <activity
+            android:name="com.android.dialer.helplines.HelplineActivity"
+            android:autoRemoveFromRecents="true"
+            android:excludeFromRecents="true"
+            android:exported="true"
+            android:label="@string/helplines_name"
+            android:theme="@style/Dialer.ThemeBase.ActionBar">
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="header" />
+            </intent-filter>
+        </activity>
+
+        <!-- Service to update a contact -->
+        <service
+            android:name="com.android.dialer.interactions.ContactUpdateService"
+            android:exported="false" />
+
+        <receiver
+            android:name="com.android.dialer.interactions.UndemoteOutgoingCallReceiver"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
+            </intent-filter>
+        </receiver>
+
+        <provider
+            android:name="com.android.dialer.lookup.LookupProvider"
+            android:authorities="com.android.dialer.lookup"
+            android:exported="false"
+            android:multiprocess="false" />
+
+        <!-- TODO(a bug): remove activity themes and only have application wide themes -->
+        <!-- The entrance point for Phone UI.
+             stateAlwaysHidden is set to suppress keyboard show up on dialpad screen. -->
+        <activity
+            android:name="com.android.dialer.main.impl.MainActivity"
+            android:clearTaskOnLaunch="true"
+            android:directBootAware="true"
+            android:exported="true"
+            android:label="@string/main_activity_label"
+            android:launchMode="singleTask"
+            android:resizeableActivity="true"
+            android:theme="@style/LaunchTheme"
+            android:windowSoftInputMode="stateAlwaysHidden|adjustNothing">
+
+            <intent-filter>
+                <action android:name="com.android.dialer.main.impl.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter>
+                <action android:name="android.intent.action.DIAL" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+
+                <data android:mimeType="vnd.android.cursor.item/phone" />
+                <data android:mimeType="vnd.android.cursor.item/person" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.DIAL" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+
+                <data android:scheme="voicemail" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.DIAL" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.BROWSABLE" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <action android:name="android.intent.action.DIAL" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+
+                <data android:scheme="tel" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+
+                <data android:mimeType="vnd.android.cursor.dir/calls" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.CALL_BUTTON" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+            </intent-filter>
+
+            <!-- This was never intended to be public, but is here for backward
+                 compatibility.  Use Intent.ACTION_DIAL instead. -->
+            <intent-filter>
+                <action android:name="com.android.phone.action.TOUCH_DIALER" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.TAB" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="com.android.phone.action.RECENT_CALLS" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.TAB" />
+            </intent-filter>
+
+            <meta-data
+                android:name="com.android.keyguard.layout"
+                android:resource="@layout/keyguard_preview" />
+
+        </activity>
+
+        <activity
+            android:name="com.android.dialer.main.impl.DefaultDialerActivity"
+            android:exported="false"
+            android:launchMode="singleTask"
+            android:theme="@style/MainActivityTheme" />
+
+        <provider
+            android:name="com.android.dialer.phonelookup.database.PhoneLookupHistoryContentProvider"
+            android:authorities="com.android.dialer.phonelookuphistory"
+            android:exported="false"
+            android:multiprocess="false" />
+
+        <activity
+            android:name="com.android.dialer.postcall.PostCallActivity"
+            android:exported="false"
+            android:theme="@style/Dialer.ThemeBase.NoActionBar"
+            android:windowSoftInputMode="adjustResize" />
+
+        <activity
+            android:name="com.android.dialer.precall.externalreceiver.LaunchPreCallActivity"
+            android:excludeFromRecents="true"
+            android:exported="true"
+            android:noHistory="true"
+            android:permission="android.permission.CALL_PHONE"
+            android:theme="@style/Theme.PreCall.DialogHolder">
+            <intent-filter>
+                <action android:name="com.android.dialer.LAUNCH_PRE_CALL" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="tel" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="com.android.dialer.LAUNCH_PRE_CALL" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="voicemail" />
+            </intent-filter>
+        </activity>
+
+        <activity
+            android:name="com.android.dialer.precall.impl.PreCallActivity"
+            android:excludeFromRecents="true"
+            android:exported="false"
+            android:noHistory="true"
+            android:theme="@style/Theme.PreCall.DialogHolder"></activity>
+
+        <provider
+            android:name="com.android.dialer.preferredsim.impl.PreferredSimFallbackProvider"
+            android:authorities="com.android.dialer.preferredsimfallback"
+            android:exported="true"
+            android:multiprocess="false"
+            android:readPermission="android.permission.READ_CONTACTS"
+            android:writePermission="android.permission.WRITE_CONTACTS" />
+
+        <meta-data
+            android:name="com.android.dialer.SUPPORTS_PREFERRED_SIM"
+            android:value="true" />
+        <meta-data
+            android:name="com.android.dialer.PREFERRED_SIM_FALLBACK_AUTHORITY"
+            android:value="com.android.dialer.preferredsimfallback" />
+
+        <activity android:name="com.android.dialer.rtt.RttTranscriptActivity" />
+
+        <service
+            android:name="com.android.dialer.shortcuts.PeriodicJobService"
+            android:exported="false"
+            android:permission="android.permission.BIND_JOB_SERVICE" />
+
+        <!--
+           Comments for attributes in CallContactActivity:
+           taskAffinity=""             -> Open the dialog without opening the dialer app behind it
+           noHistory="true"            -> Navigating away finishes activity
+           excludeFromRecents="true"   -> Don't show in "recent apps" screen
+
+           We do not export this activity and do not declare an intent filter as a security precaution
+           so that apps other than the dialer cannot attempt to make phone calls using it.
+           -->
+        <activity
+            android:name="com.android.dialer.shortcuts.CallContactActivity"
+            android:excludeFromRecents="true"
+            android:exported="false"
+            android:label=""
+            android:noHistory="true"
+            android:taskAffinity=""
+            android:theme="@style/CallContactsTheme" />
+
+        <service
+            android:name="com.android.dialer.simulator.service.SimulatorService"
+            android:exported="false" />
+
+        <service
+            android:name="com.android.dialer.simulator.impl.SimulatorConnectionService"
+            android:exported="true"
+            android:permission="android.permission.BIND_CONNECTION_SERVICE">
+            <intent-filter>
+                <action android:name="android.telecomm.ConnectionService" />
+            </intent-filter>
+        </service>
+
+        <!-- Causes the "Voicemail" item under "Calls" setting to be hidden. The voicemail module will
+    be handling the settings. Has no effect before OC where dialer cannot provide voicemail
+    settings -->
+        <meta-data
+            android:name="android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU"
+            android:value="true" />
+
+        <activity
+            android:name="com.android.dialer.voicemail.settings.VoicemailChangePinActivity"
+            android:exported="false"
+            android:label="@string/voicemail_change_pin_preference_title"
+            android:parentActivityName="com.android.dialer.app.settings.DialerSettingsActivity"
+            android:theme="@style/SettingsStyle"
+            android:windowSoftInputMode="stateVisible|adjustResize" />
+        <activity
+            android:name="com.android.dialer.voicemail.settings.RecordVoicemailGreetingActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:label="@string/voicemail_change_greeting_preference_title"
+            android:parentActivityName="com.android.dialer.app.settings.DialerSettingsActivity"
+            android:theme="@style/SettingsStyle" />
+        <activity
+            android:name="com.android.dialer.voicemail.settings.CurrentVoicemailGreetingActivity"
+            android:exported="true"
+            android:label="@string/voicemail_change_greeting_preference_title"
+            android:parentActivityName="com.android.dialer.app.settings.DialerSettingsActivity">
+            <!-- TODO(a bug): delete android:exported="true" closer to submitting  -->
+        </activity>
+
+        <!-- Go variants need hardware acceleration for IMS video calls even though it is disabled at
+    the application level -->
+        <activity
+            android:name="com.android.incallui.InCallActivity"
+            android:directBootAware="true"
+            android:excludeFromRecents="true"
+            android:exported="false"
+            android:hardwareAccelerated="true"
+            android:label="@string/phoneAppLabel"
+            android:launchMode="singleInstance"
+            android:resizeableActivity="true"
+            android:screenOrientation="nosensor"
+            android:taskAffinity="com.android.incallui"
+            android:theme="@style/Theme.InCallScreen"
+            android:windowSoftInputMode="adjustResize" />
+
+        <activity
+            android:name="com.android.incallui.ManageConferenceActivity"
+            android:directBootAware="true"
+            android:excludeFromRecents="true"
+            android:exported="false"
+            android:label="@string/manageConferenceLabel"
+            android:launchMode="singleTask"
+            android:noHistory="true"
+            android:resizeableActivity="true"
+            android:taskAffinity="com.android.incallui"
+            android:theme="@style/Theme.InCallScreen.ManageConference" />
+
+        <service
+            android:name="com.android.incallui.InCallServiceImpl"
+            android:directBootAware="true"
+            android:exported="true"
+            android:foregroundServiceType="phoneCall"
+            android:permission="android.permission.BIND_INCALL_SERVICE">
+            <meta-data
+                android:name="android.telecom.IN_CALL_SERVICE_UI"
+                android:value="true" />
+            <meta-data
+                android:name="android.telecom.IN_CALL_SERVICE_RINGING"
+                android:value="false" />
+            <meta-data
+                android:name="android.telecom.INCLUDE_EXTERNAL_CALLS"
+                android:value="true" />
+
+            <intent-filter>
+                <action android:name="android.telecom.InCallService" />
+            </intent-filter>
+        </service>
+
+        <activity
+            android:name="com.android.incallui.AudioRouteSelectorActivity"
+            android:excludeFromRecents="true"
+            android:exported="false"
+            android:noHistory="true"
+            android:theme="@style/Theme.Incall.DialogHolder" />
+
+        <activity
+            android:name="com.android.incallui.PostCharDialogActivity"
+            android:excludeFromRecents="true"
+            android:exported="false"
+            android:noHistory="true"
+            android:theme="@style/Theme.Incall.DialogHolder" />
+
+        <!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
+        <receiver
+            android:name="com.android.incallui.NotificationBroadcastReceiver"
+            android:directBootAware="true"
+            android:exported="false" />
+
+        <!-- Identical to .InCallActivity except orientation is locked to portrait -->
+        <activity
+            android:name="com.android.incallui.callpending.CallPendingActivity"
+            android:directBootAware="true"
+            android:excludeFromRecents="true"
+            android:exported="false"
+            android:label="@string/phoneAppLabel"
+            android:resizeableActivity="true"
+            android:screenOrientation="portrait"
+            android:taskAffinity="com.android.incallui"
+            android:theme="@style/Theme.InCallScreen"
+            tools:ignore="LockedOrientationActivity" />
+
+        <!--
+           Comments for attributes in SpamNotificationActivity:
+           taskAffinity=""             -> Open the dialog without opening the dialer app behind it
+           noHistory="true"            -> Navigating away finishes activity
+           excludeFromRecents="true"   -> Don't show in "recent apps" screen
+        -->
+        <activity
+            android:name="com.android.incallui.spam.SpamNotificationActivity"
+            android:excludeFromRecents="true"
+            android:exported="false"
+            android:noHistory="true"
+            android:taskAffinity=""
+            android:theme="@style/AfterCallNotificationTheme" />
+
+        <activity
+            android:name="com.android.incallui.telecomeventui.InternationalCallOnWifiDialogActivity"
+            android:excludeFromRecents="true"
+            android:exported="true"
+            android:noHistory="true"
+            android:theme="@style/Theme.Incall.DialogHolder" />
+
+        <receiver
+            android:name="com.android.voicemail.VoicemailSecretCodeReceiver"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.provider.Telephony.SECRET_CODE" />
+                <data android:scheme="android_secret_code" />
+            </intent-filter>
+        </receiver>
+
+        <receiver
+            android:name="com.android.voicemail.VoicemailPowerCycleReceiver"
+            android:exported="false">
+            <intent-filter>
+                <action android:name="android.intent.action.BOOT_COMPLETED" />
+                <action android:name="android.intent.action.ACTION_SHUTDOWN" />
+            </intent-filter>
+        </receiver>
+
+        <receiver
+            android:name="com.android.voicemail.impl.sms.OmtpMessageReceiver"
+            android:directBootAware="true"
+            android:exported="false">
+            <intent-filter>
+                <action android:name="com.android.vociemailomtp.sms.sms_received" />
+            </intent-filter>
+        </receiver>
+
+        <receiver
+            android:name="com.android.voicemail.impl.sms.AdvvmSmsReceiver"
+            android:exported="true"
+            android:directBootAware="true">
+            <intent-filter>
+                <action android:name="android.intent.action.DATA_SMS_RECEIVED"/>
+                <data android:host="localhost" android:port="5499" android:scheme="sms"/>
+            </intent-filter>
+        </receiver>
+
+        <receiver
+            android:name="com.android.voicemail.impl.VoicemailClientReceiver"
+            android:exported="false">
+            <intent-filter>
+                <action android:name="com.android.voicemail.VoicemailClient.ACTION_UPLOAD" />
+            </intent-filter>
+        </receiver>
+
+        <receiver
+            android:name="com.android.voicemail.impl.fetch.FetchVoicemailReceiver"
+            android:exported="true"
+            android:permission="com.android.voicemail.permission.READ_VOICEMAIL">
+            <intent-filter>
+                <action android:name="android.intent.action.FETCH_VOICEMAIL" />
+                <data
+                    android:host="com.android.voicemail"
+                    android:mimeType="vnd.android.cursor.item/voicemail"
+                    android:scheme="content" />
+            </intent-filter>
+        </receiver>
+        <receiver
+            android:name="com.android.voicemail.impl.sync.OmtpVvmSyncReceiver"
+            android:exported="true"
+            android:permission="com.android.voicemail.permission.READ_VOICEMAIL">
+            <intent-filter>
+                <action android:name="android.provider.action.SYNC_VOICEMAIL" />
+            </intent-filter>
+        </receiver>
+        <receiver
+            android:name="com.android.voicemail.impl.sync.VoicemailProviderChangeReceiver"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.intent.action.PROVIDER_CHANGED" />
+                <data
+                    android:host="com.android.voicemail"
+                    android:mimeType="vnd.android.cursor.dir/voicemails"
+                    android:scheme="content" />
+            </intent-filter>
+        </receiver>
+
+        <receiver
+            android:name="com.android.voicemail.impl.scheduling.TaskReceiver"
+            android:exported="false" />
+
+        <service
+            android:name="com.android.voicemail.impl.scheduling.TaskSchedulerJobService"
+            android:exported="false"
+            android:permission="android.permission.BIND_JOB_SERVICE" />
+
+        <service
+            android:name="com.android.voicemail.impl.StatusCheckJobService"
+            android:exported="false"
+            android:permission="android.permission.BIND_JOB_SERVICE" />
+
+        <service
+            android:name="com.android.voicemail.impl.DeviceProvisionedJobService"
+            android:exported="false"
+            android:permission="android.permission.BIND_JOB_SERVICE" />
+        <service
+            android:name="com.android.voicemail.impl.OmtpService"
+            android:directBootAware="true"
+            android:exported="true"
+            android:permission="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE">
+            <intent-filter>
+                <action android:name="android.telephony.VisualVoicemailService" />
+            </intent-filter>
+        </service>
+
+        <receiver
+            android:name="com.android.voicemail.impl.PackageReplacedReceiver"
+            android:exported="false">
+            <intent-filter>
+                <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
+            </intent-filter>
+        </receiver>
+
+        <receiver
+            android:name="com.android.voicemail.impl.CarrierVvmPackageInstalledReceiver"
+            android:exported="true"
+            android:permission="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE">
+            <intent-filter>
+                <!-- system dialer only broadcast -->
+                <action android:name="com.android.internal.telephony.CARRIER_VVM_PACKAGE_INSTALLED" />
+            </intent-filter>
+        </receiver>
+
+        <activity
+            android:name="com.android.voicemail.impl.configui.VoicemailSecretCodeActivity"
+            android:exported="false" />
+    </application>
 
 </manifest>
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 960bd75..5276ed0 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -38,5 +38,5 @@
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
 # ************************************************
 
-$(call add-clean-step, (cd packages/apps/Dialer; git clean -f java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java >&2) || true)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/Dialer)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Dialer_intermediates)
diff --git a/assets/product/AndroidManifest.xml b/assets/product/AndroidManifest.xml
deleted file mode 100644
index d922f6b..0000000
--- a/assets/product/AndroidManifest.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest
-    package="com.google.android.assets.product">
-  <application/>
-</manifest>
diff --git a/assets/product/res/drawable-mdpi/product_logo_avatar_anonymous_white_color_120.png b/assets/product/res/drawable-mdpi/product_logo_avatar_anonymous_white_color_120.png
deleted file mode 100644
index 0524cf0..0000000
--- a/assets/product/res/drawable-mdpi/product_logo_avatar_anonymous_white_color_120.png
+++ /dev/null
Binary files differ
diff --git a/assets/product/res/drawable-xhdpi/product_logo_avatar_anonymous_white_color_120.png b/assets/product/res/drawable-xhdpi/product_logo_avatar_anonymous_white_color_120.png
deleted file mode 100644
index ba27ee7..0000000
--- a/assets/product/res/drawable-xhdpi/product_logo_avatar_anonymous_white_color_120.png
+++ /dev/null
Binary files differ
diff --git a/assets/product/res/drawable-xxhdpi/product_logo_avatar_anonymous_white_color_120.png b/assets/product/res/drawable-xxhdpi/product_logo_avatar_anonymous_white_color_120.png
deleted file mode 100644
index 2dc7248..0000000
--- a/assets/product/res/drawable-xxhdpi/product_logo_avatar_anonymous_white_color_120.png
+++ /dev/null
Binary files differ
diff --git a/assets/product/res/drawable-xxxhdpi/product_logo_avatar_anonymous_white_color_120.png b/assets/product/res/drawable-xxxhdpi/product_logo_avatar_anonymous_white_color_120.png
deleted file mode 100644
index 230be8c..0000000
--- a/assets/product/res/drawable-xxxhdpi/product_logo_avatar_anonymous_white_color_120.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/AndroidManifest.xml b/assets/quantum/AndroidManifest.xml
deleted file mode 100644
index 28f8eec..0000000
--- a/assets/quantum/AndroidManifest.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.google.android.assets.quantum">
-  <uses-sdk android:targetSdkVersion="30" />
-  <application/>
-</manifest>
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_arrow_drop_down_white_18.png b/assets/quantum/res/drawable-hdpi/quantum_ic_arrow_drop_down_white_18.png
deleted file mode 100644
index 41541bb..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_arrow_drop_down_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_backspace_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_backspace_white_24.png
deleted file mode 100644
index 136e8b8..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_backspace_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_block_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_block_white_24.png
deleted file mode 100644
index 2ccc89d..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_block_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_24.png
deleted file mode 100644
index 625b827..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_36.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_36.png
deleted file mode 100644
index 51456d3..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_call_end_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_made_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_made_white_24.png
deleted file mode 100644
index ea6a8ab..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_call_made_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_missed_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_missed_white_24.png
deleted file mode 100644
index f188eb9..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_call_missed_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_received_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_received_white_24.png
deleted file mode 100644
index ca2ae41..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_call_received_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_18.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_18.png
deleted file mode 100644
index 0bdc56b..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_24.png
deleted file mode 100644
index 4dc5065..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_call_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_24.png
deleted file mode 100644
index 497c88c..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_48.png b/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_48.png
deleted file mode 100644
index c8e69dc..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_camera_alt_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_check_black_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_check_black_24.png
deleted file mode 100644
index e802d90..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_check_black_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_close_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_close_white_24.png
deleted file mode 100644
index fd3edbd..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_close_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 6acef17..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_content_copy_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_delete_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_delete_white_24.png
deleted file mode 100644
index 8444f31..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_delete_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_dialpad_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_dialpad_white_24.png
deleted file mode 100644
index 9037f94..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_dialpad_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_edit_grey600_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_edit_grey600_24.png
deleted file mode 100644
index 4a27b46..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_edit_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_exit_white_48.png b/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_exit_white_48.png
deleted file mode 100644
index 159bea7..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_exit_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_white_48.png b/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_white_48.png
deleted file mode 100644
index 9b81311..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_fullscreen_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_grade_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_grade_white_24.png
deleted file mode 100644
index dbbb9f6..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_grade_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_hd_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_hd_white_24.png
deleted file mode 100644
index 35bf51a..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_hd_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_headset_grey600_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_headset_grey600_24.png
deleted file mode 100644
index e859c2f..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_headset_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_image_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_image_white_24.png
deleted file mode 100644
index caf34c2..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_image_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_info_outline_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_info_outline_white_24.png
deleted file mode 100644
index c7b1113..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_info_outline_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_language_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_language_white_24.png
deleted file mode 100644
index b7c8248..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_language_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_message_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_message_white_24.png
deleted file mode 100644
index 57177b7..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_message_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_more_vert_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_more_vert_white_24.png
deleted file mode 100644
index 58e092b..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_more_vert_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_pause_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_pause_white_24.png
deleted file mode 100644
index 4d2ea05..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_pause_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_people_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_people_white_24.png
deleted file mode 100644
index 25e4434..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_people_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_person_add_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_person_add_white_24.png
deleted file mode 100644
index 10ae5a7..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_person_add_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_person_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_person_white_24.png
deleted file mode 100644
index 56708b0..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_person_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_library_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_photo_library_white_24.png
deleted file mode 100644
index c4a2229..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_library_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_24.png
deleted file mode 100644
index b414cf5..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_48.png b/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_48.png
deleted file mode 100644
index f9f1def..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_photo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_play_arrow_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_play_arrow_white_24.png
deleted file mode 100644
index 57c9fa5..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_play_arrow_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_report_grey600_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_report_grey600_24.png
deleted file mode 100644
index 63edb42..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_report_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_24.png
deleted file mode 100644
index ff7d957..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_36.png b/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_36.png
deleted file mode 100644
index 057d9c7..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_report_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_schedule_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_schedule_white_24.png
deleted file mode 100644
index 4b7caa0..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_schedule_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 5d4ad4b..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_send_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_signal_wifi_4_bar_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_signal_wifi_4_bar_white_24.png
deleted file mode 100644
index 5a53192..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_signal_wifi_4_bar_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-hdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 4366bb0..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_undo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_off_white_36.png b/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_off_white_36.png
deleted file mode 100644
index f2e461a..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_off_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_white_18.png b/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_white_18.png
deleted file mode 100644
index abf478a..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_videocam_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_voicemail_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_voicemail_white_24.png
deleted file mode 100644
index 03a62e1..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_voicemail_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_volume_down_white_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_volume_down_white_24.png
deleted file mode 100644
index e22e92c..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_volume_down_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-hdpi/quantum_ic_volume_up_grey600_24.png b/assets/quantum/res/drawable-hdpi/quantum_ic_volume_up_grey600_24.png
deleted file mode 100644
index 49eb8fc..0000000
--- a/assets/quantum/res/drawable-hdpi/quantum_ic_volume_up_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 90bf872..0000000
--- a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_content_copy_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index b8d4ce4..0000000
--- a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_send_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 6c8174f..0000000
--- a/assets/quantum/res/drawable-ldrtl-hdpi/quantum_ic_undo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 01b869a..0000000
--- a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_content_copy_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 7933f42..0000000
--- a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_send_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index b47cef6..0000000
--- a/assets/quantum/res/drawable-ldrtl-mdpi/quantum_ic_undo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 831b524..0000000
--- a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_content_copy_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 4735a7d..0000000
--- a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_send_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 6a984c4..0000000
--- a/assets/quantum/res/drawable-ldrtl-xhdpi/quantum_ic_undo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 71f3bd6..0000000
--- a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_content_copy_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 4a9e2c2..0000000
--- a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_send_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 9079110..0000000
--- a/assets/quantum/res/drawable-ldrtl-xxhdpi/quantum_ic_undo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 3b2aed2..0000000
--- a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_content_copy_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 0167ac8..0000000
--- a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_send_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index aa7a919..0000000
--- a/assets/quantum/res/drawable-ldrtl-xxxhdpi/quantum_ic_undo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_arrow_drop_down_white_18.png b/assets/quantum/res/drawable-mdpi/quantum_ic_arrow_drop_down_white_18.png
deleted file mode 100644
index 7c1fc3d..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_arrow_drop_down_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_backspace_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_backspace_white_24.png
deleted file mode 100644
index 48863dc..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_backspace_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_block_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_block_white_24.png
deleted file mode 100644
index ec1b33f..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_block_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_24.png
deleted file mode 100644
index 378272f..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_36.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_36.png
deleted file mode 100644
index 625b827..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_call_end_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_made_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_made_white_24.png
deleted file mode 100644
index 9b3cd43..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_call_made_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_missed_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_missed_white_24.png
deleted file mode 100644
index 42c360b..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_call_missed_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_received_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_received_white_24.png
deleted file mode 100644
index fbc1e86..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_call_received_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_18.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_18.png
deleted file mode 100644
index bd57485..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_24.png
deleted file mode 100644
index 77f9de5..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_call_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_24.png
deleted file mode 100644
index e830522..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_48.png b/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_48.png
deleted file mode 100644
index be9fb22..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_camera_alt_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_check_black_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_check_black_24.png
deleted file mode 100644
index 1c14c9c..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_check_black_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_close_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_close_white_24.png
deleted file mode 100644
index 3f1f3f8..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_close_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index 8ac80b0..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_content_copy_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_delete_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_delete_white_24.png
deleted file mode 100644
index e2268c9..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_delete_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_dialpad_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_dialpad_white_24.png
deleted file mode 100644
index 6c405f9..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_dialpad_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_edit_grey600_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_edit_grey600_24.png
deleted file mode 100644
index f003bc9..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_edit_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_exit_white_48.png b/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_exit_white_48.png
deleted file mode 100644
index 364bad0..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_exit_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_white_48.png b/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_white_48.png
deleted file mode 100644
index 4423c7c..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_fullscreen_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_grade_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_grade_white_24.png
deleted file mode 100644
index d85d324..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_grade_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_hd_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_hd_white_24.png
deleted file mode 100644
index 30938fe..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_hd_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_headset_grey600_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_headset_grey600_24.png
deleted file mode 100644
index 371efd3..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_headset_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_image_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_image_white_24.png
deleted file mode 100644
index d17a3fa..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_image_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_info_outline_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_info_outline_white_24.png
deleted file mode 100644
index 353e064..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_info_outline_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_language_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_language_white_24.png
deleted file mode 100644
index 0bc7dfd..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_language_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_message_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_message_white_24.png
deleted file mode 100644
index 3072b75..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_message_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_more_vert_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_more_vert_white_24.png
deleted file mode 100644
index 5ec0116..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_more_vert_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_pause_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_pause_white_24.png
deleted file mode 100644
index 2272d47..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_pause_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_people_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_people_white_24.png
deleted file mode 100644
index 3f20e75..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_people_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_person_add_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_person_add_white_24.png
deleted file mode 100644
index 38e0a28..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_person_add_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_person_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_person_white_24.png
deleted file mode 100644
index f0b1c72..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_person_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_library_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_photo_library_white_24.png
deleted file mode 100644
index 02ef4cd..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_library_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_24.png
deleted file mode 100644
index d474bd5..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_48.png b/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_48.png
deleted file mode 100644
index 2642b9e..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_photo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_play_arrow_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_play_arrow_white_24.png
deleted file mode 100644
index c61e948..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_play_arrow_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_report_grey600_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_report_grey600_24.png
deleted file mode 100644
index 88fa794..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_report_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_24.png
deleted file mode 100644
index ac0f394..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_36.png b/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_36.png
deleted file mode 100644
index ff7d957..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_report_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_schedule_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_schedule_white_24.png
deleted file mode 100644
index f69736f..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_schedule_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index b58afb0..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_send_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_signal_wifi_4_bar_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_signal_wifi_4_bar_white_24.png
deleted file mode 100644
index dd5a42f..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_signal_wifi_4_bar_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-mdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index b67f6a9..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_undo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_off_white_36.png b/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_off_white_36.png
deleted file mode 100644
index aaf5ac2..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_off_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_white_18.png b/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_white_18.png
deleted file mode 100644
index 1dafd49..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_videocam_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_voicemail_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_voicemail_white_24.png
deleted file mode 100644
index e5aa7db..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_voicemail_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_volume_down_white_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_volume_down_white_24.png
deleted file mode 100644
index 10992ed..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_volume_down_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-mdpi/quantum_ic_volume_up_grey600_24.png b/assets/quantum/res/drawable-mdpi/quantum_ic_volume_up_grey600_24.png
deleted file mode 100644
index d6cea36..0000000
--- a/assets/quantum/res/drawable-mdpi/quantum_ic_volume_up_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_arrow_drop_down_white_18.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_arrow_drop_down_white_18.png
deleted file mode 100644
index 4c6076d..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_arrow_drop_down_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_backspace_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_backspace_white_24.png
deleted file mode 100644
index ec5412b..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_backspace_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_block_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_block_white_24.png
deleted file mode 100644
index 7aba97b..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_block_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_24.png
deleted file mode 100644
index a4fe688..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_36.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_36.png
deleted file mode 100644
index e1831d7..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_end_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_made_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_made_white_24.png
deleted file mode 100644
index 7fe6941..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_made_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_missed_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_missed_white_24.png
deleted file mode 100644
index dd64489..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_missed_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_received_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_received_white_24.png
deleted file mode 100644
index 807308d..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_received_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_18.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_18.png
deleted file mode 100644
index 4dc5065..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_24.png
deleted file mode 100644
index ef45e93..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_call_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_24.png
deleted file mode 100644
index be9fb22..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_48.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_48.png
deleted file mode 100644
index 777658e..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_camera_alt_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_check_black_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_check_black_24.png
deleted file mode 100644
index 64a4944..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_check_black_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_close_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_close_white_24.png
deleted file mode 100644
index 59c2fae..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_close_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index ca62598..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_content_copy_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_delete_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_delete_white_24.png
deleted file mode 100644
index 484260a..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_delete_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_dialpad_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_dialpad_white_24.png
deleted file mode 100644
index 0e89f6c..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_dialpad_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_edit_grey600_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_edit_grey600_24.png
deleted file mode 100644
index b5b3a24..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_edit_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_exit_white_48.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_exit_white_48.png
deleted file mode 100644
index ef360fe..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_exit_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_white_48.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_white_48.png
deleted file mode 100644
index c1dcfb2..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_fullscreen_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_grade_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_grade_white_24.png
deleted file mode 100644
index ce1f670..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_grade_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_hd_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_hd_white_24.png
deleted file mode 100644
index 4c954d8..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_hd_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_headset_grey600_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_headset_grey600_24.png
deleted file mode 100644
index f7dbee1..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_headset_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_image_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_image_white_24.png
deleted file mode 100644
index 07ee6bc..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_image_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_info_outline_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_info_outline_white_24.png
deleted file mode 100644
index c571b2e..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_info_outline_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_language_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_language_white_24.png
deleted file mode 100644
index eeaab46..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_language_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_message_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_message_white_24.png
deleted file mode 100644
index 763767b..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_message_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_more_vert_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_more_vert_white_24.png
deleted file mode 100644
index 96e5d43..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_more_vert_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_pause_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_pause_white_24.png
deleted file mode 100644
index f49aed7..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_pause_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_people_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_people_white_24.png
deleted file mode 100644
index 715b49a..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_people_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_person_add_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_person_add_white_24.png
deleted file mode 100644
index 7e7c289..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_person_add_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_person_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_person_white_24.png
deleted file mode 100644
index aea15f0..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_person_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_library_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_library_white_24.png
deleted file mode 100644
index 4bd2898..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_library_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_24.png
deleted file mode 100644
index 2642b9e..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_48.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_48.png
deleted file mode 100644
index 2ffdb55..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_photo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_play_arrow_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_play_arrow_white_24.png
deleted file mode 100644
index a3c80e7..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_play_arrow_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_grey600_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_report_grey600_24.png
deleted file mode 100644
index 9b9d49f..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_24.png
deleted file mode 100644
index 74fc594..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_36.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_36.png
deleted file mode 100644
index 26b9172..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_report_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_schedule_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_schedule_white_24.png
deleted file mode 100644
index 1749ea2..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_schedule_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index ef59e77..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_send_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_signal_wifi_4_bar_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_signal_wifi_4_bar_white_24.png
deleted file mode 100644
index 28b5afa..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_signal_wifi_4_bar_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index a5e719c..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_undo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_off_white_36.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_off_white_36.png
deleted file mode 100644
index 69565f2..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_off_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_white_18.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_white_18.png
deleted file mode 100644
index d83e0d5..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_videocam_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_voicemail_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_voicemail_white_24.png
deleted file mode 100644
index 59126d7..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_voicemail_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_down_white_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_down_white_24.png
deleted file mode 100644
index 2621bc1..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_down_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_up_grey600_24.png b/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_up_grey600_24.png
deleted file mode 100644
index a45093f..0000000
--- a/assets/quantum/res/drawable-xhdpi/quantum_ic_volume_up_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_arrow_drop_down_white_18.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_arrow_drop_down_white_18.png
deleted file mode 100644
index 2609ae1..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_arrow_drop_down_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_backspace_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_backspace_white_24.png
deleted file mode 100644
index f6a90ac..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_backspace_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_block_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_block_white_24.png
deleted file mode 100644
index fddfa54..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_block_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_24.png
deleted file mode 100644
index e1831d7..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_36.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_36.png
deleted file mode 100644
index 13ffc2a..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_end_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_made_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_made_white_24.png
deleted file mode 100644
index ae471c9..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_made_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_missed_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_missed_white_24.png
deleted file mode 100644
index 2374dc5..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_missed_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_received_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_received_white_24.png
deleted file mode 100644
index 5842111..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_received_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_18.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_18.png
deleted file mode 100644
index 6f4dcea..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_24.png
deleted file mode 100644
index 90ead2e..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_call_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_24.png
deleted file mode 100644
index c8e69dc..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_48.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_48.png
deleted file mode 100644
index a4e7aea..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_camera_alt_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_check_black_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_check_black_24.png
deleted file mode 100644
index b26a2c0..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_check_black_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_close_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_close_white_24.png
deleted file mode 100644
index d5fd569..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_close_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index c480ba7..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_content_copy_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_delete_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_delete_white_24.png
deleted file mode 100644
index 603f28c..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_delete_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_dialpad_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_dialpad_white_24.png
deleted file mode 100644
index 1750005..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_dialpad_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_edit_grey600_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_edit_grey600_24.png
deleted file mode 100644
index f1f9ffc..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_edit_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_exit_white_48.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_exit_white_48.png
deleted file mode 100644
index b7f4133..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_exit_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_white_48.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_white_48.png
deleted file mode 100644
index a0a1b4d..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_fullscreen_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_grade_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_grade_white_24.png
deleted file mode 100644
index 44f3fdf..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_grade_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_hd_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_hd_white_24.png
deleted file mode 100644
index dd08bbb..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_hd_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_headset_grey600_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_headset_grey600_24.png
deleted file mode 100644
index de1739b..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_headset_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_image_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_image_white_24.png
deleted file mode 100644
index 0059339..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_image_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_info_outline_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_info_outline_white_24.png
deleted file mode 100644
index c41a5fc..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_info_outline_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_language_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_language_white_24.png
deleted file mode 100644
index d4b5518..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_language_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_message_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_message_white_24.png
deleted file mode 100644
index 0a79824..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_message_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_more_vert_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_more_vert_white_24.png
deleted file mode 100644
index 801ad89..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_more_vert_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_pause_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_pause_white_24.png
deleted file mode 100644
index 7192ad4..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_pause_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_people_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_people_white_24.png
deleted file mode 100644
index 7f0b7e9..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_people_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_add_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_add_white_24.png
deleted file mode 100644
index 8f744f0..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_add_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_white_24.png
deleted file mode 100644
index 184f741..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_person_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_library_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_library_white_24.png
deleted file mode 100644
index 4974792..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_library_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_24.png
deleted file mode 100644
index f9f1def..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_48.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_48.png
deleted file mode 100644
index 3fe5c5c..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_photo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_play_arrow_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_play_arrow_white_24.png
deleted file mode 100644
index 547ef30..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_play_arrow_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_grey600_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_grey600_24.png
deleted file mode 100644
index e0721e6..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_24.png
deleted file mode 100644
index 26b9172..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_36.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_36.png
deleted file mode 100644
index 2040c36..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_report_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_schedule_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_schedule_white_24.png
deleted file mode 100644
index 96df1fb..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_schedule_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 0c52564..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_send_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png
deleted file mode 100644
index f4105ec..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 8745f69..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_undo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_off_white_36.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_off_white_36.png
deleted file mode 100644
index ff84832..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_off_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_white_18.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_white_18.png
deleted file mode 100644
index 49562a6..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_videocam_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_voicemail_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_voicemail_white_24.png
deleted file mode 100644
index 28b8e93..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_voicemail_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_down_white_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_down_white_24.png
deleted file mode 100644
index 5eb8b67..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_down_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_up_grey600_24.png b/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_up_grey600_24.png
deleted file mode 100644
index 413b386..0000000
--- a/assets/quantum/res/drawable-xxhdpi/quantum_ic_volume_up_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_arrow_drop_down_white_18.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_arrow_drop_down_white_18.png
deleted file mode 100644
index c19c19d..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_arrow_drop_down_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_backspace_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_backspace_white_24.png
deleted file mode 100644
index 88131b9..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_backspace_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_block_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_block_white_24.png
deleted file mode 100644
index 0378d1b..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_block_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_24.png
deleted file mode 100644
index 8801d0d..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_36.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_36.png
deleted file mode 100644
index c8099a1..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_end_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_made_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_made_white_24.png
deleted file mode 100644
index 844ef86..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_made_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_missed_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_missed_white_24.png
deleted file mode 100644
index b1321a9..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_missed_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_received_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_received_white_24.png
deleted file mode 100644
index 417999c..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_received_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_18.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_18.png
deleted file mode 100644
index 90ead2e..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_24.png
deleted file mode 100644
index b0e0205..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_call_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_24.png
deleted file mode 100644
index 777658e..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_48.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_48.png
deleted file mode 100644
index f2fe54b..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_camera_alt_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_check_black_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_check_black_24.png
deleted file mode 100644
index 2f6d638..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_check_black_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_close_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_close_white_24.png
deleted file mode 100644
index dac4e9c..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_close_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_content_copy_grey600_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_content_copy_grey600_24.png
deleted file mode 100644
index f0ea085..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_content_copy_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_delete_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_delete_white_24.png
deleted file mode 100644
index c582dc2..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_delete_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_dialpad_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_dialpad_white_24.png
deleted file mode 100644
index eb4307a..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_dialpad_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_edit_grey600_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_edit_grey600_24.png
deleted file mode 100644
index a61298d..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_edit_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_exit_white_48.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_exit_white_48.png
deleted file mode 100644
index b47b3f8..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_exit_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_white_48.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_white_48.png
deleted file mode 100644
index ea9f18a..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_fullscreen_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_grade_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_grade_white_24.png
deleted file mode 100644
index 31000c6..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_grade_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_hd_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_hd_white_24.png
deleted file mode 100644
index 3f87b88..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_hd_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_headset_grey600_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_headset_grey600_24.png
deleted file mode 100644
index e968fa7d..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_headset_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_image_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_image_white_24.png
deleted file mode 100644
index f62cee6..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_image_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_info_outline_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_info_outline_white_24.png
deleted file mode 100644
index 3a82cab..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_info_outline_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_language_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_language_white_24.png
deleted file mode 100644
index a576ac7..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_language_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_message_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_message_white_24.png
deleted file mode 100644
index fa7c17a..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_message_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_more_vert_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_more_vert_white_24.png
deleted file mode 100644
index 7a97f4c..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_more_vert_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_pause_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_pause_white_24.png
deleted file mode 100644
index 660ac65..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_pause_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_people_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_people_white_24.png
deleted file mode 100644
index f52bd1a..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_people_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_add_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_add_white_24.png
deleted file mode 100644
index 2fa2cca..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_add_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_white_24.png
deleted file mode 100644
index 33d40d8..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_person_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_library_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_library_white_24.png
deleted file mode 100644
index 8627f42..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_library_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_24.png
deleted file mode 100644
index 2ffdb55..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_48.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_48.png
deleted file mode 100644
index 7d5091d..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_photo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_play_arrow_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_play_arrow_white_24.png
deleted file mode 100644
index be5c062..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_play_arrow_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_grey600_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_grey600_24.png
deleted file mode 100644
index 29ac881..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_24.png
deleted file mode 100644
index 023a56e..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_36.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_36.png
deleted file mode 100644
index 1912789..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_report_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_schedule_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_schedule_white_24.png
deleted file mode 100644
index 19390a8..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_schedule_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_send_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_send_white_24.png
deleted file mode 100644
index 9dfa888..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_send_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png
deleted file mode 100644
index 58a4f9c..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_signal_wifi_4_bar_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_undo_white_48.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_undo_white_48.png
deleted file mode 100644
index 6d703c6..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_undo_white_48.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_off_white_36.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_off_white_36.png
deleted file mode 100644
index 7a915c3..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_off_white_36.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_white_18.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_white_18.png
deleted file mode 100644
index 44c28e2..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_videocam_white_18.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_voicemail_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_voicemail_white_24.png
deleted file mode 100644
index 820ff50..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_voicemail_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_down_white_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_down_white_24.png
deleted file mode 100644
index 4ab55ab..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_down_white_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_up_grey600_24.png b/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_up_grey600_24.png
deleted file mode 100644
index 429dc02..0000000
--- a/assets/quantum/res/drawable-xxxhdpi/quantum_ic_volume_up_grey600_24.png
+++ /dev/null
Binary files differ
diff --git a/assets/quantum/res/drawable/quantum_ic_access_time_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_access_time_vd_theme_24.xml
index b490b3c..2faaa02 100644
--- a/assets/quantum/res/drawable/quantum_ic_access_time_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_access_time_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8zM12.5,7L11,7v6l5.25,3.15 0.75,-1.23 -4.5,-2.67z"/>
-</vector>
\ No newline at end of file
+      android:pathData="M612,668L668,612L520,464L520,280L440,280L440,496L612,668ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480ZM480,800Q613,800 706.5,706.5Q800,613 800,480Q800,347 706.5,253.5Q613,160 480,160Q347,160 253.5,253.5Q160,347 160,480Q160,613 253.5,706.5Q347,800 480,800Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_add_call_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_add_call_vd_theme_24.xml
index b7d3a09..23e2ad6 100644
--- a/assets/quantum/res/drawable/quantum_ic_add_call_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_add_call_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M20,15.5c-1.25,0 -2.45,-0.2 -3.57,-0.57 -0.35,-0.11 -0.74,-0.03 -1.02,0.24l-2.2,2.2c-2.83,-1.44 -5.15,-3.75 -6.59,-6.59l2.2,-2.21c0.28,-0.26 0.36,-0.65 0.25,-1C8.7,6.45 8.5,5.25 8.5,4c0,-0.55 -0.45,-1 -1,-1H4c-0.55,0 -1,0.45 -1,1 0,9.39 7.61,17 17,17 0.55,0 1,-0.45 1,-1v-3.5c0,-0.55 -0.45,-1 -1,-1zM21,6h-3V3h-2v3h-3v2h3v3h2V8h3z"/>
-</vector>
\ No newline at end of file
+      android:pathData="M640,440L640,320L520,320L520,240L640,240L640,120L720,120L720,240L840,240L840,320L720,320L720,440L640,440ZM798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_arrow_back_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_arrow_back_vd_theme_24.xml
index 12db78d..20e9fb8 100644
--- a/assets/quantum/res/drawable/quantum_ic_arrow_back_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_arrow_back_vd_theme_24.xml
@@ -1,26 +1,15 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal"
-        android:autoMirrored="true">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal"
+    android:autoMirrored="true">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
+        android:pathData="M313,520L537,744L480,800L160,480L480,160L537,216L313,440L800,440L800,520L313,520Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_arrow_drop_down_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_arrow_drop_down_vd_theme_24.xml
deleted file mode 100644
index 0c1c4f0..0000000
--- a/assets/quantum/res/drawable/quantum_ic_arrow_drop_down_vd_theme_24.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M7,10l5,5 5,-5z"/>
-</vector>
\ No newline at end of file
diff --git a/assets/quantum/res/drawable/quantum_ic_backspace_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_backspace_vd_theme_24.xml
new file mode 100644
index 0000000..153317b
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_backspace_vd_theme_24.xml
@@ -0,0 +1,15 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal"
+    android:autoMirrored="true">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M360,760Q340,760 322.5,751Q305,742 294,726L120,480L294,234Q305,218 322.5,209Q340,200 360,200L760,200Q793,200 816.5,223.5Q840,247 840,280L840,680Q840,713 816.5,736.5Q793,760 760,760L360,760ZM760,680Q760,680 760,680Q760,680 760,680L760,480L760,280Q760,280 760,280Q760,280 760,280L760,280Q760,280 760,280Q760,280 760,280L760,680Q760,680 760,680Q760,680 760,680L760,680ZM360,680L760,680Q760,680 760,680Q760,680 760,680L760,280Q760,280 760,280Q760,280 760,280L360,280Q360,280 360,280Q360,280 360,280L218,480L360,680Q360,680 360,680Q360,680 360,680ZM456,640L560,536L664,640L720,584L616,480L720,376L664,320L560,424L456,320L400,376L504,480L400,584L456,640Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_block_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_block_vd_theme_24.xml
index 139e06a..fefb2a9 100644
--- a/assets/quantum/res/drawable/quantum_ic_block_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_block_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM4,12c0,-4.42 3.58,-8 8,-8 1.85,0 3.55,0.63 4.9,1.69L5.69,16.9C4.63,15.55 4,13.85 4,12zM12,20c-1.85,0 -3.55,-0.63 -4.9,-1.69L18.31,7.1C19.37,8.45 20,10.15 20,12c0,4.42 -3.58,8 -8,8z"/>
+        android:pathData="M480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q534,800 584,782.5Q634,765 676,732L228,284Q195,326 177.5,376Q160,426 160,480Q160,614 253,707Q346,800 480,800ZM732,676Q765,634 782.5,584Q800,534 800,480Q800,346 707,253Q614,160 480,160Q426,160 376,177.5Q326,195 284,228L732,676Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_bluetooth_audio_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_bluetooth_audio_vd_theme_24.xml
index f5a7e8b..38d3664 100644
--- a/assets/quantum/res/drawable/quantum_ic_bluetooth_audio_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_bluetooth_audio_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M14.24,12.01l2.32,2.32c0.28,-0.72 0.44,-1.51 0.44,-2.33 0,-0.82 -0.16,-1.59 -0.43,-2.31l-2.33,2.32zM19.53,6.71l-1.26,1.26c0.63,1.21 0.98,2.57 0.98,4.02s-0.36,2.82 -0.98,4.02l1.2,1.2c0.97,-1.54 1.54,-3.36 1.54,-5.31 -0.01,-1.89 -0.55,-3.67 -1.48,-5.19zM15.71,7.71L10,2L9,2v7.59L4.41,5 3,6.41 8.59,12 3,17.59 4.41,19 9,14.41L9,22h1l5.71,-5.71 -4.3,-4.29 4.3,-4.29zM11,5.83l1.88,1.88L11,9.59L11,5.83zM12.88,16.29L11,18.17v-3.76l1.88,1.88z"/>
+      android:pathData="M360,880L360,576L176,760L120,704L344,480L120,256L176,200L360,384L360,80L400,80L628,308L456,480L628,652L400,880L360,880ZM440,384L516,308L440,234L440,384ZM440,726L516,652L440,576L440,726ZM662,574L570,480L662,388Q671,410 676.5,433Q682,456 682,480Q682,504 676.5,527.5Q671,551 662,574ZM780,688L730,640Q750,603 761,562.5Q772,522 772,480Q772,438 761,397.5Q750,357 730,320L780,270Q809,318 824.5,371Q840,424 840,480Q840,536 824.5,588.5Q809,641 780,688Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_business_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_business_vd_theme_24.xml
index a8bebc3..10fb94c 100644
--- a/assets/quantum/res/drawable/quantum_ic_business_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_business_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M12,7L12,3L2,3v18h20L22,7L12,7zM6,19L4,19v-2h2v2zM6,15L4,15v-2h2v2zM6,11L4,11L4,9h2v2zM6,7L4,7L4,5h2v2zM10,19L8,19v-2h2v2zM10,15L8,15v-2h2v2zM10,11L8,11L8,9h2v2zM10,7L8,7L8,5h2v2zM20,19h-8v-2h2v-2h-2v-2h2v-2h-2L12,9h8v10zM18,11h-2v2h2v-2zM18,15h-2v2h2v-2z"/>
+        android:pathData="M80,840L80,120L480,120L480,280L880,280L880,840L80,840ZM160,760L240,760L240,680L160,680L160,760ZM160,600L240,600L240,520L160,520L160,600ZM160,440L240,440L240,360L160,360L160,440ZM160,280L240,280L240,200L160,200L160,280ZM320,760L400,760L400,680L320,680L320,760ZM320,600L400,600L400,520L320,520L320,600ZM320,440L400,440L400,360L320,360L320,440ZM320,280L400,280L400,200L320,200L320,280ZM480,760L800,760L800,360L480,360L480,440L560,440L560,520L480,520L480,600L560,600L560,680L480,680L480,760ZM640,520L640,440L720,440L720,520L640,520ZM640,680L640,600L720,600L720,680L640,680Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_call_end_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_call_end_vd_theme_24.xml
index ad9a4af..12df3db 100644
--- a/assets/quantum/res/drawable/quantum_ic_call_end_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_call_end_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M12,9c-1.6,0 -3.15,0.25 -4.6,0.72v3.1c0,0.39 -0.23,0.74 -0.56,0.9 -0.98,0.49 -1.87,1.12 -2.66,1.85 -0.18,0.18 -0.43,0.28 -0.7,0.28 -0.28,0 -0.53,-0.11 -0.71,-0.29L0.29,13.08c-0.18,-0.17 -0.29,-0.42 -0.29,-0.7 0,-0.28 0.11,-0.53 0.29,-0.71C3.34,8.78 7.46,7 12,7s8.66,1.78 11.71,4.67c0.18,0.18 0.29,0.43 0.29,0.71 0,0.28 -0.11,0.53 -0.29,0.71l-2.48,2.48c-0.18,0.18 -0.43,0.29 -0.71,0.29 -0.27,0 -0.52,-0.11 -0.7,-0.28 -0.79,-0.74 -1.69,-1.36 -2.67,-1.85 -0.33,-0.16 -0.56,-0.5 -0.56,-0.9v-3.1C15.15,9.25 13.6,9 12,9z"/>
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M136,656L44,566Q32,554 32,538Q32,522 44,510Q132,415 247,367.5Q362,320 480,320Q598,320 712.5,367.5Q827,415 916,510Q928,522 928,538Q928,554 916,566L824,656Q813,667 798.5,668Q784,669 772,660L656,572Q648,566 644,558Q640,550 640,540L640,426Q602,414 562,407Q522,400 480,400Q438,400 398,407Q358,414 320,426L320,540Q320,550 316,558Q312,566 304,572L188,660Q176,669 161.5,668Q147,667 136,656ZM240,458Q211,473 184,492.5Q157,512 128,536Q128,536 128,536Q128,536 128,536L168,576Q168,576 168,576Q168,576 168,576L240,520Q240,520 240,520Q240,520 240,520L240,458ZM720,460L720,520Q720,520 720,520Q720,520 720,520L792,576Q792,576 792,576Q792,576 792,576L832,538Q832,538 832,538Q832,538 832,538Q803,512 776,493Q749,474 720,460ZM240,458L240,458Q240,458 240,458Q240,458 240,458L240,458Q240,458 240,458Q240,458 240,458L240,458Q240,458 240,458Q240,458 240,458Q240,458 240,458Q240,458 240,458ZM720,460Q720,460 720,460Q720,460 720,460Q720,460 720,460Q720,460 720,460L720,460Q720,460 720,460Q720,460 720,460L720,460Q720,460 720,460Q720,460 720,460L720,460Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_call_end_vd_theme_36.xml b/assets/quantum/res/drawable/quantum_ic_call_end_vd_theme_36.xml
new file mode 100644
index 0000000..e9b6452
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_call_end_vd_theme_36.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="36dp"
+    android:height="36dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M136,656L44,566Q32,554 32,538Q32,522 44,510Q132,415 247,367.5Q362,320 480,320Q598,320 712.5,367.5Q827,415 916,510Q928,522 928,538Q928,554 916,566L824,656Q813,667 798.5,668Q784,669 772,660L656,572Q648,566 644,558Q640,550 640,540L640,426Q602,414 562,407Q522,400 480,400Q438,400 398,407Q358,414 320,426L320,540Q320,550 316,558Q312,566 304,572L188,660Q176,669 161.5,668Q147,667 136,656ZM240,458Q211,473 184,492.5Q157,512 128,536Q128,536 128,536Q128,536 128,536L168,576Q168,576 168,576Q168,576 168,576L240,520Q240,520 240,520Q240,520 240,520L240,458ZM720,460L720,520Q720,520 720,520Q720,520 720,520L792,576Q792,576 792,576Q792,576 792,576L832,538Q832,538 832,538Q832,538 832,538Q803,512 776,493Q749,474 720,460ZM240,458L240,458Q240,458 240,458Q240,458 240,458L240,458Q240,458 240,458Q240,458 240,458L240,458Q240,458 240,458Q240,458 240,458Q240,458 240,458Q240,458 240,458ZM720,460Q720,460 720,460Q720,460 720,460Q720,460 720,460Q720,460 720,460L720,460Q720,460 720,460Q720,460 720,460L720,460Q720,460 720,460Q720,460 720,460L720,460Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_call_made_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_call_made_vd_theme_24.xml
index 6069227..b5d9f36 100644
--- a/assets/quantum/res/drawable/quantum_ic_call_made_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_call_made_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M9,5v2h6.59L4,18.59 5.41,20 17,8.41V15h2V5z"/>
+        android:pathData="M216,800L160,744L624,280L360,280L360,200L760,200L760,600L680,600L680,336L216,800Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_call_merge_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_call_merge_vd_theme_24.xml
index 660faf4..870558e 100644
--- a/assets/quantum/res/drawable/quantum_ic_call_merge_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_call_merge_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M17,20.41L18.41,19 15,15.59 13.59,17 17,20.41zM7.5,8H11v5.59L5.59,19 7,20.41l6,-6V8h3.5L12,3.5 7.5,8z"/>
+      android:pathData="M296,800L240,744L440,544L440,275L337,378L280,321L480,121L681,322L624,379L520,275L520,576L296,800ZM664,801L536,674L593,617L720,745L664,801Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_call_missed_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_call_missed_vd_theme_24.xml
index 657dbf5..c1a426c 100644
--- a/assets/quantum/res/drawable/quantum_ic_call_missed_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_call_missed_vd_theme_24.xml
@@ -1,25 +1,15 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal"
+    android:autoMirrored="true">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M19.59,7L12,14.59 6.41,9H11V7H3v8h2v-4.59l7,7 9,-9z"/>
+        android:pathData="M480,697L200,417L200,600L120,600L120,280L440,280L440,360L256,360L480,584L784,280L840,337L480,697Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_call_received_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_call_received_vd_theme_24.xml
index a489532..d8bb8b7 100644
--- a/assets/quantum/res/drawable/quantum_ic_call_received_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_call_received_vd_theme_24.xml
@@ -1,25 +1,15 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal"
+    android:autoMirrored="true">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M20,5.41L18.59,4 7,15.59V9H5v10h10v-2H8.41z"/>
+        android:pathData="M200,760L200,360L280,360L280,624L744,160L800,216L336,680L600,680L600,760L200,760Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_call_split_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_call_split_vd_theme_24.xml
new file mode 100644
index 0000000..61cad11
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_call_split_vd_theme_24.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M440,800L440,496L240,296L240,400L160,400L160,160L400,160L400,240L296,240L520,464L520,800L440,800ZM594,424L536,366L664,240L560,240L560,160L800,160L800,400L720,400L720,296L594,424Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_call_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_call_vd_theme_24.xml
index 5dc12ec..e89b29c 100644
--- a/assets/quantum/res/drawable/quantum_ic_call_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_call_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M6.62,10.79c1.44,2.83 3.76,5.14 6.59,6.59l2.2,-2.2c0.27,-0.27 0.67,-0.36 1.02,-0.24 1.12,0.37 2.33,0.57 3.57,0.57 0.55,0 1,0.45 1,1V20c0,0.55 -0.45,1 -1,1 -9.39,0 -17,-7.61 -17,-17 0,-0.55 0.45,-1 1,-1h3.5c0.55,0 1,0.45 1,1 0,1.25 0.2,2.45 0.57,3.57 0.11,0.35 0.03,0.74 -0.25,1.02l-2.2,2.2z"/>
+        android:pathData="M798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_clear_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_clear_vd_theme_24.xml
new file mode 100644
index 0000000..83ae11f
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_clear_vd_theme_24.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M256,760L200,704L424,480L200,256L256,200L480,424L704,200L760,256L536,480L760,704L704,760L480,536L256,760Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_clock_filled_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_clock_filled_vd_theme_24.xml
new file mode 100644
index 0000000..7229b8c
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_clock_filled_vd_theme_24.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M612,668L668,612L520,464L520,280L440,280L440,496L612,668ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_close_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_close_vd_theme_24.xml
index 673b510..d41b990 100644
--- a/assets/quantum/res/drawable/quantum_ic_close_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_close_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
+        android:pathData="M256,760L200,704L424,480L200,256L256,200L480,424L704,200L760,256L536,480L760,704L704,760L480,536L256,760Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_content_copy_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_content_copy_vd_theme_24.xml
index 6755e60..1c7d28b 100644
--- a/assets/quantum/res/drawable/quantum_ic_content_copy_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_content_copy_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M16,1L4,1c-1.1,0 -2,0.9 -2,2v14h2L4,3h12L16,1zM19,5L8,5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h11c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM19,21L8,21L8,7h11v14z"/>
+        android:pathData="M360,720Q327,720 303.5,696.5Q280,673 280,640L280,160Q280,127 303.5,103.5Q327,80 360,80L720,80Q753,80 776.5,103.5Q800,127 800,160L800,640Q800,673 776.5,696.5Q753,720 720,720L360,720ZM360,640L720,640Q720,640 720,640Q720,640 720,640L720,160Q720,160 720,160Q720,160 720,160L360,160Q360,160 360,160Q360,160 360,160L360,640Q360,640 360,640Q360,640 360,640ZM200,880Q167,880 143.5,856.5Q120,833 120,800L120,240L200,240L200,800Q200,800 200,800Q200,800 200,800L640,800L640,880L200,880ZM360,640Q360,640 360,640Q360,640 360,640L360,160Q360,160 360,160Q360,160 360,160L360,160Q360,160 360,160Q360,160 360,160L360,640Q360,640 360,640Q360,640 360,640L360,640Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_delete_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_delete_vd_theme_24.xml
index 900b559..c9dd18d 100644
--- a/assets/quantum/res/drawable/quantum_ic_delete_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_delete_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:tint="?attr/colorControlNormal"
-    android:viewportHeight="24.0"
-    android:viewportWidth="24.0">
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
-</vector>
\ No newline at end of file
+      android:pathData="M280,840Q247,840 223.5,816.5Q200,793 200,760L200,240L160,240L160,160L360,160L360,120L600,120L600,160L800,160L800,240L760,240L760,760Q760,793 736.5,816.5Q713,840 680,840L280,840ZM680,240L280,240L280,760Q280,760 280,760Q280,760 280,760L680,760Q680,760 680,760Q680,760 680,760L680,240ZM360,680L440,680L440,320L360,320L360,680ZM520,680L600,680L600,320L520,320L520,680ZM280,240L280,240L280,760Q280,760 280,760Q280,760 280,760L280,760Q280,760 280,760Q280,760 280,760L280,240Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_dialpad_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_dialpad_vd_theme_24.xml
index 4e340ed..b2899bc 100644
--- a/assets/quantum/res/drawable/quantum_ic_dialpad_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_dialpad_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,19c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM6,1c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM6,7c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM6,13c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,5c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,13c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,13c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,7c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,7c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,1c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/>
-</vector>
\ No newline at end of file
+      android:pathData="M480,920Q447,920 423.5,896.5Q400,873 400,840Q400,807 423.5,783.5Q447,760 480,760Q513,760 536.5,783.5Q560,807 560,840Q560,873 536.5,896.5Q513,920 480,920ZM240,200Q207,200 183.5,176.5Q160,153 160,120Q160,87 183.5,63.5Q207,40 240,40Q273,40 296.5,63.5Q320,87 320,120Q320,153 296.5,176.5Q273,200 240,200ZM240,440Q207,440 183.5,416.5Q160,393 160,360Q160,327 183.5,303.5Q207,280 240,280Q273,280 296.5,303.5Q320,327 320,360Q320,393 296.5,416.5Q273,440 240,440ZM240,680Q207,680 183.5,656.5Q160,633 160,600Q160,567 183.5,543.5Q207,520 240,520Q273,520 296.5,543.5Q320,567 320,600Q320,633 296.5,656.5Q273,680 240,680ZM720,200Q687,200 663.5,176.5Q640,153 640,120Q640,87 663.5,63.5Q687,40 720,40Q753,40 776.5,63.5Q800,87 800,120Q800,153 776.5,176.5Q753,200 720,200ZM480,680Q447,680 423.5,656.5Q400,633 400,600Q400,567 423.5,543.5Q447,520 480,520Q513,520 536.5,543.5Q560,567 560,600Q560,633 536.5,656.5Q513,680 480,680ZM720,680Q687,680 663.5,656.5Q640,633 640,600Q640,567 663.5,543.5Q687,520 720,520Q753,520 776.5,543.5Q800,567 800,600Q800,633 776.5,656.5Q753,680 720,680ZM720,440Q687,440 663.5,416.5Q640,393 640,360Q640,327 663.5,303.5Q687,280 720,280Q753,280 776.5,303.5Q800,327 800,360Q800,393 776.5,416.5Q753,440 720,440ZM480,440Q447,440 423.5,416.5Q400,393 400,360Q400,327 423.5,303.5Q447,280 480,280Q513,280 536.5,303.5Q560,327 560,360Q560,393 536.5,416.5Q513,440 480,440ZM480,200Q447,200 423.5,176.5Q400,153 400,120Q400,87 423.5,63.5Q447,40 480,40Q513,40 536.5,63.5Q560,87 560,120Q560,153 536.5,176.5Q513,200 480,200Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_done_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_done_vd_theme_24.xml
index bd1887e..9f78fc2 100644
--- a/assets/quantum/res/drawable/quantum_ic_done_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_done_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z"/>
-</vector>
\ No newline at end of file
+      android:pathData="M382,720L154,492L211,435L382,606L749,239L806,296L382,720Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_edit_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_edit_vd_theme_24.xml
new file mode 100644
index 0000000..4142dda
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_edit_vd_theme_24.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M200,760L256,760L601,415L545,359L200,704L200,760ZM772,357L602,189L658,133Q681,110 714.5,110Q748,110 771,133L827,189Q850,212 851,244.5Q852,277 829,300L772,357ZM714,416L290,840L120,840L120,670L544,246L714,416ZM573,387L545,359L545,359L601,415L601,415L573,387Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_enterprise_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_enterprise_vd_theme_24.xml
index 49541ca..aa32dd0 100644
--- a/assets/quantum/res/drawable/quantum_ic_enterprise_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_enterprise_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M20,6h-4L16,4c0,-1.11 -0.89,-2 -2,-2h-4c-1.11,0 -2,0.89 -2,2v2L4,6c-1.11,0 -1.99,0.89 -1.99,2L2,19c0,1.11 0.89,2 2,2h16c1.11,0 2,-0.89 2,-2L22,8c0,-1.11 -0.89,-2 -2,-2zM12,15c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM14,6h-4L10,4h4v2z"/>
+        android:pathData="M480,620Q513,620 536.5,596.5Q560,573 560,540Q560,507 536.5,483.5Q513,460 480,460Q447,460 423.5,483.5Q400,507 400,540Q400,573 423.5,596.5Q447,620 480,620ZM160,840Q127,840 103.5,816.5Q80,793 80,760L80,320Q80,287 103.5,263.5Q127,240 160,240L320,240L320,160Q320,127 343.5,103.5Q367,80 400,80L560,80Q593,80 616.5,103.5Q640,127 640,160L640,240L800,240Q833,240 856.5,263.5Q880,287 880,320L880,760Q880,793 856.5,816.5Q833,840 800,840L160,840ZM160,760L800,760Q800,760 800,760Q800,760 800,760L800,320Q800,320 800,320Q800,320 800,320L160,320Q160,320 160,320Q160,320 160,320L160,760Q160,760 160,760Q160,760 160,760ZM400,240L560,240L560,160Q560,160 560,160Q560,160 560,160L400,160Q400,160 400,160Q400,160 400,160L400,240ZM160,760Q160,760 160,760Q160,760 160,760L160,320Q160,320 160,320Q160,320 160,320L160,320Q160,320 160,320Q160,320 160,320L160,760Q160,760 160,760Q160,760 160,760L160,760Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_exit_to_app_flip_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_exit_to_app_flip_vd_theme_24.xml
deleted file mode 100644
index 3dfbf2b..0000000
--- a/assets/quantum/res/drawable/quantum_ic_exit_to_app_flip_vd_theme_24.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
-    android:tint="?attr/colorControlNormal">
-  <group
-      android:pivotX="12"
-      android:scaleX="-1">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M10.09,15.59L11.5,17l5,-5 -5,-5 -1.41,1.41L12.67,11H3v2h9.67l-2.58,2.59zM19,3H5c-1.11,0 -2,0.9 -2,2v4h2V5h14v14H5v-4H3v4c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"/>
-  </group>
-</vector>
\ No newline at end of file
diff --git a/assets/quantum/res/drawable/quantum_ic_forward_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_forward_vd_theme_24.xml
index ecd8df4..be38f8c 100644
--- a/assets/quantum/res/drawable/quantum_ic_forward_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_forward_vd_theme_24.xml
@@ -1,25 +1,15 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal"
+    android:autoMirrored="true">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M12,8V4l8,8 -8,8v-4H4V8z"/>
+        android:pathData="M640,680L583,624L767,440L583,256L640,200L880,440L640,680ZM80,760L80,600Q80,517 138.5,458.5Q197,400 280,400L527,400L383,256L440,200L680,440L440,680L383,624L527,480L280,480Q230,480 195,515Q160,550 160,600L160,760L80,760Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_group_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_group_vd_theme_24.xml
index dc680ce..8aa9c56 100644
--- a/assets/quantum/res/drawable/quantum_ic_group_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_group_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M16,11c1.66,0 2.99,-1.34 2.99,-3S17.66,5 16,5c-1.66,0 -3,1.34 -3,3s1.34,3 3,3zM8,11c1.66,0 2.99,-1.34 2.99,-3S9.66,5 8,5C6.34,5 5,6.34 5,8s1.34,3 3,3zM8,13c-2.33,0 -7,1.17 -7,3.5L1,19h14v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5zM16,13c-0.29,0 -0.62,0.02 -0.97,0.05 1.16,0.84 1.97,1.97 1.97,3.45L17,19h6v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5z"/>
+        android:pathData="M40,800L40,688Q40,654 57.5,625.5Q75,597 104,582Q166,551 230,535.5Q294,520 360,520Q426,520 490,535.5Q554,551 616,582Q645,597 662.5,625.5Q680,654 680,688L680,800L40,800ZM760,800L760,680Q760,636 735.5,595.5Q711,555 666,526Q717,532 762,546.5Q807,561 846,582Q882,602 901,626.5Q920,651 920,680L920,800L760,800ZM360,480Q294,480 247,433Q200,386 200,320Q200,254 247,207Q294,160 360,160Q426,160 473,207Q520,254 520,320Q520,386 473,433Q426,480 360,480ZM760,320Q760,386 713,433Q666,480 600,480Q589,480 572,477.5Q555,475 544,472Q571,440 585.5,401Q600,362 600,320Q600,278 585.5,239Q571,200 544,168Q558,163 572,161.5Q586,160 600,160Q666,160 713,207Q760,254 760,320ZM120,720L600,720L600,688Q600,677 594.5,668Q589,659 580,654Q526,627 471,613.5Q416,600 360,600Q304,600 249,613.5Q194,627 140,654Q131,659 125.5,668Q120,677 120,688L120,720ZM360,400Q393,400 416.5,376.5Q440,353 440,320Q440,287 416.5,263.5Q393,240 360,240Q327,240 303.5,263.5Q280,287 280,320Q280,353 303.5,376.5Q327,400 360,400ZM360,720L360,720L360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720L360,720ZM360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_hd_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_hd_vd_theme_24.xml
index c513feb..c70ffdb 100644
--- a/assets/quantum/res/drawable/quantum_ic_hd_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_hd_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM11,15L9.5,15v-2h-2v2L6,15L6,9h1.5v2.5h2L9.5,9L11,9v6zM13,9h4c0.55,0 1,0.45 1,1v4c0,0.55 -0.45,1 -1,1h-4L13,9zM14.5,13.5h2v-3h-2v3z"/>
+        android:pathData="M240,600L300,600L300,520L380,520L380,600L440,600L440,360L380,360L380,460L300,460L300,360L240,360L240,600ZM520,600L680,600Q697,600 708.5,588.5Q720,577 720,560L720,400Q720,383 708.5,371.5Q697,360 680,360L520,360L520,600ZM580,540L580,420L660,420Q660,420 660,420Q660,420 660,420L660,540Q660,540 660,540Q660,540 660,540L580,540ZM160,800Q127,800 103.5,776.5Q80,753 80,720L80,240Q80,207 103.5,183.5Q127,160 160,160L800,160Q833,160 856.5,183.5Q880,207 880,240L880,720Q880,753 856.5,776.5Q833,800 800,800L160,800ZM160,720L800,720Q800,720 800,720Q800,720 800,720L800,240Q800,240 800,240Q800,240 800,240L160,240Q160,240 160,240Q160,240 160,240L160,720Q160,720 160,720Q160,720 160,720ZM160,720Q160,720 160,720Q160,720 160,720L160,240Q160,240 160,240Q160,240 160,240L160,240Q160,240 160,240Q160,240 160,240L160,720Q160,720 160,720Q160,720 160,720L160,720Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_headset_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_headset_vd_theme_24.xml
index 4d65b4d..a5b810e 100644
--- a/assets/quantum/res/drawable/quantum_ic_headset_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_headset_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,1c-4.97,0 -9,4.03 -9,9v7c0,1.66 1.34,3 3,3h3v-8H5v-2c0,-3.87 3.13,-7 7,-7s7,3.13 7,7v2h-4v8h3c1.66,0 3,-1.34 3,-3v-7c0,-4.97 -4.03,-9 -9,-9z"/>
+      android:pathData="M360,840L200,840Q167,840 143.5,816.5Q120,793 120,760L120,480Q120,405 148.5,339.5Q177,274 225.5,225.5Q274,177 339.5,148.5Q405,120 480,120Q555,120 620.5,148.5Q686,177 734.5,225.5Q783,274 811.5,339.5Q840,405 840,480L840,760Q840,793 816.5,816.5Q793,840 760,840L600,840L600,520L760,520L760,480Q760,363 678.5,281.5Q597,200 480,200Q363,200 281.5,281.5Q200,363 200,480L200,520L360,520L360,840ZM280,600L200,600L200,760Q200,760 200,760Q200,760 200,760L280,760L280,600ZM680,600L680,760L760,760Q760,760 760,760Q760,760 760,760L760,600L680,600ZM280,600L280,600L200,600Q200,600 200,600Q200,600 200,600L200,600L280,600ZM680,600L760,600L760,600Q760,600 760,600Q760,600 760,600L680,600L680,600Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_history_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_history_vd_theme_24.xml
index 533d7f3..efdff58 100644
--- a/assets/quantum/res/drawable/quantum_ic_history_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_history_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M13,3c-4.97,0 -9,4.03 -9,9L1,12l3.89,3.89 0.07,0.14L9,12L6,12c0,-3.87 3.13,-7 7,-7s7,3.13 7,7 -3.13,7 -7,7c-1.93,0 -3.68,-0.79 -4.94,-2.06l-1.42,1.42C8.27,19.99 10.51,21 13,21c4.97,0 9,-4.03 9,-9s-4.03,-9 -9,-9zM12,8v5l4.28,2.54 0.72,-1.21 -3.5,-2.08L13.5,8L12,8z"/>
+        android:pathData="M480,840Q342,840 239.5,748.5Q137,657 122,520L204,520Q218,624 296.5,692Q375,760 480,760Q597,760 678.5,678.5Q760,597 760,480Q760,363 678.5,281.5Q597,200 480,200Q411,200 351,232Q291,264 250,320L360,320L360,400L120,400L120,160L200,160L200,254Q251,190 324.5,155Q398,120 480,120Q555,120 620.5,148.5Q686,177 734.5,225.5Q783,274 811.5,339.5Q840,405 840,480Q840,555 811.5,620.5Q783,686 734.5,734.5Q686,783 620.5,811.5Q555,840 480,840ZM592,648L440,496L440,280L520,280L520,464L648,592L592,648Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_image_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_image_vd_theme_24.xml
new file mode 100644
index 0000000..3eb958a
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_image_vd_theme_24.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M200,840Q167,840 143.5,816.5Q120,793 120,760L120,200Q120,167 143.5,143.5Q167,120 200,120L760,120Q793,120 816.5,143.5Q840,167 840,200L840,760Q840,793 816.5,816.5Q793,840 760,840L200,840ZM200,760L760,760Q760,760 760,760Q760,760 760,760L760,200Q760,200 760,200Q760,200 760,200L200,200Q200,200 200,200Q200,200 200,200L200,760Q200,760 200,760Q200,760 200,760ZM240,680L720,680L570,480L450,640L360,520L240,680ZM200,760Q200,760 200,760Q200,760 200,760L200,200Q200,200 200,200Q200,200 200,200L200,200Q200,200 200,200Q200,200 200,200L200,760Q200,760 200,760Q200,760 200,760L200,760Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_info_outline_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_info_outline_vd_theme_24.xml
index 4dca0df..2928f55 100644
--- a/assets/quantum/res/drawable/quantum_ic_info_outline_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_info_outline_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M11,17h2v-6h-2v6zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM11,9h2L13,7h-2v2z"/>
+        android:pathData="M440,680L520,680L520,440L440,440L440,680ZM480,360Q497,360 508.5,348.5Q520,337 520,320Q520,303 508.5,291.5Q497,280 480,280Q463,280 451.5,291.5Q440,303 440,320Q440,337 451.5,348.5Q463,360 480,360ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_language_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_language_vd_theme_24.xml
index a0d76c2..6d1d013 100644
--- a/assets/quantum/res/drawable/quantum_ic_language_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_language_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z"/>
+        android:pathData="M480,880Q398,880 325,848.5Q252,817 197.5,762.5Q143,708 111.5,635Q80,562 80,480Q80,397 111.5,324.5Q143,252 197.5,197.5Q252,143 325,111.5Q398,80 480,80Q563,80 635.5,111.5Q708,143 762.5,197.5Q817,252 848.5,324.5Q880,397 880,480Q880,562 848.5,635Q817,708 762.5,762.5Q708,817 635.5,848.5Q563,880 480,880ZM480,798Q506,762 525,723Q544,684 556,640L404,640Q416,684 435,723Q454,762 480,798ZM376,782Q358,749 344.5,713.5Q331,678 322,640L204,640Q233,690 276.5,727Q320,764 376,782ZM584,782Q640,764 683.5,727Q727,690 756,640L638,640Q629,678 615.5,713.5Q602,749 584,782ZM170,560L306,560Q303,540 301.5,520.5Q300,501 300,480Q300,459 301.5,439.5Q303,420 306,400L170,400Q165,420 162.5,439.5Q160,459 160,480Q160,501 162.5,520.5Q165,540 170,560ZM386,560L574,560Q577,540 578.5,520.5Q580,501 580,480Q580,459 578.5,439.5Q577,420 574,400L386,400Q383,420 381.5,439.5Q380,459 380,480Q380,501 381.5,520.5Q383,540 386,560ZM654,560L790,560Q795,540 797.5,520.5Q800,501 800,480Q800,459 797.5,439.5Q795,420 790,400L654,400Q657,420 658.5,439.5Q660,459 660,480Q660,501 658.5,520.5Q657,540 654,560ZM638,320L756,320Q727,270 683.5,233Q640,196 584,178Q602,211 615.5,246.5Q629,282 638,320ZM404,320L556,320Q544,276 525,237Q506,198 480,162Q454,198 435,237Q416,276 404,320ZM204,320L322,320Q331,282 344.5,246.5Q358,211 376,178Q320,196 276.5,233Q233,270 204,320Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_message_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_message_vd_theme_24.xml
index a285865..5ccddd1 100644
--- a/assets/quantum/res/drawable/quantum_ic_message_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_message_vd_theme_24.xml
@@ -1,25 +1,15 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal"
+    android:autoMirrored="true">
     <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,-2zM18,14L6,14v-2h12v2zM18,11L6,11L6,9h12v2zM18,8L6,8L6,6h12v2z"/>
+        android:pathData="M240,560L560,560L560,480L240,480L240,560ZM240,440L720,440L720,360L240,360L240,440ZM240,320L720,320L720,240L240,240L240,320ZM80,880L80,160Q80,127 103.5,103.5Q127,80 160,80L800,80Q833,80 856.5,103.5Q880,127 880,160L880,640Q880,673 856.5,696.5Q833,720 800,720L240,720L80,880ZM206,640L800,640Q800,640 800,640Q800,640 800,640L800,160Q800,160 800,160Q800,160 800,160L160,160Q160,160 160,160Q160,160 160,160L160,685L206,640ZM160,640L160,640L160,160Q160,160 160,160Q160,160 160,160L160,160Q160,160 160,160Q160,160 160,160L160,640Q160,640 160,640Q160,640 160,640L160,640Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_mic_off_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_mic_off_vd_theme_24.xml
index 0519c55..070ccde 100644
--- a/assets/quantum/res/drawable/quantum_ic_mic_off_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_mic_off_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M19,11h-1.7c0,0.74 -0.16,1.43 -0.43,2.05l1.23,1.23c0.56,-0.98 0.9,-2.09 0.9,-3.28zM14.98,11.17c0,-0.06 0.02,-0.11 0.02,-0.17L15,5c0,-1.66 -1.34,-3 -3,-3S9,3.34 9,5v0.18l5.98,5.99zM4.27,3L3,4.27l6.01,6.01L9.01,11c0,1.66 1.33,3 2.99,3 0.22,0 0.44,-0.03 0.65,-0.08l1.66,1.66c-0.71,0.33 -1.5,0.52 -2.31,0.52 -2.76,0 -5.3,-2.1 -5.3,-5.1L5,11c0,3.41 2.72,6.23 6,6.72L11,21h2v-3.28c0.91,-0.13 1.77,-0.45 2.54,-0.9L19.73,21 21,19.73 4.27,3z"/>
-</vector>
\ No newline at end of file
+      android:pathData="M710,598L652,540Q666,517 673,492Q680,467 680,440L760,440Q760,484 747,523.5Q734,563 710,598ZM480,366Q480,366 480,366Q480,366 480,366L480,366L480,366L480,366Q480,366 480,366Q480,366 480,366ZM592,478L520,406L520,200Q520,183 508.5,171.5Q497,160 480,160Q463,160 451.5,171.5Q440,183 440,200L440,326L360,246L360,200Q360,150 395,115Q430,80 480,80Q530,80 565,115Q600,150 600,200L600,440Q600,451 597.5,460Q595,469 592,478ZM440,840L440,717Q336,703 268,624Q200,545 200,440L280,440Q280,523 337.5,581.5Q395,640 480,640Q514,640 544.5,629.5Q575,619 600,600L657,657Q628,680 593.5,696Q559,712 520,717L520,840L440,840ZM792,904L56,168L112,112L848,848L792,904Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_mic_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_mic_vd_theme_24.xml
index 6220e39..664fd91 100644
--- a/assets/quantum/res/drawable/quantum_ic_mic_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_mic_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M12,14c1.66,0 2.99,-1.34 2.99,-3L15,5c0,-1.66 -1.34,-3 -3,-3S9,3.34 9,5v6c0,1.66 1.34,3 3,3zM17.3,11c0,3 -2.54,5.1 -5.3,5.1S6.7,14 6.7,11L5,11c0,3.41 2.72,6.23 6,6.72L11,21h2v-3.28c3.28,-0.48 6,-3.3 6,-6.72h-1.7z"/>
+        android:pathData="M480,560Q430,560 395,525Q360,490 360,440L360,200Q360,150 395,115Q430,80 480,80Q530,80 565,115Q600,150 600,200L600,440Q600,490 565,525Q530,560 480,560ZM480,320Q480,320 480,320Q480,320 480,320L480,320Q480,320 480,320Q480,320 480,320Q480,320 480,320Q480,320 480,320L480,320Q480,320 480,320Q480,320 480,320ZM440,840L440,717Q336,703 268,624Q200,545 200,440L280,440Q280,523 338.5,581.5Q397,640 480,640Q563,640 621.5,581.5Q680,523 680,440L760,440Q760,545 692,624Q624,703 520,717L520,840L440,840ZM480,480Q497,480 508.5,468.5Q520,457 520,440L520,200Q520,183 508.5,171.5Q497,160 480,160Q463,160 451.5,171.5Q440,183 440,200L440,440Q440,457 451.5,468.5Q463,480 480,480Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_more_vert_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_more_vert_vd_theme_24.xml
index bcdd000..f1b0236 100644
--- a/assets/quantum/res/drawable/quantum_ic_more_vert_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_more_vert_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/>
+        android:pathData="M480,800Q447,800 423.5,776.5Q400,753 400,720Q400,687 423.5,663.5Q447,640 480,640Q513,640 536.5,663.5Q560,687 560,720Q560,753 536.5,776.5Q513,800 480,800ZM480,560Q447,560 423.5,536.5Q400,513 400,480Q400,447 423.5,423.5Q447,400 480,400Q513,400 536.5,423.5Q560,447 560,480Q560,513 536.5,536.5Q513,560 480,560ZM480,320Q447,320 423.5,296.5Q400,273 400,240Q400,207 423.5,183.5Q447,160 480,160Q513,160 536.5,183.5Q560,207 560,240Q560,273 536.5,296.5Q513,320 480,320Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_network_wifi_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_network_wifi_vd_theme_24.xml
index d19748d..2faf8ff 100644
--- a/assets/quantum/res/drawable/quantum_ic_network_wifi_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_network_wifi_vd_theme_24.xml
@@ -1,29 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M12.01,21.49L23.64,7c-0.45,-0.34 -4.93,-4 -11.64,-4C5.28,3 0.81,6.66 0.36,7l11.63,14.49 0.01,0.01 0.01,-0.01z"
-        android:fillAlpha=".3"/>
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M3.53,10.95l8.46,10.54 0.01,0.01 0.01,-0.01 8.46,-10.54C20.04,10.62 16.81,8 12,8c-4.81,0 -8.04,2.62 -8.47,2.95z"/>
+        android:pathData="M480,840Q438,840 409,811Q380,782 380,740Q380,698 409,669Q438,640 480,640Q522,640 551,669Q580,698 580,740Q580,782 551,811Q522,840 480,840ZM254,614L170,528Q229,469 308.5,434.5Q388,400 480,400Q572,400 651.5,435Q731,470 790,530L706,614Q662,570 604,545Q546,520 480,520Q414,520 356,545Q298,570 254,614ZM84,444L0,360Q92,266 215,213Q338,160 480,160Q622,160 745,213Q868,266 960,360L876,444Q799,367 697.5,323.5Q596,280 480,280Q364,280 262.5,323.5Q161,367 84,444Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_pause_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_pause_vd_theme_24.xml
index b683a3b..ce2f70d 100644
--- a/assets/quantum/res/drawable/quantum_ic_pause_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_pause_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z"/>
-</vector>
\ No newline at end of file
+        android:pathData="M520,760L520,200L760,200L760,760L520,760ZM200,760L200,200L440,200L440,760L200,760ZM600,680L680,680L680,280L600,280L600,680ZM280,680L360,680L360,280L280,280L280,680ZM280,280L280,280L280,680L280,680L280,280ZM600,280L600,280L600,680L600,680L600,280Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_people_outline_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_people_outline_vd_theme_24.xml
new file mode 100644
index 0000000..8aa9c56
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_people_outline_vd_theme_24.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M40,800L40,688Q40,654 57.5,625.5Q75,597 104,582Q166,551 230,535.5Q294,520 360,520Q426,520 490,535.5Q554,551 616,582Q645,597 662.5,625.5Q680,654 680,688L680,800L40,800ZM760,800L760,680Q760,636 735.5,595.5Q711,555 666,526Q717,532 762,546.5Q807,561 846,582Q882,602 901,626.5Q920,651 920,680L920,800L760,800ZM360,480Q294,480 247,433Q200,386 200,320Q200,254 247,207Q294,160 360,160Q426,160 473,207Q520,254 520,320Q520,386 473,433Q426,480 360,480ZM760,320Q760,386 713,433Q666,480 600,480Q589,480 572,477.5Q555,475 544,472Q571,440 585.5,401Q600,362 600,320Q600,278 585.5,239Q571,200 544,168Q558,163 572,161.5Q586,160 600,160Q666,160 713,207Q760,254 760,320ZM120,720L600,720L600,688Q600,677 594.5,668Q589,659 580,654Q526,627 471,613.5Q416,600 360,600Q304,600 249,613.5Q194,627 140,654Q131,659 125.5,668Q120,677 120,688L120,720ZM360,400Q393,400 416.5,376.5Q440,353 440,320Q440,287 416.5,263.5Q393,240 360,240Q327,240 303.5,263.5Q280,287 280,320Q280,353 303.5,376.5Q327,400 360,400ZM360,720L360,720L360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720L360,720ZM360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_people_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_people_vd_theme_24.xml
index c31e20d..36ab8c8 100644
--- a/assets/quantum/res/drawable/quantum_ic_people_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_people_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M16,11c1.66,0 2.99,-1.34 2.99,-3S17.66,5 16,5c-1.66,0 -3,1.34 -3,3s1.34,3 3,3zM8,11c1.66,0 2.99,-1.34 2.99,-3S9.66,5 8,5C6.34,5 5,6.34 5,8s1.34,3 3,3zM8,13c-2.33,0 -7,1.17 -7,3.5L1,19h14v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5zM16,13c-0.29,0 -0.62,0.02 -0.97,0.05 1.16,0.84 1.97,1.97 1.97,3.45L17,19h6v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5z"/>
-</vector>
\ No newline at end of file
+        android:pathData="M40,800L40,688Q40,654 57.5,625.5Q75,597 104,582Q166,551 230,535.5Q294,520 360,520Q426,520 490,535.5Q554,551 616,582Q645,597 662.5,625.5Q680,654 680,688L680,800L40,800ZM760,800L760,680Q760,636 735.5,595.5Q711,555 666,526Q717,532 762,546.5Q807,561 846,582Q882,602 901,626.5Q920,651 920,680L920,800L760,800ZM360,480Q294,480 247,433Q200,386 200,320Q200,254 247,207Q294,160 360,160Q426,160 473,207Q520,254 520,320Q520,386 473,433Q426,480 360,480ZM760,320Q760,386 713,433Q666,480 600,480Q589,480 572,477.5Q555,475 544,472Q571,440 585.5,401Q600,362 600,320Q600,278 585.5,239Q571,200 544,168Q558,163 572,161.5Q586,160 600,160Q666,160 713,207Q760,254 760,320Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_person_add_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_person_add_vd_theme_24.xml
index 488e58e..5ef798f 100644
--- a/assets/quantum/res/drawable/quantum_ic_person_add_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_person_add_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M15,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM6,10L6,7L4,7v3L1,10v2h3v3h2v-3h3v-2L6,10zM15,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"/>
+        android:pathData="M720,560L720,440L600,440L600,360L720,360L720,240L800,240L800,360L920,360L920,440L800,440L800,560L720,560ZM360,480Q294,480 247,433Q200,386 200,320Q200,254 247,207Q294,160 360,160Q426,160 473,207Q520,254 520,320Q520,386 473,433Q426,480 360,480ZM40,800L40,688Q40,654 57.5,625.5Q75,597 104,582Q166,551 230,535.5Q294,520 360,520Q426,520 490,535.5Q554,551 616,582Q645,597 662.5,625.5Q680,654 680,688L680,800L40,800ZM120,720L600,720L600,688Q600,677 594.5,668Q589,659 580,654Q526,627 471,613.5Q416,600 360,600Q304,600 249,613.5Q194,627 140,654Q131,659 125.5,668Q120,677 120,688L120,720ZM360,400Q393,400 416.5,376.5Q440,353 440,320Q440,287 416.5,263.5Q393,240 360,240Q327,240 303.5,263.5Q280,287 280,320Q280,353 303.5,376.5Q327,400 360,400ZM360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320Q360,320 360,320ZM360,720L360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720Q360,720 360,720L360,720L360,720Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_person_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_person_vd_theme_24.xml
new file mode 100644
index 0000000..7194e48
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_person_vd_theme_24.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M480,480Q414,480 367,433Q320,386 320,320Q320,254 367,207Q414,160 480,160Q546,160 593,207Q640,254 640,320Q640,386 593,433Q546,480 480,480ZM160,800L160,688Q160,654 177.5,625.5Q195,597 224,582Q286,551 350,535.5Q414,520 480,520Q546,520 610,535.5Q674,551 736,582Q765,597 782.5,625.5Q800,654 800,688L800,800L160,800ZM240,720L720,720L720,688Q720,677 714.5,668Q709,659 700,654Q646,627 591,613.5Q536,600 480,600Q424,600 369,613.5Q314,627 260,654Q251,659 245.5,668Q240,677 240,688L240,720ZM480,400Q513,400 536.5,376.5Q560,353 560,320Q560,287 536.5,263.5Q513,240 480,240Q447,240 423.5,263.5Q400,287 400,320Q400,353 423.5,376.5Q447,400 480,400ZM480,320Q480,320 480,320Q480,320 480,320Q480,320 480,320Q480,320 480,320Q480,320 480,320Q480,320 480,320Q480,320 480,320Q480,320 480,320ZM480,720L480,720Q480,720 480,720Q480,720 480,720Q480,720 480,720Q480,720 480,720Q480,720 480,720Q480,720 480,720Q480,720 480,720Q480,720 480,720L480,720L480,720Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_phone_bluetooth_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_phone_bluetooth_vd_theme_24.xml
new file mode 100644
index 0000000..2fa48d9
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_phone_bluetooth_vd_theme_24.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M680,480L680,328L588,420L560,392L672,280L560,168L588,140L680,232L680,80L700,80L814,196L728,280L814,366L700,480L680,480ZM720,404L758,366L720,328L720,404ZM720,232L758,196L720,158L720,232ZM798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_phone_in_talk_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_phone_in_talk_vd_theme_24.xml
index d171551..e81d5ff 100644
--- a/assets/quantum/res/drawable/quantum_ic_phone_in_talk_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_phone_in_talk_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M20,15.5c-1.25,0 -2.45,-0.2 -3.57,-0.57 -0.35,-0.11 -0.74,-0.03 -1.02,0.24l-2.2,2.2c-2.83,-1.44 -5.15,-3.75 -6.59,-6.59l2.2,-2.21c0.28,-0.26 0.36,-0.65 0.25,-1C8.7,6.45 8.5,5.25 8.5,4c0,-0.55 -0.45,-1 -1,-1L4,3c-0.55,0 -1,0.45 -1,1 0,9.39 7.61,17 17,17 0.55,0 1,-0.45 1,-1v-3.5c0,-0.55 -0.45,-1 -1,-1zM19,12h2c0,-4.97 -4.03,-9 -9,-9v2c3.87,0 7,3.13 7,7zM15,12h2c0,-2.76 -2.24,-5 -5,-5v2c1.66,0 3,1.34 3,3z"/>
+      android:pathData="M760,480Q760,363 678.5,281.5Q597,200 480,200L480,120Q555,120 620.5,148.5Q686,177 734.5,225.5Q783,274 811.5,339.5Q840,405 840,480L760,480ZM600,480Q600,430 565,395Q530,360 480,360L480,280Q563,280 621.5,338.5Q680,397 680,480L600,480ZM798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_phone_locked_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_phone_locked_vd_theme_24.xml
index 33393d6..67df2bf 100644
--- a/assets/quantum/res/drawable/quantum_ic_phone_locked_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_phone_locked_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M20,15.5c-1.25,0 -2.45,-0.2 -3.57,-0.57 -0.35,-0.11 -0.74,-0.03 -1.02,0.24l-2.2,2.2c-2.83,-1.44 -5.15,-3.75 -6.59,-6.59l2.2,-2.21c0.28,-0.26 0.36,-0.65 0.25,-1C8.7,6.45 8.5,5.25 8.5,4c0,-0.55 -0.45,-1 -1,-1L4,3c-0.55,0 -1,0.45 -1,1 0,9.39 7.61,17 17,17 0.55,0 1,-0.45 1,-1v-3.5c0,-0.55 -0.45,-1 -1,-1zM20,4v-0.5C20,2.12 18.88,1 17.5,1S15,2.12 15,3.5L15,4c-0.55,0 -1,0.45 -1,1v4c0,0.55 0.45,1 1,1h5c0.55,0 1,-0.45 1,-1L21,5c0,-0.55 -0.45,-1 -1,-1zM19.2,4h-3.4v-0.5c0,-0.94 0.76,-1.7 1.7,-1.7s1.7,0.76 1.7,1.7L19.2,4z"/>
+        android:pathData="M640,400Q623,400 611.5,388.5Q600,377 600,360L600,240Q600,223 611.5,211.5Q623,200 640,200L640,200L640,160Q640,127 663.5,103.5Q687,80 720,80Q753,80 776.5,103.5Q800,127 800,160L800,200L800,200Q817,200 828.5,211.5Q840,223 840,240L840,360Q840,377 828.5,388.5Q817,400 800,400L640,400ZM680,200L760,200L760,160Q760,143 748.5,131.5Q737,120 720,120Q703,120 691.5,131.5Q680,143 680,160L680,200ZM798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_phone_paused_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_phone_paused_vd_theme_24.xml
index 4d091e9..9391ef9 100644
--- a/assets/quantum/res/drawable/quantum_ic_phone_paused_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_phone_paused_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M17,3h-2v7h2L17,3zM20,15.5c-1.25,0 -2.45,-0.2 -3.57,-0.57 -0.35,-0.11 -0.74,-0.03 -1.02,0.24l-2.2,2.2c-2.83,-1.44 -5.15,-3.75 -6.59,-6.59l2.2,-2.21c0.28,-0.26 0.36,-0.65 0.25,-1C8.7,6.45 8.5,5.25 8.5,4c0,-0.55 -0.45,-1 -1,-1L4,3c-0.55,0 -1,0.45 -1,1 0,9.39 7.61,17 17,17 0.55,0 1,-0.45 1,-1v-3.5c0,-0.55 -0.45,-1 -1,-1zM19,3v7h2L21,3h-2z"/>
+        android:pathData="M600,400L600,120L680,120L680,400L600,400ZM760,400L760,120L840,120L840,400L760,400ZM798,840Q669,840 546.5,782.5Q424,725 329.5,630.5Q235,536 177.5,413.5Q120,291 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129Q360,138 362,152L388,292Q390,306 387.5,317.5Q385,329 376,338L279,436Q321,508 384.5,571Q448,634 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,601 831,611.5Q840,622 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_phone_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_phone_vd_theme_24.xml
index 5dc12ec..e89b29c 100644
--- a/assets/quantum/res/drawable/quantum_ic_phone_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_phone_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M6.62,10.79c1.44,2.83 3.76,5.14 6.59,6.59l2.2,-2.2c0.27,-0.27 0.67,-0.36 1.02,-0.24 1.12,0.37 2.33,0.57 3.57,0.57 0.55,0 1,0.45 1,1V20c0,0.55 -0.45,1 -1,1 -9.39,0 -17,-7.61 -17,-17 0,-0.55 0.45,-1 1,-1h3.5c0.55,0 1,0.45 1,1 0,1.25 0.2,2.45 0.57,3.57 0.11,0.35 0.03,0.74 -0.25,1.02l-2.2,2.2z"/>
+        android:pathData="M798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_play_arrow_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_play_arrow_vd_theme_24.xml
index e17e625..da0ac86 100644
--- a/assets/quantum/res/drawable/quantum_ic_play_arrow_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_play_arrow_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M8,5v14l11,-7z"/>
-</vector>
\ No newline at end of file
+      android:pathData="M320,760L320,200L760,480L320,760ZM400,480L400,480L400,480L400,480ZM400,614L610,480L400,346L400,614Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_query_builder_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_query_builder_vd_theme_24.xml
deleted file mode 100644
index 54fd545..0000000
--- a/assets/quantum/res/drawable/quantum_ic_query_builder_vd_theme_24.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8zM12.5,7L11,7v6l5.25,3.15 0.75,-1.23 -4.5,-2.67z"/>
-</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_question_answer_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_question_answer_vd_theme_24.xml
index f607d53..5a096ec 100644
--- a/assets/quantum/res/drawable/quantum_ic_question_answer_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_question_answer_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M21,6h-2v9L6,15v2c0,0.55 0.45,1 1,1h11l4,4L22,7c0,-0.55 -0.45,-1 -1,-1zM17,12L17,3c0,-0.55 -0.45,-1 -1,-1L3,2c-0.55,0 -1,0.45 -1,1v14l4,-4h10c0.55,0 1,-0.45 1,-1z"/>
+      android:pathData="M280,720Q263,720 251.5,708.5Q240,697 240,680L240,600L760,600L760,600L760,240L840,240Q857,240 868.5,251.5Q880,263 880,280L880,880L720,720L280,720ZM80,680L80,120Q80,103 91.5,91.5Q103,80 120,80L640,80Q657,80 668.5,91.5Q680,103 680,120L680,480Q680,497 668.5,508.5Q657,520 640,520L240,520L80,680ZM600,440L600,160L160,160L160,440L160,440L600,440ZM160,440L160,440L160,440L160,160L160,160L160,440Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_record_white_36.xml b/assets/quantum/res/drawable/quantum_ic_record_white_36.xml
new file mode 100644
index 0000000..548722a
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_record_white_36.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M480,760Q363,760 281.5,678.5Q200,597 200,480Q200,363 281.5,281.5Q363,200 480,200Q597,200 678.5,281.5Q760,363 760,480Q760,597 678.5,678.5Q597,760 480,760Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_report_off_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_report_off_vd_theme_24.xml
index 8af3a72..581eba4 100644
--- a/assets/quantum/res/drawable/quantum_ic_report_off_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_report_off_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M11,7h2v2.92l6.91,6.91 1.09,-1.1L21,8.27L15.73,3L8.27,3L7.18,4.1 11,7.92zM22.27,21.73l-20,-20.01L1,2.99l3.64,3.64L3,8.27v7.46L8.27,21h7.46l1.64,-1.63L21,23l1.27,-1.27zM12,17.3c-0.72,0 -1.3,-0.58 -1.3,-1.3s0.58,-1.3 1.3,-1.3 1.3,0.58 1.3,1.3 -0.58,1.3 -1.3,1.3z"/>
+        android:pathData="M792,678L734,622L760,596L760,364L596,200L364,200L338,226L282,168L330,120L630,120L840,330L840,628L792,678ZM520,408L520,280L440,280L440,328L520,408ZM820,932L678,790L630,840L330,840L120,628L120,330L168,282L28,140L84,84L876,876L820,932ZM536,424L536,424L536,424L536,424L536,424L536,424L536,424ZM364,760L596,760L622,734L226,338L200,364L200,596L364,760ZM480,680Q463,680 451.5,668.5Q440,657 440,640Q440,623 451.5,611.5Q463,600 480,600Q497,600 508.5,611.5Q520,623 520,640Q520,657 508.5,668.5Q497,680 480,680ZM424,536L424,536L424,536L424,536L424,536L424,536L424,536Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_report_vd_red_24.xml b/assets/quantum/res/drawable/quantum_ic_report_vd_red_24.xml
index a64db13..aa61b57 100644
--- a/assets/quantum/res/drawable/quantum_ic_report_vd_red_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_report_vd_red_24.xml
@@ -1,36 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<!-- A custom-made "report" icon for Dialer -->
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:height="24dp"
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
-    android:viewportHeight="40.0"
-    android:viewportWidth="40.0">
-  <path
-      android:fillColor="#D50000"
-      android:fillType="nonZero"
-      android:pathData="M27.87,1L39,12.13L39,27.87L27.87,39L12.13,39L1,27.87L1,12.13L12.13,1L27.87,1Z"
-      android:strokeColor="#00000000"
-      android:strokeWidth="1"/>
-  <path
-      android:fillColor="#FFFFFF"
-      android:fillType="evenOdd"
-      android:pathData="M20,30.6C18.56,30.6 17.4,29.44 17.4,28C17.4,26.56 18.56,25.4 20,25.4C21.44,25.4 22.6,26.56 22.6,28C22.6,29.44 21.44,30.6 20,30.6ZM22,22L18,22L18,10L22,10L22,22Z"
-      android:strokeColor="#00000000"
-      android:strokeWidth="1"/>
+    android:height="24dp"
+    android:tint="#D50000"
+    android:viewportWidth="960"
+    android:viewportHeight="960">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M480,680Q497,680 508.5,668.5Q520,657 520,640Q520,623 508.5,611.5Q497,600 480,600Q463,600 451.5,611.5Q440,623 440,640Q440,657 451.5,668.5Q463,680 480,680ZM440,520L520,520L520,280L440,280L440,520ZM330,840L120,630L120,330L330,120L630,120L840,330L840,630L630,840L330,840ZM364,760L596,760L760,596L760,364L596,200L364,200L200,364L200,596L364,760ZM480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480Z" />
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_report_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_report_vd_theme_24.xml
index 0945d11..9275775 100644
--- a/assets/quantum/res/drawable/quantum_ic_report_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_report_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M15.73,3L8.27,3L3,8.27v7.46L8.27,21h7.46L21,15.73L21,8.27L15.73,3zM12,17.3c-0.72,0 -1.3,-0.58 -1.3,-1.3 0,-0.72 0.58,-1.3 1.3,-1.3 0.72,0 1.3,0.58 1.3,1.3 0,0.72 -0.58,1.3 -1.3,1.3zM13,13h-2L11,7h2v6z"/>
+        android:pathData="M480,680Q497,680 508.5,668.5Q520,657 520,640Q520,623 508.5,611.5Q497,600 480,600Q463,600 451.5,611.5Q440,623 440,640Q440,657 451.5,668.5Q463,680 480,680ZM440,520L520,520L520,280L440,280L440,520ZM330,840L120,630L120,330L330,120L630,120L840,330L840,630L630,840L330,840ZM364,760L596,760L760,596L760,364L596,200L364,200L200,364L200,596L364,760ZM480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480L480,480Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_rtt_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_rtt_vd_theme_24.xml
index 90e1f84..c4e7ec6 100644
--- a/assets/quantum/res/drawable/quantum_ic_rtt_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_rtt_vd_theme_24.xml
@@ -1,25 +1,15 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
-    android:tint="?attr/colorControlNormal">
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal"
+    android:autoMirrored="true">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M9.03,3l-1.11,7.07h2.62l0.7,-4.5h2.58L11.8,18.43L9.47,18.43L9.06,21h7.27l0.4,-2.57h-2.35l2,-12.86h2.58l-0.71,4.5h2.65L22,3L9.03,3zM8,5L4,5l-0.31,2h4L8,5zM7.39,9h-4l-0.31,2h4l0.31,-2zM8.31,17h-6L2,19h6l0.31,-2zM8.93,13h-6l-0.31,2h6.01l0.3,-2z"/>
-</vector>
\ No newline at end of file
+      android:pathData="M365,840L381,738L474,738L556,222L456,222L427,402L321,402L366,120L885,120L840,402L734,402L762,222L662,222L580,738L673,738L657,840L365,840ZM150,280L163,200L313,200L300,280L150,280ZM125,440L138,360L288,360L275,440L125,440ZM75,760L87,680L337,680L325,760L75,760ZM100,600L113,520L363,520L350,600L100,600Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_search_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_search_vd_theme_24.xml
index 3c5d086..c8294b5 100644
--- a/assets/quantum/res/drawable/quantum_ic_search_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_search_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/>
+        android:pathData="M784,840L532,588Q502,612 463,626Q424,640 380,640Q271,640 195.5,564.5Q120,489 120,380Q120,271 195.5,195.5Q271,120 380,120Q489,120 564.5,195.5Q640,271 640,380Q640,424 626,463Q612,502 588,532L840,784L784,840ZM380,560Q455,560 507.5,507.5Q560,455 560,380Q560,305 507.5,252.5Q455,200 380,200Q305,200 252.5,252.5Q200,305 200,380Q200,455 252.5,507.5Q305,560 380,560Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_send_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_send_vd_theme_24.xml
new file mode 100644
index 0000000..ace2cf4
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_send_vd_theme_24.xml
@@ -0,0 +1,15 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal"
+    android:autoMirrored="true">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M120,800L120,160L880,480L120,800ZM200,680L674,480L200,280L200,420L440,480L200,540L200,680ZM200,680L200,480L200,280L200,420L200,420L200,540L200,540L200,680Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_signal_wifi_4_bar_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_signal_wifi_4_bar_vd_theme_24.xml
index 8f0b0d2..864eb1a 100644
--- a/assets/quantum/res/drawable/quantum_ic_signal_wifi_4_bar_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_signal_wifi_4_bar_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M12.01,21.49L23.64,7c-0.45,-0.34 -4.93,-4 -11.64,-4C5.28,3 0.81,6.66 0.36,7l11.63,14.49 0.01,0.01 0.01,-0.01z"/>
+        android:pathData="M480,840L0,360Q95,263 219.5,211.5Q344,160 480,160Q616,160 740.5,211.5Q865,263 960,360L480,840Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_star_outline_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_star_outline_vd_theme_24.xml
new file mode 100644
index 0000000..9f69c8c
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_star_outline_vd_theme_24.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M354,713L480,637L606,714L573,570L684,474L538,461L480,325L422,460L276,473L387,570L354,713ZM233,880L298,599L80,410L368,385L480,120L592,385L880,410L662,599L727,880L480,731L233,880ZM480,530L480,530L480,530L480,530L480,530L480,530L480,530L480,530L480,530L480,530L480,530Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_star_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_star_vd_theme_24.xml
index d937d29..a3b0ae8 100644
--- a/assets/quantum/res/drawable/quantum_ic_star_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_star_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M12,17.27L18.18,21l-1.64,-7.03L22,9.24l-7.19,-0.61L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21z"/>
+        android:pathData="M233,880L298,599L80,410L368,385L480,120L592,385L880,410L662,599L727,880L480,731L233,880Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_store_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_store_vd_theme_24.xml
new file mode 100644
index 0000000..1979289
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_store_vd_theme_24.xml
@@ -0,0 +1,11 @@
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:tint="?attr/colorControlNormal"
+    android:viewportWidth="960"
+    android:viewportHeight="960">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M841,442L841,760Q841,793 817.5,816.5Q794,840 761,840L201,840Q168,840 144.5,816.5Q121,793 121,760L121,442Q98,421 85.5,388Q73,355 85,316L127,180Q135,154 155.5,137Q176,120 203,120L759,120Q786,120 806,136.5Q826,153 835,180L877,316Q889,355 876.5,387Q864,419 841,442ZM569,400Q596,400 610,381.5Q624,363 621,340L599,200L521,200L521,348Q521,369 535,384.5Q549,400 569,400ZM389,400Q412,400 426.5,384.5Q441,369 441,348L441,200L363,200L341,340Q337,364 351.5,382Q366,400 389,400ZM211,400Q229,400 242.5,387Q256,374 259,354L281,200L203,200Q203,200 203,200Q203,200 203,200L163,334Q157,354 169.5,377Q182,400 211,400ZM751,400Q780,400 793,377Q806,354 799,334L757,200Q757,200 757,200Q757,200 757,200L681,200L703,354Q706,374 719.5,387Q733,400 751,400ZM201,760L761,760Q761,760 761,760Q761,760 761,760L761,478Q756,480 754.5,480Q753,480 751,480Q724,480 703.5,471Q683,462 663,442Q645,460 622,470Q599,480 573,480Q546,480 522.5,470Q499,460 481,442Q464,460 441.5,470Q419,480 393,480Q364,480 340.5,470Q317,460 299,442Q278,463 257.5,471.5Q237,480 211,480Q209,480 206.5,480Q204,480 201,478L201,760Q201,760 201,760Q201,760 201,760ZM761,760L201,760Q201,760 201,760Q201,760 201,760L201,760Q204,760 206.5,760Q209,760 211,760Q237,760 257.5,760Q278,760 299,760Q308,760 318.5,760Q329,760 341,760Q353,760 366,760Q379,760 393,760Q406,760 418,760Q430,760 441.5,760Q453,760 463,760Q473,760 481,760Q499,760 522.5,760Q546,760 573,760Q586,760 598,760Q610,760 621.5,760Q633,760 643.5,760Q654,760 663,760Q683,760 703.5,760Q724,760 751,760Q753,760 754.5,760Q756,760 761,760L761,760Q761,760 761,760Q761,760 761,760Z" />
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_swap_calls_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_swap_calls_vd_theme_24.xml
index e05fb1b..be90ba1 100644
--- a/assets/quantum/res/drawable/quantum_ic_swap_calls_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_swap_calls_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M18,4l-4,4h3v7c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2V8c0,-2.21 -1.79,-4 -4,-4S5,5.79 5,8v7H2l4,4 4,-4H7V8c0,-1.1 0.9,-2 2,-2s2,0.9 2,2v7c0,2.21 1.79,4 4,4s4,-1.79 4,-4V8h3l-4,-4z"/>
+      android:pathData="M240,760L80,600L136,542L200,606L200,320Q200,254 247,207Q294,160 360,160Q426,160 473,207Q520,254 520,320L520,600Q520,633 543.5,656.5Q567,680 600,680Q633,680 656.5,656.5Q680,633 680,600L680,314L616,378L560,320L720,160L880,320L824,378L760,314L760,600Q760,666 713,713Q666,760 600,760Q534,760 487,713Q440,666 440,600L440,320Q440,287 416.5,263.5Q393,240 360,240Q327,240 303.5,263.5Q280,287 280,320L280,606L344,542L400,600L240,760Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_thumb_down_grey600_24.xml b/assets/quantum/res/drawable/quantum_ic_thumb_down_grey600_24.xml
deleted file mode 100644
index fec2563..0000000
--- a/assets/quantum/res/drawable/quantum_ic_thumb_down_grey600_24.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:name="vector"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:name="path"
-        android:pathData="M 15 3 L 6 3 C 5.17 3 4.46 3.5 4.16 4.22 L 1.14 11.27 C 1.05 11.5 1 11.74 1 12 L 1 13.91 L 1.01 13.92 L 1 14 C 1 15.1 1.9 16 3 16 L 9.31 16 L 8.36 20.57 L 8.33 20.89 C 8.33 21.3 8.5 21.68 8.77 21.95 L 9.83 23 L 16.42 16.41 C 16.78 16.05 17 15.55 17 15 L 17 5 C 17 3.9 16.1 3 15 3 Z M 19 3 L 19 15 L 23 15 L 23 3 L 19 3 Z"
-        android:fillColor="#757575"
-        android:strokeWidth="1"/>
-</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_thumb_up_grey600_24.xml b/assets/quantum/res/drawable/quantum_ic_thumb_up_grey600_24.xml
deleted file mode 100644
index 06a4cbd..0000000
--- a/assets/quantum/res/drawable/quantum_ic_thumb_up_grey600_24.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:name="vector"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:name="path"
-        android:pathData="M 1 21 L 5 21 L 5 9 L 1 9 L 1 21 Z M 23 10 C 23 8.9 22.1 8 21 8 L 14.69 8 L 15.64 3.43 L 15.67 3.11 C 15.67 2.7 15.5 2.32 15.23 2.05 L 14.17 1 L 7.59 7.59 C 7.22 7.95 7 8.45 7 9 L 7 19 C 7 20.1 7.9 21 9 21 L 18 21 C 18.83 21 19.54 20.5 19.84 19.78 L 22.86 12.73 C 22.95 12.5 23 12.26 23 12 L 23 10.09 L 22.99 10.08 L 23 10 Z"
-        android:fillColor="#757575"
-        android:strokeWidth="1"/>
-</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_unblock_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_unblock_vd_theme_24.xml
index 35e974d..55d14f1 100644
--- a/assets/quantum/res/drawable/quantum_ic_unblock_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_unblock_vd_theme_24.xml
@@ -1,27 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<!-- A custom-made "unblock" icon for Dialer -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M12,2C17.52,2 22,6.48 22,12C22,17.52 17.52,22 12,22C6.48,22 2,17.52 2,12C2,6.48 6.48,2 12,2ZM12,4C7.584,4 4,7.584 4,12C4,16.416 7.584,20 12,20C16.416,20 20,16.416 20,12C20,7.584 16.416,4 12,4ZM16.5,6.086L17.914,7.5L16.5,8.914L15.086,7.5L16.5,6.086ZM13.5,9.086L14.914,10.5L13.5,11.914L12.086,10.5L13.5,9.086ZM10.5,12.086L11.914,13.5L10.5,14.914L9.086,13.5L10.5,12.086ZM7.5,15.086L8.914,16.5L7.5,17.914L6.086,16.5L7.5,15.086Z"/>
+      android:pathData="M634,520L554,440L680,440L680,520L634,520ZM791,905L700,814Q651,846 595.5,863Q540,880 480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,420 97,364.5Q114,309 146,260L55,169L112,112L848,848L791,905ZM814,700L756,642Q778,604 789,563.5Q800,523 800,480Q800,347 706.5,253.5Q613,160 480,160Q437,160 396.5,171Q356,182 318,204L260,146Q309,114 364.5,97Q420,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,540 863,595.5Q846,651 814,700ZM642,756L406,520L280,520L280,440L326,440L204,318Q182,356 171,396.5Q160,437 160,480Q160,613 253.5,706.5Q347,800 480,800Q523,800 563.5,789Q604,778 642,756ZM554,440L554,440L554,440L554,440Q554,440 554,440Q554,440 554,440Q554,440 554,440Q554,440 554,440Q554,440 554,440Q554,440 554,440ZM423,537L423,537Q423,537 423,537Q423,537 423,537Q423,537 423,537Q423,537 423,537Q423,537 423,537Q423,537 423,537Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_videocam_off_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_videocam_off_vd_theme_24.xml
index cce9eab..7f29d40 100644
--- a/assets/quantum/res/drawable/quantum_ic_videocam_off_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_videocam_off_vd_theme_24.xml
@@ -1,26 +1,14 @@
 <!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M21,6.5l-4,4V7c0,-0.55 -0.45,-1 -1,-1H9.82L21,17.18V6.5zM3.27,2L2,3.27 4.73,6H4c-0.55,0 -1,0.45 -1,1v10c0,0.55 0.45,1 1,1h12c0.21,0 0.39,-0.08 0.54,-0.18L19.73,21 21,19.73 3.27,2z"/>
+      android:pathData="M880,700L720,540L720,607L640,527L640,240Q640,240 640,240Q640,240 640,240L353,240L273,160L640,160Q673,160 696.5,183.5Q720,207 720,240L720,420L880,260L880,700ZM822,934L26,138L82,82L878,878L822,934ZM498,385L498,385Q498,385 498,385Q498,385 498,385L498,385L498,385ZM382,496Q382,496 382,496Q382,496 382,496L382,496Q382,496 382,496Q382,496 382,496L382,496Q382,496 382,496Q382,496 382,496L382,496ZM160,160L240,240L160,240Q160,240 160,240Q160,240 160,240L160,720Q160,720 160,720Q160,720 160,720L640,720Q640,720 640,720Q640,720 640,720L640,640L720,720L720,720Q720,753 696.5,776.5Q673,800 640,800L160,800Q127,800 103.5,776.5Q80,753 80,720L80,240Q80,207 103.5,183.5Q127,160 160,160L160,160Z"/>
 </vector>
-
diff --git a/assets/quantum/res/drawable/quantum_ic_videocam_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_videocam_vd_theme_24.xml
index 46c730c..1154575 100644
--- a/assets/quantum/res/drawable/quantum_ic_videocam_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_videocam_vd_theme_24.xml
@@ -1,25 +1,15 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal"
+    android:autoMirrored="true">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M17,10.5V7c0,-0.55 -0.45,-1 -1,-1H4c-0.55,0 -1,0.45 -1,1v10c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1v-3.5l4,4v-11l-4,4z"/>
+        android:pathData="M160,800Q127,800 103.5,776.5Q80,753 80,720L80,240Q80,207 103.5,183.5Q127,160 160,160L640,160Q673,160 696.5,183.5Q720,207 720,240L720,420L880,260L880,700L720,540L720,720Q720,753 696.5,776.5Q673,800 640,800L160,800ZM160,720L640,720Q640,720 640,720Q640,720 640,720L640,240Q640,240 640,240Q640,240 640,240L160,240Q160,240 160,240Q160,240 160,240L160,720Q160,720 160,720Q160,720 160,720ZM160,720Q160,720 160,720Q160,720 160,720L160,240Q160,240 160,240Q160,240 160,240L160,240Q160,240 160,240Q160,240 160,240L160,720Q160,720 160,720Q160,720 160,720L160,720Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_videocam_vd_white_24.xml b/assets/quantum/res/drawable/quantum_ic_videocam_vd_white_24.xml
index 27420ca..b1d96df 100644
--- a/assets/quantum/res/drawable/quantum_ic_videocam_vd_white_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_videocam_vd_white_24.xml
@@ -1,24 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:autoMirrored="true">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M17,10.5V7c0,-0.55 -0.45,-1 -1,-1H4c-0.55,0 -1,0.45 -1,1v10c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1v-3.5l4,4v-11l-4,4z"/>
+        android:pathData="M160,800Q127,800 103.5,776.5Q80,753 80,720L80,240Q80,207 103.5,183.5Q127,160 160,160L640,160Q673,160 696.5,183.5Q720,207 720,240L720,420L880,260L880,700L720,540L720,720Q720,753 696.5,776.5Q673,800 640,800L160,800ZM160,720L640,720Q640,720 640,720Q640,720 640,720L640,240Q640,240 640,240Q640,240 640,240L160,240Q160,240 160,240Q160,240 160,240L160,720Q160,720 160,720Q160,720 160,720ZM160,720Q160,720 160,720Q160,720 160,720L160,240Q160,240 160,240Q160,240 160,240L160,240Q160,240 160,240Q160,240 160,240L160,720Q160,720 160,720Q160,720 160,720L160,720Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_voicemail_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_voicemail_vd_theme_24.xml
index 1f33d75..a81ed10 100644
--- a/assets/quantum/res/drawable/quantum_ic_voicemail_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_voicemail_vd_theme_24.xml
@@ -1,25 +1,14 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="?attr/colorControlNormal">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M18.5,6C15.46,6 13,8.46 13,11.5c0,1.33 0.47,2.55 1.26,3.5L9.74,15c0.79,-0.95 1.26,-2.17 1.26,-3.5C11,8.46 8.54,6 5.5,6S0,8.46 0,11.5 2.46,17 5.5,17h13c3.04,0 5.5,-2.46 5.5,-5.5S21.54,6 18.5,6zM5.5,15C3.57,15 2,13.43 2,11.5S3.57,8 5.5,8 9,9.57 9,11.5 7.43,15 5.5,15zM18.5,15c-1.93,0 -3.5,-1.57 -3.5,-3.5S16.57,8 18.5,8 22,9.57 22,11.5 20.43,15 18.5,15z"/>
+        android:pathData="M260,640Q185,640 132.5,587.5Q80,535 80,460Q80,385 132.5,332.5Q185,280 260,280Q335,280 387.5,332.5Q440,385 440,460Q440,487 432,512Q424,537 410,560L550,560Q536,537 528,512Q520,487 520,460Q520,385 572.5,332.5Q625,280 700,280Q775,280 827.5,332.5Q880,385 880,460Q880,535 827.5,587.5Q775,640 700,640L260,640ZM260,560Q302,560 331,531Q360,502 360,460Q360,418 331,389Q302,360 260,360Q218,360 189,389Q160,418 160,460Q160,502 189,531Q218,560 260,560ZM700,560Q742,560 771,531Q800,502 800,460Q800,418 771,389Q742,360 700,360Q658,360 629,389Q600,418 600,460Q600,502 629,531Q658,560 700,560Z"/>
 </vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_volume_down_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_volume_down_vd_theme_24.xml
new file mode 100644
index 0000000..2cb3eba
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_volume_down_vd_theme_24.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M200,600L200,360L360,360L560,160L560,800L360,600L200,600ZM640,640L640,318Q685,339 712.5,383Q740,427 740,480Q740,533 712.5,576Q685,619 640,640ZM480,354L394,440L280,440L280,520L394,520L480,606L480,354ZM380,480L380,480L380,480L380,480L380,480L380,480L380,480Z"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_volume_up_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_volume_up_vd_theme_24.xml
index ac14bec..c245c1a 100644
--- a/assets/quantum/res/drawable/quantum_ic_volume_up_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_volume_up_vd_theme_24.xml
@@ -1,25 +1,15 @@
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
     android:tint="?attr/colorControlNormal"
-    android:viewportHeight="24.0"
-    android:viewportWidth="24.0">
+    android:autoMirrored="true">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M3,9v6h4l5,5L12,4L7,9L3,9zM16.5,12c0,-1.77 -1.02,-3.29 -2.5,-4.03v8.05c1.48,-0.73 2.5,-2.25 2.5,-4.02zM14,3.23v2.06c2.89,0.86 5,3.54 5,6.71s-2.11,5.85 -5,6.71v2.06c4.01,-0.91 7,-4.49 7,-8.77s-2.99,-7.86 -7,-8.77z"/>
-</vector>
\ No newline at end of file
+      android:pathData="M560,829L560,747Q650,721 705,647Q760,573 760,479Q760,385 705,311Q650,237 560,211L560,129Q684,157 762,254.5Q840,352 840,479Q840,606 762,703.5Q684,801 560,829ZM120,600L120,360L280,360L480,160L480,800L280,600L120,600ZM560,640L560,318Q607,340 633.5,384Q660,428 660,480Q660,531 633.5,574.5Q607,618 560,640ZM400,354L314,440L200,440L200,520L314,520L400,606L400,354ZM300,480L300,480L300,480L300,480L300,480L300,480L300,480Z"/>
+</vector>
diff --git a/java/com/android/bubble/Bubble.java b/java/com/android/bubble/Bubble.java
deleted file mode 100644
index 1b853cf..0000000
--- a/java/com/android/bubble/Bubble.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.bubble;
-
-import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import java.util.List;
-
-/**
- * Creates and manages a bubble window from information in a {@link BubbleInfo}. Before creating, be
- * sure to check whether bubbles may be shown using {@code Settings.canDrawOverlays(context)} and
- * request permission if necessary
- */
-public interface Bubble {
-
-  /**
-   * Make the bubble visible. Will show a short entrance animation as it enters. If the bubble is
-   * already showing this method does nothing.
-   */
-  void show();
-
-  /** Hide the bubble. */
-  void hide();
-
-  /** Returns whether the bubble is currently visible */
-  boolean isVisible();
-
-  /** Returns whether the bubble is currently dismissed */
-  boolean isDismissed();
-
-  /**
-   * Set the info for this Bubble to display
-   *
-   * @param bubbleInfo the BubbleInfo to display in this Bubble.
-   */
-  void setBubbleInfo(@NonNull BubbleInfo bubbleInfo);
-
-  /**
-   * Update the state and behavior of actions.
-   *
-   * @param actions the new state of the bubble's actions
-   */
-  void updateActions(@NonNull List<BubbleInfo.Action> actions);
-
-  /**
-   * Update the avatar from photo.
-   *
-   * @param avatar the new photo avatar in the bubble's primary button
-   */
-  void updatePhotoAvatar(@NonNull Drawable avatar);
-
-  /**
-   * Update the avatar.
-   *
-   * @param avatar the new avatar in the bubble's primary button
-   */
-  void updateAvatar(@NonNull Drawable avatar);
-
-  /**
-   * Display text. The bubble's drawer is not expandable while text is showing, and the drawer will
-   * be closed if already open.
-   *
-   * @param text the text to display to the user
-   */
-  void showText(@NonNull CharSequence text);
-}
diff --git a/java/com/android/bubble/BubbleComponent.java b/java/com/android/bubble/BubbleComponent.java
deleted file mode 100644
index 7a4665e..0000000
--- a/java/com/android/bubble/BubbleComponent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.bubble;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.HasRootComponent;
-import dagger.Subcomponent;
-
-@Subcomponent
-public abstract class BubbleComponent {
-
-  @NonNull
-  public abstract Bubble getBubble();
-
-  public static BubbleComponent get(Context context) {
-    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
-        .bubbleComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  public interface HasComponent {
-    BubbleComponent bubbleComponent();
-  }
-}
diff --git a/java/com/android/bubble/BubbleInfo.java b/java/com/android/bubble/BubbleInfo.java
deleted file mode 100644
index 28793a7..0000000
--- a/java/com/android/bubble/BubbleInfo.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.bubble;
-
-import android.app.PendingIntent;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.Icon;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.Px;
-import com.google.auto.value.AutoValue;
-import java.util.Collections;
-import java.util.List;
-
-/** Info for displaying a {@link Bubble} */
-@AutoValue
-public abstract class BubbleInfo {
-  @ColorInt
-  public abstract int getPrimaryColor();
-
-  public abstract Icon getPrimaryIcon();
-
-  @Nullable
-  public abstract Drawable getAvatar();
-
-  @Px
-  public abstract int getStartingYPosition();
-
-  @NonNull
-  public abstract List<Action> getActions();
-
-  public static Builder builder() {
-    return new AutoValue_BubbleInfo.Builder().setActions(Collections.emptyList());
-  }
-
-  public static Builder from(@NonNull BubbleInfo bubbleInfo) {
-    return builder()
-        .setPrimaryColor(bubbleInfo.getPrimaryColor())
-        .setPrimaryIcon(bubbleInfo.getPrimaryIcon())
-        .setStartingYPosition(bubbleInfo.getStartingYPosition())
-        .setActions(bubbleInfo.getActions())
-        .setAvatar(bubbleInfo.getAvatar());
-  }
-
-  /** Builder for {@link BubbleInfo} */
-  @AutoValue.Builder
-  public abstract static class Builder {
-
-    public abstract Builder setPrimaryColor(@ColorInt int primaryColor);
-
-    public abstract Builder setPrimaryIcon(@NonNull Icon primaryIcon);
-
-    public abstract Builder setAvatar(@Nullable Drawable avatar);
-
-    public abstract Builder setStartingYPosition(@Px int startingYPosition);
-
-    public abstract Builder setActions(List<Action> actions);
-
-    public abstract BubbleInfo build();
-  }
-
-  /** Represents actions to be shown in the bubble when expanded */
-  @AutoValue
-  public abstract static class Action {
-
-    public abstract Drawable getIconDrawable();
-
-    @Nullable
-    public abstract Drawable getSecondaryIconDrawable();
-
-    @NonNull
-    public abstract CharSequence getName();
-
-    @NonNull
-    public abstract PendingIntent getIntent();
-
-    public abstract boolean isCheckable();
-
-    public abstract boolean isChecked();
-
-    public static Builder builder() {
-      return new AutoValue_BubbleInfo_Action.Builder().setCheckable(true).setChecked(false);
-    }
-
-    public static Builder from(@NonNull Action action) {
-      return builder()
-          .setIntent(action.getIntent())
-          .setChecked(action.isChecked())
-          .setCheckable(action.isCheckable())
-          .setName(action.getName())
-          .setIconDrawable(action.getIconDrawable())
-          .setSecondaryIconDrawable(action.getSecondaryIconDrawable());
-    }
-
-    /** Builder for {@link Action} */
-    @AutoValue.Builder
-    public abstract static class Builder {
-
-      public abstract Builder setIconDrawable(Drawable iconDrawable);
-
-      public abstract Builder setSecondaryIconDrawable(@Nullable Drawable secondaryIconDrawable);
-
-      public abstract Builder setName(@NonNull CharSequence name);
-
-      public abstract Builder setIntent(@NonNull PendingIntent intent);
-
-      public abstract Builder setCheckable(boolean enabled);
-
-      public abstract Builder setChecked(boolean checked);
-
-      public abstract Action build();
-    }
-  }
-}
diff --git a/java/com/android/bubble/stub/BubbleStub.java b/java/com/android/bubble/stub/BubbleStub.java
deleted file mode 100644
index 2aa55a3..0000000
--- a/java/com/android/bubble/stub/BubbleStub.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.bubble.stub;
-
-import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import com.android.bubble.Bubble;
-import com.android.bubble.BubbleInfo;
-import java.util.List;
-import javax.inject.Inject;
-
-public class BubbleStub implements Bubble {
-
-  @Inject
-  public BubbleStub() {}
-
-  @Override
-  public void show() {}
-
-  @Override
-  public void hide() {}
-
-  @Override
-  public boolean isVisible() {
-    return false;
-  }
-
-  @Override
-  public boolean isDismissed() {
-    return false;
-  }
-
-  @Override
-  public void setBubbleInfo(@NonNull BubbleInfo bubbleInfo) {}
-
-  @Override
-  public void updateActions(@NonNull List<BubbleInfo.Action> actions) {}
-
-  @Override
-  public void updatePhotoAvatar(@NonNull Drawable avatar) {}
-
-  @Override
-  public void updateAvatar(@NonNull Drawable avatar) {}
-
-  @Override
-  public void showText(@NonNull CharSequence text) {}
-}
diff --git a/java/com/android/bubble/stub/StubBubbleModule.java b/java/com/android/bubble/stub/StubBubbleModule.java
deleted file mode 100644
index 783983f..0000000
--- a/java/com/android/bubble/stub/StubBubbleModule.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.bubble.stub;
-
-import com.android.bubble.Bubble;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-@Module
-public abstract class StubBubbleModule {
-
-  @Binds
-  @Singleton
-  public abstract Bubble bindsBubble(BubbleStub bubbleStub);
-}
diff --git a/java/com/android/contacts/common/AndroidManifest.xml b/java/com/android/contacts/common/AndroidManifest.xml
deleted file mode 100644
index 84ac96f..0000000
--- a/java/com/android/contacts/common/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.contacts.common">
-
-  <application>
-
-    <activity
-      android:name="com.android.contacts.common.dialog.CallSubjectDialog"
-      android:theme="@style/Theme.CallSubjectDialogTheme"
-      android:exported="false"
-      android:windowSoftInputMode="stateVisible|adjustResize">
-      <intent-filter>
-        <action android:name="android.intent.action.VIEW"/>
-      </intent-filter>
-    </activity>
-  </application>
-</manifest>
-
diff --git a/java/com/android/contacts/common/Collapser.java b/java/com/android/contacts/common/Collapser.java
index 0b5c48b..f3d6850 100644
--- a/java/com/android/contacts/common/Collapser.java
+++ b/java/com/android/contacts/common/Collapser.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,8 +18,9 @@
 package com.android.contacts.common;
 
 import android.content.Context;
-import java.util.Iterator;
+
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Class used for collapsing data items into groups of similar items. The data items that should be
@@ -74,12 +76,7 @@
     }
 
     // Remove the null items
-    Iterator<T> itr = list.iterator();
-    while (itr.hasNext()) {
-      if (itr.next() == null) {
-        itr.remove();
-      }
-    }
+    list.removeIf(Objects::isNull);
   }
 
   /*
diff --git a/java/com/android/contacts/common/ContactPresenceIconUtil.java b/java/com/android/contacts/common/ContactPresenceIconUtil.java
deleted file mode 100644
index bce4b21..0000000
--- a/java/com/android/contacts/common/ContactPresenceIconUtil.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common;
-
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.provider.ContactsContract.StatusUpdates;
-import android.support.v4.content.ContextCompat;
-
-/** Define the contact present show policy in Contacts */
-public class ContactPresenceIconUtil {
-
-  /**
-   * Get the presence icon resource according the status.
-   *
-   * @return null means don't show the status icon.
-   */
-  public static Drawable getPresenceIcon(Context context, int status) {
-    // We don't show the offline status in Contacts
-    switch (status) {
-      case StatusUpdates.AVAILABLE:
-      case StatusUpdates.IDLE:
-      case StatusUpdates.AWAY:
-      case StatusUpdates.DO_NOT_DISTURB:
-      case StatusUpdates.INVISIBLE:
-        return ContextCompat.getDrawable(context, StatusUpdates.getPresenceIconResourceId(status));
-      case StatusUpdates.OFFLINE:
-        // The undefined status is treated as OFFLINE in getPresenceIconResourceId();
-      default:
-        return null;
-    }
-  }
-}
diff --git a/java/com/android/contacts/common/ContactStatusUtil.java b/java/com/android/contacts/common/ContactStatusUtil.java
deleted file mode 100644
index c5347e7..0000000
--- a/java/com/android/contacts/common/ContactStatusUtil.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.provider.ContactsContract.StatusUpdates;
-
-/** Provides static function to get default contact status message. */
-public class ContactStatusUtil {
-
-  public static String getStatusString(Context context, int presence) {
-    Resources resources = context.getResources();
-    switch (presence) {
-      case StatusUpdates.AVAILABLE:
-        return resources.getString(R.string.status_available);
-      case StatusUpdates.IDLE:
-      case StatusUpdates.AWAY:
-        return resources.getString(R.string.status_away);
-      case StatusUpdates.DO_NOT_DISTURB:
-        return resources.getString(R.string.status_busy);
-      case StatusUpdates.OFFLINE:
-      case StatusUpdates.INVISIBLE:
-      default:
-        return null;
-    }
-  }
-}
diff --git a/java/com/android/contacts/common/ContactTileLoaderFactory.java b/java/com/android/contacts/common/ContactTileLoaderFactory.java
index d71472e..c82b670 100644
--- a/java/com/android/contacts/common/ContactTileLoaderFactory.java
+++ b/java/com/android/contacts/common/ContactTileLoaderFactory.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,12 +17,12 @@
 package com.android.contacts.common;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.net.Uri;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.loader.content.CursorLoader;
 
 /**
  * Used to create {@link CursorLoader} which finds contacts information from the strequents table.
@@ -35,8 +36,7 @@
    * because the query is performed on the data table. In order to obtain the contact id for
    * strequent items, use Phone.contact_id instead.
    */
-  @VisibleForTesting
-  public static final String[] COLUMNS_PHONE_ONLY =
+  private static final String[] COLUMNS_PHONE_ONLY =
       new String[] {
         Contacts._ID,
         Contacts.DISPLAY_NAME_PRIMARY,
@@ -58,7 +58,6 @@
             .buildUpon()
             .appendQueryParameter(ContactsContract.STREQUENT_PHONE_ONLY, "true")
             .build();
-
     return new CursorLoader(context, uri, COLUMNS_PHONE_ONLY, null, null, null);
   }
 }
diff --git a/java/com/android/contacts/common/ContactsUtils.java b/java/com/android/contacts/common/ContactsUtils.java
index 7e44a26..1a24361 100644
--- a/java/com/android/contacts/common/ContactsUtils.java
+++ b/java/com/android/contacts/common/ContactsUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,9 @@
 
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Directory;
-import android.support.annotation.IntDef;
+
+import androidx.annotation.LongDef;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -78,6 +81,6 @@
    */
   @Retention(RetentionPolicy.SOURCE)
   // TODO: Switch to @LongDef when @LongDef is available in the support library
-  @IntDef({(int) USER_TYPE_CURRENT, (int) USER_TYPE_WORK})
+  @LongDef({USER_TYPE_CURRENT, USER_TYPE_WORK})
   public @interface UserType {}
 }
diff --git a/java/com/android/contacts/common/GroupMetaData.java b/java/com/android/contacts/common/GroupMetaData.java
index b34f1d6..506fe44 100644
--- a/java/com/android/contacts/common/GroupMetaData.java
+++ b/java/com/android/contacts/common/GroupMetaData.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,13 +22,13 @@
  */
 public final class GroupMetaData {
 
-  private String mAccountName;
-  private String mAccountType;
-  private String mDataSet;
-  private long mGroupId;
-  private String mTitle;
-  private boolean mDefaultGroup;
-  private boolean mFavorites;
+  private final String mAccountName;
+  private final String mAccountType;
+  private final String mDataSet;
+  private final long mGroupId;
+  private final String mTitle;
+  private final boolean mDefaultGroup;
+  private final boolean mFavorites;
 
   public GroupMetaData(
       String accountName,
@@ -46,10 +47,6 @@
     this.mFavorites = favorites;
   }
 
-  public String getAccountName() {
-    return mAccountName;
-  }
-
   public String getAccountType() {
     return mAccountType;
   }
@@ -58,18 +55,10 @@
     return mDataSet;
   }
 
-  public long getGroupId() {
-    return mGroupId;
-  }
-
   public String getTitle() {
     return mTitle;
   }
 
-  public boolean isDefaultGroup() {
-    return mDefaultGroup;
-  }
-
   public boolean isFavorites() {
     return mFavorites;
   }
diff --git a/java/com/android/contacts/common/MoreContactUtils.java b/java/com/android/contacts/common/MoreContactUtils.java
index 9749cab..8fc2270 100644
--- a/java/com/android/contacts/common/MoreContactUtils.java
+++ b/java/com/android/contacts/common/MoreContactUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +24,7 @@
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.view.View;
+
 import com.android.contacts.common.model.account.AccountType;
 import com.google.i18n.phonenumbers.NumberParseException;
 import com.google.i18n.phonenumbers.PhoneNumberUtil;
diff --git a/java/com/android/contacts/common/compat/CallCompat.java b/java/com/android/contacts/common/compat/CallCompat.java
index 641f7b1..9e33db5 100644
--- a/java/com/android/contacts/common/compat/CallCompat.java
+++ b/java/com/android/contacts/common/compat/CallCompat.java
@@ -16,17 +16,15 @@
 
 package com.android.contacts.common.compat;
 
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
 import android.telecom.Call;
 
+import androidx.annotation.NonNull;
+
 /** Compatibility utilities for android.telecom.Call */
 public class CallCompat {
 
   public static boolean canPullExternalCall(@NonNull android.telecom.Call call) {
-    return VERSION.SDK_INT >= VERSION_CODES.N_MR1
-        && ((call.getDetails().getCallCapabilities() & Details.CAPABILITY_CAN_PULL_CALL)
+    return ((call.getDetails().getCallCapabilities() & Details.CAPABILITY_CAN_PULL_CALL)
             == Details.CAPABILITY_CAN_PULL_CALL);
   }
 
diff --git a/java/com/android/contacts/common/compat/PhoneAccountCompat.java b/java/com/android/contacts/common/compat/PhoneAccountCompat.java
index aa22c68..0424682 100644
--- a/java/com/android/contacts/common/compat/PhoneAccountCompat.java
+++ b/java/com/android/contacts/common/compat/PhoneAccountCompat.java
@@ -18,9 +18,10 @@
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccount;
 
+import androidx.annotation.Nullable;
+
 /** Compatiblity class for {@link android.telecom.PhoneAccount} */
 public class PhoneAccountCompat {
 
diff --git a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java b/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
deleted file mode 100644
index a1dc89d..0000000
--- a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.contacts.common.compat.telecom;
-
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import java.lang.reflect.Field;
-
-/** Compatibility class for {@link android.telecom.TelecomManager}. */
-public class TelecomManagerCompat {
-
-  // Constants from http://cs/android/frameworks/base/telecomm/java/android/telecom/Call.java.
-  public static final String EVENT_REQUEST_HANDOVER = "android.telecom.event.REQUEST_HANDOVER";
-  public static final String EXTRA_HANDOVER_PHONE_ACCOUNT_HANDLE =
-      "android.telecom.extra.HANDOVER_PHONE_ACCOUNT_HANDLE";
-  public static final String EXTRA_HANDOVER_VIDEO_STATE =
-      "android.telecom.extra.HANDOVER_VIDEO_STATE";
-
-  // This is a hidden constant in android.telecom.DisconnectCause. Telecom sets this as a disconnect
-  // reason if it wants us to prompt the user that the video call is not available.
-  // TODO(wangqi): Reference it to constant in android.telecom.DisconnectCause.
-  public static final String REASON_IMS_ACCESS_BLOCKED = "REASON_IMS_ACCESS_BLOCKED";
-
-  /**
-   * Returns the current SIM call manager. Apps must be prepared for this method to return null,
-   * indicating that there currently exists no registered SIM call manager.
-   *
-   * @param telecomManager the {@link TelecomManager} to use to fetch the SIM call manager.
-   * @return The phone account handle of the current sim call manager.
-   */
-  @Nullable
-  public static PhoneAccountHandle getSimCallManager(TelecomManager telecomManager) {
-    if (telecomManager != null) {
-      return telecomManager.getSimCallManager();
-    }
-    return null;
-  }
-
-  /** Returns true if the Android version supports Handover. */
-  public static boolean supportsHandover() {
-    // Starting with Android P, handover is supported via a public API.
-    if (VERSION.SDK_INT >= VERSION_CODES.P) {
-      return true;
-    }
-    // Handovers are supported from Android O-DR onward. Since there is no API
-    // bump from O to O-DR, we need to use reflection to check the existence
-    // of TelecomManager.EXTRA_IS_HANDOVER in
-    // http://cs/android/frameworks/base/telecomm/java/android/telecom/TelecomManager.java.
-    try {
-      Field field = TelecomManager.class.getDeclaredField("EXTRA_IS_HANDOVER");
-      return "android.telecom.extra.IS_HANDOVER".equals(field.get(null /* obj (static field) */));
-    } catch (Exception e) {
-      // Do nothing
-    }
-    return false;
-  }
-}
diff --git a/java/com/android/contacts/common/database/EmptyCursor.java b/java/com/android/contacts/common/database/EmptyCursor.java
index c2b24cd..768302e 100644
--- a/java/com/android/contacts/common/database/EmptyCursor.java
+++ b/java/com/android/contacts/common/database/EmptyCursor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,7 +28,7 @@
  */
 public final class EmptyCursor extends AbstractCursor {
 
-  private String[] mColumns;
+  private final String[] mColumns;
 
   public EmptyCursor(String[] columns) {
     this.mColumns = columns;
diff --git a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
index 5d10720..27e6d57 100644
--- a/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
+++ b/java/com/android/contacts/common/database/NoNullCursorAsyncQueryHandler.java
@@ -20,8 +20,9 @@
 import android.content.ContentResolver;
 import android.database.Cursor;
 import android.net.Uri;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.Nullable;
+
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -31,7 +32,8 @@
  */
 public abstract class NoNullCursorAsyncQueryHandler extends AsyncQueryHandler {
   private static final AtomicInteger pendingQueryCount = new AtomicInteger();
-  @Nullable private static PendingQueryCountChangedListener pendingQueryCountChangedListener;
+  @Nullable
+  private static PendingQueryCountChangedListener pendingQueryCountChangedListener;
 
   public NoNullCursorAsyncQueryHandler(ContentResolver cr) {
     super(cr);
@@ -74,17 +76,6 @@
 
   protected abstract void onNotNullableQueryComplete(int token, Object cookie, Cursor cursor);
 
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public static void setPendingQueryCountChangedListener(
-      @Nullable PendingQueryCountChangedListener listener) {
-    pendingQueryCountChangedListener = listener;
-  }
-
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public static int getPendingQueryCount() {
-    return pendingQueryCount.get();
-  }
-
   /** Callback to listen for changes in the number of queries that have not completed. */
   public interface PendingQueryCountChangedListener {
     void onPendingQueryCountChanged();
diff --git a/java/com/android/contacts/common/dialog/CallSubjectDialog.java b/java/com/android/contacts/common/dialog/CallSubjectDialog.java
index bf0ac14..610316b 100644
--- a/java/com/android/contacts/common/dialog/CallSubjectDialog.java
+++ b/java/com/android/contacts/common/dialog/CallSubjectDialog.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -24,7 +25,6 @@
 import android.content.SharedPreferences;
 import android.net.Uri;
 import android.os.Bundle;
-import android.preference.PreferenceManager;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -41,15 +41,20 @@
 import android.widget.ListView;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.preference.PreferenceManager;
+
+import com.android.dialer.R;
 import com.android.dialer.animation.AnimUtils;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.contacts.resources.R;
 import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.util.ViewUtil;
+
 import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.List;
@@ -58,7 +63,7 @@
  * Implements a dialog which prompts for a call subject for an outgoing call. The dialog includes a
  * pop up list of historical call subjects.
  */
-public class CallSubjectDialog extends Activity {
+public class CallSubjectDialog extends AppCompatActivity {
 
   public static final String PREF_KEY_SUBJECT_HISTORY_COUNT = "subject_history_count";
   public static final String PREF_KEY_SUBJECT_HISTORY_ITEM = "subject_history_item";
@@ -83,8 +88,6 @@
   private TextView mNumberView;
   private EditText mCallSubjectView;
   private TextView mCharacterLimitView;
-  private View mHistoryButton;
-  private View mSendAndCallButton;
   private ListView mSubjectList;
 
   private int mLimit = CALL_SUBJECT_LIMIT;
@@ -110,27 +113,19 @@
   private SharedPreferences mPrefs;
   private List<String> mSubjectHistory;
   /** Handles displaying the list of past call subjects. */
-  private final View.OnClickListener mHistoryOnClickListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-          hideSoftKeyboard(CallSubjectDialog.this, mCallSubjectView);
-          showCallHistory(mSubjectList.getVisibility() == View.GONE);
-        }
-      };
+  private final View.OnClickListener mHistoryOnClickListener = v -> {
+    hideSoftKeyboard(CallSubjectDialog.this, mCallSubjectView);
+    showCallHistory(mSubjectList.getVisibility() == View.GONE);
+  };
   /**
    * Handles auto-hiding the call history when user clicks in the call subject field to give it
    * focus.
    */
-  private final View.OnClickListener mCallSubjectClickListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-          if (mSubjectList.getVisibility() == View.VISIBLE) {
-            showCallHistory(false);
-          }
-        }
-      };
+  private final View.OnClickListener mCallSubjectClickListener = v -> {
+    if (mSubjectList.getVisibility() == View.VISIBLE) {
+      showCallHistory(false);
+    }
+  };
 
   private long mPhotoID;
   private Uri mPhotoUri;
@@ -142,43 +137,31 @@
   private int mContactType;
   private PhoneAccountHandle mPhoneAccountHandle;
   /** Handles starting a call with a call subject specified. */
-  private final View.OnClickListener mSendAndCallOnClickListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-          String subject = mCallSubjectView.getText().toString();
-          PreCall.start(
-              CallSubjectDialog.this,
-              new CallIntentBuilder(mNumber, CallInitiationType.Type.CALL_SUBJECT_DIALOG)
-                  .setPhoneAccountHandle(mPhoneAccountHandle)
-                  .setCallSubject(subject));
+  private final View.OnClickListener mSendAndCallOnClickListener = v -> {
+    String subject = mCallSubjectView.getText().toString();
+    PreCall.start(
+            CallSubjectDialog.this,
+            new CallIntentBuilder(mNumber, CallInitiationType.Type.CALL_SUBJECT_DIALOG)
+                    .setPhoneAccountHandle(mPhoneAccountHandle)
+                    .setCallSubject(subject));
 
-          mSubjectHistory.add(subject);
-          saveSubjectHistory(mSubjectHistory);
-          finish();
-        }
-      };
+    mSubjectHistory.add(subject);
+    saveSubjectHistory(mSubjectHistory);
+    finish();
+  };
+
   /** Click listener which handles user clicks outside of the dialog. */
-  private View.OnClickListener mBackgroundListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-          finish();
-        }
-      };
+  private final View.OnClickListener mBackgroundListener = v -> finish();
   /**
    * Item click listener which handles user clicks on the items in the list view. Dismisses the
    * activity, returning the subject to the caller and closing the activity with the {@link
    * Activity#RESULT_OK} result code.
    */
-  private AdapterView.OnItemClickListener mItemClickListener =
-      new AdapterView.OnItemClickListener() {
-        @Override
-        public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
-          mCallSubjectView.setText(mSubjectHistory.get(position));
-          showCallHistory(false);
-        }
-      };
+  private final AdapterView.OnItemClickListener mItemClickListener =
+          (arg0, view, position, arg3) -> {
+    mCallSubjectView.setText(mSubjectHistory.get(position));
+    showCallHistory(false);
+  };
 
   /**
    * Show the call subject dialog given a phone number to dial (e.g. from the dialpad).
@@ -291,22 +274,22 @@
     mBackgroundView = findViewById(R.id.call_subject_dialog);
     mBackgroundView.setOnClickListener(mBackgroundListener);
     mDialogView = findViewById(R.id.dialog_view);
-    mContactPhoto = (QuickContactBadge) findViewById(R.id.contact_photo);
-    mNameView = (TextView) findViewById(R.id.name);
-    mNumberView = (TextView) findViewById(R.id.number);
-    mCallSubjectView = (EditText) findViewById(R.id.call_subject);
+    mContactPhoto = findViewById(R.id.contact_photo);
+    mNameView = findViewById(R.id.name);
+    mNumberView = findViewById(R.id.number);
+    mCallSubjectView = findViewById(R.id.call_subject);
     mCallSubjectView.addTextChangedListener(mTextWatcher);
     mCallSubjectView.setOnClickListener(mCallSubjectClickListener);
     InputFilter[] filters = new InputFilter[1];
     filters[0] = new InputFilter.LengthFilter(mLimit);
     mCallSubjectView.setFilters(filters);
-    mCharacterLimitView = (TextView) findViewById(R.id.character_limit);
-    mHistoryButton = findViewById(R.id.history_button);
-    mHistoryButton.setOnClickListener(mHistoryOnClickListener);
-    mHistoryButton.setVisibility(mSubjectHistory.isEmpty() ? View.GONE : View.VISIBLE);
-    mSendAndCallButton = findViewById(R.id.send_and_call_button);
-    mSendAndCallButton.setOnClickListener(mSendAndCallOnClickListener);
-    mSubjectList = (ListView) findViewById(R.id.subject_list);
+    mCharacterLimitView = findViewById(R.id.character_limit);
+    View historyButton = findViewById(R.id.history_button);
+    historyButton.setOnClickListener(mHistoryOnClickListener);
+    historyButton.setVisibility(mSubjectHistory.isEmpty() ? View.GONE : View.VISIBLE);
+    View sendAndCallButton = findViewById(R.id.send_and_call_button);
+    sendAndCallButton.setOnClickListener(mSendAndCallOnClickListener);
+    mSubjectList = findViewById(R.id.subject_list);
     mSubjectList.setOnItemClickListener(mItemClickListener);
     mSubjectList.setVisibility(View.GONE);
 
@@ -344,14 +327,15 @@
       return;
     }
     mPhotoID = arguments.getLong(ARG_PHOTO_ID);
-    mPhotoUri = arguments.getParcelable(ARG_PHOTO_URI);
-    mContactUri = arguments.getParcelable(ARG_CONTACT_URI);
+    mPhotoUri = arguments.getParcelable(ARG_PHOTO_URI, Uri.class);
+    mContactUri = arguments.getParcelable(ARG_CONTACT_URI, Uri.class);
     mNameOrNumber = arguments.getString(ARG_NAME_OR_NUMBER);
     mNumber = arguments.getString(ARG_NUMBER);
     mDisplayNumber = arguments.getString(ARG_DISPLAY_NUMBER);
     mNumberLabel = arguments.getString(ARG_NUMBER_LABEL);
     mContactType = arguments.getInt(ARG_CONTACT_TYPE, LetterTileDrawable.TYPE_DEFAULT);
-    mPhoneAccountHandle = arguments.getParcelable(ARG_PHONE_ACCOUNT_HANDLE);
+    mPhoneAccountHandle = arguments.getParcelable(ARG_PHONE_ACCOUNT_HANDLE,
+            PhoneAccountHandle.class);
   }
 
   /**
@@ -370,13 +354,14 @@
       length = subjectText.length();
     }
 
-    mCharacterLimitView.setText(getString(R.string.call_subject_limit, length, mLimit));
+    mCharacterLimitView.setText(getString(R.string.call_subject_limit,
+            String.valueOf(length), String.valueOf(mLimit)));
     if (length >= mLimit) {
       mCharacterLimitView.setTextColor(
-          getResources().getColor(R.color.call_subject_limit_exceeded));
+          getResources().getColor(R.color.call_subject_limit_exceeded, getTheme()));
     } else {
       mCharacterLimitView.setTextColor(
-          getResources().getColor(R.color.dialer_secondary_text_color));
+          getResources().getColor(R.color.dialer_secondary_text_color, getTheme()));
     }
   }
 
@@ -428,9 +413,8 @@
     final int dialogStartingBottom = mDialogView.getBottom();
     if (show) {
       // Showing the subject list; bind the list of history items to the list and show it.
-      ArrayAdapter<String> adapter =
-          new ArrayAdapter<String>(
-              CallSubjectDialog.this, R.layout.call_subject_history_list_item, mSubjectHistory);
+      ArrayAdapter<String> adapter = new ArrayAdapter<>(CallSubjectDialog.this,
+              R.layout.call_subject_history_list_item, mSubjectHistory);
       mSubjectList.setAdapter(adapter);
       mSubjectList.setVisibility(View.VISIBLE);
     } else {
diff --git a/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java b/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java
index cd9511c..ecea6ce 100644
--- a/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java
+++ b/java/com/android/contacts/common/dialog/ClearFrequentsDialog.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,21 +17,26 @@
 
 package com.android.contacts.common.dialog;
 
-import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
 import android.app.ProgressDialog;
 import android.content.ContentResolver;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.DialogInterface.OnClickListener;
-import android.os.AsyncTask;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
 import android.provider.ContactsContract;
-import com.android.dialer.contacts.resources.R;
+
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.FragmentManager;
+
+import com.android.dialer.R;
 import com.android.dialer.util.PermissionsUtil;
 
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
 /** Dialog that clears the frequently contacted list after confirming with the user. */
 public class ClearFrequentsDialog extends DialogFragment {
 
@@ -44,39 +50,27 @@
   public Dialog onCreateDialog(Bundle savedInstanceState) {
     final Context context = getActivity().getApplicationContext();
     final ContentResolver resolver = getActivity().getContentResolver();
-    final OnClickListener okListener =
-        new OnClickListener() {
-          @Override
-          public void onClick(DialogInterface dialog, int which) {
-            if (!PermissionsUtil.hasContactsReadPermissions(context)) {
-              return;
-            }
+    final OnClickListener okListener = (dialog, which) -> {
+        if (!PermissionsUtil.hasContactsReadPermissions(context)) {
+            return;
+        }
 
-            final ProgressDialog progressDialog =
-                ProgressDialog.show(
-                    getContext(),
-                    getString(R.string.clearFrequentsProgress_title),
-                    null,
-                    true,
-                    true);
+        final ProgressDialog progressDialog =
+          ProgressDialog.show(
+              getContext(),
+              getString(R.string.clearFrequentsProgress_title),
+              null,
+              true,
+              true);
 
-            final AsyncTask<Void, Void, Void> task =
-                new AsyncTask<Void, Void, Void>() {
-                  @Override
-                  protected Void doInBackground(Void... params) {
-                    resolver.delete(
-                        ContactsContract.DataUsageFeedback.DELETE_USAGE_URI, null, null);
-                    return null;
-                  }
+        final ExecutorService executorService = Executors.newSingleThreadExecutor();
+        final Handler handler = new Handler(Looper.getMainLooper());
 
-                  @Override
-                  protected void onPostExecute(Void result) {
-                    progressDialog.dismiss();
-                  }
-                };
-            task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
-          }
-        };
+        executorService.execute(() -> {
+          resolver.delete(ContactsContract.DataUsageFeedback.DELETE_USAGE_URI, null, null);
+          handler.post(progressDialog::dismiss);
+        });
+    };
     return new AlertDialog.Builder(getActivity())
         .setTitle(R.string.clearFrequentsConfirmation_title)
         .setMessage(R.string.clearFrequentsConfirmation)
diff --git a/java/com/android/contacts/common/extensions/PhoneDirectoryExtender.java b/java/com/android/contacts/common/extensions/PhoneDirectoryExtender.java
index 5e9753f..e0d52a8 100644
--- a/java/com/android/contacts/common/extensions/PhoneDirectoryExtender.java
+++ b/java/com/android/contacts/common/extensions/PhoneDirectoryExtender.java
@@ -16,7 +16,8 @@
 
 import android.content.Context;
 import android.net.Uri;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
 
 /** An interface for adding extended phone directories. */
 public interface PhoneDirectoryExtender {
diff --git a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderAccessor.java b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderAccessor.java
index 7978831..4af3a8b 100644
--- a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderAccessor.java
+++ b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderAccessor.java
@@ -15,8 +15,9 @@
 package com.android.contacts.common.extensions;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 
 /** Accessor for the phone directory extender singleton. */
@@ -26,11 +27,6 @@
 
   private PhoneDirectoryExtenderAccessor() {}
 
-  @VisibleForTesting
-  public static void setForTesting(PhoneDirectoryExtender extender) {
-    instance = extender;
-  }
-
   @NonNull
   public static PhoneDirectoryExtender get(@NonNull Context context) {
     Assert.isNotNull(context);
diff --git a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderFactory.java b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderFactory.java
index 9750ee3..c56c910 100644
--- a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderFactory.java
+++ b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderFactory.java
@@ -14,7 +14,7 @@
 
 package com.android.contacts.common.extensions;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 /**
  * This interface should be implemented by the Application subclass. It allows the contacts module
diff --git a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderStub.java b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderStub.java
index 5b3cb99..86fee67 100644
--- a/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderStub.java
+++ b/java/com/android/contacts/common/extensions/PhoneDirectoryExtenderStub.java
@@ -16,7 +16,8 @@
 
 import android.content.Context;
 import android.net.Uri;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
 
 /** No-op implementation for phone directory extender. */
 class PhoneDirectoryExtenderStub implements PhoneDirectoryExtender {
diff --git a/java/com/android/contacts/common/list/ContactEntry.java b/java/com/android/contacts/common/list/ContactEntry.java
index 90e6735..3194255 100644
--- a/java/com/android/contacts/common/list/ContactEntry.java
+++ b/java/com/android/contacts/common/list/ContactEntry.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,26 +20,23 @@
 import android.content.Context;
 import android.net.Uri;
 import android.provider.ContactsContract.PinnedPositions;
+
 import com.android.dialer.contacts.ContactsComponent;
 
 /** Class to hold contact information */
 public class ContactEntry {
 
-  public static final ContactEntry BLANK_ENTRY = new ContactEntry();
   /** Primary name for a Contact */
   public String namePrimary;
   /** Alternative name for a Contact, e.g. last name first */
   public String nameAlternative;
 
-  public String phoneLabel;
   public String phoneNumber;
   public Uri photoUri;
   public Uri lookupUri;
   public String lookupKey;
   public long id;
   public int pinned = PinnedPositions.UNPINNED;
-  public boolean isFavorite = false;
-  public boolean isDefaultNumber = false;
 
   public String getPreferredDisplayName(Context context) {
     return ContactsComponent.get(context)
diff --git a/java/com/android/contacts/common/list/ContactListFilter.java b/java/com/android/contacts/common/list/ContactListFilter.java
index 1a03bb6..39bd4a6 100644
--- a/java/com/android/contacts/common/list/ContactListFilter.java
+++ b/java/com/android/contacts/common/list/ContactListFilter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -136,7 +137,7 @@
     return new ContactListFilter(filterType, accountType, accountName, dataSet, null);
   }
 
-  public static final String filterTypeToString(int filterType) {
+  public static String filterTypeToString(int filterType) {
     switch (filterType) {
       case FILTER_TYPE_DEFAULT:
         return "FILTER_TYPE_DEFAULT";
diff --git a/java/com/android/contacts/common/list/ContactListFilterController.java b/java/com/android/contacts/common/list/ContactListFilterController.java
index c5c078c..f9b9710 100644
--- a/java/com/android/contacts/common/list/ContactListFilterController.java
+++ b/java/com/android/contacts/common/list/ContactListFilterController.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,12 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
+
+import androidx.preference.PreferenceManager;
+
 import com.android.contacts.common.model.AccountTypeManager;
 import com.android.contacts.common.model.account.AccountWithDataSet;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -45,16 +49,6 @@
   public abstract ContactListFilter getFilter();
 
   /**
-   * @param filter the filter
-   * @param persistent True when the given filter should be saved soon. False when the filter should
-   *     not be saved. The latter case may happen when some Intent requires a certain type of UI
-   *     (e.g. single contact) temporarily.
-   */
-  public abstract void setContactListFilter(ContactListFilter filter, boolean persistent);
-
-  public abstract void selectCustomFilter();
-
-  /**
    * Checks if the current filter is valid and reset the filter if not. It may happen when an
    * account is removed while the filter points to the account with {@link
    * ContactListFilter#FILTER_TYPE_ACCOUNT} type, for example. It may also happen if the current
@@ -76,8 +70,7 @@
 class ContactListFilterControllerImpl extends ContactListFilterController {
 
   private final Context mAppContext;
-  private final List<ContactListFilterListener> mListeners =
-      new ArrayList<ContactListFilterListener>();
+  private final List<ContactListFilterListener> mListeners = new ArrayList<>();
   private ContactListFilter mFilter;
 
   public ContactListFilterControllerImpl(Context context) {
@@ -105,11 +98,6 @@
     return PreferenceManager.getDefaultSharedPreferences(mAppContext);
   }
 
-  @Override
-  public void setContactListFilter(ContactListFilter filter, boolean persistent) {
-    setContactListFilter(filter, persistent, true);
-  }
-
   private void setContactListFilter(
       ContactListFilter filter, boolean persistent, boolean notifyListeners) {
     if (!filter.equals(mFilter)) {
@@ -123,12 +111,6 @@
     }
   }
 
-  @Override
-  public void selectCustomFilter() {
-    setContactListFilter(
-        ContactListFilter.createFilterWithType(ContactListFilter.FILTER_TYPE_CUSTOM), true);
-  }
-
   private void notifyContactListFilterChanged() {
     for (ContactListFilterListener listener : mListeners) {
       listener.onContactListFilterChanged();
diff --git a/java/com/android/contacts/common/list/ContactTileView.java b/java/com/android/contacts/common/list/ContactTileView.java
deleted file mode 100644
index 732cee7..0000000
--- a/java/com/android/contacts/common/list/ContactTileView.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.contacts.common.list;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.net.Uri;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import com.android.contacts.common.MoreContactUtils;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
-import com.android.dialer.contacts.resources.R;
-import com.android.dialer.widget.BidiTextView;
-
-/** A ContactTile displays a contact's picture and name */
-public abstract class ContactTileView extends FrameLayout {
-
-  private static final String TAG = ContactTileView.class.getSimpleName();
-  protected Listener mListener;
-  private Uri mLookupUri;
-  private ImageView mPhoto;
-  private BidiTextView mName;
-  private ContactPhotoManager mPhotoManager = null;
-
-  public ContactTileView(Context context, AttributeSet attrs) {
-    super(context, attrs);
-  }
-
-  @Override
-  protected void onFinishInflate() {
-    super.onFinishInflate();
-    mName = (BidiTextView) findViewById(R.id.contact_tile_name);
-    mPhoto = (ImageView) findViewById(R.id.contact_tile_image);
-
-    OnClickListener listener = createClickListener();
-    setOnClickListener(listener);
-  }
-
-  protected OnClickListener createClickListener() {
-    return new OnClickListener() {
-      @Override
-      public void onClick(View v) {
-        if (mListener == null) {
-          return;
-        }
-        CallSpecificAppData callSpecificAppData =
-            CallSpecificAppData.newBuilder()
-                .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL)
-                .setAllowAssistedDialing(true)
-                .build();
-        mListener.onContactSelected(
-            getLookupUri(),
-            MoreContactUtils.getTargetRectFromView(ContactTileView.this),
-            callSpecificAppData);
-      }
-    };
-  }
-
-  public void setPhotoManager(ContactPhotoManager photoManager) {
-    mPhotoManager = photoManager;
-  }
-
-  /**
-   * Populates the data members to be displayed from the fields in {@link
-   * com.android.contacts.common.list.ContactEntry}
-   */
-  public void loadFromContact(ContactEntry entry) {
-
-    if (entry != null) {
-      mName.setText(getNameForView(entry));
-      mLookupUri = entry.lookupUri;
-
-      setVisibility(View.VISIBLE);
-
-      if (mPhotoManager != null) {
-        DefaultImageRequest request = getDefaultImageRequest(entry.namePrimary, entry.lookupKey);
-        configureViewForImage(entry.photoUri == null);
-        if (mPhoto != null) {
-          mPhotoManager.loadPhoto(
-              mPhoto,
-              entry.photoUri,
-              getApproximateImageSize(),
-              isDarkTheme(),
-              isContactPhotoCircular(),
-              request);
-
-
-        }
-      } else {
-        LogUtil.w(TAG, "contactPhotoManager not set");
-      }
-    } else {
-      setVisibility(View.INVISIBLE);
-    }
-  }
-
-  public void setListener(Listener listener) {
-    mListener = listener;
-  }
-
-  public Uri getLookupUri() {
-    return mLookupUri;
-  }
-
-  /**
-   * Returns the string that should actually be displayed as the contact's name. Subclasses can
-   * override this to return formatted versions of the name - i.e. first name only.
-   */
-  protected String getNameForView(ContactEntry contactEntry) {
-    return contactEntry.namePrimary;
-  }
-
-  /**
-   * Implemented by subclasses to estimate the size of the picture. This can return -1 if only a
-   * thumbnail is shown anyway
-   */
-  protected abstract int getApproximateImageSize();
-
-  protected abstract boolean isDarkTheme();
-
-  /**
-   * Implemented by subclasses to reconfigure the view's layout and subviews, based on whether or
-   * not the contact has a user-defined photo.
-   *
-   * @param isDefaultImage True if the contact does not have a user-defined contact photo (which
-   *     means a default contact image will be applied by the {@link ContactPhotoManager}
-   */
-  protected void configureViewForImage(boolean isDefaultImage) {
-    // No-op by default.
-  }
-
-  /**
-   * Implemented by subclasses to allow them to return a {@link DefaultImageRequest} with the
-   * various image parameters defined to match their own layouts.
-   *
-   * @param displayName The display name of the contact
-   * @param lookupKey The lookup key of the contact
-   * @return A {@link DefaultImageRequest} object with each field configured by the subclass as
-   *     desired, or {@code null}.
-   */
-  protected DefaultImageRequest getDefaultImageRequest(String displayName, String lookupKey) {
-    return new DefaultImageRequest(displayName, lookupKey, isContactPhotoCircular());
-  }
-
-  /**
-   * Whether contact photo should be displayed as a circular image. Implemented by subclasses so
-   * they can change which drawables to fetch.
-   */
-  protected boolean isContactPhotoCircular() {
-    return true;
-  }
-
-  public interface Listener {
-
-    /** Notification that the contact was selected; no specific action is dictated. */
-    void onContactSelected(
-        Uri contactLookupUri, Rect viewRect, CallSpecificAppData callSpecificAppData);
-
-    /** Notification that the specified number is to be called. */
-    void onCallNumberDirectly(String phoneNumber, CallSpecificAppData callSpecificAppData);
-  }
-}
diff --git a/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java b/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java
deleted file mode 100644
index c75e0a7..0000000
--- a/java/com/android/contacts/common/list/OnPhoneNumberPickerActionListener.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.contacts.common.list;
-
-import android.app.ActionBar;
-import android.net.Uri;
-import com.android.dialer.callintent.CallSpecificAppData;
-
-/** Action callbacks that can be sent by a phone number picker. */
-public interface OnPhoneNumberPickerActionListener {
-
-  /** Returns the selected phone number uri to the requester. */
-  void onPickDataUri(Uri dataUri, boolean isVideoCall, CallSpecificAppData callSpecificAppData);
-
-  /**
-   * Returns the specified phone number to the requester. May call the specified phone number,
-   * either as an audio or video call.
-   */
-  void onPickPhoneNumber(
-      String phoneNumber, boolean isVideoCall, CallSpecificAppData callSpecificAppData);
-
-  /** Called when home menu in {@link ActionBar} is clicked by the user. */
-  void onHomeInActionBarSelected();
-}
diff --git a/java/com/android/contacts/common/list/ViewPagerTabStrip.java b/java/com/android/contacts/common/list/ViewPagerTabStrip.java
index 7a9e506..80dec96 100644
--- a/java/com/android/contacts/common/list/ViewPagerTabStrip.java
+++ b/java/com/android/contacts/common/list/ViewPagerTabStrip.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,13 +24,14 @@
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.LinearLayout;
+
 import com.android.dialer.contacts.resources.R;
 import com.android.dialer.theme.base.ThemeComponent;
 
 public class ViewPagerTabStrip extends LinearLayout {
 
   private final Paint mSelectedUnderlinePaint;
-  private int mSelectedUnderlineThickness;
+  private final int mSelectedUnderlineThickness;
   private int mIndexForSelection;
   private float mSelectionOffset;
 
diff --git a/java/com/android/contacts/common/list/ViewPagerTabs.java b/java/com/android/contacts/common/list/ViewPagerTabs.java
index b3242ee..5ab23b8 100644
--- a/java/com/android/contacts/common/list/ViewPagerTabs.java
+++ b/java/com/android/contacts/common/list/ViewPagerTabs.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,8 +20,6 @@
 import android.content.res.ColorStateList;
 import android.content.res.TypedArray;
 import android.graphics.Outline;
-import android.support.v4.view.PagerAdapter;
-import android.support.v4.view.ViewPager;
 import android.util.AttributeSet;
 import android.util.TypedValue;
 import android.view.Gravity;
@@ -32,6 +31,10 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.Toast;
+
+import androidx.viewpager.widget.PagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
 import com.android.dialer.contacts.resources.R;
 
 /**
@@ -71,7 +74,7 @@
   ViewPager mPager;
   int mPrevSelected = -1;
   int mSidePadding;
-  private ViewPagerTabStrip mTabStrip;
+  private final ViewPagerTabStrip mTabStrip;
   private int[] mTabIcons;
   // For displaying the unread count next to the tab icon.
   private int[] mUnreadCounts;
@@ -181,13 +184,7 @@
       tabView = textView;
     }
 
-    tabView.setOnClickListener(
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            mPager.setCurrentItem(getRtlPosition(position));
-          }
-        });
+    tabView.setOnClickListener(v -> mPager.setCurrentItem(getRtlPosition(position)));
 
     tabView.setOnLongClickListener(new OnTabLongClickListener(position));
 
diff --git a/java/com/android/contacts/common/model/AccountTypeManager.java b/java/com/android/contacts/common/model/AccountTypeManager.java
index f225ff6..70009a5 100644
--- a/java/com/android/contacts/common/model/AccountTypeManager.java
+++ b/java/com/android/contacts/common/model/AccountTypeManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -30,18 +31,16 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Looper;
 import android.os.Message;
 import android.os.SystemClock;
 import android.provider.ContactsContract;
-import android.support.annotation.VisibleForTesting;
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.Log;
-import android.util.TimingLogger;
+
 import com.android.contacts.common.MoreContactUtils;
 import com.android.contacts.common.list.ContactListFilterController;
 import com.android.contacts.common.model.account.AccountType;
@@ -54,6 +53,7 @@
 import com.android.contacts.common.model.account.SamsungAccountType;
 import com.android.contacts.common.model.dataitem.DataKind;
 import com.android.contacts.common.util.Constants;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -65,6 +65,8 @@
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
@@ -93,19 +95,6 @@
   }
 
   /**
-   * Set the instance of account type manager. This is only for and should only be used by unit
-   * tests. While having this method is not ideal, it's simpler than the alternative of holding this
-   * as a service in the ContactsApplication context class.
-   *
-   * @param mockManager The mock AccountTypeManager.
-   */
-  public static void setInstanceForTest(AccountTypeManager mockManager) {
-    synchronized (mInitializationLock) {
-      mAccountTypeManager = mockManager;
-    }
-  }
-
-  /**
    * Returns the list of all accounts (if contactWritableOnly is false) or just the list of contact
    * writable accounts (if contactWritableOnly is true).
    */
@@ -175,8 +164,7 @@
     implements OnAccountsUpdateListener, SyncStatusObserver {
 
   private static final Map<AccountTypeWithDataSet, AccountType>
-      EMPTY_UNMODIFIABLE_ACCOUNT_TYPE_MAP =
-          Collections.unmodifiableMap(new HashMap<AccountTypeWithDataSet, AccountType>());
+      EMPTY_UNMODIFIABLE_ACCOUNT_TYPE_MAP = Collections.unmodifiableMap(new HashMap<>());
 
   /**
    * A sample contact URI used to test whether any activities will respond to an invitable intent
@@ -187,37 +175,33 @@
 
   private static final int MESSAGE_LOAD_DATA = 0;
   private static final int MESSAGE_PROCESS_BROADCAST_INTENT = 1;
-  private static final Comparator<AccountWithDataSet> ACCOUNT_COMPARATOR =
-      new Comparator<AccountWithDataSet>() {
-        @Override
-        public int compare(AccountWithDataSet a, AccountWithDataSet b) {
-          if (Objects.equals(a.name, b.name)
-              && Objects.equals(a.type, b.type)
-              && Objects.equals(a.dataSet, b.dataSet)) {
-            return 0;
-          } else if (b.name == null || b.type == null) {
-            return -1;
-          } else if (a.name == null || a.type == null) {
-            return 1;
-          } else {
-            int diff = a.name.compareTo(b.name);
-            if (diff != 0) {
-              return diff;
-            }
-            diff = a.type.compareTo(b.type);
-            if (diff != 0) {
-              return diff;
-            }
+  private static final Comparator<AccountWithDataSet> ACCOUNT_COMPARATOR = (a, b) -> {
+    if (Objects.equals(a.name, b.name)
+        && Objects.equals(a.type, b.type)
+        && Objects.equals(a.dataSet, b.dataSet)) {
+      return 0;
+    } else if (b.name == null || b.type == null) {
+      return -1;
+    } else if (a.name == null || a.type == null) {
+      return 1;
+    } else {
+      int diff = a.name.compareTo(b.name);
+      if (diff != 0) {
+        return diff;
+      }
+      diff = a.type.compareTo(b.type);
+      if (diff != 0) {
+        return diff;
+      }
 
-            // Accounts without data sets get sorted before those that have them.
-            if (a.dataSet != null) {
-              return b.dataSet == null ? 1 : a.dataSet.compareTo(b.dataSet);
-            } else {
-              return -1;
-            }
-          }
-        }
-      };
+      // Accounts without data sets get sorted before those that have them.
+      if (a.dataSet != null) {
+        return b.dataSet == null ? 1 : a.dataSet.compareTo(b.dataSet);
+      } else {
+        return -1;
+      }
+    }
+  };
   private final InvitableAccountTypeCache mInvitableAccountTypeCache;
   /**
    * The boolean value is equal to true if the {@link InvitableAccountTypeCache} has been
@@ -231,7 +215,7 @@
   private final AtomicBoolean mInvitablesTaskIsRunning = new AtomicBoolean(false);
 
   private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper());
-  private Context mContext;
+  private final Context mContext;
   private final Runnable mCheckFilterValidityRunnable =
       new Runnable() {
         @Override
@@ -239,17 +223,17 @@
           ContactListFilterController.getInstance(mContext).checkFilterValidity(true);
         }
       };
-  private AccountManager mAccountManager;
-  private AccountType mFallbackAccountType;
+  private final AccountManager mAccountManager;
+  private final AccountType mFallbackAccountType;
   private List<AccountWithDataSet> mAccounts = new ArrayList<>();
   private List<AccountWithDataSet> mContactWritableAccounts = new ArrayList<>();
   private List<AccountWithDataSet> mGroupWritableAccounts = new ArrayList<>();
   private Map<AccountTypeWithDataSet, AccountType> mAccountTypesWithDataSets = new ArrayMap<>();
   private Map<AccountTypeWithDataSet, AccountType> mInvitableAccountTypes =
       EMPTY_UNMODIFIABLE_ACCOUNT_TYPE_MAP;
-  private HandlerThread mListenerThread;
-  private Handler mListenerHandler;
-  private BroadcastReceiver mBroadcastReceiver =
+  private final HandlerThread mListenerThread;
+  private final Handler mListenerHandler;
+  private final BroadcastReceiver mBroadcastReceiver =
       new BroadcastReceiver() {
 
         @Override
@@ -328,7 +312,6 @@
    * Return all {@link AccountType}s with at least one account which supports "invite", i.e. its
    * {@link AccountType#getInviteContactActivityClassName()} is not empty.
    */
-  @VisibleForTesting
   static Map<AccountTypeWithDataSet, AccountType> findAllInvitableAccountTypes(
       Context context,
       Collection<AccountWithDataSet> accounts,
@@ -401,7 +384,6 @@
     if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
       Log.d(Constants.PERFORMANCE_TAG, "AccountTypeManager.loadAccountsInBackground start");
     }
-    TimingLogger timings = new TimingLogger(TAG, "loadAccountsInBackground");
     final long startTime = SystemClock.currentThreadTimeMillis();
     final long startTimeWall = SystemClock.elapsedRealtime();
 
@@ -449,7 +431,7 @@
       } else {
         Log.d(
             TAG, "Registering external account type=" + type + ", packageName=" + auth.packageName);
-        accountType = new ExternalAccountType(mContext, auth.packageName, false);
+        accountType = new ExternalAccountType(mContext, auth.packageName);
       }
       if (!accountType.isInitialized()) {
         if (accountType.isEmbedded()) {
@@ -476,7 +458,7 @@
     if (!extensionPackages.isEmpty()) {
       Log.d(TAG, "Registering " + extensionPackages.size() + " extension packages");
       for (String extensionPackage : extensionPackages) {
-        ExternalAccountType accountType = new ExternalAccountType(mContext, extensionPackage, true);
+        ExternalAccountType accountType = new ExternalAccountType(mContext, extensionPackage);
         if (!accountType.isInitialized()) {
           // Skip external account types that couldn't be initialized.
           continue;
@@ -512,7 +494,6 @@
         addAccountType(accountType, accountTypesByTypeAndDataSet, accountTypesByType);
       }
     }
-    timings.addSplit("Loaded account types");
 
     // Map in accounts to associate the account names with each account type entry.
     Account[] accounts = mAccountManager.getAccounts();
@@ -539,11 +520,9 @@
       }
     }
 
-    Collections.sort(allAccounts, ACCOUNT_COMPARATOR);
-    Collections.sort(contactWritableAccounts, ACCOUNT_COMPARATOR);
-    Collections.sort(groupWritableAccounts, ACCOUNT_COMPARATOR);
-
-    timings.addSplit("Loaded accounts");
+    allAccounts.sort(ACCOUNT_COMPARATOR);
+    contactWritableAccounts.sort(ACCOUNT_COMPARATOR);
+    groupWritableAccounts.sort(ACCOUNT_COMPARATOR);
 
     synchronized (this) {
       mAccountTypesWithDataSets = accountTypesByTypeAndDataSet;
@@ -554,7 +533,6 @@
           findAllInvitableAccountTypes(mContext, allAccounts, accountTypesByTypeAndDataSet);
     }
 
-    timings.dumpToLog();
     final long endTimeWall = SystemClock.elapsedRealtime();
     final long endTime = SystemClock.currentThreadTimeMillis();
 
@@ -719,8 +697,8 @@
         result.remove(accountTypeWithDataSet);
         continue;
       }
-      ResolveInfo resolveInfo =
-          packageManager.resolveActivity(invitableIntent, PackageManager.MATCH_DEFAULT_ONLY);
+      ResolveInfo resolveInfo = packageManager.resolveActivity(invitableIntent,
+              PackageManager.ResolveInfoFlags.of(PackageManager.MATCH_DEFAULT_ONLY));
       if (resolveInfo == null) {
         // If we can't find an activity to start for this intent, then there's no point in
         // showing this option to the user.
@@ -796,18 +774,20 @@
    * the list of all potential invitable account types. Once the work is completed, the list of
    * account types is stored in the {@link AccountTypeManager}'s {@link InvitableAccountTypeCache}.
    */
-  private class FindInvitablesTask
-      extends AsyncTask<Void, Void, Map<AccountTypeWithDataSet, AccountType>> {
+  private class FindInvitablesTask {
 
-    @Override
-    protected Map<AccountTypeWithDataSet, AccountType> doInBackground(Void... params) {
-      return findUsableInvitableAccountTypes(mContext);
-    }
+    private void execute() {
+      ExecutorService executor = Executors.newSingleThreadExecutor();
+      Handler handler = new Handler(Looper.getMainLooper());
 
-    @Override
-    protected void onPostExecute(Map<AccountTypeWithDataSet, AccountType> accountTypes) {
-      mInvitableAccountTypeCache.setCachedValue(accountTypes);
-      mInvitablesTaskIsRunning.set(false);
+      executor.execute(() -> {
+        final Map<AccountTypeWithDataSet, AccountType> accountTypes =
+                findUsableInvitableAccountTypes(mContext);
+        handler.post(() -> {
+          mInvitableAccountTypeCache.setCachedValue(accountTypes);
+          mInvitablesTaskIsRunning.set(false);
+        });
+      });
     }
   }
 }
diff --git a/java/com/android/contacts/common/model/BuilderWrapper.java b/java/com/android/contacts/common/model/BuilderWrapper.java
deleted file mode 100644
index 9c666e5..0000000
--- a/java/com/android/contacts/common/model/BuilderWrapper.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common.model;
-
-import android.content.ContentProviderOperation.Builder;
-
-/**
- * This class is created for the purpose of compatibility and make the type of
- * ContentProviderOperation available on pre-M SDKs. Since ContentProviderOperation is usually
- * created by Builder and we don’t have access to the type via Builder, so we need to create a
- * wrapper class for Builder first and include type. Then we could use the builder and the type in
- * this class to create a wrapper of ContentProviderOperation.
- */
-public class BuilderWrapper {
-
-  private Builder mBuilder;
-  private int mType;
-
-  public BuilderWrapper(Builder builder, int type) {
-    mBuilder = builder;
-    mType = type;
-  }
-
-  public int getType() {
-    return mType;
-  }
-
-  public void setType(int mType) {
-    this.mType = mType;
-  }
-
-  public Builder getBuilder() {
-    return mBuilder;
-  }
-
-  public void setBuilder(Builder mBuilder) {
-    this.mBuilder = mBuilder;
-  }
-}
diff --git a/java/com/android/contacts/common/model/CPOWrapper.java b/java/com/android/contacts/common/model/CPOWrapper.java
deleted file mode 100644
index 4a67e67..0000000
--- a/java/com/android/contacts/common/model/CPOWrapper.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common.model;
-
-import android.content.ContentProviderOperation;
-
-/**
- * This class is created for the purpose of compatibility and make the type of
- * ContentProviderOperation available on pre-M SDKs.
- */
-public class CPOWrapper {
-
-  private ContentProviderOperation mOperation;
-  private int mType;
-
-  public CPOWrapper(ContentProviderOperation builder, int type) {
-    mOperation = builder;
-    mType = type;
-  }
-
-  public int getType() {
-    return mType;
-  }
-
-  public void setType(int type) {
-    this.mType = type;
-  }
-
-  public ContentProviderOperation getOperation() {
-    return mOperation;
-  }
-
-  public void setOperation(ContentProviderOperation operation) {
-    this.mOperation = operation;
-  }
-}
diff --git a/java/com/android/contacts/common/model/Contact.java b/java/com/android/contacts/common/model/Contact.java
index ad0b66e..08c5ce8 100644
--- a/java/com/android/contacts/common/model/Contact.java
+++ b/java/com/android/contacts/common/model/Contact.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,10 +23,11 @@
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Directory;
 import android.provider.ContactsContract.DisplayNameSources;
-import android.support.annotation.VisibleForTesting;
+
 import com.android.contacts.common.GroupMetaData;
 import com.android.contacts.common.model.account.AccountType;
 import com.google.common.collect.ImmutableList;
+
 import java.util.ArrayList;
 
 /**
@@ -232,7 +234,6 @@
   }
 
   /** Returns the contact ID. */
-  @VisibleForTesting
   public long getId() {
     return mId;
   }
diff --git a/java/com/android/contacts/common/model/ContactLoader.java b/java/com/android/contacts/common/model/ContactLoader.java
index a3a3b9d..8942bf4 100644
--- a/java/com/android/contacts/common/model/ContactLoader.java
+++ b/java/com/android/contacts/common/model/ContactLoader.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +17,6 @@
 
 package com.android.contacts.common.model;
 
-import android.content.AsyncTaskLoader;
 import android.content.ContentResolver;
 import android.content.ContentUris;
 import android.content.ContentValues;
@@ -36,6 +36,9 @@
 import android.provider.ContactsContract.Groups;
 import android.provider.ContactsContract.RawContacts;
 import android.text.TextUtils;
+
+import androidx.loader.content.AsyncTaskLoader;
+
 import com.android.contacts.common.GroupMetaData;
 import com.android.contacts.common.model.account.AccountType;
 import com.android.contacts.common.model.account.AccountTypeWithDataSet;
@@ -53,6 +56,11 @@
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -64,9 +72,6 @@
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
 
 /** Loads a single Contact and all it constituent RawContacts. */
 public class ContactLoader extends AsyncTaskLoader<Contact> {
@@ -79,10 +84,10 @@
   private final Uri mRequestedUri;
   private final Set<Long> mNotifiedRawContactIds = Sets.newHashSet();
   private Uri mLookupUri;
-  private boolean mLoadGroupMetaData;
-  private boolean mLoadInvitableAccountTypes;
-  private boolean mPostViewNotification;
-  private boolean mComputeFormattedPhoneNumber;
+  private final boolean mLoadGroupMetaData;
+  private final boolean mLoadInvitableAccountTypes;
+  private final boolean mPostViewNotification;
+  private final boolean mComputeFormattedPhoneNumber;
   private Contact mContact;
   private ForceLoadContentObserver mObserver;
 
@@ -292,8 +297,7 @@
       // status data.  Initially, result has empty entities and statuses.
       long currentRawContactId = -1;
       RawContact rawContact = null;
-      ImmutableList.Builder<RawContact> rawContactsBuilder =
-          new ImmutableList.Builder<RawContact>();
+      ImmutableList.Builder<RawContact> rawContactsBuilder = new ImmutableList.Builder<>();
       do {
         long rawContactId = cursor.getLong(ContactQuery.RAW_CONTACT_ID);
         if (rawContactId != currentRawContactId) {
@@ -388,8 +392,7 @@
 
   /** Sets the "invitable" account types to {@link Contact#mInvitableAccountTypes}. */
   private void loadInvitableAccountTypes(Contact contactData) {
-    final ImmutableList.Builder<AccountType> resultListBuilder =
-        new ImmutableList.Builder<AccountType>();
+    final ImmutableList.Builder<AccountType> resultListBuilder = new ImmutableList.Builder<>();
     if (!contactData.isUserProfile()) {
       Map<AccountTypeWithDataSet, AccountType> invitables =
           AccountTypeManager.getInstance(getContext()).getUsableInvitableAccountTypes();
@@ -594,7 +597,7 @@
    */
   private void loadGroupMetaData(Contact result) {
     StringBuilder selection = new StringBuilder();
-    ArrayList<String> selectionArgs = new ArrayList<String>();
+    ArrayList<String> selectionArgs = new ArrayList<>();
     final HashSet<AccountKey> accountsSeen = new HashSet<>();
     for (RawContact rawContact : result.getRawContacts()) {
       final String accountName = rawContact.getAccountName();
@@ -619,8 +622,7 @@
         selection.append(")");
       }
     }
-    final ImmutableList.Builder<GroupMetaData> groupListBuilder =
-        new ImmutableList.Builder<GroupMetaData>();
+    final ImmutableList.Builder<GroupMetaData> groupListBuilder = new ImmutableList.Builder<>();
     final Cursor cursor =
         getContext()
             .getContentResolver()
@@ -928,7 +930,7 @@
     static {
       List<String> projectionList = Lists.newArrayList(COLUMNS_INTERNAL);
       projectionList.add(Data.CARRIER_PRESENCE);
-      COLUMNS = projectionList.toArray(new String[projectionList.size()]);
+      COLUMNS = projectionList.toArray(new String[0]);
     }
   }
 
diff --git a/java/com/android/contacts/common/model/RawContact.java b/java/com/android/contacts/common/model/RawContact.java
index 9efc8a8..cdb2571 100644
--- a/java/com/android/contacts/common/model/RawContact.java
+++ b/java/com/android/contacts/common/model/RawContact.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,9 +26,11 @@
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.RawContacts;
+
 import com.android.contacts.common.model.account.AccountType;
 import com.android.contacts.common.model.account.AccountWithDataSet;
 import com.android.contacts.common.model.dataitem.DataItem;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -69,7 +72,7 @@
 
   public RawContact(ContentValues values) {
     mValues = values;
-    mDataItems = new ArrayList<NamedDataItem>();
+    mDataItems = new ArrayList<>();
   }
 
   /**
@@ -78,7 +81,7 @@
    * @param parcel The parcel to de-serialize from.
    */
   private RawContact(Parcel parcel) {
-    mValues = parcel.readParcelable(ContentValues.class.getClassLoader());
+    mValues = parcel.readParcelable(ContentValues.class.getClassLoader(), ContentValues.class);
     mDataItems = new ArrayList<>();
     parcel.readTypedList(mDataItems, NamedDataItem.CREATOR);
   }
@@ -314,8 +317,9 @@
     }
 
     public NamedDataItem(Parcel parcel) {
-      this.mUri = parcel.readParcelable(Uri.class.getClassLoader());
-      this.mContentValues = parcel.readParcelable(ContentValues.class.getClassLoader());
+      this.mUri = parcel.readParcelable(Uri.class.getClassLoader(), Uri.class);
+      this.mContentValues = parcel.readParcelable(ContentValues.class.getClassLoader(),
+              ContentValues.class);
     }
 
     @Override
diff --git a/java/com/android/contacts/common/model/account/AccountType.java b/java/com/android/contacts/common/model/account/AccountType.java
index 499286a..fd9eb0e 100644
--- a/java/com/android/contacts/common/model/account/AccountType.java
+++ b/java/com/android/contacts/common/model/account/AccountType.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -24,16 +25,17 @@
 import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.RawContacts;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.content.ContextCompat;
 import android.util.ArrayMap;
 import android.view.inputmethod.EditorInfo;
 import android.widget.EditText;
+
+import androidx.core.content.ContextCompat;
+
 import com.android.contacts.common.model.dataitem.DataKind;
 import com.android.dialer.contacts.resources.R;
+
 import java.text.Collator;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
@@ -49,13 +51,8 @@
 
   private static final String TAG = "AccountType";
   /** {@link Comparator} to sort by {@link DataKind#weight}. */
-  private static Comparator<DataKind> sWeightComparator =
-      new Comparator<DataKind>() {
-        @Override
-        public int compare(DataKind object1, DataKind object2) {
-          return object1.weight - object2.weight;
-        }
-      };
+  private final static Comparator<DataKind> sWeightComparator =
+          Comparator.comparingInt(object -> object.weight);
   /** The {@link RawContacts#ACCOUNT_TYPE} these constraints apply to. */
   public String accountType = null;
   /** The {@link RawContacts#DATA_SET} these constraints apply to. */
@@ -84,9 +81,9 @@
   public int iconRes;
   protected boolean mIsInitialized;
   /** Set of {@link DataKind} supported by this source. */
-  private ArrayList<DataKind> mKinds = new ArrayList<>();
+  private final ArrayList<DataKind> mKinds = new ArrayList<>();
   /** Lookup map of {@link #mKinds} on {@link DataKind#mimeType}. */
-  private Map<String, DataKind> mMimeKinds = new ArrayMap<>();
+  private final Map<String, DataKind> mMimeKinds = new ArrayMap<>();
 
   /**
    * Return a string resource loaded from the given package (or the current package if {@code
@@ -95,8 +92,7 @@
    *
    * <p>(The behavior is undefined if the resource or package doesn't exist.)
    */
-  @VisibleForTesting
-  static CharSequence getResourceText(
+  private static CharSequence getResourceText(
       Context context, String packageName, int resId, String defaultValue) {
     if (resId != -1 && packageName != null) {
       final PackageManager pm = context.getPackageManager();
@@ -139,10 +135,6 @@
     return true;
   }
 
-  public boolean isExtension() {
-    return false;
-  }
-
   /**
    * @return True if contacts can be created and edited using this app. If false, there could still
    *     be an external editor as provided by {@link #getEditContactActivityClassName()} or {@link
@@ -151,26 +143,6 @@
   public abstract boolean areContactsWritable();
 
   /**
-   * Returns an optional custom edit activity.
-   *
-   * <p>Only makes sense for non-embedded account types. The activity class should reside in the
-   * sync adapter package as determined by {@link #syncAdapterPackageName}.
-   */
-  public String getEditContactActivityClassName() {
-    return null;
-  }
-
-  /**
-   * Returns an optional custom new contact activity.
-   *
-   * <p>Only makes sense for non-embedded account types. The activity class should reside in the
-   * sync adapter package as determined by {@link #syncAdapterPackageName}.
-   */
-  public String getCreateContactActivityClassName() {
-    return null;
-  }
-
-  /**
    * Returns an optional custom invite contact activity.
    *
    * <p>Only makes sense for non-embedded account types. The activity class should reside in the
@@ -234,7 +206,7 @@
    * the account.
    */
   public List<String> getExtensionPackageNames() {
-    return new ArrayList<String>();
+    return new ArrayList<>();
   }
 
   /**
@@ -265,13 +237,6 @@
   /** Whether or not groups created under this account type have editable membership lists. */
   public abstract boolean isGroupMembershipEditable();
 
-  /** Return list of {@link DataKind} supported, sorted by {@link DataKind#weight}. */
-  public ArrayList<DataKind> getSortedDataKinds() {
-    // TODO: optimize by marking if already sorted
-    Collections.sort(mKinds, sWeightComparator);
-    return mKinds;
-  }
-
   /** Find the {@link DataKind} for a specific MIME-type, if it's handled by this data source. */
   public DataKind getKindForMimetype(String mimeType) {
     return this.mMimeKinds.get(mimeType);
@@ -320,8 +285,8 @@
    */
   public static class EditType {
 
-    public int rawValue;
-    public int labelRes;
+    public final int rawValue;
+    public final int labelRes;
     public boolean secondary;
     /**
      * The number of entries allowed for the type. -1 if not specified.
@@ -412,8 +377,8 @@
    */
   public static final class EditField {
 
-    public String column;
-    public int titleRes;
+    public final String column;
+    public final int titleRes;
     public int inputType;
     public int minLines;
     public boolean optional;
diff --git a/java/com/android/contacts/common/model/account/AccountTypeWithDataSet.java b/java/com/android/contacts/common/model/account/AccountTypeWithDataSet.java
index a32ebe1..24fcac3 100644
--- a/java/com/android/contacts/common/model/account/AccountTypeWithDataSet.java
+++ b/java/com/android/contacts/common/model/account/AccountTypeWithDataSet.java
@@ -23,6 +23,7 @@
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.RawContacts;
 import android.text.TextUtils;
+
 import java.util.Objects;
 
 /** Encapsulates an "account type" string and a "data set" string. */
diff --git a/java/com/android/contacts/common/model/account/AccountWithDataSet.java b/java/com/android/contacts/common/model/account/AccountWithDataSet.java
index 71faf50..63399d1 100644
--- a/java/com/android/contacts/common/model/account/AccountWithDataSet.java
+++ b/java/com/android/contacts/common/model/account/AccountWithDataSet.java
@@ -16,20 +16,11 @@
 
 package com.android.contacts.common.model.account;
 
-import android.accounts.Account;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.provider.BaseColumns;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.RawContacts;
 import android.text.TextUtils;
-import java.util.ArrayList;
-import java.util.List;
+
 import java.util.Objects;
-import java.util.regex.Pattern;
 
 /** Wrapper for an account that includes a data set (which may be null). */
 public class AccountWithDataSet implements Parcelable {
@@ -45,18 +36,7 @@
           return new AccountWithDataSet[size];
         }
       };
-  private static final String STRINGIFY_SEPARATOR = "\u0001";
-  private static final String ARRAY_STRINGIFY_SEPARATOR = "\u0002";
-  private static final Pattern STRINGIFY_SEPARATOR_PAT =
-      Pattern.compile(Pattern.quote(STRINGIFY_SEPARATOR));
-  private static final Pattern ARRAY_STRINGIFY_SEPARATOR_PAT =
-      Pattern.compile(Pattern.quote(ARRAY_STRINGIFY_SEPARATOR));
-  private static final String[] ID_PROJECTION = new String[] {BaseColumns._ID};
-  private static final Uri RAW_CONTACTS_URI_LIMIT_1 =
-      RawContacts.CONTENT_URI
-          .buildUpon()
-          .appendQueryParameter(ContactsContract.LIMIT_PARAM_KEY, "1")
-          .build();
+
   public final String name;
   public final String type;
   public final String dataSet;
@@ -80,81 +60,6 @@
     return TextUtils.isEmpty(text) ? null : text;
   }
 
-  private static StringBuilder addStringified(StringBuilder sb, AccountWithDataSet account) {
-    if (!TextUtils.isEmpty(account.name)) {
-      sb.append(account.name);
-    }
-    sb.append(STRINGIFY_SEPARATOR);
-    if (!TextUtils.isEmpty(account.type)) {
-      sb.append(account.type);
-    }
-    sb.append(STRINGIFY_SEPARATOR);
-    if (!TextUtils.isEmpty(account.dataSet)) {
-      sb.append(account.dataSet);
-    }
-
-    return sb;
-  }
-
-  /**
-   * Unpack a string created by {@link #stringify}.
-   *
-   * @throws IllegalArgumentException if it's an invalid string.
-   */
-  public static AccountWithDataSet unstringify(String s) {
-    final String[] array = STRINGIFY_SEPARATOR_PAT.split(s, 3);
-    if (array.length < 3) {
-      throw new IllegalArgumentException("Invalid string " + s);
-    }
-    return new AccountWithDataSet(
-        array[0], array[1], TextUtils.isEmpty(array[2]) ? null : array[2]);
-  }
-
-  /** Pack a list of {@link AccountWithDataSet} into a string. */
-  public static String stringifyList(List<AccountWithDataSet> accounts) {
-    final StringBuilder sb = new StringBuilder();
-
-    for (AccountWithDataSet account : accounts) {
-      if (sb.length() > 0) {
-        sb.append(ARRAY_STRINGIFY_SEPARATOR);
-      }
-      addStringified(sb, account);
-    }
-
-    return sb.toString();
-  }
-
-  /**
-   * Unpack a list of {@link AccountWithDataSet} into a string.
-   *
-   * @throws IllegalArgumentException if it's an invalid string.
-   */
-  public static List<AccountWithDataSet> unstringifyList(String s) {
-    final ArrayList<AccountWithDataSet> ret = new ArrayList<>();
-    if (TextUtils.isEmpty(s)) {
-      return ret;
-    }
-
-    final String[] array = ARRAY_STRINGIFY_SEPARATOR_PAT.split(s);
-
-    for (int i = 0; i < array.length; i++) {
-      ret.add(unstringify(array[i]));
-    }
-
-    return ret;
-  }
-
-  public boolean isLocalAccount() {
-    return name == null && type == null;
-  }
-
-  public Account getAccountOrNull() {
-    if (name != null && type != null) {
-      return new Account(name, type);
-    }
-    return null;
-  }
-
   public int describeContents() {
     return 0;
   }
@@ -169,37 +74,6 @@
     return mAccountTypeWithDataSet;
   }
 
-  /**
-   * Return {@code true} if this account has any contacts in the database. Touches DB. Don't use in
-   * the UI thread.
-   */
-  public boolean hasData(Context context) {
-    final String BASE_SELECTION =
-        RawContacts.ACCOUNT_TYPE + " = ?" + " AND " + RawContacts.ACCOUNT_NAME + " = ?";
-    final String selection;
-    final String[] args;
-    if (TextUtils.isEmpty(dataSet)) {
-      selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " IS NULL";
-      args = new String[] {type, name};
-    } else {
-      selection = BASE_SELECTION + " AND " + RawContacts.DATA_SET + " = ?";
-      args = new String[] {type, name, dataSet};
-    }
-
-    final Cursor c =
-        context
-            .getContentResolver()
-            .query(RAW_CONTACTS_URI_LIMIT_1, ID_PROJECTION, selection, args, null);
-    if (c == null) {
-      return false;
-    }
-    try {
-      return c.moveToFirst();
-    } finally {
-      c.close();
-    }
-  }
-
   public boolean equals(Object obj) {
     if (obj instanceof AccountWithDataSet) {
       AccountWithDataSet other = (AccountWithDataSet) obj;
@@ -221,9 +95,4 @@
   public String toString() {
     return "AccountWithDataSet {name=" + name + ", type=" + type + ", dataSet=" + dataSet + "}";
   }
-
-  /** Pack the instance into a string. */
-  public String stringify() {
-    return addStringified(new StringBuilder(), this).toString();
-  }
 }
diff --git a/java/com/android/contacts/common/model/account/BaseAccountType.java b/java/com/android/contacts/common/model/account/BaseAccountType.java
index 2911975..0d8b73e 100644
--- a/java/com/android/contacts/common/model/account/BaseAccountType.java
+++ b/java/com/android/contacts/common/model/account/BaseAccountType.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -37,43 +38,40 @@
 import android.util.ArrayMap;
 import android.util.AttributeSet;
 import android.view.inputmethod.EditorInfo;
+
 import com.android.contacts.common.model.dataitem.DataKind;
 import com.android.contacts.common.util.CommonDateUtils;
 import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.contacts.resources.R;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
 
 public abstract class BaseAccountType extends AccountType {
 
-  public static final StringInflater ORGANIZATION_BODY_INFLATER =
-      new StringInflater() {
-        @Override
-        public CharSequence inflateUsing(Context context, ContentValues values) {
-          final CharSequence companyValue =
-              values.containsKey(Organization.COMPANY)
-                  ? values.getAsString(Organization.COMPANY)
-                  : null;
-          final CharSequence titleValue =
-              values.containsKey(Organization.TITLE)
-                  ? values.getAsString(Organization.TITLE)
-                  : null;
+  public static final StringInflater ORGANIZATION_BODY_INFLATER = (context, values) -> {
+    final CharSequence companyValue = values.containsKey(Organization.COMPANY)
+            ? values.getAsString(Organization.COMPANY)
+            : null;
+    final CharSequence titleValue = values.containsKey(Organization.TITLE)
+            ? values.getAsString(Organization.TITLE)
+            : null;
 
-          if (companyValue != null && titleValue != null) {
-            return companyValue + ": " + titleValue;
-          } else if (companyValue == null) {
-            return titleValue;
-          } else {
-            return companyValue;
-          }
-        }
-      };
+    if (companyValue != null && titleValue != null) {
+      return companyValue + ": " + titleValue;
+    } else if (companyValue == null) {
+      return titleValue;
+    } else {
+      return companyValue;
+    }
+  };
   protected static final int FLAGS_PHONE = EditorInfo.TYPE_CLASS_PHONE;
   protected static final int FLAGS_EMAIL =
       EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
@@ -314,28 +312,17 @@
     kind.actionBody = new SimpleInflater(Phone.NUMBER);
     kind.typeColumn = Phone.TYPE;
     kind.typeList = new ArrayList<>();
+    kind.typeList = new ArrayList<>();
     kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_HOME));
     kind.typeList.add(buildPhoneType(Phone.TYPE_WORK));
+    kind.typeList.add(buildPhoneType(Phone.TYPE_HOME));
+    kind.typeList.add(buildPhoneType(Phone.TYPE_MAIN));
     kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true));
     kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true));
     kind.typeList.add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true));
     kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER));
     kind.typeList.add(
-        buildPhoneType(Phone.TYPE_CUSTOM).setSecondary(true).setCustomColumn(Phone.LABEL));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_CALLBACK).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_CAR).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_COMPANY_MAIN).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_ISDN).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_MAIN).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER_FAX).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_RADIO).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_TELEX).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_TTY_TDD).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_WORK_MOBILE).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_WORK_PAGER).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_ASSISTANT).setSecondary(true));
-    kind.typeList.add(buildPhoneType(Phone.TYPE_MMS).setSecondary(true));
+            buildPhoneType(Phone.TYPE_CUSTOM).setSecondary(true).setCustomColumn(Phone.LABEL));
 
     kind.fieldList = new ArrayList<>();
     kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE));
@@ -354,7 +341,6 @@
     kind.typeList.add(buildEmailType(Email.TYPE_HOME));
     kind.typeList.add(buildEmailType(Email.TYPE_WORK));
     kind.typeList.add(buildEmailType(Email.TYPE_OTHER));
-    kind.typeList.add(buildEmailType(Email.TYPE_MOBILE));
     kind.typeList.add(
         buildEmailType(Email.TYPE_CUSTOM).setSecondary(true).setCustomColumn(Email.LABEL));
 
@@ -407,14 +393,6 @@
 
     kind.typeColumn = Im.PROTOCOL;
     kind.typeList = new ArrayList<>();
-    kind.typeList.add(buildImType(Im.PROTOCOL_AIM));
-    kind.typeList.add(buildImType(Im.PROTOCOL_MSN));
-    kind.typeList.add(buildImType(Im.PROTOCOL_YAHOO));
-    kind.typeList.add(buildImType(Im.PROTOCOL_SKYPE));
-    kind.typeList.add(buildImType(Im.PROTOCOL_QQ));
-    kind.typeList.add(buildImType(Im.PROTOCOL_GOOGLE_TALK));
-    kind.typeList.add(buildImType(Im.PROTOCOL_ICQ));
-    kind.typeList.add(buildImType(Im.PROTOCOL_JABBER));
     kind.typeList.add(
         buildImType(Im.PROTOCOL_CUSTOM).setSecondary(true).setCustomColumn(Im.CUSTOM_PROTOCOL));
 
@@ -631,10 +609,6 @@
           + " mColumnName"
           + mColumnName;
     }
-
-    public String getColumnNameForTest() {
-      return mColumnName;
-    }
   }
 
   public abstract static class CommonInflater implements StringInflater {
@@ -775,31 +749,7 @@
 
     @Override
     protected int getTypeLabelResource(Integer type) {
-      if (type == null) {
-        return R.string.chat;
-      }
-      switch (type) {
-        case Im.PROTOCOL_AIM:
-          return R.string.chat_aim;
-        case Im.PROTOCOL_MSN:
-          return R.string.chat_msn;
-        case Im.PROTOCOL_YAHOO:
-          return R.string.chat_yahoo;
-        case Im.PROTOCOL_SKYPE:
-          return R.string.chat_skype;
-        case Im.PROTOCOL_QQ:
-          return R.string.chat_qq;
-        case Im.PROTOCOL_GOOGLE_TALK:
-          return R.string.chat_gtalk;
-        case Im.PROTOCOL_ICQ:
-          return R.string.chat_icq;
-        case Im.PROTOCOL_JABBER:
-          return R.string.chat_jabber;
-        case Im.PROTOCOL_NETMEETING:
-          return R.string.chat;
-        default:
-          return R.string.chat;
-      }
+      return R.string.chat;
     }
   }
 
@@ -1485,30 +1435,6 @@
 
     @Override
     protected EditType buildEditTypeForTypeTag(AttributeSet attrs, String type) {
-      if ("aim".equals(type)) {
-        return buildImType(Im.PROTOCOL_AIM);
-      }
-      if ("msn".equals(type)) {
-        return buildImType(Im.PROTOCOL_MSN);
-      }
-      if ("yahoo".equals(type)) {
-        return buildImType(Im.PROTOCOL_YAHOO);
-      }
-      if ("skype".equals(type)) {
-        return buildImType(Im.PROTOCOL_SKYPE);
-      }
-      if ("qq".equals(type)) {
-        return buildImType(Im.PROTOCOL_QQ);
-      }
-      if ("google_talk".equals(type)) {
-        return buildImType(Im.PROTOCOL_GOOGLE_TALK);
-      }
-      if ("icq".equals(type)) {
-        return buildImType(Im.PROTOCOL_ICQ);
-      }
-      if ("jabber".equals(type)) {
-        return buildImType(Im.PROTOCOL_JABBER);
-      }
       if ("custom".equals(type)) {
         return buildImType(Im.PROTOCOL_CUSTOM)
             .setSecondary(true)
diff --git a/java/com/android/contacts/common/model/account/ExchangeAccountType.java b/java/com/android/contacts/common/model/account/ExchangeAccountType.java
index 0a95e7e..20f3c09 100644
--- a/java/com/android/contacts/common/model/account/ExchangeAccountType.java
+++ b/java/com/android/contacts/common/model/account/ExchangeAccountType.java
@@ -29,10 +29,12 @@
 import android.provider.ContactsContract.CommonDataKinds.StructuredName;
 import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
 import android.provider.ContactsContract.CommonDataKinds.Website;
+
 import com.android.contacts.common.model.dataitem.DataKind;
 import com.android.contacts.common.util.CommonDateUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.contacts.resources.R;
+
 import java.util.ArrayList;
 import java.util.Locale;
 
diff --git a/java/com/android/contacts/common/model/account/ExternalAccountType.java b/java/com/android/contacts/common/model/account/ExternalAccountType.java
index 618def7..d93195b 100644
--- a/java/com/android/contacts/common/model/account/ExternalAccountType.java
+++ b/java/com/android/contacts/common/model/account/ExternalAccountType.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,18 +28,20 @@
 import android.content.res.XmlResourceParser;
 import android.provider.ContactsContract.CommonDataKinds.Photo;
 import android.provider.ContactsContract.CommonDataKinds.StructuredName;
-import android.support.annotation.VisibleForTesting;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Xml;
+
 import com.android.contacts.common.model.dataitem.DataKind;
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.contacts.resources.R;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
 
 /** A general contacts account type descriptor. */
 public class ExternalAccountType extends BaseAccountType {
@@ -64,8 +67,6 @@
   private static final String TAG_CONTACTS_DATA_KIND = "ContactsDataKind";
   private static final String TAG_EDIT_SCHEMA = "EditSchema";
 
-  private static final String ATTR_EDIT_CONTACT_ACTIVITY = "editContactActivity";
-  private static final String ATTR_CREATE_CONTACT_ACTIVITY = "createContactActivity";
   private static final String ATTR_INVITE_CONTACT_ACTIVITY = "inviteContactActivity";
   private static final String ATTR_INVITE_CONTACT_ACTION_LABEL = "inviteContactActionLabel";
   private static final String ATTR_VIEW_CONTACT_NOTIFY_SERVICE = "viewContactNotifyService";
@@ -80,10 +81,6 @@
   private static final String ATTR_ACCOUNT_LABEL = "accountTypeLabel";
   private static final String ATTR_ACCOUNT_ICON = "accountTypeIcon";
 
-  private final boolean mIsExtension;
-
-  private String mEditContactActivityClassName;
-  private String mCreateContactActivityClassName;
   private String mInviteContactActivity;
   private String mInviteActionLabelAttribute;
   private int mInviteActionLabelResId;
@@ -97,8 +94,8 @@
   private boolean mHasContactsMetadata;
   private boolean mHasEditSchema;
 
-  public ExternalAccountType(Context context, String resPackageName, boolean isExtension) {
-    this(context, resPackageName, isExtension, null);
+  public ExternalAccountType(Context context, String resPackageName) {
+    this(context, resPackageName, null);
   }
 
   /**
@@ -110,9 +107,7 @@
   ExternalAccountType(
       Context context,
       String packageName,
-      boolean isExtension,
       XmlResourceParser injectedMetadata) {
-    this.mIsExtension = isExtension;
     this.resourcePackageName = packageName;
     this.syncAdapterPackageName = packageName;
 
@@ -160,7 +155,7 @@
       }
     }
 
-    mExtensionPackageNames = new ArrayList<String>();
+    mExtensionPackageNames = new ArrayList<>();
     mInviteActionLabelResId =
         resolveExternalResId(
             context,
@@ -198,25 +193,23 @@
   public static XmlResourceParser loadContactsXml(Context context, String resPackageName) {
     final PackageManager pm = context.getPackageManager();
     final Intent intent = new Intent(SYNC_META_DATA).setPackage(resPackageName);
-    final List<ResolveInfo> intentServices =
-        pm.queryIntentServices(intent, PackageManager.GET_SERVICES | PackageManager.GET_META_DATA);
+    final List<ResolveInfo> intentServices = pm.queryIntentServices(intent,
+            PackageManager.ResolveInfoFlags.of(PackageManager.GET_META_DATA));
 
-    if (intentServices != null) {
-      for (final ResolveInfo resolveInfo : intentServices) {
-        final ServiceInfo serviceInfo = resolveInfo.serviceInfo;
-        if (serviceInfo == null) {
-          continue;
-        }
-        for (String metadataName : METADATA_CONTACTS_NAMES) {
-          final XmlResourceParser parser = serviceInfo.loadXmlMetaData(pm, metadataName);
-          if (parser != null) {
-            LogUtil.d(
-                TAG,
-                String.format(
-                    "Metadata loaded from: %s, %s, %s",
-                    serviceInfo.packageName, serviceInfo.name, metadataName));
-            return parser;
-          }
+    for (final ResolveInfo resolveInfo : intentServices) {
+      final ServiceInfo serviceInfo = resolveInfo.serviceInfo;
+      if (serviceInfo == null) {
+        continue;
+      }
+      for (String metadataName : METADATA_CONTACTS_NAMES) {
+        final XmlResourceParser parser = serviceInfo.loadXmlMetaData(pm, metadataName);
+        if (parser != null) {
+          LogUtil.d(
+              TAG,
+              String.format(
+                  "Metadata loaded from: %s, %s, %s",
+                  serviceInfo.packageName, serviceInfo.name, metadataName));
+          return parser;
         }
       }
     }
@@ -241,8 +234,7 @@
    * @param packageName name of the package containing the resource.
    * @param xmlAttributeName attribute name which the resource came from. Used for logging.
    */
-  @VisibleForTesting
-  static int resolveExternalResId(
+  private static int resolveExternalResId(
       Context context, String resourceName, String packageName, String xmlAttributeName) {
     if (TextUtils.isEmpty(resourceName)) {
       return -1; // Empty text is okay.
@@ -279,11 +271,6 @@
   }
 
   @Override
-  public boolean isExtension() {
-    return mIsExtension;
-  }
-
-  @Override
   public boolean areContactsWritable() {
     return mHasEditSchema;
   }
@@ -294,16 +281,6 @@
   }
 
   @Override
-  public String getEditContactActivityClassName() {
-    return mEditContactActivityClassName;
-  }
-
-  @Override
-  public String getCreateContactActivityClassName() {
-    return mCreateContactActivityClassName;
-  }
-
-  @Override
   public String getInviteContactActivityClassName() {
     return mInviteContactActivity;
   }
@@ -365,11 +342,7 @@
         String attr = parser.getAttributeName(i);
         String value = parser.getAttributeValue(i);
         LogUtil.d(TAG, attr + "=" + value);
-        if (ATTR_EDIT_CONTACT_ACTIVITY.equals(attr)) {
-          mEditContactActivityClassName = value;
-        } else if (ATTR_CREATE_CONTACT_ACTIVITY.equals(attr)) {
-          mCreateContactActivityClassName = value;
-        } else if (ATTR_INVITE_CONTACT_ACTIVITY.equals(attr)) {
+        if (ATTR_INVITE_CONTACT_ACTIVITY.equals(attr)) {
           mInviteContactActivity = value;
         } else if (ATTR_INVITE_CONTACT_ACTION_LABEL.equals(attr)) {
           mInviteActionLabelAttribute = value;
@@ -430,9 +403,7 @@
           addKind(kind);
         }
       }
-    } catch (XmlPullParserException e) {
-      throw new DefinitionException("Problem reading XML", e);
-    } catch (IOException e) {
+    } catch (XmlPullParserException | IOException e) {
       throw new DefinitionException("Problem reading XML", e);
     }
   }
diff --git a/java/com/android/contacts/common/model/account/FallbackAccountType.java b/java/com/android/contacts/common/model/account/FallbackAccountType.java
index ee3a757..6fc02f1 100644
--- a/java/com/android/contacts/common/model/account/FallbackAccountType.java
+++ b/java/com/android/contacts/common/model/account/FallbackAccountType.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,7 @@
 package com.android.contacts.common.model.account;
 
 import android.content.Context;
-import com.android.contacts.common.model.dataitem.DataKind;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.contacts.resources.R;
 
@@ -61,15 +62,6 @@
     this(context, null);
   }
 
-  /**
-   * Used to compare with an {@link ExternalAccountType} built from a test contacts.xml. In order to
-   * build {@link DataKind}s with the same resource package name, {@code resPackageName} is
-   * injectable.
-   */
-  static AccountType createWithPackageNameForTest(Context context, String resPackageName) {
-    return new FallbackAccountType(context, resPackageName);
-  }
-
   @Override
   public boolean areContactsWritable() {
     return true;
diff --git a/java/com/android/contacts/common/model/account/GoogleAccountType.java b/java/com/android/contacts/common/model/account/GoogleAccountType.java
index e10ade4..55ab945 100644
--- a/java/com/android/contacts/common/model/account/GoogleAccountType.java
+++ b/java/com/android/contacts/common/model/account/GoogleAccountType.java
@@ -24,10 +24,12 @@
 import android.provider.ContactsContract.CommonDataKinds.Event;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.CommonDataKinds.Relation;
+
 import com.android.contacts.common.model.dataitem.DataKind;
 import com.android.contacts.common.util.CommonDateUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.contacts.resources.R;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
diff --git a/java/com/android/contacts/common/model/account/SamsungAccountType.java b/java/com/android/contacts/common/model/account/SamsungAccountType.java
index 77c0575..a550c3f 100644
--- a/java/com/android/contacts/common/model/account/SamsungAccountType.java
+++ b/java/com/android/contacts/common/model/account/SamsungAccountType.java
@@ -23,10 +23,12 @@
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.CommonDataKinds.Relation;
 import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+
 import com.android.contacts.common.model.dataitem.DataKind;
 import com.android.contacts.common.util.CommonDateUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.contacts.resources.R;
+
 import java.util.ArrayList;
 import java.util.Locale;
 
diff --git a/java/com/android/contacts/common/model/dataitem/DataItem.java b/java/com/android/contacts/common/model/dataitem/DataItem.java
index dc74605..ebfe85e 100644
--- a/java/com/android/contacts/common/model/dataitem/DataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/DataItem.java
@@ -35,6 +35,7 @@
 import android.provider.ContactsContract.CommonDataKinds.Website;
 import android.provider.ContactsContract.Contacts.Data;
 import android.provider.ContactsContract.Contacts.Entity;
+
 import com.android.contacts.common.Collapser;
 import com.android.contacts.common.MoreContactUtils;
 import com.android.contacts.common.model.account.AccountType.EditType;
@@ -95,14 +96,6 @@
     return mContentValues;
   }
 
-  public Long getRawContactId() {
-    return mContentValues.getAsLong(Data.RAW_CONTACT_ID);
-  }
-
-  public void setRawContactId(long rawContactId) {
-    mContentValues.put(Data.RAW_CONTACT_ID, rawContactId);
-  }
-
   /** Returns the data id. */
   public long getId() {
     return mContentValues.getAsLong(Data._ID);
@@ -140,16 +133,6 @@
   }
 
   /**
-   * Indicates the carrier presence value for the current {@link DataItem}.
-   *
-   * @return {@link Data#CARRIER_PRESENCE_VT_CAPABLE} if the {@link DataItem} supports carrier video
-   *     calling, {@code 0} otherwise.
-   */
-  public int getCarrierPresence() {
-    return mContentValues.getAsInteger(Data.CARRIER_PRESENCE);
-  }
-
-  /**
    * This builds the data string depending on the type of data item by using the generic DataKind
    * object underneath.
    */
@@ -161,25 +144,10 @@
     return actionBody == null ? null : actionBody.toString();
   }
 
-  /**
-   * This builds the data string(intended for display) depending on the type of data item. It
-   * returns the same value as {@link #buildDataString} by default, but certain data items can
-   * override it to provide their version of formatted data strings.
-   *
-   * @return Data string representing the data item, possibly formatted for display
-   */
-  public String buildDataStringForDisplay(Context context, DataKind kind) {
-    return buildDataString(context, kind);
-  }
-
   public DataKind getDataKind() {
     return mKind;
   }
 
-  public void setDataKind(DataKind kind) {
-    mKind = kind;
-  }
-
   public Integer getTimesUsed() {
     return mContentValues.getAsInteger(Entity.TIMES_USED);
   }
diff --git a/java/com/android/contacts/common/model/dataitem/DataKind.java b/java/com/android/contacts/common/model/dataitem/DataKind.java
index 3b470a2..194aa84 100644
--- a/java/com/android/contacts/common/model/dataitem/DataKind.java
+++ b/java/com/android/contacts/common/model/dataitem/DataKind.java
@@ -19,10 +19,12 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.provider.ContactsContract.Data;
+
 import com.android.contacts.common.model.account.AccountType.EditField;
 import com.android.contacts.common.model.account.AccountType.EditType;
 import com.android.contacts.common.model.account.AccountType.StringInflater;
 import com.google.common.collect.Iterators;
+
 import java.text.SimpleDateFormat;
 import java.util.List;
 
diff --git a/java/com/android/contacts/common/model/dataitem/EmailDataItem.java b/java/com/android/contacts/common/model/dataitem/EmailDataItem.java
index 2fe2978..aed419d 100644
--- a/java/com/android/contacts/common/model/dataitem/EmailDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/EmailDataItem.java
@@ -17,6 +17,7 @@
 package com.android.contacts.common.model.dataitem;
 
 import android.content.ContentValues;
+import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Email;
 
 /**
diff --git a/java/com/android/contacts/common/model/dataitem/EventDataItem.java b/java/com/android/contacts/common/model/dataitem/EventDataItem.java
index 15d9880..4060e67 100644
--- a/java/com/android/contacts/common/model/dataitem/EventDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/EventDataItem.java
@@ -18,6 +18,7 @@
 
 import android.content.ContentValues;
 import android.content.Context;
+import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Event;
 import android.text.TextUtils;
 
diff --git a/java/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java b/java/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java
index f921b3c..7b5115d 100644
--- a/java/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/GroupMembershipDataItem.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,6 @@
 
 import android.content.ContentValues;
 import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
 
 /**
  * Represents a group memebership data item, wrapping the columns in {@link
@@ -29,12 +29,4 @@
   /* package */ GroupMembershipDataItem(ContentValues values) {
     super(values);
   }
-
-  public Long getGroupRowId() {
-    return getContentValues().getAsLong(GroupMembership.GROUP_ROW_ID);
-  }
-
-  public String getGroupSourceId() {
-    return getContentValues().getAsString(GroupMembership.GROUP_SOURCE_ID);
-  }
 }
diff --git a/java/com/android/contacts/common/model/dataitem/IdentityDataItem.java b/java/com/android/contacts/common/model/dataitem/IdentityDataItem.java
index 2badf92..09cca10 100644
--- a/java/com/android/contacts/common/model/dataitem/IdentityDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/IdentityDataItem.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,7 @@
 package com.android.contacts.common.model.dataitem;
 
 import android.content.ContentValues;
-import android.provider.ContactsContract.CommonDataKinds.Identity;
+import android.provider.ContactsContract;
 
 /**
  * Represents an identity data item, wrapping the columns in {@link
@@ -28,12 +29,4 @@
   /* package */ IdentityDataItem(ContentValues values) {
     super(values);
   }
-
-  public String getIdentity() {
-    return getContentValues().getAsString(Identity.IDENTITY);
-  }
-
-  public String getNamespace() {
-    return getContentValues().getAsString(Identity.NAMESPACE);
-  }
 }
diff --git a/java/com/android/contacts/common/model/dataitem/ImDataItem.java b/java/com/android/contacts/common/model/dataitem/ImDataItem.java
index b990255..efc6383 100644
--- a/java/com/android/contacts/common/model/dataitem/ImDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/ImDataItem.java
@@ -18,6 +18,7 @@
 
 import android.content.ContentValues;
 import android.content.Context;
+import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Email;
 import android.provider.ContactsContract.CommonDataKinds.Im;
 import android.text.TextUtils;
@@ -41,12 +42,6 @@
     mCreatedFromEmail = createdFromEmail;
   }
 
-  public static ImDataItem createFromEmail(EmailDataItem item) {
-    final ImDataItem im = new ImDataItem(new ContentValues(item.getContentValues()), true);
-    im.setMimeType(Im.CONTENT_ITEM_TYPE);
-    return im;
-  }
-
   public String getData() {
     if (mCreatedFromEmail) {
       return getContentValues().getAsString(Email.DATA);
@@ -72,15 +67,6 @@
     return getContentValues().getAsString(Im.CUSTOM_PROTOCOL);
   }
 
-  public int getChatCapability() {
-    Integer result = getContentValues().getAsInteger(Im.CHAT_CAPABILITY);
-    return result == null ? 0 : result;
-  }
-
-  public boolean isCreatedFromEmail() {
-    return mCreatedFromEmail;
-  }
-
   @Override
   public boolean shouldCollapseWith(DataItem t, Context context) {
     if (!(t instanceof ImDataItem) || mKind == null || t.getDataKind() == null) {
diff --git a/java/com/android/contacts/common/model/dataitem/NicknameDataItem.java b/java/com/android/contacts/common/model/dataitem/NicknameDataItem.java
index a448be7..0eabb40 100644
--- a/java/com/android/contacts/common/model/dataitem/NicknameDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/NicknameDataItem.java
@@ -17,6 +17,7 @@
 package com.android.contacts.common.model.dataitem;
 
 import android.content.ContentValues;
+import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Nickname;
 
 /**
diff --git a/java/com/android/contacts/common/model/dataitem/NoteDataItem.java b/java/com/android/contacts/common/model/dataitem/NoteDataItem.java
index b55ecc3..ec9a862 100644
--- a/java/com/android/contacts/common/model/dataitem/NoteDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/NoteDataItem.java
@@ -17,6 +17,7 @@
 package com.android.contacts.common.model.dataitem;
 
 import android.content.ContentValues;
+import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Note;
 
 /**
diff --git a/java/com/android/contacts/common/model/dataitem/OrganizationDataItem.java b/java/com/android/contacts/common/model/dataitem/OrganizationDataItem.java
index b331248..56060ec 100644
--- a/java/com/android/contacts/common/model/dataitem/OrganizationDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/OrganizationDataItem.java
@@ -41,24 +41,4 @@
   public String getTitle() {
     return getContentValues().getAsString(Organization.TITLE);
   }
-
-  public String getDepartment() {
-    return getContentValues().getAsString(Organization.DEPARTMENT);
-  }
-
-  public String getJobDescription() {
-    return getContentValues().getAsString(Organization.JOB_DESCRIPTION);
-  }
-
-  public String getSymbol() {
-    return getContentValues().getAsString(Organization.SYMBOL);
-  }
-
-  public String getPhoneticName() {
-    return getContentValues().getAsString(Organization.PHONETIC_NAME);
-  }
-
-  public String getOfficeLocation() {
-    return getContentValues().getAsString(Organization.OFFICE_LOCATION);
-  }
 }
diff --git a/java/com/android/contacts/common/model/dataitem/PhoneDataItem.java b/java/com/android/contacts/common/model/dataitem/PhoneDataItem.java
index ed32124..e25328f 100644
--- a/java/com/android/contacts/common/model/dataitem/PhoneDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/PhoneDataItem.java
@@ -19,6 +19,7 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
+
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 
 /**
@@ -42,10 +43,6 @@
     return getContentValues().getAsString(Phone.NORMALIZED_NUMBER);
   }
 
-  public String getFormattedPhoneNumber() {
-    return getContentValues().getAsString(KEY_FORMATTED_PHONE_NUMBER);
-  }
-
   public String getLabel() {
     return getContentValues().getAsString(Phone.LABEL);
   }
@@ -59,18 +56,4 @@
       getContentValues().put(KEY_FORMATTED_PHONE_NUMBER, formattedPhoneNumber);
     }
   }
-
-  /**
-   * Returns the formatted phone number (if already computed using {@link
-   * #computeFormattedPhoneNumber}). Otherwise this method returns the unformatted phone number.
-   */
-  @Override
-  public String buildDataStringForDisplay(Context context, DataKind kind) {
-    final String formatted = getFormattedPhoneNumber();
-    if (formatted != null) {
-      return formatted;
-    } else {
-      return getNumber();
-    }
-  }
 }
diff --git a/java/com/android/contacts/common/model/dataitem/PhotoDataItem.java b/java/com/android/contacts/common/model/dataitem/PhotoDataItem.java
index 0bf7a31..8dab720 100644
--- a/java/com/android/contacts/common/model/dataitem/PhotoDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/PhotoDataItem.java
@@ -29,10 +29,6 @@
     super(values);
   }
 
-  public Long getPhotoFileId() {
-    return getContentValues().getAsLong(Photo.PHOTO_FILE_ID);
-  }
-
   public byte[] getPhoto() {
     return getContentValues().getAsByteArray(Photo.PHOTO);
   }
diff --git a/java/com/android/contacts/common/model/dataitem/RelationDataItem.java b/java/com/android/contacts/common/model/dataitem/RelationDataItem.java
index fdbcbb3..517b7a2 100644
--- a/java/com/android/contacts/common/model/dataitem/RelationDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/RelationDataItem.java
@@ -18,6 +18,7 @@
 
 import android.content.ContentValues;
 import android.content.Context;
+import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Relation;
 import android.text.TextUtils;
 
diff --git a/java/com/android/contacts/common/model/dataitem/SipAddressDataItem.java b/java/com/android/contacts/common/model/dataitem/SipAddressDataItem.java
index 0ca9eae..ceff42f 100644
--- a/java/com/android/contacts/common/model/dataitem/SipAddressDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/SipAddressDataItem.java
@@ -30,10 +30,6 @@
     super(values);
   }
 
-  public String getSipAddress() {
-    return getContentValues().getAsString(SipAddress.SIP_ADDRESS);
-  }
-
   public String getLabel() {
     return getContentValues().getAsString(SipAddress.LABEL);
   }
diff --git a/java/com/android/contacts/common/model/dataitem/StructuredNameDataItem.java b/java/com/android/contacts/common/model/dataitem/StructuredNameDataItem.java
index 22bf037..2b5b480 100644
--- a/java/com/android/contacts/common/model/dataitem/StructuredNameDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/StructuredNameDataItem.java
@@ -17,6 +17,7 @@
 package com.android.contacts.common.model.dataitem;
 
 import android.content.ContentValues;
+import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.StructuredName;
 import android.provider.ContactsContract.Contacts.Data;
 
@@ -43,14 +44,6 @@
     getContentValues().put(StructuredName.DISPLAY_NAME, name);
   }
 
-  public String getGivenName() {
-    return getContentValues().getAsString(StructuredName.GIVEN_NAME);
-  }
-
-  public String getFamilyName() {
-    return getContentValues().getAsString(StructuredName.FAMILY_NAME);
-  }
-
   public String getPrefix() {
     return getContentValues().getAsString(StructuredName.PREFIX);
   }
@@ -63,34 +56,6 @@
     return getContentValues().getAsString(StructuredName.SUFFIX);
   }
 
-  public String getPhoneticGivenName() {
-    return getContentValues().getAsString(StructuredName.PHONETIC_GIVEN_NAME);
-  }
-
-  public void setPhoneticGivenName(String name) {
-    getContentValues().put(StructuredName.PHONETIC_GIVEN_NAME, name);
-  }
-
-  public String getPhoneticMiddleName() {
-    return getContentValues().getAsString(StructuredName.PHONETIC_MIDDLE_NAME);
-  }
-
-  public void setPhoneticMiddleName(String name) {
-    getContentValues().put(StructuredName.PHONETIC_MIDDLE_NAME, name);
-  }
-
-  public String getPhoneticFamilyName() {
-    return getContentValues().getAsString(StructuredName.PHONETIC_FAMILY_NAME);
-  }
-
-  public void setPhoneticFamilyName(String name) {
-    getContentValues().put(StructuredName.PHONETIC_FAMILY_NAME, name);
-  }
-
-  public String getFullNameStyle() {
-    return getContentValues().getAsString(StructuredName.FULL_NAME_STYLE);
-  }
-
   public boolean isSuperPrimary() {
     final ContentValues contentValues = getContentValues();
     return contentValues == null || !contentValues.containsKey(StructuredName.IS_SUPER_PRIMARY)
diff --git a/java/com/android/contacts/common/model/dataitem/StructuredPostalDataItem.java b/java/com/android/contacts/common/model/dataitem/StructuredPostalDataItem.java
index 18aae28..d03d747 100644
--- a/java/com/android/contacts/common/model/dataitem/StructuredPostalDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/StructuredPostalDataItem.java
@@ -42,26 +42,10 @@
     return getContentValues().getAsString(StructuredPostal.STREET);
   }
 
-  public String getPOBox() {
-    return getContentValues().getAsString(StructuredPostal.POBOX);
-  }
-
-  public String getNeighborhood() {
-    return getContentValues().getAsString(StructuredPostal.NEIGHBORHOOD);
-  }
-
   public String getCity() {
     return getContentValues().getAsString(StructuredPostal.CITY);
   }
 
-  public String getRegion() {
-    return getContentValues().getAsString(StructuredPostal.REGION);
-  }
-
-  public String getPostcode() {
-    return getContentValues().getAsString(StructuredPostal.POSTCODE);
-  }
-
   public String getCountry() {
     return getContentValues().getAsString(StructuredPostal.COUNTRY);
   }
diff --git a/java/com/android/contacts/common/model/dataitem/WebsiteDataItem.java b/java/com/android/contacts/common/model/dataitem/WebsiteDataItem.java
index b8400ec..53b1039 100644
--- a/java/com/android/contacts/common/model/dataitem/WebsiteDataItem.java
+++ b/java/com/android/contacts/common/model/dataitem/WebsiteDataItem.java
@@ -17,6 +17,7 @@
 package com.android.contacts.common.model.dataitem;
 
 import android.content.ContentValues;
+import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Website;
 
 /**
diff --git a/java/com/android/contacts/common/res/values-af/strings.xml b/java/com/android/contacts/common/res/values-af/strings.xml
index a0fa006..faf4c84 100644
--- a/java/com/android/contacts/common/res/values-af/strings.xml
+++ b/java/com/android/contacts/common/res/values-af/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Vee gereeld-gekontaktes uit?</string>
   <string name="clearFrequentsConfirmation">Jy gaan die gereeld gekontak-lys in die Kontakte- en Foon-program uitvee en e-posprogramme dwing om jou adresvoorkeure van nuuts af te leer.</string>
   <string name="clearFrequentsProgress_title">Vee tans gereeld-gekontaktes uit...</string>
-  <string name="status_available">Beskikbaar</string>
-  <string name="status_away">Weg</string>
-  <string name="status_busy">Besig</string>
-  <string name="contactsList">Kontakte</string>
-  <string name="contact_suggestions">Topvoorgestel</string>
-  <string name="local_invisible_directory">Ander</string>
   <string name="directory_search_label">Gids</string>
   <string name="directory_search_label_work">Werkgids</string>
-  <string name="local_search_label">Alle kontakte</string>
-  <string name="local_suggestions_search_label">Voorstelle</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ek</string>
   <string name="missing_name">(Geen naam nie)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Bekyk kontak</string>
-  <string name="list_filter_phones">Alle kontakte met foonnommers</string>
-  <string name="list_filter_phones_work">Werkprofielkontakte</string>
   <string name="view_updates_from_group">Bekyk opdaterings</string>
   <string name="account_phone">Slegs toestel, ongesinkroniseerd</string>
   <string name="nameLabelsGroup">Naam</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Klets met ICQ</string>
   <string name="chat_jabber">Klets met Jabber</string>
   <string name="chat">Klets</string>
-  <string name="list_filter_all_accounts">Alle kontakte</string>
-  <string name="listAllContactsInAccount">Kontakte in %s</string>
-  <string name="listCustomView">Kontakte in gepasmaakte aansig</string>
-  <string name="listSingleContact">Enkel kontak</string>
   <string name="display_options_sort_list_by">Sorteer volgens</string>
   <string name="display_options_sort_by_given_name">Voornaam</string>
   <string name="display_options_sort_by_family_name">Van</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Vee soektog uit</string>
   <string name="select_account_dialog_title">Rekening</string>
   <string name="set_default_account">Gebruik dit altyd vir oproepe</string>
-  <string name="select_phone_account_for_calls">Kies SIM vir hierdie oproep</string>
-  <string name="select_phone_account_for_calls_remember">Onthou hierdie keuse</string>
   <string name="call_with_a_note">Oproep met \'n nota</string>
   <string name="call_subject_hint">Tik \'n nota om saam met oproep te stuur …</string>
   <string name="send_and_call_button">STUUR EN BEL</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s-oortjie %2$d ongelese items. </item>
   </plurals>
   <string name="description_search_video_call">Video-oproep</string>
-  <string name="description_search_call_and_share">Deel en bel</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-am/strings.xml b/java/com/android/contacts/common/res/values-am/strings.xml
index aa7b19c..c637b46 100644
--- a/java/com/android/contacts/common/res/values-am/strings.xml
+++ b/java/com/android/contacts/common/res/values-am/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">በተደጋጋሚ የተገኙ ይጽዱ?</string>
   <string name="clearFrequentsConfirmation">በእውቂያዎች እና በስልክ መተግበሪያዎች ውስጥ በተደጋጋሚ ያገኟቸውን ዝርዝር አጽድተው የኢሜይል መተግበሪያዎች ምርጫዎችዎን ከባዶ ተነስተው እንዲያውቁ ያስገድዱዋቸዋል።</string>
   <string name="clearFrequentsProgress_title">በተደጋጋሚ የተገኙትን በማጽዳት ላይ…</string>
-  <string name="status_available">የሚገኝ</string>
-  <string name="status_away">ወጣ ብሏል</string>
-  <string name="status_busy">ተይዟል</string>
-  <string name="contactsList">እውቅያዎች   </string>
-  <string name="contact_suggestions">በብዛት የተጠቆሙ</string>
-  <string name="local_invisible_directory">ሌላ  </string>
   <string name="directory_search_label">ማውጫ</string>
   <string name="directory_search_label_work">የሥራ ስልክ ማውጫ</string>
-  <string name="local_search_label">ሁሉም እውቅያዎች </string>
-  <string name="local_suggestions_search_label">ጥቆማዎች</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">እኔ</string>
   <string name="missing_name">(ስም የለም)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">ዕውቂያ ተመልከት</string>
-  <string name="list_filter_phones">የስልክ ቁጥር ያላቸው ሁሉም ዕውቂያዎች</string>
-  <string name="list_filter_phones_work">የሥራ መገለጫ ዕውቂያዎች</string>
   <string name="view_updates_from_group">ዝማኔዎችን ይመልከቱ</string>
   <string name="account_phone">መሳሪያ-ብቻ፣ አልሰመረም</string>
   <string name="nameLabelsGroup">ስም</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQን በመጠቀም ይወያዩ</string>
   <string name="chat_jabber">Jabberን በመጠቀም 271448</string>
   <string name="chat">ውይይት</string>
-  <string name="list_filter_all_accounts">ሁሉም ዕውቂያዎች</string>
-  <string name="listAllContactsInAccount">በ%s ውስጥ ያሉ ዕውቂያዎች</string>
-  <string name="listCustomView">እውቂያዎች በብጁ እይታ</string>
-  <string name="listSingleContact">ነጠላ እውቂያ</string>
   <string name="display_options_sort_list_by">ደርድር በ</string>
   <string name="display_options_sort_by_given_name">የመጀመሪያ ስም</string>
   <string name="display_options_sort_by_family_name">የመጨረሻ ስም</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">ፍለጋን አጽዳ</string>
   <string name="select_account_dialog_title">መለያ</string>
   <string name="set_default_account">ለጥሪዎች ሁልጊዜ ይህንን ተጠቀም</string>
-  <string name="select_phone_account_for_calls">ለዚህ ጥሪ ሲም ይምረጡ</string>
-  <string name="select_phone_account_for_calls_remember">ይህን ምርጫ አስታውስ</string>
   <string name="call_with_a_note">ከማስታወሻ ጋር ደውል</string>
   <string name="call_subject_hint">ከጥሪ ጋር ለመላክ የማስታወሻ ጽሑፍ ይተይቡ ...</string>
   <string name="send_and_call_button">ላክ እና ደውል</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> የ%1$s ትር። %2$d ያልተነበቡ ንጥሎች። </item>
   </plurals>
   <string name="description_search_video_call">የቪዲዮ ጥሪ</string>
-  <string name="description_search_call_and_share">ያጋሩ እና ይደውሉ</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ar/strings.xml b/java/com/android/contacts/common/res/values-ar/strings.xml
index 957a3e7..0dde886 100644
--- a/java/com/android/contacts/common/res/values-ar/strings.xml
+++ b/java/com/android/contacts/common/res/values-ar/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">محو قائمة من يتم الاتصال بهم كثيرًا؟</string>
   <string name="clearFrequentsConfirmation">ستمحو قائمة من يتم الاتصال بهم كثيرًا في تطبيقي جهات الاتصال والهاتف، وستفرض على تطبيقات البريد الإلكتروني التعرف على تفضيلات توجيه الرسائل من البداية.</string>
   <string name="clearFrequentsProgress_title">جارٍ محو قائمة المُتصل بهم كثيرًا…</string>
-  <string name="status_available">متاح</string>
-  <string name="status_away">بالخارج</string>
-  <string name="status_busy">مشغول</string>
-  <string name="contactsList">جهات الاتصال</string>
-  <string name="contact_suggestions">أهم المقترحات</string>
-  <string name="local_invisible_directory">غير ذلك</string>
   <string name="directory_search_label">الدليل</string>
   <string name="directory_search_label_work">دليل العمل</string>
-  <string name="local_search_label">جميع جهات الاتصال</string>
-  <string name="local_suggestions_search_label">الاقتراحات</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">أنا</string>
   <string name="missing_name">(بلا اسم)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">عرض جهة الاتصال</string>
-  <string name="list_filter_phones">جميع جهات الاتصال التي لها أرقام هواتف</string>
-  <string name="list_filter_phones_work">جهات الاتصال للملف الشخصي للعمل</string>
   <string name="view_updates_from_group">عرض التحديثات</string>
   <string name="account_phone">الجهاز فقط، غير متزامنة</string>
   <string name="nameLabelsGroup">الاسم</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">‏المحادثة باستخدام ICQ</string>
   <string name="chat_jabber">‏المحادثة باستخدام Jabber</string>
   <string name="chat">محادثة</string>
-  <string name="list_filter_all_accounts">كل جهات الاتصال</string>
-  <string name="listAllContactsInAccount">جهات الاتصال في %s</string>
-  <string name="listCustomView">جهات الاتصال في عرض مخصص</string>
-  <string name="listSingleContact">جهة اتصال واحدة</string>
   <string name="display_options_sort_list_by">الترتيب بحسب</string>
   <string name="display_options_sort_by_given_name">الاسم الأول</string>
   <string name="display_options_sort_by_family_name">اسم العائلة</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">محو البحث</string>
   <string name="select_account_dialog_title">الحساب</string>
   <string name="set_default_account">استخدام هذا للمكالمات دائمًا</string>
-  <string name="select_phone_account_for_calls">‏اختيار شريحة SIM لهذه المكالمة</string>
-  <string name="select_phone_account_for_calls_remember">تذكر هذا الاختيار</string>
   <string name="call_with_a_note">مكالمة مع ملاحظة</string>
   <string name="call_subject_hint">اكتب ملاحظة لإرسالها مع المكالمة ...</string>
   <string name="send_and_call_button">إرسال واتصال</string>
@@ -145,5 +127,4 @@
     <item quantity="other"> %1$s علامة تبويب. %2$d عناصر غير مقروءة. </item>
   </plurals>
   <string name="description_search_video_call">مكالمة فيديو</string>
-  <string name="description_search_call_and_share">المشاركة والاتصال</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-az/strings.xml b/java/com/android/contacts/common/res/values-az/strings.xml
index 762e9d3..46df324 100644
--- a/java/com/android/contacts/common/res/values-az/strings.xml
+++ b/java/com/android/contacts/common/res/values-az/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Tez-tez ünsiyyət qurulanlar silinsin?</string>
   <string name="clearFrequentsConfirmation">Əlaqələr və Telefon proqramlarında tez-tez əlaqə saxlanılanların siyahısını siləcəksiniz və fraqmentdən ünvanlama seçimlərinizi öyrənmək üçün e-poçt proqramlarını məcbur edəcəksiniz.</string>
   <string name="clearFrequentsProgress_title">Tez-tez ünsiyyət qurulanlar silinir...</string>
-  <string name="status_available">Əlçatımlı</string>
-  <string name="status_away">Kənar</string>
-  <string name="status_busy">Məşğul</string>
-  <string name="contactsList">Kontaktlar</string>
-  <string name="contact_suggestions">Ən yaxşı Təkliflər</string>
-  <string name="local_invisible_directory">Digər</string>
   <string name="directory_search_label">Kataloq</string>
   <string name="directory_search_label_work">İş kataloqu</string>
-  <string name="local_search_label">Bütün kontaktlar</string>
-  <string name="local_suggestions_search_label">Təkliflər</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Mən</string>
   <string name="missing_name">(ad yoxdur)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Kontakta baxın</string>
-  <string name="list_filter_phones">Telefon nömrələri olan bütün kontaktlar</string>
-  <string name="list_filter_phones_work">İş profili kontaktları</string>
   <string name="view_updates_from_group">Güncəlləşmələri göstər</string>
   <string name="account_phone">Yalnız cihaz, sinxronizasiya edilmir</string>
   <string name="nameLabelsGroup">Ad</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ üzərindən çat</string>
   <string name="chat_jabber">Jabber üzərindən çat</string>
   <string name="chat">Çat</string>
-  <string name="list_filter_all_accounts">Bütün kontaktlar</string>
-  <string name="listAllContactsInAccount">%s adındakı kontaktlar</string>
-  <string name="listCustomView">Fərdi baxışdan kontakt</string>
-  <string name="listSingleContact">Tək kontakt</string>
   <string name="display_options_sort_list_by">Bunlardan biri üzrə sırala</string>
   <string name="display_options_sort_by_given_name">Ad</string>
   <string name="display_options_sort_by_family_name">Soyad</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Axtarışı təmizləyin</string>
   <string name="select_account_dialog_title">Hesab</string>
   <string name="set_default_account">Həmişə bu zənglər üçün istifadə edin</string>
-  <string name="select_phone_account_for_calls">Bu zəng üçün SIM seçin</string>
-  <string name="select_phone_account_for_calls_remember">Bu seçimi yadda saxlayın</string>
   <string name="call_with_a_note">Qeyd ilə zəng edin</string>
   <string name="call_subject_hint">Zəng ilə göndərmək üçün qeyd yazın...</string>
   <string name="send_and_call_button">GÖNDƏRİN VƏ ZƏNG EDİN</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s tabel. %2$d oxunmamış element. </item>
   </plurals>
   <string name="description_search_video_call">Video zəng</string>
-  <string name="description_search_call_and_share">Paylaşın və zəng edin</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml b/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml
index b809e6e..8526f21 100644
--- a/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/contacts/common/res/values-b+sr+Latn/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Brišete često kontaktirane?</string>
   <string name="clearFrequentsConfirmation">Obrisaćete listu često kontaktiranih u aplikacijama Kontakti i Telefon, pa će imejl aplikacije morati ponovo da prikupe informacije o adresiranju.</string>
   <string name="clearFrequentsProgress_title">Brisanje često kontaktiranih...</string>
-  <string name="status_available">Dostupan/na</string>
-  <string name="status_away">Odsutan/na</string>
-  <string name="status_busy">Zauzet/a</string>
-  <string name="contactsList">Kontakti</string>
-  <string name="contact_suggestions">Najpopularniji predlozi</string>
-  <string name="local_invisible_directory">Drugo</string>
   <string name="directory_search_label">Direktorijum</string>
   <string name="directory_search_label_work">Direktorijum za Work</string>
-  <string name="local_search_label">Svi kontakti</string>
-  <string name="local_suggestions_search_label">Predlozi</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ja</string>
   <string name="missing_name">(Nema imena)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Prikaži kontakt</string>
-  <string name="list_filter_phones">Svi kontakti sa brojevima telefona</string>
-  <string name="list_filter_phones_work">Kontakti sa profila za Work</string>
   <string name="view_updates_from_group">Prikaži ažuriranja</string>
   <string name="account_phone">Samo na uređaju, ne sinhronizuje se</string>
   <string name="nameLabelsGroup">Ime</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Započni ćaskanje preko ICQ-a</string>
   <string name="chat_jabber">Započni ćaskanje preko Jabber-a</string>
   <string name="chat">Ćaskanje</string>
-  <string name="list_filter_all_accounts">Svi kontakti</string>
-  <string name="listAllContactsInAccount">Kontakti u grupi %s</string>
-  <string name="listCustomView">Kontakti u prilagođenom prikazu</string>
-  <string name="listSingleContact">Pojedinačni kontakt</string>
   <string name="display_options_sort_list_by">Sortiraj prema</string>
   <string name="display_options_sort_by_given_name">Imenu</string>
   <string name="display_options_sort_by_family_name">Prezimenu</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Brisanje pretrage</string>
   <string name="select_account_dialog_title">Nalog</string>
   <string name="set_default_account">Uvek koristi ovo za pozive</string>
-  <string name="select_phone_account_for_calls">Izaberite SIM za ovaj poziv</string>
-  <string name="select_phone_account_for_calls_remember">Zapamti ovaj izbor</string>
   <string name="call_with_a_note">Poziv sa beleškom</string>
   <string name="call_subject_hint">Unesite belešku koju ćete poslati uz poziv...</string>
   <string name="send_and_call_button">POŠALJI I POZOVI</string>
@@ -142,5 +124,4 @@
     <item quantity="other"> Kartica %1$s. %2$d nepročitanih stavki. </item>
   </plurals>
   <string name="description_search_video_call">Video poziv</string>
-  <string name="description_search_call_and_share">Deli i pozovi</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-be/strings.xml b/java/com/android/contacts/common/res/values-be/strings.xml
index 3e6c8f2..e819a11 100644
--- a/java/com/android/contacts/common/res/values-be/strings.xml
+++ b/java/com/android/contacts/common/res/values-be/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Выдалiць частыя кантакты?</string>
   <string name="clearFrequentsConfirmation">Вы выдалiце найчасцей ужываныя кантакты ў праграмах Кантакты i Тэлефон i прымусiце праграмы па працы з электроннай поштай вывучыць вашы налады адрасацыi з нуля.</string>
   <string name="clearFrequentsProgress_title">Выдаленне частых кантактаў...</string>
-  <string name="status_available">Даступны</string>
-  <string name="status_away">Адсутнічае</string>
-  <string name="status_busy">Заняты</string>
-  <string name="contactsList">Кантакты</string>
-  <string name="contact_suggestions">Лепшыя прапановы</string>
-  <string name="local_invisible_directory">Іншае</string>
   <string name="directory_search_label">Дырэкторыя</string>
   <string name="directory_search_label_work">Працоўны каталог</string>
-  <string name="local_search_label">Усе кантакты</string>
-  <string name="local_suggestions_search_label">Прапановы</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Я</string>
   <string name="missing_name">(Без назвы)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Прагледзець кантакт</string>
-  <string name="list_filter_phones">Усе кантакты з нумарамі тэлефонаў</string>
-  <string name="list_filter_phones_work">Кантакты працоўнага профілю</string>
   <string name="view_updates_from_group">Прагляд абнаўленняў</string>
   <string name="account_phone">Толькі прылада, несінхранізаваная</string>
   <string name="nameLabelsGroup">Імя</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Чат праз ICQ</string>
   <string name="chat_jabber">Чат у Jabber</string>
   <string name="chat">Гутарка</string>
-  <string name="list_filter_all_accounts">Усе кантакты</string>
-  <string name="listAllContactsInAccount">Кантакты карыстальнiка %s</string>
-  <string name="listCustomView">Кантакты ў карыстальнiцкiм выглядзе</string>
-  <string name="listSingleContact">Адзіночны кантакт</string>
   <string name="display_options_sort_list_by">Сартаваць па</string>
   <string name="display_options_sort_by_given_name">Імені</string>
   <string name="display_options_sort_by_family_name">Прозвішчы</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Ачысціць пошук</string>
   <string name="select_account_dialog_title">Уліковы запіс</string>
   <string name="set_default_account">Заўсёды выкарыст. гэта для выклікаў</string>
-  <string name="select_phone_account_for_calls">Выбраць SIM-карту для выкліку</string>
-  <string name="select_phone_account_for_calls_remember">Запомніць гэты выбар</string>
   <string name="call_with_a_note">Выклік з нататкай</string>
   <string name="call_subject_hint">Увесці нататку для адпраўкі з выклікам…</string>
   <string name="send_and_call_button">АДПРАВІЦЬ І ВЫКЛІКАЦЬ</string>
@@ -143,5 +125,4 @@
     <item quantity="other">Укладка %1$s. %2$d непрачытанага элемента. </item>
   </plurals>
   <string name="description_search_video_call">Відэавыклік</string>
-  <string name="description_search_call_and_share">Абагуліць і выклікаць</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-bg/strings.xml b/java/com/android/contacts/common/res/values-bg/strings.xml
index ac3f79b..04d68db 100644
--- a/java/com/android/contacts/common/res/values-bg/strings.xml
+++ b/java/com/android/contacts/common/res/values-bg/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Да се изчистят ли често търсените?</string>
   <string name="clearFrequentsConfirmation">Ще изчистите списъка с често търсените в приложенията Контакти и Телефон и ще принудите приложенията за имейл да научат предпочитанията ви за адресите, започвайки отначало.</string>
   <string name="clearFrequentsProgress_title">Често търсените се изчистват…</string>
-  <string name="status_available">Налице</string>
-  <string name="status_away">Отсъства</string>
-  <string name="status_busy">Зает/а</string>
-  <string name="contactsList">Контакти</string>
-  <string name="contact_suggestions">Водещи предложения</string>
-  <string name="local_invisible_directory">Други</string>
   <string name="directory_search_label">Директория</string>
   <string name="directory_search_label_work">Служебен указател</string>
-  <string name="local_search_label">Всички контакти</string>
-  <string name="local_suggestions_search_label">Предложения</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Аз</string>
   <string name="missing_name">(Няма име)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Преглед на контакта</string>
-  <string name="list_filter_phones">Всички контакти с телефонни номера</string>
-  <string name="list_filter_phones_work">Контакти в служебния потребителски профил</string>
   <string name="view_updates_from_group">Преглед на актуализациите</string>
   <string name="account_phone">Само на устройството, несинхронизиран</string>
   <string name="nameLabelsGroup">Име</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Чат по ICQ</string>
   <string name="chat_jabber">Чат по Jabber</string>
   <string name="chat">Чат</string>
-  <string name="list_filter_all_accounts">Всички контакти</string>
-  <string name="listAllContactsInAccount">Контакти във: %s</string>
-  <string name="listCustomView">Контакти в персонал. изглед</string>
-  <string name="listSingleContact">Един контакт</string>
   <string name="display_options_sort_list_by">Сортиране по</string>
   <string name="display_options_sort_by_given_name">Собствено име</string>
   <string name="display_options_sort_by_family_name">Фамилно име</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Изчистване на търсенето</string>
   <string name="select_account_dialog_title">Профил</string>
   <string name="set_default_account">Винаги да се използва за обаждания</string>
-  <string name="select_phone_account_for_calls">Изберете SIM карта за това обаждане</string>
-  <string name="select_phone_account_for_calls_remember">Запомняне на този избор</string>
   <string name="call_with_a_note">Обаждане, включващо бележка</string>
   <string name="call_subject_hint">Напишете придружаваща бележка, която ще се изпрати при извършване на обаждането...</string>
   <string name="send_and_call_button">ИЗПРАЩАНЕ И ОБАЖДАНЕ</string>
@@ -141,5 +123,4 @@
     <item quantity="other">Раздел „%1$s“. %2$d непрочетени елемента. </item>
   </plurals>
   <string name="description_search_video_call">Видеообаждане</string>
-  <string name="description_search_call_and_share">Споделяне и обаждане</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-bn/strings.xml b/java/com/android/contacts/common/res/values-bn/strings.xml
index c6670a1..a8e86b0 100644
--- a/java/com/android/contacts/common/res/values-bn/strings.xml
+++ b/java/com/android/contacts/common/res/values-bn/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">ঘন ঘন যোগাযোগ করা হয়েছে এমন পরিচিতিগুলিকে সাফ করবেন?</string>
   <string name="clearFrequentsConfirmation">পরিচিতি এবং ফোন অ্যাপ্লিকেশানগুলি থেকে আপনি ঘন ঘন যোগাযোগ করা পরিচিতির তালিকা সাফ করবেন, এবং ইমেল অ্যাপ্লিকেশানগুলিকে আবার শুরু থেকে আপনার ঠিকানা অভিরুচি জানতে বাধ্য করবেন৷</string>
   <string name="clearFrequentsProgress_title">ঘন ঘন যোগাযোগ করা পরিচিতিগুলিকে সাফ করা হচ্ছে…</string>
-  <string name="status_available">উপলব্ধ</string>
-  <string name="status_away">অন্যত্র</string>
-  <string name="status_busy">ব্যস্ত</string>
-  <string name="contactsList">পরিচিতিগুলি</string>
-  <string name="contact_suggestions">শীর্ষস্থানীয় প্রস্তাবনা</string>
-  <string name="local_invisible_directory">অন্যান্য</string>
   <string name="directory_search_label">ডিরেক্টরি</string>
   <string name="directory_search_label_work">কাজের সংগ্রহ</string>
-  <string name="local_search_label">সকল পরিচিতি</string>
-  <string name="local_suggestions_search_label">প্রস্তাবনাগুলি</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">আমি</string>
   <string name="missing_name">(কোনও নাম নেই)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">পরিচিতি দেখুন</string>
-  <string name="list_filter_phones">ফোন নম্বর সহ সমস্ত পরিচিতি</string>
-  <string name="list_filter_phones_work">কর্মস্থলের প্রোফাইলের পরিচিতিগুলি</string>
   <string name="view_updates_from_group">আপডেটগুলি দেখুন</string>
   <string name="account_phone">শুধুমাত্র ডিভাইসে রয়েছে, সিঙ্ক করা হয়নি</string>
   <string name="nameLabelsGroup">নাম</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ ব্যবহার করে চ্যাট করুন</string>
   <string name="chat_jabber">Jabber ব্যবহার করে চ্যাট করুন</string>
   <string name="chat">চ্যাট করুন</string>
-  <string name="list_filter_all_accounts">সকল পরিচিতি</string>
-  <string name="listAllContactsInAccount">%s এ পরিচিতিগুলি</string>
-  <string name="listCustomView">কাস্টম দৃশ্যে পরিচিতিগুলি</string>
-  <string name="listSingleContact">একক পরিচিতি</string>
   <string name="display_options_sort_list_by">এই অনুসারে বাছুন</string>
   <string name="display_options_sort_by_given_name">প্রথম নাম</string>
   <string name="display_options_sort_by_family_name">পদবি</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">সার্চ সাফ করুন</string>
   <string name="select_account_dialog_title">অ্যাকাউন্ট</string>
   <string name="set_default_account">কলের জন্য সবসময় এটি ব্যবহার করুন</string>
-  <string name="select_phone_account_for_calls">এই কলের জন্য সিম বেছে নিন</string>
-  <string name="select_phone_account_for_calls_remember">এই পছন্দটি মনে রাখব</string>
   <string name="call_with_a_note">একটি নোট সহ কল করুন</string>
   <string name="call_subject_hint">কলের সাথে পাঠানোর জন্য একটি নোট লিখুন ...</string>
   <string name="send_and_call_button">পাঠান এবং কল করুন</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ট্যাব৷ %2$dটি অপঠিত আইটেম৷ </item>
   </plurals>
   <string name="description_search_video_call">ভিডিও কল</string>
-  <string name="description_search_call_and_share">শেয়ার এবং কল করুন</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-bs/strings.xml b/java/com/android/contacts/common/res/values-bs/strings.xml
index 6ef6bdd..fea9501 100644
--- a/java/com/android/contacts/common/res/values-bs/strings.xml
+++ b/java/com/android/contacts/common/res/values-bs/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Obrisati često kontaktirane osobe?</string>
   <string name="clearFrequentsConfirmation">Obrisat ćete listu često kontaktiranih osoba u aplikaciji Kontakti i Aplikaciji za telefon, pa će aplikacije za e-poštu morati ispočetka učiti vaše postavke adresa.</string>
   <string name="clearFrequentsProgress_title">Brisanje često kontaktiranih osoba…</string>
-  <string name="status_available">Dostupno</string>
-  <string name="status_away">Odsutan</string>
-  <string name="status_busy">Zauzeto</string>
-  <string name="contactsList">Kontakti</string>
-  <string name="contact_suggestions">Najbolji prijedlozi</string>
-  <string name="local_invisible_directory">Ostalo</string>
   <string name="directory_search_label">Imenik</string>
   <string name="directory_search_label_work">Poslovni imenik</string>
-  <string name="local_search_label">Svi kontakti</string>
-  <string name="local_suggestions_search_label">Prijedlozi</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ja</string>
   <string name="missing_name">(Bez imena)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Prikaži kontakt</string>
-  <string name="list_filter_phones">Svi kontakti s brojevima telefona</string>
-  <string name="list_filter_phones_work">Kontakti radnog profila</string>
   <string name="view_updates_from_group">Prikaži ažuriranja</string>
   <string name="account_phone">Samo uređaj, nesinhroniziran</string>
   <string name="nameLabelsGroup">Ime</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chat putem aplikacije ICQ</string>
   <string name="chat_jabber">Chat putem aplikacije Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Svi kontakti</string>
-  <string name="listAllContactsInAccount">Kontakti na računu %s</string>
-  <string name="listCustomView">Kontakti u prilagođenom prikazu</string>
-  <string name="listSingleContact">Jedan kontakt</string>
   <string name="display_options_sort_list_by">Poredaj po</string>
   <string name="display_options_sort_by_given_name">Ime</string>
   <string name="display_options_sort_by_family_name">Prezime</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Obriši pretragu</string>
   <string name="select_account_dialog_title">Račun</string>
   <string name="set_default_account">Uvijek koristi ovu karticu za pozive</string>
-  <string name="select_phone_account_for_calls">Odaberite SIM za ovaj poziv</string>
-  <string name="select_phone_account_for_calls_remember">Zapamti ovaj odabir</string>
   <string name="call_with_a_note">Poziv s bilješkom</string>
   <string name="call_subject_hint">Upišite bilješku koja će se poslati uz poziv ...</string>
   <string name="send_and_call_button">POŠALJI I POZOVI</string>
@@ -142,5 +124,4 @@
     <item quantity="other"> Kartica %1$s. %2$d nepročitanih stavki. </item>
   </plurals>
   <string name="description_search_video_call">Video poziv</string>
-  <string name="description_search_call_and_share">Dijeli i pozovi</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ca/strings.xml b/java/com/android/contacts/common/res/values-ca/strings.xml
index 77bbaa8..835d130 100644
--- a/java/com/android/contacts/common/res/values-ca/strings.xml
+++ b/java/com/android/contacts/common/res/values-ca/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Vols esborrar els contactes freqüents?</string>
   <string name="clearFrequentsConfirmation">S\'esborrarà la llista de contactes més freqüents a les aplicacions Contactes i Telèfon i es forçarà les aplicacions de correu electrònic a obtenir informació nova sobre les teves preferències pel que fa a adreces.</string>
   <string name="clearFrequentsProgress_title">S\'estan esborrant contactes freq...</string>
-  <string name="status_available">Disponible</string>
-  <string name="status_away">Absent</string>
-  <string name="status_busy">Ocupat</string>
-  <string name="contactsList">Contactes</string>
-  <string name="contact_suggestions">Suggeriments principals</string>
-  <string name="local_invisible_directory">Altres</string>
   <string name="directory_search_label">Directori</string>
   <string name="directory_search_label_work">Directori de la feina</string>
-  <string name="local_search_label">Tots els contactes</string>
-  <string name="local_suggestions_search_label">Suggeriments</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Jo</string>
   <string name="missing_name">(Sense nom)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Visualitza el contacte</string>
-  <string name="list_filter_phones">Tots els contactes que tenen números de telèfon</string>
-  <string name="list_filter_phones_work">Contactes del perfil professional</string>
   <string name="view_updates_from_group">Mostra les actualitzacions</string>
   <string name="account_phone">Només al dispositiu, no se sincronitza</string>
   <string name="nameLabelsGroup">Nom</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Xateja amb ICQ</string>
   <string name="chat_jabber">Xateja amb Jabber</string>
   <string name="chat">Xat</string>
-  <string name="list_filter_all_accounts">Tots els contactes</string>
-  <string name="listAllContactsInAccount">Contactes a %s</string>
-  <string name="listCustomView">Contactes en visualització personalitzada</string>
-  <string name="listSingleContact">Un sol contacte</string>
   <string name="display_options_sort_list_by">Ordena per</string>
   <string name="display_options_sort_by_given_name">Nom</string>
   <string name="display_options_sort_by_family_name">Cognoms</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Esborra la cerca</string>
   <string name="select_account_dialog_title">Compte</string>
   <string name="set_default_account">Utilitza sempre per a les trucades</string>
-  <string name="select_phone_account_for_calls">Tria la SIM per a aquesta trucada</string>
-  <string name="select_phone_account_for_calls_remember">Recorda aquesta selecció</string>
   <string name="call_with_a_note">Trucada amb una nota</string>
   <string name="call_subject_hint">Escriu una nota per enviar-la juntament amb la trucada...</string>
   <string name="send_and_call_button">ENVIA I TRUCA</string>
@@ -141,5 +123,4 @@
     <item quantity="other">Pestanya %1$s: %2$d elements no llegits </item>
   </plurals>
   <string name="description_search_video_call">Videotrucada</string>
-  <string name="description_search_call_and_share">Comparteix i truca</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-cs/strings.xml b/java/com/android/contacts/common/res/values-cs/strings.xml
index f8492e8..f0a6db9 100644
--- a/java/com/android/contacts/common/res/values-cs/strings.xml
+++ b/java/com/android/contacts/common/res/values-cs/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Vymazat často kontaktované osoby?</string>
   <string name="clearFrequentsConfirmation">Vymažete seznam často kontaktovaných osob v aplikacích Kontakty a Telefon a e-mailové aplikace budou muset nastavení adresátů vytvořit znovu.</string>
   <string name="clearFrequentsProgress_title">Mazání často kontaktovaných osob...</string>
-  <string name="status_available">K dispozici</string>
-  <string name="status_away">Pryč</string>
-  <string name="status_busy">Nemám čas</string>
-  <string name="contactsList">Kontakty</string>
-  <string name="contact_suggestions">Hlavní návrhy</string>
-  <string name="local_invisible_directory">Ostatní</string>
   <string name="directory_search_label">Adresář</string>
   <string name="directory_search_label_work">Pracovní adresář</string>
-  <string name="local_search_label">Všechny kontakty</string>
-  <string name="local_suggestions_search_label">Návrhy</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Já</string>
   <string name="missing_name">(Žádné jméno)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Zobrazit kontakt</string>
-  <string name="list_filter_phones">Kontakty s telefonními čísly</string>
-  <string name="list_filter_phones_work">Kontakty z pracovního profilu</string>
   <string name="view_updates_from_group">Zobrazit aktualizace</string>
   <string name="account_phone">Pouze na zařízení, nesynchronizováno</string>
   <string name="nameLabelsGroup">Jméno</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chatovat pomocí ICQ</string>
   <string name="chat_jabber">Chatovat pomocí Jabberu</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Všechny kontakty</string>
-  <string name="listAllContactsInAccount">Kontakty v účtu %s</string>
-  <string name="listCustomView">Kontakty ve vlastním zobrazení</string>
-  <string name="listSingleContact">Jeden kontakt</string>
   <string name="display_options_sort_list_by">Seřadit podle</string>
   <string name="display_options_sort_by_given_name">Jméno</string>
   <string name="display_options_sort_by_family_name">Příjmení</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Vymazat vyhledávání</string>
   <string name="select_account_dialog_title">Účet</string>
   <string name="set_default_account">Vždy používat pro hovory</string>
-  <string name="select_phone_account_for_calls">Vyberte SIM kartu na tento hovor</string>
-  <string name="select_phone_account_for_calls_remember">Zapamatovat tuto volbu</string>
   <string name="call_with_a_note">Volání s poznámkou</string>
   <string name="call_subject_hint">Zadejte poznámku, která se odešle pomocí volání…</string>
   <string name="send_and_call_button">ODESLAT A ZAVOLAT</string>
@@ -143,5 +125,4 @@
     <item quantity="other"> Karta %1$s. %2$d nepřečtených položek. </item>
   </plurals>
   <string name="description_search_video_call">Videohovor</string>
-  <string name="description_search_call_and_share">Sdílet a zavolat</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-da/strings.xml b/java/com/android/contacts/common/res/values-da/strings.xml
index 66ed252..1327ef4 100644
--- a/java/com/android/contacts/common/res/values-da/strings.xml
+++ b/java/com/android/contacts/common/res/values-da/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Vil du rydde de ofte kontaktede?</string>
   <string name="clearFrequentsConfirmation">Hvis du gør dette, rydder du listen over personer, som du ofte kontakter, i appene Kontaktpersoner og Opkald. Du vil samtidig tvinge e-mailapps til at lære dine adressepræferencer fra bunden.</string>
   <string name="clearFrequentsProgress_title">Ofte kontaktede personer ryddes…</string>
-  <string name="status_available">Tilgængelig</string>
-  <string name="status_away">Ikke til stede</string>
-  <string name="status_busy">Optaget</string>
-  <string name="contactsList">Kontakter</string>
-  <string name="contact_suggestions">Populære forslag</string>
-  <string name="local_invisible_directory">Andre</string>
   <string name="directory_search_label">Indeks</string>
   <string name="directory_search_label_work">Indeks for arbejde</string>
-  <string name="local_search_label">Alle kontakter</string>
-  <string name="local_suggestions_search_label">Forslag</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Mig</string>
   <string name="missing_name">(Intet navn)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Se kontaktperson</string>
-  <string name="list_filter_phones">Alle kontaktpersoner med telefonnumre</string>
-  <string name="list_filter_phones_work">Kontaktpersoner for arbejdsprofil</string>
   <string name="view_updates_from_group">Se opdateringer</string>
   <string name="account_phone">Kun enhed, ikke synkroniseret</string>
   <string name="nameLabelsGroup">Navn</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chat ved hjælp af ICQ</string>
   <string name="chat_jabber">Chat ved hjælp af Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Alle kontaktpersoner</string>
-  <string name="listAllContactsInAccount">Kontaktpersoner i %s</string>
-  <string name="listCustomView">Kontakter i tilpasset visning</string>
-  <string name="listSingleContact">Enkelt kontaktperson</string>
   <string name="display_options_sort_list_by">Sortér efter</string>
   <string name="display_options_sort_by_given_name">Fornavn</string>
   <string name="display_options_sort_by_family_name">Efternavn</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Ryd søgning</string>
   <string name="select_account_dialog_title">Konto</string>
   <string name="set_default_account">Brug altid ved opkald</string>
-  <string name="select_phone_account_for_calls">Vælg SIM-kort til dette opkald</string>
-  <string name="select_phone_account_for_calls_remember">Husk dette valg</string>
   <string name="call_with_a_note">Ring med en note</string>
   <string name="call_subject_hint">Angiv en note, som skal sendes ved opkald...</string>
   <string name="send_and_call_button">SEND OG RING</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Fanen %1$s. %2$d ulæste elementer. </item>
   </plurals>
   <string name="description_search_video_call">Videoopkald</string>
-  <string name="description_search_call_and_share">Del og ring</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-de/strings.xml b/java/com/android/contacts/common/res/values-de/strings.xml
index 9554c5d..e9adf0c 100644
--- a/java/com/android/contacts/common/res/values-de/strings.xml
+++ b/java/com/android/contacts/common/res/values-de/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Liste \"Häufig kontaktiert\" löschen?</string>
   <string name="clearFrequentsConfirmation">Du löschst die Liste \"Häufig kontaktiert\" in den Apps \"Kontakte\" und \"Telefon\" und bewirkst so ein Zurücksetzen deiner Adresseinstellungen für E-Mail-Apps.</string>
   <string name="clearFrequentsProgress_title">\"Häufig kontaktiert\" wird gelöscht…</string>
-  <string name="status_available">Verfügbar</string>
-  <string name="status_away">Abwesend</string>
-  <string name="status_busy">Beschäftigt</string>
-  <string name="contactsList">Kontakte</string>
-  <string name="contact_suggestions">Top-Vorschläge</string>
-  <string name="local_invisible_directory">Andere</string>
   <string name="directory_search_label">Verzeichnis</string>
   <string name="directory_search_label_work">Verzeichnis geschäftlicher Kontakte</string>
-  <string name="local_search_label">Alle Kontakte</string>
-  <string name="local_suggestions_search_label">Vorschläge</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ich</string>
   <string name="missing_name">(Kein Name)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Kontakt ansehen</string>
-  <string name="list_filter_phones">Alle Kontakte mit Telefonnummern</string>
-  <string name="list_filter_phones_work">Arbeitsprofilkontakte</string>
   <string name="view_updates_from_group">Updates ansehen</string>
   <string name="account_phone">Nur auf dem Gerät, nicht synchronisiert</string>
   <string name="nameLabelsGroup">Name</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Über ICQ chatten</string>
   <string name="chat_jabber">Über Jabber chatten</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Alle Kontakte</string>
-  <string name="listAllContactsInAccount">Kontakte in %s</string>
-  <string name="listCustomView">Kontakte in benutzerdef. Ansicht</string>
-  <string name="listSingleContact">Einzelner Kontakt</string>
   <string name="display_options_sort_list_by">Sortieren nach</string>
   <string name="display_options_sort_by_given_name">Vorname</string>
   <string name="display_options_sort_by_family_name">Nachname</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Suche zurücksetzen</string>
   <string name="select_account_dialog_title">Konto</string>
   <string name="set_default_account">Diese SIM für alle Anrufe verwenden</string>
-  <string name="select_phone_account_for_calls">SIM für diesen Anruf auswählen</string>
-  <string name="select_phone_account_for_calls_remember">Auswahl speichern</string>
   <string name="call_with_a_note">Mit einer Notiz anrufen</string>
   <string name="call_subject_hint">Notiz eingeben, die beim Anrufen gesendet wird...</string>
   <string name="send_and_call_button">SENDEN UND ANRUFEN</string>
@@ -141,5 +123,4 @@
     <item quantity="other">Tab \"%1$s\". %2$d ungelesene Elemente. </item>
   </plurals>
   <string name="description_search_video_call">Videoanruf</string>
-  <string name="description_search_call_and_share">Teilen und anrufen</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-el/strings.xml b/java/com/android/contacts/common/res/values-el/strings.xml
index 727b69d..73f17cb 100644
--- a/java/com/android/contacts/common/res/values-el/strings.xml
+++ b/java/com/android/contacts/common/res/values-el/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Διαγραφή ατόμων με συχνή επικοινωνία;</string>
   <string name="clearFrequentsConfirmation">Θα διαγράψετε τη λίστα συχνών επαφών στις εφαρμογές Επαφές και Τηλέφωνο και θα επιβάλλετε στις εφαρμογές ηλεκτρονικού ταχυδρομείου να μάθουν τις προτιμήσεις διευθύνσεών σας από την αρχή,</string>
   <string name="clearFrequentsProgress_title">Διαγρ. ατόμων με συχνή επικοινωνία…</string>
-  <string name="status_available">Διαθέσιμος</string>
-  <string name="status_away">Μη διαθέσιμος</string>
-  <string name="status_busy">Απασχολημένος</string>
-  <string name="contactsList">Επαφές</string>
-  <string name="contact_suggestions">Κορυφαίες προτάσεις</string>
-  <string name="local_invisible_directory">Άλλο</string>
   <string name="directory_search_label">Κατάλογος</string>
   <string name="directory_search_label_work">Κατάλογος εργασίας</string>
-  <string name="local_search_label">Όλες οι επαφές</string>
-  <string name="local_suggestions_search_label">Προτάσεις</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Εγώ</string>
   <string name="missing_name">(Χωρίς όνομα)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Προβολή επαφής</string>
-  <string name="list_filter_phones">Όλες οι επαφές με αριθμούς τηλεφώνου</string>
-  <string name="list_filter_phones_work">Επαφές προφίλ εργασίας</string>
   <string name="view_updates_from_group">Προβολή ενημερώσεων</string>
   <string name="account_phone">Μόνο στη συσκευή, χωρίς συγχρονισμό</string>
   <string name="nameLabelsGroup">Όνομα</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Συζήτηση μέσω ICQ</string>
   <string name="chat_jabber">Συζήτηση μέσω Jabber</string>
   <string name="chat">Συζήτηση</string>
-  <string name="list_filter_all_accounts">Όλες οι επαφές</string>
-  <string name="listAllContactsInAccount">Επαφές στο %s</string>
-  <string name="listCustomView">Επαφές σε προσ/νη προβολή</string>
-  <string name="listSingleContact">Μία επαφή</string>
   <string name="display_options_sort_list_by">Ταξινόμηση κατά</string>
   <string name="display_options_sort_by_given_name">Όνομα</string>
   <string name="display_options_sort_by_family_name">Επώνυμο</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Διαγραφή αναζητήσεων</string>
   <string name="select_account_dialog_title">Λογαριασμός</string>
   <string name="set_default_account">Χρήση πάντα για κλήσεις</string>
-  <string name="select_phone_account_for_calls">Επιλέξτε SIM για αυτήν την κλήση</string>
-  <string name="select_phone_account_for_calls_remember">Διατήρηση αυτής της ρύθμισης</string>
   <string name="call_with_a_note">Κλήση με σημείωση</string>
   <string name="call_subject_hint">Πληκτρολογήστε μια σημείωση για αποστολή με την κλήση…</string>
   <string name="send_and_call_button">ΑΠΟΣΤΟΛΗ ΚΑΙ ΚΛΗΣΗ</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Καρτέλα %1$s. %2$d μη αναγνωσμένα στοιχεία. </item>
   </plurals>
   <string name="description_search_video_call">Βιντεοκλήση</string>
-  <string name="description_search_call_and_share">Κοινοποίηση και κλήση</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-en-rAU/strings.xml b/java/com/android/contacts/common/res/values-en-rAU/strings.xml
index 2729522..38e4ca0 100644
--- a/java/com/android/contacts/common/res/values-en-rAU/strings.xml
+++ b/java/com/android/contacts/common/res/values-en-rAU/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Clear frequently contacted?</string>
   <string name="clearFrequentsConfirmation">You\'ll clear the frequently contacted list in the Contacts and Phone apps, and force email apps to learn your addressing preferences from scratch.</string>
   <string name="clearFrequentsProgress_title">Clearing frequently contacted…</string>
-  <string name="status_available">Available</string>
-  <string name="status_away">Away</string>
-  <string name="status_busy">Busy</string>
-  <string name="contactsList">Contacts</string>
-  <string name="contact_suggestions">Top suggested</string>
-  <string name="local_invisible_directory">Other</string>
   <string name="directory_search_label">Directory</string>
   <string name="directory_search_label_work">Work directory</string>
-  <string name="local_search_label">All contacts</string>
-  <string name="local_suggestions_search_label">Suggestions</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Me</string>
   <string name="missing_name">(No name)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">View contact</string>
-  <string name="list_filter_phones">All contacts with phone numbers</string>
-  <string name="list_filter_phones_work">Work profile contacts</string>
   <string name="view_updates_from_group">View updates</string>
   <string name="account_phone">Device only, unsynced</string>
   <string name="nameLabelsGroup">Name</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chat using ICQ</string>
   <string name="chat_jabber">Chat using Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">All contacts</string>
-  <string name="listAllContactsInAccount">Contacts in %s</string>
-  <string name="listCustomView">Contacts in customised view</string>
-  <string name="listSingleContact">Single contact</string>
   <string name="display_options_sort_list_by">Sort by</string>
   <string name="display_options_sort_by_given_name">First name</string>
   <string name="display_options_sort_by_family_name">Surname</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Clear search</string>
   <string name="select_account_dialog_title">Account</string>
   <string name="set_default_account">Always use this for calls</string>
-  <string name="select_phone_account_for_calls">Choose SIM for this call</string>
-  <string name="select_phone_account_for_calls_remember">Remember this choice</string>
   <string name="call_with_a_note">Call with a note</string>
   <string name="call_subject_hint">Type a note to send with call ...</string>
   <string name="send_and_call_button">SEND &amp; CALL</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s tab. %2$d unread items. </item>
   </plurals>
   <string name="description_search_video_call">Video call</string>
-  <string name="description_search_call_and_share">Share and call</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-en-rGB/strings.xml b/java/com/android/contacts/common/res/values-en-rGB/strings.xml
index 2729522..38e4ca0 100644
--- a/java/com/android/contacts/common/res/values-en-rGB/strings.xml
+++ b/java/com/android/contacts/common/res/values-en-rGB/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Clear frequently contacted?</string>
   <string name="clearFrequentsConfirmation">You\'ll clear the frequently contacted list in the Contacts and Phone apps, and force email apps to learn your addressing preferences from scratch.</string>
   <string name="clearFrequentsProgress_title">Clearing frequently contacted…</string>
-  <string name="status_available">Available</string>
-  <string name="status_away">Away</string>
-  <string name="status_busy">Busy</string>
-  <string name="contactsList">Contacts</string>
-  <string name="contact_suggestions">Top suggested</string>
-  <string name="local_invisible_directory">Other</string>
   <string name="directory_search_label">Directory</string>
   <string name="directory_search_label_work">Work directory</string>
-  <string name="local_search_label">All contacts</string>
-  <string name="local_suggestions_search_label">Suggestions</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Me</string>
   <string name="missing_name">(No name)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">View contact</string>
-  <string name="list_filter_phones">All contacts with phone numbers</string>
-  <string name="list_filter_phones_work">Work profile contacts</string>
   <string name="view_updates_from_group">View updates</string>
   <string name="account_phone">Device only, unsynced</string>
   <string name="nameLabelsGroup">Name</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chat using ICQ</string>
   <string name="chat_jabber">Chat using Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">All contacts</string>
-  <string name="listAllContactsInAccount">Contacts in %s</string>
-  <string name="listCustomView">Contacts in customised view</string>
-  <string name="listSingleContact">Single contact</string>
   <string name="display_options_sort_list_by">Sort by</string>
   <string name="display_options_sort_by_given_name">First name</string>
   <string name="display_options_sort_by_family_name">Surname</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Clear search</string>
   <string name="select_account_dialog_title">Account</string>
   <string name="set_default_account">Always use this for calls</string>
-  <string name="select_phone_account_for_calls">Choose SIM for this call</string>
-  <string name="select_phone_account_for_calls_remember">Remember this choice</string>
   <string name="call_with_a_note">Call with a note</string>
   <string name="call_subject_hint">Type a note to send with call ...</string>
   <string name="send_and_call_button">SEND &amp; CALL</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s tab. %2$d unread items. </item>
   </plurals>
   <string name="description_search_video_call">Video call</string>
-  <string name="description_search_call_and_share">Share and call</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-en-rIN/strings.xml b/java/com/android/contacts/common/res/values-en-rIN/strings.xml
index 2729522..38e4ca0 100644
--- a/java/com/android/contacts/common/res/values-en-rIN/strings.xml
+++ b/java/com/android/contacts/common/res/values-en-rIN/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Clear frequently contacted?</string>
   <string name="clearFrequentsConfirmation">You\'ll clear the frequently contacted list in the Contacts and Phone apps, and force email apps to learn your addressing preferences from scratch.</string>
   <string name="clearFrequentsProgress_title">Clearing frequently contacted…</string>
-  <string name="status_available">Available</string>
-  <string name="status_away">Away</string>
-  <string name="status_busy">Busy</string>
-  <string name="contactsList">Contacts</string>
-  <string name="contact_suggestions">Top suggested</string>
-  <string name="local_invisible_directory">Other</string>
   <string name="directory_search_label">Directory</string>
   <string name="directory_search_label_work">Work directory</string>
-  <string name="local_search_label">All contacts</string>
-  <string name="local_suggestions_search_label">Suggestions</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Me</string>
   <string name="missing_name">(No name)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">View contact</string>
-  <string name="list_filter_phones">All contacts with phone numbers</string>
-  <string name="list_filter_phones_work">Work profile contacts</string>
   <string name="view_updates_from_group">View updates</string>
   <string name="account_phone">Device only, unsynced</string>
   <string name="nameLabelsGroup">Name</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chat using ICQ</string>
   <string name="chat_jabber">Chat using Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">All contacts</string>
-  <string name="listAllContactsInAccount">Contacts in %s</string>
-  <string name="listCustomView">Contacts in customised view</string>
-  <string name="listSingleContact">Single contact</string>
   <string name="display_options_sort_list_by">Sort by</string>
   <string name="display_options_sort_by_given_name">First name</string>
   <string name="display_options_sort_by_family_name">Surname</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Clear search</string>
   <string name="select_account_dialog_title">Account</string>
   <string name="set_default_account">Always use this for calls</string>
-  <string name="select_phone_account_for_calls">Choose SIM for this call</string>
-  <string name="select_phone_account_for_calls_remember">Remember this choice</string>
   <string name="call_with_a_note">Call with a note</string>
   <string name="call_subject_hint">Type a note to send with call ...</string>
   <string name="send_and_call_button">SEND &amp; CALL</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s tab. %2$d unread items. </item>
   </plurals>
   <string name="description_search_video_call">Video call</string>
-  <string name="description_search_call_and_share">Share and call</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-es-rUS/strings.xml b/java/com/android/contacts/common/res/values-es-rUS/strings.xml
index 6e046cf..a7680b8 100644
--- a/java/com/android/contacts/common/res/values-es-rUS/strings.xml
+++ b/java/com/android/contacts/common/res/values-es-rUS/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">¿Borrar contactos frecuentes?</string>
   <string name="clearFrequentsConfirmation">Borrarás la lista de personas con las que te pones en contacto frecuentemente de las aplicaciones Contactos y Teléfono. Además, tus aplicaciones de correo deberán establecer tus preferencias nuevamente.</string>
   <string name="clearFrequentsProgress_title">Borrando contactos frecuentes…</string>
-  <string name="status_available">Disponible</string>
-  <string name="status_away">Ausente</string>
-  <string name="status_busy">Ocupado</string>
-  <string name="contactsList">Contactos</string>
-  <string name="contact_suggestions">Principales lugares sugeridos</string>
-  <string name="local_invisible_directory">Otros</string>
   <string name="directory_search_label">Directorio</string>
   <string name="directory_search_label_work">Directorio del trabajo</string>
-  <string name="local_search_label">Todos los contactos</string>
-  <string name="local_suggestions_search_label">Sugerencias</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Yo</string>
   <string name="missing_name">(Sin nombre)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Ver contacto</string>
-  <string name="list_filter_phones">Todos los contactos con número de teléfono</string>
-  <string name="list_filter_phones_work">Contactos del perfil de trabajo</string>
   <string name="view_updates_from_group">Ver actualizaciones</string>
   <string name="account_phone">Solo en el dispositivo, no sincronizado</string>
   <string name="nameLabelsGroup">Nombre</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chat mediante ICQ</string>
   <string name="chat_jabber">Chat mediante Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Todos los contactos</string>
-  <string name="listAllContactsInAccount">Contactos en %s</string>
-  <string name="listCustomView">Contactos en vista personalizada</string>
-  <string name="listSingleContact">Contacto único</string>
   <string name="display_options_sort_list_by">Ordenar por</string>
   <string name="display_options_sort_by_given_name">Nombre</string>
   <string name="display_options_sort_by_family_name">Apellido</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Borrar la búsqueda</string>
   <string name="select_account_dialog_title">Cuenta</string>
   <string name="set_default_account">Usar siempre para llamadas</string>
-  <string name="select_phone_account_for_calls">Elige una SIM para realizar esta llamada</string>
-  <string name="select_phone_account_for_calls_remember">Recordar esta opción</string>
   <string name="call_with_a_note">Llamada con una nota</string>
   <string name="call_subject_hint">Escribe una nota para enviar con la llamada…</string>
   <string name="send_and_call_button">ENVIAR Y LLAMAR</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Pestaña %1$s. %2$d elementos no leídos. </item>
   </plurals>
   <string name="description_search_video_call">Videollamada</string>
-  <string name="description_search_call_and_share">Compartir y llamar</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-es/strings.xml b/java/com/android/contacts/common/res/values-es/strings.xml
index ce370d6..d215e87 100644
--- a/java/com/android/contacts/common/res/values-es/strings.xml
+++ b/java/com/android/contacts/common/res/values-es/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">¿Borrar contactos frecuentes?</string>
   <string name="clearFrequentsConfirmation">Vas a borrar la lista de contactos frecuentes de las aplicaciones Contactos y Teléfono y obligarás a las aplicaciones de correo electrónico a que memoricen tus preferencias de nuevo.</string>
   <string name="clearFrequentsProgress_title">Borrando contactos frecuentes…</string>
-  <string name="status_available">Disponible</string>
-  <string name="status_away">Ausente</string>
-  <string name="status_busy">Ocupado</string>
-  <string name="contactsList">Contactos</string>
-  <string name="contact_suggestions">Sugerencias principales</string>
-  <string name="local_invisible_directory">Otro</string>
   <string name="directory_search_label">Directorio</string>
   <string name="directory_search_label_work">Directorio de trabajo</string>
-  <string name="local_search_label">Todos los contactos</string>
-  <string name="local_suggestions_search_label">Sugerencias</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Yo</string>
   <string name="missing_name">(Sin nombre)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Ver contacto</string>
-  <string name="list_filter_phones">Todos los contactos con número</string>
-  <string name="list_filter_phones_work">Contactos del perfil de trabajo</string>
   <string name="view_updates_from_group">Ver actualizaciones</string>
   <string name="account_phone">Solo está en el dispositivo, no se sincroniza</string>
   <string name="nameLabelsGroup">Nombre</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chatear con ICQ</string>
   <string name="chat_jabber">Chatear con Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Todos los contactos</string>
-  <string name="listAllContactsInAccount">Contactos en %s</string>
-  <string name="listCustomView">Contactos en vista personalizada</string>
-  <string name="listSingleContact">Contacto único</string>
   <string name="display_options_sort_list_by">Ordenar por</string>
   <string name="display_options_sort_by_given_name">Nombre</string>
   <string name="display_options_sort_by_family_name">Apellidos</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Borrar la búsqueda</string>
   <string name="select_account_dialog_title">Cuenta</string>
   <string name="set_default_account">Usar siempre esta para llamadas</string>
-  <string name="select_phone_account_for_calls">Elegir SIM para esta llamada</string>
-  <string name="select_phone_account_for_calls_remember">Recordar esta opción</string>
   <string name="call_with_a_note">Llamada con una nota</string>
   <string name="call_subject_hint">Escribe una nota para enviarla con la llamada...</string>
   <string name="send_and_call_button">ENVIAR Y LLAMAR</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Pestaña %1$s. %2$d elementos no leídos. </item>
   </plurals>
   <string name="description_search_video_call">Videollamada</string>
-  <string name="description_search_call_and_share">Compartir y llamar</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-et/strings.xml b/java/com/android/contacts/common/res/values-et/strings.xml
index 9a905fc..005dce1 100644
--- a/java/com/android/contacts/common/res/values-et/strings.xml
+++ b/java/com/android/contacts/common/res/values-et/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Kas kustutada sagedased kontaktid?</string>
   <string name="clearFrequentsConfirmation">Kustutate rakendustes Kontaktid ja Telefon sagedaste kontaktide loendi, mistõttu meilirakendused peavad teie adresseerimiseelistused uuesti omandama.</string>
   <string name="clearFrequentsProgress_title">Saged. kontaktide kustutamine ...</string>
-  <string name="status_available">Saadaval</string>
-  <string name="status_away">Eemal</string>
-  <string name="status_busy">Hõivatud</string>
-  <string name="contactsList">Kontaktid</string>
-  <string name="contact_suggestions">Populaarsed soovitused</string>
-  <string name="local_invisible_directory">Muu</string>
   <string name="directory_search_label">Kataloog</string>
   <string name="directory_search_label_work">Töökontaktide kataloog</string>
-  <string name="local_search_label">Kõik kontaktid</string>
-  <string name="local_suggestions_search_label">Soovitused</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Mina</string>
   <string name="missing_name">(Nimi puudub)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Kuva kontakt</string>
-  <string name="list_filter_phones">Kõik telefoninumbritega kontaktid</string>
-  <string name="list_filter_phones_work">Tööprofiili kontaktid</string>
   <string name="view_updates_from_group">Kuva värskendused</string>
   <string name="account_phone">Ainult seadmes, sünkroonimata</string>
   <string name="nameLabelsGroup">Nimi</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Vestlus ICQ-d kasutades</string>
   <string name="chat_jabber">Vestlus Jabberit kasutades</string>
   <string name="chat">Vestlus</string>
-  <string name="list_filter_all_accounts">Kõik kontaktid</string>
-  <string name="listAllContactsInAccount">Konto %s kontaktid</string>
-  <string name="listCustomView">Kontaktid kohandatud vaates</string>
-  <string name="listSingleContact">Üks kontakt</string>
   <string name="display_options_sort_list_by">Sortimisalus</string>
   <string name="display_options_sort_by_given_name">Eesnimi</string>
   <string name="display_options_sort_by_family_name">Perekonnanimi</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Otsingu kustutamine</string>
   <string name="select_account_dialog_title">Konto</string>
   <string name="set_default_account">Kasuta helistamiseks alati seda</string>
-  <string name="select_phone_account_for_calls">Valige selle kõne jaoks SIM-kaart</string>
-  <string name="select_phone_account_for_calls_remember">Jäta valik meelde</string>
   <string name="call_with_a_note">Kõne koos märkusega</string>
   <string name="call_subject_hint">Sisestage märkus, mis koos kõnega saata ...</string>
   <string name="send_and_call_button">SAADA JA HELISTA</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Vahekaart %1$s. %2$d lugemata üksust. </item>
   </plurals>
   <string name="description_search_video_call">Videokõne</string>
-  <string name="description_search_call_and_share">Jagamine ja helistamine</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-eu/strings.xml b/java/com/android/contacts/common/res/values-eu/strings.xml
index 138149f..421ab48 100644
--- a/java/com/android/contacts/common/res/values-eu/strings.xml
+++ b/java/com/android/contacts/common/res/values-eu/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Sarri erabilitako kontaktuak garbitu?</string>
   <string name="clearFrequentsConfirmation">Kontaktuak eta Telefonoa aplikazioetako sarri erabilitako kontaktuen zerrenda garbituko duzu; beraz, posta elektronikoaren aplikazioek helbideen hobespenak hutsetik ikasi beharko dituzte.</string>
   <string name="clearFrequentsProgress_title">Sarri erabilitako kontaktuak garbitzen…</string>
-  <string name="status_available">Libre</string>
-  <string name="status_away">Kanpoan</string>
-  <string name="status_busy">Okupatuta</string>
-  <string name="contactsList">Kontaktuak</string>
-  <string name="contact_suggestions">Iradokizun garrantzitsuenak</string>
-  <string name="local_invisible_directory">Beste bat</string>
   <string name="directory_search_label">Direktorioa</string>
   <string name="directory_search_label_work">Laneko kontaktuak</string>
-  <string name="local_search_label">Kontaktu guztiak</string>
-  <string name="local_suggestions_search_label">Iradokizunak</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ni</string>
   <string name="missing_name">(Izenik ez)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Ikusi kontaktua</string>
-  <string name="list_filter_phones">Telefono-zenbakiak dituzten kontaktu guztiak</string>
-  <string name="list_filter_phones_work">Laneko profileko kontaktuak</string>
   <string name="view_updates_from_group">Ikusi berritasunak</string>
   <string name="account_phone">Gailuan soilik egongo da; ez da sinkronizatuko</string>
   <string name="nameLabelsGroup">Izena</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Txateatu ICQ bidez</string>
   <string name="chat_jabber">Txateatu Jabber bidez</string>
   <string name="chat">Txateatu</string>
-  <string name="list_filter_all_accounts">Kontaktu guztiak</string>
-  <string name="listAllContactsInAccount">Kontu honetako kontaktuak: %s</string>
-  <string name="listCustomView">Ikuspegi pertsonalizatuko kontaktuak</string>
-  <string name="listSingleContact">Kontaktu bakarra</string>
   <string name="display_options_sort_list_by">Ordenatzeko irizpidea</string>
   <string name="display_options_sort_by_given_name">Izena</string>
   <string name="display_options_sort_by_family_name">Abizena</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Garbitu bilaketa</string>
   <string name="select_account_dialog_title">Kontua</string>
   <string name="set_default_account">Erabili beti hau deietarako</string>
-  <string name="select_phone_account_for_calls">Aukeratu dei hau egiteko SIM txartela</string>
-  <string name="select_phone_account_for_calls_remember">Gogoratu aukera hau</string>
   <string name="call_with_a_note">Egin deia oharrarekin</string>
   <string name="call_subject_hint">Idatzi deiarekin batera bidali beharreko oharra…</string>
   <string name="send_and_call_button">BIDALI ETA DEITU</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s fitxa. Irakurri gabeko %2$d elementu. </item>
   </plurals>
   <string name="description_search_video_call">Bideo-deia</string>
-  <string name="description_search_call_and_share">Partekatu eta deitu</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-fa/strings.xml b/java/com/android/contacts/common/res/values-fa/strings.xml
index 531b1f1..7b0f930 100644
--- a/java/com/android/contacts/common/res/values-fa/strings.xml
+++ b/java/com/android/contacts/common/res/values-fa/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">مکرراً تماس‌گرفته‌ها پاک شود؟</string>
   <string name="clearFrequentsConfirmation">فهرست افرادی را که مکرر با آن‌ها تماس گرفته‌اید در برنامه‌های «مخاطبین» و «تلفن» پاک خواهید کرد و برنامه‌های رایانامه مجبور می‌شوند که تنظیمات برگزیده آدرس‌دهی شما را از اول یاد بگیرند.</string>
   <string name="clearFrequentsProgress_title">درحال پاک کردن مکرراً تماس‌گرفته…</string>
-  <string name="status_available">در دسترس</string>
-  <string name="status_away">غایب</string>
-  <string name="status_busy">مشغول</string>
-  <string name="contactsList">مخاطبین</string>
-  <string name="contact_suggestions">پیشنهادهای برتر</string>
-  <string name="local_invisible_directory">سایر موارد</string>
   <string name="directory_search_label">فهرست</string>
   <string name="directory_search_label_work">فهرست کار</string>
-  <string name="local_search_label">همه مخاطبین</string>
-  <string name="local_suggestions_search_label">پیشنهادها</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">من</string>
   <string name="missing_name">(بدون نام)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">مشاهده مخاطب</string>
-  <string name="list_filter_phones">همه مخاطبین دارای شماره تلفن</string>
-  <string name="list_filter_phones_work">مخاطبین نمایه کاری</string>
   <string name="view_updates_from_group">مشاهده به‌روزرسانی‌ها</string>
   <string name="account_phone">فقط دستگاه، بدون همگام‌سازی</string>
   <string name="nameLabelsGroup">نام</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">‏گپ با استفاده از ICQ</string>
   <string name="chat_jabber">‏گپ با استفاده از Jabber</string>
   <string name="chat">گپ</string>
-  <string name="list_filter_all_accounts">همه مخاطبین</string>
-  <string name="listAllContactsInAccount">مخاطبین در %s</string>
-  <string name="listCustomView">مخاطبین در نمای سفارشی</string>
-  <string name="listSingleContact">مخاطب تکی</string>
   <string name="display_options_sort_list_by">مرتب‌سازی براساس</string>
   <string name="display_options_sort_by_given_name">نام</string>
   <string name="display_options_sort_by_family_name">نام خانوادگی</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">پاک کردن جستجو</string>
   <string name="select_account_dialog_title">حساب</string>
   <string name="set_default_account">همیشه این سیم برای تماس‌ استفاده شود</string>
-  <string name="select_phone_account_for_calls">سیم‌کارتی برای این تماس انتخاب کنید</string>
-  <string name="select_phone_account_for_calls_remember">این گزینه به خاطر سپرده شود</string>
   <string name="call_with_a_note">تماس به همراه یادداشت</string>
   <string name="call_subject_hint">یادداشتی بنویسید که همراه تماس ارسال شود…</string>
   <string name="send_and_call_button">ارسال و تماس</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> برگه «%1$s». %2$d مورد خوانده‌نشده. </item>
   </plurals>
   <string name="description_search_video_call">تماس ویدیویی</string>
-  <string name="description_search_call_and_share">اشتراک‌گذاری و تماس</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-fi/strings.xml b/java/com/android/contacts/common/res/values-fi/strings.xml
index f62b848..c7a2af5 100644
--- a/java/com/android/contacts/common/res/values-fi/strings.xml
+++ b/java/com/android/contacts/common/res/values-fi/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Tyhjennetäänkö usein käytetyt?</string>
   <string name="clearFrequentsConfirmation">Toiminto tyhjentää Yhteystiedot- ja Puhelin-sovellusten usein käytettyjen kontaktien luettelon. Lisäksi sähköpostisovellukset pakotetaan opettelemaan osoiteasetuksesi uudestaan.</string>
   <string name="clearFrequentsProgress_title">Tyhjennetään usein käytetyt...</string>
-  <string name="status_available">Saatavilla</string>
-  <string name="status_away">Poissa</string>
-  <string name="status_busy">Varattu</string>
-  <string name="contactsList">Yhteystiedot</string>
-  <string name="contact_suggestions">Kiinnostavimmat ehdotukset</string>
-  <string name="local_invisible_directory">Muu</string>
   <string name="directory_search_label">Osoitekirja</string>
   <string name="directory_search_label_work">Työhakemisto</string>
-  <string name="local_search_label">Kaikki yhteystiedot</string>
-  <string name="local_suggestions_search_label">Ehdotukset</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Minä</string>
   <string name="missing_name">(Ei nimeä)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Näytä yhteystieto</string>
-  <string name="list_filter_phones">Kaikki kontaktit, joilla on puhelinnumero</string>
-  <string name="list_filter_phones_work">Työprofiilin yhteystiedot</string>
   <string name="view_updates_from_group">Näytä päivitykset</string>
   <string name="account_phone">Vain laitteessa, ei synkronoida</string>
   <string name="nameLabelsGroup">Nimi</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Keskustele ICQ:n avulla</string>
   <string name="chat_jabber">Keskustele Jabberin avulla</string>
   <string name="chat">Keskustelu</string>
-  <string name="list_filter_all_accounts">Yhteystiedot</string>
-  <string name="listAllContactsInAccount">Yhteystiedot tilissä %s</string>
-  <string name="listCustomView">Muokatun näkymän yhteystiedot</string>
-  <string name="listSingleContact">Yksi yhteystieto</string>
   <string name="display_options_sort_list_by">Lajitteluperuste</string>
   <string name="display_options_sort_by_given_name">Etunimi</string>
   <string name="display_options_sort_by_family_name">Sukunimi</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Tyhjennä haku</string>
   <string name="select_account_dialog_title">Tili</string>
   <string name="set_default_account">Käytä kaikille puheluille</string>
-  <string name="select_phone_account_for_calls">Valitse SIM tätä puhelua varten</string>
-  <string name="select_phone_account_for_calls_remember">Muista valinta</string>
   <string name="call_with_a_note">Soita ja lähetä muistiinpano</string>
   <string name="call_subject_hint">Kirjoita muistiinpano lähetettäväksi puhelun kanssa…</string>
   <string name="send_and_call_button">LÄHETÄ JA SOITA</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s-välilehti. %2$d lukematonta kohdetta. </item>
   </plurals>
   <string name="description_search_video_call">Videopuhelu</string>
-  <string name="description_search_call_and_share">Jaa ja soita</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-fr-rCA/strings.xml b/java/com/android/contacts/common/res/values-fr-rCA/strings.xml
index 8b29186..58fabf3 100644
--- a/java/com/android/contacts/common/res/values-fr-rCA/strings.xml
+++ b/java/com/android/contacts/common/res/values-fr-rCA/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Effacer les contacts fréquents?</string>
   <string name="clearFrequentsConfirmation">Cette opération efface la liste des personnes avec qui vous communiquez le plus souvent dans les applications Contacts et Téléphone, et forcera les applications de courriel à mémoriser de nouveau les adresses que vous utilisez le plus.</string>
   <string name="clearFrequentsProgress_title">Suppression des contacts fréquents…</string>
-  <string name="status_available">Disponible</string>
-  <string name="status_away">Absent</string>
-  <string name="status_busy">Occupé(e)</string>
-  <string name="contactsList">Contacts</string>
-  <string name="contact_suggestions">Meilleures suggestions</string>
-  <string name="local_invisible_directory">Autre</string>
   <string name="directory_search_label">Répertoire</string>
   <string name="directory_search_label_work">Annuaire professionnel</string>
-  <string name="local_search_label">Tous les contacts</string>
-  <string name="local_suggestions_search_label">Suggestions</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Moi</string>
   <string name="missing_name">(Sans nom)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Afficher le contact</string>
-  <string name="list_filter_phones">Tous les contacts disposant d\'un numéro de téléphone</string>
-  <string name="list_filter_phones_work">Contacts du profil professionnel</string>
   <string name="view_updates_from_group">Afficher les mises à jour</string>
   <string name="account_phone">Appareil uniquement, sans synchronisation</string>
   <string name="nameLabelsGroup">Nom</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Clavarder via ICQ</string>
   <string name="chat_jabber">Clavarder via Jabber</string>
   <string name="chat">Clavarder</string>
-  <string name="list_filter_all_accounts">Tous les contacts</string>
-  <string name="listAllContactsInAccount">Contacts du compte \"%s\"</string>
-  <string name="listCustomView">Contacts en affichage personnalisé</string>
-  <string name="listSingleContact">Contact</string>
   <string name="display_options_sort_list_by">Trier par</string>
   <string name="display_options_sort_by_given_name">Prénom</string>
   <string name="display_options_sort_by_family_name">Nom de famille</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Effacer les termes de recherche</string>
   <string name="select_account_dialog_title">Compte</string>
   <string name="set_default_account">Toujours l\'utiliser pour les appels</string>
-  <string name="select_phone_account_for_calls">Choisir une carte SIM pour cet appel</string>
-  <string name="select_phone_account_for_calls_remember">Mémoriser ce choix</string>
   <string name="call_with_a_note">Appeler avec une note</string>
   <string name="call_subject_hint">Tapez une note à envoyer avec l\'appel...</string>
   <string name="send_and_call_button">ENVOYER ET APPELER</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Onglet %1$s. %2$d éléments non lus. </item>
   </plurals>
   <string name="description_search_video_call">Appel vidéo</string>
-  <string name="description_search_call_and_share">Partager et appeler</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-fr/strings.xml b/java/com/android/contacts/common/res/values-fr/strings.xml
index 9ba9dd1..5e6488d 100644
--- a/java/com/android/contacts/common/res/values-fr/strings.xml
+++ b/java/com/android/contacts/common/res/values-fr/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Effacer les contacts fréquents ?</string>
   <string name="clearFrequentsConfirmation">Cette opération efface la liste des personnes que vous contactez le plus souvent dans les applications Contacts et Téléphone, et entraîne une réinitialisation des adresses mémorisées comme celles que vous utilisez le plus fréquemment dans vos applications de messagerie électronique.</string>
   <string name="clearFrequentsProgress_title">Suppression des contacts fréquents…</string>
-  <string name="status_available">Disponible</string>
-  <string name="status_away">Absent</string>
-  <string name="status_busy">Occupé</string>
-  <string name="contactsList">Contacts</string>
-  <string name="contact_suggestions">Principaux dossiers recommandés</string>
-  <string name="local_invisible_directory">Autre</string>
   <string name="directory_search_label">Répertoire</string>
   <string name="directory_search_label_work">Contacts professionnels</string>
-  <string name="local_search_label">Tous les contacts</string>
-  <string name="local_suggestions_search_label">Suggestions</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Moi</string>
   <string name="missing_name">(Sans nom)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Afficher le contact</string>
-  <string name="list_filter_phones">Tous les contacts disposant d\'un numéro de téléphone</string>
-  <string name="list_filter_phones_work">Contacts du profil professionnel</string>
   <string name="view_updates_from_group">Afficher les mises à jour</string>
   <string name="account_phone">Appareil uniquement, non synchronisé</string>
   <string name="nameLabelsGroup">Nom</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chatter via ICQ</string>
   <string name="chat_jabber">Chatter via Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Tous les contacts</string>
-  <string name="listAllContactsInAccount">Contacts du compte \"%s\"</string>
-  <string name="listCustomView">Contacts avec affichage perso.</string>
-  <string name="listSingleContact">Contact</string>
   <string name="display_options_sort_list_by">Trier par</string>
   <string name="display_options_sort_by_given_name">Prénom</string>
   <string name="display_options_sort_by_family_name">Nom</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Effacer la recherche</string>
   <string name="select_account_dialog_title">Compte</string>
   <string name="set_default_account">Toujours l\'utiliser pour les appels</string>
-  <string name="select_phone_account_for_calls">Choisir la carte SIM pour cet appel</string>
-  <string name="select_phone_account_for_calls_remember">Mémoriser ce choix</string>
   <string name="call_with_a_note">Appeler avec une note</string>
   <string name="call_subject_hint">Saisissez une note pour accompagner l\'appel...</string>
   <string name="send_and_call_button">ENVOYER ET APPELER</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Onglet %1$s. %2$d éléments non lus. </item>
   </plurals>
   <string name="description_search_video_call">Appel vidéo</string>
-  <string name="description_search_call_and_share">Partager et appeler</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-gl/strings.xml b/java/com/android/contacts/common/res/values-gl/strings.xml
index 9a4bda1..5458d08 100644
--- a/java/com/android/contacts/common/res/values-gl/strings.xml
+++ b/java/com/android/contacts/common/res/values-gl/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Borrar contactados con frecuencia?</string>
   <string name="clearFrequentsConfirmation">Borra a lista de persoas coas que contactaches frecuentemente das aplicacións Contactos e Teléfono, e obriga ás aplicacións de correo electrónico a que memoricen as túas preferencias de enderezos desde cero.</string>
   <string name="clearFrequentsProgress_title">Borrando contactados frecuencia...</string>
-  <string name="status_available">Dispoñible</string>
-  <string name="status_away">Ausente</string>
-  <string name="status_busy">Ocupado</string>
-  <string name="contactsList">Contactos</string>
-  <string name="contact_suggestions">Suxestións destacadas</string>
-  <string name="local_invisible_directory">Outro</string>
   <string name="directory_search_label">Directorio</string>
   <string name="directory_search_label_work">Directorio de traballo</string>
-  <string name="local_search_label">Todos os contactos</string>
-  <string name="local_suggestions_search_label">Suxestións</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Eu</string>
   <string name="missing_name">(Sen nome)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Ver contacto</string>
-  <string name="list_filter_phones">Todos os contactos con números de teléfono</string>
-  <string name="list_filter_phones_work">Contactos do perfil de traballo</string>
   <string name="view_updates_from_group">Ver actualizacións</string>
   <string name="account_phone">Só no dispositivo, sen sincronizar</string>
   <string name="nameLabelsGroup">Nome</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chatear con ICQ</string>
   <string name="chat_jabber">Chatear con Jabber</string>
   <string name="chat">Chatear</string>
-  <string name="list_filter_all_accounts">Todos os contactos</string>
-  <string name="listAllContactsInAccount">Contactos en %s</string>
-  <string name="listCustomView">Contactos na vista personalizada</string>
-  <string name="listSingleContact">Un só contacto</string>
   <string name="display_options_sort_list_by">Ordenar por</string>
   <string name="display_options_sort_by_given_name">Nome</string>
   <string name="display_options_sort_by_family_name">Apelidos</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Borrar busca</string>
   <string name="select_account_dialog_title">Conta</string>
   <string name="set_default_account">Usar sempre para as chamadas</string>
-  <string name="select_phone_account_for_calls">Escolle a SIM para esta chamada</string>
-  <string name="select_phone_account_for_calls_remember">Lembrar esta opción</string>
   <string name="call_with_a_note">Chamar cunha nota</string>
   <string name="call_subject_hint">Escribe unha nota para enviala coa chamada…</string>
   <string name="send_and_call_button">ENVIAR E CHAMAR</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Pestana %1$s. %2$d elementos non lidos. </item>
   </plurals>
   <string name="description_search_video_call">Videochamada</string>
-  <string name="description_search_call_and_share">Comparte e chama</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-gu/strings.xml b/java/com/android/contacts/common/res/values-gu/strings.xml
index 9e8c1aa..044403f 100644
--- a/java/com/android/contacts/common/res/values-gu/strings.xml
+++ b/java/com/android/contacts/common/res/values-gu/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">વારંવાર સંપર્ક કરેલા સાફ કરીએ?</string>
   <string name="clearFrequentsConfirmation">તમે સંપર્કો અને ફોન એપ્લિકેશન્સમાં વારંવાર સંપર્ક કરેલ સૂચિને સાફ કરશો અને ઇમેઇલ એપ્લિકેશન્સને તમારી સંબોધન પસંદગીઓને શરૂઆતથી જાણવા માટે ફરજ પાડશો.</string>
   <string name="clearFrequentsProgress_title">વારંવાર સંપર્ક કરેલા સાફ કરે છે…</string>
-  <string name="status_available">ઉપલબ્ધ</string>
-  <string name="status_away">દૂર</string>
-  <string name="status_busy">વ્યસ્ત</string>
-  <string name="contactsList">સંપર્કો</string>
-  <string name="contact_suggestions">ટોચના સૂચવેલ</string>
-  <string name="local_invisible_directory">અન્ય</string>
   <string name="directory_search_label">નિર્દેશિકા</string>
   <string name="directory_search_label_work">કાર્ય નિર્દેશિકા</string>
-  <string name="local_search_label">તમામ સંપર્કો</string>
-  <string name="local_suggestions_search_label">સૂચનો</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">હું</string>
   <string name="missing_name">(નામ નથી)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">સંપર્ક જુઓ</string>
-  <string name="list_filter_phones">ફોન નંબર્સ સાથેના તમામ સંપર્કો</string>
-  <string name="list_filter_phones_work">કાર્ય પ્રોફાઇલના સંપર્કો</string>
   <string name="view_updates_from_group">અપડેટ્સ જુઓ</string>
   <string name="account_phone">ફક્ત-ઉપકરણ, સમન્વયિત ન કરેલ</string>
   <string name="nameLabelsGroup">નામ</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ નો ઉપયોગ કરીને ચેટ કરો</string>
   <string name="chat_jabber">Jabber નો ઉપયોગ કરીને ચેટ કરો</string>
   <string name="chat">ચેટ</string>
-  <string name="list_filter_all_accounts">તમામ સંપર્કો</string>
-  <string name="listAllContactsInAccount">%s માં સંપર્કો</string>
-  <string name="listCustomView">કસ્ટમ દૃશ્યમાં સંપર્કો</string>
-  <string name="listSingleContact">એકલ સંપર્ક</string>
   <string name="display_options_sort_list_by">આ પ્રમાણે સૉર્ટ કરો</string>
   <string name="display_options_sort_by_given_name">પ્રથમ નામ</string>
   <string name="display_options_sort_by_family_name">છેલ્લું નામ</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">શોધ સાફ કરો</string>
   <string name="select_account_dialog_title">એકાઉન્ટ</string>
   <string name="set_default_account">કૉલ્સ માટે આનો ઉપયોગ હંમેશાં કરો</string>
-  <string name="select_phone_account_for_calls">આ કૉલ માટે સિમ પસંદ કરો</string>
-  <string name="select_phone_account_for_calls_remember">આ પસંદ યાદ રાખો</string>
   <string name="call_with_a_note">નોંધ સાથે કૉલ કરો</string>
   <string name="call_subject_hint">કૉલ સાથે મોકલવા માટે એક નોંધ લખો ...</string>
   <string name="send_and_call_button">મોકલો અને કૉલ કરો</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ટૅબ. %2$d વાંચ્યા વગરની આઇટમ. </item>
   </plurals>
   <string name="description_search_video_call">વિડિઓ કૉલ</string>
-  <string name="description_search_call_and_share">શેર કરો અને કૉલ કરો</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-hi/strings.xml b/java/com/android/contacts/common/res/values-hi/strings.xml
index 1cbee95..8ad7add 100644
--- a/java/com/android/contacts/common/res/values-hi/strings.xml
+++ b/java/com/android/contacts/common/res/values-hi/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">अक्‍सर किए जाने वाले संपर्क साफ करें?</string>
   <string name="clearFrequentsConfirmation">आपको संपर्क और फ़ोन ऐप्स से अक्सर संपर्क किए जाने वाली सूची साफ़ करनी होगी, और अपने ईमेल ऐप्स को आपकी पता प्राथमिकताओं को प्रारंभ से जानने के लिए बाध्य करना होगा.</string>
   <string name="clearFrequentsProgress_title">अक्सर किए जाने वाले संपर्क साफ कर रहा है…</string>
-  <string name="status_available">उपलब्ध</string>
-  <string name="status_away">दूर</string>
-  <string name="status_busy">व्यस्त</string>
-  <string name="contactsList">संपर्क</string>
-  <string name="contact_suggestions">शीर्ष सुझाव</string>
-  <string name="local_invisible_directory">अन्य</string>
   <string name="directory_search_label">निर्देशिका</string>
   <string name="directory_search_label_work">कार्य निर्देशिका</string>
-  <string name="local_search_label">सभी संपर्क</string>
-  <string name="local_suggestions_search_label">सुझाव</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">मुझे</string>
   <string name="missing_name">(कोई नाम नहीं)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">संपर्क देखें</string>
-  <string name="list_filter_phones">फ़ोन नंबरों वाले सभी संपर्क</string>
-  <string name="list_filter_phones_work">कार्य प्रोफ़ाइल के संपर्क</string>
   <string name="view_updates_from_group">नई जानकारी देखें</string>
   <string name="account_phone">केवल-डिवाइस के लिए, असमन्वयित</string>
   <string name="nameLabelsGroup">नाम</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ का उपयोग करके बातचीत करें</string>
   <string name="chat_jabber">Jabber का उपयोग करके बातचीत करें</string>
   <string name="chat">बातचीत करें</string>
-  <string name="list_filter_all_accounts">सभी संपर्क</string>
-  <string name="listAllContactsInAccount">%s के संपर्क</string>
-  <string name="listCustomView">कस्टम दृश्य में संपर्क</string>
-  <string name="listSingleContact">एकल संपर्क</string>
   <string name="display_options_sort_list_by">इससे क्रमित करें</string>
   <string name="display_options_sort_by_given_name">नाम</string>
   <string name="display_options_sort_by_family_name">उपनाम</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">खोज साफ़ करें</string>
   <string name="select_account_dialog_title">खाता</string>
   <string name="set_default_account">कॉल के लिए हमेशा इसका उपयोग करें</string>
-  <string name="select_phone_account_for_calls">इस कॉल के लिए सिम चुनें</string>
-  <string name="select_phone_account_for_calls_remember">यह चयन याद रखें</string>
   <string name="call_with_a_note">नोट के साथ कॉल करें</string>
   <string name="call_subject_hint">कॉल के साथ भेजने के लिए नोट लिखें ...</string>
   <string name="send_and_call_button">भेजें और कॉल करें</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s टैब. %2$d नहीं पढ़े गए आइटम. </item>
   </plurals>
   <string name="description_search_video_call">वीडियो कॉल</string>
-  <string name="description_search_call_and_share">शेयर करें और कॉल करें</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-hr/strings.xml b/java/com/android/contacts/common/res/values-hr/strings.xml
index e8d2b56..2aa0f94 100644
--- a/java/com/android/contacts/common/res/values-hr/strings.xml
+++ b/java/com/android/contacts/common/res/values-hr/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Brisati podatke o čestim kontaktima?</string>
   <string name="clearFrequentsConfirmation">Izbrisat ćete popis osoba s kojima često kontaktirate u aplikacijama Kontakti i Osobe, pa će aplikacije e-pošte morati ispočetka učiti vaše postavke adresiranja.</string>
   <string name="clearFrequentsProgress_title">Brisanje često kontaktiranih...</string>
-  <string name="status_available">Dostupan</string>
-  <string name="status_away">Odsutan</string>
-  <string name="status_busy">Zauzet</string>
-  <string name="contactsList">Kontakti</string>
-  <string name="contact_suggestions">Najbolji prijedlozi</string>
-  <string name="local_invisible_directory">Drugo</string>
   <string name="directory_search_label">Direktorij</string>
   <string name="directory_search_label_work">Poslovni direktorij</string>
-  <string name="local_search_label">Svi kontakti</string>
-  <string name="local_suggestions_search_label">Prijedlozi</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ja</string>
   <string name="missing_name">(Bez imena)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Prikaži kontakt</string>
-  <string name="list_filter_phones">Svi kontakti s telefonskim brojevima</string>
-  <string name="list_filter_phones_work">Poslovni kontakti</string>
   <string name="view_updates_from_group">Prikaži ažuriranja</string>
   <string name="account_phone">Samo uređaj, bez sinkronizacije</string>
   <string name="nameLabelsGroup">Ime</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chatajte pomoću ICQ-a</string>
   <string name="chat_jabber">Chatajte uz Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Svi kontakti</string>
-  <string name="listAllContactsInAccount">Kontakti na računu %s</string>
-  <string name="listCustomView">Kontakti u prilagođenom prikazu</string>
-  <string name="listSingleContact">Jedan kontakt</string>
   <string name="display_options_sort_list_by">Poredaj po</string>
   <string name="display_options_sort_by_given_name">Ime</string>
   <string name="display_options_sort_by_family_name">Prezime</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Brisanje pretraživanja</string>
   <string name="select_account_dialog_title">Račun</string>
   <string name="set_default_account">Uvijek upotrebljavaj za pozive</string>
-  <string name="select_phone_account_for_calls">Odabir SIM-a za ovaj poziv</string>
-  <string name="select_phone_account_for_calls_remember">Zapamti ovaj odabir</string>
   <string name="call_with_a_note">Poziv uz bilješku</string>
   <string name="call_subject_hint">Napišite bilješku koju ćete poslati uz poziv...</string>
   <string name="send_and_call_button">POŠALJI I NAZOVI</string>
@@ -142,5 +124,4 @@
     <item quantity="other"> Kartica %1$s. %2$d nepročitanih stavki. </item>
   </plurals>
   <string name="description_search_video_call">Videopoziv</string>
-  <string name="description_search_call_and_share">Dijeli i pozovi</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-hu/strings.xml b/java/com/android/contacts/common/res/values-hu/strings.xml
index 9f0d80a..cb869f2 100644
--- a/java/com/android/contacts/common/res/values-hu/strings.xml
+++ b/java/com/android/contacts/common/res/values-hu/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Törli a gyakran keresetteket?</string>
   <string name="clearFrequentsConfirmation">Törölni fogja a gyakran keresett személyek listáját a Névjegyek és a Telefon alkalmazásban, és arra kényszeríti az e-mail alkalmazásokat, hogy elölről kezdjék az Ön címzési szokásainak megtanulását.</string>
   <string name="clearFrequentsProgress_title">Gyakran keresettek törlése...</string>
-  <string name="status_available">Elérhető</string>
-  <string name="status_away">Nincs a gépnél</string>
-  <string name="status_busy">Elfoglalt</string>
-  <string name="contactsList">Címtár</string>
-  <string name="contact_suggestions">Legjobb javaslatok</string>
-  <string name="local_invisible_directory">Egyéb</string>
   <string name="directory_search_label">Címtár</string>
   <string name="directory_search_label_work">Munkahelyi névjegyek címtára</string>
-  <string name="local_search_label">Összes névjegy</string>
-  <string name="local_suggestions_search_label">Javaslatok</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Én</string>
   <string name="missing_name">(Nincs név)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Névjegy megtekintése</string>
-  <string name="list_filter_phones">Minden névjegy telefonszámokkal</string>
-  <string name="list_filter_phones_work">Munkaprofilhoz tartozó névjegyek</string>
   <string name="view_updates_from_group">Frissítések megtekintése</string>
   <string name="account_phone">Csak az eszközön, nincs szinkronizálva</string>
   <string name="nameLabelsGroup">Név</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Csevegés az ICQ-n</string>
   <string name="chat_jabber">Csevegés Jabberen</string>
   <string name="chat">Csevegés</string>
-  <string name="list_filter_all_accounts">Az összes névjegy</string>
-  <string name="listAllContactsInAccount">Ismerősök itt: %s</string>
-  <string name="listCustomView">Egyéni nézet névjegyei</string>
-  <string name="listSingleContact">Egyetlen névjegy</string>
   <string name="display_options_sort_list_by">Rendezés alapja</string>
   <string name="display_options_sort_by_given_name">Utónév</string>
   <string name="display_options_sort_by_family_name">Vezetéknév</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Keresés törlése</string>
   <string name="select_account_dialog_title">Fiók</string>
   <string name="set_default_account">Mindig ezt használja hívásokhoz</string>
-  <string name="select_phone_account_for_calls">SIM-kártya kiválasztása a híváshoz</string>
-  <string name="select_phone_account_for_calls_remember">Választás megjegyzése</string>
   <string name="call_with_a_note">Hívás üzenettel</string>
   <string name="call_subject_hint">Írjon üzenetet, amelyet elküldhetünk a hívással együtt…</string>
   <string name="send_and_call_button">KÜLDÉS ÉS HÍVÁS</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s lap. %2$d olvasatlan elem. </item>
   </plurals>
   <string name="description_search_video_call">Videohívás</string>
-  <string name="description_search_call_and_share">Megosztás és hívás</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-hy/strings.xml b/java/com/android/contacts/common/res/values-hy/strings.xml
index 7cbd770..35adbf2 100644
--- a/java/com/android/contacts/common/res/values-hy/strings.xml
+++ b/java/com/android/contacts/common/res/values-hy/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Մաքրե՞լ հաճախակի հաղորդակցվածները</string>
   <string name="clearFrequentsConfirmation">Դուք կմաքրեք հաճախակի հաղորդակցվողների ցանկը Կոնտակտներ և Հեռախոս հավելվածներում, և ձեր էլփոստի ծրագիրը զրոյից կսովորի ձեր հասցեագրումների նախընտրությունները:</string>
   <string name="clearFrequentsProgress_title">Հաճախակի հաղորդակցումների մաքրում...</string>
-  <string name="status_available">Հասանելի</string>
-  <string name="status_away">Տեղում չէ</string>
-  <string name="status_busy">Զբաղված</string>
-  <string name="contactsList">Կոնտակտներ</string>
-  <string name="contact_suggestions">Լավագույն առաջարկներ</string>
-  <string name="local_invisible_directory">Այլ</string>
   <string name="directory_search_label">Գրացուցակ</string>
   <string name="directory_search_label_work">Աշխատանքային գրացուցակ</string>
-  <string name="local_search_label">Բոլոր կոնտակտները</string>
-  <string name="local_suggestions_search_label">Առաջարկներ</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ես</string>
   <string name="missing_name">(Անանուն)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Դիտել կոնտակտը</string>
-  <string name="list_filter_phones">Բոլոր հեռախոսահամարներով կոնտատկները</string>
-  <string name="list_filter_phones_work">Աշխատանքային պրոֆիլի կոնտակտներ</string>
   <string name="view_updates_from_group">Դիտել թարմացումները</string>
   <string name="account_phone">Միայն սարքում, չհամաժամեցված</string>
   <string name="nameLabelsGroup">Անուն</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Զրուցել ICQ-ով</string>
   <string name="chat_jabber">Զրուցել Jabber-ով</string>
   <string name="chat">Զրույց</string>
-  <string name="list_filter_all_accounts">Բոլոր կոնտակտները</string>
-  <string name="listAllContactsInAccount">%s-ի կոնտակտները</string>
-  <string name="listCustomView">Հատուկ տեսքով կոնտակտներ</string>
-  <string name="listSingleContact">Մեկ կոնտակտ</string>
   <string name="display_options_sort_list_by">Դասավորել ըստ</string>
   <string name="display_options_sort_by_given_name">Անվան</string>
   <string name="display_options_sort_by_family_name">Ազգանվան</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Մաքրել որոնման դաշտը</string>
   <string name="select_account_dialog_title">Հաշիվ</string>
   <string name="set_default_account">Միշտ օգտագործել սա՝ զանգերի համար</string>
-  <string name="select_phone_account_for_calls">Ընտրեք, թե որ SIM քարտով զանգել</string>
-  <string name="select_phone_account_for_calls_remember">Հիշել այս ընտրությունը</string>
   <string name="call_with_a_note">Գրառումով զանգ</string>
   <string name="call_subject_hint">Մուտքագրեք նշում՝ զանգի հետ ուղարկելու համար ...</string>
   <string name="send_and_call_button">ՈՒՂԱՐԿԵԼ ԵՎ ԶԱՆԳԵԼ</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ներդիր: %2$d չկարդացված տարր: </item>
   </plurals>
   <string name="description_search_video_call">Տեսազանգ</string>
-  <string name="description_search_call_and_share">Կիսվել և զանգել</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-in/strings.xml b/java/com/android/contacts/common/res/values-in/strings.xml
index aeb477a..53cb2d6 100644
--- a/java/com/android/contacts/common/res/values-in/strings.xml
+++ b/java/com/android/contacts/common/res/values-in/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Hapus yang sering dihubungi?</string>
   <string name="clearFrequentsConfirmation">Anda akan menghapus daftar yang sering dihubungi pada aplikasi Kontak dan Ponsel, serta memaksa aplikasi email untuk mempelajari preferensi penanganan dari awal.</string>
   <string name="clearFrequentsProgress_title">Menghapus yang sering dihubungi...</string>
-  <string name="status_available">Ada</string>
-  <string name="status_away">Keluar</string>
-  <string name="status_busy">Sibuk</string>
-  <string name="contactsList">Kontak</string>
-  <string name="contact_suggestions">Paling Disarankan</string>
-  <string name="local_invisible_directory">Lainnya</string>
   <string name="directory_search_label">Direktori</string>
   <string name="directory_search_label_work">Direktori kerja</string>
-  <string name="local_search_label">Semua kontak</string>
-  <string name="local_suggestions_search_label">Saran</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Saya</string>
   <string name="missing_name">(Tanpa nama)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Lihat kontak</string>
-  <string name="list_filter_phones">Semua kontak dengan nomor telepon</string>
-  <string name="list_filter_phones_work">Kontak profil kerja</string>
   <string name="view_updates_from_group">Lihat pembaruan</string>
   <string name="account_phone">Hanya perangkat, tidak disinkronkan</string>
   <string name="nameLabelsGroup">Nama</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Ngobrol menggunakan ICQ</string>
   <string name="chat_jabber">Ngobrol menggunakan Jabber</string>
   <string name="chat">Ngobrol</string>
-  <string name="list_filter_all_accounts">Semua kontak</string>
-  <string name="listAllContactsInAccount">Kontak di %s</string>
-  <string name="listCustomView">Kontak dalam tampilan khusus</string>
-  <string name="listSingleContact">Kontak tunggal</string>
   <string name="display_options_sort_list_by">Urutkan menurut</string>
   <string name="display_options_sort_by_given_name">Nama depan</string>
   <string name="display_options_sort_by_family_name">Nama belakang</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Hapus penelusuran</string>
   <string name="select_account_dialog_title">Akun</string>
   <string name="set_default_account">Selalu gunakan ini untuk telepon</string>
-  <string name="select_phone_account_for_calls">Pilih SIM untuk panggilan ini</string>
-  <string name="select_phone_account_for_calls_remember">Ingat pilihan ini</string>
   <string name="call_with_a_note">Telepon dengan catatan</string>
   <string name="call_subject_hint">Ketik catatan untuk dikirim dengan panggilan telepon ...</string>
   <string name="send_and_call_button">KIRIM &amp; TELEPON</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Tab %1$s. %2$d item belum dibaca. </item>
   </plurals>
   <string name="description_search_video_call">Video call</string>
-  <string name="description_search_call_and_share">Membagikan dan menelepon</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-is/strings.xml b/java/com/android/contacts/common/res/values-is/strings.xml
index 534e954..a841d71 100644
--- a/java/com/android/contacts/common/res/values-is/strings.xml
+++ b/java/com/android/contacts/common/res/values-is/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Hreinsa mest notaða tengiliði?</string>
   <string name="clearFrequentsConfirmation">Þetta hreinsar tengiliðina sem þú hefur mest samskipti við úr forritunum Tengiliðir og Sími og þvingar tölvupóstforrit til að læra upp á nýtt hvernig þú notar netföng.</string>
   <string name="clearFrequentsProgress_title">Hreinsar mest notaða tengiliði…</string>
-  <string name="status_available">Laus</string>
-  <string name="status_away">Í burtu</string>
-  <string name="status_busy">Upptekin(n)</string>
-  <string name="contactsList">Tengiliðir</string>
-  <string name="contact_suggestions">Helstu tillögur</string>
-  <string name="local_invisible_directory">Annað</string>
   <string name="directory_search_label">Skrá</string>
   <string name="directory_search_label_work">Vinnuskrá</string>
-  <string name="local_search_label">Allir tengiliðir</string>
-  <string name="local_suggestions_search_label">Tillögur</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ég</string>
   <string name="missing_name">(Nafn vantar)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Skoða tengilið</string>
-  <string name="list_filter_phones">Allir tengiliðir með símanúmer</string>
-  <string name="list_filter_phones_work">Tengiliðir í vinnusniði</string>
   <string name="view_updates_from_group">Skoða uppfærslur</string>
   <string name="account_phone">Eingöngu á tæki, ósamstillt</string>
   <string name="nameLabelsGroup">Nafn</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Spjalla með ICQ</string>
   <string name="chat_jabber">Spjalla með Jabber</string>
   <string name="chat">Spjalla</string>
-  <string name="list_filter_all_accounts">Allir tengiliðir</string>
-  <string name="listAllContactsInAccount">Tengiliðir á %s</string>
-  <string name="listCustomView">Tengiliðir á sérsniðnu yfirliti</string>
-  <string name="listSingleContact">Einn tengiliður</string>
   <string name="display_options_sort_list_by">Raða eftir</string>
   <string name="display_options_sort_by_given_name">Fornafn</string>
   <string name="display_options_sort_by_family_name">Eftirnafn</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Hreinsa leit</string>
   <string name="select_account_dialog_title">Reikningur</string>
   <string name="set_default_account">Nota þetta alltaf fyrir símtöl</string>
-  <string name="select_phone_account_for_calls">Veldu SIM-kort fyrir þetta símtal</string>
-  <string name="select_phone_account_for_calls_remember">Muna þetta val</string>
   <string name="call_with_a_note">Símtal með texta</string>
   <string name="call_subject_hint">Sláðu inn texta til að senda með símtalinu...</string>
   <string name="send_and_call_button">SENDA OG HRINGJA</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Flipinn %1$s. %2$d ólesin atriði. </item>
   </plurals>
   <string name="description_search_video_call">Hringja myndsímtal</string>
-  <string name="description_search_call_and_share">Deila og hringja</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-it/strings.xml b/java/com/android/contacts/common/res/values-it/strings.xml
index 1ec5019..f703b9f 100644
--- a/java/com/android/contacts/common/res/values-it/strings.xml
+++ b/java/com/android/contacts/common/res/values-it/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Cancellare contattati di frequente?</string>
   <string name="clearFrequentsConfirmation">Verrà cancellato l\'elenco dei contatti frequenti nelle app Contatti e Telefono e le app email dovranno apprendere da zero le tue preferenze di comunicazione.</string>
   <string name="clearFrequentsProgress_title">Cancellazione contattati di frequente…</string>
-  <string name="status_available">Disponibile</string>
-  <string name="status_away">Assente</string>
-  <string name="status_busy">Occupato</string>
-  <string name="contactsList">Contatti</string>
-  <string name="contact_suggestions">Suggerimenti più popolari</string>
-  <string name="local_invisible_directory">Altro</string>
   <string name="directory_search_label">Directory</string>
   <string name="directory_search_label_work">Directory di lavoro</string>
-  <string name="local_search_label">Tutti i contatti</string>
-  <string name="local_suggestions_search_label">Suggerimenti</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Io</string>
   <string name="missing_name">(Nessun nome)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Visualizza contatto</string>
-  <string name="list_filter_phones">Tutti i contatti con numeri di telefono</string>
-  <string name="list_filter_phones_work">Contatti del profilo di lavoro</string>
   <string name="view_updates_from_group">Visualizza aggiornamenti</string>
   <string name="account_phone">Solo dispositivo, non sincronizzato</string>
   <string name="nameLabelsGroup">Nome</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chatta su ICQ</string>
   <string name="chat_jabber">Chatta su Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Tutti i contatti</string>
-  <string name="listAllContactsInAccount">Contatti in %s</string>
-  <string name="listCustomView">Contatti in visualizzazione personalizzata</string>
-  <string name="listSingleContact">Contatto singolo</string>
   <string name="display_options_sort_list_by">Ordina per</string>
   <string name="display_options_sort_by_given_name">Nome</string>
   <string name="display_options_sort_by_family_name">Cognome</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Cancella ricerca</string>
   <string name="select_account_dialog_title">Account</string>
   <string name="set_default_account">Usa sempre questa per chiamare</string>
-  <string name="select_phone_account_for_calls">Scegli la SIM per questa chiamata</string>
-  <string name="select_phone_account_for_calls_remember">Memorizza questa scelta</string>
   <string name="call_with_a_note">Chiama e invia una nota</string>
   <string name="call_subject_hint">Digita una nota da inviare con la chiamata...</string>
   <string name="send_and_call_button">INVIA E CHIAMA</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Scheda %1$s. %2$d elementi da leggere. </item>
   </plurals>
   <string name="description_search_video_call">Videochiamata</string>
-  <string name="description_search_call_and_share">Condividi e chiama</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-iw/strings.xml b/java/com/android/contacts/common/res/values-iw/strings.xml
index f3d5e39..e056b4e 100644
--- a/java/com/android/contacts/common/res/values-iw/strings.xml
+++ b/java/com/android/contacts/common/res/values-iw/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">האם למחוק אנשי קשר קבועים?</string>
   <string name="clearFrequentsConfirmation">הפעולה הזו תמחק מהאפליקציות \'אנשים\' ו\'טלפון\' את רשימת אנשי הקשר שאיתם אתה יוצר קשר בתדירות גבוהה, ויהיה עליך ללמד מחדש את אפליקציות האימייל את הכתובות המועדפות עליך.</string>
   <string name="clearFrequentsProgress_title">מוחק אנשי קשר קבועים…</string>
-  <string name="status_available">זמין</string>
-  <string name="status_away">לא נמצא</string>
-  <string name="status_busy">לא פנוי</string>
-  <string name="contactsList">אנשי קשר</string>
-  <string name="contact_suggestions">הצעות מובילות</string>
-  <string name="local_invisible_directory">אחר</string>
   <string name="directory_search_label">ספריה</string>
   <string name="directory_search_label_work">ספריית עבודה</string>
-  <string name="local_search_label">כל אנשי הקשר</string>
-  <string name="local_suggestions_search_label">הצעות</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">אני</string>
   <string name="missing_name">(ללא שם)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">הצג איש קשר</string>
-  <string name="list_filter_phones">כל אנשי הקשר עם מספרי טלפון</string>
-  <string name="list_filter_phones_work">אנשי הקשר של פרופיל העבודה</string>
   <string name="view_updates_from_group">הצג עדכונים</string>
   <string name="account_phone">במכשיר בלבד, ללא סנכרון</string>
   <string name="nameLabelsGroup">שם</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">‏שוחח בצ\'אט באמצעות ICQ</string>
   <string name="chat_jabber">‏שוחח בצ\'אט באמצעות Jabber</string>
   <string name="chat">צ\'אט</string>
-  <string name="list_filter_all_accounts">כל אנשי הקשר</string>
-  <string name="listAllContactsInAccount">אנשי קשר ב-%s</string>
-  <string name="listCustomView">אנשי קשר בתצוגה מותאמת אישית</string>
-  <string name="listSingleContact">איש קשר יחיד</string>
   <string name="display_options_sort_list_by">מיון לפי</string>
   <string name="display_options_sort_by_given_name">שם פרטי</string>
   <string name="display_options_sort_by_family_name">שם משפחה</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">נקה חיפוש</string>
   <string name="select_account_dialog_title">חשבון</string>
   <string name="set_default_account">השתמש תמיד עבור שיחות</string>
-  <string name="select_phone_account_for_calls">‏בחירת כרטיס SIM לשיחה הזו</string>
-  <string name="select_phone_account_for_calls_remember">אני רוצה להשתמש באפשרות הזו גם בעתיד</string>
   <string name="call_with_a_note">התקשר עם הערה</string>
   <string name="call_subject_hint">הקלד הערה לשליחה עם השיחה...</string>
   <string name="send_and_call_button">שלח והתקשר</string>
@@ -143,5 +125,4 @@
     <item quantity="other">הכרטיסייה %1$s. %2$d פריטים שלא נקראו. </item>
   </plurals>
   <string name="description_search_video_call">שיחת וידאו</string>
-  <string name="description_search_call_and_share">שיתוף והתקשרות</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ja/strings.xml b/java/com/android/contacts/common/res/values-ja/strings.xml
index 1a2e8d0..e0c62a7 100644
--- a/java/com/android/contacts/common/res/values-ja/strings.xml
+++ b/java/com/android/contacts/common/res/values-ja/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">よく使う連絡先を消去しますか？</string>
   <string name="clearFrequentsConfirmation">連絡帳アプリや電話アプリのよく使う連絡先リストを消去し、メールアプリがアドレス設定を初めから保存していくようにします。</string>
   <string name="clearFrequentsProgress_title">よく使う連絡先を消去しています…</string>
-  <string name="status_available">オンライン</string>
-  <string name="status_away">不在</string>
-  <string name="status_busy">取り込み中</string>
-  <string name="contactsList">連絡先</string>
-  <string name="contact_suggestions">おすすめ</string>
-  <string name="local_invisible_directory">その他</string>
   <string name="directory_search_label">ディレクトリ</string>
   <string name="directory_search_label_work">仕事用の連絡先リスト</string>
-  <string name="local_search_label">すべての連絡先</string>
-  <string name="local_suggestions_search_label">候補</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">自分</string>
   <string name="missing_name">（名前なし）</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">連絡先を表示</string>
-  <string name="list_filter_phones">電話番号のあるすべての連絡先</string>
-  <string name="list_filter_phones_work">仕事用プロファイルの連絡先</string>
   <string name="view_updates_from_group">更新情報を表示</string>
   <string name="account_phone">端末のみ、未同期</string>
   <string name="nameLabelsGroup">名前</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQでチャット</string>
   <string name="chat_jabber">Jabberでチャット</string>
   <string name="chat">チャット</string>
-  <string name="list_filter_all_accounts">すべての連絡先</string>
-  <string name="listAllContactsInAccount">%sの連絡先</string>
-  <string name="listCustomView">連絡先のカスタム表示</string>
-  <string name="listSingleContact">単独の連絡先</string>
   <string name="display_options_sort_list_by">並べ替え順序</string>
   <string name="display_options_sort_by_given_name">名</string>
   <string name="display_options_sort_by_family_name">姓</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">検索をクリア</string>
   <string name="select_account_dialog_title">アカウント</string>
   <string name="set_default_account">このSIMを常に通話に使用する</string>
-  <string name="select_phone_account_for_calls">この通話で使用する SIM の選択</string>
-  <string name="select_phone_account_for_calls_remember">この設定を記憶する</string>
   <string name="call_with_a_note">メモを添付して発信</string>
   <string name="call_subject_hint">発信時に送信するメモを入力...</string>
   <string name="send_and_call_button">送信 / 通話</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s タブ。%2$d 件の未読項目。</item>
   </plurals>
   <string name="description_search_video_call">ビデオ通話</string>
-  <string name="description_search_call_and_share">共有して発信</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ka/strings.xml b/java/com/android/contacts/common/res/values-ka/strings.xml
index 07d67e4..e0a4ed3 100644
--- a/java/com/android/contacts/common/res/values-ka/strings.xml
+++ b/java/com/android/contacts/common/res/values-ka/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">გსურთ ხშირი კონტაქტების წაშლა?</string>
   <string name="clearFrequentsConfirmation">თქვენ წაშლით ხშირად დაკავშირებულთა სიას კონტაქტებიდან და ტელეფონის აპლიკაციიდან და აიძულებთ ელ-ფოსტის აპლიკაციებს შეისწავლონ თქვენი ადრესატების პრიორიტეტები ნულიდან.</string>
   <string name="clearFrequentsProgress_title">ხშირი კონტაქტები იშლება…</string>
-  <string name="status_available">ხელმისაწვდომი</string>
-  <string name="status_away">გასული</string>
-  <string name="status_busy">დაკავებული</string>
-  <string name="contactsList">კონტაქტები</string>
-  <string name="contact_suggestions">საუკეთესო შეთავაზებები</string>
-  <string name="local_invisible_directory">სხვა</string>
   <string name="directory_search_label">კატალოგი</string>
   <string name="directory_search_label_work">სამსახურის კატალოგი</string>
-  <string name="local_search_label">ყველა კონტაქტი</string>
-  <string name="local_suggestions_search_label">შეთავაზებები</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">მე</string>
   <string name="missing_name">(სახელის გარეშე)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">კონტაქტის ნახვა</string>
-  <string name="list_filter_phones">ყველა ტელეფონის ნომრიანი კონტაქტი</string>
-  <string name="list_filter_phones_work">სამსახურის პროფილის კონტაქტები</string>
   <string name="view_updates_from_group">განახლებების ნახვა</string>
   <string name="account_phone">მხოლოდ მოწყობილობაზე, სინქრონიზაციის გარეშე</string>
   <string name="nameLabelsGroup">სახელი</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ჩეთი ICQ-ით</string>
   <string name="chat_jabber">ჩეთი Jabber-ით</string>
   <string name="chat">ჩეთი</string>
-  <string name="list_filter_all_accounts">ყველა კონტაქტი</string>
-  <string name="listAllContactsInAccount">კონტაქტები %s-ში</string>
-  <string name="listCustomView">კონტაქტები მორგებულ ხედში</string>
-  <string name="listSingleContact">ერთი კონტაქტი</string>
   <string name="display_options_sort_list_by">სორტირება:</string>
   <string name="display_options_sort_by_given_name">სახელით</string>
   <string name="display_options_sort_by_family_name">გვარით</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">ძიების გასუფთავება</string>
   <string name="select_account_dialog_title">ანგარიში</string>
   <string name="set_default_account">ზარებისთვის მუდამ ამის გამოყენება</string>
-  <string name="select_phone_account_for_calls">აირჩიეთ SIM ამ ზარისთვის</string>
-  <string name="select_phone_account_for_calls_remember">ამ არჩევანის დამახსოვრება</string>
   <string name="call_with_a_note">ზარი შენიშვნასთან ერთად</string>
   <string name="call_subject_hint">აკრიფეთ შენიშვნა ზართან ერთად გასაგზავნად ...</string>
   <string name="send_and_call_button">გაგზავნა და დარეკვა</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ცხრ. %2$d წაუკითხავი ერთეული. </item>
   </plurals>
   <string name="description_search_video_call">ვიდეოზარი</string>
-  <string name="description_search_call_and_share">გაზიარება და დარეკვა</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-kk/strings.xml b/java/com/android/contacts/common/res/values-kk/strings.xml
index 4ac3150..b7d34ae 100644
--- a/java/com/android/contacts/common/res/values-kk/strings.xml
+++ b/java/com/android/contacts/common/res/values-kk/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Жиі қолданылғандар тазартылсын ба?</string>
   <string name="clearFrequentsConfirmation">Контактілер және Телефондар қолданбаларындағы жиі хабарласатындар тізімі тазаланады және электрондық пошта қолданбалары мекенжай параметрлерін басынан үйренуге мәжбүрленеді.</string>
   <string name="clearFrequentsProgress_title">Жиі қолданылғандар тазартылуда…</string>
-  <string name="status_available">Қол жетімді</string>
-  <string name="status_away">Желіден тыс</string>
-  <string name="status_busy">Бос емес</string>
-  <string name="contactsList">Контактілер</string>
-  <string name="contact_suggestions">Үздік ұсыныстар</string>
-  <string name="local_invisible_directory">Басқа</string>
   <string name="directory_search_label">Анықтама</string>
   <string name="directory_search_label_work">Жұмыс каталогы</string>
-  <string name="local_search_label">Барлық контактілер</string>
-  <string name="local_suggestions_search_label">Ұсыныстар</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Мен</string>
   <string name="missing_name">(Атаусыз)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Контактіні көру</string>
-  <string name="list_filter_phones">Телефон нөмірі бар барлық контактілер</string>
-  <string name="list_filter_phones_work">Жұмыс профилінің контактілері</string>
   <string name="view_updates_from_group">Жаңартуларды көру</string>
   <string name="account_phone">Тек қана құрылғыда, синхрондалмаған</string>
   <string name="nameLabelsGroup">Аты-жөні</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ қолданып чаттасу</string>
   <string name="chat_jabber">Jabber қолданып чаттасу</string>
   <string name="chat">Чаттасу</string>
-  <string name="list_filter_all_accounts">Барлық контактілер</string>
-  <string name="listAllContactsInAccount">%s ішіндегі контактілер</string>
-  <string name="listCustomView">Контактілердің жеке көрінісі</string>
-  <string name="listSingleContact">Жалғыз контакт</string>
   <string name="display_options_sort_list_by">Сұрыптау шарты</string>
   <string name="display_options_sort_by_given_name">Аты</string>
   <string name="display_options_sort_by_family_name">Тегі</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Іздеуді өшіру</string>
   <string name="select_account_dialog_title">Есептік жазба</string>
   <string name="set_default_account">Осыны қоңыраулар үшін әрқашан пайд.</string>
-  <string name="select_phone_account_for_calls">Қоңырау шалынатын SIM картасын таңдаңыз</string>
-  <string name="select_phone_account_for_calls_remember">Осы картаны еске сақтау</string>
   <string name="call_with_a_note">Ескертпе бар қоңырау</string>
   <string name="call_subject_hint">Қоңыраумен жіберу үшін ескертпе теріңіз ...</string>
   <string name="send_and_call_button">ЖІБЕРУ ЖӘНЕ ҚОҢЫРАУ ШАЛУ</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s қойындысы. %2$d оқылмаған элемент. </item>
   </plurals>
   <string name="description_search_video_call">Бейне қоңырау</string>
-  <string name="description_search_call_and_share">Бөлісу және қоңырау шалу</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-km/strings.xml b/java/com/android/contacts/common/res/values-km/strings.xml
index 15c7ed5..7d74665 100644
--- a/java/com/android/contacts/common/res/values-km/strings.xml
+++ b/java/com/android/contacts/common/res/values-km/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">សម្អាត​ទំនាក់ទំនង​ញឹកញាប់?</string>
   <string name="clearFrequentsConfirmation">អ្នកនឹងជម្រះបញ្ជីដែលអ្នកទាក់ទងជាញឹកញាប់នៅក្នុងកម្មវិធីទូរស័ព្ទ និងទំនាក់ទំនង ហើយបង្ខំឲ្យកម្មវិធីអ៊ីមែលស្វែងយល់ពីចំណូលចិត្តទំនាក់ទំនងរបស់អ្នកតាំងពីដំបូង។</string>
   <string name="clearFrequentsProgress_title">សម្អាត​ទំនាក់ទំនង​ញឹកញាប់...</string>
-  <string name="status_available">ទំនេរ</string>
-  <string name="status_away">ចាក​ឆ្ងាយ</string>
-  <string name="status_busy">រវល់</string>
-  <string name="contactsList">ទំនាក់ទំនង</string>
-  <string name="contact_suggestions">បាន​ណែនាំ​​កម្រិត​ខ្ពស់</string>
-  <string name="local_invisible_directory">ផ្សេងៗ</string>
   <string name="directory_search_label">ថត</string>
   <string name="directory_search_label_work">ថតកន្លែងការងារ</string>
-  <string name="local_search_label">ទំនាក់ទំនង​ទាំងអស់</string>
-  <string name="local_suggestions_search_label">ការ​ណែនាំ</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">ខ្ញុំ</string>
   <string name="missing_name">(គ្មាន​ឈ្មោះ)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">មើល​ទំនាក់ទំនង</string>
-  <string name="list_filter_phones">ទំនាក់ទំនង​ទាំងអស់​ដែល​មាន​លេខ​ទូរស័ព្ទ</string>
-  <string name="list_filter_phones_work">ទំនាក់ទំនងប្រវត្តិរូបការងារ</string>
   <string name="view_updates_from_group">មើល​បច្ចុប្បន្នភាព</string>
   <string name="account_phone">សម្រាប់​តែ​ឧបករណ៍ មិន​បាន​ធ្វើ​សមកាលកម្ម</string>
   <string name="nameLabelsGroup">ឈ្មោះ</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ជជែក​ដោយ​ប្រើ ICQ</string>
   <string name="chat_jabber">ជជែក​ដោយ​ប្រើ Jabber</string>
   <string name="chat">ជជែក​​</string>
-  <string name="list_filter_all_accounts">ទំនាក់ទំនងទាំងអស់</string>
-  <string name="listAllContactsInAccount">ទំនាក់ទំនង​នៅ​ក្នុង %s</string>
-  <string name="listCustomView">ទំនាក់ទំនង​ក្នុង​ទិដ្ឋភាព​ផ្ទាល់ខ្លួន</string>
-  <string name="listSingleContact">ទំនាក់ទំនង​ទោល</string>
   <string name="display_options_sort_list_by">តម្រៀប​តាម</string>
   <string name="display_options_sort_by_given_name">នាម​ខ្លួន</string>
   <string name="display_options_sort_by_family_name">នាមត្រកូល</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">សម្អាត​ការ​ស្វែងរក</string>
   <string name="select_account_dialog_title">គណនី</string>
   <string name="set_default_account">ប្រើ​វា​សម្រាប់​ការ​ហៅ​ជា​និច្ច</string>
-  <string name="select_phone_account_for_calls">ជ្រើសរើសស៊ីមសម្រាប់​ការហៅ​ទូរសព្ទ​នេះ</string>
-  <string name="select_phone_account_for_calls_remember">ចងចាំ​ជម្រើស​នេះ</string>
   <string name="call_with_a_note">ការហៅព្រមជាមួយចំណាំ</string>
   <string name="call_subject_hint">វាយបញ្ចូលចំណាំដែលត្រូវផ្ញើជាមួយការហៅទូរស័ព្ទ ...</string>
   <string name="send_and_call_button">ផ្ញើ &amp; ហៅ</string>
@@ -141,5 +123,4 @@
     <item quantity="other">ផ្ទាំង %1$s។ ធាតុមិនទាន់​អាន %2$d </item>
   </plurals>
   <string name="description_search_video_call">ការ​ហៅវីដេអូ</string>
-  <string name="description_search_call_and_share">ចែករំលែក និង​ហៅ​ទូរសព្ទ</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-kn/strings.xml b/java/com/android/contacts/common/res/values-kn/strings.xml
index 61666c2..b41830a 100644
--- a/java/com/android/contacts/common/res/values-kn/strings.xml
+++ b/java/com/android/contacts/common/res/values-kn/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">ಪದೇ ಪದೇ ಸಂಪರ್ಕಿಸಿರುವುದನ್ನು ತೆರುವುಗೊಳಿಸುವುದೇ?</string>
   <string name="clearFrequentsConfirmation">ಸಂಪರ್ಕಗಳು ಮತ್ತು ಫೋನ್‌ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಪದೇ ಪದೇ ಸಂಪರ್ಕಪಡಿಸಿರುವ ಪಟ್ಟಿಯನ್ನು ನೀವು ತೆರುವುಗೊಳಿಸುತ್ತೀರಿ ಮತ್ತು ಮೊದಲಿನಿಂದ ನಿಮ್ಮ ವಿಳಾಸ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ತಿಳಿಯಲು ಇಮೇಲ್‌ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಒತ್ತಾಯಿಸಿ.</string>
   <string name="clearFrequentsProgress_title">ಪದೇ ಪದೇ ಸಂಪರ್ಕಿಸಿರುವುದನ್ನು ತೆರುವುಗೊಳಿಸಲಾಗುತ್ತಿದೆ…</string>
-  <string name="status_available">ಲಭ್ಯವಿದೆ</string>
-  <string name="status_away">ದೂರ</string>
-  <string name="status_busy">ಕಾರ್ಯನಿರತ</string>
-  <string name="contactsList">ಸಂಪರ್ಕಗಳು</string>
-  <string name="contact_suggestions">ಉನ್ನತ ಸಲಹೆ</string>
-  <string name="local_invisible_directory">ಇತರೆ</string>
   <string name="directory_search_label">ಡೈರೆಕ್ಟರಿ</string>
   <string name="directory_search_label_work">ಕೆಲಸದ ಡೈರೆಕ್ಟರಿ</string>
-  <string name="local_search_label">ಎಲ್ಲಾ ಸಂಪರ್ಕಗಳು</string>
-  <string name="local_suggestions_search_label">ಸಲಹೆಗಳು</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">ನಾನು</string>
   <string name="missing_name">(ಯಾವುದೇ ಹೆಸರಿಲ್ಲ)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">ಸಂಪರ್ಕವನ್ನು ವೀಕ್ಷಿಸಿ</string>
-  <string name="list_filter_phones">ಫೋನ್‌ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ಎಲ್ಲ ಸಂಪರ್ಕಗಳು</string>
-  <string name="list_filter_phones_work">ಕೆಲಸದ ಪ್ರೊಫೈಲ್ ಸಂಪರ್ಕಗಳು</string>
   <string name="view_updates_from_group">ನವೀಕರಣಗಳನ್ನು ವೀಕ್ಷಿಸಿ</string>
   <string name="account_phone">ಸಾಧನ-ಮಾತ್ರ, ಸಿಂಕ್ ಮಾಡಲಾಗದಿರುವುದು</string>
   <string name="nameLabelsGroup">ಹೆಸರು</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ ಬಳಸಿಕೊಂಡು ಚಾಟ್‌ ಮಾಡಿ</string>
   <string name="chat_jabber">Jabber ಬಳಸಿಕೊಂಡು ಚಾಟ್‌ ಮಾಡಿ</string>
   <string name="chat">ಚಾಟ್</string>
-  <string name="list_filter_all_accounts">ಎಲ್ಲ ಸಂಪರ್ಕಗಳು</string>
-  <string name="listAllContactsInAccount">%s ನಲ್ಲಿ ಸಂಪರ್ಕಗಳು</string>
-  <string name="listCustomView">ಕಸ್ಟಮ್‌ ವೀಕ್ಷಣೆಯಲ್ಲಿನ ಸಂಪರ್ಕಗಳು</string>
-  <string name="listSingleContact">ಏಕೈಕ ಸಂಪರ್ಕ</string>
   <string name="display_options_sort_list_by">ಈ ಪ್ರಕಾರ ವಿಂಗಡಿಸು</string>
   <string name="display_options_sort_by_given_name">ಮೊದಲ ಹೆಸರು</string>
   <string name="display_options_sort_by_family_name">ಕೊನೆಯ ಹೆಸರು</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">ಹುಡುಕಾಟವನ್ನು ತೆರವುಗೊಳಿಸಿ</string>
   <string name="select_account_dialog_title">ಖಾತೆ</string>
   <string name="set_default_account">ಕರೆಗಳನ್ನು ಮಾಡಲು ಯಾವಾಗಲೂ ಇದನ್ನು ಬಳಸಿ</string>
-  <string name="select_phone_account_for_calls">ಈ ಕರೆಗಾಗಿ ಸಿಮ್ ಆರಿಸಿ</string>
-  <string name="select_phone_account_for_calls_remember">ಈ ಆಯ್ಕೆಯನ್ನು ನೆನಪಿಡಿ</string>
   <string name="call_with_a_note">ಟಿಪ್ಪಣಿಯೊಂದಿಗೆ ಕರೆ</string>
   <string name="call_subject_hint">ಕರೆ ಕಳುಹಿಸಲು ಟಿಪ್ಪಣಿಯನ್ನು ಟೈಪ್ ಮಾಡಿ ...</string>
   <string name="send_and_call_button">ಕಳುಹಿಸು ಮತ್ತು ಕರೆಮಾಡು</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ಟ್ಯಾಬ್. %2$d ಓದದಿರುವ ಐಟಂಗಳು. </item>
   </plurals>
   <string name="description_search_video_call">ವೀಡಿಯೊ ಕರೆ</string>
-  <string name="description_search_call_and_share">ಹಂಚಿಕೊಳ್ಳಿ ಮತ್ತು ಕರೆ ಮಾಡಿ</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ko/strings.xml b/java/com/android/contacts/common/res/values-ko/strings.xml
index 1a5cd7d..21b6988 100644
--- a/java/com/android/contacts/common/res/values-ko/strings.xml
+++ b/java/com/android/contacts/common/res/values-ko/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">자주 연락하는 사람들 목록을 삭제하시겠습니까?</string>
   <string name="clearFrequentsConfirmation">주소록 및 휴대전화 앱에서 자주 연락하는 사람의 목록을 삭제하고 이메일 앱이 주소록 환경설정을 처음부터 다시 반영하도록 합니다.</string>
   <string name="clearFrequentsProgress_title">자주 연락하는 사람들 목록을 삭제하는 중…</string>
-  <string name="status_available">온라인</string>
-  <string name="status_away">자리 비움</string>
-  <string name="status_busy">다른 용무 중</string>
-  <string name="contactsList">주소록</string>
-  <string name="contact_suggestions">인기 추천</string>
-  <string name="local_invisible_directory">기타</string>
   <string name="directory_search_label">디렉토리</string>
   <string name="directory_search_label_work">직장 디렉토리</string>
-  <string name="local_search_label">모든 연락처</string>
-  <string name="local_suggestions_search_label">추천</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">나</string>
   <string name="missing_name">(이름 없음)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">연락처 보기</string>
-  <string name="list_filter_phones">전화번호가 포함된 모든 연락처</string>
-  <string name="list_filter_phones_work">직장 프로필 연락처</string>
   <string name="view_updates_from_group">업데이트 보기</string>
   <string name="account_phone">기기 전용(동기화되지 않음)</string>
   <string name="nameLabelsGroup">이름</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ로 채팅</string>
   <string name="chat_jabber">Jabber로 채팅</string>
   <string name="chat">채팅</string>
-  <string name="list_filter_all_accounts">모든 연락처</string>
-  <string name="listAllContactsInAccount">%s의 주소록</string>
-  <string name="listCustomView">주소록 맞춤 보기</string>
-  <string name="listSingleContact">단일 연락처</string>
   <string name="display_options_sort_list_by">정렬 기준:</string>
   <string name="display_options_sort_by_given_name">이름</string>
   <string name="display_options_sort_by_family_name">성</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">검색창 지우기</string>
   <string name="select_account_dialog_title">계정</string>
   <string name="set_default_account">통화에 항상 사용</string>
-  <string name="select_phone_account_for_calls">이 통화에 사용할 SIM 선택</string>
-  <string name="select_phone_account_for_calls_remember">이 선택사항 저장</string>
   <string name="call_with_a_note">메모가 포함된 통화</string>
   <string name="call_subject_hint">통화에 함께 전송할 메모를 입력하세요...</string>
   <string name="send_and_call_button">보내기 및 전화 걸기</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s 탭. 읽지 않은 항목 %2$d개 </item>
   </plurals>
   <string name="description_search_video_call">화상 통화</string>
-  <string name="description_search_call_and_share">공유 및 전화 걸기</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ky/strings.xml b/java/com/android/contacts/common/res/values-ky/strings.xml
index eb4ea1a..445eaa5 100644
--- a/java/com/android/contacts/common/res/values-ky/strings.xml
+++ b/java/com/android/contacts/common/res/values-ky/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Көп чалынгандар тизмеси тазалансынбы?</string>
   <string name="clearFrequentsConfirmation">Байланыштар жана Телефон колдонмолорунан көп байланышкан адамдар тизмесин тазалап, даректүү жеке жөндөөлөр тууралуу билүү үчүн электрондук почта колдонмолорун иштетиңиз.</string>
   <string name="clearFrequentsProgress_title">Көп чалынгандар тизмеси тазаланууда…</string>
-  <string name="status_available">Жеткиликтүү</string>
-  <string name="status_away">Чыгып кетти</string>
-  <string name="status_busy">Бош эмес</string>
-  <string name="contactsList">Байланыштар</string>
-  <string name="contact_suggestions">Эң көп сунушталгандар</string>
-  <string name="local_invisible_directory">Башка</string>
   <string name="directory_search_label">Директорий</string>
   <string name="directory_search_label_work">Жумуш профилиндеги байланыштар китепчеси</string>
-  <string name="local_search_label">Бардык байланыштар</string>
-  <string name="local_suggestions_search_label">Сунуштар</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Мен</string>
   <string name="missing_name">(Аты жок)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Байланыштын чоо-жайын карап көрүү</string>
-  <string name="list_filter_phones">Телефон номерлери бар бардык байланыштар</string>
-  <string name="list_filter_phones_work">Жумуш профилиндеги байланыштар</string>
   <string name="view_updates_from_group">Жаңыртууларды көрүү</string>
   <string name="account_phone">Түзмөктө гана, шайкештирилбеген</string>
   <string name="nameLabelsGroup">Аты</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ аркылуу чатташуу</string>
   <string name="chat_jabber">Jabber аркылуу чатташуу</string>
   <string name="chat">Чат</string>
-  <string name="list_filter_all_accounts">Бардык байланыштар</string>
-  <string name="listAllContactsInAccount">%s байланыштары</string>
-  <string name="listCustomView">Байланыштардын ыңгайлаштырылган көрүнүшү</string>
-  <string name="listSingleContact">Жалгыз байланыш</string>
   <string name="display_options_sort_list_by">Төмөнкү боюнча иреттештирүү</string>
   <string name="display_options_sort_by_given_name">Ысымы</string>
   <string name="display_options_sort_by_family_name">Фамилиясы</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Издөөнү тазалоо</string>
   <string name="select_account_dialog_title">Каттоо эсеби</string>
   <string name="set_default_account">Бул ар дайым чалуулр үчн колдонулсн</string>
-  <string name="select_phone_account_for_calls">Бул чалуу үчүн SIM картаны тандоо</string>
-  <string name="select_phone_account_for_calls_remember">Бул тандоону эстеп калуу</string>
   <string name="call_with_a_note">Кыска жазуу менен чалуу</string>
   <string name="call_subject_hint">Чалуу менен жөнөтүлө турган кыска жазууну териңиз …</string>
   <string name="send_and_call_button">ЖӨНӨТҮҮ ЖАНА ЧАЛУУ</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> \"%1$s\" өтмөгү. %2$d нерсе окула элек. </item>
   </plurals>
   <string name="description_search_video_call">Видео чалуу</string>
-  <string name="description_search_call_and_share">Бөлүшүү жана чалуу</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-lo/strings.xml b/java/com/android/contacts/common/res/values-lo/strings.xml
index d363fbd..e738520 100644
--- a/java/com/android/contacts/common/res/values-lo/strings.xml
+++ b/java/com/android/contacts/common/res/values-lo/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">ລຶບລາຍຊື່ທີ່ຕິດຕໍ່ເລື້ອຍໆອອກ?</string>
   <string name="clearFrequentsConfirmation">ທ່ານຈະລຶບຂໍ້ມູນລາຍຊື່ທີ່ຕິດຕໍ່ຫາເລື້ອຍໆຢູ່ໃນແອັບຯລາຍ​ຊື່ ແລະໂທ​ລະ​ສັບ ພ້ອມທັງບັງຄັບໃຫ້ແອັບຯອີເມວເລີ່ມຮຽນຮູ້ຄ່າກຳນົດທີ່ຢູ່ຂອງທ່ານໃໝ່ຕັ້ງແຕ່ຕົ້ນ.</string>
   <string name="clearFrequentsProgress_title">ກຳລັງລຶບລ້າງລາຍຊື່ທີ່ຕິດຕໍ່ຫາເລື້ອຍໆ...</string>
-  <string name="status_available">ສາມາດໃຊ້ໄດ້</string>
-  <string name="status_away">ບໍ່ຢູ່</string>
-  <string name="status_busy">ບໍ່ຫວ່າງ</string>
-  <string name="contactsList">ລາຍຊື່ຜູ້ຕິດຕໍ່</string>
-  <string name="contact_suggestions">ແນະນຳຫຼາຍທີ່ສຸດ</string>
-  <string name="local_invisible_directory">ອື່ນໆ</string>
   <string name="directory_search_label">ໄດເຣັກທໍຣີ</string>
   <string name="directory_search_label_work">ໄດເຣັກທໍຣີບ່ອນເຮັດວຽກ</string>
-  <string name="local_search_label">ລາຍຊື່ຜູ້ຕິດຕໍ່ທັງໝົດ</string>
-  <string name="local_suggestions_search_label">ຄຳແນະນຳ</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">ຂ້ອຍ</string>
   <string name="missing_name">(ບໍ່ມີຊື່)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">ເບິ່ງລາຍຊື່ຜູ້ຕິດຕໍ່</string>
-  <string name="list_filter_phones">ລາຍຊື່ຜູ່ຕິດຕໍ່ທັງໝົດທີ່ມີເບີໂທລະສັບ</string>
-  <string name="list_filter_phones_work">ລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ</string>
   <string name="view_updates_from_group">ເບິ່ງອັບເດດ</string>
   <string name="account_phone">ອຸປະກອນເທົ່ານັ້ນ, ບໍ່ຊິ້ງຂໍ້ມູນ</string>
   <string name="nameLabelsGroup">ຊື່</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ສົນທະນາໂດຍໃຊ້ ICQ</string>
   <string name="chat_jabber">ສົນທະນາໂດຍໃຊ້ Jabber</string>
   <string name="chat">ສົນທະນາ</string>
-  <string name="list_filter_all_accounts">ລາຍ​ຊື່​ຜູ້ຕິດ​ຕໍ່​ທັງ​ໝົດ</string>
-  <string name="listAllContactsInAccount">ລາຍຊື່ຜູ່ຕິດຕໍ່ໃນ %s</string>
-  <string name="listCustomView">ລາຍຊື່ຜູ່ຕິດຕໍ່ໃນມຸມມອງກຳນົດເອງ</string>
-  <string name="listSingleContact">ລາຍຊື່ຜູ່ຕິດຕໍ່ດ່ຽວ</string>
   <string name="display_options_sort_list_by">ຮຽງຕາມ</string>
   <string name="display_options_sort_by_given_name">ຊື່</string>
   <string name="display_options_sort_by_family_name">ນາມສະກຸນ</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">ລຶບ​ການ​ຊອກ​ຫາ</string>
   <string name="select_account_dialog_title">ບັນຊີ</string>
   <string name="set_default_account">ໃຊ້​ຊິມ​ນີ້​ເພື່ອ​ການໂທທຸກ​ເທື່ອ</string>
-  <string name="select_phone_account_for_calls">ເລືອກ SIM ສຳລັບສາຍນີ້</string>
-  <string name="select_phone_account_for_calls_remember">ຈື່ການເລືອກນີ້ໄວ້</string>
   <string name="call_with_a_note">ໂທ​ດ້ວຍ​ບັນ​ທຶກ</string>
   <string name="call_subject_hint">ພິມ​ບັນ​ທຶກ ເພື່ອ​ສົ່ງ​ກັບ​ການ​ໂທ ...</string>
   <string name="send_and_call_button">ສົ່ງ ແລະ ໂທ</string>
@@ -141,5 +123,4 @@
     <item quantity="other">ແຖບ %1$s. %2$d ລາຍການບໍ່ທັນໄດ້ອ່ານ. </item>
   </plurals>
   <string name="description_search_video_call">ໂທວິດີໂອ</string>
-  <string name="description_search_call_and_share">ແບ່ງປັນ ແລະ ໂທ</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-lt/strings.xml b/java/com/android/contacts/common/res/values-lt/strings.xml
index 6bb47d8..47a5df4 100644
--- a/java/com/android/contacts/common/res/values-lt/strings.xml
+++ b/java/com/android/contacts/common/res/values-lt/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Išvalyti dažniausius kontaktus?</string>
   <string name="clearFrequentsConfirmation">Išvalysite dažniausių kontaktų sąrašą Kontaktų ir Telefono programose, o el. pašto programoms reikės iš naujo gauti adresavimo nuostatas.</string>
   <string name="clearFrequentsProgress_title">Valomi dažniausi kontaktai…</string>
-  <string name="status_available">Galima</string>
-  <string name="status_away">Pasišalinęs</string>
-  <string name="status_busy">Užsiėmęs</string>
-  <string name="contactsList">Adresinė</string>
-  <string name="contact_suggestions">Populiariausi siūlomi</string>
-  <string name="local_invisible_directory">Kita</string>
   <string name="directory_search_label">Katalogas</string>
   <string name="directory_search_label_work">Darbo katalogas</string>
-  <string name="local_search_label">Visi kontaktai</string>
-  <string name="local_suggestions_search_label">Pasiūlymai</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Aš</string>
   <string name="missing_name">(Nėra pavadinimo)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Žr. išsamią kontaktinę informaciją</string>
-  <string name="list_filter_phones">Visi kontaktai su telefonų numeriais</string>
-  <string name="list_filter_phones_work">Darbo profilio kontaktai</string>
   <string name="view_updates_from_group">Peržiūrėti naujinius</string>
   <string name="account_phone">Tik įrenginys, nesinchronizuojama</string>
   <string name="nameLabelsGroup">Pavadinimas</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Kalbėti naudojant ICQ</string>
   <string name="chat_jabber">Kalbėti naudojant „Jabber“</string>
   <string name="chat">Pokalbis</string>
-  <string name="list_filter_all_accounts">Visi kontaktai</string>
-  <string name="listAllContactsInAccount">%s kontaktai</string>
-  <string name="listCustomView">Kontaktai tinkintame rodinyje</string>
-  <string name="listSingleContact">Vienas kontaktas</string>
   <string name="display_options_sort_list_by">Rūšiuoti pagal</string>
   <string name="display_options_sort_by_given_name">Vardas</string>
   <string name="display_options_sort_by_family_name">Pavardė</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Išvalyti paiešką</string>
   <string name="select_account_dialog_title">Paskyra</string>
   <string name="set_default_account">Visada naudoti tai skambučiams</string>
-  <string name="select_phone_account_for_calls">Pasir. SIM k., kad gal. atl. šį skamb.</string>
-  <string name="select_phone_account_for_calls_remember">Atsiminti šį pasirinkimą</string>
   <string name="call_with_a_note">Skambutis su užrašu</string>
   <string name="call_subject_hint">Įveskite užrašą, kurį galima išsiųsti skambinant...</string>
   <string name="send_and_call_button">SIŲSTI IR SKAMBINTI</string>
@@ -143,5 +125,4 @@
     <item quantity="other"> Skirtukas „%1$s“. %2$d neskaitytų elementų. </item>
   </plurals>
   <string name="description_search_video_call">Vaizdo skambutis</string>
-  <string name="description_search_call_and_share">Bendrinti ir skambinti</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-lv/strings.xml b/java/com/android/contacts/common/res/values-lv/strings.xml
index 95976ab..80f678f 100644
--- a/java/com/android/contacts/common/res/values-lv/strings.xml
+++ b/java/com/android/contacts/common/res/values-lv/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Vai dzēst bieži lietotos kontaktus?</string>
   <string name="clearFrequentsConfirmation">Tiks dzēsts bieži lietoto kontaktpersonu saraksts lietotnēs Kontaktpersonas un Tālrunis, un e-pasta lietotnēs no jauna tiks sākta adrešu preferenču saglabāšana.</string>
   <string name="clearFrequentsProgress_title">Bieži lietoto kontaktu dzēšana...</string>
-  <string name="status_available">Pieejams</string>
-  <string name="status_away">Prombūtnē</string>
-  <string name="status_busy">Aizņemts</string>
-  <string name="contactsList">Kontaktpersonas</string>
-  <string name="contact_suggestions">Populārākie ieteikumi</string>
-  <string name="local_invisible_directory">Cits</string>
   <string name="directory_search_label">Katalogs</string>
   <string name="directory_search_label_work">Darba katalogs</string>
-  <string name="local_search_label">Visas kontaktpersonas</string>
-  <string name="local_suggestions_search_label">Ieteikumi</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Es</string>
   <string name="missing_name">(Nav vārda)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Skatīt kontaktpersonu</string>
-  <string name="list_filter_phones">Visas kontaktpersonas ar tālruņa numuriem</string>
-  <string name="list_filter_phones_work">Kontaktpersonas darba profilā</string>
   <string name="view_updates_from_group">Skatīt atjauninājumus</string>
   <string name="account_phone">Tikai ierīcē, netiek sinhronizēta</string>
   <string name="nameLabelsGroup">Vārds un uzvārds</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Tērzēt, izmantojot ICQ</string>
   <string name="chat_jabber">Tērzēt, izmantojot Jabber</string>
   <string name="chat">Tērzēt</string>
-  <string name="list_filter_all_accounts">Visas kontaktpersonas</string>
-  <string name="listAllContactsInAccount">Kontaktpersonas sarakstā %s</string>
-  <string name="listCustomView">Lietotāju filtrs</string>
-  <string name="listSingleContact">Viena kontaktpersona</string>
   <string name="display_options_sort_list_by">Kārtot pēc</string>
   <string name="display_options_sort_by_given_name">Vārds</string>
   <string name="display_options_sort_by_family_name">Uzvārds</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Notīrīt meklēšanas lauku</string>
   <string name="select_account_dialog_title">Konts</string>
   <string name="set_default_account">Vienmēr izmantot zvaniem</string>
-  <string name="select_phone_account_for_calls">SIM kartes izvēle šim zvanam</string>
-  <string name="select_phone_account_for_calls_remember">Atcerēties šo izvēli</string>
   <string name="call_with_a_note">Zvanīt ar piezīmi</string>
   <string name="call_subject_hint">Ierakstiet piezīmi, ko nosūtīt ar zvanu...</string>
   <string name="send_and_call_button">SŪTĪT UN ZVANĪT</string>
@@ -142,5 +124,4 @@
     <item quantity="other"> Cilne “%1$s”. %2$d nelasīti vienumi. </item>
   </plurals>
   <string name="description_search_video_call">Videozvans</string>
-  <string name="description_search_call_and_share">Kopīgot un zvanīt</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-mk/strings.xml b/java/com/android/contacts/common/res/values-mk/strings.xml
index bfcb8d2..79f8e24 100644
--- a/java/com/android/contacts/common/res/values-mk/strings.xml
+++ b/java/com/android/contacts/common/res/values-mk/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Исчисти често контактирани?</string>
   <string name="clearFrequentsConfirmation">Ќе го исчистите списокот на често контактирани лица во апликациите „Контакти“ и „Телефон“ и ќе ги принудите апликациите на е-пошта одново да ги дознаат вашите параметри на обраќање.</string>
   <string name="clearFrequentsProgress_title">Чистење често контактирани...</string>
-  <string name="status_available">Достапен</string>
-  <string name="status_away">Отсутен</string>
-  <string name="status_busy">Зафатен</string>
-  <string name="contactsList">Контакти</string>
-  <string name="contact_suggestions">Нејдобри предложени</string>
-  <string name="local_invisible_directory">Друг</string>
   <string name="directory_search_label">Адресар</string>
   <string name="directory_search_label_work">Работен директориум</string>
-  <string name="local_search_label">Сите контакти</string>
-  <string name="local_suggestions_search_label">Предлози</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Јас</string>
   <string name="missing_name">(Без име)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Прегледајте контакт</string>
-  <string name="list_filter_phones">Сите контакти со телефонски броеви</string>
-  <string name="list_filter_phones_work">Контакти на Работниот профил</string>
   <string name="view_updates_from_group">Прикажи ажурирања</string>
   <string name="account_phone">Само на уредот, нема да се синхронизира</string>
   <string name="nameLabelsGroup">Име</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Разговор на ICQ</string>
   <string name="chat_jabber">Разговор на Jabber</string>
   <string name="chat">Разговор</string>
-  <string name="list_filter_all_accounts">Сите контакти</string>
-  <string name="listAllContactsInAccount">Контакти во %s</string>
-  <string name="listCustomView">Контакти во прилагоден приказ</string>
-  <string name="listSingleContact">Еден контакт</string>
   <string name="display_options_sort_list_by">Подреди по</string>
   <string name="display_options_sort_by_given_name">Име</string>
   <string name="display_options_sort_by_family_name">Презиме</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Исчисти го полето за пребарување</string>
   <string name="select_account_dialog_title">Сметка</string>
   <string name="set_default_account">Секогаш користи го ова за повици</string>
-  <string name="select_phone_account_for_calls">Изберете SIM за повиков</string>
-  <string name="select_phone_account_for_calls_remember">Запомни го изборов</string>
   <string name="call_with_a_note">Повик со белешка</string>
   <string name="call_subject_hint">Напишете белешка да се испрати со повикот...</string>
   <string name="send_and_call_button">ИСПРАТИ И ПОВИКАЈ</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Картичка %1$s. %2$d непрочитани ставки. </item>
   </plurals>
   <string name="description_search_video_call">Видеоповик</string>
-  <string name="description_search_call_and_share">Сподели и повикај</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ml/strings.xml b/java/com/android/contacts/common/res/values-ml/strings.xml
index 34e4f8c..b2d453c 100644
--- a/java/com/android/contacts/common/res/values-ml/strings.xml
+++ b/java/com/android/contacts/common/res/values-ml/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">സ്ഥിരംവിളിക്കുന്നവരെ മായ്‌ക്കണോ?</string>
   <string name="clearFrequentsConfirmation">നിങ്ങൾ കോൺടാക്‌റ്റുകളുടെയും ഫോണിന്റെയും അപ്ലിക്കേഷനുകളിലെ പതിവായി കോൺടാക്റ്റുചെയ്യുന്നവരുടെ ലിസ്റ്റ് മായ്‌ക്കുകയും സ്‌ക്രാച്ചിൽ നിന്നും ബന്ധപ്പെടൽ മുൻഗണനകൾ അറിയാൻ ഇമെയിൽ അപ്ലിക്കേഷനുകളെ പ്രേരിപ്പിക്കുകയും ചെയ്യും.</string>
   <string name="clearFrequentsProgress_title">സ്ഥിരംവിളിക്കുന്നവരെ മായ്‌ക്കുന്നു…</string>
-  <string name="status_available">ലഭ്യം</string>
-  <string name="status_away">ലഭ്യമല്ല</string>
-  <string name="status_busy">തിരക്കിലാണ്</string>
-  <string name="contactsList">കോണ്ടാക്റ്റ്</string>
-  <string name="contact_suggestions">കൂടുതൽ നിർദ്ദേശിച്ചിരിക്കുന്നവ</string>
-  <string name="local_invisible_directory">മറ്റുള്ളവ</string>
   <string name="directory_search_label">ഡയറക്‌ടറി</string>
   <string name="directory_search_label_work">ഔദ്യോഗിക ഡയറക്‌ടറി</string>
-  <string name="local_search_label">എല്ലാ കോൺടാക്റ്റുകളും</string>
-  <string name="local_suggestions_search_label">നിര്‍ദ്ദേശങ്ങള്‍</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">ഞാന്‍</string>
   <string name="missing_name">(പേരില്ല)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">കോൺടാക്റ്റ് കാണുക</string>
-  <string name="list_filter_phones">ഫോൺ നമ്പറുകളുള്ള എല്ലാ കോൺടാക്റ്റുകളും</string>
-  <string name="list_filter_phones_work">ഔദ്യോഗിക പ്രൊഫൈൽ കോൺടാക്റ്റുകൾ</string>
   <string name="view_updates_from_group">അപ്‌ഡേറ്റുകള്‍ കാണുക</string>
   <string name="account_phone">ഉപകരണത്തിൽ മാത്രം, സമന്വയിപ്പിക്കില്ല</string>
   <string name="nameLabelsGroup">പേര്</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ ഉപയോഗിച്ച് ചാറ്റുചെയ്യുക</string>
   <string name="chat_jabber">Jabber ഉപയോഗിച്ച് ചാറ്റുചെയ്യുക</string>
   <string name="chat">ചാറ്റുചെയ്യുക</string>
-  <string name="list_filter_all_accounts">എല്ലാ കോൺടാക്റ്റുകളും</string>
-  <string name="listAllContactsInAccount">%s എന്നതിലെ കോൺടാക്റ്റുകൾ</string>
-  <string name="listCustomView">ഇഷ്‌ടാനുസൃതകാഴ്‌ചയിലെ കോൺടാക്റ്റ്</string>
-  <string name="listSingleContact">സിംഗിൾ കോൺടാക്റ്റ്</string>
   <string name="display_options_sort_list_by">ഇതുപ്രകാരം അടുക്കുക</string>
   <string name="display_options_sort_by_given_name">ഫസ്റ്റ് നെയിം</string>
   <string name="display_options_sort_by_family_name">ലാസ്റ്റ് നെയിം</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">തിരയൽ മായ്ക്കുക</string>
   <string name="select_account_dialog_title">അക്കൗണ്ട്</string>
   <string name="set_default_account">ഇത് എല്ലായ്‌പ്പോഴും കോളുകൾക്കായി ഉപയോഗിക്കുക</string>
-  <string name="select_phone_account_for_calls">ഈ കോളിനായി സിം തിരഞ്ഞെടുക്കുക</string>
-  <string name="select_phone_account_for_calls_remember">ഈ തിരഞ്ഞെടുക്കൽ ഓർക്കുക</string>
   <string name="call_with_a_note">കുറിപ്പിനൊപ്പം വിളിക്കുക</string>
   <string name="call_subject_hint">കോളിനൊപ്പം അയയ്ക്കുന്നതിന് ഒരു കുറിപ്പ് ടൈപ്പുചെയ്യുക ...</string>
   <string name="send_and_call_button">അയയ്‌ക്കുകയും വിളിക്കുകയും ചെയ്യുക</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ടാബ്. %2$d വായിക്കാത്ത ഇനങ്ങൾ. </item>
   </plurals>
   <string name="description_search_video_call">വീഡിയോ കോള്‍</string>
-  <string name="description_search_call_and_share">പങ്കിടുക, കോൾ ചെയ്യുക</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-mn/strings.xml b/java/com/android/contacts/common/res/values-mn/strings.xml
index 0236eef..424bade 100644
--- a/java/com/android/contacts/common/res/values-mn/strings.xml
+++ b/java/com/android/contacts/common/res/values-mn/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Байнга холбоо барьдаг харилцагчдын жагсаалтыг устгах уу?</string>
   <string name="clearFrequentsConfirmation">Та холбоо барих хэсэг болон утасны програмд байгаа тогтмол холбоо баридаг хаягуудыг устгах ба имэйл програмуудыг таны холбоо барих хаягуудыг эрэмбэлэх үйлдлийг идэвхжүүлэх болно.</string>
   <string name="clearFrequentsProgress_title">Байнга холбоо барьдаг харилцагчдын жагсаалтыг устгаж байна…</string>
-  <string name="status_available">Холбогдсон</string>
-  <string name="status_away">Холдсон</string>
-  <string name="status_busy">Завгүй</string>
-  <string name="contactsList">Харилцагчид</string>
-  <string name="contact_suggestions">Санал болгосон шилдэг</string>
-  <string name="local_invisible_directory">Бусад</string>
   <string name="directory_search_label">Директор</string>
   <string name="directory_search_label_work">Ажлын лавлагаа</string>
-  <string name="local_search_label">Бүх харилцагчид</string>
-  <string name="local_suggestions_search_label">Санал болголт</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Би</string>
   <string name="missing_name">(нэр байхгүй)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Харилцагчийг харах</string>
-  <string name="list_filter_phones">Утасны дугаартай бүх харилцагчид</string>
-  <string name="list_filter_phones_work">Ажлын профайлын харилцагч</string>
   <string name="view_updates_from_group">Шинэчлэлтүүдийг харах</string>
   <string name="account_phone">Зөвхөн төхөөрөмжид, синк хийгээгүй</string>
   <string name="nameLabelsGroup">Нэр</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ ашиглан чатлах</string>
   <string name="chat_jabber">Jabber ашиглан чатлах</string>
   <string name="chat">Чат</string>
-  <string name="list_filter_all_accounts">Бүх харилцагч</string>
-  <string name="listAllContactsInAccount">%s доторх харилцагчид</string>
-  <string name="listCustomView">Хувийн тохиргоотой харагдац дахь харилцагчид</string>
-  <string name="listSingleContact">Ганц харилцагч</string>
   <string name="display_options_sort_list_by">Эрэмбэлэх</string>
   <string name="display_options_sort_by_given_name">Өөрийн нэр</string>
   <string name="display_options_sort_by_family_name">Овог</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Хайлтыг цэвэрлэх</string>
   <string name="select_account_dialog_title">Бүртгэл</string>
   <string name="set_default_account">Дуудлагад байнга үүнийг ашиглах</string>
-  <string name="select_phone_account_for_calls">Энэ дуудлагд ашиглах SIM сонгоно уу</string>
-  <string name="select_phone_account_for_calls_remember">Энэ сонголтыг санах</string>
   <string name="call_with_a_note">Тэмдэглэл бүхий дуудлага хийх</string>
   <string name="call_subject_hint">Дуудлаганд илгээх тэмдэглэл бичнэ үү...</string>
   <string name="send_and_call_button">ИЛГЭЭХ, ДУУДЛАГА</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s таб. %2$d уншаагүй зүйл. </item>
   </plurals>
   <string name="description_search_video_call">Видео дуудлага</string>
-  <string name="description_search_call_and_share">Хуваалцаад залгах</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-mr/strings.xml b/java/com/android/contacts/common/res/values-mr/strings.xml
index a520afb..3914ef1 100644
--- a/java/com/android/contacts/common/res/values-mr/strings.xml
+++ b/java/com/android/contacts/common/res/values-mr/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">वारंवार सपर्क साधलेले साफ करायचे?</string>
   <string name="clearFrequentsConfirmation">आपण संपर्क आणि फोन अ‍ॅप्‍स मधील वारंवार संपर्क साधलेली सूची साफ कराल आणि ईमेल अ‍ॅप्‍सना सुरवातीपासून तुमची पत्ता प्राधान्‍ये जाणून घेण्‍याची सक्ती कराल.</string>
   <string name="clearFrequentsProgress_title">वारंवार सपर्क साधलेले साफ करत आहे...</string>
-  <string name="status_available">उपलब्ध</string>
-  <string name="status_away">दूर आहे</string>
-  <string name="status_busy">व्यस्त</string>
-  <string name="contactsList">संपर्क</string>
-  <string name="contact_suggestions">सुचविलेले उत्कृष्ट</string>
-  <string name="local_invisible_directory">इतर</string>
   <string name="directory_search_label">निर्देशिका</string>
   <string name="directory_search_label_work">कार्य निर्देशिका</string>
-  <string name="local_search_label">सर्व संपर्क</string>
-  <string name="local_suggestions_search_label">सूचना</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">मी</string>
   <string name="missing_name">(नाव नाही)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">संपर्क पहा</string>
-  <string name="list_filter_phones">फोन नंबरसह सर्व संपर्क</string>
-  <string name="list_filter_phones_work">कार्य प्रोफाईल संपर्क</string>
   <string name="view_updates_from_group">अपडेट पहा</string>
   <string name="account_phone">केवळ डिव्हाइस, संकालित न केलेला</string>
   <string name="nameLabelsGroup">नाव</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ चा वापर करून चॅट करा</string>
   <string name="chat_jabber">Jabber चा वापर करून चॅट करा</string>
   <string name="chat">चॅट करा</string>
-  <string name="list_filter_all_accounts">सर्व संपर्क</string>
-  <string name="listAllContactsInAccount">%s मधील संपर्क</string>
-  <string name="listCustomView">सानुकूल दृश्यामधील संपर्क</string>
-  <string name="listSingleContact">एकल संपर्क</string>
   <string name="display_options_sort_list_by">नुसार क्रमवारी लावा</string>
   <string name="display_options_sort_by_given_name">नाव</string>
   <string name="display_options_sort_by_family_name">आडनाव</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">शोध साफ करा</string>
   <string name="select_account_dialog_title">खाते</string>
   <string name="set_default_account">कॉलसाठी हे नेहमी वापरा</string>
-  <string name="select_phone_account_for_calls">या कॉलसाठी सिम निवडा</string>
-  <string name="select_phone_account_for_calls_remember">ही निवड लक्षात ठेवा</string>
   <string name="call_with_a_note">टीपसह कॉल करा</string>
   <string name="call_subject_hint">कॉलसह पाठविण्‍यासाठी एक टीप टाइप करा...</string>
   <string name="send_and_call_button">पाठवा आणि कॉल करा</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s टॅब. %2$d न वाचलेले आयटम. </item>
   </plurals>
   <string name="description_search_video_call">व्हिडिओ कॉल</string>
-  <string name="description_search_call_and_share">शेअर करा आणि कॉल करा</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ms/strings.xml b/java/com/android/contacts/common/res/values-ms/strings.xml
index aab737e..2184dc3 100644
--- a/java/com/android/contacts/common/res/values-ms/strings.xml
+++ b/java/com/android/contacts/common/res/values-ms/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Padam bersih senarai kerap dihubungi?</string>
   <string name="clearFrequentsConfirmation">Anda akan mengosongkan senarai yang kerap dihubungi dalam apl Kenalan dan Telefon serta memaksa apl e-mel untuk mempelajari pilihan alamat anda dari awal.</string>
   <string name="clearFrequentsProgress_title">Memadam bersih senarai kerap dihubungi...</string>
-  <string name="status_available">Ada</string>
-  <string name="status_away">Tiada</string>
-  <string name="status_busy">Sibuk</string>
-  <string name="contactsList">Kenalan</string>
-  <string name="contact_suggestions">Teratas Dicadangkan</string>
-  <string name="local_invisible_directory">Lain-lain</string>
   <string name="directory_search_label">Direktori</string>
   <string name="directory_search_label_work">Direktori kerja</string>
-  <string name="local_search_label">Semua kenalan</string>
-  <string name="local_suggestions_search_label">Cadangan</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Saya</string>
   <string name="missing_name">(Tiada nama)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Lihat kenalan</string>
-  <string name="list_filter_phones">Semua kenalan dengan nombor telefon</string>
-  <string name="list_filter_phones_work">Kenalan profil kerja</string>
   <string name="view_updates_from_group">Lihat kemas kini</string>
   <string name="account_phone">Peranti sahaja, tidak disegerakkan</string>
   <string name="nameLabelsGroup">Nama</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Sembang menggunakan ICQ</string>
   <string name="chat_jabber">Sembang menggunakan Jabber</string>
   <string name="chat">Sembang</string>
-  <string name="list_filter_all_accounts">Semua kenalan</string>
-  <string name="listAllContactsInAccount">Kenalan dalam %s</string>
-  <string name="listCustomView">Kenalan dalam paparan tersuai</string>
-  <string name="listSingleContact">Kenalan tunggal</string>
   <string name="display_options_sort_list_by">Isih mengikut</string>
   <string name="display_options_sort_by_given_name">Nama pertama</string>
   <string name="display_options_sort_by_family_name">Nama keluarga</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Kosongkan carian</string>
   <string name="select_account_dialog_title">Akaun</string>
   <string name="set_default_account">Sentiasa gunakan ini untuk panggilan</string>
-  <string name="select_phone_account_for_calls">Pilih SIM untuk panggilan ini</string>
-  <string name="select_phone_account_for_calls_remember">Ingat pilihan ini</string>
   <string name="call_with_a_note">Panggilan dengan nota</string>
   <string name="call_subject_hint">Taip nota untuk dihantar dengan panggilan…</string>
   <string name="send_and_call_button">HANTAR &amp; PANGGIL</string>
@@ -141,5 +123,4 @@
     <item quantity="other">Tab %1$s. %2$d item belum dibaca. </item>
   </plurals>
   <string name="description_search_video_call">Panggilan video</string>
-  <string name="description_search_call_and_share">Kongsi dan panggil</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-my/strings.xml b/java/com/android/contacts/common/res/values-my/strings.xml
index 3671f55..f92fa5f 100644
--- a/java/com/android/contacts/common/res/values-my/strings.xml
+++ b/java/com/android/contacts/common/res/values-my/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">အသုံးများသောလိပ်စာများရှင်းပစ်မလား?</string>
   <string name="clearFrequentsConfirmation">အသုံးများသော အဆက်အသွယ်စာရင်းအား Contacts နှင့် Phone app များမှ သင် ရှင်းလင်းပစ်မှာဖြစ်ပြီး၊ အီးမေးလ် app များအား သင့်နှစ်သက်ရာ ​ပ​ြောဆိုဆက်ဆံမှုပုံစံကို အစမှပြန်လည် လေ့လာခိုင်းမည်။</string>
   <string name="clearFrequentsProgress_title">အသုံးများသောလိပ်စာများ ရှင်းလင်းနေစဉ်</string>
-  <string name="status_available">ဆက်သွယ်နိုင်ပါသည်</string>
-  <string name="status_away">အဝေးရောက်နေပါသည်</string>
-  <string name="status_busy">အလုပ်များနေသည်</string>
-  <string name="contactsList">အဆက်အသွယ်များ</string>
-  <string name="contact_suggestions">ထိပ်တန်း အကြံပြုထားပါသည်</string>
-  <string name="local_invisible_directory">တစ်ခြား</string>
   <string name="directory_search_label">လမ်းညွှန်</string>
   <string name="directory_search_label_work">အလုပ်လမ်းညွှန်</string>
-  <string name="local_search_label">လိပ်စာများအားလုံး</string>
-  <string name="local_suggestions_search_label">အကြံပြုချက်များ</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">ကျွန်ုပ်</string>
   <string name="missing_name">(အမည်မရှိ)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">အဆက်အသွယ်ကိုကြည့်ရန်</string>
-  <string name="list_filter_phones">ဖုန်းနံပါတ်ပါသော လိပ်စာများအားလုံး</string>
-  <string name="list_filter_phones_work">အလုပ်ပရိုဖိုင် အဆက်အသွယ်များ</string>
   <string name="view_updates_from_group">အဆင့်မြှင့်ခြင်းများပြရန်</string>
   <string name="account_phone">ကိရိယာတွင်သာ၊ စင့်ခ်မလုပ်ပါ</string>
   <string name="nameLabelsGroup">အမည်</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ သုံး၍ ချက်တင်ပြုလုပ်ခြင်း</string>
   <string name="chat_jabber">Jabberသုံး၍ ချက်တင်ပြုလုပ်ခြင်း</string>
   <string name="chat">ချက်တင်းပြောသည်</string>
-  <string name="list_filter_all_accounts">ဆက်သွယ်အားလုံး</string>
-  <string name="listAllContactsInAccount">%s ထဲမှ အဆက်အသွယ်များ</string>
-  <string name="listCustomView">မိမိစိတ်ကြိုက် မြင်ကွင်းမှ</string>
-  <string name="listSingleContact">အဆက်အသွယ်တစ်ခုတည်း</string>
   <string name="display_options_sort_list_by">ဖြင့် စီပေးရန်</string>
   <string name="display_options_sort_by_given_name">ပထမ အမည်</string>
   <string name="display_options_sort_by_family_name">နောက်ဆုံး အမည်</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">ရှာဖွေမှုကို ရှင်းပါ</string>
   <string name="select_account_dialog_title">အကောင့်</string>
   <string name="set_default_account">ခေါ်ဆိုမှုများ အတွက် အမြဲတမ်း ဒါကို သုံးရန်</string>
-  <string name="select_phone_account_for_calls">ဤခေါ်ဆိုမှုအတွက် ဆင်းမ်ကဒ် ရွေးချယ်ခြင်း</string>
-  <string name="select_phone_account_for_calls_remember">ဤရွေးချယ်မှုကို မှတ်ထားရန်</string>
   <string name="call_with_a_note">မှတ်စုတစ်ခုဖြင့် ခေါ်ဆိုမည်</string>
   <string name="call_subject_hint">ခေါ်ဆိုမှုဖြင့် ပေးပို့ရန် မှတ်စုတစ်ခု ရိုက်ပါ ...</string>
   <string name="send_and_call_button">ပေးပို့ပြီး ခေါ်ပါ</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s တဘ်။ မဖတ်ရသေးသည့် အရာ %2$d ခု။ </item>
   </plurals>
   <string name="description_search_video_call">ဗီဒီယို ခေါ်ဆိုမှု</string>
-  <string name="description_search_call_and_share">မျှဝေပြီး ခေါ်ဆိုရန်</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-nb/strings.xml b/java/com/android/contacts/common/res/values-nb/strings.xml
index 911dc0f..612b2d6 100644
--- a/java/com/android/contacts/common/res/values-nb/strings.xml
+++ b/java/com/android/contacts/common/res/values-nb/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Vil du fjerne ofte kontaktede personer?</string>
   <string name="clearFrequentsConfirmation">Du fjerner listen over ofte kontaktede personer i Kontakter- og Telefon-appene, og tvinger e-postappene til å lære seg adresseinnstillingene dine på nytt.</string>
   <string name="clearFrequentsProgress_title">Fjerner ofte kontaktede personer ...</string>
-  <string name="status_available">Tilgjengelig</string>
-  <string name="status_away">Borte</string>
-  <string name="status_busy">Opptatt</string>
-  <string name="contactsList">Kontakter</string>
-  <string name="contact_suggestions">Toppforslag</string>
-  <string name="local_invisible_directory">Annen</string>
   <string name="directory_search_label">Katalog</string>
   <string name="directory_search_label_work">Jobbkatalog</string>
-  <string name="local_search_label">Alle kontakter</string>
-  <string name="local_suggestions_search_label">Forslag</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Meg</string>
   <string name="missing_name">(Uten navn)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Se kontakten</string>
-  <string name="list_filter_phones">Alle kontakter med telefonnumre</string>
-  <string name="list_filter_phones_work">Jobbprofilkontakter</string>
   <string name="view_updates_from_group">Se oppdateringer</string>
   <string name="account_phone">Bare på enheten din, uten synkronisering</string>
   <string name="nameLabelsGroup">Navn</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Nettprat med ICQ</string>
   <string name="chat_jabber">Nettprat med Jabber</string>
   <string name="chat">Nettprat</string>
-  <string name="list_filter_all_accounts">Alle kontakter</string>
-  <string name="listAllContactsInAccount">Kontakter i %s</string>
-  <string name="listCustomView">Kontakter i tilpasset visning</string>
-  <string name="listSingleContact">Enkeltkontakt</string>
   <string name="display_options_sort_list_by">Sortér etter</string>
   <string name="display_options_sort_by_given_name">Fornavn</string>
   <string name="display_options_sort_by_family_name">Etternavn</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Slett søk</string>
   <string name="select_account_dialog_title">Konto</string>
   <string name="set_default_account">Bruk alltid dette for samtaler</string>
-  <string name="select_phone_account_for_calls">Velg SIM-kort for dette anropet</string>
-  <string name="select_phone_account_for_calls_remember">Husk dette valget</string>
   <string name="call_with_a_note">Ring med et notat</string>
   <string name="call_subject_hint">Skriv et notat du vil sende med anropet …</string>
   <string name="send_and_call_button">SEND OG RING</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s-fanen. %2$d uleste elementer. </item>
   </plurals>
   <string name="description_search_video_call">Videosamtale</string>
-  <string name="description_search_call_and_share">Del og ring</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ne/strings.xml b/java/com/android/contacts/common/res/values-ne/strings.xml
index 40f6d8a..3f0b4e2 100644
--- a/java/com/android/contacts/common/res/values-ne/strings.xml
+++ b/java/com/android/contacts/common/res/values-ne/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">प्रायः सम्पर्क भएकालाई हटाउने?</string>
   <string name="clearFrequentsConfirmation">तपाईंले सम्पर्कहरू र फोन अनुप्रयोगहरूमा बारम्बार सम्पर्क गरेको सूची खाली गर्नुहुनेछ र स्क्रयाचबाट तपाईंको ठेगाना प्राथमिकताहरू सिक्नको लागि इमेल अनुप्रयोगहरूलाई दबाब दिनुहुनेछ।</string>
   <string name="clearFrequentsProgress_title">बारम्बार सम्पर्क गरिएकाहरूलाई मेटाउँदै ...</string>
-  <string name="status_available">उपलब्ध</string>
-  <string name="status_away">टाढा</string>
-  <string name="status_busy">व्यस्त</string>
-  <string name="contactsList">सम्पर्क</string>
-  <string name="contact_suggestions">सबैभन्दा धेरै सुझाव दिइएको</string>
-  <string name="local_invisible_directory">अन्य</string>
   <string name="directory_search_label">निर्देशिका</string>
   <string name="directory_search_label_work">कार्यको निर्देशिका</string>
-  <string name="local_search_label">सबै सम्पर्कहरू</string>
-  <string name="local_suggestions_search_label">सुझावहरू</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">म</string>
   <string name="missing_name">(नाम छैन)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">सम्पर्क हेर्नुहोस्</string>
-  <string name="list_filter_phones">फोन नम्बर भएका सबै सम्पर्कहरू</string>
-  <string name="list_filter_phones_work">कार्य प्रोफाइलका सम्पर्कहरू</string>
   <string name="view_updates_from_group">अद्यावधिकहरू अवलोकन गर्नुहोस्</string>
   <string name="account_phone">यन्त्रमा-मात्र, सिङ्क नभएको</string>
   <string name="nameLabelsGroup">नाम</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQको प्रयोग गरेर च्याट गर्नुहोस्</string>
   <string name="chat_jabber">जाब्बरको प्रयोग गरेर च्याट गर्नुहोस्</string>
   <string name="chat">कुराकानी</string>
-  <string name="list_filter_all_accounts">सबै सम्पर्कहरू</string>
-  <string name="listAllContactsInAccount">%sमा सम्पर्कहरू</string>
-  <string name="listCustomView">कस्टम दृश्यमा रहेका सम्पर्कहरू</string>
-  <string name="listSingleContact">एकल सम्पर्क</string>
   <string name="display_options_sort_list_by">क्रमवद्घ गर्नुहोस्</string>
   <string name="display_options_sort_by_given_name">नाम</string>
   <string name="display_options_sort_by_family_name">थर</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">खोजी सफा गर्नुहोस्</string>
   <string name="select_account_dialog_title">खाता</string>
   <string name="set_default_account">कल गर्नका लागि यसको प्रयोग सधैं गर्नुहोस्</string>
-  <string name="select_phone_account_for_calls">यो कल गर्न SIM छनौट गर्नुहोस्</string>
-  <string name="select_phone_account_for_calls_remember">यो रोजाइ याद राख्नुहोला</string>
   <string name="call_with_a_note">टिप्पणीसँगै कल गर्नुहोस्</string>
   <string name="call_subject_hint">यस कलसँग पठाउन एक टिप्पणी  टाइप गर्नुहोस्</string>
   <string name="send_and_call_button">पठाउनुहोस् र कल गर्नुहोस्</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ट्याब। %2$d नपढिएका वस्तुहरू। </item>
   </plurals>
   <string name="description_search_video_call">भिडियो कल</string>
-  <string name="description_search_call_and_share">आदान प्रदान र कल गर्नुहोस्</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-nl/strings.xml b/java/com/android/contacts/common/res/values-nl/strings.xml
index f16aa09..41c439f 100644
--- a/java/com/android/contacts/common/res/values-nl/strings.xml
+++ b/java/com/android/contacts/common/res/values-nl/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Lijst regelmatige contacten wissen?</string>
   <string name="clearFrequentsConfirmation">Je wist de lijst met contacten waarmee je regelmatig contact opneemt in de apps Contacten en Telefoon, en e-mailapps moeten je voorkeursadressen weer opnieuw leren.</string>
   <string name="clearFrequentsProgress_title">Regelmatige contacten wissen...</string>
-  <string name="status_available">Beschikbaar</string>
-  <string name="status_away">Niet beschikbaar</string>
-  <string name="status_busy">Bezet</string>
-  <string name="contactsList">Contacten</string>
-  <string name="contact_suggestions">Populaire suggesties</string>
-  <string name="local_invisible_directory">Overig</string>
   <string name="directory_search_label">Directory</string>
   <string name="directory_search_label_work">Zakelijke contactenlijst</string>
-  <string name="local_search_label">Alle contacten</string>
-  <string name="local_suggestions_search_label">Suggesties</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ik</string>
   <string name="missing_name">(Geen naam)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Contact weergeven</string>
-  <string name="list_filter_phones">Alle contacten met telefoonnummers</string>
-  <string name="list_filter_phones_work">Contacten uit werkprofiel</string>
   <string name="view_updates_from_group">Updates bekijken</string>
   <string name="account_phone">Alleen op apparaat, niet gesynchroniseerd</string>
   <string name="nameLabelsGroup">Naam</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chatten via ICQ</string>
   <string name="chat_jabber">Chatten via Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Alle contacten</string>
-  <string name="listAllContactsInAccount">Contacten in %s</string>
-  <string name="listCustomView">Contacten in aangepaste weergave</string>
-  <string name="listSingleContact">Eén contact</string>
   <string name="display_options_sort_list_by">Sorteren op</string>
   <string name="display_options_sort_by_given_name">Voornaam</string>
   <string name="display_options_sort_by_family_name">Achternaam</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Zoekopdracht wissen</string>
   <string name="select_account_dialog_title">Account</string>
   <string name="set_default_account">Altijd gebruiken voor oproepen</string>
-  <string name="select_phone_account_for_calls">Simkaart voor deze oproep kiezen</string>
-  <string name="select_phone_account_for_calls_remember">Deze keuze onthouden</string>
   <string name="call_with_a_note">Oproep met een notitie</string>
   <string name="call_subject_hint">Typ een notitie om te verzenden met de oproep...</string>
   <string name="send_and_call_button">VERZENDEN EN BELLEN</string>
@@ -141,5 +123,4 @@
     <item quantity="other">Tabblad %1$s. %2$d ongelezen items. </item>
   </plurals>
   <string name="description_search_video_call">Videogesprek</string>
-  <string name="description_search_call_and_share">Delen en bellen</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-no/strings.xml b/java/com/android/contacts/common/res/values-no/strings.xml
index 911dc0f..612b2d6 100644
--- a/java/com/android/contacts/common/res/values-no/strings.xml
+++ b/java/com/android/contacts/common/res/values-no/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Vil du fjerne ofte kontaktede personer?</string>
   <string name="clearFrequentsConfirmation">Du fjerner listen over ofte kontaktede personer i Kontakter- og Telefon-appene, og tvinger e-postappene til å lære seg adresseinnstillingene dine på nytt.</string>
   <string name="clearFrequentsProgress_title">Fjerner ofte kontaktede personer ...</string>
-  <string name="status_available">Tilgjengelig</string>
-  <string name="status_away">Borte</string>
-  <string name="status_busy">Opptatt</string>
-  <string name="contactsList">Kontakter</string>
-  <string name="contact_suggestions">Toppforslag</string>
-  <string name="local_invisible_directory">Annen</string>
   <string name="directory_search_label">Katalog</string>
   <string name="directory_search_label_work">Jobbkatalog</string>
-  <string name="local_search_label">Alle kontakter</string>
-  <string name="local_suggestions_search_label">Forslag</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Meg</string>
   <string name="missing_name">(Uten navn)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Se kontakten</string>
-  <string name="list_filter_phones">Alle kontakter med telefonnumre</string>
-  <string name="list_filter_phones_work">Jobbprofilkontakter</string>
   <string name="view_updates_from_group">Se oppdateringer</string>
   <string name="account_phone">Bare på enheten din, uten synkronisering</string>
   <string name="nameLabelsGroup">Navn</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Nettprat med ICQ</string>
   <string name="chat_jabber">Nettprat med Jabber</string>
   <string name="chat">Nettprat</string>
-  <string name="list_filter_all_accounts">Alle kontakter</string>
-  <string name="listAllContactsInAccount">Kontakter i %s</string>
-  <string name="listCustomView">Kontakter i tilpasset visning</string>
-  <string name="listSingleContact">Enkeltkontakt</string>
   <string name="display_options_sort_list_by">Sortér etter</string>
   <string name="display_options_sort_by_given_name">Fornavn</string>
   <string name="display_options_sort_by_family_name">Etternavn</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Slett søk</string>
   <string name="select_account_dialog_title">Konto</string>
   <string name="set_default_account">Bruk alltid dette for samtaler</string>
-  <string name="select_phone_account_for_calls">Velg SIM-kort for dette anropet</string>
-  <string name="select_phone_account_for_calls_remember">Husk dette valget</string>
   <string name="call_with_a_note">Ring med et notat</string>
   <string name="call_subject_hint">Skriv et notat du vil sende med anropet …</string>
   <string name="send_and_call_button">SEND OG RING</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s-fanen. %2$d uleste elementer. </item>
   </plurals>
   <string name="description_search_video_call">Videosamtale</string>
-  <string name="description_search_call_and_share">Del og ring</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-pa/strings.xml b/java/com/android/contacts/common/res/values-pa/strings.xml
index 9e998f9..d07bc69 100644
--- a/java/com/android/contacts/common/res/values-pa/strings.xml
+++ b/java/com/android/contacts/common/res/values-pa/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">ਕੀ ਅਕਸਰ ਸੰਪਰਕ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਹਟਾਉਣੇ ਹਨ?</string>
   <string name="clearFrequentsConfirmation">ਤੁਸੀਂ ਵਾਰੀ-ਵਾਰੀ ਸੰਪਰਕ ਅਤੇ ਫੋਨ ਐਪਸ ਵਿੱਚ ਸੰਪਰਕ ਕੀਤੀ ਸੂਚੀ ਹਟਾਓਗੇ ਅਤੇ ਈਮੇਲ ਐਪਸ ਤੇ ਸਕ੍ਰੈਚ ਨਾਲ ਤੁਹਾਡੀਆਂ ਪਤਾ ਲਗਾਉਣ ਦੀਆਂ ਤਰਜੀਹਾਂ ਜਾਣਨ ਲਈ ਜ਼ੋਰ ਪਾਓਗੇ।</string>
   <string name="clearFrequentsProgress_title">ਅਕਸਰ ਸੰਪਰਕ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਹਟਾ ਰਿਹਾ ਹੈ…</string>
-  <string name="status_available">ਉਪਲਬਧ</string>
-  <string name="status_away">ਦੂਰ</string>
-  <string name="status_busy">ਰੁੱਝਾ ਹੋਇਆ ਹੈ</string>
-  <string name="contactsList">ਸੰਪਰਕ</string>
-  <string name="contact_suggestions">ਪ੍ਰਮੁੱਖ ਸੁਝਾਏ ਗਏ</string>
-  <string name="local_invisible_directory">ਹੋਰ</string>
   <string name="directory_search_label">ਡਾਇਰੈਕਟਰੀ</string>
   <string name="directory_search_label_work">ਕੰਮ ਡਾਇਰੈਕਟਰੀ</string>
-  <string name="local_search_label">ਸਾਰੇ ਸੰਪਰਕ</string>
-  <string name="local_suggestions_search_label">ਸੁਝਾਅ</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">ਮੈਂ</string>
   <string name="missing_name">(ਕੋਈ ਨਾਮ ਨਹੀਂ)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">ਸੰਪਰਕ ਦੇਖੋ</string>
-  <string name="list_filter_phones">ਫੋਨ ਨੰਬਰਾਂ ਵਾਲੇ ਸਾਰੇ ਸੰਪਰਕ</string>
-  <string name="list_filter_phones_work">ਕੰਮ ਪ੍ਰੋਫਾਈਲ ਸੰਪਰਕ</string>
   <string name="view_updates_from_group">ਅਪਡੇਟਾਂ ਦੇਖੋ</string>
   <string name="account_phone">ਸਿਰਫ਼-ਡੀਵਾਈਸ \'ਤੇ, ਅਣ-ਸਮਕਾਲੀਕਿਰਤ</string>
   <string name="nameLabelsGroup">ਨਾਮ</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋ</string>
   <string name="chat_jabber">Jabber ਵਰਤਦੇ ਹੋਏ ਚੈਟ ਕਰੋ</string>
   <string name="chat">ਚੈਟ</string>
-  <string name="list_filter_all_accounts">ਸਾਰੇ ਸੰਪਰਕ</string>
-  <string name="listAllContactsInAccount">%s ਵਿੱਚ ਸੰਪਰਕ</string>
-  <string name="listCustomView">ਕਸਟਮ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਸੰਪਰਕ</string>
-  <string name="listSingleContact">ਸਿੰਗਲ ਸੰਪਰਕ</string>
   <string name="display_options_sort_list_by">ਇਸ ਮੁਤਾਬਕ ਛਾਂਟੋ</string>
   <string name="display_options_sort_by_given_name">ਪਹਿਲਾ ਨਾਮ</string>
   <string name="display_options_sort_by_family_name">ਆਖਰੀ ਨਾਮ</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">ਖੋਜ ਹਟਾਓ</string>
   <string name="select_account_dialog_title">ਖਾਤਾ</string>
   <string name="set_default_account">ਕਾਲਾਂ ਲਈ ਹਮੇਸ਼ਾਂ ਇਹ ਵਰਤੋ</string>
-  <string name="select_phone_account_for_calls">ਇਸ ਕਾਲ ਲਈ ਸਿਮ ਚੁਣੋ</string>
-  <string name="select_phone_account_for_calls_remember">ਇਹ ਚੋਣ ਯਾਦ ਰੱਖੋ</string>
   <string name="call_with_a_note">ਕੋਈ ਨੋਟ ਦੇ ਨਾਲ ਕਾਲ ਕਰੋ</string>
   <string name="call_subject_hint">ਕਾਲ ਦੇ ਨਾਲ ਭੇਜਣ ਲਈ ਕੋਈ ਨੋਟ ਟਾਈਪ ਕਰੋ ...</string>
   <string name="send_and_call_button">ਭੇਜੋ ਅਤੇ ਕਾਲ ਕਰੋ</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ਟੈਬ। %2$d ਅਣ-ਪੜ੍ਹੀਆਂ ਆਈਟਮਾਂ। </item>
   </plurals>
   <string name="description_search_video_call">ਵੀਡੀਓ ਕਾਲ</string>
-  <string name="description_search_call_and_share">ਸਾਂਝਾ ਕਰੋ ਅਤੇ ਕਾਲ ਕਰੋ</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-pl/strings.xml b/java/com/android/contacts/common/res/values-pl/strings.xml
index ed371d7..7900017 100644
--- a/java/com/android/contacts/common/res/values-pl/strings.xml
+++ b/java/com/android/contacts/common/res/values-pl/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Wyczyścić częste kontakty?</string>
   <string name="clearFrequentsConfirmation">Wyczyścisz listę częstych kontaktów w aplikacjach Kontakty i Telefon. Aplikacje pocztowe będą musiały od nowa poznać Twoje preferencje adresowe.</string>
   <string name="clearFrequentsProgress_title">Czyszczę częste kontakty…</string>
-  <string name="status_available">Dostępny</string>
-  <string name="status_away">Nieobecny</string>
-  <string name="status_busy">Zajęty</string>
-  <string name="contactsList">Kontakty</string>
-  <string name="contact_suggestions">Najlepsze sugestie</string>
-  <string name="local_invisible_directory">Inny</string>
   <string name="directory_search_label">Katalog</string>
   <string name="directory_search_label_work">Katalog służbowy</string>
-  <string name="local_search_label">Wszystkie kontakty</string>
-  <string name="local_suggestions_search_label">Sugestie</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ja</string>
   <string name="missing_name">(Bez nazwy)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Pokaż kontakt</string>
-  <string name="list_filter_phones">Wszystkie kontakty z numerami telefonów</string>
-  <string name="list_filter_phones_work">Kontakty w profilu służbowym</string>
   <string name="view_updates_from_group">Pokaż aktualizacje</string>
   <string name="account_phone">Tylko na urządzeniu – bez synchronizacji</string>
   <string name="nameLabelsGroup">Imię i nazwisko</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Czat w ICQ</string>
   <string name="chat_jabber">Czat w Jabberze</string>
   <string name="chat">Czat</string>
-  <string name="list_filter_all_accounts">Wszystkie kontakty</string>
-  <string name="listAllContactsInAccount">Kontakty na koncie %s</string>
-  <string name="listCustomView">Kontakty spełniające kryteria</string>
-  <string name="listSingleContact">Jeden kontakt</string>
   <string name="display_options_sort_list_by">Sortuj według</string>
   <string name="display_options_sort_by_given_name">Imię</string>
   <string name="display_options_sort_by_family_name">Nazwisko</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Wyczyść wyszukiwanie</string>
   <string name="select_account_dialog_title">Konto</string>
   <string name="set_default_account">Zawsze używaj do połączeń</string>
-  <string name="select_phone_account_for_calls">Wybierz kartę SIM, aby zadzwonić</string>
-  <string name="select_phone_account_for_calls_remember">Zapamiętaj ten wybór</string>
   <string name="call_with_a_note">Połącz i wyślij notatkę</string>
   <string name="call_subject_hint">Wpisz notatkę, którą chcesz wysłać razem z połączeniem...</string>
   <string name="send_and_call_button">WYŚLIJ I ZADZWOŃ</string>
@@ -143,5 +125,4 @@
     <item quantity="other"> Karta %1$s. %2$d nieprzeczytanego elementu. </item>
   </plurals>
   <string name="description_search_video_call">Rozmowa wideo</string>
-  <string name="description_search_call_and_share">Udostępnij i zadzwoń</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-pt-rBR/strings.xml b/java/com/android/contacts/common/res/values-pt-rBR/strings.xml
index 244db57..af03d15 100644
--- a/java/com/android/contacts/common/res/values-pt-rBR/strings.xml
+++ b/java/com/android/contacts/common/res/values-pt-rBR/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Apagar contatos frequentes?</string>
   <string name="clearFrequentsConfirmation">Você apagará a lista de contatos frequentes nos apps Contatos e Telefone, fazendo com que os apps de e-mail tenham que redefinir suas preferências de endereçamento.</string>
   <string name="clearFrequentsProgress_title">Apagando contatos frequentes…</string>
-  <string name="status_available">Disponível</string>
-  <string name="status_away">Ausente</string>
-  <string name="status_busy">Ocupado</string>
-  <string name="contactsList">Contatos</string>
-  <string name="contact_suggestions">Principais sugestões</string>
-  <string name="local_invisible_directory">Outros</string>
   <string name="directory_search_label">Diretório</string>
   <string name="directory_search_label_work">Diretório de trabalho</string>
-  <string name="local_search_label">Todos os contatos</string>
-  <string name="local_suggestions_search_label">Sugestões</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Eu</string>
   <string name="missing_name">(Sem nome)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Visualizar contato</string>
-  <string name="list_filter_phones">Todos os contatos com números de telefone</string>
-  <string name="list_filter_phones_work">Contatos do perfil de trabalho</string>
   <string name="view_updates_from_group">Ver atualizações</string>
   <string name="account_phone">Somente no dispositivo, não sincronizado</string>
   <string name="nameLabelsGroup">Nome</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Bater papo usando o ICQ</string>
   <string name="chat_jabber">Bater papo usando o Jabber</string>
   <string name="chat">Bate-papo</string>
-  <string name="list_filter_all_accounts">Todos os contatos</string>
-  <string name="listAllContactsInAccount">Contatos em %s</string>
-  <string name="listCustomView">Cont. na vis. pers.</string>
-  <string name="listSingleContact">Contato único</string>
   <string name="display_options_sort_list_by">Classificar por</string>
   <string name="display_options_sort_by_given_name">Nome</string>
   <string name="display_options_sort_by_family_name">Sobrenome</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Limpar pesquisa</string>
   <string name="select_account_dialog_title">Conta</string>
   <string name="set_default_account">Sempre usar esta opção para chamadas</string>
-  <string name="select_phone_account_for_calls">Escolher o SIM para esta chamada</string>
-  <string name="select_phone_account_for_calls_remember">Lembrar desta escolha</string>
   <string name="call_with_a_note">Chamada com uma nota</string>
   <string name="call_subject_hint">Escreva uma nota para enviar com a chamada...</string>
   <string name="send_and_call_button">ENVIAR E LIGAR</string>
@@ -141,5 +123,4 @@
     <item quantity="other">Guia \"%1$s\". %2$d itens não lidos. </item>
   </plurals>
   <string name="description_search_video_call">Videochamada</string>
-  <string name="description_search_call_and_share">Compartilhar e ligar</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-pt-rPT/strings.xml b/java/com/android/contacts/common/res/values-pt-rPT/strings.xml
index 22b9abe..8c8b6d3 100644
--- a/java/com/android/contacts/common/res/values-pt-rPT/strings.xml
+++ b/java/com/android/contacts/common/res/values-pt-rPT/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Limpar contactos frequentes?</string>
   <string name="clearFrequentsConfirmation">Limpa a lista de contactos frequentes nas aplicações Contactos e Telemóvel e força as aplicações de email a aprenderem as suas preferências de endereço de raiz.</string>
   <string name="clearFrequentsProgress_title">A limpar contactos frequentes...</string>
-  <string name="status_available">Disponível</string>
-  <string name="status_away">Ausente</string>
-  <string name="status_busy">Ocupado(a)</string>
-  <string name="contactsList">Contactos</string>
-  <string name="contact_suggestions">Principais sugestões</string>
-  <string name="local_invisible_directory">Outro</string>
   <string name="directory_search_label">Diretório</string>
   <string name="directory_search_label_work">Diretório de trabalho</string>
-  <string name="local_search_label">Todos os contactos</string>
-  <string name="local_suggestions_search_label">Sugestões</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Eu</string>
   <string name="missing_name">(Sem nome)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Ver contacto</string>
-  <string name="list_filter_phones">Todos os contactos com números de telefone</string>
-  <string name="list_filter_phones_work">Contactos do perfil de trabalho</string>
   <string name="view_updates_from_group">Ver atualizações</string>
   <string name="account_phone">Apenas no dispositivo, não sincronizado</string>
   <string name="nameLabelsGroup">Nome</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chat através do ICQ</string>
   <string name="chat_jabber">Chat através do Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Todos os contactos</string>
-  <string name="listAllContactsInAccount">Contactos em %s</string>
-  <string name="listCustomView">Contactos na vista personalizada</string>
-  <string name="listSingleContact">Contacto único</string>
   <string name="display_options_sort_list_by">Ordenar por</string>
   <string name="display_options_sort_by_given_name">Nome próprio</string>
   <string name="display_options_sort_by_family_name">Apelido</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Limpar pesquisa</string>
   <string name="select_account_dialog_title">Conta</string>
   <string name="set_default_account">Utilizar sempre este para chamadas</string>
-  <string name="select_phone_account_for_calls">Escolher o SIM para esta chamada</string>
-  <string name="select_phone_account_for_calls_remember">Lembrar esta escolha</string>
   <string name="call_with_a_note">Ligar com uma nota</string>
   <string name="call_subject_hint">Escrever uma nota para enviar com a chamada...</string>
   <string name="send_and_call_button">ENVIAR E LIGAR</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Separador %1$s. %2$d itens não lidos. </item>
   </plurals>
   <string name="description_search_video_call">Videochamada</string>
-  <string name="description_search_call_and_share">Partilhar e ligar</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-pt/strings.xml b/java/com/android/contacts/common/res/values-pt/strings.xml
index 244db57..af03d15 100644
--- a/java/com/android/contacts/common/res/values-pt/strings.xml
+++ b/java/com/android/contacts/common/res/values-pt/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Apagar contatos frequentes?</string>
   <string name="clearFrequentsConfirmation">Você apagará a lista de contatos frequentes nos apps Contatos e Telefone, fazendo com que os apps de e-mail tenham que redefinir suas preferências de endereçamento.</string>
   <string name="clearFrequentsProgress_title">Apagando contatos frequentes…</string>
-  <string name="status_available">Disponível</string>
-  <string name="status_away">Ausente</string>
-  <string name="status_busy">Ocupado</string>
-  <string name="contactsList">Contatos</string>
-  <string name="contact_suggestions">Principais sugestões</string>
-  <string name="local_invisible_directory">Outros</string>
   <string name="directory_search_label">Diretório</string>
   <string name="directory_search_label_work">Diretório de trabalho</string>
-  <string name="local_search_label">Todos os contatos</string>
-  <string name="local_suggestions_search_label">Sugestões</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Eu</string>
   <string name="missing_name">(Sem nome)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Visualizar contato</string>
-  <string name="list_filter_phones">Todos os contatos com números de telefone</string>
-  <string name="list_filter_phones_work">Contatos do perfil de trabalho</string>
   <string name="view_updates_from_group">Ver atualizações</string>
   <string name="account_phone">Somente no dispositivo, não sincronizado</string>
   <string name="nameLabelsGroup">Nome</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Bater papo usando o ICQ</string>
   <string name="chat_jabber">Bater papo usando o Jabber</string>
   <string name="chat">Bate-papo</string>
-  <string name="list_filter_all_accounts">Todos os contatos</string>
-  <string name="listAllContactsInAccount">Contatos em %s</string>
-  <string name="listCustomView">Cont. na vis. pers.</string>
-  <string name="listSingleContact">Contato único</string>
   <string name="display_options_sort_list_by">Classificar por</string>
   <string name="display_options_sort_by_given_name">Nome</string>
   <string name="display_options_sort_by_family_name">Sobrenome</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Limpar pesquisa</string>
   <string name="select_account_dialog_title">Conta</string>
   <string name="set_default_account">Sempre usar esta opção para chamadas</string>
-  <string name="select_phone_account_for_calls">Escolher o SIM para esta chamada</string>
-  <string name="select_phone_account_for_calls_remember">Lembrar desta escolha</string>
   <string name="call_with_a_note">Chamada com uma nota</string>
   <string name="call_subject_hint">Escreva uma nota para enviar com a chamada...</string>
   <string name="send_and_call_button">ENVIAR E LIGAR</string>
@@ -141,5 +123,4 @@
     <item quantity="other">Guia \"%1$s\". %2$d itens não lidos. </item>
   </plurals>
   <string name="description_search_video_call">Videochamada</string>
-  <string name="description_search_call_and_share">Compartilhar e ligar</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ro/strings.xml b/java/com/android/contacts/common/res/values-ro/strings.xml
index f08de57..df93d6c 100644
--- a/java/com/android/contacts/common/res/values-ro/strings.xml
+++ b/java/com/android/contacts/common/res/values-ro/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Ștergeți pers. frecvent contactate?</string>
   <string name="clearFrequentsConfirmation">Veți șterge lista persoanelor contactate frecvent din aplicațiile Agendă și Telefon și veți forța aplicațiile de e-mail să vă învețe preferințele pentru adrese de la zero.</string>
   <string name="clearFrequentsProgress_title">Se șterg pers. frecvent contactate…</string>
-  <string name="status_available">Disponibil(ă)</string>
-  <string name="status_away">Plecat(ă)</string>
-  <string name="status_busy">Ocupat(ă)</string>
-  <string name="contactsList">Agendă</string>
-  <string name="contact_suggestions">Cele mai populare sugestii</string>
-  <string name="local_invisible_directory">Altul</string>
   <string name="directory_search_label">Director</string>
   <string name="directory_search_label_work">Directorul de serviciu</string>
-  <string name="local_search_label">Toată agenda</string>
-  <string name="local_suggestions_search_label">Sugestii</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Eu</string>
   <string name="missing_name">(Fără nume)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Vizualizați persoana din agendă</string>
-  <string name="list_filter_phones">Toate persoanele de contact cu numere de telefon</string>
-  <string name="list_filter_phones_work">Persoane de contact din profilul de serviciu</string>
   <string name="view_updates_from_group">Afișați actualizări</string>
   <string name="account_phone">Numai pe dispozitiv, nesincronizat</string>
   <string name="nameLabelsGroup">Nume</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Conversați prin ICQ</string>
   <string name="chat_jabber">Conversați prin Jabber</string>
   <string name="chat">Conversați prin chat</string>
-  <string name="list_filter_all_accounts">Toată agenda</string>
-  <string name="listAllContactsInAccount">Agenda din %s</string>
-  <string name="listCustomView">Agenda în afișarea personalizată</string>
-  <string name="listSingleContact">O singură persoană de contact</string>
   <string name="display_options_sort_list_by">Sortați după</string>
   <string name="display_options_sort_by_given_name">Prenume</string>
   <string name="display_options_sort_by_family_name">Nume</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Ștergeți căutarea</string>
   <string name="select_account_dialog_title">Cont</string>
   <string name="set_default_account">Utilizați mereu pentru apeluri</string>
-  <string name="select_phone_account_for_calls">Alegeți cardul SIM pentru acest apel</string>
-  <string name="select_phone_account_for_calls_remember">Rețineți această alegere</string>
   <string name="call_with_a_note">Apelați împreună cu o notă</string>
   <string name="call_subject_hint">Introduceți o notă ca să o trimiteți împreună cu apelul...</string>
   <string name="send_and_call_button">TRIMITEȚI ȘI APELAȚI</string>
@@ -142,5 +124,4 @@
     <item quantity="other"> Fila %1$s. %2$d de elemente necitite. </item>
   </plurals>
   <string name="description_search_video_call">Apel video</string>
-  <string name="description_search_call_and_share">Trimiteți și apelați</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ru/strings.xml b/java/com/android/contacts/common/res/values-ru/strings.xml
index 62e0647..4f37169 100644
--- a/java/com/android/contacts/common/res/values-ru/strings.xml
+++ b/java/com/android/contacts/common/res/values-ru/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Очистить список популярных контактов?</string>
   <string name="clearFrequentsConfirmation">Список популярных контактов в приложениях \"Контакты\" и \"Телефон\" будет очищен, а приложения электронной почты начнут запоминать адреса заново.</string>
   <string name="clearFrequentsProgress_title">Подождите…</string>
-  <string name="status_available">Доступен</string>
-  <string name="status_away">Отсутствует</string>
-  <string name="status_busy">Не беспокоить</string>
-  <string name="contactsList">Контакты</string>
-  <string name="contact_suggestions">Топ рекомендуемых</string>
-  <string name="local_invisible_directory">Другое</string>
   <string name="directory_search_label">Каталог</string>
   <string name="directory_search_label_work">Каталог контактов из рабочего профиля</string>
-  <string name="local_search_label">Все контакты</string>
-  <string name="local_suggestions_search_label">Рекомендуемые</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Вы</string>
   <string name="missing_name">Имя не указано</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Посмотреть контакт</string>
-  <string name="list_filter_phones">Контакты с номерами телефонов</string>
-  <string name="list_filter_phones_work">Контакты из рабочего профиля</string>
   <string name="view_updates_from_group">Просмотреть обновления</string>
   <string name="account_phone">Только на устройстве, не синхронизируется</string>
   <string name="nameLabelsGroup">Имя</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Чат через ICQ</string>
   <string name="chat_jabber">Чат через Jabber</string>
   <string name="chat">Чат</string>
-  <string name="list_filter_all_accounts">Все контакты</string>
-  <string name="listAllContactsInAccount">Контакты аккаунта \"%s\"</string>
-  <string name="listCustomView">Пользовательский фильтр</string>
-  <string name="listSingleContact">Один контакт</string>
   <string name="display_options_sort_list_by">Сортировка</string>
   <string name="display_options_sort_by_given_name">По имени</string>
   <string name="display_options_sort_by_family_name">По фамилии</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Очистить условия поиска</string>
   <string name="select_account_dialog_title">Аккаунт</string>
   <string name="set_default_account">Всегда использовать для звонков</string>
-  <string name="select_phone_account_for_calls">Выберите SIM-карту для вызова</string>
-  <string name="select_phone_account_for_calls_remember">Запомнить выбор</string>
   <string name="call_with_a_note">Написать сообщение абоненту</string>
   <string name="call_subject_hint">Введите текст…</string>
   <string name="send_and_call_button">ОТПРАВИТЬ И ПОЗВОНИТЬ</string>
@@ -143,5 +125,4 @@
     <item quantity="other">Вкладка %1$s. %2$d непрочитанного элемента. </item>
   </plurals>
   <string name="description_search_video_call">Видеовызов</string>
-  <string name="description_search_call_and_share">Поделиться и позвонить</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-si/strings.xml b/java/com/android/contacts/common/res/values-si/strings.xml
index b7c8044..7b414bd 100644
--- a/java/com/android/contacts/common/res/values-si/strings.xml
+++ b/java/com/android/contacts/common/res/values-si/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">නිතරම සම්බන්ධ වන අය හිස් කරන්නද?</string>
   <string name="clearFrequentsConfirmation">ඔබ සම්බන්ධතා සහ දුරකථන යෙදුම්වලින් නිතරම සම්බන්ධ වුණු අයගේ ලැයිස්තුව හිස් කර, මුල සිටම ඔබගේ ලිපින අභිරුචි ඉගෙනීමට ඊ-තැපැල් යෙදුම්වලට බල කරයි.</string>
   <string name="clearFrequentsProgress_title">නිතරම සම්බන්ධ වන අය හිස් කරමින්…</string>
-  <string name="status_available">සිටියි</string>
-  <string name="status_away">ළඟ නැත</string>
-  <string name="status_busy">කාර්යබහුල</string>
-  <string name="contactsList">සම්බන්ධතා</string>
-  <string name="contact_suggestions">ඉහළින්ම යෝජිත</string>
-  <string name="local_invisible_directory">වෙනත්</string>
   <string name="directory_search_label">නාමාවලිය</string>
   <string name="directory_search_label_work">කාර්යාල සම්බන්ධතා නාමාවලිය</string>
-  <string name="local_search_label">සියලුම සම්බන්ධතා</string>
-  <string name="local_suggestions_search_label">යෝජනා</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">මම</string>
   <string name="missing_name">(නමක් නොමැත)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">සම්බන්ධතාව පෙන්වන්න.</string>
-  <string name="list_filter_phones">දුරකථන අංක සහිත සම්බන්ධතා</string>
-  <string name="list_filter_phones_work">කාර්යාල පැතිකඩ සම්බන්ධතා</string>
   <string name="view_updates_from_group">යාවත්කාලීන වීම් පෙන්වන්න</string>
   <string name="account_phone">උපාංගය-පමණී, සමමුහුර්තකරණය නොකරන ලදී</string>
   <string name="nameLabelsGroup">නම‍</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ භාවිතයෙන් කතාබස් කරන්න</string>
   <string name="chat_jabber">Jabber භාවිතයෙන් කතාබස් කරන්න</string>
   <string name="chat">කතාබස්</string>
-  <string name="list_filter_all_accounts">සියලුම සම්බන්ධතා</string>
-  <string name="listAllContactsInAccount">%s හි සම්බන්ධතා</string>
-  <string name="listCustomView">අභිරුචි පෙනුමේ සම්බන්ධතා</string>
-  <string name="listSingleContact">එක් සම්බන්ධතාවය</string>
   <string name="display_options_sort_list_by">අනුපිළිවෙලට සකසා ඇත්තේ</string>
   <string name="display_options_sort_by_given_name">පළමු නම</string>
   <string name="display_options_sort_by_family_name">අවසාන නම</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">සෙවීම හිස් කරන්න</string>
   <string name="select_account_dialog_title">ගිණුම</string>
   <string name="set_default_account">ඇමතුම් සඳහා මෙම එක සැමවිටම භාවිතා කරන්න</string>
-  <string name="select_phone_account_for_calls">මෙම ඇමතුම සඳහා SIM තෝරන්න</string>
-  <string name="select_phone_account_for_calls_remember">මෙම තේරීම මතක තබා ගන්න</string>
   <string name="call_with_a_note">සටහනක් සමගින් අමතන්න</string>
   <string name="call_subject_hint">ඇමතුම සමග යැවීමට සටහනක් ටයිප් කරන්න ...</string>
   <string name="send_and_call_button">යවන්න සහ අමතන්න</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ටැබය. නොකියවූ අයිතම %2$d. </item>
   </plurals>
   <string name="description_search_video_call">වීඩියෝ ඇමතුම</string>
-  <string name="description_search_call_and_share">බෙදා ගෙන අමතන්න</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-sk/strings.xml b/java/com/android/contacts/common/res/values-sk/strings.xml
index 1e11e18..a9f4011 100644
--- a/java/com/android/contacts/common/res/values-sk/strings.xml
+++ b/java/com/android/contacts/common/res/values-sk/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Vymazať často kontaktované osoby?</string>
   <string name="clearFrequentsConfirmation">Vymažete zoznam často kontaktovaných osôb v aplikáciách Kontakty a Telefón a e-mailové aplikácie budú musieť odznova vytvoriť predvoľby adresátov.</string>
   <string name="clearFrequentsProgress_title">Mazanie často kontaktov. osôb...</string>
-  <string name="status_available">Som tu</string>
-  <string name="status_away">Som preč</string>
-  <string name="status_busy">Nemám čas</string>
-  <string name="contactsList">Kontakty</string>
-  <string name="contact_suggestions">Najviac odporúčané</string>
-  <string name="local_invisible_directory">Iné</string>
   <string name="directory_search_label">Adresár</string>
   <string name="directory_search_label_work">Pracovný adresár</string>
-  <string name="local_search_label">Všetky kontakty</string>
-  <string name="local_suggestions_search_label">Návrhy</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ja</string>
   <string name="missing_name">(Bez mena)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Zobraziť kontakt</string>
-  <string name="list_filter_phones">Všetky kontakty s telefónnymi číslami</string>
-  <string name="list_filter_phones_work">Kontakty v pracovnom profile</string>
   <string name="view_updates_from_group">Zobraziť aktualizácie</string>
   <string name="account_phone">Len v zariadení, bez synchronizácie</string>
   <string name="nameLabelsGroup">Meno</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Zhovárať sa pomocou služby ICQ</string>
   <string name="chat_jabber">Zhovárať sa pomocou služby Jabber</string>
   <string name="chat">Četovať</string>
-  <string name="list_filter_all_accounts">Všetky kontakty</string>
-  <string name="listAllContactsInAccount">Kontakty v účte %s</string>
-  <string name="listCustomView">Kontakty vo vlastnom zobrazení</string>
-  <string name="listSingleContact">Jednotlivý kontakt</string>
   <string name="display_options_sort_list_by">Zoradiť podľa</string>
   <string name="display_options_sort_by_given_name">Krstné meno</string>
   <string name="display_options_sort_by_family_name">Priezvisko</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Vymazať vyhľadávanie</string>
   <string name="select_account_dialog_title">Účet</string>
   <string name="set_default_account">Vždy používať pre hovory</string>
-  <string name="select_phone_account_for_calls">Vyberte SIM kartu na tento hovor</string>
-  <string name="select_phone_account_for_calls_remember">Zapamätať si túto voľbu</string>
   <string name="call_with_a_note">Hovor s poznámkou</string>
   <string name="call_subject_hint">Napíšte poznámku, ktorá sa odošle s hovorom...</string>
   <string name="send_and_call_button">ODOSLAŤ A VOLAŤ</string>
@@ -143,5 +125,4 @@
     <item quantity="other"> Karta %1$s. %2$d neprečítaných položiek. </item>
   </plurals>
   <string name="description_search_video_call">Videohovor</string>
-  <string name="description_search_call_and_share">Zdieľať a volať</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-sl/strings.xml b/java/com/android/contacts/common/res/values-sl/strings.xml
index 92f8dcc..d71824a 100644
--- a/java/com/android/contacts/common/res/values-sl/strings.xml
+++ b/java/com/android/contacts/common/res/values-sl/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Želite izbrisati seznam pog. stikov?</string>
   <string name="clearFrequentsConfirmation">Izbrisali boste seznam pogostih stikov v aplikacijah Stiki in Telefon, zato bodo e-poštne aplikacije začele shranjevati pogoste naslovnike od začetka.</string>
   <string name="clearFrequentsProgress_title">Brisanje seznama pogost. stikov ...</string>
-  <string name="status_available">Dosegljiv</string>
-  <string name="status_away">Odsoten</string>
-  <string name="status_busy">Zaseden</string>
-  <string name="contactsList">Stiki</string>
-  <string name="contact_suggestions">Najboljši predlogi</string>
-  <string name="local_invisible_directory">Drugo</string>
   <string name="directory_search_label">Imenik</string>
   <string name="directory_search_label_work">Delovni imenik</string>
-  <string name="local_search_label">Vsi stiki</string>
-  <string name="local_suggestions_search_label">Predlogi</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Jaz</string>
   <string name="missing_name">(Ni imena)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Ogled stika</string>
-  <string name="list_filter_phones">Vsi stiki s telefonskimi številkami</string>
-  <string name="list_filter_phones_work">Stiki za delovni profil</string>
   <string name="view_updates_from_group">Prikaži posodobitve</string>
   <string name="account_phone">Samo v napravi; se ne sinhronizira</string>
   <string name="nameLabelsGroup">Ime</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Klepet s storitvijo ICQ</string>
   <string name="chat_jabber">Klepet s storitvijo Jabber</string>
   <string name="chat">Klepet</string>
-  <string name="list_filter_all_accounts">Vsi stiki</string>
-  <string name="listAllContactsInAccount">Stiki v %s</string>
-  <string name="listCustomView">Stiki v pogledu po meri</string>
-  <string name="listSingleContact">Posamezen stik</string>
   <string name="display_options_sort_list_by">Razvrsti glede na</string>
   <string name="display_options_sort_by_given_name">Ime</string>
   <string name="display_options_sort_by_family_name">Priimek</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Počisti iskalno polje</string>
   <string name="select_account_dialog_title">Račun</string>
   <string name="set_default_account">Vedno uporabi to možnost za klice</string>
-  <string name="select_phone_account_for_calls">Izbira kartice SIM za ta klic</string>
-  <string name="select_phone_account_for_calls_remember">Zapomni si to izbiro</string>
   <string name="call_with_a_note">Klic z zapiskom</string>
   <string name="call_subject_hint">Vnesite zapisek, ki ga želite poslati s klicem ...</string>
   <string name="send_and_call_button">POŠLJI IN KLIČI</string>
@@ -143,5 +125,4 @@
     <item quantity="other"> Zavihek »%1$s«. %2$d neprebranih elementov. </item>
   </plurals>
   <string name="description_search_video_call">Videoklic</string>
-  <string name="description_search_call_and_share">Klic s skupno rabo</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-sq/strings.xml b/java/com/android/contacts/common/res/values-sq/strings.xml
index 7ee06a8..5446cc2 100644
--- a/java/com/android/contacts/common/res/values-sq/strings.xml
+++ b/java/com/android/contacts/common/res/values-sq/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Të pastrohen kontaktet e shpeshta?</string>
   <string name="clearFrequentsConfirmation">Do ta pastrosh listën e kontakteve të shpeshta në aplikacionet \"Kontaktet\" dhe \"Telefoni\" dhe do t\'i detyrosh aplikacionet e mail-it të mësojnë preferencat e tua të adresimit nga e para.</string>
   <string name="clearFrequentsProgress_title">Po pastron kontaktet e shpeshta…</string>
-  <string name="status_available">I gatshëm</string>
-  <string name="status_away">I larguar</string>
-  <string name="status_busy">I zënë</string>
-  <string name="contactsList">Kontaktet</string>
-  <string name="contact_suggestions">Sugjerimet kryesore</string>
-  <string name="local_invisible_directory">Tjetër</string>
   <string name="directory_search_label">Direktoria</string>
   <string name="directory_search_label_work">Direktoria e punës</string>
-  <string name="local_search_label">Të gjitha kontaktet</string>
-  <string name="local_suggestions_search_label">Sugjerimet</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Unë</string>
   <string name="missing_name">(Pa emër)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Shiko kontaktin</string>
-  <string name="list_filter_phones">Të gjitha kontaktet me numra telefoni</string>
-  <string name="list_filter_phones_work">Kontaktet e profilit të punës</string>
   <string name="view_updates_from_group">Shiko përditësimet</string>
   <string name="account_phone">Vetëm pajisja, e pasinkronizuar</string>
   <string name="nameLabelsGroup">Emri</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Bisedo me ICQ</string>
   <string name="chat_jabber">Bisedo me Jabber</string>
   <string name="chat">Bisedo</string>
-  <string name="list_filter_all_accounts">Të gjitha kontaktet</string>
-  <string name="listAllContactsInAccount">Kontaktet në %s</string>
-  <string name="listCustomView">Pamja e personalizuar</string>
-  <string name="listSingleContact">Një kontakt i vetëm</string>
   <string name="display_options_sort_list_by">Rendit sipas</string>
   <string name="display_options_sort_by_given_name">Emri</string>
   <string name="display_options_sort_by_family_name">Mbiemri</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Pastro kërkimin</string>
   <string name="select_account_dialog_title">Llogaria</string>
   <string name="set_default_account">Përdor gjithmonë këtë për telefonatat</string>
-  <string name="select_phone_account_for_calls">Zgjidh kartën SIM për këtë telefonatë</string>
-  <string name="select_phone_account_for_calls_remember">Kujtoje këtë zgjedhje</string>
   <string name="call_with_a_note">Telefono me shënim</string>
   <string name="call_subject_hint">Shkruaj një shënim për të dërguar një telefonatë...</string>
   <string name="send_and_call_button">DËRGO DHE TELEFONO</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Skeda %1$s. %2$d artikuj të palexuar. </item>
   </plurals>
   <string name="description_search_video_call">Telefonatë me video</string>
-  <string name="description_search_call_and_share">Ndaj dhe telefono</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-sr/strings.xml b/java/com/android/contacts/common/res/values-sr/strings.xml
index 1878fad..34f61fa 100644
--- a/java/com/android/contacts/common/res/values-sr/strings.xml
+++ b/java/com/android/contacts/common/res/values-sr/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Бришете често контактиране?</string>
   <string name="clearFrequentsConfirmation">Обрисаћете листу често контактираних у апликацијама Контакти и Телефон, па ће имејл апликације морати поново да прикупе информације о адресирању.</string>
   <string name="clearFrequentsProgress_title">Брисање често контактираних...</string>
-  <string name="status_available">Доступан/на</string>
-  <string name="status_away">Одсутан/на</string>
-  <string name="status_busy">Заузет/а</string>
-  <string name="contactsList">Контакти</string>
-  <string name="contact_suggestions">Најпопуларнији предлози</string>
-  <string name="local_invisible_directory">Другo</string>
   <string name="directory_search_label">Директоријум</string>
   <string name="directory_search_label_work">Директоријум за Work</string>
-  <string name="local_search_label">Сви контакти</string>
-  <string name="local_suggestions_search_label">Предлози</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ја</string>
   <string name="missing_name">(Нема имена)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Прикажи контакт</string>
-  <string name="list_filter_phones">Сви контакти са бројевима телефона</string>
-  <string name="list_filter_phones_work">Контакти са профила за Work</string>
   <string name="view_updates_from_group">Прикажи ажурирања</string>
   <string name="account_phone">Само на уређају, не синхронизује се</string>
   <string name="nameLabelsGroup">Име</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Започни ћаскање преко ICQ-а</string>
   <string name="chat_jabber">Започни ћаскање преко Jabber-а</string>
   <string name="chat">Ћаскање</string>
-  <string name="list_filter_all_accounts">Сви контакти</string>
-  <string name="listAllContactsInAccount">Контакти у групи %s</string>
-  <string name="listCustomView">Контакти у прилагођеном приказу</string>
-  <string name="listSingleContact">Појединачни контакт</string>
   <string name="display_options_sort_list_by">Сортирај према</string>
   <string name="display_options_sort_by_given_name">Имену</string>
   <string name="display_options_sort_by_family_name">Презимену</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Брисање претраге</string>
   <string name="select_account_dialog_title">Налог</string>
   <string name="set_default_account">Увек користи ово за позиве</string>
-  <string name="select_phone_account_for_calls">Изаберите SIM за овај позив</string>
-  <string name="select_phone_account_for_calls_remember">Запамти овај избор</string>
   <string name="call_with_a_note">Позив са белешком</string>
   <string name="call_subject_hint">Унесите белешку коју ћете послати уз позив...</string>
   <string name="send_and_call_button">ПОШАЉИ И ПОЗОВИ</string>
@@ -142,5 +124,4 @@
     <item quantity="other"> Картица %1$s. %2$d непрочитаних ставки. </item>
   </plurals>
   <string name="description_search_video_call">Видео позив</string>
-  <string name="description_search_call_and_share">Дели и позови</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-sv/strings.xml b/java/com/android/contacts/common/res/values-sv/strings.xml
index 08d52d0..8ba7535 100644
--- a/java/com/android/contacts/common/res/values-sv/strings.xml
+++ b/java/com/android/contacts/common/res/values-sv/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Vill du rensa listan?</string>
   <string name="clearFrequentsConfirmation">Du rensar listan över personer som du kontaktar ofta i apparna Kontakter och Telefon. E-postappar tvingas lära sig dina mottagarinställningar från början.</string>
   <string name="clearFrequentsProgress_title">Listan rensas …</string>
-  <string name="status_available">Tillgänglig</string>
-  <string name="status_away">Borta</string>
-  <string name="status_busy">Upptagen</string>
-  <string name="contactsList">Kontakter</string>
-  <string name="contact_suggestions">Bästa förslagen</string>
-  <string name="local_invisible_directory">Övrigt</string>
   <string name="directory_search_label">Katalog</string>
   <string name="directory_search_label_work">Jobbkatalog</string>
-  <string name="local_search_label">Alla kontakter</string>
-  <string name="local_suggestions_search_label">Förslag</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Jag</string>
   <string name="missing_name">(Inget namn)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Visa kontakten</string>
-  <string name="list_filter_phones">Alla kontakter med telefonnummer</string>
-  <string name="list_filter_phones_work">Kontakter i jobbprofilen</string>
   <string name="view_updates_from_group">Visa uppdateringar</string>
   <string name="account_phone">Endast enhet, osynkroniserad</string>
   <string name="nameLabelsGroup">Namn</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Chatta med ICQ</string>
   <string name="chat_jabber">Chatta med Jabber</string>
   <string name="chat">Chatt</string>
-  <string name="list_filter_all_accounts">Alla kontakter</string>
-  <string name="listAllContactsInAccount">Kontakter i %s</string>
-  <string name="listCustomView">Kontakter i anpassad vy</string>
-  <string name="listSingleContact">En kontakt</string>
   <string name="display_options_sort_list_by">Sortera efter</string>
   <string name="display_options_sort_by_given_name">Förnamn</string>
   <string name="display_options_sort_by_family_name">Efternamn</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Rensa sökning</string>
   <string name="select_account_dialog_title">Konto</string>
   <string name="set_default_account">Använd alltid för samtal</string>
-  <string name="select_phone_account_for_calls">Välj SIM-kort till det här samtalet</string>
-  <string name="select_phone_account_for_calls_remember">Kom ihåg det här valet</string>
   <string name="call_with_a_note">Ring med anteckning</string>
   <string name="call_subject_hint">Gör en anteckning som skickas när du ringer …</string>
   <string name="send_and_call_button">SKICKA OCH RING</string>
@@ -141,5 +123,4 @@
     <item quantity="other">Fliken %1$s. %2$d olästa poster. </item>
   </plurals>
   <string name="description_search_video_call">Videosamtal</string>
-  <string name="description_search_call_and_share">Dela och ring</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-sw/strings.xml b/java/com/android/contacts/common/res/values-sw/strings.xml
index 1be9f0a..3836eb8 100644
--- a/java/com/android/contacts/common/res/values-sw/strings.xml
+++ b/java/com/android/contacts/common/res/values-sw/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Futa unaowasiliana nao mara kwa mara?</string>
   <string name="clearFrequentsConfirmation">Utafuta orodha ya unaowasiliana nao mara kwa mara katika programu za Anwani na Simu, na ulazimishe programu za barua pepe zitambue mapendeleo yako ya anwani kutoka mwanzo.</string>
   <string name="clearFrequentsProgress_title">Inafuta unaowasiliana nao mara kwa mara...</string>
-  <string name="status_available">Inapatikana</string>
-  <string name="status_away">Mbali</string>
-  <string name="status_busy">Ana shughuli</string>
-  <string name="contactsList">Anwani</string>
-  <string name="contact_suggestions">Mapendekezo Maarufu</string>
-  <string name="local_invisible_directory">Nyingineyo</string>
   <string name="directory_search_label">Saraka</string>
   <string name="directory_search_label_work">Anwani za kazi</string>
-  <string name="local_search_label">Anwani zote</string>
-  <string name="local_suggestions_search_label">Mapendekezo</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Mimi</string>
   <string name="missing_name">(Hakuna jina)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Angalia maelezo ya mawasiliano</string>
-  <string name="list_filter_phones">Anwani zote zilizo na nambari ya simu</string>
-  <string name="list_filter_phones_work">Anwani za watu wa kazini</string>
   <string name="view_updates_from_group">Ona sasisho</string>
   <string name="account_phone">Kwenye kifaa tu, haijasawazishwa</string>
   <string name="nameLabelsGroup">Jina</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Piga gumzo kutumia ICQ</string>
   <string name="chat_jabber">Piga gumzo kutumia Jabber</string>
   <string name="chat">Gumzo</string>
-  <string name="list_filter_all_accounts">Anwani zote</string>
-  <string name="listAllContactsInAccount">Anwani kwenye %s</string>
-  <string name="listCustomView">Anwani katika mwoneko maalum</string>
-  <string name="listSingleContact">Anwani moja</string>
   <string name="display_options_sort_list_by">Panga kulingana na</string>
   <string name="display_options_sort_by_given_name">Jina la kwanza</string>
   <string name="display_options_sort_by_family_name">Jina la mwisho</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Futa utafutaji</string>
   <string name="select_account_dialog_title">Akaunti</string>
   <string name="set_default_account">Tumia hii kwa simu wakati wote</string>
-  <string name="select_phone_account_for_calls">Chagua SIM kwa ajili ya simu hii</string>
-  <string name="select_phone_account_for_calls_remember">Kumbuka chaguo hili</string>
   <string name="call_with_a_note">Piga simu inayoambatana na dokezo</string>
   <string name="call_subject_hint">Andika dokezo litakaloambatana na simu utakayopiga ...</string>
   <string name="send_and_call_button">TUMA na UPIGE SIMU</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Kichupo cha %1$s. Vipengee %2$d havijasomwa. </item>
   </plurals>
   <string name="description_search_video_call">Simu ya video</string>
-  <string name="description_search_call_and_share">Shiriki na upige simu</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ta/strings.xml b/java/com/android/contacts/common/res/values-ta/strings.xml
index 3510235..ec99c93 100644
--- a/java/com/android/contacts/common/res/values-ta/strings.xml
+++ b/java/com/android/contacts/common/res/values-ta/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">அடிக்கடி தொடர்புகொண்ட தொடர்பை அழிக்கவா?</string>
   <string name="clearFrequentsConfirmation">தொடர்புகள் மற்றும் ஃபோன் பயன்பாடுகளில் உள்ள அடிக்கடி தொடர்பு கொண்டவர்களின் பட்டியல் அழிக்கப்பட்டு, தொடக்கத்திலிருந்து மீண்டும் உங்கள் முகவரியிடல் விருப்பத்தேர்வுகளை மின்னஞ்சல் பயன்பாடுகள் அறியும்படி செய்யப்படும்.</string>
   <string name="clearFrequentsProgress_title">அடிக்கடித் தொடர்புகொண்ட தொடர்பை அழிக்கிறது…</string>
-  <string name="status_available">இருக்கிறார்</string>
-  <string name="status_away">வெளியே</string>
-  <string name="status_busy">பணிமிகுதி</string>
-  <string name="contactsList">தொடர்புகள்</string>
-  <string name="contact_suggestions">அதிகம் பரிந்துரைத்தவை</string>
-  <string name="local_invisible_directory">மற்றவை</string>
   <string name="directory_search_label">கோப்பகம்</string>
   <string name="directory_search_label_work">பணிக் கோப்பகம்</string>
-  <string name="local_search_label">எல்லா தொடர்புகளும்</string>
-  <string name="local_suggestions_search_label">பரிந்துரைகள்</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">எனக்கு</string>
   <string name="missing_name">(பெயர் இல்லை)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">தொடர்பைக் காட்டும் பொத்தான்</string>
-  <string name="list_filter_phones">மொபைல் எண்களுடனான எல்லா தொடர்புகளும்</string>
-  <string name="list_filter_phones_work">பணிச் சுயவிவரத் தொடர்புகள்</string>
   <string name="view_updates_from_group">புதுப்பிப்புகளைக் காட்டு</string>
   <string name="account_phone">சாதனத்தில் மட்டும், ஒத்திசைக்கப்படாது</string>
   <string name="nameLabelsGroup">பெயர்</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ இல் அரட்டையடி</string>
   <string name="chat_jabber">Jabber இல் அரட்டையடி</string>
   <string name="chat">அரட்டை</string>
-  <string name="list_filter_all_accounts">எல்லா தொடர்புகளும்</string>
-  <string name="listAllContactsInAccount">%s இல் உள்ள தொடர்புகள்</string>
-  <string name="listCustomView">தனிப்பயன் காட்சியில் உள்ள தொடர்புகள்</string>
-  <string name="listSingleContact">ஒரு தொடர்பு</string>
   <string name="display_options_sort_list_by">வரிசைப்படுத்து</string>
   <string name="display_options_sort_by_given_name">முதல் பெயர்</string>
   <string name="display_options_sort_by_family_name">இறுதிப் பெயர்</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">தேடலை அழி</string>
   <string name="select_account_dialog_title">கணக்கு</string>
   <string name="set_default_account">அழைப்புகளுக்கு எப்போதும் இதைப் பயன்படுத்து</string>
-  <string name="select_phone_account_for_calls">இந்த அழைப்பிற்கான சிம்மைத் தேர்வுசெய்க</string>
-  <string name="select_phone_account_for_calls_remember">இந்த விருப்பத்தை நினைவில்கொள்</string>
   <string name="call_with_a_note">குறிப்புடன் அழைக்கவும்</string>
   <string name="call_subject_hint">அழைப்புடன் சேர்த்து அனுப்ப, குறிப்பை உள்ளிடவும்...</string>
   <string name="send_and_call_button">அனுப்பி அழை</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s தாவல். படிக்காதவை (%2$d). </item>
   </plurals>
   <string name="description_search_video_call">வீடியோ அழைப்பைத் தொடங்குவதற்கான பொத்தான்</string>
-  <string name="description_search_call_and_share">பகிர்ந்து அழைப்பதற்கான பொத்தான்</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-te/strings.xml b/java/com/android/contacts/common/res/values-te/strings.xml
index 8f0ac22..9d35b64 100644
--- a/java/com/android/contacts/common/res/values-te/strings.xml
+++ b/java/com/android/contacts/common/res/values-te/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">తరచుగా సంప్రదించినవాటిని క్లియర్ చేయాలా?</string>
   <string name="clearFrequentsConfirmation">మీరు పరిచయాలు మరియు ఫోన్ అనువర్తనాల్లో తరచుగా సంప్రదించిన పరిచయాల జాబితాను తీసివేస్తారు మరియు స్క్రాచ్ నుండి మీ చిరునామా ప్రాధాన్యతలను తెలుసుకునేలా ఇమెయిల్ అనువర్తనాలను నిర్బంధిస్తారు.</string>
   <string name="clearFrequentsProgress_title">తరచుగా సంప్రదించినవాటిని క్లియర్ చేస్తోంది…</string>
-  <string name="status_available">అందుబాటులో ఉన్నారు</string>
-  <string name="status_away">దూరంగా ఉన్నారు</string>
-  <string name="status_busy">బిజీగా ఉన్నారు</string>
-  <string name="contactsList">పరిచయాలు</string>
-  <string name="contact_suggestions">ఉత్తమ సూచనలు</string>
-  <string name="local_invisible_directory">ఇతరం</string>
   <string name="directory_search_label">డైరెక్టరీ</string>
   <string name="directory_search_label_work">కార్యాలయ డైరెక్టరీ</string>
-  <string name="local_search_label">అన్ని పరిచయాలు</string>
-  <string name="local_suggestions_search_label">సూచనలు</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">నేను</string>
   <string name="missing_name">(పేరు లేదు)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">పరిచయాన్ని వీక్షించండి</string>
-  <string name="list_filter_phones">ఫోన్ నంబర్‌లు గల అన్ని పరిచయాలు</string>
-  <string name="list_filter_phones_work">కార్యాలయ ప్రొఫైల్ పరిచయాలు</string>
   <string name="view_updates_from_group">నవీకరణలను వీక్షించండి</string>
   <string name="account_phone">పరికరంలో మాత్రమే ఉంటుంది, సమకాలీకరించబడదు</string>
   <string name="nameLabelsGroup">పేరు</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQని ఉపయోగించి చాట్ చేయండి</string>
   <string name="chat_jabber">Jabberని ఉపయోగించి చాట్ చేయండి</string>
   <string name="chat">చాట్ చేయండి</string>
-  <string name="list_filter_all_accounts">అన్ని పరిచయాలు</string>
-  <string name="listAllContactsInAccount">%sలో పరిచయాలు</string>
-  <string name="listCustomView">అనుకూల వీక్షణలో పరిచయాలు</string>
-  <string name="listSingleContact">ఒక పరిచయం</string>
   <string name="display_options_sort_list_by">ఇలా క్రమబద్ధీకరించు</string>
   <string name="display_options_sort_by_given_name">మొదటి పేరు</string>
   <string name="display_options_sort_by_family_name">చివరి పేరు</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">శోధనను క్లియర్ చేయి</string>
   <string name="select_account_dialog_title">ఖాతా</string>
   <string name="set_default_account">కాల్‌ల కోసం ఎల్లప్పుడూ దీన్ని ఉపయోగించు</string>
-  <string name="select_phone_account_for_calls">ఈ కాల్ కోసం SIMని ఎంచుకోండి</string>
-  <string name="select_phone_account_for_calls_remember">ఈ ఎంపికను గుర్తుంచుకో</string>
   <string name="call_with_a_note">గమనికతో కాల్ చేయి</string>
   <string name="call_subject_hint">కాల్‌తో పాటు పంపడానికి గమనికను టైప్ చేయండి ...</string>
   <string name="send_and_call_button">పంపు &amp; కాల్ చేయి</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ట్యాబ్. %2$d చదవని అంశాలు. </item>
   </plurals>
   <string name="description_search_video_call">వీడియో కాల్</string>
-  <string name="description_search_call_and_share">భాగస్వామ్యం చేసి, కాల్ చేయి</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-th/strings.xml b/java/com/android/contacts/common/res/values-th/strings.xml
index 0768e24..6447bb7 100644
--- a/java/com/android/contacts/common/res/values-th/strings.xml
+++ b/java/com/android/contacts/common/res/values-th/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">ล้างรายชื่อที่ติดต่อบ่อยไหม</string>
   <string name="clearFrequentsConfirmation">คุณจะล้างรายชื่อของผู้ที่ติดต่อด้วยบ่อยๆ ในแอปพลิเคชัน Contacts  และ Phone และบังคับให้แอปพลิเคชันอีเมลเรียนรู้ค่ากำหนดที่อยู่ของคุณใหม่ตั้งแต่ต้น</string>
   <string name="clearFrequentsProgress_title">กำลังล้างรายชื่อที่ติดต่อบ่อย…</string>
-  <string name="status_available">พร้อมใช้งาน</string>
-  <string name="status_away">ไม่อยู่</string>
-  <string name="status_busy">ไม่ว่าง</string>
-  <string name="contactsList">รายชื่อติดต่อ</string>
-  <string name="contact_suggestions">รายการแนะนำยอดนิยม</string>
-  <string name="local_invisible_directory">อื่นๆ</string>
   <string name="directory_search_label">ไดเรกทอรี</string>
   <string name="directory_search_label_work">ไดเรกทอรีที่ทำงาน</string>
-  <string name="local_search_label">รายชื่อติดต่อทั้งหมด</string>
-  <string name="local_suggestions_search_label">รายการแนะนำ</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">ฉัน</string>
   <string name="missing_name">(ไม่มีชื่อ)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">ดูผู้ติดต่อ</string>
-  <string name="list_filter_phones">รายชื่อติดต่อทั้งหมดที่มีหมายเลขโทรศัพท์</string>
-  <string name="list_filter_phones_work">รายชื่อติดต่อในโปรไฟล์งาน</string>
   <string name="view_updates_from_group">ดูการอัปเดต</string>
   <string name="account_phone">อุปกรณ์เท่านั้น ไม่ซิงค์</string>
   <string name="nameLabelsGroup">ชื่อ</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">แชทโดยใช้ ICQ</string>
   <string name="chat_jabber">แชทโดยใช้ Jabber</string>
   <string name="chat">แชท</string>
-  <string name="list_filter_all_accounts">รายชื่อติดต่อทั้งหมด</string>
-  <string name="listAllContactsInAccount">รายชื่อติดต่อใน %s</string>
-  <string name="listCustomView">รายชื่อติดต่อในมุมมองที่กำหนดเอง</string>
-  <string name="listSingleContact">รายชื่อติดต่อเดียว</string>
   <string name="display_options_sort_list_by">จัดเรียงตาม</string>
   <string name="display_options_sort_by_given_name">ชื่อ</string>
   <string name="display_options_sort_by_family_name">นามสกุล</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">ล้างการค้นหา</string>
   <string name="select_account_dialog_title">บัญชี</string>
   <string name="set_default_account">ใช้ในการโทรทุกครั้ง</string>
-  <string name="select_phone_account_for_calls">เลือกซิมสำหรับการโทรนี้</string>
-  <string name="select_phone_account_for_calls_remember">จำตัวเลือกนี้</string>
   <string name="call_with_a_note">โทรพร้อมโน้ต</string>
   <string name="call_subject_hint">พิมพ์โน้ตเพื่อส่งพร้อมการโทร ...</string>
   <string name="send_and_call_button">ส่งและโทร</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> แท็บ %1$s ยังไม่อ่าน %2$d รายการ </item>
   </plurals>
   <string name="description_search_video_call"> Hangouts วิดีโอ</string>
-  <string name="description_search_call_and_share">แชร์และโทร</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-tl/strings.xml b/java/com/android/contacts/common/res/values-tl/strings.xml
index 5bceef5..1361d92 100644
--- a/java/com/android/contacts/common/res/values-tl/strings.xml
+++ b/java/com/android/contacts/common/res/values-tl/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">I-clear ang madalas na kinontak</string>
   <string name="clearFrequentsConfirmation">Iki-clear mo ang listahan ng mga madalas na nakakaugnay sa mga app ng Mga Contact at Telepono at pupuwersahin mo ang mga app ng email na matutunan ang iyong mga kagustuhan sa pag-a-address mula sa simula.</string>
   <string name="clearFrequentsProgress_title">Kini-clear madalas na inuugnayan…</string>
-  <string name="status_available">Available</string>
-  <string name="status_away">Wala</string>
-  <string name="status_busy">Abala</string>
-  <string name="contactsList">Mga Contact</string>
-  <string name="contact_suggestions">Mga Madalas Imungkahi</string>
-  <string name="local_invisible_directory">Iba pa</string>
   <string name="directory_search_label">Direktoryo</string>
   <string name="directory_search_label_work">Directory sa trabaho</string>
-  <string name="local_search_label">Lahat ng mga contact</string>
-  <string name="local_suggestions_search_label">Mga Mungkahi</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ako</string>
   <string name="missing_name">(Walang pangalan)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Tingnan ang contact</string>
-  <string name="list_filter_phones">Lahat ng contact na may mga numero ng telepono</string>
-  <string name="list_filter_phones_work">Mga contact ng profile sa trabaho</string>
   <string name="view_updates_from_group">Tingnan ang mga update</string>
   <string name="account_phone">Device lang, inalis sa pagkaka-sync</string>
   <string name="nameLabelsGroup">Pangalan</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Makipag-chat gamit ang ICQ</string>
   <string name="chat_jabber">Makipag-chat gamit ang Jabber</string>
   <string name="chat">Chat</string>
-  <string name="list_filter_all_accounts">Lahat ng contact</string>
-  <string name="listAllContactsInAccount">Mga contact sa %s</string>
-  <string name="listCustomView">Mga contact sa custom na view</string>
-  <string name="listSingleContact">Iisang contact</string>
   <string name="display_options_sort_list_by">Uriin ayon sa</string>
   <string name="display_options_sort_by_given_name">Pangalan</string>
   <string name="display_options_sort_by_family_name">Apelyido</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">I-clear ang paghahanap</string>
   <string name="select_account_dialog_title">Account</string>
   <string name="set_default_account">Gamitin ito palagi sa mga tawag</string>
-  <string name="select_phone_account_for_calls">Pumili ng SIM para sa tawag na ito</string>
-  <string name="select_phone_account_for_calls_remember">Tandaan ang pagpipiliang ito</string>
   <string name="call_with_a_note">Tumawag nang may kasamang tala</string>
   <string name="call_subject_hint">Mag-type ng isang tala na ipadadala kasama ng tawag ...</string>
   <string name="send_and_call_button">IPADALA AT TAWAGAN</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Tab ng %1$s. %2$d na hindi pa nababasang item. </item>
   </plurals>
   <string name="description_search_video_call">Mag-video call</string>
-  <string name="description_search_call_and_share">Ibahagi at tumawag</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-tr/strings.xml b/java/com/android/contacts/common/res/values-tr/strings.xml
index 512891b..ede896b 100644
--- a/java/com/android/contacts/common/res/values-tr/strings.xml
+++ b/java/com/android/contacts/common/res/values-tr/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Sık iletişim kurulanlar silinsin mi?</string>
   <string name="clearFrequentsConfirmation">Kişiler ve Telefon uygulamalarındaki sık iletişim kurulanlar listesini temizleyecek ve e-posta uygulamalarını adres tercihlerinizi en baştan öğrenmeye zorlayacaksınız.</string>
   <string name="clearFrequentsProgress_title">Sık iletişim kurulanlar siliniyor…</string>
-  <string name="status_available">Müsait</string>
-  <string name="status_away">Dışarıda</string>
-  <string name="status_busy">Meşgul</string>
-  <string name="contactsList">Kişiler</string>
-  <string name="contact_suggestions">En Çok Önerilenler</string>
-  <string name="local_invisible_directory">Diğer</string>
   <string name="directory_search_label">Dizin</string>
   <string name="directory_search_label_work">İş dizini</string>
-  <string name="local_search_label">Tüm kişiler</string>
-  <string name="local_suggestions_search_label">Öneriler</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Ben</string>
   <string name="missing_name">(Adsız)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Kişiyi görüntüle</string>
-  <string name="list_filter_phones">Telefon numarası olan tüm kişiler</string>
-  <string name="list_filter_phones_work">İş profili kişileri</string>
   <string name="view_updates_from_group">Güncellemeleri görüntüle</string>
   <string name="account_phone">Yalnızca cihaz, senkronize edilmemiş</string>
   <string name="nameLabelsGroup">Adı</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ kullanarak sohbet et</string>
   <string name="chat_jabber">Jabber kullanarak sohbet et</string>
   <string name="chat">Sohbet</string>
-  <string name="list_filter_all_accounts">Tüm kişiler</string>
-  <string name="listAllContactsInAccount">%s hesabındaki kişiler</string>
-  <string name="listCustomView">Özel görünümdeki kişiler</string>
-  <string name="listSingleContact">Tek kişi</string>
   <string name="display_options_sort_list_by">Sıralama ölçütü</string>
   <string name="display_options_sort_by_given_name">Ad</string>
   <string name="display_options_sort_by_family_name">Soyadı</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Aramayı temizle</string>
   <string name="select_account_dialog_title">Hesap</string>
   <string name="set_default_account">Çağrılar için her zaman bunu kullan</string>
-  <string name="select_phone_account_for_calls">Bu görüşme için kullanılacak SIM\'i seçin</string>
-  <string name="select_phone_account_for_calls_remember">Bu tercihi hatırla</string>
   <string name="call_with_a_note">Notla telefon et</string>
   <string name="call_subject_hint">Çağrıyla göndermek için bir not yazın...</string>
   <string name="send_and_call_button">GÖNDER VE ARA</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s sekmesi. %2$d okunmamış öğe. </item>
   </plurals>
   <string name="description_search_video_call">Görüntülü görüşme</string>
-  <string name="description_search_call_and_share">Paylaşır ve telefon eder</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-uk/strings.xml b/java/com/android/contacts/common/res/values-uk/strings.xml
index 5e97e43..345429e 100644
--- a/java/com/android/contacts/common/res/values-uk/strings.xml
+++ b/java/com/android/contacts/common/res/values-uk/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Очистити список частих контактів?</string>
   <string name="clearFrequentsConfirmation">Буде видалено список користувачів, з якими ви часто спілкуєтеся, з додатків Контакти та Телефон і скинуто налаштування адрес у додатках для електронної пошти.</string>
   <string name="clearFrequentsProgress_title">Очищення списку частих контактів…</string>
-  <string name="status_available">На місці</string>
-  <string name="status_away">Не на місці</string>
-  <string name="status_busy">Не турбувати</string>
-  <string name="contactsList">Контакти</string>
-  <string name="contact_suggestions">Найкращі пропозиції</string>
-  <string name="local_invisible_directory">Інші</string>
   <string name="directory_search_label">Каталог</string>
   <string name="directory_search_label_work">Робочі контакти</string>
-  <string name="local_search_label">Усі контакти</string>
-  <string name="local_suggestions_search_label">Пропозиції</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Я</string>
   <string name="missing_name">(Без імені)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Переглянути контакт</string>
-  <string name="list_filter_phones">Усі контакти з номерами телефону</string>
-  <string name="list_filter_phones_work">Контакти в робочому профілі</string>
   <string name="view_updates_from_group">Переглянути оновлення</string>
   <string name="account_phone">Лише на пристрої, не синхронізується</string>
   <string name="nameLabelsGroup">Ім’я</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Чат через ICQ</string>
   <string name="chat_jabber">Чат через Jabber</string>
   <string name="chat">Чат</string>
-  <string name="list_filter_all_accounts">Усі контакти</string>
-  <string name="listAllContactsInAccount">Контакти в обліковому записі %s</string>
-  <string name="listCustomView">Користувацький фільтр</string>
-  <string name="listSingleContact">Один контакт</string>
   <string name="display_options_sort_list_by">Параметри сортування</string>
   <string name="display_options_sort_by_given_name">Ім’я</string>
   <string name="display_options_sort_by_family_name">Прізвище</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Очистити поле пошуку</string>
   <string name="select_account_dialog_title">Обліковий запис</string>
   <string name="set_default_account">Завжди використовувати для дзвінків</string>
-  <string name="select_phone_account_for_calls">Вибрати SIM-карту для цього виклику</string>
-  <string name="select_phone_account_for_calls_remember">Запам’ятати цей вибір</string>
   <string name="call_with_a_note">Зателефонувати й надіслати нотатку</string>
   <string name="call_subject_hint">Введіть нотатку, яку хочете надіслати під час дзвінка…</string>
   <string name="send_and_call_button">ЗАТЕЛЕФОНУВАТИ Й НАДІСЛАТИ</string>
@@ -143,5 +125,4 @@
     <item quantity="other"> Вкладка \"%1$s\". %2$d непрочитаного елемента. </item>
   </plurals>
   <string name="description_search_video_call">Відеодзвінок</string>
-  <string name="description_search_call_and_share">Надіслати й зателефонувати</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-ur/strings.xml b/java/com/android/contacts/common/res/values-ur/strings.xml
index 89aa853..22a3481 100644
--- a/java/com/android/contacts/common/res/values-ur/strings.xml
+++ b/java/com/android/contacts/common/res/values-ur/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">اکثر رابطہ کردہ کو صاف کریں؟</string>
   <string name="clearFrequentsConfirmation">آپ رابطے اور فون ایپس میں اکثر رابطہ کردہ فہرست کو صاف کر دیں گے اور ای میل ایپس کو از سر نو اپنے پتے کی ترجیحات جاننے پر مجبور کریں گے۔</string>
   <string name="clearFrequentsProgress_title">اکثر رابطہ کردہ کو صاف کر رہا ہے…</string>
-  <string name="status_available">دستیاب</string>
-  <string name="status_away">دور</string>
-  <string name="status_busy">مصروف</string>
-  <string name="contactsList">رابطے</string>
-  <string name="contact_suggestions">سرفہرست تجویز کردہ</string>
-  <string name="local_invisible_directory">دیگر</string>
   <string name="directory_search_label">ڈائریکٹری</string>
   <string name="directory_search_label_work">دفتری ڈائرکٹری</string>
-  <string name="local_search_label">سبھی رابطے</string>
-  <string name="local_suggestions_search_label">تجاویز</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">میں</string>
   <string name="missing_name">(کوئی نام نہیں)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">رابطہ دیکھیں</string>
-  <string name="list_filter_phones">فون نمبرز کے ساتھ سبھی رابطے</string>
-  <string name="list_filter_phones_work">دفتری پروفائل رابطے</string>
   <string name="view_updates_from_group">اپ ڈیٹس دیکھیں</string>
   <string name="account_phone">صرف آلہ۔ غیر مطابقت پذیر</string>
   <string name="nameLabelsGroup">نام</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">‏ICQ کے ذریعے چیٹ کریں</string>
   <string name="chat_jabber">‏Jabber کے ذریعے چیٹ کریں</string>
   <string name="chat">چیٹ کریں</string>
-  <string name="list_filter_all_accounts">سبھی رابطے</string>
-  <string name="listAllContactsInAccount">%s میں رابطے</string>
-  <string name="listCustomView">حسب ضرورت منظر میں رابطے</string>
-  <string name="listSingleContact">واحد رابطہ</string>
   <string name="display_options_sort_list_by">ترتیب دیں بلحاظ</string>
   <string name="display_options_sort_by_given_name">پہلا نام</string>
   <string name="display_options_sort_by_family_name">آخری نام</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">تلاش صاف کریں</string>
   <string name="select_account_dialog_title">اکاؤنٹ</string>
   <string name="set_default_account">کالز کیلئے ہمیشہ اس کا استعمال کریں</string>
-  <string name="select_phone_account_for_calls">‏اس کال کیلئے SIM منتخب کریں</string>
-  <string name="select_phone_account_for_calls_remember">یہ انتخاب یاد رکھیں</string>
   <string name="call_with_a_note">ایک نوٹ کے ساتھ کال کریں</string>
   <string name="call_subject_hint">کال کے ساتھ بھیجنے کیلئے ایک نوٹ ٹائپ کریں…</string>
   <string name="send_and_call_button">بھیجیں اور کال کریں</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ٹیب۔ %2$d بغیر پڑھی ہوئی آئٹمز۔ </item>
   </plurals>
   <string name="description_search_video_call">ویڈیو کال</string>
-  <string name="description_search_call_and_share">اشتراک کریں اور کال کریں</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-uz/strings.xml b/java/com/android/contacts/common/res/values-uz/strings.xml
index 28b8e18..d24f197 100644
--- a/java/com/android/contacts/common/res/values-uz/strings.xml
+++ b/java/com/android/contacts/common/res/values-uz/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Bu ro‘yxat tozalansinmi?</string>
   <string name="clearFrequentsConfirmation">Kontaktlar va Telefon ilovalaridagi tez-tez aloqa qilingan kontaktlar ro‘yxati tozalanadi hamda e-pochta ilovalari manzillarni eslab qolishni qaytadan boshlaydi.</string>
   <string name="clearFrequentsProgress_title">Ko‘p gaplashilganlar tozalanmoqda…</string>
-  <string name="status_available">Aloqada</string>
-  <string name="status_away">Tashqarida</string>
-  <string name="status_busy">Band</string>
-  <string name="contactsList">Kontaktlar</string>
-  <string name="contact_suggestions">Eng faol</string>
-  <string name="local_invisible_directory">Boshqa</string>
   <string name="directory_search_label">Direktoriya</string>
   <string name="directory_search_label_work">Ishchi katalogi</string>
-  <string name="local_search_label">Barcha kontaktlar</string>
-  <string name="local_suggestions_search_label">Takliflar</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Men</string>
   <string name="missing_name">(Ismi yo‘q)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Kontaktni ko‘rish</string>
-  <string name="list_filter_phones">Telefon raqamli kontaktlar</string>
-  <string name="list_filter_phones_work">Ishchi profili kontaktlari</string>
   <string name="view_updates_from_group">Yangilanishlarni ko‘rish</string>
   <string name="account_phone">Faqat qurilmalarda, sinxronlanmaydi</string>
   <string name="nameLabelsGroup">Ism</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">ICQ’da suhbatlashish</string>
   <string name="chat_jabber">Jabber’da suhbatlashish</string>
   <string name="chat">Suhbatlashish</string>
-  <string name="list_filter_all_accounts">Barcha kontaktlar</string>
-  <string name="listAllContactsInAccount">%sdagi kontaktlar</string>
-  <string name="listCustomView">Filtrlangan kontaktlar</string>
-  <string name="listSingleContact">Bitta kontakt</string>
   <string name="display_options_sort_list_by">Saralash</string>
   <string name="display_options_sort_by_given_name">Ismi asosida</string>
   <string name="display_options_sort_by_family_name">Familiyasi asosida</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Izlashni tozalash</string>
   <string name="select_account_dialog_title">Hisob</string>
   <string name="set_default_account">Har doim qo‘ng‘iroqlar u-n foyd-sin</string>
-  <string name="select_phone_account_for_calls">Chaqiruv uchun SIM kartani tanlang</string>
-  <string name="select_phone_account_for_calls_remember">Shu tanlov eslab qolinsin</string>
   <string name="call_with_a_note">Qo‘ng‘iroq va izoh</string>
   <string name="call_subject_hint">Qo‘ng‘iroqqa qo‘shib yuborish uchun izoh yozing ...</string>
   <string name="send_and_call_button">YUBORISH va QO‘NG‘IROQ QILISH</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s ichki oynasi. %2$d ta o‘qilmagan narsa. </item>
   </plurals>
   <string name="description_search_video_call">Video suhbat</string>
-  <string name="description_search_call_and_share">Ulashish va chaqirish</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-vi/strings.xml b/java/com/android/contacts/common/res/values-vi/strings.xml
index f2f2a24..1fc9ba8 100644
--- a/java/com/android/contacts/common/res/values-vi/strings.xml
+++ b/java/com/android/contacts/common/res/values-vi/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Xóa danh sách liên hệ thường xuyên?</string>
   <string name="clearFrequentsConfirmation">Bạn sẽ xóa danh sách liên hệ thường xuyên trong ứng dụng Danh bạ và điện thoại cũng như buộc các ứng dụng email phải tìm hiểu các tùy chọn gửi của bạn lại từ đầu.</string>
   <string name="clearFrequentsProgress_title">Đang xóa DS liên hệ thường xuyên…</string>
-  <string name="status_available">Có mặt</string>
-  <string name="status_away">Đã ra ngoài</string>
-  <string name="status_busy">Bận</string>
-  <string name="contactsList">Danh bạ</string>
-  <string name="contact_suggestions">Đề xuất hàng đầu</string>
-  <string name="local_invisible_directory">Khác</string>
   <string name="directory_search_label">Thư mục</string>
   <string name="directory_search_label_work">Thư mục công việc</string>
-  <string name="local_search_label">Tất cả liên hệ</string>
-  <string name="local_suggestions_search_label">Đề xuất</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Tôi</string>
   <string name="missing_name">(Không có tên)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Xem liên hệ</string>
-  <string name="list_filter_phones">Tất cả người liên hệ có số điện thoại</string>
-  <string name="list_filter_phones_work">Liên hệ trên hồ sơ công việc</string>
   <string name="view_updates_from_group">Xem thông tin cập nhật</string>
   <string name="account_phone">Chỉ trên thiết bị, chưa đồng bộ hóa</string>
   <string name="nameLabelsGroup">Tên</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Trò chuyện sử dụng ICQ</string>
   <string name="chat_jabber">Trò chuyện sử dụng Jabber</string>
   <string name="chat">Trò chuyện</string>
-  <string name="list_filter_all_accounts">Tất cả liên hệ</string>
-  <string name="listAllContactsInAccount">Danh bạ trong %s</string>
-  <string name="listCustomView">Danh bạ ở chế độ xem tùy chỉnh</string>
-  <string name="listSingleContact">Một liên hệ</string>
   <string name="display_options_sort_list_by">Sắp xếp theo</string>
   <string name="display_options_sort_by_given_name">Tên</string>
   <string name="display_options_sort_by_family_name">Họ</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Xóa tìm kiếm</string>
   <string name="select_account_dialog_title">Tài khoản</string>
   <string name="set_default_account">Luôn sử dụng SIM này để gọi</string>
-  <string name="select_phone_account_for_calls">Chọn SIM cho cuộc gọi này</string>
-  <string name="select_phone_account_for_calls_remember">Nhớ lựa chọn này</string>
   <string name="call_with_a_note">Gọi điện kèm theo ghi chú</string>
   <string name="call_subject_hint">Nhập ghi chú để gửi kèm cuộc gọi...</string>
   <string name="send_and_call_button">GỬI và GỌI</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> Tab %1$s. %2$d mục chưa đọc. </item>
   </plurals>
   <string name="description_search_video_call">Gọi điện video</string>
-  <string name="description_search_call_and_share">Chia sẻ và gọi</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-zh-rCN/strings.xml b/java/com/android/contacts/common/res/values-zh-rCN/strings.xml
index cdaba8c..424c934 100644
--- a/java/com/android/contacts/common/res/values-zh-rCN/strings.xml
+++ b/java/com/android/contacts/common/res/values-zh-rCN/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">是否清除常用联系人？</string>
   <string name="clearFrequentsConfirmation">此操作会清除“通讯录”和“电话”应用中的常用联系人列表，并强制电子邮件应用重新获取您最常使用的联系地址。</string>
   <string name="clearFrequentsProgress_title">正在清除常用联系人…</string>
-  <string name="status_available">在线</string>
-  <string name="status_away">离开</string>
-  <string name="status_busy">忙碌</string>
-  <string name="contactsList">通讯录</string>
-  <string name="contact_suggestions">常用联系人推荐</string>
-  <string name="local_invisible_directory">其他</string>
   <string name="directory_search_label">目录</string>
   <string name="directory_search_label_work">工作目录</string>
-  <string name="local_search_label">所有联系人</string>
-  <string name="local_suggestions_search_label">建议</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">我</string>
   <string name="missing_name">（无姓名）</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">查看联系人</string>
-  <string name="list_filter_phones">所有拥有电话号码的联系人</string>
-  <string name="list_filter_phones_work">工作资料联系人</string>
   <string name="view_updates_from_group">查看最新动态</string>
   <string name="account_phone">仅限此设备，不同步</string>
   <string name="nameLabelsGroup">姓名</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">使用 ICQ 聊天</string>
   <string name="chat_jabber">使用 Jabber 聊天</string>
   <string name="chat">聊天</string>
-  <string name="list_filter_all_accounts">所有联系人</string>
-  <string name="listAllContactsInAccount">%s 中的联系人</string>
-  <string name="listCustomView">自定义视图中的联系人</string>
-  <string name="listSingleContact">单个联系人</string>
   <string name="display_options_sort_list_by">排序方式</string>
   <string name="display_options_sort_by_given_name">名字</string>
   <string name="display_options_sort_by_family_name">姓氏</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">清除搜索内容</string>
   <string name="select_account_dialog_title">帐号</string>
   <string name="set_default_account">一律使用这张卡进行通话</string>
-  <string name="select_phone_account_for_calls">为此次通话选择 SIM 卡</string>
-  <string name="select_phone_account_for_calls_remember">记住此选择</string>
   <string name="call_with_a_note">拨打电话并发送备注</string>
   <string name="call_subject_hint">输入要在拨打电话时发送的备注…</string>
   <string name="send_and_call_button">发送并拨打电话</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s标签。%2$d 项未读内容。</item>
   </plurals>
   <string name="description_search_video_call">视频通话</string>
-  <string name="description_search_call_and_share">分享并拨打电话</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
index e10e0b4..11d05c1 100644
--- a/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
+++ b/java/com/android/contacts/common/res/values-zh-rHK/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">清除常用聯絡人？</string>
   <string name="clearFrequentsConfirmation">您將清除「通訊錄」應用程式和「電話」應用程式中的常用聯絡人名單，並強制電子郵件應用程式重新取得您的寄件偏好設定。</string>
   <string name="clearFrequentsProgress_title">正在清除常用聯絡人…</string>
-  <string name="status_available">在線</string>
-  <string name="status_away">離開</string>
-  <string name="status_busy">忙碌</string>
-  <string name="contactsList">通訊錄</string>
-  <string name="contact_suggestions">熱門建議</string>
-  <string name="local_invisible_directory">其他</string>
   <string name="directory_search_label">名錄</string>
   <string name="directory_search_label_work">工作目錄</string>
-  <string name="local_search_label">所有聯絡人</string>
-  <string name="local_suggestions_search_label">建議</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">我</string>
   <string name="missing_name">(沒有名稱)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">查看聯絡人</string>
-  <string name="list_filter_phones">所有附有電話號碼的聯絡人</string>
-  <string name="list_filter_phones_work">工作設定檔通訊錄</string>
   <string name="view_updates_from_group">瀏覽更新資訊</string>
   <string name="account_phone">僅限裝置，未同步</string>
   <string name="nameLabelsGroup">姓名</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">使用 ICQ 進行即時通訊</string>
   <string name="chat_jabber">使用 Jabber 進行即時通訊</string>
   <string name="chat">即時通訊</string>
-  <string name="list_filter_all_accounts">所有聯絡人</string>
-  <string name="listAllContactsInAccount">%s 中的聯絡人</string>
-  <string name="listCustomView">聯絡人自訂檢視</string>
-  <string name="listSingleContact">單一聯絡人</string>
   <string name="display_options_sort_list_by">排序方式</string>
   <string name="display_options_sort_by_given_name">名字</string>
   <string name="display_options_sort_by_family_name">姓氏</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">清除搜尋</string>
   <string name="select_account_dialog_title">帳戶</string>
   <string name="set_default_account">永遠使用這張 SIM 卡通話</string>
-  <string name="select_phone_account_for_calls">選擇此通話要使用的 SIM 卡</string>
-  <string name="select_phone_account_for_calls_remember">記住這個選擇</string>
   <string name="call_with_a_note">撥號時傳送筆記</string>
   <string name="call_subject_hint">撥號時可以書寫和傳送筆記…</string>
   <string name="send_and_call_button">傳送和撥號</string>
@@ -141,5 +123,4 @@
     <item quantity="other">「%1$s」標籤 (%2$d 個未讀取項目)。</item>
   </plurals>
   <string name="description_search_video_call">視像通話</string>
-  <string name="description_search_call_and_share">分享並通話</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-zh-rTW/strings.xml b/java/com/android/contacts/common/res/values-zh-rTW/strings.xml
index 3f7dfc0..b99ee0f 100644
--- a/java/com/android/contacts/common/res/values-zh-rTW/strings.xml
+++ b/java/com/android/contacts/common/res/values-zh-rTW/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">清除常用聯絡人？</string>
   <string name="clearFrequentsConfirmation">您即將清除「聯絡人」應用程式和「電話」應用程式中的常用聯絡人清單，並設定讓電子郵件應用程式重新熟悉您的寄件偏好設定。</string>
   <string name="clearFrequentsProgress_title">正在清除常用聯絡人…</string>
-  <string name="status_available">線上</string>
-  <string name="status_away">離開</string>
-  <string name="status_busy">忙碌</string>
-  <string name="contactsList">聯絡人</string>
-  <string name="contact_suggestions">常用聯絡人建議</string>
-  <string name="local_invisible_directory">其他</string>
   <string name="directory_search_label">目錄</string>
   <string name="directory_search_label_work">工作聯絡人目錄</string>
-  <string name="local_search_label">所有聯絡人</string>
-  <string name="local_suggestions_search_label">建議</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">我</string>
   <string name="missing_name">(無姓名)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">查看聯絡人</string>
-  <string name="list_filter_phones">所有包含電話號碼的聯絡人資訊</string>
-  <string name="list_filter_phones_work">工作資料夾聯絡人</string>
   <string name="view_updates_from_group">查看最新動態</string>
   <string name="account_phone">只儲存在裝置上，不會同步處理</string>
   <string name="nameLabelsGroup">姓名</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">使用 ICQ 進行即時通訊</string>
   <string name="chat_jabber">使用 Jabber 進行即時通訊</string>
   <string name="chat">即時通訊</string>
-  <string name="list_filter_all_accounts">所有聯絡人</string>
-  <string name="listAllContactsInAccount">%s 中的聯絡人</string>
-  <string name="listCustomView">聯絡人自訂檢視</string>
-  <string name="listSingleContact">單一聯絡人</string>
   <string name="display_options_sort_list_by">排序依據</string>
   <string name="display_options_sort_by_given_name">名字</string>
   <string name="display_options_sort_by_family_name">姓氏</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">清除搜尋</string>
   <string name="select_account_dialog_title">帳戶</string>
   <string name="set_default_account">一律使用這張 SIM 卡通話</string>
-  <string name="select_phone_account_for_calls">選擇本次通話要使用的 SIM 卡</string>
-  <string name="select_phone_account_for_calls_remember">記住這個選擇</string>
   <string name="call_with_a_note">撥號時傳送備註</string>
   <string name="call_subject_hint">輸入可在撥號時傳送的備註...</string>
   <string name="send_and_call_button">傳送並撥打</string>
@@ -141,5 +123,4 @@
     <item quantity="other"> %1$s分頁。%2$d 個未讀項目。</item>
   </plurals>
   <string name="description_search_video_call">視訊通話</string>
-  <string name="description_search_call_and_share">分享及撥號</string>
 </resources>
diff --git a/java/com/android/contacts/common/res/values-zu/strings.xml b/java/com/android/contacts/common/res/values-zu/strings.xml
index dcda725..e6148c9 100644
--- a/java/com/android/contacts/common/res/values-zu/strings.xml
+++ b/java/com/android/contacts/common/res/values-zu/strings.xml
@@ -45,21 +45,9 @@
   <string name="clearFrequentsConfirmation_title">Sula oxhumana nabo njalo?</string>
   <string name="clearFrequentsConfirmation">Uzosula uhlu loxhumana nabo kakhulu kuzinhelo zokusebenza zokuxhumana noma zefoni, futhi uphoqelele izinhlelo zokusebenza ze-imeyili ukufunda izintandokazi zakho zekheli kusuka ekuqaleni.</string>
   <string name="clearFrequentsProgress_title">Isula oxhumana nabo njalo…</string>
-  <string name="status_available">Ngiyatholakala</string>
-  <string name="status_away">Ngiphumile</string>
-  <string name="status_busy">Ngimatasa</string>
-  <string name="contactsList">Othi tana nabo</string>
-  <string name="contact_suggestions">Okuphezulu okuphakanyisiwe</string>
-  <string name="local_invisible_directory">Okunye</string>
   <string name="directory_search_label">Uhla lwemibhalo</string>
   <string name="directory_search_label_work">Uhla lwemibhalo lomsebenzi</string>
-  <string name="local_search_label">Bonke othintana nabo</string>
-  <string name="local_suggestions_search_label">Iziphakamiso</string>
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Mina</string>
   <string name="missing_name">(Alikho igama)</string>
-  <string msgid="2795575601596468581" name="description_view_contact_detail">Buka oxhumana naye</string>
-  <string name="list_filter_phones">Bonke othintana nabo kanye nezinombolo zabo zefoni</string>
-  <string name="list_filter_phones_work">Oxhumana nabo bephrofayela yomsebenzi</string>
   <string name="view_updates_from_group">Buka okubuyekeziwe</string>
   <string name="account_phone">Idivayisi kuphela, akuvunyelanisiwe</string>
   <string name="nameLabelsGroup">Igama</string>
@@ -113,10 +101,6 @@
   <string name="chat_icq">Xoxa usebenzisa i-ICQ</string>
   <string name="chat_jabber">Xoxa usebenzisa i-Jabber</string>
   <string name="chat">Xoxa</string>
-  <string name="list_filter_all_accounts">Bonke oxhumana nabo</string>
-  <string name="listAllContactsInAccount">Oxhumana nabo ku-%s</string>
-  <string name="listCustomView">Oxhumana nabo ekubukweni okwenziwe ngendlela oyifisayo</string>
-  <string name="listSingleContact">Oyedwa oxhumana naye</string>
   <string name="display_options_sort_list_by">Hlunga nge-</string>
   <string name="display_options_sort_by_given_name">Igama lokuqala</string>
   <string name="display_options_sort_by_family_name">Isibongo</string>
@@ -128,8 +112,6 @@
   <string name="description_clear_search">Sula usesho</string>
   <string name="select_account_dialog_title">I-Akhawunti</string>
   <string name="set_default_account">Njalo sebenzisa lokhu kumakholi</string>
-  <string name="select_phone_account_for_calls">Khetha i-SIM yale kholi</string>
-  <string name="select_phone_account_for_calls_remember">Khumbula lokhu okukhethiwe</string>
   <string name="call_with_a_note">Shaya ngenothi</string>
   <string name="call_subject_hint">Thayipha inothi ukuthumela nekholi ...</string>
   <string name="send_and_call_button">THUMELA FUTHI YENZA IKHOLI</string>
@@ -141,5 +123,4 @@
     <item quantity="other">%1$s ithebhu. %2$d izinto ezingafundiwe. </item>
   </plurals>
   <string name="description_search_video_call">Ikholi yevidiyo</string>
-  <string name="description_search_call_and_share">Yabelana uphinde ushaye</string>
 </resources>
diff --git a/java/com/android/contacts/common/util/AccountFilterUtil.java b/java/com/android/contacts/common/util/AccountFilterUtil.java
deleted file mode 100644
index 4587635..0000000
--- a/java/com/android/contacts/common/util/AccountFilterUtil.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common.util;
-
-import android.content.Context;
-import android.view.View;
-import android.widget.TextView;
-import com.android.contacts.common.list.ContactListFilter;
-import com.android.dialer.contacts.resources.R;
-
-/** Utility class for account filter manipulation. */
-public class AccountFilterUtil {
-
-  /**
-   * Similar to {@link #updateAccountFilterTitleForPeople(View, ContactListFilter, boolean,
-   * boolean)}, but for Phone UI.
-   */
-  public static boolean updateAccountFilterTitleForPhone(
-      View filterContainer, ContactListFilter filter, boolean showTitleForAllAccounts) {
-    return updateAccountFilterTitle(filterContainer, filter, showTitleForAllAccounts, true);
-  }
-
-  private static boolean updateAccountFilterTitle(
-      View filterContainer,
-      ContactListFilter filter,
-      boolean showTitleForAllAccounts,
-      boolean forPhone) {
-    final Context context = filterContainer.getContext();
-    final TextView headerTextView =
-        (TextView) filterContainer.findViewById(R.id.account_filter_header);
-
-    boolean textWasSet = false;
-    if (filter != null) {
-      if (forPhone) {
-        if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
-          if (showTitleForAllAccounts) {
-            headerTextView.setText(R.string.list_filter_phones);
-            textWasSet = true;
-          }
-        } else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
-          headerTextView.setText(
-              context.getString(R.string.listAllContactsInAccount, filter.accountName));
-          textWasSet = true;
-        } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
-          headerTextView.setText(R.string.listCustomView);
-          textWasSet = true;
-        }
-      } else {
-        if (filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS) {
-          if (showTitleForAllAccounts) {
-            headerTextView.setText(R.string.list_filter_all_accounts);
-            textWasSet = true;
-          }
-        } else if (filter.filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
-          headerTextView.setText(
-              context.getString(R.string.listAllContactsInAccount, filter.accountName));
-          textWasSet = true;
-        } else if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
-          headerTextView.setText(R.string.listCustomView);
-          textWasSet = true;
-        } else if (filter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
-          headerTextView.setText(R.string.listSingleContact);
-          textWasSet = true;
-        }
-      }
-    }
-    return textWasSet;
-  }
-}
diff --git a/java/com/android/contacts/common/util/CommonDateUtils.java b/java/com/android/contacts/common/util/CommonDateUtils.java
index 312e691..91a0f63 100644
--- a/java/com/android/contacts/common/util/CommonDateUtils.java
+++ b/java/com/android/contacts/common/util/CommonDateUtils.java
@@ -31,7 +31,4 @@
       new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
   public static final SimpleDateFormat NO_YEAR_DATE_AND_TIME_FORMAT =
       new SimpleDateFormat("--MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
-
-  /** Exchange requires 8:00 for birthdays */
-  public static final int DEFAULT_HOUR = 8;
 }
diff --git a/java/com/android/contacts/common/util/ContactDisplayUtils.java b/java/com/android/contacts/common/util/ContactDisplayUtils.java
index 86d20bc..74123f7 100644
--- a/java/com/android/contacts/common/util/ContactDisplayUtils.java
+++ b/java/com/android/contacts/common/util/ContactDisplayUtils.java
@@ -19,16 +19,19 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telephony.PhoneNumberUtils;
 import android.text.Spannable;
 import android.text.SpannableString;
 import android.text.TextUtils;
 import android.text.style.TtsSpan;
 import android.util.Patterns;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.contacts.resources.R;
+
 import java.util.Objects;
 
 /** Methods for handling various contact data labels. */
@@ -210,7 +213,7 @@
    * phone number text wherever it is found within the message.
    */
   public static Spannable getTelephoneTtsSpannable(
-      @Nullable String message, @Nullable String phoneNumber) {
+          @Nullable String message, @Nullable String phoneNumber) {
     if (message == null) {
       return null;
     }
diff --git a/java/com/android/contacts/common/util/ContactListViewUtils.java b/java/com/android/contacts/common/util/ContactListViewUtils.java
index 924789b..5bdb96d 100644
--- a/java/com/android/contacts/common/util/ContactListViewUtils.java
+++ b/java/com/android/contacts/common/util/ContactListViewUtils.java
@@ -16,11 +16,8 @@
 
 package com.android.contacts.common.util;
 
-import android.content.res.Resources;
 import android.view.View;
 import android.widget.ListView;
-import com.android.dialer.contacts.resources.R;
-import com.android.dialer.util.ViewUtil;
 
 /** Utilities for configuring ListViews with a card background. */
 public class ContactListViewUtils {
@@ -43,47 +40,4 @@
       listView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
     }
   }
-
-  /**
-   * Add padding to {@param listView} if this configuration has set both space weight and view
-   * weight on the layout. Use this util method instead of defining the padding in the layout file
-   * so that the {@param listView}'s padding can be set proportional to the card padding.
-   *
-   * @param listView ListView that we add padding to
-   * @param rootLayout layout that contains ListView and R.id.list_card
-   */
-  public static void applyCardPaddingToView(
-      Resources resources, final ListView listView, final View rootLayout) {
-    // Set a padding on the list view so it appears in the center of the card
-    // in the layout if required.
-    final int listSpaceWeight = resources.getInteger(R.integer.contact_list_space_layout_weight);
-    final int listViewWeight = resources.getInteger(R.integer.contact_list_card_layout_weight);
-    if (listSpaceWeight > 0 && listViewWeight > 0) {
-      rootLayout.setBackgroundResource(0);
-      // Set the card view visible
-      View mCardView = rootLayout.findViewById(R.id.list_card);
-      if (mCardView == null) {
-        throw new RuntimeException(
-            "Your content must have a list card view who can be turned visible "
-                + "whenever it is necessary.");
-      }
-      mCardView.setVisibility(View.VISIBLE);
-
-      // Add extra padding to the list view to make them appear in the center of the card.
-      // In order to avoid jumping, we skip drawing the next frame of the ListView.
-      ViewUtil.doOnPreDraw(
-          listView,
-          false,
-          new Runnable() {
-            @Override
-            public void run() {
-              // Use the rootLayout.getWidth() instead of listView.getWidth() since
-              // we sometimes hide the listView until we finish loading data. This would
-              // result in incorrect padding.
-              ContactListViewUtils.addPaddingToView(
-                  listView, rootLayout.getWidth(), listSpaceWeight, listViewWeight);
-            }
-          });
-    }
-  }
 }
diff --git a/java/com/android/contacts/common/util/ContactLoaderUtils.java b/java/com/android/contacts/common/util/ContactLoaderUtils.java
index e309717..df081b1 100644
--- a/java/com/android/contacts/common/util/ContactLoaderUtils.java
+++ b/java/com/android/contacts/common/util/ContactLoaderUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,10 +20,11 @@
 import android.content.ContentResolver;
 import android.content.ContentUris;
 import android.net.Uri;
-import android.provider.Contacts;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.RawContacts;
 
+import com.android.contacts.common.model.ContactLoader;
+
 /** Utility methods for the {@link ContactLoader}. */
 public final class ContactLoaderUtils {
 
@@ -36,7 +38,6 @@
    *
    * <p>Do not call from the UI thread.
    */
-  @SuppressWarnings("deprecation")
   public static Uri ensureIsContactUri(final ContentResolver resolver, final Uri uri)
       throws IllegalArgumentException {
     if (uri == null) {
@@ -64,15 +65,6 @@
       throw new IllegalArgumentException("uri format is unknown");
     }
 
-    // Legacy Style? Convert to RawContact
-    final String OBSOLETE_AUTHORITY = Contacts.AUTHORITY;
-    if (OBSOLETE_AUTHORITY.equals(authority)) {
-      // Legacy Format. Convert to RawContact-Uri and then lookup the contact
-      final long rawContactId = ContentUris.parseId(uri);
-      return RawContacts.getContactLookupUri(
-          resolver, ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId));
-    }
-
     throw new IllegalArgumentException("uri authority is unknown");
   }
 }
diff --git a/java/com/android/contacts/common/util/SearchUtil.java b/java/com/android/contacts/common/util/SearchUtil.java
deleted file mode 100644
index 314d565..0000000
--- a/java/com/android/contacts/common/util/SearchUtil.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common.util;
-
-import android.support.annotation.VisibleForTesting;
-
-/** Methods related to search. */
-public class SearchUtil {
-
-  /**
-   * Given a string with lines delimited with '\n', finds the matching line to the given substring.
-   *
-   * @param contents The string to search.
-   * @param substring The substring to search for.
-   * @return A MatchedLine object containing the matching line and the startIndex of the substring
-   *     match within that line.
-   */
-  public static MatchedLine findMatchingLine(String contents, String substring) {
-    final MatchedLine matched = new MatchedLine();
-
-    // Snippet may contain multiple lines separated by "\n".
-    // Locate the lines of the content that contain the substring.
-    final int index = SearchUtil.contains(contents, substring);
-    if (index != -1) {
-      // Match found.  Find the corresponding line.
-      int start = index - 1;
-      while (start > -1) {
-        if (contents.charAt(start) == '\n') {
-          break;
-        }
-        start--;
-      }
-      int end = index + 1;
-      while (end < contents.length()) {
-        if (contents.charAt(end) == '\n') {
-          break;
-        }
-        end++;
-      }
-      matched.line = contents.substring(start + 1, end);
-      matched.startIndex = index - (start + 1);
-    }
-    return matched;
-  }
-
-  /**
-   * Similar to String.contains() with two main differences:
-   *
-   * <p>1) Only searches token prefixes. A token is defined as any combination of letters or
-   * numbers.
-   *
-   * <p>2) Returns the starting index where the substring is found.
-   *
-   * @param value The string to search.
-   * @param substring The substring to look for.
-   * @return The starting index where the substring is found. {@literal -1} if substring is not
-   *     found in value.
-   */
-  @VisibleForTesting
-  static int contains(String value, String substring) {
-    if (value.length() < substring.length()) {
-      return -1;
-    }
-
-    // i18n support
-    // Generate the code points for the substring once.
-    // There will be a maximum of substring.length code points.  But may be fewer.
-    // Since the array length is not an accurate size, we need to keep a separate variable.
-    final int[] substringCodePoints = new int[substring.length()];
-    int substringLength = 0; // may not equal substring.length()!!
-    for (int i = 0; i < substring.length(); ) {
-      final int codePoint = Character.codePointAt(substring, i);
-      substringCodePoints[substringLength] = codePoint;
-      substringLength++;
-      i += Character.charCount(codePoint);
-    }
-
-    for (int i = 0; i < value.length(); i = findNextTokenStart(value, i)) {
-      int numMatch = 0;
-      for (int j = i; j < value.length() && numMatch < substringLength; ++numMatch) {
-        int valueCp = Character.toLowerCase(value.codePointAt(j));
-        int substringCp = substringCodePoints[numMatch];
-        if (valueCp != substringCp) {
-          break;
-        }
-        j += Character.charCount(valueCp);
-      }
-      if (numMatch == substringLength) {
-        return i;
-      }
-    }
-    return -1;
-  }
-
-  /**
-   * Find the start of the next token. A token is composed of letters and numbers. Any other
-   * character are considered delimiters.
-   *
-   * @param line The string to search for the next token.
-   * @param startIndex The index to start searching. 0 based indexing.
-   * @return The index for the start of the next token. line.length() if next token not found.
-   */
-  @VisibleForTesting
-  static int findNextTokenStart(String line, int startIndex) {
-    int index = startIndex;
-
-    // If already in token, eat remainder of token.
-    while (index <= line.length()) {
-      if (index == line.length()) {
-        // No more tokens.
-        return index;
-      }
-      final int codePoint = line.codePointAt(index);
-      if (!Character.isLetterOrDigit(codePoint)) {
-        break;
-      }
-      index += Character.charCount(codePoint);
-    }
-
-    // Out of token, eat all consecutive delimiters.
-    while (index <= line.length()) {
-      if (index == line.length()) {
-        return index;
-      }
-      final int codePoint = line.codePointAt(index);
-      if (Character.isLetterOrDigit(codePoint)) {
-        break;
-      }
-      index += Character.charCount(codePoint);
-    }
-
-    return index;
-  }
-
-  /**
-   * Anything other than letter and numbers are considered delimiters. Remove start and end
-   * delimiters since they are not relevant to search.
-   *
-   * @param query The query string to clean.
-   * @return The cleaned query. Empty string if all characters are cleaned out.
-   */
-  public static String cleanStartAndEndOfSearchQuery(String query) {
-    int start = 0;
-    while (start < query.length()) {
-      int codePoint = query.codePointAt(start);
-      if (Character.isLetterOrDigit(codePoint)) {
-        break;
-      }
-      start += Character.charCount(codePoint);
-    }
-
-    if (start == query.length()) {
-      // All characters are delimiters.
-      return "";
-    }
-
-    int end = query.length() - 1;
-    while (end > -1) {
-      if (Character.isLowSurrogate(query.charAt(end))) {
-        // Assume valid i18n string.  There should be a matching high surrogate before it.
-        end--;
-      }
-      int codePoint = query.codePointAt(end);
-      if (Character.isLetterOrDigit(codePoint)) {
-        break;
-      }
-      end--;
-    }
-
-    // end is a letter or digit.
-    return query.substring(start, end + 1);
-  }
-
-  public static class MatchedLine {
-
-    public int startIndex = -1;
-    public String line;
-
-    @Override
-    public String toString() {
-      return "MatchedLine{" + "line='" + line + '\'' + ", startIndex=" + startIndex + '}';
-    }
-  }
-}
diff --git a/java/com/android/contacts/common/util/StopWatch.java b/java/com/android/contacts/common/util/StopWatch.java
deleted file mode 100644
index 7986d10..0000000
--- a/java/com/android/contacts/common/util/StopWatch.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.contacts.common.util;
-
-import com.android.dialer.common.LogUtil;
-import java.util.ArrayList;
-
-/** A {@link StopWatch} records start, laps and stop, and print them to logcat. */
-public class StopWatch {
-
-  private final String mLabel;
-
-  private final ArrayList<Long> mTimes = new ArrayList<>();
-  private final ArrayList<String> mLapLabels = new ArrayList<>();
-
-  private StopWatch(String label) {
-    mLabel = label;
-    lap("");
-  }
-
-  /** Create a new instance and start it. */
-  public static StopWatch start(String label) {
-    return new StopWatch(label);
-  }
-
-  /** Record a lap. */
-  public void lap(String lapLabel) {
-    mTimes.add(System.currentTimeMillis());
-    mLapLabels.add(lapLabel);
-  }
-
-  /** Stop it and log the result, if the total time >= {@code timeThresholdToLog}. */
-  public void stopAndLog(String TAG, int timeThresholdToLog) {
-
-    lap("");
-
-    final long start = mTimes.get(0);
-    final long stop = mTimes.get(mTimes.size() - 1);
-
-    final long total = stop - start;
-    if (total < timeThresholdToLog) {
-      return;
-    }
-
-    final StringBuilder sb = new StringBuilder();
-    sb.append(mLabel);
-    sb.append(",");
-    sb.append(total);
-    sb.append(": ");
-
-    long last = start;
-    for (int i = 1; i < mTimes.size(); i++) {
-      final long current = mTimes.get(i);
-      sb.append(mLapLabels.get(i));
-      sb.append(",");
-      sb.append((current - last));
-      sb.append(" ");
-      last = current;
-    }
-    LogUtil.v(TAG, sb.toString());
-  }
-}
diff --git a/java/com/android/contacts/common/util/TelephonyManagerUtils.java b/java/com/android/contacts/common/util/TelephonyManagerUtils.java
index e4c2c63..10af0f5 100644
--- a/java/com/android/contacts/common/util/TelephonyManagerUtils.java
+++ b/java/com/android/contacts/common/util/TelephonyManagerUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,6 +16,7 @@
  */
 package com.android.contacts.common.util;
 
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.telephony.TelephonyManager;
 
@@ -27,6 +29,7 @@
    * @param context Current application context
    * @return Voicemail tag, the alphabetic identifier associated with the voice mail number.
    */
+  @SuppressLint("MissingPermission")
   public static String getVoiceMailAlphaTag(Context context) {
     final TelephonyManager telephonyManager =
         (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
diff --git a/java/com/android/contacts/common/widget/ActivityTouchLinearLayout.java b/java/com/android/contacts/common/widget/ActivityTouchLinearLayout.java
index 2988a5a..7df82c0 100644
--- a/java/com/android/contacts/common/widget/ActivityTouchLinearLayout.java
+++ b/java/com/android/contacts/common/widget/ActivityTouchLinearLayout.java
@@ -20,6 +20,7 @@
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.widget.LinearLayout;
+
 import com.android.dialer.util.TouchPointManager;
 
 /**
diff --git a/java/com/android/contacts/common/widget/LayoutSuppressingImageView.java b/java/com/android/contacts/common/widget/LayoutSuppressingImageView.java
index d84d8f7..4238815 100644
--- a/java/com/android/contacts/common/widget/LayoutSuppressingImageView.java
+++ b/java/com/android/contacts/common/widget/LayoutSuppressingImageView.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,22 +17,25 @@
 
 package com.android.contacts.common.widget;
 
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.util.AttributeSet;
-import android.widget.ImageView;
+
+import androidx.appcompat.widget.AppCompatImageView;
 
 /**
- * Custom {@link ImageView} that improves layouting performance.
+ * Custom {@link AppCompatImageView} that improves layouting performance.
  *
  * <p>This improves the performance by not passing requestLayout() to its parent, taking advantage
  * of knowing that image size won't change once set.
  */
-public class LayoutSuppressingImageView extends ImageView {
+public class LayoutSuppressingImageView extends AppCompatImageView {
 
   public LayoutSuppressingImageView(Context context, AttributeSet attrs) {
     super(context, attrs);
   }
 
+  @SuppressLint("MissingSuperCall")
   @Override
   public void requestLayout() {
     forceLayout();
diff --git a/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java b/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
index 014dcf2..4a465a2 100644
--- a/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
+++ b/java/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,17 +18,13 @@
 package com.android.contacts.common.widget;
 
 import android.annotation.SuppressLint;
-import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Looper;
 import android.os.ResultReceiver;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -43,13 +40,20 @@
 import android.widget.LinearLayout;
 import android.widget.ListAdapter;
 import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+
 import com.android.contacts.common.compat.PhoneAccountCompat;
 import com.android.dialer.contacts.resources.R;
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 import com.android.dialer.protos.ProtoParsers;
 import com.android.dialer.telecom.TelecomUtil;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /**
  * Dialog that allows the user to select a phone accounts for a given action. Optionally provides
@@ -57,7 +61,7 @@
  */
 public class SelectPhoneAccountDialogFragment extends DialogFragment {
 
-  @VisibleForTesting public static final String ARG_OPTIONS = "options";
+  private static final String ARG_OPTIONS = "options";
 
   private static final String ARG_IS_DEFAULT_CHECKED = "is_default_checked";
 
@@ -83,17 +87,6 @@
     this.listener = listener;
   }
 
-  @Nullable
-  @VisibleForTesting
-  public SelectPhoneAccountListener getListener() {
-    return listener;
-  }
-
-  @VisibleForTesting
-  public boolean canSetDefault() {
-    return options.getCanSetDefault();
-  }
-
   @Override
   public void onSaveInstanceState(Bundle outState) {
     super.onSaveInstanceState(outState);
@@ -111,31 +104,23 @@
     isSelected = false;
 
     final DialogInterface.OnClickListener selectionListener =
-        new DialogInterface.OnClickListener() {
-          @Override
-          public void onClick(DialogInterface dialog, int which) {
-            isSelected = true;
-            PhoneAccountHandle selectedAccountHandle =
-                SelectPhoneAccountDialogOptionsUtil.getPhoneAccountHandle(
-                    options.getEntriesList().get(which));
-            Bundle result = new Bundle();
-            result.putParcelable(
-                SelectPhoneAccountListener.EXTRA_SELECTED_ACCOUNT_HANDLE, selectedAccountHandle);
-            result.putBoolean(SelectPhoneAccountListener.EXTRA_SET_DEFAULT, isDefaultChecked);
-            result.putString(SelectPhoneAccountListener.EXTRA_CALL_ID, getCallId());
-            if (listener != null) {
-              listener.onReceiveResult(SelectPhoneAccountListener.RESULT_SELECTED, result);
-            }
-          }
-        };
+            (dialog, which) -> {
+              isSelected = true;
+              PhoneAccountHandle selectedAccountHandle =
+                  SelectPhoneAccountDialogOptionsUtil.getPhoneAccountHandle(
+                      options.getEntriesList().get(which));
+              Bundle result = new Bundle();
+              result.putParcelable(
+                  SelectPhoneAccountListener.EXTRA_SELECTED_ACCOUNT_HANDLE, selectedAccountHandle);
+              result.putBoolean(SelectPhoneAccountListener.EXTRA_SET_DEFAULT, isDefaultChecked);
+              result.putString(SelectPhoneAccountListener.EXTRA_CALL_ID, getCallId());
+              if (listener != null) {
+                listener.onReceiveResult(SelectPhoneAccountListener.RESULT_SELECTED, result);
+              }
+            };
 
     final CompoundButton.OnCheckedChangeListener checkListener =
-        new CompoundButton.OnCheckedChangeListener() {
-          @Override
-          public void onCheckedChanged(CompoundButton check, boolean isChecked) {
-            isDefaultChecked = isChecked;
-          }
-        };
+            (check, isChecked) -> isDefaultChecked = isChecked;
 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
     ListAdapter selectAccountListAdapter =
@@ -201,14 +186,14 @@
     static final String EXTRA_CALL_ID = "extra_call_id";
 
     protected SelectPhoneAccountListener() {
-      super(new Handler());
+      super(new Handler(Looper.getMainLooper()));
     }
 
     @Override
     protected void onReceiveResult(int resultCode, Bundle resultData) {
       if (resultCode == RESULT_SELECTED) {
         onPhoneAccountSelected(
-            resultData.getParcelable(EXTRA_SELECTED_ACCOUNT_HANDLE),
+            resultData.getParcelable(EXTRA_SELECTED_ACCOUNT_HANDLE, PhoneAccountHandle.class),
             resultData.getBoolean(EXTRA_SET_DEFAULT),
             resultData.getString(EXTRA_CALL_ID));
       } else if (resultCode == RESULT_DISMISSED) {
@@ -225,7 +210,7 @@
   static class SelectAccountListAdapter
       extends ArrayAdapter<SelectPhoneAccountDialogOptions.Entry> {
 
-    private int mResId;
+    private final int mResId;
     private final SelectPhoneAccountDialogOptions options;
 
     SelectAccountListAdapter(
diff --git a/java/com/android/contacts/common/widget/SelectPhoneAccountDialogOptionsUtil.java b/java/com/android/contacts/common/widget/SelectPhoneAccountDialogOptionsUtil.java
index 1880d65..18b0055 100644
--- a/java/com/android/contacts/common/widget/SelectPhoneAccountDialogOptionsUtil.java
+++ b/java/com/android/contacts/common/widget/SelectPhoneAccountDialogOptionsUtil.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,11 +19,10 @@
 
 import android.os.Parcel;
 import android.os.UserHandle;
-import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.telecom.TelecomUtil;
-
 import com.google.protobuf.ByteString;
 
 import java.util.Collection;
@@ -39,7 +39,7 @@
       byte[] marshalledUserHandle = entry.getUserHandle().toByteArray();
       parcel.unmarshall(marshalledUserHandle, 0, marshalledUserHandle.length);
       parcel.setDataPosition(0);
-      userHandle = parcel.readParcelable(UserHandle.class.getClassLoader());
+      userHandle = parcel.readParcelable(UserHandle.class.getClassLoader(), UserHandle.class);
     } catch (NullPointerException e) {
       userHandle = null;
     }
diff --git a/java/com/android/dialer/about/AboutPhoneFragment.java b/java/com/android/dialer/about/AboutPhoneFragment.java
deleted file mode 100644
index ecd7c0f..0000000
--- a/java/com/android/dialer/about/AboutPhoneFragment.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.about;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.PreferenceFragment;
-import android.text.TextUtils;
-
-/** The fragment for information about the Phone App */
-public class AboutPhoneFragment extends PreferenceFragment {
-
-  @Override
-  public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    addPreferencesFromResource(R.xml.about_phone_fragment);
-
-    // We set the intent here, instead of in XML, to avoid specifying a target package, which
-    // differs between AOSP and the GoogleDialer.
-    Intent openSourceActivity =
-        new Intent(getActivity().getApplicationContext(), LicenseMenuActivity.class);
-    findPreference(getString(R.string.open_source_licenses_key)).setIntent(openSourceActivity);
-    populateBuildVersion();
-  }
-
-  private void populateBuildVersion() {
-    Preference buildVersion = findPreference(getResources().getString(R.string.build_version_key));
-    String versionName = getVersionName();
-    if (!TextUtils.isEmpty(versionName)) {
-      buildVersion.setSummary(versionName);
-    }
-  }
-
-  private String getVersionName() {
-    Context context = getContext();
-    try {
-      return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
-    } catch (NameNotFoundException e) {
-      return "";
-    }
-  }
-
-  @Override
-  public Context getContext() {
-    return getActivity();
-  }
-}
diff --git a/java/com/android/dialer/about/AndroidManifest.xml b/java/com/android/dialer/about/AndroidManifest.xml
deleted file mode 100644
index 6892674..0000000
--- a/java/com/android/dialer/about/AndroidManifest.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.about">
-  <application>
-    <activity
-        android:name="com.android.dialer.about.LicenseMenuActivity"
-        android:label="@string/licenseActivityLabel"
-        android:exported="true"
-        android:theme="@style/Theme.AppCompat.Light">
-    </activity>
-    <activity
-        android:name="com.android.dialer.about.LicenseActivity"
-        android:label="@string/licenseActivityLabel"
-        android:exported="false"
-        android:theme="@style/Theme.AppCompat.Light">
-    </activity>
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/about/License.java b/java/com/android/dialer/about/License.java
deleted file mode 100644
index d0d73b8..0000000
--- a/java/com/android/dialer/about/License.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.about;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * Container class to store the name of a library and the filename of its associated license file.
- */
-public final class License implements Comparable<License>, Parcelable {
-  // Name of the third-party library.
-  private final String libraryName;
-  // Byte offset in the file to the start of the license text.
-  private final long licenseOffset;
-  // Byte length of the license text.
-  private final int licenseLength;
-
-  /**
-   * Create an object representing a stored license. The text for all licenses is stored in a single
-   * file, so the offset and length describe this license's position within the file.
-   */
-  static License create(String libraryName, long licenseOffset, int licenseLength) {
-    return new License(libraryName, licenseOffset, licenseLength);
-  }
-
-  public static final Parcelable.Creator<License> CREATOR =
-      new Parcelable.Creator<License>() {
-        @Override
-        public License createFromParcel(Parcel in) {
-          return new License(in);
-        }
-
-        @Override
-        public License[] newArray(int size) {
-          return new License[size];
-        }
-      };
-
-  @Override
-  public int describeContents() {
-    return 0;
-  }
-
-  @Override
-  public void writeToParcel(Parcel dest, int flags) {
-    dest.writeString(libraryName);
-    dest.writeLong(licenseOffset);
-    dest.writeInt(licenseLength);
-  }
-
-  @Override
-  public int compareTo(License o) {
-    return libraryName.compareToIgnoreCase(o.getLibraryName());
-  }
-
-  @Override
-  public String toString() {
-    return getLibraryName();
-  }
-
-  private License(String libraryName, long licenseOffset, int licenseLength) {
-    this.libraryName = libraryName;
-    this.licenseOffset = licenseOffset;
-    this.licenseLength = licenseLength;
-  }
-
-  private License(Parcel in) {
-    libraryName = in.readString();
-    licenseOffset = in.readLong();
-    licenseLength = in.readInt();
-  }
-
-  String getLibraryName() {
-    return libraryName;
-  }
-
-  long getLicenseOffset() {
-    return licenseOffset;
-  }
-
-  int getLicenseLength() {
-    return licenseLength;
-  }
-}
diff --git a/java/com/android/dialer/about/LicenseActivity.java b/java/com/android/dialer/about/LicenseActivity.java
deleted file mode 100644
index 3cb7540..0000000
--- a/java/com/android/dialer/about/LicenseActivity.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.about;
-
-import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.view.MenuItem;
-import android.widget.ScrollView;
-import android.widget.TextView;
-
-/** Simple Activity that renders locally stored open source legal info in a text view. */
-public final class LicenseActivity extends AppCompatActivity {
-  private static final String TAG = "LicenseActivity";
-  private static final String STATE_SCROLL_POS = "scroll_pos";
-
-  @Override
-  public void onCreate(Bundle bundle) {
-    super.onCreate(bundle);
-    setContentView(R.layout.license_scrollview);
-
-    License license = getIntent().getParcelableExtra(LicenseMenuActivity.ARGS_LICENSE);
-    getSupportActionBar().setTitle(license.getLibraryName());
-
-    // Show 'up' button with no logo.
-    getSupportActionBar().setDisplayShowHomeEnabled(true);
-    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    getSupportActionBar().setLogo(null);
-
-    TextView textView = (TextView) findViewById(R.id.license_activity_textview);
-    String licenseText = Licenses.getLicenseText(this, license);
-    if (licenseText == null) {
-      finish();
-      return;
-    }
-    textView.setText(licenseText);
-  }
-
-  @Override
-  public void onSaveInstanceState(Bundle outState) {
-    super.onSaveInstanceState(outState);
-    ScrollView scrollView = (ScrollView) findViewById(R.id.license_activity_scrollview);
-    TextView textView = (TextView) findViewById(R.id.license_activity_textview);
-    int firstVisibleLine = textView.getLayout().getLineForVertical(scrollView.getScrollY());
-    int firstVisibleChar = textView.getLayout().getLineStart(firstVisibleLine);
-    outState.putInt(STATE_SCROLL_POS, firstVisibleChar);
-  }
-
-  @Override
-  public void onRestoreInstanceState(Bundle savedInstanceState) {
-    super.onRestoreInstanceState(savedInstanceState);
-    final ScrollView scrollView = (ScrollView) findViewById(R.id.license_activity_scrollview);
-    final int firstVisibleChar = savedInstanceState.getInt(STATE_SCROLL_POS);
-    scrollView.post(
-        new Runnable() {
-          @Override
-          public void run() {
-            TextView textView = (TextView) findViewById(R.id.license_activity_textview);
-            int firstVisibleLine = textView.getLayout().getLineForOffset(firstVisibleChar);
-            int offset = textView.getLayout().getLineTop(firstVisibleLine);
-            scrollView.scrollTo(0, offset);
-          }
-        });
-  }
-
-  @Override
-  public boolean onOptionsItemSelected(final MenuItem item) {
-    if (item.getItemId() == android.R.id.home) {
-      finish();
-      return true;
-    }
-    return super.onOptionsItemSelected(item);
-  }
-}
diff --git a/java/com/android/dialer/about/LicenseLoader.java b/java/com/android/dialer/about/LicenseLoader.java
deleted file mode 100644
index 50d6834..0000000
--- a/java/com/android/dialer/about/LicenseLoader.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.about;
-
-import android.content.Context;
-import android.support.v4.content.AsyncTaskLoader;
-import java.util.List;
-
-/** {@link AsyncTaskLoader} to load the list of licenses for the license menu activity. */
-final class LicenseLoader extends AsyncTaskLoader<List<License>> {
-
-  private List<License> licenses;
-
-  LicenseLoader(Context context) {
-    // This must only pass the application context to avoid leaking a pointer to the Activity.
-    super(context.getApplicationContext());
-  }
-
-  @Override
-  public List<License> loadInBackground() {
-    return Licenses.getLicenses(getContext());
-  }
-
-  @Override
-  public void deliverResult(List<License> licenses) {
-    this.licenses = licenses;
-    super.deliverResult(licenses);
-  }
-
-  @Override
-  protected void onStartLoading() {
-    if (licenses != null) {
-      deliverResult(licenses);
-    } else {
-      forceLoad();
-    }
-  }
-
-  @Override
-  protected void onStopLoading() {
-    cancelLoad();
-  }
-}
diff --git a/java/com/android/dialer/about/LicenseMenuActivity.java b/java/com/android/dialer/about/LicenseMenuActivity.java
deleted file mode 100644
index f609d07..0000000
--- a/java/com/android/dialer/about/LicenseMenuActivity.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.about;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.v4.app.LoaderManager.LoaderCallbacks;
-import android.support.v4.content.Loader;
-import android.support.v7.app.AppCompatActivity;
-import android.view.MenuItem;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-import java.util.ArrayList;
-import java.util.List;
-
-/** An Activity listing third party libraries with notice licenses. */
-public final class LicenseMenuActivity extends AppCompatActivity
-    implements LoaderCallbacks<List<License>> {
-
-  static final String ARGS_LICENSE = "license";
-
-  private static final int LOADER_ID = 54321;
-
-  private ArrayAdapter<License> listAdapter;
-
-  @Override
-  protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.license_menu_activity);
-
-    if (getSupportActionBar() != null) {
-      getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    }
-
-    listAdapter = new ArrayAdapter<>(this, R.layout.license, R.id.license, new ArrayList<>());
-    getSupportLoaderManager().initLoader(LOADER_ID, null, this);
-    ListView listView = (ListView) findViewById(R.id.license_list);
-    listView.setAdapter(listAdapter);
-    listView.setOnItemClickListener(
-        new OnItemClickListener() {
-          @Override
-          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-            License license = (License) parent.getItemAtPosition(position);
-            Intent licenseIntent = new Intent(LicenseMenuActivity.this, LicenseActivity.class);
-            licenseIntent.putExtra(ARGS_LICENSE, license);
-            startActivity(licenseIntent);
-          }
-        });
-  }
-
-  @Override
-  public boolean onOptionsItemSelected(MenuItem item) {
-    if (item.getItemId() == android.R.id.home) {
-      // Go back one place in the history stack, if the app icon is clicked.
-      finish();
-      return true;
-    }
-    return super.onOptionsItemSelected(item);
-  }
-
-  @Override
-  public void onDestroy() {
-    super.onDestroy();
-    getSupportLoaderManager().destroyLoader(LOADER_ID);
-  }
-
-  @Override
-  public Loader<List<License>> onCreateLoader(int id, Bundle args) {
-    return new LicenseLoader(this);
-  }
-
-  @Override
-  public void onLoadFinished(Loader<List<License>> loader, List<License> licenses) {
-    listAdapter.clear();
-    listAdapter.addAll(licenses);
-    listAdapter.notifyDataSetChanged();
-  }
-
-  @Override
-  public void onLoaderReset(Loader<List<License>> loader) {
-    listAdapter.clear();
-    listAdapter.notifyDataSetChanged();
-  }
-}
diff --git a/java/com/android/dialer/about/Licenses.java b/java/com/android/dialer/about/Licenses.java
deleted file mode 100644
index bd3d0ce..0000000
--- a/java/com/android/dialer/about/Licenses.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.about;
-
-import android.content.Context;
-import android.content.res.Resources;
-import com.android.dialer.common.Assert;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Collections;
-
-/** A helper for extracting licenses. */
-public final class Licenses {
-  private static final String TAG = "Licenses";
-  private static final String LICENSE_FILENAME = "third_party_licenses";
-  private static final String LICENSE_METADATA_FILENAME = "third_party_license_metadata";
-
-  /** Return the licenses bundled into this app. */
-  public static ArrayList<License> getLicenses(Context context) {
-    return getLicenseListFromMetadata(
-        getTextFromResource(context.getApplicationContext(), LICENSE_METADATA_FILENAME, 0, -1));
-  }
-
-  /**
-   * Returns a list of {@link License}s parsed from a license metadata file.
-   *
-   * @param metadata a {@code String} containing the contents of a license metadata file.
-   */
-  private static ArrayList<License> getLicenseListFromMetadata(String metadata) {
-    String[] entries = metadata.split("\n");
-    ArrayList<License> licenses = new ArrayList<License>(entries.length);
-    for (String entry : entries) {
-      int delimiter = entry.indexOf(' ');
-      String[] licenseLocation = entry.substring(0, delimiter).split(":");
-      Assert.checkState(
-          delimiter > 0 && licenseLocation.length == 2,
-          "Invalid license meta-data line:\n" + entry);
-      long licenseOffset = Long.parseLong(licenseLocation[0]);
-      int licenseLength = Integer.parseInt(licenseLocation[1]);
-      licenses.add(License.create(entry.substring(delimiter + 1), licenseOffset, licenseLength));
-    }
-    Collections.sort(licenses);
-    return licenses;
-  }
-
-  /** Return the text of a bundled license file. */
-  public static String getLicenseText(Context context, License license) {
-    long offset = license.getLicenseOffset();
-    int length = license.getLicenseLength();
-    return getTextFromResource(context, LICENSE_FILENAME, offset, length);
-  }
-
-  private static String getTextFromResource(
-      Context context, String filename, long offset, int length) {
-    Resources resources = context.getApplicationContext().getResources();
-    // When aapt is called with --rename-manifest-package, the package name is changed for the
-    // application, but not for the resources. This is to find the package name of a known
-    // resource to know what package to lookup the license files in.
-    String packageName = resources.getResourcePackageName(R.id.license);
-    InputStream stream =
-        resources.openRawResource(resources.getIdentifier(filename, "raw", packageName));
-    return getTextFromInputStream(stream, offset, length);
-  }
-
-  private static String getTextFromInputStream(InputStream stream, long offset, int length) {
-    byte[] buffer = new byte[1024];
-    ByteArrayOutputStream textArray = new ByteArrayOutputStream();
-
-    try {
-      stream.skip(offset);
-      int bytesRemaining = length > 0 ? length : Integer.MAX_VALUE;
-      int bytes = 0;
-
-      while (bytesRemaining > 0
-          && (bytes = stream.read(buffer, 0, Math.min(bytesRemaining, buffer.length))) != -1) {
-        textArray.write(buffer, 0, bytes);
-        bytesRemaining -= bytes;
-      }
-      stream.close();
-    } catch (IOException e) {
-      throw new RuntimeException("Failed to read license or metadata text.", e);
-    }
-    try {
-      return textArray.toString("UTF-8");
-    } catch (UnsupportedEncodingException e) {
-      throw new RuntimeException("Unsupported encoding UTF8. This should always be supported.", e);
-    }
-  }
-}
diff --git a/java/com/android/dialer/about/res/layout/license.xml b/java/com/android/dialer/about/res/layout/license.xml
deleted file mode 100644
index ef67982..0000000
--- a/java/com/android/dialer/about/res/layout/license.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:minHeight="?android:attr/listPreferredItemHeight"
-        android:gravity="center_vertical"
-        android:paddingRight="?android:attr/scrollbarSize"
-        android:baselineAligned="false" >
-
-    <TextView android:id="@+id/license"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="15dip"
-            android:layout_marginLeft="15dip"
-            android:layout_marginEnd="6dip"
-            android:layout_marginRight="6dip"
-            android:layout_marginTop="6dip"
-            android:layout_marginBottom="6dip"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceMediumInverse"
-            android:textColor="?android:attr/textColorPrimary"
-            android:ellipsize="marquee"
-            android:fadingEdge="horizontal" />
-
-</LinearLayout>
diff --git a/java/com/android/dialer/about/res/layout/license_menu_activity.xml b/java/com/android/dialer/about/res/layout/license_menu_activity.xml
deleted file mode 100644
index 8ed47bf..0000000
--- a/java/com/android/dialer/about/res/layout/license_menu_activity.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:orientation="vertical"
-              android:layout_height="match_parent"
-              android:layout_width="match_parent"
-              android:background="@android:color/transparent">
-
-        <ListView android:id="@+id/license_list"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_weight="1"
-                android:paddingTop="0dp"
-                android:paddingBottom="0dp"
-                android:paddingLeft="16dp"
-                android:paddingRight="16dp"
-                android:scrollbarStyle="outsideOverlay"
-                android:clipToPadding="false"
-                android:drawSelectorOnTop="false"
-                android:cacheColorHint="@android:color/transparent"
-                android:scrollbarAlwaysDrawVerticalTrack="true" />
-</LinearLayout>
diff --git a/java/com/android/dialer/about/res/layout/license_scrollview.xml b/java/com/android/dialer/about/res/layout/license_scrollview.xml
deleted file mode 100644
index f58bc2f..0000000
--- a/java/com/android/dialer/about/res/layout/license_scrollview.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/license_activity_scrollview"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-      <TextView
-          android:id="@+id/license_activity_textview"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:typeface="monospace"
-          android:paddingStart="16dip"
-          android:paddingLeft="16dip"
-          android:paddingEnd="16dip"
-          android:paddingRight="16dip"
-          android:paddingTop="8dip"
-          android:paddingBottom="8dip" />
-</ScrollView>
\ No newline at end of file
diff --git a/java/com/android/dialer/about/res/raw/keep.xml b/java/com/android/dialer/about/res/raw/keep.xml
deleted file mode 100644
index 9215627..0000000
--- a/java/com/android/dialer/about/res/raw/keep.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources xmlns:tools="http://schemas.android.com/tools"
-    tools:keep="@raw/*"/>
diff --git a/java/com/android/dialer/about/res/raw/third_party_license_metadata b/java/com/android/dialer/about/res/raw/third_party_license_metadata
deleted file mode 100755
index bd6259c..0000000
--- a/java/com/android/dialer/about/res/raw/third_party_license_metadata
+++ /dev/null
@@ -1,62 +0,0 @@
-40:10695 Android Annotations Support Library
-10771:11344 Android Architecture Components
-22164:11344 Android Architecture Components Core Library
-33562:11344 Android Architecture Components Lifecycle Library
-44968:11344 Android Architecture Components Lifecycle Runtime Library
-56331:11358 Android Common
-67724:10695 Android Compat Support Library
-78457:10695 Android Compatibility Library v13
-89189:10695 Android Compatibility Library v4
-99921:10695 Android Compatibility Library v7
-110652:10695 Android Core UI Support Library
-121386:10691 Android Core Utils Support Library
-132112:10695 Android Design Support Library
-142853:10695 Android Dynamic Animation Support Library
-153586:10695 Android Fragments Support Library
-164318:10695 Android Graphics Support Library
-175054:10691 Android Media Compat Support Library
-185784:10691 Android Transition Support Library
-196497:11359 Apache Commons IO
-207917:10693 Compatibility Libraries for Android asynclayoutinflater.
-218663:10693 Compatibility Libraries for Android collections.
-229415:10693 Compatibility Libraries for Android coordinatorlayout.
-240163:10693 Compatibility Libraries for Android cursoradapter.
-250908:10693 Compatibility Libraries for Android customview.
-261655:10693 Compatibility Libraries for Android documentfile.
-272402:10693 Compatibility Libraries for Android drawerlayout.
-283149:10693 Compatibility Libraries for Android interpolator.
-293890:10693 Compatibility Libraries for Android loader.
-304646:10693 Compatibility Libraries for Android localbroadcastmanager.
-315386:10693 Compatibility Libraries for Android print.
-326138:10693 Compatibility Libraries for Android slidingpanelayout.
-336891:10695 Compatibility Libraries for Android support-slices_core
-347646:10693 Compatibility Libraries for Android swiperefreshlayout.
-358390:10693 Compatibility Libraries for Android viewpager.
-369094:11358 Dagger
-380468:11357 Error Prone
-391841:11358 Google Auto
-403214:11358 Guava JDK5
-414587:11362 Guava JDK7
-425960:11358 J2ObjC
-437330:11358 JSR 250
-448700:11365 JSR 330
-460101:11358 Material Components for Android
-471470:11358 OkHttp
-482837:11358 Okio
-494210:11358 OpenCensus
-505579:11358 Volley
-516947:11357 ZXing
-528316:11358 flexbox
-539688:11358 gRPC Java
-551055:11358 gson
-562432:10173 libphonenumber
-572624:10699 shortcutbadger
-583339:16013 Android SDK
-599371:1096 Animal Sniffer
-600479:1602 JSR 305
-602099:1732 Protobuf Nano
-603865:1846 Checker Framework Annotations
-605721:4771 Glide
-610512:12847 carrierservices
-623377:12847 jibercsclient
-636235:18982 mime4j
diff --git a/java/com/android/dialer/about/res/raw/third_party_licenses b/java/com/android/dialer/about/res/raw/third_party_licenses
deleted file mode 100755
index d8d9506..0000000
--- a/java/com/android/dialer/about/res/raw/third_party_licenses
+++ /dev/null
@@ -1,11856 +0,0 @@
-
-
-Android Annotations Support Library:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-
-Android Architecture Components:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright 2012 Netflix, Inc.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Android Architecture Components Core Library:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright 2012 Netflix, Inc.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Android Architecture Components Lifecycle Library:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright 2012 Netflix, Inc.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Android Architecture Components Lifecycle Runtime Library:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright 2012 Netflix, Inc.
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Android Common:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Android Compat Support Library:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-
-Android Compatibility Library v13:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-
-Android Compatibility Library v4:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-
-Android Compatibility Library v7:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-
-Android Core UI Support Library:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-
-Android Core Utils Support Library:
-
-
- Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Android Design Support Library:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-
-Android Dynamic Animation Support Library:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-
-Android Fragments Support Library:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-
-Android Graphics Support Library:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-
-Android Media Compat Support Library:
-
-
- Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Android Transition Support Library:
-
-
- Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Apache Commons IO:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-
-Compatibility Libraries for Android asynclayoutinflater.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android collections.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android coordinatorlayout.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android cursoradapter.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android customview.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android documentfile.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android drawerlayout.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android interpolator.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android loader.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android localbroadcastmanager.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android print.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android slidingpanelayout.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android support-slices_core:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-
-Compatibility Libraries for Android swiperefreshlayout.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Compatibility Libraries for Android viewpager.:
-
-
-   Copyright (c) 2005-2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-Dagger:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Error Prone:
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Google Auto:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Guava JDK5:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Guava JDK7:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-   
-
-
-J2ObjC:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-JSR 250:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-JSR 330:
-
-JSR-330
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Material Components for Android:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-OkHttp:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Okio:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-OpenCensus:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-Volley:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-ZXing:
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-flexbox:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-gRPC Java:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-gson:
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-libphonenumber:
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-shortcutbadger:
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-
-Android SDK:
-
-ANDROID SOFTWARE DEVELOPMENT KIT
-
-Terms and Conditions
-
-This is the Android Software Development Kit License Agreement.
-
-1. Introduction
-
-1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and
-specifically including the Android system files, packaged APIs, and Google APIs add-ons) is
-licensed to you subject to the terms of this License Agreement. This License Agreement forms a
-legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600
-Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-2. Accepting this License Agreement
-
-2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the
-SDK if you do not accept this License Agreement.
-
-2.2 You can accept this License Agreement by:
-
-(A) clicking to accept or agree to this License Agreement, where this option is made available to
-you; or
-
-(B) by actually using the SDK. In this case, you agree that use of the SDK constitutes acceptance of
-the Licensing Agreement from that point onwards.
-
-2.3 You may not use the SDK and may not accept the Licensing Agreement if you are a person barred
-from receiving the SDK under the laws of the United States or other countries including the country
-in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other
-entity, you represent and warrant that you have full legal authority to bind your employer or such
-entity to this License Agreement. If you do not have the requisite authority, you may not accept
-the Licensing Agreement or use the SDK on behalf of your employer or other entity.
-
-3. SDK License from Google
-
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide,
-royalty-free, non- assignable and non-exclusive license to use the SDK solely to develop
-applications to run on the Android platform.
-
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the
-SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property
-Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law,
-and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.3 Except to the extent required by applicable third party licenses, you may not copy (except for
-backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create
-derivative works of the SDK or any part of the SDK. Except to the extent required by applicable
-third party licenses, you may not load any part of the SDK onto a mobile handset or any other
-hardware device except a personal computer, combine any part of the SDK with other software, or
-distribute any software or device incorporating a part of the SDK.
-
-3.4 Use, reproduction and distribution of components of the SDK licensed under an open source
-software license are governed solely by the terms of that open source software license and not
-this License Agreement.
-
-3.5 You agree that the form and nature of the SDK that Google provides may change without prior
-notice to you and that future versions of the SDK may be incompatible with applications developed
-on previous versions of the SDK. You agree that Google may stop (permanently or temporarily)
-providing the SDK (or any features within the SDK) to you or to users generally at Google's sole
-discretion, without prior notice to you.
-
-3.6 Nothing in this License Agreement gives you a right to use any of Google's trade names,
-trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.7 You agree that you will not remove, obscure, or alter any proprietary rights notices (including
-copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-4. Use of the SDK by You
-
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under
-this License Agreement in or to any software applications that you develop using the SDK, including
-any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this
-License Agreement and (b) any applicable law, regulation or generally accepted practices or
-guidelines in the relevant jurisdictions (including any laws regarding the export of data or
-software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will
-protect the privacy and legal rights of those users. If the users provide you with user names,
-passwords, or other login information or personal information, your must make the users aware that
-the information will be available to your application, and you must provide legally adequate privacy
-notice and protection for those users. If your application stores personal or sensitive information
-provided by users, it must do so securely. If the user provides your application with Google Account
-information, your application may only use that information to access the user's Google Account
-when, and for the limited purposes for which, the user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or
-distribution of an application, that interferes with, disrupts, damages, or accesses in an
-unauthorized manner the servers, networks, or other properties or services of any third party
-including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or
-to any third party for) any data, content, or resources that you create, transmit or display through
-the Android platform and/or applications for the Android platform, and for the consequences of your
-actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or
-to any third party for) any breach of your obligations under this License Agreement, any applicable
-third party contract or Terms of Service, or any applicable law or regulation, and for the
-consequences (including any loss or damage which Google or any third party may suffer) of any such
-breach.
-
-5. Your Developer Credentials
-
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer
-credentials that may be issued to you by Google or which you may choose yourself and that you will
-be solely responsible for all applications that are developed under your developer credentials.
-
-6. Privacy and Information
-
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage
-statistics from the software including but not limited to a unique identifier, associated IP
-address, version number of the software, and information on which tools and/or services in the SDK
-are being used and how they are being used. Before any of this information is collected, the SDK
-will notify you and seek your consent. If you withhold consent, the information will not be
-collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in
-accordance with Google's Privacy Policy.
-
-7. Third Party Applications for the Android Platform
-
-7.1 If you use the SDK to run applications developed by a third party or that access data, content
-or resources provided by a third party, you agree that Google is not responsible for those
-applications, data, content, or resources. You understand that all data, content or resources which
-you may access through such third party applications are the sole responsibility of the person from
-which they originated and that Google is not liable for any loss or damage that you may experience
-as a result of the use or access of any of those third party applications, data, content, or
-resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party
-application may be protected by intellectual property rights which are owned by the providers (or by
-other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute
-or create derivative works based on these data, content, or resources (either in whole or in part)
-unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may
-be subject to separate terms between you and the relevant third party. In that case, this License
-Agreement does not affect your legal relationship with these third parties.
-
-8. Using Android APIs
-
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be
-protected by intellectual property rights which are owned by Google or those parties that provide
-the data (or by other persons or companies on their behalf). Your use of any such API may be subject
-to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create
-derivative works based on this data (either in whole or in part) unless allowed by the relevant
-Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you
-shall retrieve data only with the user's explicit consent and only when, and for the limited
-purposes for which, the user has given you permission to do so.
-
-9. Terminating this License Agreement
-
-9.1 This License Agreement will continue to apply until terminated by either you or Google as set
-out below.
-
-9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK
-and any relevant developer credentials.
-
-9.3 Google may at any time, terminate this License Agreement with you if:
-
-(A) you have breached any provision of this License Agreement; or
-
-(B) Google is required to do so by law; or
-
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated
-its relationship with Google or ceased to offer certain parts of the SDK to you; or
-
-(D) Google decides to no longer providing the SDK or certain parts of the SDK to users in the
-country in which you are resident or from which you use the service, or the provision of the SDK or
-certain SDK services to you by Google is, in Google's sole discretion, no longer commercially
-viable.
-
-9.4 When this License Agreement comes to an end, all of the legal rights, obligations and
-liabilities that you and Google have benefited from, been subject to (or which have accrued over
-time whilst this License Agreement has been in force) or which are expressed to continue
-indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall
-continue to apply to such rights, obligations and liabilities indefinitely.
-
-10. DISCLAIMER OF WARRANTIES
-
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE
-SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE
-SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR
-COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-11. LIMITATION OF LIABILITY
-
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS
-LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY
-LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN
-AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-12. Indemnification
-
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless
-Google, its affiliates and their respective directors, officers, employees and agents from and
-against any and all claims, actions, suits or proceedings, as well as any and all losses,
-liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or
-accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any
-copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any
-person or defames any person or violates their rights of publicity or privacy, and (c) any
-non-compliance by you with this License Agreement.
-
-13. Changes to the License Agreement
-
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK.
-When these changes are made, Google will make a new version of the License Agreement available on
-the website where the SDK is made available.
-
-14. General Legal Terms
-
-14.1 This License Agreement constitute the whole legal agreement between you and Google and govern
-your use of the SDK (excluding any services which Google may provide to you under a separate written
-agreement), and completely replace any prior agreements between you and Google in relation to the
-SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is
-contained in this License Agreement (or which Google has the benefit of under any applicable law),
-this will not be taken to be a formal waiver of Google's rights and that those rights or remedies
-will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision
-of this License Agreement is invalid, then that provision will be removed from this License
-Agreement without affecting the rest of this License Agreement. The remaining provisions of this
-License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the
-parent shall be third party beneficiaries to this License Agreement and that such other companies
-shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that
-confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall
-be third party beneficiaries to this License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST
-COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE
-LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in this License Agreement may not be assigned or transferred by either you
-or Google without the prior written approval of the other party. Neither you nor Google shall be
-permitted to delegate their responsibilities or obligations under this License Agreement without the
-prior written approval of the other party.
-
-14.7 This License Agreement, and your relationship with Google under this License Agreement, shall
-be governed by the laws of the State of California without regard to its conflict of laws
-provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located
-within the county of Santa Clara, California to resolve any legal matter arising from this License
-Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for
-injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-April 10, 2009
-
-
-Animal Sniffer:
-
-The MIT License
-
-Copyright (c) 2008 Kohsuke Kawaguchi and codehaus.org.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
-JSR 305:
-
-Copyright (c) 2007-2009, JSR305 expert group
-All rights reserved.
-
-http://www.opensource.org/licenses/bsd-license.php
-
-Redistribution and use in source and binary forms, with or without 
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice, 
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice, 
-      this list of conditions and the following disclaimer in the documentation 
-      and/or other materials provided with the distribution.
-    * Neither the name of the JSR305 expert group nor the names of its 
-      contributors may be used to endorse or promote products derived from 
-      this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
-POSSIBILITY OF SUCH DAMAGE.
-
-
-Protobuf Nano:
-
-Copyright 2008, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-    * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Code generated by the Protocol Buffer compiler is owned by the owner
-of the input file used when generating it.  This code is not
-standalone and requires a support library to be linked with it.  This
-support library is itself covered by the above license.
-
-
-Checker Framework Annotations:
-
-A few parts of the Checker Framework have more permissive licenses.
-
- * The annotations are licensed under the MIT License.  (The text of this
-   license appears below.)  More specifically, all the parts of the Checker
-   Framework that you might want to include with your own program use the
-   MIT License.  This is the checker-qual.jar file and all the files that
-   appear in it:  every file in a qual/ directory, plus NullnessUtils.java
-   and RegexUtil.java.  In addition, the cleanroom implementations of
-   third-party annotations, which the Checker Framework recognizes as
-   aliases for its own annotations, are licensed under the MIT License.
-
-===========================================================================
-
-MIT License:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-===========================================================================
-
-
-Glide:
-
-Covers library/
-
-Copyright 2014 Google, Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are
-permitted provided that the following conditions are met:
-
-   1. Redistributions of source code must retain the above copyright notice, this list of
-         conditions and the following disclaimer.
-
-   2. Redistributions in binary form must reproduce the above copyright notice, this list
-         of conditions and the following disclaimer in the documentation and/or other materials
-         provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY GOOGLE, INC. ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE, INC. OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-The views and conclusions contained in the software and documentation are those of the
-authors and should not be interpreted as representing official policies, either expressed
-or implied, of Google, Inc.
-
---------------------------------------------------------------------------
-Covers third_party/gif_decoder
-
-Copyright (c) 2013 Xcellent Creations, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------
-Covers third_party/disklrucache
-
-Copyright 2012 Jake Wharton
-Copyright 2011 The Android Open Source Project
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
---------------------------------------------------------------------------
-Covers third_party/gif_encoder/AnimatedGifEncoder.java and 
-third_party/gif_encoder/LZWEncoder.java:
-
-No copyright asserted on the source code of this class. May be used for any
-purpose, however, refer to the Unisys LZW patent for restrictions on use of
-the associated LZWEncoder class. Please forward any corrections to
-kweiner@fmsware.com.
-
------------------------------------------------------------------------------
-Covers third_party/gif_encoder/NeuQuant.java
-
-Copyright (c) 1994 Anthony Dekker
-
-NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994. See
-"Kohonen neural networks for optimal colour quantization" in "Network:
-Computation in Neural Systems" Vol. 5 (1994) pp 351-367. for a discussion of
-the algorithm.
-
-Any party obtaining a copy of these files from the author, directly or
-indirectly, is granted, free of charge, a full and unrestricted irrevocable,
-world-wide, paid up, royalty-free, nonexclusive right and license to deal in
-this software and documentation files (the "Software"), including without
-limitation the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to permit persons who
-receive copies from any such party to do so, with the only requirement being
-that this copyright notice remain intact.
-
-
-carrierservices:
-
-These components
-  com.google.android.rcs.core,
-  com.google.android.rcs.core.utils.CaseInsensitiveMap,
-  com.google.android.rcs.core.utils.DateTime,
-  com.google.android.rcs.core.utils.InetAddresses,
-  com.google.android.rcs.core.network.ConnectivityMonitor,
-  com.google.android.rcs.client.PrivateDataStorage,
-  com.google.android.rcs.client.utils.FastXmlSerializer,
-  com.google.android.rcs.client.utils.XmlUtils,
-  com.google.android.rcs.client.utils.QueuedWork
-are licensed under Apache v2.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-===============================================================================
-
-These components
-  com.google.android.rcs.core.utils.FastBase64,
-  com.google.android.rcs.core.utils.LibraryLoaderHelper
-are licensed under BSD.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-
-   * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-jibercsclient:
-
-These components
-  com.google.android.rcs.core,
-  com.google.android.rcs.core.utils.CaseInsensitiveMap,
-  com.google.android.rcs.core.utils.DateTime,
-  com.google.android.rcs.core.utils.InetAddresses,
-  com.google.android.rcs.core.network.ConnectivityMonitor,
-  com.google.android.rcs.client.PrivateDataStorage,
-  com.google.android.rcs.client.utils.FastXmlSerializer,
-  com.google.android.rcs.client.utils.XmlUtils,
-  com.google.android.rcs.client.utils.QueuedWork
-are licensed under Apache v2.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-===============================================================================
-
-These components
-  com.google.android.rcs.core.utils.FastBase64,
-  com.google.android.rcs.core.utils.LibraryLoaderHelper
-are licensed under BSD.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-
-   * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-mime4j:
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-   
-   
-   
-
-   THIS PRODUCT ALSO INCLUDES THIRD PARTY SOFTWARE REDISTRIBUTED UNDER THE
-   FOLLOWING LICENSES:
-
- Apache Commons Logging, 
-    The Apache Software License, Version 1.1 (commons-logging-1.1.1.jar)
-   
-   The Apache Software License, Version 1.1
-  
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions
-   are met:
-  
-   1. Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-  
-   2. Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in
-      the documentation and/or other materials provided with the
-      distribution.
-  
-   3. The end-user documentation included with the redistribution,
-      if any, must include the following acknowledgment:
-         "This product includes software developed by the
-          Apache Software Foundation (http://www.apache.org/)."
-      Alternately, this acknowledgment may appear in the software itself,
-      if and wherever such third-party acknowledgments normally appear.
-  
-   4. The names "Apache" and "Apache Software Foundation" must
-      not be used to endorse or promote products derived from this
-      software without prior written permission. For written
-      permission, please contact apache@apache.org.
-  
-   5. Products derived from this software may not be called "Apache",
-      nor may "Apache" appear in their name, without prior written
-      permission of the Apache Software Foundation.
-  
-   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
-   WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-   OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-   DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
-   ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-   SUCH DAMAGE.
-  
-
- Test messages from the Perl-MIME-Tools project,
- 
-      The "Artistic License"
-  
-      Preamble
-  
-  The intent of this document is to state the conditions under which a
-  Package may be copied, such that the Copyright Holder maintains some
-  semblance of artistic control over the development of the package,
-  while giving the users of the package the right to use and distribute
-  the Package in a more-or-less customary fashion, plus the right to make
-  reasonable modifications.
-  
-  Definitions:
-  
-   "Package" refers to the collection of files distributed by the
-   Copyright Holder, and derivatives of that collection of files
-   created through textual modification.
-  
-   "Standard Version" refers to such a Package if it has not been
-   modified, or has been modified in accordance with the wishes
-   of the Copyright Holder as specified below.
-  
-   "Copyright Holder" is whoever is named in the copyright or
-   copyrights for the package.
-  
-   "You" is you, if you're thinking about copying or distributing
-   this Package.
-  
-   "Reasonable copying fee" is whatever you can justify on the
-   basis of media cost, duplication charges, time of people involved,
-   and so on.  (You will not be required to justify it to the
-   Copyright Holder, but only to the computing community at large
-   as a market that must bear the fee.)
-  
-   "Freely Available" means that no fee is charged for the item
-   itself, though there may be fees involved in handling the item.
-   It also means that recipients of the item may redistribute it
-   under the same conditions they received it.
-  
-  1. You may make and give away verbatim copies of the source form of the
-  Standard Version of this Package without restriction, provided that you
-  duplicate all of the original copyright notices and associated disclaimers.
-  
-  2. You may apply bug fixes, portability fixes and other modifications
-  derived from the Public Domain or from the Copyright Holder.  A Package
-  modified in such a way shall still be considered the Standard Version.
-  
-  3. You may otherwise modify your copy of this Package in any way, provided
-  that you insert a prominent notice in each changed file stating how and
-  when you changed that file, and provided that you do at least ONE of the
-  following:
-  
-      a) place your modifications in the Public Domain or otherwise make them
-      Freely Available, such as by posting said modifications to Usenet or
-      an equivalent medium, or placing the modifications on a major archive
-      site such as uunet.uu.net, or by allowing the Copyright Holder to include
-      your modifications in the Standard Version of the Package.
-  
-      b) use the modified Package only within your corporation or organization.
-  
-      c) rename any non-standard executables so the names do not conflict
-      with standard executables, which must also be provided, and provide
-      a separate manual page for each non-standard executable that clearly
-      documents how it differs from the Standard Version.
-  
-      d) make other distribution arrangements with the Copyright Holder.
-  
-  4. You may distribute the programs of this Package in object code or
-  executable form, provided that you do at least ONE of the following:
-  
-      a) distribute a Standard Version of the executables and library files,
-      together with instructions (in the manual page or equivalent) on where
-      to get the Standard Version.
-  
-      b) accompany the distribution with the machine-readable source of
-      the Package with your modifications.
-  
-      c) give non-standard executables non-standard names, and clearly
-      document the differences in manual pages (or equivalent), together
-      with instructions on where to get the Standard Version.
-  
-      d) make other distribution arrangements with the Copyright Holder.
-  
-  5. You may charge a reasonable copying fee for any distribution of this
-  Package.  You may charge any fee you choose for support of this
-  Package.  You may not charge a fee for this Package itself.  However,
-  you may distribute this Package in aggregate with other (possibly
-  commercial) programs as part of a larger (possibly commercial) software
-  distribution provided that you do not advertise this Package as a
-  product of your own.  You may embed this Package's interpreter within
-  an executable of yours (by linking); this shall be construed as a mere
-  form of aggregation, provided that the complete Standard Version of the
-  interpreter is so embedded.
-  
-  6. The scripts and library files supplied as input to or produced as
-  output from the programs of this Package do not automatically fall
-  under the copyright of this Package, but belong to whoever generated
-  them, and may be sold commercially, and may be aggregated with this
-  Package.  If such scripts or library files are aggregated with this
-  Package via the so-called "undump" or "unexec" methods of producing a
-  binary executable image, then distribution of such an image shall
-  neither be construed as a distribution of this Package nor shall it
-  fall under the restrictions of Paragraphs 3 and 4, provided that you do
-  not represent such an executable image as a Standard Version of this
-  Package.
-  
-  7. C subroutines (or comparably compiled subroutines in other
-  languages) supplied by you and linked into this Package in order to
-  emulate subroutines and variables of the language defined by this
-  Package shall not be considered part of this Package, but are the
-  equivalent of input as in Paragraph 6, provided these subroutines do
-  not change the language in any way that would cause it to fail the
-  regression tests for the language.
-  
-  8. Aggregation of this Package with a commercial distribution is always
-  permitted provided that the use of this Package is embedded; that is,
-  when no overt attempt is made to make this Package's interfaces visible
-  to the end user of the commercial distribution.  Such use shall not be
-  construed as a distribution of this Package.
-  
-  9. The name of the Copyright Holder may not be used to endorse or promote
-  products derived from this software without specific prior written permission.
-  
-  10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
-  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-  WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-  
-      The End
-
- 
- 
\ No newline at end of file
diff --git a/java/com/android/dialer/about/res/values-af/strings.xml b/java/com/android/dialer/about/res/values-af/strings.xml
deleted file mode 100644
index b93cd10..0000000
--- a/java/com/android/dialer/about/res/values-af/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Bouweergawe</string>
-  <string name="open_source_license_detail_label">Lisensiebesonderhede vir oopbronsagteware</string>
-  <string name="licenseActivityLabel">Oopbronlisensies</string>
-  <string name="privacy_policy_label">Privaatheidsbeleid</string>
-  <string name="terms_of_service_label">Diensbepalings</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-am/strings.xml b/java/com/android/dialer/about/res/values-am/strings.xml
deleted file mode 100644
index c9d53d4..0000000
--- a/java/com/android/dialer/about/res/values-am/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">የግንብ ሥሪት</string>
-  <string name="open_source_license_detail_label">ለክፍት ምንጭ ሶፍትዌር የፈቃድ ዝርዝሮች</string>
-  <string name="licenseActivityLabel">የክፍት ምንጭ ፈቃዶች</string>
-  <string name="privacy_policy_label">የግላዊነት መመሪያ</string>
-  <string name="terms_of_service_label">የአገልግሎት ውል</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ar/strings.xml b/java/com/android/dialer/about/res/values-ar/strings.xml
deleted file mode 100644
index f3beb67..0000000
--- a/java/com/android/dialer/about/res/values-ar/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">نسخة الإصدار</string>
-  <string name="open_source_license_detail_label">تفاصيل الترخيص للبرامج مفتوحة المصدر</string>
-  <string name="licenseActivityLabel">تراخيص البرامج المفتوحة المصدر</string>
-  <string name="privacy_policy_label">سياسة الخصوصية</string>
-  <string name="terms_of_service_label">بنود الخدمة</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-az/strings.xml b/java/com/android/dialer/about/res/values-az/strings.xml
deleted file mode 100644
index 6d42e00..0000000
--- a/java/com/android/dialer/about/res/values-az/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Quruluş versiyası</string>
-  <string name="open_source_license_detail_label">Açıq mənbəli proqram təminatı üçün lisenziya detalları</string>
-  <string name="licenseActivityLabel">Mənbə lisenziyalarını açın</string>
-  <string name="privacy_policy_label">Məxfilik siyasəti</string>
-  <string name="terms_of_service_label">Xidmət şərtləri</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/about/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 35cafe7..0000000
--- a/java/com/android/dialer/about/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Verzija</string>
-  <string name="open_source_license_detail_label">Podaci o licenci za softver otvorenog koda</string>
-  <string name="licenseActivityLabel">Licence otvorenog koda</string>
-  <string name="privacy_policy_label">Politika privatnosti</string>
-  <string name="terms_of_service_label">Uslovi korišćenja usluge</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-be/strings.xml b/java/com/android/dialer/about/res/values-be/strings.xml
deleted file mode 100644
index 9767b51..0000000
--- a/java/com/android/dialer/about/res/values-be/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Версія зборкі</string>
-  <string name="open_source_license_detail_label">Звесткі аб ліцэнзіі на праграмнае забеспячэнне з адкрытым зыходным кодам</string>
-  <string name="licenseActivityLabel">Ліцэнзіі на ПЗ з адкрытым зыходным кодам</string>
-  <string name="privacy_policy_label">Палітыка прыватнасці</string>
-  <string name="terms_of_service_label">Умовы абслугоўвання</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-bg/strings.xml b/java/com/android/dialer/about/res/values-bg/strings.xml
deleted file mode 100644
index dac25d1..0000000
--- a/java/com/android/dialer/about/res/values-bg/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Версия</string>
-  <string name="open_source_license_detail_label">Подробности за лицензите на софтуера с отворен код</string>
-  <string name="licenseActivityLabel">Лицензи за отворен код</string>
-  <string name="privacy_policy_label">Декларация за поверителност</string>
-  <string name="terms_of_service_label">Общи условия</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-bn/strings.xml b/java/com/android/dialer/about/res/values-bn/strings.xml
deleted file mode 100644
index fafa74f..0000000
--- a/java/com/android/dialer/about/res/values-bn/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">বিল্ড সংস্করণ</string>
-  <string name="open_source_license_detail_label">মুক্ত উৎস সফ্টওয়্যারের লাইসেন্স বিবরণ</string>
-  <string name="licenseActivityLabel">ওপেন সোর্স লাইসেন্স</string>
-  <string name="privacy_policy_label">গোপনীয়তা নীতি</string>
-  <string name="terms_of_service_label">পরিষেবার শর্তাবলী</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-bs/strings.xml b/java/com/android/dialer/about/res/values-bs/strings.xml
deleted file mode 100644
index 775c59b..0000000
--- a/java/com/android/dialer/about/res/values-bs/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Međuverzija aplikacije</string>
-  <string name="open_source_license_detail_label">Detalji o licenci za softver otvorenog koda</string>
-  <string name="licenseActivityLabel">Licence otvorenog koda</string>
-  <string name="privacy_policy_label">Pravila privatnosti</string>
-  <string name="terms_of_service_label">Uslovi korištenja usluge</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ca/strings.xml b/java/com/android/dialer/about/res/values-ca/strings.xml
deleted file mode 100644
index ef2d641..0000000
--- a/java/com/android/dialer/about/res/values-ca/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versió de la compilació</string>
-  <string name="open_source_license_detail_label">Detalls de la llicència del programari lliure</string>
-  <string name="licenseActivityLabel">Llicències de programari lliure</string>
-  <string name="privacy_policy_label">Política de privadesa</string>
-  <string name="terms_of_service_label">Condicions del servei</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-cs/strings.xml b/java/com/android/dialer/about/res/values-cs/strings.xml
deleted file mode 100644
index d93ac12..0000000
--- a/java/com/android/dialer/about/res/values-cs/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Verze sestavení</string>
-  <string name="open_source_license_detail_label">Podrobnosti o licencích pro software open source</string>
-  <string name="licenseActivityLabel">Licence open source</string>
-  <string name="privacy_policy_label">Zásady ochrany soukromí</string>
-  <string name="terms_of_service_label">Smluvní podmínky</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-da/strings.xml b/java/com/android/dialer/about/res/values-da/strings.xml
deleted file mode 100644
index aaf2ac8..0000000
--- a/java/com/android/dialer/about/res/values-da/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Build-version</string>
-  <string name="open_source_license_detail_label">Licensoplysninger til open source-software</string>
-  <string name="licenseActivityLabel">Open source-licenser</string>
-  <string name="privacy_policy_label">Privatlivspolitik</string>
-  <string name="terms_of_service_label">Servicevilkår</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-de/strings.xml b/java/com/android/dialer/about/res/values-de/strings.xml
deleted file mode 100644
index fd86c08..0000000
--- a/java/com/android/dialer/about/res/values-de/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Build-Version</string>
-  <string name="open_source_license_detail_label">Lizenzdetails für Open-Source-Software</string>
-  <string name="licenseActivityLabel">Open Source-Lizenzen</string>
-  <string name="privacy_policy_label">Datenschutzerklärung</string>
-  <string name="terms_of_service_label">Nutzungsbedingungen</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-el/strings.xml b/java/com/android/dialer/about/res/values-el/strings.xml
deleted file mode 100644
index 0dde137..0000000
--- a/java/com/android/dialer/about/res/values-el/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Έκδοση build</string>
-  <string name="open_source_license_detail_label">Λεπτομέρειες άδειας λογισμικού ανοικτού κώδικα</string>
-  <string name="licenseActivityLabel">Άδειες λογισμικού ανοικτού κώδικα</string>
-  <string name="privacy_policy_label">Πολιτική απορρήτου</string>
-  <string name="terms_of_service_label">Όροι Παροχής Υπηρεσιών</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-en-rAU/strings.xml b/java/com/android/dialer/about/res/values-en-rAU/strings.xml
deleted file mode 100644
index 0d59e68..0000000
--- a/java/com/android/dialer/about/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Build version</string>
-  <string name="open_source_license_detail_label">Licence details for open-source software</string>
-  <string name="licenseActivityLabel">Open-source licences</string>
-  <string name="privacy_policy_label">Privacy Policy</string>
-  <string name="terms_of_service_label">Terms of Service</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-en-rGB/strings.xml b/java/com/android/dialer/about/res/values-en-rGB/strings.xml
deleted file mode 100644
index 0d59e68..0000000
--- a/java/com/android/dialer/about/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Build version</string>
-  <string name="open_source_license_detail_label">Licence details for open-source software</string>
-  <string name="licenseActivityLabel">Open-source licences</string>
-  <string name="privacy_policy_label">Privacy Policy</string>
-  <string name="terms_of_service_label">Terms of Service</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-en-rIN/strings.xml b/java/com/android/dialer/about/res/values-en-rIN/strings.xml
deleted file mode 100644
index 0d59e68..0000000
--- a/java/com/android/dialer/about/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Build version</string>
-  <string name="open_source_license_detail_label">Licence details for open-source software</string>
-  <string name="licenseActivityLabel">Open-source licences</string>
-  <string name="privacy_policy_label">Privacy Policy</string>
-  <string name="terms_of_service_label">Terms of Service</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-es-rUS/strings.xml b/java/com/android/dialer/about/res/values-es-rUS/strings.xml
deleted file mode 100644
index 142722f..0000000
--- a/java/com/android/dialer/about/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versión de compilación</string>
-  <string name="open_source_license_detail_label">Detalles de la licencia de software de código abierto</string>
-  <string name="licenseActivityLabel">Licencias de código abierto</string>
-  <string name="privacy_policy_label">Política de privacidad</string>
-  <string name="terms_of_service_label">Condiciones del servicio</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-es/strings.xml b/java/com/android/dialer/about/res/values-es/strings.xml
deleted file mode 100644
index a903159..0000000
--- a/java/com/android/dialer/about/res/values-es/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versión de la compilación</string>
-  <string name="open_source_license_detail_label">Detalles de las licencias de software libre</string>
-  <string name="licenseActivityLabel">Licencias de software libre</string>
-  <string name="privacy_policy_label">Política de privacidad</string>
-  <string name="terms_of_service_label">Condiciones de servicio</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-et/strings.xml b/java/com/android/dialer/about/res/values-et/strings.xml
deleted file mode 100644
index f6af3aa..0000000
--- a/java/com/android/dialer/about/res/values-et/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Järguversioon</string>
-  <string name="open_source_license_detail_label">Avatud lähtekoodiga tarkvara litsentsi üksikasjad</string>
-  <string name="licenseActivityLabel">Avatud lähtekoodi litsentsid</string>
-  <string name="privacy_policy_label">Privaatsuseeskirjad</string>
-  <string name="terms_of_service_label">Teenusetingimused</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-eu/strings.xml b/java/com/android/dialer/about/res/values-eu/strings.xml
deleted file mode 100644
index a184bae..0000000
--- a/java/com/android/dialer/about/res/values-eu/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Konpilazioaren bertsioa</string>
-  <string name="open_source_license_detail_label">Kode irekiko softwarearen lizentziaren xehetasunak</string>
-  <string name="licenseActivityLabel">Kode irekiko lizentziak</string>
-  <string name="privacy_policy_label">Pribatutasun-gidalerroak</string>
-  <string name="terms_of_service_label">Zerbitzu-baldintzak</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-fa/strings.xml b/java/com/android/dialer/about/res/values-fa/strings.xml
deleted file mode 100644
index 16cdc82..0000000
--- a/java/com/android/dialer/about/res/values-fa/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">نسخه ساخت</string>
-  <string name="open_source_license_detail_label">جزئیات مجوز برای نرم‌افزار متن‌باز</string>
-  <string name="licenseActivityLabel">مجوزهای متن‌باز</string>
-  <string name="privacy_policy_label">خط‌مشی رازداری</string>
-  <string name="terms_of_service_label">شرایط و ضوابط</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-fi/strings.xml b/java/com/android/dialer/about/res/values-fi/strings.xml
deleted file mode 100644
index 6f55181..0000000
--- a/java/com/android/dialer/about/res/values-fi/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Koontiversio</string>
-  <string name="open_source_license_detail_label">Avoimen lähdekoodin ohjelmiston käyttöoikeustiedot</string>
-  <string name="licenseActivityLabel">Avoimen lähdekoodin käyttöoikeudet</string>
-  <string name="privacy_policy_label">Tietosuojakäytäntö</string>
-  <string name="terms_of_service_label">Käyttöehdot</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-fr-rCA/strings.xml b/java/com/android/dialer/about/res/values-fr-rCA/strings.xml
deleted file mode 100644
index add9be1..0000000
--- a/java/com/android/dialer/about/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Version</string>
-  <string name="open_source_license_detail_label">Renseignements sur les licences de logiciels libres</string>
-  <string name="licenseActivityLabel">Licences de logiciels libres</string>
-  <string name="privacy_policy_label">Politique de confidentialité</string>
-  <string name="terms_of_service_label">Conditions d\'utilisation</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-fr/strings.xml b/java/com/android/dialer/about/res/values-fr/strings.xml
deleted file mode 100644
index 99787bc..0000000
--- a/java/com/android/dialer/about/res/values-fr/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Build</string>
-  <string name="open_source_license_detail_label">Informations sur les licences de logiciels Open Source</string>
-  <string name="licenseActivityLabel">Licences Open Source</string>
-  <string name="privacy_policy_label">Règles de confidentialité</string>
-  <string name="terms_of_service_label">Conditions d\'utilisation</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-gl/strings.xml b/java/com/android/dialer/about/res/values-gl/strings.xml
deleted file mode 100644
index 9a10fd0..0000000
--- a/java/com/android/dialer/about/res/values-gl/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versión de compilación</string>
-  <string name="open_source_license_detail_label">Detalles da licenza para software de código aberto</string>
-  <string name="licenseActivityLabel">Licenzas de código aberto</string>
-  <string name="privacy_policy_label">Política de privacidade</string>
-  <string name="terms_of_service_label">Condicións de servizo</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-gu/strings.xml b/java/com/android/dialer/about/res/values-gu/strings.xml
deleted file mode 100644
index a8e37a1..0000000
--- a/java/com/android/dialer/about/res/values-gu/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">બિલ્ડ સંસ્કરણ</string>
-  <string name="open_source_license_detail_label">ખુલ્લા સ્ત્રોતના સોફ્ટવેર માટે લાઇસન્સની વિગતો</string>
-  <string name="licenseActivityLabel">ખુલ્લા સ્ત્રોત લાઇસન્સ</string>
-  <string name="privacy_policy_label">ગોપનીયતા નીતિ</string>
-  <string name="terms_of_service_label">સેવાની શરતો</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-hi/strings.xml b/java/com/android/dialer/about/res/values-hi/strings.xml
deleted file mode 100644
index 45cf106..0000000
--- a/java/com/android/dialer/about/res/values-hi/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">बिल्ड वर्शन</string>
-  <string name="open_source_license_detail_label">ओपन सोर्स सॉफ़्टवेयर के लाइसेंस वि‍वरण</string>
-  <string name="licenseActivityLabel">ओपन सोर्स लाइसेंस</string>
-  <string name="privacy_policy_label">निजता नीति</string>
-  <string name="terms_of_service_label">सेवा की शर्तें</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-hr/strings.xml b/java/com/android/dialer/about/res/values-hr/strings.xml
deleted file mode 100644
index 6179fd6..0000000
--- a/java/com/android/dialer/about/res/values-hr/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Trenutačna međuverzija</string>
-  <string name="open_source_license_detail_label">Pojedinosti o licenci za softver otvorenog koda</string>
-  <string name="licenseActivityLabel">Licence otvorenog koda</string>
-  <string name="privacy_policy_label">Pravila o privatnosti</string>
-  <string name="terms_of_service_label">Uvjeti pružanja usluge</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-hu/strings.xml b/java/com/android/dialer/about/res/values-hu/strings.xml
deleted file mode 100644
index 309bf4e..0000000
--- a/java/com/android/dialer/about/res/values-hu/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Build verziószáma</string>
-  <string name="open_source_license_detail_label">A nyílt forráskódú szoftverekhez kapcsolódó licenc részletei</string>
-  <string name="licenseActivityLabel">Nyílt forráskódú licencek</string>
-  <string name="privacy_policy_label">Adatvédelmi irányelvek</string>
-  <string name="terms_of_service_label">Általános Szerződési Feltételek</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-hy/strings.xml b/java/com/android/dialer/about/res/values-hy/strings.xml
deleted file mode 100644
index 385400c..0000000
--- a/java/com/android/dialer/about/res/values-hy/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Կառուցման տարբերակը</string>
-  <string name="open_source_license_detail_label">Բաց կոդով ծրագրակազմի արտոնագրերի մանրամասներ</string>
-  <string name="licenseActivityLabel">Բաց կոդով ծրագրակազմի արտոնագրեր</string>
-  <string name="privacy_policy_label">Գաղտնիության քաղաքականություն</string>
-  <string name="terms_of_service_label">Օգտագործման պայմաններ</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-in/strings.xml b/java/com/android/dialer/about/res/values-in/strings.xml
deleted file mode 100644
index 1d643be..0000000
--- a/java/com/android/dialer/about/res/values-in/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versi build</string>
-  <string name="open_source_license_detail_label">Detail lisensi untuk software open source</string>
-  <string name="licenseActivityLabel">Lisensi open source</string>
-  <string name="privacy_policy_label">Kebijakan privasi</string>
-  <string name="terms_of_service_label">Persyaratan layanan</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-is/strings.xml b/java/com/android/dialer/about/res/values-is/strings.xml
deleted file mode 100644
index fea9515..0000000
--- a/java/com/android/dialer/about/res/values-is/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Útgáfa smíði</string>
-  <string name="open_source_license_detail_label">Leyfisupplýsingar fyrir hugbúnað með opnum kóða</string>
-  <string name="licenseActivityLabel">Leyfi opins kóða</string>
-  <string name="privacy_policy_label">Persónuverndarstefna</string>
-  <string name="terms_of_service_label">Þjónustuskilmálar</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-it/strings.xml b/java/com/android/dialer/about/res/values-it/strings.xml
deleted file mode 100644
index 071d58a..0000000
--- a/java/com/android/dialer/about/res/values-it/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versione build</string>
-  <string name="open_source_license_detail_label">Dettagli delle licenze per il software open source</string>
-  <string name="licenseActivityLabel">Licenze open source</string>
-  <string name="privacy_policy_label">Norme sulla privacy</string>
-  <string name="terms_of_service_label">Termini di servizio</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-iw/strings.xml b/java/com/android/dialer/about/res/values-iw/strings.xml
deleted file mode 100644
index 0576fac..0000000
--- a/java/com/android/dialer/about/res/values-iw/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">‏גרסת Build</string>
-  <string name="open_source_license_detail_label">פרטי רישיון לתוכנות קוד פתוח</string>
-  <string name="licenseActivityLabel">רישיונות קוד פתוח</string>
-  <string name="privacy_policy_label">מדיניות הפרטיות</string>
-  <string name="terms_of_service_label">תנאים והגבלות</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ja/strings.xml b/java/com/android/dialer/about/res/values-ja/strings.xml
deleted file mode 100644
index 42c29ad..0000000
--- a/java/com/android/dialer/about/res/values-ja/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">ビルド バージョン</string>
-  <string name="open_source_license_detail_label">オープンソース ソフトウェアのライセンスの詳細</string>
-  <string name="licenseActivityLabel">オープンソース ライセンス</string>
-  <string name="privacy_policy_label">プライバシー ポリシー</string>
-  <string name="terms_of_service_label">利用規約</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ka/strings.xml b/java/com/android/dialer/about/res/values-ka/strings.xml
deleted file mode 100644
index 3801240..0000000
--- a/java/com/android/dialer/about/res/values-ka/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Build-ის ვერსია</string>
-  <string name="open_source_license_detail_label">ღია კოდის პროგრამული უზრუნველყოფის ლიცენზირების დეტალები</string>
-  <string name="licenseActivityLabel">ღია კოდის ლიცენზიები</string>
-  <string name="privacy_policy_label">კონფიდენციალურობის დებულება</string>
-  <string name="terms_of_service_label">მომსახურების პირობები</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-kk/strings.xml b/java/com/android/dialer/about/res/values-kk/strings.xml
deleted file mode 100644
index 76c3db8..0000000
--- a/java/com/android/dialer/about/res/values-kk/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Жинақ нұсқасы</string>
-  <string name="open_source_license_detail_label">Ашық бастапқы код бағдарламасына арналған лицензия туралы мәліметтер</string>
-  <string name="licenseActivityLabel">Ашық бастапқы код лицензиялары</string>
-  <string name="privacy_policy_label">Құпиялылық саясаты</string>
-  <string name="terms_of_service_label">Қызмет көрсету шарттары</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-km/strings.xml b/java/com/android/dialer/about/res/values-km/strings.xml
deleted file mode 100644
index 464a2bf..0000000
--- a/java/com/android/dialer/about/res/values-km/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">កំណែបង្កើត</string>
-  <string name="open_source_license_detail_label">ព័ត៌មាន​លម្អិត​អំពី​អាជ្ញាបណ្ណ​សម្រាប់​កម្មវិធី​ប្រភព​កូដ​ចំហ</string>
-  <string name="licenseActivityLabel">អាជ្ញាប័ណ្ណ​កម្មវិធី​​​​​កូដ​ចំហ</string>
-  <string name="privacy_policy_label">គោលការណ៍​ឯកជន​ភាព</string>
-  <string name="terms_of_service_label">លក្ខខណ្ឌ​ប្រើប្រាស់</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-kn/strings.xml b/java/com/android/dialer/about/res/values-kn/strings.xml
deleted file mode 100644
index 947c54c..0000000
--- a/java/com/android/dialer/about/res/values-kn/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">ಬಿಲ್ಡ್ ಆವೃತ್ತಿ</string>
-  <string name="open_source_license_detail_label">ತೆರೆದ ಮೂಲ ಸಾಫ್ಟ್‌ವೇರ್‌ಗಾಗಿ ಪರವಾನಗಿ ವಿವರಗಳು</string>
-  <string name="licenseActivityLabel">ತೆರೆದ ಮೂಲ ಪರವಾನಗಿಗಳು</string>
-  <string name="privacy_policy_label">ಗೌಪ್ಯತೆ ನೀತಿ</string>
-  <string name="terms_of_service_label">ಸೇವಾ ನಿಯಮಗಳು</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ko/strings.xml b/java/com/android/dialer/about/res/values-ko/strings.xml
deleted file mode 100644
index 0ba1d92..0000000
--- a/java/com/android/dialer/about/res/values-ko/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">빌드 버전</string>
-  <string name="open_source_license_detail_label">오픈소스 소프트웨어 라이선스 세부정보</string>
-  <string name="licenseActivityLabel">오픈소스 라이선스</string>
-  <string name="privacy_policy_label">개인정보처리방침</string>
-  <string name="terms_of_service_label">서비스 약관</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ky/strings.xml b/java/com/android/dialer/about/res/values-ky/strings.xml
deleted file mode 100644
index 8c4b0d2..0000000
--- a/java/com/android/dialer/about/res/values-ky/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Курама версиясы</string>
-  <string name="open_source_license_detail_label">Баштапкы коду ачык программанын уруксаттамасынын чоо-жайы</string>
-  <string name="licenseActivityLabel">Ачык программа уруксаттамалары</string>
-  <string name="privacy_policy_label">Купуялык саясаты</string>
-  <string name="terms_of_service_label">Тейлөө шарттары</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-lo/strings.xml b/java/com/android/dialer/about/res/values-lo/strings.xml
deleted file mode 100644
index e59eab8..0000000
--- a/java/com/android/dialer/about/res/values-lo/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">ເວີຊັນສ້າງ</string>
-  <string name="open_source_license_detail_label">ລາຍລະອຽດໃບອະນຸຍາດໂອເພນຊອດ</string>
-  <string name="licenseActivityLabel">ໃບອະນຸຍາດໂອເພນຊອດ</string>
-  <string name="privacy_policy_label">ນະໂຍບາຍຄວາມເປັນສ່ວນຕົວ</string>
-  <string name="terms_of_service_label">ຂໍ້ກຳນົດບໍລິການ</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-lt/strings.xml b/java/com/android/dialer/about/res/values-lt/strings.xml
deleted file mode 100644
index 340004f..0000000
--- a/java/com/android/dialer/about/res/values-lt/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versija</string>
-  <string name="open_source_license_detail_label">Išsami atvirojo šaltinio programinės įrangos licencijos informacija</string>
-  <string name="licenseActivityLabel">Atvirojo šaltinio licencijos</string>
-  <string name="privacy_policy_label">Privatumo politika</string>
-  <string name="terms_of_service_label">Paslaugų teikimo sąlygos</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-lv/strings.xml b/java/com/android/dialer/about/res/values-lv/strings.xml
deleted file mode 100644
index cded741..0000000
--- a/java/com/android/dialer/about/res/values-lv/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versija</string>
-  <string name="open_source_license_detail_label">Licences informācija par atklātā pirmkoda programmatūru</string>
-  <string name="licenseActivityLabel">Atklātā pirmkoda licences</string>
-  <string name="privacy_policy_label">Konfidencialitātes politika</string>
-  <string name="terms_of_service_label">Pakalpojumu sniegšanas noteikumi</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-mk/strings.xml b/java/com/android/dialer/about/res/values-mk/strings.xml
deleted file mode 100644
index 17a6cf4..0000000
--- a/java/com/android/dialer/about/res/values-mk/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Верзија</string>
-  <string name="open_source_license_detail_label">Детали за лиценцата за софтвер со отворен код</string>
-  <string name="licenseActivityLabel">Лиценци за софтвер со отворен код</string>
-  <string name="privacy_policy_label">Политика за приватност</string>
-  <string name="terms_of_service_label">Услови на користење</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ml/strings.xml b/java/com/android/dialer/about/res/values-ml/strings.xml
deleted file mode 100644
index 00ce568..0000000
--- a/java/com/android/dialer/about/res/values-ml/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">ബിൽഡ് പതിപ്പ്</string>
-  <string name="open_source_license_detail_label">ഓപ്പൺ സോഴ്‌സ് സോഫ്റ്റ്‌വെയറിനായുള്ള ലൈസൻസ് വിശദാംശങ്ങൾ</string>
-  <string name="licenseActivityLabel">ഓപ്പൺ സോഴ്‌സ് ലൈസൻസുകൾ</string>
-  <string name="privacy_policy_label">സ്വകാര്യതാ നയം</string>
-  <string name="terms_of_service_label">സേവന നിബന്ധനകൾ</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-mn/strings.xml b/java/com/android/dialer/about/res/values-mn/strings.xml
deleted file mode 100644
index 075fec8..0000000
--- a/java/com/android/dialer/about/res/values-mn/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Хийгдсэн хувилбар</string>
-  <string name="open_source_license_detail_label">Нээлттэй эхийн програмын лицензийн мэдээлэл</string>
-  <string name="licenseActivityLabel">Нээлттэй эхийн лиценз</string>
-  <string name="privacy_policy_label">Нууцлалын бодлого</string>
-  <string name="terms_of_service_label">Үйлчилгээний нөхцөл</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-mr/strings.xml b/java/com/android/dialer/about/res/values-mr/strings.xml
deleted file mode 100644
index c89e7a4..0000000
--- a/java/com/android/dialer/about/res/values-mr/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">बिल्ड आवृत्ती</string>
-  <string name="open_source_license_detail_label">मुक्त स्त्रोत सॉफ्टवेअरसाठी परवाना तपशील</string>
-  <string name="licenseActivityLabel">मुक्त स्रोत परवाने</string>
-  <string name="privacy_policy_label">गोपनीयता धोरण</string>
-  <string name="terms_of_service_label">सेवा अटी</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ms/strings.xml b/java/com/android/dialer/about/res/values-ms/strings.xml
deleted file mode 100644
index b28a3bc..0000000
--- a/java/com/android/dialer/about/res/values-ms/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versi binaan</string>
-  <string name="open_source_license_detail_label">Butiran lesen untuk perisian sumber terbuka</string>
-  <string name="licenseActivityLabel">Lesen sumber terbuka</string>
-  <string name="privacy_policy_label">Dasar privasi</string>
-  <string name="terms_of_service_label">Syarat perkhidmatan</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-my/strings.xml b/java/com/android/dialer/about/res/values-my/strings.xml
deleted file mode 100644
index 5e87ce6..0000000
--- a/java/com/android/dialer/about/res/values-my/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">တည်ဆောက်မှု ဗားရှင်း</string>
-  <string name="open_source_license_detail_label">အခမဲ့ရင်းမြစ်ဆော့ဖ်ဝဲအတွက် လိုင်စင်အသေးစိတ်များ</string>
-  <string name="licenseActivityLabel">အခမဲ့ရင်းမြစ်လိုင်စင်များ</string>
-  <string name="privacy_policy_label">ပုဂ္ဂိုလ်ရေးဆိုင်ရာ မူဝါဒ</string>
-  <string name="terms_of_service_label">ဝန်ဆောင်မှု စည်းမျဉ်းများ</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-nb/strings.xml b/java/com/android/dialer/about/res/values-nb/strings.xml
deleted file mode 100644
index 40dfb37..0000000
--- a/java/com/android/dialer/about/res/values-nb/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Delversjon</string>
-  <string name="open_source_license_detail_label">Lisensdetaljer for programvare med åpen kildekode</string>
-  <string name="licenseActivityLabel">Lisenser for åpen kildekode</string>
-  <string name="privacy_policy_label">Personvernregler</string>
-  <string name="terms_of_service_label">Vilkår for bruk</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ne/strings.xml b/java/com/android/dialer/about/res/values-ne/strings.xml
deleted file mode 100644
index 88c8394..0000000
--- a/java/com/android/dialer/about/res/values-ne/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">बिल्ड संस्करण</string>
-  <string name="open_source_license_detail_label">खुला स्रोतका सफ्टवेयरका इजाजतपत्र सम्बन्धी विवरणहरू</string>
-  <string name="licenseActivityLabel">खुला स्रोतका इजाजतपत्रहरू</string>
-  <string name="privacy_policy_label">गोपनीयता नीति</string>
-  <string name="terms_of_service_label">सेवाका सर्तहरू</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-nl/strings.xml b/java/com/android/dialer/about/res/values-nl/strings.xml
deleted file mode 100644
index 481add7..0000000
--- a/java/com/android/dialer/about/res/values-nl/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Buildversie</string>
-  <string name="open_source_license_detail_label">Licentiedetails voor open-sourcesoftware</string>
-  <string name="licenseActivityLabel">Open-sourcelicenties</string>
-  <string name="privacy_policy_label">Privacybeleid</string>
-  <string name="terms_of_service_label">Servicevoorwaarden</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-no/strings.xml b/java/com/android/dialer/about/res/values-no/strings.xml
deleted file mode 100644
index 40dfb37..0000000
--- a/java/com/android/dialer/about/res/values-no/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Delversjon</string>
-  <string name="open_source_license_detail_label">Lisensdetaljer for programvare med åpen kildekode</string>
-  <string name="licenseActivityLabel">Lisenser for åpen kildekode</string>
-  <string name="privacy_policy_label">Personvernregler</string>
-  <string name="terms_of_service_label">Vilkår for bruk</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-pa/strings.xml b/java/com/android/dialer/about/res/values-pa/strings.xml
deleted file mode 100644
index deb84bb..0000000
--- a/java/com/android/dialer/about/res/values-pa/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">ਨਿਰਮਾਣ ਰੂਪ</string>
-  <string name="open_source_license_detail_label">ਖੁੱਲ੍ਹੇ ਸਰੋਤ ਸਾਫਟਵੇਅਰ ਲਈ ਲਾਇਸੰਸ ਵੇਰਵੇ</string>
-  <string name="licenseActivityLabel">ਖੁੱਲ੍ਹੇ ਸਰੋਤ ਲਾਇਸੰਸ</string>
-  <string name="privacy_policy_label">ਪਰਦੇਦਾਰੀ ਨੀਤੀ</string>
-  <string name="terms_of_service_label">ਸੇਵਾ ਦੀਆਂ ਮਦਾਂ</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-pl/strings.xml b/java/com/android/dialer/about/res/values-pl/strings.xml
deleted file mode 100644
index 948aba4..0000000
--- a/java/com/android/dialer/about/res/values-pl/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Wersja kompilacji</string>
-  <string name="open_source_license_detail_label">Szczegóły licencji na oprogramowanie open source</string>
-  <string name="licenseActivityLabel">Licencje open source</string>
-  <string name="privacy_policy_label">Polityka prywatności</string>
-  <string name="terms_of_service_label">Warunki korzystania z usługi</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-pt-rBR/strings.xml b/java/com/android/dialer/about/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 2c21f23..0000000
--- a/java/com/android/dialer/about/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versão</string>
-  <string name="open_source_license_detail_label">Detalhes da licença do software de código aberto</string>
-  <string name="licenseActivityLabel">Licenças de código aberto</string>
-  <string name="privacy_policy_label">Política de privacidade</string>
-  <string name="terms_of_service_label">Termos de Serviço</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-pt-rPT/strings.xml b/java/com/android/dialer/about/res/values-pt-rPT/strings.xml
deleted file mode 100644
index c3ffd16..0000000
--- a/java/com/android/dialer/about/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versão da compilação</string>
-  <string name="open_source_license_detail_label">Detalhes da licença para software de código aberto</string>
-  <string name="licenseActivityLabel">Licenças de código aberto</string>
-  <string name="privacy_policy_label">Política de Privacidade</string>
-  <string name="terms_of_service_label">Termos de Utilização</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-pt/strings.xml b/java/com/android/dialer/about/res/values-pt/strings.xml
deleted file mode 100644
index 2c21f23..0000000
--- a/java/com/android/dialer/about/res/values-pt/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versão</string>
-  <string name="open_source_license_detail_label">Detalhes da licença do software de código aberto</string>
-  <string name="licenseActivityLabel">Licenças de código aberto</string>
-  <string name="privacy_policy_label">Política de privacidade</string>
-  <string name="terms_of_service_label">Termos de Serviço</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ro/strings.xml b/java/com/android/dialer/about/res/values-ro/strings.xml
deleted file mode 100644
index 20183ef..0000000
--- a/java/com/android/dialer/about/res/values-ro/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versiunea</string>
-  <string name="open_source_license_detail_label">Detalii privind licența pentru software-ul open source</string>
-  <string name="licenseActivityLabel">Licențe open source</string>
-  <string name="privacy_policy_label">Politică de confidențialitate</string>
-  <string name="terms_of_service_label">Termeni și condiții</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ru/strings.xml b/java/com/android/dialer/about/res/values-ru/strings.xml
deleted file mode 100644
index 2cd1291..0000000
--- a/java/com/android/dialer/about/res/values-ru/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Версия сборки</string>
-  <string name="open_source_license_detail_label">Сведения о лицензиях на ПО с открытым исходным кодом</string>
-  <string name="licenseActivityLabel">Лицензии открытого ПО</string>
-  <string name="privacy_policy_label">Конфиденциальность</string>
-  <string name="terms_of_service_label">Условия использования</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-si/strings.xml b/java/com/android/dialer/about/res/values-si/strings.xml
deleted file mode 100644
index 2fb320b..0000000
--- a/java/com/android/dialer/about/res/values-si/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">නිමැවුම් අනුවාදය</string>
-  <string name="open_source_license_detail_label">විවෘත මූලාශ්‍ර මෘදුකාංග සඳහා බලපත්‍ර විස්තර</string>
-  <string name="licenseActivityLabel">විවෘත මූලාශ්‍ර බලපත්‍ර</string>
-  <string name="privacy_policy_label">රහස්‍යතා ප්‍රතිපත්තිය</string>
-  <string name="terms_of_service_label">සේවා නියම</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-sk/strings.xml b/java/com/android/dialer/about/res/values-sk/strings.xml
deleted file mode 100644
index 24b394f..0000000
--- a/java/com/android/dialer/about/res/values-sk/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Verzia zostavy</string>
-  <string name="open_source_license_detail_label">Podrobnosti o licenciách pre softvér open source</string>
-  <string name="licenseActivityLabel">Licencie open source</string>
-  <string name="privacy_policy_label">Pravidlá ochrany súkromia</string>
-  <string name="terms_of_service_label">Zmluvné podmienky</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-sl/strings.xml b/java/com/android/dialer/about/res/values-sl/strings.xml
deleted file mode 100644
index f0f28c5..0000000
--- a/java/com/android/dialer/about/res/values-sl/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Delovna različica</string>
-  <string name="open_source_license_detail_label">Podrobnosti o licenci za odprtokodno programsko opremo</string>
-  <string name="licenseActivityLabel">Odprtokodne licence</string>
-  <string name="privacy_policy_label">Pravilnik o zasebnosti</string>
-  <string name="terms_of_service_label">Pogoji storitve</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-sq/strings.xml b/java/com/android/dialer/about/res/values-sq/strings.xml
deleted file mode 100644
index 64369cc..0000000
--- a/java/com/android/dialer/about/res/values-sq/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Versioni i ndërtimit</string>
-  <string name="open_source_license_detail_label">Detajet e licencës për softuer me burim të hapur</string>
-  <string name="licenseActivityLabel">Licencat me burim të hapur</string>
-  <string name="privacy_policy_label">Politika e privatësisë</string>
-  <string name="terms_of_service_label">Kushtet e shërbimit</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-sr/strings.xml b/java/com/android/dialer/about/res/values-sr/strings.xml
deleted file mode 100644
index 44442b9..0000000
--- a/java/com/android/dialer/about/res/values-sr/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Верзија</string>
-  <string name="open_source_license_detail_label">Подаци о лиценци за софтвер отвореног кода</string>
-  <string name="licenseActivityLabel">Лиценце отвореног кода</string>
-  <string name="privacy_policy_label">Политика приватности</string>
-  <string name="terms_of_service_label">Услови коришћења услуге</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-sv/strings.xml b/java/com/android/dialer/about/res/values-sv/strings.xml
deleted file mode 100644
index 2f60771..0000000
--- a/java/com/android/dialer/about/res/values-sv/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Programversion</string>
-  <string name="open_source_license_detail_label">Licensinformation för programvara med öppen källkod</string>
-  <string name="licenseActivityLabel">Licenser för öppen källkod</string>
-  <string name="privacy_policy_label">Sekretesspolicy</string>
-  <string name="terms_of_service_label">Användarvillkor</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-sw/strings.xml b/java/com/android/dialer/about/res/values-sw/strings.xml
deleted file mode 100644
index d84e07d..0000000
--- a/java/com/android/dialer/about/res/values-sw/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Toleo la muundo</string>
-  <string name="open_source_license_detail_label">Maelezo ya leseni za programu huria</string>
-  <string name="licenseActivityLabel">Leseni za programu huria</string>
-  <string name="privacy_policy_label">Sera ya faragha</string>
-  <string name="terms_of_service_label">Sheria na masharti</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ta/strings.xml b/java/com/android/dialer/about/res/values-ta/strings.xml
deleted file mode 100644
index 87c4f69..0000000
--- a/java/com/android/dialer/about/res/values-ta/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">நடப்புப் பதிப்பு</string>
-  <string name="open_source_license_detail_label">ஓப்பன் சோர்ஸ் மென்பொருளுக்கான உரிம விவரங்கள்</string>
-  <string name="licenseActivityLabel">ஓப்பன் சோர்ஸ் உரிமங்கள்</string>
-  <string name="privacy_policy_label">தனியுரிமைக் கொள்கை</string>
-  <string name="terms_of_service_label">சேவை விதிமுறைகள்</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-te/strings.xml b/java/com/android/dialer/about/res/values-te/strings.xml
deleted file mode 100644
index 5d0c674..0000000
--- a/java/com/android/dialer/about/res/values-te/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">బిల్డ్ సంస్కరణ</string>
-  <string name="open_source_license_detail_label">ఓపెన్ సోర్స్ సాఫ్ట్‌వేర్ యొక్క లైసెన్స్ వివరాలు</string>
-  <string name="licenseActivityLabel">ఓపెన్ సోర్స్ లైసెన్స్‌లు</string>
-  <string name="privacy_policy_label">గోప్యతా విధానం</string>
-  <string name="terms_of_service_label">సేవా నిబంధనలు</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-th/strings.xml b/java/com/android/dialer/about/res/values-th/strings.xml
deleted file mode 100644
index 12d2bf0..0000000
--- a/java/com/android/dialer/about/res/values-th/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">เวอร์ชันบิวด์</string>
-  <string name="open_source_license_detail_label">รายละเอียดใบอนุญาตสำหรับซอฟต์แวร์โอเพนซอร์ส</string>
-  <string name="licenseActivityLabel">ใบอนุญาตโอเพนซอร์ส</string>
-  <string name="privacy_policy_label">นโยบายความเป็นส่วนตัว</string>
-  <string name="terms_of_service_label">ข้อกำหนดในการให้บริการ</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-tl/strings.xml b/java/com/android/dialer/about/res/values-tl/strings.xml
deleted file mode 100644
index 68f0395..0000000
--- a/java/com/android/dialer/about/res/values-tl/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Bersyon ng build</string>
-  <string name="open_source_license_detail_label">Mga detalye ng lisensya para sa open source na software</string>
-  <string name="licenseActivityLabel">Mga open source na lisensya</string>
-  <string name="privacy_policy_label">Patakaran sa privacy</string>
-  <string name="terms_of_service_label">Mga tuntunin ng serbisyo</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-tr/strings.xml b/java/com/android/dialer/about/res/values-tr/strings.xml
deleted file mode 100644
index 8aec66e..0000000
--- a/java/com/android/dialer/about/res/values-tr/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Derleme sürümü</string>
-  <string name="open_source_license_detail_label">Açık kaynak yazılımlar için lisans ayrıntıları</string>
-  <string name="licenseActivityLabel">Açık kaynak lisansları</string>
-  <string name="privacy_policy_label">Gizlilik politikası</string>
-  <string name="terms_of_service_label">Hizmet şartları</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-uk/strings.xml b/java/com/android/dialer/about/res/values-uk/strings.xml
deleted file mode 100644
index a7ef68d..0000000
--- a/java/com/android/dialer/about/res/values-uk/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Версія складання</string>
-  <string name="open_source_license_detail_label">Деталі ліцензій на програмне забезпечення з відкритим кодом</string>
-  <string name="licenseActivityLabel">Ліцензії з відкритим кодом</string>
-  <string name="privacy_policy_label">Політика конфіденційності</string>
-  <string name="terms_of_service_label">Умови використання</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-ur/strings.xml b/java/com/android/dialer/about/res/values-ur/strings.xml
deleted file mode 100644
index 072cebc..0000000
--- a/java/com/android/dialer/about/res/values-ur/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">بلڈ ورژن</string>
-  <string name="open_source_license_detail_label">اوپن سورس سافٹ ویئر کیلئے لائسنس کی تفصیلات</string>
-  <string name="licenseActivityLabel">اوپن سورس لائسنسز</string>
-  <string name="privacy_policy_label">رازداری کی پالیسی</string>
-  <string name="terms_of_service_label">سروس کی شرائط</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-uz/strings.xml b/java/com/android/dialer/about/res/values-uz/strings.xml
deleted file mode 100644
index 325e293..0000000
--- a/java/com/android/dialer/about/res/values-uz/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Yig‘ma versiyasi</string>
-  <string name="open_source_license_detail_label">Ochiq kodli DT litsenziyalari haqida ma’lumot</string>
-  <string name="licenseActivityLabel">Ochiq kodli DT litsenziyalari</string>
-  <string name="privacy_policy_label">Maxfiylik siyosati</string>
-  <string name="terms_of_service_label">Foydalanish shartlari</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-vi/strings.xml b/java/com/android/dialer/about/res/values-vi/strings.xml
deleted file mode 100644
index 67ce780..0000000
--- a/java/com/android/dialer/about/res/values-vi/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Phiên bản đóng gói</string>
-  <string name="open_source_license_detail_label">Chi tiết giấy phép cho phần mềm nguồn mở</string>
-  <string name="licenseActivityLabel">Giấy phép nguồn mở</string>
-  <string name="privacy_policy_label">Chính sách bảo mật</string>
-  <string name="terms_of_service_label">Điều khoản dịch vụ</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-zh-rCN/strings.xml b/java/com/android/dialer/about/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 7efd200..0000000
--- a/java/com/android/dialer/about/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">版本号</string>
-  <string name="open_source_license_detail_label">开放源代码软件的许可详情</string>
-  <string name="licenseActivityLabel">开放源代码许可</string>
-  <string name="privacy_policy_label">隐私权政策</string>
-  <string name="terms_of_service_label">服务条款</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-zh-rHK/strings.xml b/java/com/android/dialer/about/res/values-zh-rHK/strings.xml
deleted file mode 100644
index f188b7e..0000000
--- a/java/com/android/dialer/about/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">型號版本</string>
-  <string name="open_source_license_detail_label">開放原始碼軟件的授權詳情</string>
-  <string name="licenseActivityLabel">開放原始碼授權</string>
-  <string name="privacy_policy_label">私隱權政策</string>
-  <string name="terms_of_service_label">服務條款</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-zh-rTW/strings.xml b/java/com/android/dialer/about/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 5612957..0000000
--- a/java/com/android/dialer/about/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">版本</string>
-  <string name="open_source_license_detail_label">開放原始碼軟體的授權詳細資料</string>
-  <string name="licenseActivityLabel">開放原始碼授權</string>
-  <string name="privacy_policy_label">隱私權政策</string>
-  <string name="terms_of_service_label">服務條款</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values-zu/strings.xml b/java/com/android/dialer/about/res/values-zu/strings.xml
deleted file mode 100644
index 4954ccc..0000000
--- a/java/com/android/dialer/about/res/values-zu/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<resources>
-  <string name="build_version_label">Yakha inguqulo</string>
-  <string name="open_source_license_detail_label">Iminingwane yelayisensi yesofthiwe yomthombo ovulelekile</string>
-  <string name="licenseActivityLabel">Amalayisense womthombo ovulekile</string>
-  <string name="privacy_policy_label">Inqubomgomo yemfihlo</string>
-  <string name="terms_of_service_label">Imigomo yesevisi</string>
-</resources>
diff --git a/java/com/android/dialer/about/res/values/strings.xml b/java/com/android/dialer/about/res/values/strings.xml
deleted file mode 100644
index be7697c..0000000
--- a/java/com/android/dialer/about/res/values/strings.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<resources>
-
-  <!-- Internal preferences key for displaying the build version -->
-  <string name="build_version_key" translatable="false">build_version</string>
-
-  <!-- Label shown in the About Phone screen for the build version [CHAR LIMIT=40]-->
-  <string name="build_version_label">Build version</string>
-
-  <!-- Internal preferences key for displaying the open source license
-       libraries -->
-  <string name="open_source_licenses_key" translatable="false">open_source_licenses</string>
-
-  <!-- Detail label text shown on the About Phone screen to supplement 
-       @string/licenseActivityLabel -->
-  <string name="open_source_license_detail_label">License details for open source software</string>
-
-  <!-- Title for the activity that displays licenses for open source libraries used in the
-       application. -->
-  <string name="licenseActivityLabel">Open source licenses</string>
-
-  <!-- Internal preferences key for displaying the privacy policy -->
-  <string name="privacy_policy_key" translatable="false">privacy_policy</string>
-
-  <!-- Label shown on the About Phone screen for the privacy policy option [CHAR LIMIT=40]-->
-  <string name="privacy_policy_label">Privacy policy</string>
-
-  <!-- URL for privacy policy -->
-  <string name="privacy_policy_url" translatable="false">http://www.google.com/policies/privacy</string>
-
-  <!-- Label shown on the About Phone screen for the terms of service option [CHAR LIMIT=50]-->
-  <string name="terms_of_service_label">Terms of service</string>
-
-  <!-- Internal preferences key for displaying the terms of service-->
-  <string name="terms_of_service_key" translatable="false">terms_of_service</string>
-
-  <!-- URL for terms of service -->
-  <string name="terms_of_service_url" translatable="false">http://www.google.com/policies/terms</string>
-
-</resources>
diff --git a/java/com/android/dialer/about/res/xml/about_phone_fragment.xml b/java/com/android/dialer/about/res/xml/about_phone_fragment.xml
deleted file mode 100644
index 51f1d3e..0000000
--- a/java/com/android/dialer/about/res/xml/about_phone_fragment.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-  <Preference
-    android:key="@string/build_version_key"
-    android:persistent="false"
-    android:title="@string/build_version_label"/>
-
-  <Preference
-    android:key="@string/open_source_licenses_key"
-    android:persistent="false"
-    android:summary="@string/open_source_license_detail_label"
-    android:title="@string/licenseActivityLabel">
-  </Preference>
-
-  <Preference
-    android:key="@string/privacy_policy_key"
-    android:persistent="false"
-    android:title="@string/privacy_policy_label">
-    <intent
-      android:action="android.intent.action.VIEW"
-      android:data="@string/privacy_policy_url"/>
-  </Preference>
-
-  <Preference
-    android:key="@string/terms_of_service_key"
-    android:persistent="false"
-    android:title="@string/terms_of_service_label">
-    <intent
-      android:action="android.intent.action.VIEW"
-      android:data="@string/terms_of_service_url"/>
-  </Preference>
-</PreferenceScreen>
diff --git a/java/com/android/dialer/activecalls/ActiveCallInfo.java b/java/com/android/dialer/activecalls/ActiveCallInfo.java
index d4f76b3..7c93ceb 100644
--- a/java/com/android/dialer/activecalls/ActiveCallInfo.java
+++ b/java/com/android/dialer/activecalls/ActiveCallInfo.java
@@ -16,14 +16,16 @@
 
 package com.android.dialer.activecalls;
 
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.Nullable;
+
 import com.google.auto.value.AutoValue;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /** Info of an active call */
 @AutoValue
-@SuppressWarnings("Guava")
 public abstract class ActiveCallInfo {
 
   /** The {@link PhoneAccountHandle} the call is made with */
@@ -38,7 +40,7 @@
   public abstract static class Builder {
 
     public Builder setPhoneAccountHandle(@Nullable PhoneAccountHandle phoneAccountHandle) {
-      return setPhoneAccountHandle(Optional.fromNullable(phoneAccountHandle));
+      return setPhoneAccountHandle(Optional.ofNullable(phoneAccountHandle));
     }
 
     public abstract Builder setPhoneAccountHandle(Optional<PhoneAccountHandle> phoneAccountHandle);
diff --git a/java/com/android/dialer/activecalls/ActiveCalls.java b/java/com/android/dialer/activecalls/ActiveCalls.java
index 600839c..21f7786 100644
--- a/java/com/android/dialer/activecalls/ActiveCalls.java
+++ b/java/com/android/dialer/activecalls/ActiveCalls.java
@@ -16,7 +16,8 @@
 
 package com.android.dialer.activecalls;
 
-import android.support.annotation.MainThread;
+import androidx.annotation.MainThread;
+
 import com.google.common.collect.ImmutableList;
 
 /** Exposes information about current active calls to the whole dialer. */
diff --git a/java/com/android/dialer/activecalls/ActiveCallsComponent.java b/java/com/android/dialer/activecalls/ActiveCallsComponent.java
index 99e0e94..f583b83 100644
--- a/java/com/android/dialer/activecalls/ActiveCallsComponent.java
+++ b/java/com/android/dialer/activecalls/ActiveCallsComponent.java
@@ -17,8 +17,10 @@
 package com.android.dialer.activecalls;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.inject.IncludeInDialerRoot;
+
 import dagger.Subcomponent;
 
 /** Component for {@link ActiveCalls} */
diff --git a/java/com/android/dialer/activecalls/ActiveCallsModule.java b/java/com/android/dialer/activecalls/ActiveCallsModule.java
index 4d7f448..8ebb6ff 100644
--- a/java/com/android/dialer/activecalls/ActiveCallsModule.java
+++ b/java/com/android/dialer/activecalls/ActiveCallsModule.java
@@ -17,15 +17,14 @@
 package com.android.dialer.activecalls;
 
 import com.android.dialer.activecalls.impl.ActiveCallsImpl;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
+
+import javax.inject.Singleton;
+
 import dagger.Binds;
 import dagger.Module;
-import javax.inject.Singleton;
 
 /** Module for {@link ActiveCallsComponent} */
 @Module
-@InstallIn(variants = DialerVariant.DIALER_TEST) // TODO(weijiaxu): put all variants.
 public abstract class ActiveCallsModule {
 
   @Singleton
diff --git a/java/com/android/dialer/activecalls/impl/ActiveCallsImpl.java b/java/com/android/dialer/activecalls/impl/ActiveCallsImpl.java
index 3449cc8..8995962 100644
--- a/java/com/android/dialer/activecalls/impl/ActiveCallsImpl.java
+++ b/java/com/android/dialer/activecalls/impl/ActiveCallsImpl.java
@@ -16,11 +16,13 @@
 
 package com.android.dialer.activecalls.impl;
 
-import android.support.annotation.MainThread;
+import androidx.annotation.MainThread;
+
 import com.android.dialer.activecalls.ActiveCallInfo;
 import com.android.dialer.activecalls.ActiveCalls;
 import com.android.dialer.common.Assert;
 import com.google.common.collect.ImmutableList;
+
 import javax.inject.Inject;
 
 /** Implementation of {@link ActiveCalls} */
diff --git a/java/com/android/dialer/animation/AnimUtils.java b/java/com/android/dialer/animation/AnimUtils.java
index 9160cf5..992b4a5 100644
--- a/java/com/android/dialer/animation/AnimUtils.java
+++ b/java/com/android/dialer/animation/AnimUtils.java
@@ -18,7 +18,6 @@
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
-import android.animation.ValueAnimator;
 import android.view.View;
 import android.view.ViewPropertyAnimator;
 import android.view.animation.Interpolator;
@@ -116,127 +115,6 @@
     animator.start();
   }
 
-  /**
-   * Scales in the view from scale of 0 to actual dimensions.
-   *
-   * @param view The view to scale.
-   * @param durationMs The duration of the scaling in milliseconds.
-   * @param startDelayMs The delay to applying the scaling in milliseconds.
-   */
-  public static void scaleIn(final View view, int durationMs, int startDelayMs) {
-    AnimatorListenerAdapter listener =
-        (new AnimatorListenerAdapter() {
-          @Override
-          public void onAnimationStart(Animator animation) {
-            view.setVisibility(View.VISIBLE);
-          }
-
-          @Override
-          public void onAnimationCancel(Animator animation) {
-            view.setScaleX(1);
-            view.setScaleY(1);
-          }
-        });
-    scaleInternal(
-        view,
-        0 /* startScaleValue */,
-        1 /* endScaleValue */,
-        durationMs,
-        startDelayMs,
-        listener,
-        EASE_IN);
-  }
-
-  /**
-   * Scales out the view from actual dimensions to 0.
-   *
-   * @param view The view to scale.
-   * @param durationMs The duration of the scaling in milliseconds.
-   */
-  public static void scaleOut(final View view, int durationMs) {
-    AnimatorListenerAdapter listener =
-        new AnimatorListenerAdapter() {
-          @Override
-          public void onAnimationEnd(Animator animation) {
-            view.setVisibility(View.GONE);
-          }
-
-          @Override
-          public void onAnimationCancel(Animator animation) {
-            view.setVisibility(View.GONE);
-            view.setScaleX(0);
-            view.setScaleY(0);
-          }
-        };
-
-    scaleInternal(
-        view,
-        1 /* startScaleValue */,
-        0 /* endScaleValue */,
-        durationMs,
-        NO_DELAY,
-        listener,
-        EASE_OUT);
-  }
-
-  private static void scaleInternal(
-      final View view,
-      int startScaleValue,
-      int endScaleValue,
-      int durationMs,
-      int startDelay,
-      AnimatorListenerAdapter listener,
-      Interpolator interpolator) {
-    view.setScaleX(startScaleValue);
-    view.setScaleY(startScaleValue);
-
-    final ViewPropertyAnimator animator = view.animate();
-    animator.cancel();
-
-    animator
-        .setInterpolator(interpolator)
-        .scaleX(endScaleValue)
-        .scaleY(endScaleValue)
-        .setListener(listener)
-        .withLayer();
-
-    if (durationMs != DEFAULT_DURATION) {
-      animator.setDuration(durationMs);
-    }
-    animator.setStartDelay(startDelay);
-
-    animator.start();
-  }
-
-  /**
-   * Animates a view to the new specified dimensions.
-   *
-   * @param view The view to change the dimensions of.
-   * @param newWidth The new width of the view.
-   * @param newHeight The new height of the view.
-   */
-  public static void changeDimensions(final View view, final int newWidth, final int newHeight) {
-    ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
-
-    final int oldWidth = view.getWidth();
-    final int oldHeight = view.getHeight();
-    final int deltaWidth = newWidth - oldWidth;
-    final int deltaHeight = newHeight - oldHeight;
-
-    animator.addUpdateListener(
-        new ValueAnimator.AnimatorUpdateListener() {
-          @Override
-          public void onAnimationUpdate(ValueAnimator animator) {
-            Float value = (Float) animator.getAnimatedValue();
-
-            view.getLayoutParams().width = (int) (value * deltaWidth + oldWidth);
-            view.getLayoutParams().height = (int) (value * deltaHeight + oldHeight);
-            view.requestLayout();
-          }
-        });
-    animator.start();
-  }
-
   public static class AnimationCallback {
 
     public void onAnimationEnd() {}
diff --git a/java/com/android/dialer/app/AccountSelectionActivity.java b/java/com/android/dialer/app/AccountSelectionActivity.java
new file mode 100644
index 0000000..b6ab6b7
--- /dev/null
+++ b/java/com/android/dialer/app/AccountSelectionActivity.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2018-2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.app;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.text.TextUtils;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment;
+import com.android.contacts.common.widget.SelectPhoneAccountDialogOptions;
+import com.android.contacts.common.widget.SelectPhoneAccountDialogOptionsUtil;
+import com.android.dialer.R;
+import com.android.dialer.callintent.CallInitiationType;
+import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.util.CallUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AccountSelectionActivity extends AppCompatActivity {
+  public static Intent createIntent(Context context, String number,
+          CallInitiationType.Type initiationType) {
+    if (TextUtils.isEmpty(number)) {
+      return null;
+    }
+
+    List<PhoneAccount> accounts =
+        CallUtil.getCallCapablePhoneAccounts(context, PhoneAccount.SCHEME_TEL);
+    if (accounts == null || accounts.size() <= 1) {
+      return null;
+    }
+    ArrayList<PhoneAccountHandle> accountHandles = new ArrayList<>();
+    for (PhoneAccount account : accounts) {
+      accountHandles.add(account.getAccountHandle());
+    }
+
+    return new Intent(context, AccountSelectionActivity.class)
+        .putExtra("number", number)
+        .putExtra("accountHandles", accountHandles)
+        .putExtra("type", initiationType.ordinal());
+  }
+
+  private String number;
+  private CallInitiationType.Type initiationType;
+
+  private final SelectPhoneAccountDialogFragment.SelectPhoneAccountListener listener =
+      new SelectPhoneAccountDialogFragment.SelectPhoneAccountListener() {
+    @Override
+    public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle,
+        boolean setDefault, String callId) {
+      Intent intent = new CallIntentBuilder(number, initiationType)
+          .setPhoneAccountHandle(selectedAccountHandle)
+          .build();
+      startActivity(intent);
+      finish();
+    }
+
+    @Override
+    public void onDialogDismissed(String callId) {
+      finish();
+    }
+  };
+
+  @Override
+  protected void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+    number = getIntent().getStringExtra("number");
+    initiationType = CallInitiationType.Type.values()[getIntent().getIntExtra("type", 0)];
+
+    if (getSupportFragmentManager().findFragmentByTag("dialog") == null) {
+      List<PhoneAccountHandle> handles = getIntent().getParcelableArrayListExtra("accountHandles",
+              PhoneAccountHandle.class);
+      SelectPhoneAccountDialogOptions options = SelectPhoneAccountDialogOptionsUtil
+          .builderWithAccounts(handles)
+          .setTitle(R.string.call_via_dialog_title)
+          .setCanSetDefault(false)
+          .build();
+      SelectPhoneAccountDialogFragment dialog =
+          SelectPhoneAccountDialogFragment.newInstance(options, listener);
+
+      dialog.show(getSupportFragmentManager(), "dialog");
+    }
+  }
+}
diff --git a/java/com/android/dialer/app/AndroidManifest.xml b/java/com/android/dialer/app/AndroidManifest.xml
deleted file mode 100644
index ade5bd4..0000000
--- a/java/com/android/dialer/app/AndroidManifest.xml
+++ /dev/null
@@ -1,153 +0,0 @@
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.app">
-
-  <uses-permission android:name="android.permission.CALL_PHONE"/>
-  <uses-permission android:name="android.permission.READ_CONTACTS"/>
-  <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
-  <uses-permission android:name="android.permission.READ_CALL_LOG"/>
-  <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
-  <uses-permission android:name="android.permission.READ_PROFILE"/>
-  <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
-  <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
-  <uses-permission android:name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
-  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
-  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
-  <uses-permission android:name="android.permission.INTERNET"/>
-  <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
-  <uses-permission android:name="android.permission.NFC"/>
-  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
-  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
-  <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
-  <uses-permission android:name="android.permission.WAKE_LOCK"/>
-  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-  <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
-  <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
-  <uses-permission android:name="android.permission.VIBRATE"/>
-  <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
-  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
-  <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL"/>
-  <uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL"/>
-  <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL"/>
-  <uses-permission android:name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK"/>
-  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
-  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
-  <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
-  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
-
-  <!-- This tells the activity manager to not delay any of our activity
-   start requests, even if they happen immediately after the user
-   presses home. -->
-  <uses-permission android:name="android.permission.STOP_APP_SWITCHES"/>
-
-  <uses-sdk
-    android:minSdkVersion="24"
-    android:targetSdkVersion="30"/>
-
-  <application>
-
-  <activity
-      android:exported="false"
-      android:label="@string/manage_blocked_numbers_label"
-      android:name="com.android.dialer.app.filterednumber.BlockedNumbersSettingsActivity"
-      android:parentActivityName="com.android.dialer.app.settings.DialerSettingsActivity"
-      android:theme="@style/ManageBlockedNumbersStyle">
-      <intent-filter>
-        <action android:name="com.android.dialer.action.BLOCKED_NUMBERS_SETTINGS"/>
-        <category android:name="android.intent.category.DEFAULT"/>
-      </intent-filter>
-    </activity>
-
-    <activity
-      android:label="@string/call_log_activity_title"
-      android:name="com.android.dialer.app.calllog.CallLogActivity"
-      android:theme="@style/DialtactsTheme">
-    </activity>
-
-    <receiver android:name="com.android.dialer.app.calllog.CallLogReceiver"
-        android:exported="true">
-      <intent-filter>
-        <action android:name="android.intent.action.NEW_VOICEMAIL"/>
-        <data
-          android:host="com.android.voicemail"
-          android:mimeType="vnd.android.cursor.item/voicemail"
-          android:scheme="content"
-          />
-        <data
-            android:host="com.android.voicemail"
-            android:mimeType="vnd.android.cursor.dir/voicemails"
-            android:scheme="content"
-            />
-      </intent-filter>
-      <intent-filter android:priority="100">
-        <action android:name="android.intent.action.BOOT_COMPLETED"/>
-      </intent-filter>
-    </receiver>
-
-    <activity
-        android:name="com.android.dialer.app.calllog.CallLogNotificationsActivity"
-        android:theme="@style/Theme.AppCompat.Translucent">
-    </activity>
-
-    <service
-      android:directBootAware="true"
-      android:exported="false"
-      android:name="com.android.dialer.app.calllog.CallLogNotificationsService"
-      />
-
-    <service
-      android:name="com.android.dialer.app.calllog.VoicemailNotificationJobService"
-      android:permission="android.permission.BIND_JOB_SERVICE"
-      />
-
-    <receiver
-      android:directBootAware="true"
-      android:exported="true"
-      android:name="com.android.dialer.app.calllog.MissedCallNotificationReceiver">
-      <intent-filter>
-        <action android:name="android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION"/>
-      </intent-filter>
-    </receiver>
-    <!-- Handles voicemail notifications from telephony. Requires O -->
-    <receiver android:name=".voicemail.LegacyVoicemailNotificationReceiver"
-      android:exported="true"
-      android:directBootAware="true">
-      <intent-filter>
-        <action android:name="android.telephony.action.SHOW_VOICEMAIL_NOTIFICATION"/>
-      </intent-filter>
-      <intent-filter>
-        <action android:name="com.android.voicemail.VoicemailClient.ACTION_SHOW_LEGACY_VOICEMAIL" />
-      </intent-filter>
-    </receiver>
-
-    <receiver
-        android:exported="false"
-        android:name="com.android.dialer.commandline.CommandLineReceiver">
-    </receiver>
-
-    <provider
-      android:authorities="com.android.dialer.files"
-      android:exported="false"
-      android:grantUriPermissions="true"
-      android:name="android.support.v4.content.FileProvider">
-      <meta-data
-        android:name="android.support.FILE_PROVIDER_PATHS"
-        android:resource="@xml/file_paths"/>
-    </provider>
-    <meta-data android:name="supports_per_number_preferred_account" android:value="true" />
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/app/Bindings.java b/java/com/android/dialer/app/Bindings.java
deleted file mode 100644
index c8cf27e..0000000
--- a/java/com/android/dialer/app/Bindings.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.app;
-
-import android.content.Context;
-import com.android.dialer.app.legacybindings.DialerLegacyBindings;
-import com.android.dialer.app.legacybindings.DialerLegacyBindingsFactory;
-import com.android.dialer.app.legacybindings.DialerLegacyBindingsStub;
-import java.util.Objects;
-
-/** Accessor for the in call UI bindings. */
-public class Bindings {
-
-  private static DialerLegacyBindings legacyInstance;
-
-  private Bindings() {}
-
-  public static DialerLegacyBindings getLegacy(Context context) {
-    Objects.requireNonNull(context);
-    if (legacyInstance != null) {
-      return legacyInstance;
-    }
-
-    Context application = context.getApplicationContext();
-    if (application instanceof DialerLegacyBindingsFactory) {
-      legacyInstance = ((DialerLegacyBindingsFactory) application).newDialerLegacyBindings();
-    }
-
-    if (legacyInstance == null) {
-      legacyInstance = new DialerLegacyBindingsStub();
-    }
-    return legacyInstance;
-  }
-
-}
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
deleted file mode 100644
index 25a6956..0000000
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ /dev/null
@@ -1,1630 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.app;
-
-import android.app.Fragment;
-import android.app.FragmentTransaction;
-import android.app.KeyguardManager;
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.SystemClock;
-import android.os.Trace;
-import android.provider.CallLog.Calls;
-import android.provider.ContactsContract.QuickContact;
-import android.speech.RecognizerIntent;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.design.widget.CoordinatorLayout;
-import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener;
-import android.support.design.widget.Snackbar;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.ActionBar;
-import android.telecom.PhoneAccount;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.ActionMode;
-import android.view.DragEvent;
-import android.view.Gravity;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnDragListener;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
-import android.widget.AbsListView.OnScrollListener;
-import android.widget.EditText;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.PopupMenu;
-import android.widget.TextView;
-import android.widget.Toast;
-import com.android.contacts.common.dialog.ClearFrequentsDialog;
-import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
-import com.android.dialer.animation.AnimUtils;
-import com.android.dialer.animation.AnimationListenerAdapter;
-import com.android.dialer.app.calllog.CallLogActivity;
-import com.android.dialer.app.calllog.CallLogAdapter;
-import com.android.dialer.app.calllog.CallLogFragment;
-import com.android.dialer.app.calllog.CallLogNotificationsService;
-import com.android.dialer.app.calllog.IntentProvider;
-import com.android.dialer.app.list.DialtactsPagerAdapter;
-import com.android.dialer.app.list.DialtactsPagerAdapter.TabIndex;
-import com.android.dialer.app.list.DragDropController;
-import com.android.dialer.app.list.ListsFragment;
-import com.android.dialer.app.list.OldSpeedDialFragment;
-import com.android.dialer.app.list.OnDragDropListener;
-import com.android.dialer.app.list.OnListFragmentScrolledListener;
-import com.android.dialer.app.list.PhoneFavoriteSquareTileView;
-import com.android.dialer.app.settings.DialerSettingsActivity;
-import com.android.dialer.app.widget.ActionBarController;
-import com.android.dialer.app.widget.SearchEditTextLayout;
-import com.android.dialer.callcomposer.CallComposerActivity;
-import com.android.dialer.calldetails.OldCallDetailsActivity;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.UiUtil;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.constants.ActivityRequestCodes;
-import com.android.dialer.contactsfragment.ContactsFragment;
-import com.android.dialer.contactsfragment.ContactsFragment.OnContactSelectedListener;
-import com.android.dialer.database.Database;
-import com.android.dialer.database.DialerDatabaseHelper;
-import com.android.dialer.dialpadview.DialpadFragment;
-import com.android.dialer.dialpadview.DialpadFragment.DialpadListener;
-import com.android.dialer.dialpadview.DialpadFragment.LastOutgoingCallCallback;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.i18n.LocaleUtils;
-import com.android.dialer.interactions.PhoneNumberInteraction;
-import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCode;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-import com.android.dialer.logging.UiAction;
-import com.android.dialer.metrics.Metrics;
-import com.android.dialer.metrics.MetricsComponent;
-import com.android.dialer.performancereport.PerformanceReport;
-import com.android.dialer.postcall.PostCall;
-import com.android.dialer.precall.PreCall;
-import com.android.dialer.proguard.UsedByReflection;
-import com.android.dialer.searchfragment.list.NewSearchFragment;
-import com.android.dialer.searchfragment.list.NewSearchFragment.SearchFragmentListener;
-import com.android.dialer.simulator.Simulator;
-import com.android.dialer.simulator.SimulatorComponent;
-import com.android.dialer.smartdial.util.SmartDialNameMatcher;
-import com.android.dialer.smartdial.util.SmartDialPrefix;
-import com.android.dialer.storage.StorageComponent;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.util.DialerUtils;
-import com.android.dialer.util.PermissionsUtil;
-import com.android.dialer.util.TouchPointManager;
-import com.android.dialer.util.TransactionSafeActivity;
-import com.android.dialer.util.ViewUtil;
-import com.android.dialer.widget.FloatingActionButtonController;
-import com.google.common.base.Optional;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Locale;
-import java.util.concurrent.TimeUnit;
-
-/** The dialer tab's title is 'phone', a more common name (see strings.xml). */
-@UsedByReflection(value = "AndroidManifest-app.xml")
-public class DialtactsActivity extends TransactionSafeActivity
-    implements View.OnClickListener,
-        DialpadFragment.OnDialpadQueryChangedListener,
-        OnListFragmentScrolledListener,
-        CallLogFragment.HostInterface,
-        CallLogAdapter.OnActionModeStateChangedListener,
-        ContactsFragment.OnContactsListScrolledListener,
-        DialpadFragment.HostInterface,
-        OldSpeedDialFragment.HostInterface,
-        OnDragDropListener,
-        OnPhoneNumberPickerActionListener,
-        PopupMenu.OnMenuItemClickListener,
-        ViewPager.OnPageChangeListener,
-        ActionBarController.ActivityUi,
-        PhoneNumberInteraction.InteractionErrorListener,
-        PhoneNumberInteraction.DisambigDialogDismissedListener,
-        ActivityCompat.OnRequestPermissionsResultCallback,
-        DialpadListener,
-        SearchFragmentListener,
-        OnContactSelectedListener {
-
-  public static final boolean DEBUG = false;
-  @VisibleForTesting public static final String TAG_DIALPAD_FRAGMENT = "dialpad";
-  private static final String ACTION_SHOW_TAB = "ACTION_SHOW_TAB";
-  @VisibleForTesting public static final String EXTRA_SHOW_TAB = "EXTRA_SHOW_TAB";
-  public static final String EXTRA_CLEAR_NEW_VOICEMAILS = "EXTRA_CLEAR_NEW_VOICEMAILS";
-  private static final String KEY_LAST_TAB = "last_tab";
-  private static final String TAG = "DialtactsActivity";
-  private static final String KEY_IN_REGULAR_SEARCH_UI = "in_regular_search_ui";
-  private static final String KEY_IN_DIALPAD_SEARCH_UI = "in_dialpad_search_ui";
-  private static final String KEY_IN_NEW_SEARCH_UI = "in_new_search_ui";
-  private static final String KEY_SEARCH_QUERY = "search_query";
-  private static final String KEY_DIALPAD_QUERY = "dialpad_query";
-  private static final String KEY_FIRST_LAUNCH = "first_launch";
-  private static final String KEY_SAVED_LANGUAGE_CODE = "saved_language_code";
-  private static final String KEY_WAS_CONFIGURATION_CHANGE = "was_configuration_change";
-  private static final String KEY_IS_DIALPAD_SHOWN = "is_dialpad_shown";
-  private static final String KEY_FAB_VISIBLE = "fab_visible";
-  private static final String TAG_NEW_SEARCH_FRAGMENT = "new_search";
-  private static final String TAG_FAVORITES_FRAGMENT = "favorites";
-  /** Just for backward compatibility. Should behave as same as {@link Intent#ACTION_DIAL}. */
-  private static final String ACTION_TOUCH_DIALER = "com.android.phone.action.TOUCH_DIALER";
-
-  private static final int FAB_SCALE_IN_DELAY_MS = 300;
-
-  /**
-   * Minimum time the history tab must have been selected for it to be marked as seen in onStop()
-   */
-  private static final long HISTORY_TAB_SEEN_TIMEOUT = TimeUnit.SECONDS.toMillis(3);
-
-  private static Optional<Boolean> voiceSearchEnabledForTest = Optional.absent();
-
-  /** Fragment containing the dialpad that slides into view */
-  protected DialpadFragment dialpadFragment;
-
-  /** Root layout of DialtactsActivity */
-  private CoordinatorLayout parentLayout;
-
-  /** new Fragment for search phone numbers using the keyboard and the dialpad. */
-  private NewSearchFragment newSearchFragment;
-
-  /** Animation that slides in. */
-  private Animation slideIn;
-
-  /** Animation that slides out. */
-  private Animation slideOut;
-  /** Fragment containing the speed dial list, call history list, and all contacts list. */
-  private ListsFragment listsFragment;
-  /**
-   * Tracks whether onSaveInstanceState has been called. If true, no fragment transactions can be
-   * commited.
-   */
-  private boolean stateSaved;
-
-  private boolean isKeyboardOpen;
-  private boolean inNewSearch;
-  private boolean isRestarting;
-  private boolean inDialpadSearch;
-  private boolean inRegularSearch;
-  private boolean clearSearchOnPause;
-  private boolean isDialpadShown;
-  /** Whether or not the device is in landscape orientation. */
-  private boolean isLandscape;
-  /** True if the dialpad is only temporarily showing due to being in call */
-  private boolean inCallDialpadUp;
-  /** True when this activity has been launched for the first time. */
-  private boolean firstLaunch;
-  /**
-   * Search query to be applied to the SearchView in the ActionBar once onCreateOptionsMenu has been
-   * called.
-   */
-  private String pendingSearchViewQuery;
-
-  private PopupMenu overflowMenu;
-  private EditText searchView;
-  private SearchEditTextLayout searchEditTextLayout;
-  private View voiceSearchButton;
-  private String searchQuery;
-  private String dialpadQuery;
-  private DialerDatabaseHelper dialerDatabaseHelper;
-  private DragDropController dragDropController;
-  private ActionBarController actionBarController;
-  private FloatingActionButtonController floatingActionButtonController;
-  private String savedLanguageCode;
-  private boolean wasConfigurationChange;
-  private long timeTabSelected;
-
-  public boolean isMultiSelectModeEnabled;
-
-  private boolean isLastTabEnabled;
-
-  AnimationListenerAdapter slideInListener =
-      new AnimationListenerAdapter() {
-        @Override
-        public void onAnimationEnd(Animation animation) {
-          maybeEnterSearchUi();
-        }
-      };
-  /** Listener for after slide out animation completes on dialer fragment. */
-  AnimationListenerAdapter slideOutListener =
-      new AnimationListenerAdapter() {
-        @Override
-        public void onAnimationEnd(Animation animation) {
-          commitDialpadFragmentHide();
-        }
-      };
-  /** Listener used to send search queries to the phone search fragment. */
-  private final TextWatcher phoneSearchQueryTextListener =
-      new TextWatcher() {
-        @Override
-        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
-
-        @Override
-        public void onTextChanged(CharSequence s, int start, int before, int count) {
-          final String newText = s.toString();
-          if (newText.equals(searchQuery)) {
-            // If the query hasn't changed (perhaps due to activity being destroyed
-            // and restored, or user launching the same DIAL intent twice), then there is
-            // no need to do anything here.
-            return;
-          }
-
-          if (count != 0) {
-            PerformanceReport.recordClick(UiAction.Type.TEXT_CHANGE_WITH_INPUT);
-          }
-
-          LogUtil.v("DialtactsActivity.onTextChanged", "called with new query: " + newText);
-          LogUtil.v("DialtactsActivity.onTextChanged", "previous query: " + searchQuery);
-          searchQuery = newText;
-
-          // Show search fragment only when the query string is changed to non-empty text.
-          if (!TextUtils.isEmpty(newText)) {
-            // Call enterSearchUi only if we are switching search modes, or showing a search
-            // fragment for the first time.
-            final boolean sameSearchMode =
-                (isDialpadShown && inDialpadSearch) || (!isDialpadShown && inRegularSearch);
-            if (!sameSearchMode) {
-              enterSearchUi(isDialpadShown, searchQuery, true /* animate */);
-            }
-          }
-
-          if (newSearchFragment != null && newSearchFragment.isVisible()) {
-            newSearchFragment.setQuery(searchQuery, getCallInitiationType());
-          }
-        }
-
-        @Override
-        public void afterTextChanged(Editable s) {}
-      };
-  /** Open the search UI when the user clicks on the search box. */
-  private final View.OnClickListener searchViewOnClickListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-          if (!isInSearchUi()) {
-            PerformanceReport.recordClick(UiAction.Type.OPEN_SEARCH);
-            actionBarController.onSearchBoxTapped();
-            enterSearchUi(
-                false /* smartDialSearch */, searchView.getText().toString(), true /* animate */);
-          }
-        }
-      };
-
-  private int actionBarHeight;
-  private int previouslySelectedTabIndex;
-
-  /**
-   * The text returned from a voice search query. Set in {@link #onActivityResult} and used in
-   * {@link #onResume()} to populate the search box.
-   */
-  private String voiceSearchQuery;
-
-  /**
-   * @param tab the TAB_INDEX_* constant in {@link ListsFragment}
-   * @return A intent that will open the DialtactsActivity into the specified tab. The intent for
-   *     each tab will be unique.
-   */
-  public static Intent getShowTabIntent(Context context, int tab) {
-    Intent intent = new Intent(context, DialtactsActivity.class);
-    intent.setAction(ACTION_SHOW_TAB);
-    intent.putExtra(DialtactsActivity.EXTRA_SHOW_TAB, tab);
-    intent.setData(
-        new Uri.Builder()
-            .scheme("intent")
-            .authority(context.getPackageName())
-            .appendPath(TAG)
-            .appendQueryParameter(DialtactsActivity.EXTRA_SHOW_TAB, String.valueOf(tab))
-            .build());
-
-    return intent;
-  }
-
-  @Override
-  public boolean dispatchTouchEvent(MotionEvent ev) {
-    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
-      TouchPointManager.getInstance().setPoint((int) ev.getRawX(), (int) ev.getRawY());
-    }
-    return super.dispatchTouchEvent(ev);
-  }
-
-  @Override
-  protected void onCreate(Bundle savedInstanceState) {
-    Trace.beginSection(TAG + " onCreate");
-    LogUtil.enterBlock("DialtactsActivity.onCreate");
-    super.onCreate(savedInstanceState);
-
-    firstLaunch = true;
-    isLastTabEnabled =
-        ConfigProviderComponent.get(this).getConfigProvider().getBoolean("last_tab_enabled", false);
-
-    final Resources resources = getResources();
-    actionBarHeight = resources.getDimensionPixelSize(R.dimen.action_bar_height_large);
-
-    Trace.beginSection(TAG + " setContentView");
-    setContentView(R.layout.dialtacts_activity);
-    Trace.endSection();
-    getWindow().setBackgroundDrawable(null);
-
-    Trace.beginSection(TAG + " setup Views");
-    final ActionBar actionBar = getActionBarSafely();
-    actionBar.setCustomView(R.layout.search_edittext);
-    actionBar.setDisplayShowCustomEnabled(true);
-    actionBar.setBackgroundDrawable(null);
-
-    searchEditTextLayout = actionBar.getCustomView().findViewById(R.id.search_view_container);
-
-    actionBarController = new ActionBarController(this, searchEditTextLayout);
-
-    searchView = searchEditTextLayout.findViewById(R.id.search_view);
-    searchView.addTextChangedListener(phoneSearchQueryTextListener);
-    searchView.setHint(getSearchBoxHint());
-
-    voiceSearchButton = searchEditTextLayout.findViewById(R.id.voice_search_button);
-    searchEditTextLayout
-        .findViewById(R.id.search_box_collapsed)
-        .setOnClickListener(searchViewOnClickListener);
-    searchEditTextLayout
-        .findViewById(R.id.search_back_button)
-        .setOnClickListener(v -> exitSearchUi());
-
-    isLandscape =
-        getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
-    previouslySelectedTabIndex = DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL;
-    FloatingActionButton floatingActionButton = findViewById(R.id.floating_action_button);
-    floatingActionButton.setOnClickListener(this);
-    floatingActionButtonController = new FloatingActionButtonController(this, floatingActionButton);
-
-    ImageButton optionsMenuButton =
-        searchEditTextLayout.findViewById(R.id.dialtacts_options_menu_button);
-    optionsMenuButton.setOnClickListener(this);
-    overflowMenu = buildOptionsMenu(optionsMenuButton);
-    optionsMenuButton.setOnTouchListener(overflowMenu.getDragToOpenListener());
-
-    // Add the favorites fragment but only if savedInstanceState is null. Otherwise the
-    // fragment manager is responsible for recreating it.
-    if (savedInstanceState == null) {
-      getFragmentManager()
-          .beginTransaction()
-          .add(R.id.dialtacts_frame, new ListsFragment(), TAG_FAVORITES_FRAGMENT)
-          .commit();
-    } else {
-      searchQuery = savedInstanceState.getString(KEY_SEARCH_QUERY);
-      dialpadQuery = savedInstanceState.getString(KEY_DIALPAD_QUERY);
-      inRegularSearch = savedInstanceState.getBoolean(KEY_IN_REGULAR_SEARCH_UI);
-      inDialpadSearch = savedInstanceState.getBoolean(KEY_IN_DIALPAD_SEARCH_UI);
-      inNewSearch = savedInstanceState.getBoolean(KEY_IN_NEW_SEARCH_UI);
-      firstLaunch = savedInstanceState.getBoolean(KEY_FIRST_LAUNCH);
-      savedLanguageCode = savedInstanceState.getString(KEY_SAVED_LANGUAGE_CODE);
-      wasConfigurationChange = savedInstanceState.getBoolean(KEY_WAS_CONFIGURATION_CHANGE);
-      isDialpadShown = savedInstanceState.getBoolean(KEY_IS_DIALPAD_SHOWN);
-      floatingActionButtonController.setVisible(savedInstanceState.getBoolean(KEY_FAB_VISIBLE));
-      actionBarController.restoreInstanceState(savedInstanceState);
-    }
-
-    final boolean isLayoutRtl = ViewUtil.isRtl();
-    if (isLandscape) {
-      slideIn =
-          AnimationUtils.loadAnimation(
-              this, isLayoutRtl ? R.anim.dialpad_slide_in_left : R.anim.dialpad_slide_in_right);
-      slideOut =
-          AnimationUtils.loadAnimation(
-              this, isLayoutRtl ? R.anim.dialpad_slide_out_left : R.anim.dialpad_slide_out_right);
-    } else {
-      slideIn = AnimationUtils.loadAnimation(this, R.anim.dialpad_slide_in_bottom);
-      slideOut = AnimationUtils.loadAnimation(this, R.anim.dialpad_slide_out_bottom);
-    }
-
-    slideIn.setInterpolator(AnimUtils.EASE_IN);
-    slideOut.setInterpolator(AnimUtils.EASE_OUT);
-
-    slideIn.setAnimationListener(slideInListener);
-    slideOut.setAnimationListener(slideOutListener);
-
-    parentLayout = (CoordinatorLayout) findViewById(R.id.dialtacts_mainlayout);
-    parentLayout.setOnDragListener(new LayoutOnDragListener());
-    ViewUtil.doOnGlobalLayout(
-        floatingActionButton,
-        view -> {
-          int screenWidth = parentLayout.getWidth();
-          floatingActionButtonController.setScreenWidth(screenWidth);
-          floatingActionButtonController.align(getFabAlignment(), false /* animate */);
-        });
-
-    Trace.endSection();
-
-    Trace.beginSection(TAG + " initialize smart dialing");
-    dialerDatabaseHelper = Database.get(this).getDatabaseHelper(this);
-    SmartDialPrefix.initializeNanpSettings(this);
-    Trace.endSection();
-
-    Trace.endSection();
-
-    updateSearchFragmentPosition();
-  }
-
-  @NonNull
-  private ActionBar getActionBarSafely() {
-    return Assert.isNotNull(getSupportActionBar());
-  }
-
-  @Override
-  protected void onResume() {
-    LogUtil.enterBlock("DialtactsActivity.onResume");
-    Trace.beginSection(TAG + " onResume");
-    super.onResume();
-
-    // Some calls may not be recorded (eg. from quick contact),
-    // so we should restart recording after these calls. (Recorded call is stopped)
-    PostCall.restartPerformanceRecordingIfARecentCallExist(this);
-    if (!PerformanceReport.isRecording()) {
-      PerformanceReport.startRecording();
-    }
-
-    stateSaved = false;
-    if (firstLaunch) {
-      LogUtil.i("DialtactsActivity.onResume", "mFirstLaunch true, displaying fragment");
-      displayFragment(getIntent());
-    } else if (!phoneIsInUse() && inCallDialpadUp) {
-      LogUtil.i("DialtactsActivity.onResume", "phone not in use, hiding dialpad fragment");
-      hideDialpadFragment(false, true);
-      inCallDialpadUp = false;
-    } else if (isDialpadShown) {
-      LogUtil.i("DialtactsActivity.onResume", "showing dialpad on resume");
-      showDialpadFragment(false);
-    } else {
-      PostCall.promptUserForMessageIfNecessary(this, parentLayout);
-    }
-
-    // On M the fragment manager does not restore the hidden state of a fragment from
-    // savedInstanceState so it must be hidden again.
-    if (!isDialpadShown && dialpadFragment != null && !dialpadFragment.isHidden()) {
-      LogUtil.i(
-          "DialtactsActivity.onResume", "mDialpadFragment attached but not hidden, forcing hide");
-      getFragmentManager().beginTransaction().hide(dialpadFragment).commit();
-    }
-
-    // If there was a voice query result returned in the {@link #onActivityResult} callback, it
-    // will have been stashed in mVoiceSearchQuery since the search results fragment cannot be
-    // shown until onResume has completed.  Active the search UI and set the search term now.
-    if (!TextUtils.isEmpty(voiceSearchQuery)) {
-      actionBarController.onSearchBoxTapped();
-      searchView.setText(voiceSearchQuery);
-      voiceSearchQuery = null;
-    }
-
-    if (isRestarting) {
-      // This is only called when the activity goes from resumed -> paused -> resumed, so it
-      // will not cause an extra view to be sent out on rotation
-      if (isDialpadShown) {
-        Logger.get(this).logScreenView(ScreenEvent.Type.DIALPAD, this);
-      }
-      isRestarting = false;
-    }
-
-    prepareVoiceSearchButton();
-
-    // Start the thread that updates the smart dial database if
-    // (1) the activity is not recreated with a new configuration, or
-    // (2) the activity is recreated with a new configuration but the change is a language change.
-    boolean isLanguageChanged =
-        !LocaleUtils.getLocale(this).getISO3Language().equals(savedLanguageCode);
-    if (!wasConfigurationChange || isLanguageChanged) {
-      dialerDatabaseHelper.startSmartDialUpdateThread(/* forceUpdate = */ isLanguageChanged);
-    }
-
-    if (isDialpadShown) {
-      floatingActionButtonController.scaleOut();
-    } else {
-      floatingActionButtonController.align(getFabAlignment(), false /* animate */);
-    }
-
-    if (firstLaunch) {
-      // Only process the Intent the first time onResume() is called after receiving it
-      if (Calls.CONTENT_TYPE.equals(getIntent().getType())) {
-        // Externally specified extras take precedence to EXTRA_SHOW_TAB, which is only
-        // used internally.
-        final Bundle extras = getIntent().getExtras();
-        if (extras != null && extras.getInt(Calls.EXTRA_CALL_TYPE_FILTER) == Calls.VOICEMAIL_TYPE) {
-          listsFragment.showTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-          Logger.get(this).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CLICKED);
-        } else {
-          listsFragment.showTab(DialtactsPagerAdapter.TAB_INDEX_HISTORY);
-        }
-      } else if (getIntent().hasExtra(EXTRA_SHOW_TAB)) {
-        int index =
-            getIntent().getIntExtra(EXTRA_SHOW_TAB, DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
-        if (index < listsFragment.getTabCount()) {
-          // Hide dialpad since this is an explicit intent to show a specific tab, which is coming
-          // from missed call or voicemail notification.
-          hideDialpadFragment(false, false);
-          exitSearchUi();
-          listsFragment.showTab(index);
-        }
-      }
-
-      if (getIntent().getBooleanExtra(EXTRA_CLEAR_NEW_VOICEMAILS, false)) {
-        LogUtil.i("DialtactsActivity.onResume", "clearing all new voicemails");
-        CallLogNotificationsService.markAllNewVoicemailsAsOld(this);
-      }
-      // add 1 sec delay to get memory snapshot so that dialer wont react slowly on resume.
-      ThreadUtil.postDelayedOnUiThread(
-          () ->
-              MetricsComponent.get(this)
-                  .metrics()
-                  .recordMemory(Metrics.DIALTACTS_ON_RESUME_MEMORY_EVENT_NAME),
-          1000);
-    }
-
-    firstLaunch = false;
-
-    setSearchBoxHint();
-    timeTabSelected = SystemClock.elapsedRealtime();
-
-    Trace.endSection();
-  }
-
-  @Override
-  protected void onRestart() {
-    super.onRestart();
-    isRestarting = true;
-  }
-
-  @Override
-  protected void onPause() {
-    if (clearSearchOnPause) {
-      hideDialpadAndSearchUi();
-      clearSearchOnPause = false;
-    }
-    if (slideOut.hasStarted() && !slideOut.hasEnded()) {
-      commitDialpadFragmentHide();
-    }
-    super.onPause();
-  }
-
-  @Override
-  protected void onStop() {
-    super.onStop();
-    boolean timeoutElapsed =
-        SystemClock.elapsedRealtime() - timeTabSelected >= HISTORY_TAB_SEEN_TIMEOUT;
-    boolean isOnHistoryTab =
-        listsFragment.getCurrentTabIndex() == DialtactsPagerAdapter.TAB_INDEX_HISTORY;
-    if (isOnHistoryTab
-        && timeoutElapsed
-        && !isChangingConfigurations()
-        && !getSystemService(KeyguardManager.class).isKeyguardLocked()) {
-      listsFragment.markMissedCallsAsReadAndRemoveNotifications();
-    }
-    StorageComponent.get(this)
-        .unencryptedSharedPrefs()
-        .edit()
-        .putInt(KEY_LAST_TAB, listsFragment.getCurrentTabIndex())
-        .apply();
-  }
-
-  @Override
-  protected void onSaveInstanceState(Bundle outState) {
-    LogUtil.enterBlock("DialtactsActivity.onSaveInstanceState");
-    super.onSaveInstanceState(outState);
-    outState.putString(KEY_SEARCH_QUERY, searchQuery);
-    outState.putString(KEY_DIALPAD_QUERY, dialpadQuery);
-    outState.putString(KEY_SAVED_LANGUAGE_CODE, LocaleUtils.getLocale(this).getISO3Language());
-    outState.putBoolean(KEY_IN_REGULAR_SEARCH_UI, inRegularSearch);
-    outState.putBoolean(KEY_IN_DIALPAD_SEARCH_UI, inDialpadSearch);
-    outState.putBoolean(KEY_IN_NEW_SEARCH_UI, inNewSearch);
-    outState.putBoolean(KEY_FIRST_LAUNCH, firstLaunch);
-    outState.putBoolean(KEY_IS_DIALPAD_SHOWN, isDialpadShown);
-    outState.putBoolean(KEY_FAB_VISIBLE, floatingActionButtonController.isVisible());
-    outState.putBoolean(KEY_WAS_CONFIGURATION_CHANGE, isChangingConfigurations());
-    actionBarController.saveInstanceState(outState);
-    stateSaved = true;
-  }
-
-  @Override
-  public void onAttachFragment(final Fragment fragment) {
-    LogUtil.i("DialtactsActivity.onAttachFragment", "fragment: %s", fragment);
-    if (fragment instanceof DialpadFragment) {
-      dialpadFragment = (DialpadFragment) fragment;
-    } else if (fragment instanceof ListsFragment) {
-      listsFragment = (ListsFragment) fragment;
-      listsFragment.addOnPageChangeListener(this);
-    } else if (fragment instanceof NewSearchFragment) {
-      newSearchFragment = (NewSearchFragment) fragment;
-      updateSearchFragmentPosition();
-    }
-  }
-
-  protected void handleMenuSettings() {
-    final Intent intent = new Intent(this, DialerSettingsActivity.class);
-    startActivity(intent);
-  }
-
-  public boolean isListsFragmentVisible() {
-    return listsFragment.getUserVisibleHint();
-  }
-
-  @Override
-  public void onClick(View view) {
-    int resId = view.getId();
-    if (resId == R.id.floating_action_button) {
-      if (!isDialpadShown) {
-        LogUtil.i(
-            "DialtactsActivity.onClick", "floating action button clicked, going to show dialpad");
-        PerformanceReport.recordClick(UiAction.Type.OPEN_DIALPAD);
-        inCallDialpadUp = false;
-        showDialpadFragment(true);
-        PostCall.closePrompt();
-      } else {
-        LogUtil.i(
-            "DialtactsActivity.onClick",
-            "floating action button clicked, but dialpad is already showing");
-      }
-    } else if (resId == R.id.voice_search_button) {
-      try {
-        startActivityForResult(
-            new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH),
-            ActivityRequestCodes.DIALTACTS_VOICE_SEARCH);
-      } catch (ActivityNotFoundException e) {
-        Toast.makeText(
-                DialtactsActivity.this, R.string.voice_search_not_available, Toast.LENGTH_SHORT)
-            .show();
-      }
-    } else if (resId == R.id.dialtacts_options_menu_button) {
-      overflowMenu.show();
-    } else {
-      Assert.fail("Unexpected onClick event from " + view);
-    }
-  }
-
-  @Override
-  public boolean onMenuItemClick(MenuItem item) {
-    if (!isSafeToCommitTransactions()) {
-      return true;
-    }
-
-    int resId = item.getItemId();
-    if (resId == R.id.menu_history) {
-      PerformanceReport.recordClick(UiAction.Type.OPEN_CALL_HISTORY);
-      final Intent intent = new Intent(this, CallLogActivity.class);
-      startActivity(intent);
-    } else if (resId == R.id.menu_clear_frequents) {
-      ClearFrequentsDialog.show(getFragmentManager());
-      Logger.get(this).logScreenView(ScreenEvent.Type.CLEAR_FREQUENTS, this);
-      return true;
-    } else if (resId == R.id.menu_call_settings) {
-      handleMenuSettings();
-      Logger.get(this).logScreenView(ScreenEvent.Type.SETTINGS, this);
-      return true;
-    }
-    return false;
-  }
-
-  @Override
-  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-    LogUtil.i(
-        "DialtactsActivity.onActivityResult",
-        "requestCode:%d, resultCode:%d",
-        requestCode,
-        resultCode);
-    if (requestCode == ActivityRequestCodes.DIALTACTS_VOICE_SEARCH) {
-      if (resultCode == RESULT_OK) {
-        final ArrayList<String> matches =
-            data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
-        if (matches.size() > 0) {
-          voiceSearchQuery = matches.get(0);
-        } else {
-          LogUtil.i("DialtactsActivity.onActivityResult", "voice search - nothing heard");
-        }
-      } else {
-        LogUtil.e("DialtactsActivity.onActivityResult", "voice search failed");
-      }
-    } else if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_COMPOSER) {
-      if (resultCode == RESULT_FIRST_USER) {
-        LogUtil.i(
-            "DialtactsActivity.onActivityResult", "returned from call composer, error occurred");
-        String message =
-            getString(
-                R.string.call_composer_connection_failed,
-                data.getStringExtra(CallComposerActivity.KEY_CONTACT_NAME));
-        Snackbar.make(parentLayout, message, Snackbar.LENGTH_LONG).show();
-      } else {
-        LogUtil.i("DialtactsActivity.onActivityResult", "returned from call composer, no error");
-      }
-    } else if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_DETAILS) {
-      if (resultCode == RESULT_OK
-          && data != null
-          && data.getBooleanExtra(OldCallDetailsActivity.EXTRA_HAS_ENRICHED_CALL_DATA, false)) {
-        String number = data.getStringExtra(OldCallDetailsActivity.EXTRA_PHONE_NUMBER);
-        int snackbarDurationMillis = 5_000;
-        Snackbar.make(parentLayout, getString(R.string.ec_data_deleted), snackbarDurationMillis)
-            .setAction(
-                R.string.view_conversation,
-                v -> startActivity(IntentProvider.getSendSmsIntentProvider(number).getIntent(this)))
-            .setActionTextColor(getResources().getColor(R.color.dialer_snackbar_action_text_color))
-            .show();
-      }
-    } else if (requestCode == ActivityRequestCodes.DIALTACTS_DUO) {
-      // We just returned from starting Duo for a task. Reload our reachability data since it
-      // may have changed after a user finished activating Duo.
-      DuoComponent.get(this).getDuo().reloadReachability(this);
-    }
-    super.onActivityResult(requestCode, resultCode, data);
-  }
-
-  /**
-   * Update the number of unread voicemails (potentially other tabs) displayed next to the tab icon.
-   */
-  public void updateTabUnreadCounts() {
-    listsFragment.updateTabUnreadCounts();
-  }
-
-  /**
-   * Initiates a fragment transaction to show the dialpad fragment. Animations and other visual
-   * updates are handled by a callback which is invoked after the dialpad fragment is shown.
-   *
-   * @see #onDialpadShown
-   */
-  private void showDialpadFragment(boolean animate) {
-    LogUtil.i("DialtactActivity.showDialpadFragment", "animate: %b", animate);
-    if (isDialpadShown) {
-      LogUtil.i("DialtactsActivity.showDialpadFragment", "dialpad already shown");
-      return;
-    }
-    if (stateSaved) {
-      LogUtil.i("DialtactsActivity.showDialpadFragment", "state already saved");
-      return;
-    }
-    isDialpadShown = true;
-
-    listsFragment.setUserVisibleHint(false);
-
-    final FragmentTransaction ft = getFragmentManager().beginTransaction();
-    if (dialpadFragment == null) {
-      dialpadFragment = new DialpadFragment();
-      ft.add(R.id.dialtacts_container, dialpadFragment, TAG_DIALPAD_FRAGMENT);
-    } else {
-      ft.show(dialpadFragment);
-    }
-
-    dialpadFragment.setAnimate(animate);
-    Logger.get(this).logScreenView(ScreenEvent.Type.DIALPAD, this);
-    ft.commit();
-
-    if (animate) {
-      floatingActionButtonController.scaleOut();
-      maybeEnterSearchUi();
-    } else {
-      floatingActionButtonController.scaleOut();
-      maybeEnterSearchUi();
-    }
-    actionBarController.onDialpadUp();
-
-    Assert.isNotNull(listsFragment.getView()).animate().alpha(0).withLayer();
-
-    // adjust the title, so the user will know where we're at when the activity start/resumes.
-    setTitle(R.string.launcherDialpadActivityLabel);
-  }
-
-  @Override
-  public void getLastOutgoingCall(LastOutgoingCallCallback callback) {
-    DialerExecutorComponent.get(this)
-        .dialerExecutorFactory()
-        .createUiTaskBuilder(
-            getFragmentManager(), "Query last phone number", Calls::getLastOutgoingCall)
-        .onSuccess(output -> callback.lastOutgoingCall(output))
-        .build()
-        .executeParallel(this);
-  }
-
-  /** Callback from child DialpadFragment when the dialpad is shown. */
-  @Override
-  public void onDialpadShown() {
-    LogUtil.enterBlock("DialtactsActivity.onDialpadShown");
-    Assert.isNotNull(dialpadFragment);
-    if (dialpadFragment.getAnimate()) {
-      Assert.isNotNull(dialpadFragment.getView()).startAnimation(slideIn);
-    } else {
-      dialpadFragment.setYFraction(0);
-    }
-
-    updateSearchFragmentPosition();
-  }
-
-  @Override
-  public void onCallPlacedFromDialpad() {
-    clearSearchOnPause = true;
-  }
-
-  @Override
-  public void onContactsListScrolled(boolean isDragging) {
-    // intentionally empty.
-  }
-
-  /**
-   * Initiates animations and other visual updates to hide the dialpad. The fragment is hidden in a
-   * callback after the hide animation ends.
-   *
-   * @see #commitDialpadFragmentHide
-   */
-  private void hideDialpadFragment(boolean animate, boolean clearDialpad) {
-    LogUtil.enterBlock("DialtactsActivity.hideDialpadFragment");
-    if (dialpadFragment == null || dialpadFragment.getView() == null) {
-      return;
-    }
-    if (clearDialpad) {
-      // Temporarily disable accessibility when we clear the dialpad, since it should be
-      // invisible and should not announce anything.
-      dialpadFragment
-          .getDigitsWidget()
-          .setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
-      dialpadFragment.clearDialpad();
-      dialpadFragment
-          .getDigitsWidget()
-          .setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
-    }
-    if (!isDialpadShown) {
-      return;
-    }
-    isDialpadShown = false;
-    dialpadFragment.setAnimate(animate);
-    listsFragment.setUserVisibleHint(true);
-    listsFragment.sendScreenViewForCurrentPosition();
-
-    updateSearchFragmentPosition();
-
-    floatingActionButtonController.align(getFabAlignment(), animate);
-    if (animate) {
-      dialpadFragment.getView().startAnimation(slideOut);
-    } else {
-      commitDialpadFragmentHide();
-    }
-
-    actionBarController.onDialpadDown();
-
-    // reset the title to normal.
-    setTitle(R.string.launcherActivityLabel);
-  }
-
-  /** Finishes hiding the dialpad fragment after any animations are completed. */
-  private void commitDialpadFragmentHide() {
-    if (!stateSaved && dialpadFragment != null && !dialpadFragment.isHidden() && !isDestroyed()) {
-      final FragmentTransaction ft = getFragmentManager().beginTransaction();
-      ft.hide(dialpadFragment);
-      ft.commit();
-    }
-    floatingActionButtonController.scaleIn();
-  }
-
-  private void updateSearchFragmentPosition() {
-    if (newSearchFragment != null) {
-      int animationDuration = getResources().getInteger(R.integer.dialpad_slide_in_duration);
-      int actionbarHeight = getResources().getDimensionPixelSize(R.dimen.action_bar_height_large);
-      int shadowHeight = getResources().getDrawable(R.drawable.search_shadow).getIntrinsicHeight();
-      int start = isDialpadShown() ? actionbarHeight - shadowHeight : 0;
-      int end = isDialpadShown() ? 0 : actionbarHeight - shadowHeight;
-      newSearchFragment.animatePosition(start, end, animationDuration);
-    }
-  }
-
-  @Override
-  public boolean isInSearchUi() {
-    return inDialpadSearch || inRegularSearch || inNewSearch;
-  }
-
-  @Override
-  public boolean hasSearchQuery() {
-    return !TextUtils.isEmpty(searchQuery);
-  }
-
-  private void setNotInSearchUi() {
-    inDialpadSearch = false;
-    inRegularSearch = false;
-    inNewSearch = false;
-  }
-
-  private void hideDialpadAndSearchUi() {
-    if (isDialpadShown) {
-      hideDialpadFragment(false, true);
-    }
-    exitSearchUi();
-  }
-
-  private void prepareVoiceSearchButton() {
-    searchEditTextLayout.setVoiceSearchEnabled(isVoiceSearchEnabled());
-    voiceSearchButton.setOnClickListener(this);
-  }
-
-  private boolean isVoiceSearchEnabled() {
-    if (voiceSearchEnabledForTest.isPresent()) {
-      return voiceSearchEnabledForTest.get();
-    }
-    return canIntentBeHandled(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH));
-  }
-
-  public boolean isNearbyPlacesSearchEnabled() {
-    return false;
-  }
-
-  protected int getSearchBoxHint() {
-    return R.string.dialer_hint_find_contact;
-  }
-
-  /** Sets the hint text for the contacts search box */
-  private void setSearchBoxHint() {
-    ((TextView) searchEditTextLayout.findViewById(R.id.search_box_start_search))
-        .setHint(getSearchBoxHint());
-  }
-
-  protected OptionsPopupMenu buildOptionsMenu(View invoker) {
-    final OptionsPopupMenu popupMenu = new OptionsPopupMenu(this, invoker);
-    popupMenu.inflate(R.menu.dialtacts_options);
-    popupMenu.setOnMenuItemClickListener(this);
-    return popupMenu;
-  }
-
-  @Override
-  public boolean onCreateOptionsMenu(Menu menu) {
-    if (pendingSearchViewQuery != null) {
-      searchView.setText(pendingSearchViewQuery);
-      pendingSearchViewQuery = null;
-    }
-    if (actionBarController != null) {
-      actionBarController.restoreActionBarOffset();
-    }
-    return false;
-  }
-
-  /**
-   * Returns true if the intent is due to hitting the green send key (hardware call button:
-   * KEYCODE_CALL) while in a call.
-   *
-   * @param intent the intent that launched this activity
-   * @return true if the intent is due to hitting the green send key while in a call
-   */
-  private boolean isSendKeyWhileInCall(Intent intent) {
-    // If there is a call in progress and the user launched the dialer by hitting the call
-    // button, go straight to the in-call screen.
-    final boolean callKey = Intent.ACTION_CALL_BUTTON.equals(intent.getAction());
-
-    // When KEYCODE_CALL event is handled it dispatches an intent with the ACTION_CALL_BUTTON.
-    // Besides of checking the intent action, we must check if the phone is really during a
-    // call in order to decide whether to ignore the event or continue to display the activity.
-    if (callKey && phoneIsInUse()) {
-      TelecomUtil.showInCallScreen(this, false);
-      return true;
-    }
-
-    return false;
-  }
-
-  /**
-   * Sets the current tab based on the intent's request type
-   *
-   * @param intent Intent that contains information about which tab should be selected
-   */
-  private void displayFragment(Intent intent) {
-    // If we got here by hitting send and we're in call forward along to the in-call activity
-    if (isSendKeyWhileInCall(intent)) {
-      finish();
-      return;
-    }
-
-    boolean showDialpadChooser =
-        !ACTION_SHOW_TAB.equals(intent.getAction())
-            && phoneIsInUse()
-            && !DialpadFragment.isAddCallMode(intent);
-    boolean isDialIntent = intent.getData() != null && isDialIntent(intent);
-    boolean isAddCallIntent = DialpadFragment.isAddCallMode(intent);
-    if (showDialpadChooser || isDialIntent || isAddCallIntent) {
-      LogUtil.i(
-          "DialtactsActivity.displayFragment",
-          "show dialpad fragment (showDialpadChooser: %b, isDialIntent: %b, isAddCallIntent: %b)",
-          showDialpadChooser,
-          isDialIntent,
-          isAddCallIntent);
-      showDialpadFragment(false);
-      dialpadFragment.setStartedFromNewIntent(true);
-      if (showDialpadChooser && !dialpadFragment.isVisible()) {
-        inCallDialpadUp = true;
-      }
-    } else if (isLastTabEnabled) {
-      @TabIndex
-      int tabIndex =
-          StorageComponent.get(this)
-              .unencryptedSharedPrefs()
-              .getInt(KEY_LAST_TAB, DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
-      // If voicemail tab is saved and its availability changes, we still move to the voicemail tab
-      // but it is quickly removed and shown the contacts tab.
-      if (listsFragment != null) {
-        listsFragment.showTab(tabIndex);
-        PerformanceReport.setStartingTabIndex(tabIndex);
-      } else {
-        PerformanceReport.setStartingTabIndex(DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
-      }
-    }
-  }
-
-  @Override
-  public void onNewIntent(Intent newIntent) {
-    LogUtil.enterBlock("DialtactsActivity.onNewIntent");
-    setIntent(newIntent);
-    firstLaunch = true;
-
-    stateSaved = false;
-    displayFragment(newIntent);
-
-    invalidateOptionsMenu();
-  }
-
-  /** Returns true if the given intent contains a phone number to populate the dialer with */
-  private boolean isDialIntent(Intent intent) {
-    final String action = intent.getAction();
-    if (Intent.ACTION_DIAL.equals(action) || ACTION_TOUCH_DIALER.equals(action)) {
-      return true;
-    }
-    if (Intent.ACTION_VIEW.equals(action)) {
-      final Uri data = intent.getData();
-      if (data != null && PhoneAccount.SCHEME_TEL.equals(data.getScheme())) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  /** Shows the search fragment */
-  private void enterSearchUi(boolean smartDialSearch, String query, boolean animate) {
-    LogUtil.i("DialtactsActivity.enterSearchUi", "smart dial: %b", smartDialSearch);
-    if (stateSaved || getFragmentManager().isDestroyed()) {
-      // Weird race condition where fragment is doing work after the activity is destroyed
-      // due to talkback being on (a bug). Just return since we can't do any
-      // constructive here.
-      LogUtil.i(
-          "DialtactsActivity.enterSearchUi",
-          "not entering search UI (mStateSaved: %b, isDestroyed: %b)",
-          stateSaved,
-          getFragmentManager().isDestroyed());
-      return;
-    }
-
-    FragmentTransaction transaction = getFragmentManager().beginTransaction();
-    String tag = TAG_NEW_SEARCH_FRAGMENT;
-    inNewSearch = true;
-
-    floatingActionButtonController.scaleOut();
-
-    if (animate) {
-      transaction.setCustomAnimations(android.R.animator.fade_in, 0);
-    } else {
-      transaction.setTransition(FragmentTransaction.TRANSIT_NONE);
-    }
-
-    NewSearchFragment fragment = (NewSearchFragment) getFragmentManager().findFragmentByTag(tag);
-    if (fragment == null) {
-      fragment = NewSearchFragment.newInstance();
-      transaction.add(R.id.dialtacts_frame, fragment, tag);
-    } else {
-      transaction.show(fragment);
-    }
-
-    // DialtactsActivity will provide the options menu
-    fragment.setHasOptionsMenu(false);
-    fragment.setQuery(query, getCallInitiationType());
-    transaction.commit();
-
-    if (animate) {
-      Assert.isNotNull(listsFragment.getView()).animate().alpha(0).withLayer();
-    }
-    listsFragment.setUserVisibleHint(false);
-  }
-
-  /** Hides the search fragment */
-  private void exitSearchUi() {
-    LogUtil.enterBlock("DialtactsActivity.exitSearchUi");
-
-    // See related bug in enterSearchUI();
-    if (getFragmentManager().isDestroyed() || stateSaved) {
-      return;
-    }
-
-    searchView.setText(null);
-
-    if (dialpadFragment != null) {
-      dialpadFragment.clearDialpad();
-    }
-
-    setNotInSearchUi();
-
-    // There are four states the fab can be in:
-    //   - Not visible and should remain not visible (do nothing)
-    //   - Not visible (move then show the fab)
-    //   - Visible, in the correct position (do nothing)
-    //   - Visible, in the wrong position (hide, move, then show the fab)
-    if (floatingActionButtonController.isVisible()
-        && getFabAlignment() != FloatingActionButtonController.ALIGN_END) {
-      floatingActionButtonController.scaleOut(
-          new OnVisibilityChangedListener() {
-            @Override
-            public void onHidden(FloatingActionButton floatingActionButton) {
-              super.onHidden(floatingActionButton);
-              onPageScrolled(
-                  listsFragment.getCurrentTabIndex(), 0 /* offset */, 0 /* pixelOffset */);
-              floatingActionButtonController.scaleIn();
-            }
-          });
-    } else if (!floatingActionButtonController.isVisible() && listsFragment.shouldShowFab()) {
-      onPageScrolled(listsFragment.getCurrentTabIndex(), 0 /* offset */, 0 /* pixelOffset */);
-      ThreadUtil.getUiThreadHandler()
-          .postDelayed(() -> floatingActionButtonController.scaleIn(), FAB_SCALE_IN_DELAY_MS);
-    }
-
-    final FragmentTransaction transaction = getFragmentManager().beginTransaction();
-    if (newSearchFragment != null) {
-      transaction.remove(newSearchFragment);
-    }
-    transaction.commit();
-
-    Assert.isNotNull(listsFragment.getView()).animate().alpha(1).withLayer();
-
-    if (dialpadFragment == null || !dialpadFragment.isVisible()) {
-      // If the dialpad fragment wasn't previously visible, then send a screen view because
-      // we are exiting regular search. Otherwise, the screen view will be sent by
-      // {@link #hideDialpadFragment}.
-      listsFragment.sendScreenViewForCurrentPosition();
-      listsFragment.setUserVisibleHint(true);
-    }
-    onPageSelected(listsFragment.getCurrentTabIndex());
-
-    actionBarController.onSearchUiExited();
-  }
-
-  @Override
-  public void onBackPressed() {
-    PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON);
-
-    if (stateSaved) {
-      return;
-    }
-    if (isDialpadShown) {
-      hideDialpadFragment(true, false);
-      if (TextUtils.isEmpty(dialpadQuery)) {
-        exitSearchUi();
-      }
-    } else if (isInSearchUi()) {
-      if (isKeyboardOpen) {
-        DialerUtils.hideInputMethod(parentLayout);
-        PerformanceReport.recordClick(UiAction.Type.HIDE_KEYBOARD_IN_SEARCH);
-      } else {
-        exitSearchUi();
-      }
-    } else {
-      super.onBackPressed();
-    }
-  }
-
-  @Override
-  public void onConfigurationChanged(Configuration configuration) {
-    super.onConfigurationChanged(configuration);
-    // Checks whether a hardware keyboard is available
-    if (configuration.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
-      isKeyboardOpen = true;
-    } else if (configuration.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) {
-      isKeyboardOpen = false;
-    }
-  }
-
-  private void maybeEnterSearchUi() {
-    if (!isInSearchUi()) {
-      enterSearchUi(true /* isSmartDial */, searchQuery, false);
-    }
-  }
-
-  @Override
-  public void onDialpadQueryChanged(String query) {
-    dialpadQuery = query;
-    if (newSearchFragment != null) {
-      newSearchFragment.setRawNumber(query);
-    }
-    final String normalizedQuery =
-        SmartDialNameMatcher.normalizeNumber(/* context = */ this, query);
-
-    if (!TextUtils.equals(searchView.getText(), normalizedQuery)) {
-      if (DEBUG) {
-        LogUtil.v("DialtactsActivity.onDialpadQueryChanged", "new query: " + query);
-      }
-      if (dialpadFragment == null || !dialpadFragment.isVisible()) {
-        // This callback can happen if the dialpad fragment is recreated because of
-        // activity destruction. In that case, don't update the search view because
-        // that would bring the user back to the search fragment regardless of the
-        // previous state of the application. Instead, just return here and let the
-        // fragment manager correctly figure out whatever fragment was last displayed.
-        if (!TextUtils.isEmpty(normalizedQuery)) {
-          pendingSearchViewQuery = normalizedQuery;
-        }
-        return;
-      }
-      searchView.setText(normalizedQuery);
-    }
-
-    try {
-      if (dialpadFragment != null && dialpadFragment.isVisible()) {
-        dialpadFragment.process_quote_emergency_unquote(normalizedQuery);
-      }
-    } catch (Exception ignored) {
-      // Skip any exceptions for this piece of code
-    }
-  }
-
-  @Override
-  public boolean onDialpadSpacerTouchWithEmptyQuery() {
-    return false;
-  }
-
-  @Override
-  public boolean shouldShowDialpadChooser() {
-    // Show the dialpad chooser if we're in a call
-    return true;
-  }
-
-  @Override
-  public void onSearchListTouch() {
-    if (isDialpadShown) {
-      PerformanceReport.recordClick(UiAction.Type.CLOSE_DIALPAD);
-      hideDialpadFragment(true, false);
-      if (TextUtils.isEmpty(dialpadQuery)) {
-        exitSearchUi();
-      }
-    } else {
-      UiUtil.hideKeyboardFrom(this, searchEditTextLayout);
-    }
-  }
-
-  @Override
-  public void onListFragmentScrollStateChange(int scrollState) {
-    PerformanceReport.recordScrollStateChange(scrollState);
-    if (scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
-      hideDialpadFragment(true, false);
-      DialerUtils.hideInputMethod(parentLayout);
-    }
-  }
-
-  @Override
-  public void onListFragmentScroll(int firstVisibleItem, int visibleItemCount, int totalItemCount) {
-    // TODO: No-op for now. This should eventually show/hide the actionBar based on
-    // interactions with the ListsFragments.
-  }
-
-  private boolean phoneIsInUse() {
-    return TelecomUtil.isInManagedCall(this);
-  }
-
-  private boolean canIntentBeHandled(Intent intent) {
-    final PackageManager packageManager = getPackageManager();
-    final List<ResolveInfo> resolveInfo =
-        packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
-    return resolveInfo != null && resolveInfo.size() > 0;
-  }
-
-  /** Called when the user has long-pressed a contact tile to start a drag operation. */
-  @Override
-  public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
-    listsFragment.showRemoveView(true);
-  }
-
-  @Override
-  public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view) {}
-
-  /** Called when the user has released a contact tile after long-pressing it. */
-  @Override
-  public void onDragFinished(int x, int y) {
-    listsFragment.showRemoveView(false);
-  }
-
-  @Override
-  public void onDroppedOnRemove() {}
-
-  @Override
-  public ImageView getDragShadowOverlay() {
-    return findViewById(R.id.contact_tile_drag_shadow_overlay);
-  }
-
-  @Override
-  public void setHasFrequents(boolean hasFrequents) {
-    // No-op
-  }
-
-  /**
-   * Allows the SpeedDialFragment to attach the drag controller to mRemoveViewContainer once it has
-   * been attached to the activity.
-   */
-  @Override
-  public void setDragDropController(DragDropController dragController) {
-    dragDropController = dragController;
-    listsFragment.getRemoveView().setDragDropController(dragController);
-  }
-
-  /** Implemented to satisfy {@link OldSpeedDialFragment.HostInterface} */
-  @Override
-  public void showAllContactsTab() {
-    if (listsFragment != null) {
-      listsFragment.showTab(DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS);
-    }
-  }
-
-  /** Implemented to satisfy {@link CallLogFragment.HostInterface} */
-  @Override
-  public void showDialpad() {
-    showDialpadFragment(true);
-  }
-
-  @Override
-  public void enableFloatingButton(boolean enabled) {
-    LogUtil.d("DialtactsActivity.enableFloatingButton", "enable: %b", enabled);
-    // Floating button shouldn't be enabled when dialpad is shown.
-    if (!isDialpadShown() || !enabled) {
-      floatingActionButtonController.setVisible(enabled);
-    }
-  }
-
-  @Override
-  public void onPickDataUri(
-      Uri dataUri, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
-    clearSearchOnPause = true;
-    PhoneNumberInteraction.startInteractionForPhoneCall(
-        DialtactsActivity.this, dataUri, isVideoCall, callSpecificAppData);
-  }
-
-  @Override
-  public void onPickPhoneNumber(
-      String phoneNumber, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
-    if (phoneNumber == null) {
-      // Invalid phone number, but let the call go through so that InCallUI can show
-      // an error message.
-      phoneNumber = "";
-    }
-    PreCall.start(
-        this,
-        new CallIntentBuilder(phoneNumber, callSpecificAppData)
-            .setIsVideoCall(isVideoCall)
-            .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing()));
-
-    clearSearchOnPause = true;
-  }
-
-  @Override
-  public void onHomeInActionBarSelected() {
-    exitSearchUi();
-  }
-
-  @Override
-  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-    // FAB does not move with the new favorites UI
-    if (newFavoritesIsEnabled()) {
-      return;
-    }
-    int tabIndex = listsFragment.getCurrentTabIndex();
-
-    // Scroll the button from center to end when moving from the Speed Dial to Call History tab.
-    // In RTL, scroll when the current tab is Call History instead, since the order of the tabs
-    // is reversed and the ViewPager returns the left tab position during scroll.
-    boolean isRtl = ViewUtil.isRtl();
-    if (!isRtl && tabIndex == DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL && !isLandscape) {
-      floatingActionButtonController.onPageScrolled(positionOffset);
-    } else if (isRtl && tabIndex == DialtactsPagerAdapter.TAB_INDEX_HISTORY && !isLandscape) {
-      floatingActionButtonController.onPageScrolled(1 - positionOffset);
-    } else if (tabIndex != DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL) {
-      floatingActionButtonController.onPageScrolled(1);
-    }
-  }
-
-  @Override
-  public void onPageSelected(int position) {
-    updateMissedCalls();
-    int tabIndex = listsFragment.getCurrentTabIndex();
-    if (tabIndex != previouslySelectedTabIndex) {
-      floatingActionButtonController.scaleIn();
-    }
-    LogUtil.i("DialtactsActivity.onPageSelected", "tabIndex: %d", tabIndex);
-    previouslySelectedTabIndex = tabIndex;
-    timeTabSelected = SystemClock.elapsedRealtime();
-  }
-
-  @Override
-  public void onPageScrollStateChanged(int state) {}
-
-  public boolean isActionBarShowing() {
-    return actionBarController.isActionBarShowing();
-  }
-
-  public boolean isDialpadShown() {
-    return isDialpadShown;
-  }
-
-  @Override
-  public void setActionBarHideOffset(int offset) {
-    getActionBarSafely().setHideOffset(offset);
-  }
-
-  @Override
-  public int getActionBarHeight() {
-    return actionBarHeight;
-  }
-
-  @VisibleForTesting
-  public int getFabAlignment() {
-    if (!newFavoritesIsEnabled()
-        && !isLandscape
-        && !isInSearchUi()
-        && listsFragment.getCurrentTabIndex() == DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL) {
-      return FloatingActionButtonController.ALIGN_MIDDLE;
-    }
-    return FloatingActionButtonController.ALIGN_END;
-  }
-
-  private void updateMissedCalls() {
-    if (previouslySelectedTabIndex == DialtactsPagerAdapter.TAB_INDEX_HISTORY) {
-      listsFragment.markMissedCallsAsReadAndRemoveNotifications();
-    }
-  }
-
-  @Override
-  public void onDisambigDialogDismissed() {
-    // Don't do anything; the app will remain open with favorites tiles displayed.
-  }
-
-  @Override
-  public void interactionError(@InteractionErrorCode int interactionErrorCode) {
-    switch (interactionErrorCode) {
-      case InteractionErrorCode.USER_LEAVING_ACTIVITY:
-        // This is expected to happen if the user exits the activity before the interaction occurs.
-        return;
-      case InteractionErrorCode.CONTACT_NOT_FOUND:
-      case InteractionErrorCode.CONTACT_HAS_NO_NUMBER:
-      case InteractionErrorCode.OTHER_ERROR:
-      default:
-        // All other error codes are unexpected. For example, it should be impossible to start an
-        // interaction with an invalid contact from the Dialtacts activity.
-        Assert.fail("PhoneNumberInteraction error: " + interactionErrorCode);
-    }
-  }
-
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, String[] permissions, int[] grantResults) {
-    // This should never happen; it should be impossible to start an interaction without the
-    // contacts permission from the Dialtacts activity.
-    Assert.fail(
-        String.format(
-            Locale.US,
-            "Permissions requested unexpectedly: %d/%s/%s",
-            requestCode,
-            Arrays.toString(permissions),
-            Arrays.toString(grantResults)));
-  }
-
-  @Override
-  public void onActionModeStateChanged(ActionMode mode, boolean isEnabled) {
-    isMultiSelectModeEnabled = isEnabled;
-  }
-
-  @Override
-  public boolean isActionModeStateEnabled() {
-    return isMultiSelectModeEnabled;
-  }
-
-  private CallInitiationType.Type getCallInitiationType() {
-    return isDialpadShown
-        ? CallInitiationType.Type.DIALPAD
-        : CallInitiationType.Type.REGULAR_SEARCH;
-  }
-
-  @Override
-  public void onCallPlacedFromSearch() {
-    DialerUtils.hideInputMethod(parentLayout);
-    clearSearchOnPause = true;
-  }
-
-  @Override
-  public void requestingPermission() {}
-
-  protected int getPreviouslySelectedTabIndex() {
-    return previouslySelectedTabIndex;
-  }
-
-  @Override
-  public void onContactSelected(ImageView photo, Uri contactUri, long contactId) {
-    Logger.get(this)
-        .logInteraction(InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_ITEM);
-    QuickContact.showQuickContact(
-        this, photo, contactUri, QuickContact.MODE_LARGE, null /* excludeMimes */);
-  }
-
-  /** Popup menu accessible from the search bar */
-  protected class OptionsPopupMenu extends PopupMenu {
-
-    public OptionsPopupMenu(Context context, View anchor) {
-      super(context, anchor, Gravity.END);
-    }
-
-    @Override
-    public void show() {
-      Menu menu = getMenu();
-      MenuItem clearFrequents = menu.findItem(R.id.menu_clear_frequents);
-      clearFrequents.setVisible(
-          PermissionsUtil.hasContactsReadPermissions(DialtactsActivity.this)
-              && listsFragment != null
-              && listsFragment.hasFrequents());
-
-      menu.findItem(R.id.menu_history)
-          .setVisible(PermissionsUtil.hasPhonePermissions(DialtactsActivity.this));
-
-      Context context = DialtactsActivity.this.getApplicationContext();
-      MenuItem simulatorMenuItem = menu.findItem(R.id.menu_simulator_submenu);
-      Simulator simulator = SimulatorComponent.get(context).getSimulator();
-      if (simulator.shouldShow()) {
-        simulatorMenuItem.setVisible(true);
-        simulatorMenuItem.setActionProvider(simulator.getActionProvider(DialtactsActivity.this));
-      } else {
-        simulatorMenuItem.setVisible(false);
-      }
-      super.show();
-    }
-  }
-
-  /**
-   * Listener that listens to drag events and sends their x and y coordinates to a {@link
-   * DragDropController}.
-   */
-  private class LayoutOnDragListener implements OnDragListener {
-
-    @Override
-    public boolean onDrag(View v, DragEvent event) {
-      if (event.getAction() == DragEvent.ACTION_DRAG_LOCATION) {
-        dragDropController.handleDragHovered(v, (int) event.getX(), (int) event.getY());
-      }
-      return true;
-    }
-  }
-
-  @VisibleForTesting
-  static void setVoiceSearchEnabledForTest(Optional<Boolean> enabled) {
-    voiceSearchEnabledForTest = enabled;
-  }
-
-  private boolean newFavoritesIsEnabled() {
-    return ConfigProviderComponent.get(this)
-        .getConfigProvider()
-        .getBoolean("enable_new_favorites_tab", false);
-  }
-}
diff --git a/java/com/android/dialer/app/MainComponent.java b/java/com/android/dialer/app/MainComponent.java
index 1d3a4ce..c076cbc 100644
--- a/java/com/android/dialer/app/MainComponent.java
+++ b/java/com/android/dialer/app/MainComponent.java
@@ -59,6 +59,6 @@
   }
 
   private static String getComponentName() {
-    return "com.android.dialer.app.DialtactsActivity";
+    return "com.android.dialer.main.impl.MainActivity";
   }
 }
diff --git a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
index 865cb81..b91d164 100644
--- a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
+++ b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,23 +18,19 @@
 package com.android.dialer.app.calllog;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v4.app.FragmentManager;
-import android.support.v7.widget.RecyclerView;
+import android.provider.BlockedNumberContract;
 import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.FragmentManager;
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
 import com.android.dialer.blockreportspam.BlockReportSpamDialogs;
 import com.android.dialer.blockreportspam.BlockReportSpamDialogs.DialogFragmentForReportingNotSpam;
 import com.android.dialer.blockreportspam.BlockReportSpamDialogs.DialogFragmentForUnblockingNumberAndReportingAsNotSpam;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.logging.ContactSource;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ReportingLocation;
-import com.android.dialer.spam.Spam;
-import com.android.dialer.spam.SpamComponent;
-import com.android.dialer.spam.SpamSettings;
-import com.android.dialer.spam.promo.SpamBlockingPromoHelper;
 
 /** Listener to show dialogs for block and report spam actions. */
 public class BlockReportSpamListener implements CallLogListItemViewHolder.OnClickListener {
@@ -43,9 +40,6 @@
   private final FragmentManager fragmentManager;
   private final RecyclerView.Adapter adapter;
   private final FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
-  private final Spam spam;
-  private final SpamSettings spamSettings;
-  private final SpamBlockingPromoHelper spamBlockingPromoHelper;
 
   public BlockReportSpamListener(
       Context context,
@@ -58,9 +52,6 @@
     this.fragmentManager = fragmentManager;
     this.adapter = adapter;
     this.filteredNumberAsyncQueryHandler = filteredNumberAsyncQueryHandler;
-    spam = SpamComponent.get(context).spam();
-    spamSettings = SpamComponent.get(context).spamSettings();
-    spamBlockingPromoHelper = new SpamBlockingPromoHelper(context, spamSettings);
   }
 
   @Override
@@ -72,29 +63,12 @@
       @NonNull final ContactSource.Type contactSourceType) {
     BlockReportSpamDialogs.DialogFragmentForBlockingNumberAndOptionallyReportingAsSpam.newInstance(
             displayNumber,
-            spamSettings.isDialogReportSpamCheckedByDefault(),
+            false,
             isSpamChecked -> {
               LogUtil.i("BlockReportSpamListener.onBlockReportSpam", "onClick");
-              if (isSpamChecked && spamSettings.isSpamEnabled()) {
-                Logger.get(context)
-                    .logImpression(
-                        DialerImpression.Type
-                            .REPORT_CALL_AS_SPAM_VIA_CALL_LOG_BLOCK_REPORT_SPAM_SENT_VIA_BLOCK_NUMBER_DIALOG);
-                spam.reportSpamFromCallHistory(
-                    number,
-                    countryIso,
-                    callType,
-                    ReportingLocation.Type.CALL_LOG_HISTORY,
-                    contactSourceType);
-              }
               filteredNumberAsyncQueryHandler.blockNumber(
-                  uri -> {
-                    Logger.get(context)
-                        .logImpression(DialerImpression.Type.USER_ACTION_BLOCKED_NUMBER);
-                    adapter.notifyDataSetChanged();
-                  },
-                  number,
-                  countryIso);
+                  uri -> adapter.notifyDataSetChanged(),
+                  number);
 
               if (isSpamChecked) {
                 showSpamBlockingPromoDialog();
@@ -113,29 +87,11 @@
       @NonNull final ContactSource.Type contactSourceType) {
     BlockReportSpamDialogs.DialogFragmentForBlockingNumberAndReportingAsSpam.newInstance(
             displayNumber,
-            spamSettings.isSpamEnabled(),
             () -> {
               LogUtil.i("BlockReportSpamListener.onBlock", "onClick");
-              if (spamSettings.isSpamEnabled()) {
-                Logger.get(context)
-                    .logImpression(
-                        DialerImpression.Type
-                            .DIALOG_ACTION_CONFIRM_NUMBER_SPAM_INDIRECTLY_VIA_BLOCK_NUMBER);
-                spam.reportSpamFromCallHistory(
-                    number,
-                    countryIso,
-                    callType,
-                    ReportingLocation.Type.CALL_LOG_HISTORY,
-                    contactSourceType);
-              }
               filteredNumberAsyncQueryHandler.blockNumber(
-                  uri -> {
-                    Logger.get(context)
-                        .logImpression(DialerImpression.Type.USER_ACTION_BLOCKED_NUMBER);
-                    adapter.notifyDataSetChanged();
-                  },
-                  number,
-                  countryIso);
+                  uri -> adapter.notifyDataSetChanged(),
+                  number);
               showSpamBlockingPromoDialog();
             },
             null)
@@ -149,30 +105,15 @@
       final String countryIso,
       final int callType,
       final ContactSource.Type contactSourceType,
-      final boolean isSpam,
-      final Integer blockId) {
+      final boolean isSpam) {
     DialogFragmentForUnblockingNumberAndReportingAsNotSpam.newInstance(
             displayNumber,
             isSpam,
             () -> {
               LogUtil.i("BlockReportSpamListener.onUnblock", "onClick");
-              if (isSpam && spamSettings.isSpamEnabled()) {
-                Logger.get(context)
-                    .logImpression(DialerImpression.Type.REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER);
-                spam.reportNotSpamFromCallHistory(
-                    number,
-                    countryIso,
-                    callType,
-                    ReportingLocation.Type.CALL_LOG_HISTORY,
-                    contactSourceType);
+              if (BlockedNumberContract.unblock(context, number) > 0) {
+                  adapter.notifyDataSetChanged();
               }
-              filteredNumberAsyncQueryHandler.unblock(
-                  (rows, values) -> {
-                    Logger.get(context)
-                        .logImpression(DialerImpression.Type.USER_ACTION_UNBLOCKED_NUMBER);
-                    adapter.notifyDataSetChanged();
-                  },
-                  blockId);
             },
             null)
         .show(fragmentManager, BlockReportSpamDialogs.UNBLOCK_DIALOG_TAG);
@@ -189,16 +130,6 @@
             displayNumber,
             () -> {
               LogUtil.i("BlockReportSpamListener.onReportNotSpam", "onClick");
-              if (spamSettings.isSpamEnabled()) {
-                Logger.get(context)
-                    .logImpression(DialerImpression.Type.DIALOG_ACTION_CONFIRM_NUMBER_NOT_SPAM);
-                spam.reportNotSpamFromCallHistory(
-                    number,
-                    countryIso,
-                    callType,
-                    ReportingLocation.Type.CALL_LOG_HISTORY,
-                    contactSourceType);
-              }
               adapter.notifyDataSetChanged();
             },
             null)
@@ -206,28 +137,5 @@
   }
 
   private void showSpamBlockingPromoDialog() {
-    if (!spamBlockingPromoHelper.shouldShowSpamBlockingPromo()) {
-      return;
-    }
-
-    Logger.get(context).logImpression(DialerImpression.Type.SPAM_BLOCKING_CALL_LOG_PROMO_SHOWN);
-    spamBlockingPromoHelper.showSpamBlockingPromoDialog(
-        fragmentManager,
-        () -> {
-          Logger.get(context)
-              .logImpression(DialerImpression.Type.SPAM_BLOCKING_ENABLED_THROUGH_CALL_LOG_PROMO);
-          spamSettings.modifySpamBlockingSetting(
-              true,
-              success -> {
-                if (!success) {
-                  Logger.get(context)
-                      .logImpression(
-                          DialerImpression.Type
-                              .SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_CALL_LOG_PROMO);
-                }
-                spamBlockingPromoHelper.showModifySettingOnCompleteSnackbar(rootView, success);
-              });
-        },
-        null /* onDismissListener */);
   }
 }
diff --git a/java/com/android/dialer/app/calllog/CallLogActivity.java b/java/com/android/dialer/app/calllog/CallLogActivity.java
index fdfb3ab..5df7fdd 100644
--- a/java/com/android/dialer/app/calllog/CallLogActivity.java
+++ b/java/com/android/dialer/app/calllog/CallLogActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,47 +16,44 @@
  */
 package com.android.dialer.app.calllog;
 
-import android.app.Fragment;
-import android.app.FragmentManager;
 import android.content.Intent;
 import android.os.Bundle;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
-import android.support.annotation.VisibleForTesting;
-import android.support.design.widget.Snackbar;
-import android.support.v13.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.ActionBar;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.ViewGroup;
+
+import androidx.appcompat.app.ActionBar;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
 import com.android.contacts.common.list.ViewPagerTabs;
-import com.android.dialer.app.R;
-import com.android.dialer.calldetails.OldCallDetailsActivity;
+import com.android.dialer.R;
+import com.android.dialer.callstats.CallStatsFragment;
+import com.android.dialer.callstats.DoubleDatePickerDialog;
 import com.android.dialer.common.Assert;
-import com.android.dialer.constants.ActivityRequestCodes;
 import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-import com.android.dialer.logging.UiAction;
-import com.android.dialer.performancereport.PerformanceReport;
-import com.android.dialer.postcall.PostCall;
 import com.android.dialer.util.TransactionSafeActivity;
 import com.android.dialer.util.ViewUtil;
 
 /** Activity for viewing call history. */
-public class CallLogActivity extends TransactionSafeActivity
-    implements ViewPager.OnPageChangeListener {
+public class CallLogActivity extends TransactionSafeActivity implements
+    ViewPager.OnPageChangeListener, DoubleDatePickerDialog.OnDateSetListener {
 
-  @VisibleForTesting static final int TAB_INDEX_ALL = 0;
-  @VisibleForTesting static final int TAB_INDEX_MISSED = 1;
-  private static final int TAB_INDEX_COUNT = 2;
+  private static final int TAB_INDEX_ALL = 0;
+  private static final int TAB_INDEX_MISSED = 1;
+  private static final int TAB_INDEX_STATS = 2;
+  private static final int TAB_INDEX_COUNT = 3;
   private ViewPager viewPager;
   private ViewPagerTabs viewPagerTabs;
   private ViewPagerAdapter viewPagerAdapter;
   private CallLogFragment allCallsFragment;
   private CallLogFragment missedCallsFragment;
+  private CallStatsFragment statsFragment;
   private String[] tabTitles;
   private boolean isResumed;
   private int selectedPageIndex;
@@ -86,15 +84,16 @@
     tabTitles = new String[TAB_INDEX_COUNT];
     tabTitles[0] = getString(R.string.call_log_all_title);
     tabTitles[1] = getString(R.string.call_log_missed_title);
+    tabTitles[2] = getString(R.string.call_log_stats_title);
 
-    viewPager = (ViewPager) findViewById(R.id.call_log_pager);
+    viewPager = findViewById(R.id.call_log_pager);
 
-    viewPagerAdapter = new ViewPagerAdapter(getFragmentManager());
+    viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
     viewPager.setAdapter(viewPagerAdapter);
     viewPager.setOffscreenPageLimit(1);
     viewPager.setOnPageChangeListener(this);
 
-    viewPagerTabs = (ViewPagerTabs) findViewById(R.id.viewpager_header);
+    viewPagerTabs = findViewById(R.id.viewpager_header);
 
     viewPagerTabs.setViewPager(viewPager);
     viewPager.setCurrentItem(startingTab);
@@ -102,16 +101,8 @@
 
   @Override
   protected void onResume() {
-    // Some calls may not be recorded (eg. from quick contact),
-    // so we should restart recording after these calls. (Recorded call is stopped)
-    PostCall.restartPerformanceRecordingIfARecentCallExist(this);
-    if (!PerformanceReport.isRecording()) {
-      PerformanceReport.startRecording();
-    }
-
     isResumed = true;
     super.onResume();
-    sendScreenViewForChildFragment();
   }
 
   @Override
@@ -155,13 +146,12 @@
     }
 
     if (item.getItemId() == android.R.id.home) {
-      PerformanceReport.recordClick(UiAction.Type.CLOSE_CALL_HISTORY_WITH_CANCEL_BUTTON);
       final Intent intent = new Intent("com.android.dialer.main.impl.MAIN");
       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
       startActivity(intent);
       return true;
     } else if (item.getItemId() == R.id.delete_all) {
-      ClearCallLogDialog.show(getFragmentManager());
+      ClearCallLogDialog.show(getSupportFragmentManager());
       return true;
     }
     return super.onOptionsItemSelected(item);
@@ -176,9 +166,6 @@
   public void onPageSelected(int position) {
     updateMissedCalls(position);
     selectedPageIndex = position;
-    if (isResumed) {
-      sendScreenViewForChildFragment();
-    }
     viewPagerTabs.onPageSelected(position);
   }
 
@@ -187,8 +174,13 @@
     viewPagerTabs.onPageScrollStateChanged(state);
   }
 
-  private void sendScreenViewForChildFragment() {
-    Logger.get(this).logScreenView(ScreenEvent.Type.CALL_LOG_FILTER, this);
+  @Override
+  public void onDateSet(long from, long to) {
+    switch (viewPager.getCurrentItem()) {
+      case TAB_INDEX_STATS:
+        statsFragment.onDateSet(from, to);
+        break;
+    }
   }
 
   private int getRtlPosition(int position) {
@@ -213,17 +205,13 @@
           missedCallsFragment.markMissedCallsAsReadAndRemoveNotifications();
         }
         break;
+      case TAB_INDEX_STATS:
+        break;
       default:
         throw Assert.createIllegalStateFailException("Invalid position: " + position);
     }
   }
 
-  @Override
-  public void onBackPressed() {
-    PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON);
-    super.onBackPressed();
-  }
-
   /** Adapter for the view pager. */
   public class ViewPagerAdapter extends FragmentPagerAdapter {
 
@@ -244,6 +232,8 @@
               CallLogQueryHandler.CALL_TYPE_ALL, true /* isCallLogActivity */);
         case TAB_INDEX_MISSED:
           return new CallLogFragment(Calls.MISSED_TYPE, true /* isCallLogActivity */);
+        case TAB_INDEX_STATS:
+          return new CallStatsFragment();
         default:
           throw new IllegalStateException("No fragment at position " + position);
       }
@@ -251,13 +241,16 @@
 
     @Override
     public Object instantiateItem(ViewGroup container, int position) {
-      final CallLogFragment fragment = (CallLogFragment) super.instantiateItem(container, position);
+      final Object fragment = super.instantiateItem(container, position);
       switch (getRtlPosition(position)) {
         case TAB_INDEX_ALL:
-          allCallsFragment = fragment;
+          allCallsFragment = (CallLogFragment) fragment;
           break;
         case TAB_INDEX_MISSED:
-          missedCallsFragment = fragment;
+          missedCallsFragment = (CallLogFragment) fragment;
+          break;
+        case TAB_INDEX_STATS:
+          statsFragment = (CallStatsFragment) fragment;
           break;
         default:
           throw Assert.createIllegalStateFailException("Invalid position: " + position);
@@ -278,19 +271,6 @@
 
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-    if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_DETAILS) {
-      if (resultCode == RESULT_OK
-          && data != null
-          && data.getBooleanExtra(OldCallDetailsActivity.EXTRA_HAS_ENRICHED_CALL_DATA, false)) {
-        String number = data.getStringExtra(OldCallDetailsActivity.EXTRA_PHONE_NUMBER);
-        Snackbar.make(findViewById(R.id.calllog_frame), getString(R.string.ec_data_deleted), 5_000)
-            .setAction(
-                R.string.view_conversation,
-                v -> startActivity(IntentProvider.getSendSmsIntentProvider(number).getIntent(this)))
-            .setActionTextColor(getResources().getColor(R.color.dialer_snackbar_action_text_color))
-            .show();
-      }
-    }
     super.onActivityResult(requestCode, resultCode, data);
   }
 }
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index 485683b..869f90b 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,27 +19,16 @@
 
 import android.app.Activity;
 import android.content.ContentUris;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
 import android.os.Trace;
+import android.provider.BlockedNumberContract;
 import android.provider.CallLog;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
@@ -52,8 +42,18 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
 import com.android.contacts.common.ContactsUtils;
-import com.android.dialer.app.R;
+import com.android.dialer.R;
 import com.android.dialer.app.calllog.CallLogFragment.CallLogFragmentListener;
 import com.android.dialer.app.calllog.CallLogGroupBuilder.GroupCreator;
 import com.android.dialer.app.calllog.calllogcache.CallLogCache;
@@ -68,44 +68,26 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils.FragmentUtilListener;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.AsyncTaskExecutor;
-import com.android.dialer.common.concurrent.AsyncTaskExecutors;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.contacts.ContactsComponent;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.duo.DuoListener;
-import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
 import com.android.dialer.logging.ContactSource;
 import com.android.dialer.logging.ContactSource.Type;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.LoggingBindings.ContactsProviderMatchInfo;
-import com.android.dialer.logging.UiAction;
 import com.android.dialer.main.MainActivityPeer;
-import com.android.dialer.performancereport.PerformanceReport;
 import com.android.dialer.phonenumbercache.CallLogQuery;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.spam.SpamComponent;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.PermissionsUtil;
-import com.google.i18n.phonenumbers.NumberParseException;
-import com.google.i18n.phonenumbers.PhoneNumberUtil;
-import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
 import java.util.ArrayList;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /** Adapter class to fill in data for the Call Log. */
 public class CallLogAdapter extends GroupingListAdapter
-    implements GroupCreator, OnVoicemailDeletedListener, DuoListener {
+    implements GroupCreator, OnVoicemailDeletedListener {
 
   // Types of activities the call log adapter is used for
   public static final int ACTIVITY_TYPE_CALL_LOG = 1;
@@ -121,11 +103,6 @@
 
   public static final String LOAD_DATA_TASK_IDENTIFIER = "load_data";
 
-  public static final String ENABLE_CALL_LOG_MULTI_SELECT = "enable_call_log_multiselect";
-  public static final boolean ENABLE_CALL_LOG_MULTI_SELECT_FLAG = true;
-
-  @VisibleForTesting static final String FILTER_EMERGENCY_CALLS_FLAG = "filter_emergency_calls";
-
   protected final Activity activity;
   protected final VoicemailPlaybackPresenter voicemailPlaybackPresenter;
   /** Cache for repeated requests to Telecom/Telephony. */
@@ -134,7 +111,8 @@
   private final CallFetcher callFetcher;
   private final OnActionModeStateChangedListener actionModeStateChangedListener;
   private final MultiSelectRemoveView multiSelectRemoveView;
-  @NonNull private final FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
+  @NonNull
+  private final FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
   private final int activityType;
 
   /** Instance of helper class for managing views. */
@@ -142,8 +120,7 @@
   /** Helper to group call log entries. */
   private final CallLogGroupBuilder callLogGroupBuilder;
 
-  private final AsyncTaskExecutor asyncTaskExecutor = AsyncTaskExecutors.createAsyncTaskExecutor();
-  private ContactInfoCache contactInfoCache;
+  private final ContactInfoCache contactInfoCache;
   // Tracks the position of the currently expanded list item.
   private int currentlyExpandedPosition = RecyclerView.NO_POSITION;
   // Tracks the rowId of the currently expanded list item, so the position can be updated if there
@@ -157,16 +134,6 @@
   public boolean deselectAllMode = false;
   private final SparseArray<String> selectedItems = new SparseArray<>();
 
-  /**
-   * Maps a raw input number to match info. We only log one MatchInfo per raw input number to reduce
-   * the amount of data logged.
-   *
-   * <p>Note that this has to be a {@link ConcurrentMap} as the match info for each row in the UI is
-   * loaded in a background thread spawned when the ViewHolder is bound.
-   */
-  private final ConcurrentMap<String, ContactsProviderMatchInfo> contactsProviderMatchInfos =
-      new ConcurrentHashMap<>();
-
   private final ActionMode.Callback actionModeCallback =
       new ActionMode.Callback() {
 
@@ -198,7 +165,6 @@
         @Override
         public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
           if (item.getItemId() == R.id.action_bar_delete_menu_item) {
-            Logger.get(activity).logImpression(DialerImpression.Type.MULTISELECT_TAP_DELETE_ICON);
             if (selectedItems.size() > 0) {
               showDeleteSelectedItemsDialog();
             }
@@ -235,48 +201,18 @@
                 .getResources()
                 .getQuantityString(
                     R.plurals.delete_voicemails_confirmation_dialog_title, selectedItems.size()))
-        .setPositiveButton(
-            R.string.voicemailMultiSelectDeleteConfirm,
-            new DialogInterface.OnClickListener() {
-              @Override
-              public void onClick(final DialogInterface dialog, final int button) {
-                LogUtil.i(
-                    "CallLogAdapter.showDeleteSelectedItemsDialog",
-                    "onClick, these items to delete " + voicemailsToDeleteOnConfirmation);
-                deleteSelectedItems(voicemailsToDeleteOnConfirmation);
-                actionMode.finish();
-                dialog.cancel();
-                Logger.get(activity)
-                    .logImpression(
-                        DialerImpression.Type.MULTISELECT_DELETE_ENTRY_VIA_CONFIRMATION_DIALOG);
-              }
-            })
-        .setOnCancelListener(
-            new OnCancelListener() {
-              @Override
-              public void onCancel(DialogInterface dialogInterface) {
-                Logger.get(activity)
-                    .logImpression(
-                        DialerImpression.Type
-                            .MULTISELECT_CANCEL_CONFIRMATION_DIALOG_VIA_CANCEL_TOUCH);
-                dialogInterface.cancel();
-              }
-            })
-        .setNegativeButton(
-            R.string.voicemailMultiSelectDeleteCancel,
-            new DialogInterface.OnClickListener() {
-              @Override
-              public void onClick(final DialogInterface dialog, final int button) {
-                Logger.get(activity)
-                    .logImpression(
-                        DialerImpression.Type
-                            .MULTISELECT_CANCEL_CONFIRMATION_DIALOG_VIA_CANCEL_BUTTON);
-                dialog.cancel();
-              }
-            })
+        .setPositiveButton(R.string.voicemailMultiSelectDeleteConfirm, (dialog, button) -> {
+          LogUtil.i(
+                  "CallLogAdapter.showDeleteSelectedItemsDialog",
+                  "onClick, these items to delete " + voicemailsToDeleteOnConfirmation);
+          deleteSelectedItems(voicemailsToDeleteOnConfirmation);
+          actionMode.finish();
+          dialog.cancel();
+        })
+        .setOnCancelListener(dialogInterface -> dialogInterface.cancel())
+        .setNegativeButton(R.string.voicemailMultiSelectDeleteCancel,
+                (dialog, button) -> dialog.cancel())
         .show();
-    Logger.get(activity)
-        .logImpression(DialerImpression.Type.MULTISELECT_DISPLAY_DELETE_CONFIRMATION_DIALOG);
   }
 
   private void deleteSelectedItems(SparseArray<String> voicemailsToDelete) {
@@ -291,19 +227,11 @@
       new View.OnLongClickListener() {
         @Override
         public boolean onLongClick(View v) {
-          if (ConfigProviderComponent.get(v.getContext())
-                  .getConfigProvider()
-                  .getBoolean(ENABLE_CALL_LOG_MULTI_SELECT, ENABLE_CALL_LOG_MULTI_SELECT_FLAG)
-              && voicemailPlaybackPresenter != null) {
+          if (voicemailPlaybackPresenter != null) {
             if (v.getId() == R.id.primary_action_view || v.getId() == R.id.quick_contact_photo) {
               if (actionMode == null) {
-                Logger.get(activity)
-                    .logImpression(
-                        DialerImpression.Type.MULTISELECT_LONG_PRESS_ENTER_MULTI_SELECT_MODE);
                 actionMode = v.startActionMode(actionModeCallback);
               }
-              Logger.get(activity)
-                  .logImpression(DialerImpression.Type.MULTISELECT_LONG_PRESS_TAP_ENTRY);
               CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder) v.getTag();
               viewHolder.quickContactView.setVisibility(View.GONE);
               viewHolder.checkBoxView.setVisibility(View.VISIBLE);
@@ -315,18 +243,11 @@
         }
       };
 
-  @VisibleForTesting
-  public View.OnClickListener getExpandCollapseListener() {
-    return expandCollapseListener;
-  }
-
   /** The OnClickListener used to expand or collapse the action buttons of a call log entry. */
   private final View.OnClickListener expandCollapseListener =
       new View.OnClickListener() {
         @Override
         public void onClick(View v) {
-          PerformanceReport.recordClick(UiAction.Type.CLICK_CALL_LOG_ITEM);
-
           CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder) v.getTag();
           if (viewHolder == null) {
             return;
@@ -337,12 +258,8 @@
             multiSelectRemoveView.setSelectAllModeToFalse();
             int id = getVoicemailId(viewHolder.voicemailUri);
             if (selectedItems.get(id) != null) {
-              Logger.get(activity)
-                  .logImpression(DialerImpression.Type.MULTISELECT_SINGLE_PRESS_UNSELECT_ENTRY);
               uncheckMarkCallLogEntry(viewHolder, id);
             } else {
-              Logger.get(activity)
-                  .logImpression(DialerImpression.Type.MULTISELECT_SINGLE_PRESS_SELECT_ENTRY);
               checkMarkCallLogEntry(viewHolder);
               // select all check box logic
               if (getItemCount() == selectedItems.size()) {
@@ -362,33 +279,6 @@
             voicemailPlaybackPresenter.resetAll();
           }
 
-          // If enriched call capabilities were unknown on the initial load,
-          // viewHolder.isCallComposerCapable may be unset. Check here if we have the capabilities
-          // as a last attempt at getting them before showing the expanded view to the user
-          EnrichedCallCapabilities capabilities = null;
-
-          if (viewHolder.number != null) {
-            capabilities = getEnrichedCallManager().getCapabilities(viewHolder.number);
-          }
-
-          if (capabilities == null) {
-            capabilities = EnrichedCallCapabilities.NO_CAPABILITIES;
-          }
-
-          viewHolder.isCallComposerCapable = capabilities.isCallComposerCapable();
-
-          if (capabilities.isTemporarilyUnavailable()) {
-            LogUtil.i(
-                "mExpandCollapseListener.onClick",
-                "%s is temporarily unavailable, requesting capabilities",
-                LogUtil.sanitizePhoneNumber(viewHolder.number));
-            // Refresh the capabilities when temporarily unavailable.
-            // Similarly to when we request capabilities the first time, the 'Share and call' button
-            // won't pop in with the new capabilities. Instead the row needs to be collapsed and
-            // expanded again.
-            getEnrichedCallManager().requestCapabilities(viewHolder.number);
-          }
-
           if (viewHolder.rowId == currentlyExpandedRowId) {
             // Hide actions, if the clicked item is the expanded item.
             viewHolder.showActions(false);
@@ -439,8 +329,6 @@
 
   private void updateActionBar() {
     if (actionMode == null && selectedItems.size() > 0) {
-      Logger.get(activity)
-          .logImpression(DialerImpression.Type.MULTISELECT_ROTATE_AND_SHOW_ACTION_MODE);
       activity.startActionMode(actionModeCallback);
     }
     if (actionMode != null) {
@@ -475,7 +363,7 @@
    * if removing an item, it will be shown as an invisible view. This simplifies the calculation of
    * item position.
    */
-  @NonNull private Set<Long> hiddenRowIds = new ArraySet<>();
+  @NonNull private final Set<Long> hiddenRowIds = new ArraySet<>();
   /**
    * Holds a list of URIs that are pending deletion or undo. If the activity ends before the undo
    * timeout, all of the pending URIs will be deleted.
@@ -486,7 +374,7 @@
    */
   @NonNull private final Set<Uri> hiddenItemUris = new ArraySet<>();
 
-  private CallLogListItemViewHolder.OnClickListener blockReportSpamListener;
+  private final CallLogListItemViewHolder.OnClickListener blockReportSpamListener;
 
   /**
    * Map, keyed by call ID, used to track the callback action for a call. Calls associated with the
@@ -512,8 +400,6 @@
 
   private boolean loading = true;
 
-  private boolean isSpamEnabled;
-
   public CallLogAdapter(
       Activity activity,
       ViewGroup alertContainer,
@@ -552,7 +438,7 @@
         new PhoneCallDetailsHelper(this.activity, resources, this.callLogCache);
     callLogListItemHelper =
         new CallLogListItemHelper(phoneCallDetailsHelper, resources, this.callLogCache);
-    callLogGroupBuilder = new CallLogGroupBuilder(activity.getApplicationContext(), this);
+    callLogGroupBuilder = new CallLogGroupBuilder(this);
     this.filteredNumberAsyncQueryHandler = Assert.isNotNull(filteredNumberAsyncQueryHandler);
 
     blockReportSpamListener =
@@ -569,10 +455,6 @@
   }
 
   private void expandViewHolderActions(CallLogListItemViewHolder viewHolder) {
-    if (!TextUtils.isEmpty(viewHolder.voicemailUri)) {
-      Logger.get(activity).logImpression(DialerImpression.Type.VOICEMAIL_EXPAND_ENTRY);
-    }
-
     int lastExpandedPosition = currentlyExpandedPosition;
     // Show the actions for the clicked list item.
     viewHolder.showActions(true);
@@ -667,27 +549,14 @@
     }
   }
 
-  public void clearFilteredNumbersCache() {
-    filteredNumberAsyncQueryHandler.clearCache();
-  }
-
   public void onResume() {
-    contactsProviderMatchInfos.clear();
     if (PermissionsUtil.hasPermission(activity, android.Manifest.permission.READ_CONTACTS)) {
       contactInfoCache.start();
     }
-    isSpamEnabled = SpamComponent.get(activity).spamSettings().isSpamEnabled();
-    getDuo().registerListener(this);
     notifyDataSetChanged();
   }
 
   public void onPause() {
-    // The call log can be resumed/paused without loading any contacts. Don't log these events.
-    if (!contactsProviderMatchInfos.isEmpty()) {
-      Logger.get(activity).logContactsProviderMetrics(contactsProviderMatchInfos.values());
-    }
-
-    getDuo().unregisterListener(this);
     pauseCache();
     for (Uri uri : hiddenItemUris) {
       CallLogAsyncTaskUtil.deleteVoicemail(activity, uri, null);
@@ -695,15 +564,13 @@
   }
 
   public void onStop() {
-    getEnrichedCallManager().clearCachedData();
   }
 
   public CallLogAlertManager getAlertManager() {
     return callLogAlertManager;
   }
 
-  @VisibleForTesting
-  /* package */ void pauseCache() {
+  private void pauseCache() {
     contactInfoCache.stop();
     callLogCache.reset();
   }
@@ -727,7 +594,7 @@
    * @param parent the parent view.
    * @return The {@link ViewHolder}.
    */
-  private ViewHolder createCallLogEntryViewHolder(ViewGroup parent) {
+  private RecyclerView.ViewHolder createCallLogEntryViewHolder(ViewGroup parent) {
     LayoutInflater inflater = LayoutInflater.from(activity);
     View view = inflater.inflate(R.layout.call_log_list_item, parent, false);
     CallLogListItemViewHolder viewHolder =
@@ -759,7 +626,7 @@
    * @param position The position of the entry.
    */
   @Override
-  public void onBindViewHolder(ViewHolder viewHolder, int position) {
+  public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
     Trace.beginSection("onBindViewHolder: " + position);
     switch (getItemViewType(position)) {
       case VIEW_TYPE_ALERT:
@@ -779,7 +646,7 @@
       updateCheckMarkedStatusOfEntry(views);
 
       if (views.asyncTask != null) {
-        views.asyncTask.cancel(true);
+        views.asyncTask.cancel();
       }
     }
   }
@@ -842,22 +709,7 @@
   }
 
   private boolean isHiddenRow(@Nullable String number, long rowId) {
-    if (isHideableEmergencyNumberRow(number)) {
-      return true;
-    }
-    if (hiddenRowIds.contains(rowId)) {
-      return true;
-    }
-    return false;
-  }
-
-  private boolean isHideableEmergencyNumberRow(@Nullable String number) {
-    if (!ConfigProviderComponent.get(activity)
-        .getConfigProvider()
-        .getBoolean(FILTER_EMERGENCY_CALLS_FLAG, false)) {
-      return false;
-    }
-    return number != null && PhoneNumberUtils.isEmergencyNumber(number);
+    return hiddenRowIds.contains(rowId);
   }
 
   private void loadAndRender(
@@ -869,72 +721,71 @@
     // Reset block and spam information since this view could be reused which may contain
     // outdated data.
     viewHolder.isSpam = false;
-    viewHolder.blockId = null;
-    viewHolder.isSpamFeatureEnabled = false;
+    viewHolder.isBlocked = false;
 
-    // Attempt to set the isCallComposerCapable field. If capabilities are unknown for this number,
-    // the value will be false while capabilities are requested. mExpandCollapseListener will
-    // attempt to set the field properly in that case
-    viewHolder.isCallComposerCapable = isCallComposerCapable(viewHolder.number);
     viewHolder.setDetailedPhoneDetails(callDetailsEntries);
-    final AsyncTask<Void, Void, Boolean> loadDataTask =
-        new AsyncTask<Void, Void, Boolean>() {
-          @Override
-          protected Boolean doInBackground(Void... params) {
-            viewHolder.blockId =
-                filteredNumberAsyncQueryHandler.getBlockedIdSynchronous(
-                    viewHolder.number, viewHolder.countryIso);
-            details.isBlocked = viewHolder.blockId != null;
-            if (isCancelled()) {
-              return false;
-            }
-            if (isSpamEnabled) {
-              viewHolder.isSpamFeatureEnabled = true;
-              // Only display the call as a spam call if there are incoming calls in the list.
-              // Call log cards with only outgoing calls should never be displayed as spam.
-              viewHolder.isSpam =
-                  details.hasIncomingCalls()
-                      && SpamComponent.get(activity)
-                          .spam()
-                          .checkSpamStatusSynchronous(viewHolder.number, viewHolder.countryIso);
-              details.isSpam = viewHolder.isSpam;
-            }
-            return !isCancelled() && loadData(viewHolder, rowId, details);
-          }
-
-          @Override
-          protected void onPostExecute(Boolean success) {
-            viewHolder.isLoaded = true;
-            if (success) {
-              viewHolder.callbackAction = getCallbackAction(viewHolder.rowId);
-              int currentDayGroup = getDayGroup(viewHolder.rowId);
-              if (currentDayGroup != details.previousGroup) {
-                viewHolder.dayGroupHeaderVisibility = View.VISIBLE;
-                viewHolder.dayGroupHeaderText = getGroupDescription(currentDayGroup);
-              } else {
-                viewHolder.dayGroupHeaderVisibility = View.GONE;
-              }
-              render(viewHolder, details, rowId);
-            }
-          }
-        };
+    final LoadDataTask loadDataTask = new LoadDataTask(viewHolder, details, rowId);
 
     viewHolder.asyncTask = loadDataTask;
-    asyncTaskExecutor.submit(LOAD_DATA_TASK_IDENTIFIER, loadDataTask);
+    loadDataTask.execute();
   }
 
-  @MainThread
-  private boolean isCallComposerCapable(@Nullable String number) {
-    if (number == null) {
-      return false;
+  public interface LoadDataTaskInterface {
+     void execute();
+     void cancel();
+  }
+
+  private class LoadDataTask implements LoadDataTaskInterface {
+
+    private boolean mIsCancelled = false;
+    private final CallLogListItemViewHolder mViewHolder;
+    private final PhoneCallDetails mDetails;
+    private final long mRowId;
+
+    private final ExecutorService mExecutor;
+    private final Handler mHandler;
+
+    public LoadDataTask(CallLogListItemViewHolder viewHolder, PhoneCallDetails details,
+                        long rowId) {
+      mExecutor = Executors.newSingleThreadExecutor();
+      mHandler = new Handler(Looper.getMainLooper());
+      mViewHolder = viewHolder;
+      mDetails = details;
+      mRowId = rowId;
     }
 
-    EnrichedCallCapabilities capabilities = getEnrichedCallManager().getCapabilities(number);
-    if (capabilities == null) {
-      getEnrichedCallManager().requestCapabilities(number);
-      return false;
+    public void execute() {
+      mExecutor.execute(() -> {
+        final boolean success;
+        mViewHolder.isBlocked = BlockedNumberContract.canCurrentUserBlockNumbers(activity) &&
+                BlockedNumberContract.isBlocked(activity, mViewHolder.number);
+        mDetails.isBlocked = mViewHolder.isBlocked;
+        if (mIsCancelled) {
+          success = false;
+        } else {
+          success = !mIsCancelled && loadData(mViewHolder, mRowId, mDetails);
+        }
+
+        mHandler.post(() -> {
+          mViewHolder.isLoaded = true;
+          if (success) {
+            mViewHolder.callbackAction = getCallbackAction(mViewHolder.rowId);
+            int currentDayGroup = getDayGroup(mViewHolder.rowId);
+            if (currentDayGroup != mDetails.previousGroup) {
+              mViewHolder.dayGroupHeaderVisibility = View.VISIBLE;
+              mViewHolder.dayGroupHeaderText = getGroupDescription(currentDayGroup);
+            } else {
+              mViewHolder.dayGroupHeaderVisibility = View.GONE;
+            }
+            render(mViewHolder, mDetails, mRowId);
+          }
+        });
+      });
     }
-    return capabilities.isCallComposerCapable();
+
+    public void cancel() {
+      mIsCancelled = true;
+    }
   }
 
   /**
@@ -950,10 +801,6 @@
     final String viaNumber = cursor.getString(CallLogQuery.VIA_NUMBER);
     final int numberPresentation = cursor.getInt(CallLogQuery.NUMBER_PRESENTATION);
     final ContactInfo cachedContactInfo = ContactInfoHelper.getContactInfo(cursor);
-    final int transcriptionState =
-        (VERSION.SDK_INT >= VERSION_CODES.O)
-            ? cursor.getInt(CallLogQuery.TRANSCRIPTION_STATE)
-            : VoicemailCompat.TRANSCRIPTION_NOT_STARTED;
     final PhoneCallDetails details =
         new PhoneCallDetails(number, numberPresentation, postDialDigits);
     details.viaNumber = viaNumber;
@@ -962,8 +809,6 @@
     details.duration = cursor.getLong(CallLogQuery.DURATION);
     details.features = getCallFeatures(cursor, count);
     details.geocode = cursor.getString(CallLogQuery.GEOCODED_LOCATION);
-    details.transcription = cursor.getString(CallLogQuery.TRANSCRIPTION);
-    details.transcriptionState = transcriptionState;
     details.callTypes = getCallTypes(cursor, count);
 
     details.accountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
@@ -1015,9 +860,6 @@
 
 
       String phoneAccountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
-      if (DuoComponent.get(activity).getDuo().isDuoAccount(phoneAccountComponentName)) {
-        entry.setIsDuoCall(true);
-      }
 
       entries.addEntries(entry.build());
       cursor.moveToNext();
@@ -1059,11 +901,7 @@
               details.number + details.postDialDigits,
               details.countryIso,
               details.cachedContactInfo,
-              position
-                  < ConfigProviderComponent.get(activity)
-                      .getConfigProvider()
-                      .getLong("number_of_call_to_do_remote_lookup", 5L));
-      logCp2Metrics(details, info);
+              position < 5L);
     }
     CharSequence formattedNumber =
         info.formattedNumber == null
@@ -1346,24 +1184,6 @@
   }
 
   /**
-   * Sets whether processing of requests for contact details should be enabled.
-   *
-   * <p>This method should be called in tests to disable such processing of requests when not
-   * needed.
-   */
-  @VisibleForTesting
-  void disableRequestProcessingForTest() {
-    // TODO: Remove this and test the cache directly.
-    contactInfoCache.disableRequestProcessing();
-  }
-
-  @VisibleForTesting
-  void injectContactInfoForTest(String number, String countryIso, ContactInfo contactInfo) {
-    // TODO: Remove this and test the cache directly.
-    contactInfoCache.injectContactInfoForTest(number, countryIso, contactInfo);
-  }
-
-  /**
    * Stores the callback action associated with a call in the call log.
    *
    * @param rowId The row ID of the current call.
@@ -1430,21 +1250,6 @@
     }
   }
 
-  @NonNull
-  private EnrichedCallManager getEnrichedCallManager() {
-    return EnrichedCallComponent.get(activity).getEnrichedCallManager();
-  }
-
-  @NonNull
-  private Duo getDuo() {
-    return DuoComponent.get(activity).getDuo();
-  }
-
-  @Override
-  public void onDuoStateChanged() {
-    notifyDataSetChanged();
-  }
-
   public void onAllSelected() {
     selectAllMode = true;
     deselectAllMode = false;
@@ -1469,45 +1274,6 @@
     notifyDataSetChanged();
   }
 
-  @WorkerThread
-  private void logCp2Metrics(PhoneCallDetails details, ContactInfo contactInfo) {
-    if (details == null) {
-      return;
-    }
-    CharSequence inputNumber = details.number;
-    if (inputNumber == null) {
-      return;
-    }
-
-    ContactsProviderMatchInfo.Builder matchInfo =
-        ContactsProviderMatchInfo.builder()
-            .setInputNumberLength(PhoneNumberUtils.normalizeNumber(inputNumber.toString()).length())
-            .setInputNumberHasPostdialDigits(
-                !PhoneNumberUtils.extractPostDialPortion(inputNumber.toString()).isEmpty()
-                    || (details.postDialDigits != null && !details.postDialDigits.isEmpty()));
-
-    PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
-    try {
-      PhoneNumber phoneNumber = phoneNumberUtil.parse(inputNumber, details.countryIso);
-      matchInfo.setInputNumberValid(phoneNumberUtil.isValidNumber(phoneNumber));
-    } catch (NumberParseException e) {
-      // Do nothing
-      matchInfo.setInputNumberValid(false);
-    }
-
-    if (contactInfo != null
-        && contactInfo.number != null
-        && contactInfo.sourceType == Type.SOURCE_TYPE_DIRECTORY) {
-      matchInfo
-          .setMatchedContact(true)
-          .setMatchedNumberLength(PhoneNumberUtils.normalizeNumber(contactInfo.number).length())
-          .setMatchedNumberHasPostdialDigits(
-              !PhoneNumberUtils.extractPostDialPortion(contactInfo.number).isEmpty());
-    }
-
-    contactsProviderMatchInfos.put(inputNumber.toString(), matchInfo.build());
-  }
-
   /** Interface used to initiate a refresh of the content. */
   public interface CallFetcher {
 
diff --git a/java/com/android/dialer/app/calllog/CallLogAlertManager.java b/java/com/android/dialer/app/calllog/CallLogAlertManager.java
index 40b30f0..1440c70 100644
--- a/java/com/android/dialer/app/calllog/CallLogAlertManager.java
+++ b/java/com/android/dialer/app/calllog/CallLogAlertManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +17,13 @@
 
 package com.android.dialer.app.calllog;
 
-import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import com.android.dialer.app.R;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.app.alert.AlertManager;
 import com.android.dialer.common.Assert;
 
diff --git a/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java b/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
index f54ea79..3aebbe9 100644
--- a/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
+++ b/java/com/android/dialer/app/calllog/CallLogAsyncTaskUtil.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,12 +21,13 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.provider.CallLog;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.AsyncTaskExecutor;
 import com.android.dialer.common.concurrent.AsyncTaskExecutors;
@@ -43,30 +45,25 @@
   }
 
   public static void markVoicemailAsRead(
-      @NonNull final Context context, @NonNull final Uri voicemailUri) {
+          @NonNull final Context context, @NonNull final Uri voicemailUri) {
     LogUtil.enterBlock("CallLogAsyncTaskUtil.markVoicemailAsRead, voicemailUri: " + voicemailUri);
     if (asyncTaskExecutor == null) {
       initTaskExecutor();
     }
 
     asyncTaskExecutor.submit(
-        Tasks.MARK_VOICEMAIL_READ,
-        new AsyncTask<Void, Void, Void>() {
-          @Override
-          public Void doInBackground(Void... params) {
-            ContentValues values = new ContentValues();
-            values.put(Voicemails.IS_READ, true);
-            // "External" changes to the database will be automatically marked as dirty, but this
-            // voicemail might be from dialer so it need to be marked manually.
-            values.put(Voicemails.DIRTY, 1);
-            if (context
-                    .getContentResolver()
-                    .update(voicemailUri, values, Voicemails.IS_READ + " = 0", null)
-                > 0) {
-              uploadVoicemailLocalChangesToServer(context);
-              CallLogNotificationsService.markAllNewVoicemailsAsOld(context);
-            }
-            return null;
+        Tasks.MARK_VOICEMAIL_READ, () -> {
+          ContentValues values = new ContentValues();
+          values.put(Voicemails.IS_READ, true);
+          // "External" changes to the database will be automatically marked as dirty, but this
+          // voicemail might be from dialer so it need to be marked manually.
+          values.put(Voicemails.DIRTY, 1);
+          if (context
+                  .getContentResolver()
+                  .update(voicemailUri, values, Voicemails.IS_READ + " = 0", null)
+              > 0) {
+            uploadVoicemailLocalChangesToServer(context);
+            CallLogNotificationsService.markAllNewVoicemailsAsOld(context);
           }
         });
   }
@@ -79,22 +76,13 @@
       initTaskExecutor();
     }
 
-    asyncTaskExecutor.submit(
-        Tasks.DELETE_VOICEMAIL,
-        new AsyncTask<Void, Void, Void>() {
-          @Override
-          public Void doInBackground(Void... params) {
-            deleteVoicemailSynchronous(context, voicemailUri);
-            return null;
-          }
-
-          @Override
-          public void onPostExecute(Void result) {
-            if (callLogAsyncTaskListener != null) {
-              callLogAsyncTaskListener.onDeleteVoicemail();
-            }
-          }
-        });
+    asyncTaskExecutor.submit(Tasks.DELETE_VOICEMAIL,
+            () -> deleteVoicemailSynchronous(context, voicemailUri),
+            () -> {
+      if (callLogAsyncTaskListener != null) {
+        callLogAsyncTaskListener.onDeleteVoicemail();
+      }
+    });
   }
 
   public static void deleteVoicemailSynchronous(Context context, Uri voicemailUri) {
@@ -115,42 +103,32 @@
       initTaskExecutor();
     }
 
-    asyncTaskExecutor.submit(
-        Tasks.MARK_CALL_READ,
-        new AsyncTask<Void, Void, Void>() {
-          @Override
-          public Void doInBackground(Void... params) {
+    asyncTaskExecutor.submit(Tasks.MARK_CALL_READ, () -> {
+      StringBuilder where = new StringBuilder();
+      where.append(CallLog.Calls.TYPE).append(" = ").append(CallLog.Calls.MISSED_TYPE);
+      where.append(" AND ");
 
-            StringBuilder where = new StringBuilder();
-            where.append(CallLog.Calls.TYPE).append(" = ").append(CallLog.Calls.MISSED_TYPE);
-            where.append(" AND ");
+      Long[] callIdLongs = new Long[callIds.length];
+      for (int i = 0; i < callIds.length; i++) {
+        callIdLongs[i] = callIds[i];
+      }
+      where
+          .append(CallLog.Calls._ID)
+          .append(" IN (" + TextUtils.join(",", callIdLongs) + ")");
 
-            Long[] callIdLongs = new Long[callIds.length];
-            for (int i = 0; i < callIds.length; i++) {
-              callIdLongs[i] = callIds[i];
-            }
-            where
-                .append(CallLog.Calls._ID)
-                .append(" IN (" + TextUtils.join(",", callIdLongs) + ")");
-
-            ContentValues values = new ContentValues(1);
-            values.put(CallLog.Calls.IS_READ, "1");
-            context
-                .getContentResolver()
-                .update(CallLog.Calls.CONTENT_URI, values, where.toString(), null);
-            return null;
-          }
-        });
+      ContentValues values = new ContentValues(1);
+      values.put(CallLog.Calls.IS_READ, "1");
+      context
+          .getContentResolver()
+          .update(CallLog.Calls.CONTENT_URI, values, where.toString(), null);
+    });
   }
 
-  /** The enumeration of {@link AsyncTask} objects used in this class. */
+  /** The enumeration of objects used in this class. */
   public enum Tasks {
     DELETE_VOICEMAIL,
-    DELETE_CALL,
     MARK_VOICEMAIL_READ,
     MARK_CALL_READ,
-    GET_CALL_DETAILS,
-    UPDATE_DURATION,
   }
 
   /** TODO(calderwoodra): documentation */
diff --git a/java/com/android/dialer/app/calllog/CallLogFragment.java b/java/com/android/dialer/app/calllog/CallLogFragment.java
index 771254e..82f56d6 100644
--- a/java/com/android/dialer/app/calllog/CallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/CallLogFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,34 +20,36 @@
 import static android.Manifest.permission.READ_CALL_LOG;
 
 import android.app.Activity;
-import android.app.Fragment;
 import android.app.KeyguardManager;
 import android.content.ContentResolver;
 import android.content.Context;
-import android.content.pm.PackageManager;
 import android.database.ContentObserver;
 import android.database.Cursor;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Looper;
 import android.os.Message;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
 import android.provider.ContactsContract;
-import android.support.annotation.CallSuper;
-import android.support.annotation.Nullable;
-import android.support.v13.app.FragmentCompat;
-import android.support.v13.app.FragmentCompat.OnRequestPermissionsResultCallback;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
-import com.android.dialer.app.Bindings;
-import com.android.dialer.app.R;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.CallSuper;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.content.res.AppCompatResources;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.app.calllog.CallLogAdapter.CallFetcher;
 import com.android.dialer.app.calllog.CallLogAdapter.MultiSelectRemoveView;
 import com.android.dialer.app.calllog.calllogcache.CallLogCache;
@@ -58,21 +61,15 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.database.CallLogQueryHandler;
 import com.android.dialer.database.CallLogQueryHandler.Listener;
 import com.android.dialer.location.GeoUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.metrics.Metrics;
-import com.android.dialer.metrics.MetricsComponent;
-import com.android.dialer.metrics.jank.RecyclerViewJankLogger;
 import com.android.dialer.oem.CequintCallerIdManager;
-import com.android.dialer.performancereport.PerformanceReport;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.widget.EmptyContentView;
 import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
+
 import java.util.Arrays;
 
 /**
@@ -84,7 +81,6 @@
         CallFetcher,
         MultiSelectRemoveView,
         OnEmptyViewActionButtonClickedListener,
-        OnRequestPermissionsResultCallback,
         CallLogModalAlertManager.Listener,
         OnClickListener {
   private static final String KEY_FILTER_TYPE = "filter_type";
@@ -100,12 +96,10 @@
   // No date-based filtering.
   private static final int NO_DATE_LIMIT = 0;
 
-  private static final int PHONE_PERMISSIONS_REQUEST_CODE = 1;
-
   private static final int EVENT_UPDATE_DISPLAY = 1;
 
   private static final long MILLIS_IN_MINUTE = 60 * 1000;
-  private final Handler handler = new Handler();
+  private final Handler handler = new Handler(Looper.getMainLooper());
   // See issue 6363009
   private final ContentObserver callLogObserver = new CustomContentObserver();
   private final ContentObserver contactsObserver = new CustomContentObserver();
@@ -146,7 +140,7 @@
   private boolean isCallLogActivity = false;
   private boolean selectAllMode;
   private final Handler displayUpdateHandler =
-      new Handler() {
+      new Handler(Looper.getMainLooper()) {
         @Override
         public void handleMessage(Message msg) {
           switch (msg.what) {
@@ -162,6 +156,15 @@
   protected CallLogModalAlertManager modalAlertManager;
   private ViewGroup modalAlertView;
 
+  private final ActivityResultLauncher<String[]> permissionLauncher = registerForActivityResult(
+          new ActivityResultContracts.RequestMultiplePermissions(),
+          grantResults -> {
+            if (grantResults.size() >= 1 && grantResults.values().iterator().next()) {
+              // Force a refresh of the data since we were missing the permission before this.
+              refreshDataRequired = true;
+            }
+          });
+
   public CallLogFragment() {
     this(CallLogQueryHandler.CALL_TYPE_ALL, NO_LOG_LIMIT);
   }
@@ -219,7 +222,7 @@
       selectAllMode = state.getBoolean(KEY_SELECT_ALL_MODE, false);
     }
 
-    final Activity activity = getActivity();
+    final Activity activity = requireActivity();
     final ContentResolver resolver = activity.getContentResolver();
     callLogQueryHandler = new CallLogQueryHandler(activity, resolver, this, logLimit);
     setHasOptionsMenu(true);
@@ -263,16 +266,12 @@
       }
       // Workaround for framework issue: the smooth-scroll doesn't
       // occur if setSelection() is called immediately before.
-      handler.post(
-          new Runnable() {
-            @Override
-            public void run() {
-              if (getActivity() == null || getActivity().isFinishing()) {
-                return;
-              }
-              recyclerView.smoothScrollToPosition(0);
-            }
-          });
+      handler.post(() -> {
+        if (getActivity() == null || getActivity().isFinishing()) {
+          return;
+        }
+        recyclerView.smoothScrollToPosition(0);
+      });
 
       scrollToTop = false;
     }
@@ -297,18 +296,9 @@
 
   protected void setupView(View view) {
     recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
-    if (ConfigProviderComponent.get(getContext())
-        .getConfigProvider()
-        .getBoolean("is_call_log_item_anim_null", false)) {
-      recyclerView.setItemAnimator(null);
-    }
     recyclerView.setHasFixedSize(true);
-    recyclerView.addOnScrollListener(
-        new RecyclerViewJankLogger(
-            MetricsComponent.get(getContext()).metrics(), Metrics.OLD_CALL_LOG_JANK_EVENT_NAME));
     layoutManager = new LinearLayoutManager(getActivity());
     recyclerView.setLayoutManager(layoutManager);
-    PerformanceReport.logOnScrollStateChange(recyclerView);
     emptyListView = (EmptyContentView) view.findViewById(R.id.empty_list_view);
     emptyListView.setImage(R.drawable.empty_call_log);
     emptyListView.setActionClickedListener(this);
@@ -333,26 +323,24 @@
 
     contactInfoCache =
         new ContactInfoCache(
-            ExpirableCacheHeadlessFragment.attach((AppCompatActivity) getActivity())
+            ExpirableCacheHeadlessFragment.attach(getChildFragmentManager())
                 .getRetainedCache(),
             new ContactInfoHelper(getActivity(), currentCountryIso),
             onContactInfoChangedListener);
-    adapter =
-        Bindings.getLegacy(getActivity())
-            .newCallLogAdapter(
-                getActivity(),
-                recyclerView,
-                this,
-                this,
-                // We aren't calling getParentUnsafe because CallLogActivity doesn't need to
-                // implement this listener
-                FragmentUtils.getParent(
+    adapter = new CallLogAdapter(
+            getActivity(),
+            recyclerView,
+            this,
+            this,
+            // We aren't calling getParentUnsafe because CallLogActivity doesn't need to
+            // implement this listener
+            FragmentUtils.getParent(
                     this, CallLogAdapter.OnActionModeStateChangedListener.class),
-                new CallLogCache(getActivity()),
-                contactInfoCache,
-                getVoicemailPlaybackPresenter(),
-                new FilteredNumberAsyncQueryHandler(getActivity()),
-                activityType);
+            new CallLogCache(getActivity()),
+            contactInfoCache,
+            getVoicemailPlaybackPresenter(),
+            new FilteredNumberAsyncQueryHandler(requireActivity()),
+            activityType);
     recyclerView.setAdapter(adapter);
     if (adapter.getOnScrollListener() != null) {
       recyclerView.addOnScrollListener(adapter.getOnScrollListener());
@@ -365,15 +353,6 @@
     return null;
   }
 
-  @Override
-  public void onActivityCreated(Bundle savedInstanceState) {
-    LogUtil.enterBlock("CallLogFragment.onActivityCreated");
-    super.onActivityCreated(savedInstanceState);
-    setupData();
-    updateSelectAllState(savedInstanceState);
-    adapter.onRestoreInstanceState(savedInstanceState);
-  }
-
   private void updateSelectAllState(Bundle savedInstanceState) {
     if (savedInstanceState != null) {
       if (savedInstanceState.getBoolean(KEY_SELECT_ALL_MODE, false)) {
@@ -383,9 +362,19 @@
   }
 
   @Override
-  public void onViewCreated(View view, Bundle savedInstanceState) {
+  public void onAttach(@NonNull Context context) {
+    LogUtil.enterBlock("CallLogFragment.onAttach");
+    super.onAttach(context);
+  }
+
+  @Override
+  public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
+    LogUtil.enterBlock("CallLogFragment.onViewCreated");
     super.onViewCreated(view, savedInstanceState);
     updateEmptyMessage(callTypeFilter);
+    setupData();
+    updateSelectAllState(savedInstanceState);
+    adapter.onRestoreInstanceState(savedInstanceState);
   }
 
   @Override
@@ -402,7 +391,7 @@
       updateEmptyMessage(callTypeFilter);
     }
 
-    ContentResolver resolver = getActivity().getContentResolver();
+    ContentResolver resolver = requireActivity().getContentResolver();
     if (PermissionsUtil.hasCallLogReadPermissions(getContext())) {
       resolver.registerContentObserver(CallLog.CONTENT_URI, true, callLogObserver);
     } else {
@@ -417,26 +406,24 @@
 
     this.hasReadCallLogPermission = hasReadCallLogPermission;
 
-    /*
-     * Always clear the filtered numbers cache since users could have blocked/unblocked numbers
-     * from the settings page
-     */
-    adapter.clearFilteredNumbersCache();
     refreshData();
     adapter.onResume();
 
     rescheduleDisplayUpdate();
     // onResume() may also be called as a "side" page on the ViewPager, which is not visible.
     if (getUserVisibleHint()) {
+      LogUtil.w("CallLogFragment.onResume", "on visible hint");
       onVisible();
+    } else {
+      LogUtil.w("CallLogFragment.onResume", "not visible hint");
     }
   }
 
   @Override
   public void onPause() {
     LogUtil.enterBlock("CallLogFragment.onPause");
-    getActivity().getContentResolver().unregisterContentObserver(callLogObserver);
-    getActivity().getContentResolver().unregisterContentObserver(contactsObserver);
+    requireActivity().getContentResolver().unregisterContentObserver(callLogObserver);
+    requireActivity().getContentResolver().unregisterContentObserver(contactsObserver);
     if (getUserVisibleHint()) {
       onNotVisible();
     }
@@ -450,7 +437,7 @@
     LogUtil.enterBlock("CallLogFragment.onStart");
     super.onStart();
     CequintCallerIdManager cequintCallerIdManager = null;
-    if (CequintCallerIdManager.isCequintCallerIdEnabled(getContext())) {
+    if (CequintCallerIdManager.isCequintCallerIdEnabled(requireContext())) {
       cequintCallerIdManager = new CequintCallerIdManager();
     }
     contactInfoCache.setCequintCallerIdManager(cequintCallerIdManager);
@@ -474,7 +461,7 @@
   }
 
   @Override
-  public void onSaveInstanceState(Bundle outState) {
+  public void onSaveInstanceState(@NonNull Bundle outState) {
     super.onSaveInstanceState(outState);
     outState.putInt(KEY_FILTER_TYPE, callTypeFilter);
     outState.putInt(KEY_LOG_LIMIT, logLimit);
@@ -584,7 +571,7 @@
       LogUtil.i(
           "CallLogFragment.onEmptyViewActionButtonClicked",
           "Requesting permissions: " + Arrays.toString(deniedPermissions));
-      FragmentCompat.requestPermissions(this, deniedPermissions, PHONE_PERMISSIONS_REQUEST_CODE);
+      permissionLauncher.launch(deniedPermissions);
     } else if (!isCallLogActivity) {
       LogUtil.i("CallLogFragment.onEmptyViewActionButtonClicked", "showing dialpad");
       // Show dialpad if we are not in the call log activity.
@@ -592,17 +579,6 @@
     }
   }
 
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, String[] permissions, int[] grantResults) {
-    if (requestCode == PHONE_PERMISSIONS_REQUEST_CODE) {
-      if (grantResults.length >= 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
-        // Force a refresh of the data since we were missing the permission before this.
-        refreshDataRequired = true;
-      }
-    }
-  }
-
   /** Schedules an update to the relative call times (X mins ago). */
   private void rescheduleDisplayUpdate() {
     if (!displayUpdateHandler.hasMessages(EVENT_UPDATE_DISPLAY)) {
@@ -694,8 +670,8 @@
   @Override
   public void setSelectAllModeToFalse() {
     selectAllMode = false;
-    selectUnselectAllIcon.setImageDrawable(
-        getContext().getDrawable(R.drawable.ic_empty_check_mark_white_24dp));
+    selectUnselectAllIcon.setImageDrawable(AppCompatResources.getDrawable(requireContext(),
+                    R.drawable.ic_empty_check_mark_white_24dp));
   }
 
   @Override
@@ -708,22 +684,17 @@
   @Override
   public void onClick(View v) {
     selectAllMode = !selectAllMode;
-    if (selectAllMode) {
-      Logger.get(v.getContext()).logImpression(DialerImpression.Type.MULTISELECT_SELECT_ALL);
-    } else {
-      Logger.get(v.getContext()).logImpression(DialerImpression.Type.MULTISELECT_UNSELECT_ALL);
-    }
     updateSelectAllIcon();
   }
 
   private void updateSelectAllIcon() {
     if (selectAllMode) {
-      selectUnselectAllIcon.setImageDrawable(
-          getContext().getDrawable(R.drawable.ic_check_mark_blue_24dp));
+      selectUnselectAllIcon.setImageDrawable(AppCompatResources.getDrawable(requireContext(),
+                      R.drawable.ic_check_mark_blue_24dp));
       getAdapter().onAllSelected();
     } else {
-      selectUnselectAllIcon.setImageDrawable(
-          getContext().getDrawable(R.drawable.ic_empty_check_mark_white_24dp));
+      selectUnselectAllIcon.setImageDrawable(AppCompatResources.getDrawable(requireContext(),
+              R.drawable.ic_empty_check_mark_white_24dp));
       getAdapter().onAllDeselected();
     }
   }
diff --git a/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java b/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java
index 805ee64..e4d27a4 100644
--- a/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java
+++ b/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java
@@ -16,23 +16,21 @@
 
 package com.android.dialer.app.calllog;
 
-import android.content.Context;
 import android.database.Cursor;
 import android.provider.CallLog.Calls;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+
 import com.android.contacts.common.util.DateUtils;
 import com.android.dialer.calllogutils.CallbackActionHelper;
 import com.android.dialer.calllogutils.CallbackActionHelper.CallbackAction;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.phonenumbercache.CallLogQuery;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 
 import java.time.ZoneId;
-import java.util.Objects;
 
 /**
  * Groups together calls in the call log. The primary grouping attempts to group together calls to
@@ -59,12 +57,10 @@
   /** Instance of the time object used for time calculations. */
   private static final ZoneId TIME_ZONE = ZoneId.systemDefault();
 
-  private final Context appContext;
   /** The object on which the groups are created. */
   private final GroupCreator groupCreator;
 
-  public CallLogGroupBuilder(@ApplicationContext Context appContext, GroupCreator groupCreator) {
-    this.appContext = appContext;
+  public CallLogGroupBuilder(GroupCreator groupCreator) {
     this.groupCreator = groupCreator;
   }
 
@@ -101,9 +97,7 @@
     String groupNumber = cursor.getString(CallLogQuery.NUMBER);
     String groupAccountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
     int groupFeatures = cursor.getInt(CallLogQuery.FEATURES);
-    int groupCallbackAction =
-        CallbackActionHelper.getCallbackAction(
-            appContext, groupNumber, groupFeatures, groupAccountComponentName);
+    int groupCallbackAction = CallbackActionHelper.getCallbackAction(groupNumber, groupFeatures);
     groupCreator.setCallbackAction(firstRowId, groupCallbackAction);
 
     // Instantiate other group values to those of the first call in the cursor.
@@ -131,9 +125,7 @@
       callFeatures = cursor.getInt(CallLogQuery.FEATURES);
       accountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
       accountId = cursor.getString(CallLogQuery.ACCOUNT_ID);
-      callbackAction =
-          CallbackActionHelper.getCallbackAction(
-              appContext, number, callFeatures, accountComponentName);
+      callbackAction = CallbackActionHelper.getCallbackAction(number, callFeatures);
 
       final boolean isSameNumber = equalNumbers(groupNumber, number);
       final boolean isSamePostDialDigits = groupPostDialDigits.equals(numberPostDialDigits);
@@ -195,10 +187,9 @@
    * Returns true when the two input numbers can be considered identical enough for caller ID
    * purposes and put in a call log group.
    */
-  @VisibleForTesting
-  boolean equalNumbers(@Nullable String number1, @Nullable String number2) {
+  private boolean equalNumbers(@Nullable String number1, @Nullable String number2) {
     if (PhoneNumberHelper.isUriNumber(number1) || PhoneNumberHelper.isUriNumber(number2)) {
-      return compareSipAddresses(number1, number2);
+      return PhoneNumberHelper.compareSipAddresses(number1, number2);
     }
 
     // PhoneNumberUtils.compare(String, String) ignores special characters such as '#'. For example,
@@ -217,37 +208,6 @@
     return TextUtils.equals(name1, name2) && TextUtils.equals(id1, id2);
   }
 
-  @VisibleForTesting
-  boolean compareSipAddresses(@Nullable String number1, @Nullable String number2) {
-    if (number1 == null || number2 == null) {
-      return Objects.equals(number1, number2);
-    }
-
-    int index1 = number1.indexOf('@');
-    final String userinfo1;
-    final String rest1;
-    if (index1 != -1) {
-      userinfo1 = number1.substring(0, index1);
-      rest1 = number1.substring(index1);
-    } else {
-      userinfo1 = number1;
-      rest1 = "";
-    }
-
-    int index2 = number2.indexOf('@');
-    final String userinfo2;
-    final String rest2;
-    if (index2 != -1) {
-      userinfo2 = number2.substring(0, index2);
-      rest2 = number2.substring(index2);
-    } else {
-      userinfo2 = number2;
-      rest2 = "";
-    }
-
-    return userinfo1.equals(userinfo2) && rest1.equalsIgnoreCase(rest2);
-  }
-
   /**
    * Given a call date and the current date, determine which date group the call belongs in.
    *
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemHelper.java b/java/com/android/dialer/app/calllog/CallLogListItemHelper.java
index a30d4d7..87bba52 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemHelper.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemHelper.java
@@ -18,9 +18,11 @@
 
 import android.content.res.Resources;
 import android.provider.CallLog.Calls;
-import android.support.annotation.WorkerThread;
 import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
+
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.app.R;
 import com.android.dialer.app.calllog.calllogcache.CallLogCache;
 import com.android.dialer.calllogutils.PhoneCallDetails;
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index 05011d1..1dd4e53 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,22 +18,22 @@
 package com.android.dialer.app.calllog;
 
 import android.Manifest.permission;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ArgbEvaluator;
+import android.animation.TimeInterpolator;
+import android.animation.ValueAnimator;
 import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
 import android.net.Uri;
-import android.os.AsyncTask;
+import android.provider.BlockedNumberContract;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresPermission;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.CardView;
-import android.support.v7.widget.RecyclerView;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -42,49 +43,41 @@
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
+import android.transition.TransitionManager;
 import android.view.ContextMenu;
-import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewGroup;
 import android.view.ViewStub;
-import android.widget.ImageButton;
+import android.view.animation.AccelerateDecelerateInterpolator;
+import android.view.animation.DecelerateInterpolator;
 import android.widget.ImageView;
 import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresPermission;
+import androidx.cardview.widget.CardView;
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.contacts.common.dialog.CallSubjectDialog;
-import com.android.dialer.app.R;
+import com.android.dialer.R;
 import com.android.dialer.app.calllog.CallLogAdapter.OnActionModeStateChangedListener;
 import com.android.dialer.app.calllog.calllogcache.CallLogCache;
 import com.android.dialer.app.voicemail.VoicemailPlaybackLayout;
 import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
-import com.android.dialer.blocking.BlockedNumbersMigrator;
-import com.android.dialer.blocking.FilteredNumberCompat;
-import com.android.dialer.blocking.FilteredNumbersUtil;
-import com.android.dialer.callcomposer.CallComposerActivity;
 import com.android.dialer.calldetails.CallDetailsEntries;
 import com.android.dialer.calldetails.OldCallDetailsActivity;
-import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.calllogutils.CallbackActionHelper.CallbackAction;
 import com.android.dialer.clipboard.ClipboardUtils;
-import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.AsyncTaskExecutors;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.constants.ActivityRequestCodes;
 import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.dialercontact.DialerContact;
 import com.android.dialer.dialercontact.SimDetails;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoComponent;
 import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.lettertile.LetterTileDrawable.ContactType;
 import com.android.dialer.logging.ContactSource;
 import com.android.dialer.logging.ContactSource.Type;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-import com.android.dialer.logging.UiAction;
-import com.android.dialer.performancereport.PerformanceReport;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.phonenumbercache.PhoneNumberCache;
@@ -93,8 +86,7 @@
 import com.android.dialer.util.CallUtil;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.UriUtils;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+
 import java.lang.ref.WeakReference;
 
 /**
@@ -106,6 +98,7 @@
  */
 public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
     implements View.OnClickListener,
+        View.OnLongClickListener,
         MenuItem.OnMenuItemClickListener,
         View.OnCreateContextMenuListener {
 
@@ -127,13 +120,13 @@
   public final ImageView primaryActionButtonView;
 
   private final Context context;
-  @Nullable private final PhoneAccountHandle defaultPhoneAccountHandle;
+  @Nullable
+  private final PhoneAccountHandle defaultPhoneAccountHandle;
   private final CallLogCache callLogCache;
   private final CallLogListItemHelper callLogListItemHelper;
   private final CachedNumberLookupService cachedNumberLookupService;
   private final VoicemailPlaybackPresenter voicemailPlaybackPresenter;
   private final OnClickListener blockReportListener;
-  @HostUi private final int hostUi;
   /** Whether the data fields are populated by the worker thread, ready to be shown. */
   public boolean isLoaded;
   /** The view containing call log item actions. Null until the ViewStub is inflated. */
@@ -143,8 +136,6 @@
 
   public View callButtonView;
   public View videoCallButtonView;
-  public View setUpVideoButtonView;
-  public View inviteVideoButtonView;
   public View createNewContactButtonView;
   public View addToExistingContactButtonView;
   public View sendMessageView;
@@ -154,10 +145,9 @@
   public View reportNotSpamView;
   public View detailsButtonView;
   public View callWithNoteButtonView;
-  public View callComposeButtonView;
   public View sendVoicemailButtonView;
-  public ImageView workIconView;
-  public ImageView checkBoxView;
+  public final ImageView workIconView;
+  public final ImageView checkBoxView;
   /**
    * The row Id for the first call associated with the call log entry. Used as a key for the map
    * used to track which call log entries have the action button section expanded.
@@ -195,9 +185,9 @@
    */
   public int callType;
   /**
-   * ID for blocked numbers database. Set when context menu is created, if the number is blocked.
+   * Set when context menu is created, if the number is blocked.
    */
-  public Integer blockId;
+  public boolean isBlocked;
   /**
    * The account for the current call log entry. Cached here as the call back intent is set only
    * when the actions ViewStub is inflated.
@@ -220,14 +210,10 @@
   public CharSequence callTypeOrLocation;
   /** The contact info for the contact displayed in this list item. */
   public volatile ContactInfo info;
-  /** Whether spam feature is enabled, which affects UI. */
-  public boolean isSpamFeatureEnabled;
   /** Whether the current log entry is a spam number or not. */
   public boolean isSpam;
 
-  public boolean isCallComposerCapable;
-
-  private View.OnClickListener expandCollapseListener;
+  private final View.OnClickListener expandCollapseListener;
   private final OnActionModeStateChangedListener onActionModeStateChangedListener;
   private final View.OnLongClickListener longPressListener;
   private boolean voicemailPrimaryActionButtonClicked;
@@ -237,7 +223,7 @@
   public CharSequence dayGroupHeaderText;
   public boolean isAttachedToWindow;
 
-  public AsyncTask<Void, Void, ?> asyncTask;
+  public CallLogAdapter.LoadDataTaskInterface asyncTask;
   private CallDetailsEntries callDetailsEntries;
 
   private CallLogListItemViewHolder(
@@ -279,40 +265,19 @@
     this.callLogEntryView = callLogEntryView;
     this.dayGroupHeader = dayGroupHeader;
     this.primaryActionButtonView = primaryActionButtonView;
-    this.workIconView = (ImageView) rootView.findViewById(R.id.work_profile_icon);
-    this.checkBoxView = (ImageView) rootView.findViewById(R.id.quick_contact_checkbox);
+    this.workIconView = rootView.findViewById(R.id.work_profile_icon);
+    this.checkBoxView = rootView.findViewById(R.id.quick_contact_checkbox);
 
     // Set text height to false on the TextViews so they don't have extra padding.
     phoneCallDetailsViews.nameView.setElegantTextHeight(false);
     phoneCallDetailsViews.callLocationAndDate.setElegantTextHeight(false);
 
-    if (this.context instanceof CallLogActivity) {
-      hostUi = HostUi.CALL_HISTORY;
-      Logger.get(this.context)
-          .logQuickContactOnTouch(
-              quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CALL_HISTORY, true);
-    } else if (this.voicemailPlaybackPresenter == null) {
-      hostUi = HostUi.CALL_LOG;
-      Logger.get(this.context)
-          .logQuickContactOnTouch(
-              quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CALL_LOG, true);
-    } else {
-      hostUi = HostUi.VOICEMAIL;
-      Logger.get(this.context)
-          .logQuickContactOnTouch(
-              quickContactView, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_VOICEMAIL, false);
-    }
-
     quickContactView.setOverlay(null);
     quickContactView.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
     primaryActionButtonView.setOnClickListener(this);
+    primaryActionButtonView.setOnLongClickListener(this);
     primaryActionView.setOnClickListener(this.expandCollapseListener);
-    if (this.voicemailPlaybackPresenter != null
-        && ConfigProviderComponent.get(this.context)
-            .getConfigProvider()
-            .getBoolean(
-                CallLogAdapter.ENABLE_CALL_LOG_MULTI_SELECT,
-                CallLogAdapter.ENABLE_CALL_LOG_MULTI_SELECT_FLAG)) {
+    if (this.voicemailPlaybackPresenter != null) {
       primaryActionView.setOnLongClickListener(longPressListener);
       quickContactView.setOnLongClickListener(longPressListener);
       quickContactView.setMulitSelectListeners(
@@ -351,90 +316,29 @@
         (ImageView) view.findViewById(R.id.primary_action_button));
   }
 
-  public static CallLogListItemViewHolder createForTest(Context context) {
-    return createForTest(context, null, null, new CallLogCache(context));
-  }
-
-  public static CallLogListItemViewHolder createForTest(
-      Context context,
-      View.OnClickListener expandCollapseListener,
-      VoicemailPlaybackPresenter voicemailPlaybackPresenter,
-      CallLogCache callLogCache) {
-    Resources resources = context.getResources();
-    PhoneCallDetailsHelper phoneCallDetailsHelper =
-        new PhoneCallDetailsHelper(context, resources, callLogCache);
-
-    CallLogListItemViewHolder viewHolder =
-        new CallLogListItemViewHolder(
-            context,
-            null,
-            expandCollapseListener /* expandCollapseListener */,
-            null,
-            null,
-            callLogCache,
-            new CallLogListItemHelper(phoneCallDetailsHelper, resources, callLogCache),
-            voicemailPlaybackPresenter,
-            LayoutInflater.from(context).inflate(R.layout.call_log_list_item, null),
-            new DialerQuickContactBadge(context),
-            new View(context),
-            PhoneCallDetailsViews.createForTest(context),
-            new CardView(context),
-            new TextView(context),
-            new ImageView(context));
-    viewHolder.detailsButtonView = new TextView(context);
-    viewHolder.actionsView = new View(context);
-    viewHolder.voicemailPlaybackView = new VoicemailPlaybackLayout(context);
-    viewHolder.workIconView = new ImageButton(context);
-    viewHolder.checkBoxView = new ImageButton(context);
-    return viewHolder;
-  }
-
   @Override
   public boolean onMenuItemClick(MenuItem item) {
     int resId = item.getItemId();
     if (resId == R.id.context_menu_copy_to_clipboard) {
       ClipboardUtils.copyText(context, null, number, true);
       return true;
-    } else if (resId == R.id.context_menu_copy_transcript_to_clipboard) {
-      ClipboardUtils.copyText(
-          context, null, phoneCallDetailsViews.voicemailTranscriptionView.getText(), true);
-      return true;
     } else if (resId == R.id.context_menu_edit_before_call) {
       final Intent intent = new Intent(Intent.ACTION_DIAL, CallUtil.getCallUri(number));
       DialerUtils.startActivityWithErrorToast(context, intent);
       return true;
     } else if (resId == R.id.context_menu_block_report_spam) {
-      Logger.get(context)
-          .logImpression(DialerImpression.Type.CALL_LOG_CONTEXT_MENU_BLOCK_REPORT_SPAM);
-      maybeShowBlockNumberMigrationDialog(
-          new BlockedNumbersMigrator.Listener() {
-            @Override
-            public void onComplete() {
-              blockReportListener.onBlockReportSpam(
-                  displayNumber, number, countryIso, callType, info.sourceType);
-            }
-          });
+      blockReportListener.onBlockReportSpam(
+              displayNumber, number, countryIso, callType, info.sourceType);
     } else if (resId == R.id.context_menu_block) {
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_CONTEXT_MENU_BLOCK_NUMBER);
-      maybeShowBlockNumberMigrationDialog(
-          new BlockedNumbersMigrator.Listener() {
-            @Override
-            public void onComplete() {
-              blockReportListener.onBlock(
-                  displayNumber, number, countryIso, callType, info.sourceType);
-            }
-          });
+      blockReportListener.onBlock(
+              displayNumber, number, countryIso, callType, info.sourceType);
     } else if (resId == R.id.context_menu_unblock) {
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_CONTEXT_MENU_UNBLOCK_NUMBER);
       blockReportListener.onUnblock(
-          displayNumber, number, countryIso, callType, info.sourceType, isSpam, blockId);
+          displayNumber, number, countryIso, callType, info.sourceType, isSpam);
     } else if (resId == R.id.context_menu_report_not_spam) {
-      Logger.get(context)
-          .logImpression(DialerImpression.Type.CALL_LOG_CONTEXT_MENU_REPORT_AS_NOT_SPAM);
       blockReportListener.onReportNotSpam(
           displayNumber, number, countryIso, callType, info.sourceType);
     } else if (resId == R.id.context_menu_delete) {
-      Logger.get(context).logImpression(DialerImpression.Type.USER_DELETED_CALL_LOG_ITEM);
       AsyncTaskExecutors.createAsyncTaskExecutor()
           .submit(TASK_DELETE, new DeleteCallTask(context, callIds));
     }
@@ -461,12 +365,6 @@
       videoCallButtonView = actionsView.findViewById(R.id.video_call_action);
       videoCallButtonView.setOnClickListener(this);
 
-      setUpVideoButtonView = actionsView.findViewById(R.id.set_up_video_action);
-      setUpVideoButtonView.setOnClickListener(this);
-
-      inviteVideoButtonView = actionsView.findViewById(R.id.invite_video_action);
-      inviteVideoButtonView.setOnClickListener(this);
-
       createNewContactButtonView = actionsView.findViewById(R.id.create_new_contact_action);
       createNewContactButtonView.setOnClickListener(this);
 
@@ -495,11 +393,10 @@
       callWithNoteButtonView = actionsView.findViewById(R.id.call_with_note_action);
       callWithNoteButtonView.setOnClickListener(this);
 
-      callComposeButtonView = actionsView.findViewById(R.id.call_compose_action);
-      callComposeButtonView.setOnClickListener(this);
-
       sendVoicemailButtonView = actionsView.findViewById(R.id.share_voicemail);
       sendVoicemailButtonView.setOnClickListener(this);
+
+      actionsView.setVisibility(View.GONE);
     }
   }
 
@@ -515,10 +412,11 @@
     if (!TextUtils.isEmpty(voicemailUri)) {
       // Treat as voicemail list item; show play button if not expanded.
       if (!isExpanded) {
-        primaryActionButtonView.setImageResource(R.drawable.quantum_ic_play_arrow_white_24);
+        primaryActionButtonView.setImageResource(R.drawable.quantum_ic_play_arrow_vd_theme_24);
         primaryActionButtonView.setContentDescription(
             TextUtils.expandTemplate(
                 context.getString(R.string.description_voicemail_action), validNameOrNumber));
+        primaryActionButtonView.setTag(null);
         primaryActionButtonView.setVisibility(View.VISIBLE);
       } else {
         primaryActionButtonView.setVisibility(View.GONE);
@@ -543,20 +441,6 @@
         primaryActionButtonView.setImageResource(R.drawable.quantum_ic_videocam_vd_theme_24);
         primaryActionButtonView.setVisibility(View.VISIBLE);
         break;
-      case CallbackAction.DUO:
-        if (showDuoPrimaryButton()) {
-          CallIntentBuilder.increaseLightbringerCallButtonAppearInCollapsedCallLogItemCount();
-          primaryActionButtonView.setTag(
-              IntentProvider.getDuoVideoIntentProvider(number, isNonContactEntry(info)));
-        } else {
-          primaryActionButtonView.setTag(IntentProvider.getReturnVideoCallIntentProvider(number));
-        }
-        primaryActionButtonView.setContentDescription(
-            TextUtils.expandTemplate(
-                context.getString(R.string.description_video_call_action), validNameOrNumber));
-        primaryActionButtonView.setImageResource(R.drawable.quantum_ic_videocam_vd_theme_24);
-        primaryActionButtonView.setVisibility(View.VISIBLE);
-        break;
       case CallbackAction.VOICE:
         if (callLogCache.isVoicemailNumber(accountHandle, number)) {
           // Call to generic voicemail number, in case there are multiple accounts
@@ -595,16 +479,13 @@
     // This saves us having to remember to set it to GONE in multiple places.
     callButtonView.setVisibility(View.GONE);
     videoCallButtonView.setVisibility(View.GONE);
-    setUpVideoButtonView.setVisibility(View.GONE);
-    inviteVideoButtonView.setVisibility(View.GONE);
 
     // For an emergency number, show "Call details" only.
-    if (PhoneNumberHelper.isLocalEmergencyNumber(context, number)) {
+    if (PhoneNumberHelper.isEmergencyNumber(context, number)) {
       createNewContactButtonView.setVisibility(View.GONE);
       addToExistingContactButtonView.setVisibility(View.GONE);
       sendMessageView.setVisibility(View.GONE);
       callWithNoteButtonView.setVisibility(View.GONE);
-      callComposeButtonView.setVisibility(View.GONE);
       blockReportView.setVisibility(View.GONE);
       blockView.setVisibility(View.GONE);
       unblockView.setVisibility(View.GONE);
@@ -630,7 +511,6 @@
       addToExistingContactButtonView.setVisibility(View.GONE);
       sendMessageView.setVisibility(View.GONE);
       callWithNoteButtonView.setVisibility(View.GONE);
-      callComposeButtonView.setVisibility(View.GONE);
       blockReportView.setVisibility(View.GONE);
       blockView.setVisibility(View.GONE);
       unblockView.setVisibility(View.GONE);
@@ -681,14 +561,12 @@
 
     switch (callbackAction) {
       case CallbackAction.IMS_VIDEO:
-      case CallbackAction.DUO:
-        // For an IMS video call or a Duo call, the secondary action should always be a
+        // For an IMS video call, the secondary action should always be a
         // voice callback.
         callButtonView.setVisibility(View.VISIBLE);
         videoCallButtonView.setVisibility(View.GONE);
         break;
       case CallbackAction.VOICE:
-        Duo duo = DuoComponent.get(context).getDuo();
         // For a voice call, set the secondary callback action to be an IMS video call if it is
         // available. Otherwise try to set it as a Duo call.
         if (CallUtil.isVideoEnabled(context)
@@ -701,45 +579,6 @@
         if (isVoicemailNumber) {
           break;
         }
-
-        boolean identifiedSpamCall = isSpamFeatureEnabled && isSpam;
-        if (duo.isReachable(context, number)) {
-          videoCallButtonView.setTag(
-              IntentProvider.getDuoVideoIntentProvider(number, isNonContactEntry(info)));
-          videoCallButtonView.setVisibility(View.VISIBLE);
-          CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
-        } else if (duo.isActivated(context) && !identifiedSpamCall) {
-          if (ConfigProviderComponent.get(context)
-              .getConfigProvider()
-              .getBoolean("enable_call_log_duo_invite_button", false)) {
-            inviteVideoButtonView.setTag(IntentProvider.getDuoInviteIntentProvider(number));
-            inviteVideoButtonView.setVisibility(View.VISIBLE);
-            Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_INVITE_SHOWN);
-            CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
-          }
-        } else if (duo.isEnabled(context) && !identifiedSpamCall) {
-          if (!duo.isInstalled(context)) {
-            if (ConfigProviderComponent.get(context)
-                .getConfigProvider()
-                .getBoolean("enable_call_log_install_duo_button", false)) {
-              setUpVideoButtonView.setTag(IntentProvider.getInstallDuoIntentProvider());
-              setUpVideoButtonView.setVisibility(View.VISIBLE);
-              Logger.get(context)
-                  .logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_INSTALL_SHOWN);
-              CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
-            }
-          } else {
-            if (ConfigProviderComponent.get(context)
-                .getConfigProvider()
-                .getBoolean("enable_call_log_activate_duo_button", false)) {
-              setUpVideoButtonView.setTag(IntentProvider.getSetUpDuoIntentProvider());
-              setUpVideoButtonView.setVisibility(View.VISIBLE);
-              Logger.get(context)
-                  .logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_ACTIVATE_SHOWN);
-              CallIntentBuilder.increaseLightbringerCallButtonAppearInExpandedCallLogItemCount();
-            }
-          }
-        }
         break;
       default:
         callButtonView.setVisibility(View.GONE);
@@ -778,7 +617,7 @@
               callDetailsEntries, buildContact(), canReportCallerId, canSupportAssistedDialing()));
     }
 
-    boolean isBlockedOrSpam = blockId != null || (isSpamFeatureEnabled && isSpam);
+    boolean isBlockedOrSpam = isBlocked || isSpam;
 
     if (!isBlockedOrSpam && info != null && UriUtils.isEncodedContactUri(info.lookupUri)) {
       createNewContactButtonView.setTag(
@@ -808,8 +647,6 @@
     callWithNoteButtonView.setVisibility(
         supportsCallSubject && !isVoicemailNumber && info != null ? View.VISIBLE : View.GONE);
 
-    callComposeButtonView.setVisibility(isCallComposerCapable ? View.VISIBLE : View.GONE);
-
     updateBlockReportActions(canPlaceCallToNumber, isVoicemailNumber);
   }
 
@@ -822,13 +659,6 @@
     return false;
   }
 
-  private boolean showDuoPrimaryButton() {
-    Duo duo = DuoComponent.get(context).getDuo();
-    return accountHandle != null
-        && duo.isDuoAccount(accountHandle)
-        && duo.isReachable(context, number);
-  }
-
   private static boolean hasDialableChar(CharSequence number) {
     if (TextUtils.isEmpty(number)) {
       return false;
@@ -870,8 +700,6 @@
    * <p>If the action views have never been shown yet for this view, inflate the view stub.
    */
   public void showActions(boolean show) {
-    showOrHideVoicemailTranscriptionView(show);
-
     if (show) {
       if (!isLoaded) {
         // a bug for some unidentified reason showActions() can be called before the item is
@@ -884,63 +712,91 @@
         return;
       }
 
+      TransitionManager.beginDelayedTransition((ViewGroup) rootView);
       // Inflate the view stub if necessary, and wire up the event handlers.
       inflateActionViewStub();
       bindActionButtons();
-      actionsView.setVisibility(View.VISIBLE);
-      actionsView.setAlpha(1.0f);
+      animateActions(true);
+      TransitionManager.endTransitions((ViewGroup) rootView);
     } else {
+      TransitionManager.beginDelayedTransition((ViewGroup) rootView);
       // When recycling a view, it is possible the actionsView ViewStub was previously
       // inflated so we should hide it in this case.
       if (actionsView != null) {
-        actionsView.setVisibility(View.GONE);
+        animateActions(false);
       }
+      TransitionManager.endTransitions((ViewGroup) rootView);
     }
-
     updatePrimaryActionButton(show);
   }
 
-  private void showOrHideVoicemailTranscriptionView(boolean isExpanded) {
-    if (callType != Calls.VOICEMAIL_TYPE) {
+  private void animateActions(boolean shouldExpand) {
+    boolean isExpanded = actionsView.getVisibility() == View.VISIBLE;
+    if (shouldExpand == isExpanded) {
       return;
     }
+    Resources res = context.getResources();
+    actionsView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
+    int currentHeight = callLogEntryView.getMeasuredHeight();
+    int additionalHeight = actionsView.getMeasuredHeight();
 
-    View transcriptContainerView = phoneCallDetailsViews.transcriptionView;
-    TextView transcriptView = phoneCallDetailsViews.voicemailTranscriptionView;
-    TextView transcriptBrandingView = phoneCallDetailsViews.voicemailTranscriptionBrandingView;
-    if (!isExpanded) {
-      transcriptContainerView.setVisibility(View.GONE);
-      return;
+    int targetHeight;
+    int colorFrom, colorTo;
+    TimeInterpolator interpolator;
+    int targetVisibility;
+    float targetElevation;
+    if (shouldExpand) {
+      targetHeight = currentHeight + additionalHeight;
+      colorFrom = res.getColor(android.R.color.transparent, context.getTheme());
+      colorTo  = res.getColor(R.color.cardBackgroundColor, context.getTheme());
+      interpolator = new AccelerateDecelerateInterpolator();
+      targetVisibility = View.VISIBLE;
+      targetElevation = 4f;
+    } else {
+      targetHeight = currentHeight - additionalHeight;
+      colorFrom  = res.getColor(R.color.cardBackgroundColor, context.getTheme());
+      colorTo = res.getColor(android.R.color.transparent, context.getTheme());
+      interpolator = new DecelerateInterpolator();
+      targetVisibility = View.GONE;
+      targetElevation = 0f;
+      // need to do this before animating, otherwise the color changes are weird
+      callLogEntryView.setCardElevation(targetElevation);
     }
 
-    boolean show = false;
-    if (TextUtils.isEmpty(transcriptView.getText())) {
-      transcriptView.setVisibility(View.GONE);
-    } else {
-      transcriptView.setVisibility(View.VISIBLE);
-      show = true;
-    }
-    if (TextUtils.isEmpty(transcriptBrandingView.getText())) {
-      transcriptBrandingView.setVisibility(View.GONE);
-    } else {
-      transcriptBrandingView.setVisibility(View.VISIBLE);
-      show = true;
-    }
-    if (show) {
-      transcriptContainerView.setVisibility(View.VISIBLE);
-    } else {
-      transcriptContainerView.setVisibility(View.GONE);
-    }
+    ValueAnimator heightAnimator = ValueAnimator.ofInt(currentHeight, targetHeight);
+    heightAnimator.addUpdateListener(animation -> {
+      callLogEntryView.getLayoutParams().height = (int) animation.getAnimatedValue();
+      callLogEntryView.requestLayout();
+    });
+    heightAnimator.setInterpolator(interpolator);
+    heightAnimator.setDuration(200);
+
+    ValueAnimator colorAnimator = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo);
+    colorAnimator.setDuration(200);
+    colorAnimator.addUpdateListener(animator -> callLogEntryView.setCardBackgroundColor(
+            (int) animator.getAnimatedValue()));
+
+    AnimatorSet animatorSet = new AnimatorSet();
+    animatorSet.playTogether(heightAnimator, colorAnimator);
+    animatorSet.addListener(new AnimatorListenerAdapter() {
+      @Override
+      public void onAnimationEnd(Animator animation) {
+        super.onAnimationEnd(animation);
+        actionsView.setVisibility(targetVisibility);
+        callLogEntryView.setCardElevation(targetElevation);
+
+        // we need to set this so we can expand again
+        ViewGroup.LayoutParams params = callLogEntryView.getLayoutParams();
+        params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
+        callLogEntryView.setLayoutParams(params);
+      }
+    });
+    animatorSet.start();
   }
 
   public void updatePhoto() {
     quickContactView.assignContactUri(info.lookupUri);
 
-    if (isSpamFeatureEnabled && isSpam) {
-      quickContactView.setImageDrawable(context.getDrawable(R.drawable.blocked_contact));
-      return;
-    }
-
     final String displayName = TextUtils.isEmpty(info.name) ? displayNumber : info.name;
     ContactPhotoManager.getInstance(context)
         .loadDialerThumbnailOrPhoto(
@@ -968,7 +824,6 @@
     }
 
     if (view.getId() == R.id.primary_action_button && !TextUtils.isEmpty(voicemailUri)) {
-      Logger.get(context).logImpression(DialerImpression.Type.VOICEMAIL_PLAY_AUDIO_DIRECTLY);
       voicemailPrimaryActionButtonClicked = true;
       expandCollapseListener.onClick(primaryActionView);
       return;
@@ -991,90 +846,58 @@
     }
 
     if (view.getId() == R.id.block_report_action) {
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_BLOCK_REPORT_SPAM);
-      maybeShowBlockNumberMigrationDialog(
-          new BlockedNumbersMigrator.Listener() {
-            @Override
-            public void onComplete() {
-              blockReportListener.onBlockReportSpam(
-                  displayNumber, number, countryIso, callType, info.sourceType);
-            }
-          });
+      blockReportListener.onBlockReportSpam(
+              displayNumber, number, countryIso, callType, info.sourceType);
       return;
     }
 
     if (view.getId() == R.id.block_action) {
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_BLOCK_NUMBER);
-      maybeShowBlockNumberMigrationDialog(
-          new BlockedNumbersMigrator.Listener() {
-            @Override
-            public void onComplete() {
-              blockReportListener.onBlock(
-                  displayNumber, number, countryIso, callType, info.sourceType);
-            }
-          });
+      blockReportListener.onBlock(
+              displayNumber, number, countryIso, callType, info.sourceType);
       return;
     }
 
     if (view.getId() == R.id.unblock_action) {
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_UNBLOCK_NUMBER);
       blockReportListener.onUnblock(
-          displayNumber, number, countryIso, callType, info.sourceType, isSpam, blockId);
+          displayNumber, number, countryIso, callType, info.sourceType, isSpam);
       return;
     }
 
     if (view.getId() == R.id.report_not_spam_action) {
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_REPORT_AS_NOT_SPAM);
       blockReportListener.onReportNotSpam(
           displayNumber, number, countryIso, callType, info.sourceType);
       return;
     }
 
-    if (view.getId() == R.id.call_compose_action) {
-      LogUtil.i("CallLogListItemViewHolder.onClick", "share and call pressed");
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_SHARE_AND_CALL);
-      Activity activity = (Activity) context;
-      activity.startActivityForResult(
-          CallComposerActivity.newIntent(activity, buildContact()),
-          ActivityRequestCodes.DIALTACTS_CALL_COMPOSER);
-      return;
-    }
-
     if (view.getId() == R.id.share_voicemail) {
-      Logger.get(context).logImpression(DialerImpression.Type.VVM_SHARE_PRESSED);
       voicemailPlaybackPresenter.shareVoicemail();
       return;
     }
 
-    logCallLogAction(view.getId());
-
     final IntentProvider intentProvider = (IntentProvider) view.getTag();
     if (intentProvider == null) {
       return;
     }
-    intentProvider.logInteraction(context);
-    final Intent intent = intentProvider.getIntent(context);
+
+    final Intent intent = intentProvider.getClickIntent(context);
     // See IntentProvider.getCallDetailIntentProvider() for why this may be null.
     if (intent == null) {
       return;
     }
     if (OldCallDetailsActivity.isLaunchIntent(intent)) {
-      PerformanceReport.recordClick(UiAction.Type.OPEN_CALL_DETAIL);
-      ((Activity) context)
-          .startActivityForResult(intent, ActivityRequestCodes.DIALTACTS_CALL_DETAILS);
+      ((Activity) context).startActivity(intent);
     } else {
-      if (Intent.ACTION_CALL.equals(intent.getAction())
-          && intent.getIntExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, -1)
-              == VideoProfile.STATE_BIDIRECTIONAL) {
-        Logger.get(context).logImpression(DialerImpression.Type.IMS_VIDEO_REQUESTED_FROM_CALL_LOG);
-      }
-
       DialerUtils.startActivityWithErrorToast(context, intent);
     }
   }
 
-  private static boolean isNonContactEntry(ContactInfo info) {
-    if (info == null || info.sourceType != Type.SOURCE_TYPE_DIRECTORY) {
+  @Override
+  public boolean onLongClick(View view) {
+    final IntentProvider intentProvider = (IntentProvider) view.getTag();
+    final Intent intent = intentProvider != null
+        ? intentProvider.getLongClickIntent(context) : null;
+    if (intent != null) {
+      DialerUtils.startActivityWithErrorToast(context, intent);
       return true;
     }
     return false;
@@ -1118,79 +941,24 @@
     return contact.build();
   }
 
-  private void logCallLogAction(int id) {
-    if (id == R.id.send_message_action) {
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_SEND_MESSAGE);
-    } else if (id == R.id.add_to_existing_contact_action) {
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_ADD_TO_CONTACT);
-      switch (hostUi) {
-        case HostUi.CALL_HISTORY:
-          Logger.get(context)
-              .logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_CALL_HISTORY);
-          break;
-        case HostUi.CALL_LOG:
-          Logger.get(context).logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_CALL_LOG);
-          break;
-        case HostUi.VOICEMAIL:
-          Logger.get(context).logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_VOICEMAIL);
-          break;
-        default:
-          throw Assert.createIllegalStateFailException();
-      }
-    } else if (id == R.id.create_new_contact_action) {
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_LOG_CREATE_NEW_CONTACT);
-      switch (hostUi) {
-        case HostUi.CALL_HISTORY:
-          Logger.get(context)
-              .logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_CALL_HISTORY);
-          break;
-        case HostUi.CALL_LOG:
-          Logger.get(context).logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_CALL_LOG);
-          break;
-        case HostUi.VOICEMAIL:
-          Logger.get(context)
-              .logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_VOICEMAIL);
-          break;
-        default:
-          throw Assert.createIllegalStateFailException();
-      }
-    }
-  }
-
-  private void maybeShowBlockNumberMigrationDialog(BlockedNumbersMigrator.Listener listener) {
-    if (!FilteredNumberCompat.maybeShowBlockNumberMigrationDialog(
-        context, ((Activity) context).getFragmentManager(), listener)) {
-      listener.onComplete();
-    }
-  }
-
   private void updateBlockReportActions(boolean canPlaceCallToNumber, boolean isVoicemailNumber) {
     // Set block/spam actions.
     blockReportView.setVisibility(View.GONE);
     blockView.setVisibility(View.GONE);
     unblockView.setVisibility(View.GONE);
     reportNotSpamView.setVisibility(View.GONE);
-    String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+
     if (!canPlaceCallToNumber
         || isVoicemailNumber
-        || !FilteredNumbersUtil.canBlockNumber(context, e164Number, number)
-        || !FilteredNumberCompat.canAttemptBlockOperations(context)) {
+        || !BlockedNumberContract.canCurrentUserBlockNumbers(context)
+        || PhoneNumberHelper.isEmergencyNumber(context, number, countryIso)) {
       return;
     }
-    boolean isBlocked = blockId != null;
+
     if (isBlocked) {
       unblockView.setVisibility(View.VISIBLE);
     } else {
-      if (isSpamFeatureEnabled) {
-        if (isSpam) {
-          blockView.setVisibility(View.VISIBLE);
-          reportNotSpamView.setVisibility(View.VISIBLE);
-        } else {
-          blockReportView.setVisibility(View.VISIBLE);
-        }
-      } else {
-        blockView.setVisibility(View.VISIBLE);
-      }
+      blockView.setVisibility(View.VISIBLE);
     }
   }
 
@@ -1198,11 +966,6 @@
     this.callDetailsEntries = callDetailsEntries;
   }
 
-  @VisibleForTesting
-  public CallDetailsEntries getDetailedPhoneDetails() {
-    return callDetailsEntries;
-  }
-
   @Override
   public void onCreateContextMenu(
       final ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
@@ -1241,24 +1004,12 @@
           .setOnMenuItemClickListener(this);
     }
 
-    if (callType == CallLog.Calls.VOICEMAIL_TYPE
-        && phoneCallDetailsViews.voicemailTranscriptionView.length() > 0) {
-      menu.add(
-              ContextMenu.NONE,
-              R.id.context_menu_copy_transcript_to_clipboard,
-              ContextMenu.NONE,
-              R.string.copy_transcript_text)
-          .setOnMenuItemClickListener(this);
-    }
-
-    String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
     boolean isVoicemailNumber = callLogCache.isVoicemailNumber(accountHandle, number);
     boolean canPlaceCallToNumber = PhoneNumberHelper.canPlaceCallsTo(number, numberPresentation);
     if (canPlaceCallToNumber
         && !isVoicemailNumber
-        && FilteredNumbersUtil.canBlockNumber(context, e164Number, number)
-        && FilteredNumberCompat.canAttemptBlockOperations(context)) {
-      boolean isBlocked = blockId != null;
+        && BlockedNumberContract.canCurrentUserBlockNumbers(context)
+            && !PhoneNumberHelper.isEmergencyNumber(context, number, countryIso)) {
       if (isBlocked) {
         menu.add(
                 ContextMenu.NONE,
@@ -1267,36 +1018,12 @@
                 R.string.call_log_action_unblock_number)
             .setOnMenuItemClickListener(this);
       } else {
-        if (isSpamFeatureEnabled) {
-          if (isSpam) {
-            menu.add(
-                    ContextMenu.NONE,
-                    R.id.context_menu_report_not_spam,
-                    ContextMenu.NONE,
-                    R.string.call_log_action_remove_spam)
-                .setOnMenuItemClickListener(this);
-            menu.add(
-                    ContextMenu.NONE,
-                    R.id.context_menu_block,
-                    ContextMenu.NONE,
-                    R.string.call_log_action_block_number)
-                .setOnMenuItemClickListener(this);
-          } else {
-            menu.add(
-                    ContextMenu.NONE,
-                    R.id.context_menu_block_report_spam,
-                    ContextMenu.NONE,
-                    R.string.call_log_action_block_report_number)
-                .setOnMenuItemClickListener(this);
-          }
-        } else {
-          menu.add(
-                  ContextMenu.NONE,
-                  R.id.context_menu_block,
-                  ContextMenu.NONE,
-                  R.string.call_log_action_block_number)
-              .setOnMenuItemClickListener(this);
-        }
+        menu.add(
+                ContextMenu.NONE,
+                R.id.context_menu_block,
+                ContextMenu.NONE,
+                R.string.call_log_action_block_number)
+            .setOnMenuItemClickListener(this);
       }
     }
 
@@ -1304,17 +1031,6 @@
       menu.add(ContextMenu.NONE, R.id.context_menu_delete, ContextMenu.NONE, R.string.delete)
           .setOnMenuItemClickListener(this);
     }
-
-    Logger.get(context).logScreenView(ScreenEvent.Type.CALL_LOG_CONTEXT_MENU, (Activity) context);
-  }
-
-  /** Specifies where the view holder belongs. */
-  @IntDef({HostUi.CALL_LOG, HostUi.CALL_HISTORY, HostUi.VOICEMAIL})
-  @Retention(RetentionPolicy.SOURCE)
-  private @interface HostUi {
-    int CALL_LOG = 0;
-    int CALL_HISTORY = 1;
-    int VOICEMAIL = 2;
   }
 
   public interface OnClickListener {
@@ -1339,8 +1055,7 @@
         String countryIso,
         int callType,
         ContactSource.Type contactSourceType,
-        boolean isSpam,
-        Integer blockId);
+        boolean isSpam);
 
     void onReportNotSpam(
         String displayNumber,
@@ -1350,7 +1065,7 @@
         ContactSource.Type contactSourceType);
   }
 
-  private static class DeleteCallTask extends AsyncTask<Void, Void, Void> {
+  private static class DeleteCallTask implements Runnable {
     // Using a weak reference to hold the Context so that there is no memory leak.
     private final WeakReference<Context> contextWeakReference;
 
@@ -1361,15 +1076,15 @@
       this.callIdsStr = concatCallIds(callIdsArray);
     }
 
-    @Override
     // Suppress the lint check here as the user will not be able to see call log entries if
     // permission.WRITE_CALL_LOG is not granted.
     @SuppressLint("MissingPermission")
     @RequiresPermission(value = permission.WRITE_CALL_LOG)
-    protected Void doInBackground(Void... params) {
+    @Override
+    public void run() {
       Context context = contextWeakReference.get();
       if (context == null) {
-        return null;
+        return;
       }
 
       if (callIdsStr != null) {
@@ -1379,14 +1094,12 @@
                 Calls.CONTENT_URI,
                 CallLog.Calls._ID + " IN (" + callIdsStr + ")" /* where */,
                 null /* selectionArgs */);
+        context
+            .getContentResolver()
+            .notifyChange(Calls.CONTENT_URI, null);
       }
-
-      return null;
     }
 
-    @Override
-    public void onPostExecute(Void result) {}
-
     private String concatCallIds(long[] callIds) {
       if (callIds == null || callIds.length == 0) {
         return null;
diff --git a/java/com/android/dialer/app/calllog/CallLogModalAlertManager.java b/java/com/android/dialer/app/calllog/CallLogModalAlertManager.java
index 9de260a..7d8ed4b 100644
--- a/java/com/android/dialer/app/calllog/CallLogModalAlertManager.java
+++ b/java/com/android/dialer/app/calllog/CallLogModalAlertManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,7 +20,8 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import com.android.dialer.app.R;
+
+import com.android.dialer.R;
 import com.android.dialer.app.alert.AlertManager;
 
 /**
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsActivity.java b/java/com/android/dialer/app/calllog/CallLogNotificationsActivity.java
index c08d2c0..b8488c5 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsActivity.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,9 @@
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
+
+import androidx.appcompat.app.AppCompatActivity;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.util.PermissionsUtil;
 
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
index 03b824e..00d08de 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsQueryHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,39 +24,32 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.net.Uri;
-import android.os.Build;
 import android.provider.CallLog.Calls;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
-import android.support.v4.os.UserManagerCompat;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
-import com.android.dialer.app.R;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+import androidx.core.os.UserManagerCompat;
+
+import com.android.dialer.R;
 import com.android.dialer.calllogutils.PhoneNumberDisplayUtil;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.database.Selection;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 import com.android.dialer.util.PermissionsUtil;
+
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 /** Helper class operating on call log notifications. */
 public class CallLogNotificationsQueryHelper {
-
-  @VisibleForTesting
-  static final String CONFIG_NEW_VOICEMAIL_NOTIFICATION_THRESHOLD_OFFSET =
-      "new_voicemail_notification_threshold";
-
   private final Context context;
   private final NewCallsQuery newCallsQuery;
   private final ContactInfoHelper contactInfoHelper;
@@ -164,11 +158,7 @@
   public List<NewCall> getNewVoicemails() {
     return newCallsQuery.query(
         Calls.VOICEMAIL_TYPE,
-        System.currentTimeMillis()
-            - ConfigProviderComponent.get(context)
-                .getConfigProvider()
-                .getLong(
-                    CONFIG_NEW_VOICEMAIL_NOTIFICATION_THRESHOLD_OFFSET, TimeUnit.DAYS.toMillis(7)));
+        System.currentTimeMillis() - TimeUnit.DAYS.toMillis(7));
   }
 
   /**
@@ -270,10 +260,8 @@
     public final int numberPresentation;
     public final String accountComponentName;
     public final String accountId;
-    public final String transcription;
     public final String countryIso;
     public final long dateMs;
-    public final int transcriptionState;
 
     public NewCall(
         Uri callsUri,
@@ -282,20 +270,16 @@
         int numberPresentation,
         String accountComponentName,
         String accountId,
-        String transcription,
         String countryIso,
-        long dateMs,
-        int transcriptionState) {
+        long dateMs) {
       this.callsUri = callsUri;
       this.voicemailUri = voicemailUri;
       this.number = number;
       this.numberPresentation = numberPresentation;
       this.accountComponentName = accountComponentName;
       this.accountId = accountId;
-      this.transcription = transcription;
       this.countryIso = countryIso;
       this.dateMs = dateMs;
-      this.transcriptionState = transcriptionState;
     }
   }
 
@@ -312,30 +296,18 @@
       Calls.NUMBER_PRESENTATION,
       Calls.PHONE_ACCOUNT_COMPONENT_NAME,
       Calls.PHONE_ACCOUNT_ID,
-      Calls.TRANSCRIPTION,
       Calls.COUNTRY_ISO,
       Calls.DATE
     };
 
-    private static final String[] PROJECTION_O;
-
-    static {
-      List<String> list = new ArrayList<>();
-      list.addAll(Arrays.asList(PROJECTION));
-      list.add(VoicemailCompat.TRANSCRIPTION_STATE);
-      PROJECTION_O = list.toArray(new String[list.size()]);
-    }
-
     private static final int ID_COLUMN_INDEX = 0;
     private static final int NUMBER_COLUMN_INDEX = 1;
     private static final int VOICEMAIL_URI_COLUMN_INDEX = 2;
     private static final int NUMBER_PRESENTATION_COLUMN_INDEX = 3;
     private static final int PHONE_ACCOUNT_COMPONENT_NAME_COLUMN_INDEX = 4;
     private static final int PHONE_ACCOUNT_ID_COLUMN_INDEX = 5;
-    private static final int TRANSCRIPTION_COLUMN_INDEX = 6;
-    private static final int COUNTRY_ISO_COLUMN_INDEX = 7;
-    private static final int DATE_COLUMN_INDEX = 8;
-    private static final int TRANSCRIPTION_STATE_COLUMN_INDEX = 9;
+    private static final int COUNTRY_ISO_COLUMN_INDEX = 6;
+    private static final int DATE_COLUMN_INDEX = 7;
 
     private final ContentResolver contentResolver;
     private final Context context;
@@ -389,7 +361,7 @@
       try (Cursor cursor =
           contentResolver.query(
               Calls.CONTENT_URI_WITH_VOICEMAIL,
-              (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) ? PROJECTION_O : PROJECTION,
+              PROJECTION,
               selection.getSelection(),
               selection.getSelectionArgs(),
               Calls.DEFAULT_SORT_ORDER)) {
@@ -428,7 +400,7 @@
       try (Cursor cursor =
           contentResolver.query(
               Calls.CONTENT_URI_WITH_VOICEMAIL,
-              (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) ? PROJECTION_O : PROJECTION,
+              PROJECTION,
               selection.getSelection(),
               selection.getSelectionArgs(),
               null)) {
@@ -456,12 +428,8 @@
           cursor.getInt(NUMBER_PRESENTATION_COLUMN_INDEX),
           cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME_COLUMN_INDEX),
           cursor.getString(PHONE_ACCOUNT_ID_COLUMN_INDEX),
-          cursor.getString(TRANSCRIPTION_COLUMN_INDEX),
           cursor.getString(COUNTRY_ISO_COLUMN_INDEX),
-          cursor.getLong(DATE_COLUMN_INDEX),
-          Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
-              ? cursor.getInt(TRANSCRIPTION_STATE_COLUMN_INDEX)
-              : VoicemailCompat.TRANSCRIPTION_NOT_STARTED);
+          cursor.getLong(DATE_COLUMN_INDEX));
     }
   }
 }
diff --git a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
index d84bd42..d2d31a3 100644
--- a/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
+++ b/java/com/android/dialer/app/calllog/CallLogNotificationsService.java
@@ -21,11 +21,12 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.app.voicemail.LegacyVoicemailNotificationReceiver;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
@@ -51,15 +52,13 @@
  */
 public class CallLogNotificationsService extends IntentService {
 
-  @VisibleForTesting
-  static final String ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD =
+  private static final String ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD =
       "com.android.dialer.calllog.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD";
 
   private static final String ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD =
       "com.android.dialer.calllog.ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD ";
 
-  @VisibleForTesting
-  static final String ACTION_CANCEL_ALL_MISSED_CALLS =
+  private static final String ACTION_CANCEL_ALL_MISSED_CALLS =
       "com.android.dialer.calllog.ACTION_CANCEL_ALL_MISSED_CALLS";
 
   private static final String ACTION_CANCEL_SINGLE_MISSED_CALL =
@@ -100,21 +99,21 @@
   public static PendingIntent createMarkAllNewVoicemailsAsOldIntent(@NonNull Context context) {
     Intent intent = new Intent(context, CallLogNotificationsService.class);
     intent.setAction(CallLogNotificationsService.ACTION_MARK_ALL_NEW_VOICEMAILS_AS_OLD);
-    return PendingIntent.getService(context, 0, intent, 0);
+    return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
   }
 
   public static PendingIntent createMarkSingleNewVoicemailAsOldIntent(
-      @NonNull Context context, @Nullable Uri voicemailUri) {
+          @NonNull Context context, @Nullable Uri voicemailUri) {
     Intent intent = new Intent(context, CallLogNotificationsService.class);
     intent.setAction(CallLogNotificationsService.ACTION_MARK_SINGLE_NEW_VOICEMAIL_AS_OLD);
     intent.setData(voicemailUri);
-    return PendingIntent.getService(context, 0, intent, 0);
+    return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
   }
 
   public static PendingIntent createCancelAllMissedCallsPendingIntent(@NonNull Context context) {
     Intent intent = new Intent(context, CallLogNotificationsService.class);
     intent.setAction(ACTION_CANCEL_ALL_MISSED_CALLS);
-    return PendingIntent.getService(context, 0, intent, 0);
+    return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
   }
 
   public static PendingIntent createCancelSingleMissedCallPendingIntent(
@@ -122,7 +121,7 @@
     Intent intent = new Intent(context, CallLogNotificationsService.class);
     intent.setAction(ACTION_CANCEL_SINGLE_MISSED_CALL);
     intent.setData(callUri);
-    return PendingIntent.getService(context, 0, intent, 0);
+    return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
   }
 
   public static PendingIntent createLegacyVoicemailDismissedPendingIntent(
@@ -130,7 +129,7 @@
     Intent intent = new Intent(context, CallLogNotificationsService.class);
     intent.setAction(ACTION_LEGACY_VOICEMAIL_DISMISSED);
     intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
-    return PendingIntent.getService(context, 0, intent, 0);
+    return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
   }
 
   @Override
@@ -160,7 +159,9 @@
         break;
       case ACTION_LEGACY_VOICEMAIL_DISMISSED:
         LegacyVoicemailNotificationReceiver.setDismissed(
-            this, intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE), true);
+                this,
+                intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE, PhoneAccountHandle.class),
+                true);
         break;
       case ACTION_CANCEL_ALL_MISSED_CALLS:
         cancelAllMissedCalls(this);
diff --git a/java/com/android/dialer/app/calllog/CallLogReceiver.java b/java/com/android/dialer/app/calllog/CallLogReceiver.java
index 654436c..e28a081 100644
--- a/java/com/android/dialer/app/calllog/CallLogReceiver.java
+++ b/java/com/android/dialer/app/calllog/CallLogReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,10 +22,9 @@
 import android.content.Intent;
 import android.database.Cursor;
 import android.provider.VoicemailContract;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler.Source;
 
 /**
  * Receiver for call log events.
@@ -55,8 +55,7 @@
             new CallLogQueryHandler.Listener() {
               @Override
               public void onVoicemailStatusFetched(Cursor statusCursor) {
-                VoicemailStatusCorruptionHandler.maybeFixVoicemailStatus(
-                    context, statusCursor, Source.Notification);
+                // Do nothing
               }
 
               @Override
diff --git a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
index 197d2da..0b4e5db 100644
--- a/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
+++ b/java/com/android/dialer/app/calllog/ClearCallLogDialog.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,23 +18,23 @@
 package com.android.dialer.app.calllog;
 
 import android.app.Activity;
-import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
 import android.app.ProgressDialog;
 import android.content.Context;
 import android.content.DialogInterface.OnClickListener;
 import android.os.Bundle;
 import android.provider.CallLog.Calls;
-import android.support.annotation.Nullable;
-import android.support.design.widget.Snackbar;
-import com.android.dialer.app.R;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.FragmentManager;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
 import com.android.dialer.phonenumbercache.PhoneNumberCache;
 
@@ -57,7 +58,7 @@
         DialerExecutorComponent.get(getContext())
             .dialerExecutorFactory()
             .createUiTaskBuilder(
-                getFragmentManager(),
+                getChildFragmentManager(),
                 "clearCallLogTask",
                 new ClearCallLogWorker(getActivity().getApplicationContext()))
             .onSuccess(this::onSuccess)
@@ -101,6 +102,7 @@
     @Override
     public Void doInBackground(@Nullable Void unused) throws Throwable {
       appContext.getContentResolver().delete(Calls.CONTENT_URI, null, null);
+      appContext.getContentResolver().notifyChange(Calls.CONTENT_URI, null);
       CachedNumberLookupService cachedNumberLookupService =
           PhoneNumberCache.get(appContext).getCachedNumberLookupService();
       if (cachedNumberLookupService != null) {
@@ -118,20 +120,8 @@
       return;
     }
 
-    maybeShowEnrichedCallSnackbar(activity);
-
     if (progressDialog != null && progressDialog.isShowing()) {
       progressDialog.dismiss();
     }
   }
-
-  private void maybeShowEnrichedCallSnackbar(Activity activity) {
-    if (EnrichedCallComponent.get(activity).getEnrichedCallManager().hasStoredData()) {
-      Snackbar.make(
-              activity.findViewById(R.id.calllog_frame),
-              activity.getString(R.string.multiple_ec_data_deleted),
-              5_000)
-          .show();
-    }
-  }
 }
diff --git a/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java b/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java
index 81aed8b..5a4dd0a 100644
--- a/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java
+++ b/java/com/android/dialer/app/calllog/DialerQuickContactBadge.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,9 +21,8 @@
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.QuickContactBadge;
+
 import com.android.dialer.app.calllog.CallLogAdapter.OnActionModeStateChangedListener;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 
 /** Allows us to click the contact badge for non multi select mode. */
 class DialerQuickContactBadge extends QuickContactBadge {
@@ -46,8 +46,6 @@
   public void onClick(View v) {
     if (extraOnClickListener != null
         && onActionModeStateChangeListener.isActionModeStateEnabled()) {
-      Logger.get(v.getContext())
-          .logImpression(DialerImpression.Type.MULTISELECT_SINGLE_PRESS_TAP_VIA_CONTACT_BADGE);
       extraOnClickListener.onClick(v);
     } else {
       super.onClick(v);
diff --git a/java/com/android/dialer/app/calllog/GroupingListAdapter.java b/java/com/android/dialer/app/calllog/GroupingListAdapter.java
index 29a4d4e..01250ab 100644
--- a/java/com/android/dialer/app/calllog/GroupingListAdapter.java
+++ b/java/com/android/dialer/app/calllog/GroupingListAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,9 +21,11 @@
 import android.database.Cursor;
 import android.database.DataSetObserver;
 import android.os.Handler;
-import android.support.v7.widget.RecyclerView;
+import android.os.Looper;
 import android.util.SparseIntArray;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 /**
  * Maintains a list that groups items into groups of consecutive elements which are disjoint, that
  * is, an item can only belong to one group. This is leveraged for grouping calls in the call log
@@ -32,8 +35,8 @@
  */
 abstract class GroupingListAdapter extends RecyclerView.Adapter {
 
-  protected ContentObserver changeObserver =
-      new ContentObserver(new Handler()) {
+  protected final ContentObserver changeObserver =
+      new ContentObserver(new Handler(Looper.getMainLooper())) {
         @Override
         public boolean deliverSelfNotifications() {
           return true;
@@ -44,7 +47,7 @@
           onContentChanged();
         }
       };
-  protected DataSetObserver dataSetObserver =
+  protected final DataSetObserver dataSetObserver =
       new DataSetObserver() {
         @Override
         public void onChanged() {
diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java
index 423b49c..10d6a89 100644
--- a/java/com/android/dialer/app/calllog/IntentProvider.java
+++ b/java/com/android/dialer/app/calllog/IntentProvider.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,21 +22,20 @@
 import android.content.Intent;
 import android.net.Uri;
 import android.provider.ContactsContract;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
+
 import com.android.contacts.common.model.Contact;
 import com.android.contacts.common.model.ContactLoader;
+import com.android.dialer.app.AccountSelectionActivity;
 import com.android.dialer.calldetails.CallDetailsEntries;
 import com.android.dialer.calldetails.OldCallDetailsActivity;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.dialercontact.DialerContact;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.util.IntentUtil;
+
 import java.util.ArrayList;
 
 /**
@@ -55,12 +55,18 @@
       final String number, final PhoneAccountHandle accountHandle) {
     return new IntentProvider() {
       @Override
-      public Intent getIntent(Context context) {
+      public Intent getClickIntent(Context context) {
         return PreCall.getIntent(
             context,
             new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
                 .setPhoneAccountHandle(accountHandle));
       }
+
+      @Override
+      public Intent getLongClickIntent(Context context) {
+        return AccountSelectionActivity.createIntent(context, number,
+            CallInitiationType.Type.CALL_LOG);
+      }
     };
   }
 
@@ -68,12 +74,13 @@
       final String number, final Context context, final TelephonyManager telephonyManager) {
     return new IntentProvider() {
       @Override
-      public Intent getIntent(Context context) {
+      public Intent getClickIntent(Context context) {
         return PreCall.getIntent(
             context,
             new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
                 .setAllowAssistedDial(true));
       }
+
     };
   }
 
@@ -85,7 +92,7 @@
       final String number, final PhoneAccountHandle accountHandle) {
     return new IntentProvider() {
       @Override
-      public Intent getIntent(Context context) {
+      public Intent getClickIntent(Context context) {
         return PreCall.getIntent(
             context,
             new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
@@ -95,76 +102,10 @@
     };
   }
 
-  public static IntentProvider getDuoVideoIntentProvider(String number, boolean isNonContact) {
-    return new IntentProvider() {
-      @Override
-      public Intent getIntent(Context context) {
-        return PreCall.getIntent(
-            context,
-            new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
-                .setIsDuoCall(true)
-                .setIsVideoCall(true));
-      }
-
-      @Override
-      public void logInteraction(Context context) {
-        Logger.get(context)
-            .logImpression(DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FROM_CALL_LOG);
-        if (isNonContact) {
-          Logger.get(context)
-              .logImpression(
-                  DialerImpression.Type.LIGHTBRINGER_NON_CONTACT_VIDEO_REQUESTED_FROM_CALL_LOG);
-        }
-      }
-    };
-  }
-
-  public static IntentProvider getInstallDuoIntentProvider() {
-    return new IntentProvider() {
-      @Override
-      public Intent getIntent(Context context) {
-        return DuoComponent.get(context).getDuo().getInstallDuoIntent().orNull();
-      }
-
-      @Override
-      public void logInteraction(Context context) {
-        Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_INSTALL);
-      }
-    };
-  }
-
-  public static IntentProvider getSetUpDuoIntentProvider() {
-    return new IntentProvider() {
-      @Override
-      public Intent getIntent(Context context) {
-        return DuoComponent.get(context).getDuo().getActivateIntent().orNull();
-      }
-
-      @Override
-      public void logInteraction(Context context) {
-        Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_ACTIVATE);
-      }
-    };
-  }
-
-  public static IntentProvider getDuoInviteIntentProvider(String number) {
-    return new IntentProvider() {
-      @Override
-      public Intent getIntent(Context context) {
-        return DuoComponent.get(context).getDuo().getInviteIntent(number).orNull();
-      }
-
-      @Override
-      public void logInteraction(Context context) {
-        Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_INVITE);
-      }
-    };
-  }
-
   public static IntentProvider getReturnVoicemailCallIntentProvider() {
     return new IntentProvider() {
       @Override
-      public Intent getIntent(Context context) {
+      public Intent getClickIntent(Context context) {
         return PreCall.getIntent(
             context,
             CallIntentBuilder.forVoicemail(CallInitiationType.Type.CALL_LOG));
@@ -175,7 +116,7 @@
   public static IntentProvider getSendSmsIntentProvider(final String number) {
     return new IntentProvider() {
       @Override
-      public Intent getIntent(Context context) {
+      public Intent getClickIntent(Context context) {
         return IntentUtil.getSendSmsIntent(number);
       }
     };
@@ -197,7 +138,7 @@
       boolean canSupportAssistedDialing) {
     return new IntentProvider() {
       @Override
-      public Intent getIntent(Context context) {
+      public Intent getClickIntent(Context context) {
         return OldCallDetailsActivity.newInstance(
             context, callDetailsEntries, contact, canReportCallerId, canSupportAssistedDialing);
       }
@@ -213,7 +154,7 @@
       final boolean isNewContact) {
     return new IntentProvider() {
       @Override
-      public Intent getIntent(Context context) {
+      public Intent getClickIntent(Context context) {
         Contact contactToSave = null;
 
         if (lookupUri != null) {
@@ -274,7 +215,8 @@
     };
   }
 
-  public abstract Intent getIntent(Context context);
-
-  public void logInteraction(Context context) {}
+  public abstract Intent getClickIntent(Context context);
+  public Intent getLongClickIntent(Context context) {
+    return null;
+  }
 }
diff --git a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
index 62ae748..3eb4616 100644
--- a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
+++ b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java
@@ -16,20 +16,20 @@
 
 package com.android.dialer.app.calllog;
 
-import android.annotation.TargetApi;
+import android.annotation.SuppressLint;
 import android.app.Notification;
 import android.app.PendingIntent;
 import android.content.Context;
-import android.os.Build.VERSION_CODES;
 import android.os.PersistableBundle;
-import android.support.annotation.NonNull;
-import android.support.v4.os.BuildCompat;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.CarrierConfigManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.app.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
@@ -41,7 +41,6 @@
 import com.android.dialer.theme.base.ThemeComponent;
 
 /** Shows a notification in the status bar for legacy vociemail. */
-@TargetApi(VERSION_CODES.O)
 public final class LegacyVoicemailNotifier {
   private static final String NOTIFICATION_TAG_PREFIX = "LegacyVoicemail_";
   private static final String NOTIFICATION_TAG = "LegacyVoicemail";
@@ -62,7 +61,6 @@
       boolean isRefresh) {
     LogUtil.enterBlock("LegacyVoicemailNotifier.showNotification");
     Assert.isNotNull(handle);
-    Assert.checkArgument(BuildCompat.isAtLeastO());
 
     TelephonyManager pinnedTelephonyManager =
         context.getSystemService(TelephonyManager.class).createForPhoneAccountHandle(handle);
@@ -99,6 +97,7 @@
         context
             .getResources()
             .getQuantityString(R.plurals.notification_voicemail_title, count, count);
+    @SuppressLint("MissingPermission")
     PersistableBundle config = pinnedTelephonyManager.getCarrierConfig();
     boolean isOngoing;
     if (config == null) {
@@ -159,7 +158,6 @@
   public static void cancelNotification(
       @NonNull Context context, @NonNull PhoneAccountHandle phoneAccountHandle) {
     LogUtil.enterBlock("LegacyVoicemailNotifier.cancelNotification");
-    Assert.checkArgument(BuildCompat.isAtLeastO());
     Assert.isNotNull(phoneAccountHandle);
     if ("null".equals(phoneAccountHandle.getId())) {
       // while PhoneAccountHandle itself will never be null, telephony may still construct a "null"
@@ -178,7 +176,7 @@
   @NonNull
   private static String getNotificationTag(
       @NonNull Context context, @NonNull PhoneAccountHandle phoneAccountHandle) {
-    if (context.getSystemService(TelephonyManager.class).getPhoneCount() <= 1) {
+    if (context.getSystemService(TelephonyManager.class).getActiveModemCount() <= 1) {
       return NOTIFICATION_TAG;
     }
 
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java b/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java
index f24b3cd..6bf9203 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,10 +20,11 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.support.v4.util.Pair;
+
+import androidx.core.util.Pair;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import me.leolin.shortcutbadger.ShortcutBadger;
 
 /**
  * Receives broadcasts that should trigger a refresh of the missed call notification. This includes
@@ -63,7 +65,6 @@
               LogUtil.i(
                   "MissedCallNotificationReceiver.onReceive",
                   "update missed call notifications successful");
-              updateBadgeCount(context, count);
               pendingResult.finish();
             })
         .onFailure(
@@ -76,13 +77,4 @@
         .build()
         .executeParallel(new Pair<>(count, phoneNumber));
   }
-
-  private static void updateBadgeCount(Context context, int count) {
-    boolean success = ShortcutBadger.applyCount(context, count);
-    LogUtil.i(
-        "MissedCallNotificationReceiver.updateBadgeCount",
-        "update badge count: %d success: %b",
-        count,
-        success);
-  }
 }
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotifier.java b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
index 64536c8..85ca135 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotifier.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,9 @@
 
 import static com.android.dialer.app.DevicePolicyResources.NOTIFICATION_MISSED_WORK_CALL_TITLE;
 
+import android.annotation.SuppressLint;
 import android.app.BroadcastOptions;
 import android.app.Notification;
-import android.app.Notification.Builder;
 import android.app.PendingIntent;
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
@@ -31,13 +32,6 @@
 import android.os.Bundle;
 import android.provider.CallLog.Calls;
 import android.service.notification.StatusBarNotification;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
-import android.support.v4.os.BuildCompat;
-import android.support.v4.os.UserManagerCompat;
-import android.support.v4.util.Pair;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -47,19 +41,21 @@
 import android.text.TextUtils;
 import android.util.ArraySet;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+import androidx.core.os.UserManagerCompat;
+import androidx.core.util.Pair;
+
 import com.android.contacts.common.ContactsUtils;
+import com.android.dialer.R;
 import com.android.dialer.app.MainComponent;
-import com.android.dialer.app.R;
 import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
 import com.android.dialer.app.contactinfo.ContactPhotoLoader;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.enrichedcall.FuzzyPhoneNumberMatcher;
 import com.android.dialer.notification.DialerNotificationManager;
 import com.android.dialer.notification.NotificationChannelId;
 import com.android.dialer.notification.missedcalls.MissedCallConstants;
@@ -82,8 +78,7 @@
   private final Context context;
   private final CallLogNotificationsQueryHelper callLogNotificationsQueryHelper;
 
-  @VisibleForTesting
-  MissedCallNotifier(
+  private MissedCallNotifier(
       Context context, CallLogNotificationsQueryHelper callLogNotificationsQueryHelper) {
     this.context = context;
     this.callLogNotificationsQueryHelper = callLogNotificationsQueryHelper;
@@ -109,7 +104,6 @@
    * @param number the phone number of the most recent call to display if the call log cannot be
    *     accessed. May be null if unknown.
    */
-  @VisibleForTesting
   @WorkerThread
   void updateMissedCallNotification(int count, @Nullable String number) {
     LogUtil.enterBlock("MissedCallNotifier.updateMissedCallNotification");
@@ -167,9 +161,7 @@
                   null,
                   null,
                   null,
-                  null,
-                  System.currentTimeMillis(),
-                  VoicemailCompat.TRANSCRIPTION_NOT_STARTED);
+                  System.currentTimeMillis());
 
       // TODO: look up caller ID that is not in contacts.
       ContactInfo contactInfo =
@@ -223,10 +215,8 @@
             CallLogNotificationsService.createCancelAllMissedCallsPendingIntent(context))
         .setGroupSummary(useCallList)
         .setOnlyAlertOnce(useCallList)
-        .setPublicVersion(publicSummaryBuilder.build());
-    if (BuildCompat.isAtLeastO()) {
-      groupSummary.setChannelId(NotificationChannelId.MISSED_CALL);
-    }
+        .setPublicVersion(publicSummaryBuilder.build())
+        .setChannelId(NotificationChannelId.MISSED_CALL);
 
     Notification notification = groupSummary.build();
     configureLedOnNotification(notification);
@@ -291,10 +281,6 @@
       if (phoneAccount == null) {
         continue;
       }
-      if (DuoComponent.get(context).getDuo().isDuoAccount(phoneAccountHandle)) {
-        iterator.remove();
-        continue;
-      }
       if (phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SELF_MANAGED)) {
         LogUtil.i(
             "MissedCallNotifier.removeSelfManagedCalls",
@@ -308,28 +294,6 @@
     return MissedCallNotificationTags.getNotificationTagForCallUri(call.callsUri);
   }
 
-  @WorkerThread
-  public void insertPostCallNotification(@NonNull String number, @NonNull String note) {
-    Assert.isWorkerThread();
-    LogUtil.enterBlock("MissedCallNotifier.insertPostCallNotification");
-    List<NewCall> newCalls = callLogNotificationsQueryHelper.getNewMissedCalls();
-    if (newCalls != null && !newCalls.isEmpty()) {
-      for (NewCall call : newCalls) {
-        if (FuzzyPhoneNumberMatcher.matches(call.number, number.replace("tel:", ""))) {
-          LogUtil.i("MissedCallNotifier.insertPostCallNotification", "Notification updated");
-          // Update the first notification that matches our post call note sender.
-          DialerNotificationManager.notify(
-              context,
-              getNotificationTagForCall(call),
-              MissedCallConstants.NOTIFICATION_ID,
-              getNotificationForCall(call, note));
-          return;
-        }
-      }
-    }
-    LogUtil.i("MissedCallNotifier.insertPostCallNotification", "notification not found");
-  }
-
   private Notification getNotificationForCall(
       @NonNull NewCall call, @Nullable String postCallMessage) {
     ContactInfo contactInfo =
@@ -382,7 +346,7 @@
           && !TextUtils.equals(call.number, context.getString(R.string.handle_restricted))) {
         builder.addAction(
             new Notification.Action.Builder(
-                    Icon.createWithResource(context, R.drawable.ic_phone_24dp),
+                    Icon.createWithResource(context, R.drawable.quantum_ic_phone_vd_theme_24),
                     context.getString(R.string.notification_missedCall_call_back),
                     createCallBackPendingIntent(call.number, call.callsUri))
                 .build());
@@ -390,7 +354,7 @@
         if (!PhoneNumberHelper.isUriNumber(call.number)) {
           builder.addAction(
               new Notification.Action.Builder(
-                      Icon.createWithResource(context, R.drawable.quantum_ic_message_white_24),
+                      Icon.createWithResource(context, R.drawable.quantum_ic_message_vd_theme_24),
                       context.getString(R.string.notification_missedCall_message),
                       createSendSmsFromNotificationPendingIntent(call.number, call.callsUri))
                   .build());
@@ -404,7 +368,7 @@
   }
 
   private Notification.Builder createNotificationBuilder() {
-    return new Notification.Builder(context)
+    return new Notification.Builder(context, NotificationChannelId.MISSED_CALL)
         .setGroup(MissedCallConstants.GROUP_KEY)
         .setSmallIcon(android.R.drawable.stat_notify_missed_call)
         .setColor(ThemeComponent.get(context).theme().getColorPrimary())
@@ -415,16 +379,14 @@
   }
 
   private Notification.Builder createNotificationBuilder(@NonNull NewCall call) {
-    Builder builder =
+    Notification.Builder builder =
         createNotificationBuilder()
             .setWhen(call.dateMs)
             .setDeleteIntent(
                 CallLogNotificationsService.createCancelSingleMissedCallPendingIntent(
                     context, call.callsUri))
-            .setContentIntent(createCallLogPendingIntent(call.callsUri));
-    if (BuildCompat.isAtLeastO()) {
-      builder.setChannelId(NotificationChannelId.MISSED_CALL);
-    }
+            .setContentIntent(createCallLogPendingIntent(call.callsUri))
+            .setChannelId(NotificationChannelId.MISSED_CALL);
 
     return builder;
   }
@@ -472,7 +434,8 @@
 
     // TODO (a bug): scroll to call
     contentIntent.setData(callUri);
-    return PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+    return PendingIntent.getActivity(context, 0, contentIntent,
+            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
   }
 
   private PendingIntent createCallBackPendingIntent(String number, @NonNull Uri callUri) {
@@ -482,7 +445,8 @@
     intent.setData(callUri);
     // Use FLAG_UPDATE_CURRENT to make sure any previous pending intent is updated with the new
     // extra.
-    return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+    return PendingIntent.getService(context, 0, intent,
+            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
   }
 
   private PendingIntent createSendSmsFromNotificationPendingIntent(
@@ -493,7 +457,8 @@
     intent.setData(callUri);
     // Use FLAG_UPDATE_CURRENT to make sure any previous pending intent is updated with the new
     // extra.
-    return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+    return PendingIntent.getActivity(context, 0, intent,
+            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
   }
 
   /** Configures a notification to emit the blinky notification light. */
@@ -503,6 +468,7 @@
   }
 
   /** Closes open system dialogs and the notification shade. */
+  @SuppressLint("MissingPermission")
   private void closeSystemDialogs(Context context) {
     final Intent intent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
             .addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
index 9d04cb2..4bd74fd 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,63 +17,38 @@
 
 package com.android.dialer.app.calllog;
 
-import android.app.AlertDialog;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.res.Resources;
 import android.graphics.Typeface;
-import android.net.Uri;
 import android.provider.CallLog.Calls;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.os.BuildCompat;
 import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
-import android.telephony.PhoneNumberUtils;
-import android.text.SpannableString;
+import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
-import android.text.method.LinkMovementMethod;
-import android.text.util.Linkify;
-import android.util.TypedValue;
-import android.view.Gravity;
 import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-import android.widget.Toast;
+
 import com.android.dialer.app.R;
 import com.android.dialer.app.calllog.calllogcache.CallLogCache;
 import com.android.dialer.calllogutils.PhoneCallDetails;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
 import com.android.dialer.logging.ContactSource;
 import com.android.dialer.oem.MotorolaUtils;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
 import com.android.dialer.phonenumbercache.PhoneNumberCache;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.spannable.ContentWithLearnMoreSpanner;
-import com.android.dialer.storage.StorageComponent;
 import com.android.dialer.theme.base.ThemeComponent;
 import com.android.dialer.util.DialerUtils;
-import com.android.voicemail.VoicemailClient;
-import com.android.voicemail.VoicemailComponent;
-import com.android.voicemail.impl.transcribe.TranscriptionRatingHelper;
-import com.google.internal.communications.voicemailtranscription.v1.TranscriptionRatingValue;
+
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.concurrent.TimeUnit;
 
 /** Helper class to fill in the views in {@link PhoneCallDetailsViews}. */
-public class PhoneCallDetailsHelper
-    implements TranscriptionRatingHelper.SuccessListener,
-        TranscriptionRatingHelper.FailureListener {
+public class PhoneCallDetailsHelper {
   /** The maximum number of icons will be shown to represent the call types in a group. */
   private static final int MAX_CALL_TYPE_ICONS = 3;
 
-  private static final String PREF_VOICEMAIL_DONATION_PROMO_SHOWN_KEY =
-      "pref_voicemail_donation_promo_shown_key";
-
   private final Context context;
   private final Resources resources;
   private final CallLogCache callLogCache;
@@ -80,12 +56,9 @@
   private final Calendar calendar;
 
   private final CachedNumberLookupService cachedNumberLookupService;
-  /** The injected current time in milliseconds since the epoch. Used only by tests. */
-  private Long currentTimeMillisForTest;
 
-  private CharSequence phoneTypeLabelForTest;
   /** List of items to be concatenated together for accessibility descriptions */
-  private ArrayList<CharSequence> descriptionItems = new ArrayList<>();
+  private final ArrayList<CharSequence> descriptionItems = new ArrayList<>();
 
   /**
    * Creates a new instance of the helper.
@@ -102,33 +75,6 @@
     cachedNumberLookupService = PhoneNumberCache.get(context).getCachedNumberLookupService();
   }
 
-  static boolean shouldShowVoicemailDonationPromo(
-      Context context, PhoneAccountHandle accountHandle) {
-    VoicemailClient client = VoicemailComponent.get(context).getVoicemailClient();
-    return client.isVoicemailDonationAvailable(context, accountHandle)
-        && !hasSeenVoicemailDonationPromo(context);
-  }
-
-  static boolean hasSeenVoicemailDonationPromo(Context context) {
-    return StorageComponent.get(context.getApplicationContext())
-        .unencryptedSharedPrefs()
-        .getBoolean(PREF_VOICEMAIL_DONATION_PROMO_SHOWN_KEY, false);
-  }
-
-  private static int dpsToPixels(Context context, int dps) {
-    return (int)
-        (TypedValue.applyDimension(
-            TypedValue.COMPLEX_UNIT_DIP, dps, context.getResources().getDisplayMetrics()));
-  }
-
-  private static void recordPromoShown(Context context) {
-    StorageComponent.get(context.getApplicationContext())
-        .unencryptedSharedPrefs()
-        .edit()
-        .putBoolean(PREF_VOICEMAIL_DONATION_PROMO_SHOWN_KEY, true)
-        .apply();
-  }
-
   /** Returns true if primary name is empty or the data is from Cequint Caller ID. */
   private boolean shouldShowLocation(PhoneCallDetails details) {
     if (TextUtils.isEmpty(details.geocode)) {
@@ -173,9 +119,7 @@
     views.callTypeIcons.setShowAssistedDialed(
         (details.features & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING)
             == TelephonyManagerCompat.FEATURES_ASSISTED_DIALING);
-    if (BuildCompat.isAtLeastP()) {
-      views.callTypeIcons.setShowRtt((details.features & Calls.FEATURES_RTT) == Calls.FEATURES_RTT);
-    }
+    views.callTypeIcons.setShowRtt((details.features & Calls.FEATURES_RTT) == Calls.FEATURES_RTT);
     views.callTypeIcons.requestLayout();
     views.callTypeIcons.setVisibility(View.VISIBLE);
 
@@ -207,7 +151,8 @@
       int color = callLogCache.getAccountColor(details.accountHandle);
       if (color == PhoneAccount.NO_HIGHLIGHT_COLOR) {
         int defaultColor = R.color.dialer_secondary_text_color;
-        views.callAccountLabel.setTextColor(context.getResources().getColor(defaultColor));
+        views.callAccountLabel.setTextColor(context.getResources().getColor(defaultColor,
+                context.getTheme()));
       } else {
         views.callAccountLabel.setTextColor(color);
       }
@@ -217,67 +162,9 @@
 
     setNameView(views, details);
 
-    if (isVoicemail) {
-      int relevantLinkTypes = Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS | Linkify.WEB_URLS;
-      views.voicemailTranscriptionView.setAutoLinkMask(relevantLinkTypes);
-
-      String transcript = "";
-      String branding = "";
-      if (!TextUtils.isEmpty(details.transcription)) {
-        transcript = details.transcription;
-
-        if (details.transcriptionState == VoicemailCompat.TRANSCRIPTION_AVAILABLE
-            || details.transcriptionState == VoicemailCompat.TRANSCRIPTION_AVAILABLE_AND_RATED) {
-          branding = resources.getString(R.string.voicemail_transcription_branding_text);
-        }
-      } else {
-        switch (details.transcriptionState) {
-          case VoicemailCompat.TRANSCRIPTION_IN_PROGRESS:
-            branding = resources.getString(R.string.voicemail_transcription_in_progress);
-            break;
-          case VoicemailCompat.TRANSCRIPTION_FAILED_NO_SPEECH_DETECTED:
-            branding = resources.getString(R.string.voicemail_transcription_failed_no_speech);
-            break;
-          case VoicemailCompat.TRANSCRIPTION_FAILED_LANGUAGE_NOT_SUPPORTED:
-            branding =
-                resources.getString(R.string.voicemail_transcription_failed_language_not_supported);
-            break;
-          case VoicemailCompat.TRANSCRIPTION_FAILED:
-            branding = resources.getString(R.string.voicemail_transcription_failed);
-            break;
-          default:
-            break; // Fall through
-        }
-      }
-
-      views.voicemailTranscriptionView.setText(transcript);
-      views.voicemailTranscriptionBrandingView.setText(branding);
-
-      View ratingView = views.voicemailTranscriptionRatingView;
-      if (shouldShowTranscriptionRating(details.transcriptionState, details.accountHandle)) {
-        ratingView.setVisibility(View.VISIBLE);
-        ratingView
-            .findViewById(R.id.voicemail_transcription_rating_good)
-            .setOnClickListener(
-                view ->
-                    recordTranscriptionRating(
-                        TranscriptionRatingValue.GOOD_TRANSCRIPTION, details, ratingView));
-        ratingView
-            .findViewById(R.id.voicemail_transcription_rating_bad)
-            .setOnClickListener(
-                view ->
-                    recordTranscriptionRating(
-                        TranscriptionRatingValue.BAD_TRANSCRIPTION, details, ratingView));
-      } else {
-        ratingView.setVisibility(View.GONE);
-      }
-    }
-
     // Bold if not read
     Typeface typeface = details.isRead ? Typeface.SANS_SERIF : Typeface.DEFAULT_BOLD;
     views.nameView.setTypeface(typeface);
-    views.voicemailTranscriptionView.setTypeface(typeface);
-    views.voicemailTranscriptionBrandingView.setTypeface(typeface);
     views.callLocationAndDate.setTypeface(typeface);
     views.callLocationAndDate.setTextColor(
         details.isRead
@@ -294,7 +181,8 @@
       return;
     }
 
-    if (PhoneNumberUtils.isEmergencyNumber(details.displayNumber)) {
+    TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+    if (telephonyManager.isEmergencyNumber(details.displayNumber)) {
       views.nameView.setText(R.string.emergency_number);
       views.nameView.setTextDirection(View.TEXT_DIRECTION_INHERIT);
       return;
@@ -305,133 +193,6 @@
     views.nameView.setTextDirection(View.TEXT_DIRECTION_LTR);
   }
 
-  private boolean shouldShowTranscriptionRating(
-      int transcriptionState, PhoneAccountHandle account) {
-    if (transcriptionState != VoicemailCompat.TRANSCRIPTION_AVAILABLE) {
-      return false;
-    }
-
-    VoicemailClient client = VoicemailComponent.get(context).getVoicemailClient();
-    if (client.isVoicemailDonationEnabled(context, account)) {
-      return true;
-    }
-
-    // Also show the rating option if voicemail donation is available (but not enabled)
-    // and the donation promo has not yet been shown.
-    if (client.isVoicemailDonationAvailable(context, account)
-        && !hasSeenVoicemailDonationPromo(context)) {
-      return true;
-    }
-
-    return false;
-  }
-
-  private void recordTranscriptionRating(
-      TranscriptionRatingValue ratingValue, PhoneCallDetails details, View ratingView) {
-    LogUtil.enterBlock("PhoneCallDetailsHelper.recordTranscriptionRating");
-
-    if (shouldShowVoicemailDonationPromo(context, details.accountHandle)) {
-      showVoicemailDonationPromo(ratingValue, details, ratingView);
-    } else {
-      TranscriptionRatingHelper.sendRating(
-          context,
-          ratingValue,
-          Uri.parse(details.voicemailUri),
-          this::onRatingSuccess,
-          this::onRatingFailure);
-    }
-  }
-
-  private void showVoicemailDonationPromo(
-      TranscriptionRatingValue ratingValue, PhoneCallDetails details, View ratingView) {
-    AlertDialog.Builder builder = new AlertDialog.Builder(context);
-    builder.setMessage(getVoicemailDonationPromoContent());
-    builder.setPositiveButton(
-        R.string.voicemail_donation_promo_opt_in,
-        new DialogInterface.OnClickListener() {
-          @Override
-          public void onClick(final DialogInterface dialog, final int button) {
-            LogUtil.i("PhoneCallDetailsHelper.showVoicemailDonationPromo", "onClick");
-            dialog.cancel();
-            recordPromoShown(context);
-            VoicemailComponent.get(context)
-                .getVoicemailClient()
-                .setVoicemailDonationEnabled(context, details.accountHandle, true);
-            TranscriptionRatingHelper.sendRating(
-                context,
-                ratingValue,
-                Uri.parse(details.voicemailUri),
-                PhoneCallDetailsHelper.this::onRatingSuccess,
-                PhoneCallDetailsHelper.this::onRatingFailure);
-            ratingView.setVisibility(View.GONE);
-          }
-        });
-    builder.setNegativeButton(
-        R.string.voicemail_donation_promo_opt_out,
-        new DialogInterface.OnClickListener() {
-          @Override
-          public void onClick(final DialogInterface dialog, final int button) {
-            VoicemailComponent.get(context)
-                .getVoicemailClient()
-                .setVoicemailDonationEnabled(context, details.accountHandle, false);
-            dialog.cancel();
-            recordPromoShown(context);
-            ratingView.setVisibility(View.GONE);
-          }
-        });
-    builder.setCancelable(true);
-    AlertDialog dialog = builder.create();
-
-    TextView title = new TextView(context);
-    title.setText(R.string.voicemail_donation_promo_title);
-
-    title.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL));
-    title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
-    title.setTextColor(ContextCompat.getColor(context, R.color.dialer_primary_text_color));
-    title.setPadding(
-        dpsToPixels(context, 24), /* left */
-        dpsToPixels(context, 10), /* top */
-        dpsToPixels(context, 24), /* right */
-        dpsToPixels(context, 0)); /* bottom */
-    dialog.setCustomTitle(title);
-
-    dialog.show();
-
-    // Make the message link clickable and adjust the appearance of the message and buttons
-    TextView textView = (TextView) dialog.findViewById(android.R.id.message);
-    textView.setLineSpacing(0, 1.2f);
-    textView.setMovementMethod(LinkMovementMethod.getInstance());
-    Button positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
-    if (positiveButton != null) {
-      positiveButton.setTextColor(ThemeComponent.get(context).theme().getColorPrimary());
-    }
-    Button negativeButton = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
-    if (negativeButton != null) {
-      negativeButton.setTextColor(ThemeComponent.get(context).theme().getTextColorSecondary());
-    }
-  }
-
-  private SpannableString getVoicemailDonationPromoContent() {
-    return new ContentWithLearnMoreSpanner(context)
-        .create(
-            context.getString(R.string.voicemail_donation_promo_content),
-            context.getString(R.string.voicemail_donation_promo_learn_more_url));
-  }
-
-  @Override
-  public void onRatingSuccess(Uri voicemailUri) {
-    LogUtil.enterBlock("PhoneCallDetailsHelper.onRatingSuccess");
-    Toast toast =
-        Toast.makeText(context, R.string.voicemail_transcription_rating_thanks, Toast.LENGTH_LONG);
-    toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 50);
-    toast.show();
-  }
-
-  @Override
-  public void onRatingFailure(Throwable t) {
-    LogUtil.e("PhoneCallDetailsHelper.onRatingFailure", "failed to send rating", t);
-  }
-
   /**
    * Builds a string containing the call location and date. For voicemail logs only the call date is
    * returned because location information is displayed in the call action button
@@ -440,24 +201,27 @@
    * @return The call location and date string.
    */
   public CharSequence getCallLocationAndDate(PhoneCallDetails details) {
-    descriptionItems.clear();
+    synchronized (this) {
+      descriptionItems.clear();
 
-    if (details.callTypes[0] != Calls.VOICEMAIL_TYPE) {
-      // Get type of call (ie mobile, home, etc) if known, or the caller's location.
-      CharSequence callTypeOrLocation = getCallTypeOrLocation(details);
+      if (details.callTypes[0] != Calls.VOICEMAIL_TYPE) {
+        // Get type of call (ie mobile, home, etc) if known, or the caller's location.
+        CharSequence callTypeOrLocation = getCallTypeOrLocation(details);
 
-      // Only add the call type or location if its not empty.  It will be empty for unknown
-      // callers.
-      if (!TextUtils.isEmpty(callTypeOrLocation)) {
-        descriptionItems.add(callTypeOrLocation);
+        // Only add the call type or location if its not empty.  It will be empty for unknown
+        // callers.
+        if (!TextUtils.isEmpty(callTypeOrLocation)) {
+          descriptionItems.add(callTypeOrLocation);
+        }
       }
+
+      // The date of this call
+      descriptionItems.add(getCallDate(details));
+
+      // Create a comma separated list from the call type or location, and call date.
+
+      return DialerUtils.join(descriptionItems);
     }
-
-    // The date of this call
-    descriptionItems.add(getCallDate(details));
-
-    // Create a comma separated list from the call type or location, and call date.
-    return DialerUtils.join(descriptionItems);
   }
 
   /**
@@ -487,9 +251,7 @@
           && TextUtils.isEmpty(details.numberLabel))) {
         // Get type label only if it will not be "Custom" because of an empty number label.
         numberFormattedLabel =
-            phoneTypeLabelForTest != null
-                ? phoneTypeLabelForTest
-                : Phone.getTypeLabel(resources, details.numberType, details.numberLabel);
+                Phone.getTypeLabel(resources, details.numberType, details.numberLabel);
       }
     }
     if (!TextUtils.isEmpty(details.namePrimary) && TextUtils.isEmpty(numberFormattedLabel)) {
@@ -498,10 +260,6 @@
     return numberFormattedLabel;
   }
 
-  public void setPhoneTypeLabelForTest(CharSequence phoneTypeLabel) {
-    this.phoneTypeLabelForTest = phoneTypeLabel;
-  }
-
   /**
    * Get the call date/time of the call. For the call log this is relative to the current time. e.g.
    * 3 minutes ago. For voicemail, see {@link #getGranularDateTime(PhoneCallDetails)}
@@ -569,15 +327,9 @@
 
   /**
    * Returns the current time in milliseconds since the epoch.
-   *
-   * <p>It can be injected in tests using {@link #setCurrentTimeForTest(long)}.
    */
   private long getCurrentTimeMillis() {
-    if (currentTimeMillisForTest == null) {
-      return System.currentTimeMillis();
-    } else {
-      return currentTimeMillisForTest;
-    }
+    return System.currentTimeMillis();
   }
 
   /** Sets the call count, date, and if it is a voicemail, sets the duration. */
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
index 71cbc8c..88d05fb 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,9 +17,9 @@
 
 package com.android.dialer.app.calllog;
 
-import android.content.Context;
 import android.view.View;
 import android.widget.TextView;
+
 import com.android.dialer.app.R;
 import com.android.dialer.calllogutils.CallTypeIconsView;
 import com.android.dialer.widget.BidiTextView;
@@ -30,10 +31,6 @@
   public final View callTypeView;
   public final CallTypeIconsView callTypeIcons;
   public final TextView callLocationAndDate;
-  public final View transcriptionView;
-  public final TextView voicemailTranscriptionView;
-  public final TextView voicemailTranscriptionBrandingView;
-  public final View voicemailTranscriptionRatingView;
   public final TextView callAccountLabel;
 
   private PhoneCallDetailsViews(
@@ -41,19 +38,11 @@
       View callTypeView,
       CallTypeIconsView callTypeIcons,
       TextView callLocationAndDate,
-      View transcriptionView,
-      TextView voicemailTranscriptionView,
-      TextView voicemailTranscriptionBrandingView,
-      View voicemailTranscriptionRatingView,
       TextView callAccountLabel) {
     this.nameView = nameView;
     this.callTypeView = callTypeView;
     this.callTypeIcons = callTypeIcons;
     this.callLocationAndDate = callLocationAndDate;
-    this.transcriptionView = transcriptionView;
-    this.voicemailTranscriptionView = voicemailTranscriptionView;
-    this.voicemailTranscriptionBrandingView = voicemailTranscriptionBrandingView;
-    this.voicemailTranscriptionRatingView = voicemailTranscriptionRatingView;
     this.callAccountLabel = callAccountLabel;
   }
 
@@ -70,23 +59,6 @@
         view.findViewById(R.id.call_type),
         (CallTypeIconsView) view.findViewById(R.id.call_type_icons),
         (TextView) view.findViewById(R.id.call_location_and_date),
-        view.findViewById(R.id.transcription),
-        (TextView) view.findViewById(R.id.voicemail_transcription),
-        (TextView) view.findViewById(R.id.voicemail_transcription_branding),
-        view.findViewById(R.id.voicemail_transcription_rating),
         (TextView) view.findViewById(R.id.call_account_label));
   }
-
-  public static PhoneCallDetailsViews createForTest(Context context) {
-    return new PhoneCallDetailsViews(
-        new BidiTextView(context),
-        new View(context),
-        new CallTypeIconsView(context),
-        new TextView(context),
-        new View(context),
-        new TextView(context),
-        new TextView(context),
-        new View(context),
-        new TextView(context));
-  }
 }
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
index 5575cac..e5927fe 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023-2024 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -24,11 +25,14 @@
 import android.os.Bundle;
 import android.provider.CallLog;
 import android.provider.VoicemailContract;
-import android.support.annotation.VisibleForTesting;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import com.android.dialer.app.R;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.android.dialer.R;
 import com.android.dialer.app.voicemail.VoicemailAudioManager;
 import com.android.dialer.app.voicemail.VoicemailErrorManager;
 import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
@@ -36,13 +40,12 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.voicemail.listui.error.VoicemailErrorMessageCreator;
 import com.android.dialer.voicemail.listui.error.VoicemailStatus;
 import com.android.dialer.voicemail.listui.error.VoicemailStatusWorker;
 import com.android.dialer.widget.EmptyContentView;
+
 import java.util.List;
 
 public class VisualVoicemailCallLogFragment extends CallLogFragment {
@@ -63,9 +66,9 @@
   }
 
   @Override
-  public void onActivityCreated(Bundle savedInstanceState) {
-    voicemailPlaybackPresenter =
-        VoicemailPlaybackPresenter.getInstance(getActivity(), savedInstanceState);
+  public void onCreate(Bundle savedInstanceState) {
+    voicemailPlaybackPresenter = VoicemailPlaybackPresenter.getInstance(
+            (AppCompatActivity) getActivity(), savedInstanceState);
     if (PermissionsUtil.hasReadVoicemailPermissions(getContext())
         && PermissionsUtil.hasAddVoicemailPermissions(getContext())) {
       getActivity()
@@ -74,16 +77,21 @@
               VoicemailContract.Status.CONTENT_URI, true, voicemailStatusObserver);
     } else {
       LogUtil.w(
-          "VisualVoicemailCallLogFragment.onActivityCreated",
+          "VisualVoicemailCallLogFragment.onCreate",
           "read voicemail permission unavailable.");
     }
-    super.onActivityCreated(savedInstanceState);
+    super.onCreate(savedInstanceState);
+  }
+
+  @Override
+  public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
+    super.onViewCreated(view, savedInstanceState);
 
     preSyncVoicemailStatusCheckExecutor =
         DialerExecutorComponent.get(getContext())
             .dialerExecutorFactory()
             .createUiTaskBuilder(
-                getActivity().getFragmentManager(),
+                getActivity().getSupportFragmentManager(),
                 "fetchVoicemailStatus",
                 new VoicemailStatusWorker())
             .onSuccess(this::onPreSyncVoicemailStatusChecked)
@@ -102,7 +110,7 @@
               voicemailErrorManager.getContentObserver());
     } else {
       LogUtil.w(
-          "VisualVoicemailCallLogFragment.onActivityCreated",
+          "VisualVoicemailCallLogFragment.onViewCreated",
           "read voicemail permission unavailable.");
     }
   }
@@ -150,7 +158,7 @@
   }
 
   @Override
-  public void onSaveInstanceState(Bundle outState) {
+  public void onSaveInstanceState(@NonNull Bundle outState) {
     super.onSaveInstanceState(outState);
     if (voicemailPlaybackPresenter != null) {
       voicemailPlaybackPresenter.onSaveInstanceState(outState);
@@ -171,7 +179,6 @@
     super.onVisible();
     if (getActivity() != null && preSyncVoicemailStatusCheckExecutor != null) {
       preSyncVoicemailStatusCheckExecutor.executeParallel(getActivity());
-      Logger.get(getActivity()).logImpression(DialerImpression.Type.VVM_TAB_VIEWED);
       getActivity().setVolumeControlStream(VoicemailAudioManager.PLAYBACK_STREAM);
     }
   }
@@ -186,8 +193,7 @@
     getActivity().sendBroadcast(intent);
   }
 
-  @VisibleForTesting
-  boolean shouldAutoSync(
+  private boolean shouldAutoSync(
       VoicemailErrorMessageCreator errorMessageCreator, List<VoicemailStatus> statuses) {
     for (VoicemailStatus status : statuses) {
       if (!status.isActive(getContext())) {
@@ -209,7 +215,7 @@
     if (getActivity() != null) {
       getActivity().setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE);
       // onNotVisible will be called in the lock screen when the call ends
-      if (!getActivity().getSystemService(KeyguardManager.class).inKeyguardRestrictedInputMode()) {
+      if (!getActivity().getSystemService(KeyguardManager.class).isKeyguardLocked()) {
         LogUtil.i("VisualVoicemailCallLogFragment.onNotVisible", "clearing all new voicemails");
         CallLogNotificationsService.markAllNewVoicemailsAsOld(getActivity());
       }
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java b/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java
index 7fc104b..4fe6019 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailNotifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,30 +24,27 @@
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.NotificationCompat;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
-import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.app.NotificationCompat;
+
 import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.dialer.app.MainComponent;
 import com.android.dialer.app.R;
 import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
 import com.android.dialer.app.contactinfo.ContactPhotoLoader;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.notification.DialerNotificationManager;
 import com.android.dialer.notification.NotificationChannelManager;
 import com.android.dialer.notification.NotificationManagerUtils;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.theme.base.ThemeComponent;
+
 import java.util.List;
 import java.util.Map;
 
@@ -90,19 +88,17 @@
             .setGroupSummary(true)
             .setContentIntent(newVoicemailIntent(context, null));
 
-    if (VERSION.SDK_INT >= VERSION_CODES.O) {
-      if (shouldAlert) {
-        groupSummary.setOnlyAlertOnce(false);
-        // Group summary will alert when posted/updated
-        groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_ALL);
-      } else {
-        // Only children will alert. but since all children are set to "only alert summary" it is
-        // effectively silenced.
-        groupSummary.setGroupAlertBehavior(Notification.GROUP_ALERT_CHILDREN);
-      }
-      PhoneAccountHandle handle = getAccountForCall(context, newCalls.get(0));
-      groupSummary.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
+    if (shouldAlert) {
+      groupSummary.setOnlyAlertOnce(false);
+      // Group summary will alert when posted/updated
+      groupSummary.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_ALL);
+    } else {
+      // Only children will alert. but since all children are set to "only alert summary" it is
+      // effectively silenced.
+      groupSummary.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN);
     }
+    PhoneAccountHandle handle = getAccountForCall(context, newCalls.get(0));
+    groupSummary.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
 
     DialerNotificationManager.notify(
         context, GROUP_SUMMARY_NOTIFICATION_TAG, NOTIFICATION_ID, groupSummary.build());
@@ -168,56 +164,14 @@
             .setSound(getVoicemailRingtoneUri(context, handle))
             .setDefaults(getNotificationDefaultFlags(context, handle));
 
-    if (!TextUtils.isEmpty(voicemail.transcription)) {
-      Logger.get(context)
-          .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION);
-      builder
-          .setContentText(voicemail.transcription)
-          .setStyle(new NotificationCompat.BigTextStyle().bigText(voicemail.transcription));
-    } else {
-      switch (voicemail.transcriptionState) {
-        case VoicemailCompat.TRANSCRIPTION_IN_PROGRESS:
-          Logger.get(context)
-              .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_IN_PROGRESS);
-          builder.setContentText(context.getString(R.string.voicemail_transcription_in_progress));
-          break;
-        case VoicemailCompat.TRANSCRIPTION_FAILED_NO_SPEECH_DETECTED:
-          Logger.get(context)
-              .logImpression(
-                  DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE);
-          builder.setContentText(
-              context.getString(R.string.voicemail_transcription_failed_no_speech));
-          break;
-        case VoicemailCompat.TRANSCRIPTION_FAILED_LANGUAGE_NOT_SUPPORTED:
-          Logger.get(context)
-              .logImpression(
-                  DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE);
-          builder.setContentText(
-              context.getString(R.string.voicemail_transcription_failed_language_not_supported));
-          break;
-        case VoicemailCompat.TRANSCRIPTION_FAILED:
-          Logger.get(context)
-              .logImpression(
-                  DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE);
-          builder.setContentText(context.getString(R.string.voicemail_transcription_failed));
-          break;
-        default:
-          Logger.get(context)
-              .logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED_WITH_NO_TRANSCRIPTION);
-          break;
-      }
-    }
-
     if (voicemail.voicemailUri != null) {
       builder.setDeleteIntent(
           CallLogNotificationsService.createMarkSingleNewVoicemailAsOldIntent(
               context, voicemail.voicemailUri));
     }
 
-    if (VERSION.SDK_INT >= VERSION_CODES.O) {
-      builder.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
-      builder.setGroupAlertBehavior(Notification.GROUP_ALERT_SUMMARY);
-    }
+    builder.setChannelId(NotificationChannelManager.getVoicemailChannelId(context, handle));
+    builder.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_SUMMARY);
 
     ContactPhotoLoader loader = new ContactPhotoLoader(context, contactInfo);
     Bitmap photoIcon = loader.loadPhotoIcon();
@@ -225,7 +179,6 @@
       builder.setLargeIcon(photoIcon);
     }
     builder.setContentIntent(newVoicemailIntent(context, voicemail));
-    Logger.get(context).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CREATED);
     return builder.build();
   }
 
@@ -272,7 +225,8 @@
     if (voicemail != null) {
       intent.setData(voicemail.voicemailUri);
     }
-    return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+    return PendingIntent.getActivity(context, 0, intent,
+            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
   }
 
   /**
diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
index e3cc515..9957ae7 100644
--- a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
+++ b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java
@@ -18,26 +18,27 @@
 
 import android.content.Context;
 import android.net.Uri;
+import android.provider.BlockedNumberContract;
 import android.service.notification.StatusBarNotification;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
 import android.text.TextUtils;
 import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.app.R;
 import com.android.dialer.app.calllog.CallLogNotificationsQueryHelper.NewCall;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.blocking.FilteredNumbersUtil;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.notification.DialerNotificationManager;
 import com.android.dialer.phonenumbercache.ContactInfo;
-import com.android.dialer.spam.SpamComponent;
 import com.android.dialer.telecom.TelecomUtil;
+import com.android.dialer.util.EmergencyCallUtil;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -71,7 +72,7 @@
       return;
     }
 
-    if (FilteredNumbersUtil.hasRecentEmergencyCall(context)) {
+    if (EmergencyCallUtil.hasRecentEmergencyCall(context)) {
       LogUtil.i(
           "VisualVoicemailUpdateTask.updateNotification",
           "not filtering due to recent emergency call");
@@ -179,7 +180,8 @@
     Assert.isWorkerThread();
     List<NewCall> result = new ArrayList<>();
     for (NewCall newCall : newCalls) {
-      if (queryHandler.getBlockedIdSynchronous(newCall.number, newCall.countryIso) != null) {
+      if (BlockedNumberContract.canCurrentUserBlockNumbers(context)
+        && BlockedNumberContract.isBlocked(context, newCall.number)) {
         LogUtil.i(
             "VisualVoicemailUpdateTask.filterBlockedNumbers",
             "found voicemail from blocked number, deleting");
@@ -197,30 +199,7 @@
   @WorkerThread
   private static List<NewCall> filterSpamNumbers(Context context, List<NewCall> newCalls) {
     Assert.isWorkerThread();
-    if (!SpamComponent.get(context).spamSettings().isSpamBlockingEnabled()) {
-      return newCalls;
-    }
-
-    List<NewCall> result = new ArrayList<>();
-    for (NewCall newCall : newCalls) {
-      Logger.get(context).logImpression(DialerImpression.Type.INCOMING_VOICEMAIL_SCREENED);
-      if (SpamComponent.get(context)
-          .spam()
-          .checkSpamStatusSynchronous(newCall.number, newCall.countryIso)) {
-        LogUtil.i(
-            "VisualVoicemailUpdateTask.filterSpamNumbers",
-            "found voicemail from spam number, suppressing notification");
-        Logger.get(context)
-            .logImpression(DialerImpression.Type.INCOMING_VOICEMAIL_AUTO_BLOCKED_AS_SPAM);
-        if (newCall.voicemailUri != null) {
-          // Mark auto blocked voicemail as old so that we don't process it again.
-          VoicemailQueryHandler.markSingleNewVoicemailAsOld(context, newCall.voicemailUri);
-        }
-      } else {
-        result.add(newCall);
-      }
-    }
-    return result;
+    return newCalls;
   }
 
   /** Updates the voicemail notifications displayed. */
diff --git a/java/com/android/dialer/app/calllog/VoicemailNotificationJobService.java b/java/com/android/dialer/app/calllog/VoicemailNotificationJobService.java
index 754ab27..4801f96 100644
--- a/java/com/android/dialer/app/calllog/VoicemailNotificationJobService.java
+++ b/java/com/android/dialer/app/calllog/VoicemailNotificationJobService.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +24,7 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.provider.VoicemailContract;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.constants.ScheduledJobIds;
 
@@ -52,11 +54,7 @@
   @Override
   public boolean onStartJob(JobParameters params) {
     LogUtil.i("VoicemailNotificationJobService.onStartJob", "updating notification");
-    VisualVoicemailUpdateTask.scheduleTask(
-        this,
-        () -> {
-          jobFinished(params, false);
-        });
+    VisualVoicemailUpdateTask.scheduleTask(this, () -> jobFinished(params, false));
     return true; // Running in background
   }
 
diff --git a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
index 5d8144c..c2729bc 100644
--- a/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
+++ b/java/com/android/dialer/app/calllog/VoicemailQueryHandler.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,10 +22,12 @@
 import android.content.Context;
 import android.net.Uri;
 import android.provider.CallLog.Calls;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.ThreadUtil;
@@ -44,24 +47,20 @@
   @WorkerThread
   public static void markAllNewVoicemailsAsOld(final @NonNull Context context) {
     ThreadUtil.postOnUiThread(
-        () -> {
-          new VoicemailQueryHandler(context.getContentResolver())
-              .markNewVoicemailsAsOld(context, null);
-        });
+        () -> new VoicemailQueryHandler(context.getContentResolver())
+            .markNewVoicemailsAsOld(context, null));
   }
 
   @WorkerThread
   public static void markSingleNewVoicemailAsOld(
-      final @NonNull Context context, final Uri voicemailUri) {
+          final @NonNull Context context, final Uri voicemailUri) {
     if (voicemailUri == null) {
       LogUtil.e("VoicemailQueryHandler.markSingleNewVoicemailAsOld", "voicemail URI is null");
       return;
     }
     ThreadUtil.postOnUiThread(
-        () -> {
-          new VoicemailQueryHandler(context.getContentResolver())
-              .markNewVoicemailsAsOld(context, voicemailUri);
-        });
+        () -> new VoicemailQueryHandler(context.getContentResolver())
+            .markNewVoicemailsAsOld(context, voicemailUri));
   }
 
   /** Updates all new voicemails to mark them as old. */
diff --git a/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java b/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java
index f45537c..8e2b4c6 100644
--- a/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java
+++ b/java/com/android/dialer/app/calllog/calllogcache/CallLogCache.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,15 +18,19 @@
 package com.android.dialer.app.calllog.calllogcache;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.text.TextUtils;
 import android.util.ArrayMap;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.app.calllog.CallLogAdapter;
 import com.android.dialer.calllogutils.PhoneAccountUtils;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.CallUtil;
+
 import java.util.Map;
+
 import javax.annotation.concurrent.ThreadSafe;
 
 /**
@@ -102,7 +107,7 @@
     if (phoneAccountColorCache.containsKey(accountHandle)) {
       return phoneAccountColorCache.get(accountHandle);
     } else {
-      Integer color = PhoneAccountUtils.getAccountColor(context, accountHandle);
+      int color = PhoneAccountUtils.getAccountColor(context, accountHandle);
       phoneAccountColorCache.put(accountHandle, color);
       return color;
     }
@@ -119,7 +124,7 @@
     if (phoneAccountCallWithNoteCache.containsKey(accountHandle)) {
       return phoneAccountCallWithNoteCache.get(accountHandle);
     } else {
-      Boolean supportsCallWithNote =
+      boolean supportsCallWithNote =
           PhoneAccountUtils.getAccountSupportsCallSubject(context, accountHandle);
       phoneAccountCallWithNoteCache.put(accountHandle, supportsCallWithNote);
       return supportsCallWithNote;
diff --git a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
index 3fcf40c..f53bd5e 100644
--- a/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
+++ b/java/com/android/dialer/app/contactinfo/ContactInfoCache.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,17 +18,20 @@
 package com.android.dialer.app.contactinfo;
 
 import android.os.Handler;
+import android.os.Looper;
 import android.os.Message;
 import android.os.SystemClock;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.logging.ContactSource.Type;
 import com.android.dialer.oem.CequintCallerIdManager;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
 import com.android.dialer.util.ExpirableCache;
+
 import java.lang.ref.WeakReference;
 import java.util.Objects;
 import java.util.concurrent.BlockingQueue;
@@ -65,6 +69,7 @@
     private final WeakReference<ContactInfoCache> contactInfoCacheWeakReference;
 
     public InnerHandler(WeakReference<ContactInfoCache> contactInfoCacheWeakReference) {
+      super(Looper.getMainLooper());
       this.contactInfoCacheWeakReference = contactInfoCacheWeakReference;
     }
 
@@ -321,12 +326,6 @@
     requestProcessingDisabled = true;
   }
 
-  @VisibleForTesting
-  public void injectContactInfoForTest(String number, String countryIso, ContactInfo contactInfo) {
-    NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
-    cache.put(numberCountryIso, contactInfo);
-  }
-
   public interface OnContactInfoChangedListener {
 
     void onContactInfoChanged();
diff --git a/java/com/android/dialer/app/contactinfo/ContactInfoRequest.java b/java/com/android/dialer/app/contactinfo/ContactInfoRequest.java
index 5c2eb1d..f575e87 100644
--- a/java/com/android/dialer/app/contactinfo/ContactInfoRequest.java
+++ b/java/com/android/dialer/app/contactinfo/ContactInfoRequest.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,9 +17,12 @@
 
 package com.android.dialer.app.contactinfo;
 
-import android.support.annotation.IntDef;
 import android.text.TextUtils;
+
+import androidx.annotation.IntDef;
+
 import com.android.dialer.phonenumbercache.ContactInfo;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Objects;
diff --git a/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java b/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
index be143bb..82cdb73 100644
--- a/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
+++ b/java/com/android/dialer/app/contactinfo/ContactPhotoLoader.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,10 +22,11 @@
 import android.graphics.BitmapFactory;
 import android.graphics.Canvas;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
-import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
+
+import androidx.annotation.Nullable;
+import androidx.core.graphics.drawable.RoundedBitmapDrawable;
+import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
+
 import com.android.dialer.app.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
@@ -32,6 +34,7 @@
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Objects;
@@ -66,8 +69,7 @@
     return drawableToBitmap(getIcon(), photoSize, photoSize);
   }
 
-  @VisibleForTesting
-  Drawable getIcon() {
+  private Drawable getIcon() {
     Drawable drawable = createPhotoIconDrawable();
     if (drawable == null) {
       drawable = createLetterTileDrawable();
diff --git a/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java b/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java
index aed51b5..dc059d8 100644
--- a/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java
+++ b/java/com/android/dialer/app/contactinfo/ExpirableCacheHeadlessFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,11 @@
 package com.android.dialer.app.contactinfo;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v7.app.AppCompatActivity;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+
 import com.android.dialer.phonenumbercache.ContactInfo;
 import com.android.dialer.util.ExpirableCache;
 
@@ -34,15 +36,11 @@
   private static final String FRAGMENT_TAG = "ExpirableCacheHeadlessFragment";
   private static final int CONTACT_INFO_CACHE_SIZE = 100;
 
-  private ExpirableCache<NumberWithCountryIso, ContactInfo> retainedCache;
+  private final ExpirableCache<NumberWithCountryIso, ContactInfo> retainedCache =
+      ExpirableCache.create(CONTACT_INFO_CACHE_SIZE);
 
   @NonNull
-  public static ExpirableCacheHeadlessFragment attach(@NonNull AppCompatActivity parentActivity) {
-    return attach(parentActivity.getSupportFragmentManager());
-  }
-
-  @NonNull
-  private static ExpirableCacheHeadlessFragment attach(FragmentManager fragmentManager) {
+  public static ExpirableCacheHeadlessFragment attach(FragmentManager fragmentManager) {
     ExpirableCacheHeadlessFragment fragment =
         (ExpirableCacheHeadlessFragment) fragmentManager.findFragmentByTag(FRAGMENT_TAG);
     if (fragment == null) {
@@ -57,7 +55,6 @@
   @Override
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
-    retainedCache = ExpirableCache.create(CONTACT_INFO_CACHE_SIZE);
     setRetainInstance(true);
   }
 
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
deleted file mode 100644
index 603c06f..0000000
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersAdapter.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.app.FragmentManager;
-import android.content.Context;
-import android.database.Cursor;
-import android.view.View;
-import com.android.dialer.app.R;
-import com.android.dialer.blocking.BlockNumberDialogFragment;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-import com.android.dialer.location.GeoUtil;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.phonenumbercache.ContactInfoHelper;
-import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-
-/** TODO(calderwoodra): documentation */
-public class BlockedNumbersAdapter extends NumbersAdapter {
-
-  private BlockedNumbersAdapter(
-      Context context,
-      FragmentManager fragmentManager,
-      ContactInfoHelper contactInfoHelper,
-      ContactPhotoManager contactPhotoManager) {
-    super(context, fragmentManager, contactInfoHelper, contactPhotoManager);
-  }
-
-  public static BlockedNumbersAdapter newBlockedNumbersAdapter(
-      Context context, FragmentManager fragmentManager) {
-    return new BlockedNumbersAdapter(
-        context,
-        fragmentManager,
-        new ContactInfoHelper(context, GeoUtil.getCurrentCountryIso(context)),
-        ContactPhotoManager.getInstance(context));
-  }
-
-  @Override
-  public void bindView(View view, final Context context, Cursor cursor) {
-    super.bindView(view, context, cursor);
-    final Integer id = cursor.getInt(cursor.getColumnIndex(FilteredNumberColumns._ID));
-    final String countryIso =
-        cursor.getString(cursor.getColumnIndex(FilteredNumberColumns.COUNTRY_ISO));
-    final String number = cursor.getString(cursor.getColumnIndex(FilteredNumberColumns.NUMBER));
-
-    final View deleteButton = view.findViewById(R.id.delete_button);
-    deleteButton.setOnClickListener(
-        new View.OnClickListener() {
-          @Override
-          public void onClick(View view) {
-            BlockNumberDialogFragment.show(
-                id,
-                number,
-                countryIso,
-                PhoneNumberHelper.formatNumber(getContext(), number, countryIso),
-                R.id.blocked_numbers_activity_container,
-                getFragmentManager(),
-                new BlockNumberDialogFragment.Callback() {
-                  @Override
-                  public void onFilterNumberSuccess() {}
-
-                  @Override
-                  public void onUnfilterNumberSuccess() {
-                    Logger.get(context)
-                        .logInteraction(InteractionEvent.Type.UNBLOCK_NUMBER_MANAGEMENT_SCREEN);
-                  }
-
-                  @Override
-                  public void onChangeFilteredNumberUndo() {}
-                });
-          }
-        });
-
-    updateView(view, number, countryIso);
-  }
-
-  @Override
-  public boolean isEmpty() {
-    // Always return false, so that the header with blocking-related options always shows.
-    return false;
-  }
-}
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
deleted file mode 100644
index bf40fdf..0000000
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersFragment.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.app.ListFragment;
-import android.app.LoaderManager;
-import android.content.Context;
-import android.content.CursorLoader;
-import android.content.Loader;
-import android.database.Cursor;
-import android.graphics.drawable.ColorDrawable;
-import android.os.Bundle;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-import com.android.dialer.app.R;
-import com.android.dialer.blocking.BlockedNumbersMigrator;
-import com.android.dialer.blocking.BlockedNumbersMigrator.Listener;
-import com.android.dialer.blocking.FilteredNumberCompat;
-import com.android.dialer.blocking.FilteredNumbersUtil;
-import com.android.dialer.blocking.FilteredNumbersUtil.CheckForSendToVoicemailContactListener;
-import com.android.dialer.blocking.FilteredNumbersUtil.ImportSendToVoicemailContactsListener;
-import com.android.dialer.database.FilteredNumberContract;
-import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.theme.base.ThemeComponent;
-import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
-
-/** TODO(calderwoodra): documentation */
-public class BlockedNumbersFragment extends ListFragment
-    implements LoaderManager.LoaderCallbacks<Cursor>,
-        View.OnClickListener,
-        VisualVoicemailEnabledChecker.Callback {
-
-  private static final char ADD_BLOCKED_NUMBER_ICON_LETTER = '+';
-  protected View migratePromoView;
-  private BlockedNumbersMigrator blockedNumbersMigratorForTest;
-  private TextView blockedNumbersText;
-  private TextView footerText;
-  private BlockedNumbersAdapter adapter;
-  private VisualVoicemailEnabledChecker voicemailEnabledChecker;
-  private View importSettings;
-  private View blockedNumbersDisabledForEmergency;
-  private View blockedNumberListDivider;
-
-  @Override
-  public Context getContext() {
-    return getActivity();
-  }
-
-  @Override
-  public void onActivityCreated(Bundle savedInstanceState) {
-    super.onActivityCreated(savedInstanceState);
-
-    LayoutInflater inflater =
-        (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-    getListView().addHeaderView(inflater.inflate(R.layout.blocked_number_header, null));
-    getListView().addFooterView(inflater.inflate(R.layout.blocked_number_footer, null));
-    //replace the icon for add number with LetterTileDrawable(), so it will have identical style
-    LetterTileDrawable drawable = new LetterTileDrawable(getResources());
-    drawable.setLetter(ADD_BLOCKED_NUMBER_ICON_LETTER);
-    drawable.setColor(ThemeComponent.get(getContext()).theme().getColorIcon());
-    drawable.setIsCircular(true);
-
-    if (adapter == null) {
-      adapter =
-          BlockedNumbersAdapter.newBlockedNumbersAdapter(
-              getContext(), getActivity().getFragmentManager());
-    }
-    setListAdapter(adapter);
-
-    blockedNumbersText = (TextView) getListView().findViewById(R.id.blocked_number_text_view);
-    migratePromoView = getListView().findViewById(R.id.migrate_promo);
-    getListView().findViewById(R.id.migrate_promo_allow_button).setOnClickListener(this);
-    importSettings = getListView().findViewById(R.id.import_settings);
-    blockedNumbersDisabledForEmergency =
-        getListView().findViewById(R.id.blocked_numbers_disabled_for_emergency);
-    blockedNumberListDivider = getActivity().findViewById(R.id.blocked_number_list_divider);
-    getListView().findViewById(R.id.import_button).setOnClickListener(this);
-    getListView().findViewById(R.id.view_numbers_button).setOnClickListener(this);
-
-    footerText = (TextView) getActivity().findViewById(R.id.blocked_number_footer_textview);
-    voicemailEnabledChecker = new VisualVoicemailEnabledChecker(getContext(), this);
-    voicemailEnabledChecker.asyncUpdate();
-    updateActiveVoicemailProvider();
-  }
-
-  @Override
-  public void onDestroy() {
-    setListAdapter(null);
-    super.onDestroy();
-  }
-
-  @Override
-  public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    getLoaderManager().initLoader(0, null, this);
-  }
-
-  @Override
-  public void onResume() {
-    super.onResume();
-
-    ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
-    ColorDrawable backgroundDrawable =
-        new ColorDrawable(ThemeComponent.get(getContext()).theme().getColorPrimary());
-    actionBar.setBackgroundDrawable(backgroundDrawable);
-    actionBar.setDisplayShowCustomEnabled(false);
-    actionBar.setDisplayHomeAsUpEnabled(true);
-    actionBar.setDisplayShowHomeEnabled(true);
-    actionBar.setDisplayShowTitleEnabled(true);
-    actionBar.setTitle(R.string.manage_blocked_numbers_label);
-
-    // If the device can use the framework blocking solution, users should not be able to add
-    // new blocked numbers from the Blocked Management UI. They will be shown a promo card
-    // asking them to migrate to new blocking instead.
-    if (FilteredNumberCompat.canUseNewFiltering()) {
-      migratePromoView.setVisibility(View.VISIBLE);
-      blockedNumbersText.setVisibility(View.GONE);
-      blockedNumberListDivider.setVisibility(View.GONE);
-      importSettings.setVisibility(View.GONE);
-      getListView().findViewById(R.id.import_button).setOnClickListener(null);
-      getListView().findViewById(R.id.view_numbers_button).setOnClickListener(null);
-      blockedNumbersDisabledForEmergency.setVisibility(View.GONE);
-      footerText.setVisibility(View.GONE);
-    } else {
-      FilteredNumbersUtil.checkForSendToVoicemailContact(
-          getActivity(),
-          new CheckForSendToVoicemailContactListener() {
-            @Override
-            public void onComplete(boolean hasSendToVoicemailContact) {
-              final int visibility = hasSendToVoicemailContact ? View.VISIBLE : View.GONE;
-              importSettings.setVisibility(visibility);
-            }
-          });
-    }
-
-    // All views except migrate and the block list are hidden when new filtering is available
-    if (!FilteredNumberCompat.canUseNewFiltering()
-        && FilteredNumbersUtil.hasRecentEmergencyCall(getContext())) {
-      blockedNumbersDisabledForEmergency.setVisibility(View.VISIBLE);
-    } else {
-      blockedNumbersDisabledForEmergency.setVisibility(View.GONE);
-    }
-
-    voicemailEnabledChecker.asyncUpdate();
-  }
-
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-    return inflater.inflate(R.layout.blocked_number_fragment, container, false);
-  }
-
-  @Override
-  public Loader<Cursor> onCreateLoader(int id, Bundle args) {
-    final String[] projection = {
-      FilteredNumberContract.FilteredNumberColumns._ID,
-      FilteredNumberContract.FilteredNumberColumns.COUNTRY_ISO,
-      FilteredNumberContract.FilteredNumberColumns.NUMBER,
-      FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER
-    };
-    final String selection =
-        FilteredNumberContract.FilteredNumberColumns.TYPE
-            + "="
-            + FilteredNumberContract.FilteredNumberTypes.BLOCKED_NUMBER;
-    return new CursorLoader(
-        getContext(),
-        FilteredNumberContract.FilteredNumber.CONTENT_URI,
-        projection,
-        selection,
-        null,
-        null);
-  }
-
-  @Override
-  public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
-    adapter.swapCursor(data);
-    if (FilteredNumberCompat.canUseNewFiltering() || data.getCount() == 0) {
-      blockedNumberListDivider.setVisibility(View.INVISIBLE);
-    } else {
-      blockedNumberListDivider.setVisibility(View.VISIBLE);
-    }
-  }
-
-  @Override
-  public void onLoaderReset(Loader<Cursor> loader) {
-    adapter.swapCursor(null);
-  }
-
-  @Override
-  public void onClick(final View view) {
-    final BlockedNumbersSettingsActivity activity = (BlockedNumbersSettingsActivity) getActivity();
-    if (activity == null) {
-      return;
-    }
-
-    int resId = view.getId();
-    if (resId == R.id.view_numbers_button) {
-      activity.showNumbersToImportPreviewUi();
-    } else if (resId == R.id.import_button) {
-      FilteredNumbersUtil.importSendToVoicemailContacts(
-          activity,
-          new ImportSendToVoicemailContactsListener() {
-            @Override
-            public void onImportComplete() {
-              importSettings.setVisibility(View.GONE);
-            }
-          });
-    } else if (resId == R.id.migrate_promo_allow_button) {
-      view.setEnabled(false);
-      (blockedNumbersMigratorForTest != null
-              ? blockedNumbersMigratorForTest
-              : new BlockedNumbersMigrator(getContext()))
-          .migrate(
-              new Listener() {
-                @Override
-                public void onComplete() {
-                  getContext()
-                      .startActivity(
-                          FilteredNumberCompat.createManageBlockedNumbersIntent(getContext()));
-                  // Remove this activity from the backstack
-                  activity.finish();
-                }
-              });
-    }
-  }
-
-  @Override
-  public void onVisualVoicemailEnabledStatusChanged(boolean newStatus) {
-    updateActiveVoicemailProvider();
-  }
-
-  private void updateActiveVoicemailProvider() {
-    if (getActivity() == null || getActivity().isFinishing()) {
-      return;
-    }
-    if (voicemailEnabledChecker.isVisualVoicemailEnabled()) {
-      footerText.setText(R.string.block_number_footer_message_vvm);
-    } else {
-      footerText.setText(R.string.block_number_footer_message_no_vvm);
-    }
-  }
-
-  void setBlockedNumbersMigratorForTest(BlockedNumbersMigrator blockedNumbersMigrator) {
-    blockedNumbersMigratorForTest = blockedNumbersMigrator;
-  }
-}
diff --git a/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java b/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java
deleted file mode 100644
index 5475b4e..0000000
--- a/java/com/android/dialer/app/filterednumber/BlockedNumbersSettingsActivity.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.view.MenuItem;
-import com.android.dialer.app.R;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-
-/** TODO(calderwoodra): documentation */
-public class BlockedNumbersSettingsActivity extends AppCompatActivity {
-
-  private static final String TAG_BLOCKED_MANAGEMENT_FRAGMENT = "blocked_management";
-  private static final String TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT = "view_numbers_to_import";
-
-  @Override
-  protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.blocked_numbers_activity);
-
-    // If savedInstanceState != null, the Activity will automatically restore the last fragment.
-    if (savedInstanceState == null) {
-      showManagementUi();
-    }
-  }
-
-  /** Shows fragment with the list of currently blocked numbers and settings related to blocking. */
-  public void showManagementUi() {
-    BlockedNumbersFragment fragment =
-        (BlockedNumbersFragment)
-            getFragmentManager().findFragmentByTag(TAG_BLOCKED_MANAGEMENT_FRAGMENT);
-    if (fragment == null) {
-      fragment = new BlockedNumbersFragment();
-    }
-
-    getFragmentManager()
-        .beginTransaction()
-        .replace(R.id.blocked_numbers_activity_container, fragment, TAG_BLOCKED_MANAGEMENT_FRAGMENT)
-        .commit();
-
-    Logger.get(this).logScreenView(ScreenEvent.Type.BLOCKED_NUMBER_MANAGEMENT, this);
-  }
-
-  /**
-   * Shows fragment with UI to preview the numbers of contacts currently marked as send-to-voicemail
-   * in Contacts. These numbers can be imported into Dialer's blocked number list.
-   */
-  public void showNumbersToImportPreviewUi() {
-    ViewNumbersToImportFragment fragment =
-        (ViewNumbersToImportFragment)
-            getFragmentManager().findFragmentByTag(TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT);
-    if (fragment == null) {
-      fragment = new ViewNumbersToImportFragment();
-    }
-
-    getFragmentManager()
-        .beginTransaction()
-        .replace(
-            R.id.blocked_numbers_activity_container, fragment, TAG_VIEW_NUMBERS_TO_IMPORT_FRAGMENT)
-        .addToBackStack(null)
-        .commit();
-  }
-
-  @Override
-  public boolean onOptionsItemSelected(MenuItem item) {
-    if (item.getItemId() == android.R.id.home) {
-      onBackPressed();
-      return true;
-    }
-    return false;
-  }
-
-  @Override
-  public void onBackPressed() {
-    // TODO: Achieve back navigation without overriding onBackPressed.
-    if (getFragmentManager().getBackStackEntryCount() > 0) {
-      getFragmentManager().popBackStack();
-    } else {
-      super.onBackPressed();
-    }
-  }
-}
diff --git a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java b/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
deleted file mode 100644
index 2c08558..0000000
--- a/java/com/android/dialer/app/filterednumber/NumbersAdapter.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.app.FragmentManager;
-import android.content.Context;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.text.BidiFormatter;
-import android.text.TextDirectionHeuristics;
-import android.text.TextUtils;
-import android.view.View;
-import android.widget.QuickContactBadge;
-import android.widget.SimpleCursorAdapter;
-import android.widget.TextView;
-import com.android.dialer.app.R;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
-import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.phonenumbercache.ContactInfo;
-import com.android.dialer.phonenumbercache.ContactInfoHelper;
-import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.util.UriUtils;
-
-/** TODO(calderwoodra): documentation */
-public class NumbersAdapter extends SimpleCursorAdapter {
-
-  private final Context context;
-  private final FragmentManager fragmentManager;
-  private final ContactInfoHelper contactInfoHelper;
-  private final BidiFormatter bidiFormatter = BidiFormatter.getInstance();
-  private final ContactPhotoManager contactPhotoManager;
-
-  public NumbersAdapter(
-      Context context,
-      FragmentManager fragmentManager,
-      ContactInfoHelper contactInfoHelper,
-      ContactPhotoManager contactPhotoManager) {
-    super(context, R.layout.blocked_number_item, null, new String[] {}, new int[] {}, 0);
-    this.context = context;
-    this.fragmentManager = fragmentManager;
-    this.contactInfoHelper = contactInfoHelper;
-    this.contactPhotoManager = contactPhotoManager;
-  }
-
-  public void updateView(View view, String number, String countryIso) {
-    final TextView callerName = (TextView) view.findViewById(R.id.caller_name);
-    final TextView callerNumber = (TextView) view.findViewById(R.id.caller_number);
-    final QuickContactBadge quickContactBadge =
-        (QuickContactBadge) view.findViewById(R.id.quick_contact_photo);
-    quickContactBadge.setOverlay(null);
-    quickContactBadge.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
-
-    ContactInfo info = contactInfoHelper.lookupNumber(number, countryIso);
-    if (info == null) {
-      info = new ContactInfo();
-      info.number = number;
-    }
-    final CharSequence locationOrType = getNumberTypeOrLocation(info, countryIso);
-    final String displayNumber = getDisplayNumber(info);
-    final String displayNumberStr =
-        bidiFormatter.unicodeWrap(displayNumber, TextDirectionHeuristics.LTR);
-
-    String nameForDefaultImage;
-    if (!TextUtils.isEmpty(info.name)) {
-      nameForDefaultImage = info.name;
-      callerName.setText(info.name);
-      callerNumber.setText(locationOrType + " " + displayNumberStr);
-    } else {
-      nameForDefaultImage = displayNumber;
-      callerName.setText(displayNumberStr);
-      if (!TextUtils.isEmpty(locationOrType)) {
-        callerNumber.setText(locationOrType);
-        callerNumber.setVisibility(View.VISIBLE);
-      } else {
-        callerNumber.setVisibility(View.GONE);
-      }
-    }
-    loadContactPhoto(info, nameForDefaultImage, quickContactBadge);
-  }
-
-  private void loadContactPhoto(ContactInfo info, String displayName, QuickContactBadge badge) {
-    final String lookupKey =
-        info.lookupUri == null ? null : UriUtils.getLookupKeyFromUri(info.lookupUri);
-    final int contactType =
-        contactInfoHelper.isBusiness(info.sourceType)
-            ? LetterTileDrawable.TYPE_BUSINESS
-            : LetterTileDrawable.TYPE_DEFAULT;
-    final DefaultImageRequest request =
-        new DefaultImageRequest(displayName, lookupKey, contactType, true /* isCircular */);
-    badge.assignContactUri(info.lookupUri);
-    badge.setContentDescription(
-        context.getResources().getString(R.string.description_contact_details, displayName));
-    contactPhotoManager.loadDirectoryPhoto(
-        badge, info.photoUri, false /* darkTheme */, true /* isCircular */, request);
-  }
-
-  private String getDisplayNumber(ContactInfo info) {
-    if (!TextUtils.isEmpty(info.formattedNumber)) {
-      return info.formattedNumber;
-    } else if (!TextUtils.isEmpty(info.number)) {
-      return info.number;
-    } else {
-      return "";
-    }
-  }
-
-  private CharSequence getNumberTypeOrLocation(ContactInfo info, String countryIso) {
-    if (!TextUtils.isEmpty(info.name)) {
-      return ContactsContract.CommonDataKinds.Phone.getTypeLabel(
-          context.getResources(), info.type, info.label);
-    } else {
-      return PhoneNumberHelper.getGeoDescription(context, info.number, countryIso);
-    }
-  }
-
-  protected Context getContext() {
-    return context;
-  }
-
-  protected FragmentManager getFragmentManager() {
-    return fragmentManager;
-  }
-}
diff --git a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
deleted file mode 100644
index 106c4fb..0000000
--- a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportAdapter.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.app.FragmentManager;
-import android.content.Context;
-import android.database.Cursor;
-import android.view.View;
-import com.android.dialer.app.R;
-import com.android.dialer.blocking.FilteredNumbersUtil;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.location.GeoUtil;
-import com.android.dialer.phonenumbercache.ContactInfoHelper;
-
-/** TODO(calderwoodra): documentation */
-public class ViewNumbersToImportAdapter extends NumbersAdapter {
-
-  private ViewNumbersToImportAdapter(
-      Context context,
-      FragmentManager fragmentManager,
-      ContactInfoHelper contactInfoHelper,
-      ContactPhotoManager contactPhotoManager) {
-    super(context, fragmentManager, contactInfoHelper, contactPhotoManager);
-  }
-
-  public static ViewNumbersToImportAdapter newViewNumbersToImportAdapter(
-      Context context, FragmentManager fragmentManager) {
-    return new ViewNumbersToImportAdapter(
-        context,
-        fragmentManager,
-        new ContactInfoHelper(context, GeoUtil.getCurrentCountryIso(context)),
-        ContactPhotoManager.getInstance(context));
-  }
-
-  @Override
-  public void bindView(View view, Context context, Cursor cursor) {
-    super.bindView(view, context, cursor);
-
-    final String number = cursor.getString(FilteredNumbersUtil.PhoneQuery.NUMBER_COLUMN_INDEX);
-
-    view.findViewById(R.id.delete_button).setVisibility(View.GONE);
-    updateView(view, number, null /* countryIso */);
-  }
-}
diff --git a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportFragment.java b/java/com/android/dialer/app/filterednumber/ViewNumbersToImportFragment.java
deleted file mode 100644
index be3ae79..0000000
--- a/java/com/android/dialer/app/filterednumber/ViewNumbersToImportFragment.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.app.filterednumber;
-
-import android.app.ListFragment;
-import android.app.LoaderManager;
-import android.content.Context;
-import android.content.CursorLoader;
-import android.content.Loader;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import com.android.dialer.app.R;
-import com.android.dialer.blocking.FilteredNumbersUtil;
-import com.android.dialer.blocking.FilteredNumbersUtil.ImportSendToVoicemailContactsListener;
-
-/** TODO(calderwoodra): documentation */
-public class ViewNumbersToImportFragment extends ListFragment
-    implements LoaderManager.LoaderCallbacks<Cursor>, View.OnClickListener {
-
-  private ViewNumbersToImportAdapter adapter;
-
-  @Override
-  public Context getContext() {
-    return getActivity();
-  }
-
-  @Override
-  public void onActivityCreated(Bundle savedInstanceState) {
-    super.onActivityCreated(savedInstanceState);
-
-    if (adapter == null) {
-      adapter =
-          ViewNumbersToImportAdapter.newViewNumbersToImportAdapter(
-              getContext(), getActivity().getFragmentManager());
-    }
-    setListAdapter(adapter);
-  }
-
-  @Override
-  public void onDestroy() {
-    setListAdapter(null);
-    super.onDestroy();
-  }
-
-  @Override
-  public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    getLoaderManager().initLoader(0, null, this);
-  }
-
-  @Override
-  public void onResume() {
-    super.onResume();
-
-    ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
-    actionBar.setTitle(R.string.import_send_to_voicemail_numbers_label);
-    actionBar.setDisplayShowCustomEnabled(false);
-    actionBar.setDisplayHomeAsUpEnabled(true);
-    actionBar.setDisplayShowHomeEnabled(true);
-    actionBar.setDisplayShowTitleEnabled(true);
-
-    getActivity().findViewById(R.id.cancel_button).setOnClickListener(this);
-    getActivity().findViewById(R.id.import_button).setOnClickListener(this);
-  }
-
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-    return inflater.inflate(R.layout.view_numbers_to_import_fragment, container, false);
-  }
-
-  @Override
-  public Loader<Cursor> onCreateLoader(int id, Bundle args) {
-    final CursorLoader cursorLoader =
-        new CursorLoader(
-            getContext(),
-            Phone.CONTENT_URI,
-            FilteredNumbersUtil.PhoneQuery.PROJECTION,
-            FilteredNumbersUtil.PhoneQuery.SELECT_SEND_TO_VOICEMAIL_TRUE,
-            null,
-            null);
-    return cursorLoader;
-  }
-
-  @Override
-  public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
-    adapter.swapCursor(data);
-  }
-
-  @Override
-  public void onLoaderReset(Loader<Cursor> loader) {
-    adapter.swapCursor(null);
-  }
-
-  @Override
-  public void onClick(final View view) {
-    if (view.getId() == R.id.import_button) {
-      FilteredNumbersUtil.importSendToVoicemailContacts(
-          getContext(),
-          new ImportSendToVoicemailContactsListener() {
-            @Override
-            public void onImportComplete() {
-              if (getActivity() != null) {
-                getActivity().onBackPressed();
-              }
-            }
-          });
-    } else if (view.getId() == R.id.cancel_button) {
-      getActivity().onBackPressed();
-    }
-  }
-}
diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java
deleted file mode 100644
index 6eaa2b6..0000000
--- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindings.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.app.legacybindings;
-
-import android.app.Activity;
-import android.support.annotation.NonNull;
-import android.view.ViewGroup;
-import com.android.dialer.app.calllog.CallLogAdapter;
-import com.android.dialer.app.calllog.calllogcache.CallLogCache;
-import com.android.dialer.app.contactinfo.ContactInfoCache;
-import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-
-/**
- * These are old bindings between Dialer and the container application. All new bindings should be
- * added to the bindings module and not here.
- */
-public interface DialerLegacyBindings {
-
-  /**
-   * activityType must be one of following constants: CallLogAdapter.ACTIVITY_TYPE_CALL_LOG, or
-   * CallLogAdapter.ACTIVITY_TYPE_DIALTACTS.
-   */
-  CallLogAdapter newCallLogAdapter(
-      Activity activity,
-      ViewGroup alertContainer,
-      CallLogAdapter.CallFetcher callFetcher,
-      CallLogAdapter.MultiSelectRemoveView multiSelectRemoveView,
-      CallLogAdapter.OnActionModeStateChangedListener actionModeStateChangedListener,
-      CallLogCache callLogCache,
-      ContactInfoCache contactInfoCache,
-      VoicemailPlaybackPresenter voicemailPlaybackPresenter,
-      @NonNull FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler,
-      int activityType);
-}
diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsFactory.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsFactory.java
deleted file mode 100644
index 70d379c..0000000
--- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsFactory.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.app.legacybindings;
-
-/**
- * This interface should be implementated by the Application subclass. It allows the dialer module
- * to get references to the DialerLegacyBindings.
- */
-public interface DialerLegacyBindingsFactory {
-
-  DialerLegacyBindings newDialerLegacyBindings();
-}
diff --git a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java b/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java
deleted file mode 100644
index e95c470..0000000
--- a/java/com/android/dialer/app/legacybindings/DialerLegacyBindingsStub.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.app.legacybindings;
-
-import android.app.Activity;
-import android.support.annotation.NonNull;
-import android.view.ViewGroup;
-import com.android.dialer.app.calllog.CallLogAdapter;
-import com.android.dialer.app.calllog.calllogcache.CallLogCache;
-import com.android.dialer.app.contactinfo.ContactInfoCache;
-import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-
-/** Default implementation for dialer legacy bindings. */
-public class DialerLegacyBindingsStub implements DialerLegacyBindings {
-
-  @Override
-  public CallLogAdapter newCallLogAdapter(
-      Activity activity,
-      ViewGroup alertContainer,
-      CallLogAdapter.CallFetcher callFetcher,
-      CallLogAdapter.MultiSelectRemoveView multiSelectRemoveView,
-      CallLogAdapter.OnActionModeStateChangedListener actionModeStateChangedListener,
-      CallLogCache callLogCache,
-      ContactInfoCache contactInfoCache,
-      VoicemailPlaybackPresenter voicemailPlaybackPresenter,
-      @NonNull FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler,
-      int activityType) {
-    return new CallLogAdapter(
-        activity,
-        alertContainer,
-        callFetcher,
-        multiSelectRemoveView,
-        actionModeStateChangedListener,
-        callLogCache,
-        contactInfoCache,
-        voicemailPlaybackPresenter,
-        filteredNumberAsyncQueryHandler,
-        activityType);
-  }
-}
diff --git a/java/com/android/dialer/app/list/ContentChangedFilter.java b/java/com/android/dialer/app/list/ContentChangedFilter.java
deleted file mode 100644
index 8c532ba..0000000
--- a/java/com/android/dialer/app/list/ContentChangedFilter.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.app.list;
-
-import android.view.View;
-import android.view.View.AccessibilityDelegate;
-import android.view.ViewGroup;
-import android.view.accessibility.AccessibilityEvent;
-
-/**
- * AccessibilityDelegate that will filter out TYPE_WINDOW_CONTENT_CHANGED Used to suppress "Showing
- * items x of y" from firing of ListView whenever it's content changes. AccessibilityEvent can only
- * be rejected at a view's parent once it is generated, use addToParent() to add this delegate to
- * the parent.
- */
-public class ContentChangedFilter extends AccessibilityDelegate {
-
-  // the view we don't want TYPE_WINDOW_CONTENT_CHANGED to fire.
-  private View view;
-
-  private ContentChangedFilter(View view) {
-    super();
-    this.view = view;
-  }
-
-  /** Add this delegate to the parent of @param view to filter out TYPE_WINDOW_CONTENT_CHANGED */
-  public static void addToParent(View view) {
-    View parent = (View) view.getParent();
-    parent.setAccessibilityDelegate(new ContentChangedFilter(view));
-  }
-
-  @Override
-  public boolean onRequestSendAccessibilityEvent(
-      ViewGroup host, View child, AccessibilityEvent event) {
-    if (child == view) {
-      if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) {
-        return false;
-      }
-    }
-    return super.onRequestSendAccessibilityEvent(host, child, event);
-  }
-}
diff --git a/java/com/android/dialer/app/list/DialerViewPager.java b/java/com/android/dialer/app/list/DialerViewPager.java
deleted file mode 100644
index ae99f05..0000000
--- a/java/com/android/dialer/app/list/DialerViewPager.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.app.list;
-
-import android.content.Context;
-import android.support.v4.view.ViewPager;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-
-/** Class that handles enabling/disabling swiping between @{ViewPagerTabs}. */
-public class DialerViewPager extends ViewPager {
-
-  private boolean enableSwipingPages;
-
-  public DialerViewPager(Context context, AttributeSet attributeSet) {
-    super(context, attributeSet);
-    enableSwipingPages = true;
-  }
-
-  @Override
-  public boolean onInterceptTouchEvent(MotionEvent event) {
-    if (enableSwipingPages) {
-      return super.onInterceptTouchEvent(event);
-    }
-
-    return false;
-  }
-
-  @Override
-  public boolean onTouchEvent(MotionEvent event) {
-    if (enableSwipingPages) {
-      return super.onTouchEvent(event);
-    }
-
-    return false;
-  }
-
-  public void setEnableSwipingPages(boolean enabled) {
-    enableSwipingPages = enabled;
-  }
-}
diff --git a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java b/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
deleted file mode 100644
index 317f24f..0000000
--- a/java/com/android/dialer/app/list/DialtactsPagerAdapter.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.app.list;
-
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.support.annotation.IntDef;
-import android.support.v13.app.FragmentPagerAdapter;
-import android.view.ViewGroup;
-import com.android.dialer.app.calllog.CallLogFragment;
-import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactsfragment.ContactsFragment;
-import com.android.dialer.contactsfragment.ContactsFragment.Header;
-import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.util.ViewUtil;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/** ViewPager adapter for {@link com.android.dialer.app.DialtactsActivity}. */
-public class DialtactsPagerAdapter extends FragmentPagerAdapter {
-
-  /** IntDef for indices of ViewPager tabs. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({TAB_INDEX_SPEED_DIAL, TAB_INDEX_HISTORY, TAB_INDEX_ALL_CONTACTS, TAB_INDEX_VOICEMAIL})
-  public @interface TabIndex {}
-
-  public static final int TAB_INDEX_SPEED_DIAL = 0;
-  public static final int TAB_INDEX_HISTORY = 1;
-  public static final int TAB_INDEX_ALL_CONTACTS = 2;
-  public static final int TAB_INDEX_VOICEMAIL = 3;
-  public static final int TAB_COUNT_DEFAULT = 3;
-  public static final int TAB_COUNT_WITH_VOICEMAIL = 4;
-
-  private final List<Fragment> fragments = new ArrayList<>();
-  private final String[] tabTitles;
-  private OldSpeedDialFragment oldSpeedDialFragment;
-  private CallLogFragment callLogFragment;
-  private ContactsFragment contactsFragment;
-  private CallLogFragment voicemailFragment;
-
-  private boolean hasActiveVoicemailProvider;
-
-  public DialtactsPagerAdapter(
-      FragmentManager fm, String[] tabTitles, boolean hasVoicemailProvider) {
-    super(fm);
-    this.tabTitles = tabTitles;
-    hasActiveVoicemailProvider = hasVoicemailProvider;
-    fragments.addAll(Collections.nCopies(TAB_COUNT_WITH_VOICEMAIL, null));
-  }
-
-  @Override
-  public long getItemId(int position) {
-    return getRtlPosition(position);
-  }
-
-  @Override
-  public Fragment getItem(int position) {
-    LogUtil.d("ViewPagerAdapter.getItem", "position: %d", position);
-    switch (getRtlPosition(position)) {
-      case TAB_INDEX_SPEED_DIAL:
-        if (oldSpeedDialFragment == null) {
-          oldSpeedDialFragment = new OldSpeedDialFragment();
-        }
-        return oldSpeedDialFragment;
-      case TAB_INDEX_HISTORY:
-        if (callLogFragment == null) {
-          callLogFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL);
-        }
-        return callLogFragment;
-      case TAB_INDEX_ALL_CONTACTS:
-        if (contactsFragment == null) {
-          contactsFragment = ContactsFragment.newInstance(Header.ADD_CONTACT);
-        }
-        return contactsFragment;
-      case TAB_INDEX_VOICEMAIL:
-        if (voicemailFragment == null) {
-          voicemailFragment = new VisualVoicemailCallLogFragment();
-          LogUtil.v(
-              "ViewPagerAdapter.getItem",
-              "new VisualVoicemailCallLogFragment: %s",
-              voicemailFragment);
-        }
-        return voicemailFragment;
-      default:
-        throw Assert.createIllegalStateFailException("No fragment at position " + position);
-    }
-  }
-
-  @Override
-  public Fragment instantiateItem(ViewGroup container, int position) {
-    LogUtil.d("ViewPagerAdapter.instantiateItem", "position: %d", position);
-    // On rotation the FragmentManager handles rotation. Therefore getItem() isn't called.
-    // Copy the fragments that the FragmentManager finds so that we can store them in
-    // instance variables for later.
-    final Fragment fragment = (Fragment) super.instantiateItem(container, position);
-    if (fragment instanceof OldSpeedDialFragment) {
-      oldSpeedDialFragment = (OldSpeedDialFragment) fragment;
-    } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_HISTORY) {
-      callLogFragment = (CallLogFragment) fragment;
-    } else if (fragment instanceof ContactsFragment) {
-      contactsFragment = (ContactsFragment) fragment;
-    } else if (fragment instanceof CallLogFragment && position == TAB_INDEX_VOICEMAIL) {
-      voicemailFragment = (CallLogFragment) fragment;
-      LogUtil.v("ViewPagerAdapter.instantiateItem", voicemailFragment.toString());
-    }
-    fragments.set(position, fragment);
-    return fragment;
-  }
-
-  /**
-   * When {@link android.support.v4.view.PagerAdapter#notifyDataSetChanged} is called, this method
-   * is called on all pages to determine whether they need to be recreated. When the voicemail tab
-   * is removed, the view needs to be recreated by returning POSITION_NONE. If notifyDataSetChanged
-   * is called for some other reason, the voicemail tab is recreated only if it is active. All other
-   * tabs do not need to be recreated and POSITION_UNCHANGED is returned.
-   */
-  @Override
-  public int getItemPosition(Object object) {
-    return !hasActiveVoicemailProvider && fragments.indexOf(object) == TAB_INDEX_VOICEMAIL
-        ? POSITION_NONE
-        : POSITION_UNCHANGED;
-  }
-
-  @Override
-  public int getCount() {
-    return hasActiveVoicemailProvider ? TAB_COUNT_WITH_VOICEMAIL : TAB_COUNT_DEFAULT;
-  }
-
-  @Override
-  public CharSequence getPageTitle(@TabIndex int position) {
-    return tabTitles[position];
-  }
-
-  public int getRtlPosition(int position) {
-    if (ViewUtil.isRtl()) {
-      return getCount() - 1 - position;
-    }
-    return position;
-  }
-
-  public void removeVoicemailFragment(FragmentManager manager) {
-    if (voicemailFragment != null) {
-      manager.beginTransaction().remove(voicemailFragment).commitAllowingStateLoss();
-      voicemailFragment = null;
-    }
-  }
-
-  public boolean hasActiveVoicemailProvider() {
-    return hasActiveVoicemailProvider;
-  }
-
-  public void setHasActiveVoicemailProvider(boolean hasActiveVoicemailProvider) {
-    this.hasActiveVoicemailProvider = hasActiveVoicemailProvider;
-  }
-}
diff --git a/java/com/android/dialer/app/list/DragDropController.java b/java/com/android/dialer/app/list/DragDropController.java
deleted file mode 100644
index 1c33a8a..0000000
--- a/java/com/android/dialer/app/list/DragDropController.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.app.list;
-
-import android.view.View;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Class that handles and combines drag events generated from multiple views, and then fires off
- * events to any OnDragDropListeners that have registered for callbacks.
- */
-public class DragDropController {
-
-  private final List<OnDragDropListener> onDragDropListeners = new ArrayList<OnDragDropListener>();
-  private final DragItemContainer dragItemContainer;
-  private final int[] locationOnScreen = new int[2];
-
-  public DragDropController(DragItemContainer dragItemContainer) {
-    this.dragItemContainer = dragItemContainer;
-  }
-
-  /** @return True if the drag is started, false if the drag is cancelled for some reason. */
-  boolean handleDragStarted(View v, int x, int y) {
-    v.getLocationOnScreen(locationOnScreen);
-    x = x + locationOnScreen[0];
-    y = y + locationOnScreen[1];
-    final PhoneFavoriteSquareTileView tileView = dragItemContainer.getViewForLocation(x, y);
-    if (tileView == null) {
-      return false;
-    }
-    for (int i = 0; i < onDragDropListeners.size(); i++) {
-      onDragDropListeners.get(i).onDragStarted(x, y, tileView);
-    }
-
-    return true;
-  }
-
-  public void handleDragHovered(View v, int x, int y) {
-    v.getLocationOnScreen(locationOnScreen);
-    final int screenX = x + locationOnScreen[0];
-    final int screenY = y + locationOnScreen[1];
-    final PhoneFavoriteSquareTileView view = dragItemContainer.getViewForLocation(screenX, screenY);
-    for (int i = 0; i < onDragDropListeners.size(); i++) {
-      onDragDropListeners.get(i).onDragHovered(screenX, screenY, view);
-    }
-  }
-
-  public void handleDragFinished(int x, int y, boolean isRemoveView) {
-    if (isRemoveView) {
-      for (int i = 0; i < onDragDropListeners.size(); i++) {
-        onDragDropListeners.get(i).onDroppedOnRemove();
-      }
-    }
-
-    for (int i = 0; i < onDragDropListeners.size(); i++) {
-      onDragDropListeners.get(i).onDragFinished(x, y);
-    }
-  }
-
-  public void addOnDragDropListener(OnDragDropListener listener) {
-    if (!onDragDropListeners.contains(listener)) {
-      onDragDropListeners.add(listener);
-    }
-  }
-
-  public void removeOnDragDropListener(OnDragDropListener listener) {
-    if (onDragDropListeners.contains(listener)) {
-      onDragDropListeners.remove(listener);
-    }
-  }
-
-  /**
-   * Callback interface used to retrieve views based on the current touch coordinates of the drag
-   * event. The {@link DragItemContainer} houses the draggable views that this {@link
-   * DragDropController} controls.
-   */
-  public interface DragItemContainer {
-
-    PhoneFavoriteSquareTileView getViewForLocation(int x, int y);
-  }
-}
diff --git a/java/com/android/dialer/app/list/ListsFragment.java b/java/com/android/dialer/app/list/ListsFragment.java
deleted file mode 100644
index 93e8923..0000000
--- a/java/com/android/dialer/app/list/ListsFragment.java
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.app.list;
-
-import static android.support.v4.view.ViewPager.SCROLL_STATE_SETTLING;
-
-import android.app.Fragment;
-import android.content.SharedPreferences;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Trace;
-import android.preference.PreferenceManager;
-import android.provider.VoicemailContract;
-import android.support.v4.view.ViewPager.OnPageChangeListener;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import com.android.contacts.common.list.ViewPagerTabs;
-import com.android.dialer.app.R;
-import com.android.dialer.app.calllog.CallLogFragment;
-import com.android.dialer.app.calllog.CallLogFragment.CallLogFragmentListener;
-import com.android.dialer.app.calllog.CallLogNotificationsService;
-import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.database.CallLogQueryHandler;
-import com.android.dialer.database.CallLogQueryHandler.Listener;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-import com.android.dialer.logging.UiAction;
-import com.android.dialer.performancereport.PerformanceReport;
-import com.android.dialer.util.PermissionsUtil;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler.Source;
-import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
-import com.android.dialer.voicemailstatus.VoicemailStatusHelper;
-import java.util.ArrayList;
-
-/**
- * Fragment that is used as the main screen of the Dialer.
- *
- * <p>Contains a ViewPager that contains various contact lists like the Speed Dial list and the All
- * Contacts list. This will also eventually contain the logic that allows sliding the ViewPager
- * containing the lists up above the search bar and pin it against the top of the screen.
- */
-public class ListsFragment extends Fragment
-    implements OnPageChangeListener, Listener, CallLogFragmentListener {
-
-  private static final String TAG = "ListsFragment";
-
-  private DialerViewPager viewPager;
-  private ViewPagerTabs viewPagerTabs;
-  private DialtactsPagerAdapter adapter;
-  private RemoveView removeView;
-  private View removeViewContent;
-  private Fragment currentPage;
-  private SharedPreferences prefs;
-  private boolean hasFetchedVoicemailStatus;
-  private boolean showVoicemailTabAfterVoicemailStatusIsFetched;
-  private final ArrayList<OnPageChangeListener> onPageChangeListeners = new ArrayList<>();
-  /** The position of the currently selected tab. */
-  private int tabIndex = DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL;
-
-  private boolean paused;
-  private CallLogQueryHandler callLogQueryHandler;
-
-  private UiAction.Type[] actionTypeList;
-  private final DialerImpression.Type[] swipeImpressionList =
-      new DialerImpression.Type[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
-  private final DialerImpression.Type[] clickImpressionList =
-      new DialerImpression.Type[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
-
-  // Only for detecting page selected by swiping or clicking.
-  private boolean onPageScrolledBeforeScrollStateSettling;
-
-  private final ContentObserver voicemailStatusObserver =
-      new ContentObserver(new Handler()) {
-        @Override
-        public void onChange(boolean selfChange) {
-          super.onChange(selfChange);
-          callLogQueryHandler.fetchVoicemailStatus();
-        }
-      };
-
-  @Override
-  public void onCreate(Bundle savedInstanceState) {
-    LogUtil.d("ListsFragment.onCreate", null);
-    Trace.beginSection(TAG + " onCreate");
-    super.onCreate(savedInstanceState);
-    prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
-    Trace.endSection();
-  }
-
-  @Override
-  public void onResume() {
-    LogUtil.enterBlock("ListsFragment.onResume");
-    Trace.beginSection(TAG + " onResume");
-    super.onResume();
-
-    paused = false;
-
-    if (getUserVisibleHint()) {
-      sendScreenViewForCurrentPosition();
-    }
-
-    // Fetch voicemail status to determine if we should show the voicemail tab.
-    callLogQueryHandler =
-        new CallLogQueryHandler(getActivity(), getActivity().getContentResolver(), this);
-    callLogQueryHandler.fetchVoicemailStatus();
-    callLogQueryHandler.fetchMissedCallsUnreadCount();
-    Trace.endSection();
-    currentPage = adapter.getItem(viewPager.getCurrentItem());
-  }
-
-  @Override
-  public void onPause() {
-    LogUtil.enterBlock("ListsFragment.onPause");
-    super.onPause();
-
-    paused = true;
-  }
-
-  @Override
-  public void onDestroyView() {
-    super.onDestroyView();
-    viewPager.removeOnPageChangeListener(this);
-  }
-
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-    LogUtil.enterBlock("ListsFragment.onCreateView");
-    Trace.beginSection(TAG + " onCreateView");
-    Trace.beginSection(TAG + " inflate view");
-    final View parentView = inflater.inflate(R.layout.lists_fragment, container, false);
-    Trace.endSection();
-    Trace.beginSection(TAG + " setup views");
-
-    actionTypeList = new UiAction.Type[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
-    actionTypeList[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
-        UiAction.Type.CHANGE_TAB_TO_FAVORITE;
-    actionTypeList[DialtactsPagerAdapter.TAB_INDEX_HISTORY] = UiAction.Type.CHANGE_TAB_TO_CALL_LOG;
-    actionTypeList[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
-        UiAction.Type.CHANGE_TAB_TO_CONTACTS;
-    actionTypeList[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
-        UiAction.Type.CHANGE_TAB_TO_VOICEMAIL;
-
-    swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
-        DialerImpression.Type.SWITCH_TAB_TO_FAVORITE_BY_SWIPE;
-    swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_HISTORY] =
-        DialerImpression.Type.SWITCH_TAB_TO_CALL_LOG_BY_SWIPE;
-    swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
-        DialerImpression.Type.SWITCH_TAB_TO_CONTACTS_BY_SWIPE;
-    swipeImpressionList[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
-        DialerImpression.Type.SWITCH_TAB_TO_VOICEMAIL_BY_SWIPE;
-
-    clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
-        DialerImpression.Type.SWITCH_TAB_TO_FAVORITE_BY_CLICK;
-    clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_HISTORY] =
-        DialerImpression.Type.SWITCH_TAB_TO_CALL_LOG_BY_CLICK;
-    clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
-        DialerImpression.Type.SWITCH_TAB_TO_CONTACTS_BY_CLICK;
-    clickImpressionList[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
-        DialerImpression.Type.SWITCH_TAB_TO_VOICEMAIL_BY_CLICK;
-
-    String[] tabTitles = new String[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
-    tabTitles[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] =
-        getResources().getString(R.string.tab_speed_dial);
-    tabTitles[DialtactsPagerAdapter.TAB_INDEX_HISTORY] =
-        getResources().getString(R.string.tab_history);
-    tabTitles[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] =
-        getResources().getString(R.string.tab_all_contacts);
-    tabTitles[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] =
-        getResources().getString(R.string.tab_voicemail);
-
-    int[] tabIcons = new int[DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL];
-    tabIcons[DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL] = R.drawable.quantum_ic_grade_white_24;
-    tabIcons[DialtactsPagerAdapter.TAB_INDEX_HISTORY] = R.drawable.quantum_ic_schedule_white_24;
-    tabIcons[DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS] = R.drawable.quantum_ic_people_white_24;
-    tabIcons[DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL] = R.drawable.quantum_ic_voicemail_white_24;
-
-    viewPager = (DialerViewPager) parentView.findViewById(R.id.lists_pager);
-    adapter =
-        new DialtactsPagerAdapter(
-            getChildFragmentManager(),
-            tabTitles,
-            prefs.getBoolean(
-                VisualVoicemailEnabledChecker.PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, false));
-    viewPager.setAdapter(adapter);
-
-    // This is deliberate. See cl/172018946 for the app startup implications of using 1 here
-    // versus loading more fragments upfront.
-    viewPager.setOffscreenPageLimit(1);
-
-    viewPager.addOnPageChangeListener(this);
-    showTab(DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL);
-
-    viewPagerTabs = (ViewPagerTabs) parentView.findViewById(R.id.lists_pager_header);
-    viewPagerTabs.configureTabIcons(tabIcons);
-    viewPagerTabs.setViewPager(viewPager);
-    addOnPageChangeListener(viewPagerTabs);
-    removeView = (RemoveView) parentView.findViewById(R.id.remove_view);
-    removeViewContent = parentView.findViewById(R.id.remove_view_content);
-
-    if (PermissionsUtil.hasReadVoicemailPermissions(getContext())
-        && PermissionsUtil.hasAddVoicemailPermissions(getContext())) {
-      getActivity()
-          .getContentResolver()
-          .registerContentObserver(
-              VoicemailContract.Status.CONTENT_URI, true, voicemailStatusObserver);
-    } else {
-      LogUtil.w("ListsFragment.onCreateView", "no voicemail read permissions");
-    }
-
-    Trace.endSection();
-    Trace.endSection();
-    return parentView;
-  }
-
-  @Override
-  public void onDestroy() {
-    getActivity().getContentResolver().unregisterContentObserver(voicemailStatusObserver);
-    super.onDestroy();
-  }
-
-  public void addOnPageChangeListener(OnPageChangeListener onPageChangeListener) {
-    if (!onPageChangeListeners.contains(onPageChangeListener)) {
-      onPageChangeListeners.add(onPageChangeListener);
-    }
-  }
-
-  /**
-   * Shows the tab with the specified index. If the voicemail tab index is specified, but the
-   * voicemail status hasn't been fetched, it will show the speed dial tab and try to show the
-   * voicemail tab after the voicemail status has been fetched.
-   */
-  public void showTab(int index) {
-    if (index == DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL) {
-      if (adapter.hasActiveVoicemailProvider()) {
-        viewPager.setCurrentItem(adapter.getRtlPosition(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL));
-      } else if (!hasFetchedVoicemailStatus) {
-        // Try to show the voicemail tab after the voicemail status returns.
-        showVoicemailTabAfterVoicemailStatusIsFetched = true;
-      }
-    } else if (index < getTabCount()) {
-      viewPager.setCurrentItem(adapter.getRtlPosition(index));
-    }
-  }
-
-  @Override
-  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-    // onPageScrolled(0, 0, 0) is called when app launch. And we should ignore it.
-    // It's also called when swipe right from first tab, but we don't care.
-    if (positionOffsetPixels != 0) {
-      onPageScrolledBeforeScrollStateSettling = true;
-    }
-    tabIndex = adapter.getRtlPosition(position);
-
-    final int count = onPageChangeListeners.size();
-    for (int i = 0; i < count; i++) {
-      onPageChangeListeners.get(i).onPageScrolled(position, positionOffset, positionOffsetPixels);
-    }
-  }
-
-  @Override
-  public void onPageSelected(int position) {
-    // onPageScrollStateChanged(SCROLL_STATE_SETTLING) must be called before this.
-    // If onPageScrolled() is called before that, the page is selected by swiping;
-    // otherwise the page is selected by clicking.
-    if (onPageScrolledBeforeScrollStateSettling) {
-      Logger.get(getContext()).logImpression(swipeImpressionList[position]);
-      onPageScrolledBeforeScrollStateSettling = false;
-    } else {
-      Logger.get(getContext()).logImpression(clickImpressionList[position]);
-    }
-
-    PerformanceReport.recordClick(actionTypeList[position]);
-
-    LogUtil.i("ListsFragment.onPageSelected", "position: %d", position);
-    tabIndex = adapter.getRtlPosition(position);
-
-    // Show the tab which has been selected instead.
-    showVoicemailTabAfterVoicemailStatusIsFetched = false;
-
-    final int count = onPageChangeListeners.size();
-    for (int i = 0; i < count; i++) {
-      onPageChangeListeners.get(i).onPageSelected(position);
-    }
-    sendScreenViewForCurrentPosition();
-
-    if (currentPage instanceof CallLogFragment) {
-      ((CallLogFragment) currentPage).onNotVisible();
-    }
-    currentPage = adapter.getItem(position);
-    if (currentPage instanceof CallLogFragment) {
-      ((CallLogFragment) currentPage).onVisible();
-    }
-  }
-
-  @Override
-  public void onPageScrollStateChanged(int state) {
-    if (state != SCROLL_STATE_SETTLING) {
-      onPageScrolledBeforeScrollStateSettling = false;
-    }
-
-    final int count = onPageChangeListeners.size();
-    for (int i = 0; i < count; i++) {
-      onPageChangeListeners.get(i).onPageScrollStateChanged(state);
-    }
-  }
-
-  @Override
-  public void onVoicemailStatusFetched(Cursor statusCursor) {
-    hasFetchedVoicemailStatus = true;
-
-    if (getActivity() == null || paused) {
-      return;
-    }
-
-    VoicemailStatusCorruptionHandler.maybeFixVoicemailStatus(
-        getContext(), statusCursor, Source.Activity);
-
-    // Update hasActiveVoicemailProvider, which controls the number of tabs displayed.
-    boolean hasActiveVoicemailProvider =
-        VoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor) > 0;
-    if (hasActiveVoicemailProvider != adapter.hasActiveVoicemailProvider()) {
-      adapter.setHasActiveVoicemailProvider(hasActiveVoicemailProvider);
-      adapter.notifyDataSetChanged();
-
-      if (hasActiveVoicemailProvider) {
-        Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_TAB_VISIBLE);
-        viewPagerTabs.updateTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-      } else {
-        viewPagerTabs.removeTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-        adapter.removeVoicemailFragment(getChildFragmentManager());
-      }
-
-      prefs
-          .edit()
-          .putBoolean(
-              VisualVoicemailEnabledChecker.PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER,
-              hasActiveVoicemailProvider)
-          .apply();
-    }
-
-    if (hasActiveVoicemailProvider) {
-      callLogQueryHandler.fetchVoicemailUnreadCount();
-    }
-
-    if (adapter.hasActiveVoicemailProvider() && showVoicemailTabAfterVoicemailStatusIsFetched) {
-      showVoicemailTabAfterVoicemailStatusIsFetched = false;
-      showTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-    }
-  }
-
-  @Override
-  public void onVoicemailUnreadCountFetched(Cursor cursor) {
-    if (getActivity() == null || getActivity().isFinishing() || cursor == null) {
-      return;
-    }
-
-    int count = 0;
-    try {
-      count = cursor.getCount();
-    } finally {
-      cursor.close();
-    }
-
-    viewPagerTabs.setUnreadCount(count, DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-    viewPagerTabs.updateTab(DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL);
-  }
-
-  @Override
-  public void onMissedCallsUnreadCountFetched(Cursor cursor) {
-    if (getActivity() == null || getActivity().isFinishing() || cursor == null) {
-      return;
-    }
-
-    int count = 0;
-    try {
-      count = cursor.getCount();
-    } finally {
-      cursor.close();
-    }
-
-    viewPagerTabs.setUnreadCount(count, DialtactsPagerAdapter.TAB_INDEX_HISTORY);
-    viewPagerTabs.updateTab(DialtactsPagerAdapter.TAB_INDEX_HISTORY);
-  }
-
-  @Override
-  public boolean onCallsFetched(Cursor statusCursor) {
-    // Return false; did not take ownership of cursor
-    return false;
-  }
-
-  public int getCurrentTabIndex() {
-    return tabIndex;
-  }
-
-  public boolean shouldShowFab() {
-    // If the VVM TOS is visible, don't show the fab
-    if (currentPage instanceof VisualVoicemailCallLogFragment
-        && ((VisualVoicemailCallLogFragment) currentPage).isModalAlertVisible()) {
-      return false;
-    }
-
-    return true;
-  }
-
-  @Override
-  public void updateTabUnreadCounts() {
-    if (callLogQueryHandler != null) {
-      callLogQueryHandler.fetchMissedCallsUnreadCount();
-      if (adapter.hasActiveVoicemailProvider()) {
-        callLogQueryHandler.fetchVoicemailUnreadCount();
-      }
-    }
-  }
-
-  /** External method to mark all missed calls as read. */
-  public void markMissedCallsAsReadAndRemoveNotifications() {
-    if (callLogQueryHandler != null) {
-      callLogQueryHandler.markMissedCallsAsRead();
-      CallLogNotificationsService.cancelAllMissedCalls(getContext());
-    }
-  }
-
-  public void showRemoveView(boolean show) {
-    removeViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
-    removeView.setAlpha(show ? 0 : 1);
-    removeView.animate().alpha(show ? 1 : 0).start();
-  }
-
-  @Override
-  public void showMultiSelectRemoveView(boolean show) {
-    viewPagerTabs.setVisibility(show ? View.GONE : View.VISIBLE);
-    viewPager.setEnableSwipingPages(!show);
-  }
-
-  public boolean hasFrequents() {
-    OldSpeedDialFragment page =
-        (OldSpeedDialFragment)
-            adapter.getItem(adapter.getRtlPosition(DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL));
-    return page.hasFrequents();
-  }
-
-  public RemoveView getRemoveView() {
-    return removeView;
-  }
-
-  public int getTabCount() {
-    return adapter.getCount();
-  }
-
-  public void sendScreenViewForCurrentPosition() {
-    if (!isResumed()) {
-      return;
-    }
-
-    ScreenEvent.Type screenType;
-    switch (getCurrentTabIndex()) {
-      case DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL:
-        screenType = ScreenEvent.Type.SPEED_DIAL;
-        break;
-      case DialtactsPagerAdapter.TAB_INDEX_HISTORY:
-        screenType = ScreenEvent.Type.CALL_LOG;
-        break;
-      case DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS:
-        screenType = ScreenEvent.Type.ALL_CONTACTS;
-        break;
-      case DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL:
-        screenType = ScreenEvent.Type.VOICEMAIL_LOG;
-        break;
-      default:
-        return;
-    }
-    Logger.get(getActivity()).logScreenView(screenType, getActivity());
-  }
-}
diff --git a/java/com/android/dialer/app/list/OldSpeedDialFragment.java b/java/com/android/dialer/app/list/OldSpeedDialFragment.java
deleted file mode 100644
index 9922ee2..0000000
--- a/java/com/android/dialer/app/list/OldSpeedDialFragment.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.app.list;
-
-import static android.Manifest.permission.READ_CONTACTS;
-
-import android.animation.Animator;
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
-import android.app.Fragment;
-import android.app.LoaderManager;
-import android.content.CursorLoader;
-import android.content.Loader;
-import android.content.pm.PackageManager;
-import android.database.Cursor;
-import android.graphics.Rect;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Trace;
-import android.support.v13.app.FragmentCompat;
-import android.support.v4.util.LongSparseArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.animation.AnimationUtils;
-import android.view.animation.LayoutAnimationController;
-import android.widget.AbsListView;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.FrameLayout;
-import android.widget.FrameLayout.LayoutParams;
-import android.widget.ImageView;
-import android.widget.ListView;
-import com.android.contacts.common.ContactTileLoaderFactory;
-import com.android.contacts.common.list.ContactTileView;
-import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
-import com.android.dialer.app.R;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.common.FragmentUtils;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.util.PermissionsUtil;
-import com.android.dialer.util.ViewUtil;
-import com.android.dialer.widget.EmptyContentView;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-/** This fragment displays the user's favorite/frequent contacts in a grid. */
-public class OldSpeedDialFragment extends Fragment
-    implements OnItemClickListener,
-        PhoneFavoritesTileAdapter.OnDataSetChangedForAnimationListener,
-        EmptyContentView.OnEmptyViewActionButtonClickedListener,
-        FragmentCompat.OnRequestPermissionsResultCallback {
-
-  private static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
-
-  /**
-   * By default, the animation code assumes that all items in a list view are of the same height
-   * when animating new list items into view (e.g. from the bottom of the screen into view). This
-   * can cause incorrect translation offsets when a item that is larger or smaller than other list
-   * item is removed from the list. This key is used to provide the actual height of the removed
-   * object so that the actual translation appears correct to the user.
-   */
-  private static final long KEY_REMOVED_ITEM_HEIGHT = Long.MAX_VALUE;
-
-  private static final String TAG = "OldSpeedDialFragment";
-  /** Used with LoaderManager. */
-  private static final int LOADER_ID_CONTACT_TILE = 1;
-
-  private final LongSparseArray<Integer> itemIdTopMap = new LongSparseArray<>();
-  private final LongSparseArray<Integer> itemIdLeftMap = new LongSparseArray<>();
-  private final ContactTileView.Listener contactTileAdapterListener =
-      new ContactTileAdapterListener(this);
-  private final ScrollListener scrollListener = new ScrollListener(this);
-  private LoaderManager.LoaderCallbacks<Cursor> contactTileLoaderListener;
-  private int animationDuration;
-  private PhoneFavoritesTileAdapter contactTileAdapter;
-  private PhoneFavoriteListView listView;
-  private View contactTileFrame;
-  /** Layout used when there are no favorites. */
-  private EmptyContentView emptyView;
-
-  @Override
-  public void onCreate(Bundle savedState) {
-    Trace.beginSection(TAG + " onCreate");
-    super.onCreate(savedState);
-
-    // Construct two base adapters which will become part of PhoneFavoriteMergedAdapter.
-    // We don't construct the resultant adapter at this moment since it requires LayoutInflater
-    // that will be available on onCreateView().
-    contactTileAdapter =
-        new PhoneFavoritesTileAdapter(getContext(), contactTileAdapterListener, this);
-    contactTileAdapter.setPhotoLoader(ContactPhotoManager.getInstance(getContext()));
-    contactTileLoaderListener = new ContactTileLoaderListener(this, contactTileAdapter);
-    animationDuration = getResources().getInteger(R.integer.fade_duration);
-    Trace.endSection();
-  }
-
-  @Override
-  public void onResume() {
-    Trace.beginSection(TAG + " onResume");
-    super.onResume();
-    if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
-      if (getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE) == null) {
-        getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, contactTileLoaderListener);
-
-      } else {
-        getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE).forceLoad();
-      }
-
-      emptyView.setDescription(R.string.speed_dial_empty);
-      emptyView.setActionLabel(R.string.speed_dial_empty_add_favorite_action);
-    } else {
-      emptyView.setDescription(R.string.permission_no_speeddial);
-      emptyView.setActionLabel(R.string.permission_single_turn_on);
-    }
-    Trace.endSection();
-  }
-
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-    Trace.beginSection(TAG + " onCreateView");
-    View parentView = inflater.inflate(R.layout.speed_dial_fragment, container, false);
-
-    listView = (PhoneFavoriteListView) parentView.findViewById(R.id.contact_tile_list);
-    listView.setOnItemClickListener(this);
-    listView.setVerticalScrollBarEnabled(false);
-    listView.setVerticalScrollbarPosition(View.SCROLLBAR_POSITION_RIGHT);
-    listView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
-    listView.getDragDropController().addOnDragDropListener(contactTileAdapter);
-    listView.setDragShadowOverlay(
-        FragmentUtils.getParentUnsafe(this, HostInterface.class).getDragShadowOverlay());
-
-    emptyView = (EmptyContentView) parentView.findViewById(R.id.empty_list_view);
-    emptyView.setImage(R.drawable.empty_speed_dial);
-    emptyView.setActionClickedListener(this);
-
-    contactTileFrame = parentView.findViewById(R.id.contact_tile_frame);
-
-    final LayoutAnimationController controller =
-        new LayoutAnimationController(
-            AnimationUtils.loadAnimation(getContext(), android.R.anim.fade_in));
-    controller.setDelay(0);
-    listView.setLayoutAnimation(controller);
-    listView.setAdapter(contactTileAdapter);
-
-    listView.setOnScrollListener(scrollListener);
-    listView.setFastScrollEnabled(false);
-    listView.setFastScrollAlwaysVisible(false);
-
-    // prevent content changes of the list from firing accessibility events.
-    listView.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_NONE);
-    ContentChangedFilter.addToParent(listView);
-
-    Trace.endSection();
-    return parentView;
-  }
-
-  public boolean hasFrequents() {
-    if (contactTileAdapter == null) {
-      return false;
-    }
-    return contactTileAdapter.getNumFrequents() > 0;
-  }
-
-  /* package */ void setEmptyViewVisibility(final boolean visible) {
-    final int previousVisibility = emptyView.getVisibility();
-    final int emptyViewVisibility = visible ? View.VISIBLE : View.GONE;
-    final int listViewVisibility = visible ? View.GONE : View.VISIBLE;
-
-    if (previousVisibility != emptyViewVisibility) {
-      final FrameLayout.LayoutParams params = (LayoutParams) contactTileFrame.getLayoutParams();
-      params.height = visible ? LayoutParams.WRAP_CONTENT : LayoutParams.MATCH_PARENT;
-      contactTileFrame.setLayoutParams(params);
-      emptyView.setVisibility(emptyViewVisibility);
-      listView.setVisibility(listViewVisibility);
-    }
-  }
-
-  @Override
-  public void onStart() {
-    super.onStart();
-    listView
-        .getDragDropController()
-        .addOnDragDropListener(FragmentUtils.getParentUnsafe(this, OnDragDropListener.class));
-    FragmentUtils.getParentUnsafe(this, HostInterface.class)
-        .setDragDropController(listView.getDragDropController());
-
-    // Use initLoader() instead of restartLoader() to refraining unnecessary reload.
-    // This method call implicitly assures ContactTileLoaderListener's onLoadFinished() will
-    // be called, on which we'll check if "all" contacts should be reloaded again or not.
-    if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
-      getLoaderManager().initLoader(LOADER_ID_CONTACT_TILE, null, contactTileLoaderListener);
-    } else {
-      setEmptyViewVisibility(true);
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   *
-   * <p>This is only effective for elements provided by {@link #contactTileAdapter}. {@link
-   * #contactTileAdapter} has its own logic for click events.
-   */
-  @Override
-  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-    final int contactTileAdapterCount = contactTileAdapter.getCount();
-    if (position <= contactTileAdapterCount) {
-      LogUtil.e(
-          "OldSpeedDialFragment.onItemClick",
-          "event for unexpected position. The position "
-              + position
-              + " is before \"all\" section. Ignored.");
-    }
-  }
-
-  /**
-   * Cache the current view offsets into memory. Once a relayout of views in the ListView has
-   * happened due to a dataset change, the cached offsets are used to create animations that slide
-   * views from their previous positions to their new ones, to give the appearance that the views
-   * are sliding into their new positions.
-   */
-  private void saveOffsets(int removedItemHeight) {
-    final int firstVisiblePosition = listView.getFirstVisiblePosition();
-    for (int i = 0; i < listView.getChildCount(); i++) {
-      final View child = listView.getChildAt(i);
-      final int position = firstVisiblePosition + i;
-      // Since we are getting the position from mListView and then querying
-      // mContactTileAdapter, its very possible that things are out of sync
-      // and we might index out of bounds.  Let's make sure that this doesn't happen.
-      if (!contactTileAdapter.isIndexInBound(position)) {
-        continue;
-      }
-      final long itemId = contactTileAdapter.getItemId(position);
-      itemIdTopMap.put(itemId, child.getTop());
-      itemIdLeftMap.put(itemId, child.getLeft());
-    }
-    itemIdTopMap.put(KEY_REMOVED_ITEM_HEIGHT, removedItemHeight);
-  }
-
-  /*
-   * Performs animations for the gridView
-   */
-  private void animateGridView(final long... idsInPlace) {
-    if (itemIdTopMap.size() == 0) {
-      // Don't do animations if the database is being queried for the first time and
-      // the previous item offsets have not been cached, or the user hasn't done anything
-      // (dragging, swiping etc) that requires an animation.
-      return;
-    }
-
-    ViewUtil.doOnPreDraw(
-        listView,
-        true,
-        new Runnable() {
-          @Override
-          public void run() {
-
-            final int firstVisiblePosition = listView.getFirstVisiblePosition();
-            final AnimatorSet animSet = new AnimatorSet();
-            final ArrayList<Animator> animators = new ArrayList<Animator>();
-            for (int i = 0; i < listView.getChildCount(); i++) {
-              final View child = listView.getChildAt(i);
-              int position = firstVisiblePosition + i;
-
-              // Since we are getting the position from mListView and then querying
-              // mContactTileAdapter, its very possible that things are out of sync
-              // and we might index out of bounds.  Let's make sure that this doesn't happen.
-              if (!contactTileAdapter.isIndexInBound(position)) {
-                continue;
-              }
-
-              final long itemId = contactTileAdapter.getItemId(position);
-
-              if (containsId(idsInPlace, itemId)) {
-                animators.add(ObjectAnimator.ofFloat(child, "alpha", 0.0f, 1.0f));
-                break;
-              } else {
-                Integer startTop = itemIdTopMap.get(itemId);
-                Integer startLeft = itemIdLeftMap.get(itemId);
-                final int top = child.getTop();
-                final int left = child.getLeft();
-                int deltaX = 0;
-                int deltaY = 0;
-
-                if (startLeft != null) {
-                  if (startLeft != left) {
-                    deltaX = startLeft - left;
-                    animators.add(ObjectAnimator.ofFloat(child, "translationX", deltaX, 0.0f));
-                  }
-                }
-
-                if (startTop != null) {
-                  if (startTop != top) {
-                    deltaY = startTop - top;
-                    animators.add(ObjectAnimator.ofFloat(child, "translationY", deltaY, 0.0f));
-                  }
-                }
-              }
-            }
-
-            if (animators.size() > 0) {
-              animSet.setDuration(animationDuration).playTogether(animators);
-              animSet.start();
-            }
-
-            itemIdTopMap.clear();
-            itemIdLeftMap.clear();
-          }
-        });
-  }
-
-  private boolean containsId(long[] ids, long target) {
-    // Linear search on array is fine because this is typically only 0-1 elements long
-    for (int i = 0; i < ids.length; i++) {
-      if (ids[i] == target) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public void onDataSetChangedForAnimation(long... idsInPlace) {
-    animateGridView(idsInPlace);
-  }
-
-  @Override
-  public void cacheOffsetsForDatasetChange() {
-    saveOffsets(0);
-  }
-
-  @Override
-  public void onEmptyViewActionButtonClicked() {
-    String[] deniedPermissions =
-        PermissionsUtil.getPermissionsCurrentlyDenied(
-            getContext(), PermissionsUtil.allContactsGroupPermissionsUsedInDialer);
-    if (deniedPermissions.length > 0) {
-      LogUtil.i(
-          "OldSpeedDialFragment.onEmptyViewActionButtonClicked",
-          "Requesting permissions: " + Arrays.toString(deniedPermissions));
-      FragmentCompat.requestPermissions(
-          this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
-    } else {
-      // Switch tabs
-      FragmentUtils.getParentUnsafe(this, HostInterface.class).showAllContactsTab();
-    }
-  }
-
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, String[] permissions, int[] grantResults) {
-    if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE) {
-      if (grantResults.length == 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
-        PermissionsUtil.notifyPermissionGranted(getContext(), READ_CONTACTS);
-      }
-    }
-  }
-
-  private static final class ContactTileLoaderListener
-      implements LoaderManager.LoaderCallbacks<Cursor> {
-
-    private final OldSpeedDialFragment fragment;
-    private final PhoneFavoritesTileAdapter adapter;
-
-    ContactTileLoaderListener(OldSpeedDialFragment fragment, PhoneFavoritesTileAdapter adapter) {
-      this.fragment = fragment;
-      this.adapter = adapter;
-    }
-
-    @Override
-    public CursorLoader onCreateLoader(int id, Bundle args) {
-      return ContactTileLoaderFactory.createStrequentPhoneOnlyLoader(fragment.getContext());
-    }
-
-    @Override
-    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
-      adapter.setContactCursor(data);
-      fragment.setEmptyViewVisibility(adapter.getCount() == 0);
-      FragmentUtils.getParentUnsafe(fragment, HostInterface.class)
-          .setHasFrequents(adapter.getNumFrequents() > 0);
-    }
-
-    @Override
-    public void onLoaderReset(Loader<Cursor> loader) {}
-  }
-
-  private static final class ContactTileAdapterListener implements ContactTileView.Listener {
-
-    private final OldSpeedDialFragment fragment;
-
-    ContactTileAdapterListener(OldSpeedDialFragment fragment) {
-      this.fragment = fragment;
-    }
-
-    @Override
-    public void onContactSelected(
-        Uri contactUri, Rect targetRect, CallSpecificAppData callSpecificAppData) {
-      FragmentUtils.getParentUnsafe(fragment, OnPhoneNumberPickerActionListener.class)
-          .onPickDataUri(contactUri, false /* isVideoCall */, callSpecificAppData);
-    }
-
-    @Override
-    public void onCallNumberDirectly(String phoneNumber, CallSpecificAppData callSpecificAppData) {
-      FragmentUtils.getParentUnsafe(fragment, OnPhoneNumberPickerActionListener.class)
-          .onPickPhoneNumber(phoneNumber, false /* isVideoCall */, callSpecificAppData);
-    }
-  }
-
-  private static class ScrollListener implements ListView.OnScrollListener {
-
-    private final OldSpeedDialFragment fragment;
-
-    ScrollListener(OldSpeedDialFragment fragment) {
-      this.fragment = fragment;
-    }
-
-    @Override
-    public void onScroll(
-        AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
-      FragmentUtils.getParentUnsafe(fragment, OnListFragmentScrolledListener.class)
-          .onListFragmentScroll(firstVisibleItem, visibleItemCount, totalItemCount);
-    }
-
-    @Override
-    public void onScrollStateChanged(AbsListView view, int scrollState) {
-      FragmentUtils.getParentUnsafe(fragment, OnListFragmentScrolledListener.class)
-          .onListFragmentScrollStateChange(scrollState);
-    }
-  }
-
-  /** Interface for parents of OldSpeedDialFragment to implement. */
-  public interface HostInterface {
-
-    void setDragDropController(DragDropController controller);
-
-    void showAllContactsTab();
-
-    ImageView getDragShadowOverlay();
-
-    void setHasFrequents(boolean hasFrequents);
-  }
-}
diff --git a/java/com/android/dialer/app/list/OnDragDropListener.java b/java/com/android/dialer/app/list/OnDragDropListener.java
deleted file mode 100644
index b71c7fe..0000000
--- a/java/com/android/dialer/app/list/OnDragDropListener.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.app.list;
-
-/**
- * Classes that want to receive callbacks in response to drag events should implement this
- * interface.
- */
-public interface OnDragDropListener {
-
-  /**
-   * Called when a drag is started.
-   *
-   * @param x X-coordinate of the drag event
-   * @param y Y-coordinate of the drag event
-   * @param view The contact tile which the drag was started on
-   */
-  void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view);
-
-  /**
-   * Called when a drag is in progress and the user moves the dragged contact to a location.
-   *
-   * @param x X-coordinate of the drag event
-   * @param y Y-coordinate of the drag event
-   * @param view Contact tile in the ListView which is currently being displaced by the dragged
-   *     contact
-   */
-  void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view);
-
-  /**
-   * Called when a drag is completed (whether by dropping it somewhere or simply by dragging the
-   * contact off the screen)
-   *
-   * @param x X-coordinate of the drag event
-   * @param y Y-coordinate of the drag event
-   */
-  void onDragFinished(int x, int y);
-
-  /**
-   * Called when a contact has been dropped on the remove view, indicating that the user wants to
-   * remove this contact.
-   */
-  void onDroppedOnRemove();
-}
diff --git a/java/com/android/dialer/app/list/OnListFragmentScrolledListener.java b/java/com/android/dialer/app/list/OnListFragmentScrolledListener.java
deleted file mode 100644
index a76f3b5..0000000
--- a/java/com/android/dialer/app/list/OnListFragmentScrolledListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2013 Google Inc.
- * Licensed to The Android Open Source Project.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.app.list;
-
-/*
- * Interface to provide callback to activity when a child fragment is scrolled
- */
-public interface OnListFragmentScrolledListener {
-
-  void onListFragmentScrollStateChange(int scrollState);
-
-  void onListFragmentScroll(int firstVisibleItem, int visibleItemCount, int totalItemCount);
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteListView.java b/java/com/android/dialer/app/list/PhoneFavoriteListView.java
deleted file mode 100644
index ff867f9..0000000
--- a/java/com/android/dialer/app/list/PhoneFavoriteListView.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.app.list;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.content.Context;
-import android.content.res.Configuration;
-import android.graphics.Bitmap;
-import android.os.Handler;
-import android.util.AttributeSet;
-import android.view.DragEvent;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.widget.GridView;
-import android.widget.ImageView;
-import com.android.dialer.app.R;
-import com.android.dialer.app.list.DragDropController.DragItemContainer;
-import com.android.dialer.common.LogUtil;
-
-/** Viewgroup that presents the user's speed dial contacts in a grid. */
-public class PhoneFavoriteListView extends GridView
-    implements OnDragDropListener, DragItemContainer {
-
-  public static final String LOG_TAG = PhoneFavoriteListView.class.getSimpleName();
-  final int[] locationOnScreen = new int[2];
-  private static final long SCROLL_HANDLER_DELAY_MILLIS = 5;
-  private static final int DRAG_SCROLL_PX_UNIT = 25;
-  private static final float DRAG_SHADOW_ALPHA = 0.7f;
-  /**
-   * {@link #topScrollBound} and {@link bottomScrollBound} will be offseted to the top / bottom by
-   * {@link #getHeight} * {@link #BOUND_GAP_RATIO} pixels.
-   */
-  private static final float BOUND_GAP_RATIO = 0.2f;
-
-  private float touchSlop;
-  private int topScrollBound;
-  private int bottomScrollBound;
-  private int lastDragY;
-  private Handler scrollHandler;
-  private final Runnable dragScroller =
-      new Runnable() {
-        @Override
-        public void run() {
-          if (lastDragY <= topScrollBound) {
-            smoothScrollBy(-DRAG_SCROLL_PX_UNIT, (int) SCROLL_HANDLER_DELAY_MILLIS);
-          } else if (lastDragY >= bottomScrollBound) {
-            smoothScrollBy(DRAG_SCROLL_PX_UNIT, (int) SCROLL_HANDLER_DELAY_MILLIS);
-          }
-          scrollHandler.postDelayed(this, SCROLL_HANDLER_DELAY_MILLIS);
-        }
-      };
-  private boolean isDragScrollerRunning = false;
-  private int touchDownForDragStartY;
-  private Bitmap dragShadowBitmap;
-  private ImageView dragShadowOverlay;
-  private final AnimatorListenerAdapter dragShadowOverAnimatorListener =
-      new AnimatorListenerAdapter() {
-        @Override
-        public void onAnimationEnd(Animator animation) {
-          if (dragShadowBitmap != null) {
-            dragShadowBitmap.recycle();
-            dragShadowBitmap = null;
-          }
-          dragShadowOverlay.setVisibility(GONE);
-          dragShadowOverlay.setImageBitmap(null);
-        }
-      };
-  private View dragShadowParent;
-  private int animationDuration;
-  // X and Y offsets inside the item from where the user grabbed to the
-  // child's left coordinate. This is used to aid in the drawing of the drag shadow.
-  private int touchOffsetToChildLeft;
-  private int touchOffsetToChildTop;
-  private int dragShadowLeft;
-  private int dragShadowTop;
-  private DragDropController dragDropController = new DragDropController(this);
-
-  public PhoneFavoriteListView(Context context) {
-    this(context, null);
-  }
-
-  public PhoneFavoriteListView(Context context, AttributeSet attrs) {
-    this(context, attrs, 0);
-  }
-
-  public PhoneFavoriteListView(Context context, AttributeSet attrs, int defStyle) {
-    super(context, attrs, defStyle);
-    animationDuration = context.getResources().getInteger(R.integer.fade_duration);
-    touchSlop = ViewConfiguration.get(context).getScaledPagingTouchSlop();
-    dragDropController.addOnDragDropListener(this);
-  }
-
-  @Override
-  protected void onConfigurationChanged(Configuration newConfig) {
-    super.onConfigurationChanged(newConfig);
-    touchSlop = ViewConfiguration.get(getContext()).getScaledPagingTouchSlop();
-  }
-
-  /**
-   * TODO: This is all swipe to remove code (nothing to do with drag to remove). This should be
-   * cleaned up and removed once drag to remove becomes the only way to remove contacts.
-   */
-  @Override
-  public boolean onInterceptTouchEvent(MotionEvent ev) {
-    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
-      touchDownForDragStartY = (int) ev.getY();
-    }
-
-    return super.onInterceptTouchEvent(ev);
-  }
-
-  @Override
-  public boolean onDragEvent(DragEvent event) {
-    final int action = event.getAction();
-    final int eX = (int) event.getX();
-    final int eY = (int) event.getY();
-    switch (action) {
-      case DragEvent.ACTION_DRAG_STARTED:
-        {
-          if (!PhoneFavoriteTileView.DRAG_PHONE_FAVORITE_TILE.equals(event.getLocalState())) {
-            // Ignore any drag events that were not propagated by long pressing
-            // on a {@link PhoneFavoriteTileView}
-            return false;
-          }
-          if (!dragDropController.handleDragStarted(this, eX, eY)) {
-            return false;
-          }
-          break;
-        }
-      case DragEvent.ACTION_DRAG_LOCATION:
-        lastDragY = eY;
-        dragDropController.handleDragHovered(this, eX, eY);
-        // Kick off {@link #mScrollHandler} if it's not started yet.
-        if (!isDragScrollerRunning
-            &&
-            // And if the distance traveled while dragging exceeds the touch slop
-            (Math.abs(lastDragY - touchDownForDragStartY) >= 4 * touchSlop)) {
-          isDragScrollerRunning = true;
-          ensureScrollHandler();
-          scrollHandler.postDelayed(dragScroller, SCROLL_HANDLER_DELAY_MILLIS);
-        }
-        break;
-      case DragEvent.ACTION_DRAG_ENTERED:
-        final int boundGap = (int) (getHeight() * BOUND_GAP_RATIO);
-        topScrollBound = (getTop() + boundGap);
-        bottomScrollBound = (getBottom() - boundGap);
-        break;
-      case DragEvent.ACTION_DRAG_EXITED:
-      case DragEvent.ACTION_DRAG_ENDED:
-      case DragEvent.ACTION_DROP:
-        ensureScrollHandler();
-        scrollHandler.removeCallbacks(dragScroller);
-        isDragScrollerRunning = false;
-        // Either a successful drop or it's ended with out drop.
-        if (action == DragEvent.ACTION_DROP || action == DragEvent.ACTION_DRAG_ENDED) {
-          dragDropController.handleDragFinished(eX, eY, false);
-        }
-        break;
-      default:
-        break;
-    }
-    // This ListView will consume the drag events on behalf of its children.
-    return true;
-  }
-
-  public void setDragShadowOverlay(ImageView overlay) {
-    dragShadowOverlay = overlay;
-    dragShadowParent = (View) dragShadowOverlay.getParent();
-  }
-
-  /** Find the view under the pointer. */
-  private View getViewAtPosition(int x, int y) {
-    final int count = getChildCount();
-    View child;
-    for (int childIdx = 0; childIdx < count; childIdx++) {
-      child = getChildAt(childIdx);
-      if (y >= child.getTop()
-          && y <= child.getBottom()
-          && x >= child.getLeft()
-          && x <= child.getRight()) {
-        return child;
-      }
-    }
-    return null;
-  }
-
-  private void ensureScrollHandler() {
-    if (scrollHandler == null) {
-      scrollHandler = getHandler();
-    }
-  }
-
-  public DragDropController getDragDropController() {
-    return dragDropController;
-  }
-
-  @Override
-  public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView tileView) {
-    if (dragShadowOverlay == null) {
-      return;
-    }
-
-    dragShadowOverlay.clearAnimation();
-    dragShadowBitmap = createDraggedChildBitmap(tileView);
-    if (dragShadowBitmap == null) {
-      return;
-    }
-
-    tileView.getLocationOnScreen(locationOnScreen);
-    dragShadowLeft = locationOnScreen[0];
-    dragShadowTop = locationOnScreen[1];
-
-    // x and y are the coordinates of the on-screen touch event. Using these
-    // and the on-screen location of the tileView, calculate the difference between
-    // the position of the user's finger and the position of the tileView. These will
-    // be used to offset the location of the drag shadow so that it appears that the
-    // tileView is positioned directly under the user's finger.
-    touchOffsetToChildLeft = x - dragShadowLeft;
-    touchOffsetToChildTop = y - dragShadowTop;
-
-    dragShadowParent.getLocationOnScreen(locationOnScreen);
-    dragShadowLeft -= locationOnScreen[0];
-    dragShadowTop -= locationOnScreen[1];
-
-    dragShadowOverlay.setImageBitmap(dragShadowBitmap);
-    dragShadowOverlay.setVisibility(VISIBLE);
-    dragShadowOverlay.setAlpha(DRAG_SHADOW_ALPHA);
-
-    dragShadowOverlay.setX(dragShadowLeft);
-    dragShadowOverlay.setY(dragShadowTop);
-  }
-
-  @Override
-  public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView tileView) {
-    // Update the drag shadow location.
-    dragShadowParent.getLocationOnScreen(locationOnScreen);
-    dragShadowLeft = x - touchOffsetToChildLeft - locationOnScreen[0];
-    dragShadowTop = y - touchOffsetToChildTop - locationOnScreen[1];
-    // Draw the drag shadow at its last known location if the drag shadow exists.
-    if (dragShadowOverlay != null) {
-      dragShadowOverlay.setX(dragShadowLeft);
-      dragShadowOverlay.setY(dragShadowTop);
-    }
-  }
-
-  @Override
-  public void onDragFinished(int x, int y) {
-    if (dragShadowOverlay != null) {
-      dragShadowOverlay.clearAnimation();
-      dragShadowOverlay
-          .animate()
-          .alpha(0.0f)
-          .setDuration(animationDuration)
-          .setListener(dragShadowOverAnimatorListener)
-          .start();
-    }
-  }
-
-  @Override
-  public void onDroppedOnRemove() {}
-
-  private Bitmap createDraggedChildBitmap(View view) {
-    view.setDrawingCacheEnabled(true);
-    final Bitmap cache = view.getDrawingCache();
-
-    Bitmap bitmap = null;
-    if (cache != null) {
-      try {
-        bitmap = cache.copy(Bitmap.Config.ARGB_8888, false);
-      } catch (final OutOfMemoryError e) {
-        LogUtil.w(LOG_TAG, "Failed to copy bitmap from Drawing cache", e);
-        bitmap = null;
-      }
-    }
-
-    view.destroyDrawingCache();
-    view.setDrawingCacheEnabled(false);
-
-    return bitmap;
-  }
-
-  @Override
-  public PhoneFavoriteSquareTileView getViewForLocation(int x, int y) {
-    getLocationOnScreen(locationOnScreen);
-    // Calculate the X and Y coordinates of the drag event relative to the view
-    final int viewX = x - locationOnScreen[0];
-    final int viewY = y - locationOnScreen[1];
-    final View child = getViewAtPosition(viewX, viewY);
-
-    if (!(child instanceof PhoneFavoriteSquareTileView)) {
-      return null;
-    }
-
-    return (PhoneFavoriteSquareTileView) child;
-  }
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
deleted file mode 100644
index 8fe67f4..0000000
--- a/java/com/android/dialer/app/list/PhoneFavoriteSquareTileView.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*      http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package com.android.dialer.app.list;
-
-import android.content.Context;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.QuickContact;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.ImageButton;
-import android.widget.TextView;
-import com.android.contacts.common.list.ContactEntry;
-import com.android.dialer.app.R;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.widget.BidiTextView;
-
-/** Displays the contact's picture overlaid with their name and number type in a tile. */
-public class PhoneFavoriteSquareTileView extends PhoneFavoriteTileView {
-
-  private final float heightToWidthRatio;
-
-  private ImageButton secondaryButton;
-
-  private ContactEntry contactEntry;
-
-  public PhoneFavoriteSquareTileView(Context context, AttributeSet attrs) {
-    super(context, attrs);
-
-    heightToWidthRatio =
-        getResources().getFraction(R.dimen.contact_tile_height_to_width_ratio, 1, 1);
-  }
-
-  @Override
-  protected void onFinishInflate() {
-    super.onFinishInflate();
-    BidiTextView nameView = findViewById(R.id.contact_tile_name);
-    nameView.setElegantTextHeight(false);
-
-    TextView phoneTypeView = findViewById(R.id.contact_tile_phone_type);
-    phoneTypeView.setElegantTextHeight(false);
-    secondaryButton = findViewById(R.id.contact_tile_secondary_button);
-  }
-
-  @Override
-  protected int getApproximateImageSize() {
-    // The picture is the full size of the tile (minus some padding, but we can be generous)
-    return getWidth();
-  }
-
-  private void launchQuickContact() {
-    QuickContact.showQuickContact(
-        getContext(),
-        PhoneFavoriteSquareTileView.this,
-        getLookupUri(),
-        null,
-        Phone.CONTENT_ITEM_TYPE);
-  }
-
-  @Override
-  public void loadFromContact(ContactEntry entry) {
-    super.loadFromContact(entry);
-    if (entry != null) {
-      secondaryButton.setOnClickListener(
-          new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-              Logger.get(getContext())
-                  .logInteraction(InteractionEvent.Type.SPEED_DIAL_OPEN_CONTACT_CARD);
-              launchQuickContact();
-            }
-          });
-    }
-    contactEntry = entry;
-  }
-
-  @Override
-  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-    final int width = MeasureSpec.getSize(widthMeasureSpec);
-    final int height = (int) (heightToWidthRatio * width);
-    final int count = getChildCount();
-    for (int i = 0; i < count; i++) {
-      getChildAt(i)
-          .measure(
-              MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
-              MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
-    }
-    setMeasuredDimension(width, height);
-  }
-
-  @Override
-  protected String getNameForView(ContactEntry contactEntry) {
-    return contactEntry.getPreferredDisplayName(getContext());
-  }
-
-  public ContactEntry getContactEntry() {
-    return contactEntry;
-  }
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java b/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
deleted file mode 100644
index 7f0a6bc..0000000
--- a/java/com/android/dialer/app/list/PhoneFavoriteTileView.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
-
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*      http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package com.android.dialer.app.list;
-
-import android.content.ClipData;
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Point;
-import android.net.Uri;
-import android.provider.ContactsContract.PinnedPositions;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.ImageView;
-import com.android.contacts.common.MoreContactUtils;
-import com.android.contacts.common.list.ContactEntry;
-import com.android.contacts.common.list.ContactTileView;
-import com.android.contacts.common.model.ContactLoader;
-import com.android.dialer.app.R;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.callintent.SpeedDialContactType;
-import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
-import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-
-/**
- * A light version of the {@link com.android.contacts.common.list.ContactTileView} that is used in
- * Dialtacts for frequently called contacts. Slightly different behavior from superclass when you
- * tap it, you want to call the frequently-called number for the contact, even if that is not the
- * default number for that contact. This abstract class is the super class to both the row and tile
- * view.
- */
-public abstract class PhoneFavoriteTileView extends ContactTileView {
-
-  // Constant to pass to the drag event so that the drag action only happens when a phone favorite
-  // tile is long pressed.
-  static final String DRAG_PHONE_FAVORITE_TILE = "PHONE_FAVORITE_TILE";
-  private static final String TAG = PhoneFavoriteTileView.class.getSimpleName();
-  // These parameters instruct the photo manager to display the default image/letter at 70% of
-  // its normal size, and vertically offset upwards 12% towards the top of the letter tile, to
-  // make room for the contact name and number label at the bottom of the image.
-  private static final float DEFAULT_IMAGE_LETTER_OFFSET = -0.12f;
-  private static final float DEFAULT_IMAGE_LETTER_SCALE = 0.70f;
-  // Placeholder clip data object that is attached to drag shadows so that text views
-  // don't crash with an NPE if the drag shadow is released in their bounds
-  private static final ClipData EMPTY_CLIP_DATA = ClipData.newPlainText("", "");
-  /** View that contains the transparent shadow that is overlaid on top of the contact image. */
-  private View shadowOverlay;
-  /** Users' most frequent phone number. */
-  private String phoneNumberString;
-
-  private boolean isPinned;
-  private boolean isStarred;
-  private int position = -1;
-
-  public PhoneFavoriteTileView(Context context, AttributeSet attrs) {
-    super(context, attrs);
-  }
-
-  @Override
-  protected void onFinishInflate() {
-    super.onFinishInflate();
-    shadowOverlay = findViewById(R.id.shadow_overlay);
-
-    setOnLongClickListener(
-        (v) -> {
-          final PhoneFavoriteTileView view = (PhoneFavoriteTileView) v;
-          // NOTE The drag shadow is handled in the ListView.
-          view.startDragAndDrop(
-              EMPTY_CLIP_DATA, new EmptyDragShadowBuilder(), DRAG_PHONE_FAVORITE_TILE, 0);
-          return true;
-        });
-  }
-
-  @Override
-  public void loadFromContact(ContactEntry entry) {
-    super.loadFromContact(entry);
-    // Set phone number to null in case we're reusing the view.
-    phoneNumberString = null;
-    isPinned = (entry.pinned != PinnedPositions.UNPINNED);
-    isStarred = entry.isFavorite;
-    if (entry != null) {
-      sendViewNotification(getContext(), entry.lookupUri);
-      // Grab the phone-number to call directly. See {@link onClick()}.
-      phoneNumberString = entry.phoneNumber;
-
-      // If this is a blank entry, don't show anything. For this to truly look like an empty row
-      // the entire ContactTileRow needs to be hidden.
-      if (entry == ContactEntry.BLANK_ENTRY) {
-        setVisibility(View.INVISIBLE);
-      } else {
-        final ImageView starIcon = (ImageView) findViewById(R.id.contact_star_icon);
-        starIcon.setVisibility(entry.isFavorite ? View.VISIBLE : View.GONE);
-        setVisibility(View.VISIBLE);
-      }
-    }
-  }
-
-  @Override
-  protected boolean isDarkTheme() {
-    return false;
-  }
-
-  @Override
-  protected OnClickListener createClickListener() {
-    return new OnClickListener() {
-      @Override
-      public void onClick(View v) {
-        if (mListener == null) {
-          return;
-        }
-
-        CallSpecificAppData.Builder callSpecificAppData =
-            CallSpecificAppData.newBuilder()
-                .setAllowAssistedDialing(true)
-                .setCallInitiationType(CallInitiationType.Type.SPEED_DIAL)
-                .setSpeedDialContactPosition(position);
-        if (isStarred) {
-          callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.STARRED_CONTACT);
-        } else {
-          callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.FREQUENT_CONTACT);
-        }
-        if (isPinned) {
-          callSpecificAppData.addSpeedDialContactType(SpeedDialContactType.Type.PINNED_CONTACT);
-        }
-
-        if (TextUtils.isEmpty(phoneNumberString)) {
-          // Don't set performance report now, since user may spend some time on picking a number
-
-          // Copy "superclass" implementation
-          Logger.get(getContext())
-              .logInteraction(InteractionEvent.Type.SPEED_DIAL_CLICK_CONTACT_WITH_AMBIGUOUS_NUMBER);
-          mListener.onContactSelected(
-              getLookupUri(),
-              MoreContactUtils.getTargetRectFromView(PhoneFavoriteTileView.this),
-              callSpecificAppData.build());
-        } else {
-          // When you tap a frequently-called contact, you want to
-          // call them at the number that you usually talk to them
-          // at (i.e. the one displayed in the UI), regardless of
-          // whether that's their default number.
-          mListener.onCallNumberDirectly(phoneNumberString, callSpecificAppData.build());
-        }
-      }
-    };
-  }
-
-  @Override
-  protected DefaultImageRequest getDefaultImageRequest(String displayName, String lookupKey) {
-    return new DefaultImageRequest(
-        displayName,
-        lookupKey,
-        LetterTileDrawable.TYPE_DEFAULT,
-        DEFAULT_IMAGE_LETTER_SCALE,
-        DEFAULT_IMAGE_LETTER_OFFSET,
-        false);
-  }
-
-  @Override
-  protected void configureViewForImage(boolean isDefaultImage) {
-    // Hide the shadow overlay if the image is a default image (i.e. colored letter tile)
-    if (shadowOverlay != null) {
-      shadowOverlay.setVisibility(isDefaultImage ? View.GONE : View.VISIBLE);
-    }
-  }
-
-  @Override
-  protected boolean isContactPhotoCircular() {
-    // Unlike Contacts' tiles, the Dialer's favorites tiles are square.
-    return false;
-  }
-
-  public void setPosition(int position) {
-    this.position = position;
-  }
-
-  private ContactLoader loader;
-
-  /**
-   * Send a notification using a {@link ContactLoader} to inform the sync adapter that we are
-   * viewing a particular contact, so that it can download the high-res photo.
-   */
-  private void sendViewNotification(Context context, Uri contactUri) {
-    if (loader != null) {
-      // Cancels the current load if it's running and clears up any memory if it's using any.
-      loader.reset();
-    }
-    loader = new ContactLoader(context, contactUri, true /* postViewNotification */);
-    // Immediately release anything we're holding in memory
-    loader.registerListener(0, (loader1, contact) -> loader.reset());
-    loader.startLoading();
-  }
-
-  /**
-   * A {@link View.DragShadowBuilder} that doesn't draw anything. An object of this class should be
-   * passed to {@link View#startDragAndDrop} to prevent the framework from drawing a drag shadow.
-   */
-  public static class EmptyDragShadowBuilder extends View.DragShadowBuilder {
-
-    @Override
-    public void onProvideShadowMetrics(Point size, Point touch) {
-      // A workaround for P+ not accepting non-positive drag shadow sizes.
-      size.set(1, 1);
-      touch.set(0, 0);
-    }
-
-    @Override
-    public void onDrawShadow(Canvas canvas) {
-      // Don't draw anything
-    }
-  }
-}
diff --git a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java b/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
deleted file mode 100644
index 4cc48a6..0000000
--- a/java/com/android/dialer/app/list/PhoneFavoritesTileAdapter.java
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.app.list;
-
-import android.content.ContentProviderOperation;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.OperationApplicationException;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.RemoteException;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.PinnedPositions;
-import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
-import android.util.LongSparseArray;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import com.android.contacts.common.ContactTileLoaderFactory;
-import com.android.contacts.common.list.ContactEntry;
-import com.android.contacts.common.list.ContactTileView;
-import com.android.dialer.app.R;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.contacts.ContactsComponent;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.shortcuts.ShortcutRefresher;
-import com.android.dialer.strictmode.StrictModeUtils;
-import com.google.common.collect.ComparisonChain;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.PriorityQueue;
-
-/** Also allows for a configurable number of columns as well as a maximum row of tiled contacts. */
-public class PhoneFavoritesTileAdapter extends BaseAdapter implements OnDragDropListener {
-
-  // Pinned positions start from 1, so there are a total of 20 maximum pinned contacts
-  private static final int PIN_LIMIT = 21;
-  private static final String TAG = PhoneFavoritesTileAdapter.class.getSimpleName();
-  private static final boolean DEBUG = false;
-  /**
-   * The soft limit on how many contact tiles to show. NOTE This soft limit would not restrict the
-   * number of starred contacts to show, rather 1. If the count of starred contacts is less than
-   * this limit, show 20 tiles total. 2. If the count of starred contacts is more than or equal to
-   * this limit, show all starred tiles and no frequents.
-   */
-  private static final int TILES_SOFT_LIMIT = 20;
-  /** Contact data stored in cache. This is used to populate the associated view. */
-  private ArrayList<ContactEntry> contactEntries = null;
-
-  private int numFrequents;
-  private int numStarred;
-
-  private ContactTileView.Listener listener;
-  private OnDataSetChangedForAnimationListener dataSetChangedListener;
-  private Context context;
-  private Resources resources;
-  private final Comparator<ContactEntry> contactEntryComparator =
-      new Comparator<ContactEntry>() {
-        @Override
-        public int compare(ContactEntry lhs, ContactEntry rhs) {
-
-          return ComparisonChain.start()
-              .compare(lhs.pinned, rhs.pinned)
-              .compare(getPreferredSortName(lhs), getPreferredSortName(rhs))
-              .result();
-        }
-
-        private String getPreferredSortName(ContactEntry contactEntry) {
-          return ContactsComponent.get(context)
-              .contactDisplayPreferences()
-              .getSortName(contactEntry.namePrimary, contactEntry.nameAlternative);
-        }
-      };
-  /** Back up of the temporarily removed Contact during dragging. */
-  private ContactEntry draggedEntry = null;
-  /** Position of the temporarily removed contact in the cache. */
-  private int draggedEntryIndex = -1;
-  /** New position of the temporarily removed contact in the cache. */
-  private int dropEntryIndex = -1;
-  /** New position of the temporarily entered contact in the cache. */
-  private int dragEnteredEntryIndex = -1;
-
-  private boolean awaitingRemove = false;
-  private boolean delayCursorUpdates = false;
-  private ContactPhotoManager photoManager;
-
-  /** Indicates whether a drag is in process. */
-  private boolean inDragging = false;
-
-  public PhoneFavoritesTileAdapter(
-      Context context,
-      ContactTileView.Listener listener,
-      OnDataSetChangedForAnimationListener dataSetChangedListener) {
-    this.dataSetChangedListener = dataSetChangedListener;
-    this.listener = listener;
-    this.context = context;
-    resources = context.getResources();
-    numFrequents = 0;
-    contactEntries = new ArrayList<>();
-  }
-
-  void setPhotoLoader(ContactPhotoManager photoLoader) {
-    photoManager = photoLoader;
-  }
-
-  /**
-   * Indicates whether a drag is in process.
-   *
-   * @param inDragging Boolean variable indicating whether there is a drag in process.
-   */
-  private void setInDragging(boolean inDragging) {
-    delayCursorUpdates = inDragging;
-    this.inDragging = inDragging;
-  }
-
-  /**
-   * Gets the number of frequents from the passed in cursor.
-   *
-   * <p>This methods is needed so the GroupMemberTileAdapter can override this.
-   *
-   * @param cursor The cursor to get number of frequents from.
-   */
-  private void saveNumFrequentsFromCursor(Cursor cursor) {
-    numFrequents = cursor.getCount() - numStarred;
-  }
-
-  /**
-   * Creates {@link ContactTileView}s for each item in {@link Cursor}.
-   *
-   * <p>Else use {@link ContactTileLoaderFactory}
-   */
-  void setContactCursor(Cursor cursor) {
-    if (!delayCursorUpdates && cursor != null && !cursor.isClosed()) {
-      numStarred = getNumStarredContacts(cursor);
-      if (awaitingRemove) {
-        dataSetChangedListener.cacheOffsetsForDatasetChange();
-      }
-
-      saveNumFrequentsFromCursor(cursor);
-      saveCursorToCache(cursor);
-      // cause a refresh of any views that rely on this data
-      notifyDataSetChanged();
-      // about to start redraw
-      dataSetChangedListener.onDataSetChangedForAnimation();
-    }
-  }
-
-  /**
-   * Saves the cursor data to the cache, to speed up UI changes.
-   *
-   * @param cursor Returned cursor from {@link ContactTileLoaderFactory} with data to populate the
-   *     view.
-   */
-  private void saveCursorToCache(Cursor cursor) {
-    contactEntries.clear();
-
-    if (cursor == null) {
-      return;
-    }
-
-    final LongSparseArray<Object> duplicates = new LongSparseArray<>(cursor.getCount());
-
-    // Track the length of {@link #mContactEntries} and compare to {@link #TILES_SOFT_LIMIT}.
-    int counter = 0;
-
-    // Data for logging
-    int starredContactsCount = 0;
-    int pinnedContactsCount = 0;
-    int multipleNumbersContactsCount = 0;
-    int contactsWithPhotoCount = 0;
-    int contactsWithNameCount = 0;
-    int lightbringerReachableContactsCount = 0;
-
-    // The cursor should not be closed since this is invoked from a CursorLoader.
-    if (cursor.moveToFirst()) {
-      int starredColumn = cursor.getColumnIndexOrThrow(Contacts.STARRED);
-      int contactIdColumn = cursor.getColumnIndexOrThrow(Phone.CONTACT_ID);
-      int photoUriColumn = cursor.getColumnIndexOrThrow(Contacts.PHOTO_URI);
-      int lookupKeyColumn = cursor.getColumnIndexOrThrow(Contacts.LOOKUP_KEY);
-      int pinnedColumn = cursor.getColumnIndexOrThrow(Contacts.PINNED);
-      int nameColumn = cursor.getColumnIndexOrThrow(Contacts.DISPLAY_NAME_PRIMARY);
-      int nameAlternativeColumn = cursor.getColumnIndexOrThrow(Contacts.DISPLAY_NAME_ALTERNATIVE);
-      int isDefaultNumberColumn = cursor.getColumnIndexOrThrow(Phone.IS_SUPER_PRIMARY);
-      int phoneTypeColumn = cursor.getColumnIndexOrThrow(Phone.TYPE);
-      int phoneLabelColumn = cursor.getColumnIndexOrThrow(Phone.LABEL);
-      int phoneNumberColumn = cursor.getColumnIndexOrThrow(Phone.NUMBER);
-      do {
-        final int starred = cursor.getInt(starredColumn);
-        final long id;
-
-        // We display a maximum of TILES_SOFT_LIMIT contacts, or the total number of starred
-        // whichever is greater.
-        if (starred < 1 && counter >= TILES_SOFT_LIMIT) {
-          break;
-        } else {
-          id = cursor.getLong(contactIdColumn);
-        }
-
-        final ContactEntry existing = (ContactEntry) duplicates.get(id);
-        if (existing != null) {
-          // Check if the existing number is a default number. If not, clear the phone number
-          // and label fields so that the disambiguation dialog will show up.
-          if (!existing.isDefaultNumber) {
-            existing.phoneLabel = null;
-            existing.phoneNumber = null;
-          }
-          continue;
-        }
-
-        final String photoUri = cursor.getString(photoUriColumn);
-        final String lookupKey = cursor.getString(lookupKeyColumn);
-        final int pinned = cursor.getInt(pinnedColumn);
-        final String name = cursor.getString(nameColumn);
-        final String nameAlternative = cursor.getString(nameAlternativeColumn);
-        final boolean isStarred = cursor.getInt(starredColumn) > 0;
-        final boolean isDefaultNumber = cursor.getInt(isDefaultNumberColumn) > 0;
-
-        final ContactEntry contact = new ContactEntry();
-
-        contact.id = id;
-        contact.namePrimary =
-            (!TextUtils.isEmpty(name)) ? name : resources.getString(R.string.missing_name);
-        contact.nameAlternative =
-            (!TextUtils.isEmpty(nameAlternative))
-                ? nameAlternative
-                : resources.getString(R.string.missing_name);
-        contact.photoUri = (photoUri != null ? Uri.parse(photoUri) : null);
-        contact.lookupKey = lookupKey;
-        contact.lookupUri =
-            ContentUris.withAppendedId(
-                Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey), id);
-        contact.isFavorite = isStarred;
-        contact.isDefaultNumber = isDefaultNumber;
-
-        // Set phone number and label
-        final int phoneNumberType = cursor.getInt(phoneTypeColumn);
-        final String phoneNumberCustomLabel = cursor.getString(phoneLabelColumn);
-        contact.phoneLabel =
-            (String) Phone.getTypeLabel(resources, phoneNumberType, phoneNumberCustomLabel);
-        contact.phoneNumber = cursor.getString(phoneNumberColumn);
-
-        contact.pinned = pinned;
-        contactEntries.add(contact);
-
-        // Set counts for logging
-        if (isStarred) {
-          // mNumStarred might be larger than the number of visible starred contact,
-          // since it includes invisible ones (starred contact with no phone number).
-          starredContactsCount++;
-        }
-        if (pinned != PinnedPositions.UNPINNED) {
-          pinnedContactsCount++;
-        }
-        if (!TextUtils.isEmpty(name)) {
-          contactsWithNameCount++;
-        }
-        if (photoUri != null) {
-          contactsWithPhotoCount++;
-        }
-
-        duplicates.put(id, contact);
-
-        counter++;
-      } while (cursor.moveToNext());
-    }
-
-    awaitingRemove = false;
-
-    arrangeContactsByPinnedPosition(contactEntries);
-
-    ShortcutRefresher.refresh(context, contactEntries);
-    notifyDataSetChanged();
-
-    Duo duo = DuoComponent.get(context).getDuo();
-    for (ContactEntry contact : contactEntries) {
-      if (contact.phoneNumber == null) {
-        multipleNumbersContactsCount++;
-      } else if (duo.isReachable(context, contact.phoneNumber)) {
-        lightbringerReachableContactsCount++;
-      }
-    }
-
-    Logger.get(context)
-        .logSpeedDialContactComposition(
-            counter,
-            starredContactsCount,
-            pinnedContactsCount,
-            multipleNumbersContactsCount,
-            contactsWithPhotoCount,
-            contactsWithNameCount,
-            lightbringerReachableContactsCount);
-    // Logs for manual testing
-    LogUtil.v("PhoneFavoritesTileAdapter.saveCursorToCache", "counter: %d", counter);
-    LogUtil.v(
-        "PhoneFavoritesTileAdapter.saveCursorToCache",
-        "starredContactsCount: %d",
-        starredContactsCount);
-    LogUtil.v(
-        "PhoneFavoritesTileAdapter.saveCursorToCache",
-        "pinnedContactsCount: %d",
-        pinnedContactsCount);
-    LogUtil.v(
-        "PhoneFavoritesTileAdapter.saveCursorToCache",
-        "multipleNumbersContactsCount: %d",
-        multipleNumbersContactsCount);
-    LogUtil.v(
-        "PhoneFavoritesTileAdapter.saveCursorToCache",
-        "contactsWithPhotoCount: %d",
-        contactsWithPhotoCount);
-    LogUtil.v(
-        "PhoneFavoritesTileAdapter.saveCursorToCache",
-        "contactsWithNameCount: %d",
-        contactsWithNameCount);
-  }
-
-  /** Iterates over the {@link Cursor} Returns position of the first NON Starred Contact */
-  private int getNumStarredContacts(Cursor cursor) {
-    if (cursor == null) {
-      return 0;
-    }
-
-    if (cursor.moveToFirst()) {
-      int starredColumn = cursor.getColumnIndex(Contacts.STARRED);
-      do {
-        if (cursor.getInt(starredColumn) == 0) {
-          return cursor.getPosition();
-        }
-      } while (cursor.moveToNext());
-    }
-    // There are not NON Starred contacts in cursor
-    // Set divider position to end
-    return cursor.getCount();
-  }
-
-  /** Returns the number of frequents that will be displayed in the list. */
-  int getNumFrequents() {
-    return numFrequents;
-  }
-
-  @Override
-  public int getCount() {
-    if (contactEntries == null) {
-      return 0;
-    }
-
-    return contactEntries.size();
-  }
-
-  /**
-   * Returns an ArrayList of the {@link ContactEntry}s that are to appear on the row for the given
-   * position.
-   */
-  @Override
-  public ContactEntry getItem(int position) {
-    return contactEntries.get(position);
-  }
-
-  /**
-   * For the top row of tiled contacts, the item id is the position of the row of contacts. For
-   * frequent contacts, the item id is the maximum number of rows of tiled contacts + the actual
-   * contact id. Since contact ids are always greater than 0, this guarantees that all items within
-   * this adapter will always have unique ids.
-   */
-  @Override
-  public long getItemId(int position) {
-    return getItem(position).id;
-  }
-
-  @Override
-  public boolean hasStableIds() {
-    return true;
-  }
-
-  @Override
-  public boolean areAllItemsEnabled() {
-    return true;
-  }
-
-  @Override
-  public boolean isEnabled(int position) {
-    return getCount() > 0;
-  }
-
-  @Override
-  public void notifyDataSetChanged() {
-    if (DEBUG) {
-      LogUtil.v(TAG, "notifyDataSetChanged");
-    }
-    super.notifyDataSetChanged();
-  }
-
-  @Override
-  public View getView(int position, View convertView, ViewGroup parent) {
-    if (DEBUG) {
-      LogUtil.v(TAG, "get view for " + position);
-    }
-
-    PhoneFavoriteTileView tileView = null;
-
-    if (convertView instanceof PhoneFavoriteTileView) {
-      tileView = (PhoneFavoriteTileView) convertView;
-    }
-
-    if (tileView == null) {
-      tileView =
-          (PhoneFavoriteTileView) View.inflate(context, R.layout.phone_favorite_tile_view, null);
-    }
-    tileView.setPhotoManager(photoManager);
-    tileView.setListener(listener);
-    tileView.loadFromContact(getItem(position));
-    tileView.setPosition(position);
-    return tileView;
-  }
-
-  @Override
-  public int getViewTypeCount() {
-    return ViewTypes.COUNT;
-  }
-
-  @Override
-  public int getItemViewType(int position) {
-    return ViewTypes.TILE;
-  }
-
-  /**
-   * Temporarily removes a contact from the list for UI refresh. Stores data for this contact in the
-   * back-up variable.
-   *
-   * @param index Position of the contact to be removed.
-   */
-  private void popContactEntry(int index) {
-    if (isIndexInBound(index)) {
-      draggedEntry = contactEntries.get(index);
-      draggedEntryIndex = index;
-      dragEnteredEntryIndex = index;
-      markDropArea(dragEnteredEntryIndex);
-    }
-  }
-
-  /**
-   * @param itemIndex Position of the contact in {@link #contactEntries}.
-   * @return True if the given index is valid for {@link #contactEntries}.
-   */
-  boolean isIndexInBound(int itemIndex) {
-    return itemIndex >= 0 && itemIndex < contactEntries.size();
-  }
-
-  /**
-   * Mark the tile as drop area by given the item index in {@link #contactEntries}.
-   *
-   * @param itemIndex Position of the contact in {@link #contactEntries}.
-   */
-  private void markDropArea(int itemIndex) {
-    if (draggedEntry != null
-        && isIndexInBound(dragEnteredEntryIndex)
-        && isIndexInBound(itemIndex)) {
-      dataSetChangedListener.cacheOffsetsForDatasetChange();
-      // Remove the old placeholder item and place the new placeholder item.
-      contactEntries.remove(dragEnteredEntryIndex);
-      dragEnteredEntryIndex = itemIndex;
-      contactEntries.add(dragEnteredEntryIndex, ContactEntry.BLANK_ENTRY);
-      ContactEntry.BLANK_ENTRY.id = draggedEntry.id;
-      dataSetChangedListener.onDataSetChangedForAnimation();
-      notifyDataSetChanged();
-    }
-  }
-
-  /** Drops the temporarily removed contact to the desired location in the list. */
-  private void handleDrop() {
-    boolean changed = false;
-    if (draggedEntry != null) {
-      if (isIndexInBound(dragEnteredEntryIndex) && dragEnteredEntryIndex != draggedEntryIndex) {
-        // Don't add the ContactEntry here (to prevent a double animation from occuring).
-        // When we receive a new cursor the list of contact entries will automatically be
-        // populated with the dragged ContactEntry at the correct spot.
-        dropEntryIndex = dragEnteredEntryIndex;
-        contactEntries.set(dropEntryIndex, draggedEntry);
-        dataSetChangedListener.cacheOffsetsForDatasetChange();
-        changed = true;
-      } else if (isIndexInBound(draggedEntryIndex)) {
-        // If {@link #mDragEnteredEntryIndex} is invalid,
-        // falls back to the original position of the contact.
-        contactEntries.remove(dragEnteredEntryIndex);
-        contactEntries.add(draggedEntryIndex, draggedEntry);
-        dropEntryIndex = draggedEntryIndex;
-        notifyDataSetChanged();
-      }
-
-      if (changed && dropEntryIndex < PIN_LIMIT) {
-        ArrayList<ContentProviderOperation> operations =
-            getReflowedPinningOperations(contactEntries, draggedEntryIndex, dropEntryIndex);
-        StrictModeUtils.bypass(() -> updateDatabaseWithPinnedPositions(operations));
-      }
-      draggedEntry = null;
-    }
-  }
-
-  private void updateDatabaseWithPinnedPositions(ArrayList<ContentProviderOperation> operations) {
-    if (operations.isEmpty()) {
-      // Nothing to update
-      return;
-    }
-    try {
-      context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations);
-      Logger.get(context).logInteraction(InteractionEvent.Type.SPEED_DIAL_PIN_CONTACT);
-    } catch (RemoteException | OperationApplicationException e) {
-      LogUtil.e(TAG, "Exception thrown when pinning contacts", e);
-    }
-  }
-
-  /**
-   * Used when a contact is removed from speeddial. This will both unstar and set pinned position of
-   * the contact to PinnedPosition.DEMOTED so that it doesn't show up anymore in the favorites list.
-   */
-  private void unstarAndUnpinContact(Uri contactUri) {
-    final ContentValues values = new ContentValues(2);
-    values.put(Contacts.STARRED, false);
-    values.put(Contacts.PINNED, PinnedPositions.DEMOTED);
-    StrictModeUtils.bypass(
-        () -> context.getContentResolver().update(contactUri, values, null, null));
-  }
-
-  /**
-   * Given a list of contacts that each have pinned positions, rearrange the list (destructive) such
-   * that all pinned contacts are in their defined pinned positions, and unpinned contacts take the
-   * spaces between those pinned contacts. Demoted contacts should not appear in the resulting list.
-   *
-   * <p>This method also updates the pinned positions of pinned contacts so that they are all unique
-   * positive integers within range from 0 to toArrange.size() - 1. This is because when the contact
-   * entries are read from the database, it is possible for them to have overlapping pin positions
-   * due to sync or modifications by third party apps.
-   */
-  @VisibleForTesting
-  private void arrangeContactsByPinnedPosition(ArrayList<ContactEntry> toArrange) {
-    final PriorityQueue<ContactEntry> pinnedQueue =
-        new PriorityQueue<>(PIN_LIMIT, contactEntryComparator);
-
-    final List<ContactEntry> unpinnedContacts = new LinkedList<>();
-
-    final int length = toArrange.size();
-    for (int i = 0; i < length; i++) {
-      final ContactEntry contact = toArrange.get(i);
-      // Decide whether the contact is hidden(demoted), pinned, or unpinned
-      if (contact.pinned > PIN_LIMIT || contact.pinned == PinnedPositions.UNPINNED) {
-        unpinnedContacts.add(contact);
-      } else if (contact.pinned > PinnedPositions.DEMOTED) {
-        // Demoted or contacts with negative pinned positions are ignored.
-        // Pinned contacts go into a priority queue where they are ranked by pinned
-        // position. This is required because the contacts provider does not return
-        // contacts ordered by pinned position.
-        pinnedQueue.add(contact);
-      }
-    }
-
-    final int maxToPin = Math.min(PIN_LIMIT, pinnedQueue.size() + unpinnedContacts.size());
-
-    toArrange.clear();
-    for (int i = 1; i < maxToPin + 1; i++) {
-      if (!pinnedQueue.isEmpty() && pinnedQueue.peek().pinned <= i) {
-        final ContactEntry toPin = pinnedQueue.poll();
-        toPin.pinned = i;
-        toArrange.add(toPin);
-      } else if (!unpinnedContacts.isEmpty()) {
-        toArrange.add(unpinnedContacts.remove(0));
-      }
-    }
-
-    // If there are still contacts in pinnedContacts at this point, it means that the pinned
-    // positions of these pinned contacts exceed the actual number of contacts in the list.
-    // For example, the user had 10 frequents, starred and pinned one of them at the last spot,
-    // and then cleared frequents. Contacts in this situation should become unpinned.
-    while (!pinnedQueue.isEmpty()) {
-      final ContactEntry entry = pinnedQueue.poll();
-      entry.pinned = PinnedPositions.UNPINNED;
-      toArrange.add(entry);
-    }
-
-    // Any remaining unpinned contacts that weren't in the gaps between the pinned contacts
-    // now just get appended to the end of the list.
-    toArrange.addAll(unpinnedContacts);
-  }
-
-  /**
-   * Given an existing list of contact entries and a single entry that is to be pinned at a
-   * particular position, return a list of {@link ContentProviderOperation}s that contains new
-   * pinned positions for all contacts that are forced to be pinned at new positions, trying as much
-   * as possible to keep pinned contacts at their original location.
-   *
-   * <p>At this point in time the pinned position of each contact in the list has already been
-   * updated by {@link #arrangeContactsByPinnedPosition}, so we can assume that all pinned
-   * positions(within {@link #PIN_LIMIT} are unique positive integers.
-   */
-  @VisibleForTesting
-  private ArrayList<ContentProviderOperation> getReflowedPinningOperations(
-      ArrayList<ContactEntry> list, int oldPos, int newPinPos) {
-    final ArrayList<ContentProviderOperation> positions = new ArrayList<>();
-    final int lowerBound = Math.min(oldPos, newPinPos);
-    final int upperBound = Math.max(oldPos, newPinPos);
-    for (int i = lowerBound; i <= upperBound; i++) {
-      final ContactEntry entry = list.get(i);
-
-      // Pinned positions in the database start from 1 instead of being zero-indexed like
-      // arrays, so offset by 1.
-      final int databasePinnedPosition = i + 1;
-      if (entry.pinned == databasePinnedPosition) {
-        continue;
-      }
-
-      final Uri uri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(entry.id));
-      final ContentValues values = new ContentValues();
-      values.put(Contacts.PINNED, databasePinnedPosition);
-      positions.add(ContentProviderOperation.newUpdate(uri).withValues(values).build());
-    }
-    return positions;
-  }
-
-  @Override
-  public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
-    setInDragging(true);
-    final int itemIndex = contactEntries.indexOf(view.getContactEntry());
-    popContactEntry(itemIndex);
-  }
-
-  @Override
-  public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view) {
-    if (view == null) {
-      // The user is hovering over a view that is not a contact tile, no need to do
-      // anything here.
-      return;
-    }
-    final int itemIndex = contactEntries.indexOf(view.getContactEntry());
-    if (inDragging
-        && dragEnteredEntryIndex != itemIndex
-        && isIndexInBound(itemIndex)
-        && itemIndex < PIN_LIMIT
-        && itemIndex >= 0) {
-      markDropArea(itemIndex);
-    }
-  }
-
-  @Override
-  public void onDragFinished(int x, int y) {
-    setInDragging(false);
-    // A contact has been dragged to the RemoveView in order to be unstarred,  so simply wait
-    // for the new contact cursor which will cause the UI to be refreshed without the unstarred
-    // contact.
-    if (!awaitingRemove) {
-      handleDrop();
-    }
-  }
-
-  @Override
-  public void onDroppedOnRemove() {
-    if (draggedEntry != null) {
-      unstarAndUnpinContact(draggedEntry.lookupUri);
-      awaitingRemove = true;
-      Logger.get(context).logInteraction(InteractionEvent.Type.SPEED_DIAL_REMOVE_CONTACT);
-    }
-  }
-
-  interface OnDataSetChangedForAnimationListener {
-
-    void onDataSetChangedForAnimation(long... idsInPlace);
-
-    void cacheOffsetsForDatasetChange();
-  }
-
-  private static class ViewTypes {
-
-    static final int TILE = 0;
-    static final int COUNT = 1;
-  }
-}
diff --git a/java/com/android/dialer/app/list/RemoveView.java b/java/com/android/dialer/app/list/RemoveView.java
index 575c5a8..1420ead 100644
--- a/java/com/android/dialer/app/list/RemoveView.java
+++ b/java/com/android/dialer/app/list/RemoveView.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,11 +26,13 @@
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.TextView;
-import com.android.dialer.app.R;
+
+import androidx.core.content.res.ResourcesCompat;
+
+import com.android.dialer.R;
 
 public class RemoveView extends FrameLayout {
 
-  DragDropController dragDropController;
   TextView removeText;
   ImageView removeIcon;
   int unhighlightedColor;
@@ -50,16 +53,14 @@
 
   @Override
   protected void onFinishInflate() {
-    removeText = (TextView) findViewById(R.id.remove_view_text);
-    removeIcon = (ImageView) findViewById(R.id.remove_view_icon);
+    super.onFinishInflate();
+    removeText = findViewById(R.id.remove_view_text);
+    removeIcon = findViewById(R.id.remove_view_icon);
     final Resources r = getResources();
-    unhighlightedColor = r.getColor(android.R.color.white);
-    highlightedColor = r.getColor(R.color.remove_highlighted_text_color);
-    removeDrawable = r.getDrawable(R.drawable.ic_remove);
-  }
-
-  public void setDragDropController(DragDropController controller) {
-    dragDropController = controller;
+    unhighlightedColor = r.getColor(android.R.color.white, getContext().getTheme());
+    highlightedColor = r.getColor(R.color.remove_highlighted_text_color, getContext().getTheme());
+    removeDrawable = ResourcesCompat.getDrawable(r, R.drawable.quantum_ic_clear_vd_theme_24,
+            getContext().getTheme());
   }
 
   @Override
@@ -76,15 +77,9 @@
         setAppearanceNormal();
         break;
       case DragEvent.ACTION_DRAG_LOCATION:
-        if (dragDropController != null) {
-          dragDropController.handleDragHovered(this, (int) event.getX(), (int) event.getY());
-        }
         break;
       case DragEvent.ACTION_DROP:
         sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT);
-        if (dragDropController != null) {
-          dragDropController.handleDragFinished((int) event.getX(), (int) event.getY(), true);
-        }
         setAppearanceNormal();
         break;
     }
diff --git a/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml b/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml
deleted file mode 100644
index 7796877..0000000
--- a/java/com/android/dialer/app/manifests/activities/AndroidManifest.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- This manifest file contains activites that are subclasses by
-     Google Dialer. TODO: Need to stop subclassing activities and move this
-     back into the main manifest file. -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.app">
-
-  <application>
-
-    <activity
-        android:name="com.android.dialer.app.settings.DialerSettingsActivity"
-        android:exported="false"
-        android:label="@string/dialer_settings_label"
-        android:parentActivityName="com.android.dialer.main.impl.MainActivity"
-        android:theme="@style/SettingsStyle">
-      <intent-filter>
-        <action android:name="android.intent.action.VIEW"/>
-        <category android:name="android.intent.category.DEFAULT"/>
-        <data android:scheme="header"/>
-      </intent-filter>
-    </activity>
-
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/app/res/color/switch_thumb_color.xml b/java/com/android/dialer/app/res/color/switch_thumb_color.xml
new file mode 100644
index 0000000..6391563
--- /dev/null
+++ b/java/com/android/dialer/app/res/color/switch_thumb_color.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Disabled status of thumb -->
+    <item android:state_enabled="false"
+        android:color="@color/thumb_disabled_color" />
+    <!-- Toggle off status of thumb -->
+    <item android:state_checked="false"
+        android:color="@color/thumb_off_color" />
+    <!-- Enabled or toggle on status of thumb -->
+    <item android:color="@color/state_on_color" />
+</selector>
diff --git a/java/com/android/dialer/app/res/color/switch_track_color.xml b/java/com/android/dialer/app/res/color/switch_track_color.xml
new file mode 100644
index 0000000..9a645d9
--- /dev/null
+++ b/java/com/android/dialer/app/res/color/switch_track_color.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Copyright (C) 2021 The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Disabled status of thumb -->
+    <item android:state_enabled="false"
+        android:color="@color/track_off_color"
+        android:alpha="?android:attr/disabledAlpha" />
+    <!-- Toggle off status of thumb -->
+    <item android:state_checked="false"
+        android:color="@color/track_off_color" />
+    <!-- Enabled or toggle on status of thumb -->
+    <item android:color="@color/track_on_color" />
+</selector>
diff --git a/java/com/android/dialer/app/res/color/tab_text.xml b/java/com/android/dialer/app/res/color/tab_text.xml
new file mode 100644
index 0000000..ed4c5cb
--- /dev/null
+++ b/java/com/android/dialer/app/res/color/tab_text.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  SPDX-FileCopyrightText: The LineageOS Project
+  SPDX-License-Identifier: Apache-2.0
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:color="@color/dialer_theme_color" android:state_selected="true"/>
+  <item android:color="?android:attr/textColorPrimary"/>
+</selector>
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/empty_call_log.png b/java/com/android/dialer/app/res/drawable-hdpi/empty_call_log.png
deleted file mode 100644
index b51b7b8..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/empty_call_log.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_48dp.png
deleted file mode 100644
index eeed895..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/ic_check_mark_48dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_menu_history_lt.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_menu_history_lt.png
deleted file mode 100644
index 1c0c654..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/ic_menu_history_lt.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_mic_grey600.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_mic_grey600.png
deleted file mode 100644
index a392ff6..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/ic_mic_grey600.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_not_spam.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_not_spam.png
deleted file mode 100644
index 37caf38..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/ic_not_spam.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_phone_24dp.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_phone_24dp.png
deleted file mode 100644
index 9d41482..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/ic_phone_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_remove.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_remove.png
deleted file mode 100644
index 0af1e39..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/ic_remove.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_star.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_star.png
deleted file mode 100644
index 91c08cf..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/ic_star.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/ic_unblock.png b/java/com/android/dialer/app/res/drawable-hdpi/ic_unblock.png
deleted file mode 100644
index 1777610..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/ic_unblock.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/old_ic_handle.png b/java/com/android/dialer/app/res/drawable-hdpi/old_ic_handle.png
deleted file mode 100644
index a1c248c..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/old_ic_handle.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/search_shadow.9.png b/java/com/android/dialer/app/res/drawable-hdpi/search_shadow.9.png
deleted file mode 100644
index 7e7c7c1..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/search_shadow.9.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-hdpi/shadow_contact_photo.png b/java/com/android/dialer/app/res/drawable-hdpi/shadow_contact_photo.png
deleted file mode 100644
index 1fa6c4a..0000000
--- a/java/com/android/dialer/app/res/drawable-hdpi/shadow_contact_photo.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/empty_call_log.png b/java/com/android/dialer/app/res/drawable-mdpi/empty_call_log.png
deleted file mode 100644
index a8d5a0c..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/empty_call_log.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_check_mark_48dp.png
deleted file mode 100644
index f3b76be..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/ic_check_mark_48dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_menu_history_lt.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_menu_history_lt.png
deleted file mode 100644
index 4a87c94..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/ic_menu_history_lt.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_mic_grey600.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_mic_grey600.png
deleted file mode 100644
index f058bff..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/ic_mic_grey600.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_not_spam.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_not_spam.png
deleted file mode 100644
index 211baa9..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/ic_not_spam.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_phone_24dp.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_phone_24dp.png
deleted file mode 100644
index 6539c34..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/ic_phone_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_remove.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_remove.png
deleted file mode 100644
index 241a6a6..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/ic_remove.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_star.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_star.png
deleted file mode 100644
index 1f63663..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/ic_star.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/ic_unblock.png b/java/com/android/dialer/app/res/drawable-mdpi/ic_unblock.png
deleted file mode 100644
index 9f303d9..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/ic_unblock.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/old_ic_handle.png b/java/com/android/dialer/app/res/drawable-mdpi/old_ic_handle.png
deleted file mode 100644
index 3671e93..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/old_ic_handle.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/search_shadow.9.png b/java/com/android/dialer/app/res/drawable-mdpi/search_shadow.9.png
deleted file mode 100644
index 758ce82..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/search_shadow.9.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-mdpi/shadow_contact_photo.png b/java/com/android/dialer/app/res/drawable-mdpi/shadow_contact_photo.png
deleted file mode 100644
index 5c802f9..0000000
--- a/java/com/android/dialer/app/res/drawable-mdpi/shadow_contact_photo.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/empty_call_log.png b/java/com/android/dialer/app/res/drawable-xhdpi/empty_call_log.png
deleted file mode 100644
index eabc838..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/empty_call_log.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_check_mark_48dp.png
deleted file mode 100644
index 01a3bbe..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/ic_check_mark_48dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_menu_history_lt.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_menu_history_lt.png
deleted file mode 100644
index 27dbebf..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/ic_menu_history_lt.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_mic_grey600.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_mic_grey600.png
deleted file mode 100644
index e1d6a5c..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/ic_mic_grey600.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_not_spam.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_not_spam.png
deleted file mode 100644
index 8fdd43f..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/ic_not_spam.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_phone_24dp.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_phone_24dp.png
deleted file mode 100644
index 8d250c8..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/ic_phone_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_remove.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_remove.png
deleted file mode 100644
index ac81f84..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/ic_remove.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_star.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_star.png
deleted file mode 100644
index 1951884..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/ic_star.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/ic_unblock.png b/java/com/android/dialer/app/res/drawable-xhdpi/ic_unblock.png
deleted file mode 100644
index c6e6595..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/ic_unblock.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/old_ic_handle.png b/java/com/android/dialer/app/res/drawable-xhdpi/old_ic_handle.png
deleted file mode 100644
index 36f3466..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/old_ic_handle.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/search_shadow.9.png b/java/com/android/dialer/app/res/drawable-xhdpi/search_shadow.9.png
deleted file mode 100644
index ad45286..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/search_shadow.9.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xhdpi/shadow_contact_photo.png b/java/com/android/dialer/app/res/drawable-xhdpi/shadow_contact_photo.png
deleted file mode 100644
index 4e09fd7..0000000
--- a/java/com/android/dialer/app/res/drawable-xhdpi/shadow_contact_photo.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/empty_call_log.png b/java/com/android/dialer/app/res/drawable-xxhdpi/empty_call_log.png
deleted file mode 100644
index ddb8823..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/empty_call_log.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_check_mark_48dp.png
deleted file mode 100644
index 2043279..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_check_mark_48dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_menu_history_lt.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_menu_history_lt.png
deleted file mode 100644
index 75a633c..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_menu_history_lt.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_mic_grey600.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_mic_grey600.png
deleted file mode 100644
index 726fc11..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_mic_grey600.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_not_spam.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_not_spam.png
deleted file mode 100644
index 941ce8d..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_not_spam.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_phone_24dp.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_phone_24dp.png
deleted file mode 100644
index 9b366f7..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_phone_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_remove.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_remove.png
deleted file mode 100644
index 9281ab9..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_remove.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_star.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_star.png
deleted file mode 100644
index 94fd394..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_star.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_unblock.png b/java/com/android/dialer/app/res/drawable-xxhdpi/ic_unblock.png
deleted file mode 100644
index 52fce33..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/ic_unblock.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/old_ic_handle.png b/java/com/android/dialer/app/res/drawable-xxhdpi/old_ic_handle.png
deleted file mode 100644
index 269cb38..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/old_ic_handle.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/search_shadow.9.png b/java/com/android/dialer/app/res/drawable-xxhdpi/search_shadow.9.png
deleted file mode 100644
index fc6f3bf..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/search_shadow.9.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxhdpi/shadow_contact_photo.png b/java/com/android/dialer/app/res/drawable-xxhdpi/shadow_contact_photo.png
deleted file mode 100644
index f7b8d2d..0000000
--- a/java/com/android/dialer/app/res/drawable-xxhdpi/shadow_contact_photo.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/empty_call_log.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/empty_call_log.png
deleted file mode 100644
index 5704d75..0000000
--- a/java/com/android/dialer/app/res/drawable-xxxhdpi/empty_call_log.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_check_mark_48dp.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_check_mark_48dp.png
deleted file mode 100644
index bfbe69e..0000000
--- a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_check_mark_48dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_mic_grey600.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_mic_grey600.png
deleted file mode 100644
index d80da4b..0000000
--- a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_mic_grey600.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_not_spam.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_not_spam.png
deleted file mode 100644
index d1634c1..0000000
--- a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_not_spam.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_phone_24dp.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_phone_24dp.png
deleted file mode 100644
index 71c48f1..0000000
--- a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_phone_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_unblock.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_unblock.png
deleted file mode 100644
index 01551e2..0000000
--- a/java/com/android/dialer/app/res/drawable-xxxhdpi/ic_unblock.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/old_ic_handle.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/old_ic_handle.png
deleted file mode 100644
index 0a65998..0000000
--- a/java/com/android/dialer/app/res/drawable-xxxhdpi/old_ic_handle.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/search_shadow.9.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/search_shadow.9.png
deleted file mode 100644
index fc6f3bf..0000000
--- a/java/com/android/dialer/app/res/drawable-xxxhdpi/search_shadow.9.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/drawable/empty_call_log.xml b/java/com/android/dialer/app/res/drawable/empty_call_log.xml
new file mode 100644
index 0000000..d95fc4b
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable/empty_call_log.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="#19000000">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M612,668L668,612L520,464L520,280L440,280L440,496L612,668ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480ZM480,800Q613,800 706.5,706.5Q800,613 800,480Q800,347 706.5,253.5Q613,160 480,160Q347,160 253.5,253.5Q160,347 160,480Q160,613 253.5,706.5Q347,800 480,800Z"/>
+</vector>
diff --git a/java/com/android/dialer/app/res/drawable/ic_check_mark_48dp.xml b/java/com/android/dialer/app/res/drawable/ic_check_mark_48dp.xml
new file mode 100644
index 0000000..0502de6
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable/ic_check_mark_48dp.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: The LineageOS Project
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="48dp"
+    android:height="48dp"
+    android:viewportWidth="42"
+    android:viewportHeight="42">
+    <path
+        android:fillColor="@color/dialer_theme_color"
+        android:fillType="evenOdd"
+        android:pathData="M21 42C32.598 42 42 32.598 42 21C42 9.40201 32.598 0 21 0C9.40198 0 0 9.40201 0 21C0 32.598 9.40198 42 21 42ZM14.275 19.8751L12.85 21.3001L18.5499 27.0001L29.15 16.4001L27.725 14.9751L18.5499 24.1501L14.275 19.8751Z" />
+</vector>
diff --git a/java/com/android/dialer/app/res/drawable/ic_launcher_background.xml b/java/com/android/dialer/app/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..9e3a20f
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     SPDX-FileCopyrightText: 2022 The LineageOS Project
+     SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="108dp"
+    android:height="108dp"
+    android:viewportWidth="108"
+    android:viewportHeight="108">
+  <path
+      android:pathData="M0,0h108v108h-108z"
+      android:fillColor="#ffffff"/>
+  <path
+      android:pathData="M66.578,37.789C66.859,37.226 67,36.613 67,36H62V38C62,39.105 61.105,40 60,40H52C50.896,40 50,39.105 50,38V36H45C45,36.613 45.141,37.226 45.422,37.789L47.422,41.789C48.1,43.144 49.485,44 51,44H61C62.515,44 63.9,43.144 64.578,41.789L66.578,37.789ZM67,72H45C45,71.387 45.141,70.774 45.422,70.211L47.422,66.211C48.1,64.856 49.485,64 51,64H61C62.515,64 63.9,64.856 64.578,66.211L66.578,70.211C66.859,70.774 67,71.387 67,72Z"
+      android:fillColor="#CBDEFB"
+      android:fillType="evenOdd"/>
+</vector>
diff --git a/java/com/android/dialer/app/res/drawable/ic_launcher_foreground.xml b/java/com/android/dialer/app/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..ca7d11c
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     SPDX-FileCopyrightText: 2022 The LineageOS Project
+     SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt"
+    android:width="108dp"
+    android:height="108dp"
+    android:viewportWidth="108"
+    android:viewportHeight="108">
+  <group>
+    <clip-path
+        android:pathData="M0,0h108v108h-108z"/>
+    <path
+        android:pathData="M47.422,77.789C48.1,79.144 49.485,80 51,80H61C62.515,80 63.9,79.144 64.578,77.789L66.578,73.789C67.141,72.663 67.141,71.337 66.578,70.211L64.578,66.211C63.9,64.856 62.515,64 61,64H51C49.485,64 48.1,64.856 47.422,66.211L45.422,70.211C44.859,71.337 44.859,72.663 45.422,73.789L47.422,77.789Z"
+        android:fillColor="#193057"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M47.422,30.211C48.1,28.856 49.485,28 51,28H61C62.515,28 63.9,28.856 64.578,30.211L66.578,34.211C67.141,35.337 67.141,36.663 66.578,37.789L64.578,41.789C63.9,43.144 62.515,44 61,44H51C49.485,44 48.1,43.144 47.422,41.789L45.422,37.789C44.859,36.663 44.859,35.337 45.422,34.211L47.422,30.211Z"
+        android:fillColor="#193057"
+        android:fillType="evenOdd"/>
+    <path
+        android:pathData="M41,54C41,43.751 43.836,37.383 45.422,34.211L47.425,30.209C48.102,28.855 49.486,28 51,28H61C59.486,28 58.102,28.855 57.425,30.209L55.422,34.211C53.836,37.383 51,43.751 51,54C51,64.249 53.836,70.617 55.422,73.789L57.425,77.791C58.102,79.145 59.486,80 61,80H51C49.486,80 48.102,79.145 47.425,77.791L45.422,73.789C43.836,70.617 41,64.249 41,54Z"
+        android:fillColor="#4D84E9"/>
+    <path
+        android:pathData="M28.54,28.54m-72,0a72,72 0,1 1,144 0a72,72 0,1 1,-144 0"
+        android:fillAlpha="0.6">
+      <aapt:attr name="android:fillColor">
+        <gradient
+            android:gradientRadius="72"
+            android:centerX="28.54"
+            android:centerY="28.54"
+            android:type="radial">
+          <item android:offset="0" android:color="#19FFFFFF"/>
+          <item android:offset="1" android:color="#00FFFFFF"/>
+        </gradient>
+      </aapt:attr>
+    </path>
+  </group>
+</vector>
diff --git a/java/com/android/dialer/app/res/drawable/ic_launcher_monochrome.xml b/java/com/android/dialer/app/res/drawable/ic_launcher_monochrome.xml
new file mode 100644
index 0000000..7b3ef38
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable/ic_launcher_monochrome.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     SPDX-FileCopyrightText: 2022 The LineageOS Project
+     SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="108dp"
+    android:height="108dp"
+    android:viewportWidth="108"
+    android:viewportHeight="108">
+  <path
+      android:pathData="M57.53,28H57.175H50C48.486,28 47.102,28.855 46.425,30.209L44.422,34.211C42.836,37.383 40,43.751 40,54C40,64.249 42.836,70.617 44.422,73.789L46.425,77.791C47.102,79.145 48.486,80 50,80H57.172H57.53H60.53H61C62.515,80 63.9,79.144 64.578,77.789L66.578,73.789C67.141,72.663 67.141,71.337 66.578,70.211L64.578,66.211C63.9,64.856 62.515,64 61,64H53.996C53.406,61.197 53,57.876 53,54C53,50.124 53.406,46.803 53.996,44H61C62.515,44 63.9,43.144 64.578,41.789L66.578,37.789C67.141,36.663 67.141,35.337 66.578,34.211L64.578,30.211C63.9,28.856 62.515,28 61,28H60.53H57.53ZM54.739,75.132L55.674,77H50C49.622,77 49.277,76.787 49.108,76.449L47.105,72.447L47.105,72.447C45.65,69.537 43,63.636 43,54C43,44.364 45.65,38.463 47.105,35.553L47.105,35.553L49.108,31.551C49.277,31.213 49.622,31 50,31H55.674L54.739,32.868L54.739,32.869C53.022,36.303 50,43.139 50,54C50,64.861 53.022,71.697 54.739,75.131L54.739,75.132Z"
+      android:fillColor="#ffffffff"
+      android:fillType="evenOdd"/>
+</vector>
diff --git a/java/com/android/dialer/app/res/drawable/ic_pause.xml b/java/com/android/dialer/app/res/drawable/ic_pause.xml
deleted file mode 100644
index 7696eb0..0000000
--- a/java/com/android/dialer/app/res/drawable/ic_pause.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-
-  <item android:state_enabled="false">
-    <bitmap
-      android:src="@drawable/quantum_ic_pause_white_24"
-      android:tint="@color/voicemail_icon_disabled_tint"/>
-  </item>
-
-  <item>
-    <bitmap
-      android:src="@drawable/quantum_ic_pause_white_24"
-      android:tint="@color/voicemail_playpause_icon_tint"/>
-  </item>
-
-</selector>
diff --git a/java/com/android/dialer/app/res/drawable/ic_play_arrow.xml b/java/com/android/dialer/app/res/drawable/ic_play_arrow.xml
deleted file mode 100644
index 97f736c..0000000
--- a/java/com/android/dialer/app/res/drawable/ic_play_arrow.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android"
-  android:autoMirrored="true">
-
-  <item android:state_enabled="false">
-    <bitmap
-      android:src="@drawable/quantum_ic_play_arrow_white_24"
-      android:tint="@color/voicemail_icon_disabled_tint"/>
-  </item>
-
-  <item>
-    <bitmap
-      android:src="@drawable/quantum_ic_play_arrow_white_24"
-      android:tint="@color/voicemail_playpause_icon_tint"/>
-  </item>
-
-</selector>
diff --git a/java/com/android/dialer/app/res/drawable/ic_voicemail_seek_handle.xml b/java/com/android/dialer/app/res/drawable/ic_voicemail_seek_handle.xml
index 00b23b8..8ac7881 100644
--- a/java/com/android/dialer/app/res/drawable/ic_voicemail_seek_handle.xml
+++ b/java/com/android/dialer/app/res/drawable/ic_voicemail_seek_handle.xml
@@ -1,20 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2014 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-  android:src="@drawable/old_ic_handle"
-  android:tint="?android:attr/colorPrimary">
-</bitmap>
\ No newline at end of file
+  SPDX-FileCopyrightText: The LineageOS Project
+  SPDX-License-Identifier: Apache-2.0
+-->
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval"
+    android:width="12dp"
+    android:height="12dp"
+    android:tint="?android:attr/colorPrimary" />
diff --git a/java/com/android/dialer/app/res/drawable/old_ic_voicemail_seek_handle_disabled.xml b/java/com/android/dialer/app/res/drawable/old_ic_voicemail_seek_handle_disabled.xml
index cfce818..9de2b1d 100644
--- a/java/com/android/dialer/app/res/drawable/old_ic_voicemail_seek_handle_disabled.xml
+++ b/java/com/android/dialer/app/res/drawable/old_ic_voicemail_seek_handle_disabled.xml
@@ -1,20 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2015 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-  android:src="@drawable/old_ic_handle"
-  android:tint="@color/voicemail_icon_disabled_tint">
-</bitmap>
\ No newline at end of file
+  SPDX-FileCopyrightText: The LineageOS Project
+  SPDX-License-Identifier: Apache-2.0
+-->
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval"
+    android:width="12dp"
+    android:height="12dp"
+    android:tint="@color/voicemail_icon_disabled_tint" />
diff --git a/java/com/android/dialer/app/res/drawable/pill.xml b/java/com/android/dialer/app/res/drawable/pill.xml
new file mode 100644
index 0000000..da68a19
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable/pill.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  SPDX-FileCopyrightText: The LineageOS Project
+  SPDX-License-Identifier: Apache-2.0
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/dialer_pill_color" />
+    <corners android:radius="128dp" />
+</shape>
diff --git a/java/com/android/dialer/app/res/drawable/popup_background.xml b/java/com/android/dialer/app/res/drawable/popup_background.xml
new file mode 100644
index 0000000..fe5e465
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable/popup_background.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <corners android:radius="28dp" />
+    <solid android:color="@android:color/system_neutral2_700" />
+</shape>
diff --git a/java/com/android/dialer/app/res/drawable/rounded_corner.xml b/java/com/android/dialer/app/res/drawable/rounded_corner.xml
deleted file mode 100644
index b4c1006..0000000
--- a/java/com/android/dialer/app/res/drawable/rounded_corner.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ Copyright (C) 2014 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-  android:shape="rectangle">
-  <solid android:color="?android:attr/colorBackgroundFloating"/>
-  <corners android:radius="2dp"/>
-</shape>
diff --git a/java/com/android/dialer/app/res/drawable/seekbar_drawable.xml b/java/com/android/dialer/app/res/drawable/seekbar_drawable.xml
index 2288cf2..075e999 100644
--- a/java/com/android/dialer/app/res/drawable/seekbar_drawable.xml
+++ b/java/com/android/dialer/app/res/drawable/seekbar_drawable.xml
@@ -15,7 +15,7 @@
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_enabled="true">
-    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <layer-list>
       <item android:id="@android:id/background">
         <shape android:shape="line">
           <stroke
@@ -38,7 +38,7 @@
     </layer-list>
   </item>
   <item>
-    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <layer-list>
       <item android:id="@android:id/background">
         <shape android:shape="line">
           <stroke
diff --git a/java/com/android/dialer/app/res/drawable/selectable_primary_flat_button.xml b/java/com/android/dialer/app/res/drawable/selectable_primary_flat_button.xml
index 2a393a5..75b0beb 100644
--- a/java/com/android/dialer/app/res/drawable/selectable_primary_flat_button.xml
+++ b/java/com/android/dialer/app/res/drawable/selectable_primary_flat_button.xml
@@ -21,11 +21,13 @@
   <item android:state_enabled="false">
     <shape>
       <solid android:color="@color/material_grey_300"/>
+      <corners android:radius="28dp"/>
     </shape>
   </item>
   <item>
     <shape>
-      <solid android:color="?android:attr/colorPrimary"/>
+      <solid android:color="?android:attr/colorAccent"/>
+      <corners android:radius="28dp"/>
     </shape>
   </item>
-</selector>
\ No newline at end of file
+</selector>
diff --git a/java/com/android/dialer/app/res/drawable/switch_thumb.xml b/java/com/android/dialer/app/res/drawable/switch_thumb.xml
new file mode 100644
index 0000000..4ff649c
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable/switch_thumb.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:top="4dp"
+        android:left="4dp"
+        android:right="4dp"
+        android:bottom="4dp">
+        <shape android:shape="oval" >
+            <size android:height="20dp" android:width="20dp" />
+            <solid android:color="@color/switch_thumb_color" />
+        </shape>
+    </item>
+</layer-list>
diff --git a/java/com/android/dialer/app/res/drawable/switch_track.xml b/java/com/android/dialer/app/res/drawable/switch_track.xml
new file mode 100644
index 0000000..f54a350
--- /dev/null
+++ b/java/com/android/dialer/app/res/drawable/switch_track.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2021 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle"
+    android:width="52dp"
+    android:height="28dp">
+
+    <solid android:color="@color/switch_track_color" />
+    <corners android:radius="35dp" />
+</shape>
diff --git a/java/com/android/dialer/app/res/layout/action_mode_close_button.xml b/java/com/android/dialer/app/res/layout/action_mode_close_button.xml
deleted file mode 100644
index 4cb85d4..0000000
--- a/java/com/android/dialer/app/res/layout/action_mode_close_button.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/action_mode_close_button"
-    style="?attr/actionModeCloseButtonStyle"
-    android:layout_width="wrap_content"
-    android:layout_height="match_parent"
-    android:layout_marginEnd="16dip"
-    android:layout_marginRight="16dip"
-    android:paddingStart="8dp"
-    android:paddingLeft="8dp"
-    android:clickable="true"
-    android:contentDescription="@string/description_cancel_multi_select"
-    android:focusable="true"
-    android:src="@drawable/quantum_ic_close_white_24"/>
-
-
diff --git a/java/com/android/dialer/app/res/layout/activity_settings.xml b/java/com/android/dialer/app/res/layout/activity_settings.xml
new file mode 100644
index 0000000..e53ce21
--- /dev/null
+++ b/java/com/android/dialer/app/res/layout/activity_settings.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:id="@+id/content_frame" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/java/com/android/dialer/app/res/layout/blocked_number_footer.xml b/java/com/android/dialer/app/res/layout/blocked_number_footer.xml
deleted file mode 100644
index 2d36860..0000000
--- a/java/com/android/dialer/app/res/layout/blocked_number_footer.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="match_parent"
-  android:layout_height="wrap_content"
-  android:focusable="false"
-  android:orientation="vertical">
-
-  <LinearLayout
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:padding="@dimen/blocked_number_container_padding"
-    android:background="@android:color/white"
-    android:focusable="true"
-    android:orientation="vertical">
-
-    <TextView
-      android:id="@+id/blocked_number_footer_textview"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:text="@string/block_number_footer_message_vvm"
-      style="@style/Dialer.TextAppearance.Secondary"/>
-  </LinearLayout>
-</LinearLayout>
diff --git a/java/com/android/dialer/app/res/layout/blocked_number_fragment.xml b/java/com/android/dialer/app/res/layout/blocked_number_fragment.xml
deleted file mode 100644
index 22dcfef..0000000
--- a/java/com/android/dialer/app/res/layout/blocked_number_fragment.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/blocked_number_fragment"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:background="?android:attr/colorBackground"
-  android:orientation="vertical">
-
-  <ListView
-    android:id="@id/android:list"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:divider="@null"
-    android:headerDividersEnabled="false"/>
-
-</LinearLayout>
diff --git a/java/com/android/dialer/app/res/layout/blocked_number_header.xml b/java/com/android/dialer/app/res/layout/blocked_number_header.xml
deleted file mode 100644
index 27b624c..0000000
--- a/java/com/android/dialer/app/res/layout/blocked_number_header.xml
+++ /dev/null
@@ -1,180 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  xmlns:card_view="http://schemas.android.com/apk/res-auto"
-  xmlns:tools="http://schemas.android.com/tools"
-  android:layout_width="match_parent"
-  android:layout_height="wrap_content"
-  android:focusable="false"
-  android:orientation="vertical">
-
-  <LinearLayout
-    android:id="@+id/blocked_numbers_disabled_for_emergency"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="27dp"
-    android:paddingBottom="29dp"
-    android:paddingStart="@dimen/blocked_number_container_padding"
-    android:paddingEnd="44dp"
-    android:background="?android:attr/colorBackground"
-    android:focusable="true"
-    android:orientation="vertical"
-    android:visibility="gone">
-
-    <TextView
-      style="@style/BlockedNumbersDescriptionTextStyle"
-      android:textStyle="bold"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:text="@string/blocked_numbers_disabled_emergency_header_label"/>
-
-    <TextView
-      style="@style/BlockedNumbersDescriptionTextStyle"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:text="@string/blocked_numbers_disabled_emergency_desc"/>
-
-  </LinearLayout>
-
-  <android.support.v7.widget.CardView
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    card_view:cardCornerRadius="0dp">
-
-    <LinearLayout
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:background="@android:color/white"
-      android:focusable="true"
-      android:orientation="vertical">
-
-      <TextView
-        android:id="@+id/blocked_number_text_view"
-        style="@android:style/TextAppearance.Material.Subhead"
-        android:layout_width="wrap_content"
-        android:layout_height="48dp"
-        android:paddingStart="@dimen/blocked_number_container_padding"
-        android:gravity="center_vertical"
-        android:text="@string/block_list"
-        android:textColor="?android:attr/textColorPrimary"/>
-
-      <RelativeLayout
-        android:id="@+id/import_settings"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:visibility="gone"
-        tools:visibility="visible">
-
-        <TextView
-          android:id="@+id/import_description"
-          style="@style/BlockedNumbersDescriptionTextStyle"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:paddingTop="11dp"
-          android:paddingBottom="27dp"
-          android:paddingStart="@dimen/blocked_number_container_padding"
-          android:paddingEnd="@dimen/blocked_number_container_padding"
-          android:text="@string/blocked_call_settings_import_description"
-          android:textColor="?colorIcon"
-          android:textSize="@dimen/blocked_number_settings_description_text_size"/>
-
-        <Button
-          android:id="@+id/import_button"
-          style="@style/DialerFlatButtonStyle"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_marginEnd="@dimen/blocked_number_container_padding"
-          android:layout_alignParentEnd="true"
-          android:layout_below="@id/import_description"
-          android:text="@string/blocked_call_settings_import_button"/>
-
-        <Button
-          android:id="@+id/view_numbers_button"
-          style="@style/DialerFlatButtonStyle"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_marginEnd="8dp"
-          android:layout_below="@id/import_description"
-          android:layout_toStartOf="@id/import_button"
-          android:text="@string/blocked_call_settings_view_numbers_button"/>
-
-        <View
-          android:layout_width="match_parent"
-          android:layout_height="1dp"
-          android:layout_marginTop="8dp"
-          android:layout_below="@id/import_button"
-          android:background="@color/dialer_divider_line_color"/>
-
-      </RelativeLayout>
-
-      <LinearLayout
-        android:id="@+id/migrate_promo"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        android:visibility="gone"
-        tools:visibility="visible">
-
-        <TextView
-          android:id="@+id/migrate_promo_header"
-          style="@android:style/TextAppearance.Material.Subhead"
-          android:textStyle="bold"
-          android:layout_width="match_parent"
-          android:layout_height="48dp"
-          android:paddingStart="@dimen/blocked_number_container_padding"
-          android:paddingEnd="@dimen/blocked_number_container_padding"
-          android:gravity="center_vertical"
-          android:text="@string/migrate_blocked_numbers_dialog_title"
-          android:textColor="?android:attr/textColorPrimary"/>
-
-        <TextView
-          android:id="@+id/migrate_promo_description"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:layout_marginBottom="@dimen/blocked_number_container_padding"
-          android:layout_marginStart="@dimen/blocked_number_container_padding"
-          android:layout_marginEnd="@dimen/blocked_number_container_padding"
-          android:text="@string/migrate_blocked_numbers_dialog_message"
-          android:textColor="?colorIcon"/>
-
-        <Button
-          android:id="@+id/migrate_promo_allow_button"
-          style="@style/DialerPrimaryFlatButtonStyle"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_marginBottom="@dimen/blocked_number_container_padding"
-          android:layout_marginStart="@dimen/blocked_number_container_padding"
-          android:layout_marginEnd="@dimen/blocked_number_container_padding"
-          android:layout_gravity="end"
-          android:text="@string/migrate_blocked_numbers_dialog_allow_button"/>
-
-        <View
-          style="@style/FullWidthDivider"/>
-
-      </LinearLayout>
-
-      <View
-        android:id="@+id/blocked_number_list_divider"
-        android:layout_width="match_parent"
-        android:layout_height="1dp"
-        android:layout_marginStart="72dp"
-        android:background="@color/dialer_divider_line_color"/>
-
-    </LinearLayout>
-
-  </android.support.v7.widget.CardView>
-
-</LinearLayout>
diff --git a/java/com/android/dialer/app/res/layout/blocked_number_item.xml b/java/com/android/dialer/app/res/layout/blocked_number_item.xml
deleted file mode 100644
index 921c476..0000000
--- a/java/com/android/dialer/app/res/layout/blocked_number_item.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/caller_information"
-  android:layout_width="match_parent"
-  android:layout_height="wrap_content"
-  android:paddingStart="@dimen/blocked_number_horizontal_margin"
-  android:background="@android:color/white"
-  android:baselineAligned="false"
-  android:focusable="true"
-  android:gravity="center_vertical"
-  android:orientation="horizontal">
-
-  <QuickContactBadge
-    android:id="@+id/quick_contact_photo"
-    android:layout_width="@dimen/contact_photo_size"
-    android:layout_height="@dimen/contact_photo_size"
-    android:layout_marginTop="@dimen/blocked_number_top_margin"
-    android:layout_marginBottom="@dimen/blocked_number_bottom_margin"
-    android:focusable="true"/>
-  <LinearLayout
-    android:layout_width="0dp"
-    android:layout_height="match_parent"
-    android:layout_weight="1"
-    android:layout_marginStart="@dimen/blocked_number_horizontal_margin"
-    android:gravity="center_vertical"
-    android:orientation="vertical">
-
-    <TextView
-      android:id="@+id/caller_name"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:includeFontPadding="false"
-      style="@style/Dialer.TextAppearance.Primary.Ellipsize"/>
-
-    <TextView
-      android:id="@+id/caller_number"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      style="@style/Dialer.TextAppearance.Secondary.Ellipsize"/>
-  </LinearLayout>
-
-  <ImageView
-    android:id="@+id/delete_button"
-    android:layout_width="@dimen/blocked_number_delete_icon_size"
-    android:layout_height="@dimen/blocked_number_delete_icon_size"
-    android:layout_marginEnd="24dp"
-    android:background="?android:attr/selectableItemBackgroundBorderless"
-    android:contentDescription="@string/description_blocked_number_list_delete"
-    android:scaleType="center"
-    android:src="@drawable/ic_remove"
-    android:tint="?colorIcon"/>
-</LinearLayout>
diff --git a/java/com/android/dialer/app/res/layout/blocked_numbers_activity.xml b/java/com/android/dialer/app/res/layout/blocked_numbers_activity.xml
deleted file mode 100644
index 0c4874c..0000000
--- a/java/com/android/dialer/app/res/layout/blocked_numbers_activity.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/blocked_numbers_activity_container"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:layout_marginTop="@dimen/action_bar_height">
-</FrameLayout>
diff --git a/java/com/android/dialer/app/res/layout/call_log_activity.xml b/java/com/android/dialer/app/res/layout/call_log_activity.xml
index 4b3c1e0..887fa98 100644
--- a/java/com/android/dialer/app/res/layout/call_log_activity.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_activity.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2013 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -28,8 +29,8 @@
       android:layout_gravity="top"
       android:elevation="@dimen/tab_elevation"
       android:orientation="horizontal"
-      android:textAllCaps="true"/>
-  <android.support.v4.view.ViewPager
+      android:textAllCaps="false"/>
+  <androidx.viewpager.widget.ViewPager
       android:id="@+id/call_log_pager"
       android:layout_width="match_parent"
       android:layout_height="0dp"
diff --git a/java/com/android/dialer/app/res/layout/call_log_fragment.xml b/java/com/android/dialer/app/res/layout/call_log_fragment.xml
index bf91a3a..09780aa 100644
--- a/java/com/android/dialer/app/res/layout/call_log_fragment.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_fragment.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2011 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -43,7 +44,7 @@
         android:id="@+id/select_all_view_text"
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
-        android:paddingLeft="@dimen/select_all_text_left_padding"
+        android:paddingStart="@dimen/select_all_text_left_padding"
         android:gravity="center_vertical"
         android:text="@string/select_all"
         android:textAllCaps="true"
@@ -57,7 +58,7 @@
     android:layout_height="match_parent"
     android:visibility="gone"/>
 
-  <android.support.v7.widget.RecyclerView
+  <androidx.recyclerview.widget.RecyclerView
     android:id="@+id/recycler_view"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item.xml b/java/com/android/dialer/app/res/layout/call_log_list_item.xml
index c9c1a67..181ca56 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2007 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -15,6 +16,7 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
   android:id="@+id/call_log_list_item"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
@@ -33,7 +35,7 @@
     android:paddingBottom="@dimen/call_log_day_group_padding_bottom"
     style="@style/Dialer.TextAppearance.OVERLINE.Ellipsize"/>
 
-  <android.support.v7.widget.CardView
+  <androidx.cardview.widget.CardView
     android:id="@+id/call_log_row"
     style="@style/CallLogCardStyle">
 
@@ -45,7 +47,6 @@
       <!-- Primary area containing the contact badge and caller information -->
       <LinearLayout
         android:id="@+id/primary_action_view"
-        android:background="?android:attr/selectableItemBackground"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:paddingStart="@dimen/call_log_start_margin"
@@ -140,77 +141,6 @@
             android:visibility="gone"
             style="Dialer.TextAppearance.Secondary2.Ellipsize"/>
 
-          <LinearLayout
-            android:id="@+id/transcription"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="@dimen/call_log_icon_margin"
-            android:visibility="gone"
-            android:orientation="vertical">
-
-            <TextView
-              android:id="@+id/voicemail_transcription"
-              android:layout_width="wrap_content"
-              android:layout_height="wrap_content"
-              android:focusable="true"
-              android:nextFocusDown="@+id/voicemail_transcription_branding"
-              android:textIsSelectable="true"
-              style="Dialer.TextAppearance.Secondary2"/>
-
-            <TextView
-              android:id="@+id/voicemail_transcription_branding"
-              android:layout_width="wrap_content"
-              android:layout_height="wrap_content"
-              android:focusable="true"
-              android:nextFocusUp="@id/voicemail_transcription"
-              android:nextFocusDown="@+id/voicemail_transcription_rating"
-              android:paddingTop="2dp"
-              style="Dialer.TextAppearance.Secondary2"/>
-
-            <LinearLayout
-                android:id="@+id/voicemail_transcription_rating"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/call_log_icon_margin"
-                android:layout_gravity="center_vertical"
-                android:visibility="gone"
-                android:paddingTop="2dp"
-                android:orientation="horizontal">
-
-              <TextView
-                  style="@style/TranscriptionQualityRating"
-                  android:id="@+id/voicemail_transcription_rating_text"
-                  android:layout_width="wrap_content"
-                  android:layout_height="wrap_content"
-                  android:layout_weight="1"
-                  android:gravity="start|center_vertical"
-                  android:focusable="true"
-                  android:text="@string/voicemail_transcription_rating"/>
-
-              <ImageView
-                  style="@style/TranscriptionQualityRatingIcon"
-                  android:id="@+id/voicemail_transcription_rating_good"
-                  android:layout_width="wrap_content"
-                  android:layout_height="wrap_content"
-                  android:contentDescription="@string/description_rating_good"
-                  android:gravity="end|center_vertical"
-                  android:focusable="true"
-                  android:src="@drawable/quantum_ic_thumb_up_grey600_24"/>
-
-              <ImageView
-                  style="@style/TranscriptionQualityRatingIcon"
-                  android:id="@+id/voicemail_transcription_rating_bad"
-                  android:layout_width="wrap_content"
-                  android:layout_height="wrap_content"
-                  android:contentDescription="@string/description_rating_bad"
-                  android:gravity="end|center_vertical"
-                  android:focusable="true"
-                  android:src="@drawable/quantum_ic_thumb_down_grey600_24"/>
-
-            </LinearLayout>
-
-          </LinearLayout>
-
         </LinearLayout>
 
         <ImageView
@@ -220,8 +150,8 @@
           android:layout_gravity="center_vertical"
           android:background="?android:attr/selectableItemBackgroundBorderless"
           android:scaleType="center"
-          android:tint="?colorIcon"
-          android:visibility="gone"/>
+          android:visibility="gone"
+          app:tint="?colorIcon" />
 
       </LinearLayout>
 
@@ -236,6 +166,6 @@
 
     </LinearLayout>
 
-  </android.support.v7.widget.CardView>
+  </androidx.cardview.widget.CardView>
 
 </LinearLayout>
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
index 7f24594..7416b64 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item_actions.xml
@@ -26,7 +26,9 @@
   <com.android.dialer.app.voicemail.VoicemailPlaybackLayout
     android:id="@+id/voicemail_playback_layout"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"/>
+    android:layout_height="wrap_content"
+    android:background="@android:color/transparent"
+    android:paddingBottom="5dp"/>
 
   <View
     android:layout_width="match_parent"
@@ -39,7 +41,7 @@
 
     <ImageView
       style="@style/CallLogActionIconStyle"
-      android:src="@drawable/quantum_ic_call_white_24"/>
+      android:src="@drawable/quantum_ic_call_vd_theme_24"/>
 
     <LinearLayout
       android:layout_width="match_parent"
@@ -73,40 +75,12 @@
   </LinearLayout>
 
   <LinearLayout
-      android:id="@+id/set_up_video_action"
-      style="@style/CallLogActionStyle">
-
-    <ImageView
-        style="@style/CallLogActionIconStyle"
-        android:src="@drawable/quantum_ic_videocam_vd_white_24"/>
-
-    <TextView
-        style="@style/CallLogActionTextStyle"
-        android:text="@string/call_log_action_set_up_video"/>
-
-  </LinearLayout>
-
-  <LinearLayout
-      android:id="@+id/invite_video_action"
-      style="@style/CallLogActionStyle">
-
-    <ImageView
-        style="@style/CallLogActionIconStyle"
-        android:src="@drawable/quantum_ic_videocam_vd_white_24"/>
-
-    <TextView
-        style="@style/CallLogActionTextStyle"
-        android:text="@string/call_log_action_invite_video"/>
-
-  </LinearLayout>
-
-  <LinearLayout
     android:id="@+id/create_new_contact_action"
     style="@style/CallLogActionStyle">
 
     <ImageView
       style="@style/CallLogActionIconStyle"
-      android:src="@drawable/quantum_ic_person_add_white_24"/>
+      android:src="@drawable/quantum_ic_person_add_vd_theme_24"/>
 
     <TextView
       style="@style/CallLogActionTextStyle"
@@ -120,7 +94,7 @@
 
     <ImageView
       style="@style/CallLogActionIconStyle"
-      android:src="@drawable/quantum_ic_person_white_24"/>
+      android:src="@drawable/quantum_ic_person_vd_theme_24"/>
 
     <TextView
       style="@style/CallLogActionTextStyle"
@@ -134,7 +108,7 @@
 
     <ImageView
       style="@style/CallLogActionIconStyle"
-      android:src="@drawable/quantum_ic_message_white_24"/>
+      android:src="@drawable/quantum_ic_message_vd_theme_24"/>
 
     <TextView
       style="@style/CallLogActionTextStyle"
@@ -157,27 +131,13 @@
   </LinearLayout>
 
   <LinearLayout
-    android:id="@+id/call_compose_action"
-    style="@style/CallLogActionStyle">
-
-    <ImageView
-      style="@style/CallLogActionIconStyle"
-      android:src="@drawable/ic_phone_attach"/>
-
-    <TextView
-      style="@style/CallLogActionTextStyle"
-      android:text="@string/share_and_call"/>
-
-  </LinearLayout>
-
-  <LinearLayout
     android:id="@+id/report_not_spam_action"
     style="@style/CallLogActionStyle"
     android:visibility="gone">
 
     <ImageView
       style="@style/CallLogActionIconStyle"
-      android:src="@drawable/ic_not_spam"/>
+      android:src="@drawable/quantum_ic_report_off_vd_theme_24"/>
 
     <TextView
       style="@style/CallLogActionTextStyle"
@@ -191,7 +151,7 @@
 
     <ImageView
       style="@style/CallLogActionIconStyle"
-      android:src="@drawable/quantum_ic_block_white_24"/>
+      android:src="@drawable/quantum_ic_block_vd_theme_24"/>
 
     <TextView
       style="@style/CallLogActionTextStyle"
@@ -205,7 +165,7 @@
 
     <ImageView
       style="@style/CallLogActionIconStyle"
-      android:src="@drawable/quantum_ic_block_white_24"/>
+      android:src="@drawable/quantum_ic_block_vd_theme_24"/>
 
     <TextView
       style="@style/CallLogActionTextStyle"
@@ -219,7 +179,7 @@
 
     <ImageView
       style="@style/CallLogActionIconStyle"
-      android:src="@drawable/ic_unblock"/>
+      android:src="@drawable/quantum_ic_unblock_vd_theme_24"/>
 
     <TextView
       style="@style/CallLogActionTextStyle"
@@ -232,7 +192,7 @@
 
     <ImageView
       style="@style/CallLogActionIconStyle"
-      android:src="@drawable/quantum_ic_info_outline_white_24"/>
+      android:src="@drawable/quantum_ic_info_outline_vd_theme_24"/>
 
     <TextView
       style="@style/CallLogActionTextStyle"
@@ -247,7 +207,7 @@
 
     <ImageView
       style="@style/CallLogActionIconStyle"
-      android:src="@drawable/quantum_ic_send_white_24"/>
+      android:src="@drawable/quantum_ic_send_vd_theme_24"/>
 
     <TextView
       style="@style/CallLogActionTextStyle"
diff --git a/java/com/android/dialer/app/res/layout/dialtacts_activity.xml b/java/com/android/dialer/app/res/layout/dialtacts_activity.xml
deleted file mode 100644
index f8e3000..0000000
--- a/java/com/android/dialer/app/res/layout/dialtacts_activity.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<android.support.design.widget.CoordinatorLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  xmlns:app="http://schemas.android.com/apk/res-auto"
-  android:id="@+id/dialtacts_mainlayout"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:background="?android:attr/colorBackground"
-  android:clipChildren="false"
-  android:clipToPadding="false"
-  android:focusable="true"
-  android:focusableInTouchMode="true"
-  android:orientation="vertical">
-
-  <FrameLayout
-    android:id="@+id/dialtacts_container"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:clipChildren="false">
-    <!-- The main contacts grid -->
-    <FrameLayout
-      android:id="@+id/dialtacts_frame"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:clipChildren="false"/>
-  </FrameLayout>
-
-  <android.support.design.widget.FloatingActionButton
-      android:id="@+id/floating_action_button"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_gravity="center_horizontal|bottom"
-      android:layout_marginBottom="@dimen/floating_action_button_margin_bottom"
-      android:contentDescription="@string/action_menu_dialpad_button"
-      android:src="@drawable/quantum_ic_dialpad_white_24"
-      app:elevation="@dimen/floating_action_button_translation_z"
-      app:backgroundTint="?android:attr/colorAccent"/>
-
-  <!-- Host container for the contact tile drag shadow -->
-  <FrameLayout
-    android:id="@+id/activity_overlay"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-    <ImageView
-      android:id="@+id/contact_tile_drag_shadow_overlay"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:importantForAccessibility="no"
-      android:visibility="gone"/>
-  </FrameLayout>
-
-</android.support.design.widget.CoordinatorLayout>
diff --git a/java/com/android/dialer/app/res/layout/lists_fragment.xml b/java/com/android/dialer/app/res/layout/lists_fragment.xml
deleted file mode 100644
index 6be1fe0..0000000
--- a/java/com/android/dialer/app/res/layout/lists_fragment.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/lists_frame"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:animateLayoutChanges="true">
-
-  <LinearLayout
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:orientation="vertical">
-
-    <!-- TODO: Apply background color to ActionBar instead of a FrameLayout. For now, this is
-         the easiest way to preserve correct pane scrolling and searchbar collapse/expand
-         behaviors. -->
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/action_bar_height_large"
-        android:background="?android:attr/colorPrimary"
-        android:elevation="@dimen/tab_elevation"/>
-
-    <com.android.contacts.common.list.ViewPagerTabs
-        android:id="@+id/lists_pager_header"
-        style="@style/DialtactsActionBarTabTextStyle"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/tab_height"
-        android:layout_gravity="top"
-        android:elevation="@dimen/tab_elevation"
-        android:orientation="horizontal"
-        android:textAllCaps="true"/>
-
-    <com.android.dialer.app.list.DialerViewPager
-        android:id="@+id/lists_pager"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"/>
-
-  </LinearLayout>
-
-  <!-- Sets android:importantForAccessibility="no" to avoid being announced when navigating with
-       talkback enabled. It will still be announced when user drag or drop contact onto it.
-       This is required since drag and drop event is only sent to views are visible when drag
-       starts. -->
-  <com.android.dialer.app.list.RemoveView
-      android:id="@+id/remove_view"
-      android:layout_width="match_parent"
-      android:layout_height="@dimen/tab_height"
-      android:layout_marginTop="@dimen/action_bar_height_large"
-      android:contentDescription="@string/remove_contact"
-      android:importantForAccessibility="no">
-
-    <LinearLayout
-        android:id="@+id/remove_view_content"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="?android:attr/colorPrimary"
-        android:gravity="center"
-        android:orientation="horizontal"
-        android:visibility="gone">
-
-      <ImageView
-          android:id="@+id/remove_view_icon"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_marginTop="8dp"
-          android:layout_marginBottom="8dp"
-          android:src="@drawable/ic_remove"
-          android:tint="?colorTextOnUnthemedDarkBackground"/>
-
-      <TextView
-          android:id="@+id/remove_view_text"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:text="@string/remove_contact"
-          android:textColor="?colorTextOnUnthemedDarkBackground"
-          style="@style/Dialer.TextAppearance.Primary"/>
-
-    </LinearLayout>
-
-  </com.android.dialer.app.list.RemoveView>
-
-</FrameLayout>
diff --git a/java/com/android/dialer/app/res/layout/phone_favorite_tile_view.xml b/java/com/android/dialer/app/res/layout/phone_favorite_tile_view.xml
deleted file mode 100644
index df7ce5c..0000000
--- a/java/com/android/dialer/app/res/layout/phone_favorite_tile_view.xml
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<view
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/contact_tile"
-    class="com.android.dialer.app.list.PhoneFavoriteSquareTileView"
-    android:paddingBottom="@dimen/contact_tile_divider_width"
-    android:paddingEnd="@dimen/contact_tile_divider_width">
-
-  <RelativeLayout
-      android:id="@+id/contact_favorite_card"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:focusable="true"
-      android:nextFocusRight="@+id/contact_tile_secondary_button">
-
-    <com.android.contacts.common.widget.LayoutSuppressingImageView
-        android:id="@+id/contact_tile_image"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:scaleType="centerCrop"/>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-      <View
-          android:layout_width="match_parent"
-          android:layout_height="0dp"
-          android:layout_weight="6"/>
-      <View
-          android:id="@+id/shadow_overlay"
-          android:layout_width="match_parent"
-          android:layout_height="0dp"
-          android:layout_weight="4"
-          android:background="@drawable/shadow_contact_photo"/>
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:paddingBottom="@dimen/contact_tile_text_bottom_padding"
-        android:paddingStart="@dimen/contact_tile_text_side_padding"
-        android:paddingEnd="@dimen/contact_tile_text_side_padding"
-        android:orientation="vertical">
-
-      <LinearLayout
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:gravity="center_vertical"
-          android:orientation="horizontal">
-        <com.android.dialer.widget.BidiTextView
-            android:id="@+id/contact_tile_name"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:ellipsize="marquee"
-            android:fadingEdge="horizontal"
-            android:fadingEdgeLength="3dip"
-            android:fontFamily="sans-serif-medium"
-            android:singleLine="true"
-            android:textAlignment="viewStart"
-            android:textColor="?colorTextOnUnthemedDarkBackground"
-            android:textSize="15sp"/>
-        <ImageView
-            android:id="@+id/contact_star_icon"
-            android:layout_width="@dimen/favorites_star_icon_size"
-            android:layout_height="@dimen/favorites_star_icon_size"
-            android:layout_marginStart="3dp"
-            android:src="@drawable/ic_star"
-            android:visibility="gone"/>
-      </LinearLayout>
-      <TextView
-          android:id="@+id/contact_tile_phone_type"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:ellipsize="marquee"
-          android:fadingEdge="horizontal"
-          android:fadingEdgeLength="3dip"
-          android:fontFamily="sans-serif"
-          android:gravity="center_vertical"
-          android:singleLine="true"
-          android:textAlignment="viewStart"
-          android:textColor="?colorTextOnUnthemedDarkBackground"
-          android:textSize="11sp"/>
-    </LinearLayout>
-
-    <View
-        android:id="@+id/contact_tile_push_state"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="?android:selectableItemBackground"
-        android:importantForAccessibility="no"/>
-
-    <!-- Wrap the ImageButton in a layout with a transparent background so the ripple has something to draw on -->
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@android:color/transparent">
-      <ImageButton
-          android:id="@id/contact_tile_secondary_button"
-          android:layout_width="@dimen/contact_tile_info_button_height_and_width"
-          android:layout_height="@dimen/contact_tile_info_button_height_and_width"
-          android:layout_gravity="top|end"
-          android:paddingTop="8dp"
-          android:paddingBottom="4dp"
-          android:paddingStart="4dp"
-          android:paddingEnd="4dp"
-          android:background="@drawable/item_background_material_borderless_dark"
-          android:contentDescription="@string/description_view_contact_detail"
-          android:scaleType="center"
-          android:src="@drawable/quantum_ic_more_vert_white_24"/>
-
-    </FrameLayout>
-
-  </RelativeLayout>
-</view>
diff --git a/java/com/android/dialer/app/res/layout/search_edittext.xml b/java/com/android/dialer/app/res/layout/search_edittext.xml
deleted file mode 100644
index aba5ba8..0000000
--- a/java/com/android/dialer/app/res/layout/search_edittext.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<view xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/search_view_container"
-  class="com.android.dialer.app.widget.SearchEditTextLayout"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:layout_marginTop="@dimen/search_top_margin"
-  android:layout_marginBottom="@dimen/search_bottom_margin"
-  android:layout_marginLeft="@dimen/search_margin_horizontal"
-  android:layout_marginRight="@dimen/search_margin_horizontal"
-  android:background="@drawable/rounded_corner"
-  android:elevation="@dimen/search_box_elevation"
-  android:theme="@style/DialtactsSearchBarThemeOverlay"
-  android:orientation="horizontal">
-
-  <RelativeLayout
-    android:id="@+id/search_box_collapsed"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="?android:attr/selectableItemBackground"
-    android:gravity="center_vertical">
-
-    <ImageView
-      android:id="@+id/search_magnifying_glass"
-      android:layout_width="@dimen/search_box_icon_size"
-      android:layout_height="@dimen/search_box_icon_size"
-      android:layout_marginStart="8dp"
-      android:layout_centerVertical="true"
-      android:importantForAccessibility="no"
-      android:scaleType="center"
-      android:src="@drawable/quantum_ic_search_vd_theme_24"
-      android:tint="?colorIcon"/>
-
-    <TextView
-      android:id="@+id/search_box_start_search"
-      android:layout_width="wrap_content"
-      android:layout_height="match_parent"
-      android:layout_toEndOf="@+id/search_magnifying_glass"
-      android:layout_toStartOf="@+id/voice_search_button"
-      android:layout_marginStart="8dp"
-      android:fontFamily="@string/search_font_family"
-      android:gravity="center_vertical"
-      android:hint="@string/dialer_hint_find_contact"
-      android:textSize="@dimen/search_collapsed_text_size"/>
-
-    <ImageView
-      android:id="@+id/voice_search_button"
-      android:layout_width="@dimen/search_box_icon_size"
-      android:layout_height="match_parent"
-      android:layout_toStartOf="@+id/dialtacts_options_menu_button"
-      android:background="?android:attr/selectableItemBackgroundBorderless"
-      android:clickable="true"
-      android:contentDescription="@string/description_start_voice_search"
-      android:scaleType="center"
-      android:src="@drawable/ic_mic_grey600"
-      android:tint="?colorIcon"/>
-
-    <ImageButton
-      android:id="@+id/dialtacts_options_menu_button"
-      android:layout_width="@dimen/search_box_icon_size"
-      android:layout_height="match_parent"
-      android:layout_alignParentEnd="true"
-      android:background="?android:attr/selectableItemBackgroundBorderless"
-      android:contentDescription="@string/action_menu_overflow_description"
-      android:scaleType="center"
-      android:src="@drawable/quantum_ic_more_vert_white_24"
-      android:tint="?colorIcon"/>
-  </RelativeLayout>
-
-  <include layout="@layout/search_bar_expanded"/>
-</view>
diff --git a/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml b/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml
deleted file mode 100644
index 3fa3be2..0000000
--- a/java/com/android/dialer/app/res/layout/speed_dial_fragment.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<FrameLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:clipChildren="false">
-
-  <FrameLayout
-    android:id="@+id/contact_tile_frame"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_alignParentLeft="true"
-    android:layout_alignParentTop="true"
-    android:paddingStart="@dimen/favorites_row_start_padding"
-    android:paddingEnd="@dimen/favorites_row_end_padding">
-    <com.android.dialer.app.list.PhoneFavoriteListView
-      android:id="@+id/contact_tile_list"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:paddingTop="@dimen/favorites_row_top_padding"
-      android:paddingBottom="@dimen/floating_action_button_list_bottom_padding"
-      android:clipToPadding="false"
-      android:divider="@null"
-      android:fadingEdge="none"
-      android:nestedScrollingEnabled="true"
-      android:numColumns="@integer/contact_tile_column_count_in_favorites"/>
-  </FrameLayout>
-
-  <com.android.dialer.widget.EmptyContentView
-    android:id="@+id/empty_list_view"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_gravity="center"
-    android:visibility="gone"/>
-
-</FrameLayout>
diff --git a/java/com/android/dialer/app/res/layout/view_numbers_to_import_fragment.xml b/java/com/android/dialer/app/res/layout/view_numbers_to_import_fragment.xml
deleted file mode 100644
index e821c06..0000000
--- a/java/com/android/dialer/app/res/layout/view_numbers_to_import_fragment.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:background="?android:attr/colorBackground"
-  android:orientation="vertical">
-
-  <ListView
-    android:id="@id/android:list"
-    android:layout_width="match_parent"
-    android:layout_height="0dp"
-    android:layout_weight="1"
-    android:divider="@null"
-    android:headerDividersEnabled="false"/>
-
-  <RelativeLayout
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_gravity="bottom"
-    android:paddingTop="8dp"
-    android:paddingBottom="8dp"
-    android:background="@android:color/white">
-
-    <Button
-      android:id="@+id/import_button"
-      style="@style/DialerFlatButtonStyle"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_marginEnd="@dimen/blocked_number_container_padding"
-      android:layout_alignParentEnd="true"
-      android:text="@string/blocked_call_settings_import_button"/>
-
-    <Button
-      android:id="@+id/cancel_button"
-      style="@style/DialerFlatButtonStyle"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_below="@id/import_description"
-      android:layout_toLeftOf="@id/import_button"
-      android:text="@android:string/cancel"/>
-
-  </RelativeLayout>
-
-</LinearLayout>
diff --git a/java/com/android/dialer/app/res/layout/voicemail_playback_layout.xml b/java/com/android/dialer/app/res/layout/voicemail_playback_layout.xml
index c352e02..92c0544 100644
--- a/java/com/android/dialer/app/res/layout/voicemail_playback_layout.xml
+++ b/java/com/android/dialer/app/res/layout/voicemail_playback_layout.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2011 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -16,11 +17,12 @@
 
 <LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_marginStart="64dp"
   android:layout_marginEnd="24dp"
-  android:background="?android:attr/colorBackgroundFloating"
+  android:background="@android:color/transparent"
   android:orientation="vertical">
 
   <TextView
@@ -79,8 +81,8 @@
       android:id="@+id/playback_speakerphone"
       style="@style/VoicemailPlaybackLayoutButtonStyle"
       android:contentDescription="@string/description_playback_speakerphone"
-      android:src="@drawable/quantum_ic_volume_down_white_24"
-      android:tint="?colorIcon"/>
+      android:src="@drawable/quantum_ic_volume_down_vd_theme_24"
+      app:tint="?colorIcon"/>
 
     <Space
       android:layout_width="0dp"
@@ -91,7 +93,7 @@
       android:id="@+id/playback_start_stop"
       style="@style/VoicemailPlaybackLayoutButtonStyle"
       android:contentDescription="@string/voicemail_play_start_pause"
-      android:src="@drawable/ic_play_arrow"/>
+      android:src="@drawable/quantum_ic_play_arrow_vd_theme_24"/>
 
     <Space
       android:layout_width="0dp"
@@ -102,8 +104,8 @@
       android:id="@+id/delete_voicemail"
       style="@style/VoicemailPlaybackLayoutButtonStyle"
       android:contentDescription="@string/call_log_trash_voicemail"
-      android:src="@drawable/quantum_ic_delete_white_24"
-      android:tint="?colorIcon"/>
+      android:src="@drawable/quantum_ic_delete_vd_theme_24"
+      app:tint="?colorIcon"/>
 
     <Space
       android:layout_width="0dp"
diff --git a/java/com/android/dialer/app/res/layout/widget_switch_compat.xml b/java/com/android/dialer/app/res/layout/widget_switch_compat.xml
new file mode 100644
index 0000000..8cf2393
--- /dev/null
+++ b/java/com/android/dialer/app/res/layout/widget_switch_compat.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2015 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<!-- Layout used by SwitchPreference for the switch widget style. This is inflated
+     inside android.R.layout.preference. -->
+<androidx.appcompat.widget.SwitchCompat
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    style="@style/Dialer.Switch"
+    android:id="@+id/switchWidget"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:focusable="false"
+    android:clickable="false"
+    android:background="@null"/>
diff --git a/java/com/android/dialer/app/res/menu/actionbar_delete.xml b/java/com/android/dialer/app/res/menu/actionbar_delete.xml
index b8aa381..bb3049b 100644
--- a/java/com/android/dialer/app/res/menu/actionbar_delete.xml
+++ b/java/com/android/dialer/app/res/menu/actionbar_delete.xml
@@ -19,7 +19,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
   <item
       android:id="@+id/action_bar_delete_menu_item"
-      android:icon="@drawable/quantum_ic_delete_white_24"
+      android:icon="@drawable/quantum_ic_delete_vd_theme_24"
       android:title="@string/delete"
       app:showAsAction="always"/>
-</menu>
\ No newline at end of file
+</menu>
diff --git a/java/com/android/dialer/app/res/menu/call_log_options.xml b/java/com/android/dialer/app/res/menu/call_log_options.xml
index e78b72e..abe869b 100644
--- a/java/com/android/dialer/app/res/menu/call_log_options.xml
+++ b/java/com/android/dialer/app/res/menu/call_log_options.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<!--
+     Copyright (C) 2013 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -13,10 +15,11 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
+<menu xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:android="http://schemas.android.com/apk/res/android">
   <item
     android:id="@+id/delete_all"
     android:orderInCategory="1"
-    android:showAsAction="never"
-    android:title="@string/call_log_delete_all"/>
+    android:title="@string/call_log_delete_all"
+    app:showAsAction="never" />
 </menu>
diff --git a/java/com/android/dialer/app/res/menu/dialtacts_options.xml b/java/com/android/dialer/app/res/menu/dialtacts_options.xml
deleted file mode 100644
index fcd520a..0000000
--- a/java/com/android/dialer/app/res/menu/dialtacts_options.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-
-  <item
-    android:id="@+id/menu_history"
-    android:icon="@drawable/ic_menu_history_lt"
-    android:title="@string/action_menu_call_history_description"/>
-  <item
-    android:id="@+id/menu_clear_frequents"
-    android:title="@string/menu_clear_frequents"/>
-  <item
-    android:id="@+id/menu_call_settings"
-    android:title="@string/dialer_settings_label"/>
-  <item
-    android:id="@+id/menu_simulator_submenu"
-    android:title="@string/simulator_submenu_label"/>
-</menu>
diff --git a/java/com/android/dialer/app/res/mipmap-anydpi/ic_launcher.xml b/java/com/android/dialer/app/res/mipmap-anydpi/ic_launcher.xml
new file mode 100644
index 0000000..b58c81f
--- /dev/null
+++ b/java/com/android/dialer/app/res/mipmap-anydpi/ic_launcher.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     SPDX-FileCopyrightText: 2022 The LineageOS Project
+     SPDX-License-Identifier: Apache-2.0
+-->
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@drawable/ic_launcher_background"/>
+    <foreground android:drawable="@drawable/ic_launcher_foreground"/>
+    <monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
+</adaptive-icon>
diff --git a/java/com/android/dialer/app/res/mipmap-hdpi/ic_launcher_phone.png b/java/com/android/dialer/app/res/mipmap-hdpi/ic_launcher_phone.png
deleted file mode 100644
index 0d1769a..0000000
--- a/java/com/android/dialer/app/res/mipmap-hdpi/ic_launcher_phone.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/mipmap-mdpi/ic_launcher_phone.png b/java/com/android/dialer/app/res/mipmap-mdpi/ic_launcher_phone.png
deleted file mode 100644
index 667fc5d..0000000
--- a/java/com/android/dialer/app/res/mipmap-mdpi/ic_launcher_phone.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/mipmap-xhdpi/ic_launcher_phone.png b/java/com/android/dialer/app/res/mipmap-xhdpi/ic_launcher_phone.png
deleted file mode 100644
index 2298d0d..0000000
--- a/java/com/android/dialer/app/res/mipmap-xhdpi/ic_launcher_phone.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/mipmap-xxhdpi/ic_launcher_phone.png b/java/com/android/dialer/app/res/mipmap-xxhdpi/ic_launcher_phone.png
deleted file mode 100644
index b269b5a..0000000
--- a/java/com/android/dialer/app/res/mipmap-xxhdpi/ic_launcher_phone.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/mipmap-xxxhdpi/ic_launcher_phone.png b/java/com/android/dialer/app/res/mipmap-xxxhdpi/ic_launcher_phone.png
deleted file mode 100644
index dbc76f3..0000000
--- a/java/com/android/dialer/app/res/mipmap-xxxhdpi/ic_launcher_phone.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/app/res/values-af/strings.xml b/java/com/android/dialer/app/res/values-af/strings.xml
index 0888327..f87e01a 100644
--- a/java/com/android/dialer/app/res/values-af/strings.xml
+++ b/java/com/android/dialer/app/res/values-af/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Foon</string>
-  <string name="launcherDialpadActivityLabel">Foonsleutelblok</string>
   <string name="callHistoryIconLabel">Oproepgeskiedenis</string>
   <string name="action_copy_number_text">Kopieer nommer</string>
-  <string name="copy_transcript_text">Kopieer transkripsie</string>
   <string name="action_edit_number_before_call">Wysig nommer voor oproep</string>
   <string name="call_log_delete_all">Vee oproepgeskiedenis uit</string>
   <string name="call_log_trash_voicemail">Vee stemboodskap uit</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Soek terugspeelposisie</string>
   <string name="action_menu_call_history_description">Oproepgeskiedenis</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Meer opsies</string>
-  <string name="action_menu_dialpad_button">sleutelblok</string>
   <string name="dialer_settings_label">Instellings</string>
-  <string name="simulator_submenu_label">Nabootser</string>
-  <string name="new_ui_launcher_shortcut_label">Skep nuwe UI-kortpad</string>
   <string name="description_entering_bulk_action_mode">Gaan tans grootmaathandelingmodus in</string>
   <string name="description_leaving_bulk_action_mode">Het grootmaathandelingmodus verlaat</string>
   <string name="description_selecting_bulk_action_mode">Het %1$s gekies</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Video-oproep.</string>
   <string name="description_start_voice_search">Begin stemsoektog</string>
   <string name="voicemail">Stemboodskap</string>
-  <string name="description_cancel_multi_select">Kanselleer grootmaathandelingmodus</string>
   <string name="voicemailMultiSelectDeleteConfirm">Vee uit</string>
   <string name="voicemailMultiSelectDeleteCancel">Kanselleer</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s gekies</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Stemsoektog is nie beskikbaar nie</string>
   <string name="dialer_hint_find_contact">Deursoek kontakte</string>
-  <string name="block_number_search_hint">Gee nommer of soek in kontakte</string>
   <string name="call_log_all_empty">Jou oproepgeskiedenis is leeg</string>
   <string name="call_log_all_empty_action">Maak \'n oproep</string>
   <string name="call_log_missed_empty">Jy het geen gemiste oproepe nie.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Oproepgeskiedenis</string>
   <string name="call_log_all_title">Alles</string>
   <string name="call_log_missed_title">Gemis</string>
-  <string name="tab_speed_dial">Spoedbel</string>
-  <string name="tab_history">Oproepgeskiedenis</string>
   <string name="tab_all_contacts">Kontakte</string>
-  <string name="tab_voicemail">Stemboodskap</string>
-  <string name="search_shortcut_call_number">Bel %s</string>
   <string name="search_shortcut_create_new_contact">Skep nuwe kontak</string>
   <string name="search_shortcut_add_to_contact">Voeg by \'n kontak</string>
   <string name="search_shortcut_send_sms_message">Stuur SMS</string>
   <string name="search_shortcut_make_video_call">Maak video-oproep</string>
-  <string name="search_shortcut_block_number">Blokkeer nommer</string>
-  <string name="speed_dial_empty">Daar is nog niemand op jou spoedbel nie</string>
-  <string name="speed_dial_empty_add_favorite_action">Voeg \'n gunsteling by</string>
-  <string name="remove_contact">Verwyder</string>
   <string name="select_all">Kies alles</string>
   <string name="call_log_action_video_call">Video-oproep</string>
-  <string name="call_log_action_set_up_video">Stel video-oproepe op</string>
-  <string name="call_log_action_invite_video">Nooi na video-oproep</string>
   <string name="call_log_action_send_message">Stuur \'n boodskap</string>
   <string name="call_log_action_details">Oproepbesonderhede</string>
   <string name="call_log_action_share_voicemail">Stuur na …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Oproepe</string>
   <string name="manage_blocked_numbers_label">Geblokkeerde nommers</string>
   <string name="voicemail_settings_label">Stemboodskap</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Oproepblokkering is tydelik af</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Oproepblokkering is gedeaktiveer omdat jy die afgelope 48 uur nooddienste van hierdie foon af gekontak het. Dit sal outomaties heraktiveer word sodra die 48-uurtydperk verstryk.</string>
-  <string name="import_send_to_voicemail_numbers_label">Voer nommers in</string>
-  <string name="blocked_call_settings_import_description">Jy het sommige bellers vroeër gemerk om outomaties via ander programme na stemboodskapdiens gestuur te word.</string>
-  <string name="blocked_call_settings_view_numbers_button">Bekyk nommers</string>
-  <string name="blocked_call_settings_import_button">Voer in</string>
-  <string name="description_blocked_number_list_delete">Deblokkeer nommer</string>
-  <string name="addBlockedNumber">Voeg nommer by</string>
-  <string name="block_number_footer_message_vvm">Oproepe van hierdie nommers af sal geblokkeer word en stemboodskappe sal outomaties uitgevee word.</string>
-  <string name="block_number_footer_message_no_vvm">Oproepe van hierdie nommers af sal geblokkeer word, maar die bellers sal dalk steeds vir jou stemboodskappe kan los.</string>
-  <string name="block_list">Geblokkeerde nommers</string>
-  <string name="alreadyBlocked">%1$s is reeds geblokkeer.</string>
   <string name="phone_account_settings_label">Oproeprekeninge</string>
-  <string name="permission_no_speeddial">Skakel die kontaktetoestemming aan om spoedbel te aktiveer.</string>
   <string name="permission_no_calllog">Skakel die foontoestemming aan om jou oproeprekord te sien.</string>
-  <string name="permission_no_search">Skakel die Kontakte-toestemmings aan om jou kontakte te deursoek.</string>
-  <string name="permission_place_call">Skakel die foontoestemming aan om \'n oproep te maak.</string>
   <string name="toast_cannot_write_system_settings">Foonprogram het nie toestemming om stelselinstellings te stel nie.</string>
   <string name="blocked_number_call_log_label">Geblokkeer</string>
   <string name="call_log_action_block_report_number">Blokkeer/gee strooipos aan</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Nie strooipos nie</string>
   <string name="call_log_action_unblock_number">Deblokkeer nommer</string>
   <string name="spam_number_call_log_label">Strooipos</string>
-  <string name="call_composer_connection_failed">%1$s is vanlyn en kan nie bereik word nie</string>
-  <string name="about_phone_label">Meer oor</string>
-  <string name="voicemail_transcription_branding_text">Deur Google getranskribeer</string>
-  <string name="voicemail_transcription_in_progress">Transkribeer tans …</string>
-  <string name="voicemail_transcription_failed">Transkripsie nie beskikbaar nie.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkripsie nie beskikbaar nie. Taal word nie ondersteun nie.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkripsie nie beskikbaar nie. Geen spraak bespeur nie.</string>
-  <string name="voicemail_donation_promo_title">Help om transkripsie-akkuraatheid te verbeter?</string>
-  <string name="voicemail_donation_promo_content">Laat Google dié en toekomstige stemboodskapboodskappe met transkripsies hersien. Hulle sal anoniem geberg word. Verander enige tyd instellings. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Ja, ek\'s in</string>
-  <string name="voicemail_donation_promo_opt_out">Nee, dankie</string>
-  <string name="voicemail_transcription_rating">Gradeer transkripsiegehalte</string>
-  <string name="voicemail_transcription_rating_thanks">Dankie vir jou terugvoer</string>
-  <string name="description_rating_good">Laaik</string>
-  <string name="description_rating_bad">Laaik nie</string>
-  <string name="view_conversation">Bekyk</string>
-  <string name="ec_data_deleted">Oproep geskrap. Bekyk en vee aanhegsels uit wat gedurende hierdie oproep in Boodskappe gedeel is.</string>
-  <string name="multiple_ec_data_deleted">Oproepe geskrap. Bekyk en vee aanhegsels uit wat gedurende oproepe in Boodskappe gedeel is.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-am/strings.xml b/java/com/android/dialer/app/res/values-am/strings.xml
index 99fdcd0..01b58aa 100644
--- a/java/com/android/dialer/app/res/values-am/strings.xml
+++ b/java/com/android/dialer/app/res/values-am/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ስልክ</string>
-  <string name="launcherDialpadActivityLabel">የስልክ የቁልፍ ሰሌዳ</string>
   <string name="callHistoryIconLabel">የጥሪ ታሪክ</string>
   <string name="action_copy_number_text">ቁጥር ቅዳ</string>
-  <string name="copy_transcript_text">ወደ ጽሑፍ የተገለበጠውን ቅዳ</string>
   <string name="action_edit_number_before_call">ከመደወል በፊት ቁጥር አርትዕ</string>
   <string name="call_log_delete_all">የጥሪ ታሪክን አጽዳ</string>
   <string name="call_log_trash_voicemail">የድምፅ መልዕክት ሰርዝ</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">የመልሶ ማጫወት ቦታ ይፈልጉ</string>
   <string name="action_menu_call_history_description">የጥሪ ታሪክ</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">ተጨማሪ አማራጮች</string>
-  <string name="action_menu_dialpad_button">ቁልፍ ሰሌዳ</string>
   <string name="dialer_settings_label">ቅንብሮች</string>
-  <string name="simulator_submenu_label">ማስመሰያ</string>
-  <string name="new_ui_launcher_shortcut_label">አዲስ የዩአይ አቋራጭ ፍጠር</string>
   <string name="description_entering_bulk_action_mode">ወደ የጅምላ እርምጃ ሁነታ በመግባት ላይ</string>
   <string name="description_leaving_bulk_action_mode">ከጅምላ እርምጃ ሁነታ ለቀው ወጥተዋል</string>
   <string name="description_selecting_bulk_action_mode">%1$s ተመርጧል</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">የቪዲዮ ጥሪ።</string>
   <string name="description_start_voice_search">በድምፅ ፍለጋ ይጀምሩ</string>
   <string name="voicemail">የድምፅ መልዕክት  </string>
-  <string name="description_cancel_multi_select">የጅምላ እርምጃ ሁነታ ይቅር</string>
   <string name="voicemailMultiSelectDeleteConfirm">ሰርዝ</string>
   <string name="voicemailMultiSelectDeleteCancel">ይቅር</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s ተመርጠዋል</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">የድምጽ ፍለጋ አይገኝም</string>
   <string name="dialer_hint_find_contact">ዕውቅያዎችን ፈልግ</string>
-  <string name="block_number_search_hint">ቁጥር ያክሉ ወይም እውቂያዎችን ይፈልጉ</string>
   <string name="call_log_all_empty">የእርስዎ የጥሪ ታሪክ ባዶ ነው</string>
   <string name="call_log_all_empty_action">ደውል</string>
   <string name="call_log_missed_empty">ምንም ያመለጡዎት ጥሪዎች የሉዎትም።</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">የስልክ ጥሪ ታሪክ</string>
   <string name="call_log_all_title">ሁሉም</string>
   <string name="call_log_missed_title">ያመለጡ</string>
-  <string name="tab_speed_dial">ፈጣን ደውል</string>
-  <string name="tab_history">የጥሪ ታሪክ</string>
   <string name="tab_all_contacts">ዕውቂያዎች</string>
-  <string name="tab_voicemail">የድምፅ መልዕክት</string>
-  <string name="search_shortcut_call_number">ደውል%s</string>
   <string name="search_shortcut_create_new_contact">አዲስ እውቂያ ይፍጠሩ</string>
   <string name="search_shortcut_add_to_contact">ወደ እውቂያ አክል</string>
   <string name="search_shortcut_send_sms_message">ኤስኤምኤስ ላክ</string>
   <string name="search_shortcut_make_video_call">የቪዲዮ ጥሪ አድርግ</string>
-  <string name="search_shortcut_block_number">ቁጥርን አግድ</string>
-  <string name="speed_dial_empty">በፈጥኖ መደወያ ላይ ገና ማንም የለዎትም</string>
-  <string name="speed_dial_empty_add_favorite_action">ተወዳጅ አክል</string>
-  <string name="remove_contact">አስወግድ</string>
   <string name="select_all">ሁሉንም ምረጥ</string>
   <string name="call_log_action_video_call">የቪዲዮ ጥሪ</string>
-  <string name="call_log_action_set_up_video">የቪዲዮ ጥሪ ያዋቅሩ</string>
-  <string name="call_log_action_invite_video">ወደ የቪዲዮ ጥሪ ይጋብዙ</string>
   <string name="call_log_action_send_message">መልዕክት ላክ</string>
   <string name="call_log_action_details">የጥሪ ዝርዝሮች</string>
   <string name="call_log_action_share_voicemail">ላክ ወደ…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">ጥሪዎች</string>
   <string name="manage_blocked_numbers_label">የታገዱ ቁጥሮች</string>
   <string name="voicemail_settings_label">የድምፅ መልዕክት</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">ጥሪን ማገድ ለጊዜው ተሰናክሏል</string>
-  <string name="blocked_numbers_disabled_emergency_desc">ባለፉት 48 ሰዓቶች ውስጥ ከዚህ ስልክ ሆነው የአስቸኳይ አደጋ አገልግሎቶችን ስላነጋገሩ ጥሪን ማገድ ተሰናክሏል። አንዴ የ48 ሰዓቱ ጊዜ ካለፈ በኋላ በራስ-ሰር ዳግም ይነቃል።</string>
-  <string name="import_send_to_voicemail_numbers_label">ቁጥሮችን አስመጣ</string>
-  <string name="blocked_call_settings_import_description">ከዚህ ቀደም አንዳንድ ደዋዮች በሌሎች መተግበሪያዎች በኩል በራስ-ሰር ወደ የድምፅ መልዕክት እንዲላኩ ምልክት አድርገባቸው ነበር።</string>
-  <string name="blocked_call_settings_view_numbers_button">ቁጥሮችን ይመልከቱ</string>
-  <string name="blocked_call_settings_import_button">አስመጣ</string>
-  <string name="description_blocked_number_list_delete">ቁጥርን አታግድ</string>
-  <string name="addBlockedNumber">ቁጥር አክል</string>
-  <string name="block_number_footer_message_vvm">ከእነዚህ ቁትሮች የሚመጡ ጥሪዎች ይታገዳሉ፣ እና የድምጽ መልዕክቶች በራስ-ሰር ይሰረዛሉ።</string>
-  <string name="block_number_footer_message_no_vvm">ከእነዚህ ቁትሮች የሚመጡ ጥሪዎች ይታገዳሉ፣ ነገር ግን አሁንም የድምጽ መልዕክቶችን ሊተዉልዎ ይችላሉ።</string>
-  <string name="block_list">የታገዱ ቁጥሮች</string>
-  <string name="alreadyBlocked">%1$s ቀድሞውኑ ታግዷል።</string>
   <string name="phone_account_settings_label">የመደወያ መለያዎች</string>
-  <string name="permission_no_speeddial">ፈጥኖ መደወያን ለማንቃት የእውቂያዎች ፍቃዱን ያብሩ።</string>
   <string name="permission_no_calllog">የጥሪ ምዝግብ ማስታወአሽዎን ለማየት የስልክ ፍቃዱን ያብሩ።</string>
-  <string name="permission_no_search">የእርስዎን እውቂያዎች ለመከታተል የእውቂያዎች ፍቃዶችን ያብሩ።</string>
-  <string name="permission_place_call">ስልክ ለመደወል የስልክ ፍቃዱን ያብሩ።</string>
   <string name="toast_cannot_write_system_settings">የስልክ መተግበሪያ ወደ የስርዓት ቅንብሮች የመጻፍ ፍቃድ የለውም።</string>
   <string name="blocked_number_call_log_label">ታግዷል</string>
   <string name="call_log_action_block_report_number">አይፈለጌ መልእክትን አግድ/ሪፖርት አድርግ</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">አይፈለጌ መልዕክት አይደለም</string>
   <string name="call_log_action_unblock_number">ቁጥርን አታግድ</string>
   <string name="spam_number_call_log_label">አይፈለጌ መልዕክት</string>
-  <string name="call_composer_connection_failed">%1$s ከመስመር ውጭ ነው እና ሊደረስበት አይችልም</string>
-  <string name="about_phone_label">ስለ</string>
-  <string name="voicemail_transcription_branding_text">በGoogle ወደ ጽሁፍ የተለወጠ</string>
-  <string name="voicemail_transcription_in_progress">ወደ ፅሁፍ በመገልበጥ ላይ…</string>
-  <string name="voicemail_transcription_failed">ወደ ጽሁፍ ግልባጭ የለም።</string>
-  <string name="voicemail_transcription_failed_language_not_supported">ወደ ጽሁፍ ግልባጭ የለም። ቋንቋ አይደገፍም።</string>
-  <string name="voicemail_transcription_failed_no_speech">ወደ ጽሁፍ ግልባጭ የለም። ምንም ንግግር አልተደመጠም።</string>
-  <string name="voicemail_donation_promo_title">ወደ ጽሁፍ ግልበጣን ጥራት ለማሻሻል ያግዛሉ?</string>
-  <string name="voicemail_donation_promo_content">Google ይህን እና የወደፊት የድምጽ መልዕክቶችን ወደ ጽሁፍ ግለበጣን በመጠቀም እንዲገመግም ይፍቀዱ። የማንነታቸው ሳይገለጽ ይቀመጣሉ። ቅንብሮችን በማንኛውም ጊዜ ይቀይሩ። %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">አዎ ገብቼያለሁ</string>
-  <string name="voicemail_donation_promo_opt_out">አይ አመሰግናለሁ</string>
-  <string name="voicemail_transcription_rating">ወደ ጽሁፍ የመገልበጥ ጥራትን ደረጃ ይስጡ</string>
-  <string name="voicemail_transcription_rating_thanks">ለግብረመልስዎ እናመሰግናለን</string>
-  <string name="description_rating_good">ውደድ</string>
-  <string name="description_rating_bad">አይውደዱ</string>
-  <string name="view_conversation">አሳይ</string>
-  <string name="ec_data_deleted">ጥሪ ተሰርዟል። በዚህ ጥሪ ወቅት በመልዕክቶች ውስጥ የተጋሩ አባሪዎችን ይመልከቱ እንዲሁም ይሰርዙ።</string>
-  <string name="multiple_ec_data_deleted">ጥሪ ተሰርዟል። በዚህ ጥሪ ወቅት በመልዕክቶች ውስጥ የተጋሩ አባሪዎችን ይመልከቱ እንዲሁም ይሰርዙ።</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ar/cm_strings.xml b/java/com/android/dialer/app/res/values-ar/cm_strings.xml
new file mode 100644
index 0000000..795004f
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-ar/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">قيد الاتصال</string>
+    <string name="incall_enable_dnd_title">تمكين عدم الإزعاج أثناء المكالمات</string>
+    <string name="incall_vibrate_outgoing_title">اهتزاز عند الرد</string>
+    <string name="incall_vibrate_call_waiting_title">الاهتزاز أثناء انتظار المكالمة</string>
+    <string name="incall_vibrate_hangup_title">الاهتزاز عند إنهاء المكالمة</string>
+    <string name="incall_vibrate_45_title">الاهتزاز كل دقيقة</string>
+    <string name="incall_vibrate_45_summary">الاهتزاز كل 45 ثانية من كل دقيقة أثناء المكالمات الصادرة</string>
+    <string name="incall_dnd_dialog_message">لتمكين الرجاء عدم الإزعاج، يجب منح تطبيق الهاتف الإذن بالتحكم في حالة عدم الإزعاج.\n الرجاء السماح بذلك.</string>
+    <string name="allow">السماح</string>
+    <string name="deny">منع</string>
+    <string name="call_recording_category_title">تسجيل المكالمة</string>
+    <string name="call_recording_format">تنسيق الصوت</string>
+    <string name="call_via">الاتصال عبر</string>
+    <string name="call_via_dialog_title">الاتصال عبر</string>
+    <string name="call_log_stats_title">الإحصائيات</string>
+    <string name="action_menu_helplines">خطوط المساعدة</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-ar/strings.xml b/java/com/android/dialer/app/res/values-ar/strings.xml
index b14f70b..6bc1249 100644
--- a/java/com/android/dialer/app/res/values-ar/strings.xml
+++ b/java/com/android/dialer/app/res/values-ar/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">الهاتف</string>
-  <string name="launcherDialpadActivityLabel">لوحة مفاتيح الهاتف</string>
   <string name="callHistoryIconLabel">سجل المكالمات</string>
   <string name="action_copy_number_text">نسخ الرقم</string>
-  <string name="copy_transcript_text">نسخ الكتابة الصوتية</string>
   <string name="action_edit_number_before_call">تعديل الرقم قبل الاتصال</string>
   <string name="call_log_delete_all">محو سجل المكالمات</string>
   <string name="call_log_trash_voicemail">حذف رسالة البريد الصوتي</string>
@@ -39,10 +37,7 @@
   <string name="description_playback_seek">طلب موضع تشغيل</string>
   <string name="action_menu_call_history_description">سجل المكالمات</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">مزيد من الخيارات</string>
-  <string name="action_menu_dialpad_button">لوحة المفاتيح</string>
   <string name="dialer_settings_label">الإعدادات</string>
-  <string name="simulator_submenu_label">المحاكي</string>
-  <string name="new_ui_launcher_shortcut_label">إنشاء اختصار للواجهة الجديدة</string>
   <string name="description_entering_bulk_action_mode">يتم الدخول إلى وضع الإجراء المجمَّع</string>
   <string name="description_leaving_bulk_action_mode">تمت مغادرة وضع الإجراء المجمَّع</string>
   <string name="description_selecting_bulk_action_mode">تم تحديد %1$s</string>
@@ -53,7 +48,6 @@
   <string name="description_video_call">مكالمة فيديو.</string>
   <string name="description_start_voice_search">بدء البحث الصوتي</string>
   <string name="voicemail">البريد الصوتي</string>
-  <string name="description_cancel_multi_select">إلغاء وضع الإجراءات المجمَّع</string>
   <string name="voicemailMultiSelectDeleteConfirm">حذف</string>
   <string name="voicemailMultiSelectDeleteCancel">إلغاء</string>
   <string name="voicemailMultiSelectActionBarTitle">تم تحديد %1$s</string>
@@ -71,7 +65,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">البحث الصوتي غير متاح</string>
   <string name="dialer_hint_find_contact">البحث في جهات الاتصال</string>
-  <string name="block_number_search_hint">إضافة رقم أو البحث في جهات الاتصال</string>
   <string name="call_log_all_empty">سجل مكالماتك فارغ</string>
   <string name="call_log_all_empty_action">إجراء مكالمة</string>
   <string name="call_log_missed_empty">ليست لديك أي مكالمات لم يتم الرد عليها.</string>
@@ -79,23 +72,13 @@
   <string name="call_log_activity_title">سجل المكالمات</string>
   <string name="call_log_all_title">الكل</string>
   <string name="call_log_missed_title">فائتة</string>
-  <string name="tab_speed_dial">اتصال سريع</string>
-  <string name="tab_history">سجل المكالمات</string>
   <string name="tab_all_contacts">جهات الاتصال</string>
-  <string name="tab_voicemail">البريد الصوتي</string>
-  <string name="search_shortcut_call_number">الاتصال بالرقم %s</string>
   <string name="search_shortcut_create_new_contact">إنشاء جهة اتصال جديدة</string>
   <string name="search_shortcut_add_to_contact">إضافة إلى جهة اتصال</string>
   <string name="search_shortcut_send_sms_message">‏إرسال رسالة قصيرة SMS</string>
   <string name="search_shortcut_make_video_call">إجراء مكالمة فيديو</string>
-  <string name="search_shortcut_block_number">حظر الرقم</string>
-  <string name="speed_dial_empty">لم تتم إضافة أي جهة اتصال إلى قائمة الاتصال السريع حتى الآن</string>
-  <string name="speed_dial_empty_add_favorite_action">إضافة مفضلة</string>
-  <string name="remove_contact">إزالة</string>
   <string name="select_all">تحديد الكل</string>
   <string name="call_log_action_video_call">مكالمة فيديو</string>
-  <string name="call_log_action_set_up_video">إعداد مكالمات الفيديو</string>
-  <string name="call_log_action_invite_video">دعوة إلى مكالمة فيديو</string>
   <string name="call_log_action_send_message">إرسال رسالة</string>
   <string name="call_log_action_details">تفاصيل المكالمة</string>
   <string name="call_log_action_share_voicemail">إرسال إلى ...</string>
@@ -134,23 +117,8 @@
   <string name="call_settings_label">المكالمات</string>
   <string name="manage_blocked_numbers_label">الأرقام المحظورة</string>
   <string name="voicemail_settings_label">البريد الصوتي</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">حظر المكالمات غير مفعّل مؤقتًا</string>
-  <string name="blocked_numbers_disabled_emergency_desc">تم إيقاف حظر المكالمات لأنك اتصلت بخدمات الطوارئ خلال 48 ساعة ماضية. وستتم إعادة تمكينه تلقائيًا بعد انتهاء هذه الفترة التي تبلغ 48 ساعة.</string>
-  <string name="import_send_to_voicemail_numbers_label">استيراد الأرقام</string>
-  <string name="blocked_call_settings_import_description">سبق لك تعيين بعض المتصلين على الإرسال تلقائيًا للبريد الصوتي عبر التطبيقات الأخرى.</string>
-  <string name="blocked_call_settings_view_numbers_button">عرض الأرقام</string>
-  <string name="blocked_call_settings_import_button">استيراد</string>
-  <string name="description_blocked_number_list_delete">إلغاء حظر الرقم</string>
-  <string name="addBlockedNumber">إضافة رقم</string>
-  <string name="block_number_footer_message_vvm">سيتم حظر المكالمات من هذه الأرقام وسيتم حذف الرسائل الصوتية تلقائيًا.</string>
-  <string name="block_number_footer_message_no_vvm">سيتم حظر المكالمات من هذه الأرقام، إلا أنه قد يظل بإمكانك ترك رسائلك الصوتية.</string>
-  <string name="block_list">الأرقام المحظورة</string>
-  <string name="alreadyBlocked">تم حظر %1$s.</string>
   <string name="phone_account_settings_label">حسابات الاتصال</string>
-  <string name="permission_no_speeddial">لتمكين الاتصال السريع، شغِّل إذن جهات الاتصال.</string>
   <string name="permission_no_calllog">للاطلاع على سجل المكالمات، شغِّل إذن الهاتف.</string>
-  <string name="permission_no_search">للبحث عن جهات الاتصال، عليك تشغيل أذونات جهات الاتصال.</string>
-  <string name="permission_place_call">لإجراء مكالمة، شغِّل إذن الهاتف.</string>
   <string name="toast_cannot_write_system_settings">ليس لدى تطبيق الهاتف إذن لتعديل إعدادات النظام.</string>
   <string name="blocked_number_call_log_label">محظور </string>
   <string name="call_log_action_block_report_number">حظر/إبلاغ عن رقم غير مرغوب فيه</string>
@@ -158,22 +126,4 @@
   <string name="call_log_action_remove_spam">ليس رقمًا غير مرغوب فيه</string>
   <string name="call_log_action_unblock_number">إلغاء حظر الرقم</string>
   <string name="spam_number_call_log_label">تعليق غير مرغوب فيه</string>
-  <string name="call_composer_connection_failed">%1$s غير متصل ولا يمكن الوصول إليه</string>
-  <string name="about_phone_label">حول</string>
-  <string name="voicemail_transcription_branding_text">‏تم النسخ بواسطة Google</string>
-  <string name="voicemail_transcription_in_progress">جارٍ تحويل الصوت إلى نص…</string>
-  <string name="voicemail_transcription_failed">النص غير متاح.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">النص غير متاح. اللغة غير مدعومة.</string>
-  <string name="voicemail_transcription_failed_no_speech">النص غير متاح. لم يتم اكتشاف أي كلام.</string>
-  <string name="voicemail_donation_promo_title">هل تريد المساعدة في تحسين دقة ميزة تحويل الصوت إلى نص؟</string>
-  <string name="voicemail_donation_promo_content">‏اسمح لخدمات Google بمراجعة رسالة البريد الصوتي هذه، بالإضافة إلى رسائل البريد الصوتي المستقبلية التي تحتوي على نصوص. سيتم تخزين الرسائل بدون تحديد هوية مالكها. يمكنك تغيير الإعدادات في أي وقت. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">نعم، موافق</string>
-  <string name="voicemail_donation_promo_opt_out">لا، شكرًا</string>
-  <string name="voicemail_transcription_rating">تقييم جودة تسجيل النص الصوتي</string>
-  <string name="voicemail_transcription_rating_thanks">شكرًا لتعليقاتك</string>
-  <string name="description_rating_good">أعجبني</string>
-  <string name="description_rating_bad">لم يُعجبني</string>
-  <string name="view_conversation">عرض</string>
-  <string name="ec_data_deleted">‏تم حذف المكالمة. يمكنك عرض وحذف المرفقات التي تمت مشاركتها أثناء هذه المكالمة في Messages.</string>
-  <string name="multiple_ec_data_deleted">‏تم حذف المكالمة. يمكنك عرض وحذف المرفقات التي تمت مشاركتها أثناء إجراء المكالمات في Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ast-rES/cm_strings.xml b/java/com/android/dialer/app/res/values-ast-rES/cm_strings.xml
new file mode 100644
index 0000000..d3dc960
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-ast-rES/cm_strings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Nes llamaes</string>
+    <string name="incall_enable_dnd_title">Activar «Nun molestar» nes llamaes</string>
+    <string name="incall_vibrate_outgoing_title">Vibrar al contestar</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrar cuando heba llamaes n\'espera</string>
+    <string name="incall_vibrate_hangup_title">Vibrar al colgar</string>
+    <string name="incall_vibrate_45_title">Vibrar cada minutu</string>
+    <string name="incall_vibrate_45_summary">Nes llamaes salientes, vibra nel segundu 45 de cada minutu</string>
+    <string name="incall_dnd_dialog_message">P\'activar el mou «Nun molestar», l\'aplicación «Teléfonu» tien de tener permisu pa controlar l\'estáu d\'esti mou.\nConcéde-y el permisu.</string>
+    <string name="allow">Permitir</string>
+    <string name="deny">Negar</string>
+    <string name="call_recording_category_title">Grabación de llamaes</string>
+    <string name="call_recording_format">Formatu del audiu</string>
+    <string name="call_via">Llamar per</string>
+    <string name="call_via_dialog_title">Llamada per\u2026</string>
+    <string name="call_log_stats_title">Estadístiques</string>
+    <string name="action_menu_helplines">Llinies d\'ayuda</string>
+    <string name="default_dialer_action">Predeterminar</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-az/cm_strings.xml b/java/com/android/dialer/app/res/values-az/cm_strings.xml
new file mode 100644
index 0000000..6c4419a
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-az/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Zəng ərzində</string>
+    <string name="incall_enable_dnd_title">Zəng əsnasında Narahat Etmə rejimini fəallaşdır</string>
+    <string name="incall_vibrate_outgoing_title">Cavab verәrkәn titrət</string>
+    <string name="incall_vibrate_call_waiting_title">Zəng gözlədiləndə titrət</string>
+    <string name="incall_vibrate_hangup_title">Söndürüləndə titrət</string>
+    <string name="incall_vibrate_45_title">Hər dəqiqə titrət</string>
+    <string name="incall_vibrate_45_summary">Gedən zənglərin hər dəqiqəsinin 45-ci saniyəsində titrəyər</string>
+    <string name="incall_dnd_dialog_message">Narahat etməyin rejimini fəallaşdırmaq üçün, Telefon tətbiqi, Narahat etməyin statusuna nəzarət edə bilmə icazəsinə sahib olmalıdır.\nLütfən buna icazə verin.</string>
+    <string name="allow">İcazə ver</string>
+    <string name="deny">Rədd et</string>
+    <string name="call_recording_category_title">Zəng səsyazması</string>
+    <string name="call_recording_format">Səs formatı</string>
+    <string name="call_via">Zəng et</string>
+    <string name="call_via_dialog_title">Zəng et\u2026</string>
+    <string name="call_log_stats_title">Statistikalar</string>
+    <string name="action_menu_helplines">Yardım xətti</string>
+    <string name="default_dialer_text">İstifadə etmək üçün \"Nömrəyığan\"ı ilkin telefon tətbiqi kimi təyin etməlisiniz.</string>
+    <string name="default_dialer_action">İlkin olaraq təyin et</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-az/strings.xml b/java/com/android/dialer/app/res/values-az/strings.xml
index f8881e0..dbfe2a5 100644
--- a/java/com/android/dialer/app/res/values-az/strings.xml
+++ b/java/com/android/dialer/app/res/values-az/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Telefon Klaviaturası</string>
   <string name="callHistoryIconLabel">Zəng tarixçəsi</string>
   <string name="action_copy_number_text">Nömrəni kopyalayın</string>
-  <string name="copy_transcript_text">Transkripsiyanı kopyalayın</string>
   <string name="action_edit_number_before_call">Zəng etmədən öncə nömrəyə düzəliş edin</string>
   <string name="call_log_delete_all">Zəng tarixçəsini təmizlə</string>
   <string name="call_log_trash_voicemail">Səsli məktubu silin</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Oxutma pozisiyası axtarın</string>
   <string name="action_menu_call_history_description">Zəng tarixçəsi</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Daha çox seçim</string>
-  <string name="action_menu_dialpad_button">klaviatura</string>
   <string name="dialer_settings_label">Ayarlar</string>
-  <string name="simulator_submenu_label">Stimulyator</string>
-  <string name="new_ui_launcher_shortcut_label">Yeni İİ Qısayolu yaradın</string>
   <string name="description_entering_bulk_action_mode">Toplu əməliyyat rejiminə daxil olunur</string>
   <string name="description_leaving_bulk_action_mode">Toplu əməliyyat rejimi tərk edilir</string>
   <string name="description_selecting_bulk_action_mode">%1$s seçildi</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Video çağrı.</string>
   <string name="description_start_voice_search">Səs axtarışına başlayın</string>
   <string name="voicemail">Səsli poçt</string>
-  <string name="description_cancel_multi_select">Qrup əməliyyatları rejimini ləğv edin</string>
   <string name="voicemailMultiSelectDeleteConfirm">Silin</string>
   <string name="voicemailMultiSelectDeleteCancel">Ləğv edin</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s seçilib</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Səsli axtarış mövcud deyil</string>
   <string name="dialer_hint_find_contact">Kontakt axtarın</string>
-  <string name="block_number_search_hint">Nömrə əlavə edin və ya kontaktlarda axtarın</string>
   <string name="call_log_all_empty">Zəng tarixçəniz boşdur</string>
   <string name="call_log_all_empty_action">Zəng edin</string>
   <string name="call_log_missed_empty">Buraxılmış heç bir zənginiz yoxdur.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Çağrı Tarixçəsi</string>
   <string name="call_log_all_title">Bütün</string>
   <string name="call_log_missed_title">Buraxılmış</string>
-  <string name="tab_speed_dial">Sürətli nömrə yığımı</string>
-  <string name="tab_history">Zəng Tarixçəsi</string>
   <string name="tab_all_contacts">Kontaktlar</string>
-  <string name="tab_voicemail">Səsli poçt</string>
-  <string name="search_shortcut_call_number">%s zəng edin</string>
   <string name="search_shortcut_create_new_contact">Yeni kontakt yaradın</string>
   <string name="search_shortcut_add_to_contact">Kontakta əlavə edin</string>
   <string name="search_shortcut_send_sms_message">SMS göndərin</string>
   <string name="search_shortcut_make_video_call">Video zəng edin</string>
-  <string name="search_shortcut_block_number">Nömrəni blok edin</string>
-  <string name="speed_dial_empty">Hələ sürətli zəng siyahınızda hec kim yoxdur</string>
-  <string name="speed_dial_empty_add_favorite_action">Sevimlilərə əlavə edin</string>
-  <string name="remove_contact">Yığışdır</string>
   <string name="select_all">Hamısını seçin</string>
   <string name="call_log_action_video_call">Video zəng</string>
-  <string name="call_log_action_set_up_video">Video zəngi quraşdırın</string>
-  <string name="call_log_action_invite_video">Video zəngə dəvət edin</string>
   <string name="call_log_action_send_message">Mesaj göndərin</string>
   <string name="call_log_action_details">Zəng detalları</string>
   <string name="call_log_action_share_voicemail">Bu şəxsə göndərin:</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Zənglər</string>
   <string name="manage_blocked_numbers_label">Blok edilmiş nömrələr</string>
   <string name="voicemail_settings_label">Səsli e-məktub</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Çağrının blok edilməsi müvəqqəti olaraq deaktiv edilib</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Son 48 saat ərzində bu telefondan təcili yardım xidmətləri ilə əlaqə saxladığınız üçün Çağrı Bloklanması deaktiv edildi. 48 saatlıq müddət başa çatdıqda avtomatik olaraq yenidən aktiv ediləcək.</string>
-  <string name="import_send_to_voicemail_numbers_label">Nömrələri import edin</string>
-  <string name="blocked_call_settings_import_description">Əvvəlcədən qeyd etdiyiniz bəzi zəng edənlər digər tətbiqlərin vasiyəsilə avtomatik olaraq səsli mesaja yönləndiriləcək.</string>
-  <string name="blocked_call_settings_view_numbers_button">Rəqəmlərə baxın</string>
-  <string name="blocked_call_settings_import_button">İmport</string>
-  <string name="description_blocked_number_list_delete">Nömrəni blokdan çıxarın</string>
-  <string name="addBlockedNumber">Nömrə əlavə edin</string>
-  <string name="block_number_footer_message_vvm">Bu nömrələrdən zənglər blok ediləcək və səsli məktublar avtomatik silinəcək.</string>
-  <string name="block_number_footer_message_no_vvm">Bu nömrələrdən zənglər blok ediləcək, amma yenə də səsli məktub qoya bilərsiniz.</string>
-  <string name="block_list">Bloklanmış nömrələr</string>
-  <string name="alreadyBlocked">%1$s artıq bloklanıb.</string>
   <string name="phone_account_settings_label">Hesabların çağrılması</string>
-  <string name="permission_no_speeddial">Sürətli yığımı aktivləşdirmək üçün, Kontakt icazələrini aktivləşdirin.</string>
   <string name="permission_no_calllog">Çağrı jurnalınızı görmək üçün Telefon icazəsini aktivləşdirin.</string>
-  <string name="permission_no_search">Kontaktlarınızı axtarmaq üçün, Kontakt icazələrini aktiv edin.</string>
-  <string name="permission_place_call">Zəng etmək üçün, Telefon icazəsini aktivləşdirin.</string>
   <string name="toast_cannot_write_system_settings">Telefon tətbiqinin sistem ayarlarına yazmaq icazəsi yoxdur.</string>
   <string name="blocked_number_call_log_label">Bloklanmış</string>
   <string name="call_log_action_block_report_number">Spamı blok edin/bildirin</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Spam deyil</string>
   <string name="call_log_action_unblock_number">Nömrəni blokdan çıxarın</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s oflayn olduğu üçün əlaqə saxlamaq mümkün deyil</string>
-  <string name="about_phone_label">Haqqında</string>
-  <string name="voicemail_transcription_branding_text">Google tərəfindən kopyalandı</string>
-  <string name="voicemail_transcription_in_progress">Transkripsiya edilir...</string>
-  <string name="voicemail_transcription_failed">Transkripsiya əlçatan deyil.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkripsiya əlçatan deyil. Dil dəstəklənmir.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkripsiya əlçatan deyil. Nitq seçilməyib.</string>
-  <string name="voicemail_donation_promo_title">Transkripsiya dəqiqliyi təkmilləşdirilsin?</string>
-  <string name="voicemail_donation_promo_content">Google\'a transkripsiyası olan bu və gələcək səsli e-poçt mesajlarını nəzərdən keçirmək icazəsi verin. Onlar anonim şəkildə saxlanılacaq. İstənilan vaxt Ayarları dəyişin. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Bəli, razıyam</string>
-  <string name="voicemail_donation_promo_opt_out">Xeyr, təşəkkürlər</string>
-  <string name="voicemail_transcription_rating">Keyfiyyəti qiymətləndirin</string>
-  <string name="voicemail_transcription_rating_thanks">Rəyiniz üçün təşəkkür edirik</string>
-  <string name="description_rating_good">Bəyənin</string>
-  <string name="description_rating_bad">Bəyənməyin</string>
-  <string name="view_conversation">Baxın</string>
-  <string name="ec_data_deleted">Zəng silindi. Bu zəng zamanı paylaşılan qoşmalara Mesajlaşma tətbiqində baxın və silin.</string>
-  <string name="multiple_ec_data_deleted">Zənglər silindi. Bu zənglər zamanı paylaşılan qoşmalara Mesajlaşma tətbiqində baxın və silin.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
index 2381880..f51b5d0 100644
--- a/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/app/res/values-b+sr+Latn/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Telefonska tastatura</string>
   <string name="callHistoryIconLabel">Istorija poziva</string>
   <string name="action_copy_number_text">Kopiraj broj</string>
-  <string name="copy_transcript_text">Kopiraj transkripciju</string>
   <string name="action_edit_number_before_call">Izmeni broj pre poziva</string>
   <string name="call_log_delete_all">Obriši istoriju poziva</string>
   <string name="call_log_trash_voicemail">Izbriši govornu poruku</string>
@@ -36,10 +34,7 @@
   <string name="description_playback_seek">Traženje pozicije u reprodukciji</string>
   <string name="action_menu_call_history_description">Istorija poziva</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Još opcija</string>
-  <string name="action_menu_dialpad_button">tastatura</string>
   <string name="dialer_settings_label">Podešavanja</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Napravite prečicu za novi UI</string>
   <string name="description_entering_bulk_action_mode">Ulazite u režim grupnih radnji</string>
   <string name="description_leaving_bulk_action_mode">Izašli ste iz režima grupnih radnji</string>
   <string name="description_selecting_bulk_action_mode">Izabrano je %1$s</string>
@@ -50,7 +45,6 @@
   <string name="description_video_call">Video poziv.</string>
   <string name="description_start_voice_search">Pokretanje glasovne pretrage</string>
   <string name="voicemail">Govorna pošta</string>
-  <string name="description_cancel_multi_select">Otkažite režim grupnih radnji</string>
   <string name="voicemailMultiSelectDeleteConfirm">Izbriši</string>
   <string name="voicemailMultiSelectDeleteCancel">Otkaži</string>
   <string name="voicemailMultiSelectActionBarTitle">Izabranih: %1$s</string>
@@ -65,7 +59,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Glasovna pretraga nije dostupna</string>
   <string name="dialer_hint_find_contact">Pretraži kontakte</string>
-  <string name="block_number_search_hint">Dodajte broj ili pretražite kontakte</string>
   <string name="call_log_all_empty">Istorija poziva je prazna</string>
   <string name="call_log_all_empty_action">Pozovi</string>
   <string name="call_log_missed_empty">Nemate nijedan propušten poziv.</string>
@@ -73,23 +66,13 @@
   <string name="call_log_activity_title">Istorija poziva</string>
   <string name="call_log_all_title">Svi</string>
   <string name="call_log_missed_title">Propušteni</string>
-  <string name="tab_speed_dial">Brzo biranje</string>
-  <string name="tab_history">Istorija poziva</string>
   <string name="tab_all_contacts">Kontakti</string>
-  <string name="tab_voicemail">Govorna pošta</string>
-  <string name="search_shortcut_call_number">Pozovi %s</string>
   <string name="search_shortcut_create_new_contact">Napravi novi kontakt</string>
   <string name="search_shortcut_add_to_contact">Dodaj u kontakt</string>
   <string name="search_shortcut_send_sms_message">Pošalji SMS</string>
   <string name="search_shortcut_make_video_call">Uputi video poziv</string>
-  <string name="search_shortcut_block_number">Blokiraj broj</string>
-  <string name="speed_dial_empty">Nemate nijedan kontakt na brzom biranju</string>
-  <string name="speed_dial_empty_add_favorite_action">Dodaj omiljen kontakt</string>
-  <string name="remove_contact">Ukloni</string>
   <string name="select_all">Izaberi sve</string>
   <string name="call_log_action_video_call">Video poziv</string>
-  <string name="call_log_action_set_up_video">Podesi video pozive</string>
-  <string name="call_log_action_invite_video">Pozovi u video poziv</string>
   <string name="call_log_action_send_message">Pošalji poruku</string>
   <string name="call_log_action_details">Detalji poziva</string>
   <string name="call_log_action_share_voicemail">Pošalji u…</string>
@@ -128,23 +111,8 @@
   <string name="call_settings_label">Pozivi</string>
   <string name="manage_blocked_numbers_label">Blokirani brojevi</string>
   <string name="voicemail_settings_label">Govorna pošta</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blokiranje poziva je privremeno isključeno</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Blokiranje poziva je onemogućeno zato što ste kontaktirali službe za pomoć u hitnim slučajevima sa ovog telefona u poslednjih 48 sati. Automatski će biti ponovo omogućeno kada istekne period od 48 sati.</string>
-  <string name="import_send_to_voicemail_numbers_label">Uvezi brojeve</string>
-  <string name="blocked_call_settings_import_description">Ranije ste označili neke pozivaoce koje automatski treba preusmeriti na govornu poštu preko drugih aplikacija.</string>
-  <string name="blocked_call_settings_view_numbers_button">Prikaži brojeve</string>
-  <string name="blocked_call_settings_import_button">Uvezi</string>
-  <string name="description_blocked_number_list_delete">Deblokiraj broj</string>
-  <string name="addBlockedNumber">Dodaj broj</string>
-  <string name="block_number_footer_message_vvm">Pozivi sa ovih brojeva će biti blokirani i poruke govorne pošte će se automatski brisati.</string>
-  <string name="block_number_footer_message_no_vvm">Pozivi sa ovih brojeva će biti blokirani, ali pozivaoci sa ovih brojeva će i dalje moći da vam ostavljaju poruke govorne pošte.</string>
-  <string name="block_list">Blokirani brojevi</string>
-  <string name="alreadyBlocked">%1$s je već blokiran.</string>
   <string name="phone_account_settings_label">Nalozi za pozivanje</string>
-  <string name="permission_no_speeddial">Da biste omogućili brzo biranje, uključite dozvolu za Kontakte.</string>
   <string name="permission_no_calllog">Da biste videli evidenciju poziva, uključite dozvolu za Telefon.</string>
-  <string name="permission_no_search">Da biste pretražili kontakte, uključite dozvole za Kontakte.</string>
-  <string name="permission_place_call">Da biste uputili poziv, uključite dozvolu za Telefon.</string>
   <string name="toast_cannot_write_system_settings">Aplikacija Telefon nema dozvolu za upisivanje u sistemska podešavanja.</string>
   <string name="blocked_number_call_log_label">Blokirano</string>
   <string name="call_log_action_block_report_number">Blokiraj/prijavi kao nepoželjan</string>
@@ -152,22 +120,4 @@
   <string name="call_log_action_remove_spam">Nije nepoželjan</string>
   <string name="call_log_action_unblock_number">Deblokiraj broj</string>
   <string name="spam_number_call_log_label">Nepoželjan</string>
-  <string name="call_composer_connection_failed">%1$s je oflajn i ne možete da ga/je kontaktirate</string>
-  <string name="about_phone_label">Osnovni podaci</string>
-  <string name="voicemail_transcription_branding_text">Transkript je napravio Google</string>
-  <string name="voicemail_transcription_in_progress">Transkribuje se…</string>
-  <string name="voicemail_transcription_failed">Transkript nije dostupan.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkript nije dostupan. Nije podržan jezik.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkript nije dostupan. Nije otkriven govor.</string>
-  <string name="voicemail_donation_promo_title">Želite li da nam pomognete da poboljšamo tačnost transkripcije?</string>
-  <string name="voicemail_donation_promo_content">Dozvolite Google-u da pregleda ovu i buduće govorne poruke sa transkriptima. Čuvaće se anonimno. Podešavanja uvek možete da promenite. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Da, omogući</string>
-  <string name="voicemail_donation_promo_opt_out">Ne, hvala</string>
-  <string name="voicemail_transcription_rating">Ocenite kvalitet transkripcije</string>
-  <string name="voicemail_transcription_rating_thanks">Hvala vam na oceni kvaliteta</string>
-  <string name="description_rating_good">Označite da je dobro</string>
-  <string name="description_rating_bad">Označite da je loše</string>
-  <string name="view_conversation">Prikaži</string>
-  <string name="ec_data_deleted">Poziv je izbrisan. Pregledajte i izbrišite priloge deljene tokom ovog poziva u Messages-u.</string>
-  <string name="multiple_ec_data_deleted">Pozivi su izbrisani. Pregledajte i izbrišite priloge deljene tokom poziva u Messages-u.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-be/cm_strings.xml b/java/com/android/dialer/app/res/values-be/cm_strings.xml
new file mode 100644
index 0000000..9635707
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-be/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Падчас выкліку</string>
+    <string name="incall_enable_dnd_title">Уключаць рэжым \"Не турбаваць\" падчас выкліку</string>
+    <string name="incall_vibrate_outgoing_title">Вібрацыя пры адказе</string>
+    <string name="incall_vibrate_call_waiting_title">Вібрацыя падчас чакання выкліку</string>
+    <string name="incall_vibrate_hangup_title">Вібрацыя пры завяршэнні</string>
+    <string name="incall_vibrate_45_title">Вібрыраваць штохвіліну</string>
+    <string name="incall_vibrate_45_summary">Вібрыраваць на 45-ай секундзе кожнай хвіліны падчас выходных выклікаў</string>
+    <string name="incall_dnd_dialog_message">Для ўключэння рэжыму \"Не турбаваць\", у праграме \"Тэлефон\" неабходна атрымаць дазвол на кіраванне статусам рэжыму \"Не турбаваць\".\nЗабяспечце неабходны дазвол.</string>
+    <string name="allow">Дазволіць</string>
+    <string name="deny">Адхіліць</string>
+    <string name="call_recording_category_title">Запіс выклікаў</string>
+    <string name="call_recording_format">Фармат аўдыя</string>
+    <string name="call_via">Выклікаць праз</string>
+    <string name="call_via_dialog_title">Выклікаць праз\u2026</string>
+    <string name="call_log_stats_title">Статыстыка</string>
+    <string name="default_dialer_action">Зрабіць прадвызначаным</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-be/strings.xml b/java/com/android/dialer/app/res/values-be/strings.xml
index 37a8b8b..16faf48 100644
--- a/java/com/android/dialer/app/res/values-be/strings.xml
+++ b/java/com/android/dialer/app/res/values-be/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Тэлефон</string>
-  <string name="launcherDialpadActivityLabel">Клавіятура тэлефона</string>
   <string name="callHistoryIconLabel">Гісторыя выклікаў</string>
   <string name="action_copy_number_text">Скапіраваць нумар</string>
-  <string name="copy_transcript_text">Капіраваць транскрыпцыю</string>
   <string name="action_edit_number_before_call">Змяніць нумар перад тым, як тэлефанаваць</string>
   <string name="call_log_delete_all">Ачысціць гісторыю выклікаў</string>
   <string name="call_log_trash_voicemail">Выдаліць галас. паведамленне</string>
@@ -37,10 +35,7 @@
   <string name="description_playback_seek">Шукаць становішча прайгравання</string>
   <string name="action_menu_call_history_description">Гісторыя выклікаў</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Дадатковыя параметры</string>
-  <string name="action_menu_dialpad_button">клавіятура</string>
   <string name="dialer_settings_label">Налады</string>
-  <string name="simulator_submenu_label">Сродак мадэліравання</string>
-  <string name="new_ui_launcher_shortcut_label">Ярлык новага карыст. інтэрфейсу</string>
   <string name="description_entering_bulk_action_mode">Уваход у рэжым групавога дзеяння</string>
   <string name="description_leaving_bulk_action_mode">Выхад з рэжыму групавога дзеяння</string>
   <string name="description_selecting_bulk_action_mode">Выбрана: %1$s</string>
@@ -51,7 +46,6 @@
   <string name="description_video_call">Відэавыклік.</string>
   <string name="description_start_voice_search">Пачаць галасавы пошук</string>
   <string name="voicemail">Галасавая пошта</string>
-  <string name="description_cancel_multi_select">Скасаваць рэжым пакетных дзеянняў</string>
   <string name="voicemailMultiSelectDeleteConfirm">Выдаліць</string>
   <string name="voicemailMultiSelectDeleteCancel">Скасаваць</string>
   <string name="voicemailMultiSelectActionBarTitle">Выбрана: %1$s</string>
@@ -67,7 +61,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Галасавы пошук недаступны</string>
   <string name="dialer_hint_find_contact">Пошук кантактаў</string>
-  <string name="block_number_search_hint">Дадайце нумар ці шукайце ў кантактах</string>
   <string name="call_log_all_empty">Ваша гісторыя выклікаў пустая</string>
   <string name="call_log_all_empty_action">Зрабіць выклік</string>
   <string name="call_log_missed_empty">У вас няма прапушчаных выклікаў.</string>
@@ -75,23 +68,13 @@
   <string name="call_log_activity_title">Гісторыя выклікаў</string>
   <string name="call_log_all_title">Усе</string>
   <string name="call_log_missed_title">Прапушчаныя</string>
-  <string name="tab_speed_dial">Хуткі набор</string>
-  <string name="tab_history">Гісторыя выклікаў</string>
   <string name="tab_all_contacts">Кантакты</string>
-  <string name="tab_voicemail">Галасавая пошта</string>
-  <string name="search_shortcut_call_number">Выклікаць %s</string>
   <string name="search_shortcut_create_new_contact">Новы кантакт</string>
   <string name="search_shortcut_add_to_contact">Дадаць у кантакт</string>
   <string name="search_shortcut_send_sms_message">Адправiць SMS</string>
   <string name="search_shortcut_make_video_call">Зрабіць відэавыклік</string>
-  <string name="search_shortcut_block_number">Заблакіраваць нумар</string>
-  <string name="speed_dial_empty">У вас пакуль нікога няма на хуткім наборы</string>
-  <string name="speed_dial_empty_add_favorite_action">Дадаць улюбёны</string>
-  <string name="remove_contact">Выдаліць</string>
   <string name="select_all">Выбраць усё</string>
   <string name="call_log_action_video_call">Відэавыклік</string>
-  <string name="call_log_action_set_up_video">Наладзіць відэавыклікі</string>
-  <string name="call_log_action_invite_video">Запрасіць у відэавыклік</string>
   <string name="call_log_action_send_message">Адправiць паведамленне</string>
   <string name="call_log_action_details">Падрабязнасці выкліку</string>
   <string name="call_log_action_share_voicemail">Адпраўляецца да…</string>
@@ -130,23 +113,8 @@
   <string name="call_settings_label">Выклікі</string>
   <string name="manage_blocked_numbers_label">Заблакіраваныя нумары</string>
   <string name="voicemail_settings_label">Галасавая пошта</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Блакіроўка выклікаў часова адключана</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Блакіроўка выклікаў будзе адключана, таму што вы выклікалі экстранныя службы з гэтага тэлефона на працягу апошніх 48 гадзін. Яна будзе аўтаматычна адноўлена пасля заканчэння перыяду ў 48 гадзін.</string>
-  <string name="import_send_to_voicemail_numbers_label">Імпартаваць нумары</string>
-  <string name="blocked_call_settings_import_description">Вы пазначалі праз іншыя праграмы некаторых абанентаў, якіх трэба аўтаматычна адпраўляць у галасавую пошту .</string>
-  <string name="blocked_call_settings_view_numbers_button">Прагледзець нумары</string>
-  <string name="blocked_call_settings_import_button">Імпартаваць</string>
-  <string name="description_blocked_number_list_delete">Разблакіраваць нумар</string>
-  <string name="addBlockedNumber">Дадаць нумар</string>
-  <string name="block_number_footer_message_vvm">Выклікі з гэтых нумароў будуць блакіравацца, а паведамленні галасавой пошты - аўтаматычна выдаляцца.</string>
-  <string name="block_number_footer_message_no_vvm">Выклікі з гэтых нумароў будуць блакіравацца, але з іх яшчэ можна пакінуць вам паведамленні галасавой пошты.</string>
-  <string name="block_list">Заблакіраваныя нумары</string>
-  <string name="alreadyBlocked">%1$s ужо заблакіраваны.</string>
   <string name="phone_account_settings_label">Уліковыя запісы для выклікаў</string>
-  <string name="permission_no_speeddial">Каб уключыць хуткі набор, уключыце дазвол для Кантактаў.</string>
   <string name="permission_no_calllog">Каб прагледзець свой журнал выклікаў, уключыце дазволы Тэлефона.</string>
-  <string name="permission_no_search">Каб шукаць свае кантакты, уключыце дазвол для Кантактаў.</string>
-  <string name="permission_place_call">Каб зрабіць выклік, уключыце дазвол для Тэлефона.</string>
   <string name="toast_cannot_write_system_settings">Праграма Тэлефон не мае дазволу на запіс у налады сістэмы.</string>
   <string name="blocked_number_call_log_label">Заблакiравана</string>
   <string name="call_log_action_block_report_number">Заблакір./паведаміць пра спам</string>
@@ -154,22 +122,4 @@
   <string name="call_log_action_remove_spam">Не спам</string>
   <string name="call_log_action_unblock_number">Разблакіраваць нумар</string>
   <string name="spam_number_call_log_label">Спам</string>
-  <string name="call_composer_connection_failed">Карыстальнік %1$s па-за сеткай і не даступны</string>
-  <string name="about_phone_label">Інфармацыя</string>
-  <string name="voicemail_transcription_branding_text">Расшыфравана Google</string>
-  <string name="voicemail_transcription_in_progress">Ідзе расшыфроўка…</string>
-  <string name="voicemail_transcription_failed">Расшыфроўка недаступная.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Расшыфроўка недаступная. Мова не падтрымліваецца.</string>
-  <string name="voicemail_transcription_failed_no_speech">Расшыфроўка недаступная. Маўленне не выяўлена.</string>
-  <string name="voicemail_donation_promo_title">Дапамажыце палепшыць якасць расшыфроўкі</string>
-  <string name="voicemail_donation_promo_content">Дайце Google доступ да расшыфраваных паведамленняў галасавой пошты. Яны будуць захоўвацца ананімна. Гэты параметр заўсёды можна змяніць у наладах. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Так, згаджаюся</string>
-  <string name="voicemail_donation_promo_opt_out">Не, дзякуй</string>
-  <string name="voicemail_transcription_rating">Ацаніце якасць транскрыпцыі</string>
-  <string name="voicemail_transcription_rating_thanks">Дзякуй за водгук</string>
-  <string name="description_rating_good">Падабаецца</string>
-  <string name="description_rating_bad">Не падабаецца</string>
-  <string name="view_conversation">Праглядзець</string>
-  <string name="ec_data_deleted">Выклік выдалены. У \"Паведамленнях\" праглядзіце і выдаліце далучэнні, якія былі абагулены падчас гэтага выкліку.</string>
-  <string name="multiple_ec_data_deleted">Выклікі выдалены. У \"Паведамленнях\" праглядзіце і выдаліце далучэнні, якія былі абагулены падчас гэтых выклікаў.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-bg/cm_strings.xml b/java/com/android/dialer/app/res/values-bg/cm_strings.xml
new file mode 100644
index 0000000..0bf79cb
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-bg/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Входящи повиквания</string>
+    <string name="incall_enable_dnd_title">Активирайте режим \"Не безпокойте\" по време на разговор</string>
+    <string name="incall_vibrate_outgoing_title">Вибрация при отговор</string>
+    <string name="incall_vibrate_call_waiting_title">Вибрация при изчакващо повикване</string>
+    <string name="incall_vibrate_hangup_title">Вибрация при затваряне</string>
+    <string name="incall_vibrate_45_title">Вибрация на всяка минута</string>
+    <string name="incall_vibrate_45_summary">Ще вибрира на всяка 45-та секунда от минутата по време на изходящи повиквания</string>
+    <string name="incall_dnd_dialog_message">За да активирате режима \"Не безпокойте\", приложението \"Телефон\" трябва да получи разрешение да контролира състоянието на режима \"Не ме безпокойте\".</string>
+    <string name="allow">Разрешаване</string>
+    <string name="deny">Забрани</string>
+    <string name="call_recording_category_title">Запис на разговор</string>
+    <string name="call_recording_format">Аудио формат</string>
+    <string name="call_via">Повикване чрез</string>
+    <string name="call_via_dialog_title">Повикване чрез\u2026</string>
+    <string name="call_log_stats_title">Статистика</string>
+    <string name="action_menu_helplines">Линии за помощ</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-bg/strings.xml b/java/com/android/dialer/app/res/values-bg/strings.xml
index 88369ac..717b729 100644
--- a/java/com/android/dialer/app/res/values-bg/strings.xml
+++ b/java/com/android/dialer/app/res/values-bg/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Телефон</string>
-  <string name="launcherDialpadActivityLabel">Телефонна клавиатура</string>
   <string name="callHistoryIconLabel">История на обажданията</string>
   <string name="action_copy_number_text">Копиране на номера</string>
-  <string name="copy_transcript_text">Копиране на преписа</string>
   <string name="action_edit_number_before_call">Редактиране на номера преди обаждане</string>
   <string name="call_log_delete_all">Изчистване на историята на обажд.</string>
   <string name="call_log_trash_voicemail">Изтриване на гласова поща</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Търсене на позиция за възпроизвеждане</string>
   <string name="action_menu_call_history_description">История на обажданията</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Още опции</string>
-  <string name="action_menu_dialpad_button">цифрова клавиатура</string>
   <string name="dialer_settings_label">Настройки</string>
-  <string name="simulator_submenu_label">Симулатор</string>
-  <string name="new_ui_launcher_shortcut_label">Пряк път към новия ПИ</string>
   <string name="description_entering_bulk_action_mode">Влизате в режима на групови действия</string>
   <string name="description_leaving_bulk_action_mode">Излязохте от режима на групови действия</string>
   <string name="description_selecting_bulk_action_mode">Избрахте %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Видеообаждане.</string>
   <string name="description_start_voice_search">Стартиране на гласово търсене</string>
   <string name="voicemail">Гласова поща</string>
-  <string name="description_cancel_multi_select">Анулиране на режима на групови действия</string>
   <string name="voicemailMultiSelectDeleteConfirm">Изтриване</string>
   <string name="voicemailMultiSelectDeleteCancel">Отказ</string>
   <string name="voicemailMultiSelectActionBarTitle">Избрахте %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Гласовото търсене не е налице</string>
   <string name="dialer_hint_find_contact">Търсене в контактите</string>
-  <string name="block_number_search_hint">Доб. номер или потърс. контакт</string>
   <string name="call_log_all_empty">Историята на обажданията ви е празна</string>
   <string name="call_log_all_empty_action">Извършване на обаждане</string>
   <string name="call_log_missed_empty">Нямате пропуснати обаждания.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">История на обажданията</string>
   <string name="call_log_all_title">Всички</string>
   <string name="call_log_missed_title">Пропуснати</string>
-  <string name="tab_speed_dial">Бързо набиране</string>
-  <string name="tab_history">История на обажданията</string>
   <string name="tab_all_contacts">Контакти</string>
-  <string name="tab_voicemail">Гласова поща</string>
-  <string name="search_shortcut_call_number">Обаждане на %s</string>
   <string name="search_shortcut_create_new_contact">Създаване на нов контакт</string>
   <string name="search_shortcut_add_to_contact">Добавяне към контакт</string>
   <string name="search_shortcut_send_sms_message">Изпращане на SMS</string>
   <string name="search_shortcut_make_video_call">Провеждане на видеообаждане</string>
-  <string name="search_shortcut_block_number">Блокиране на номера</string>
-  <string name="speed_dial_empty">Още нямате контакти за бързо набиране</string>
-  <string name="speed_dial_empty_add_favorite_action">Добавяне на любим контакт</string>
-  <string name="remove_contact">Премахване</string>
   <string name="select_all">Избиране на всички</string>
   <string name="call_log_action_video_call">Видеообаждане</string>
-  <string name="call_log_action_set_up_video">Настройване на видеообаждания</string>
-  <string name="call_log_action_invite_video">Покана за видеообаждане</string>
   <string name="call_log_action_send_message">Изпращане на съобщение</string>
   <string name="call_log_action_details">Подробности за обаждането</string>
   <string name="call_log_action_share_voicemail">Изпращане до…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Обаждания</string>
   <string name="manage_blocked_numbers_label">Блокирани номера</string>
   <string name="voicemail_settings_label">Гласова поща</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Блокир. на обажданията е временно изкл.</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Блокирането на обажданията е деактивирано, защото в рамките на последните 48 часа сте се свързали със спешните служби от този телефон. То автоматично ще бъде активирано отново, когато периодът от 48 часа изтече.</string>
-  <string name="import_send_to_voicemail_numbers_label">Импортиране на номерата</string>
-  <string name="blocked_call_settings_import_description">По-рано означихте обажданията от някои контакти автоматично да се прехвърлят към гласова поща чрез други приложения.</string>
-  <string name="blocked_call_settings_view_numbers_button">Преглед на номерата</string>
-  <string name="blocked_call_settings_import_button">Импортиране</string>
-  <string name="description_blocked_number_list_delete">Отблокиране на номера</string>
-  <string name="addBlockedNumber">Добавяне на номер</string>
-  <string name="block_number_footer_message_vvm">Обажданията от тези номера ще бъдат блокирани, а гласовите съобщения – автоматично изтривани.</string>
-  <string name="block_number_footer_message_no_vvm">Обажданията от тези номера ще бъдат блокирани, но обаждащите се от тях пак може да са в състояние да ви оставят гласови съобщения.</string>
-  <string name="block_list">Блокирани номера</string>
-  <string name="alreadyBlocked">Номер %1$s вече е блокиран.</string>
   <string name="phone_account_settings_label">Профили за обаждане</string>
-  <string name="permission_no_speeddial">За да активирате бързото набиране, включете разрешението за Контакти.</string>
   <string name="permission_no_calllog">За да видите списъка с обажданията си, включете разрешението за Телефон.</string>
-  <string name="permission_no_search">За да търсите в контактите си, включете разрешенията за тях.</string>
-  <string name="permission_place_call">За да извършите обаждане, включете разрешението за Телефон.</string>
   <string name="toast_cannot_write_system_settings">Приложението Телефон няма разрешение да записва в системните настройки.</string>
   <string name="blocked_number_call_log_label">Блокирано</string>
   <string name="call_log_action_block_report_number">Блокиране/сигнал за спам</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Не е спам</string>
   <string name="call_log_action_unblock_number">Отблокиране на номера</string>
   <string name="spam_number_call_log_label">Спам</string>
-  <string name="call_composer_connection_failed">С %1$s не може да се установи връзка, тъй като е офлайн</string>
-  <string name="about_phone_label">Информация</string>
-  <string name="voicemail_transcription_branding_text">Транскрибирано от Google</string>
-  <string name="voicemail_transcription_in_progress">Транскрибира се…</string>
-  <string name="voicemail_transcription_failed">Няма наличен препис.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Няма наличен препис. Езикът не се поддържа.</string>
-  <string name="voicemail_transcription_failed_no_speech">Няма наличен препис. Не бе открита реч.</string>
-  <string name="voicemail_donation_promo_title">Ще помогнете ли за подобряване на точността на преписите?</string>
-  <string name="voicemail_donation_promo_content">Позволете на Google да преглежда това и бъдещите съобщения в гласовата поща с преписи. Те ще бъдат съхранявани анонимно. Можете да промените настройките по всяко време. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Да, ще участвам</string>
-  <string name="voicemail_donation_promo_opt_out">Не, благодаря</string>
-  <string name="voicemail_transcription_rating">Оценете качеството на преписа</string>
-  <string name="voicemail_transcription_rating_thanks">Благодарим ви за отзивите</string>
-  <string name="description_rating_good">Харесва ми</string>
-  <string name="description_rating_bad">Не ми харесва</string>
-  <string name="view_conversation">Преглед</string>
-  <string name="ec_data_deleted">Обаждането е изтрито. Прегледайте и изтрийте прикачените файлове, споделени по време на това обаждане в Messages.</string>
-  <string name="multiple_ec_data_deleted">Обажданията са изтрити. Прегледайте и изтрийте прикачените файлове, споделени по време на обажданията в Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-bn/strings.xml b/java/com/android/dialer/app/res/values-bn/strings.xml
index 9438584..42be058 100644
--- a/java/com/android/dialer/app/res/values-bn/strings.xml
+++ b/java/com/android/dialer/app/res/values-bn/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ফোন</string>
-  <string name="launcherDialpadActivityLabel">ফোনের কীপ্যাড</string>
   <string name="callHistoryIconLabel">পুরোনো কলের তালিকা</string>
   <string name="action_copy_number_text">নম্বর কপি করুন</string>
-  <string name="copy_transcript_text">ট্রান্সক্রিপশান কপি করুন</string>
   <string name="action_edit_number_before_call">কল করার আগে নম্বর সম্পাদনা করুন</string>
   <string name="call_log_delete_all">পুরোনো কলের তালিকা সাফ করুন</string>
   <string name="call_log_trash_voicemail">ভয়েসমেল মুছুন</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">প্লেব্যাক লোকেশন খুঁজুন</string>
   <string name="action_menu_call_history_description">কলের ইতিহাস</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">আরও বিকল্প</string>
-  <string name="action_menu_dialpad_button">কীপ্যাড</string>
   <string name="dialer_settings_label">সেটিংস</string>
-  <string name="simulator_submenu_label">সিমুলেটার</string>
-  <string name="new_ui_launcher_shortcut_label">নতুন UI শর্টকাট তৈরি করুন</string>
   <string name="description_entering_bulk_action_mode">বাল্ক অ্যাকশন মোডে প্রবেশ করা হচ্ছে</string>
   <string name="description_leaving_bulk_action_mode">বাল্ক অ্যাকশন মোড ত্যাগ করুন</string>
   <string name="description_selecting_bulk_action_mode">%1$s নির্বাচন করা হয়েছে</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">ভিডিও কল।</string>
   <string name="description_start_voice_search">ভয়েস সার্চ শুরু করুন</string>
   <string name="voicemail">ভয়েসমেল</string>
-  <string name="description_cancel_multi_select">ব্যাচ অ্যাকশন মোড বাতিল করুন</string>
   <string name="voicemailMultiSelectDeleteConfirm">মুছুন</string>
   <string name="voicemailMultiSelectDeleteCancel">বাতিল করুন</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$sটি নির্বাচিত</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">ভয়েস সার্চ অনুপলব্ধ</string>
   <string name="dialer_hint_find_contact">পরিচিতিগুলি খুঁজুন</string>
-  <string name="block_number_search_hint">সংখ্যা যোগ করুন বা পরিচিতিগুলি খুঁজুন</string>
   <string name="call_log_all_empty">আপনার পুরোনো কলের তালিকা খালি আছে</string>
   <string name="call_log_all_empty_action">একটি কল করুন</string>
   <string name="call_log_missed_empty">আপনার কোনো মিসড কল নেই।</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">পুরোনো কলের তালিকা</string>
   <string name="call_log_all_title">সমস্ত</string>
   <string name="call_log_missed_title">মিসড</string>
-  <string name="tab_speed_dial">দ্রুত ডায়াল</string>
-  <string name="tab_history">পুরোনো কলের তালিকা</string>
   <string name="tab_all_contacts">পরিচিতিগুলি</string>
-  <string name="tab_voicemail">ভয়েস মেল</string>
-  <string name="search_shortcut_call_number">%s এ কল করুন</string>
   <string name="search_shortcut_create_new_contact">নতুন পরিচিতি বানান</string>
   <string name="search_shortcut_add_to_contact">একটি পরিচিতিতে যোগ করুন</string>
   <string name="search_shortcut_send_sms_message">SMS পাঠান</string>
   <string name="search_shortcut_make_video_call">ভিডিও কল করুন</string>
-  <string name="search_shortcut_block_number">নম্বর অবরোধ করুন</string>
-  <string name="speed_dial_empty">আপনার স্পীড ডায়ালে এখনও পর্যন্ত কেউ নেই</string>
-  <string name="speed_dial_empty_add_favorite_action">একটি পছন্দসই যোগ করুন</string>
-  <string name="remove_contact">সরান</string>
   <string name="select_all">সবগুলি বেছে নিন</string>
   <string name="call_log_action_video_call">ভিডিও কল</string>
-  <string name="call_log_action_set_up_video">ভিডিও কল সেট-আপ করুন</string>
-  <string name="call_log_action_invite_video">ভিডিও কলে আমন্ত্রণ জানান</string>
   <string name="call_log_action_send_message">একটি বার্তা পাঠান</string>
   <string name="call_log_action_details">কলের বিশদ বিবরণ</string>
   <string name="call_log_action_share_voicemail">এতে পাঠান ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">কল</string>
   <string name="manage_blocked_numbers_label">ব্লক করা নম্বর</string>
   <string name="voicemail_settings_label">ভয়েসমেল</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">কল অবরোধ সাময়িকভাবে বন্ধ রয়েছে</string>
-  <string name="blocked_numbers_disabled_emergency_desc">কল অবরোধ অক্ষম করা হয়েছে কারণ আপনি গত ২৮ ঘন্টার মধ্যে এই ফোন থেকে জরুরি পরিষেবায় যোগাযোগ করেছেন। ২৮ ঘন্টার সময়সীমা পেরিয়ে গেলেই এটি স্বয়ংক্রিয়ভাবে আবার সক্ষম হবে।</string>
-  <string name="import_send_to_voicemail_numbers_label">নম্বরগুলি আমদানি করুন</string>
-  <string name="blocked_call_settings_import_description">আপনি আগে থেকেই অন্য অ্যাপ্লিকেশানগুলির মাধ্যমে স্বয়ংক্রিয়ভাবে ভয়েস মেল পাঠানোর জন্য কিছু কলারকে চিহ্নিত করেছেন৷</string>
-  <string name="blocked_call_settings_view_numbers_button">নম্বরগুলি দেখুন</string>
-  <string name="blocked_call_settings_import_button">আমদানি করুন</string>
-  <string name="description_blocked_number_list_delete">নম্বর অবরোধ মুক্ত করুন</string>
-  <string name="addBlockedNumber">একটি নম্বর যোগ করুন</string>
-  <string name="block_number_footer_message_vvm">এই নম্বরগুলি থেকে আসা কলগুলি ব্লক করা হবে এবং ভয়েসমেলগুলি স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে৷</string>
-  <string name="block_number_footer_message_no_vvm">এই নম্বরগুলি থেকে আসা কলগুলি অবরোধ করা হবে, কিন্তু তারা হয়ত এখনও আপনাকে ভয়েসমেলগুলি পাঠাতে পারবে৷</string>
-  <string name="block_list">ব্লক করা নাম্বারগুলি</string>
-  <string name="alreadyBlocked">%1$s ইতিমধ্যেই অববোধ করা রয়েছে৷</string>
   <string name="phone_account_settings_label">কলিং অ্যাকাউন্টগুলি</string>
-  <string name="permission_no_speeddial">স্পীড ডায়াল সক্ষম করতে, পরিচিতিগুলির অনুমতি চালু করুন।</string>
   <string name="permission_no_calllog">আপনার কল লগ দেখতে, ফোনের অনুমতি চালু করুন।</string>
-  <string name="permission_no_search">আপনার পরিচিতিগুলি সার্চ করতে, পরিচিতির অনুমতিগুলি চালু করুন।</string>
-  <string name="permission_place_call">একটি কল করতে, ফোনের অনুমতি চালু করুন।</string>
   <string name="toast_cannot_write_system_settings">ফোনের অ্যাপ্লিকেশানকে সিস্টেম সেটিংসে লেখার অনুমতি দেওয়া হয়নি।</string>
   <string name="blocked_number_call_log_label">অবরুদ্ধ</string>
   <string name="call_log_action_block_report_number">অবরুদ্ধ করুন/স্প্যাম হিসাবে অভিযোগ করুন</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">স্প্যাম নয়</string>
   <string name="call_log_action_unblock_number">নম্বর অবরোধ মুক্ত করুন</string>
   <string name="spam_number_call_log_label">স্প্যাম</string>
-  <string name="call_composer_connection_failed">%1$s এখন অফলাইনে থাকায় যোগাযোগ করা যাবে না</string>
-  <string name="about_phone_label">সম্পর্কে</string>
-  <string name="voicemail_transcription_branding_text">Google এর প্রতিলিপি করা হয়েছে</string>
-  <string name="voicemail_transcription_in_progress">ট্রান্সক্রাইব করা হচ্ছে...</string>
-  <string name="voicemail_transcription_failed">ক্যাপশন তৈরি করা যায়নি।</string>
-  <string name="voicemail_transcription_failed_language_not_supported">এই ভাষাটি সমর্থিত নয়। ক্যাপশন তৈরি করা যায়নি।</string>
-  <string name="voicemail_transcription_failed_no_speech">কোনও ভাষ্য শনাক্ত করা যায়নি। ক্যাপশন তৈরি করা যাবে না।</string>
-  <string name="voicemail_donation_promo_title">ট্রান্সক্রিপশন বৈশিষ্ট্যটি আরও নির্ভুল করে তুলতে সাহায্য করবেন?</string>
-  <string name="voicemail_donation_promo_content">এই ভয়েসমেল মেসেজ এবং ভবিষ্যতে অন্যান্য যে সমস্ত মেসেজে ট্রান্সক্রিপ্ট থাকবে সেগুলি Google-কে পর্যালোচনা করতে দিন। আপনার পরিচয় গোপন রেখে সেগুলি স্টোর করা হবে। আপনি যেকোনও সময় এই সেটিংস পরিবর্তন করতে পারেন। %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">হ্যাঁ, আমি রাজি</string>
-  <string name="voicemail_donation_promo_opt_out">না থাক</string>
-  <string name="voicemail_transcription_rating">ট্রান্সক্রিপশন গুণমানটির রেটিং</string>
-  <string name="voicemail_transcription_rating_thanks">মতামত জানানোর জন্য ধন্যবাদ</string>
-  <string name="description_rating_good">পছন্দ</string>
-  <string name="description_rating_bad">অপছন্দ</string>
-  <string name="view_conversation">দেখুন</string>
-  <string name="ec_data_deleted">কল মোছা হয়েছে। বার্তার মধ্যে কলের সময় শেয়ার করা সংযুক্তি দেখুন ও মুছুন।</string>
-  <string name="multiple_ec_data_deleted">কলগুলি মোছা হয়েছে। বার্তার মধ্যে কলের সময় শেয়ার করা সংযুক্তিগুলি দেখুন ও মুছুন।</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-bs/strings.xml b/java/com/android/dialer/app/res/values-bs/strings.xml
index 100932b..daf71cf 100644
--- a/java/com/android/dialer/app/res/values-bs/strings.xml
+++ b/java/com/android/dialer/app/res/values-bs/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Telefonska tastatura</string>
   <string name="callHistoryIconLabel">Historija poziva</string>
   <string name="action_copy_number_text">Kopiraj broj</string>
-  <string name="copy_transcript_text">Kopiraj transkripciju</string>
   <string name="action_edit_number_before_call">Uredi broj prije poziva</string>
   <string name="call_log_delete_all">Obriši historiju poziva</string>
   <string name="call_log_trash_voicemail">Izbriši govornu poštu</string>
@@ -36,10 +34,7 @@
   <string name="description_playback_seek">Traženje položaja reprodukcije</string>
   <string name="action_menu_call_history_description">Historija poziva</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Više opcija</string>
-  <string name="action_menu_dialpad_button">telefonska tastatura</string>
   <string name="dialer_settings_label">Postavke</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Kreiraj prečicu za novi UI</string>
   <string name="description_entering_bulk_action_mode">Ulazak u način rada za skupnu radnju</string>
   <string name="description_leaving_bulk_action_mode">Napuštanje načina rada za skupnu radnju</string>
   <string name="description_selecting_bulk_action_mode">Odabrano %1$s</string>
@@ -50,7 +45,6 @@
   <string name="description_video_call">Video poziv.</string>
   <string name="description_start_voice_search">Pokreni glasovno pretraživanje</string>
   <string name="voicemail">Govorna pošta</string>
-  <string name="description_cancel_multi_select">Otkaži način rada za grupnu radnju</string>
   <string name="voicemailMultiSelectDeleteConfirm">Izbriši</string>
   <string name="voicemailMultiSelectDeleteCancel">Otkaži</string>
   <string name="voicemailMultiSelectActionBarTitle">Odabrano %1$s</string>
@@ -65,7 +59,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Glasovno pretraživanje nije dostupno</string>
   <string name="dialer_hint_find_contact">Traži kontakte</string>
-  <string name="block_number_search_hint">Dodajte broj ili tražite kontakte</string>
   <string name="call_log_all_empty">Vaša historija poziva je prazna.</string>
   <string name="call_log_all_empty_action">Pozovi</string>
   <string name="call_log_missed_empty">Nemate propuštenih poziva.</string>
@@ -73,23 +66,13 @@
   <string name="call_log_activity_title">Historija poziva</string>
   <string name="call_log_all_title">Sve</string>
   <string name="call_log_missed_title">Propušteni</string>
-  <string name="tab_speed_dial">Brzo biranje</string>
-  <string name="tab_history">Historija poziva</string>
   <string name="tab_all_contacts">Kontakti</string>
-  <string name="tab_voicemail">Govorna pošta</string>
-  <string name="search_shortcut_call_number">Pozovi %s</string>
   <string name="search_shortcut_create_new_contact">Izrada novog kontakta</string>
   <string name="search_shortcut_add_to_contact">Dodaj u kontakt</string>
   <string name="search_shortcut_send_sms_message">Pošalji SMS</string>
   <string name="search_shortcut_make_video_call">Uputi video poziv</string>
-  <string name="search_shortcut_block_number">Blokiraj broj</string>
-  <string name="speed_dial_empty">Nemate nikog na brzom biranju</string>
-  <string name="speed_dial_empty_add_favorite_action">Dodaj u omiljeno</string>
-  <string name="remove_contact">Ukloni</string>
   <string name="select_all">Odaberi sve</string>
   <string name="call_log_action_video_call">Video poziv</string>
-  <string name="call_log_action_set_up_video">Postavi video poziv</string>
-  <string name="call_log_action_invite_video">Pozivnica za video poziv</string>
   <string name="call_log_action_send_message">Pošalji poruku</string>
   <string name="call_log_action_details">Detalji o pozivu</string>
   <string name="call_log_action_share_voicemail">Pošalji na …</string>
@@ -128,23 +111,8 @@
   <string name="call_settings_label">Pozivi</string>
   <string name="manage_blocked_numbers_label">Blokirani brojevi</string>
   <string name="voicemail_settings_label">Govorna pošta</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blokiranje poziva je privremeno isključeno</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Blokiranje poziva je onemogućeno jer ste kontaktirali hitnu službu s ovog telefona u proteklih 48 sati. Automatski će se ponovo omogućiti kada istekne 48 sati.</string>
-  <string name="import_send_to_voicemail_numbers_label">Uvezi brojeve</string>
-  <string name="blocked_call_settings_import_description">Ranije ste označili da se neki pozivaoci automatski šalju na govornu poštu preko drugih aplikacija.</string>
-  <string name="blocked_call_settings_view_numbers_button">Prikaži brojeve</string>
-  <string name="blocked_call_settings_import_button">Uvezi</string>
-  <string name="description_blocked_number_list_delete">Deblokiraj broj</string>
-  <string name="addBlockedNumber">Dodaj broj</string>
-  <string name="block_number_footer_message_vvm">Pozivi s ovih brojeva će biti blokirani, a govorna pošta će se automatski brisati.</string>
-  <string name="block_number_footer_message_no_vvm">Pozivi s ovih brojeva će biti blokirani, ali pozivaoci će vam moći ostavljati govornu poštu.</string>
-  <string name="block_list">Blokirani brojevi</string>
-  <string name="alreadyBlocked">%1$s je već blokiran.</string>
   <string name="phone_account_settings_label">Računi za pozivanje</string>
-  <string name="permission_no_speeddial">Da omogućite brzo biranje, uključite odobrenje za Kontakte.</string>
   <string name="permission_no_calllog">Da vidite popis poziva, uključite odobrenje za Telefon.</string>
-  <string name="permission_no_search">Da pretražujete kontakte, uključite odobrenja za Kontakte.</string>
-  <string name="permission_place_call">Da uputite poziv, uključite odobrenje za Telefon.</string>
   <string name="toast_cannot_write_system_settings">Aplikacija za telefon nema odobrenje za pisanje u postavkama sistema.</string>
   <string name="blocked_number_call_log_label">Blokirano</string>
   <string name="call_log_action_block_report_number">Blokiraj/prijavi než. sadržaj</string>
@@ -152,22 +120,4 @@
   <string name="call_log_action_remove_spam">Ovo nije neželjeni sadržaj</string>
   <string name="call_log_action_unblock_number">Deblokiraj broj</string>
   <string name="spam_number_call_log_label">Neželjena pošta</string>
-  <string name="call_composer_connection_failed">Osoba %1$s je van mreže i ne možete je kontaktirati</string>
-  <string name="about_phone_label">O aplikaciji</string>
-  <string name="voicemail_transcription_branding_text">Transkribirao Google</string>
-  <string name="voicemail_transcription_in_progress">Transkripcija...</string>
-  <string name="voicemail_transcription_failed">Transkript nije dostupan.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkript nije dostupan jer nije podržan jezik.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkript nije dostupan jer nije prepoznat govor.</string>
-  <string name="voicemail_donation_promo_title">Želite li pomoći u poboljšanju tačnosti transkripcije?</string>
-  <string name="voicemail_donation_promo_content">Dozvolite da Google pregleda ovu i buduće poruke govorne pošte s transkriptima. One će biti pohranjene anonimno. Postavke možete promijeniti u bilo kojem trenutku. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Da, želim</string>
-  <string name="voicemail_donation_promo_opt_out">Ne hvala</string>
-  <string name="voicemail_transcription_rating">Ocijenite kvalitet transkrip.</string>
-  <string name="voicemail_transcription_rating_thanks">Hvala na povratnim informac.</string>
-  <string name="description_rating_good">Sviđa mi se</string>
-  <string name="description_rating_bad">Ne sviđa mi se</string>
-  <string name="view_conversation">Prikaži</string>
-  <string name="ec_data_deleted">Poziv je izbrisan. Pogledajte i izbrišite priloge podijeljene tokom ovog poziva u aplikaciji Messages.</string>
-  <string name="multiple_ec_data_deleted">Pozivi su izbrisani. Pogledajte i izbrišite priloge podijeljene tokom poziva u aplikaciji Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ca/cm_strings.xml b/java/com/android/dialer/app/res/values-ca/cm_strings.xml
new file mode 100644
index 0000000..2c9a094
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-ca/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">En una trucada</string>
+    <string name="incall_enable_dnd_title">Activa no molestar durant les trucades</string>
+    <string name="incall_vibrate_outgoing_title">Vibra en contestar</string>
+    <string name="incall_vibrate_call_waiting_title">Vibra quan hi hagi una trucada en espera</string>
+    <string name="incall_vibrate_hangup_title">Vibra al penjar</string>
+    <string name="incall_vibrate_45_title">Vibra cada minut</string>
+    <string name="incall_vibrate_45_summary">Vibra als 45 segons de cada minut durant les trucades sortints</string>
+    <string name="incall_dnd_dialog_message">Per activar no molestar, l\'aplicació telèfon cal que compti amb el permís per controlar l\'estat no molestar.\nPermeteu-ho.</string>
+    <string name="allow">Permet</string>
+    <string name="deny">Denega</string>
+    <string name="call_recording_category_title">Enregistrament de trucades</string>
+    <string name="call_recording_format">Format d\'àudio</string>
+    <string name="call_via">Truca a través</string>
+    <string name="call_via_dialog_title">Truca a través\u2026</string>
+    <string name="call_log_stats_title">Estadístiques</string>
+    <string name="action_menu_helplines">Línies d\'ajuda</string>
+    <string name="default_dialer_text">Heu de configurar el Marcador com a aplicació de telèfon per defecte per utilitzar-la.</string>
+    <string name="default_dialer_action">Estableix com per defecte</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-ca/strings.xml b/java/com/android/dialer/app/res/values-ca/strings.xml
index c9c4d42..0d4d736 100644
--- a/java/com/android/dialer/app/res/values-ca/strings.xml
+++ b/java/com/android/dialer/app/res/values-ca/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telèfon</string>
-  <string name="launcherDialpadActivityLabel">Teclat del telèfon</string>
   <string name="callHistoryIconLabel">Historial de trucades</string>
   <string name="action_copy_number_text">Copia el número</string>
-  <string name="copy_transcript_text">Copia la transcripció</string>
   <string name="action_edit_number_before_call">Edita el número abans de trucar</string>
   <string name="call_log_delete_all">Esborra l\'historial de trucades</string>
   <string name="call_log_trash_voicemail">Suprimeix la bústia de veu</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Cerca la posició de la reproducció</string>
   <string name="action_menu_call_history_description">Historial de trucades</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Més opcions</string>
-  <string name="action_menu_dialpad_button">teclat</string>
   <string name="dialer_settings_label">Configuració</string>
-  <string name="simulator_submenu_label">Simulador</string>
-  <string name="new_ui_launcher_shortcut_label">Crea drecera per a la nova IU</string>
   <string name="description_entering_bulk_action_mode">S\'està accedint al mode d\'acció massiva</string>
   <string name="description_leaving_bulk_action_mode">S\'ha sortit del mode d\'acció massiva</string>
   <string name="description_selecting_bulk_action_mode">S\'ha seleccionat %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videotrucada</string>
   <string name="description_start_voice_search">Inicia la cerca per veu</string>
   <string name="voicemail">Bústia de veu</string>
-  <string name="description_cancel_multi_select">Cancel·la el mode d\'accions en lot</string>
   <string name="voicemailMultiSelectDeleteConfirm">Suprimeix</string>
   <string name="voicemailMultiSelectDeleteCancel">Cancel·la</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s seleccionades</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">La cerca per veu no està disponible.</string>
   <string name="dialer_hint_find_contact">Cerca als contactes</string>
-  <string name="block_number_search_hint">Afegeix núm. o cerca contactes</string>
   <string name="call_log_all_empty">El teu historial de trucades és buit</string>
   <string name="call_log_all_empty_action">Fes una trucada</string>
   <string name="call_log_missed_empty">No tens cap trucada perduda.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Historial de trucades</string>
   <string name="call_log_all_title">Totes</string>
   <string name="call_log_missed_title">Perdudes</string>
-  <string name="tab_speed_dial">Marcatge ràpid</string>
-  <string name="tab_history">Historial de trucades</string>
   <string name="tab_all_contacts">Contactes</string>
-  <string name="tab_voicemail">Bústia de veu</string>
-  <string name="search_shortcut_call_number">Truca al %s</string>
   <string name="search_shortcut_create_new_contact">Crea un contacte</string>
   <string name="search_shortcut_add_to_contact">Afegeix a un contacte</string>
   <string name="search_shortcut_send_sms_message">Envia SMS</string>
   <string name="search_shortcut_make_video_call">Fes una videotrucada</string>
-  <string name="search_shortcut_block_number">Bloqueja el número</string>
-  <string name="speed_dial_empty">Encara no tens cap contacte al marcatge ràpid</string>
-  <string name="speed_dial_empty_add_favorite_action">Afegeix un preferit</string>
-  <string name="remove_contact">Suprimeix</string>
   <string name="select_all">Selecciona-ho tot</string>
   <string name="call_log_action_video_call">Videotrucada</string>
-  <string name="call_log_action_set_up_video">Configura les videotrucades</string>
-  <string name="call_log_action_invite_video">Convida a una videotrucada</string>
   <string name="call_log_action_send_message">Envia un missatge</string>
   <string name="call_log_action_details">Detalls de trucada</string>
   <string name="call_log_action_share_voicemail">Envia a…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Trucades</string>
   <string name="manage_blocked_numbers_label">Números bloquejats</string>
   <string name="voicemail_settings_label">Bústia de veu</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Bloqueig de trucades desactivat tempor.</string>
-  <string name="blocked_numbers_disabled_emergency_desc">El bloqueig de trucades s\'ha desactivat perquè has contactat amb els serveis d\'emergència des d\'aquest telèfon durant les últimes 48 hores. Es tornarà a activar automàticament una vegada transcorregut el període de 48 hores.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importa els números</string>
-  <string name="blocked_call_settings_import_description">Has indicat que les trucades d\'alguns contactes s\'enviïn automàticament a la bústia de veu mitjançant altres aplicacions.</string>
-  <string name="blocked_call_settings_view_numbers_button">Mostra els números</string>
-  <string name="blocked_call_settings_import_button">Importa</string>
-  <string name="description_blocked_number_list_delete">Desbloqueja el número</string>
-  <string name="addBlockedNumber">Afegeix un número</string>
-  <string name="block_number_footer_message_vvm">Es bloquejaran les trucades d\'aquests números i els missatges de veu se suprimiran automàticament.</string>
-  <string name="block_number_footer_message_no_vvm">Es bloquejaran les trucades d\'aquests números, però és possible que continuïn deixant-te missatges de veu.</string>
-  <string name="block_list">Números bloquejats</string>
-  <string name="alreadyBlocked">%1$s ja està bloquejat.</string>
   <string name="phone_account_settings_label">Comptes de trucades</string>
-  <string name="permission_no_speeddial">Activa el permís Contactes per activar el marcatge ràpid.</string>
   <string name="permission_no_calllog">Activa el permís Telèfon per veure el teu registre de trucades.</string>
-  <string name="permission_no_search">Per cercar els teus contactes, activa els permisos de Contactes.</string>
-  <string name="permission_place_call">Activa el permís Telèfon per fer una trucada.</string>
   <string name="toast_cannot_write_system_settings">L\'aplicació Telèfon no té permís per escriure a la configuració del sistema.</string>
   <string name="blocked_number_call_log_label">S\'ha bloquejat</string>
   <string name="call_log_action_block_report_number">Bloqueja o marca com a brossa</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">No és una trucada brossa</string>
   <string name="call_log_action_unblock_number">Desbloqueja el número</string>
   <string name="spam_number_call_log_label">Trucada brossa</string>
-  <string name="call_composer_connection_failed">%1$s no té connexió i no s\'hi pot contactar</string>
-  <string name="about_phone_label">Informació</string>
-  <string name="voicemail_transcription_branding_text">Transcripció feta per Google</string>
-  <string name="voicemail_transcription_in_progress">S\'està transcrivint…</string>
-  <string name="voicemail_transcription_failed">Transcripció no disponible.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcripció no disponible. No s\'admet aquest idioma.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcripció no disponible. No s\'ha detectat cap discurs.</string>
-  <string name="voicemail_donation_promo_title">Vols contribuir a millorar la precisió de les transcripcions?</string>
-  <string name="voicemail_donation_promo_content">Permet que Google revisi aquest missatge de veu transcrit, així com d\'altres que rebis més endavant. S\'emmagatzemaran de manera anònima. Pots canviar aquesta opció des de Configuració en qualsevol moment. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">D\'acord</string>
-  <string name="voicemail_donation_promo_opt_out">No, gràcies</string>
-  <string name="voicemail_transcription_rating">Puntua qualitat transcripció</string>
-  <string name="voicemail_transcription_rating_thanks">Gràcies pels teus suggeriments</string>
-  <string name="description_rating_good">M\'agrada</string>
-  <string name="description_rating_bad">No m\'agrada</string>
-  <string name="view_conversation">Mostra</string>
-  <string name="ec_data_deleted">S\'ha suprimit la trucada. Consulta i suprimeix els fitxers adjunts compartits durant aquesta trucada a Missatges.</string>
-  <string name="multiple_ec_data_deleted">S\'han suprimit les trucades. Consulta i suprimeix els fitxers adjunts compartits durant les trucades a Missatges.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-cs/cm_strings.xml b/java/com/android/dialer/app/res/values-cs/cm_strings.xml
new file mode 100644
index 0000000..d094360
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-cs/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Během hovoru</string>
+    <string name="incall_enable_dnd_title">Povolit režim Nerušit během hovoru</string>
+    <string name="incall_vibrate_outgoing_title">Vibrovat při přijmutí hovoru</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrovat při čekajícím hovoru</string>
+    <string name="incall_vibrate_hangup_title">Vibrovat při zavěšení</string>
+    <string name="incall_vibrate_45_title">Vibrovat každou minutu</string>
+    <string name="incall_vibrate_45_summary">Vibrovat každou 45. sekundu každé minuty při odchozím volání</string>
+    <string name="incall_dnd_dialog_message">Chcete-li povolit režim Nerušit, musí být telefonní aplikaci udělena oprávnění k ovládání stavu režimu Nerušit.\nProsím povolte jej.</string>
+    <string name="allow">Povolit</string>
+    <string name="deny">Odepřít</string>
+    <string name="call_recording_category_title">Nahrávání hovorů</string>
+    <string name="call_recording_format">Formát zvuku</string>
+    <string name="call_via">Volat prostřednictvím</string>
+    <string name="call_via_dialog_title">Volat prostřednictvím\u2026</string>
+    <string name="call_log_stats_title">Statistiky</string>
+    <string name="action_menu_helplines">Pomocné linky</string>
+    <string name="default_dialer_text">Chcete-li používat aplikaci pro volání, musíte ji nastavit jako výchozí telefonní aplikaci.</string>
+    <string name="default_dialer_action">Nastavit jako výchozí</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-cs/strings.xml b/java/com/android/dialer/app/res/values-cs/strings.xml
index ede1518..94d0b74 100644
--- a/java/com/android/dialer/app/res/values-cs/strings.xml
+++ b/java/com/android/dialer/app/res/values-cs/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Klávesnice telefonu</string>
   <string name="callHistoryIconLabel">Historie volání</string>
   <string name="action_copy_number_text">Kopírovat číslo</string>
-  <string name="copy_transcript_text">Kopírovat přepis</string>
   <string name="action_edit_number_before_call">Před voláním upravit číslo</string>
   <string name="call_log_delete_all">Vymazat historii volání</string>
   <string name="call_log_trash_voicemail">Smazat hlasovou zprávu</string>
@@ -37,10 +35,7 @@
   <string name="description_playback_seek">Vyhledání pozice přehrávání</string>
   <string name="action_menu_call_history_description">Historie volání</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Více možností</string>
-  <string name="action_menu_dialpad_button">klávesnice</string>
   <string name="dialer_settings_label">Nastavení</string>
-  <string name="simulator_submenu_label">Simulátor</string>
-  <string name="new_ui_launcher_shortcut_label">Vytv. zkratku na nové rozhraní</string>
   <string name="description_entering_bulk_action_mode">Vstupování do režimu hromadných akcí</string>
   <string name="description_leaving_bulk_action_mode">Opustili jste režim hromadných akcí</string>
   <string name="description_selecting_bulk_action_mode">Položka %1$s je vybrána</string>
@@ -51,7 +46,6 @@
   <string name="description_video_call">Videohovor</string>
   <string name="description_start_voice_search">Spustit hlasové vyhledávání</string>
   <string name="voicemail">Hlasová schránka</string>
-  <string name="description_cancel_multi_select">Zrušit režim hromadných akcí</string>
   <string name="voicemailMultiSelectDeleteConfirm">Smazat</string>
   <string name="voicemailMultiSelectDeleteCancel">Zrušit</string>
   <string name="voicemailMultiSelectActionBarTitle">Vybráno: %1$s</string>
@@ -67,7 +61,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Hlasové vyhledávání není k dispozici.</string>
   <string name="dialer_hint_find_contact">Vyhledat kontakty</string>
-  <string name="block_number_search_hint">Přidejte číslo nebo vyhledejte kontakty</string>
   <string name="call_log_all_empty">Historie volání je prázdná</string>
   <string name="call_log_all_empty_action">Zavolat</string>
   <string name="call_log_missed_empty">Nemáte žádné zmeškané hovory.</string>
@@ -75,23 +68,13 @@
   <string name="call_log_activity_title">Historie volání</string>
   <string name="call_log_all_title">Všechny</string>
   <string name="call_log_missed_title">Zmeškané</string>
-  <string name="tab_speed_dial">Rychlá volba</string>
-  <string name="tab_history">Historie volání</string>
   <string name="tab_all_contacts">Kontakty</string>
-  <string name="tab_voicemail">Hlasová schránka</string>
-  <string name="search_shortcut_call_number">Zavolat %s</string>
   <string name="search_shortcut_create_new_contact">Vytvořit nový kontakt</string>
   <string name="search_shortcut_add_to_contact">Přidat ke kontaktu</string>
   <string name="search_shortcut_send_sms_message">Odeslat SMS</string>
   <string name="search_shortcut_make_video_call">Uskutečnit videohovor</string>
-  <string name="search_shortcut_block_number">Blokovat číslo</string>
-  <string name="speed_dial_empty">V rychlém vytáčení zatím nemáte žádný kontakt.</string>
-  <string name="speed_dial_empty_add_favorite_action">Přidat oblíbený kontakt</string>
-  <string name="remove_contact">Odstranit</string>
   <string name="select_all">Vybrat všechny</string>
   <string name="call_log_action_video_call">Videohovor</string>
-  <string name="call_log_action_set_up_video">Nastavit videohovory</string>
-  <string name="call_log_action_invite_video">Pozvat na videohovor</string>
   <string name="call_log_action_send_message">Odeslat zprávu</string>
   <string name="call_log_action_details">Podrobnosti hovoru</string>
   <string name="call_log_action_share_voicemail">Poslat přes aplikaci…</string>
@@ -130,23 +113,8 @@
   <string name="call_settings_label">Volání</string>
   <string name="manage_blocked_numbers_label">Blokovaná čísla</string>
   <string name="voicemail_settings_label">Hlasová schránka</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blokování hovorů je dočasně vypnuto</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Protože jste z tohoto telefonu během posledních 48 hodin volali na tísňovou linku, bylo blokování hovorů vypnuto. Po uplynutí 48 hodin se automaticky znovu zapne.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importovat čísla</string>
-  <string name="blocked_call_settings_import_description">Pomocí dalších aplikací jste dříve některé volající označili k automatickému přesměrování do hlasové schránky.</string>
-  <string name="blocked_call_settings_view_numbers_button">Zobrazit čísla</string>
-  <string name="blocked_call_settings_import_button">Importovat</string>
-  <string name="description_blocked_number_list_delete">Zrušit blokování čísla</string>
-  <string name="addBlockedNumber">Přidat číslo</string>
-  <string name="block_number_footer_message_vvm">Volání z těchto čísel budou zablokována. Hlasové zprávy budou automaticky smazány.</string>
-  <string name="block_number_footer_message_no_vvm">Volání z těchto čísel budou zablokována, avšak volající vám budou moci zanechat hlasovou zprávu.</string>
-  <string name="block_list">Blokovaná čísla</string>
-  <string name="alreadyBlocked">Číslo %1$s je již blokováno.</string>
   <string name="phone_account_settings_label">Účty pro volání</string>
-  <string name="permission_no_speeddial">Chcete-li povolit rychlé vytáčení, aktivujte oprávnění Kontakty.</string>
   <string name="permission_no_calllog">Chcete-li zobrazit seznam hovorů, aktivujte oprávnění Telefon.</string>
-  <string name="permission_no_search">Chcete-li vyhledat kontakty, zapněte oprávnění Kontakty.</string>
-  <string name="permission_place_call">Chcete-li uskutečnit hovor, aktivujte oprávnění Telefon.</string>
   <string name="toast_cannot_write_system_settings">Aplikace Telefon nemá oprávnění provádět zápis do nastavení systému.</string>
   <string name="blocked_number_call_log_label">Zablokováno</string>
   <string name="call_log_action_block_report_number">Zablokovat / nahlásit spam</string>
@@ -154,22 +122,4 @@
   <string name="call_log_action_remove_spam">Není spam</string>
   <string name="call_log_action_unblock_number">Zrušit blokování čísla</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">Uživatel %1$s je offline a není možné se s ním spojit</string>
-  <string name="about_phone_label">O aplikaci</string>
-  <string name="voicemail_transcription_branding_text">Přepsáno Googlem</string>
-  <string name="voicemail_transcription_in_progress">Přepisování…</string>
-  <string name="voicemail_transcription_failed">Přepis není k dispozici.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Přepis není k dispozici. Jazyk není podporován.</string>
-  <string name="voicemail_transcription_failed_no_speech">Přepis není k dispozici. Nebyla zaznamenána žádná řeč.</string>
-  <string name="voicemail_donation_promo_title">Pomozte vylepšit přesnost přepisu!</string>
-  <string name="voicemail_donation_promo_content">Dovolte Googlu kontrolovat vaše hlasové zprávy (počínaje touto) s jejich přepisy. Zprávy se budou ukládat anonymně. Nastavení můžete kdykoli změnit. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Ano, souhlasím</string>
-  <string name="voicemail_donation_promo_opt_out">Ne, díky</string>
-  <string name="voicemail_transcription_rating">Ohodnoťte kvalitu přepisu</string>
-  <string name="voicemail_transcription_rating_thanks">Děkujeme za zpětnou vazbu</string>
-  <string name="description_rating_good">Líbí se mi</string>
-  <string name="description_rating_bad">Nelíbí se</string>
-  <string name="view_conversation">Zobrazit</string>
-  <string name="ec_data_deleted">Hovor byl smazán. Přílohy sdílené během něj můžete zobrazit a smazat v aplikaci Zprávy.</string>
-  <string name="multiple_ec_data_deleted">Hovory byly smazány. Přílohy sdílené během nich můžete zobrazit a smazat v aplikaci Zprávy.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-cy/cm_strings.xml b/java/com/android/dialer/app/res/values-cy/cm_strings.xml
new file mode 100644
index 0000000..922734c
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-cy/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Ar ganol galwad</string>
+    <string name="incall_enable_dnd_title">Galluogi Dim Tarfu yn ystod galwadau</string>
+    <string name="incall_vibrate_outgoing_title">Dirgrynu wrth ateb</string>
+    <string name="incall_vibrate_call_waiting_title">Dirgrynu wrth i alwad aros</string>
+    <string name="incall_vibrate_hangup_title">Dirgrynu wrth orffen yr alwad</string>
+    <string name="incall_vibrate_45_title">Dirgrynu pob munud</string>
+    <string name="incall_vibrate_45_summary">Dirgrynu ar 45ain eiliad pob munud yn ystod galwadau allan</string>
+    <string name="incall_dnd_dialog_message">Er mwyn galluogi Dim Tarfu, mae\'n rhaid rhoi caniatâd i\'r ap Ffôn medru rheoli statws Dim Tarfu.\nRho ganiatâd iddo.</string>
+    <string name="allow">Caniatáu</string>
+    <string name="deny">Gwrthod</string>
+    <string name="call_recording_category_title">Recordio galwadau</string>
+    <string name="call_recording_format">Fformat sain</string>
+    <string name="call_via">Galw gyda</string>
+    <string name="call_via_dialog_title">Galu gyda\u2026</string>
+    <string name="call_log_stats_title">Ystadegau</string>
+    <string name="action_menu_helplines">Llinellau Cymorth</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-da/cm_strings.xml b/java/com/android/dialer/app/res/values-da/cm_strings.xml
new file mode 100644
index 0000000..bef56ee
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-da/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Under opkald</string>
+    <string name="incall_enable_dnd_title">Aktivér Forstyr Ikke under opkald</string>
+    <string name="incall_vibrate_outgoing_title">Vibrér ved svar</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrér ved ventende opkald</string>
+    <string name="incall_vibrate_hangup_title">Vibrér når der lægges på</string>
+    <string name="incall_vibrate_45_title">Vibrér hvert minut</string>
+    <string name="incall_vibrate_45_summary">Vibrerer ved 45-sekunders mærket i hvert minut, under udgående opkald</string>
+    <string name="incall_dnd_dialog_message">For at aktivere Forstyr Ikke, behøver Telefon-app\'en at blive givet tilladelsen til at kontrollere Forstyr Ikke-statussen.\nTillad det venligst.</string>
+    <string name="allow">Tillad</string>
+    <string name="deny">Afvis</string>
+    <string name="call_recording_category_title">Opkaldsoptagelse</string>
+    <string name="call_recording_format">Lydformat</string>
+    <string name="call_via">Ring via</string>
+    <string name="call_via_dialog_title">Ring via\u2026</string>
+    <string name="call_log_stats_title">Statistikker</string>
+    <string name="action_menu_helplines">Hjælpelinjer</string>
+    <string name="default_dialer_text">Du skal angive Dialer som standard telefon-app for at bruge den.</string>
+    <string name="default_dialer_action">Angiv som standard</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-da/strings.xml b/java/com/android/dialer/app/res/values-da/strings.xml
index 73f92ee..a18205c 100644
--- a/java/com/android/dialer/app/res/values-da/strings.xml
+++ b/java/com/android/dialer/app/res/values-da/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Opkald</string>
-  <string name="launcherDialpadActivityLabel">Telefontastatur</string>
   <string name="callHistoryIconLabel">Opkaldshistorik</string>
   <string name="action_copy_number_text">Kopiér nummeret</string>
-  <string name="copy_transcript_text">Kopiér transskriptionen</string>
   <string name="action_edit_number_before_call">Rediger nummeret før opkald</string>
   <string name="call_log_delete_all">Ryd opkaldshistorik</string>
   <string name="call_log_trash_voicemail">Slet talemeddelelsen</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Søg efter afspilningsposition</string>
   <string name="action_menu_call_history_description">Opkaldshistorik</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Flere valgmuligheder</string>
-  <string name="action_menu_dialpad_button">tastatur</string>
   <string name="dialer_settings_label">Indstillinger</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Opret ny brugerfladegenvej</string>
   <string name="description_entering_bulk_action_mode">Massehandlingstilstanden startes</string>
   <string name="description_leaving_bulk_action_mode">Massehandlingstilstanden blev afsluttet</string>
   <string name="description_selecting_bulk_action_mode">Valgt %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videoopkald.</string>
   <string name="description_start_voice_search">Start talesøgning</string>
   <string name="voicemail">Telefonsvarer</string>
-  <string name="description_cancel_multi_select">Annuller massehandlingstilstand</string>
   <string name="voicemailMultiSelectDeleteConfirm">Slet</string>
   <string name="voicemailMultiSelectDeleteCancel">Annuller</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s er valgt</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Talesøgning er ikke tilgængelig</string>
   <string name="dialer_hint_find_contact">Søg i kontakter</string>
-  <string name="block_number_search_hint">Tilføj nummer, eller søg i kontaktpersoner</string>
   <string name="call_log_all_empty">Din opkaldshistorik er tom</string>
   <string name="call_log_all_empty_action">Foretag et opkald</string>
   <string name="call_log_missed_empty">Du har ingen ubesvarede opkald.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Opkaldshistorik</string>
   <string name="call_log_all_title">Alle</string>
   <string name="call_log_missed_title">Ubesvarede</string>
-  <string name="tab_speed_dial">Hurtigopkald</string>
-  <string name="tab_history">Opkaldshistorik</string>
   <string name="tab_all_contacts">Kontaktpersoner</string>
-  <string name="tab_voicemail">Telefonsvarer</string>
-  <string name="search_shortcut_call_number">Ring til %s</string>
   <string name="search_shortcut_create_new_contact">Opret ny kontaktperson</string>
   <string name="search_shortcut_add_to_contact">Føj til en kontaktperson</string>
   <string name="search_shortcut_send_sms_message">Send sms</string>
   <string name="search_shortcut_make_video_call">Foretag videoopkald</string>
-  <string name="search_shortcut_block_number">Bloker nummer</string>
-  <string name="speed_dial_empty">Der er endnu ingen kontaktpersoner i Hurtigopkald</string>
-  <string name="speed_dial_empty_add_favorite_action">Angiv en kontaktperson som foretrukken</string>
-  <string name="remove_contact">Fjern</string>
   <string name="select_all">Vælg alt</string>
   <string name="call_log_action_video_call">Videoopkald</string>
-  <string name="call_log_action_set_up_video">Konfigurer videoopkald</string>
-  <string name="call_log_action_invite_video">Inviter til videoopkald</string>
   <string name="call_log_action_send_message">Send en sms-besked</string>
   <string name="call_log_action_details">Opkaldsinfo</string>
   <string name="call_log_action_share_voicemail">Send til…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Opkald</string>
   <string name="manage_blocked_numbers_label">Blokerede numre</string>
   <string name="voicemail_settings_label">Telefonsvarer</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Opkaldsblokering er midlertidigt slået fra</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Opkaldsblokering er blevet deaktiveret, da du inden for de sidste 48 timer har kontaktet en alarmcentral. Blokeringen aktiveres automatisk igen, når perioden på 48 timer er udløbet.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importér numre</string>
-  <string name="blocked_call_settings_import_description">Du har tidligere angivet, at nogle opkaldere automatisk skal sendes til telefonsvareren via andre apps.</string>
-  <string name="blocked_call_settings_view_numbers_button">Se numre</string>
-  <string name="blocked_call_settings_import_button">Importér</string>
-  <string name="description_blocked_number_list_delete">Fjern blokering af nummer</string>
-  <string name="addBlockedNumber">Tilføj nummer</string>
-  <string name="block_number_footer_message_vvm">Opkald fra disse numre blokeres, og beskeder i telefonsvareren slettes automatisk.</string>
-  <string name="block_number_footer_message_no_vvm">Opkald fra disse numre bliver blokeret, men der kan muligvis stadig lægges beskeder i din telefonsvarer.</string>
-  <string name="block_list">Blokerede telefonnumre</string>
-  <string name="alreadyBlocked">%1$s er allerede blokeret.</string>
   <string name="phone_account_settings_label">Opkaldskonti</string>
-  <string name="permission_no_speeddial">Slå tilladelsen Kontaktpersoner til for at aktivere hurtigopkald.</string>
   <string name="permission_no_calllog">Slå tilladelsen Telefon til for at se din opkaldsliste.</string>
-  <string name="permission_no_search">Hvis du vil søge i dine kontaktpersoner, skal du slå tilladelserne Kontaktpersoner til.</string>
-  <string name="permission_place_call">Slå tilladelsen Telefon til for at foretage et opkald.</string>
   <string name="toast_cannot_write_system_settings">Opkaldsappen har ikke tilladelse til at ændre systemindstillinger.</string>
   <string name="blocked_number_call_log_label">Blokeret</string>
   <string name="call_log_action_block_report_number">Bloker/rapportér spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Ikke spam</string>
   <string name="call_log_action_unblock_number">Fjern blokering af nummer</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s er offline og kan ikke nås</string>
-  <string name="about_phone_label">Om</string>
-  <string name="voicemail_transcription_branding_text">Transskriberet af Google</string>
-  <string name="voicemail_transcription_in_progress">Transskriberer…</string>
-  <string name="voicemail_transcription_failed">Transskriptionen er ikke tilgængelig.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transskriptionen er ikke tilgængelig. Sproget understøttes ikke.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transskriptionen er ikke tilgængelig. Ingen tale er registreret.</string>
-  <string name="voicemail_donation_promo_title">Vil du hjælpe med at forbedre nøjagtigheden af transskriptioner?</string>
-  <string name="voicemail_donation_promo_content">Tillad, at Google gennemgår denne og fremtidige talebeskeder med transskriptioner. De gemmes anonymt. Du kan altid ændre dine indstillinger. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Ja tak</string>
-  <string name="voicemail_donation_promo_opt_out">Nej tak</string>
-  <string name="voicemail_transcription_rating">Bedøm transskriptionskvalitet</string>
-  <string name="voicemail_transcription_rating_thanks">Tak for din feedback</string>
-  <string name="description_rating_good">Giv et like</string>
-  <string name="description_rating_bad">Fjern dit like</string>
-  <string name="view_conversation">Vis</string>
-  <string name="ec_data_deleted">Opkaldet er slettet. Du kan se og slette vedhæftede filer, der er delt i forbindelse med dette opkald, i Beskeder.</string>
-  <string name="multiple_ec_data_deleted">Opkaldene er slettet. Du kan se og slette vedhæftede filer, der er delt i forbindelse med opkald, i Beskeder.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-de/cm_strings.xml b/java/com/android/dialer/app/res/values-de/cm_strings.xml
new file mode 100644
index 0000000..c126dff
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-de/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Im Gespräch</string>
+    <string name="incall_enable_dnd_title">\"Bitte nicht stören\" während Gesprächen aktivieren</string>
+    <string name="incall_vibrate_outgoing_title">Bei Annahme vibrieren</string>
+    <string name="incall_vibrate_call_waiting_title">Beim Anklopfen vibrieren</string>
+    <string name="incall_vibrate_hangup_title">Beim Auflegen vibrieren</string>
+    <string name="incall_vibrate_45_title">Jede Minute vibrieren</string>
+    <string name="incall_vibrate_45_summary">Während ausgehender Anrufe 15 Sekunden vor dem Ende jeder vollen Minute vibrieren</string>
+    <string name="incall_dnd_dialog_message">Um \"Bitte nicht stören\" zu aktivieren, benötigt die Telefon-App die Berechtigung, den \"Bitte nicht stören\"-Status zu kontrollieren.\nBitte dies erlauben.</string>
+    <string name="allow">Erlauben</string>
+    <string name="deny">Verweigern</string>
+    <string name="call_recording_category_title">Anrufaufzeichnung</string>
+    <string name="call_recording_format">Aufnahmeformat</string>
+    <string name="call_via">Anruf über</string>
+    <string name="call_via_dialog_title">Anruf über\u2026</string>
+    <string name="call_log_stats_title">Statistiken</string>
+    <string name="action_menu_helplines">Hilfe-Hotlines</string>
+    <string name="default_dialer_text">Du musst die Telefon-App als Standardtelefonie-App festlegen, um sie verwenden zu können.</string>
+    <string name="default_dialer_action">Als Standard festlegen</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-de/strings.xml b/java/com/android/dialer/app/res/values-de/strings.xml
index 2743f5c..112d566 100644
--- a/java/com/android/dialer/app/res/values-de/strings.xml
+++ b/java/com/android/dialer/app/res/values-de/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Wähltasten für Telefon</string>
   <string name="callHistoryIconLabel">Anrufliste</string>
   <string name="action_copy_number_text">Nummer kopieren</string>
-  <string name="copy_transcript_text">Transkription kopieren</string>
   <string name="action_edit_number_before_call">Nummer vor Anruf bearbeiten</string>
   <string name="call_log_delete_all">Anrufliste löschen</string>
   <string name="call_log_trash_voicemail">Mailboxnachricht löschen</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Wiedergabeposition suchen</string>
   <string name="action_menu_call_history_description">Anrufliste</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Mehr Optionen</string>
-  <string name="action_menu_dialpad_button">Wähltasten</string>
   <string name="dialer_settings_label">Einstellungen</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Verknüpfung für neue Benutzeroberfläche erstellen</string>
   <string name="description_entering_bulk_action_mode">Es wird in den Modus für Bulk-Aktionen gewechselt</string>
   <string name="description_leaving_bulk_action_mode">Der Modus für Bulk-Aktionen wurde verlassen</string>
   <string name="description_selecting_bulk_action_mode">%1$s ausgewählt</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videoanruf</string>
   <string name="description_start_voice_search">Sprachsuche starten</string>
   <string name="voicemail">Mailbox</string>
-  <string name="description_cancel_multi_select">Modus für Batch-Aktionen abbrechen</string>
   <string name="voicemailMultiSelectDeleteConfirm">Löschen</string>
   <string name="voicemailMultiSelectDeleteCancel">Abbrechen</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s ausgewählt</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Sprachsuche nicht verfügbar</string>
   <string name="dialer_hint_find_contact">In Kontakten suchen</string>
-  <string name="block_number_search_hint">Nummer hinzufügen oder in Kontakten suchen</string>
   <string name="call_log_all_empty">Deine Anrufliste ist leer</string>
   <string name="call_log_all_empty_action">Anrufen</string>
   <string name="call_log_missed_empty">Keine verpassten Anrufe</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Anrufliste</string>
   <string name="call_log_all_title">Alle</string>
   <string name="call_log_missed_title">Verpasst</string>
-  <string name="tab_speed_dial">Schnellauswahl</string>
-  <string name="tab_history">Anrufliste</string>
   <string name="tab_all_contacts">Kontakte</string>
-  <string name="tab_voicemail">Mailbox</string>
-  <string name="search_shortcut_call_number">%s wählen</string>
   <string name="search_shortcut_create_new_contact">Neuen Kontakt erstellen</string>
   <string name="search_shortcut_add_to_contact">Zu Kontakt hinzufügen</string>
   <string name="search_shortcut_send_sms_message">SMS senden</string>
   <string name="search_shortcut_make_video_call">Videoanruf starten</string>
-  <string name="search_shortcut_block_number">Nummer blockieren</string>
-  <string name="speed_dial_empty">Du hast noch keine Kurzwahl festgelegt</string>
-  <string name="speed_dial_empty_add_favorite_action">Favoriten hinzufügen</string>
-  <string name="remove_contact">Entfernen</string>
   <string name="select_all">Alle auswählen</string>
   <string name="call_log_action_video_call">Videoanruf</string>
-  <string name="call_log_action_set_up_video">Videoanrufe einrichten</string>
-  <string name="call_log_action_invite_video">Zu Videoanruf einladen</string>
   <string name="call_log_action_send_message">SMS senden</string>
   <string name="call_log_action_details">Anrufdetails</string>
   <string name="call_log_action_share_voicemail">Senden an…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Anrufe</string>
   <string name="manage_blocked_numbers_label">Blockierte Nummern</string>
   <string name="voicemail_settings_label">Mailbox</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Anrufblockierung vorübergehend aus</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Die Anrufblockierung wurde deaktiviert, weil du innerhalb der letzten 48 Stunden mit diesem Telefon den Notruf gewählt hast. Nach Ablauf dieser 48-Stunden-Frist wird die Blockierung automatisch wieder aktiviert.</string>
-  <string name="import_send_to_voicemail_numbers_label">Nummern importieren</string>
-  <string name="blocked_call_settings_import_description">Du hast zuvor einige Anrufer markiert, die automatisch über andere Apps an die Mailbox gesendet werden.</string>
-  <string name="blocked_call_settings_view_numbers_button">Nummern anzeigen</string>
-  <string name="blocked_call_settings_import_button">Importieren</string>
-  <string name="description_blocked_number_list_delete">Blockierung der Nummer aufheben</string>
-  <string name="addBlockedNumber">Nummer hinzufügen</string>
-  <string name="block_number_footer_message_vvm">Anrufe von diesen Nummern werden blockiert und Mailboxnachrichten automatisch gelöscht.</string>
-  <string name="block_number_footer_message_no_vvm">Anrufe von diesen Nummern werden blockiert. Die Anrufer haben aber unter Umständen weiterhin die Möglichkeit, dir Mailboxnachrichten zu hinterlassen.</string>
-  <string name="block_list">Blockierte Nummern</string>
-  <string name="alreadyBlocked">%1$s ist bereits blockiert.</string>
   <string name="phone_account_settings_label">Anrufkonten</string>
-  <string name="permission_no_speeddial">Aktiviere die Berechtigung \"Kontakte\", um die Kurzwahlfunktion zu verwenden.</string>
   <string name="permission_no_calllog">Aktiviere die Berechtigung \"Telefon\", um dein Anrufprotokoll abzurufen.</string>
-  <string name="permission_no_search">Aktiviere die Berechtigungen \"Kontakte\", um deine Kontakte zu suchen.</string>
-  <string name="permission_place_call">Aktiviere die Berechtigung \"Telefon\", um einen Anruf zu tätigen.</string>
   <string name="toast_cannot_write_system_settings">Die App \"Telefon\" ist nicht berechtigt, die Systemeinstellungen zu überschreiben.</string>
   <string name="blocked_number_call_log_label">Blockiert</string>
   <string name="call_log_action_block_report_number">Blockieren/Spam melden</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Kein Spam</string>
   <string name="call_log_action_unblock_number">Blockierung der Nummer aufheben</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s ist offline und nicht erreichbar</string>
-  <string name="about_phone_label">Info</string>
-  <string name="voicemail_transcription_branding_text">Transkribiert von Google</string>
-  <string name="voicemail_transcription_in_progress">Wird transkribiert…</string>
-  <string name="voicemail_transcription_failed">Transkript nicht verfügbar.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkript nicht verfügbar. Sprache wird nicht unterstützt.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkript nicht verfügbar. Keine Spracheingabe erkannt.</string>
-  <string name="voicemail_donation_promo_title">Möchtest du uns dabei helfen, die Transkriptionen zu verbessern?</string>
-  <string name="voicemail_donation_promo_content">Du kannst erlauben, dass Google diese und zukünftige Mailboxnachrichten mit Transkripten analysiert. Sie werden dazu anonym gespeichert. Du kannst die Einstellungen jederzeit ändern. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">OK</string>
-  <string name="voicemail_donation_promo_opt_out">Nein danke</string>
-  <string name="voicemail_transcription_rating">Qualität der Transkription bewerten</string>
-  <string name="voicemail_transcription_rating_thanks">Vielen Dank für dein Feedback</string>
-  <string name="description_rating_good">Gut</string>
-  <string name="description_rating_bad">Schlecht</string>
-  <string name="view_conversation">Ansehen</string>
-  <string name="ec_data_deleted">Anruf gelöscht. Du kannst in diesem Anruf geteilte Anhänge unter \"Nachrichten\" ansehen und löschen.</string>
-  <string name="multiple_ec_data_deleted">Anrufe gelöscht. Du kannst in diesen Anrufen geteilte Anhänge unter \"Nachrichten\" ansehen und löschen.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-el/cm_strings.xml b/java/com/android/dialer/app/res/values-el/cm_strings.xml
new file mode 100644
index 0000000..510741a
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-el/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Κατά την κλήση</string>
+    <string name="incall_enable_dnd_title">Ενεργοποίηση \"Μην ενοχλείτε\" κατά τη διάρκεια κλήσεων</string>
+    <string name="incall_vibrate_outgoing_title">Δόνηση στην απάντηση</string>
+    <string name="incall_vibrate_call_waiting_title">Δόνηση στην αναμονή</string>
+    <string name="incall_vibrate_hangup_title">Δόνηση στο κλείσιμο</string>
+    <string name="incall_vibrate_45_title">Δόνηση κάθε 1 λεπτό</string>
+    <string name="incall_vibrate_45_summary">Δόνηση στο 45ο δευτερόλεπτο κάθε λεπτού κατά τη διάρκεια εξερχόμενων κλήσεων</string>
+    <string name="incall_dnd_dialog_message">Για να ενεργοποιηθεί η λειτουργία \"Μην ενοχλείτε\", η εφαρμογή του Τηλεφώνου πρέπει να χορηγηθεί το δικαίωμα ελέγχου της λειτουργίας \"Μην ενοχλείτε\". \nΠαρακαλώ χορηγήστε το.</string>
+    <string name="allow">Αποδοχή</string>
+    <string name="deny">Απόρριψη</string>
+    <string name="call_recording_category_title">Καταγραφή κλήσεων</string>
+    <string name="call_recording_format">Μορφή ήχου</string>
+    <string name="call_via">Κλήση μέσω</string>
+    <string name="call_via_dialog_title">Κλήση μέσω\u2026</string>
+    <string name="call_log_stats_title">Στατιστικά</string>
+    <string name="action_menu_helplines">Γραμμές βοήθειας</string>
+    <string name="default_dialer_text">Πρέπει να ορίσετε το Τηλέφωνο ως προεπιλεγμένη εφαρμογή τηλεφώνου για να τη χρησιμοποιήσετε.</string>
+    <string name="default_dialer_action">Ορισμός ως προεπιλογή</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-el/strings.xml b/java/com/android/dialer/app/res/values-el/strings.xml
index 24eaffb..c8fb3d8 100644
--- a/java/com/android/dialer/app/res/values-el/strings.xml
+++ b/java/com/android/dialer/app/res/values-el/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Τηλέφωνο</string>
-  <string name="launcherDialpadActivityLabel">Πληκτρολόγιο τηλεφώνου</string>
   <string name="callHistoryIconLabel">Ιστορικό κλήσεων</string>
   <string name="action_copy_number_text">Αντιγραφή αριθμού</string>
-  <string name="copy_transcript_text">Αντιγραφή μεταγραφής</string>
   <string name="action_edit_number_before_call">Επεξεργασία αριθμού πριν την κλήση</string>
   <string name="call_log_delete_all">Διαγραφή ιστορικού κλήσεων</string>
   <string name="call_log_trash_voicemail">Διαγραφή αυτόματου τηλεφωνητή</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Αναζήτηση θέσης αναπαραγωγής</string>
   <string name="action_menu_call_history_description">Ιστορικό κλήσεων</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Περισσότερες επιλογές</string>
-  <string name="action_menu_dialpad_button">πληκτρολόγιο</string>
   <string name="dialer_settings_label">Ρυθμίσεις</string>
-  <string name="simulator_submenu_label">Προσομοιωτής</string>
-  <string name="new_ui_launcher_shortcut_label">Δημ. νέας συντόμ. διεπαφής</string>
   <string name="description_entering_bulk_action_mode">Εισαγωγή στη λειτουργία μαζικών ενεργειών</string>
   <string name="description_leaving_bulk_action_mode">Αποχώρηση από τη λειτουργία μαζικών ενεργειών</string>
   <string name="description_selecting_bulk_action_mode">Έγινε επιλογή %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Βιντεοκλήση.</string>
   <string name="description_start_voice_search">Έναρξη φωνητικής αναζήτησης</string>
   <string name="voicemail">Αυτόματος τηλεφωνητής</string>
-  <string name="description_cancel_multi_select">Ακύρωση λειτουργίας μαζικών ενεργειών</string>
   <string name="voicemailMultiSelectDeleteConfirm">Διαγραφή</string>
   <string name="voicemailMultiSelectDeleteCancel">Ακύρωση</string>
   <string name="voicemailMultiSelectActionBarTitle">Έχουν επιλεγεί %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Η φωνητική αναζήτηση δεν είναι διαθέσιμη</string>
   <string name="dialer_hint_find_contact">Αναζήτηση επαφών</string>
-  <string name="block_number_search_hint">Προσθήκη αριθμού ή αναζήτηση επαφών</string>
   <string name="call_log_all_empty">Το ιστορικό κλήσεων είναι κενό</string>
   <string name="call_log_all_empty_action">Πραγματοποίηση κλήσης</string>
   <string name="call_log_missed_empty">Δεν υπάρχουν αναπάντητες κλήσεις.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Ιστορικό κλήσεων</string>
   <string name="call_log_all_title">Όλα</string>
   <string name="call_log_missed_title">Αναπάντητες</string>
-  <string name="tab_speed_dial">Γρήγορη κλήση</string>
-  <string name="tab_history">Ιστορικό κλήσεων</string>
   <string name="tab_all_contacts">Επαφές</string>
-  <string name="tab_voicemail">Αυτόματος τηλεφωνητής</string>
-  <string name="search_shortcut_call_number">Κλήση %s</string>
   <string name="search_shortcut_create_new_contact">Δημιουργία νέας επαφής</string>
   <string name="search_shortcut_add_to_contact">Προσθήκη σε μια επαφή</string>
   <string name="search_shortcut_send_sms_message">Αποστολή SMS</string>
   <string name="search_shortcut_make_video_call">Πραγματοποίηση βιντεοκλήσης</string>
-  <string name="search_shortcut_block_number">Αποκλεισμός αριθμού</string>
-  <string name="speed_dial_empty">Δεν έχετε ορίσει ακόμη κάποια επαφή στις ταχείες κλήσεις</string>
-  <string name="speed_dial_empty_add_favorite_action">Προσθέστε ένα αγαπημένο</string>
-  <string name="remove_contact">Κατάργηση</string>
   <string name="select_all">Επιλογή όλων</string>
   <string name="call_log_action_video_call">Βιντεοκλήση</string>
-  <string name="call_log_action_set_up_video">Ρύθμιση βιντεοκλήσεων</string>
-  <string name="call_log_action_invite_video">Πρόσκληση σε βιντεοκλήση</string>
   <string name="call_log_action_send_message">Αποστολή μηνύματος</string>
   <string name="call_log_action_details">Λεπτομέρειες κλήσης</string>
   <string name="call_log_action_share_voicemail">Αποστολή προς …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Κλήσεις</string>
   <string name="manage_blocked_numbers_label">Αποκλεισμένοι αριθμοί</string>
   <string name="voicemail_settings_label">Αυτόματος τηλεφωνητής</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Προσωρινά απενεργοποιημένη φραγή κλήσεων</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Η φραγή κλήσεων έχει απενεργοποιηθεί προσωρινά επειδή επικοινωνήσατε με τις υπηρεσίες έκτακτης ανάγκης από αυτό το τηλέφωνο μέσα στις τελευταίες 48 ώρες. Θα ενεργοποιηθεί ξανά αυτόματα μόλις λήξει η περίοδος των 48 ωρών.</string>
-  <string name="import_send_to_voicemail_numbers_label">Εισαγωγή αριθμών</string>
-  <string name="blocked_call_settings_import_description">Στο παρελθόν ρυθμίσατε ορισμένους καλούντες ώστε να αποστέλλονται αυτόματα στον τηλεφωνητή μέσω άλλων εφαρμογών.</string>
-  <string name="blocked_call_settings_view_numbers_button">Προβολή αριθμών</string>
-  <string name="blocked_call_settings_import_button">Εισαγωγή</string>
-  <string name="description_blocked_number_list_delete">Κατάργηση αποκλεισμού αριθμού</string>
-  <string name="addBlockedNumber">Προσθήκη αριθμού</string>
-  <string name="block_number_footer_message_vvm">Οι κλήσεις από αυτούς τους αριθμούς θα αποκλείονται και τα μηνύματα στον αυτόματο τηλεφωνητή θα διαγράφονται αυτόματα.</string>
-  <string name="block_number_footer_message_no_vvm">Οι κλήσεις από αυτούς τους αριθμούς θα αποκλείονται, αλλά ενδέχεται να λαμβάνετε από αυτούς μηνύματα στον αυτόματο τηλεφωνητή.</string>
-  <string name="block_list">Αποκλεισμένοι αριθμοί</string>
-  <string name="alreadyBlocked">Ο αριθμός %1$s αποκλείστηκε ήδη.</string>
   <string name="phone_account_settings_label">Λογαριασμοί κλήσης</string>
-  <string name="permission_no_speeddial">Για να ενεργοποιήσετε την ταχεία κλήση, ενεργοποιήστε την άδεια επαφών.</string>
   <string name="permission_no_calllog">Για να δείτε το αρχείο καταγραφής κλήσεών σας, ενεργοποιήστε την άδεια τηλεφώνου.</string>
-  <string name="permission_no_search">Για να κάνετε αναζήτηση στις επαφές σας, ενεργοποιήστε τις άδειες \"Επαφές\".</string>
-  <string name="permission_place_call">Για να πραγματοποιήσετε μια κλήση, ενεργοποιήστε την άδεια τηλεφώνου.</string>
   <string name="toast_cannot_write_system_settings">Η εφαρμογή \"Τηλέφωνο\" δεν έχει άδεια εγγραφής στις ρυθμίσεις συστήματος.</string>
   <string name="blocked_number_call_log_label">Αποκλεισμένο</string>
   <string name="call_log_action_block_report_number">Αποκλεισμός/αναφορά ανεπιθύμ.</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Μη ανεπιθύμητος</string>
   <string name="call_log_action_unblock_number">Κατάργηση αποκλεισμού αριθμού</string>
   <string name="spam_number_call_log_label">Ανεπιθύμητα</string>
-  <string name="call_composer_connection_failed">Ο χρήστης %1$s είναι εκτός σύνδεσης και δεν μπορείτε να έρθετε σε επικοινωνία μαζί του</string>
-  <string name="about_phone_label">Πληροφορίες</string>
-  <string name="voicemail_transcription_branding_text">Μεταγραφή από την Google</string>
-  <string name="voicemail_transcription_in_progress">Μεταγραφή…</string>
-  <string name="voicemail_transcription_failed">Δεν υπάρχει διαθέσιμη μεταγραφή.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Δεν υπάρχει διαθέσιμη μεταγραφή. Μη υποστηριζόμενη γλώσσα.</string>
-  <string name="voicemail_transcription_failed_no_speech">Δεν υπάρχει διαθέσιμη μεταγραφή. Δεν εντοπίστηκε ομιλία.</string>
-  <string name="voicemail_donation_promo_title">Θέλετε να βοηθήσετε στη βελτίωση της ακρίβειας της μεταγραφής;</string>
-  <string name="voicemail_donation_promo_content">Επιτρέψτε στην Google να ελέγξει αυτό, αλλά και τυχόν μελλοντικά μηνύματα φωνητικού ταχυδρομείου με μεταγραφή. Θα αποθηκευτούν ανώνυμα. Μπορείτε να αλλάξετε τις Ρυθμίσεις ανά πάσα στιγμή. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Ναι, συμφωνώ</string>
-  <string name="voicemail_donation_promo_opt_out">Όχι, ευχαριστώ</string>
-  <string name="voicemail_transcription_rating">Αξιολόγ. ποιότητας μεταγραφής</string>
-  <string name="voicemail_transcription_rating_thanks">Ευχαριστούμε για τα σχόλιά σας</string>
-  <string name="description_rating_good">Μου αρέσει</string>
-  <string name="description_rating_bad">Δεν αρέσει</string>
-  <string name="view_conversation">Προβολή</string>
-  <string name="ec_data_deleted">Η κλήση διαγράφηκε. Προβάλετε και διαγράψτε τα συνημμένα που κοινοποιήθηκαν κατά τη διάρκεια αυτής της κλήσης στο Messages.</string>
-  <string name="multiple_ec_data_deleted">Οι κλήσεις διαγράφηκαν. Προβάλετε και διαγράψτε τα συνημμένα που κοινοποιήθηκαν κατά τη διάρκεια αυτών των κλήσεων στο Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-en-rAU/cm_strings.xml b/java/com/android/dialer/app/res/values-en-rAU/cm_strings.xml
new file mode 100644
index 0000000..c2354fd
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-en-rAU/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">In-call</string>
+    <string name="incall_enable_dnd_title">Enable Do Not Disturb during calls</string>
+    <string name="incall_vibrate_outgoing_title">Vibrate on answer</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrate on call waiting</string>
+    <string name="incall_vibrate_hangup_title">Vibrate on hang up</string>
+    <string name="incall_vibrate_45_title">Vibrate every minute</string>
+    <string name="incall_vibrate_45_summary">Vibrates at the 45 second mark of every minute during outgoing calls</string>
+    <string name="incall_dnd_dialog_message">In order to enable Do Not Disturb, the Phone app needs to be granted the permission to control the Do Not Disturb status.\nPlease allow it.</string>
+    <string name="allow">Allow</string>
+    <string name="deny">Deny</string>
+    <string name="call_recording_category_title">Call recording</string>
+    <string name="call_recording_format">Audio format</string>
+    <string name="call_via">Call via</string>
+    <string name="call_via_dialog_title">Call via\u2026</string>
+    <string name="call_log_stats_title">Statistics</string>
+    <string name="action_menu_helplines">Helplines</string>
+    <string name="default_dialer_text">You must set Dialler as the default phone app to use it.</string>
+    <string name="default_dialer_action">Set as default</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-en-rAU/strings.xml b/java/com/android/dialer/app/res/values-en-rAU/strings.xml
index 65f56f1..3825948 100644
--- a/java/com/android/dialer/app/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rAU/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Phone</string>
-  <string name="launcherDialpadActivityLabel">Phone keypad</string>
   <string name="callHistoryIconLabel">Call history</string>
   <string name="action_copy_number_text">Copy number</string>
-  <string name="copy_transcript_text">Copy transcription</string>
   <string name="action_edit_number_before_call">Edit number before call</string>
   <string name="call_log_delete_all">Clear call history</string>
   <string name="call_log_trash_voicemail">Delete voicemail</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Seek playback position</string>
   <string name="action_menu_call_history_description">Call history</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">More options</string>
-  <string name="action_menu_dialpad_button">key pad</string>
   <string name="dialer_settings_label">Settings</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Create new UI shortcut</string>
   <string name="description_entering_bulk_action_mode">Entering bulk action mode</string>
   <string name="description_leaving_bulk_action_mode">Left bulk action mode</string>
   <string name="description_selecting_bulk_action_mode">Selected %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Video call.</string>
   <string name="description_start_voice_search">Start voice search</string>
   <string name="voicemail">Voicemail</string>
-  <string name="description_cancel_multi_select">Cancel batch actions mode</string>
   <string name="voicemailMultiSelectDeleteConfirm">Delete</string>
   <string name="voicemailMultiSelectDeleteCancel">Cancel</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s selected</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Voice search not available</string>
   <string name="dialer_hint_find_contact">Search contacts</string>
-  <string name="block_number_search_hint">Add number or search contacts</string>
   <string name="call_log_all_empty">Your call history is empty</string>
   <string name="call_log_all_empty_action">Make a call</string>
   <string name="call_log_missed_empty">You have no missed calls.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Call history</string>
   <string name="call_log_all_title">All</string>
   <string name="call_log_missed_title">Missed</string>
-  <string name="tab_speed_dial">Speed dial</string>
-  <string name="tab_history">Call history</string>
   <string name="tab_all_contacts">Contacts</string>
-  <string name="tab_voicemail">Voicemail</string>
-  <string name="search_shortcut_call_number">Call %s</string>
   <string name="search_shortcut_create_new_contact">Create new contact</string>
   <string name="search_shortcut_add_to_contact">Add to a contact</string>
   <string name="search_shortcut_send_sms_message">Send SMS</string>
   <string name="search_shortcut_make_video_call">Make video call</string>
-  <string name="search_shortcut_block_number">Block number</string>
-  <string name="speed_dial_empty">No one is on your speed dial yet</string>
-  <string name="speed_dial_empty_add_favorite_action">Add a favourite</string>
-  <string name="remove_contact">Remove</string>
   <string name="select_all">Select all</string>
   <string name="call_log_action_video_call">Video call</string>
-  <string name="call_log_action_set_up_video">Set up video calling</string>
-  <string name="call_log_action_invite_video">Invite to video call</string>
   <string name="call_log_action_send_message">Send a message</string>
   <string name="call_log_action_details">Call details</string>
   <string name="call_log_action_share_voicemail">Send to…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Calls</string>
   <string name="manage_blocked_numbers_label">Blocked numbers</string>
   <string name="voicemail_settings_label">Voicemail</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Call blocking temporarily off</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Call blocking has been disabled because you contacted emergency services from this phone within the last 48 hours. It will be automatically re-enabled once the 48 hour period expires.</string>
-  <string name="import_send_to_voicemail_numbers_label">Import numbers</string>
-  <string name="blocked_call_settings_import_description">You previously marked some callers to be automatically sent to voicemail via other apps.</string>
-  <string name="blocked_call_settings_view_numbers_button">View Numbers</string>
-  <string name="blocked_call_settings_import_button">Import</string>
-  <string name="description_blocked_number_list_delete">Unblock number</string>
-  <string name="addBlockedNumber">Add number</string>
-  <string name="block_number_footer_message_vvm">Calls from these numbers will be blocked and voicemails will be automatically deleted.</string>
-  <string name="block_number_footer_message_no_vvm">Calls from these numbers will be blocked, but they may still be able to leave you voicemails.</string>
-  <string name="block_list">Blocked numbers</string>
-  <string name="alreadyBlocked">%1$s is already blocked.</string>
   <string name="phone_account_settings_label">Calling accounts</string>
-  <string name="permission_no_speeddial">To enable speed dial, turn on the Contacts permission.</string>
   <string name="permission_no_calllog">To see your call log, turn on the Phone permission.</string>
-  <string name="permission_no_search">To search your contacts, turn on the Contacts permissions.</string>
-  <string name="permission_place_call">To place a call, turn on the Phone permission.</string>
   <string name="toast_cannot_write_system_settings">Phone app does not have permission to write to system settings.</string>
   <string name="blocked_number_call_log_label">Blocked</string>
   <string name="call_log_action_block_report_number">Block/report spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Not spam</string>
   <string name="call_log_action_unblock_number">Unblock number</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s is offline and can\'t be reached</string>
-  <string name="about_phone_label">About</string>
-  <string name="voicemail_transcription_branding_text">Transcribed by Google</string>
-  <string name="voicemail_transcription_in_progress">Transcribing…</string>
-  <string name="voicemail_transcription_failed">Transcript not available.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcript not available. Language not supported.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcript not available. No speech detected.</string>
-  <string name="voicemail_donation_promo_title">Help improve transcription accuracy?</string>
-  <string name="voicemail_donation_promo_content">Let Google review this and future voicemail messages with transcripts. They\'ll be stored anonymously. Change Settings at any time. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Yes, I\'m in</string>
-  <string name="voicemail_donation_promo_opt_out">No thanks</string>
-  <string name="voicemail_transcription_rating">Rate transcription quality</string>
-  <string name="voicemail_transcription_rating_thanks">Thanks for your feedback</string>
-  <string name="description_rating_good">Like</string>
-  <string name="description_rating_bad">Dislike</string>
-  <string name="view_conversation">View</string>
-  <string name="ec_data_deleted">Call deleted. View and delete attachments shared during this call in Messages.</string>
-  <string name="multiple_ec_data_deleted">Calls deleted. View and delete attachments shared during calls in Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-en-rCA/cm_strings.xml b/java/com/android/dialer/app/res/values-en-rCA/cm_strings.xml
new file mode 100644
index 0000000..50c6b4b
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-en-rCA/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">In-call</string>
+    <string name="incall_enable_dnd_title">Enable Do Not Disturb during calls</string>
+    <string name="incall_vibrate_outgoing_title">Vibrate on answer</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrate on call waiting</string>
+    <string name="incall_vibrate_hangup_title">Vibrate on hang up</string>
+    <string name="incall_vibrate_45_title">Vibrate every minute</string>
+    <string name="incall_vibrate_45_summary">Vibrates at the 45 second mark of every minute during outgoing calls</string>
+    <string name="incall_dnd_dialog_message">In order to enable Do Not Disturb, the Phone app needs to be granted the permission to control the Do Not Disturb status.\nPlease allow it.</string>
+    <string name="allow">Allow</string>
+    <string name="deny">Deny</string>
+    <string name="call_recording_category_title">Call recording</string>
+    <string name="call_recording_format">Audio format</string>
+    <string name="call_via">Call via</string>
+    <string name="call_via_dialog_title">Call via\u2026</string>
+    <string name="call_log_stats_title">Statistics</string>
+    <string name="action_menu_helplines">Helplines</string>
+    <string name="default_dialer_text">You must set Dialer as the default phone app to use it.</string>
+    <string name="default_dialer_action">Set as default</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-en-rGB/cm_strings.xml b/java/com/android/dialer/app/res/values-en-rGB/cm_strings.xml
new file mode 100644
index 0000000..c2354fd
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-en-rGB/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">In-call</string>
+    <string name="incall_enable_dnd_title">Enable Do Not Disturb during calls</string>
+    <string name="incall_vibrate_outgoing_title">Vibrate on answer</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrate on call waiting</string>
+    <string name="incall_vibrate_hangup_title">Vibrate on hang up</string>
+    <string name="incall_vibrate_45_title">Vibrate every minute</string>
+    <string name="incall_vibrate_45_summary">Vibrates at the 45 second mark of every minute during outgoing calls</string>
+    <string name="incall_dnd_dialog_message">In order to enable Do Not Disturb, the Phone app needs to be granted the permission to control the Do Not Disturb status.\nPlease allow it.</string>
+    <string name="allow">Allow</string>
+    <string name="deny">Deny</string>
+    <string name="call_recording_category_title">Call recording</string>
+    <string name="call_recording_format">Audio format</string>
+    <string name="call_via">Call via</string>
+    <string name="call_via_dialog_title">Call via\u2026</string>
+    <string name="call_log_stats_title">Statistics</string>
+    <string name="action_menu_helplines">Helplines</string>
+    <string name="default_dialer_text">You must set Dialler as the default phone app to use it.</string>
+    <string name="default_dialer_action">Set as default</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-en-rGB/strings.xml b/java/com/android/dialer/app/res/values-en-rGB/strings.xml
index 65f56f1..3825948 100644
--- a/java/com/android/dialer/app/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rGB/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Phone</string>
-  <string name="launcherDialpadActivityLabel">Phone keypad</string>
   <string name="callHistoryIconLabel">Call history</string>
   <string name="action_copy_number_text">Copy number</string>
-  <string name="copy_transcript_text">Copy transcription</string>
   <string name="action_edit_number_before_call">Edit number before call</string>
   <string name="call_log_delete_all">Clear call history</string>
   <string name="call_log_trash_voicemail">Delete voicemail</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Seek playback position</string>
   <string name="action_menu_call_history_description">Call history</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">More options</string>
-  <string name="action_menu_dialpad_button">key pad</string>
   <string name="dialer_settings_label">Settings</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Create new UI shortcut</string>
   <string name="description_entering_bulk_action_mode">Entering bulk action mode</string>
   <string name="description_leaving_bulk_action_mode">Left bulk action mode</string>
   <string name="description_selecting_bulk_action_mode">Selected %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Video call.</string>
   <string name="description_start_voice_search">Start voice search</string>
   <string name="voicemail">Voicemail</string>
-  <string name="description_cancel_multi_select">Cancel batch actions mode</string>
   <string name="voicemailMultiSelectDeleteConfirm">Delete</string>
   <string name="voicemailMultiSelectDeleteCancel">Cancel</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s selected</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Voice search not available</string>
   <string name="dialer_hint_find_contact">Search contacts</string>
-  <string name="block_number_search_hint">Add number or search contacts</string>
   <string name="call_log_all_empty">Your call history is empty</string>
   <string name="call_log_all_empty_action">Make a call</string>
   <string name="call_log_missed_empty">You have no missed calls.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Call history</string>
   <string name="call_log_all_title">All</string>
   <string name="call_log_missed_title">Missed</string>
-  <string name="tab_speed_dial">Speed dial</string>
-  <string name="tab_history">Call history</string>
   <string name="tab_all_contacts">Contacts</string>
-  <string name="tab_voicemail">Voicemail</string>
-  <string name="search_shortcut_call_number">Call %s</string>
   <string name="search_shortcut_create_new_contact">Create new contact</string>
   <string name="search_shortcut_add_to_contact">Add to a contact</string>
   <string name="search_shortcut_send_sms_message">Send SMS</string>
   <string name="search_shortcut_make_video_call">Make video call</string>
-  <string name="search_shortcut_block_number">Block number</string>
-  <string name="speed_dial_empty">No one is on your speed dial yet</string>
-  <string name="speed_dial_empty_add_favorite_action">Add a favourite</string>
-  <string name="remove_contact">Remove</string>
   <string name="select_all">Select all</string>
   <string name="call_log_action_video_call">Video call</string>
-  <string name="call_log_action_set_up_video">Set up video calling</string>
-  <string name="call_log_action_invite_video">Invite to video call</string>
   <string name="call_log_action_send_message">Send a message</string>
   <string name="call_log_action_details">Call details</string>
   <string name="call_log_action_share_voicemail">Send to…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Calls</string>
   <string name="manage_blocked_numbers_label">Blocked numbers</string>
   <string name="voicemail_settings_label">Voicemail</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Call blocking temporarily off</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Call blocking has been disabled because you contacted emergency services from this phone within the last 48 hours. It will be automatically re-enabled once the 48 hour period expires.</string>
-  <string name="import_send_to_voicemail_numbers_label">Import numbers</string>
-  <string name="blocked_call_settings_import_description">You previously marked some callers to be automatically sent to voicemail via other apps.</string>
-  <string name="blocked_call_settings_view_numbers_button">View Numbers</string>
-  <string name="blocked_call_settings_import_button">Import</string>
-  <string name="description_blocked_number_list_delete">Unblock number</string>
-  <string name="addBlockedNumber">Add number</string>
-  <string name="block_number_footer_message_vvm">Calls from these numbers will be blocked and voicemails will be automatically deleted.</string>
-  <string name="block_number_footer_message_no_vvm">Calls from these numbers will be blocked, but they may still be able to leave you voicemails.</string>
-  <string name="block_list">Blocked numbers</string>
-  <string name="alreadyBlocked">%1$s is already blocked.</string>
   <string name="phone_account_settings_label">Calling accounts</string>
-  <string name="permission_no_speeddial">To enable speed dial, turn on the Contacts permission.</string>
   <string name="permission_no_calllog">To see your call log, turn on the Phone permission.</string>
-  <string name="permission_no_search">To search your contacts, turn on the Contacts permissions.</string>
-  <string name="permission_place_call">To place a call, turn on the Phone permission.</string>
   <string name="toast_cannot_write_system_settings">Phone app does not have permission to write to system settings.</string>
   <string name="blocked_number_call_log_label">Blocked</string>
   <string name="call_log_action_block_report_number">Block/report spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Not spam</string>
   <string name="call_log_action_unblock_number">Unblock number</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s is offline and can\'t be reached</string>
-  <string name="about_phone_label">About</string>
-  <string name="voicemail_transcription_branding_text">Transcribed by Google</string>
-  <string name="voicemail_transcription_in_progress">Transcribing…</string>
-  <string name="voicemail_transcription_failed">Transcript not available.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcript not available. Language not supported.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcript not available. No speech detected.</string>
-  <string name="voicemail_donation_promo_title">Help improve transcription accuracy?</string>
-  <string name="voicemail_donation_promo_content">Let Google review this and future voicemail messages with transcripts. They\'ll be stored anonymously. Change Settings at any time. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Yes, I\'m in</string>
-  <string name="voicemail_donation_promo_opt_out">No thanks</string>
-  <string name="voicemail_transcription_rating">Rate transcription quality</string>
-  <string name="voicemail_transcription_rating_thanks">Thanks for your feedback</string>
-  <string name="description_rating_good">Like</string>
-  <string name="description_rating_bad">Dislike</string>
-  <string name="view_conversation">View</string>
-  <string name="ec_data_deleted">Call deleted. View and delete attachments shared during this call in Messages.</string>
-  <string name="multiple_ec_data_deleted">Calls deleted. View and delete attachments shared during calls in Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-en-rIN/cm_strings.xml b/java/com/android/dialer/app/res/values-en-rIN/cm_strings.xml
new file mode 100644
index 0000000..c2354fd
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-en-rIN/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">In-call</string>
+    <string name="incall_enable_dnd_title">Enable Do Not Disturb during calls</string>
+    <string name="incall_vibrate_outgoing_title">Vibrate on answer</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrate on call waiting</string>
+    <string name="incall_vibrate_hangup_title">Vibrate on hang up</string>
+    <string name="incall_vibrate_45_title">Vibrate every minute</string>
+    <string name="incall_vibrate_45_summary">Vibrates at the 45 second mark of every minute during outgoing calls</string>
+    <string name="incall_dnd_dialog_message">In order to enable Do Not Disturb, the Phone app needs to be granted the permission to control the Do Not Disturb status.\nPlease allow it.</string>
+    <string name="allow">Allow</string>
+    <string name="deny">Deny</string>
+    <string name="call_recording_category_title">Call recording</string>
+    <string name="call_recording_format">Audio format</string>
+    <string name="call_via">Call via</string>
+    <string name="call_via_dialog_title">Call via\u2026</string>
+    <string name="call_log_stats_title">Statistics</string>
+    <string name="action_menu_helplines">Helplines</string>
+    <string name="default_dialer_text">You must set Dialler as the default phone app to use it.</string>
+    <string name="default_dialer_action">Set as default</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-en-rIN/strings.xml b/java/com/android/dialer/app/res/values-en-rIN/strings.xml
index 65f56f1..3825948 100644
--- a/java/com/android/dialer/app/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/app/res/values-en-rIN/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Phone</string>
-  <string name="launcherDialpadActivityLabel">Phone keypad</string>
   <string name="callHistoryIconLabel">Call history</string>
   <string name="action_copy_number_text">Copy number</string>
-  <string name="copy_transcript_text">Copy transcription</string>
   <string name="action_edit_number_before_call">Edit number before call</string>
   <string name="call_log_delete_all">Clear call history</string>
   <string name="call_log_trash_voicemail">Delete voicemail</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Seek playback position</string>
   <string name="action_menu_call_history_description">Call history</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">More options</string>
-  <string name="action_menu_dialpad_button">key pad</string>
   <string name="dialer_settings_label">Settings</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Create new UI shortcut</string>
   <string name="description_entering_bulk_action_mode">Entering bulk action mode</string>
   <string name="description_leaving_bulk_action_mode">Left bulk action mode</string>
   <string name="description_selecting_bulk_action_mode">Selected %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Video call.</string>
   <string name="description_start_voice_search">Start voice search</string>
   <string name="voicemail">Voicemail</string>
-  <string name="description_cancel_multi_select">Cancel batch actions mode</string>
   <string name="voicemailMultiSelectDeleteConfirm">Delete</string>
   <string name="voicemailMultiSelectDeleteCancel">Cancel</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s selected</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Voice search not available</string>
   <string name="dialer_hint_find_contact">Search contacts</string>
-  <string name="block_number_search_hint">Add number or search contacts</string>
   <string name="call_log_all_empty">Your call history is empty</string>
   <string name="call_log_all_empty_action">Make a call</string>
   <string name="call_log_missed_empty">You have no missed calls.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Call history</string>
   <string name="call_log_all_title">All</string>
   <string name="call_log_missed_title">Missed</string>
-  <string name="tab_speed_dial">Speed dial</string>
-  <string name="tab_history">Call history</string>
   <string name="tab_all_contacts">Contacts</string>
-  <string name="tab_voicemail">Voicemail</string>
-  <string name="search_shortcut_call_number">Call %s</string>
   <string name="search_shortcut_create_new_contact">Create new contact</string>
   <string name="search_shortcut_add_to_contact">Add to a contact</string>
   <string name="search_shortcut_send_sms_message">Send SMS</string>
   <string name="search_shortcut_make_video_call">Make video call</string>
-  <string name="search_shortcut_block_number">Block number</string>
-  <string name="speed_dial_empty">No one is on your speed dial yet</string>
-  <string name="speed_dial_empty_add_favorite_action">Add a favourite</string>
-  <string name="remove_contact">Remove</string>
   <string name="select_all">Select all</string>
   <string name="call_log_action_video_call">Video call</string>
-  <string name="call_log_action_set_up_video">Set up video calling</string>
-  <string name="call_log_action_invite_video">Invite to video call</string>
   <string name="call_log_action_send_message">Send a message</string>
   <string name="call_log_action_details">Call details</string>
   <string name="call_log_action_share_voicemail">Send to…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Calls</string>
   <string name="manage_blocked_numbers_label">Blocked numbers</string>
   <string name="voicemail_settings_label">Voicemail</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Call blocking temporarily off</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Call blocking has been disabled because you contacted emergency services from this phone within the last 48 hours. It will be automatically re-enabled once the 48 hour period expires.</string>
-  <string name="import_send_to_voicemail_numbers_label">Import numbers</string>
-  <string name="blocked_call_settings_import_description">You previously marked some callers to be automatically sent to voicemail via other apps.</string>
-  <string name="blocked_call_settings_view_numbers_button">View Numbers</string>
-  <string name="blocked_call_settings_import_button">Import</string>
-  <string name="description_blocked_number_list_delete">Unblock number</string>
-  <string name="addBlockedNumber">Add number</string>
-  <string name="block_number_footer_message_vvm">Calls from these numbers will be blocked and voicemails will be automatically deleted.</string>
-  <string name="block_number_footer_message_no_vvm">Calls from these numbers will be blocked, but they may still be able to leave you voicemails.</string>
-  <string name="block_list">Blocked numbers</string>
-  <string name="alreadyBlocked">%1$s is already blocked.</string>
   <string name="phone_account_settings_label">Calling accounts</string>
-  <string name="permission_no_speeddial">To enable speed dial, turn on the Contacts permission.</string>
   <string name="permission_no_calllog">To see your call log, turn on the Phone permission.</string>
-  <string name="permission_no_search">To search your contacts, turn on the Contacts permissions.</string>
-  <string name="permission_place_call">To place a call, turn on the Phone permission.</string>
   <string name="toast_cannot_write_system_settings">Phone app does not have permission to write to system settings.</string>
   <string name="blocked_number_call_log_label">Blocked</string>
   <string name="call_log_action_block_report_number">Block/report spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Not spam</string>
   <string name="call_log_action_unblock_number">Unblock number</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s is offline and can\'t be reached</string>
-  <string name="about_phone_label">About</string>
-  <string name="voicemail_transcription_branding_text">Transcribed by Google</string>
-  <string name="voicemail_transcription_in_progress">Transcribing…</string>
-  <string name="voicemail_transcription_failed">Transcript not available.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcript not available. Language not supported.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcript not available. No speech detected.</string>
-  <string name="voicemail_donation_promo_title">Help improve transcription accuracy?</string>
-  <string name="voicemail_donation_promo_content">Let Google review this and future voicemail messages with transcripts. They\'ll be stored anonymously. Change Settings at any time. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Yes, I\'m in</string>
-  <string name="voicemail_donation_promo_opt_out">No thanks</string>
-  <string name="voicemail_transcription_rating">Rate transcription quality</string>
-  <string name="voicemail_transcription_rating_thanks">Thanks for your feedback</string>
-  <string name="description_rating_good">Like</string>
-  <string name="description_rating_bad">Dislike</string>
-  <string name="view_conversation">View</string>
-  <string name="ec_data_deleted">Call deleted. View and delete attachments shared during this call in Messages.</string>
-  <string name="multiple_ec_data_deleted">Calls deleted. View and delete attachments shared during calls in Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-es-rUS/cm_strings.xml b/java/com/android/dialer/app/res/values-es-rUS/cm_strings.xml
new file mode 100644
index 0000000..a987213
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-es-rUS/cm_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Llamada entrante</string>
+    <string name="incall_enable_dnd_title">Activar «No molestar» durante las llamadas</string>
+    <string name="incall_vibrate_outgoing_title">Vibrar al contestar</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrar en llamada de espera</string>
+    <string name="incall_vibrate_hangup_title">Vibrar al colgar</string>
+    <string name="incall_vibrate_45_title">Vibrar cada minuto</string>
+    <string name="incall_vibrate_45_summary">Vibrar a los 45 segundos de cada minuto durante llamadas salientes</string>
+    <string name="incall_dnd_dialog_message">Para activar «No molestar», la aplicación de teléfono debe tener permiso para controlar el estado de «No molestar». \nPermite esto.</string>
+    <string name="allow">Permitir</string>
+    <string name="deny">Denegar</string>
+    <string name="call_recording_category_title">Grabación de llamadas</string>
+    <string name="call_recording_format">Formato de audio</string>
+    <string name="call_via">Llamar mediante</string>
+    <string name="call_via_dialog_title">Llamar mediante\u2026</string>
+    <string name="call_log_stats_title">Estadísticas</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-es-rUS/strings.xml b/java/com/android/dialer/app/res/values-es-rUS/strings.xml
index 2431fd4..c6fafe0 100644
--- a/java/com/android/dialer/app/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/app/res/values-es-rUS/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Teléfono</string>
-  <string name="launcherDialpadActivityLabel">Teclado del teléfono</string>
   <string name="callHistoryIconLabel">Historial de llamadas</string>
   <string name="action_copy_number_text">Copiar número</string>
-  <string name="copy_transcript_text">Copiar transcripción</string>
   <string name="action_edit_number_before_call">Editar número antes de realizar llamada</string>
   <string name="call_log_delete_all">Eliminar el historial de llamadas</string>
   <string name="call_log_trash_voicemail">Borrar correo de voz</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Busca la posición de reproducción</string>
   <string name="action_menu_call_history_description">Historial de llamadas</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Más opciones</string>
-  <string name="action_menu_dialpad_button">teclado</string>
   <string name="dialer_settings_label">Configuración</string>
-  <string name="simulator_submenu_label">Simulador</string>
-  <string name="new_ui_launcher_shortcut_label">Crear acceso a la nueva IU</string>
   <string name="description_entering_bulk_action_mode">Entrando al modo de acción masiva</string>
   <string name="description_leaving_bulk_action_mode">Saliendo del modo de acción masiva</string>
   <string name="description_selecting_bulk_action_mode">Se seleccionó %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videollamada</string>
   <string name="description_start_voice_search">Iniciar búsqueda por voz</string>
   <string name="voicemail">Correo de voz</string>
-  <string name="description_cancel_multi_select">Cancelar el modo de acción masiva</string>
   <string name="voicemailMultiSelectDeleteConfirm">Borrar</string>
   <string name="voicemailMultiSelectDeleteCancel">Cancelar</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s seleccionada(s)</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Búsqueda por voz no disponible</string>
   <string name="dialer_hint_find_contact">Buscar contactos</string>
-  <string name="block_number_search_hint">Agregar número o buscar contactos</string>
   <string name="call_log_all_empty">El historial de llamadas está vacío.</string>
   <string name="call_log_all_empty_action">Hacer una llamada</string>
   <string name="call_log_missed_empty">No tienes llamadas perdidas</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Historial de llamadas</string>
   <string name="call_log_all_title">Todas</string>
   <string name="call_log_missed_title">Perdidas</string>
-  <string name="tab_speed_dial">Marcado rápido</string>
-  <string name="tab_history">Historial de llamadas</string>
   <string name="tab_all_contacts">Contactos</string>
-  <string name="tab_voicemail">Correo de voz</string>
-  <string name="search_shortcut_call_number">Llamar al %s</string>
   <string name="search_shortcut_create_new_contact">Crear contacto nuevo</string>
   <string name="search_shortcut_add_to_contact">Agregar a un contacto</string>
   <string name="search_shortcut_send_sms_message">Enviar SMS</string>
   <string name="search_shortcut_make_video_call">Realizar videollamada</string>
-  <string name="search_shortcut_block_number">Bloquear número</string>
-  <string name="speed_dial_empty">Aún no tienes contactos en la opción de marcado rápido</string>
-  <string name="speed_dial_empty_add_favorite_action">Agregar un favorito</string>
-  <string name="remove_contact">Eliminar</string>
   <string name="select_all">Seleccionar todo</string>
   <string name="call_log_action_video_call">Videollamada</string>
-  <string name="call_log_action_set_up_video">Configurar las videollamadas</string>
-  <string name="call_log_action_invite_video">Invitar a la videollamada</string>
   <string name="call_log_action_send_message">Enviar un mensaje</string>
   <string name="call_log_action_details">Detalles de la llamada</string>
   <string name="call_log_action_share_voicemail">Enviar a…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Llamadas</string>
   <string name="manage_blocked_numbers_label">Números bloqueados</string>
   <string name="voicemail_settings_label">Correo de voz</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Bloqueo de llamadas desactivado temporalmente</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Se inhabilitó el bloqueo de llamadas porque te comunicaste con servicios de emergencia en las últimas 48 horas desde este teléfono. Se volverá a habilitar de forma automática una vez que venza el período de 48 horas.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importar números</string>
-  <string name="blocked_call_settings_import_description">Ya marcaste algunos emisores para que se envíen de forma automática al correo de voz por medio de otras apps.</string>
-  <string name="blocked_call_settings_view_numbers_button">Ver números</string>
-  <string name="blocked_call_settings_import_button">Importar</string>
-  <string name="description_blocked_number_list_delete">Desbloquear número</string>
-  <string name="addBlockedNumber">Agregar número</string>
-  <string name="block_number_footer_message_vvm">Se bloquearán las llamadas que provengan de estos números y se borrarán los mensajes del correo de voz de forma automática.</string>
-  <string name="block_number_footer_message_no_vvm">Se bloquearán las llamadas que provengan de estos números, pero es posible que se puedan dejar mensajes en el correo de voz.</string>
-  <string name="block_list">Números bloqueados</string>
-  <string name="alreadyBlocked">%1$s ya está bloqueado.</string>
   <string name="phone_account_settings_label">Cuentas telefónicas</string>
-  <string name="permission_no_speeddial">Para habilitar el marcado rápido, activa el permiso Contactos.</string>
   <string name="permission_no_calllog">Para ver el registro de llamadas, activa el permiso Teléfono.</string>
-  <string name="permission_no_search">Para buscar contactos, activa el permiso Contactos.</string>
-  <string name="permission_place_call">Para realizar una llamada, activa el permiso Teléfono.</string>
   <string name="toast_cannot_write_system_settings">La aplicación de teléfono no tiene permiso para modificar la configuración del sistema.</string>
   <string name="blocked_number_call_log_label">Bloqueado</string>
   <string name="call_log_action_block_report_number">Bloquear/marcar como spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">No es spam</string>
   <string name="call_log_action_unblock_number">Desbloquear número</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s está sin conexión y no se lo puede contactar</string>
-  <string name="about_phone_label">Acerca de</string>
-  <string name="voicemail_transcription_branding_text">Transcrito por Google</string>
-  <string name="voicemail_transcription_in_progress">Transcribiendo…</string>
-  <string name="voicemail_transcription_failed">Transcripción no disponible.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcripción no disponible. El idioma no es compatible.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcripción no disponible. No se escuchó nada.</string>
-  <string name="voicemail_donation_promo_title">¿Quieres ayudar a mejorar la precisión de las transcripciones?</string>
-  <string name="voicemail_donation_promo_content">Permite que Google acceda a este mensaje de voz y a los próximos con las transcripciones. Se almacenarán de forma anónima. Puedes cambiar la configuración en cualquier momento. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Sí, acepto</string>
-  <string name="voicemail_donation_promo_opt_out">No</string>
-  <string name="voicemail_transcription_rating">Califica la transcripción</string>
-  <string name="voicemail_transcription_rating_thanks">Gracias por tus comentarios</string>
-  <string name="description_rating_good">Me gusta</string>
-  <string name="description_rating_bad">No me gusta</string>
-  <string name="view_conversation">Ver</string>
-  <string name="ec_data_deleted">Llamada eliminada. En Mensajes, puedes ver y eliminar archivos adjuntos compartidos durante esta llamada.</string>
-  <string name="multiple_ec_data_deleted">Llamadas eliminadas. En Mensajes, puedes ver y eliminar archivos adjuntos durante las llamadas.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-es/cm_strings.xml b/java/com/android/dialer/app/res/values-es/cm_strings.xml
new file mode 100644
index 0000000..56692bb
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-es/cm_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">En llamada</string>
+    <string name="incall_enable_dnd_title">Activar No molestar durante las llamadas</string>
+    <string name="incall_vibrate_outgoing_title">Vibrar al contestar</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrar en llamada en espera</string>
+    <string name="incall_vibrate_hangup_title">Vibrar al colgar</string>
+    <string name="incall_vibrate_45_title">Vibrar cada minuto</string>
+    <string name="incall_vibrate_45_summary">Vibrar en el segundo 45 de cada minuto durante las llamadas salientes</string>
+    <string name="incall_dnd_dialog_message">Para activar No molestar, la aplicación del teléfono necesita permiso para controlar el estado de No molestar.\nPor favor, permítelo</string>
+    <string name="allow">Permitir</string>
+    <string name="deny">Denegar</string>
+    <string name="call_recording_category_title">Grabación de llamada</string>
+    <string name="call_recording_format">Formato de audio</string>
+    <string name="call_via">Llamar a través de</string>
+    <string name="call_via_dialog_title">Llamar a través de\u2026</string>
+    <string name="call_log_stats_title">Estadísticas</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-es/strings.xml b/java/com/android/dialer/app/res/values-es/strings.xml
index bbbd705..e9a1b40 100644
--- a/java/com/android/dialer/app/res/values-es/strings.xml
+++ b/java/com/android/dialer/app/res/values-es/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Teléfono</string>
-  <string name="launcherDialpadActivityLabel">Teclado del teléfono</string>
   <string name="callHistoryIconLabel">Historial de llamadas</string>
   <string name="action_copy_number_text">Copiar número</string>
-  <string name="copy_transcript_text">Copiar transcripción</string>
   <string name="action_edit_number_before_call">Editar número antes de llamar</string>
   <string name="call_log_delete_all">Borrar historial de llamadas</string>
   <string name="call_log_trash_voicemail">Eliminar mensaje de voz</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Buscar posición de reproducción</string>
   <string name="action_menu_call_history_description">Historial de llamadas</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Más opciones</string>
-  <string name="action_menu_dialpad_button">teclado</string>
   <string name="dialer_settings_label">Ajustes</string>
-  <string name="simulator_submenu_label">Simulador</string>
-  <string name="new_ui_launcher_shortcut_label">Crear acceso a la interfaz</string>
   <string name="description_entering_bulk_action_mode">Entrando en el modo de acción en bloque</string>
   <string name="description_leaving_bulk_action_mode">Se ha salido del modo de acción en bloque</string>
   <string name="description_selecting_bulk_action_mode">%1$s seleccionado</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videollamada.</string>
   <string name="description_start_voice_search">Iniciar búsqueda por voz</string>
   <string name="voicemail">Buzón de voz</string>
-  <string name="description_cancel_multi_select">Cancelar el modo de acciones en lote</string>
   <string name="voicemailMultiSelectDeleteConfirm">Eliminar</string>
   <string name="voicemailMultiSelectDeleteCancel">Cancelar</string>
   <string name="voicemailMultiSelectActionBarTitle">Se han seleccionado %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">La búsqueda por voz no está disponible</string>
   <string name="dialer_hint_find_contact">Buscar contactos</string>
-  <string name="block_number_search_hint">Añade número o busca contactos</string>
   <string name="call_log_all_empty">Tu historial de llamadas está vacío</string>
   <string name="call_log_all_empty_action">Hacer una llamada</string>
   <string name="call_log_missed_empty">No tienes llamadas perdidas.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Historial de llamadas</string>
   <string name="call_log_all_title">Todas</string>
   <string name="call_log_missed_title">Perdidas</string>
-  <string name="tab_speed_dial">Marcación rápida</string>
-  <string name="tab_history">Historial de llamadas</string>
   <string name="tab_all_contacts">Contactos</string>
-  <string name="tab_voicemail">Buzón de voz</string>
-  <string name="search_shortcut_call_number">Llamar a %s</string>
   <string name="search_shortcut_create_new_contact">Crear nuevo contacto</string>
   <string name="search_shortcut_add_to_contact">Añadir a un contacto</string>
   <string name="search_shortcut_send_sms_message">Enviar SMS</string>
   <string name="search_shortcut_make_video_call">Hacer videollamada</string>
-  <string name="search_shortcut_block_number">Bloquear número</string>
-  <string name="speed_dial_empty">Aún no tienes contactos en la función de marcación rápida</string>
-  <string name="speed_dial_empty_add_favorite_action">Añadir un favorito</string>
-  <string name="remove_contact">Eliminar</string>
   <string name="select_all">Seleccionar todo</string>
   <string name="call_log_action_video_call">Videollamada</string>
-  <string name="call_log_action_set_up_video">Configurar una videollamada</string>
-  <string name="call_log_action_invite_video">Invitar a una videollamada</string>
   <string name="call_log_action_send_message">Enviar un mensaje</string>
   <string name="call_log_action_details">Detalles de la llamada</string>
   <string name="call_log_action_share_voicemail">Enviar a…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Llamadas</string>
   <string name="manage_blocked_numbers_label">Números bloqueados</string>
   <string name="voicemail_settings_label">Buzón de voz</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Bloqueo de llamadas desactivado temporalmente</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Se ha inhabilitado el bloqueo de llamadas porque te has puesto en contacto con los servicios de emergencia desde este teléfono en las últimas 48 horas. Se volverá a habilitar automáticamente cuando finalice este periodo de tiempo.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importar números</string>
-  <string name="blocked_call_settings_import_description">Anteriormente marcaste algunas llamadas para que se enviaran automáticamente al buzón de voz a través de otras aplicaciones.</string>
-  <string name="blocked_call_settings_view_numbers_button">Ver números</string>
-  <string name="blocked_call_settings_import_button">Importar</string>
-  <string name="description_blocked_number_list_delete">Desbloquear número</string>
-  <string name="addBlockedNumber">Añadir número</string>
-  <string name="block_number_footer_message_vvm">Se bloquearán las llamadas de estos números y se eliminarán los mensajes del buzón de voz automáticamente.</string>
-  <string name="block_number_footer_message_no_vvm">Se bloquearán las llamadas de estos números, pero podrán seguir dejando mensajes en el buzón de voz.</string>
-  <string name="block_list">Números bloqueados</string>
-  <string name="alreadyBlocked">%1$s ya está bloqueado.</string>
   <string name="phone_account_settings_label">Cuentas de llamadas</string>
-  <string name="permission_no_speeddial">Para habilitar la marcación rápida, activa el permiso la aplicación Contactos.</string>
   <string name="permission_no_calllog">Para ver el registro de llamadas, habilita el permiso de teléfono.</string>
-  <string name="permission_no_search">Para poder buscar tus contactos, activa los permisos de contactos.</string>
-  <string name="permission_place_call">Para hacer una llamada, activa el permiso de la aplicación Teléfono.</string>
   <string name="toast_cannot_write_system_settings">La aplicación Teléfono no tiene permiso para editar los ajustes del sistema.</string>
   <string name="blocked_number_call_log_label">Bloqueado</string>
   <string name="call_log_action_block_report_number">Bloquear/Marcar como spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">No es spam</string>
   <string name="call_log_action_unblock_number">Desbloquear número</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s no tiene conexión y no se puede contactar</string>
-  <string name="about_phone_label">Información</string>
-  <string name="voicemail_transcription_branding_text">Transcrito por Google</string>
-  <string name="voicemail_transcription_in_progress">Transcribiendo…</string>
-  <string name="voicemail_transcription_failed">La transcripción no está disponible.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">La transcripción no está disponible. No se admite el idioma.</string>
-  <string name="voicemail_transcription_failed_no_speech">La transcripción no está disponible. No se detectó ninguna voz.</string>
-  <string name="voicemail_donation_promo_title">¿Quieres ayudarnos a mejorar la precisión de las transcripciones?</string>
-  <string name="voicemail_donation_promo_content">Deja que Google revise este y otros mensajes del buzón de voz que recibas mediante transcripciones. Se guardarán de manera anónima. Puedes cambiar esta opción en Ajustes cuando quieras. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Sí, acepto</string>
-  <string name="voicemail_donation_promo_opt_out">No, gracias</string>
-  <string name="voicemail_transcription_rating">Valora la calidad de transcripción</string>
-  <string name="voicemail_transcription_rating_thanks">Gracias por tus comentarios</string>
-  <string name="description_rating_good">Me gusta</string>
-  <string name="description_rating_bad">No me gusta</string>
-  <string name="view_conversation">Ver</string>
-  <string name="ec_data_deleted">Se ha eliminado la llamada. Si quieres ver y eliminar los archivos adjuntos compartidos durante esta llamada, ve a Mensajes.</string>
-  <string name="multiple_ec_data_deleted">Se han eliminado las llamadas. Si quieres ver y eliminar los archivos adjuntos compartidos durante las llamadas, ve a Mensajes.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-et/cm_strings.xml b/java/com/android/dialer/app/res/values-et/cm_strings.xml
new file mode 100644
index 0000000..990c959
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-et/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Kõnes</string>
+    <string name="incall_enable_dnd_title">Luba Mitte segada kõnede ajal</string>
+    <string name="incall_vibrate_outgoing_title">Vibreeri vastamisel</string>
+    <string name="incall_vibrate_call_waiting_title">Vibreeri kõne koputusel</string>
+    <string name="incall_vibrate_hangup_title">Vibreeri kõne lõppemisel</string>
+    <string name="incall_vibrate_45_title">Vibreeri iga minuti tagant</string>
+    <string name="incall_vibrate_45_summary">Vibreerib 45 sekundi tagant igas minutis väljaminevate kõnede puhul</string>
+    <string name="incall_dnd_dialog_message">Mitte segada režiimi lubamiseks vajab rakendus Telefon luba režiimi Mitte segada juhtimiseks.\nPalun luba see.</string>
+    <string name="allow">Luba</string>
+    <string name="deny">Keela</string>
+    <string name="call_recording_category_title">Kõne salvestamine</string>
+    <string name="call_recording_format">Heli formaat</string>
+    <string name="call_via">Helista läbi</string>
+    <string name="call_via_dialog_title">Helista läbi\u2026</string>
+    <string name="call_log_stats_title">Statistika</string>
+    <string name="action_menu_helplines">Infotelefonid</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-et/strings.xml b/java/com/android/dialer/app/res/values-et/strings.xml
index 64551ec..a0a3a9b 100644
--- a/java/com/android/dialer/app/res/values-et/strings.xml
+++ b/java/com/android/dialer/app/res/values-et/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Telefoni klaviatuur</string>
   <string name="callHistoryIconLabel">Kõneajalugu</string>
   <string name="action_copy_number_text">Kopeeri number</string>
-  <string name="copy_transcript_text">Kopeeri transkribeerimine</string>
   <string name="action_edit_number_before_call">Muuda enne helistamist numbrit</string>
   <string name="call_log_delete_all">Kõneajaloo kustutamine</string>
   <string name="call_log_trash_voicemail">Kustuta kõnepost</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Taasesituse positsiooni otsimine</string>
   <string name="action_menu_call_history_description">Kõneajalugu</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Rohkem valikuid</string>
-  <string name="action_menu_dialpad_button">klaviatuur</string>
   <string name="dialer_settings_label">Seaded</string>
-  <string name="simulator_submenu_label">Simulaator</string>
-  <string name="new_ui_launcher_shortcut_label">Loo uue kasutajaliid. otsetee</string>
   <string name="description_entering_bulk_action_mode">Sisenemine hulgitoimingute režiimi</string>
   <string name="description_leaving_bulk_action_mode">Lahkumine hulgitoimingute režiimist</string>
   <string name="description_selecting_bulk_action_mode">%1$s on valitud</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videokõne.</string>
   <string name="description_start_voice_search">Häälotsingu alustamine</string>
   <string name="voicemail">Kõnepost</string>
-  <string name="description_cancel_multi_select">Mitme toimigu režiimi tühistamine</string>
   <string name="voicemailMultiSelectDeleteConfirm">Kustuta</string>
   <string name="voicemailMultiSelectDeleteCancel">Tühista</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s on valitud</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Häälotsing ei ole saadaval</string>
   <string name="dialer_hint_find_contact">Otsige kontakte</string>
-  <string name="block_number_search_hint">Lisage nr või otsige kontakte</string>
   <string name="call_log_all_empty">Teie kõneajalugu on tühi</string>
   <string name="call_log_all_empty_action">Helista</string>
   <string name="call_log_missed_empty">Vastamata kõnesid pole.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Kõneajalugu</string>
   <string name="call_log_all_title">Kõik</string>
   <string name="call_log_missed_title">Vastamata</string>
-  <string name="tab_speed_dial">Kiirvalimine</string>
-  <string name="tab_history">Kõneajalugu</string>
   <string name="tab_all_contacts">Kontaktid</string>
-  <string name="tab_voicemail">Kõnepost</string>
-  <string name="search_shortcut_call_number">Helista: %s</string>
   <string name="search_shortcut_create_new_contact">Loo uus kontakt</string>
   <string name="search_shortcut_add_to_contact">Lisa kontaktile</string>
   <string name="search_shortcut_send_sms_message">Saada SMS</string>
   <string name="search_shortcut_make_video_call">Videokõne tegemine</string>
-  <string name="search_shortcut_block_number">Blokeeri number</string>
-  <string name="speed_dial_empty">Te pole veel kedagi kiirvalimisse lisanud</string>
-  <string name="speed_dial_empty_add_favorite_action">Lisa lemmik</string>
-  <string name="remove_contact">Eemalda</string>
   <string name="select_all">Vali kõik</string>
   <string name="call_log_action_video_call">Videokõne</string>
-  <string name="call_log_action_set_up_video">Videokõne seadistamine</string>
-  <string name="call_log_action_invite_video">Videokõnesse kutsumine</string>
   <string name="call_log_action_send_message">Saada sõnum</string>
   <string name="call_log_action_details">Kõne üksikasjad</string>
   <string name="call_log_action_share_voicemail">Saada: …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Kõned</string>
   <string name="manage_blocked_numbers_label">Blokeeritud numbrid</string>
   <string name="voicemail_settings_label">Kõnepost</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Kõnede blokeerimine on ajutiselt väljas</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Kõnede blokeerimine on keelatud, kuna võtsite sellelt telefonilt viimase 48 tunni jooksul ühendust hädaabiteenustega. See lubatakse 48 tunni möödumisel automaatselt uuesti.</string>
-  <string name="import_send_to_voicemail_numbers_label">Impordi numbrid</string>
-  <string name="blocked_call_settings_import_description">Märkisite varem, et osad helistajad saadetaks muude rakenduste kaudu automaatselt kõneposti.</string>
-  <string name="blocked_call_settings_view_numbers_button">Vaata numbreid</string>
-  <string name="blocked_call_settings_import_button">Impordi</string>
-  <string name="description_blocked_number_list_delete">Numbri deblokeerimine</string>
-  <string name="addBlockedNumber">Lisa number</string>
-  <string name="block_number_footer_message_vvm">Kõned nendelt numbritelt blokeeritakse ja kõnepostisõnumid kustutatakse automaatselt.</string>
-  <string name="block_number_footer_message_no_vvm">Kõned nendelt numbritelt blokeeritakse, kuid helistajad saavad võib-olla siiski teile kõnepostisõnumeid jätta.</string>
-  <string name="block_list">Blokeeritud numbrid</string>
-  <string name="alreadyBlocked">%1$s on juba blokeeritud.</string>
   <string name="phone_account_settings_label">Helistamiskontod</string>
-  <string name="permission_no_speeddial">Kiirvalimise lubamiseks lülitage sisse kontaktiluba.</string>
   <string name="permission_no_calllog">Kõnelogi vaatamiseks lülitage sisse telefoniluba.</string>
-  <string name="permission_no_search">Kontaktide otsimiseks lülitage sisse kontaktiload.</string>
-  <string name="permission_place_call">Helistamiseks lülitage sisse telefoniluba.</string>
   <string name="toast_cannot_write_system_settings">Telefonirakendusel pole luba süsteemiseadetesse kirjutada.</string>
   <string name="blocked_number_call_log_label">Blokeeritud</string>
   <string name="call_log_action_block_report_number">Blokeeri / teavita rämpssisust</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Pole rämpssisu</string>
   <string name="call_log_action_unblock_number">Numbri deblokeerimine</string>
   <string name="spam_number_call_log_label">Rämpspost</string>
-  <string name="call_composer_connection_failed">%1$s ei ole võrgus ja temaga ei saa ühendust</string>
-  <string name="about_phone_label">Teave</string>
-  <string name="voicemail_transcription_branding_text">Google\'i transkribeeritud</string>
-  <string name="voicemail_transcription_in_progress">Transkribeerimine …</string>
-  <string name="voicemail_transcription_failed">Transkribeerimine pole saadaval.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkribeerimine pole saadaval. Keelt ei toetata.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkribeerimine pole saadaval. Kõnet ei tuvastatud.</string>
-  <string name="voicemail_donation_promo_title">Kas soovite aidata parandada transkriptsiooni täpsust?</string>
-  <string name="voicemail_donation_promo_content">Lubage Google\'il see ja tulevased kõnepostisõnumid transkriptsioonidega üle vaadata. Need salvestatakse anonüümselt. Seadeid saab alati muuta. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Jah, sobib</string>
-  <string name="voicemail_donation_promo_opt_out">Tänan, ei</string>
-  <string name="voicemail_transcription_rating">Hinnake transkript. kvaliteeti</string>
-  <string name="voicemail_transcription_rating_thanks">Suur tänu tagasiside eest</string>
-  <string name="description_rating_good">Meeldib</string>
-  <string name="description_rating_bad">Ei meeldi</string>
-  <string name="view_conversation">Kuva</string>
-  <string name="ec_data_deleted">Kõne kustutati. Selle kõne ajal jagatud manuseid saate vaadata ja kustutada rakenduses Messages.</string>
-  <string name="multiple_ec_data_deleted">Kõned kustutati. Nende kõnede ajal jagatud manuseid saate vaadata ja kustutada rakenduses Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-eu/cm_strings.xml b/java/com/android/dialer/app/res/values-eu/cm_strings.xml
new file mode 100644
index 0000000..aafaf53
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-eu/cm_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Deietan</string>
+    <string name="incall_enable_dnd_title">Gaitu \'ez molestatu\' deietan</string>
+    <string name="incall_vibrate_outgoing_title">Bibratu erantzutean</string>
+    <string name="incall_vibrate_call_waiting_title">Bibratu deia zai dagoenean</string>
+    <string name="incall_vibrate_hangup_title">Bibratu esekitzean</string>
+    <string name="incall_vibrate_45_title">Bibratu minuturo</string>
+    <string name="incall_vibrate_45_summary">Egindako deitan minutuero 45. segundoan bibratzen du</string>
+    <string name="incall_dnd_dialog_message">\'Ez molestatu\' gaitzeko, telefono aplikazioak \'Ez molestatu\' egoera kudeatzeko baimena behar du.\nBaimendu ezazu mesedez.</string>
+    <string name="allow">Baimendu</string>
+    <string name="deny">Ukatu</string>
+    <string name="call_recording_category_title">Dei grabaketa</string>
+    <string name="call_recording_format">Audio formatua</string>
+    <string name="call_via">Deitu honen bidez</string>
+    <string name="call_via_dialog_title">Deitu honen bidez\u2026</string>
+    <string name="call_log_stats_title">Estatistikak</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-eu/strings.xml b/java/com/android/dialer/app/res/values-eu/strings.xml
index 4a60fc6..3cb6ca2 100644
--- a/java/com/android/dialer/app/res/values-eu/strings.xml
+++ b/java/com/android/dialer/app/res/values-eu/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefonoa</string>
-  <string name="launcherDialpadActivityLabel">Telefonoko teklatua</string>
   <string name="callHistoryIconLabel">Deien historia</string>
   <string name="action_copy_number_text">Kopiatu zenbakia</string>
-  <string name="copy_transcript_text">Kopiatu transkripzioa</string>
   <string name="action_edit_number_before_call">Editatu zenbakia deitu aurretik</string>
   <string name="call_log_delete_all">Garbitu deien historia</string>
   <string name="call_log_trash_voicemail">Ezabatu ahots-mezua</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Bilatu erreprodukzioaren posizioa</string>
   <string name="action_menu_call_history_description">Deien historia</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Aukera gehiago</string>
-  <string name="action_menu_dialpad_button">teklatua</string>
   <string name="dialer_settings_label">Ezarpenak</string>
-  <string name="simulator_submenu_label">Simulagailua</string>
-  <string name="new_ui_launcher_shortcut_label">Sortu interfazerako esteka</string>
   <string name="description_entering_bulk_action_mode">Ekintzak multzoka gauzatzeko modua aktibatzen</string>
   <string name="description_leaving_bulk_action_mode">Ekintzak multzoka gauzatzeko modua desaktibatu da</string>
   <string name="description_selecting_bulk_action_mode">%1$s hautatu da</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Bideo-deia.</string>
   <string name="description_start_voice_search">Hasi ahozko bilaketa</string>
   <string name="voicemail">Erantzungailua</string>
-  <string name="description_cancel_multi_select">Utzi bertan behera ekintzak multzoka gauzatzeko modua</string>
   <string name="voicemailMultiSelectDeleteConfirm">Ezabatu</string>
   <string name="voicemailMultiSelectDeleteCancel">Utzi</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s hautatu dira</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Ahozko bilaketa ez dago erabilgarri</string>
   <string name="dialer_hint_find_contact">Bilatu kontaktuetan</string>
-  <string name="block_number_search_hint">Gehitu zk. edo bilatu kontaktua</string>
   <string name="call_log_all_empty">Hutsik dago deien historia</string>
   <string name="call_log_all_empty_action">Deitu</string>
   <string name="call_log_missed_empty">Ez duzu dei galdurik.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Deien historia</string>
   <string name="call_log_all_title">Guztiak</string>
   <string name="call_log_missed_title">Galduak</string>
-  <string name="tab_speed_dial">Markatze bizkorra</string>
-  <string name="tab_history">Deien historia</string>
   <string name="tab_all_contacts">Kontaktuak</string>
-  <string name="tab_voicemail">Erantzungailua</string>
-  <string name="search_shortcut_call_number">Deitu %s zenbakira</string>
   <string name="search_shortcut_create_new_contact">Sortu kontaktua</string>
   <string name="search_shortcut_add_to_contact">Gehitu kontaktuetan</string>
   <string name="search_shortcut_send_sms_message">Bidali SMS mezua</string>
   <string name="search_shortcut_make_video_call">Egin bideo-deia</string>
-  <string name="search_shortcut_block_number">Blokeatu zenbakia</string>
-  <string name="speed_dial_empty">Ez duzu inor markatze bizkorrean oraindik</string>
-  <string name="speed_dial_empty_add_favorite_action">Gehitu gogokoak</string>
-  <string name="remove_contact">Kendu</string>
   <string name="select_all">Hautatu guztiak</string>
   <string name="call_log_action_video_call">Bideo-deia</string>
-  <string name="call_log_action_set_up_video">Konfiguratu bideo-deiak</string>
-  <string name="call_log_action_invite_video">Gonbidatu bideo-deiak egitera</string>
   <string name="call_log_action_send_message">Bidali mezua</string>
   <string name="call_log_action_details">Deiaren xehetasunak</string>
   <string name="call_log_action_share_voicemail">Bidali hona…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Deiak</string>
   <string name="manage_blocked_numbers_label">Blokeatutako zenbakiak</string>
   <string name="voicemail_settings_label">Erantzungailua</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Deien blokeoa aldi baterako desgaituta</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Deiak blokeatzeko aukera desgaitu egin da, azken 48 orduetan larrialdi-zerbitzuekin harremanetan jarri zarelako telefono honetatik. Berriro gaituko da 48 orduko epea igaro ondoren.</string>
-  <string name="import_send_to_voicemail_numbers_label">Inportatu zenbakiak</string>
-  <string name="blocked_call_settings_import_description">Deitzaile batzuk beste aplikazio batzuen bidez erantzungailura automatikoki bidaltzea aukeratu duzu.</string>
-  <string name="blocked_call_settings_view_numbers_button">Ikusi zenbakiak</string>
-  <string name="blocked_call_settings_import_button">Inportatu</string>
-  <string name="description_blocked_number_list_delete">Desblokeatu zenbakia</string>
-  <string name="addBlockedNumber">Gehitu zenbakia</string>
-  <string name="block_number_footer_message_vvm">Zenbaki hauetatik jasotzen diren deiak blokeatu egingo dira, eta mezuak automatikoki ezabatuko dira erantzungailutik.</string>
-  <string name="block_number_footer_message_no_vvm">Zenbaki hauetatik jasotzen diren deiak blokeatu egingo dira, baina deitzaileek mezuak utzi ahal izango dizkizute erantzungailuan.</string>
-  <string name="block_list">Blokeatutako zenbakiak</string>
-  <string name="alreadyBlocked">%1$s blokeatuta dago dagoeneko.</string>
   <string name="phone_account_settings_label">Deiak egiteko kontuak</string>
-  <string name="permission_no_speeddial">Markatze bizkorra gaitzeko, aktibatu Kontaktuak erabiltzeko baimena.</string>
   <string name="permission_no_calllog">Deien erregistroa ikusteko, aktibatu Telefonoa erabiltzeko baimena.</string>
-  <string name="permission_no_search">Kontaktuak bilatzeko, aktibatu kontaktuak atzitzeko baimenak.</string>
-  <string name="permission_place_call">Deiak egiteko, aktibatu Telefonoa erabiltzeko baimena.</string>
   <string name="toast_cannot_write_system_settings">Telefonoa aplikazioak ez du baimenik sistemaren ezarpenetan ezer idazteko.</string>
   <string name="blocked_number_call_log_label">Blokeatuta</string>
   <string name="call_log_action_block_report_number">Blokeatu eta salatu spama dela</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Ez da spama</string>
   <string name="call_log_action_unblock_number">Desblokeatu zenbakia</string>
   <string name="spam_number_call_log_label">Spama</string>
-  <string name="call_composer_connection_failed">%1$s ez dago konektatuta, eta ezin zara jarri harremanetan berarekin</string>
-  <string name="about_phone_label">Honi buruz</string>
-  <string name="voicemail_transcription_branding_text">Google-k transkribatu du</string>
-  <string name="voicemail_transcription_in_progress">Transkribatzen…</string>
-  <string name="voicemail_transcription_failed">Transkripzioa ez dago erabilgarri.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkripzioa ez dago erabilgarri. Ez da onartzen hizkuntza.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkripzioa ez dago erabilgarri. Ez da detektatu ahotsik.</string>
-  <string name="voicemail_donation_promo_title">Transkripzioen zehaztasuna hobetzen lagundu nahi duzu?</string>
-  <string name="voicemail_donation_promo_content">Utzi Google-ri ahots-mezu hau eta aurrerantzekoak berrikusten transkripzioekin batera. Anonimoki gordeko dira. Aukera hori aldatzeko, joan Ezarpenak atalera. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Bai, ados</string>
-  <string name="voicemail_donation_promo_opt_out">Ez, eskerrik asko</string>
-  <string name="voicemail_transcription_rating">Baloratu transkripzioaren kalitatea</string>
-  <string name="voicemail_transcription_rating_thanks">Mila esker iritzia bidaltzeagatik</string>
-  <string name="description_rating_good">Gustatzen zait</string>
-  <string name="description_rating_bad">Ez zait gustatzen</string>
-  <string name="view_conversation">Ikusi</string>
-  <string name="ec_data_deleted">Ezabatu da deia. Ikusi eta ezabatu dei honetan partekatutako eranskinak Mezuak aplikazioan.</string>
-  <string name="multiple_ec_data_deleted">Ezabatu dira deiak. Ikusi eta ezabatu dei hauetan partekatutako eranskinak Mezuak aplikazioan.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-fa/strings.xml b/java/com/android/dialer/app/res/values-fa/strings.xml
index b07e809..cdfe737 100644
--- a/java/com/android/dialer/app/res/values-fa/strings.xml
+++ b/java/com/android/dialer/app/res/values-fa/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">تلفن</string>
-  <string name="launcherDialpadActivityLabel">صفحه کلید تلفن</string>
   <string name="callHistoryIconLabel">سابقه تماس</string>
   <string name="action_copy_number_text">کپی کردن شماره</string>
-  <string name="copy_transcript_text">کپی کردن ترانویسی</string>
   <string name="action_edit_number_before_call">ویرایش شماره قبل از تماس</string>
   <string name="call_log_delete_all">پاک کردن سابقه تماس</string>
   <string name="call_log_trash_voicemail">حذف پست صوتی</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">جستجوی موقعیت بازپخش</string>
   <string name="action_menu_call_history_description">سابقه تماس</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">گزینه‌های بیشتر</string>
-  <string name="action_menu_dialpad_button">صفحه کلید</string>
   <string name="dialer_settings_label">تنظیمات</string>
-  <string name="simulator_submenu_label">شبیه‌ساز</string>
-  <string name="new_ui_launcher_shortcut_label">ایجاد میان‌بر رابط کاربری جدید</string>
   <string name="description_entering_bulk_action_mode">درحال ورود به حالت اقدام انبوه</string>
   <string name="description_leaving_bulk_action_mode">خروج از حالت اقدام انبوه</string>
   <string name="description_selecting_bulk_action_mode">%1$s انتخاب شد</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">تماس ویدئویی.</string>
   <string name="description_start_voice_search">شروع جستجوی گفتاری</string>
   <string name="voicemail">پست صوتی</string>
-  <string name="description_cancel_multi_select">لغو حالت اقدام‌ دسته‌ای</string>
   <string name="voicemailMultiSelectDeleteConfirm">حذف</string>
   <string name="voicemailMultiSelectDeleteCancel">لغو</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s مورد انتخاب شد</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">جستجوی گفتاری در دسترس نیست</string>
   <string name="dialer_hint_find_contact">جستجوی مخاطبین</string>
-  <string name="block_number_search_hint">افزودن شماره یا جستجوی مخاطب</string>
   <string name="call_log_all_empty">سابقه تماستان خالی است</string>
   <string name="call_log_all_empty_action">برقراری تماس تلفنی</string>
   <string name="call_log_missed_empty">تماس بی‌پاسخی ندارید.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">سابقه تماس</string>
   <string name="call_log_all_title">همه موارد</string>
   <string name="call_log_missed_title">بی‌پاسخ</string>
-  <string name="tab_speed_dial">شماره‌گیری سریع</string>
-  <string name="tab_history">سابقه تماس</string>
   <string name="tab_all_contacts">مخاطبین</string>
-  <string name="tab_voicemail">پست صوتی</string>
-  <string name="search_shortcut_call_number">تماس با %s</string>
   <string name="search_shortcut_create_new_contact">ایجاد مخاطب جدید</string>
   <string name="search_shortcut_add_to_contact">افزودن به مخاطب</string>
   <string name="search_shortcut_send_sms_message">ارسال پیامک</string>
   <string name="search_shortcut_make_video_call">برقراری تماس ویدئویی</string>
-  <string name="search_shortcut_block_number">مسدود کردن شماره</string>
-  <string name="speed_dial_empty">هنوز کسی در فهرست شماره‌گیری سریع شما نیست</string>
-  <string name="speed_dial_empty_add_favorite_action">افزودن مورد دلخواه</string>
-  <string name="remove_contact">حذف</string>
   <string name="select_all">انتخاب همه</string>
   <string name="call_log_action_video_call">تماس ویدئویی</string>
-  <string name="call_log_action_set_up_video">راه‌اندازی تماس ویدیویی</string>
-  <string name="call_log_action_invite_video">دعوت به تماس ویدیویی</string>
   <string name="call_log_action_send_message">ارسال پیام</string>
   <string name="call_log_action_details">جزئیات تماس</string>
   <string name="call_log_action_share_voicemail">ارسال به...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">تماس‌ها</string>
   <string name="manage_blocked_numbers_label">شماره‌های مسدودشده</string>
   <string name="voicemail_settings_label">پست صوتی</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">انسداد تماس موقتاً خاموش است</string>
-  <string name="blocked_numbers_disabled_emergency_desc">چون در ۴۸ ساعت گذشته با این تلفن با سرویس‌های اضطراری تماس گرفتید، انسداد تماس غیرفعال شده است. پس از گذشت ۴۸ ساعت، این قابلیت دوباره فعال می‌شود.</string>
-  <string name="import_send_to_voicemail_numbers_label">وارد کردن شماره‌ها</string>
-  <string name="blocked_call_settings_import_description">قبلاً ازطریق برنامه‌های دیگر، برخی از تماس‌گیرندگان را برای ارسال خودکار به پست صوتی علامت زده‌اید.</string>
-  <string name="blocked_call_settings_view_numbers_button">مشاهده شماره‌ها</string>
-  <string name="blocked_call_settings_import_button">وارد کردن</string>
-  <string name="description_blocked_number_list_delete">رفع انسداد شماره</string>
-  <string name="addBlockedNumber">افزودن شماره</string>
-  <string name="block_number_footer_message_vvm">تماس‌‌ها از این شماره‌ها مسدود می‌شود و پست‌‌های صوتی به‌طور خودکار حذف می‌شود.</string>
-  <string name="block_number_footer_message_no_vvm">تماس‌‌ها از این شماره‌ها مسدود می‌شود اما ممکن است همچنان بتوانند برای شما پست صوتی بگذارند.</string>
-  <string name="block_list">شماره‌های مسدود‌شده</string>
-  <string name="alreadyBlocked">%1$s درحال‌حاضر مسدود شده است.</string>
   <string name="phone_account_settings_label">حساب‌های تماس</string>
-  <string name="permission_no_speeddial">برای فعال کردن شماره‌گیری سریع، مجوز «مخاطبین» را روشن کنید.</string>
   <string name="permission_no_calllog">برای دیدن گزارش تماستان، مجوز «تلفن» را روشن کنید.</string>
-  <string name="permission_no_search">برای جستجوی مخاطبینتان، مجوزهای مخاطبین را روشن کنید.</string>
-  <string name="permission_place_call">برای برقراری تماس، مجوز «تلفن» را روشن کنید.</string>
   <string name="toast_cannot_write_system_settings">برنامه تلفن اجازه نوشتن در تنظیمات سیستم را ندارد.</string>
   <string name="blocked_number_call_log_label">مسدود شده</string>
   <string name="call_log_action_block_report_number">مسدود کردن/گزارش هرزنامه</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">هرزنامه نیست</string>
   <string name="call_log_action_unblock_number">رفع انسداد شماره</string>
   <string name="spam_number_call_log_label">هرزنامه</string>
-  <string name="call_composer_connection_failed">%1$s آفلاین است و در دسترس نمی‌باشد</string>
-  <string name="about_phone_label">درباره</string>
-  <string name="voicemail_transcription_branding_text">‏رونویسی‌شده توسط Google</string>
-  <string name="voicemail_transcription_in_progress">درحال رونوشت‌برداری…</string>
-  <string name="voicemail_transcription_failed">ترانوشت دردسترس نیست.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">ترانوشت دردسترس نیست. زبان پشتیبانی نمی‌شود.</string>
-  <string name="voicemail_transcription_failed_no_speech">ترانوشت دردسترس نیست. گفتگویی شناسایی نشد.</string>
-  <string name="voicemail_donation_promo_title">به بهبود دقت ترانویسی کمک می‌کنید؟</string>
-  <string name="voicemail_donation_promo_content">‏به Google اجازه دهید این پیام صوتی و پیام‌های صوتی آتی دارای ترانویسی را مرور کند. این پیام‌ها به‌صورت ناشناس ذخیره می‌شوند. هر وقت خواستید «تنظیمات» را تغییر دهید. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">بله، موافقم</string>
-  <string name="voicemail_donation_promo_opt_out">نه متشکرم</string>
-  <string name="voicemail_transcription_rating">به کیفیت ترانویسی رتبه بدهید</string>
-  <string name="voicemail_transcription_rating_thanks">از بازخوردتان سپاسگزاریم</string>
-  <string name="description_rating_good">پسندیدن</string>
-  <string name="description_rating_bad">نپسندیدن</string>
-  <string name="view_conversation">مشاهده</string>
-  <string name="ec_data_deleted">تماس حذف شد. پیوست‌های به اشتراک‌گذاشته‌شده درطول این تماس را در «پیام‌ها» مشاهده و حذف کنید.</string>
-  <string name="multiple_ec_data_deleted">تماس‌ها حذف شدند. پیوست‌های به اشتراک‌گذاشته‌شده درطول تماس‌ها را در «پیام‌ها» مشاهده و حذف کنید.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-fi/cm_strings.xml b/java/com/android/dialer/app/res/values-fi/cm_strings.xml
new file mode 100644
index 0000000..5059502
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-fi/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Puhelun aikana</string>
+    <string name="incall_enable_dnd_title">Ota Älä häiritse käyttöön puheluiden aikana</string>
+    <string name="incall_vibrate_outgoing_title">Värinä vastatessa</string>
+    <string name="incall_vibrate_call_waiting_title">Värinä puhelun odottaessa</string>
+    <string name="incall_vibrate_hangup_title">Värinä puhelun loputtua</string>
+    <string name="incall_vibrate_45_title">Värinä minuutin välein</string>
+    <string name="incall_vibrate_45_summary">Värinä joka minuutti 45 sekunnin kohdalla lähtevien puheluiden aikana</string>
+    <string name="incall_dnd_dialog_message">Ottaaksesi \"Älä häiritse\" käyttöön, Puhelin-sovellukselle pitää antaa käyttöoikeus hallita Älä häiritse-tilaa.\nAnna käyttöoikeus.</string>
+    <string name="allow">Salli</string>
+    <string name="deny">Estä</string>
+    <string name="call_recording_category_title">Puhelun äänitys</string>
+    <string name="call_recording_format">Audion muoto</string>
+    <string name="call_via">Soita käyttäen</string>
+    <string name="call_via_dialog_title">Soita käyttäen\u2026</string>
+    <string name="call_log_stats_title">Tilastot</string>
+    <string name="action_menu_helplines">Tukinumerot</string>
+    <string name="default_dialer_text">Sinun on asetettava Puhelin oletusarvoiseksi puhelusovellukseksi käyttääksesi sitä.</string>
+    <string name="default_dialer_action">Aseta oletukseksi</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-fi/strings.xml b/java/com/android/dialer/app/res/values-fi/strings.xml
index dd1d648..7a35036 100644
--- a/java/com/android/dialer/app/res/values-fi/strings.xml
+++ b/java/com/android/dialer/app/res/values-fi/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Puhelin</string>
-  <string name="launcherDialpadActivityLabel">Puhelimen näppäimistö</string>
   <string name="callHistoryIconLabel">Soittohistoria</string>
   <string name="action_copy_number_text">Kopioi numero</string>
-  <string name="copy_transcript_text">Kopioi transkriptio</string>
   <string name="action_edit_number_before_call">Muokkaa numeroa ennen puhelua</string>
   <string name="call_log_delete_all">Tyhjennä soittohistoria</string>
   <string name="call_log_trash_voicemail">Poista vastaajaviesti</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Toisto-osoitin</string>
   <string name="action_menu_call_history_description">Soittohistoria</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Lisää vaihtoehtoja</string>
-  <string name="action_menu_dialpad_button">näppäimistö</string>
   <string name="dialer_settings_label">Asetukset</string>
-  <string name="simulator_submenu_label">Simulaattori</string>
-  <string name="new_ui_launcher_shortcut_label">Luo uusi UI-pikakuvake</string>
   <string name="description_entering_bulk_action_mode">Siirrytään joukkotoimintotilaan.</string>
   <string name="description_leaving_bulk_action_mode">Poistuttiin joukkotoimintotilasta.</string>
   <string name="description_selecting_bulk_action_mode">%1$s valittiin.</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videopuhelu.</string>
   <string name="description_start_voice_search">Aloita puhehaku</string>
   <string name="voicemail">Vastaaja</string>
-  <string name="description_cancel_multi_select">Peruuta joukkotoimintotila.</string>
   <string name="voicemailMultiSelectDeleteConfirm">Poista</string>
   <string name="voicemailMultiSelectDeleteCancel">Peruuta</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s valittu</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Puhehaku ei ole käytettävissä</string>
   <string name="dialer_hint_find_contact">Hae yhteystiedoista</string>
-  <string name="block_number_search_hint">Lisää numero tai hae yhteystiedoista</string>
   <string name="call_log_all_empty">Soittohistoriasi on tyhjä.</string>
   <string name="call_log_all_empty_action">Soita puhelu</string>
   <string name="call_log_missed_empty">Sinulla ei ole vastaamattomia puheluita.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Soittohistoria</string>
   <string name="call_log_all_title">Kaikki</string>
   <string name="call_log_missed_title">Vastaamattomat</string>
-  <string name="tab_speed_dial">Pikavalinta</string>
-  <string name="tab_history">Soittohistoria</string>
   <string name="tab_all_contacts">Yhteystiedot</string>
-  <string name="tab_voicemail">Puhelinvastaaja</string>
-  <string name="search_shortcut_call_number">Soita %s</string>
   <string name="search_shortcut_create_new_contact">Luo uusi yhteystieto</string>
   <string name="search_shortcut_add_to_contact">Lisää yhteystietoihin</string>
   <string name="search_shortcut_send_sms_message">Lähetä tekstiviesti</string>
   <string name="search_shortcut_make_video_call">Soita videopuhelu</string>
-  <string name="search_shortcut_block_number">Estä numero</string>
-  <string name="speed_dial_empty">Pikavalinnassa ei ole vielä yhtään yhteystietoa.</string>
-  <string name="speed_dial_empty_add_favorite_action">Lisää suosikki</string>
-  <string name="remove_contact">Poista</string>
   <string name="select_all">Valitse kaikki</string>
   <string name="call_log_action_video_call">Videopuhelu</string>
-  <string name="call_log_action_set_up_video">Aloita videopuhelu</string>
-  <string name="call_log_action_invite_video">Kutsu muita videopuheluun</string>
   <string name="call_log_action_send_message">Lähetä viesti</string>
   <string name="call_log_action_details">Puhelun tiedot</string>
   <string name="call_log_action_share_voicemail">Vastaanottaja: …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Puhelut</string>
   <string name="manage_blocked_numbers_label">Estetyt numerot</string>
   <string name="voicemail_settings_label">Vastaaja</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Puheluesto väliaikaisesti pois käytöstä</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Puheluiden estäminen on poistettu käytöstä, koska olet ottanut yhteyttä hätäpalveluihin tästä puhelimesta viimeisen 48 tunnin aikana. Esto otetaan automaattisesti uudelleen käyttöön, kun puhelusta on kulunut 48 tuntia.</string>
-  <string name="import_send_to_voicemail_numbers_label">Tuo numerot</string>
-  <string name="blocked_call_settings_import_description">Valitsit aiemmin muilla sovelluksilla, että tiettyjen soittajien puhelut siirretään automaattisesti vastaajaan.</string>
-  <string name="blocked_call_settings_view_numbers_button">Näytä numerot</string>
-  <string name="blocked_call_settings_import_button">Tuo</string>
-  <string name="description_blocked_number_list_delete">Poista numeron esto</string>
-  <string name="addBlockedNumber">Lisää numero</string>
-  <string name="block_number_footer_message_vvm">Näistä numeroista tulevat puhelut estetään, ja vastaajaviestit poistetaan automaattisesti.</string>
-  <string name="block_number_footer_message_no_vvm">Näistä numeroista tulevat puhelut estetään, mutta soittajat voivat silti mahdollisesti jättää vastaajaviestejä.</string>
-  <string name="block_list">Estetyt numerot</string>
-  <string name="alreadyBlocked">%1$s on jo estetty.</string>
   <string name="phone_account_settings_label">Puhelutilit</string>
-  <string name="permission_no_speeddial">Jos haluat käyttää pikavalintaa, ota Yhteystiedot-käyttöoikeus käyttöön.</string>
   <string name="permission_no_calllog">Jos haluat katsella puhelulokiasi, ota Puhelin-käyttöoikeus käyttöön.</string>
-  <string name="permission_no_search">Jos haluat hakea kontaktejasi, ota käyttöön kontaktien käyttöoikeudet.</string>
-  <string name="permission_place_call">Jos haluat soittaa puheluja, ota Puhelin-käyttöoikeus käyttöön.</string>
   <string name="toast_cannot_write_system_settings">Puhelinsovelluksella ei ole oikeutta muokata järjestelmän asetuksia.</string>
   <string name="blocked_number_call_log_label">Estetty</string>
   <string name="call_log_action_block_report_number">Estä / ilmoita häiriköinnistä</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Ei ole häirikkösoittaja</string>
   <string name="call_log_action_unblock_number">Poista numeron esto</string>
   <string name="spam_number_call_log_label">Roskaposti</string>
-  <string name="call_composer_connection_failed">%1$s on offline-tilassa, eikä siihen saada yhteyttä.</string>
-  <string name="about_phone_label">Tietoja</string>
-  <string name="voicemail_transcription_branding_text">Googlen litteroima</string>
-  <string name="voicemail_transcription_in_progress">Litteroidaan…</string>
-  <string name="voicemail_transcription_failed">Transkriptio ei ole saatavilla.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkriptio ei ole saatavilla. Kieltä ei tueta.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkriptio ei ole saatavilla. Puhetta ei tunnistettu.</string>
-  <string name="voicemail_donation_promo_title">Haluatko auttaa transkriptioiden tarkkuuden parantamisessa?</string>
-  <string name="voicemail_donation_promo_content">Anna Googlen arvioida tämä vastaajaviesti ja tulevat viestit transkriptioiden avulla. Tiedot tallennetaan nimettöminä. Voit muuttaa asetusta milloin tahansa. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Kyllä</string>
-  <string name="voicemail_donation_promo_opt_out">Ei kiitos</string>
-  <string name="voicemail_transcription_rating">Arvioi transkription laatu</string>
-  <string name="voicemail_transcription_rating_thanks">Kiitos palautteestasi</string>
-  <string name="description_rating_good">Tykkään</string>
-  <string name="description_rating_bad">En tykkää</string>
-  <string name="view_conversation">Näytä</string>
-  <string name="ec_data_deleted">Puhelu poistettu. Voit tarkastella ja poistaa puhelun aikana jaettuja liitteitä Viesteissä.</string>
-  <string name="multiple_ec_data_deleted">Puhelut poistettu. Voit tarkastella ja poistaa puhelujen aikana jaettuja liitteitä Viesteissä.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
index 554b1e6..975ba8e 100644
--- a/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/app/res/values-fr-rCA/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Téléphone</string>
-  <string name="launcherDialpadActivityLabel">Clavier du téléphone</string>
   <string name="callHistoryIconLabel">Historique des appels</string>
   <string name="action_copy_number_text">Copier le numéro</string>
-  <string name="copy_transcript_text">Copier la transcription</string>
   <string name="action_edit_number_before_call">Modifier le numéro avant l\'appel</string>
   <string name="call_log_delete_all">Effacer l\'historique d\'appels</string>
   <string name="call_log_trash_voicemail">Supprimer le message vocal</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Rechercher une position de lecture</string>
   <string name="action_menu_call_history_description">Historique des appels</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Plus d\'options</string>
-  <string name="action_menu_dialpad_button">clavier</string>
   <string name="dialer_settings_label">Paramètres</string>
-  <string name="simulator_submenu_label">Simulateur</string>
-  <string name="new_ui_launcher_shortcut_label">Créer un raccourci vers l\'IU</string>
   <string name="description_entering_bulk_action_mode">Entrée du mode d\'action groupée en cours…</string>
   <string name="description_leaving_bulk_action_mode">Mode d\'action groupée quitté</string>
   <string name="description_selecting_bulk_action_mode">Sélection : %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Appel vidéo.</string>
   <string name="description_start_voice_search">Démarrer la recherche vocale</string>
   <string name="voicemail">Messagerie vocale</string>
-  <string name="description_cancel_multi_select">Annuler le mode d\'action par lots</string>
   <string name="voicemailMultiSelectDeleteConfirm">Supprimer</string>
   <string name="voicemailMultiSelectDeleteCancel">Annuler</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s sélection(s)</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Recherche vocale non disponible</string>
   <string name="dialer_hint_find_contact">Rechercher des contacts</string>
-  <string name="block_number_search_hint">Ajouter nº ou chercher contact</string>
   <string name="call_log_all_empty">Votre historique des appels est vide</string>
   <string name="call_log_all_empty_action">Faire un appel</string>
   <string name="call_log_missed_empty">Vous n\'avez aucun appel manqué.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Historique des appels</string>
   <string name="call_log_all_title">Tous</string>
   <string name="call_log_missed_title">Manqués</string>
-  <string name="tab_speed_dial">Composition abrégée</string>
-  <string name="tab_history">Historique des appels</string>
   <string name="tab_all_contacts">Contacts</string>
-  <string name="tab_voicemail">Messagerie vocale</string>
-  <string name="search_shortcut_call_number">Appeler le %s</string>
   <string name="search_shortcut_create_new_contact">Créer un contact</string>
   <string name="search_shortcut_add_to_contact">Ajouter à un contact</string>
   <string name="search_shortcut_send_sms_message">Envoyer un texto</string>
   <string name="search_shortcut_make_video_call">Faire un appel vidéo</string>
-  <string name="search_shortcut_block_number">Bloquer le numéro</string>
-  <string name="speed_dial_empty">Aucun contact ne figure dans vos numéros de composition abrégée</string>
-  <string name="speed_dial_empty_add_favorite_action">Ajouter un favori</string>
-  <string name="remove_contact">Supprimer</string>
   <string name="select_all">Tout sélectionner</string>
   <string name="call_log_action_video_call">Appel vidéo</string>
-  <string name="call_log_action_set_up_video">Configurer les appels vidéo</string>
-  <string name="call_log_action_invite_video">Inviter à un appel vidéo</string>
   <string name="call_log_action_send_message">Envoyer un message</string>
   <string name="call_log_action_details">Détails de l\'appel</string>
   <string name="call_log_action_share_voicemail">Envoyer à…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Appels</string>
   <string name="manage_blocked_numbers_label">Numéros bloqués</string>
   <string name="voicemail_settings_label">Messagerie vocale</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blocage appels désactivé temporairement</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Le blocage des appels a été désactivé, car vous avez communiqué avec les services d\'urgence à partir de ce téléphone au cours des dernières 48 heures. Le blocage sera réactivé automatiquement après 48 heures.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importer les numéros</string>
-  <string name="blocked_call_settings_import_description">Vous avez indiqué que certains appelants devaient automatiquement être renvoyés vers la messagerie vocale par d\'autres applications.</string>
-  <string name="blocked_call_settings_view_numbers_button">Afficher les numéros</string>
-  <string name="blocked_call_settings_import_button">Importer</string>
-  <string name="description_blocked_number_list_delete">Débloquer le numéro</string>
-  <string name="addBlockedNumber">Ajouter un numéro</string>
-  <string name="block_number_footer_message_vvm">Les appels provenant de ces numéros seront bloqués et les messages vocaux seront automatiquement supprimés.</string>
-  <string name="block_number_footer_message_no_vvm">Les appels provenant de ces numéros seront bloqués, mais il se peut que les appelants puissent quand même vous laisser des messages vocaux.</string>
-  <string name="block_list">Numéros bloqués</string>
-  <string name="alreadyBlocked">Le numéro %1$s est déjà bloqué.</string>
   <string name="phone_account_settings_label">Comptes d\'appel</string>
-  <string name="permission_no_speeddial">Pour activer la composition abrégée, activez l\'autorisation Contacts.</string>
   <string name="permission_no_calllog">Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone.</string>
-  <string name="permission_no_search">Pour rechercher vos contacts et les lieux à proximité, activez les autorisations Contacts.</string>
-  <string name="permission_place_call">Pour faire un appel, activez l\'autorisation Téléphone.</string>
   <string name="toast_cannot_write_system_settings">L\'application Téléphone n\'est pas autorisée à modifier les paramètres du système.</string>
   <string name="blocked_number_call_log_label">Bloqué</string>
   <string name="call_log_action_block_report_number">Bloquer/signaler comme pourriel</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">N\'est pas un pourriel</string>
   <string name="call_log_action_unblock_number">Débloquer le numéro</string>
   <string name="spam_number_call_log_label">Pourriel</string>
-  <string name="call_composer_connection_failed">%1$s est hors connexion et injoignable</string>
-  <string name="about_phone_label">À propos</string>
-  <string name="voicemail_transcription_branding_text">Transcrit par Google</string>
-  <string name="voicemail_transcription_in_progress">Transcription en cours…</string>
-  <string name="voicemail_transcription_failed">Transcription non disponible.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcription non disponible. Langue non prise en charge.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcription non disponible. Aucune parole détectée.</string>
-  <string name="voicemail_donation_promo_title">Aider à améliorer l\'exactitude des transcriptions?</string>
-  <string name="voicemail_donation_promo_content">Autorisez Google à accéder à ce message vocal avec transcription et à ceux qui suivront. Ils seront stockés de façon anonyme. Vous pouvez modifier les paramètres à tout moment. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Oui, j\'accepte</string>
-  <string name="voicemail_donation_promo_opt_out">Non, merci</string>
-  <string name="voicemail_transcription_rating">Évaluez la transcription</string>
-  <string name="voicemail_transcription_rating_thanks">Merci pour votre évaluation</string>
-  <string name="description_rating_good">J\'aime</string>
-  <string name="description_rating_bad">Je n\'aime pas</string>
-  <string name="view_conversation">Afficher</string>
-  <string name="ec_data_deleted">Appel supprimé. Affichez et supprimez les pièces jointes partagées pendant cet appel dans les messages.</string>
-  <string name="multiple_ec_data_deleted">Appels supprimés. Affichez et supprimez les pièces jointes partagées pendant ces appels dans les messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-fr/cm_strings.xml b/java/com/android/dialer/app/res/values-fr/cm_strings.xml
new file mode 100644
index 0000000..9d9df67
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-fr/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">En appel</string>
+    <string name="incall_enable_dnd_title">Ne pas déranger pendant les appels</string>
+    <string name="incall_vibrate_outgoing_title">Vibrer au décrochage</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrer en cas d\'appel en attente</string>
+    <string name="incall_vibrate_hangup_title">Vibrer au raccrochage</string>
+    <string name="incall_vibrate_45_title">Vibrer chaque minute</string>
+    <string name="incall_vibrate_45_summary">Vibre à la 45ème seconde de chaque minute durant un appel sortant</string>
+    <string name="incall_dnd_dialog_message">Pour activer le mode Ne pas déranger, vous devez autoriser l\'application Téléphone à contrôler l\'état \"Ne pas déranger\".\nVeuillez accorder cette autorisation.</string>
+    <string name="allow">Autoriser</string>
+    <string name="deny">Refuser</string>
+    <string name="call_recording_category_title">Enregistrement des appels</string>
+    <string name="call_recording_format">Format audio</string>
+    <string name="call_via">Appeler via</string>
+    <string name="call_via_dialog_title">Appeler via\u2026</string>
+    <string name="call_log_stats_title">Statistiques</string>
+    <string name="action_menu_helplines">Services d’assistance téléphonique</string>
+    <string name="default_dialer_text">Vous devez définir Téléphone comme application par défaut pour pouvoir l\'utiliser</string>
+    <string name="default_dialer_action">Définir par défaut</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-fr/strings.xml b/java/com/android/dialer/app/res/values-fr/strings.xml
index 14b5f6e..68e6583 100644
--- a/java/com/android/dialer/app/res/values-fr/strings.xml
+++ b/java/com/android/dialer/app/res/values-fr/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Téléphone</string>
-  <string name="launcherDialpadActivityLabel">Clavier téléphonique</string>
   <string name="callHistoryIconLabel">Historique des appels</string>
   <string name="action_copy_number_text">Copier le numéro</string>
-  <string name="copy_transcript_text">Copier la transcription</string>
   <string name="action_edit_number_before_call">Modifier numéro avant d\'appeler</string>
   <string name="call_log_delete_all">Supprimer l\'historique des appels</string>
   <string name="call_log_trash_voicemail">Supprimer le message vocal</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Rechercher une position de lecture</string>
   <string name="action_menu_call_history_description">Historique des appels</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Plus d\'options</string>
-  <string name="action_menu_dialpad_button">Clavier</string>
   <string name="dialer_settings_label">Paramètres</string>
-  <string name="simulator_submenu_label">Simulateur</string>
-  <string name="new_ui_launcher_shortcut_label">Créer un raccourci vers la nouvelle interface</string>
   <string name="description_entering_bulk_action_mode">Activation du mode d\'action groupée</string>
   <string name="description_leaving_bulk_action_mode">Désactivation du mode d\'action groupée</string>
   <string name="description_selecting_bulk_action_mode">%1$s sélectionné</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Appel vidéo</string>
   <string name="description_start_voice_search">Démarrer la recherche vocale</string>
   <string name="voicemail">Messagerie vocale</string>
-  <string name="description_cancel_multi_select">Annuler le mode d\'actions groupées</string>
   <string name="voicemailMultiSelectDeleteConfirm">Supprimer</string>
   <string name="voicemailMultiSelectDeleteCancel">Annuler</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s sélectionnés</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Recherche vocale non disponible</string>
   <string name="dialer_hint_find_contact">Rech. des contacts</string>
-  <string name="block_number_search_hint">Ajouter num. ou rech. contacts</string>
   <string name="call_log_all_empty">Votre historique des appels est vide.</string>
   <string name="call_log_all_empty_action">Passer un appel</string>
   <string name="call_log_missed_empty">Vous n\'avez aucun appel manqué.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Historique des appels</string>
   <string name="call_log_all_title">Tous</string>
   <string name="call_log_missed_title">Manqués</string>
-  <string name="tab_speed_dial">Numérotation abrégée</string>
-  <string name="tab_history">Historique des appels</string>
   <string name="tab_all_contacts">Contacts</string>
-  <string name="tab_voicemail">Messagerie vocale</string>
-  <string name="search_shortcut_call_number">Appeler le %s</string>
   <string name="search_shortcut_create_new_contact">Créer un contact</string>
   <string name="search_shortcut_add_to_contact">Ajouter à un contact</string>
   <string name="search_shortcut_send_sms_message">Envoyer un SMS</string>
   <string name="search_shortcut_make_video_call">Passer un appel vidéo</string>
-  <string name="search_shortcut_block_number">Bloquer le numéro</string>
-  <string name="speed_dial_empty">Aucun contact pour la numérotation abrégée</string>
-  <string name="speed_dial_empty_add_favorite_action">Ajouter un favori</string>
-  <string name="remove_contact">Supprimer</string>
   <string name="select_all">Tout sélectionner</string>
   <string name="call_log_action_video_call">Appel vidéo</string>
-  <string name="call_log_action_set_up_video">Configurer l\'appel vidéo</string>
-  <string name="call_log_action_invite_video">Inviter à l\'appel vidéo</string>
   <string name="call_log_action_send_message">Envoyer un message</string>
   <string name="call_log_action_details">Informations sur l\'appel</string>
   <string name="call_log_action_share_voicemail">Envoyer à…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Appels</string>
   <string name="manage_blocked_numbers_label">Numéros bloqués</string>
   <string name="voicemail_settings_label">Messagerie vocale</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blocage appels désactivé temporairement</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Le blocage des appels a été désactivé, car vous avez contacté les services d\'urgence à l\'aide de ce téléphone au cours des dernières 48 heures. Le blocage sera réactivé automatiquement après 48 heures.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importer les numéros</string>
-  <string name="blocked_call_settings_import_description">Vous avez indiqué que certains appelants devaient automatiquement être renvoyés vers la messagerie vocale via d\'autres applications.</string>
-  <string name="blocked_call_settings_view_numbers_button">Afficher les numéros</string>
-  <string name="blocked_call_settings_import_button">Importer</string>
-  <string name="description_blocked_number_list_delete">Débloquer le numéro</string>
-  <string name="addBlockedNumber">Ajouter un numéro</string>
-  <string name="block_number_footer_message_vvm">Les appels associés à ces numéros seront bloqués, et les messages vocaux seront automatiquement supprimés.</string>
-  <string name="block_number_footer_message_no_vvm">Les appels associés à ces numéros seront bloqués, mais les appelants pourront peut-être toujours vous laisser des messages vocaux.</string>
-  <string name="block_list">Numéros bloqués</string>
-  <string name="alreadyBlocked">Le numéro \"%1$s\" est déjà bloqué.</string>
   <string name="phone_account_settings_label">Comptes téléphoniques</string>
-  <string name="permission_no_speeddial">Pour activer la numérotation abrégée, activez l\'autorisation Contacts.</string>
   <string name="permission_no_calllog">Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone.</string>
-  <string name="permission_no_search">Pour rechercher vos contacts, activez l\'autorisation Contacts.</string>
-  <string name="permission_place_call">Pour passer un appel, activez l\'autorisation Téléphone.</string>
   <string name="toast_cannot_write_system_settings">L\'application Téléphone n\'est pas autorisée à modifier les paramètres du système.</string>
   <string name="blocked_number_call_log_label">Bloqué</string>
   <string name="call_log_action_block_report_number">Bloquer/Signaler le spam vocal</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Numéro fiable</string>
   <string name="call_log_action_unblock_number">Débloquer le numéro</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s est injoignable, car non connecté</string>
-  <string name="about_phone_label">À propos</string>
-  <string name="voicemail_transcription_branding_text">Message transcrit par Google</string>
-  <string name="voicemail_transcription_in_progress">Transcription…</string>
-  <string name="voicemail_transcription_failed">Transcription non disponible.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcription non disponible. La langue n\'est pas compatible.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcription non disponible. Aucune voix détectée.</string>
-  <string name="voicemail_donation_promo_title">Voulez-vous aider à améliorer la pertinence de la transcription ?</string>
-  <string name="voicemail_donation_promo_content">Autorisez Google à analyser cette transcription, ainsi que celle des autres messages vocaux que vous recevrez. Les messages seront stockés de manière anonyme et vous pourrez modifier ces paramètres à tout moment. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">J\'accepte</string>
-  <string name="voicemail_donation_promo_opt_out">Non merci</string>
-  <string name="voicemail_transcription_rating">Notez la transcription</string>
-  <string name="voicemail_transcription_rating_thanks">Merci pour votre avis</string>
-  <string name="description_rating_good">J\'aime</string>
-  <string name="description_rating_bad">Je n\'aime pas</string>
-  <string name="view_conversation">Afficher</string>
-  <string name="ec_data_deleted">Appel supprimé. Affichez et supprimez les pièces jointes échangées au cours de cet appel dans Messages.</string>
-  <string name="multiple_ec_data_deleted">Appels supprimés. Affichez et supprimez les pièces jointes échangées au cours de ces appels dans Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-fur-rIT/cm_strings.xml b/java/com/android/dialer/app/res/values-fur-rIT/cm_strings.xml
new file mode 100644
index 0000000..f43876a
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-fur-rIT/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Dilunc lis clamadis</string>
+    <string name="incall_enable_dnd_title">Ative No Sta Disturbâ dilunc lis clamadis</string>
+    <string name="incall_vibrate_outgoing_title">Vibre ae rispueste</string>
+    <string name="incall_vibrate_call_waiting_title">Vibre su metude in spiete</string>
+    <string name="incall_vibrate_hangup_title">Vibre ae fin de clamade</string>
+    <string name="incall_vibrate_45_title">Vibre ogni minût</string>
+    <string name="incall_vibrate_45_summary">Vibre al 45ᵐ secont di ogni minût dilunc lis clamadis in jessude</string>
+    <string name="incall_dnd_dialog_message">Par podê ativâ No Sta Disturbâ, al è necessari autorizâ la aplicazion Telefon al control dal stât di No Sta Disturbâ.\nPermet l\'acès par abilitâ cheste funzion.</string>
+    <string name="allow">Permet</string>
+    <string name="deny">Dinee</string>
+    <string name="call_recording_category_title">Regjistrazion clamade</string>
+    <string name="call_recording_format">Formât audio</string>
+    <string name="call_via">Clame cun</string>
+    <string name="call_via_dialog_title">Clame cun\u2026</string>
+    <string name="call_log_stats_title">Statistichis</string>
+    <string name="action_menu_helplines">Liniis di jutori</string>
+    <string name="default_dialer_text">Tu âs di stabilî il Tastierin telefonic come aplicazion di telefon predefinie par doprâle.</string>
+    <string name="default_dialer_action">Met come predefinide</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-fy-rNL/cm_strings.xml b/java/com/android/dialer/app/res/values-fy-rNL/cm_strings.xml
new file mode 100644
index 0000000..924b2b0
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-fy-rNL/cm_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Wylst petear</string>
+    <string name="incall_enable_dnd_title">\"Net steure\" ynskeakelje wylst petearen</string>
+    <string name="incall_vibrate_outgoing_title">Trille by oannimmen</string>
+    <string name="incall_vibrate_call_waiting_title">Trille by wachtsjen</string>
+    <string name="incall_vibrate_hangup_title">Trille by ophingjen</string>
+    <string name="incall_vibrate_45_title">Elke minút trille</string>
+    <string name="incall_vibrate_45_summary">Elke 45<SUP>e</SUP> sekonde fan in minút trille by útgeande petearen</string>
+    <string name="incall_dnd_dialog_message">Om \"Net steure\" yn te skeakeljen moat de telefoan-app de machtiging ferliend wurde om de steat \"Net steure\" yn te stellen.\nGraach dit tastean.</string>
+    <string name="allow">Tastean</string>
+    <string name="deny">Wegerje</string>
+    <string name="call_recording_category_title">Petearopname</string>
+    <string name="call_recording_format">Audioformaat</string>
+    <string name="call_via">Belje fia</string>
+    <string name="call_via_dialog_title">Belje fia\u2026</string>
+    <string name="call_log_stats_title">Statistiken</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-gd/cm_strings.xml b/java/com/android/dialer/app/res/values-gd/cm_strings.xml
new file mode 100644
index 0000000..24732b0
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-gd/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Am broinn gairme</string>
+    <string name="incall_enable_dnd_title">Cuir an comas “Na bris a-steach orm” rè ghairmean</string>
+    <string name="incall_vibrate_outgoing_title">Nì freagairt a-steach crith</string>
+    <string name="incall_vibrate_call_waiting_title">Nì gairm a’ feitheamh crith</string>
+    <string name="incall_vibrate_hangup_title">Dèan crith nuair a thig gairm gu crìch</string>
+    <string name="incall_vibrate_45_title">Dèan crith gach mionaid</string>
+    <string name="incall_vibrate_45_summary">Nì seo crith an 45mh diog aig gach mionaid rè gairmean a-mach</string>
+    <string name="incall_dnd_dialog_message">Feumaidh tu cead a thoirt do dh’aplacaid an fhòn ach an stiùir i an staid air “Na bris a-steach orm” mus cuir thu an gleus seo an comas.\nFeuch an ceadaich thu seo.</string>
+    <string name="allow">Ceadaich</string>
+    <string name="deny">Diùlt</string>
+    <string name="call_recording_category_title">Clàradh gairme</string>
+    <string name="call_recording_format">Fòrmat fuaime</string>
+    <string name="call_via">Cuir fòn slighe</string>
+    <string name="call_via_dialog_title">Cuir fòn slighe\u2026</string>
+    <string name="call_log_stats_title">Stadastaireachd</string>
+    <string name="action_menu_helplines">Loidhnichean-taice</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-gl/cm_strings.xml b/java/com/android/dialer/app/res/values-gl/cm_strings.xml
new file mode 100644
index 0000000..3665446
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-gl/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">En chamada</string>
+    <string name="incall_enable_dnd_title">Activar non molestar durante as chamadas</string>
+    <string name="incall_vibrate_outgoing_title">Vibrar ao responder</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrar cando haxa unha chamada en espera</string>
+    <string name="incall_vibrate_hangup_title">Vibrar ao colgar</string>
+    <string name="incall_vibrate_45_title">Vibrar cada minuto</string>
+    <string name="incall_vibrate_45_summary">Vibra na marca dos 45 segundos de cada minuto durante as chamadas feitas</string>
+    <string name="incall_dnd_dialog_message">Para activar non molestar, a aplicación do teléfono debe ter permiso para controlar o estado de non molestar. \nPermiteo.</string>
+    <string name="allow">Permitir</string>
+    <string name="deny">Denegar</string>
+    <string name="call_recording_category_title">Gravación das chamadas</string>
+    <string name="call_recording_format">Formato de son</string>
+    <string name="call_via">Chamar via</string>
+    <string name="call_via_dialog_title">Chamar via\u2026</string>
+    <string name="call_log_stats_title">Estatísticas</string>
+    <string name="action_menu_helplines">Liñas de axuda</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-gl/strings.xml b/java/com/android/dialer/app/res/values-gl/strings.xml
index 54215fd..0345628 100644
--- a/java/com/android/dialer/app/res/values-gl/strings.xml
+++ b/java/com/android/dialer/app/res/values-gl/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Teléfono</string>
-  <string name="launcherDialpadActivityLabel">Teclado do teléfono</string>
   <string name="callHistoryIconLabel">Historial de chamadas</string>
   <string name="action_copy_number_text">Copiar número</string>
-  <string name="copy_transcript_text">Copiar transcrición</string>
   <string name="action_edit_number_before_call">Editar número antes de chamar</string>
   <string name="call_log_delete_all">Borrar historial de chamadas</string>
   <string name="call_log_trash_voicemail">Eliminar correo de voz</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Buscar posición de reprodución</string>
   <string name="action_menu_call_history_description">Historial de chamadas</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Máis opcións</string>
-  <string name="action_menu_dialpad_button">Teclado</string>
   <string name="dialer_settings_label">Configuración</string>
-  <string name="simulator_submenu_label">Simulador</string>
-  <string name="new_ui_launcher_shortcut_label">Crear atallo para a nova IU</string>
   <string name="description_entering_bulk_action_mode">Entrando no modo de acción en bloque</string>
   <string name="description_leaving_bulk_action_mode">Saíu do modo de acción en bloque</string>
   <string name="description_selecting_bulk_action_mode">Seleccionouse: %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videochamada</string>
   <string name="description_start_voice_search">Iniciar busca por voz</string>
   <string name="voicemail">Correo de voz</string>
-  <string name="description_cancel_multi_select">Cancela o modo de accións en lote</string>
   <string name="voicemailMultiSelectDeleteConfirm">Eliminar</string>
   <string name="voicemailMultiSelectDeleteCancel">Cancelar</string>
   <string name="voicemailMultiSelectActionBarTitle">Cantidade seleccionada: %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s (%2$s)</string>
   <string name="voice_search_not_available">Busca por voz non dispoñible</string>
   <string name="dialer_hint_find_contact">Buscar contactos</string>
-  <string name="block_number_search_hint">Engade número/busca contactos</string>
   <string name="call_log_all_empty">O teu historial de chamadas está baleiro</string>
   <string name="call_log_all_empty_action">Facer unha chamada</string>
   <string name="call_log_missed_empty">Non tes chamadas perdidas.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Historial de chamadas</string>
   <string name="call_log_all_title">Todas</string>
   <string name="call_log_missed_title">Perdidas</string>
-  <string name="tab_speed_dial">Marcación rápida</string>
-  <string name="tab_history">Historial de chamadas</string>
   <string name="tab_all_contacts">Contactos</string>
-  <string name="tab_voicemail">Correo de voz</string>
-  <string name="search_shortcut_call_number">Chamar ao %s</string>
   <string name="search_shortcut_create_new_contact">Crear novo contacto</string>
   <string name="search_shortcut_add_to_contact">Engadir a un contacto</string>
   <string name="search_shortcut_send_sms_message">Enviar SMS</string>
   <string name="search_shortcut_make_video_call">Realizar unha videochamada</string>
-  <string name="search_shortcut_block_number">Bloquear número</string>
-  <string name="speed_dial_empty">Aínda non tes ningún contacto na marcación directa</string>
-  <string name="speed_dial_empty_add_favorite_action">Engade un favorito para a marcación directa</string>
-  <string name="remove_contact">Eliminar</string>
   <string name="select_all">Seleccionar todos</string>
   <string name="call_log_action_video_call">Videochamada</string>
-  <string name="call_log_action_set_up_video">Configurar videochamadas</string>
-  <string name="call_log_action_invite_video">Invitar a unha videochamada</string>
   <string name="call_log_action_send_message">Enviar unha mensaxe</string>
   <string name="call_log_action_details">Detalles da chamada</string>
   <string name="call_log_action_share_voicemail">Enviar a…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Chamadas</string>
   <string name="manage_blocked_numbers_label">Números bloqueados</string>
   <string name="voicemail_settings_label">Correo de voz</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">O bloqueo de chamadas desactivouse temporalmente</string>
-  <string name="blocked_numbers_disabled_emergency_desc">O bloqueo de chamadas desactivouse porque contactaches cos servizos de urxencias desde este teléfono nas últimas 48 horas. Volverase activar automaticamente unha vez que pase o período de 48 horas.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importar números</string>
-  <string name="blocked_call_settings_import_description">Previamente marcaches algúns emisores da chamada para que se envíen automaticamente ao correo de voz a través doutras aplicacións.</string>
-  <string name="blocked_call_settings_view_numbers_button">Ver números</string>
-  <string name="blocked_call_settings_import_button">Importar</string>
-  <string name="description_blocked_number_list_delete">Desbloquear número</string>
-  <string name="addBlockedNumber">Engadir número</string>
-  <string name="block_number_footer_message_vvm">Bloquearanse as chamadas destes números e eliminaranse automaticamente os correos de voz.</string>
-  <string name="block_number_footer_message_no_vvm">Bloquearanse as chamadas destes números, pero é posible que aínda poidan deixarche correos de voz.</string>
-  <string name="block_list">Números bloqueados</string>
-  <string name="alreadyBlocked">O %1$s xa está bloqueado.</string>
   <string name="phone_account_settings_label">Contas de chamadas</string>
-  <string name="permission_no_speeddial">Para activar a marcación rápida, activa o permiso de Contactos.</string>
   <string name="permission_no_calllog">Para ver o teu rexistro de chamadas, activa o permiso de Teléfono.</string>
-  <string name="permission_no_search">Para buscar os teus contactos, activa os permisos de Contactos.</string>
-  <string name="permission_place_call">Para facer unha chamada, activa o permiso de Teléfono.</string>
   <string name="toast_cannot_write_system_settings">A aplicación Teléfono non ten permiso para modificar a configuración do sistema.</string>
   <string name="blocked_number_call_log_label">Bloqueado</string>
   <string name="call_log_action_block_report_number">Bloquear/marcar como spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Non é spam</string>
   <string name="call_log_action_unblock_number">Desbloquear número</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">Non se pode contactar con %1$s porque está sen conexión</string>
-  <string name="about_phone_label">Acerca de</string>
-  <string name="voicemail_transcription_branding_text">Transcrito por Google</string>
-  <string name="voicemail_transcription_in_progress">Transcribindo…</string>
-  <string name="voicemail_transcription_failed">Transcrición non dispoñible.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcrición non dispoñible. Non se admite o idioma.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcrición non dispoñible. Non se detectou ningunha voz.</string>
-  <string name="voicemail_donation_promo_title">Queres axudar a mellorar a calidade das transcricións?</string>
-  <string name="voicemail_donation_promo_content">Permite que Google revise esta mensaxe do correo de voz, así como as que recibas no futuro, usando as transcricións. Almacenaranse de forma anónima. Podes cambiar a configuración en calquera momento. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Si, acepto</string>
-  <string name="voicemail_donation_promo_opt_out">Non, grazas</string>
-  <string name="voicemail_transcription_rating">Valora a transcrición</string>
-  <string name="voicemail_transcription_rating_thanks">Grazas pola túa opinión</string>
-  <string name="description_rating_good">Gústame</string>
-  <string name="description_rating_bad">Non me gusta</string>
-  <string name="view_conversation">Ver</string>
-  <string name="ec_data_deleted">Eliminouse a chamada. Podes ver e eliminar os anexos compartidos durante esta chamada en Mensaxes.</string>
-  <string name="multiple_ec_data_deleted">Elimináronse as chamadas. Podes ver e eliminar os anexos compartidos durante as chamadas en Mensaxes.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-gu/strings.xml b/java/com/android/dialer/app/res/values-gu/strings.xml
index 264d05b..7d3435c 100644
--- a/java/com/android/dialer/app/res/values-gu/strings.xml
+++ b/java/com/android/dialer/app/res/values-gu/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ફોન</string>
-  <string name="launcherDialpadActivityLabel">ફોન કીપેડ</string>
   <string name="callHistoryIconLabel">કૉલ ઇતિહાસ</string>
   <string name="action_copy_number_text">નંબર કૉપિ કરો</string>
-  <string name="copy_transcript_text">ટ્રાંસ્ક્રિપ્શન કૉપિ કરો</string>
   <string name="action_edit_number_before_call">કૉલ કરતાં પહેલાં નંબર સંપાદિત કરો</string>
   <string name="call_log_delete_all">કૉલ ઇતિહાસ સાફ કરો</string>
   <string name="call_log_trash_voicemail">વૉઇસમેઇલ કાઢી નાખો</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">પ્લેબેક સ્થિતિ શોધો</string>
   <string name="action_menu_call_history_description">કૉલ ઇતિહાસ</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">વધુ વિકલ્પો</string>
-  <string name="action_menu_dialpad_button">કી પેડ</string>
   <string name="dialer_settings_label">સેટિંગ્સ</string>
-  <string name="simulator_submenu_label">સિમ્યુલેટર</string>
-  <string name="new_ui_launcher_shortcut_label">નવું UI શૉર્ટકટ્સ બનાવો</string>
   <string name="description_entering_bulk_action_mode">બલ્ક ક્રિયા મોડમાં દાખલ થઈ રહ્યાં છે</string>
   <string name="description_leaving_bulk_action_mode">બલ્ક ક્રિયા મોડ છોડી દીધો</string>
   <string name="description_selecting_bulk_action_mode">%1$s પસંદ કર્યો</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">વિડિઓ કૉલ.</string>
   <string name="description_start_voice_search">વૉઇસ શોધ શરૂ કરો</string>
   <string name="voicemail">વૉઇસમેઇલ</string>
-  <string name="description_cancel_multi_select">બૅચ ક્રિયા મોડ રદ કરો</string>
   <string name="voicemailMultiSelectDeleteConfirm">કાઢી નાખો</string>
   <string name="voicemailMultiSelectDeleteCancel">રદ કરો</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s પસંદ કરી</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">વૉઇસ શોધ ઉપલબ્ધ નથી</string>
   <string name="dialer_hint_find_contact">સંપર્કો શોધો</string>
-  <string name="block_number_search_hint">નંબર ઉમેરો અથવા સંપર્કો શોધો</string>
   <string name="call_log_all_empty">તમારો કૉલ ઇતિહાસ ખાલી છે</string>
   <string name="call_log_all_empty_action">કૉલ કરો</string>
   <string name="call_log_missed_empty">તમારી પાસે કોઇ છૂટેલાં કૉલ્સ નથી.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">કૉલ ઇતિહાસ</string>
   <string name="call_log_all_title">તમામ</string>
   <string name="call_log_missed_title">છૂટેલ</string>
-  <string name="tab_speed_dial">સ્પીડ ડાયલ</string>
-  <string name="tab_history">કૉલ ઇતિહાસ</string>
   <string name="tab_all_contacts">સંપર્કો</string>
-  <string name="tab_voicemail">વૉઇસમેઇલ</string>
-  <string name="search_shortcut_call_number">%s ને કૉલ કરો</string>
   <string name="search_shortcut_create_new_contact">નવો સંપર્ક બનાવો</string>
   <string name="search_shortcut_add_to_contact">સંપર્કમાં ઉમેરો</string>
   <string name="search_shortcut_send_sms_message">SMS મોકલો</string>
   <string name="search_shortcut_make_video_call">વિડિઓ કૉલ કરો</string>
-  <string name="search_shortcut_block_number">નંબર અવરોધિત કરો</string>
-  <string name="speed_dial_empty">તમારા ઝડપી ડાયલ પર હજી સુધી કોઇ નથી</string>
-  <string name="speed_dial_empty_add_favorite_action">એક મનપસંદ ઉમેરો</string>
-  <string name="remove_contact">દૂર કરો</string>
   <string name="select_all">તમામ પસંદ કરો</string>
   <string name="call_log_action_video_call">વિડિઓ કૉલ</string>
-  <string name="call_log_action_set_up_video">વીડિઓ કૉલિંગ સેટ કરો</string>
-  <string name="call_log_action_invite_video">વીડિઓ કૉલ માટે આમંત્રિત કરો</string>
   <string name="call_log_action_send_message">એક સંદેશ મોકલો</string>
   <string name="call_log_action_details">કૉલની વિગતો</string>
   <string name="call_log_action_share_voicemail">આને મોકલો ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">કૉલ્સ</string>
   <string name="manage_blocked_numbers_label">બ્લૉક કરેલ નંબર</string>
   <string name="voicemail_settings_label">વૉઇસમેઇલ</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">કૉલ અવરોધિત કરવાનું અસ્થાયીરૂપે બંધ છે</string>
-  <string name="blocked_numbers_disabled_emergency_desc">કૉલ અવરોધિત કરવાનું અક્ષમ કરવામાં આવ્યું છે કારણ કે તમે આ ફોનમાંથી છેલ્લા 48 કલાકમાં કટોકટીની સેવાઓનો સંપર્ક કર્યો હતો. એકવાર 48 કલાકનો સમયગાળો સમાપ્ત થાય, પછી તે આપમેળે ફરીથી સક્ષમ કરવામાં આવશે.</string>
-  <string name="import_send_to_voicemail_numbers_label">નંબર્સ આયાત કરો</string>
-  <string name="blocked_call_settings_import_description">તમે પહેલાં કેટલાક કૉલર્સને અન્ય ઍપ્લિકેશનો મારફતે વૉઇસમેઇલ પર આપમેળે મોકલવા માટે ચિહ્નિત કર્યા.</string>
-  <string name="blocked_call_settings_view_numbers_button">સંખ્યા જુઓ</string>
-  <string name="blocked_call_settings_import_button">આયાત કરો</string>
-  <string name="description_blocked_number_list_delete">નંબર અનાવરોધિત કરો</string>
-  <string name="addBlockedNumber">નંબર ઉમેરો</string>
-  <string name="block_number_footer_message_vvm">આ નંબરથી આવનારા કૉલ્સ અવરોધિત કરવામાં આવશે અને વૉઇસમેઇલ્સ આપમેળે કાઢી નાખવામાં આવશે.</string>
-  <string name="block_number_footer_message_no_vvm">આ નંબરથી આવનારા કૉલ્સ અવરોધિત કરવામાં આવશે, પરંતુ તેઓ હજી પણ તમારા માટે વૉઇસમેઇલ્સ મૂકવામાં સમર્થ હોઈ શકે છે.</string>
-  <string name="block_list">અવરોધિત નંબરો</string>
-  <string name="alreadyBlocked">%1$s ને પહેલેથી અવરોધિત કરવામાં આવ્યો છે.</string>
   <string name="phone_account_settings_label">કૉલિંગ એકાઉન્ટ્સ</string>
-  <string name="permission_no_speeddial">ઝડપી ડાયલ સક્ષમ કરવા માટે, સંપર્કોની પરવાનગી ચાલુ કરો.</string>
   <string name="permission_no_calllog">તમારો કૉલ લૉગ જોવા માટે, ફોન પરવાનગી ચાલુ કરો.</string>
-  <string name="permission_no_search">તમારા સંપર્કો શોધવા માટે, સંપર્કોની પરવાનગીઓ ચાલુ કરો.</string>
-  <string name="permission_place_call">કૉલ કરવા માટે, ફોન પરવાનગી ચાલુ કરો.</string>
   <string name="toast_cannot_write_system_settings">ફોન એપ્લિકેશનને સિસ્ટમ સેટિંગ્સ પર લખવાની પરવાનગી નથી.</string>
   <string name="blocked_number_call_log_label">અવરોધિત</string>
   <string name="call_log_action_block_report_number">સ્પામની જાણ કરો/અવરોધિત કરો</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">સ્પામ નથી</string>
   <string name="call_log_action_unblock_number">નંબર અનાવરોધિત કરો</string>
   <string name="spam_number_call_log_label">સ્પામ</string>
-  <string name="call_composer_connection_failed">%1$s ઑફલાઇન છે અને તેના સુધી પહોંચી શકતાં નથી</string>
-  <string name="about_phone_label">વિશે</string>
-  <string name="voicemail_transcription_branding_text">Google દ્વારા ટ્રાન્સ્ક્રાઇબ કરેલ</string>
-  <string name="voicemail_transcription_in_progress">ટ્રાન્સ્ક્રાઇબ કરી રહ્યાં છીએ…</string>
-  <string name="voicemail_transcription_failed">ટ્રાન્સક્રિપ્ટ ઉપલબ્ધ નથી.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">ટ્રાન્સક્રિપ્ટ ઉપલબ્ધ નથી. ભાષા સમર્થિત નથી.</string>
-  <string name="voicemail_transcription_failed_no_speech">ટ્રાન્સક્રિપ્ટ ઉપલબ્ધ નથી. કોઈ ધ્વનિ સંભળાયો નથી.</string>
-  <string name="voicemail_donation_promo_title">ટ્રાન્સક્રિપ્શનની સચોટતા બહેતર બનાવવામાં સહાય કરવા ઈચ્છો છો?</string>
-  <string name="voicemail_donation_promo_content">Googleને આ અને ભાવિ વૉઇસમેઇલ સંદેશા ટ્રાન્સક્રિપ્ટ વડે રિવ્યૂ કરવા દો. તે અજ્ઞાત રૂપે સ્ટોર કરવામાં આવશે. ગમે ત્યારે સેટિંગમાં જઈને બદલો. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">હા, ઠીક છે</string>
-  <string name="voicemail_donation_promo_opt_out">ના, આભાર</string>
-  <string name="voicemail_transcription_rating">ટ્રાન્સક્રિપ્શનની ક્વૉલિટીને રેટ કરો</string>
-  <string name="voicemail_transcription_rating_thanks">તમારા પ્રતિસાદ બદલ આભાર</string>
-  <string name="description_rating_good">પસંદ</string>
-  <string name="description_rating_bad">નાપસંદ</string>
-  <string name="view_conversation">જુઓ</string>
-  <string name="ec_data_deleted">કૉલ કાઢી નાખ્યો. આ કૉલ દરમિયાન સંદેશામાં શેર કરેલ જોડાણ જુઓ અને કાઢી નાખો.</string>
-  <string name="multiple_ec_data_deleted">કૉલ કાઢી નાખ્યા. કૉલ દરમિયાન સંદેશામાં શેર કરેલ જોડાણ જુઓ અને કાઢી નાખો.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-hi/strings.xml b/java/com/android/dialer/app/res/values-hi/strings.xml
index 9caf78b..28c9c61 100644
--- a/java/com/android/dialer/app/res/values-hi/strings.xml
+++ b/java/com/android/dialer/app/res/values-hi/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">फ़ोन</string>
-  <string name="launcherDialpadActivityLabel">फ़ोन कीपैड</string>
   <string name="callHistoryIconLabel">कॉल इतिहास</string>
   <string name="action_copy_number_text">नंबर कॉपी करें</string>
-  <string name="copy_transcript_text">ट्रांसक्रिप्शन को कॉपी करें</string>
   <string name="action_edit_number_before_call">कॉल करने से पहले नंबर संपादित करें</string>
   <string name="call_log_delete_all">कॉल इतिहास साफ़ करें</string>
   <string name="call_log_trash_voicemail">वॉइसमेल हटाएं</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">प्लेबैक स्थिति का पता लगाएं</string>
   <string name="action_menu_call_history_description">कॉल इतिहास</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">अधिक विकल्प</string>
-  <string name="action_menu_dialpad_button">कीपैड</string>
   <string name="dialer_settings_label">सेटिंग</string>
-  <string name="simulator_submenu_label">सिम्युलेटर</string>
-  <string name="new_ui_launcher_shortcut_label">नया UI शॉर्टकट बनाएं</string>
   <string name="description_entering_bulk_action_mode">बल्क कार्रवाई मोड में प्रवेश कर रहे हैं</string>
   <string name="description_leaving_bulk_action_mode">बल्क कार्रवाई मोड छोड़ा</string>
   <string name="description_selecting_bulk_action_mode">%1$s को चुना गया</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">वीडियो कॉल.</string>
   <string name="description_start_voice_search">बोलकर खोजें शुरु करें</string>
   <string name="voicemail">वॉइसमेल</string>
-  <string name="description_cancel_multi_select">बैच कार्रवाई मोड रद्द करें</string>
   <string name="voicemailMultiSelectDeleteConfirm">हटाएं</string>
   <string name="voicemailMultiSelectDeleteCancel">रद्द करें</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s चयनित</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">बोलकर खोजना उपलब्‍ध नहीं है</string>
   <string name="dialer_hint_find_contact">संपर्क खोजें</string>
-  <string name="block_number_search_hint">नंबर जोड़ें या संपर्क खोजें</string>
   <string name="call_log_all_empty">आपके कॉल इतिहास में कुछ नहीं है</string>
   <string name="call_log_all_empty_action">कॉल करें</string>
   <string name="call_log_missed_empty">आपके पास कोई भी मिस्ड कॉल (छूटा हुआ) कॉल नहीं है.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">कॉल इतिहास</string>
   <string name="call_log_all_title">सभी</string>
   <string name="call_log_missed_title">मिस्ड कॉल (छूटे हुए)</string>
-  <string name="tab_speed_dial">स्पीड डायल</string>
-  <string name="tab_history">कॉल इतिहास</string>
   <string name="tab_all_contacts">संपर्क</string>
-  <string name="tab_voicemail">वॉइसमेल</string>
-  <string name="search_shortcut_call_number">%s पर कॉल करें</string>
   <string name="search_shortcut_create_new_contact">नया संपर्क बनाएं</string>
   <string name="search_shortcut_add_to_contact">किसी संपर्क में जोड़ें</string>
   <string name="search_shortcut_send_sms_message">SMS भेजें</string>
   <string name="search_shortcut_make_video_call">वीडियो कॉल करें</string>
-  <string name="search_shortcut_block_number">नंबर ब्लॉक करें</string>
-  <string name="speed_dial_empty">आपके स्‍पीड डायल पर अभी तक कोई भी नहीं है</string>
-  <string name="speed_dial_empty_add_favorite_action">पसंदीदा संपर्क जोड़ें</string>
-  <string name="remove_contact">निकालें</string>
   <string name="select_all">सभी चुनें</string>
   <string name="call_log_action_video_call">वीडियो कॉल</string>
-  <string name="call_log_action_set_up_video">वीडियो कॉलिंग सेट अप करें</string>
-  <string name="call_log_action_invite_video">वीडियो कॉल पर आमंत्रित करें</string>
   <string name="call_log_action_send_message">संदेश भेजें</string>
   <string name="call_log_action_details">कॉल विवरण</string>
   <string name="call_log_action_share_voicemail">इन्हें भेजें …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">कॉल</string>
   <string name="manage_blocked_numbers_label">ब्लॉक किए गए नंबर</string>
   <string name="voicemail_settings_label">वॉइसमेल</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">कॉल अवरुद्ध करना अस्‍थायी रूप से बंद है</string>
-  <string name="blocked_numbers_disabled_emergency_desc">कॉल अवरुद्ध किए जाने को अक्षम कर दिया गया है क्योंकि पिछले 48 घंटों में आपने इस फ़ोन से आपातकालीन सेवाओं से संपर्क किया है. 48 घंटे की अवधि बीत जाने पर यह अपने आप फिर से सक्षम हो जाएगी.</string>
-  <string name="import_send_to_voicemail_numbers_label">नंबर आयात करें</string>
-  <string name="blocked_call_settings_import_description">आपने पहले कुछ कॉलर को अपने आप अन्य ऐप्स के द्वारा वॉइसमेल भेजे जाने के लिए चिह्नित किया था.</string>
-  <string name="blocked_call_settings_view_numbers_button">नंबर देखें</string>
-  <string name="blocked_call_settings_import_button">आयात करें</string>
-  <string name="description_blocked_number_list_delete">नंबर अनवरोधित करें</string>
-  <string name="addBlockedNumber">नंबर जोड़ें</string>
-  <string name="block_number_footer_message_vvm">इन नंबर से आने वाले कॉल ब्लॉक कर दिए जाएंगे और वॉइसमेल अपने आप हटा दिए जाएंगे.</string>
-  <string name="block_number_footer_message_no_vvm">इन नंबर से आने वाले कॉल ब्लॉक कर दिए जाएंगे, लेकिन वे अब भी आपके लिए वॉइसमेल भेज सकेंगे.</string>
-  <string name="block_list">ब्लॉक किए गए नंबर</string>
-  <string name="alreadyBlocked">%1$s पहले से अवरोधित है.</string>
   <string name="phone_account_settings_label">कॉलिंग खाते</string>
-  <string name="permission_no_speeddial">स्पीड डायल सक्षम करने के लिए, संपर्क अनुमति चालू करें.</string>
   <string name="permission_no_calllog">अपना कॉल लॉग देखने के लिए, फ़ोन अनुमति चालू करें.</string>
-  <string name="permission_no_search">अपने संपर्कों की खोज करने के लिए, संपर्क अनुमतियों को चालू करें.</string>
-  <string name="permission_place_call">कॉल करने के लिए, फ़ोन अनुमति चालू करें.</string>
   <string name="toast_cannot_write_system_settings">फ़ोन ऐप को सिस्टम सेटिंग में लिखने की अनुमति नहीं है.</string>
   <string name="blocked_number_call_log_label">अवरोधित</string>
   <string name="call_log_action_block_report_number">अवरुद्ध करें/स्पैम की रिपोर्ट करें</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">स्पैम नहीं है</string>
   <string name="call_log_action_unblock_number">नंबर अनवरोधित करें</string>
   <string name="spam_number_call_log_label">स्पैम</string>
-  <string name="call_composer_connection_failed">%1$s ऑफ़लाइन हैं और उन तक नहीं पहुंचा जा सकता</string>
-  <string name="about_phone_label">संक्षिप्त विवरण</string>
-  <string name="voicemail_transcription_branding_text">यह ट्रांसक्रिप्शन Google ने किया है</string>
-  <string name="voicemail_transcription_in_progress">ट्रांसक्राइब कर रहा है…</string>
-  <string name="voicemail_transcription_failed">ट्रांसक्रिप्ट उपलब्‍ध नहीं है.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">ट्रांसक्रिप्ट उपलब्‍ध नहीं है. यह भाषा उपलब्ध नहीं है.</string>
-  <string name="voicemail_transcription_failed_no_speech">ट्रांसक्रिप्ट उपलब्‍ध नहीं है. कोई भी भाषण नहीं मिला.</string>
-  <string name="voicemail_donation_promo_title">क्या वॉइसमेल को लेख में बदलने की सटीकता को सुधारना चाहते हैं?</string>
-  <string name="voicemail_donation_promo_content">Google को इस मैसेज के साथ-साथ भविष्य में भी लेख वाले सभी वॉइसमेल मैसेज की समीक्षा करने दें. उन्हें गुमनाम रूप से संग्रहित किया जाएगा. आप जब चाहें सेटिंग में बदलाव कर सकते हैं. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">हां मैं सहमत हूं</string>
-  <string name="voicemail_donation_promo_opt_out">नहीं, धन्यवाद</string>
-  <string name="voicemail_transcription_rating">ट्रांसक्रिप्शन क्वालिटी आंकें</string>
-  <string name="voicemail_transcription_rating_thanks">आपके सुझाव के लिए धन्यवाद</string>
-  <string name="description_rating_good">पसंद करें</string>
-  <string name="description_rating_bad">नापसंद करें</string>
-  <string name="view_conversation">देखें</string>
-  <string name="ec_data_deleted">कॉल हटाया गया. संदेश में जा कर इस कॉल के दौरान शेयर किए गए अटैचमेंट देखें और हटाएं.</string>
-  <string name="multiple_ec_data_deleted">कॉल हटाए गए. संदेश में जा कर इस कॉल के दौरान शेयर किए गए अटैचमेंट देखें और हटाएं.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-hr/cm_strings.xml b/java/com/android/dialer/app/res/values-hr/cm_strings.xml
new file mode 100644
index 0000000..0f11711
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-hr/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_vibrate_outgoing_title">Vibriraj prilikom javljanja</string>
+    <string name="incall_vibrate_call_waiting_title">Vibriraj prilikom poziva na čekanju</string>
+    <string name="incall_vibrate_hangup_title">Vibriraj prilikom prekida</string>
+    <string name="incall_vibrate_45_title">Vibriraj svake minute</string>
+    <string name="incall_vibrate_45_summary">Vibriraj kad istekne prvih 45 sekundi svake minute odlaznog poziva</string>
+    <string name="action_menu_helplines">Brojevi za pomoć</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-hr/strings.xml b/java/com/android/dialer/app/res/values-hr/strings.xml
index 1f8f11b..7ffbf3f 100644
--- a/java/com/android/dialer/app/res/values-hr/strings.xml
+++ b/java/com/android/dialer/app/res/values-hr/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Telefonska tipkovnica</string>
   <string name="callHistoryIconLabel">Povijest poziva</string>
   <string name="action_copy_number_text">Kopiraj broj</string>
-  <string name="copy_transcript_text">Kopiraj prijepis</string>
   <string name="action_edit_number_before_call">Uredi broj prije pozivanja</string>
   <string name="call_log_delete_all">Izbriši povijest poziva</string>
   <string name="call_log_trash_voicemail">Izbriši govornu poštu</string>
@@ -36,10 +34,7 @@
   <string name="description_playback_seek">Traženje položaja reprodukcije</string>
   <string name="action_menu_call_history_description">Povijest poziva</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Više opcija</string>
-  <string name="action_menu_dialpad_button">tipkovnica</string>
   <string name="dialer_settings_label">Postavke</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Izrada prečaca novog sučelja</string>
   <string name="description_entering_bulk_action_mode">Ulazak u način skupne radnje</string>
   <string name="description_leaving_bulk_action_mode">Napuštanje načina skupne radnje</string>
   <string name="description_selecting_bulk_action_mode">Odabrano: %1$s</string>
@@ -50,7 +45,6 @@
   <string name="description_video_call">Videopoziv.</string>
   <string name="description_start_voice_search">Pokretanje glasovnog pretraživanja</string>
   <string name="voicemail">Govorna pošta</string>
-  <string name="description_cancel_multi_select">Otkaži način skupnih radnji</string>
   <string name="voicemailMultiSelectDeleteConfirm">Izbriši</string>
   <string name="voicemailMultiSelectDeleteCancel">Odustani</string>
   <string name="voicemailMultiSelectActionBarTitle">Odabrano: %1$s</string>
@@ -65,7 +59,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Glasovno pretraživanje nije dostupno</string>
   <string name="dialer_hint_find_contact">Pretraži kontakte</string>
-  <string name="block_number_search_hint">Dodaj broj ili potraži kontakt</string>
   <string name="call_log_all_empty">Vaša je povijest poziva prazna</string>
   <string name="call_log_all_empty_action">Uputite poziv</string>
   <string name="call_log_missed_empty">Nemate propuštene pozive.</string>
@@ -73,23 +66,13 @@
   <string name="call_log_activity_title">Povijest poziva</string>
   <string name="call_log_all_title">Sve</string>
   <string name="call_log_missed_title">Propušteni</string>
-  <string name="tab_speed_dial">Brzo biranje</string>
-  <string name="tab_history">Povijest poziva</string>
   <string name="tab_all_contacts">Kontakti</string>
-  <string name="tab_voicemail">Govorna pošta</string>
-  <string name="search_shortcut_call_number">Nazovite %s</string>
   <string name="search_shortcut_create_new_contact">Izrada novog kontakta</string>
   <string name="search_shortcut_add_to_contact">Dodaj kontaktu</string>
   <string name="search_shortcut_send_sms_message">Pošalji SMS</string>
   <string name="search_shortcut_make_video_call">Uputite videopoziv</string>
-  <string name="search_shortcut_block_number">Blokiraj broj</string>
-  <string name="speed_dial_empty">Još nemate nikog na brzom biranju</string>
-  <string name="speed_dial_empty_add_favorite_action">Dodaj omiljeni kontakt</string>
-  <string name="remove_contact">Ukloni</string>
   <string name="select_all">Odaberi sve</string>
   <string name="call_log_action_video_call">Videopoziv</string>
-  <string name="call_log_action_set_up_video">Postavi videopozivanje</string>
-  <string name="call_log_action_invite_video">Pozovi u videopoziv</string>
   <string name="call_log_action_send_message">Pošalji poruku</string>
   <string name="call_log_action_details">Pojedinosti poziva</string>
   <string name="call_log_action_share_voicemail">Pošalji na...</string>
@@ -128,23 +111,8 @@
   <string name="call_settings_label">Pozivi</string>
   <string name="manage_blocked_numbers_label">Blokirani brojevi</string>
   <string name="voicemail_settings_label">Govorna pošta</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blokiranje poziva privremeno isključeno</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Blokiranje poziva onemogućeno je jer ste kontaktirali hitne službe s ovog telefona u posljednjih 48 sati. Automatski će se ponovo omogućiti kada prođe 48 sati.</string>
-  <string name="import_send_to_voicemail_numbers_label">Uvoz brojeva</string>
-  <string name="blocked_call_settings_import_description">Ranije ste na drugim aplikacijama naveli da se neki pozivatelji automatski šalju na govornu poštu.</string>
-  <string name="blocked_call_settings_view_numbers_button">Prikaži brojeve</string>
-  <string name="blocked_call_settings_import_button">Uvezi</string>
-  <string name="description_blocked_number_list_delete">Deblokiranje broja</string>
-  <string name="addBlockedNumber">Dodaj broj</string>
-  <string name="block_number_footer_message_vvm">Pozivi s tih brojeva blokirat će se, a govorna pošta automatski će se brisati.</string>
-  <string name="block_number_footer_message_no_vvm">Pozivi s tih brojeva blokirat će se, ali pozivatelji će vam moći ostavljati govornu poštu.</string>
-  <string name="block_list">Blokirani brojevi</string>
-  <string name="alreadyBlocked">Broj %1$s već je blokiran.</string>
   <string name="phone_account_settings_label">Pozivanje računa</string>
-  <string name="permission_no_speeddial">Da biste omogućili brzo biranje, uključite dopuštenje za kontakte.</string>
   <string name="permission_no_calllog">Da biste vidjeli zapisnik poziva, uključite dopuštenje za telefon.</string>
-  <string name="permission_no_search">Da biste pretraživali kontakte, uključite dopuštenja za kontakte.</string>
-  <string name="permission_place_call">Da biste nazvali nekog, uključite dopuštenje za telefon.</string>
   <string name="toast_cannot_write_system_settings">Aplikacija Telefon nema dopuštenje za pisanje u postavke sustava.</string>
   <string name="blocked_number_call_log_label">Blokirano</string>
   <string name="call_log_action_block_report_number">Blokiraj/prijavi neželjen broj</string>
@@ -152,22 +120,4 @@
   <string name="call_log_action_remove_spam">Nije neželjeni broj</string>
   <string name="call_log_action_unblock_number">Deblokiranje broja</string>
   <string name="spam_number_call_log_label">Neželjena pošta</string>
-  <string name="call_composer_connection_failed">%1$s nije online i nije dostupan</string>
-  <string name="about_phone_label">O aplikaciji</string>
-  <string name="voicemail_transcription_branding_text">Prijepis: Google</string>
-  <string name="voicemail_transcription_in_progress">Transkripcija...</string>
-  <string name="voicemail_transcription_failed">Prijepis nije dostupan.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Prijepis nije dostupan. Jezik nije podržan.</string>
-  <string name="voicemail_transcription_failed_no_speech">Prijepis nije dostupan. Govor nije otkriven.</string>
-  <string name="voicemail_donation_promo_title">Želite li pomoći poboljšati točnost prijepisa?</string>
-  <string name="voicemail_donation_promo_content">Google će pregledati ove i buduće poruke govorne pošte pomoću transkripata. Pohranit će se anonimno. Promijenite Postavke u bilo kojem trenutku. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Da, u redu</string>
-  <string name="voicemail_donation_promo_opt_out">Ne, hvala</string>
-  <string name="voicemail_transcription_rating">Ocijenite kvalitetu prijepisa</string>
-  <string name="voicemail_transcription_rating_thanks">Zahvaljujemo na povratnim informacijama</string>
-  <string name="description_rating_good">Sviđa mi se</string>
-  <string name="description_rating_bad">Ne sviđa mi se</string>
-  <string name="view_conversation">Prikaži</string>
-  <string name="ec_data_deleted">Poziv je izbrisan. U Porukama pregledajte i izbrišite privitke podijeljene tijekom ovog poziva.</string>
-  <string name="multiple_ec_data_deleted">Pozivi su izbrisani. U Porukama pregledajte i izbrišite privitke podijeljene tijekom poziva.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-hu/cm_strings.xml b/java/com/android/dialer/app/res/values-hu/cm_strings.xml
new file mode 100644
index 0000000..1281bfe
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-hu/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Hívás közben</string>
+    <string name="incall_enable_dnd_title">Ne zavarjanak mód (DND) hívás közbeni engedélyezése</string>
+    <string name="incall_vibrate_outgoing_title">Hívásfogadáskor rezeg</string>
+    <string name="incall_vibrate_call_waiting_title">Hívásvárakoztatáskor rezeg</string>
+    <string name="incall_vibrate_hangup_title">Bontáskor rezeg</string>
+    <string name="incall_vibrate_45_title">Percenként rezeg</string>
+    <string name="incall_vibrate_45_summary">Minden 45. másodpercben rezeg a kimenő hívások során</string>
+    <string name="incall_dnd_dialog_message">A Ne zavarjanak engedélyezéséhez a Telefon-alkalmazásnak rendelkeznie kell a DND státuszvezérlés jogaival.\nKérjük, engedélyezze azt!</string>
+    <string name="allow">Engedélyezés</string>
+    <string name="deny">Elutasítás</string>
+    <string name="call_recording_category_title">Hívásrögzítés</string>
+    <string name="call_recording_format">Hangformátum</string>
+    <string name="call_via">Hívás a következővel</string>
+    <string name="call_via_dialog_title">Hívás a következővel\u2026</string>
+    <string name="call_log_stats_title">Statisztikák</string>
+    <string name="action_menu_helplines">Segédvonalak</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-hu/strings.xml b/java/com/android/dialer/app/res/values-hu/strings.xml
index 4ee1ecd..0babfbf 100644
--- a/java/com/android/dialer/app/res/values-hu/strings.xml
+++ b/java/com/android/dialer/app/res/values-hu/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Telefonbillenyűzet</string>
   <string name="callHistoryIconLabel">Híváslista</string>
   <string name="action_copy_number_text">Szám másolása</string>
-  <string name="copy_transcript_text">Átírás másolása</string>
   <string name="action_edit_number_before_call">Szám szerkesztése hívás előtt</string>
   <string name="call_log_delete_all">A híváslista törlése</string>
   <string name="call_log_trash_voicemail">Hangposta törlése</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Lejátszási pozíció módosítása</string>
   <string name="action_menu_call_history_description">Híváslista</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">További beállítások</string>
-  <string name="action_menu_dialpad_button">billentyűzet</string>
   <string name="dialer_settings_label">Beállítások</string>
-  <string name="simulator_submenu_label">Szimulátor</string>
-  <string name="new_ui_launcher_shortcut_label">Új felh. felület-parancsikon</string>
   <string name="description_entering_bulk_action_mode">Belépés tömeges műveleti módba</string>
   <string name="description_leaving_bulk_action_mode">Kilépett a tömeges műveleti módból</string>
   <string name="description_selecting_bulk_action_mode">Kijelölés: %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videohívás.</string>
   <string name="description_start_voice_search">Hangalapú keresés indítása</string>
   <string name="voicemail">Hangposta</string>
-  <string name="description_cancel_multi_select">Köteges művelet mód leállítva</string>
   <string name="voicemailMultiSelectDeleteConfirm">Törlés</string>
   <string name="voicemailMultiSelectDeleteCancel">Mégse</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s kiválasztva</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">A hangalapú keresés nem érhető el</string>
   <string name="dialer_hint_find_contact">Keresés a névjegyek között</string>
-  <string name="block_number_search_hint">Adjon meg egy számot, vagy keressen a névjegyek között</string>
   <string name="call_log_all_empty">A híváslista üres</string>
   <string name="call_log_all_empty_action">Hívásindítás</string>
   <string name="call_log_missed_empty">Nincsenek nem fogadott hívások.</string>
@@ -71,23 +64,12 @@
   <string name="call_log_activity_title">Hívási előzmények</string>
   <string name="call_log_all_title">Összes</string>
   <string name="call_log_missed_title">Nem fogadott </string>
-  <string name="tab_speed_dial">Gyorshívó</string>
-  <string name="tab_history">Híváslista</string>
-  <string name="tab_all_contacts">Címtár</string>
-  <string name="tab_voicemail">Hangposta</string>
-  <string name="search_shortcut_call_number">Hívás: %s</string>
   <string name="search_shortcut_create_new_contact">Új névjegy létrehozása</string>
   <string name="search_shortcut_add_to_contact">Hozzáadás névjegyhez</string>
   <string name="search_shortcut_send_sms_message">SMS küldése</string>
   <string name="search_shortcut_make_video_call">Videohívás kezdeményezése</string>
-  <string name="search_shortcut_block_number">Szám tiltása</string>
-  <string name="speed_dial_empty">Még semelyik telefonszám sincs gyorshívón</string>
-  <string name="speed_dial_empty_add_favorite_action">Kedvenc hozzáadása</string>
-  <string name="remove_contact">Eltávolítás</string>
   <string name="select_all">Az összes kijelölése</string>
   <string name="call_log_action_video_call">Videohívás</string>
-  <string name="call_log_action_set_up_video">Videohívás beállítása</string>
-  <string name="call_log_action_invite_video">Meghívás videohívásba</string>
   <string name="call_log_action_send_message">Üzenet küldése</string>
   <string name="call_log_action_details">Hívás adatai</string>
   <string name="call_log_action_share_voicemail">Címzett…</string>
@@ -126,23 +108,8 @@
   <string name="call_settings_label">Hívások</string>
   <string name="manage_blocked_numbers_label">Letiltott számok</string>
   <string name="voicemail_settings_label">Hangposta</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Hívástiltás átmenetileg felfüggesztve</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Felfüggesztettük a hívások tiltását, mert az elmúlt 48 órában tárcsázta a segélyhívót erről a telefonról. A funkciót automatikusan újból engedélyezzük 48 óra elteltével.</string>
-  <string name="import_send_to_voicemail_numbers_label">Számok importálása</string>
-  <string name="blocked_call_settings_import_description">Más alkalmazásokban korábban beállította, hogy bizonyos személyeket automatikusan a hangpostafiókba irányítsa a rendszer, amikor felhívják Önt.</string>
-  <string name="blocked_call_settings_view_numbers_button">Számok megtekintése</string>
-  <string name="blocked_call_settings_import_button">Importálás</string>
-  <string name="description_blocked_number_list_delete">Szám tiltásának feloldása</string>
-  <string name="addBlockedNumber">Szám hozzáadása</string>
-  <string name="block_number_footer_message_vvm">Az ezekről a számokról érkező hívásokat a rendszer letiltja, továbbá automatikusan törli az onnan érkező hangpostaüzeneteket is.</string>
-  <string name="block_number_footer_message_no_vvm">Az ezekről a számokról érkező hívásokat letiltja a rendszer, azonban a hívó felek továbbra is hagyhatnak hangpostaüzeneteket.</string>
-  <string name="block_list">Letiltott számok</string>
-  <string name="alreadyBlocked">A következő szám már le van tiltva: %1$s.</string>
   <string name="phone_account_settings_label">Telefonos fiókok</string>
-  <string name="permission_no_speeddial">Gyorshívás engedélyezéséhez kapcsolja be a Névjegyek engedélyt.</string>
   <string name="permission_no_calllog">A hívásnapló megtekintéséhez kapcsolja be a Telefon engedélyt.</string>
-  <string name="permission_no_search">A névjegyek kereséséhez adja meg a Névjegyek engedélyeket.</string>
-  <string name="permission_place_call">Hívásindításhoz kapcsolja be a Telefon engedélyt.</string>
   <string name="toast_cannot_write_system_settings">A Telefon alkalmazásnak nincs engedélye szerkeszteni a rendszerbeállításokat.</string>
   <string name="blocked_number_call_log_label">Letiltva</string>
   <string name="call_log_action_block_report_number">Letiltás/spam bejelentése</string>
@@ -150,22 +117,4 @@
   <string name="call_log_action_remove_spam">Nem spam</string>
   <string name="call_log_action_unblock_number">Szám tiltásának feloldása</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s offline, és nem érhető el.</string>
-  <string name="about_phone_label">Névjegy</string>
-  <string name="voicemail_transcription_branding_text">Az átirat készítője a Google</string>
-  <string name="voicemail_transcription_in_progress">Átírás…</string>
-  <string name="voicemail_transcription_failed">Sikertelen átírás.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Sikertelen átírás. A nyelv nem támogatott.</string>
-  <string name="voicemail_transcription_failed_no_speech">Sikertelen átírás. Nem észlelhető beszéd.</string>
-  <string name="voicemail_donation_promo_title">Segítene az átiratok pontosságának javításában?</string>
-  <string name="voicemail_donation_promo_content">Engedélyezze a Google számára, hogy ellenőrizze ezt és a jövőbeli hangpostaüzenetek átiratát. Az üzeneteket anonim módon tároljuk. A beállításoknál ezt bármikor módosíthatja. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Igen, csatlakozom</string>
-  <string name="voicemail_donation_promo_opt_out">Nem</string>
-  <string name="voicemail_transcription_rating">Átirat minőségének értékelése</string>
-  <string name="voicemail_transcription_rating_thanks">Köszönjük a visszajelzését.</string>
-  <string name="description_rating_good">Tetszik</string>
-  <string name="description_rating_bad">Nem tetszik</string>
-  <string name="view_conversation">Megtekintés</string>
-  <string name="ec_data_deleted">Hívás törölve. A hívás során megosztott mellékleteket az Üzenetek alkalmazásban tekintheti meg és törölheti.</string>
-  <string name="multiple_ec_data_deleted">Hívások törölve. A hívások során megosztott mellékleteket az Üzenetek alkalmazásban tekintheti meg és törölheti.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-hy/strings.xml b/java/com/android/dialer/app/res/values-hy/strings.xml
index 9deb0d9..14f7ec2 100644
--- a/java/com/android/dialer/app/res/values-hy/strings.xml
+++ b/java/com/android/dialer/app/res/values-hy/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Հեռախոս</string>
-  <string name="launcherDialpadActivityLabel">Հեռախոսի ստեղնաշար</string>
   <string name="callHistoryIconLabel">Զանգերի պատմություն</string>
   <string name="action_copy_number_text">Պատճենել համարը</string>
-  <string name="copy_transcript_text">Պատճենել տառադարձությունը</string>
   <string name="action_edit_number_before_call">Փոփոխել համարը զանգելուց առաջ</string>
   <string name="call_log_delete_all">Մաքրել զանգերի պատմությունը</string>
   <string name="call_log_trash_voicemail">Ջնջել ձայնային փոստը</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Փնտրել նվագարկման դիրքը</string>
   <string name="action_menu_call_history_description">Զանգերի պատմություն</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Այլ ընտրանքներ</string>
-  <string name="action_menu_dialpad_button">ստեղնաշար</string>
   <string name="dialer_settings_label">Կարգավորումներ</string>
-  <string name="simulator_submenu_label">Նմանակիչ</string>
-  <string name="new_ui_launcher_shortcut_label">Ստեղծել միջերեսի նոր դյուրանցում</string>
   <string name="description_entering_bulk_action_mode">Դուք մտել եք զանգվածային գործողության ռեժիմ</string>
   <string name="description_leaving_bulk_action_mode">Դուք դուրս եկաք զանգվածային գործողությունների ռեժիմից</string>
   <string name="description_selecting_bulk_action_mode">Ընտրվեց՝ %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Տեսազանգ</string>
   <string name="description_start_voice_search">Սկսկեք ձայնային որոնումը</string>
   <string name="voicemail">Ձայնային փոստ</string>
-  <string name="description_cancel_multi_select">Չեղարկել փաթեթային գործողությունների ռեժիմը</string>
   <string name="voicemailMultiSelectDeleteConfirm">Ջնջել</string>
   <string name="voicemailMultiSelectDeleteCancel">Չեղարկել</string>
   <string name="voicemailMultiSelectActionBarTitle">Ընտրվել է՝ %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Ձայնային որոնումը հասանելի չէ</string>
   <string name="dialer_hint_find_contact">Կոնտակտների որոնում</string>
-  <string name="block_number_search_hint">Ավելացրեք համար/որոնեք կոնտակտներ</string>
   <string name="call_log_all_empty">Զանգերի մատյանը դատարկ է</string>
   <string name="call_log_all_empty_action">Զանգել</string>
   <string name="call_log_missed_empty">Բաց թողնված զանգեր չունեք:</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Զանգերի պատմությունը</string>
   <string name="call_log_all_title">Բոլորը</string>
   <string name="call_log_missed_title">Բաց թողնված</string>
-  <string name="tab_speed_dial">Արագ համարարկում</string>
-  <string name="tab_history">Զանգերի պատմությունը</string>
   <string name="tab_all_contacts">Կոնտակտներ</string>
-  <string name="tab_voicemail">Ձայնային փոստ</string>
-  <string name="search_shortcut_call_number">Զանգել %s-ին</string>
   <string name="search_shortcut_create_new_contact">Ստեղծել նոր կոնտակտ</string>
   <string name="search_shortcut_add_to_contact">Ավելացնել կոնտակտին</string>
   <string name="search_shortcut_send_sms_message">Ուղարկել SMS</string>
   <string name="search_shortcut_make_video_call">Տեսազանգ սկսել</string>
-  <string name="search_shortcut_block_number">Արգելափակել համարը</string>
-  <string name="speed_dial_empty">Արագ համարահավաքման ցանկը դատարկ է</string>
-  <string name="speed_dial_empty_add_favorite_action">Ավելացնել կոնտակտ</string>
-  <string name="remove_contact">Հեռացնել</string>
   <string name="select_all">Ընտրել բոլորը</string>
   <string name="call_log_action_video_call">Տեսազանգ</string>
-  <string name="call_log_action_set_up_video">Կարգավորել տեսազանգը</string>
-  <string name="call_log_action_invite_video">Հրավիրել տեսազանգի</string>
   <string name="call_log_action_send_message">Ուղարկել հաղորդագրություն</string>
   <string name="call_log_action_details">Զանգի մանրամասները</string>
   <string name="call_log_action_share_voicemail">Ուղարկել…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Զանգեր</string>
   <string name="manage_blocked_numbers_label">Արգելափակված համարներ</string>
   <string name="voicemail_settings_label">Ձայնային փոստ</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Զանգերի արգելափակումը կասեցվել է</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Զանգերի արգելափակումը կասեցվել է, քանի որ վերջին 48 ժամվա ընթացքում դուք այս հեռախոսից զանգել եք արտակարգ իրավիճակների ծառայություններին: 48 ժամ տևողությամբ ժամանակահատվածի ավարտից հետո այն ավտոմատ կերպով կվերամիացվի:</string>
-  <string name="import_send_to_voicemail_numbers_label">Ներմուծել համարները</string>
-  <string name="blocked_call_settings_import_description">Համաձայն ձեր նախկին կարգավորումների՝ որոշ զանգողների պետք է ավտոմատ ուղարկվի ձայնային փոստ այլ հավելվածների միջոցով:</string>
-  <string name="blocked_call_settings_view_numbers_button">Կոնտակտների թիվը</string>
-  <string name="blocked_call_settings_import_button">Ներմուծում</string>
-  <string name="description_blocked_number_list_delete">Արգելաբացել համարը</string>
-  <string name="addBlockedNumber">Ավելացնել համար</string>
-  <string name="block_number_footer_message_vvm">Այս համարներից զանգերը կարգելափակվեն, իսկ ձայնային փոստի հաղորդագրություններն ավտոմատ կերպով կջնջվեն:</string>
-  <string name="block_number_footer_message_no_vvm">Այս համարներից զանգերը կարգելափակվեն, սակայն նրանք կկարողանան ձեզ համար ձայնային փոստի հաղորդագրություններ թողնել:</string>
-  <string name="block_list">Արգելափակված համարներ</string>
-  <string name="alreadyBlocked">%1$s համարն արդեն արգելափակված է:</string>
   <string name="phone_account_settings_label">Հաշիվներ զանգերի համար</string>
-  <string name="permission_no_speeddial">Արագ համարահավաքը թույլատրելու համար միացրեք Կոնտակտների թույլտվությունը:</string>
   <string name="permission_no_calllog">Ձեր զանգերի մատյանը տեսնելու համար միացրեք Հեռախոսի թույլտվությունը:</string>
-  <string name="permission_no_search">Կոնտակտները որոնելու համար միացրեք Կոնտակտների թույլտվությունները:</string>
-  <string name="permission_place_call">Զանգ կատարելու համար միացրեք Հեռախոսի թույլտվությունը:</string>
   <string name="toast_cannot_write_system_settings">Հեռախոս հավելվածը համակարգի կարգավորումները գրելու թույլտվություն չունի:</string>
   <string name="blocked_number_call_log_label">Արգելափակված է</string>
   <string name="call_log_action_block_report_number">Արգելափակել/Նշել որպես սպամ</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Սպամ չէ</string>
   <string name="call_log_action_unblock_number">Արգելաբացել համարը</string>
   <string name="spam_number_call_log_label">Սպամ</string>
-  <string name="call_composer_connection_failed">%1$s օգտատերը միացած չէ ցանցին և անհասանելի է</string>
-  <string name="about_phone_label">Հավելվածի մասին</string>
-  <string name="voicemail_transcription_branding_text">Տառադրումն ըստ Google-ի</string>
-  <string name="voicemail_transcription_in_progress">Տառադրում…</string>
-  <string name="voicemail_transcription_failed">Տառադրումն անհասանելի է:</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Տառադրումն անհասանելի է: Լեզուն չի աջակցվում:</string>
-  <string name="voicemail_transcription_failed_no_speech">Տառադրումն անհասանելի է: Խոսք չի գտնվել:</string>
-  <string name="voicemail_donation_promo_title">Կօգնե՞ք բարելավել տառադրման ճշգրտությունը</string>
-  <string name="voicemail_donation_promo_content">Թույլ տվեք Google-ին ստուգել տառադրում ունեցող այս և հետագա ձայնային հաղորդագրությունները: Դրանք կպահվեն անանուն կերպով: Ցանկացած պահի կարող եք փոխել կարգավորումները: %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Այո</string>
-  <string name="voicemail_donation_promo_opt_out">Ոչ</string>
-  <string name="voicemail_transcription_rating">Գնահատեք տառադրման որակը</string>
-  <string name="voicemail_transcription_rating_thanks">Շնորհակալ ենք արձագանքի համար</string>
-  <string name="description_rating_good">Հավանել</string>
-  <string name="description_rating_bad">Չհավանել</string>
-  <string name="view_conversation">Դիտել</string>
-  <string name="ec_data_deleted">Զանգը ջնջվեց: Դիտեք և ջնջեք զանգի ընթացքում ստացված կցորդները Messages հավելվածում:</string>
-  <string name="multiple_ec_data_deleted">Զանգերը ջնջվեցին: Դիտեք և ջնջեք զանգերի ընթացքում ստացված կցորդները Messages հավելվածում:</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-in/cm_strings.xml b/java/com/android/dialer/app/res/values-in/cm_strings.xml
new file mode 100644
index 0000000..f51a049
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-in/cm_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Dalam panggilan</string>
+    <string name="incall_enable_dnd_title">Aktifkan Jangan Ganggu selama panggilan</string>
+    <string name="incall_vibrate_outgoing_title">Bergetar saat menjawab</string>
+    <string name="incall_vibrate_call_waiting_title">Bergetar saat panggilan tunggu</string>
+    <string name="incall_vibrate_hangup_title">Bergetar saat tutup telepon</string>
+    <string name="incall_vibrate_45_title">Bergetar setiap menit</string>
+    <string name="incall_vibrate_45_summary">Bergetar pada detik ke-45 menandai tiap menit selama panggilan keluar</string>
+    <string name="allow">Izinkan</string>
+    <string name="deny">Tolak</string>
+    <string name="call_recording_category_title">Rekaman panggilan</string>
+    <string name="call_recording_format">Format audio</string>
+    <string name="call_via">Panggil melalui</string>
+    <string name="call_via_dialog_title">Panggil melalui\u2026</string>
+    <string name="call_log_stats_title">Statistik</string>
+    <string name="action_menu_helplines">Saluran bantuan</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-in/strings.xml b/java/com/android/dialer/app/res/values-in/strings.xml
index 669c43a..0d43c63 100644
--- a/java/com/android/dialer/app/res/values-in/strings.xml
+++ b/java/com/android/dialer/app/res/values-in/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telepon</string>
-  <string name="launcherDialpadActivityLabel">Keypad Ponsel</string>
   <string name="callHistoryIconLabel">Histori panggilan</string>
   <string name="action_copy_number_text">Salin nomor</string>
-  <string name="copy_transcript_text">Salin transkripsi</string>
   <string name="action_edit_number_before_call">Edit nomor sebelum memanggil</string>
   <string name="call_log_delete_all">Hapus histori panggilan</string>
   <string name="call_log_trash_voicemail">Hapus pesan suara</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Mencari posisi pemutaran</string>
   <string name="action_menu_call_history_description">Histori panggilan</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Opsi lainnya</string>
-  <string name="action_menu_dialpad_button">keypad</string>
   <string name="dialer_settings_label">Setelan</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Buat Pintasan UI Baru</string>
   <string name="description_entering_bulk_action_mode">Masuk ke mode tindakan massal</string>
   <string name="description_leaving_bulk_action_mode">Keluar dari mode tindakan massal</string>
   <string name="description_selecting_bulk_action_mode">%1$s dipilih</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Video call.</string>
   <string name="description_start_voice_search">Memulai penelusuran suara</string>
   <string name="voicemail">Kotak Pesan</string>
-  <string name="description_cancel_multi_select">Membatalkan mode tindakan kelompok</string>
   <string name="voicemailMultiSelectDeleteConfirm">Hapus</string>
   <string name="voicemailMultiSelectDeleteCancel">Batal</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s dipilih</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Penelusuran suara tidak tersedia</string>
   <string name="dialer_hint_find_contact">Telusuri kontak</string>
-  <string name="block_number_search_hint">Tambahkan nomor atau telusuri kontak</string>
   <string name="call_log_all_empty">Histori panggilan kosong</string>
   <string name="call_log_all_empty_action">Lakukan panggilan telepon</string>
   <string name="call_log_missed_empty">Tidak ada panggilan yang tidak terjawab.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Histori Panggilan</string>
   <string name="call_log_all_title">Semua</string>
   <string name="call_log_missed_title">Tak Dijawab</string>
-  <string name="tab_speed_dial">Panggilan cepat</string>
-  <string name="tab_history">Histori Panggilan</string>
   <string name="tab_all_contacts">Kontak</string>
-  <string name="tab_voicemail">Pesan suara</string>
-  <string name="search_shortcut_call_number">Telepon %s</string>
   <string name="search_shortcut_create_new_contact">Buat kontak baru</string>
   <string name="search_shortcut_add_to_contact">Tambahkan ke kontak</string>
   <string name="search_shortcut_send_sms_message">Kirim SMS</string>
   <string name="search_shortcut_make_video_call">Lakukan video call</string>
-  <string name="search_shortcut_block_number">Blokir nomor</string>
-  <string name="speed_dial_empty">Daftar panggilan cepat masih kosong</string>
-  <string name="speed_dial_empty_add_favorite_action">Tambahkan favorit</string>
-  <string name="remove_contact">Hapus</string>
   <string name="select_all">Pilih semua</string>
   <string name="call_log_action_video_call">Panggilan video</string>
-  <string name="call_log_action_set_up_video">Siapkan video call</string>
-  <string name="call_log_action_invite_video">Undang ke video call</string>
   <string name="call_log_action_send_message">Kirim pesan</string>
   <string name="call_log_action_details">Detail panggilan</string>
   <string name="call_log_action_share_voicemail">Kirim ke…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Panggilan telepon</string>
   <string name="manage_blocked_numbers_label">Nomor yang diblokir</string>
   <string name="voicemail_settings_label">Pesan Suara</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blokir panggilan dinonaktifkan sementara</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Pemblokiran panggilan telepon telah dinonaktifkan karena Anda menghubungi layanan darurat dari telepon ini dalam 48 jam terakhir. Akan diaktifkan kembali secara otomatis setelah masa 48 jam berakhir.</string>
-  <string name="import_send_to_voicemail_numbers_label">Impor nomor</string>
-  <string name="blocked_call_settings_import_description">Anda sebelumnya menandai beberapa penelepon agar dialihkan secara otomatis ke pesan suara melalui aplikasi lain.</string>
-  <string name="blocked_call_settings_view_numbers_button">Lihat Nomor</string>
-  <string name="blocked_call_settings_import_button">Impor</string>
-  <string name="description_blocked_number_list_delete">Bebaskan nomor</string>
-  <string name="addBlockedNumber">Tambahkan nomor</string>
-  <string name="block_number_footer_message_vvm">Panggilan telepon dari nomor ini akan diblokir dan pesan suara akan dihapus secara otomatis.</string>
-  <string name="block_number_footer_message_no_vvm">Panggilan telepon dari nomor ini akan diblokir, tetapi penelepon mungkin masih dapat meninggalkan pesan suara.</string>
-  <string name="block_list">Nomor yang diblokir</string>
-  <string name="alreadyBlocked">%1$s sudah diblokir.</string>
   <string name="phone_account_settings_label">Akun panggilan</string>
-  <string name="permission_no_speeddial">Untuk mengaktifkan panggilan cepat, aktifkan izin Kontak.</string>
   <string name="permission_no_calllog">Untuk melihat log panggilan, aktifkan izin Telepon.</string>
-  <string name="permission_no_search">Untuk menelusuri kontak, aktifkan izin Kontak.</string>
-  <string name="permission_place_call">Untuk melakukan panggilan, aktifkan izin Telepon.</string>
   <string name="toast_cannot_write_system_settings">Aplikasi telepon tidak memiliki izin untuk menulis ke setelan sistem.</string>
   <string name="blocked_number_call_log_label">Diblokir</string>
   <string name="call_log_action_block_report_number">Blokir/laporkan spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Bukan spam</string>
   <string name="call_log_action_unblock_number">Bebaskan nomor</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s sedang offline dan tidak dapat dijangkau</string>
-  <string name="about_phone_label">Tentang</string>
-  <string name="voicemail_transcription_branding_text">Ditranskripsi oleh Google</string>
-  <string name="voicemail_transcription_in_progress">Mentranskripsikan...</string>
-  <string name="voicemail_transcription_failed">Transkrip tidak tersedia.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkrip tidak tersedia. Bahasa tidak didukung.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkrip tidak tersedia. Tidak ada ucapan yang terdeteksi.</string>
-  <string name="voicemail_donation_promo_title">Bantu menyempurnakan akurasi transkripsi?</string>
-  <string name="voicemail_donation_promo_content">Izinkan Google meninjau pesan suara ini dan pesan suara selanjutnya beserta transkripnya. Pesan suara akan disimpan secara anonim. Ubah Setelan kapan saja. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Ya, saya ikut</string>
-  <string name="voicemail_donation_promo_opt_out">Tidak, terima kasih</string>
-  <string name="voicemail_transcription_rating">Nilai kualitas transkripsi</string>
-  <string name="voicemail_transcription_rating_thanks">Terima kasih atas masukan Anda</string>
-  <string name="description_rating_good">Suka</string>
-  <string name="description_rating_bad">Tidak suka</string>
-  <string name="view_conversation">Tampilkan</string>
-  <string name="ec_data_deleted">Panggilan dihapus. Lihat dan hapus lampiran yang dibagikan selama panggilan ini di Message.</string>
-  <string name="multiple_ec_data_deleted">Panggilan dihapus. Lihat dan hapus lampiran yang dibagikan selama panggilan ini di Message.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-is/cm_strings.xml b/java/com/android/dialer/app/res/values-is/cm_strings.xml
new file mode 100644
index 0000000..13a5610
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-is/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Á meðan símtali stendur</string>
+    <string name="incall_enable_dnd_title">Virkja \"Ekki ónáða\" á meðan símtölum stendur</string>
+    <string name="incall_vibrate_outgoing_title">Titra við að svara</string>
+    <string name="incall_vibrate_call_waiting_title">Titra þegar símtal er í bið</string>
+    <string name="incall_vibrate_hangup_title">Titra við að leggja á</string>
+    <string name="incall_vibrate_45_title">Titra á mínútu fresti</string>
+    <string name="incall_vibrate_45_summary">Titrar á 45. sekúndu hverrar mínútu á meðan úthringdum símtölum stendur</string>
+    <string name="incall_dnd_dialog_message">Til að hægt sé að virkja \'Ekki ónáða\', þarf síminn að fá heimild til að breyta stöðu \'Ekki ónáða\'.\nGefðu honum slíka heimild.</string>
+    <string name="allow">Leyfa</string>
+    <string name="deny">Neita</string>
+    <string name="call_recording_category_title">Hljóðritun símtals</string>
+    <string name="call_recording_format">Hljóðsnið</string>
+    <string name="call_via">Hringja með</string>
+    <string name="call_via_dialog_title">Hringja með\u2026</string>
+    <string name="call_log_stats_title">Tölfræði</string>
+    <string name="default_dialer_text">Þú verður að setja Dialer hringiforritið sem sjálfgefið símaforrit til að geta notað það.</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-is/strings.xml b/java/com/android/dialer/app/res/values-is/strings.xml
index 0301191..055337e 100644
--- a/java/com/android/dialer/app/res/values-is/strings.xml
+++ b/java/com/android/dialer/app/res/values-is/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Sími</string>
-  <string name="launcherDialpadActivityLabel">Talnaborð á síma</string>
   <string name="callHistoryIconLabel">Símtalaferill</string>
   <string name="action_copy_number_text">Afrita númer</string>
-  <string name="copy_transcript_text">Afrita umritun</string>
   <string name="action_edit_number_before_call">Breyta númeri áður en hringt er</string>
   <string name="call_log_delete_all">Hreinsa símtalaferil</string>
   <string name="call_log_trash_voicemail">Eyða talhólfsskilaboðum</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Breyta spilunarstöðu</string>
   <string name="action_menu_call_history_description">Símtalaferill</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Fleiri valkostir</string>
-  <string name="action_menu_dialpad_button">talnaborð</string>
   <string name="dialer_settings_label">Stillingar</string>
-  <string name="simulator_submenu_label">Hermir</string>
-  <string name="new_ui_launcher_shortcut_label">Stofna flýtileið í nýtt viðmót</string>
   <string name="description_entering_bulk_action_mode">Opnar fjöldaaðgerðastillingu</string>
   <string name="description_leaving_bulk_action_mode">Fjöldaaðgerðastillingu lokað</string>
   <string name="description_selecting_bulk_action_mode">Valdi %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Myndsímtal</string>
   <string name="description_start_voice_search">Hefja raddleit</string>
   <string name="voicemail">Talhólf</string>
-  <string name="description_cancel_multi_select">Hætta við runuaðgerðastillingu</string>
   <string name="voicemailMultiSelectDeleteConfirm">Eyða</string>
   <string name="voicemailMultiSelectDeleteCancel">Hætta við</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s valin</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Raddleit er ekki í boði</string>
   <string name="dialer_hint_find_contact">Leita í tengiliðum</string>
-  <string name="block_number_search_hint">Bættu við númeri eða tengilið</string>
   <string name="call_log_all_empty">Símtalaferillinn er auður</string>
   <string name="call_log_all_empty_action">Hringja</string>
   <string name="call_log_missed_empty">Þú ert ekki með nein ósvöruð símtöl.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Símtalaferill</string>
   <string name="call_log_all_title">Allt</string>
   <string name="call_log_missed_title">Ósvöruð</string>
-  <string name="tab_speed_dial">Hraðval</string>
-  <string name="tab_history">Símtalaferill</string>
   <string name="tab_all_contacts">Tengiliðir</string>
-  <string name="tab_voicemail">Talhólf</string>
-  <string name="search_shortcut_call_number">Hringja í %s</string>
   <string name="search_shortcut_create_new_contact">Búa til nýjan tengilið</string>
   <string name="search_shortcut_add_to_contact">Bæta við tengilið</string>
   <string name="search_shortcut_send_sms_message">Senda SMS-skilaboð</string>
   <string name="search_shortcut_make_video_call">Hringja myndsímtal</string>
-  <string name="search_shortcut_block_number">Setja númer á bannlista</string>
-  <string name="speed_dial_empty">Þú ert ekki með neinn í hraðvali enn sem komið er</string>
-  <string name="speed_dial_empty_add_favorite_action">Bæta uppáhaldi við</string>
-  <string name="remove_contact">Fjarlægja</string>
   <string name="select_all">Velja allt</string>
   <string name="call_log_action_video_call">Myndsímtal</string>
-  <string name="call_log_action_set_up_video">Setja upp myndsímtöl</string>
-  <string name="call_log_action_invite_video">Bjóða í myndsímtal</string>
   <string name="call_log_action_send_message">Senda skilaboð</string>
   <string name="call_log_action_details">Símtalsupplýsingar</string>
   <string name="call_log_action_share_voicemail">Senda til …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Símtöl</string>
   <string name="manage_blocked_numbers_label">Númer á bannlista</string>
   <string name="voicemail_settings_label">Talhólf</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Tímabundið slökkt á lokun fyrir símtöl</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Lokun fyrir símtöl hefur verið gerð óvirk vegna þess að þú hafðir samband við neyðarþjónustu úr þessum síma á undanförnum tveimur sólarhringum. Lokunin verður aftur virk að þessum tveimur sólarhringum liðnum.</string>
-  <string name="import_send_to_voicemail_numbers_label">Flytja inn númer</string>
-  <string name="blocked_call_settings_import_description">Þú merktir áður nokkra hringjendur þannig að þeir verði sjálfkrafa sendir í talhólfið í gegnum önnur forrit.</string>
-  <string name="blocked_call_settings_view_numbers_button">Skoða tölur</string>
-  <string name="blocked_call_settings_import_button">Flytja inn</string>
-  <string name="description_blocked_number_list_delete">Taka númer af bannlista</string>
-  <string name="addBlockedNumber">Bæta númeri við</string>
-  <string name="block_number_footer_message_vvm">Lokað verður fyrir símtöl frá þessum númerum og talhólfsskilaboðum sjálfkrafa eytt.</string>
-  <string name="block_number_footer_message_no_vvm">Lokað verður fyrir símtöl frá þessum númerum. Hugsanlegt er að þeir sem hringja geti engu að síður sent þér talhólfsskilaboð.</string>
-  <string name="block_list">Númer á bannlista</string>
-  <string name="alreadyBlocked">%1$s er nú þegar á bannlista.</string>
   <string name="phone_account_settings_label">Símtalareikningar</string>
-  <string name="permission_no_speeddial">Kveiktu á tengiliðaheimildinni til að gera hraðval virkt.</string>
   <string name="permission_no_calllog">Kveiktu á heimild símaforritsins til að sjá símtalaskrána þína.</string>
-  <string name="permission_no_search">Kveiktu á heimildunum fyrir tengiliði til að leita að tengiliðum.</string>
-  <string name="permission_place_call">Kveiktu á heimild símaforritsins til að hringja símtal.</string>
   <string name="toast_cannot_write_system_settings">Símaforritið hefur ekki heimild til að breyta kerfisstillingum.</string>
   <string name="blocked_number_call_log_label">Á bannlista</string>
   <string name="call_log_action_block_report_number">Setja á bannlista / tilkynna</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Ekki rusl</string>
   <string name="call_log_action_unblock_number">Taka númer af bannlista</string>
   <string name="spam_number_call_log_label">Ruslnúmer</string>
-  <string name="call_composer_connection_failed">%1$s er án nettengingar og ekki er hægt að ná í viðkomandi</string>
-  <string name="about_phone_label">Um forritið</string>
-  <string name="voicemail_transcription_branding_text">Umritað af Google</string>
-  <string name="voicemail_transcription_in_progress">Skrifar upp…</string>
-  <string name="voicemail_transcription_failed">Textauppskrift er ekki í boði.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Textauppskrift er ekki í boði. Tungumálið er ekki stutt.</string>
-  <string name="voicemail_transcription_failed_no_speech">Textauppskrift er ekki í boði. Ekkert tal greindist.</string>
-  <string name="voicemail_donation_promo_title">Viltu hjálpa okkur að gera uppskrift nákvæmari?</string>
-  <string name="voicemail_donation_promo_content">Leyfðu Google að fara yfir þessi og síðari talhólfsskilaboð með uppskrift. Þetta verður vistað nafnlaust. Þú getur breytt stillingunum hvenær sem er. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Hljómar vel</string>
-  <string name="voicemail_donation_promo_opt_out">Nei, takk</string>
-  <string name="voicemail_transcription_rating">Gefa textauppskrift einkunn</string>
-  <string name="voicemail_transcription_rating_thanks">Takk fyrir ábendinguna!</string>
-  <string name="description_rating_good">Líkar við</string>
-  <string name="description_rating_bad">Mislíkar</string>
-  <string name="view_conversation">Skoða</string>
-  <string name="ec_data_deleted">Símtali eytt. Skoðaðu og eyddu viðhengjum sem var deilt í þessu símtali í Messages.</string>
-  <string name="multiple_ec_data_deleted">Símtölum eytt. Skoðaðu og eyddu viðhengjum sem var deilt í þessum símtölum í Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-it/cm_strings.xml b/java/com/android/dialer/app/res/values-it/cm_strings.xml
new file mode 100644
index 0000000..85e1cec
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-it/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Durante le chiamate</string>
+    <string name="incall_enable_dnd_title">Attiva Non Disturbare durante le chiamate</string>
+    <string name="incall_vibrate_outgoing_title">Vibra alla risposta</string>
+    <string name="incall_vibrate_call_waiting_title">Vibra su messa in attesa</string>
+    <string name="incall_vibrate_hangup_title">Vibra al termine chiamata</string>
+    <string name="incall_vibrate_45_title">Vibra ogni minuto</string>
+    <string name="incall_vibrate_45_summary">Vibra al 45esimo secondo di ogni minuto durante le chiamate in uscita</string>
+    <string name="incall_dnd_dialog_message">Per attivare la modalità Non disturbare, Telefono deve essere autorizzata a controllare lo stato Non disturbare.\nConsenti l\'accesso per abilitare questa funzione.</string>
+    <string name="allow">Consenti</string>
+    <string name="deny">Nega</string>
+    <string name="call_recording_category_title">Registrazione chiamata</string>
+    <string name="call_recording_format">Formato audio</string>
+    <string name="call_via">Chiama con</string>
+    <string name="call_via_dialog_title">Chiama con\u2026</string>
+    <string name="call_log_stats_title">Statistiche</string>
+    <string name="action_menu_helplines">Telefono amico</string>
+    <string name="default_dialer_text">Devi impostare Telefono come app per telefono predefinita per poterla usare.</string>
+    <string name="default_dialer_action">Imposta come predefinita</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-it/strings.xml b/java/com/android/dialer/app/res/values-it/strings.xml
index 816c305..9d97fcd 100644
--- a/java/com/android/dialer/app/res/values-it/strings.xml
+++ b/java/com/android/dialer/app/res/values-it/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefono</string>
-  <string name="launcherDialpadActivityLabel">Tastierino del telefono</string>
   <string name="callHistoryIconLabel">Cronologia chiamate</string>
   <string name="action_copy_number_text">Copia numero</string>
-  <string name="copy_transcript_text">Copia trascrizione</string>
   <string name="action_edit_number_before_call">Modifica numero prima di chiamare</string>
   <string name="call_log_delete_all">Cancella cronologia chiamate</string>
   <string name="call_log_trash_voicemail">Elimina messaggi della segreteria</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Cerca posizione di riproduzione</string>
   <string name="action_menu_call_history_description">Cronologia chiamate</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Altre opzioni</string>
-  <string name="action_menu_dialpad_button">tastierino</string>
   <string name="dialer_settings_label">Impostazioni</string>
-  <string name="simulator_submenu_label">Simulatore</string>
-  <string name="new_ui_launcher_shortcut_label">Crea nuova scorciatoia UI</string>
   <string name="description_entering_bulk_action_mode">Attivazione della modalità di azione collettiva</string>
   <string name="description_leaving_bulk_action_mode">Disttivazione della modalità di azione collettiva</string>
   <string name="description_selecting_bulk_action_mode">%1$s selezionato</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videochiamata.</string>
   <string name="description_start_voice_search">Avvia la ricerca vocale</string>
   <string name="voicemail">Segreteria</string>
-  <string name="description_cancel_multi_select">Annulla modalità di azione collettiva</string>
   <string name="voicemailMultiSelectDeleteConfirm">Elimina</string>
   <string name="voicemailMultiSelectDeleteCancel">Annulla</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s selezionate</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Ricerca vocale non disponibile</string>
   <string name="dialer_hint_find_contact">Cerca contatti</string>
-  <string name="block_number_search_hint">Aggiungi numero/cerca contatti</string>
   <string name="call_log_all_empty">La cronologia delle chiamate è vuota</string>
   <string name="call_log_all_empty_action">Fai una chiamata</string>
   <string name="call_log_missed_empty">Nessuna chiamata persa.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Cronologia chiamate</string>
   <string name="call_log_all_title">Tutte</string>
   <string name="call_log_missed_title">Perse</string>
-  <string name="tab_speed_dial">Composizione rapida</string>
-  <string name="tab_history">Cronologia chiamate</string>
   <string name="tab_all_contacts">Contatti</string>
-  <string name="tab_voicemail">Segreteria</string>
-  <string name="search_shortcut_call_number">Chiama %s</string>
   <string name="search_shortcut_create_new_contact">Crea nuovo contatto</string>
   <string name="search_shortcut_add_to_contact">Aggiungi a un contatto</string>
   <string name="search_shortcut_send_sms_message">Invia SMS</string>
   <string name="search_shortcut_make_video_call">Fai una videochiamata</string>
-  <string name="search_shortcut_block_number">Blocca numero</string>
-  <string name="speed_dial_empty">Nessun preferito disponibile nella Composizione rapida</string>
-  <string name="speed_dial_empty_add_favorite_action">Aggiungi un preferito</string>
-  <string name="remove_contact">Rimuovi</string>
   <string name="select_all">Seleziona tutto</string>
   <string name="call_log_action_video_call">Videochiamata</string>
-  <string name="call_log_action_set_up_video">Imposta la videochiamata</string>
-  <string name="call_log_action_invite_video">Invita alla videochiamata</string>
   <string name="call_log_action_send_message">Invia un messaggio</string>
   <string name="call_log_action_details">Dettagli chiamata</string>
   <string name="call_log_action_share_voicemail">Invia a…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Chiamate</string>
   <string name="manage_blocked_numbers_label">Numeri bloccati</string>
   <string name="voicemail_settings_label">Messaggi vocali</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blocco chiamate temporaneam. disattivato</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Il blocco chiamate è stato disattivato perché hai contattato servizi di emergenza da questo telefono nelle ultime 48 ore. Verrà riattivato automaticamente una volta trascorso il periodo di 48 ore.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importa numeri</string>
-  <string name="blocked_call_settings_import_description">Hai già contrassegnato alcuni chiamanti da inviare automaticamente alla segreteria tramite altre app.</string>
-  <string name="blocked_call_settings_view_numbers_button">Visualizza numeri</string>
-  <string name="blocked_call_settings_import_button">Importa</string>
-  <string name="description_blocked_number_list_delete">Sblocca numero</string>
-  <string name="addBlockedNumber">Aggiungi numero</string>
-  <string name="block_number_footer_message_vvm">Le chiamate da questi numeri verranno bloccate e i messaggi in segreteria verranno automaticamente eliminati.</string>
-  <string name="block_number_footer_message_no_vvm">Le chiamate da questi numeri verranno bloccate, ma i chiamanti potrebbero lasciarti messaggi in segreteria.</string>
-  <string name="block_list">Numeri bloccati</string>
-  <string name="alreadyBlocked">%1$s è già bloccato.</string>
   <string name="phone_account_settings_label">Account di chiamata</string>
-  <string name="permission_no_speeddial">Per attivare la composizione rapida, attiva l\'autorizzazione Contatti.</string>
   <string name="permission_no_calllog">Per accedere al registro chiamate, attiva l\'autorizzazione sul telefono.</string>
-  <string name="permission_no_search">Per cercare nei tuoi contatti, attiva le autorizzazioni Contatti.</string>
-  <string name="permission_place_call">Per fare una chiamata, attiva l\'autorizzazione sul telefono.</string>
   <string name="toast_cannot_write_system_settings">L\'app Telefono non dispone dell\'autorizzazione per modificare le impostazioni di sistema.</string>
   <string name="blocked_number_call_log_label">Bloccato</string>
   <string name="call_log_action_block_report_number">Blocca/Segnala come spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Non spam</string>
   <string name="call_log_action_unblock_number">Sblocca numero</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s è offline e non può essere raggiunto</string>
-  <string name="about_phone_label">Informazioni</string>
-  <string name="voicemail_transcription_branding_text">Trascritto da Google</string>
-  <string name="voicemail_transcription_in_progress">Trascrizione in corso…</string>
-  <string name="voicemail_transcription_failed">Trascrizione non disponibile.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Trascrizione non disponibile. Lingua non supportata.</string>
-  <string name="voicemail_transcription_failed_no_speech">Trascrizione non disponibile. Nessun discorso rilevato.</string>
-  <string name="voicemail_donation_promo_title">Vuoi contribuire a migliorare l\'accuratezza della trascrizione?</string>
-  <string name="voicemail_donation_promo_content">Consenti a Google di rivedere questo messaggio vocale e quelli futuri a cui sono associate trascrizioni. I messaggi verranno archiviati in modo anonimo. Puoi modificare le impostazioni in qualsiasi momento. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Sì, accetto</string>
-  <string name="voicemail_donation_promo_opt_out">No grazie</string>
-  <string name="voicemail_transcription_rating">Valuta la qualità della trascrizione</string>
-  <string name="voicemail_transcription_rating_thanks">Grazie per il tuo feedback</string>
-  <string name="description_rating_good">Mi piace</string>
-  <string name="description_rating_bad">Non mi piace</string>
-  <string name="view_conversation">Visualizza</string>
-  <string name="ec_data_deleted">Chiamata eliminata. Visualizza ed elimina gli allegati condivisi durante questa chiamata in Messaggi.</string>
-  <string name="multiple_ec_data_deleted">Chiamate eliminate. Visualizza ed elimina gli allegati condivisi durante queste chiamate in Messaggi.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-iw/cm_strings.xml b/java/com/android/dialer/app/res/values-iw/cm_strings.xml
new file mode 100644
index 0000000..3725ae9
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-iw/cm_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">בשיחה</string>
+    <string name="incall_enable_dnd_title">הפעלת \'נא לא להפריע\' במהלך שיחה</string>
+    <string name="incall_vibrate_outgoing_title">רטוט בעת מענה</string>
+    <string name="incall_vibrate_call_waiting_title">רטוט בעת שיחה ממתינה</string>
+    <string name="incall_vibrate_hangup_title">רטוט בניתוק השיחה</string>
+    <string name="incall_vibrate_45_title">רטט כל דקה</string>
+    <string name="incall_vibrate_45_summary">רטוט בשניה ה־45 של כל דקה במהלך שיחה יוצאת</string>
+    <string name="incall_dnd_dialog_message">בשביל להפעיל \'נא לא להפריע\' יישום החייגן צריך הרשאות לשינוי מצב שקט.\nאנא אשר זאת.</string>
+    <string name="allow">אישור</string>
+    <string name="deny">ביטול</string>
+    <string name="call_recording_category_title">הקלטת שיחות</string>
+    <string name="call_recording_format">פורמט שמע</string>
+    <string name="call_via">חיוג דרך</string>
+    <string name="call_via_dialog_title">חיוג דרך\u2026</string>
+    <string name="call_log_stats_title">סטטיסטיקות</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-iw/strings.xml b/java/com/android/dialer/app/res/values-iw/strings.xml
index 7ef5762..194ba7f 100644
--- a/java/com/android/dialer/app/res/values-iw/strings.xml
+++ b/java/com/android/dialer/app/res/values-iw/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">טלפון</string>
-  <string name="launcherDialpadActivityLabel">לוח החיוג של הטלפון</string>
   <string name="callHistoryIconLabel">היסטוריית שיחות</string>
   <string name="action_copy_number_text">העתק מספר</string>
-  <string name="copy_transcript_text">העתק תמלול</string>
   <string name="action_edit_number_before_call">ערוך את המספר לפני השיחה</string>
   <string name="call_log_delete_all">נקה את היסטוריית השיחות</string>
   <string name="call_log_trash_voicemail">מחק דואר קולי</string>
@@ -37,10 +35,7 @@
   <string name="description_playback_seek">חפש מיקום בהפעלה</string>
   <string name="action_menu_call_history_description">היסטוריית שיחות</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">אפשרויות נוספות</string>
-  <string name="action_menu_dialpad_button">לוח חיוג</string>
   <string name="dialer_settings_label">הגדרות</string>
-  <string name="simulator_submenu_label">סימולטור</string>
-  <string name="new_ui_launcher_shortcut_label">יצירת קיצור דרך לממשק החדש</string>
   <string name="description_entering_bulk_action_mode">עברת למצב של ביצוע פעולות בכמות גדולה</string>
   <string name="description_leaving_bulk_action_mode">עזבת את המצב של ביצוע פעולות בכמות גדולה</string>
   <string name="description_selecting_bulk_action_mode">בחרת את %1$s</string>
@@ -51,7 +46,6 @@
   <string name="description_video_call">שיחת וידאו.</string>
   <string name="description_start_voice_search">התחל חיפוש קולי</string>
   <string name="voicemail">דואר קולי</string>
-  <string name="description_cancel_multi_select">ביטול המצב של ביצוע פעולות בכמות גדולה</string>
   <string name="voicemailMultiSelectDeleteConfirm">מחיקה</string>
   <string name="voicemailMultiSelectDeleteCancel">ביטול</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s נבחרו</string>
@@ -67,7 +61,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">חיפוש קולי אינו זמין</string>
   <string name="dialer_hint_find_contact">חפש אנשי קשר</string>
-  <string name="block_number_search_hint">הוסף מספר או חפש אנשי קשר</string>
   <string name="call_log_all_empty">היסטוריית השיחות שלך ריקה</string>
   <string name="call_log_all_empty_action">התקשר</string>
   <string name="call_log_missed_empty">אין שיחות שלא נענו.</string>
@@ -75,23 +68,13 @@
   <string name="call_log_activity_title">היסטוריית שיחות</string>
   <string name="call_log_all_title">הכל</string>
   <string name="call_log_missed_title">שיחות שלא נענו</string>
-  <string name="tab_speed_dial">חיוג מהיר</string>
-  <string name="tab_history">היסטוריית שיחות</string>
   <string name="tab_all_contacts">אנשי קשר</string>
-  <string name="tab_voicemail">דואר קולי</string>
-  <string name="search_shortcut_call_number">התקשר אל %s</string>
   <string name="search_shortcut_create_new_contact">איש קשר חדש</string>
   <string name="search_shortcut_add_to_contact">הוסף לאיש קשר</string>
   <string name="search_shortcut_send_sms_message">‏שלח SMS</string>
   <string name="search_shortcut_make_video_call">בצע שיחת וידאו</string>
-  <string name="search_shortcut_block_number">חסום מספר</string>
-  <string name="speed_dial_empty">עדיין לא הוגדר חיוג מהיר לאף איש קשר</string>
-  <string name="speed_dial_empty_add_favorite_action">הוסף פריט מועדף</string>
-  <string name="remove_contact">הסר</string>
   <string name="select_all">בחירת הכל</string>
   <string name="call_log_action_video_call">שיחת וידאו</string>
-  <string name="call_log_action_set_up_video">התחלה של שיחת וידאו</string>
-  <string name="call_log_action_invite_video">הזמנה לשיחת וידאו</string>
   <string name="call_log_action_send_message">שלח הודעה</string>
   <string name="call_log_action_details">פרטי שיחה</string>
   <string name="call_log_action_share_voicemail">שלח אל...</string>
@@ -130,23 +113,8 @@
   <string name="call_settings_label">שיחות</string>
   <string name="manage_blocked_numbers_label">מספרים חסומים</string>
   <string name="voicemail_settings_label">דואר קולי</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">חסימת השיחות מושבתת באופן זמני</string>
-  <string name="blocked_numbers_disabled_emergency_desc">חסימת השיחות הושבתה מפני שיצרת קשר מטלפון זה עם שירותי חירום במהלך 48 השעות האחרונות. הפונקציה תופעל מחדש באופן אוטומטי בתום 48 השעות.</string>
-  <string name="import_send_to_voicemail_numbers_label">יבא מספרים</string>
-  <string name="blocked_call_settings_import_description">סימנת בעבר באמצעות יישומים אחרים כמה מתקשרים שיישלחו באופן אוטומטי לדואר קולי.</string>
-  <string name="blocked_call_settings_view_numbers_button">הצג מספרים</string>
-  <string name="blocked_call_settings_import_button">יבא</string>
-  <string name="description_blocked_number_list_delete">בטל חסימת מספר</string>
-  <string name="addBlockedNumber">הוסף מספר</string>
-  <string name="block_number_footer_message_vvm">שיחות ממספרים אלה ייחסמו והודעות דואר קולי יימחקו באופן אוטומטי.</string>
-  <string name="block_number_footer_message_no_vvm">שיחות ממספרים אלה ייחסמו, אבל המתקשרים עדיין יוכלו להשאיר לך הודעות דואר קולי.</string>
-  <string name="block_list">מספרים חסומים</string>
-  <string name="alreadyBlocked">%1$s כבר חסום.</string>
   <string name="phone_account_settings_label">חשבונות לביצוע שיחות</string>
-  <string name="permission_no_speeddial">כדי להפעיל חיוג מהיר, הפעל את ההרשאה \'אנשי קשר\'.</string>
   <string name="permission_no_calllog">כדי לראות את יומן השיחות, הפעל את ההרשאה \'טלפון\'.</string>
-  <string name="permission_no_search">כדי לחפש באנשי הקשר, הפעל את ההרשאה \'אנשי קשר\'.</string>
-  <string name="permission_place_call">כדי להתקשר, הפעל את ההרשאה \'טלפון\'.</string>
   <string name="toast_cannot_write_system_settings">לאפליקציית הטלפון אין הרשאה לכתוב בהגדרות המערכת.</string>
   <string name="blocked_number_call_log_label">חסום</string>
   <string name="call_log_action_block_report_number">חסום/דיווח על ספאם</string>
@@ -154,22 +122,4 @@
   <string name="call_log_action_remove_spam">לא ספאם</string>
   <string name="call_log_action_unblock_number">בטל חסימת מספר</string>
   <string name="spam_number_call_log_label">ספאם</string>
-  <string name="call_composer_connection_failed">לא ניתן להתקשר כי המכשיר של %1$s לא מחובר כרגע</string>
-  <string name="about_phone_label">מידע כללי</string>
-  <string name="voicemail_transcription_branding_text">‏התעתוק בוצע על ידי Google</string>
-  <string name="voicemail_transcription_in_progress">אנחנו מתמללים…</string>
-  <string name="voicemail_transcription_failed">התמלול לא בוצע.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">התמלול לא בוצע מכיוון שהשפה לא נתמכת.</string>
-  <string name="voicemail_transcription_failed_no_speech">התמלול לא בוצע מכיוון שלא זיהינו דיבור.</string>
-  <string name="voicemail_donation_promo_title">רוצה לעזור לנו לשפר את דיוק התמלול?</string>
-  <string name="voicemail_donation_promo_content">‏נשמח לקבל ממך אישור לבדוק את ההודעות הקוליות שלך ואת התמלולים שלהן עכשיו ובעתיד. ההודעות והתמלולים יישמרו באופן אנונימי על ידי Google ואפשר לשנות את ההגדרה הזו מתי שרוצים. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">כן, אני רוצה</string>
-  <string name="voicemail_donation_promo_opt_out">לא תודה</string>
-  <string name="voicemail_transcription_rating">רוצה לדרג את האיכות של התמלול?</string>
-  <string name="voicemail_transcription_rating_thanks">תודה על המשוב</string>
-  <string name="description_rating_good">אהבתי</string>
-  <string name="description_rating_bad">לא אהבתי</string>
-  <string name="view_conversation">הצג</string>
-  <string name="ec_data_deleted">השיחה נמחקה. כדי להציג ולמחוק קבצים מצורפים ששותפו בזמן השיחה, עבור ל\'הודעות\'.</string>
-  <string name="multiple_ec_data_deleted">השיחות נמחקו. כדי להציג ולמחוק קבצים מצורפים ששותפו בזמן השיחות, עבור ל\'הודעות\'.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ja/cm_strings.xml b/java/com/android/dialer/app/res/values-ja/cm_strings.xml
new file mode 100644
index 0000000..e42fdbf
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-ja/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">通話中</string>
+    <string name="incall_enable_dnd_title">通話中にマナーモードを有効化</string>
+    <string name="incall_vibrate_outgoing_title">応答時に振動</string>
+    <string name="incall_vibrate_call_waiting_title">割込通話時に振動</string>
+    <string name="incall_vibrate_hangup_title">通話終了時に振動</string>
+    <string name="incall_vibrate_45_title">1分ごとに振動する</string>
+    <string name="incall_vibrate_45_summary">発信中に45秒ごとに振動する</string>
+    <string name="incall_dnd_dialog_message">マナーモードを有効化するには、電話アプリにマナーモードの状態を操作する権限を許可する必要があります。\n許可してください。</string>
+    <string name="allow">許可</string>
+    <string name="deny">拒否</string>
+    <string name="call_recording_category_title">通話の録音</string>
+    <string name="call_recording_format">音声フォーマット</string>
+    <string name="call_via">発信方法</string>
+    <string name="call_via_dialog_title">発信方法</string>
+    <string name="call_log_stats_title">統計</string>
+    <string name="action_menu_helplines">ヘルプライン</string>
+    <string name="default_dialer_text">使用するには、デフォルトの電話アプリとして設定してください。</string>
+    <string name="default_dialer_action">デフォルトとして設定</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-ja/strings.xml b/java/com/android/dialer/app/res/values-ja/strings.xml
index d9cf44c..0959be9 100644
--- a/java/com/android/dialer/app/res/values-ja/strings.xml
+++ b/java/com/android/dialer/app/res/values-ja/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">電話</string>
-  <string name="launcherDialpadActivityLabel">スマートフォンのキーパッド</string>
   <string name="callHistoryIconLabel">通話履歴</string>
   <string name="action_copy_number_text">番号をコピー</string>
-  <string name="copy_transcript_text">音声文字変換をコピー</string>
   <string name="action_edit_number_before_call">発信前に番号を編集</string>
   <string name="call_log_delete_all">通話履歴を消去</string>
   <string name="call_log_trash_voicemail">ボイスメールを削除</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">再生位置を探す</string>
   <string name="action_menu_call_history_description">通話履歴</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">その他のオプション</string>
-  <string name="action_menu_dialpad_button">キーパッド</string>
   <string name="dialer_settings_label">設定</string>
-  <string name="simulator_submenu_label">シミュレーション</string>
-  <string name="new_ui_launcher_shortcut_label">新しいUIのショートカットを作成</string>
   <string name="description_entering_bulk_action_mode">一括操作モードを開始します</string>
   <string name="description_leaving_bulk_action_mode">一括操作モードを終了しました</string>
   <string name="description_selecting_bulk_action_mode">%1$s を選択しました</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">ビデオハングアウト</string>
   <string name="description_start_voice_search">音声検索を開始</string>
   <string name="voicemail">ボイスメール</string>
-  <string name="description_cancel_multi_select">一括操作モードをキャンセルします</string>
   <string name="voicemailMultiSelectDeleteConfirm">削除</string>
   <string name="voicemailMultiSelectDeleteCancel">キャンセル</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s 件選択済み</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s（%2$s）</string>
   <string name="voice_search_not_available">音声検索を利用できません</string>
   <string name="dialer_hint_find_contact">連絡先を検索</string>
-  <string name="block_number_search_hint">番号を追加するか連絡先を検索</string>
   <string name="call_log_all_empty">通話履歴はありません</string>
   <string name="call_log_all_empty_action">発信</string>
   <string name="call_log_missed_empty">不在着信はありません。</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">通話履歴</string>
   <string name="call_log_all_title">すべて</string>
   <string name="call_log_missed_title">不在着信</string>
-  <string name="tab_speed_dial">クイックアクセス</string>
-  <string name="tab_history">通話履歴</string>
   <string name="tab_all_contacts">連絡先</string>
-  <string name="tab_voicemail">ボイスメール</string>
-  <string name="search_shortcut_call_number">%sに発信</string>
   <string name="search_shortcut_create_new_contact">新しい連絡先を作成</string>
   <string name="search_shortcut_add_to_contact">連絡先に追加</string>
   <string name="search_shortcut_send_sms_message">SMSを送信</string>
   <string name="search_shortcut_make_video_call">ビデオハングアウト</string>
-  <string name="search_shortcut_block_number">番号をブロック</string>
-  <string name="speed_dial_empty">クイックアクセスに登録済みの連絡先はありません</string>
-  <string name="speed_dial_empty_add_favorite_action">お気に入りを追加</string>
-  <string name="remove_contact">削除</string>
   <string name="select_all">すべて選択</string>
   <string name="call_log_action_video_call">ビデオハングアウト</string>
-  <string name="call_log_action_set_up_video">ビデオ通話をセットアップ</string>
-  <string name="call_log_action_invite_video">ビデオ通話に招待</string>
   <string name="call_log_action_send_message">メッセージを送信</string>
   <string name="call_log_action_details">通話の詳細</string>
   <string name="call_log_action_share_voicemail">送信先…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">通話</string>
   <string name="manage_blocked_numbers_label">ブロック中の電話番号</string>
   <string name="voicemail_settings_label">ボイスメール</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">着信のブロックは一時的にOFFです</string>
-  <string name="blocked_numbers_disabled_emergency_desc">このスマートフォンから緊急通報番号への発信が過去48時間以内に行われているため、着信のブロックは無効になっています。48時間経過すると、着信のブロックは自動的に有効になります。</string>
-  <string name="import_send_to_voicemail_numbers_label">番号をインポート</string>
-  <string name="blocked_call_settings_import_description">以前に一部の発信者について、他のアプリを通じて自動的にボイスメールに転送するようマークを付けています。</string>
-  <string name="blocked_call_settings_view_numbers_button">番号を表示</string>
-  <string name="blocked_call_settings_import_button">インポート</string>
-  <string name="description_blocked_number_list_delete">番号のブロックを解除</string>
-  <string name="addBlockedNumber">電話番号を追加</string>
-  <string name="block_number_footer_message_vvm">この番号からの着信はブロックされ、ボイスメールは自動的に削除されます。</string>
-  <string name="block_number_footer_message_no_vvm">この番号からの着信はブロックされますが、発信者は今後もボイスメールを残すことができます。</string>
-  <string name="block_list">ブロックした番号</string>
-  <string name="alreadyBlocked">%1$sは既にブロックしています。</string>
   <string name="phone_account_settings_label">通話アカウント</string>
-  <string name="permission_no_speeddial">クイックアクセスを有効にするには、連絡先権限をONにしてください。</string>
   <string name="permission_no_calllog">通話履歴を表示するには、電話権限をONにしてください。</string>
-  <string name="permission_no_search">連絡先を検索するには、連絡先権限をONにしてください。</string>
-  <string name="permission_place_call">電話をかけるには、電話権限をONにしてください。</string>
   <string name="toast_cannot_write_system_settings">電話アプリにはシステム設定への書き込み権限がありません。</string>
   <string name="blocked_number_call_log_label">ブロック済み</string>
   <string name="call_log_action_block_report_number">ブロック / 迷惑電話を報告</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">迷惑電話ではない</string>
   <string name="call_log_action_unblock_number">番号のブロックを解除</string>
   <string name="spam_number_call_log_label">スパム</string>
-  <string name="call_composer_connection_failed">%1$s さんはオフラインのため、通話を受信できません</string>
-  <string name="about_phone_label">電話アプリについて</string>
-  <string name="voicemail_transcription_branding_text">文字変換: Google</string>
-  <string name="voicemail_transcription_in_progress">文字に変換しています…</string>
-  <string name="voicemail_transcription_failed">文字に変換できません。</string>
-  <string name="voicemail_transcription_failed_language_not_supported">この言語はサポートされていないため、文字に変換できません。</string>
-  <string name="voicemail_transcription_failed_no_speech">言語音が検出されなかったため、文字に変換できません。</string>
-  <string name="voicemail_donation_promo_title">音声文字変換機能の精度改善にご協力ください</string>
-  <string name="voicemail_donation_promo_content">よろしければ Google によるボイスメール メッセージと音声文字変換結果の分析にご協力ください。ご協力いただける場合は、今回と以降のメッセージが匿名で保存されます。この設定はいつでも変更していただけます。%1$s</string>
-  <string name="voicemail_donation_promo_opt_in">協力する</string>
-  <string name="voicemail_donation_promo_opt_out">協力しない</string>
-  <string name="voicemail_transcription_rating">文字変換機能を評価してください</string>
-  <string name="voicemail_transcription_rating_thanks">ありがとうございました</string>
-  <string name="description_rating_good">高評価</string>
-  <string name="description_rating_bad">低評価</string>
-  <string name="view_conversation">表示</string>
-  <string name="ec_data_deleted">通話を削除しました。通話中に共有した添付ファイルを、メッセージで確認して削除してください。</string>
-  <string name="multiple_ec_data_deleted">通話を削除しました。通話中に共有した添付ファイルを、メッセージで確認して削除してください。</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ka/cm_strings.xml b/java/com/android/dialer/app/res/values-ka/cm_strings.xml
new file mode 100644
index 0000000..1698125
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-ka/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">ზარის დროს</string>
+    <string name="incall_enable_dnd_title">„არ შემაწუხოს“ ამოქმედება საუბრისას</string>
+    <string name="incall_vibrate_outgoing_title">ვიბრაცია პასუხისას</string>
+    <string name="incall_vibrate_call_waiting_title">ვიბრაცია ზარის ლოდინისას</string>
+    <string name="incall_vibrate_hangup_title">ვიბრაცია ზარის გათიშვისას</string>
+    <string name="incall_vibrate_45_title">ვიბრაცია ყოველ წუთში</string>
+    <string name="incall_vibrate_45_summary">ვიბრაცია თითოეული წუთის გასვლის აღსანიშნავად 45-ე წამზე, გამავალი ზარისას</string>
+    <string name="incall_dnd_dialog_message">„არ შემაწუხო“ რომ მიეთითოს, სატელეფონო აპი საჭიროებს ნებართვას მდგომარეობის სამართავად.\nგთხოვთ დართოთ ნება.</string>
+    <string name="allow">ნებართვა</string>
+    <string name="deny">უარყოფა</string>
+    <string name="call_recording_category_title">საუბრის ჩაწერა</string>
+    <string name="call_recording_format">ხმოვანი ფაილის სახეობა</string>
+    <string name="call_via">დასარეკად გამოიყენოს</string>
+    <string name="call_via_dialog_title">დასარეკად გამოიყენოს\u2026</string>
+    <string name="call_log_stats_title">სტატისტიკა</string>
+    <string name="action_menu_helplines">ცხელი ხაზი</string>
+    <string name="default_dialer_text">ნომრის ასაკრეფის გამოსაყენებლად უნდა მიუთითოთ ნაგულისხმევ სატელეფონო პროგრამად.</string>
+    <string name="default_dialer_action">ნაგულისხმევად დაყენება</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-ka/strings.xml b/java/com/android/dialer/app/res/values-ka/strings.xml
index ff5c432..4912b51 100644
--- a/java/com/android/dialer/app/res/values-ka/strings.xml
+++ b/java/com/android/dialer/app/res/values-ka/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ტელეფონი</string>
-  <string name="launcherDialpadActivityLabel">ტელეფონის კლავიატურა</string>
   <string name="callHistoryIconLabel">საუბრის ისტორია</string>
   <string name="action_copy_number_text">ნომრის კოპირება</string>
-  <string name="copy_transcript_text">ტრანსკრიპტის კოპირება</string>
   <string name="action_edit_number_before_call">ნომრის რედაქტირება დარეკვამდე</string>
   <string name="call_log_delete_all">ზარის ისტორიის გასუფთავება</string>
   <string name="call_log_trash_voicemail">ხმოვანი ფოსტის წაშლა</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">დაკვრის პოზიციის მოძებნა</string>
   <string name="action_menu_call_history_description">ზარების ისტორია</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">სხვა პარამეტრები</string>
-  <string name="action_menu_dialpad_button">კლავიატურა</string>
   <string name="dialer_settings_label">პარამეტრები</string>
-  <string name="simulator_submenu_label">სიმულატორი</string>
-  <string name="new_ui_launcher_shortcut_label">ახალი UI მალსახმობის შექმნა</string>
   <string name="description_entering_bulk_action_mode">მიმდინარეობს ერთიანი ქმედების რეჟიმში შესვლა</string>
   <string name="description_leaving_bulk_action_mode">ერთიანი ქმედების რეჟიმიდან გამოხვედით</string>
   <string name="description_selecting_bulk_action_mode">არჩეულია %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">ვიდეოზარი.</string>
   <string name="description_start_voice_search">ხმოვანი ძიების დაწყება</string>
   <string name="voicemail">ხმოვანი ფოსტა</string>
-  <string name="description_cancel_multi_select">ერთიანი ქმედების რეჟიმის გაუქმება</string>
   <string name="voicemailMultiSelectDeleteConfirm">წაშლა</string>
   <string name="voicemailMultiSelectDeleteCancel">გაუქმება</string>
   <string name="voicemailMultiSelectActionBarTitle">არჩეულია %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">ხმოვანი ძიება არ არის ხელმისაწვდომი</string>
   <string name="dialer_hint_find_contact">კონტაქტებში ძიება</string>
-  <string name="block_number_search_hint">დაამატეთ ნომერი ან მოიძიეთ კონტაქტებიდან</string>
   <string name="call_log_all_empty">თქვენი საუბრის ისტორია ცარიელია</string>
   <string name="call_log_all_empty_action">დარეკვა</string>
   <string name="call_log_missed_empty">გამოტოვებული ზარები არ გაქვთ.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">საუბრის ისტორია</string>
   <string name="call_log_all_title">ყველა</string>
   <string name="call_log_missed_title">გამოტოვებული</string>
-  <string name="tab_speed_dial">სწრაფი დარეკვა</string>
-  <string name="tab_history">საუბრის ისტორია</string>
   <string name="tab_all_contacts">კონტაქტები</string>
-  <string name="tab_voicemail">ხმოვანი ფოსტა</string>
-  <string name="search_shortcut_call_number">დარეკვა %s-ზე</string>
   <string name="search_shortcut_create_new_contact">ახალი კონტაქტის შექმნა</string>
   <string name="search_shortcut_add_to_contact">კონტაქტისადმი დამატება</string>
   <string name="search_shortcut_send_sms_message">SMS-ის გაგზავნა</string>
   <string name="search_shortcut_make_video_call">ვიდეოზარის განხორციელება</string>
-  <string name="search_shortcut_block_number">ნომრის დაბლოკვა</string>
-  <string name="speed_dial_empty">სწრაფი აკრეფისთვის რჩეულები ჯერ არ გყავთ</string>
-  <string name="speed_dial_empty_add_favorite_action">რჩეული კონტაქტის დამატება</string>
-  <string name="remove_contact">ამოშლა</string>
   <string name="select_all">ყველას არჩევა</string>
   <string name="call_log_action_video_call">ვიდეო ზარი</string>
-  <string name="call_log_action_set_up_video">ვიდეო დარეკვის დაყენება</string>
-  <string name="call_log_action_invite_video">ვიდეოზარში მოწვევა</string>
   <string name="call_log_action_send_message">შეტყობინების გაგზავნა</string>
   <string name="call_log_action_details">ზარის მონაცემები</string>
   <string name="call_log_action_share_voicemail">გაგზავნა:</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">ზარები</string>
   <string name="manage_blocked_numbers_label">დაბლოკილი ნომრები</string>
   <string name="voicemail_settings_label">ხმოვანი ფოსტა</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">ზარების დაბლოკვა დროებით გამოირთო</string>
-  <string name="blocked_numbers_disabled_emergency_desc">ზარების დაბლოკვა გაითიშა, რადგან ბოლო 48 საათში ამ ტელეფონიდან საგანგებო სამსახურებს დაუკავშირდით. 48 საათის გასვლის შემდეგ ის ავტომატურად ჩაირთვება.</string>
-  <string name="import_send_to_voicemail_numbers_label">ნომრების იმპორტი</string>
-  <string name="blocked_call_settings_import_description">სხვა აპების მეშვეობით თქვენ მიერ ადრე ზოგიერთი აბონენტის ხმოვან ფოსტაზე ავტომატური გადამისამართება მოინიშნა.</string>
-  <string name="blocked_call_settings_view_numbers_button">ნომრების ნახვა</string>
-  <string name="blocked_call_settings_import_button">იმპორტი</string>
-  <string name="description_blocked_number_list_delete">ნომრის განბლოკვა</string>
-  <string name="addBlockedNumber">ნომრის დამატება</string>
-  <string name="block_number_footer_message_vvm">ამ ნომრებიდან შემოსული ზარები დაიბლოკება, ხოლო ხმოვანი ფოსტა ავტომატურად წაიშლება.</string>
-  <string name="block_number_footer_message_no_vvm">ამ ნომრებიდან შემოსული ზარები დაიბლოკება, თუმცა აბონენტებს მაინც შეეძლებათ თქვენთვის ხმოვანი ფოსტის დატოვება.</string>
-  <string name="block_list">დაბლოკილი ნომრები</string>
-  <string name="alreadyBlocked">%1$s უკვე დაბლოკილია.</string>
   <string name="phone_account_settings_label">ანგარიშების გამოძახება</string>
-  <string name="permission_no_speeddial">სწრაფი აკრეფის გასააქტიურებლად, ჩართეთ კონტაქტების ნებართვა.</string>
   <string name="permission_no_calllog">ზარების ჟურნალის სანახავად, ჩართეთ ტელეფონის ნებართვა.</string>
-  <string name="permission_no_search">თქვენი კონტაქტების მოსაძებნად ჩართეთ კონტაქტების ნებართვები.</string>
-  <string name="permission_place_call">ზარის განსახორციელებლად, ჩართეთ ტელეფონის ნებართვა.</string>
   <string name="toast_cannot_write_system_settings">ტელეფონის აპს სისტემის პარამეტრებში ჩაწერის ნებართვა არ აქვს.</string>
   <string name="blocked_number_call_log_label">დაბლოკილი</string>
   <string name="call_log_action_block_report_number">დაბლოკვა/სპამის შეტყობინება</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">არ არის სპამი</string>
   <string name="call_log_action_unblock_number">ნომრის განბლოკვა</string>
   <string name="spam_number_call_log_label">სპამი</string>
-  <string name="call_composer_connection_failed">%1$s ხაზგარეშეა და ვერ დაუკავშირდებით</string>
-  <string name="about_phone_label">აპის შესახებ</string>
-  <string name="voicemail_transcription_branding_text">ტრასკრიბ. შეასრულა Google-მა</string>
-  <string name="voicemail_transcription_in_progress">მიმდინარეობს ტრანსკრიბირება…</string>
-  <string name="voicemail_transcription_failed">ტრანსკრიპტი მიუწვდომელია.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">ტრანსკრიპტი მიუწვდომელია. ენა მხარდაჭერილი არ არის.</string>
-  <string name="voicemail_transcription_failed_no_speech">ტრანსკრიპტი მიუწვდომელია. მეტყველება აღმოჩენილი არ არის.</string>
-  <string name="voicemail_donation_promo_title">გსურთ, დაგვეხმაროთ ტრანსკრიბირების სიზუსტის გაუმჯობესებაში?</string>
-  <string name="voicemail_donation_promo_content">მიეცით Google-ს უფლება, გადახედოს ხმოვანი ფოსტის ამ და მომავალ ტრანსკრიპტიან შეტყობინებებს. ისინი ანონიმურად შეინახება. პარამეტრების შეცვლა ნებისმიერ დროს შეგიძლიათ. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">თანახმა ვარ</string>
-  <string name="voicemail_donation_promo_opt_out">არა, გმადლობთ</string>
-  <string name="voicemail_transcription_rating">შეაფასეთ ტრანსკრიბირ. ხარისხი</string>
-  <string name="voicemail_transcription_rating_thanks">გმადლობთ გამოხმაურებისთვის</string>
-  <string name="description_rating_good">მოწონება</string>
-  <string name="description_rating_bad">დაწუნება</string>
-  <string name="view_conversation">ნახვა</string>
-  <string name="ec_data_deleted">ზარი წაიშალა. ამ ზარის დროს გაზიარებული დანართები იხილეთ და წაშალეთ Messages-ში.</string>
-  <string name="multiple_ec_data_deleted">ზარები წაიშალა. ამ ზარის დროს გაზიარებული დანართები იხილეთ და წაშალეთ Messages-ში.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-kab-rDZ/cm_strings.xml b/java/com/android/dialer/app/res/values-kab-rDZ/cm_strings.xml
new file mode 100644
index 0000000..df8c469
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-kab-rDZ/cm_strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_vibrate_outgoing_title">Argagay mara tili tiririt</string>
+    <string name="incall_vibrate_45_title">Argagi yal tasdat</string>
+    <string name="allow">Sireg</string>
+    <string name="deny">Aggi</string>
+    <string name="call_recording_category_title">Asekles n usiwel</string>
+    <string name="call_recording_format">Amasal ameslaw</string>
+    <string name="call_via">Siwel s</string>
+    <string name="call_via_dialog_title">Siwel s\u2026</string>
+    <string name="call_log_stats_title">Tiddadanin</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-kk/strings.xml b/java/com/android/dialer/app/res/values-kk/strings.xml
index 99fa3e1..da8c236 100644
--- a/java/com/android/dialer/app/res/values-kk/strings.xml
+++ b/java/com/android/dialer/app/res/values-kk/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Телефон</string>
-  <string name="launcherDialpadActivityLabel">Телефон пернетақтасы</string>
   <string name="callHistoryIconLabel">Қоңыраулар тарихы</string>
   <string name="action_copy_number_text">Нөмірді көшіру</string>
-  <string name="copy_transcript_text">Транскрипцияны көшіру</string>
   <string name="action_edit_number_before_call">Қоңырау алдында нөмірді өзгерту</string>
   <string name="call_log_delete_all">Қоңыраулар тарихын тазалау</string>
   <string name="call_log_trash_voicemail">Дауыстық хабарды жою</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Ойнату орнын іздеу</string>
   <string name="action_menu_call_history_description">Қоңыраулар тарихы</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Басқа опциялар</string>
-  <string name="action_menu_dialpad_button">пернетақта</string>
   <string name="dialer_settings_label">Параметрлер</string>
-  <string name="simulator_submenu_label">Симулятор</string>
-  <string name="new_ui_launcher_shortcut_label">Жаңа пайдаланушы интерфейсінің пернелер тіркесімін жасау</string>
   <string name="description_entering_bulk_action_mode">Жаппай әрекет режиміне өту</string>
   <string name="description_leaving_bulk_action_mode">Жаппай әрекет режиімінен шығу</string>
   <string name="description_selecting_bulk_action_mode">%1$s таңдалды</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Бейне қоңырау.</string>
   <string name="description_start_voice_search">Дауыс іздеуді бастау</string>
   <string name="voicemail">Дауыстық пошта</string>
-  <string name="description_cancel_multi_select">Топтама әрекеттер режимін жабу</string>
   <string name="voicemailMultiSelectDeleteConfirm">Жою</string>
   <string name="voicemailMultiSelectDeleteCancel">Жабу</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s таңдалды</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Дауыс арқылы іздеу қол жетімді емес</string>
   <string name="dialer_hint_find_contact">Контактілерді іздеу</string>
-  <string name="block_number_search_hint">Нөмірді енгізіңіз немесе контактілерден іздеп табыңыз</string>
   <string name="call_log_all_empty">Қоңыраулар тарихы бос</string>
   <string name="call_log_all_empty_action">Қоңырау шалу</string>
   <string name="call_log_missed_empty">Қабылданбаған қоңыраулар жоқ.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Қоңырау тарихы</string>
   <string name="call_log_all_title">Барлық</string>
   <string name="call_log_missed_title">Қабылданбаған</string>
-  <string name="tab_speed_dial">Жылдам теру</string>
-  <string name="tab_history">Қоңыраулар тарихы</string>
   <string name="tab_all_contacts">Контактілер</string>
-  <string name="tab_voicemail">Дауыстық хабар</string>
-  <string name="search_shortcut_call_number">%s нөміріне қоңырау шалу</string>
   <string name="search_shortcut_create_new_contact">Жаңа контакт жасау</string>
   <string name="search_shortcut_add_to_contact">Контактіге қосу</string>
   <string name="search_shortcut_send_sms_message">SMS жіберу</string>
   <string name="search_shortcut_make_video_call">Бейне қоңырау шалу</string>
-  <string name="search_shortcut_block_number">Нөмірді бөгеу</string>
-  <string name="speed_dial_empty">Жылдам теруде әлі ешкім жоқ</string>
-  <string name="speed_dial_empty_add_favorite_action">Таңдаулыны қосу</string>
-  <string name="remove_contact">Алып тастау</string>
   <string name="select_all">Барлығын таңдау</string>
   <string name="call_log_action_video_call">Бейне қоңырау</string>
-  <string name="call_log_action_set_up_video">Бейне қоңырау орнату</string>
-  <string name="call_log_action_invite_video">Бейне қоңырауға шақыру</string>
   <string name="call_log_action_send_message">Хабар жіберу</string>
   <string name="call_log_action_details">Қоңырау мәліметтері</string>
   <string name="call_log_action_share_voicemail">Жіберу:</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Қоңыраулар</string>
   <string name="manage_blocked_numbers_label">Бөгелген нөмірлер</string>
   <string name="voicemail_settings_label">Дауыстық хабар</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Қоңырауларға тыйым салу уақытша өшірулі</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Қоңырауларға тыйым салу өшірілді, өйткені сіз соңғы 48 сағат ішінде осы телефоннан төтенше қызметтерге хабарластыңыз. Ол 48 сағаттық кезең өткеннен кейін автоматты түрде қайта қосылады.</string>
-  <string name="import_send_to_voicemail_numbers_label">Нөмірлерді импорттау</string>
-  <string name="blocked_call_settings_import_description">Сіз бұрын кейбір қоңырау шалушыларды басқа қолданбалар арқылы дауыс поштасына автоматты түрде жіберу үшін белгілеген.</string>
-  <string name="blocked_call_settings_view_numbers_button">Нөмірлерді көру</string>
-  <string name="blocked_call_settings_import_button">Импорттау</string>
-  <string name="description_blocked_number_list_delete">Нөмірді бөгеуден шығару</string>
-  <string name="addBlockedNumber">Нөмір қосу</string>
-  <string name="block_number_footer_message_vvm">Осы нөмірлерден қоңыраулар бөгеледі және дауыстық хабарлар автоматты түрде жойылады.</string>
-  <string name="block_number_footer_message_no_vvm">Осы нөмірлерден қоңыраулар бөгеледі, бірақ олар әлі де сізге дауыстық хабарлар қалдыра алуы мүмкін.</string>
-  <string name="block_list">Бөгелген нөмірлер</string>
-  <string name="alreadyBlocked">%1$s бөгеліп қойылған.</string>
   <string name="phone_account_settings_label">Қоңырау шалу есептік жазбалары</string>
-  <string name="permission_no_speeddial">Жылдам теруді қосу үшін \"Контактілер\" рұқсатын қосыңыз.</string>
   <string name="permission_no_calllog">Қоңыраулар журналы көру үшін \"Телефон\" рұқсатын қосыңыз.</string>
-  <string name="permission_no_search">Контактілерді іздеу үшін \"Контактілер\" рұқсаттарын қосыңыз.</string>
-  <string name="permission_place_call">Қоңырауды шалу үшін \"Телефон\" рұқсатын қосыңыз.</string>
   <string name="toast_cannot_write_system_settings">Телефон қолданбасында жүйелік параметрлерге жазуға рұқсат жоқ.</string>
   <string name="blocked_number_call_log_label">Бөгелген</string>
   <string name="call_log_action_block_report_number">Бөгеу/спам туралы есеп беру</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Спам емес</string>
   <string name="call_log_action_unblock_number">Нөмірді бөгеуден шығару</string>
   <string name="spam_number_call_log_label">Спам</string>
-  <string name="call_composer_connection_failed">%1$s желіден тыс және байланысу мүмкін емес</string>
-  <string name="about_phone_label">Мәліметтер</string>
-  <string name="voicemail_transcription_branding_text">Транскрипцияны жасаған – Google</string>
-  <string name="voicemail_transcription_in_progress">Транскрипциясы жасалуда...</string>
-  <string name="voicemail_transcription_failed">Tранскрипция жасау мүмкіндігі жоқ.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Tранскрипция жасау мүмкіндігі жоқ.  Бұл тіл қолданылмайды.</string>
-  <string name="voicemail_transcription_failed_no_speech">Tранскрипция жасау мүмкіндігі жоқ. Аудио табылмады.</string>
-  <string name="voicemail_donation_promo_title">Транскрипция сапасын жақсартуға үлес қосқыңыз келе ме?</string>
-  <string name="voicemail_donation_promo_content">Google-ға осы және болашақ транскрипциялары бар дауыстық хабарларды шолуға рұқсат беріңіз. Олар анонимді түрде сақталады. Бұл параметрді кез келген уақытта өзгертуіңізге болады. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Жарайды</string>
-  <string name="voicemail_donation_promo_opt_out">Жоқ, рақмет</string>
-  <string name="voicemail_transcription_rating">Транскрипция сапасын бағалау</string>
-  <string name="voicemail_transcription_rating_thanks">Пікіріңізге рақмет</string>
-  <string name="description_rating_good">Ұнату</string>
-  <string name="description_rating_bad">Ұнатпау</string>
-  <string name="view_conversation">Көру</string>
-  <string name="ec_data_deleted">Қоңырау жойылды. Осы қоңырау кезінде жіберілген тіркемелерді \"Хабарлар\" бөлімінен тауып жойыңыз.</string>
-  <string name="multiple_ec_data_deleted">Қоңыраулар жойылды. Осы қоңыраулар кезінде жіберілген тіркемелерді \"Хабарлар\" бөлімінен тауып жойыңыз.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-km/strings.xml b/java/com/android/dialer/app/res/values-km/strings.xml
index 5141be5..904245c 100644
--- a/java/com/android/dialer/app/res/values-km/strings.xml
+++ b/java/com/android/dialer/app/res/values-km/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ទូរស័ព្ទ</string>
-  <string name="launcherDialpadActivityLabel">បន្ទះ​ចុច​លេខទូរសព្ទ</string>
   <string name="callHistoryIconLabel">ប្រវត្តិ​ហៅ</string>
   <string name="action_copy_number_text">ថតចម្លងលេខទូរស័ព្ទ</string>
-  <string name="copy_transcript_text">ថតចម្លងសំណៅពីសារសម្លេង</string>
   <string name="action_edit_number_before_call">កែ​លេខ​មុន​ពេល​ហៅ</string>
   <string name="call_log_delete_all">ជម្រះប្រវត្តិហៅ</string>
   <string name="call_log_trash_voicemail">លុប​សារ​ជា​សំឡេង</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">រកមើល​ទីតាំង​ចាក់​ឡើងវិញ</string>
   <string name="action_menu_call_history_description">ប្រវត្តិហៅ</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">ជម្រើស​បន្ថែម</string>
-  <string name="action_menu_dialpad_button">បន្ទះ​​ចុច​លេខ</string>
   <string name="dialer_settings_label">ការកំណត់</string>
-  <string name="simulator_submenu_label">កម្មវិធីធ្វើ​ដូច​មែនទែន</string>
-  <string name="new_ui_launcher_shortcut_label">បង្កើត​ផ្លូវកាត់ UI ថ្មី</string>
   <string name="description_entering_bulk_action_mode">ចូល​មុខងារ​សកម្មភាព​ច្រើន</string>
   <string name="description_leaving_bulk_action_mode">បាន​ចាកចេញ​ពី​មុខងារ​សកម្មភាព​ច្រើន</string>
   <string name="description_selecting_bulk_action_mode">បាន​ជ្រើសរើស %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">ការ​ហៅ​ជា​វីដេអូ​។</string>
   <string name="description_start_voice_search">ចាប់ផ្ដើម​ស្វែងរក​ជា​សំឡេង</string>
   <string name="voicemail">សារ​ជា​សំឡេង</string>
-  <string name="description_cancel_multi_select">បោះបង់​មុខងារ​សកម្មភាព​ជា​ក្រុម</string>
   <string name="voicemailMultiSelectDeleteConfirm">លុប</string>
   <string name="voicemailMultiSelectDeleteCancel">បោះបង់</string>
   <string name="voicemailMultiSelectActionBarTitle">បាន​ជ្រើសរើស %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">ការស្វែងរកជាសម្លេងមិនមានទេ</string>
   <string name="dialer_hint_find_contact">រក​ទំនាក់ទំនង</string>
-  <string name="block_number_search_hint">បន្ថែមលេខទូរស័ព្ទ ឬស្វែងរកទំនាក់ទំនង</string>
   <string name="call_log_all_empty">ប្រវត្តិហៅរបស់អ្នកទទេ</string>
   <string name="call_log_all_empty_action">ហៅទូរសព្ទ</string>
   <string name="call_log_missed_empty">អ្នកមិនមានការខកខានទទួលទូរសព្ទទេ។</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">ប្រវត្តិ​ហៅ</string>
   <string name="call_log_all_title">ទាំង​អស់</string>
   <string name="call_log_missed_title">ខកខាន​ទទួល</string>
-  <string name="tab_speed_dial">ហៅទូរស័ព្ទល្បឿនលឿន</string>
-  <string name="tab_history">ប្រវត្តិហៅ</string>
   <string name="tab_all_contacts">ទំនាក់ទំនង</string>
-  <string name="tab_voicemail">សារជាសំឡេង</string>
-  <string name="search_shortcut_call_number">ហៅ %s</string>
   <string name="search_shortcut_create_new_contact">បង្កើតទំនាក់ទំនងថ្មី</string>
   <string name="search_shortcut_add_to_contact">បន្ថែមទៅទំនាក់ទំនង</string>
   <string name="search_shortcut_send_sms_message">ផ្ញើសារ SMS</string>
   <string name="search_shortcut_make_video_call">ការ​ហៅ​ជា​វីដេអូ</string>
-  <string name="search_shortcut_block_number">រារាំងលេខ</string>
-  <string name="speed_dial_empty">គ្មាននរណាម្នាក់នៅក្នុងការហៅរហ័សរបស់អ្នកនៅឡើយទេ</string>
-  <string name="speed_dial_empty_add_favorite_action">បញ្ចូលសំណព្វ</string>
-  <string name="remove_contact">លុបចេញ</string>
   <string name="select_all">ជ្រើសរើស​​ទាំងអស់</string>
   <string name="call_log_action_video_call">ហៅជាវីដេអូ</string>
-  <string name="call_log_action_set_up_video">រៀបចំការហៅ​ជា​វីដេអូ​</string>
-  <string name="call_log_action_invite_video">អញ្ជើញ​ចូលរួម​ការហៅ​តាម​​វីដេអូ</string>
   <string name="call_log_action_send_message">ផ្ញើសារ</string>
   <string name="call_log_action_details">ព័ត៌មានលម្អិតអំពីការហៅ</string>
   <string name="call_log_action_share_voicemail">ផ្ញើទៅ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">ការហៅ</string>
   <string name="manage_blocked_numbers_label">លេខ​ដែល​ទប់ស្កាត់</string>
   <string name="voicemail_settings_label">សារ​ជា​សំឡេង</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">ការរារាំងការហៅត្រូវបានបិទជាបណ្តោះអាសន្ន</string>
-  <string name="blocked_numbers_disabled_emergency_desc">ការរារាំងការហៅត្រូវបានបិទដំណើរការ ដោយសារតែអ្នកបានទាក់ទងទៅសេវាអាសន្នចេញពីទូរស័ព្ទនេះក្នុងចន្លោះពេល 48 ម៉ោងកន្លងមកនេះ។ វានឹងបើកដំណើរការឡើងវិញ បន្ទាប់ពីរយៈពេល 48 ម៉ោងផុតកំណត់។</string>
-  <string name="import_send_to_voicemail_numbers_label">នាំចូលលេខ</string>
-  <string name="blocked_call_settings_import_description">កាលពីមុនអ្នកបានដាក់សម្គាល់ឲ្យបញ្ជូនអ្នកហៅមួយចំនួនដោយស្វ័យប្រវត្តិទៅកាន់សារជាសំឡេងតាមរយៈកម្មវិធីផ្សេងទៀត។</string>
-  <string name="blocked_call_settings_view_numbers_button">មើលលេខ</string>
-  <string name="blocked_call_settings_import_button">នាំចូល</string>
-  <string name="description_blocked_number_list_delete">ឈប់ទប់ស្កាត់លេខ</string>
-  <string name="addBlockedNumber">បន្ថែមលេខ</string>
-  <string name="block_number_footer_message_vvm">ការហៅចេញពីលេខទាំងនេះនឹងត្រូវបានរារាំង ហើយសារជាសំឡេងនឹងត្រូវបានលុបដោយស្វ័យប្រវត្តិ។</string>
-  <string name="block_number_footer_message_no_vvm">ការហៅចេញពីលេខទាំងនេះនឹងត្រូវបានរារាំង ប៉ុន្តែពួកគេនៅតែអាចទុកសារជាសំឡេងឲ្យអ្នកបាន។</string>
-  <string name="block_list">លេខបានរារាំង</string>
-  <string name="alreadyBlocked">%1$s ត្រូវបានទប់ស្កាត់រួចហើយ</string>
   <string name="phone_account_settings_label">គណនីហៅទូរសព្ទ</string>
-  <string name="permission_no_speeddial">ដើម្បីបើកដំណើរការហៅរហ័ស សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីទំនាក់ទំនង។</string>
   <string name="permission_no_calllog">ដើម្បីមើលកំណត់ហេតុហៅទូរស័ព្ទរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។</string>
-  <string name="permission_no_search">ដើម្បីស្វែងរកទំនាក់ទំនងរបស់អ្នក សូមបើកសិទ្ធិអនុញ្ញាតទំនាក់ទំនង។</string>
-  <string name="permission_place_call">ដើម្បីធ្វើការហៅទូរស័ព្ទ សូមបើកសិទ្ធិអនុញ្ញាតកម្មវិធីហៅទូរស័ព្ទ។</string>
   <string name="toast_cannot_write_system_settings">កម្មវិធីទូរស័ព្ទមិនមានសិទ្ធិអនុញ្ញាតដើម្បីសរសេរការកំណត់ប្រព័ន្ធទេ។</string>
   <string name="blocked_number_call_log_label">បាន​ទប់ស្កាត់</string>
   <string name="call_log_action_block_report_number">រារាំង/រាយការណ៍សារដែលមិនចង់បាន</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">មិនមែន​សារ​ឥតបានការ</string>
   <string name="call_log_action_unblock_number">ឈប់ទប់ស្កាត់លេខ</string>
   <string name="spam_number_call_log_label">សារ​ឥតបានការ</string>
-  <string name="call_composer_connection_failed">%1$s មិន​នៅ​លើ​អ៊ីនធឺណិត និង​មិន​អាច​ទាក់ទង​បាន​ទេ</string>
-  <string name="about_phone_label">អំពី</string>
-  <string name="voicemail_transcription_branding_text">បាន​ធ្វើ​ប្រតិចារឹក​ដោយ Google</string>
-  <string name="voicemail_transcription_in_progress">កំពុងធ្វើប្រតិចារឹក...</string>
-  <string name="voicemail_transcription_failed">មិន​មាន​ប្រតិចារឹក​ទេ</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcript not available. Language not supported.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcript not available. No speech detected.</string>
-  <string name="voicemail_donation_promo_title">ជួយ​ធ្វើ​ឱ្យ​ភាពត្រឹមត្រូវ​នៃ​ប្រតិចារឹក​ប្រសើរ​ឡើង​ទេ?</string>
-  <string name="voicemail_donation_promo_content">អនុញ្ញាត​ឱ្យ Google ពិនិត្យ​មើល​វា និង​សារ​ជា​សំឡេងអនាគត​ដែល​មាន​ប្រតិចារឹក​។ សារ​ទាំង​នេះ​នឹង​ត្រូវ​បាន​រក្សា​ទុក​ជា​លក្ខណៈ​អនាមិក។ ផ្លាស់ប្ដូរ​ការកំណត់​បាន​គ្រប់​ពេល។ %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">បាទ/ចាស ខ្ញុំយល់ព្រម</string>
-  <string name="voicemail_donation_promo_opt_out">ទេ អរគុណ</string>
-  <string name="voicemail_transcription_rating">វាយតម្លៃ​គុណភាព​ប្រតិចារឹក</string>
-  <string name="voicemail_transcription_rating_thanks">អរគុណ​ចំពោះ​ការ​ផ្ដល់​មតិ​កែលម្អ</string>
-  <string name="description_rating_good">ចូលចិត្ត</string>
-  <string name="description_rating_bad">មិន​ចូលចិត្ត</string>
-  <string name="view_conversation">មើល</string>
-  <string name="ec_data_deleted">បាន​លុប​ការហៅទូរសព្ទ។ មើល និង​លុប​ឯកសារ​ភ្ជាប់​ដែល​បាន​ចែករំលែក​នៅ​អំឡុង​ពេល​ហៅ​ទូរសព្ទ​នេះ​នៅ​ក្នុង Messages ។</string>
-  <string name="multiple_ec_data_deleted">បាន​លុប​ការហៅទូរសព្ទ។ មើល និង​លុប​ឯកសារ​ភ្ជាប់​ដែល​បាន​ចែករំលែក​នៅ​អំឡុង​ពេល​ហៅ​ទូរសព្ទ​នៅ​ក្នុង Messages ។</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-kn/cm_strings.xml b/java/com/android/dialer/app/res/values-kn/cm_strings.xml
new file mode 100644
index 0000000..becc8e2
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-kn/cm_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">ಸಕ್ರಿಯ-ಕರೆ</string>
+    <string name="incall_enable_dnd_title">ಕರೆಯಲ್ಲಿ ನಿರಾಡಚಣೆ ಸಶಕ್ತಿಸು</string>
+    <string name="incall_vibrate_outgoing_title">ಕರೆ ಉತ್ತರಿಸಿದಾಗ ಕಂಪಿಸು</string>
+    <string name="incall_vibrate_call_waiting_title">ಕರೆ ನಿರೀಕ್ಷೆಯಲ್ಲಿ ಕಂಪಿಸು</string>
+    <string name="incall_vibrate_hangup_title">ಕರೆ ಸ್ಥಗಿತವಾದಾಗ ಕಂಪಿಸು</string>
+    <string name="incall_vibrate_45_title">ಪ್ರತಿ ನಿಮಿಷ ಕಂಪಿಸು</string>
+    <string name="incall_vibrate_45_summary">ನಿರ್ಗಮಿಸುವ ಕರೆಗಳಲ್ಲಿ ಪ್ರತಿ ನಿಮಿಷದ ೪೫ನೇ ಕ್ಷಣಕೊಮ್ಮೆ ಕಂಪಿಸುವುದು</string>
+    <string name="incall_dnd_dialog_message">\'ನಿರಾಡಚಣೆ\' ಸಶಕ್ತಿಸಲು, ಫೋನ್ ಆಪ್ಗೆ \'ನಿರಾಡಚಣೆ\' ಸ್ಥಿತಿ ನಿಯಂತ್ರಿಸುವ ಅನುಮತಿ ಬೇಕು.\n ಅನುಮತಿಸಿ.</string>
+    <string name="allow">ಅನುಮತಿಸು</string>
+    <string name="deny">ನಿರಾಕರಿಸು</string>
+    <string name="call_recording_category_title">ಕರೆ ಧ್ವನಿಮುದ್ರಣ</string>
+    <string name="call_recording_format">ಶ್ರಾವ್ಯ ಸ್ವರೂಪ</string>
+    <string name="call_via">ಮುಖೇನ ಕರೆ</string>
+    <string name="call_via_dialog_title">ಮುಖೇನ ಕರೆ\u2026</string>
+    <string name="call_log_stats_title">ಅಂಕ್ಯಾಂಶಗಳು</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-kn/strings.xml b/java/com/android/dialer/app/res/values-kn/strings.xml
index bdd4b89..f833e07 100644
--- a/java/com/android/dialer/app/res/values-kn/strings.xml
+++ b/java/com/android/dialer/app/res/values-kn/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ಫೋನ್</string>
-  <string name="launcherDialpadActivityLabel">ಫೋನ್ ಕೀಪ್ಯಾಡ್</string>
   <string name="callHistoryIconLabel">ಕರೆ ಇತಿಹಾಸ</string>
   <string name="action_copy_number_text">ಸಂಖ್ಯೆಯನ್ನು ನಕಲಿಸಿ</string>
-  <string name="copy_transcript_text">ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಶನ್ ನಕಲಿಸಿ</string>
   <string name="action_edit_number_before_call">ಕರೆ ಮಾಡುವ ಮೊದಲು ಸಂಖ್ಯೆಯನ್ನು ಎಡಿಟ್ ಮಾಡಿ</string>
   <string name="call_log_delete_all">ಕರೆ ಇತಿಹಾಸ ತೆರವುಗೊಳಿಸಿ</string>
   <string name="call_log_trash_voicemail">ಧ್ವನಿಮೇಲ್‌ ಅಳಿಸಿ</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">ಪ್ಲೇಬ್ಯಾಕ್ ಸ್ಥಾನವನ್ನು ಪಡೆಯಿರಿ</string>
   <string name="action_menu_call_history_description">ಕರೆ ಇತಿಹಾಸ</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು</string>
-  <string name="action_menu_dialpad_button">ಕೀ ಪ್ಯಾಡ್‌</string>
   <string name="dialer_settings_label">ಸೆಟ್ಟಿಂಗ್‌ಗಳು</string>
-  <string name="simulator_submenu_label">ಸಿಮ್ಯುಲೇಟರ್</string>
-  <string name="new_ui_launcher_shortcut_label">ಹೊಸ UI ಶಾರ್ಟ್‌ಕಟ್ ರಚಿಸಿ</string>
   <string name="description_entering_bulk_action_mode">ದೊಡ್ಡ ಪ್ರಮಾಣದ ಕ್ರಿಯೆಯ ಮೋಡ್‌ಗೆ ಪ್ರವೇಶಿಸಲಾಗುತ್ತಿದೆ</string>
   <string name="description_leaving_bulk_action_mode">ದೊಡ್ಡ ಪ್ರಮಾಣದ ಕ್ರಿಯೆಯ ಮೋಡ್ ತೊರೆಯಲಾಗಿದೆ</string>
   <string name="description_selecting_bulk_action_mode">%1$s ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">ವೀಡಿಯೊ ಕರೆ.</string>
   <string name="description_start_voice_search">ಧ್ವನಿ ಹುಡುಕಾಟ ಪ್ರಾರಂಭಿಸಿ</string>
   <string name="voicemail">ಧ್ವನಿಮೇಲ್</string>
-  <string name="description_cancel_multi_select">ಬ್ಯಾಚ್ ಕ್ರಿಯೆಗಳ ಮೋಡ್ ಅನ್ನು ರದ್ದುಮಾಡಿ</string>
   <string name="voicemailMultiSelectDeleteConfirm">ಅಳಿಸಿ</string>
   <string name="voicemailMultiSelectDeleteCancel">ರದ್ದುಮಾಡಿ</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">ಧ್ವನಿ ಹುಡುಕಾಟ ಲಭ್ಯವಿಲ್ಲ</string>
   <string name="dialer_hint_find_contact">ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಿ</string>
-  <string name="block_number_search_hint">ಸಂ. ಸೇರಿಸಿ ಅಥವಾ ಸಂಪರ್ಕ ಹುಡುಕಿ</string>
   <string name="call_log_all_empty">ನಿಮ್ಮ ಕರೆ ಇತಿಹಾಸ ಖಾಲಿಯಾಗಿದೆ</string>
   <string name="call_log_all_empty_action">ಕರೆ ಮಾಡಿ</string>
   <string name="call_log_missed_empty">ನೀವು ಯಾವುದೇ ಮಿಸ್ಡ್ ಕರೆಗಳನ್ನು ಹೊಂದಿಲ್ಲ.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">ಕರೆ ಇತಿಹಾಸ</string>
   <string name="call_log_all_title">ಎಲ್ಲಾ ಕರೆಗಳು</string>
   <string name="call_log_missed_title">ಮಿಸ್ಡ್‌ ಕರೆಗಳು</string>
-  <string name="tab_speed_dial">ಸ್ಪೀಡ್ ಡಯಲ್</string>
-  <string name="tab_history">ಕರೆ ಇತಿಹಾಸ</string>
   <string name="tab_all_contacts">ಸಂಪರ್ಕಗಳು</string>
-  <string name="tab_voicemail">ಧ್ವನಿಮೇಲ್</string>
-  <string name="search_shortcut_call_number">%s ಕರೆ ಮಾಡಿ</string>
   <string name="search_shortcut_create_new_contact">ಹೊಸ ಸಂಪರ್ಕ ರಚಿಸು</string>
   <string name="search_shortcut_add_to_contact">ಸಂಪರ್ಕಕ್ಕೆ ಸೇರಿಸು</string>
   <string name="search_shortcut_send_sms_message">SMS ಕಳುಹಿಸು</string>
   <string name="search_shortcut_make_video_call">ವೀಡಿಯೊ ಕರೆ ಮಾಡಿ</string>
-  <string name="search_shortcut_block_number">ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸು</string>
-  <string name="speed_dial_empty">ನಿಮ್ಮ ತ್ವರಿತ ಡಯಲ್‌ನಲ್ಲಿ ಇದುವರೆಗೆ ಯಾರೂ ಇಲ್ಲ</string>
-  <string name="speed_dial_empty_add_favorite_action">ಮೆಚ್ಚಿನದನ್ನು ಸೇರಿಸಿ</string>
-  <string name="remove_contact">ತೆಗೆದುಹಾಕು</string>
   <string name="select_all">ಎಲ್ಲವನ್ನೂ ಆಯ್ಕೆ ಮಾಡಿ</string>
   <string name="call_log_action_video_call">ವೀಡಿಯೊ ಕರೆ</string>
-  <string name="call_log_action_set_up_video">ವೀಡಿಯೊ ಕರೆಮಾಡುವಿಕೆ ಹೊಂದಿಸಿ</string>
-  <string name="call_log_action_invite_video">ವೀಡಿಯೊ ಕರೆಗೆ ಆಹ್ವಾನಿಸಿ</string>
   <string name="call_log_action_send_message">ಸಂದೇಶ ಕಳುಹಿಸಿ</string>
   <string name="call_log_action_details">ಕರೆಯ ವಿವರಗಳು</string>
   <string name="call_log_action_share_voicemail">ಇದಕ್ಕೆ ಕಳುಹಿಸಿ ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">ಕರೆಗಳು</string>
   <string name="manage_blocked_numbers_label">ನಿರ್ಬಂಧಿಸಲಾದ ಸಂಖ್ಯೆಗಳು</string>
   <string name="voicemail_settings_label">ಧ್ವನಿಮೇಲ್</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ ತಾತ್ಕಾಲಿಕ ಆಫ್ ಮಾಡಲಾಗಿದೆ</string>
-  <string name="blocked_numbers_disabled_emergency_desc">ನೀವು ಕಳೆದ 48 ಗಂಟೆಗಳಲ್ಲಿ ಈ ಫೋನ್‌ನಿಂದ ತುರ್ತು ಸೇವೆಗಳಿಗೆ ಸಂಪರ್ಕಿಸಿರುವ ಕಾರಣದಿಂದ ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಒಮ್ಮೆ 48 ಗಂಟೆಗಳ ಅವಧಿಯು ಮುಕ್ತಾಯಗೊಂಡ ನಂತರ ಅದನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುಸಕ್ರಿಯಗೊಳಿಸಲಾಗುವುದು.</string>
-  <string name="import_send_to_voicemail_numbers_label">ಸಂಖ್ಯೆಗಳನ್ನು ಆಮದು ಮಾಡಿ</string>
-  <string name="blocked_call_settings_import_description">ನೀವು ಈ ಹಿಂದೆ ಗುರುತು ಮಾಡಲಾದ ಕೆಲವು ಕಾಲರ್‌ಗಳನ್ನು ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಮೂಲಕ ಧ್ವನಿಮೇಲ್‌ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸಲಾಗುತ್ತದೆ.</string>
-  <string name="blocked_call_settings_view_numbers_button">ಸಂಖ್ಯೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ</string>
-  <string name="blocked_call_settings_import_button">ಆಮದು ಮಾಡಿ</string>
-  <string name="description_blocked_number_list_delete">ಸಂಖ್ಯೆಯನ್ನು ಅನಿರ್ಬಂಧಿಸು</string>
-  <string name="addBlockedNumber">ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ</string>
-  <string name="block_number_footer_message_vvm">ಈ ಸಂಖ್ಯೆಗಳಿಗೆ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ.</string>
-  <string name="block_number_footer_message_no_vvm">ಈ ಸಂಖ್ಯೆಗಳಿಗೆ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗುವುದು, ಆದರೆ ಅವರು ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಈಗಲೂ ನಿಮಗೆ ಕಳುಹಿಸಬಹುದು.</string>
-  <string name="block_list">ನಿರ್ಬಂಧಿಸಲಾದ ಸಂಖ್ಯೆಗಳು</string>
-  <string name="alreadyBlocked">%1$s ಈಗಾಗಲೇ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</string>
   <string name="phone_account_settings_label">ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು</string>
-  <string name="permission_no_speeddial">ವೇಗ ಡಯಲ್ ಸಕ್ರಿಯಗೊಳಿಸಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ.</string>
   <string name="permission_no_calllog">ನಿಮ್ಮ ಕರೆಯ ಲಾಗ್ ಅನ್ನು ವೀಕ್ಷಿಸಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ.</string>
-  <string name="permission_no_search">ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಗಳನ್ನು ಆನ್ ಮಾಡಿ.</string>
-  <string name="permission_place_call">ಕರೆ ಮಾಡಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ.</string>
   <string name="toast_cannot_write_system_settings">ಸಿಸ್ಟಂ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಬರೆಯಲು ಫೋನ್ ಅಪ್ಲಿಕೇಶನ್ ಅನುಮತಿಯನ್ನು ಹೊಂದಿಲ್ಲ.</string>
   <string name="blocked_number_call_log_label">ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</string>
   <string name="call_log_action_block_report_number">ಸ್ಪ್ಯಾಮ್ ನಿರ್ಬಂಧಿಸು/ವರದಿ ಮಾಡು</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">ಸ್ಪ್ಯಾಮ್‌ ಅಲ್ಲ</string>
   <string name="call_log_action_unblock_number">ಸಂಖ್ಯೆಯನ್ನು ಅನಿರ್ಬಂಧಿಸು</string>
   <string name="spam_number_call_log_label">ಸ್ಪ್ಯಾಮ್</string>
-  <string name="call_composer_connection_failed">%1$s ಆಫ್‌ಲೈನ್ ಆಗಿದ್ದಾರೆ ಮತ್ತು ಅವರನ್ನು ತಲುಪಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ</string>
-  <string name="about_phone_label">ಕುರಿತು</string>
-  <string name="voicemail_transcription_branding_text">Google ನಿಂದ ಲಿಪ್ಯಂತರ ಮಾಡಲಾಗಿದೆ</string>
-  <string name="voicemail_transcription_in_progress">ಲಿಪ್ಯಂತರಿಸಲಾಗುತ್ತಿದೆ…</string>
-  <string name="voicemail_transcription_failed">ಲಿಪ್ಯಂತರ ಲಭ್ಯವಿಲ್ಲ.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">ಲಿಪ್ಯಂತರ ಲಭ್ಯವಿಲ್ಲ. ಈ ಭಾಷೆಗೆ ಬೆಂಬಲವಿಲ್ಲ.</string>
-  <string name="voicemail_transcription_failed_no_speech">ಲಿಪ್ಯಂತರ ಲಭ್ಯವಿಲ್ಲ. ಇದರಲ್ಲಿ ಮಾತು ಪತ್ತೆಯಾಗಿಲ್ಲ.</string>
-  <string name="voicemail_donation_promo_title">ಲಿಪ್ಯಂತರ ನಿಖರತೆಯನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡುವುದೇ?</string>
-  <string name="voicemail_donation_promo_content">ಲಿಪ್ಯಂತರಗಳೊಂದಿಗೆ ಇದನ್ನು ಮತ್ತು ಭವಿಷ್ಯದ ಧ್ವನಿಮೇಲ್ ಸಂದೇಶಗಳನ್ನು ಪರಿಶೀಲಿಸಲು Google ಗೆ ಅನುಮತಿಸಿ. ಅವುಗಳನ್ನು ಅನಾಮಧೇಯವಾಗಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">ಹೌದು, ನಾನಿದ್ದೇನೆ</string>
-  <string name="voicemail_donation_promo_opt_out">ಬೇಡ</string>
-  <string name="voicemail_transcription_rating">ಈ ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಶನ್ ಗುಣಮಟ್ಟಕ್ಕೆ ದರ ನಿಗದಿಪಡಿಸಿ</string>
-  <string name="voicemail_transcription_rating_thanks">ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆಗೆ ಧನ್ಯವಾದಗಳು.</string>
-  <string name="description_rating_good">ಇಷ್ಟ</string>
-  <string name="description_rating_bad">ಇಷ್ಟವಿಲ್ಲ</string>
-  <string name="view_conversation">ವೀಕ್ಷಿಸಿ</string>
-  <string name="ec_data_deleted">ಕರೆ ಅಳಿಸಲಾಗಿದೆ. ಈ ಕರೆಯ ಸಮಯದಲ್ಲಿ ಸಂದೇಶಗಳಲ್ಲಿ ಹಂಚಿಕೊಳ್ಳಲಾದ ಲಗತ್ತುಗಳನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ಅಳಿಸಿ.</string>
-  <string name="multiple_ec_data_deleted">ಕರೆಗಳನ್ನು ಅಳಿಸಲಾಗಿದೆ. ಈ ಕರೆಗಳನ್ನು ಮಾಡುವ ಸಮಯದಲ್ಲಿ ಸಂದೇಶಗಳಲ್ಲಿ ಹಂಚಿಕೊಳ್ಳಲಾದ ಲಗತ್ತುಗಳನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ಅಳಿಸಿ.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ko/cm_strings.xml b/java/com/android/dialer/app/res/values-ko/cm_strings.xml
new file mode 100644
index 0000000..63d5234
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-ko/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">통화 상태</string>
+    <string name="incall_enable_dnd_title">통화 중 방해 금지 모드 사용</string>
+    <string name="incall_vibrate_outgoing_title">전화 받을 때 진동</string>
+    <string name="incall_vibrate_call_waiting_title">통화 대기 중 진동</string>
+    <string name="incall_vibrate_hangup_title">통화 종료 시 진동</string>
+    <string name="incall_vibrate_45_title">매 분마다 진동</string>
+    <string name="incall_vibrate_45_summary">내가 건 통화 중에는 매 45초마다 진동으로 알림</string>
+    <string name="incall_dnd_dialog_message">방해 금지 모드를 사용하려면 앱이 방해 금지 모드를 제어할 수 있어야 합니다.\n권한을 허용해 주세요.</string>
+    <string name="allow">허용</string>
+    <string name="deny">거부</string>
+    <string name="call_recording_category_title">통화 녹음</string>
+    <string name="call_recording_format">오디오 형식</string>
+    <string name="call_via">앱으로 통화</string>
+    <string name="call_via_dialog_title">다음 앱으로 통화\u2026</string>
+    <string name="call_log_stats_title">통계</string>
+    <string name="action_menu_helplines">헬프라인</string>
+    <string name="default_dialer_text">앱을 사용하려면 먼저 이 앱을 기본 전화 앱으로 설정해야 합니다.</string>
+    <string name="default_dialer_action">기본값으로 설정</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-ko/strings.xml b/java/com/android/dialer/app/res/values-ko/strings.xml
index 55bc453..1560770 100644
--- a/java/com/android/dialer/app/res/values-ko/strings.xml
+++ b/java/com/android/dialer/app/res/values-ko/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">전화</string>
-  <string name="launcherDialpadActivityLabel">휴대전화 키패드</string>
   <string name="callHistoryIconLabel">통화 기록</string>
   <string name="action_copy_number_text">전화번호 복사</string>
-  <string name="copy_transcript_text">텍스트 변환 복사</string>
   <string name="action_edit_number_before_call">통화하기 전에 번호 수정</string>
   <string name="call_log_delete_all">통화 기록 삭제</string>
   <string name="call_log_trash_voicemail">음성사서함 삭제</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">재생 위치 찾기</string>
   <string name="action_menu_call_history_description">통화 기록</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">옵션 더보기</string>
-  <string name="action_menu_dialpad_button">키패드</string>
   <string name="dialer_settings_label">설정</string>
-  <string name="simulator_submenu_label">시뮬레이터</string>
-  <string name="new_ui_launcher_shortcut_label">새 UI 바로가기 만들기</string>
   <string name="description_entering_bulk_action_mode">일괄 작업 모드 시작 중</string>
   <string name="description_leaving_bulk_action_mode">일괄 작업 모드 종료됨</string>
   <string name="description_selecting_bulk_action_mode">%1$s 선택됨</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">화상 통화</string>
   <string name="description_start_voice_search">음성 검색 시작</string>
   <string name="voicemail">음성사서함</string>
-  <string name="description_cancel_multi_select">일괄 작업 모드 취소</string>
   <string name="voicemailMultiSelectDeleteConfirm">삭제</string>
   <string name="voicemailMultiSelectDeleteCancel">취소</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s개 선택됨</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">음성검색이 지원되지 않습니다.</string>
   <string name="dialer_hint_find_contact">주소록 검색</string>
-  <string name="block_number_search_hint">번호 추가 또는 연락처 검색</string>
   <string name="call_log_all_empty">통화 기록이 비어있습니다.</string>
   <string name="call_log_all_empty_action">전화 걸기</string>
   <string name="call_log_missed_empty">부재중 전화가 없습니다.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">통화 기록</string>
   <string name="call_log_all_title">전체</string>
   <string name="call_log_missed_title">부재중 전화</string>
-  <string name="tab_speed_dial">단축번호</string>
-  <string name="tab_history">통화 기록</string>
   <string name="tab_all_contacts">주소록</string>
-  <string name="tab_voicemail">음성사서함</string>
-  <string name="search_shortcut_call_number">%s에 전화</string>
   <string name="search_shortcut_create_new_contact">새 연락처 만들기</string>
   <string name="search_shortcut_add_to_contact">연락처에 추가</string>
   <string name="search_shortcut_send_sms_message">SMS 보내기</string>
   <string name="search_shortcut_make_video_call">화상 통화하기</string>
-  <string name="search_shortcut_block_number">번호 차단</string>
-  <string name="speed_dial_empty">아직 단축 다이얼이 설정된 연락처가 없습니다.</string>
-  <string name="speed_dial_empty_add_favorite_action">단축 다이얼 추가</string>
-  <string name="remove_contact">삭제</string>
   <string name="select_all">모두 선택</string>
   <string name="call_log_action_video_call">화상 통화</string>
-  <string name="call_log_action_set_up_video">화상 통화 설정</string>
-  <string name="call_log_action_invite_video">화상 통화에 초대</string>
   <string name="call_log_action_send_message">메시지 보내기</string>
   <string name="call_log_action_details">통화 세부정보</string>
   <string name="call_log_action_share_voicemail">수신자</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">통화</string>
   <string name="manage_blocked_numbers_label">차단된 번호</string>
   <string name="voicemail_settings_label">음성사서함</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">통화 차단 기능이 일시적으로 중지됨</string>
-  <string name="blocked_numbers_disabled_emergency_desc">지난 48시간 이내에 이 휴대전화를 사용해 응급 서비스에 연락했으므로 통화 차단 기능이 중지되었습니다. 48시간이 지나면 통화 차단 기능이 자동으로 다시 사용 설정됩니다.</string>
-  <string name="import_send_to_voicemail_numbers_label">번호 가져오기</string>
-  <string name="blocked_call_settings_import_description">이전에 다른 앱을 통해 일부 발신자를 자동으로 음성사서함으로 보내도록 표시했습니다.</string>
-  <string name="blocked_call_settings_view_numbers_button">개수 보기</string>
-  <string name="blocked_call_settings_import_button">가져오기</string>
-  <string name="description_blocked_number_list_delete">번호 차단 해제</string>
-  <string name="addBlockedNumber">번호 추가</string>
-  <string name="block_number_footer_message_vvm">이러한 번호에서 걸려오는 전화가 차단되며 음성사서함이 자동으로 삭제됩니다.</string>
-  <string name="block_number_footer_message_no_vvm">이러한 번호에서 걸려오는 전화가 차단되지만, 발신자가 음성사서함에 메시지를 남길 수는 있습니다.</string>
-  <string name="block_list">차단된 번호</string>
-  <string name="alreadyBlocked">%1$s번은 이미 차단되었습니다.</string>
   <string name="phone_account_settings_label">통화 계정</string>
-  <string name="permission_no_speeddial">단축번호를 사용하려면 주소록 권한을 사용하도록 설정하세요.</string>
   <string name="permission_no_calllog">통화 기록을 보려면 전화 권한을 사용하도록 설정하세요.</string>
-  <string name="permission_no_search">주소록을 검색하려면 주소록 권한을 사용하도록 설정하세요.</string>
-  <string name="permission_place_call">전화를 걸려면 전화 권한을 사용하도록 설정하세요.</string>
   <string name="toast_cannot_write_system_settings">전화 앱은 시스템 설정에 쓸 수 있는 권한이 없습니다.</string>
   <string name="blocked_number_call_log_label">차단됨</string>
   <string name="call_log_action_block_report_number">스팸 차단/신고</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">스팸 해제</string>
   <string name="call_log_action_unblock_number">번호 차단 해제</string>
   <string name="spam_number_call_log_label">스팸</string>
-  <string name="call_composer_connection_failed">%1$s님은 오프라인 상태이며 연락할 수 없습니다.</string>
-  <string name="about_phone_label">정보</string>
-  <string name="voicemail_transcription_branding_text">텍스트 변환 Google 제공</string>
-  <string name="voicemail_transcription_in_progress">텍스트 변환 중…</string>
-  <string name="voicemail_transcription_failed">텍스트 변환을 사용할 수 없습니다.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">텍스트 변환을 사용할 수 없습니다. 지원되지 않는 언어입니다.</string>
-  <string name="voicemail_transcription_failed_no_speech">텍스트 변환을 사용할 수 없습니다. 감지된 음성이 없습니다.</string>
-  <string name="voicemail_donation_promo_title">텍스트 변환 정확성 개선에 참여하시겠습니까?</string>
-  <string name="voicemail_donation_promo_content">Google에서 이번 및 향후 음성사서함 메시지와 스크립트를 검토하도록 허용해 주세요. 정보는 익명으로 저장되며 설정은 언제든지 변경할 수 있습니다. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">사용</string>
-  <string name="voicemail_donation_promo_opt_out">사용 안함</string>
-  <string name="voicemail_transcription_rating">텍스트 변환 품질 평가</string>
-  <string name="voicemail_transcription_rating_thanks">의견을 보내 주셔서 감사합니다</string>
-  <string name="description_rating_good">좋아요</string>
-  <string name="description_rating_bad">싫어요</string>
-  <string name="view_conversation">보기</string>
-  <string name="ec_data_deleted">통화가 삭제되었습니다. 메시지에서 이 통화 중에 공유된 첨부파일을 확인하고 삭제하세요.</string>
-  <string name="multiple_ec_data_deleted">통화가 삭제되었습니다. 메시지에서 통화 중에 공유된 첨부파일을 확인하고 삭제하세요.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ky/strings.xml b/java/com/android/dialer/app/res/values-ky/strings.xml
index fa11a96..22b4e33 100644
--- a/java/com/android/dialer/app/res/values-ky/strings.xml
+++ b/java/com/android/dialer/app/res/values-ky/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Телефон</string>
-  <string name="launcherDialpadActivityLabel">Телефондун номер тергичи</string>
   <string name="callHistoryIconLabel">Чалуулар таржымалы</string>
   <string name="action_copy_number_text">Номерди көчүрүү</string>
-  <string name="copy_transcript_text">Транскрипцияны көчүрүү</string>
   <string name="action_edit_number_before_call">Чалуудан мурун номерди түзөтүү</string>
   <string name="call_log_delete_all">Чалуулар таржымалын тазалоо</string>
   <string name="call_log_trash_voicemail">Үн почтасын жок кылуу</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Ойнотуунун жайгашкан жерин издөө</string>
   <string name="action_menu_call_history_description">Чалуулар таржымалы</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Көбүрөөк мүмкүнчүлүктөр</string>
-  <string name="action_menu_dialpad_button">номер тергич</string>
   <string name="dialer_settings_label">Жөндөөлөр</string>
-  <string name="simulator_submenu_label">Симулятор</string>
-  <string name="new_ui_launcher_shortcut_label">Жаңы интерфейс үчүн кыска жол түзүү</string>
   <string name="description_entering_bulk_action_mode">Жапырт аракет режимине кирдиңиз</string>
   <string name="description_leaving_bulk_action_mode">Жапырт аракет режиминен чыктыңыз</string>
   <string name="description_selecting_bulk_action_mode">%1$s объект тандалды</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Видео чалуу.</string>
   <string name="description_start_voice_search">Үн менен издеп баштоо</string>
   <string name="voicemail">Үн почтасы</string>
-  <string name="description_cancel_multi_select">Жапырт аракет режимин жокко чыгаруу</string>
   <string name="voicemailMultiSelectDeleteConfirm">Жок кылуу</string>
   <string name="voicemailMultiSelectDeleteCancel">Жокко чыгаруу</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s тандалды</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Үн менен издөө жеткиликтүү эмес</string>
   <string name="dialer_hint_find_contact">Байланыштарды издөө</string>
-  <string name="block_number_search_hint">Номер кошуңуз же байлнш издңз</string>
   <string name="call_log_all_empty">Чалуулар таржымалыңыз бош</string>
   <string name="call_log_all_empty_action">Чалуу</string>
   <string name="call_log_missed_empty">Кабыл алынбаган чалуулар жок.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Чалуулар таржымалы</string>
   <string name="call_log_all_title">Бардыгы</string>
   <string name="call_log_missed_title">Кабыл алынбагандар</string>
-  <string name="tab_speed_dial">Тез терүү</string>
-  <string name="tab_history">Чалуулар таржымалы</string>
   <string name="tab_all_contacts">Байланыштар</string>
-  <string name="tab_voicemail">Үн почтасы</string>
-  <string name="search_shortcut_call_number">Чалуу %s</string>
   <string name="search_shortcut_create_new_contact">Жаңы байланыш түзүү</string>
   <string name="search_shortcut_add_to_contact">Байланышка кошуу</string>
   <string name="search_shortcut_send_sms_message">SMS жөнөтүү</string>
   <string name="search_shortcut_make_video_call">Видео түрүндө чалуу</string>
-  <string name="search_shortcut_block_number">Номерди бөгөттөө</string>
-  <string name="speed_dial_empty">Азырынча тез териле турган номерлер жок</string>
-  <string name="speed_dial_empty_add_favorite_action">Сүйүктүү номер кошуу</string>
-  <string name="remove_contact">Алып салуу</string>
   <string name="select_all">Баарын тандоо</string>
   <string name="call_log_action_video_call">Видео чалуу</string>
-  <string name="call_log_action_set_up_video">Видео режиминде чалууну жөндөө</string>
-  <string name="call_log_action_invite_video">Видео режиминде чалууга чакыр</string>
   <string name="call_log_action_send_message">Билдирүү жөнөтүү</string>
   <string name="call_log_action_details">Чалуунун чоо-жайы</string>
   <string name="call_log_action_share_voicemail">Төмөнкүгө жөнөтүү…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Чалуулар</string>
   <string name="manage_blocked_numbers_label">Бөгөттөлгөн номерлер</string>
   <string name="voicemail_settings_label">Үн почтасы</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Чалууну бөгөттөө убактылуу өчүрүлгөн</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Акыркы 48 саат ичинде бул телефондон өзгөчө кырдаал кызматына байланышкандыктан чалууну бөгөттөө өчүрүлдү. 48 сааттык мөөнөтү аяктагандан кийин ал автоматтык түрдө кайра иштетилет.</string>
-  <string name="import_send_to_voicemail_numbers_label">Номерлерди импорттоо</string>
-  <string name="blocked_call_settings_import_description">Мурда башка колдонмолор аркылуу айрым чалуучуларга автоматтык түрдө үн почтасы жөнөтүлгүдөй кылып белгилегенсиз.</string>
-  <string name="blocked_call_settings_view_numbers_button">Номерлерди көрүү</string>
-  <string name="blocked_call_settings_import_button">Импорттоо</string>
-  <string name="description_blocked_number_list_delete">Номерди бөгөттөн чыгаруу</string>
-  <string name="addBlockedNumber">Номер кошуу</string>
-  <string name="block_number_footer_message_vvm">Бул номерлерден келген чалуулар бөгөттөлөт жана үн билдирүүлөрү автоматтык түрдө жок кылынат.</string>
-  <string name="block_number_footer_message_no_vvm">Бул номерлерден келген чалуулар бөгөттөлөт, бирок алар сизге үн билдирүүлөрүн калтыра берет.</string>
-  <string name="block_list">Бөгөттөлгөн номерлер</string>
-  <string name="alreadyBlocked">%1$s мурунтан эле бөгөттөлгөн.</string>
   <string name="phone_account_settings_label">Чалуу каттоо эсептери</string>
-  <string name="permission_no_speeddial">Тез терүүнү иштетүү үчүн, \"Байланыштар\" колдонмосуна уруксат бериңиз.</string>
   <string name="permission_no_calllog">Чалуулар таржымалыңызды көрүү үчүн, \"Телефон\" колдонмосуна уруксат бериңиз.</string>
-  <string name="permission_no_search">Байланыштарыңызды издөө үчүн, Байланыштарга уруксатты күйгүзүңүз.</string>
-  <string name="permission_place_call">Чалуу үчүн, \"Телефон\" колдонмосуна уруксат бериңиз.</string>
   <string name="toast_cannot_write_system_settings">Телефон колдонмосунун Тутум жөндөөлөрүнө жазууга уруксаты жок.</string>
   <string name="blocked_number_call_log_label">Бөгөттөлгөн</string>
   <string name="call_log_action_block_report_number">Бөгөттөө/спам катары кабарлоо</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Спам эмес</string>
   <string name="call_log_action_unblock_number">Номерди бөгөттөн чыгаруу</string>
   <string name="spam_number_call_log_label">Спам</string>
-  <string name="call_composer_connection_failed">%1$s оффлайн режиминде болгондуктан, байланышууга болбойт</string>
-  <string name="about_phone_label">Колдонмо жөнүндө</string>
-  <string name="voicemail_transcription_branding_text">Google тарабынан чечмеленди</string>
-  <string name="voicemail_transcription_in_progress">Күтө туруңуз...</string>
-  <string name="voicemail_transcription_failed">Чечмелөө жеткиликсиз.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Чечмелүү жеткиликсиз. Тил колдоого алынбайт.</string>
-  <string name="voicemail_transcription_failed_no_speech">Чечмелөө жеткиликсиз. Cөз таанылган жок.</string>
-  <string name="voicemail_donation_promo_title">Транскрипциянын тактыгын жакшыртууга жардам бересизби?</string>
-  <string name="voicemail_donation_promo_content">Үн почтаңыздын ушул жана башка билдирүүлөрүн Google транскрипциялары менен карап чыгышы керек. Алар жашыруун мүнөздө сакталат. Жөндөөлөрдү каалаган убакытта өзгөртсөңүз болот. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Ооба, макулмун</string>
-  <string name="voicemail_donation_promo_opt_out">Жок, рахмат</string>
-  <string name="voicemail_transcription_rating">Баалоо транскрипциясынын сапаты</string>
-  <string name="voicemail_transcription_rating_thanks">Жооп-пикириңиз үчүн рахмат</string>
-  <string name="description_rating_good">Жакты</string>
-  <string name="description_rating_bad">Жаккан жок</string>
-  <string name="view_conversation">Карап көрүү</string>
-  <string name="ec_data_deleted">Чалуу жок кылынды. Билдирүүлөр колдонмосунда чалуу убагында жөнөтүлгөн файлдарды текшерип, жок кылыңыз.</string>
-  <string name="multiple_ec_data_deleted">Чалуулар жок кылынды. Билдирүүлөр колдонмосунда чалуулар убагында жөнөтүлгөн файлдарды текшерип, жок кылыңыз.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-lo/strings.xml b/java/com/android/dialer/app/res/values-lo/strings.xml
index cec4b39..f2c8cf8 100644
--- a/java/com/android/dialer/app/res/values-lo/strings.xml
+++ b/java/com/android/dialer/app/res/values-lo/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ໂທລະສັບ</string>
-  <string name="launcherDialpadActivityLabel">ແປ້ນກົດໂທລະສັບ</string>
   <string name="callHistoryIconLabel">ປະຫວັດການໂທ</string>
   <string name="action_copy_number_text">ອັດ​ສຳ​ເນົາ​ໝາຍເລກ</string>
-  <string name="copy_transcript_text">ອັດ​ສຳ​ເນົາ​ການ​ກ່າຍ​ເປັນ​ໜັງ​ສື</string>
   <string name="action_edit_number_before_call">ແກ້ໄຂໝາຍເລກກ່ອນໂທ</string>
   <string name="call_log_delete_all">ລຶບ​ປະ​ຫວັດ​ການ​ໂທ​</string>
   <string name="call_log_trash_voicemail">ລຶບຂໍ້ຄວາມສຽງ</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">​ຊອກ​ຫາ​ຕຳ​​ແໜ່ງ​ຫຼິ້ນ</string>
   <string name="action_menu_call_history_description">ປະຫວັດການໂທ</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">ໂຕເລືອກເພີ່ມເຕີມ</string>
-  <string name="action_menu_dialpad_button">ແປ້ນກົດ</string>
   <string name="dialer_settings_label">ການ​ຕັ້ງ​ຄ່າ</string>
-  <string name="simulator_submenu_label">ຕົວຈຳລອງ</string>
-  <string name="new_ui_launcher_shortcut_label">ສ້າງປຸ່ມລັດສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ໃໝ່</string>
   <string name="description_entering_bulk_action_mode">ກຳລັງເຂົ້າໂໝດຄຳສັ່ງຈຳນວນຫຼາຍ</string>
   <string name="description_leaving_bulk_action_mode">ອອກຈາກໂໝດຄຳສັ່ງຈຳນວນຫຼາຍແລ້ວ</string>
   <string name="description_selecting_bulk_action_mode">ເລືອກ %1$s ແລ້ວ</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">ການ​ໂທ​ດ້ວຍ​ວິ​ດີ​ໂອ.</string>
   <string name="description_start_voice_search">ເລີ່ມການຊອກຫາດ້ວຍສຽງ</string>
   <string name="voicemail">ຂໍ້ຄວາມສຽງ</string>
-  <string name="description_cancel_multi_select">ຍົກເລີກໂໝດຄຳສັ່ງເປັນຊຸດ</string>
   <string name="voicemailMultiSelectDeleteConfirm">ລຶບ</string>
   <string name="voicemailMultiSelectDeleteCancel">ຍົກເລີກ</string>
   <string name="voicemailMultiSelectActionBarTitle">ເລືອກ %1$s ລາຍການແລ້ວ</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">ບໍ່​ມີ​ການ​ຊອກ​ຫາ​ດ້ວຍ​ສຽງ​ຢູ່</string>
   <string name="dialer_hint_find_contact">ຊອກຫາລາຍຊື່ຜູ່ຕິດຕໍ່</string>
-  <string name="block_number_search_hint">ເພີ່ມ​ເບີ​ໂທ​ລະ​ສັບ ຫຼື ຊອກ​ຫາ​ລາຍ​ຊື່​ຕິດ​ຕໍ່</string>
   <string name="call_log_all_empty">ປະ​ຫວັດ​ການ​ໂທ​ຂອງ​ທ່ານ​ຫວ່າງ​ເປົ່າ</string>
   <string name="call_log_all_empty_action">​ໂທ​ອອກ</string>
   <string name="call_log_missed_empty">ທ່ານບໍ່ມີສາຍທີ່ບໍ່ໄດ້ຮັບ.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">ປະຫວັດການໂທ</string>
   <string name="call_log_all_title">ທັງໝົດ</string>
   <string name="call_log_missed_title">ສາຍທີ່ບໍ່ໄດ້ຮັບ</string>
-  <string name="tab_speed_dial">ການ​ໂທ​ດ່ວນ</string>
-  <string name="tab_history">ປະຫວັດການໂທ</string>
   <string name="tab_all_contacts">ລາຍ​ຊື່​ຜູ່​ຕິດ​ຕໍ່</string>
-  <string name="tab_voicemail">ຂໍ້ຄວາມສຽງ</string>
-  <string name="search_shortcut_call_number">ໂທ​ຫາ %s</string>
   <string name="search_shortcut_create_new_contact">ສ້າງລາຍຊື່ຜູ້ຕິດຕໍ່ໃໝ່</string>
   <string name="search_shortcut_add_to_contact">ເພີ່ມ​ໃສ່​ລາຍ​ຊື່</string>
   <string name="search_shortcut_send_sms_message">ສົ່ງ SMS</string>
   <string name="search_shortcut_make_video_call">​ໂທ​ອອກ​ດ້ວຍ​ວິ​ດີ​ໂອ</string>
-  <string name="search_shortcut_block_number">ບ​ລັອກ​ໝາຍ​ເລກ</string>
-  <string name="speed_dial_empty">ບໍ່​ມີ​ຜູ້​ໃດ​ຢູ່​ໃນ​ການ​ໂທ​ດ່ວນ​ຂອງ​ທ່ານ​ເທື່ອ</string>
-  <string name="speed_dial_empty_add_favorite_action">ເພີ່ມ​ລາຍ​ການ​ທີ່​ມັກ</string>
-  <string name="remove_contact">​ລຶບ​ອອກ</string>
   <string name="select_all">ເລືອກທັງໝົດ</string>
   <string name="call_log_action_video_call">​ໂທ​ດ້ວຍ​ວິ​ດີ​ໂອ</string>
-  <string name="call_log_action_set_up_video">ຕັ້ງຄ່າການໂທວິດີໂອ</string>
-  <string name="call_log_action_invite_video">ເຊີນເຂົ້າຮ່ວມການໂທວິດີໂອ</string>
   <string name="call_log_action_send_message">ສົ່ງຂໍ້ຄວາມ</string>
   <string name="call_log_action_details">ລາຍລະອຽດ​ການໂທ</string>
   <string name="call_log_action_share_voicemail">ສົ່ງໄປ ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">​ການ​ໂທ</string>
   <string name="manage_blocked_numbers_label">ໝາຍເລກທີ່ບລັອກແລ້ວ</string>
   <string name="voicemail_settings_label">ຂໍ້ຄວາມສຽງ</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">ການບ​ລັອກ​ສາຍ​ໂທ​ປິດ​ຊົ່ວ​ຄາວ</string>
-  <string name="blocked_numbers_disabled_emergency_desc">ການບ​ລັອກ​ສາຍ​ໂທ​ຖືກ​ປິດ​ໃຊ້​ງານ​ແລ້ວ ເພາະ​ວ່າ​ທ່ານ​ໄດ້​ຕິດ​ຕໍ່​ຫາ​ຝ່າຍ​ບໍ​ລິ​ການ​ສຸກ​ເສີນ​ຈາກ​ໂທ​ລະ​ສັບ​ນີ້​ພາຍ​ໃນ 48 ຊົ່ວ​ໂມງ​ສຸດ​ທ້າຍ. ມັນ​ຈະ​ຖືກ​ເປີດ​ໃຊ້​ງານ​ອີກ​ໂດຍ​ອັດ​ຕະ​ໂນ​ມັດ ເມື່ອ​ໝົດ​ໄລ​ຍະ 48 ຊົ່ວ​ໂມງ​ໄປ​ແລ້ວ.</string>
-  <string name="import_send_to_voicemail_numbers_label">ນຳ​ຕົວ​ເລກ​ເຂົ້າ</string>
-  <string name="blocked_call_settings_import_description">ຜ່ານ​ມາ​ທ່ານ​ໄດ້​ໝາຍ​ຜູ້​ໂທ​ບາງ​ຄົນ​ໃຫ້​ຖືກ​ສົ່ງ​​ຫາ​ຂໍ້​ຄວາມ​ສຽງໂດຍ​ອັດ​ຕະ​ໂນ​ມັດ​ຜ່ານ​ແອັບ​ອື່ນ​.</string>
-  <string name="blocked_call_settings_view_numbers_button">ເບິ່ງ​ຕົວ​ເລກ</string>
-  <string name="blocked_call_settings_import_button">ນໍາເຂົ້າ</string>
-  <string name="description_blocked_number_list_delete">ປົດ​ບ​ລັອກ​ໝາຍ​ເລກ</string>
-  <string name="addBlockedNumber">ເພີ່ມໝາຍເລກ</string>
-  <string name="block_number_footer_message_vvm">ການໂທຈາກເບີໂທເຫຼົ່ານີ້ຈະຖືກບລັອກໄວ້ ແລະຂໍ້ຄວາມສຽງຈະຖືກລຶບໂດຍອັດຕະໂນມັດ.</string>
-  <string name="block_number_footer_message_no_vvm">ການໂທຈາກເບີໂທເຫຼົ່ານີ້ຈະຖືກບລັອກໄວ້, ແຕ່ພວກເຂົາອາດຈະຍັງສາມາດຝາກຂໍ້ຄວາມສຽງໃຫ້ທ່ານໄດ້.</string>
-  <string name="block_list">ເບີໂທລະສັບທີ່ບລັອກໄວ້</string>
-  <string name="alreadyBlocked">%1$s ຖືກ​ບ​ລັອກ​ແລ້ວ.</string>
   <string name="phone_account_settings_label">ບັນ​ຊີ​ໂທ</string>
-  <string name="permission_no_speeddial">ເພື່ອ​ເປີດ​ໃຊ້​ງານ​ການໂທດ່ວນ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ລາຍ​ຊື່.</string>
   <string name="permission_no_calllog">ເພື່ອ​ເບິ່ງ​ບັນ​ທຶກ​ການ​ໂທ​ຂອງ​ທ່ານ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ.</string>
-  <string name="permission_no_search">ເພື່ອຄົ້ນຫາລາຍາຊື່ຂອງທ່ານ, ໃຫ້ເປີດການອະນຸຍາດລາຍຊື່.</string>
-  <string name="permission_place_call">ເພື່ອ​ເຮັດການໂທ, ເປີດ​ການ​ອະ​ນຸ​ຍາດ​ໂທ​ລະ​ສັບ.</string>
   <string name="toast_cannot_write_system_settings">ແອັບໂທລະສັບບໍ່ມີການອະນຸຍາດໃຫ້ຂຽນໃສ່ການຕັ້ງຄ່າລະບົບ.</string>
   <string name="blocked_number_call_log_label">ບລັອກ​ແລ້ວ</string>
   <string name="call_log_action_block_report_number">ບລັອກ/ລາຍງານສະແປມ</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">ບໍ່ແມ່ນສະແປມ</string>
   <string name="call_log_action_unblock_number">ປົດ​ບ​ລັອກ​ໝາຍ​ເລກ</string>
   <string name="spam_number_call_log_label">ສະແປມ</string>
-  <string name="call_composer_connection_failed">%1$s ອອບລາຍຢູ່ ແລະ ບໍ່ສາມາດຕິດຕໍ່ຫາໄດ້</string>
-  <string name="about_phone_label">ກ່ຽວກັບ</string>
-  <string name="voicemail_transcription_branding_text">ຖອດຂໍ້ຄວາມໂດຍ Google</string>
-  <string name="voicemail_transcription_in_progress">ກຳລັງຖອດຂໍ້ຄວາມ...</string>
-  <string name="voicemail_transcription_failed">ບໍ່ມີການຖອດຂໍ້ຄວາມ.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">ບໍ່ສາມາດຖອດຂໍ້ຄວາມໄດ້. ບໍ່ຮອງຮັບພາສາ.</string>
-  <string name="voicemail_transcription_failed_no_speech">ບໍ່ສາມາດຖອດຂໍ້ຄວາມໄດ້. ບໍ່ພົບການເວົ້າ.</string>
-  <string name="voicemail_donation_promo_title">ຊ່ວຍປັບປຸງຄວາມຖືກຕ້ອງໃນການຖອດຂໍ້ຄວາມ?</string>
-  <string name="voicemail_donation_promo_content">ອະນຸຍາດໃຫ້ Google ກວດສອບຂໍ້ຄວາມສຽງນີ້ ແລະ ຂໍ້ຄວາມສຽງໃນອະນາຄົດດ້ວຍການຖອດຂໍ້ຄວາມ. ພວກມັນຈະຖືກເກັບໄວ້ໂດຍບໍ່ລະບຸຊື່. ທ່ານສາມາດປ່ຽນການຕັ້ງຄ່ານີ້ໄດ້ທຸກເວລາ. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">ແມ່ນ, ຂ້ອຍເຂົ້າຮ່ວມ</string>
-  <string name="voicemail_donation_promo_opt_out">ບໍ່, ຂອບໃຈ</string>
-  <string name="voicemail_transcription_rating">ໃຫ້ຄະແນນຄຸນນະພາບການຖອດຂໍ້ຄວາມ</string>
-  <string name="voicemail_transcription_rating_thanks">ຂໍຂອບໃຈສຳລັບຄຳເຫັນຕິຊົມຂອງທ່ານ</string>
-  <string name="description_rating_good">ຖືກໃຈ</string>
-  <string name="description_rating_bad">ບໍ່ຖືກໃຈ</string>
-  <string name="view_conversation">ເບິ່ງ</string>
-  <string name="ec_data_deleted">ລຶບການໂທແລ້ວ. ເບິ່ງ ແລະ ລຶບໄຟລ໌ແນບທີ່ແບ່ງປັນໃນລະຫວ່າງການໂທນີ້ຢູ່ Messages ໄດ້.</string>
-  <string name="multiple_ec_data_deleted">ລຶບການໂທແລ້ວ. ເບິ່ງ ແລະ ລຶບໄຟລ໌ແນບທີ່ແບ່ງປັນໃນລະຫວ່າງການໂທຕ່າງໆຢູ່ Messages ໄດ້.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-lt/strings.xml b/java/com/android/dialer/app/res/values-lt/strings.xml
index 4a1d746..0078d6f 100644
--- a/java/com/android/dialer/app/res/values-lt/strings.xml
+++ b/java/com/android/dialer/app/res/values-lt/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefonas</string>
-  <string name="launcherDialpadActivityLabel">Telefono klaviatūra</string>
   <string name="callHistoryIconLabel">Skambučių istorija</string>
   <string name="action_copy_number_text">Kopijuoti numerį</string>
-  <string name="copy_transcript_text">Kopijuoti transkribuotą tekstą</string>
   <string name="action_edit_number_before_call">Redaguoti numerį prieš skambinant</string>
   <string name="call_log_delete_all">Išvalyti skambučių istoriją</string>
   <string name="call_log_trash_voicemail">Ištrinti balso pašto pranešim.</string>
@@ -37,10 +35,7 @@
   <string name="description_playback_seek">Ieškoti atkūrimo pozicijos</string>
   <string name="action_menu_call_history_description">Skambučių istorija</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Daugiau parinkčių</string>
-  <string name="action_menu_dialpad_button">klaviatūra</string>
   <string name="dialer_settings_label">Nustatymai</string>
-  <string name="simulator_submenu_label">Simuliatorius</string>
-  <string name="new_ui_launcher_shortcut_label">Sukurti naują NS spart. klav.</string>
   <string name="description_entering_bulk_action_mode">Įjungiamas masinių veiksmų režimas</string>
   <string name="description_leaving_bulk_action_mode">Masinių veiksmų režimas išjungtas</string>
   <string name="description_selecting_bulk_action_mode">Pasirinkta: %1$s</string>
@@ -51,7 +46,6 @@
   <string name="description_video_call">Vaizdo skambutis.</string>
   <string name="description_start_voice_search">Pradėti paiešką balsu</string>
   <string name="voicemail">Balso paštas</string>
-  <string name="description_cancel_multi_select">Atšaukti masinių veiksmų režimą</string>
   <string name="voicemailMultiSelectDeleteConfirm">Ištrinti</string>
   <string name="voicemailMultiSelectDeleteCancel">Atšaukti</string>
   <string name="voicemailMultiSelectActionBarTitle">Pasirinkta: %1$s</string>
@@ -67,7 +61,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Paieška balsu nepasiekiama</string>
   <string name="dialer_hint_find_contact">Ieškoti adresatų</string>
-  <string name="block_number_search_hint">Prid. nr. arba iešk. kontaktų</string>
   <string name="call_log_all_empty">Skambučių istorija yra tuščia</string>
   <string name="call_log_all_empty_action">Skambinti</string>
   <string name="call_log_missed_empty">Nėra jokių praleistų skambučių.</string>
@@ -75,23 +68,13 @@
   <string name="call_log_activity_title">Skambučių istorija</string>
   <string name="call_log_all_title">Visi</string>
   <string name="call_log_missed_title">Praleisti</string>
-  <string name="tab_speed_dial">Spartusis rinkimas</string>
-  <string name="tab_history">Skambučių istorija</string>
   <string name="tab_all_contacts">Kontaktai</string>
-  <string name="tab_voicemail">Balso paštas</string>
-  <string name="search_shortcut_call_number">Skambinti %s</string>
   <string name="search_shortcut_create_new_contact">Kurti naują kontaktą</string>
   <string name="search_shortcut_add_to_contact">Pridėti prie kontakto</string>
   <string name="search_shortcut_send_sms_message">Siųsti SMS</string>
   <string name="search_shortcut_make_video_call">Atlikti vaizdo skambutį</string>
-  <string name="search_shortcut_block_number">Blokuoti numerį</string>
-  <string name="speed_dial_empty">Dar nieko neįtraukėte į sparčiojo rinkimo sąrašą</string>
-  <string name="speed_dial_empty_add_favorite_action">Pridėti mėgstamiausią</string>
-  <string name="remove_contact">Pašalinti</string>
   <string name="select_all">Pasirinkti viską</string>
   <string name="call_log_action_video_call">Vaizdo skambutis</string>
-  <string name="call_log_action_set_up_video">Nustatyti vaizdo skambučius</string>
-  <string name="call_log_action_invite_video">Pakviesti į vaizdo skambutį</string>
   <string name="call_log_action_send_message">Siųsti pranešimą</string>
   <string name="call_log_action_details">Išsami skambučio informacija</string>
   <string name="call_log_action_share_voicemail">Siųsti…</string>
@@ -130,23 +113,8 @@
   <string name="call_settings_label">Skambučiai</string>
   <string name="manage_blocked_numbers_label">Užblokuoti numeriai</string>
   <string name="voicemail_settings_label">Balso paštas</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Skamb. blokavimo funkcija laikinai išj.</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Skambučių blokavimo funkcija buvo išjungta, nes iš šio telefono buvote susisiekę su pagalbos tarnybomis per pastarąsias 48 val. Ši funkcija bus automatiškai įgalinta iš naujo, kai 48 val. laikotarpis pasibaigs.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importuoti numerius</string>
-  <string name="blocked_call_settings_import_description">Naudodami kitas programas anksčiau buvote pažymėję, kad kai kurie skambintojai būtų automatiškai nusiųsti į balso paštą.</string>
-  <string name="blocked_call_settings_view_numbers_button">Žr. skaičius</string>
-  <string name="blocked_call_settings_import_button">Importuoti</string>
-  <string name="description_blocked_number_list_delete">Panaikinti numerio blokavimą</string>
-  <string name="addBlockedNumber">Pridėti numerį</string>
-  <string name="block_number_footer_message_vvm">Skambučiai iš šių numerių bus užblokuoti, o balso pašto pranešimai bus automatiškai ištrinti.</string>
-  <string name="block_number_footer_message_no_vvm">Skambučiai iš šių numerių bus užblokuoti, tačiau skambintojai vis tiek galės palikti jums balso pašto pranešimus.</string>
-  <string name="block_list">Užblokuoti numeriai</string>
-  <string name="alreadyBlocked">%1$s jau užblokuotas.</string>
   <string name="phone_account_settings_label">Skambinimo paskyros</string>
-  <string name="permission_no_speeddial">Jei norite įgalinti spartųjį rinkimą, įjunkite Kontaktų programos leidimą.</string>
   <string name="permission_no_calllog">Jei norite peržiūrėti skambučių žurnalą, įjunkite Telefono programos leidimą.</string>
-  <string name="permission_no_search">Kad galėtumėte ieškoti kontaktų, įjunkite Kontaktų leidimus.</string>
-  <string name="permission_place_call">Jei norite paskambinti, įjunkite Telefono programos leidimą.</string>
   <string name="toast_cannot_write_system_settings">Telefono programa neturi leidimo keisti sistemos nustatymų.</string>
   <string name="blocked_number_call_log_label">Užblokuota</string>
   <string name="call_log_action_block_report_number">Blokuoti / pran. apie šlamštą</string>
@@ -154,22 +122,4 @@
   <string name="call_log_action_remove_spam">Ne šlamštas</string>
   <string name="call_log_action_unblock_number">Panaikinti numerio blokavimą</string>
   <string name="spam_number_call_log_label">Šlamštas</string>
-  <string name="call_composer_connection_failed">%1$s yra neprisijungęs (-usi) ir su juo (ja) negalima susisiekti</string>
-  <string name="about_phone_label">Apie</string>
-  <string name="voicemail_transcription_branding_text">Transkribavo „Google“</string>
-  <string name="voicemail_transcription_in_progress">Transkribuojama…</string>
-  <string name="voicemail_transcription_failed">Scenarijus nepasiekiamas.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Scenarijus nepasiekiamas. Kalba nepalaikoma.</string>
-  <string name="voicemail_transcription_failed_no_speech">Scenarijus nepasiekiamas. Neaptikta, kad būtų kalbama.</string>
-  <string name="voicemail_donation_promo_title">Norite padėti tobulinti transkribavimo tikslumą?</string>
-  <string name="voicemail_donation_promo_content">Leiskite „Google“ peržiūrėti šį ir būsimus balso pašto pranešimus su nuorašais. Jie bus saugomi anonimiškai. Nustatymus galite pakeisti bet kuriuo metu. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Taip, sutinku</string>
-  <string name="voicemail_donation_promo_opt_out">Ne, ačiū</string>
-  <string name="voicemail_transcription_rating">Įvertinkite nuorašo kokybę</string>
-  <string name="voicemail_transcription_rating_thanks">Dėkojame už atsiliepimą</string>
-  <string name="description_rating_good">Patinka</string>
-  <string name="description_rating_bad">Nepatinka</string>
-  <string name="view_conversation">Peržiūrėti</string>
-  <string name="ec_data_deleted">Skambutis ištrintas. Peržiūrėkite ir ištrinkite priedus, kurie buvo bendrinti per šį skambutį programoje „Messages“.</string>
-  <string name="multiple_ec_data_deleted">Skambučiai ištrinti. Peržiūrėkite ir ištrinkite priedus, kurie buvo bendrinti per skambučius programoje „Messages“.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-lv/strings.xml b/java/com/android/dialer/app/res/values-lv/strings.xml
index d49e713..9d70b1d 100644
--- a/java/com/android/dialer/app/res/values-lv/strings.xml
+++ b/java/com/android/dialer/app/res/values-lv/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Tālrunis</string>
-  <string name="launcherDialpadActivityLabel">Tālruņa cipartastatūra</string>
   <string name="callHistoryIconLabel">Zvanu vēsture</string>
   <string name="action_copy_number_text">Kopēt numuru</string>
-  <string name="copy_transcript_text">Kopēt transkripciju</string>
   <string name="action_edit_number_before_call">Rediģēt numuru pirms zvanīšanas</string>
   <string name="call_log_delete_all">Dzēst zvanu vēsturi</string>
   <string name="call_log_trash_voicemail">Dzēst balss pasta ziņojumu</string>
@@ -36,10 +34,7 @@
   <string name="description_playback_seek">Meklēt atskaņošanas pozīciju</string>
   <string name="action_menu_call_history_description">Zvanu vēsture</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Vairāk opciju</string>
-  <string name="action_menu_dialpad_button">cipartastatūra</string>
   <string name="dialer_settings_label">Iestatījumi</string>
-  <string name="simulator_submenu_label">Simulators</string>
-  <string name="new_ui_launcher_shortcut_label">Jaunās liet. saskarnes saīsne</string>
   <string name="description_entering_bulk_action_mode">Tiek atvērts lielapjoma darbību režīms</string>
   <string name="description_leaving_bulk_action_mode">Tika aizvērts lielapjoma darbību režīms</string>
   <string name="description_selecting_bulk_action_mode">Atlasīt: %1$s</string>
@@ -50,7 +45,6 @@
   <string name="description_video_call">Videozvans</string>
   <string name="description_start_voice_search">Sākt meklēšanu ar balsi</string>
   <string name="voicemail">Balss pasts</string>
-  <string name="description_cancel_multi_select">Iziet no grupas darbību režīma</string>
   <string name="voicemailMultiSelectDeleteConfirm">Dzēst</string>
   <string name="voicemailMultiSelectDeleteCancel">Atcelt</string>
   <string name="voicemailMultiSelectActionBarTitle">Atlasīti: %1$s</string>
@@ -65,7 +59,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Meklēšana ar balsi nav pieejama.</string>
   <string name="dialer_hint_find_contact">Meklēt kontaktpersonas</string>
-  <string name="block_number_search_hint">Pievienojiet numuru vai meklējiet kontaktpersonas</string>
   <string name="call_log_all_empty">Jūsu zvanu vēsturē nav ierakstu.</string>
   <string name="call_log_all_empty_action">Zvanīt</string>
   <string name="call_log_missed_empty">Jums nav neatbildētu zvanu.</string>
@@ -73,23 +66,13 @@
   <string name="call_log_activity_title">Zvanu vēsture</string>
   <string name="call_log_all_title">Visi</string>
   <string name="call_log_missed_title">Neatb.</string>
-  <string name="tab_speed_dial">Ātrie zvani</string>
-  <string name="tab_history">Zvanu vēsture</string>
   <string name="tab_all_contacts">Kontaktpersonas</string>
-  <string name="tab_voicemail">Balss pasts</string>
-  <string name="search_shortcut_call_number">Zvanīt: %s</string>
   <string name="search_shortcut_create_new_contact">Izveidot jaunu kontaktpersonu</string>
   <string name="search_shortcut_add_to_contact">Pievienot kontaktpersonai</string>
   <string name="search_shortcut_send_sms_message">Sūtīt īsziņu</string>
   <string name="search_shortcut_make_video_call">Veikt videozvanu</string>
-  <string name="search_shortcut_block_number">Bloķēt numuru</string>
-  <string name="speed_dial_empty">Ātro zvanu sarakstā vēl nav nevienas kontaktpersonas.</string>
-  <string name="speed_dial_empty_add_favorite_action">Pievienot izlasei</string>
-  <string name="remove_contact">Noņemt</string>
   <string name="select_all">Atlasīt visu</string>
   <string name="call_log_action_video_call">Videozvans</string>
-  <string name="call_log_action_set_up_video">Iestatīt videozvanu</string>
-  <string name="call_log_action_invite_video">Uzaicināt uz videozvanu</string>
   <string name="call_log_action_send_message">Sūtīt ziņojumu</string>
   <string name="call_log_action_details">Informācija par zvanu</string>
   <string name="call_log_action_share_voicemail">Nosūtīt uz…</string>
@@ -128,23 +111,8 @@
   <string name="call_settings_label">Zvani</string>
   <string name="manage_blocked_numbers_label">Bloķētie numuri</string>
   <string name="voicemail_settings_label">Balss pasts</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Zvanu bloķēšana ir īslaicīgi izslēgta</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Zvanu bloķēšana ir atspējota, jo pēdējo 48 stundu laikā jūs sazinājāties ar ārkārtas palīdzības dienestiem, izmantojot šo tālruni. Zvanu bloķēšana tiks automātiski iespējota, tiklīdz beigsies 48 stundu periods.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importēt numurus</string>
-  <string name="blocked_call_settings_import_description">Jūs iepriekš atzīmējāt dažus zvanītājus, kuri automātiski jānovirza uz balss pastu, izmantojot citas lietotnes.</string>
-  <string name="blocked_call_settings_view_numbers_button">Skatīt numurus</string>
-  <string name="blocked_call_settings_import_button">Importēt</string>
-  <string name="description_blocked_number_list_delete">Atbloķēt numuru</string>
-  <string name="addBlockedNumber">Pievienot numuru</string>
-  <string name="block_number_footer_message_vvm">No šiem numuriem saņemtie zvani tiks bloķēti, un balss pasta ziņojumi tiks automātiski dzēsti.</string>
-  <string name="block_number_footer_message_no_vvm">No šiem numuriem saņemtie zvani tiks bloķēti, taču zvanītāji joprojām varēs jums atstāt balss pasta ziņojumus.</string>
-  <string name="block_list">Bloķētie numuri</string>
-  <string name="alreadyBlocked">%1$s jau ir bloķēts.</string>
   <string name="phone_account_settings_label">Zvanu konti</string>
-  <string name="permission_no_speeddial">Lai iespējotu ātros zvanus, ieslēdziet atļauju Kontaktpersonas.</string>
   <string name="permission_no_calllog">Lai skatītu zvanu žurnālu, ieslēdziet atļauju Tālrunis.</string>
-  <string name="permission_no_search">Lai meklētu savas kontaktpersonas, ieslēdziet atļauju Kontaktpersonas.</string>
-  <string name="permission_place_call">Lai veiktu zvanu, ieslēdziet atļauju Tālrunis.</string>
   <string name="toast_cannot_write_system_settings">Tālruņa lietotnei nav atļaujas rakstīt sistēmas iestatījumos.</string>
   <string name="blocked_number_call_log_label">Bloķēts</string>
   <string name="call_log_action_block_report_number">Bloķēt numuru/ziņot par to</string>
@@ -152,22 +120,4 @@
   <string name="call_log_action_remove_spam">Nav nevēlams numurs</string>
   <string name="call_log_action_unblock_number">Atbloķēt numuru</string>
   <string name="spam_number_call_log_label">Nevēlami zvani</string>
-  <string name="call_composer_connection_failed">Lietotājs %1$s ir bezsaistē un nav sasniedzams</string>
-  <string name="about_phone_label">Par</string>
-  <string name="voicemail_transcription_branding_text">Transkribēja: Google</string>
-  <string name="voicemail_transcription_in_progress">Notiek transkribēšana…</string>
-  <string name="voicemail_transcription_failed">Transkripcija nav pieejama.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkripcija nav pieejama. Valoda netiek atbalstīta.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkripcija nav pieejama. Runa nav konstatēta.</string>
-  <string name="voicemail_donation_promo_title">Palīdziet uzlabot transkripcijas precizitāti!</string>
-  <string name="voicemail_donation_promo_content">Ļaujiet Google pārskatīt šo un turpmākos balss pasta ziņojumus ar transkripciju. Tie tiks glabāti anonīmi. Mainiet iestatījumus jebkurā laikā. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Jā, piekrītu</string>
-  <string name="voicemail_donation_promo_opt_out">Nē, paldies</string>
-  <string name="voicemail_transcription_rating">Transkripcijas kvalitāte</string>
-  <string name="voicemail_transcription_rating_thanks">Paldies par atsauksmēm!</string>
-  <string name="description_rating_good">Patīk</string>
-  <string name="description_rating_bad">Nepatīk</string>
-  <string name="view_conversation">Skatīt</string>
-  <string name="ec_data_deleted">Zvans izdzēsts. Skatiet un dzēsiet pielikumus, kas kopīgoti šī zvana laikā, izmantojot lietotni Ziņojumi.</string>
-  <string name="multiple_ec_data_deleted">Zvani izdzēsti. Skatiet un dzēsiet pielikumus, kas kopīgoti šo zvanu laikā, izmantojot lietotni Ziņojumi.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-mk/strings.xml b/java/com/android/dialer/app/res/values-mk/strings.xml
index 6b8544a..1083336 100644
--- a/java/com/android/dialer/app/res/values-mk/strings.xml
+++ b/java/com/android/dialer/app/res/values-mk/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Телефон</string>
-  <string name="launcherDialpadActivityLabel">Тастатура за бирање на телефон</string>
   <string name="callHistoryIconLabel">Историја на повици</string>
   <string name="action_copy_number_text">Копирај го бројот</string>
-  <string name="copy_transcript_text">Копирај транскрипција</string>
   <string name="action_edit_number_before_call">Уредете го бројот пред повикот</string>
   <string name="call_log_delete_all">Избришете историја на повици?</string>
   <string name="call_log_trash_voicemail">Избришете ја говорната пошта</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Барајте позиција на репродукција</string>
   <string name="action_menu_call_history_description">Историја на повици</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Повеќе опции</string>
-  <string name="action_menu_dialpad_button">тастатура за бирање</string>
   <string name="dialer_settings_label">Поставки</string>
-  <string name="simulator_submenu_label">Симулатор</string>
-  <string name="new_ui_launcher_shortcut_label">Создај крат. за нов интерфејс</string>
   <string name="description_entering_bulk_action_mode">Влегувате во режим на групно дејство</string>
   <string name="description_leaving_bulk_action_mode">Излеговте од режим на групно дејство</string>
   <string name="description_selecting_bulk_action_mode">Избрано е %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Видеоповик.</string>
   <string name="description_start_voice_search">Започни гласовно пребарување</string>
   <string name="voicemail">Говорна пошта</string>
-  <string name="description_cancel_multi_select">Откажи го режимот на групни дејства</string>
   <string name="voicemailMultiSelectDeleteConfirm">Избриши</string>
   <string name="voicemailMultiSelectDeleteCancel">Откажи</string>
   <string name="voicemailMultiSelectActionBarTitle">Избрани се %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Гласовното пребарување не е достапно</string>
   <string name="dialer_hint_find_contact">Пребарај контакти</string>
-  <string name="block_number_search_hint">Додајте број или побарајте контакти</string>
   <string name="call_log_all_empty">Историјата на повици е празна</string>
   <string name="call_log_all_empty_action">Повикај</string>
   <string name="call_log_missed_empty">Немате пропуштени повици.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Историја на повици</string>
   <string name="call_log_all_title">Сите</string>
   <string name="call_log_missed_title">Пропуштени</string>
-  <string name="tab_speed_dial">Брзо бирање</string>
-  <string name="tab_history">Историја на повици</string>
   <string name="tab_all_contacts">Контакти</string>
-  <string name="tab_voicemail">Говорна пошта</string>
-  <string name="search_shortcut_call_number">Повикај %s</string>
   <string name="search_shortcut_create_new_contact">Создај нов контакт</string>
   <string name="search_shortcut_add_to_contact">Додај на контакт</string>
   <string name="search_shortcut_send_sms_message">Испрати SMS</string>
   <string name="search_shortcut_make_video_call">Остварете видеоповик</string>
-  <string name="search_shortcut_block_number">Блокирај го бројот</string>
-  <string name="speed_dial_empty">Сè уште немате никого на брзо бирање</string>
-  <string name="speed_dial_empty_add_favorite_action">Додај омилено</string>
-  <string name="remove_contact">Отстрани</string>
   <string name="select_all">Изберете ги сите</string>
   <string name="call_log_action_video_call">Видеоповик</string>
-  <string name="call_log_action_set_up_video">Поставете видеоповикување</string>
-  <string name="call_log_action_invite_video">Испратете покана за видеоповик</string>
   <string name="call_log_action_send_message">Испрати порака</string>
   <string name="call_log_action_details">Детали на повик</string>
   <string name="call_log_action_share_voicemail">Испрати на…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Повици</string>
   <string name="manage_blocked_numbers_label">Блокирани броеви</string>
   <string name="voicemail_settings_label">Говорна пошта</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Блокирањето повик е привремено исклучено</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Блокирањето повици е исклучено бидејќи ја контактиравте службата за итни случаи од телефонов во изминатите 48 часа. Повторно ќе се овозможи автоматски откако ќе истече периодот од 48 часа.</string>
-  <string name="import_send_to_voicemail_numbers_label">Увези броеви</string>
-  <string name="blocked_call_settings_import_description">Претходно означивте некои повикувачи да се испратат автоматски на говорната пошта преку други апликации.</string>
-  <string name="blocked_call_settings_view_numbers_button">Прикажи броеви</string>
-  <string name="blocked_call_settings_import_button">Увези</string>
-  <string name="description_blocked_number_list_delete">Одблокирај го бројот</string>
-  <string name="addBlockedNumber">Додај број</string>
-  <string name="block_number_footer_message_vvm">Повиците од овие броеви ќе се блокираат, а говорната пошта автоматски ќе се брише.</string>
-  <string name="block_number_footer_message_no_vvm">Повиците од овие броеви ќе се блокираат, но можно е сѐ уште да може да ви оставаат говорна пошта.</string>
-  <string name="block_list">Блокирани броеви</string>
-  <string name="alreadyBlocked">%1$s веќе е блокиран.</string>
   <string name="phone_account_settings_label">Сметки за повикување</string>
-  <string name="permission_no_speeddial">За да овозможите брзо бирање, вклучете ја дозволата за контакти.</string>
   <string name="permission_no_calllog">За да ја видите евиденцијата на повици, вклучете ја дозволата за телефон.</string>
-  <string name="permission_no_search">За да ги пребарувате контактите, вклучете ги дозволите за контакти.</string>
-  <string name="permission_place_call">За да воспоставите повик, вклучете ја дозволата за телефон.</string>
   <string name="toast_cannot_write_system_settings">Апликацијата на телефонот нема дозвола да пишува во поставките на системот.</string>
   <string name="blocked_number_call_log_label">Блокирано</string>
   <string name="call_log_action_block_report_number">Блокирај/пријави спам</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Не е спам</string>
   <string name="call_log_action_unblock_number">Одблокирај го бројот</string>
   <string name="spam_number_call_log_label">Спам</string>
-  <string name="call_composer_connection_failed">Контактот %1$s е офлајн и недостапен</string>
-  <string name="about_phone_label">За</string>
-  <string name="voicemail_transcription_branding_text">Транскрибирано од Google</string>
-  <string name="voicemail_transcription_in_progress">Се транскрибира…</string>
-  <string name="voicemail_transcription_failed">Не е достапна транскрипција.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Не е достапна транскрипција. Јазикот не е поддржан.</string>
-  <string name="voicemail_transcription_failed_no_speech">Не е достапна транскрипција. Нема откриен говор.</string>
-  <string name="voicemail_donation_promo_title">Ќе помогнете да се зголеми прецизноста на транскрипцијата?</string>
-  <string name="voicemail_donation_promo_content">Дозволете Google да ги прегледува оваа и идните пораки од говорната пошта со преписи. Ќе се складираат анонимно. Променете во „Поставки“ во секое време. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Да, прифаќам</string>
-  <string name="voicemail_donation_promo_opt_out">Не, фала</string>
-  <string name="voicemail_transcription_rating">Оценете го квалит. на преписот</string>
-  <string name="voicemail_transcription_rating_thanks">Ви благодариме за повратните информации</string>
-  <string name="description_rating_good">Ми се допаѓа</string>
-  <string name="description_rating_bad">Не ми се допаѓа</string>
-  <string name="view_conversation">Прикажи</string>
-  <string name="ec_data_deleted">Повикот е избришан. За преглед и бришење на прилозите споделени во текот на разговоров, одете во „Пораки“.</string>
-  <string name="multiple_ec_data_deleted">Повиците се избришани. За преглед и бришење на прилозите споделени во текот на разговорите, одете во „Пораки“.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ml/strings.xml b/java/com/android/dialer/app/res/values-ml/strings.xml
index d6fbb5b..1027b38 100644
--- a/java/com/android/dialer/app/res/values-ml/strings.xml
+++ b/java/com/android/dialer/app/res/values-ml/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ഫോണ്‍</string>
-  <string name="launcherDialpadActivityLabel">ഫോൺ കീപാഡ്</string>
   <string name="callHistoryIconLabel">കോള്‍‌ ചരിത്രം</string>
   <string name="action_copy_number_text">നമ്പർ പകർത്തുക</string>
-  <string name="copy_transcript_text">ട്രാൻസ്ക്രിപ്ഷൻ പകർത്തുക</string>
   <string name="action_edit_number_before_call">കോൾ ചെയ്യുംമുമ്പ് നമ്പർ എഡിറ്റുചെയ്യൂ</string>
   <string name="call_log_delete_all">കോൾ ചരിത്രം മായ്‌ക്കുക</string>
   <string name="call_log_trash_voicemail">വോയ്‌സ്മെയിൽ ഇല്ലാതാക്കുക</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">പ്ലേബാക്ക് സ്ഥാനം തിരയുക</string>
   <string name="action_menu_call_history_description">കോള്‍‌ ചരിത്രം</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">കൂടുതൽ‍ ഓപ്‌ഷനുകള്‍</string>
-  <string name="action_menu_dialpad_button">കീപാഡ്</string>
   <string name="dialer_settings_label">ക്രമീകരണം</string>
-  <string name="simulator_submenu_label">സിമുലേറ്റർ</string>
-  <string name="new_ui_launcher_shortcut_label">പുതിയ UI കുറുക്കുവഴി സൃഷ്‌ടിക്കുക</string>
   <string name="description_entering_bulk_action_mode">ബൾക്ക് പ്രവർത്തന മോഡിലേക്ക് പ്രവേശിക്കുന്നു</string>
   <string name="description_leaving_bulk_action_mode">ബൾക്ക് പ്രവർത്തന മോഡ് വിട്ടു</string>
   <string name="description_selecting_bulk_action_mode">%1$s തിരഞ്ഞെടുത്തു</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">വീഡിയോ കോൾ.</string>
   <string name="description_start_voice_search">ശബ്ദ തിരയൽ ആരംഭിക്കുക</string>
   <string name="voicemail">വോയ്‌സ്‌മെയിൽ</string>
-  <string name="description_cancel_multi_select">\'ബാച്ച് പ്രവർത്തനങ്ങൾ\' മോഡ് റദ്ദാക്കുക</string>
   <string name="voicemailMultiSelectDeleteConfirm">ഇല്ലാതാക്കുക</string>
   <string name="voicemailMultiSelectDeleteCancel">റദ്ദാക്കൂ</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s എണ്ണം തിരഞ്ഞെടുത്തു</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">വോയ്‌സ് തിരയൽ ലഭ്യമല്ല</string>
   <string name="dialer_hint_find_contact">കോണ്‍‌ടാക്റ്റുകള്‍ തിരയുക</string>
-  <string name="block_number_search_hint">നമ്പർ ചേർക്കുക അല്ലെങ്കിൽ കോൺടാക്റ്റുകൾ തിരയുക</string>
   <string name="call_log_all_empty">നിങ്ങളുടെ കോൾ ചരിത്രം ശൂന്യമാണ്</string>
   <string name="call_log_all_empty_action">ഒരു കോൾ ചെയ്യുക</string>
   <string name="call_log_missed_empty">നിങ്ങൾക്ക് മിസ്‌ഡ് കോളുകളൊന്നുമില്ല.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">കോള്‍‌ ചരിത്രം</string>
   <string name="call_log_all_title">എല്ലാം</string>
   <string name="call_log_missed_title">മിസ്‌ഡ്</string>
-  <string name="tab_speed_dial">സ്‌പീഡ് ഡയൽ</string>
-  <string name="tab_history">കോൾ ചരിത്രം</string>
   <string name="tab_all_contacts">കോണ്‍ടാക്റ്റുകള്‍</string>
-  <string name="tab_voicemail">വോയ്‌സ്‌മെയിൽ</string>
-  <string name="search_shortcut_call_number">വിളിക്കുക %s</string>
   <string name="search_shortcut_create_new_contact">പുതിയകോൺടാക്റ്റ് സൃഷ്‌ടിക്കൂ</string>
   <string name="search_shortcut_add_to_contact">ഒരുകോൺടാക്റ്റിൽ ചേർക്കൂ</string>
   <string name="search_shortcut_send_sms_message">SMS അയയ്ക്കുക</string>
   <string name="search_shortcut_make_video_call">വീഡിയോ കോൾ ചെയ്യുക</string>
-  <string name="search_shortcut_block_number">നമ്പർ ബ്ലോക്കുചെയ്യുക</string>
-  <string name="speed_dial_empty">ഇതുവരെ ആരും നിങ്ങളുടെ സ്പീഡ് ഡയലിൽ ഇല്ല</string>
-  <string name="speed_dial_empty_add_favorite_action">പ്രിയപ്പെട്ടത് ചേർക്കുക</string>
-  <string name="remove_contact">നീക്കംചെയ്യുക</string>
   <string name="select_all">എല്ലാം തിരഞ്ഞെടുക്കുക</string>
   <string name="call_log_action_video_call">വീഡിയോ കോള്‍</string>
-  <string name="call_log_action_set_up_video">വീഡിയോ കോളിംഗ് സജ്ജമാക്കുക</string>
-  <string name="call_log_action_invite_video">വീഡിയോ കോളിലേക്ക് ക്ഷണിക്കുക</string>
   <string name="call_log_action_send_message">ഒരു സന്ദേശം അയയ്‌ക്കുക</string>
   <string name="call_log_action_details">കോൾ വിശദാംശങ്ങൾ</string>
   <string name="call_log_action_share_voicemail">ഇതിലേക്ക് അയയ്‌ക്കുക ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">കോളുകൾ</string>
   <string name="manage_blocked_numbers_label">ബ്ലോക്ക് ചെയ്‌ത നമ്പറുകൾ</string>
   <string name="voicemail_settings_label">വോയ്സ് മെയില്‍</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">കോൾ ബ്ലോക്കുചെയ്യൽ താൽക്കാലികമായി ഓഫാണ്</string>
-  <string name="blocked_numbers_disabled_emergency_desc">കഴിഞ്ഞ 48 മണിക്കൂറിനുള്ളിൽ നിങ്ങൾ ഈ ഫോണിൽ നിന്ന് അടിയന്തിര സേവനങ്ങളുമായി ബന്ധപ്പെട്ടതിനാൽ കോൾ ബ്ലോക്കുചെയ്യൽ പ്രവർത്തനരഹിതമാക്കി. 48 മണിക്കൂർ സമയപരിധി കഴിഞ്ഞയുടൻ ഇത് സ്വയമേവ പ്രവർത്തനക്ഷമമാക്കപ്പെടും.</string>
-  <string name="import_send_to_voicemail_numbers_label">നമ്പറുകൾ ഇമ്പോർട്ടുചെയ്യുക</string>
-  <string name="blocked_call_settings_import_description">മറ്റ് ആപ്സ് വഴി വോയ്സ്‌മെയിൽ സ്വയമേവ അയയ്ക്കുന്നതിന് കോൾ ചെയ്യുന്നവരിൽ ചിലരെ നിങ്ങൾ മുമ്പ് അടയാളപ്പെടുത്തി.</string>
-  <string name="blocked_call_settings_view_numbers_button">നമ്പറുകൾ കാണുക</string>
-  <string name="blocked_call_settings_import_button">ഇമ്പോർട്ടുചെയ്യുക</string>
-  <string name="description_blocked_number_list_delete">നമ്പർ അൺബ്ലോക്കുചെയ്യുക</string>
-  <string name="addBlockedNumber">നമ്പർ ചേർക്കുക</string>
-  <string name="block_number_footer_message_vvm">ഈ നമ്പറുകളിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്കുചെയ്യും, വോയ്സ്മെയിലുകളെ സ്വയമേവ ഇല്ലാതാക്കും.</string>
-  <string name="block_number_footer_message_no_vvm">ഈ നമ്പറുകളിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്കുചെയ്യും, എന്നാൽ വിളിക്കുന്നവർക്ക് അപ്പോഴും നിങ്ങൾക്ക് വോയ്സ്‌മെയിലുകൾ അയയ്ക്കാൻ കഴിഞ്ഞേക്കാം.</string>
-  <string name="block_list">ബ്ലോക്കുചെയ്ത നമ്പറുകൾ</string>
-  <string name="alreadyBlocked">ഇതിനകം തന്നെ %1$s ബ്ലോക്കുചെയ്തിരിക്കുന്നു</string>
   <string name="phone_account_settings_label">കോളിംഗ് അക്കൗണ്ട്</string>
-  <string name="permission_no_speeddial">സ്പീഡ് ഡയൽ പ്രവർത്തനക്ഷമാക്കുന്നതിന്, \'കോൺടാക്റ്റുകൾ\' അനുമതി ഓണാക്കുക.</string>
   <string name="permission_no_calllog">നിങ്ങളുടെ കോൾ ലോഗ് കാണുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക.</string>
-  <string name="permission_no_search">നിങ്ങളുടെ കോൺടാക്റ്റുകൾ തിരയുന്നതിന് കോൺടാക്റ്റുകൾക്കുള്ള അനുമതികൾ ഓണാക്കുക.</string>
-  <string name="permission_place_call">കോൾ വിളിക്കുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക.</string>
   <string name="toast_cannot_write_system_settings">സിസ്റ്റം ക്രമീകരണത്തിലേക്ക് എഴുതാൻ ഫോൺ ആപ്പിന് അനുമതിയില്ല.</string>
   <string name="blocked_number_call_log_label">തടഞ്ഞിരിക്കുന്നു</string>
   <string name="call_log_action_block_report_number">ബ്ലോക്കുചെയ്യുക/സ്പാമാണെന്ന് റിപ്പോർട്ടുചെയ്യുക</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">സ്പാം അല്ല</string>
   <string name="call_log_action_unblock_number">നമ്പർ അൺബ്ലോക്കുചെയ്യുക</string>
   <string name="spam_number_call_log_label">സ്‌പാം</string>
-  <string name="call_composer_connection_failed">%1$s ഓഫ്‌ലൈനായതിനാൽ കോൾ ചെയ്യാനാവില്ല</string>
-  <string name="about_phone_label">ആമുഖം</string>
-  <string name="voicemail_transcription_branding_text">Google ട്രാൻസ്‌ക്രൈബ് ചെയ്‌തത്</string>
-  <string name="voicemail_transcription_in_progress">കേട്ടെഴുതുന്നു...</string>
-  <string name="voicemail_transcription_failed">ട്രാൻസ്‌ക്രിപ്‌റ്റ് ലഭ്യമല്ല.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">ട്രാൻസ്‌ക്രിപ്‌റ്റ് ലഭ്യമല്ല. ഭാഷ പിന്തുണയ്‌ക്കുന്നില്ല.</string>
-  <string name="voicemail_transcription_failed_no_speech">ട്രാൻസ്‌ക്രിപ്‌റ്റ് ലഭ്യമല്ല. സംഭാഷണമൊന്നും കണ്ടെത്തിയില്ല.</string>
-  <string name="voicemail_donation_promo_title">ട്രാൻസ്‌ക്രിപ്ഷൻ കൃത്യത മെച്ചപ്പെടുത്താൻ സഹായിക്കണോ?</string>
-  <string name="voicemail_donation_promo_content">ട്രാൻസ്‌ക്രിപ്‌റ്റുകൾ ഉപയോഗിച്ച് ഇതും ഭാവി വോയ്‌സ്‌മെയിൽ സന്ദേശങ്ങളും അവലോകനം ചെയ്യാൻ Google-നെ അനുവദിക്കുക. അവ അജ്ഞാതമായാണ് സംഭരിക്കുക. ഏത് സമയത്തും ക്രമീകരണം മാറ്റാം. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">ഞാൻ തയ്യാറാണ്</string>
-  <string name="voicemail_donation_promo_opt_out">വേണ്ട</string>
-  <string name="voicemail_transcription_rating">ട്രാൻസ്‌ക്രിപ്ഷൻ റേറ്റ് ചെയ്യൂ</string>
-  <string name="voicemail_transcription_rating_thanks">നിങ്ങളുടെ ഫീഡ്‌ബാക്കിന് നന്ദി</string>
-  <string name="description_rating_good">ലൈക്ക് ചെയ്യുക</string>
-  <string name="description_rating_bad">ഡിസ്‌ലൈക്ക് ചെയ്യുക</string>
-  <string name="view_conversation">കാണുക</string>
-  <string name="ec_data_deleted">കോൾ ഇല്ലാതാക്കി. ഈ കോൾ ചെയ്യുമ്പോൾ പങ്കിട്ട അറ്റാച്ച്‌മെന്റുകൾ മെസേജിൽ കാണുകയും ഇല്ലാതാക്കുകയും ചെയ്യുക.</string>
-  <string name="multiple_ec_data_deleted">കോളുകൾ ഇല്ലാതാക്കി. ഈ കോളുകൾ ചെയ്യുമ്പോൾ പങ്കിട്ട അറ്റാച്ച്‌മെന്റുകൾ മെസേജിൽ കാണുകയും ഇല്ലാതാക്കുകയും ചെയ്യുക.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-mn/strings.xml b/java/com/android/dialer/app/res/values-mn/strings.xml
index b879349..54266d4 100644
--- a/java/com/android/dialer/app/res/values-mn/strings.xml
+++ b/java/com/android/dialer/app/res/values-mn/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Гар утас</string>
-  <string name="launcherDialpadActivityLabel">Утасны товчлуур</string>
   <string name="callHistoryIconLabel">Дуудлагын түүх</string>
   <string name="action_copy_number_text">Дугаар хуулах</string>
-  <string name="copy_transcript_text">Галиглалыг хуулах</string>
   <string name="action_edit_number_before_call">Залгахын өмнө дугаар засах</string>
   <string name="call_log_delete_all">Дуудлагын түүхийг устгах уу?</string>
   <string name="call_log_trash_voicemail">Дуут шууданг устгах</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Тоглуулах байрлалыг хайх</string>
   <string name="action_menu_call_history_description">Дуудлагын түүх</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Нэмэлт сонголтууд</string>
-  <string name="action_menu_dialpad_button">Товчлуур</string>
   <string name="dialer_settings_label">Тохиргоо</string>
-  <string name="simulator_submenu_label">Симулятор</string>
-  <string name="new_ui_launcher_shortcut_label">Шинэ UI үүсгэх товчлол</string>
   <string name="description_entering_bulk_action_mode">Багц үйлдлийн горимд орж байна</string>
   <string name="description_leaving_bulk_action_mode">Багц үйлдлийн горимоос гарсан</string>
   <string name="description_selecting_bulk_action_mode">%1$s сонгосон</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Видео дуудлага.</string>
   <string name="description_start_voice_search">Дуун хайлтыг эхлүүлэх</string>
   <string name="voicemail">Дуут шуудан</string>
-  <string name="description_cancel_multi_select">Багц үйлдлийн горимыг цуцлах</string>
   <string name="voicemailMultiSelectDeleteConfirm">Устгах</string>
   <string name="voicemailMultiSelectDeleteCancel">Цуцлах</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s сонгосон</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Дуут хайлт хийх боломжгүй байна</string>
   <string name="dialer_hint_find_contact">Харилцагчдаас хайх</string>
-  <string name="block_number_search_hint">Дугаар нэмэх болон харилцагч хайх</string>
   <string name="call_log_all_empty">Таны дуудлагын түүх хоосон байна</string>
   <string name="call_log_all_empty_action">Дуудлага хийх</string>
   <string name="call_log_missed_empty">Танд аваагүй дуудлага байхгүй байна.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Дуудлагын түүх</string>
   <string name="call_log_all_title">Бүгд</string>
   <string name="call_log_missed_title">Аваагүй</string>
-  <string name="tab_speed_dial">Түргэн залгалт</string>
-  <string name="tab_history">Дуудлагын түүх</string>
   <string name="tab_all_contacts">Харилцагчид</string>
-  <string name="tab_voicemail">Дуут шуудан</string>
-  <string name="search_shortcut_call_number">%s руу залгах</string>
   <string name="search_shortcut_create_new_contact">Шинэ хаяг үүсгэх</string>
   <string name="search_shortcut_add_to_contact">Харилцагчийн хаягт нэмэх</string>
   <string name="search_shortcut_send_sms_message">Мессеж илгээх</string>
   <string name="search_shortcut_make_video_call">Видео дуудлага хийх</string>
-  <string name="search_shortcut_block_number">Дугаар блоклох</string>
-  <string name="speed_dial_empty">Таны яаралтай залгах тохиргоон дээр одоогоор харилцагч байхгүй байна</string>
-  <string name="speed_dial_empty_add_favorite_action">Таалагдсан хэсэгт нэмэх</string>
-  <string name="remove_contact">Хасах</string>
   <string name="select_all">Бүгдийг сонгох</string>
   <string name="call_log_action_video_call">Видео дуудлага</string>
-  <string name="call_log_action_set_up_video">Видео дуудлагад бэлтгэх</string>
-  <string name="call_log_action_invite_video">Видео дуудлагад урих</string>
   <string name="call_log_action_send_message">Зурвас илгээх</string>
   <string name="call_log_action_details">Дуудлагын мэдээлэл</string>
   <string name="call_log_action_share_voicemail">Илгээх ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Дуудлага</string>
   <string name="manage_blocked_numbers_label">Хориглосон дугаар</string>
   <string name="voicemail_settings_label">Дуут шуудан</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Дуудлага блоклох тохиргоог түр хугацаагаар унтраасан</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Та сүүлийн 48 цагийн дотор энэ утсаар тусламжийн дуудлага хийсэн тул дуудлага блоклох тохиргоог идэвхгүй болгосон. Энэ тохиргоо нь 48 цагийн хугацаа дуусахад автоматаар идэвхэжнэ.</string>
-  <string name="import_send_to_voicemail_numbers_label">Импортын тоо</string>
-  <string name="blocked_call_settings_import_description">Тань руу залгасан зарим хүмүүсийг бусад апп ашиглан автоматаар дуут шуудан илгээж байхаар өмнө нь тэмдэглэсэн.</string>
-  <string name="blocked_call_settings_view_numbers_button">Дугаар харах</string>
-  <string name="blocked_call_settings_import_button">Импортлох</string>
-  <string name="description_blocked_number_list_delete">Дугаар блокноос гаргах</string>
-  <string name="addBlockedNumber">Дугаар нэмэх</string>
-  <string name="block_number_footer_message_vvm">Эдгээр дугаараас ирэх дуудлагыг блоклож, дуут шууданг автоматаар устгана.</string>
-  <string name="block_number_footer_message_no_vvm">Эдгээр дугаараас ирэх дуудлагыг блоклож, харин танд дуут шуудан илгээх боломжтой.</string>
-  <string name="block_list">Блоклосон дугаар</string>
-  <string name="alreadyBlocked">%1$s-г аль хэдийн блоклосон байна.</string>
   <string name="phone_account_settings_label">Дуудах бүртгэл</string>
-  <string name="permission_no_speeddial">Яаралтай дуудлагыг идэвхжүүлэхийн тулд Харилцагчдын зөвшөөрлийг идэвхжүүлнэ үү.</string>
   <string name="permission_no_calllog">Дуудлагын жагсаалтыг харахын тулд утасны зөвшөөрлийг идэвхжүүлнэ үү.</string>
-  <string name="permission_no_search">Харилцагчаа хайхын тулд, Харилцагчийн жагсаалтын зөвшөөрлийг идэвхжүүлнэ үү.</string>
-  <string name="permission_place_call">Залгахын тулд Утасны зөвшөөрлийг идэвхжүүлнэ үү.</string>
   <string name="toast_cannot_write_system_settings">Гар утасны апп-д системийн тохиргоо бичих зөвшөөрөл алга.</string>
   <string name="blocked_number_call_log_label">Хориглогдсон</string>
   <string name="call_log_action_block_report_number">Спам гэж мэдээлэх/хориглох</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Спам биш</string>
   <string name="call_log_action_unblock_number">Дугаар блокноос гаргах</string>
   <string name="spam_number_call_log_label">Спам</string>
-  <string name="call_composer_connection_failed">%1$s офлайн, холбогдох боломжгүй байна</string>
-  <string name="about_phone_label">Тухай</string>
-  <string name="voicemail_transcription_branding_text">Google-с сийрүүлсэн</string>
-  <string name="voicemail_transcription_in_progress">Сийрүүлж байна...</string>
-  <string name="voicemail_transcription_failed">Сийрүүлэг ашиглах боломжгүй.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Сийрүүлэг ашиглах боломжгүй. Тухайн хэл дэмжигдээгүй.</string>
-  <string name="voicemail_transcription_failed_no_speech">Сийрүүлэг ашиглах боломжгүй. Яриа танигдаагүй.</string>
-  <string name="voicemail_donation_promo_title">Сийрүүлгийн нарийвчлалыг сайжруулахад туслах уу?</string>
-  <string name="voicemail_donation_promo_content">Google-д энэ болон цаашдын дуут шуудангийн зурвасуудыг сийрүүлгээр хянах боломж олгох. Тэдгээрийг нэр заахгүй хадгалах болно. Дуртай үедээ Тохиргоог өөрчлөх боломжтой. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Тийм, би зөвшөөрч байна</string>
-  <string name="voicemail_donation_promo_opt_out">Үгүй</string>
-  <string name="voicemail_transcription_rating">Сийрүүлгийн чанарыг үнэлэх</string>
-  <string name="voicemail_transcription_rating_thanks">Санал хүсэлт ирүүлсэнд баярлалаа</string>
-  <string name="description_rating_good">Таалагдсан</string>
-  <string name="description_rating_bad">Таалагдаагүй</string>
-  <string name="view_conversation">Үзэх</string>
-  <string name="ec_data_deleted">Дуудлагыг устгасан. Энэ дуудлагын явцад Зурвас дотор хуваалцсан хавсралтуудыг үзэх болон устгах.</string>
-  <string name="multiple_ec_data_deleted">Дуудлагуудыг устгасан. Энэ дуудлагын явцад Зурвас дотор хуваалцсан хавсралтуудыг үзэх болон устгах.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-mr/strings.xml b/java/com/android/dialer/app/res/values-mr/strings.xml
index da2c4fa..517c2c0 100644
--- a/java/com/android/dialer/app/res/values-mr/strings.xml
+++ b/java/com/android/dialer/app/res/values-mr/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">फोन</string>
-  <string name="launcherDialpadActivityLabel">फोन कीपॅड</string>
   <string name="callHistoryIconLabel">कॉल इतिहास</string>
   <string name="action_copy_number_text">नंबर कॉपी करा</string>
-  <string name="copy_transcript_text">प्रतिलेखन कॉपी करा</string>
   <string name="action_edit_number_before_call">कॉल करण्यापूर्वी नंबर संपादित करा</string>
   <string name="call_log_delete_all">कॉल इतिहास साफ करा</string>
   <string name="call_log_trash_voicemail">व्हॉइसमेल हटवा</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">प्लेबॅक स्थान शोधतात</string>
   <string name="action_menu_call_history_description">कॉल इतिहास</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">अधिक पर्याय</string>
-  <string name="action_menu_dialpad_button">की पॅड</string>
   <string name="dialer_settings_label">सेटिंग्ज</string>
-  <string name="simulator_submenu_label">सिम्युलेटर</string>
-  <string name="new_ui_launcher_shortcut_label">नवीन UI शॉर्टकट तयार करा</string>
   <string name="description_entering_bulk_action_mode">मोठ्या प्रमाणात क्रिया मोडमध्ये प्रवेश करत आहे</string>
   <string name="description_leaving_bulk_action_mode">मोठ्या प्रमाणात क्रिया मोड सोडत आहे</string>
   <string name="description_selecting_bulk_action_mode">%1$s निवडले</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">व्हिडिओ कॉल.</string>
   <string name="description_start_voice_search">व्हॉइस शोध प्रारंभ करा</string>
   <string name="voicemail">व्हॉइसमेल</string>
-  <string name="description_cancel_multi_select">बॅच क्रिया मोड रद्द करा</string>
   <string name="voicemailMultiSelectDeleteConfirm">हटवा</string>
   <string name="voicemailMultiSelectDeleteCancel">रद्द करा</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s निवडले</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">व्हॉइस शोध उपलब्ध नाही</string>
   <string name="dialer_hint_find_contact">संपर्क शोधा</string>
-  <string name="block_number_search_hint">नंबर जोडा किंवा संपर्क शोधा</string>
   <string name="call_log_all_empty">आपला कॉल इतिहास रिक्त आहे</string>
   <string name="call_log_all_empty_action">एक कॉल करा</string>
   <string name="call_log_missed_empty">आपल्‍याकडे कोणतेही सुटलेले कॉल नाहीत.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">कॉल इतिहास</string>
   <string name="call_log_all_title">सर्व</string>
   <string name="call_log_missed_title">सुटलेले</string>
-  <string name="tab_speed_dial">स्पीड डायल</string>
-  <string name="tab_history">कॉल इतिहास</string>
   <string name="tab_all_contacts">संपर्क</string>
-  <string name="tab_voicemail">व्हॉइसमेल</string>
-  <string name="search_shortcut_call_number">%s ला कॉल  करा</string>
   <string name="search_shortcut_create_new_contact">नवीन संपर्क तयार करा</string>
   <string name="search_shortcut_add_to_contact">संपर्कांमध्‍ये जोडा</string>
   <string name="search_shortcut_send_sms_message">SMS पाठवा</string>
   <string name="search_shortcut_make_video_call">व्‍हिडिओ कॉल करा</string>
-  <string name="search_shortcut_block_number">नंबर अवरोधित करा</string>
-  <string name="speed_dial_empty">अद्याप आपल्‍या स्पीड डायलवर कोणीही नाही</string>
-  <string name="speed_dial_empty_add_favorite_action">एक आवडते जोडा</string>
-  <string name="remove_contact">काढा</string>
   <string name="select_all">सर्व निवडा</string>
   <string name="call_log_action_video_call">व्हिडिओ कॉल</string>
-  <string name="call_log_action_set_up_video">व्हिडिओ कॉल करणे सेट करा</string>
-  <string name="call_log_action_invite_video">व्हिडिओ कॉलसाठी आमंत्रित करा</string>
   <string name="call_log_action_send_message">एक मेसेज पाठवा</string>
   <string name="call_log_action_details">कॉल तपशील</string>
   <string name="call_log_action_share_voicemail">यांना पाठवा ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">कॉल</string>
   <string name="manage_blocked_numbers_label">ब्लॉक केलेले नंबर</string>
   <string name="voicemail_settings_label">व्हॉइसमेल</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">कॉल अवरोधित करणे तात्पुरते बंद</string>
-  <string name="blocked_numbers_disabled_emergency_desc">आपण मागील 48 तासात या फोनवरून आणीबाणी सेवांशी संपर्क साधला असल्याने कॉल अवरोधित करणे अक्षम केले गेले आहे. एकदा 48 तासांचा कालावधी कालबाह्य झाला की ते स्वयंचलितपणे पुन्हा सक्षम केले जाईल.</string>
-  <string name="import_send_to_voicemail_numbers_label">नंबर अायात करा</string>
-  <string name="blocked_call_settings_import_description">आपण पूर्वीपासून काही कॉलरना स्वयंचलितपणे इतर अॅप्सद्वारे व्हॉइसमेलमध्ये पाठविण्यासाठी चिन्हांकित केले आहे.</string>
-  <string name="blocked_call_settings_view_numbers_button">नंबर पहा</string>
-  <string name="blocked_call_settings_import_button">आयात करा</string>
-  <string name="description_blocked_number_list_delete">नंबर अनावरोधित करा</string>
-  <string name="addBlockedNumber">नंबर जोडा</string>
-  <string name="block_number_footer_message_vvm">या नंबरवरून केलेले कॉल अवरोधित केले जातील आणि व्हॉइसमेल स्वयंचलितपणे हटविले जातील.</string>
-  <string name="block_number_footer_message_no_vvm">या नंबर वरून केलेले कॉल अवरोधित केले जातील परंतु ते आपल्‍यासाठी व्हॉइसमेल सोडण्यात अद्याप कदाचित सक्षम असतील.</string>
-  <string name="block_list">अवरोधित केलेले नंबर</string>
-  <string name="alreadyBlocked">%1$s आधीच अवरोधित केलेला आहे.</string>
   <string name="phone_account_settings_label">कॉल करण्याची खाती</string>
-  <string name="permission_no_speeddial">स्पीड डायल सक्षम करण्‍यासाठी, संपर्क परवानगी चालू करा.</string>
   <string name="permission_no_calllog">आपला कॉल लॉग पाहण्‍यासाठी, फोन परवानगी चालू करा.</string>
-  <string name="permission_no_search">आपले संपर्क शोधण्‍यासाठी, संपर्क परवानग्या चालू करा.</string>
-  <string name="permission_place_call">कॉल करण्यासाठी, फोन परवानगी चालू करा.</string>
   <string name="toast_cannot_write_system_settings">फोन अॅपला सिस्टम स‍ेटिंग्जमध्ये लिहिण्याची परवानगी नाही.</string>
   <string name="blocked_number_call_log_label">अवरोधित केले</string>
   <string name="call_log_action_block_report_number">अवरोधित करा/स्पॅमचा अहवाल द्या</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">स्पॅम नाही</string>
   <string name="call_log_action_unblock_number">नंबर अनावरोधित करा</string>
   <string name="spam_number_call_log_label">स्पॅम</string>
-  <string name="call_composer_connection_failed">%1$s ऑफलाइन आहे आणि त्यांच्याशी संपर्क साधू शकत नाही</string>
-  <string name="about_phone_label">बद्दल</string>
-  <string name="voicemail_transcription_branding_text">Google ने प्रतिलेखन केलेले</string>
-  <string name="voicemail_transcription_in_progress">प्रतिलेखन करणे चालू आहे…</string>
-  <string name="voicemail_transcription_failed">प्रतिलेखन उपलब्ध नाही</string>
-  <string name="voicemail_transcription_failed_language_not_supported">प्रतिलेखन उपलब्ध नाही. भाषा सपोर्ट करत नाही.</string>
-  <string name="voicemail_transcription_failed_no_speech">प्रतिलेखन उपलब्ध नाही. स्‍पीच सापडले नाही.</string>
-  <string name="voicemail_donation_promo_title">प्रतिलेखनाची अचूकता सुधारण्यात मदत करायची आहे का?</string>
-  <string name="voicemail_donation_promo_content">Google ला या आणि भविष्यात येणार्‍या व्हॉइसमेलचे त्यांच्या प्रतिलेखनासह पुनरावलोकन करू द्या. ते अनामिकपणे सेव्ह केले जातील. सेटिंग्ज कधीही बदला. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">होय, मला मान्य आहे</string>
-  <string name="voicemail_donation_promo_opt_out">नाही नको</string>
-  <string name="voicemail_transcription_rating">रेट प्रतिलेख गुणवत्ता</string>
-  <string name="voicemail_transcription_rating_thanks">तुमच्या फीडबॅकबद्दल धन्यवाद</string>
-  <string name="description_rating_good">आवडले</string>
-  <string name="description_rating_bad">आवडली नाही</string>
-  <string name="view_conversation">पहा</string>
-  <string name="ec_data_deleted">कॉल हटवला. या कॉल दरम्यान Messages मध्ये सामायिक केलेली संलग्नके पहा आणि हटवा.</string>
-  <string name="multiple_ec_data_deleted">कॉल हटवला. कॉल दरम्यान Messages मध्ये सामायिक केलेली संलग्नके पहा आणि हटवा.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ms/strings.xml b/java/com/android/dialer/app/res/values-ms/strings.xml
index a501a74..675766a 100644
--- a/java/com/android/dialer/app/res/values-ms/strings.xml
+++ b/java/com/android/dialer/app/res/values-ms/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Pad Kekunci Telefon</string>
   <string name="callHistoryIconLabel">Sejarah panggilan</string>
   <string name="action_copy_number_text">Salin nombor</string>
-  <string name="copy_transcript_text">Salin transkripsi</string>
   <string name="action_edit_number_before_call">Edit nombor sebelum memanggil</string>
   <string name="call_log_delete_all">Kosongkan sejarah panggilan</string>
   <string name="call_log_trash_voicemail">Padamkan mel suara</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Dapatkan kedudukan main balik</string>
   <string name="action_menu_call_history_description">Sejarah panggilan</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Lagi pilihan</string>
-  <string name="action_menu_dialpad_button">pad kekunci</string>
   <string name="dialer_settings_label">Tetapan</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Buat Pintasan UI Baharu</string>
   <string name="description_entering_bulk_action_mode">Memasuki mod tindakan pukal</string>
   <string name="description_leaving_bulk_action_mode">Meninggalkan mod tindakan pukal</string>
   <string name="description_selecting_bulk_action_mode">%1$s dipilih</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Panggilan video.</string>
   <string name="description_start_voice_search">Mulakan carian suara</string>
   <string name="voicemail">Mel suara</string>
-  <string name="description_cancel_multi_select">Batalkan mod tindakan kelompok</string>
   <string name="voicemailMultiSelectDeleteConfirm">Padam</string>
   <string name="voicemailMultiSelectDeleteCancel">Batal</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s dipilih</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Carian suara tidak tersedia</string>
   <string name="dialer_hint_find_contact">Cari dalam kenalan</string>
-  <string name="block_number_search_hint">Tambahkn no. atau cari kenalan</string>
   <string name="call_log_all_empty">Sejarah panggilan anda kosong</string>
   <string name="call_log_all_empty_action">Buat panggilan</string>
   <string name="call_log_missed_empty">Anda tiada panggilan terlepas.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Sejarah Panggilan</string>
   <string name="call_log_all_title">Semua</string>
   <string name="call_log_missed_title">Tidak dijawab</string>
-  <string name="tab_speed_dial">Dail laju</string>
-  <string name="tab_history">Sejarah Panggilan</string>
   <string name="tab_all_contacts">Kenalan</string>
-  <string name="tab_voicemail">Mel suara</string>
-  <string name="search_shortcut_call_number">Panggil %s</string>
   <string name="search_shortcut_create_new_contact">Buat kenalan baharu</string>
   <string name="search_shortcut_add_to_contact">Tambahkan pada kenalan</string>
   <string name="search_shortcut_send_sms_message">Hantar SMS</string>
   <string name="search_shortcut_make_video_call">Buat panggilan video</string>
-  <string name="search_shortcut_block_number">Sekat nombor</string>
-  <string name="speed_dial_empty">Belum ada sesiapa pada dail pantas anda</string>
-  <string name="speed_dial_empty_add_favorite_action">Tambahkan kegemaran</string>
-  <string name="remove_contact">Alih keluar</string>
   <string name="select_all">Pilih semua</string>
   <string name="call_log_action_video_call">Panggilan video</string>
-  <string name="call_log_action_set_up_video">Sediakan panggilan video</string>
-  <string name="call_log_action_invite_video">Jemput ke panggilan video</string>
   <string name="call_log_action_send_message">Hantar mesej</string>
   <string name="call_log_action_details">Butiran panggilan</string>
   <string name="call_log_action_share_voicemail">Hantar ke ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Panggilan</string>
   <string name="manage_blocked_numbers_label">Nombor yang disekat</string>
   <string name="voicemail_settings_label">Mel suara</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Sekatan panggilan dimatikan sementara</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Sekatan panggilan telah dilumpuhkan kerana anda menghubungi perkhidmatan kecemasan daripada telefon ini dalam masa 48 jam yang lalu. Ciri ini akan didayakan semula secara automatik apabila tempoh 48 jam berakhir.</string>
-  <string name="import_send_to_voicemail_numbers_label">Import nombor</string>
-  <string name="blocked_call_settings_import_description">Sebelum ini anda telah menandakan beberapa pemanggil dihantar ke mel suara secara automatik melalui aplikasi lain.</string>
-  <string name="blocked_call_settings_view_numbers_button">Lihat nombor</string>
-  <string name="blocked_call_settings_import_button">Import</string>
-  <string name="description_blocked_number_list_delete">Nyahsekat nombor</string>
-  <string name="addBlockedNumber">Tambah nombor</string>
-  <string name="block_number_footer_message_vvm">Panggilan daripada nombor ini akan disekat dan mel suara akan dipadamkan secara automatik.</string>
-  <string name="block_number_footer_message_no_vvm">Panggilan daripada nombor ini akan disekat, tetapi mereka masih boleh meninggalkan mel suara kepada anda.</string>
-  <string name="block_list">Nombor yang disekat</string>
-  <string name="alreadyBlocked">%1$s sudah disekat.</string>
   <string name="phone_account_settings_label">Akaun panggilan</string>
-  <string name="permission_no_speeddial">Untuk mendayakan dail laju, hidupkan kebenaran Kenalan.</string>
   <string name="permission_no_calllog">Untuk melihat log panggilan anda, hidupkan kebenaran Telefon.</string>
-  <string name="permission_no_search">Untuk mencari kenalan anda, hidupkan kebenaran Kenalan.</string>
-  <string name="permission_place_call">Untuk membuat panggilan, hidupkan kebenaran Telefon.</string>
   <string name="toast_cannot_write_system_settings">Apl telefon tiada kebenaran untuk menulis ke tetapan sistem.</string>
   <string name="blocked_number_call_log_label">Disekat</string>
   <string name="call_log_action_block_report_number">Sekat/laporkan spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Bukan spam</string>
   <string name="call_log_action_unblock_number">Nyahsekat nombor</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s di luar talian dan tidak dapat dihubungi</string>
-  <string name="about_phone_label">Perihal</string>
-  <string name="voicemail_transcription_branding_text">Ditranskripsikan oleh Google</string>
-  <string name="voicemail_transcription_in_progress">Mentranskripsi…</string>
-  <string name="voicemail_transcription_failed">Transkrip tidak tersedia.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkrip tidak tersedia. Bahasa tidak disokong.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkrip tidak tersedia. Pertuturan tidak dikesan.</string>
-  <string name="voicemail_donation_promo_title">Bantu meningkatkan ketepatan transkripsi?</string>
-  <string name="voicemail_donation_promo_content">Benarkan Google menyemak mesej mel suara ini dan masa hadapan dengan transkrip. Mesej mel suara akan disimpan secara awanama. Tukar Tetapan pada bila-bila masa. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Ya, saya setuju</string>
-  <string name="voicemail_donation_promo_opt_out">Tidak perlu</string>
-  <string name="voicemail_transcription_rating">Nilaikan kualiti transkripsi</string>
-  <string name="voicemail_transcription_rating_thanks">Terima kasih</string>
-  <string name="description_rating_good">Suka</string>
-  <string name="description_rating_bad">Tidak suka</string>
-  <string name="view_conversation">Lihat</string>
-  <string name="ec_data_deleted">Panggilan dipadam. Lihat dan padam lampiran yang dikongsi semasa panggilan ini dalam Mesej.</string>
-  <string name="multiple_ec_data_deleted">Panggilan dipadam. Lihat dan padam lampiran yang dikongsi semasa panggilan dalam Mesej.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-my/strings.xml b/java/com/android/dialer/app/res/values-my/strings.xml
index 363138e..35d711d 100644
--- a/java/com/android/dialer/app/res/values-my/strings.xml
+++ b/java/com/android/dialer/app/res/values-my/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ဖုန်း</string>
-  <string name="launcherDialpadActivityLabel">ဖုန်းခလုတ်ခုံ</string>
   <string name="callHistoryIconLabel">ခေါ်ဆိုမှု မှတ်တမ်း</string>
   <string name="action_copy_number_text">နံပါတ်ကိုကူးရန်</string>
-  <string name="copy_transcript_text">အသံမှစာအဖြစ်ဘာသာပြန်ခြင်းကို ကူးရန်</string>
   <string name="action_edit_number_before_call">မခေါ်ဆိုမီ နံပါတ်ကိုတည်းဖြတ်ရန်</string>
   <string name="call_log_delete_all">ခေါ်ဆိုမှု မှတ်တမ်း ရှင်းရန်</string>
   <string name="call_log_trash_voicemail">အသံပို့စာ အားဖျက်ရန်</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">အသံပြန်ဖွင့်ရေး နေရာကို ရှာရန်</string>
   <string name="action_menu_call_history_description">ခေါ်ဆိုမှုမှတ်တမ်း</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">ပိုမိုရွေးချယ်စရာများ</string>
-  <string name="action_menu_dialpad_button">ခလုတ်ခုံ</string>
   <string name="dialer_settings_label">ဆက်တင်များ</string>
-  <string name="simulator_submenu_label">အသစ်ကဲ့သို့ တုပသည့်စနစ်</string>
-  <string name="new_ui_launcher_shortcut_label">UI ဖြတ်လမ်းလင့်ခ်အသစ် လုပ်ရန်</string>
   <string name="description_entering_bulk_action_mode">တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်မုဒ်ကို ထည့်သွင်းခြင်း</string>
   <string name="description_leaving_bulk_action_mode">တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်မုဒ်မှ ထွက်လိုက်သည်</string>
   <string name="description_selecting_bulk_action_mode">ရွေးချယ်ထားသော %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">ဗီဒီယို ခေါ်ဆိုမှု</string>
   <string name="description_start_voice_search">အသံဖွင့်ရှာဖွေမှု စရန်</string>
   <string name="voicemail">အသံစာပို့စနစ်</string>
-  <string name="description_cancel_multi_select">တပြိုင်နက်တည်း စုပြုံလုပ်ဆောင်ချက်များမုဒ်ကိ ပယ်ဖျက်ရန်</string>
   <string name="voicemailMultiSelectDeleteConfirm">ဖျက်ပါ</string>
   <string name="voicemailMultiSelectDeleteCancel">မလုပ်တော့</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s ကို ရွေးချယ်ထားသည်</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">အသံဖြင့် ရှာဖွေမှု မရှိ</string>
   <string name="dialer_hint_find_contact">အဆက်အသွယ်များရှာပါ</string>
-  <string name="block_number_search_hint">နံပါတ်ပေါင်းထည့်ပါ သို့မဟုတ် အဆက်အသွယ်များ ရှာဖွေပါ</string>
   <string name="call_log_all_empty">သင့်ခေါ်ဆိုမှတ်တမ်းတွင် ဘာမှမရှိပါ</string>
   <string name="call_log_all_empty_action">ဖုန်းခေါ်ရန်</string>
   <string name="call_log_missed_empty">သင့်တွင် လွတ်သွားသည့်ခေါ်ဆိုမှုများ မရှိပါ။</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">ယခင်ခေါ်ဆိုမှုများ</string>
   <string name="call_log_all_title">အားလုံး</string>
   <string name="call_log_missed_title">လွတ်သွားသော</string>
-  <string name="tab_speed_dial">အမြန် နံပါတ်လှည့်မှု</string>
-  <string name="tab_history">ခေါ်ဆိုမှု မှတ်တမ်း</string>
   <string name="tab_all_contacts">အဆက်အသွယ်များ</string>
-  <string name="tab_voicemail">အသံမေးလ်</string>
-  <string name="search_shortcut_call_number">%s ကိုခေါ်ပါ</string>
   <string name="search_shortcut_create_new_contact">အဆက်အသွယ် အသစ် ဖန်တီးရန်</string>
   <string name="search_shortcut_add_to_contact">အဆက်အသွယ်သို့ ပေါင်းထည့်ရန်</string>
   <string name="search_shortcut_send_sms_message">စာတို ပို့ရန်</string>
   <string name="search_shortcut_make_video_call">ဗီဒီယို ဖုန်းခေါ်ရန်</string>
-  <string name="search_shortcut_block_number">နံပါတ်ကို ပိတ်ဆို့ရန်</string>
-  <string name="speed_dial_empty">သင်၏အမြန်ခေါ်စာရင်းတွင် မည်သူမျှ မရှိသေးပါ</string>
-  <string name="speed_dial_empty_add_favorite_action">အနှစ်သက်ဆုံးတစ်ခု ထည့်ရန်</string>
-  <string name="remove_contact">ဖယ်ရှာခြင်း</string>
   <string name="select_all">အားလုံးကို ရွေးချယ်ပါ</string>
   <string name="call_log_action_video_call">ဗီဒီယို ခေါ်ဆိုမှု</string>
-  <string name="call_log_action_set_up_video">ဗီဒီယိုခေါ်ဆိုမှု စတင်ရန်</string>
-  <string name="call_log_action_invite_video">ဗီဒီယိုခေါ်ဆိုမှုသို့ ဖိတ်ရန်</string>
   <string name="call_log_action_send_message">စာ တစ်စောင် ပို့ပါ</string>
   <string name="call_log_action_details">ဖုန်းခေါ်မှု အသေးစိတ်အချက်အလက်</string>
   <string name="call_log_action_share_voicemail">... သို့ ပို့ပါ</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">ခေါ်ဆိုမှုများ</string>
   <string name="manage_blocked_numbers_label">ပိတ်ထားသော နံပါတ်များ</string>
   <string name="voicemail_settings_label">အသံမေးလ်</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">ခေါ်ဆိုမှုပိတ်ဆို့ခြင်း ယာယီပိတ်ထားသည်</string>
-  <string name="blocked_numbers_disabled_emergency_desc">သင်သည် လွန်ခဲ့သည့် ၄၈ နာရီအတွင်း ဤဖုန်းဖြင့် အရေးပေါ်ဌာနကိုဖုန်း ခေါ်ဆိုခဲ့သောကြောင့် ခေါ်ဆိုမှုပိတ်ဆို့ခြင်းကို ဖြုတ်ထားသည်။ ၄၈ နာရီကျော်လွန်သည်နှင့် ၎င်းကိုအလိုအလျောက် ပြန်ဖွင့်ပေးပါမည်။</string>
-  <string name="import_send_to_voicemail_numbers_label">နံပါတ်များ သွင်းရန်</string>
-  <string name="blocked_call_settings_import_description">သင်သည် ယခင်က အချို့ခေါ်ဆိုသူများကို အလိုအလျောက် အခြား အက်ပ်များမှ တဆင့် အသံစာသို့ ပို့ရန် မှတ်ပေးခဲ့သည်။</string>
-  <string name="blocked_call_settings_view_numbers_button">နံပါတ်များကို ကြည့်ရန်</string>
-  <string name="blocked_call_settings_import_button">တင်သွင်းရန်</string>
-  <string name="description_blocked_number_list_delete">နံပါတ်ကို ဖွင့်မည်</string>
-  <string name="addBlockedNumber">နံပါတ် ထည့်သွင်းပါ</string>
-  <string name="block_number_footer_message_vvm">ဤနံပါတ်များမှ ခေါ်ဆိုမှုများကို ပိတ်ဆို့လိုက်မည်ဖြစ်ပြီး အသံမေးလ်များကို အလိုအလျောက် ဖျက်လိုက်ပါမည်။</string>
-  <string name="block_number_footer_message_no_vvm">ဤနံပါတ်များမှ ခေါ်ဆိုမှုများကို ပိတ်ဆို့လိုက်ပါမည်၊ သို့သော် ၎င်းတို့သည် သင့်ကို အသံမေးလ်ချန်ခဲ့နိုင်ပါသည်။</string>
-  <string name="block_list">ပိတ်ထားသည့် နံပါတ်များ</string>
-  <string name="alreadyBlocked">%1$s အားပိတ်ဆို့ထားပြီးပါပြီ။</string>
   <string name="phone_account_settings_label">ခေါ်ဆိုသော အကောင့်များ</string>
-  <string name="permission_no_speeddial">မြန်နှုန်းမြင့်ဖုန်းခေါ်ဆိုမှုကို ဖွင့်ရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်ကို ဖွင့်ပါ။</string>
   <string name="permission_no_calllog">ခေါ်ဆိုမှုမှတ်တမ်းကို ကြည့်ရန်၊ ဖုန်းခွင့်ပြုချက်ကို ဖွင့်ပါ။</string>
-  <string name="permission_no_search">သင့်အဆက်အသွယ်များကို ရှာဖွေရန်၊ အဆက်အသွယ်ခွင့်ပြုချက်များကို ဖွင့်ပါ။</string>
-  <string name="permission_place_call">ဖုန်းခေါ်ဆိုရန်၊ ဖုန်းခွင့်ပြုချက်ကိုဖွင့်ပါ။</string>
   <string name="toast_cannot_write_system_settings">ဖုန်း အက်ပ်ဆီတွင် စနစ် ဆက်တင်များသို့ ရေးသားခွင့် မရှိပါ။</string>
   <string name="blocked_number_call_log_label">ပိတ်ဆို့ထား</string>
   <string name="call_log_action_block_report_number">စပမ်းကို ပိတ်ဆို့ပါ/သတင်းပို့ပါ</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">စပမ်း မဟုတ်ပါ</string>
   <string name="call_log_action_unblock_number">နံပါတ်ကို ဖွင့်မည်</string>
   <string name="spam_number_call_log_label">စပမ်း</string>
-  <string name="call_composer_connection_failed">%1$s သည် အော့ဖ်လိုင်းဖြစ်နေသောကြောင့် ဆက်သွယ်၍ မရနိုင်ပါ</string>
-  <string name="about_phone_label">အကြောင်း</string>
-  <string name="voicemail_transcription_branding_text">Google ၏ စာသားမှတ်တမ်း</string>
-  <string name="voicemail_transcription_in_progress">ကူးယူနေသည်...</string>
-  <string name="voicemail_transcription_failed">စာသားမှတ်တမ်း မရရှိနိုင်ပါ။</string>
-  <string name="voicemail_transcription_failed_language_not_supported">စာသားမှတ်တမ်း မရရှိနိုင်ပါ။ ဘာသာစကား ပံ့ပိုးမထားပါ။</string>
-  <string name="voicemail_transcription_failed_no_speech">စာသားမှတ်တမ်း မရရှိနိုင်ပါ။ မည်သည့် ပြောဆိုမှုကိုမျှ ရှာမတွေ့ပါ။</string>
-  <string name="voicemail_donation_promo_title">စာသားမှတ်တမ်း တိကျမှု ပိုကောင်းလာစေရန် ကူညီမလား။</string>
-  <string name="voicemail_donation_promo_content">စာသားမှတ်တမ်းပါ ဤသည်နှင့် နောင်လာမည့် အသံမေးလ်မက်ဆေ့ဂျ်များကို Google အား သုံးသပ်ခွင့်ပေးပါ။ ၎င်းတို့ကို အမည်မဖော်ဘဲ သိမ်းထားပါမည်။ \'ဆက်တင်များ\' ကို အချိန်မရွေး ပြောင်းပါ။ %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">ပါဝင်ပါမည်</string>
-  <string name="voicemail_donation_promo_opt_out">မလိုတော့ပါ</string>
-  <string name="voicemail_transcription_rating">စာသားမှတ်တမ်း အဆင့်သတ်မှတ်ရန်</string>
-  <string name="voicemail_transcription_rating_thanks">သင့်အကြံပြုချက်အတွက် ကျေးဇူးပါ</string>
-  <string name="description_rating_good">လိုက်ခ်လုပ်ရန်</string>
-  <string name="description_rating_bad">မကြိုက်</string>
-  <string name="view_conversation">ကြည့်ရန်</string>
-  <string name="ec_data_deleted">ခေါ်ဆိုမှုကို ဖျက်လိုက်ပါပြီ။ မက်ဆေ့ဂျ်များရှိ ဤခေါ်ဆိုမှုအတောအတွင်း မျှဝေထားသော ပူးတွဲပါဖိုင်များကို ကြည့်ရှုပြီး ဖျက်ပါ။</string>
-  <string name="multiple_ec_data_deleted">ခေါ်ဆိုမှုကို ဖျက်လိုက်ပါပြီ။ မက်ဆေ့ဂျ်များရှိ ဤခေါ်ဆိုမှုများအတွင်း မျှဝေထားသော ပူးတွဲပါဖိုင်များကို ကြည့်ရှုပြီး ဖျက်ပါ။</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-nb/cm_strings.xml b/java/com/android/dialer/app/res/values-nb/cm_strings.xml
new file mode 100644
index 0000000..87b99bd
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-nb/cm_strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">I samtale</string>
+    <string name="incall_enable_dnd_title">Skru på \"Ikke-forstyrr\" under samtaler</string>
+    <string name="incall_vibrate_outgoing_title">Vibrasjon ved svar</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrasjon ved ventende samtale</string>
+    <string name="incall_vibrate_hangup_title">Vibrasjon når lagt på</string>
+    <string name="incall_vibrate_45_title">Vibrer hvert minutt</string>
+    <string name="incall_vibrate_45_summary">Vibrerer hvert 45. sekund av hvert minutt under utgående samtale</string>
+    <string name="incall_dnd_dialog_message">For å kunne skru på \"Ikke-forstyrr\", trenger programmet tilgang til å kontrollere dens status.\n</string>
+    <string name="allow">Tillat</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-nb/strings.xml b/java/com/android/dialer/app/res/values-nb/strings.xml
index b51470b..2ff3579 100644
--- a/java/com/android/dialer/app/res/values-nb/strings.xml
+++ b/java/com/android/dialer/app/res/values-nb/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Telefontastatur</string>
   <string name="callHistoryIconLabel">Anropslogg</string>
   <string name="action_copy_number_text">Kopiér nummeret</string>
-  <string name="copy_transcript_text">Kopiér transkripsjonen</string>
   <string name="action_edit_number_before_call">Endre nummeret før du ringer</string>
   <string name="call_log_delete_all">Slett anropsloggen</string>
   <string name="call_log_trash_voicemail">Slett talepost</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Søk etter avspillingsposisjon</string>
   <string name="action_menu_call_history_description">Anropslogg</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Flere alternativer</string>
-  <string name="action_menu_dialpad_button">Tastatur</string>
   <string name="dialer_settings_label">Innstillinger</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Nytt grensesnitt – lag snarvei</string>
   <string name="description_entering_bulk_action_mode">Starter massehandlingsmodus</string>
   <string name="description_leaving_bulk_action_mode">Massehandlingsmodus er avsluttet</string>
   <string name="description_selecting_bulk_action_mode">Du har valgt %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videoanrop.</string>
   <string name="description_start_voice_search">Start talesøk</string>
   <string name="voicemail">Telefonsvarer</string>
-  <string name="description_cancel_multi_select">Avbryt massehandlinsmodus</string>
   <string name="voicemailMultiSelectDeleteConfirm">Slett</string>
   <string name="voicemailMultiSelectDeleteCancel">Avbryt</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s er valgt</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Talesøk er ikke tilgjengelig</string>
   <string name="dialer_hint_find_contact">Søk i kontakter</string>
-  <string name="block_number_search_hint">Legg til nummer eller søk etter kontakter</string>
   <string name="call_log_all_empty">Anropsloggen er tom</string>
   <string name="call_log_all_empty_action">Start en samtale</string>
   <string name="call_log_missed_empty">Du har ingen tapte anrop.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Anropslogg</string>
   <string name="call_log_all_title">Alle</string>
   <string name="call_log_missed_title">Ubesvarte</string>
-  <string name="tab_speed_dial">Hurtigvalg</string>
-  <string name="tab_history">Anropslogg</string>
   <string name="tab_all_contacts">Kontakter</string>
-  <string name="tab_voicemail">Talepostkasse</string>
-  <string name="search_shortcut_call_number">Ring %s</string>
   <string name="search_shortcut_create_new_contact">Opprett ny kontakt</string>
   <string name="search_shortcut_add_to_contact">Legg til for en kontakt</string>
   <string name="search_shortcut_send_sms_message">Send SMS</string>
   <string name="search_shortcut_make_video_call">Start en videosamtale</string>
-  <string name="search_shortcut_block_number">Blokkér nummeret</string>
-  <string name="speed_dial_empty">Du har ingen på hurtigoppringning ennå</string>
-  <string name="speed_dial_empty_add_favorite_action">Legg til en favoritt</string>
-  <string name="remove_contact">Fjern</string>
   <string name="select_all">Velg alle</string>
   <string name="call_log_action_video_call">Videoanrop</string>
-  <string name="call_log_action_set_up_video">Konfigurer videoanrop</string>
-  <string name="call_log_action_invite_video">Inviter til videosamtale</string>
   <string name="call_log_action_send_message">Send en melding</string>
   <string name="call_log_action_details">Samtaleinformasjon</string>
   <string name="call_log_action_share_voicemail">Send til …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Anrop</string>
   <string name="manage_blocked_numbers_label">Blokkerte numre</string>
   <string name="voicemail_settings_label">Talepost</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blokkering av anrop er midlertidig slått av</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Blokkering av anrop er slått av fordi du kontaktet nødtjenester fra denne telefonen i løpet av de siste 48 timene. Funksjonen blir automatisk slått på igjen når perioden på 48 timer er utløpt.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importér numre</string>
-  <string name="blocked_call_settings_import_description">Du markerte tidligere noen anropere for automatisk overføring til talepost via andre apper.</string>
-  <string name="blocked_call_settings_view_numbers_button">Se numre</string>
-  <string name="blocked_call_settings_import_button">Importér</string>
-  <string name="description_blocked_number_list_delete">Opphev blokkeringen av nummeret</string>
-  <string name="addBlockedNumber">Legg til nummer</string>
-  <string name="block_number_footer_message_vvm">Anrop fra disse numrene blokkeres, og talepost blir automatisk slettet.</string>
-  <string name="block_number_footer_message_no_vvm">Anrop fra dette nummeret blokkeres, men du kan fortsatt motta talepost.</string>
-  <string name="block_list">Blokkerte numre</string>
-  <string name="alreadyBlocked">%1$s er allerede blokkert.</string>
   <string name="phone_account_settings_label">Ringekontoer</string>
-  <string name="permission_no_speeddial">For å slå på hurtigoppringning, slå på Kontakter-tillatelsen.</string>
   <string name="permission_no_calllog">For å se samtaleloggen din, slå på Telefon-tillatelsen.</string>
-  <string name="permission_no_search">For å søke i kontaktene dine, slå på tillatelser for Kontakter.</string>
-  <string name="permission_place_call">For å ringe, slå på Telefon-tillatelsen.</string>
   <string name="toast_cannot_write_system_settings">Telefonappen har ikke tillatelse til å skrive til systeminnstillinger.</string>
   <string name="blocked_number_call_log_label">Blokkert</string>
   <string name="call_log_action_block_report_number">Blokkér/rapportér som useriøs</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Ikke useriøs</string>
   <string name="call_log_action_unblock_number">Opphev blokkeringen av nummeret</string>
   <string name="spam_number_call_log_label">Nettsøppel</string>
-  <string name="call_composer_connection_failed">%1$s er frakoblet og kan ikke nås</string>
-  <string name="about_phone_label">Om</string>
-  <string name="voicemail_transcription_branding_text">Transkribert av Google</string>
-  <string name="voicemail_transcription_in_progress">Transkriberer …</string>
-  <string name="voicemail_transcription_failed">Ingen transkripsjon.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Ingen transkripsjon. Språket støttes ikke.</string>
-  <string name="voicemail_transcription_failed_no_speech">Ingen transkripsjon. Ingen tale ble registrert.</string>
-  <string name="voicemail_donation_promo_title">Vil du hjelpe oss med å gjøre transkripsjoner mer nøyaktige?</string>
-  <string name="voicemail_donation_promo_content">La Google gå gjennom denne og fremtidige talemeldinger med transkripsjoner. De blir lagret anonymt. Du kan endre innstillingene når som helst. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Ja, jeg er med</string>
-  <string name="voicemail_donation_promo_opt_out">Nei takk</string>
-  <string name="voicemail_transcription_rating">Vurder transkripsjonskvalitet</string>
-  <string name="voicemail_transcription_rating_thanks">Takk for tilbakemeldingen</string>
-  <string name="description_rating_good">Liker</string>
-  <string name="description_rating_bad">Liker ikke</string>
-  <string name="view_conversation">Se</string>
-  <string name="ec_data_deleted">Anropet er slettet. Se og slett vedleggene som ble delt i denne samtalen, i Meldinger.</string>
-  <string name="multiple_ec_data_deleted">Anropene er slettet. Se og slett vedleggene som ble delt i samtalene, i Meldinger.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ne/strings.xml b/java/com/android/dialer/app/res/values-ne/strings.xml
index 1a05817..54587ff 100644
--- a/java/com/android/dialer/app/res/values-ne/strings.xml
+++ b/java/com/android/dialer/app/res/values-ne/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">फोन</string>
-  <string name="launcherDialpadActivityLabel">फोनको किप्याड</string>
   <string name="callHistoryIconLabel">कल इतिहास</string>
   <string name="action_copy_number_text">नम्बर प्रतिलिपि गर्नुहोस्</string>
-  <string name="copy_transcript_text">ट्रान्सक्रिप्शनको प्रतिलिपि बनाउँनुहोस्</string>
   <string name="action_edit_number_before_call">कल गर्न अगाडि नम्बर सम्पादन गर्नुहोस्</string>
   <string name="call_log_delete_all">कल इतिहास हटाउनुहोस्</string>
   <string name="call_log_trash_voicemail">भ्वाइसमेल हटाउनुहोस्</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">प्लेब्याक स्थिति खोज्नुहोस्</string>
   <string name="action_menu_call_history_description">कलको इतिहास</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">थप विकल्पहरू</string>
-  <string name="action_menu_dialpad_button">किप्याड</string>
   <string name="dialer_settings_label">सेटिङहरू</string>
-  <string name="simulator_submenu_label">सिम्युलेटर</string>
-  <string name="new_ui_launcher_shortcut_label">नयाँ UI सर्टकट सिर्जना गर्ने</string>
   <string name="description_entering_bulk_action_mode">बल्क कारबाही सम्बन्धी मोडमा प्रवेश गर्दै</string>
   <string name="description_leaving_bulk_action_mode">बल्क कारबाही सम्बन्धी मोड छोडियो</string>
   <string name="description_selecting_bulk_action_mode">%1$s चयन गरियो</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">भिडियो कल।</string>
   <string name="description_start_voice_search">आवाज खोजी सुरु गर्नुहोस्</string>
   <string name="voicemail">भ्वाइसमेल</string>
-  <string name="description_cancel_multi_select">ब्याच सम्बन्धी कारबाहीको मोडलाई रद्द गर्नुहोस्</string>
   <string name="voicemailMultiSelectDeleteConfirm">मेट्नुहोस्</string>
   <string name="voicemailMultiSelectDeleteCancel">रद्द गर्नुहोस्</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s चयन गरियो</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">आवाज खोजी उपलब्ध छैन</string>
   <string name="dialer_hint_find_contact">सम्पर्कहरू खोज्नुहोस्</string>
-  <string name="block_number_search_hint">नम्बर थप्नुहोस् वा सम्पर्कहरू खोज्नुहोस्</string>
   <string name="call_log_all_empty">तपाईँको कल इतिहास खाली छ</string>
   <string name="call_log_all_empty_action">कल गर्नुहोस्</string>
   <string name="call_log_missed_empty">तपाईँसँग कुनै पनि छुटेका कलहरू छैनन्।</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">कल इतिहास</string>
   <string name="call_log_all_title">सबै</string>
   <string name="call_log_missed_title">छुटेको</string>
-  <string name="tab_speed_dial">द्रूत डायल</string>
-  <string name="tab_history">कल इतिहास</string>
   <string name="tab_all_contacts">सम्पर्कहरू</string>
-  <string name="tab_voicemail">भ्वाइसमेल</string>
-  <string name="search_shortcut_call_number">%s कल गर्नुहोस्</string>
   <string name="search_shortcut_create_new_contact">नयाँ सम्पर्क सिर्जना गर्नुहोस्</string>
   <string name="search_shortcut_add_to_contact">सम्पर्कमा थप्नुहोस्</string>
   <string name="search_shortcut_send_sms_message">SMS पठाउनुहोस्</string>
   <string name="search_shortcut_make_video_call">भिडियो कल बनाउनुहोस्</string>
-  <string name="search_shortcut_block_number">नम्बरलाई निषेध गर्नुहोस्</string>
-  <string name="speed_dial_empty">तपाईँको स्पिड डायलमा अझसम्म कोही छैन</string>
-  <string name="speed_dial_empty_add_favorite_action">एक मन पर्ने थप्नुहोस्</string>
-  <string name="remove_contact">हटाउँनुहोस्</string>
   <string name="select_all">सबैलाई चयन गर्नुहोस्</string>
   <string name="call_log_action_video_call">भिडियो कल</string>
-  <string name="call_log_action_set_up_video">भिडियो कलिङ सेटअप गर्नुहोस्</string>
-  <string name="call_log_action_invite_video">भिडियो कलमा आमन्त्रित गर्नु…</string>
   <string name="call_log_action_send_message">सन्देश पठाउनुहोस्</string>
   <string name="call_log_action_details">कल विवरणहरु</string>
   <string name="call_log_action_share_voicemail">…मा पठाउनुहोस्</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">कलहरू</string>
   <string name="manage_blocked_numbers_label">रोक लगाइएका नम्बरहरू</string>
   <string name="voicemail_settings_label">भ्वाइस मेल</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">कल अवरुद्ध अस्थायी रुपमा निष्क्रिय</string>
-  <string name="blocked_numbers_disabled_emergency_desc">कल अवरुद्ध अस्थायी रुपमा असक्षम गरिएको छ किनभने तपाईँले अन्तिम ४८ घन्टा भित्र यस फोनबाट आपत्कालीन सेवाहरू सम्पर्क गर्नुभयो। एकपटक ४८ घन्टा अवधि समाप्त भएपछि यो स्वचालित रूपले पुनः सक्रिय हुनेछ।</string>
-  <string name="import_send_to_voicemail_numbers_label">नम्बरहरू आयात गर्नुहोस्</string>
-  <string name="blocked_call_settings_import_description">तपाईँले पहिल्यै केही कल गर्ने व्यक्तिहरूलाई अन्य अनुप्रयोगहरू मार्फत स्वत: रूपमा भ्वाइस मेल पठाउन नै चिन्ह लगाउनु भएको थियो।</string>
-  <string name="blocked_call_settings_view_numbers_button">नम्बरहरू हेर्नुहोस्</string>
-  <string name="blocked_call_settings_import_button">आयात गर्नुहोस्</string>
-  <string name="description_blocked_number_list_delete">नम्बरमाथिको रोक हटाउनुहोस्</string>
-  <string name="addBlockedNumber">नम्बर थप्नुहोस्</string>
-  <string name="block_number_footer_message_vvm">यी नम्बरहरूबाट सबै कलहरू रोकिनेछन् र भ्वाइसमेलहरू स्वचालित रूपमा मेटिनेछन्।</string>
-  <string name="block_number_footer_message_no_vvm">यो नम्बरहरूबाट सबै कलहरू रोकिनेछन्। तर तिनिहरूले अझै तपाईँलाई भ्वाइस मेलहरू भने छोड्न सक्नेछन्।</string>
-  <string name="block_list">रोकिएका नम्बरहरू</string>
-  <string name="alreadyBlocked">%1$s पहिले नै रोकिएको छ।</string>
   <string name="phone_account_settings_label">खाता कलिङ</string>
-  <string name="permission_no_speeddial">तीव्र डायल सक्षम गर्न, सम्पर्क अनुमति सक्षम गर्नुहोस्।</string>
   <string name="permission_no_calllog">आफ्नो कल लग हेर्न, फोन अनुमति सक्रिय गर्नुहोस्।</string>
-  <string name="permission_no_search">तपाईँको सम्पर्कहरू खोज गर्न सम्पर्क अनुमतिहरू सक्रिय गर्नुहोस्।</string>
-  <string name="permission_place_call">कल गर्न फोन अनुमति सक्रिय गर्नुहोस्।</string>
   <string name="toast_cannot_write_system_settings">प्रणाली सेटिङहरूमा लेख्न फोन अनुप्रयोगसँग अनुमति छैन।</string>
   <string name="blocked_number_call_log_label">अवरूद्ध गरियो</string>
   <string name="call_log_action_block_report_number">स्प्यामलाई रोक्नुहोस्/रिपोर्ट गर्नुहोस्</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">स्प्याम होइन</string>
   <string name="call_log_action_unblock_number">नम्बरमाथिको रोक हटाउनुहोस्</string>
   <string name="spam_number_call_log_label">स्प्याम</string>
-  <string name="call_composer_connection_failed">%1$s अफलाइन हुनुहुन्छ र वहाँलाई भेट्न सकिँदैन</string>
-  <string name="about_phone_label">बारेमा</string>
-  <string name="voicemail_transcription_branding_text">Google द्वारा ट्रान्सक्राइब गरिएको</string>
-  <string name="voicemail_transcription_in_progress">ट्रान्सक्राइब गर्दै…</string>
-  <string name="voicemail_transcription_failed">ट्रान्स्क्रिप्ट उपलब्ध छैन।</string>
-  <string name="voicemail_transcription_failed_language_not_supported">ट्रान्स्क्रिप्ट उपलब्ध छैन। भाषा समर्थित छैन।</string>
-  <string name="voicemail_transcription_failed_no_speech">ट्रान्स्क्रिप्ट उपलब्ध छैन। कुनै बोली पत्ता लागेन।</string>
-  <string name="voicemail_donation_promo_title">ट्रान्स्क्रिप्सनको सटीकता सुधार गर्न मद्दत गर्ने हो?</string>
-  <string name="voicemail_donation_promo_content">Google लाई यो र भविष्यका भ्वाइस मेलका ट्रान्स्क्रिप्टहरूसहितका सन्देशहरूलाई समीक्षा गर्न दिनुहोस्। ती सन्देशहरूलाई अज्ञात रूपमा भण्डारण गरिने छ। सेटिङहरू जुनसुकै बेला परिवर्तन गर्नुहोस्।%1$s</string>
-  <string name="voicemail_donation_promo_opt_in">हो, म सहमत छु</string>
-  <string name="voicemail_donation_promo_opt_out">पर्दैन, धन्यवाद</string>
-  <string name="voicemail_transcription_rating">ट्रान्सक्रिप्सनको गुणस्तर मूल्याङ्कन गर्नु…</string>
-  <string name="voicemail_transcription_rating_thanks">तपाईंको प्रतिक्रियाका लागि धन्यवाद</string>
-  <string name="description_rating_good">मन पऱ्यो</string>
-  <string name="description_rating_bad">मन परेन</string>
-  <string name="view_conversation">हेर्नुहोस्</string>
-  <string name="ec_data_deleted">कल मेटाइयो। Messages मा गरिएको यो कलका क्रममा समावेश गरी आदान प्रदान गरिएका कागजातलाई हेर्नुहोस् र मेटाउनुहोस्।</string>
-  <string name="multiple_ec_data_deleted">कलहरू मेटाइए। Messages मा गरिएका कलहरूमा समावेश गरी आदान प्रदान गरिएका कागजातलाई हेर्नुहोस् र मेटाउनुहोस्।</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-night/colors.xml b/java/com/android/dialer/app/res/values-night/colors.xml
new file mode 100644
index 0000000..01b176c
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-night/colors.xml
@@ -0,0 +1,21 @@
+<!--
+  ~ Copyright (C) 2012 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+-->
+
+<resources>
+  <color name="nav_item">@android:color/system_neutral1_300</color>
+  <color name="dialer_pill_color">@android:color/system_accent2_700</color>
+  <color name="dialer_fab_icon_color">#ff000000</color>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-nl/cm_strings.xml b/java/com/android/dialer/app/res/values-nl/cm_strings.xml
new file mode 100644
index 0000000..60336ea
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-nl/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Tijdens gesprek</string>
+    <string name="incall_enable_dnd_title">\"Niet storen\" inschakelen tijdens gesprekken</string>
+    <string name="incall_vibrate_outgoing_title">Trillen bij aannemen</string>
+    <string name="incall_vibrate_call_waiting_title">Trillen bij wachten</string>
+    <string name="incall_vibrate_hangup_title">Trillen bij ophangen</string>
+    <string name="incall_vibrate_45_title">Elke minuut trillen</string>
+    <string name="incall_vibrate_45_summary">Elke 45<SUP>e</SUP> seconde van een minuut trillen bij uitgaande gesprekken</string>
+    <string name="incall_dnd_dialog_message">Om \"Niet storen\" in te schakelen moet de telefoon-app de machtiging verleend worden om de status \"Niet storen\" in te stellen.\nGelieve dit toe te staan.</string>
+    <string name="allow">Toestaan</string>
+    <string name="deny">Weigeren</string>
+    <string name="call_recording_category_title">Gespreksopname</string>
+    <string name="call_recording_format">Audioformaat</string>
+    <string name="call_via">Bellen via</string>
+    <string name="call_via_dialog_title">Bellen via\u2026</string>
+    <string name="call_log_stats_title">Statistieken</string>
+    <string name="action_menu_helplines">Hulplijnen</string>
+    <string name="default_dialer_text">U moet Dialer instellen als de standaard telefoon app om hem te gebruiken.</string>
+    <string name="default_dialer_action">Stel in als standaard</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-nl/strings.xml b/java/com/android/dialer/app/res/values-nl/strings.xml
index 6ed92e4..f91e2b8 100644
--- a/java/com/android/dialer/app/res/values-nl/strings.xml
+++ b/java/com/android/dialer/app/res/values-nl/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefoon</string>
-  <string name="launcherDialpadActivityLabel">Toetsenblok van telefoon</string>
   <string name="callHistoryIconLabel">Oproepgeschiedenis</string>
   <string name="action_copy_number_text">Nummer kopiëren</string>
-  <string name="copy_transcript_text">Transcriptie kopiëren</string>
   <string name="action_edit_number_before_call">Nummer bewerken vóór bellen</string>
   <string name="call_log_delete_all">Oproepgeschiedenis wissen</string>
   <string name="call_log_trash_voicemail">Voicemail verwijderen</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Afspeelpositie zoeken</string>
   <string name="action_menu_call_history_description">Oproepgeschiedenis</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Meer opties</string>
-  <string name="action_menu_dialpad_button">toetsenblok</string>
   <string name="dialer_settings_label">Instellingen</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Snelkoppeling voor nieuwe UI</string>
   <string name="description_entering_bulk_action_mode">Modus voor bulkacties openen</string>
   <string name="description_leaving_bulk_action_mode">Modus voor bulkacties verlaten</string>
   <string name="description_selecting_bulk_action_mode">%1$s geselecteerd</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videogesprek.</string>
   <string name="description_start_voice_search">Gesproken zoekopdracht</string>
   <string name="voicemail">Voicemail</string>
-  <string name="description_cancel_multi_select">Modus voor batchacties annuleren</string>
   <string name="voicemailMultiSelectDeleteConfirm">Verwijderen</string>
   <string name="voicemailMultiSelectDeleteCancel">Annuleren</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s geselecteerd</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Gesproken zoekopdracht niet beschikbaar</string>
   <string name="dialer_hint_find_contact">Contacten zoeken</string>
-  <string name="block_number_search_hint">Voeg nummer toe of zoek contacten</string>
   <string name="call_log_all_empty">Je oproepgeschiedenis is leeg</string>
   <string name="call_log_all_empty_action">Bellen</string>
   <string name="call_log_missed_empty">Je hebt geen gemiste oproepen.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Oproepgeschiedenis</string>
   <string name="call_log_all_title">Alle</string>
   <string name="call_log_missed_title">Gemist</string>
-  <string name="tab_speed_dial">Snelkeuze</string>
-  <string name="tab_history">Oproepgeschiedenis</string>
   <string name="tab_all_contacts">Contacten</string>
-  <string name="tab_voicemail">Voicemail</string>
-  <string name="search_shortcut_call_number">%s bellen</string>
   <string name="search_shortcut_create_new_contact">Nieuw contact maken</string>
   <string name="search_shortcut_add_to_contact">Toevoegen aan een contact</string>
   <string name="search_shortcut_send_sms_message">Sms verzenden</string>
   <string name="search_shortcut_make_video_call">Videogesprek starten</string>
-  <string name="search_shortcut_block_number">Nummer blokkeren</string>
-  <string name="speed_dial_empty">Er staat nog niemand in je snelkeuzelijst</string>
-  <string name="speed_dial_empty_add_favorite_action">Een favoriet toevoegen</string>
-  <string name="remove_contact">Verwijderen</string>
   <string name="select_all">Alles selecteren</string>
   <string name="call_log_action_video_call">Videogesprek</string>
-  <string name="call_log_action_set_up_video">Videogesprekken instellen</string>
-  <string name="call_log_action_invite_video">Uitnodigen voor videogesprek</string>
   <string name="call_log_action_send_message">Een bericht verzenden</string>
   <string name="call_log_action_details">Oproepdetails</string>
   <string name="call_log_action_share_voicemail">Verzenden naar…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Oproepen</string>
   <string name="manage_blocked_numbers_label">Geblokkeerde nummers</string>
   <string name="voicemail_settings_label">Voicemail</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Oproepblokkering tijdelijk uitgeschakeld</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Oproepblokkering is uitgeschakeld omdat je in de afgelopen 48 uur contact met de noodhulpdiensten hebt opgenomen via deze telefoon. De functie wordt automatisch weer ingeschakeld nadat de periode van 48 uur is verstreken.</string>
-  <string name="import_send_to_voicemail_numbers_label">Nummers importeren</string>
-  <string name="blocked_call_settings_import_description">Je hebt via andere apps al aangegeven dat bepaalde bellers moeten worden doorgeschakeld naar de voicemail.</string>
-  <string name="blocked_call_settings_view_numbers_button">Nummers bekijken</string>
-  <string name="blocked_call_settings_import_button">Importeren</string>
-  <string name="description_blocked_number_list_delete">Blokkeren van nummer opheffen</string>
-  <string name="addBlockedNumber">Nummer toevoegen</string>
-  <string name="block_number_footer_message_vvm">Oproepen van deze nummers worden geblokkeerd en voicemails worden automatisch verwijderd.</string>
-  <string name="block_number_footer_message_no_vvm">Oproepen van deze nummers worden geblokkeerd, maar de bellers kunnen nog wel voicemail achterlaten.</string>
-  <string name="block_list">Geblokkeerde nummers</string>
-  <string name="alreadyBlocked">%1$s is al geblokkeerd.</string>
   <string name="phone_account_settings_label">Oproepaccounts</string>
-  <string name="permission_no_speeddial">Als je de snelkeuzefunctie wilt inschakelen, schakel je de machtiging voor Contacten in.</string>
   <string name="permission_no_calllog">Als je je gesprekkenlijst wilt bekijken, schakel je de machtiging voor Telefoon in.</string>
-  <string name="permission_no_search">Als je naar contacten wilt zoeken, schakel je de contacttoestemming in.</string>
-  <string name="permission_place_call">Als je iemand wilt bellen, schakel je de machtiging voor Telefoon in.</string>
   <string name="toast_cannot_write_system_settings">Telefoon-app heeft geen toestemming om systeeminstellingen te schrijven.</string>
   <string name="blocked_number_call_log_label">Geblokkeerd</string>
   <string name="call_log_action_block_report_number">Blokkeren/spam melden</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Geen spam</string>
   <string name="call_log_action_unblock_number">Blokkeren van nummer opheffen</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s is offline en kan niet worden bereikt</string>
-  <string name="about_phone_label">Over</string>
-  <string name="voicemail_transcription_branding_text">Getranscribeerd door Google</string>
-  <string name="voicemail_transcription_in_progress">Transcript maken…</string>
-  <string name="voicemail_transcription_failed">Transcript niet beschikbaar.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcript niet beschikbaar. Taal niet ondersteund.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcript niet beschikbaar. Geen spraak gedetecteerd.</string>
-  <string name="voicemail_donation_promo_title">Wil je helpen de nauwkeurigheid van transcripties te verbeteren?</string>
-  <string name="voicemail_donation_promo_content">Laat Google deze en toekomstige voicemailberichten met transcripten controleren. Ze worden anoniem opgeslagen. Je kunt deze instellingen op elk gewenst moment wijzigen. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Ja, is goed</string>
-  <string name="voicemail_donation_promo_opt_out">Nee</string>
-  <string name="voicemail_transcription_rating">Beoordeel transcriptkwaliteit</string>
-  <string name="voicemail_transcription_rating_thanks">Bedankt voor je feedback</string>
-  <string name="description_rating_good">Like</string>
-  <string name="description_rating_bad">Dislike</string>
-  <string name="view_conversation">Weergeven</string>
-  <string name="ec_data_deleted">Gesprek verwijderd. Bijlagen die in dit gesprek zijn gedeeld, kun je bekijken en verwijderen via Berichten.</string>
-  <string name="multiple_ec_data_deleted">Gesprekken verwijderd. Bijlagen die in deze gesprekken zijn gedeeld, kun je bekijken en verwijderen via Berichten.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-no/strings.xml b/java/com/android/dialer/app/res/values-no/strings.xml
index b51470b..2ff3579 100644
--- a/java/com/android/dialer/app/res/values-no/strings.xml
+++ b/java/com/android/dialer/app/res/values-no/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Telefontastatur</string>
   <string name="callHistoryIconLabel">Anropslogg</string>
   <string name="action_copy_number_text">Kopiér nummeret</string>
-  <string name="copy_transcript_text">Kopiér transkripsjonen</string>
   <string name="action_edit_number_before_call">Endre nummeret før du ringer</string>
   <string name="call_log_delete_all">Slett anropsloggen</string>
   <string name="call_log_trash_voicemail">Slett talepost</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Søk etter avspillingsposisjon</string>
   <string name="action_menu_call_history_description">Anropslogg</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Flere alternativer</string>
-  <string name="action_menu_dialpad_button">Tastatur</string>
   <string name="dialer_settings_label">Innstillinger</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Nytt grensesnitt – lag snarvei</string>
   <string name="description_entering_bulk_action_mode">Starter massehandlingsmodus</string>
   <string name="description_leaving_bulk_action_mode">Massehandlingsmodus er avsluttet</string>
   <string name="description_selecting_bulk_action_mode">Du har valgt %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videoanrop.</string>
   <string name="description_start_voice_search">Start talesøk</string>
   <string name="voicemail">Telefonsvarer</string>
-  <string name="description_cancel_multi_select">Avbryt massehandlinsmodus</string>
   <string name="voicemailMultiSelectDeleteConfirm">Slett</string>
   <string name="voicemailMultiSelectDeleteCancel">Avbryt</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s er valgt</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Talesøk er ikke tilgjengelig</string>
   <string name="dialer_hint_find_contact">Søk i kontakter</string>
-  <string name="block_number_search_hint">Legg til nummer eller søk etter kontakter</string>
   <string name="call_log_all_empty">Anropsloggen er tom</string>
   <string name="call_log_all_empty_action">Start en samtale</string>
   <string name="call_log_missed_empty">Du har ingen tapte anrop.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Anropslogg</string>
   <string name="call_log_all_title">Alle</string>
   <string name="call_log_missed_title">Ubesvarte</string>
-  <string name="tab_speed_dial">Hurtigvalg</string>
-  <string name="tab_history">Anropslogg</string>
   <string name="tab_all_contacts">Kontakter</string>
-  <string name="tab_voicemail">Talepostkasse</string>
-  <string name="search_shortcut_call_number">Ring %s</string>
   <string name="search_shortcut_create_new_contact">Opprett ny kontakt</string>
   <string name="search_shortcut_add_to_contact">Legg til for en kontakt</string>
   <string name="search_shortcut_send_sms_message">Send SMS</string>
   <string name="search_shortcut_make_video_call">Start en videosamtale</string>
-  <string name="search_shortcut_block_number">Blokkér nummeret</string>
-  <string name="speed_dial_empty">Du har ingen på hurtigoppringning ennå</string>
-  <string name="speed_dial_empty_add_favorite_action">Legg til en favoritt</string>
-  <string name="remove_contact">Fjern</string>
   <string name="select_all">Velg alle</string>
   <string name="call_log_action_video_call">Videoanrop</string>
-  <string name="call_log_action_set_up_video">Konfigurer videoanrop</string>
-  <string name="call_log_action_invite_video">Inviter til videosamtale</string>
   <string name="call_log_action_send_message">Send en melding</string>
   <string name="call_log_action_details">Samtaleinformasjon</string>
   <string name="call_log_action_share_voicemail">Send til …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Anrop</string>
   <string name="manage_blocked_numbers_label">Blokkerte numre</string>
   <string name="voicemail_settings_label">Talepost</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blokkering av anrop er midlertidig slått av</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Blokkering av anrop er slått av fordi du kontaktet nødtjenester fra denne telefonen i løpet av de siste 48 timene. Funksjonen blir automatisk slått på igjen når perioden på 48 timer er utløpt.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importér numre</string>
-  <string name="blocked_call_settings_import_description">Du markerte tidligere noen anropere for automatisk overføring til talepost via andre apper.</string>
-  <string name="blocked_call_settings_view_numbers_button">Se numre</string>
-  <string name="blocked_call_settings_import_button">Importér</string>
-  <string name="description_blocked_number_list_delete">Opphev blokkeringen av nummeret</string>
-  <string name="addBlockedNumber">Legg til nummer</string>
-  <string name="block_number_footer_message_vvm">Anrop fra disse numrene blokkeres, og talepost blir automatisk slettet.</string>
-  <string name="block_number_footer_message_no_vvm">Anrop fra dette nummeret blokkeres, men du kan fortsatt motta talepost.</string>
-  <string name="block_list">Blokkerte numre</string>
-  <string name="alreadyBlocked">%1$s er allerede blokkert.</string>
   <string name="phone_account_settings_label">Ringekontoer</string>
-  <string name="permission_no_speeddial">For å slå på hurtigoppringning, slå på Kontakter-tillatelsen.</string>
   <string name="permission_no_calllog">For å se samtaleloggen din, slå på Telefon-tillatelsen.</string>
-  <string name="permission_no_search">For å søke i kontaktene dine, slå på tillatelser for Kontakter.</string>
-  <string name="permission_place_call">For å ringe, slå på Telefon-tillatelsen.</string>
   <string name="toast_cannot_write_system_settings">Telefonappen har ikke tillatelse til å skrive til systeminnstillinger.</string>
   <string name="blocked_number_call_log_label">Blokkert</string>
   <string name="call_log_action_block_report_number">Blokkér/rapportér som useriøs</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Ikke useriøs</string>
   <string name="call_log_action_unblock_number">Opphev blokkeringen av nummeret</string>
   <string name="spam_number_call_log_label">Nettsøppel</string>
-  <string name="call_composer_connection_failed">%1$s er frakoblet og kan ikke nås</string>
-  <string name="about_phone_label">Om</string>
-  <string name="voicemail_transcription_branding_text">Transkribert av Google</string>
-  <string name="voicemail_transcription_in_progress">Transkriberer …</string>
-  <string name="voicemail_transcription_failed">Ingen transkripsjon.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Ingen transkripsjon. Språket støttes ikke.</string>
-  <string name="voicemail_transcription_failed_no_speech">Ingen transkripsjon. Ingen tale ble registrert.</string>
-  <string name="voicemail_donation_promo_title">Vil du hjelpe oss med å gjøre transkripsjoner mer nøyaktige?</string>
-  <string name="voicemail_donation_promo_content">La Google gå gjennom denne og fremtidige talemeldinger med transkripsjoner. De blir lagret anonymt. Du kan endre innstillingene når som helst. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Ja, jeg er med</string>
-  <string name="voicemail_donation_promo_opt_out">Nei takk</string>
-  <string name="voicemail_transcription_rating">Vurder transkripsjonskvalitet</string>
-  <string name="voicemail_transcription_rating_thanks">Takk for tilbakemeldingen</string>
-  <string name="description_rating_good">Liker</string>
-  <string name="description_rating_bad">Liker ikke</string>
-  <string name="view_conversation">Se</string>
-  <string name="ec_data_deleted">Anropet er slettet. Se og slett vedleggene som ble delt i denne samtalen, i Meldinger.</string>
-  <string name="multiple_ec_data_deleted">Anropene er slettet. Se og slett vedleggene som ble delt i samtalene, i Meldinger.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-pa/strings.xml b/java/com/android/dialer/app/res/values-pa/strings.xml
index d8e09a0..8f25fd0 100644
--- a/java/com/android/dialer/app/res/values-pa/strings.xml
+++ b/java/com/android/dialer/app/res/values-pa/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ਫ਼ੋਨ</string>
-  <string name="launcherDialpadActivityLabel">ਫ਼ੋਨ ਕੀਪੈਡ</string>
   <string name="callHistoryIconLabel">ਕਾਲ ਇਤਿਹਾਸ</string>
   <string name="action_copy_number_text">ਨੰਬਰ ਕਾਪੀ ਕਰੋ</string>
-  <string name="copy_transcript_text">ਲਿਪੀ ਬਦਲਣਾ ਕਾਪੀ ਕਰੋ</string>
   <string name="action_edit_number_before_call">ਕਾਲ ਤੋਂ ਪਹਿਲਾਂ ਨੰਬਰ ਸੰਪਾਦਿਤ ਕਰੋ</string>
   <string name="call_log_delete_all">ਕਾਲ ਇਤਿਹਾਸ ਹਟਾਓ</string>
   <string name="call_log_trash_voicemail">ਵੌਇਸਮੇਲ ਮਿਟਾਓ</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">ਪਲੇਬੈਕ ਪੋਜੀਸ਼ਨ ਖੋਜੋ</string>
   <string name="action_menu_call_history_description">ਕਾਲ ਇਤਿਹਾਸ</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">ਹੋਰ ਚੋਣਾਂ</string>
-  <string name="action_menu_dialpad_button">ਕੀ-ਪੈਡ</string>
   <string name="dialer_settings_label">ਸੈਟਿੰਗਾਂ</string>
-  <string name="simulator_submenu_label">ਸਿਮੁਲੇਟਰ</string>
-  <string name="new_ui_launcher_shortcut_label">ਨਵਾਂ UI ਸ਼ਾਰਟਕੱਟ ਬਣਾਓ</string>
   <string name="description_entering_bulk_action_mode">ਬਲਕ ਕਾਰਵਾਈ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਹੋਇਆ ਜਾ ਰਿਹਾ ਹੈ</string>
   <string name="description_leaving_bulk_action_mode">ਬਲਕ ਕਾਰਵਾਈ ਮੋਡ ਨੂੰ ਛੱਡਿਆ</string>
   <string name="description_selecting_bulk_action_mode">%1$s ਨੂੰ ਚੁਣਿਆ ਗਿਆ</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">ਵੀਡੀਓ ਕਾਲ।</string>
   <string name="description_start_voice_search">ਵੌਇਸ ਖੋਜ ਚਾਲੂ ਕਰੋ</string>
   <string name="voicemail">ਵੌਇਸਮੇਲ</string>
-  <string name="description_cancel_multi_select">ਬੈਚ ਕਾਰਵਾਈਆਂ ਮੋਡ ਨੂੰ ਰੱਦ ਕਰੋ</string>
   <string name="voicemailMultiSelectDeleteConfirm">ਮਿਟਾਓ</string>
   <string name="voicemailMultiSelectDeleteCancel">ਰੱਦ ਕਰੋ</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s ਨੂੰ ਚੁਣਿਆ ਗਿਆ</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">ਵੌਇਸ ਖੋਜ ਉਪਲਬਧ ਨਹੀਂ ਹੈ</string>
   <string name="dialer_hint_find_contact">ਸੰਪਰਕ ਖੋਜੋ</string>
-  <string name="block_number_search_hint">ਨੰਬਰ ਜੋੜੋ ਜਾਂ ਸੰਪਰਕ ਖੋਜੋ</string>
   <string name="call_log_all_empty">ਤੁਹਾਡਾ ਕਾਲ ਇਤਿਹਾਸ ਖਾਲੀ ਹੈ</string>
   <string name="call_log_all_empty_action">ਇੱਕ ਕਾਲ ਕਰੋ</string>
   <string name="call_log_missed_empty">ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਵੀ ਖੁੰਝੀਆਂ ਕਾਲਾਂ ਨਹੀਂ ਹਨ।</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">ਕਾਲ ਇਤਿਹਾਸ</string>
   <string name="call_log_all_title">ਸਭ</string>
   <string name="call_log_missed_title">ਮਿਸਡ</string>
-  <string name="tab_speed_dial">ਸਪੀਡ ਡਾਇਲ</string>
-  <string name="tab_history">ਕਾਲ ਇਤਿਹਾਸ</string>
   <string name="tab_all_contacts">ਸੰਪਰਕ</string>
-  <string name="tab_voicemail">ਵੌਇਸਮੇਲ</string>
-  <string name="search_shortcut_call_number">%s ਨੂੰ ਕਾਲ ਕਰੋ</string>
   <string name="search_shortcut_create_new_contact">ਨਵਾਂ ਸੰਪਰਕ ਬਣਾਓ</string>
   <string name="search_shortcut_add_to_contact">ਕਿਸੇ ਸੰਪਰਕ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ</string>
   <string name="search_shortcut_send_sms_message">SMS ਭੇਜੋ</string>
   <string name="search_shortcut_make_video_call">ਵੀਡੀਓ ਕਾਲ ਕਰੋ</string>
-  <string name="search_shortcut_block_number">ਨੰਬਰ ਨੂੰ ਬਲੌਕ ਕਰੋ</string>
-  <string name="speed_dial_empty">ਅਜੇ ਤੁਹਾਡੇ ਸਪੀਡ ਡਾਇਲ \'ਤੇ ਕੋਈ ਵੀ ਵਿਅਕਤੀ ਨਹੀਂ ਹੈ</string>
-  <string name="speed_dial_empty_add_favorite_action">ਕੋਈ ਮਨਪਸੰਦ ਸ਼ਾਮਲ ਕਰੋ</string>
-  <string name="remove_contact">ਹਟਾਓ</string>
   <string name="select_all">ਸਭ ਚੁਣੋ</string>
   <string name="call_log_action_video_call">ਵੀਡੀਓ ਕਾਲ</string>
-  <string name="call_log_action_set_up_video">ਵੀਡੀਓ ਕਾਲਿੰਗ ਸੈੱਟਅੱਪ ਕਰੋ</string>
-  <string name="call_log_action_invite_video">ਵੀਡੀਓ ਕਾਲ \'ਤੇ ਸੱਦਾ ਦਿਓ</string>
   <string name="call_log_action_send_message">ਇੱਕ ਸੁਨੇਹਾ ਭੇਜੋ</string>
   <string name="call_log_action_details">ਕਾਲ ਵੇਰਵੇ</string>
   <string name="call_log_action_share_voicemail">ਇਸ \'ਤੇ ਭੇਜੋ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">ਕਾਲਾਂ</string>
   <string name="manage_blocked_numbers_label">ਬਲਾਕ ਕੀਤੇ ਨੰਬਰ</string>
   <string name="voicemail_settings_label">ਵੌਇਸਮੇਲ</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">ਕਾਲ ਬਲੌਕਿੰਗ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਬੰਦ ਹੈ</string>
-  <string name="blocked_numbers_disabled_emergency_desc">ਕਾਲ ਬਲੌਕਿੰਗ ਅਸਮਰੱਥ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ ਇਸ ਫੋਨ ਦੁਆਰਾ ਪਿਛਲੇ 48 ਘੰਟਿਆਂ ਤੋਂ ਐਮਰਜੈਂਸੀ ਸੇਵਾਵਾਂ ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ ਹੋਇਆ ਹੈ। ਇਹ 48 ਘੰਟਿਆਂ ਦਾ ਸਮਾਂ ਪੂਰਾ ਹੋਣ ਤੇੋਂ ਬਾਅਦ ਆਟੋਮੈਟਿਕਲੀ ਮੁੜ-ਸਮਰੱਥ ਹੋ ਜਾਵੇਗੀ।</string>
-  <string name="import_send_to_voicemail_numbers_label">ਆਯਾਤ ਨੰਬਰ</string>
-  <string name="blocked_call_settings_import_description">ਤੁਹਾਡੇ ਚਿੰਨ੍ਹਿਤ ਕੀਤੇ ਪਿਛਲੇ ਕੁਝ ਕਾਲਰ ਹੋਰ ਐਪਸ ਦੁਆਰਾ ਆਟੋਮੈਟਿਕ ਤੌਰ ਤੇ ਵੌਇਸਮੇਲ ਨੂੰ ਭੇਜੇ ਗਏ ਹਨ।</string>
-  <string name="blocked_call_settings_view_numbers_button">ਨੰਬਰ  ਦਿਖਾਓ </string>
-  <string name="blocked_call_settings_import_button">ਆਯਾਤ ਕਰੋ</string>
-  <string name="description_blocked_number_list_delete">ਨੰਬਰ ਨੂੰ ਅਨਬਲੌਕ ਕਰੋ</string>
-  <string name="addBlockedNumber">ਨੰਬਰ ਜੋੜੋ</string>
-  <string name="block_number_footer_message_vvm">ਇਹਨਾਂ ਨੰਬਰਾਂ ਤੋਂ ਕਾਲਾਂ ਬਲੌਕ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ ਅਤੇ ਵੌਇਸਮੇਲਾਂ ਆਪਣੇ ਆਪ ਮਿਟਾ ਦਿੱਤੀਆਂ ਜਾਣਗੀਆਂ।</string>
-  <string name="block_number_footer_message_no_vvm">ਇਹਨਾਂ ਨੰਬਰਾਂ ਤੋਂ ਕਾਲਾਂ ਬਲੌਕ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ, ਪਰ ਇਹ ਹਾਲੇ ਵੀ ਤੁਹਾਡੇ ਲਈ ਵੌਇਸਮੇਲਾਂ ਛੱਡ ਸਕਦੇ ਹਨ।</string>
-  <string name="block_list">ਬਲੌਕ ਕੀਤੇ ਗਏ ਨੰਬਰ</string>
-  <string name="alreadyBlocked">%1$s ਪਹਿਲਾਂ ਹੀ ਬਲੌਕ ਕੀਤਾ ਹੋਇਆ ਹੈ।</string>
   <string name="phone_account_settings_label">ਕਾਲਿੰਗ ਖਾਤੇ</string>
-  <string name="permission_no_speeddial">ਸਪੀਡ ਡਾਇਲ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ, ਸੰਪਰਕ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।</string>
   <string name="permission_no_calllog">ਆਪਣਾ ਕਾਲ ਲੌਗ  ਦੇਖਣ  ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।</string>
-  <string name="permission_no_search">ਆਪਣੇ ਸੰਪਰਕਾਂ ਦੀ ਖੋਜ ਕਰਨ ਲਈ,, ਸੰਪਰਕ ਅਨੁਮਤੀਆਂ ਨੂੰ ਚਾਲੂ ਕਰੋ।</string>
-  <string name="permission_place_call">ਕਾਲ ਕਰਨ ਲਈ, ਫ਼ੋਨ ਅਨੁਮਤੀ ਚਾਲੂ ਕਰੋ।</string>
   <string name="toast_cannot_write_system_settings">ਫ਼ੋਨ ਐਪ ਦੇ ਕੋਲ ਸਿਸਟਮ ਸੈਟਿੰਗਜ਼ ਵਿੱਚ ਲਿੱਖਣ ਦੀ ਅਨੁਮਤੀ ਨਹੀਂ ਹੁੰਦੀ ਹੈ।</string>
   <string name="blocked_number_call_log_label">ਬਲੌਕ ਕੀਤਾ</string>
   <string name="call_log_action_block_report_number">ਸਪੈਮ ਨੂੰ ਬਲੌਕ ਕਰੋ/ਰਿਪੋਰਟ ਕਰੋ</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">ਸਪੈਮ ਨਹੀਂ</string>
   <string name="call_log_action_unblock_number">ਨੰਬਰ ਨੂੰ ਅਨਬਲੌਕ ਕਰੋ</string>
   <string name="spam_number_call_log_label">ਸਪੈਮ</string>
-  <string name="call_composer_connection_failed">%1$s ਆਫ਼ਲਾਈਨ ਹੈ ਅਤੇ ਉਸ \'ਤੇ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ</string>
-  <string name="about_phone_label">ਇਸ ਬਾਰੇ</string>
-  <string name="voicemail_transcription_branding_text">ਇਹ ਟ੍ਰਾਂਸਕ੍ਰਾਈਬ Google ਵੱਲੋਂ ਕੀਤਾ ਗਿਆ ਹੈ</string>
-  <string name="voicemail_transcription_in_progress">ਪ੍ਰਤਿਲਿਪੀ ਬਣਾਈ ਜਾ ਰਹੀ ਹੈ…</string>
-  <string name="voicemail_transcription_failed">ਪ੍ਰਤਿਲਿਪੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।</string>
-  <string name="voicemail_transcription_failed_language_not_supported">ਪ੍ਰਤਿਲਿਪੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਭਾਸ਼ਾ ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ।</string>
-  <string name="voicemail_transcription_failed_no_speech">ਪ੍ਰਤਿਲਿਪੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਕੋਈ ਬੋਲੀ ਨਹੀਂ ਮਿਲੀ।</string>
-  <string name="voicemail_donation_promo_title">ਕੀ ਪ੍ਰਤੀਲਿਪੀ ਦੀ ਸਟੀਕਤਾ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</string>
-  <string name="voicemail_donation_promo_content">Google ਨੂੰ ਪ੍ਰਤੀਲਿਪੀਆਂ ਵਾਲੇ ਇਸ ਅਤੇ ਭਵਿੱਖੀ ਵੌਇਸਮੇਲ ਸੁਨੇਹਿਆਂ ਦੀ ਸਮੀਖਿਆ ਕਰਨ ਦਿਓ। ਉਹਨਾਂ ਨੂੰ ਗੁਮਨਾਮ ਵਜੋਂ ਸਟੋਰ ਕੀਤਾ ਜਾਵੇਗਾ। ਕਿਸੇ ਵੇਲੇ ਵੀ ਸੈਟਿੰਗਾਂ ਬਦਲੋ। %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">ਹਾਂ, ਸਹਿਮਤ ਹਾਂ</string>
-  <string name="voicemail_donation_promo_opt_out">ਨਹੀਂ ਧੰਨਵਾਦ</string>
-  <string name="voicemail_transcription_rating">ਪ੍ਰਤਿਲਿਪੀ ਗੁਣਵੱਤਾ ਨੂੰ ਰੇਟ ਕਰੋ</string>
-  <string name="voicemail_transcription_rating_thanks">ਤੁਹਾਡੇ ਵਿਚਾਰ ਲਈ ਤੁਹਾਡਾ ਧੰਨਵਾਦ</string>
-  <string name="description_rating_good">ਪਸੰਦ ਕਰੋ</string>
-  <string name="description_rating_bad">ਨਾਪਸੰਦ ਕਰੋ</string>
-  <string name="view_conversation">ਦੇਖੋ</string>
-  <string name="ec_data_deleted">ਕਾਲ ਮਿਟਾਈ ਗਈ। ਇਸ ਕਾਲ ਦੌਰਾਨ &quot;ਸੁਨੇਹੇ&quot; ਐਪ ਵਿੱਚ ਸਾਂਝੀਆਂ ਕੀਤੀਆਂ ਅਟੈਚਮੈਂਟਾਂ ਨੂੰ ਦੇਖੋ ਅਤੇ ਮਿਟਾਓ।</string>
-  <string name="multiple_ec_data_deleted">ਕਾਲ ਮਿਟਾਈ ਗਈ। ਕਾਲਾਂ ਦੌਰਾਨ &quot;ਸੁਨੇਹੇ&quot; ਐਪ ਵਿੱਚ ਸਾਂਝੀਆਂ ਕੀਤੀਆਂ ਅਟੈਚਮੈਂਟਾਂ ਨੂੰ ਦੇਖੋ ਅਤੇ ਮਿਟਾਓ।</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-pl/cm_strings.xml b/java/com/android/dialer/app/res/values-pl/cm_strings.xml
new file mode 100644
index 0000000..0357e04
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-pl/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Podczas rozmowy</string>
+    <string name="incall_enable_dnd_title">Włącz tryb \"Nie przeszkadzać\" podczas połączeń</string>
+    <string name="incall_vibrate_outgoing_title">Wibracja przy odebraniu połączenia</string>
+    <string name="incall_vibrate_call_waiting_title">Wibracja przy połączeniu oczekującym</string>
+    <string name="incall_vibrate_hangup_title">Wibracja przy zakończeniu połączenia</string>
+    <string name="incall_vibrate_45_title">Wibracja co minutę</string>
+    <string name="incall_vibrate_45_summary">Wibracja w 45 sekundzie każdej minuty połączenia wychodzącego</string>
+    <string name="incall_dnd_dialog_message">Aby włączyć tryb \"Nie przeszkadzać\", aplikacja \"Telefon\" musi posiadać przyznane uprawnienia do kontrolowania jego statusu.\nZezwól na to.</string>
+    <string name="allow">Zezwól</string>
+    <string name="deny">Odmów</string>
+    <string name="call_recording_category_title">Nagrywanie rozmów</string>
+    <string name="call_recording_format">Format dźwięku</string>
+    <string name="call_via">Zadzwoń przez</string>
+    <string name="call_via_dialog_title">Zadzwoń przez\u2026</string>
+    <string name="call_log_stats_title">Statystyki</string>
+    <string name="action_menu_helplines">Telefony zaufania</string>
+    <string name="default_dialer_text">Musisz ustawić aplikację \"Telefon\", jako aplikację do obsługi telefonu, aby móc jej używać.</string>
+    <string name="default_dialer_action">Ustaw jako domyślną</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-pl/strings.xml b/java/com/android/dialer/app/res/values-pl/strings.xml
index a589f92..57bca61 100644
--- a/java/com/android/dialer/app/res/values-pl/strings.xml
+++ b/java/com/android/dialer/app/res/values-pl/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Klawiatura telefonu</string>
   <string name="callHistoryIconLabel">Historia połączeń</string>
   <string name="action_copy_number_text">Kopiuj numer</string>
-  <string name="copy_transcript_text">Kopiuj zapis</string>
   <string name="action_edit_number_before_call">Edytuj numer przed połączeniem</string>
   <string name="call_log_delete_all">Wyczyść historię połączeń</string>
   <string name="call_log_trash_voicemail">Usuń pocztę głosową</string>
@@ -37,10 +35,7 @@
   <string name="description_playback_seek">Szukaj pozycji odtwarzania</string>
   <string name="action_menu_call_history_description">Historia połączeń</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Więcej opcji</string>
-  <string name="action_menu_dialpad_button">klawiatura</string>
   <string name="dialer_settings_label">Ustawienia</string>
-  <string name="simulator_submenu_label">Symulator</string>
-  <string name="new_ui_launcher_shortcut_label">Utwórz skrót do nowego interfejsu</string>
   <string name="description_entering_bulk_action_mode">Włączono tryb działań zbiorczych</string>
   <string name="description_leaving_bulk_action_mode">Wyłączono tryb działań zbiorczych</string>
   <string name="description_selecting_bulk_action_mode">Wybrano: %1$s</string>
@@ -51,7 +46,6 @@
   <string name="description_video_call">Rozmowa wideo.</string>
   <string name="description_start_voice_search">Wyszukiwanie głosowe</string>
   <string name="voicemail">Poczta głosowa</string>
-  <string name="description_cancel_multi_select">Anuluj tryb działań zbiorczych</string>
   <string name="voicemailMultiSelectDeleteConfirm">Usuń</string>
   <string name="voicemailMultiSelectDeleteCancel">Anuluj</string>
   <string name="voicemailMultiSelectActionBarTitle">Wybrane: %1$s</string>
@@ -67,7 +61,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Wyszukiwanie głosowe jest niedostępne</string>
   <string name="dialer_hint_find_contact">Przeszukuj kontakty</string>
-  <string name="block_number_search_hint">Dodaj numer lub wyszukaj kontakty</string>
   <string name="call_log_all_empty">Twoja historia połączeń jest pusta</string>
   <string name="call_log_all_empty_action">Zadzwoń</string>
   <string name="call_log_missed_empty">Nie masz nieodebranych połączeń.</string>
@@ -75,23 +68,13 @@
   <string name="call_log_activity_title">Historia połączeń</string>
   <string name="call_log_all_title">Wszystkie</string>
   <string name="call_log_missed_title">Nieodebrane</string>
-  <string name="tab_speed_dial">Szybkie wybieranie</string>
-  <string name="tab_history">Historia połączeń</string>
   <string name="tab_all_contacts">Kontakty</string>
-  <string name="tab_voicemail">Poczta głosowa</string>
-  <string name="search_shortcut_call_number">Zadzwoń: %s</string>
   <string name="search_shortcut_create_new_contact">Utwórz nowy kontakt</string>
   <string name="search_shortcut_add_to_contact">Dodaj do kontaktu</string>
   <string name="search_shortcut_send_sms_message">Wyślij SMS-a</string>
   <string name="search_shortcut_make_video_call">Rozmowa wideo</string>
-  <string name="search_shortcut_block_number">Zablokuj numer</string>
-  <string name="speed_dial_empty">Lista szybkiego wybierania jest pusta</string>
-  <string name="speed_dial_empty_add_favorite_action">Dodaj do ulubionych</string>
-  <string name="remove_contact">Usuń</string>
   <string name="select_all">Zaznacz wszystkie</string>
   <string name="call_log_action_video_call">Rozmowa wideo</string>
-  <string name="call_log_action_set_up_video">Skonfiguruj rozmowy wideo</string>
-  <string name="call_log_action_invite_video">Zaproś na rozmowę wideo</string>
   <string name="call_log_action_send_message">Wyślij wiadomość</string>
   <string name="call_log_action_details">Szczegóły połączenia</string>
   <string name="call_log_action_share_voicemail">Wyślij do…</string>
@@ -130,23 +113,8 @@
   <string name="call_settings_label">Połączenia</string>
   <string name="manage_blocked_numbers_label">Zablokowane numery</string>
   <string name="voicemail_settings_label">Poczta głosowa</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blokada połączeń tymczasowo wyłączona</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Blokada połączeń została wyłączona, ponieważ w ciągu ostatnich 48 godzin dzwoniono z tego telefonu na numer alarmowy. Blokada zostanie automatycznie przywrócona po upływie 48 godzin.</string>
-  <string name="import_send_to_voicemail_numbers_label">Zaimportuj numery</string>
-  <string name="blocked_call_settings_import_description">Oznaczyłeś wcześniej niektórych rozmówców, aby byli automatycznie przekierowywani na pocztę głosową przy użyciu innych aplikacji.</string>
-  <string name="blocked_call_settings_view_numbers_button">Pokaż numery</string>
-  <string name="blocked_call_settings_import_button">Importuj</string>
-  <string name="description_blocked_number_list_delete">Odblokuj numer</string>
-  <string name="addBlockedNumber">Dodaj numer</string>
-  <string name="block_number_footer_message_vvm">Połączenia z tych numerów będą blokowane, a wiadomości głosowe będą usuwane automatycznie.</string>
-  <string name="block_number_footer_message_no_vvm">Połączenia z tych numerów będą blokowane, ale dzwoniący wciąż będą mogli zostawiać wiadomości głosowe.</string>
-  <string name="block_list">Zablokowane numery</string>
-  <string name="alreadyBlocked">Numer %1$s jest już zablokowany.</string>
   <string name="phone_account_settings_label">Konta telefoniczne</string>
-  <string name="permission_no_speeddial">Aby włączyć szybkie wybieranie, włącz uprawnienie Kontakty.</string>
   <string name="permission_no_calllog">Aby zobaczyć swój rejestr połączeń, włącz uprawnienie Telefon.</string>
-  <string name="permission_no_search">Aby wyszukać kontakty, włącz uprawnienia Kontakty.</string>
-  <string name="permission_place_call">Aby nawiązać połączenie, włącz uprawnienie Telefon.</string>
   <string name="toast_cannot_write_system_settings">Aplikacja Telefon nie ma uprawnień do zapisu w ustawieniach systemowych.</string>
   <string name="blocked_number_call_log_label">Zablokowany</string>
   <string name="call_log_action_block_report_number">Zablokuj/zgłoś spam</string>
@@ -154,22 +122,4 @@
   <string name="call_log_action_remove_spam">To nie spam</string>
   <string name="call_log_action_unblock_number">Odblokuj numer</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">Użytkownik %1$s jest offline i nie można się z nim skontaktować</string>
-  <string name="about_phone_label">Informacje</string>
-  <string name="voicemail_transcription_branding_text">Transkrypcja: Google</string>
-  <string name="voicemail_transcription_in_progress">Tworzę transkrypcję…</string>
-  <string name="voicemail_transcription_failed">Transkrypcja niedostępna.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkrypcja niedostępna. Język nie jest obsługiwany.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkrypcja niedostępna. Nie wykryto głosu.</string>
-  <string name="voicemail_donation_promo_title">Chcesz pomóc w ulepszaniu jakości transkrypcji?</string>
-  <string name="voicemail_donation_promo_content">Pozwól Google na sprawdzenie tej i przyszłych wiadomości głosowych z transkrypcją. Będą one przechowywane anonimowo. W każdej chwili możesz zmienić to ustawienie. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Tak</string>
-  <string name="voicemail_donation_promo_opt_out">Nie</string>
-  <string name="voicemail_transcription_rating">Oceń jakość transkrypcji</string>
-  <string name="voicemail_transcription_rating_thanks">Dziękujemy za opinię</string>
-  <string name="description_rating_good">Podoba mi się</string>
-  <string name="description_rating_bad">Nie podoba mi się</string>
-  <string name="view_conversation">Wyświetl</string>
-  <string name="ec_data_deleted">Połączenie zostało usunięte. Załączniki udostępnione podczas tego połączenia możesz wyświetlić i usunąć w Wiadomościach.</string>
-  <string name="multiple_ec_data_deleted">Połączenia zostały usunięte. Załączniki udostępnione podczas połączeń możesz wyświetlić i usunąć w Wiadomościach.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-pt-rBR/cm_strings.xml b/java/com/android/dialer/app/res/values-pt-rBR/cm_strings.xml
new file mode 100644
index 0000000..1b7f14f
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-pt-rBR/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Em chamada</string>
+    <string name="incall_enable_dnd_title">Ativar o modo Não Perturbe durante as chamadas</string>
+    <string name="incall_vibrate_outgoing_title">Vibrar ao atender</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrar com chamada em espera</string>
+    <string name="incall_vibrate_hangup_title">Vibrar ao terminar a chamada</string>
+    <string name="incall_vibrate_45_title">Vibrar a cada minuto</string>
+    <string name="incall_vibrate_45_summary">Vibrar aos 45 segundos de cada minuto durante chamadas efetuadas</string>
+    <string name="incall_dnd_dialog_message">Para ativar o modo Não Perturbe, o aplicativo Telefone precisa ter permissão para controlar o modo Não Perturbe.\nPor favor, conceda-a.</string>
+    <string name="allow">Permitir</string>
+    <string name="deny">Negar</string>
+    <string name="call_recording_category_title">Gravação de chamadas</string>
+    <string name="call_recording_format">Formato de áudio</string>
+    <string name="call_via">Chamar via</string>
+    <string name="call_via_dialog_title">Chamar via\u2026</string>
+    <string name="call_log_stats_title">Estatísticas</string>
+    <string name="action_menu_helplines">Linhas de ajuda</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
index aae2d43..e376e89 100644
--- a/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt-rBR/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefone</string>
-  <string name="launcherDialpadActivityLabel">Teclado do smartphone</string>
   <string name="callHistoryIconLabel">Histórico de chamadas</string>
   <string name="action_copy_number_text">Copiar número</string>
-  <string name="copy_transcript_text">Copiar transcrição</string>
   <string name="action_edit_number_before_call">Editar número antes de chamar</string>
   <string name="call_log_delete_all">Limpar histórico de chamadas</string>
   <string name="call_log_trash_voicemail">Excluir correio de voz</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Procurar posição de reprodução</string>
   <string name="action_menu_call_history_description">Histórico de chamadas</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Mais opções</string>
-  <string name="action_menu_dialpad_button">Teclado</string>
   <string name="dialer_settings_label">Configurações</string>
-  <string name="simulator_submenu_label">Simulador</string>
-  <string name="new_ui_launcher_shortcut_label">Criar atalho para a nova IU</string>
   <string name="description_entering_bulk_action_mode">Entrando no modo de ação em massa</string>
   <string name="description_leaving_bulk_action_mode">Saindo do modo de ação em massa</string>
   <string name="description_selecting_bulk_action_mode">%1$s selecionado</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videochamada.</string>
   <string name="description_start_voice_search">Iniciar pesquisa por voz</string>
   <string name="voicemail">Correio de voz</string>
-  <string name="description_cancel_multi_select">Cancelar modo de ações em lote</string>
   <string name="voicemailMultiSelectDeleteConfirm">Excluir</string>
   <string name="voicemailMultiSelectDeleteCancel">Cancelar</string>
   <string name="voicemailMultiSelectActionBarTitle">Itens selecionados: %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">A pesquisa por voz não está disponível</string>
   <string name="dialer_hint_find_contact">Pesquisar contatos</string>
-  <string name="block_number_search_hint">Adicionar número ou pesquisar contatos</string>
   <string name="call_log_all_empty">Seu histórico de chamadas está vazio</string>
   <string name="call_log_all_empty_action">Fazer uma chamada</string>
   <string name="call_log_missed_empty">Você não tem chamadas perdidas.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Histórico de chamadas</string>
   <string name="call_log_all_title">Todas</string>
   <string name="call_log_missed_title">Perdidas</string>
-  <string name="tab_speed_dial">Discagem rápida</string>
-  <string name="tab_history">Histórico de chamadas</string>
   <string name="tab_all_contacts">Contatos</string>
-  <string name="tab_voicemail">Correio de voz</string>
-  <string name="search_shortcut_call_number">Ligar para %s</string>
   <string name="search_shortcut_create_new_contact">Criar novo contato</string>
   <string name="search_shortcut_add_to_contact">Adicionar a um contato</string>
   <string name="search_shortcut_send_sms_message">Enviar SMS</string>
   <string name="search_shortcut_make_video_call">Fazer videochamada</string>
-  <string name="search_shortcut_block_number">Bloquear número</string>
-  <string name="speed_dial_empty">Ainda não há ninguém na sua discagem rápida</string>
-  <string name="speed_dial_empty_add_favorite_action">Adicionar favorito</string>
-  <string name="remove_contact">Remover</string>
   <string name="select_all">Selecionar tudo</string>
   <string name="call_log_action_video_call">Videochamada</string>
-  <string name="call_log_action_set_up_video">Configurar videochamada</string>
-  <string name="call_log_action_invite_video">Convidar para videochamada</string>
   <string name="call_log_action_send_message">Enviar uma mensagem</string>
   <string name="call_log_action_details">Detalhes da chamada</string>
   <string name="call_log_action_share_voicemail">Enviar para…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Chamadas</string>
   <string name="manage_blocked_numbers_label">Números bloqueados</string>
   <string name="voicemail_settings_label">Correio de voz</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Bloqueio de chamadas temporiamente desativado</string>
-  <string name="blocked_numbers_disabled_emergency_desc">O bloqueio de chamadas foi desativado porque você entrou em contato com serviços de emergência usando este telefone nas últimas 48 horas. Ele será reativado automaticamente depois de um período de 48 horas.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importar números</string>
-  <string name="blocked_call_settings_import_description">Anteriormente, você marcou alguns autores de chamada para serem enviados automaticamente para o correio de voz por meio de outros apps.</string>
-  <string name="blocked_call_settings_view_numbers_button">Ver números</string>
-  <string name="blocked_call_settings_import_button">Importar</string>
-  <string name="description_blocked_number_list_delete">Desbloquear número</string>
-  <string name="addBlockedNumber">Adicionar número</string>
-  <string name="block_number_footer_message_vvm">Chamadas a partir destes números serão bloqueadas. Correios de voz serão excluídos automaticamente.</string>
-  <string name="block_number_footer_message_no_vvm">Chamadas feitas a partir destes números serão bloqueadas, mas é possível que eles ainda consigam deixar correios de voz para você.</string>
-  <string name="block_list">Números bloqueados</string>
-  <string name="alreadyBlocked">O número %1$s já está bloqueado.</string>
   <string name="phone_account_settings_label">Contas de chamadas</string>
-  <string name="permission_no_speeddial">Para ativar a discagem rápida, ative a permissão para o app Contatos.</string>
   <string name="permission_no_calllog">Para ver seu registro de chamadas, ative a permissão para o app Telefone.</string>
-  <string name="permission_no_search">Para pesquisar seus contatos, ative as permissões para \"Contatos\".</string>
-  <string name="permission_place_call">Para fazer uma chamada, ative a permissão para o app Telefone.</string>
   <string name="toast_cannot_write_system_settings">O app Telefone não tem permissão para gravar nas configurações do sistema.</string>
   <string name="blocked_number_call_log_label">Bloqueado</string>
   <string name="call_log_action_block_report_number">Bloquear/denunciar spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Não é spam</string>
   <string name="call_log_action_unblock_number">Desbloquear número</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s está off-line e não é possível entrar em contato</string>
-  <string name="about_phone_label">Sobre</string>
-  <string name="voicemail_transcription_branding_text">Transcrito pelo Google</string>
-  <string name="voicemail_transcription_in_progress">Transcrevendo…</string>
-  <string name="voicemail_transcription_failed">Transcrição indisponível.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcrição indisponível: o idioma é incompatível.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcrição indisponível: nenhuma voz foi detectada.</string>
-  <string name="voicemail_donation_promo_title">Ajudar a tornar a transcrição mais precisa?</string>
-  <string name="voicemail_donation_promo_content">Permita que o Google analise esta e as próximas mensagens do correio de voz usando as transcrições. As mensagens serão armazenadas anonimamente. Altere as configurações a qualquer momento. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Sim</string>
-  <string name="voicemail_donation_promo_opt_out">Não</string>
-  <string name="voicemail_transcription_rating">Avaliar transcrição</string>
-  <string name="voicemail_transcription_rating_thanks">Agradecemos seu feedback</string>
-  <string name="description_rating_good">Marcar como \"Gostei\"</string>
-  <string name="description_rating_bad">Marcar como \"Não gostei\"</string>
-  <string name="view_conversation">Ver</string>
-  <string name="ec_data_deleted">A chamada foi excluída. Veja e exclua os anexos compartilhados durante a chamada no Mensagens.</string>
-  <string name="multiple_ec_data_deleted">As chamadas foram excluídas. Veja e exclua os anexos compartilhados durante as chamadas no Mensagens.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-pt-rPT/cm_strings.xml b/java/com/android/dialer/app/res/values-pt-rPT/cm_strings.xml
new file mode 100644
index 0000000..b978b63
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-pt-rPT/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Em chamada</string>
+    <string name="incall_enable_dnd_title">Ativar o modo Não Incomodar durante as chamadas</string>
+    <string name="incall_vibrate_outgoing_title">Vibrar ao atender</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrar com chamada em espera</string>
+    <string name="incall_vibrate_hangup_title">Vibrar ao terminar a chamada</string>
+    <string name="incall_vibrate_45_title">Vibrar a cada minuto</string>
+    <string name="incall_vibrate_45_summary">Vibrar aos 45 segundos de cada minuto durante chamadas efetuadas</string>
+    <string name="incall_dnd_dialog_message">Para poder ativar o modo Não Incomodar, a aplicação do Telefone necessita de permissões para controlar o estado do modo Não Incomodar.\nPor favor, conceda a permissão necessária.</string>
+    <string name="allow">Permitir</string>
+    <string name="deny">Negar</string>
+    <string name="call_recording_category_title">Gravação de chamada</string>
+    <string name="call_recording_format">Formato do áudio</string>
+    <string name="call_via">Chamar através de</string>
+    <string name="call_via_dialog_title">Chamar através de\u2026</string>
+    <string name="call_log_stats_title">Estatísticas</string>
+    <string name="action_menu_helplines">Linhas de apoio</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
index 558d0e0..4d1c62f 100644
--- a/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt-rPT/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telemóvel</string>
-  <string name="launcherDialpadActivityLabel">Teclado do telemóvel</string>
   <string name="callHistoryIconLabel">Histórico de chamadas</string>
   <string name="action_copy_number_text">Copiar número</string>
-  <string name="copy_transcript_text">Copiar transcrição</string>
   <string name="action_edit_number_before_call">Editar número antes de ligar</string>
   <string name="call_log_delete_all">Limpar histórico de chamadas</string>
   <string name="call_log_trash_voicemail">Eliminar correio de voz</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Procurar a posição da reprodução</string>
   <string name="action_menu_call_history_description">Histórico de chamadas</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Mais opções</string>
-  <string name="action_menu_dialpad_button">teclado</string>
   <string name="dialer_settings_label">Definições</string>
-  <string name="simulator_submenu_label">Simulador</string>
-  <string name="new_ui_launcher_shortcut_label">Criar novo atalho de IU</string>
   <string name="description_entering_bulk_action_mode">A entrar no modo de ação em massa…</string>
   <string name="description_leaving_bulk_action_mode">Saiu do modo de ação em massa</string>
   <string name="description_selecting_bulk_action_mode">%1$s selecionado</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videochamada.</string>
   <string name="description_start_voice_search">Iniciar pesquisa por voz</string>
   <string name="voicemail">Correio de voz</string>
-  <string name="description_cancel_multi_select">Cancelar modo de ações em lote</string>
   <string name="voicemailMultiSelectDeleteConfirm">Eliminar</string>
   <string name="voicemailMultiSelectDeleteCancel">Cancelar</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s selecionada(s)</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Pesquisa por voz não disponível</string>
   <string name="dialer_hint_find_contact">Pesquisar contactos</string>
-  <string name="block_number_search_hint">Adic. n.º ou pesq. contactos</string>
   <string name="call_log_all_empty">O seu histórico de chamadas está vazio</string>
   <string name="call_log_all_empty_action">Efetuar uma chamada</string>
   <string name="call_log_missed_empty">Não tem chamadas não atendidas.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Histórico de chamadas</string>
   <string name="call_log_all_title">Todas</string>
   <string name="call_log_missed_title">Não atendidas</string>
-  <string name="tab_speed_dial">Marcação rápida</string>
-  <string name="tab_history">Histórico de Chamadas</string>
   <string name="tab_all_contacts">Contactos</string>
-  <string name="tab_voicemail">Correio de voz</string>
-  <string name="search_shortcut_call_number">Telefonar para %s</string>
   <string name="search_shortcut_create_new_contact">Criar novo contacto</string>
   <string name="search_shortcut_add_to_contact">Adicionar a um contacto</string>
   <string name="search_shortcut_send_sms_message">Enviar SMS</string>
   <string name="search_shortcut_make_video_call">Fazer videochamada</string>
-  <string name="search_shortcut_block_number">Bloquear número</string>
-  <string name="speed_dial_empty">Ainda não tem ninguém na marcação rápida</string>
-  <string name="speed_dial_empty_add_favorite_action">Adicionar um favorito</string>
-  <string name="remove_contact">Remover</string>
   <string name="select_all">Selecionar tudo</string>
   <string name="call_log_action_video_call">Videochamada</string>
-  <string name="call_log_action_set_up_video">Configurar videochamadas</string>
-  <string name="call_log_action_invite_video">Convidar para videochamada</string>
   <string name="call_log_action_send_message">Enviar uma mensagem</string>
   <string name="call_log_action_details">Detalhes da chamada</string>
   <string name="call_log_action_share_voicemail">Enviar para…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Chamadas</string>
   <string name="manage_blocked_numbers_label">Números bloqueados</string>
   <string name="voicemail_settings_label">Correio de voz</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Bloqueio de chamadas tempor. desativado</string>
-  <string name="blocked_numbers_disabled_emergency_desc">O bloqueio de chamadas foi desativado porque contactou os serviços de emergência a partir deste telemóvel nas últimas 48 horas. O bloqueio será automaticamente reativado assim que expirar o período de 48 horas.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importar números</string>
-  <string name="blocked_call_settings_import_description">Anteriormente, marcou alguns autores de chamadas para serem automaticamente enviados para o correio de voz através de outras aplicações.</string>
-  <string name="blocked_call_settings_view_numbers_button">Ver números</string>
-  <string name="blocked_call_settings_import_button">Importar</string>
-  <string name="description_blocked_number_list_delete">Desbloquear número</string>
-  <string name="addBlockedNumber">Adicionar número</string>
-  <string name="block_number_footer_message_vvm">As chamadas a partir destes números serão bloqueadas e as mensagens de correio de voz serão automaticamente eliminadas.</string>
-  <string name="block_number_footer_message_no_vvm">As chamadas a partir destes números serão bloqueadas, mas os respetivos autores poderão deixar-lhe mensagens de correio de voz.</string>
-  <string name="block_list">Números bloqueados</string>
-  <string name="alreadyBlocked">%1$s já está bloqueado.</string>
   <string name="phone_account_settings_label">Contas de chamadas</string>
-  <string name="permission_no_speeddial">Para ativar a marcação rápida, ative a autorização Contactos.</string>
   <string name="permission_no_calllog">Para ver o registo de chamadas, ative a autorização Telemóvel.</string>
-  <string name="permission_no_search">Para pesquisar os seus contactos, ative as autorizações Contactos.</string>
-  <string name="permission_place_call">Para efetuar uma chamada, ative a autorização Telemóvel.</string>
   <string name="toast_cannot_write_system_settings">A aplicação Telefone não tem autorização para gravar nas definições do sistema.</string>
   <string name="blocked_number_call_log_label">Bloqueado</string>
   <string name="call_log_action_block_report_number">Bloquear/denunciar spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Não é spam</string>
   <string name="call_log_action_unblock_number">Desbloquear número</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s está offline e não pode ser contactado</string>
-  <string name="about_phone_label">Acerca de</string>
-  <string name="voicemail_transcription_branding_text">Transcrito pelo Google</string>
-  <string name="voicemail_transcription_in_progress">A transcrever…</string>
-  <string name="voicemail_transcription_failed">Transcrição não disponível</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcrição não disponível. Idioma não suportado.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcrição não disponível. Não foi detetada nenhuma voz.</string>
-  <string name="voicemail_donation_promo_title">Ajudar a melhorar a precisão das transcrições?</string>
-  <string name="voicemail_donation_promo_content">Permita que a Google reveja esta e as futuras mensagens de correio de voz com transcrições. Serão armazenadas anonimamente. Pode alterar as Definições a qualquer momento.%1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Sim, aceito</string>
-  <string name="voicemail_donation_promo_opt_out">Não, obrigado</string>
-  <string name="voicemail_transcription_rating">Aval. qualidade da transcrição</string>
-  <string name="voicemail_transcription_rating_thanks">Obrigado pelo seu comentário</string>
-  <string name="description_rating_good">Gosto</string>
-  <string name="description_rating_bad">Não gosto</string>
-  <string name="view_conversation">Ver</string>
-  <string name="ec_data_deleted">A chamada foi eliminada. Veja e elimine os anexos partilhados durante esta chamada na aplicação Mensagens.</string>
-  <string name="multiple_ec_data_deleted">As chamadas foram eliminadas. Veja e elimine os anexos partilhados durante as chamadas na aplicação Mensagens.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-pt/strings.xml b/java/com/android/dialer/app/res/values-pt/strings.xml
index aae2d43..e376e89 100644
--- a/java/com/android/dialer/app/res/values-pt/strings.xml
+++ b/java/com/android/dialer/app/res/values-pt/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefone</string>
-  <string name="launcherDialpadActivityLabel">Teclado do smartphone</string>
   <string name="callHistoryIconLabel">Histórico de chamadas</string>
   <string name="action_copy_number_text">Copiar número</string>
-  <string name="copy_transcript_text">Copiar transcrição</string>
   <string name="action_edit_number_before_call">Editar número antes de chamar</string>
   <string name="call_log_delete_all">Limpar histórico de chamadas</string>
   <string name="call_log_trash_voicemail">Excluir correio de voz</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Procurar posição de reprodução</string>
   <string name="action_menu_call_history_description">Histórico de chamadas</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Mais opções</string>
-  <string name="action_menu_dialpad_button">Teclado</string>
   <string name="dialer_settings_label">Configurações</string>
-  <string name="simulator_submenu_label">Simulador</string>
-  <string name="new_ui_launcher_shortcut_label">Criar atalho para a nova IU</string>
   <string name="description_entering_bulk_action_mode">Entrando no modo de ação em massa</string>
   <string name="description_leaving_bulk_action_mode">Saindo do modo de ação em massa</string>
   <string name="description_selecting_bulk_action_mode">%1$s selecionado</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videochamada.</string>
   <string name="description_start_voice_search">Iniciar pesquisa por voz</string>
   <string name="voicemail">Correio de voz</string>
-  <string name="description_cancel_multi_select">Cancelar modo de ações em lote</string>
   <string name="voicemailMultiSelectDeleteConfirm">Excluir</string>
   <string name="voicemailMultiSelectDeleteCancel">Cancelar</string>
   <string name="voicemailMultiSelectActionBarTitle">Itens selecionados: %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">A pesquisa por voz não está disponível</string>
   <string name="dialer_hint_find_contact">Pesquisar contatos</string>
-  <string name="block_number_search_hint">Adicionar número ou pesquisar contatos</string>
   <string name="call_log_all_empty">Seu histórico de chamadas está vazio</string>
   <string name="call_log_all_empty_action">Fazer uma chamada</string>
   <string name="call_log_missed_empty">Você não tem chamadas perdidas.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Histórico de chamadas</string>
   <string name="call_log_all_title">Todas</string>
   <string name="call_log_missed_title">Perdidas</string>
-  <string name="tab_speed_dial">Discagem rápida</string>
-  <string name="tab_history">Histórico de chamadas</string>
   <string name="tab_all_contacts">Contatos</string>
-  <string name="tab_voicemail">Correio de voz</string>
-  <string name="search_shortcut_call_number">Ligar para %s</string>
   <string name="search_shortcut_create_new_contact">Criar novo contato</string>
   <string name="search_shortcut_add_to_contact">Adicionar a um contato</string>
   <string name="search_shortcut_send_sms_message">Enviar SMS</string>
   <string name="search_shortcut_make_video_call">Fazer videochamada</string>
-  <string name="search_shortcut_block_number">Bloquear número</string>
-  <string name="speed_dial_empty">Ainda não há ninguém na sua discagem rápida</string>
-  <string name="speed_dial_empty_add_favorite_action">Adicionar favorito</string>
-  <string name="remove_contact">Remover</string>
   <string name="select_all">Selecionar tudo</string>
   <string name="call_log_action_video_call">Videochamada</string>
-  <string name="call_log_action_set_up_video">Configurar videochamada</string>
-  <string name="call_log_action_invite_video">Convidar para videochamada</string>
   <string name="call_log_action_send_message">Enviar uma mensagem</string>
   <string name="call_log_action_details">Detalhes da chamada</string>
   <string name="call_log_action_share_voicemail">Enviar para…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Chamadas</string>
   <string name="manage_blocked_numbers_label">Números bloqueados</string>
   <string name="voicemail_settings_label">Correio de voz</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Bloqueio de chamadas temporiamente desativado</string>
-  <string name="blocked_numbers_disabled_emergency_desc">O bloqueio de chamadas foi desativado porque você entrou em contato com serviços de emergência usando este telefone nas últimas 48 horas. Ele será reativado automaticamente depois de um período de 48 horas.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importar números</string>
-  <string name="blocked_call_settings_import_description">Anteriormente, você marcou alguns autores de chamada para serem enviados automaticamente para o correio de voz por meio de outros apps.</string>
-  <string name="blocked_call_settings_view_numbers_button">Ver números</string>
-  <string name="blocked_call_settings_import_button">Importar</string>
-  <string name="description_blocked_number_list_delete">Desbloquear número</string>
-  <string name="addBlockedNumber">Adicionar número</string>
-  <string name="block_number_footer_message_vvm">Chamadas a partir destes números serão bloqueadas. Correios de voz serão excluídos automaticamente.</string>
-  <string name="block_number_footer_message_no_vvm">Chamadas feitas a partir destes números serão bloqueadas, mas é possível que eles ainda consigam deixar correios de voz para você.</string>
-  <string name="block_list">Números bloqueados</string>
-  <string name="alreadyBlocked">O número %1$s já está bloqueado.</string>
   <string name="phone_account_settings_label">Contas de chamadas</string>
-  <string name="permission_no_speeddial">Para ativar a discagem rápida, ative a permissão para o app Contatos.</string>
   <string name="permission_no_calllog">Para ver seu registro de chamadas, ative a permissão para o app Telefone.</string>
-  <string name="permission_no_search">Para pesquisar seus contatos, ative as permissões para \"Contatos\".</string>
-  <string name="permission_place_call">Para fazer uma chamada, ative a permissão para o app Telefone.</string>
   <string name="toast_cannot_write_system_settings">O app Telefone não tem permissão para gravar nas configurações do sistema.</string>
   <string name="blocked_number_call_log_label">Bloqueado</string>
   <string name="call_log_action_block_report_number">Bloquear/denunciar spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Não é spam</string>
   <string name="call_log_action_unblock_number">Desbloquear número</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s está off-line e não é possível entrar em contato</string>
-  <string name="about_phone_label">Sobre</string>
-  <string name="voicemail_transcription_branding_text">Transcrito pelo Google</string>
-  <string name="voicemail_transcription_in_progress">Transcrevendo…</string>
-  <string name="voicemail_transcription_failed">Transcrição indisponível.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcrição indisponível: o idioma é incompatível.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcrição indisponível: nenhuma voz foi detectada.</string>
-  <string name="voicemail_donation_promo_title">Ajudar a tornar a transcrição mais precisa?</string>
-  <string name="voicemail_donation_promo_content">Permita que o Google analise esta e as próximas mensagens do correio de voz usando as transcrições. As mensagens serão armazenadas anonimamente. Altere as configurações a qualquer momento. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Sim</string>
-  <string name="voicemail_donation_promo_opt_out">Não</string>
-  <string name="voicemail_transcription_rating">Avaliar transcrição</string>
-  <string name="voicemail_transcription_rating_thanks">Agradecemos seu feedback</string>
-  <string name="description_rating_good">Marcar como \"Gostei\"</string>
-  <string name="description_rating_bad">Marcar como \"Não gostei\"</string>
-  <string name="view_conversation">Ver</string>
-  <string name="ec_data_deleted">A chamada foi excluída. Veja e exclua os anexos compartilhados durante a chamada no Mensagens.</string>
-  <string name="multiple_ec_data_deleted">As chamadas foram excluídas. Veja e exclua os anexos compartilhados durante as chamadas no Mensagens.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ro/cm_strings.xml b/java/com/android/dialer/app/res/values-ro/cm_strings.xml
new file mode 100644
index 0000000..9fa8802
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-ro/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">În timpul apelului</string>
+    <string name="incall_enable_dnd_title">Permiteți Nu Deranjați în timpul apelurilor</string>
+    <string name="incall_vibrate_outgoing_title">Vibrare la răspuns</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrare la apel în așteptare</string>
+    <string name="incall_vibrate_hangup_title">Vibrare la terminare apel</string>
+    <string name="incall_vibrate_45_title">Vibrare la fiecare minut</string>
+    <string name="incall_vibrate_45_summary">Vibrează la secunda 45 a fiecărui minut în timpul convorbirilor efectuate</string>
+    <string name="incall_dnd_dialog_message">Pentru a permite Nu Deranjaţi, aplicația Telefon are nevoie de permisiunea de a controla modul Nu Deranjaţi.\nVă rugăm acordați această permisiune.</string>
+    <string name="allow">Permiteți</string>
+    <string name="deny">Refuzați</string>
+    <string name="call_recording_category_title">Înregistrare apel</string>
+    <string name="call_recording_format">Format audio</string>
+    <string name="call_via">Apel prin</string>
+    <string name="call_via_dialog_title">Apel prin\u2026</string>
+    <string name="call_log_stats_title">Statistici</string>
+    <string name="action_menu_helplines">Linii ajutătoare</string>
+    <string name="default_dialer_text">Trebuie să setați Telefon ca aplicație implicită pentru apeluri pentru a o folosi.</string>
+    <string name="default_dialer_action">Setează ca implicit</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-ro/strings.xml b/java/com/android/dialer/app/res/values-ro/strings.xml
index c8125a1..c2ad8d3 100644
--- a/java/com/android/dialer/app/res/values-ro/strings.xml
+++ b/java/com/android/dialer/app/res/values-ro/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Tastatura telefonului</string>
   <string name="callHistoryIconLabel">Istoricul apelurilor</string>
   <string name="action_copy_number_text">Copiați numărul</string>
-  <string name="copy_transcript_text">Copiați transcrierea</string>
   <string name="action_edit_number_before_call">Modificați numărul înainte de apelare</string>
   <string name="call_log_delete_all">Ștergeți istoricul apelurilor</string>
   <string name="call_log_trash_voicemail">Ștergeți mesajul vocal</string>
@@ -36,10 +34,7 @@
   <string name="description_playback_seek">Căutați poziția de redare</string>
   <string name="action_menu_call_history_description">Istoricul apelurilor</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Mai multe opțiuni</string>
-  <string name="action_menu_dialpad_button">tastatură</string>
   <string name="dialer_settings_label">Setări</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Creați comandă rapidă IU nouă</string>
   <string name="description_entering_bulk_action_mode">Se intră în modul acțiune în bloc</string>
   <string name="description_leaving_bulk_action_mode">Ați ieșit din modul acțiune în bloc</string>
   <string name="description_selecting_bulk_action_mode">S-a selectat %1$s</string>
@@ -50,7 +45,6 @@
   <string name="description_video_call">Apel video.</string>
   <string name="description_start_voice_search">Începeți căutarea vocală</string>
   <string name="voicemail">Mesagerie vocală</string>
-  <string name="description_cancel_multi_select">Anulați modul de acțiuni în lot</string>
   <string name="voicemailMultiSelectDeleteConfirm">Ștergeți</string>
   <string name="voicemailMultiSelectDeleteCancel">Anulați</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s selectate</string>
@@ -65,7 +59,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Căutarea vocală nu este disponibilă</string>
   <string name="dialer_hint_find_contact">Căutați în Agendă</string>
-  <string name="block_number_search_hint">Adăugați număr/căutați contacte</string>
   <string name="call_log_all_empty">Istoricul apelurilor este gol</string>
   <string name="call_log_all_empty_action">Apelați</string>
   <string name="call_log_missed_empty">Nu aveți niciun apel nepreluat.</string>
@@ -73,23 +66,13 @@
   <string name="call_log_activity_title">Istoricul apelurilor</string>
   <string name="call_log_all_title">Toate</string>
   <string name="call_log_missed_title">Nepreluate</string>
-  <string name="tab_speed_dial">Apelare rapidă</string>
-  <string name="tab_history">Istoricul apelurilor</string>
   <string name="tab_all_contacts">Agendă</string>
-  <string name="tab_voicemail">Mesagerie vocală</string>
-  <string name="search_shortcut_call_number">Apelați %s</string>
   <string name="search_shortcut_create_new_contact">Creați o intrare nouă</string>
   <string name="search_shortcut_add_to_contact">Adăugați la o intrare</string>
   <string name="search_shortcut_send_sms_message">Trimiteți SMS</string>
   <string name="search_shortcut_make_video_call">Inițiați un apel video</string>
-  <string name="search_shortcut_block_number">Blocați numărul</string>
-  <string name="speed_dial_empty">Nicio persoană de contact setată pentru apelarea rapidă</string>
-  <string name="speed_dial_empty_add_favorite_action">Adăugați o persoană de contact preferată</string>
-  <string name="remove_contact">Eliminați</string>
   <string name="select_all">Selectați tot</string>
   <string name="call_log_action_video_call">Apel video</string>
-  <string name="call_log_action_set_up_video">Configurați apelarea video</string>
-  <string name="call_log_action_invite_video">Invitați la un apel video</string>
   <string name="call_log_action_send_message">Trimiteți un mesaj</string>
   <string name="call_log_action_details">Detaliile apelului</string>
   <string name="call_log_action_share_voicemail">Trimiteți către …</string>
@@ -128,23 +111,8 @@
   <string name="call_settings_label">Apeluri</string>
   <string name="manage_blocked_numbers_label">Numere blocate</string>
   <string name="voicemail_settings_label">Mesagerie vocală</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blocarea apelurilor e dezactivată temporar</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Blocarea apelurilor a fost dezactivată, deoarece ați contactat serviciile de urgență de pe acest telefon în ultimele 48 de ore. Funcția va fi reactivată automat după ce perioada de 48 de ore va expira.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importați numere</string>
-  <string name="blocked_call_settings_import_description">Anterior, ați marcat câțiva apelanți pentru a fi redirecționați automat spre mesageria vocală prin alte aplicații.</string>
-  <string name="blocked_call_settings_view_numbers_button">Vedeți numerele</string>
-  <string name="blocked_call_settings_import_button">Importați</string>
-  <string name="description_blocked_number_list_delete">Deblocați numărul</string>
-  <string name="addBlockedNumber">Adăugați un număr</string>
-  <string name="block_number_footer_message_vvm">Apelurile de la aceste numere vor fi blocate, iar mesajele vocale vor fi șterse automat.</string>
-  <string name="block_number_footer_message_no_vvm">Apelurile de la aceste numere vor fi blocate, dar apelanții vor putea totuși să vă lase mesaje vocale.</string>
-  <string name="block_list">Numere blocate</string>
-  <string name="alreadyBlocked">%1$s este deja blocat.</string>
   <string name="phone_account_settings_label">Conturi pentru apelare</string>
-  <string name="permission_no_speeddial">Pentru a activa apelarea rapidă, activați permisiunea Agendă.</string>
   <string name="permission_no_calllog">Pentru a vedea jurnalul de apeluri, activați permisiunea Telefon.</string>
-  <string name="permission_no_search">Pentru a căuta în persoanele de contact, activați permisiunea Agendă.</string>
-  <string name="permission_place_call">Pentru a apela, activați permisiunea Telefon.</string>
   <string name="toast_cannot_write_system_settings">Aplicația Telefon nu are permisiunea să modifice setările de sistem.</string>
   <string name="blocked_number_call_log_label">Blocat</string>
   <string name="call_log_action_block_report_number">Blocați/raportați ca spam</string>
@@ -152,22 +120,4 @@
   <string name="call_log_action_remove_spam">Nu este spam</string>
   <string name="call_log_action_unblock_number">Deblocați numărul</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s este offline și nu poate fi contactat(ă)</string>
-  <string name="about_phone_label">Despre</string>
-  <string name="voicemail_transcription_branding_text">Transcris de Google</string>
-  <string name="voicemail_transcription_in_progress">Se transcrie…</string>
-  <string name="voicemail_transcription_failed">Transcrierea nu e disponibilă.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transcrierea nu e disponibilă. Limba nu e acceptată.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transcrierea nu e disponibilă. Nu s-a detectat nimic rostit.</string>
-  <string name="voicemail_donation_promo_title">Vreți să contribuiți la îmbunătățirea acurateței transcrierii?</string>
-  <string name="voicemail_donation_promo_content">Permiteți serviciului Google să examineze aceste mesaj vocal și pe cele viitoare cu transcrieri. Ele vor fi stocate anonim. Puteți modifica setările oricând. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Da, accept</string>
-  <string name="voicemail_donation_promo_opt_out">Nu, mulțumesc</string>
-  <string name="voicemail_transcription_rating">Evaluați calitatea</string>
-  <string name="voicemail_transcription_rating_thanks">Vă mulțumim pentru feedback!</string>
-  <string name="description_rating_good">Apreciez</string>
-  <string name="description_rating_bad">Nu apreciez</string>
-  <string name="view_conversation">Afișați</string>
-  <string name="ec_data_deleted">Apelul a fost șters. Afișați și ștergeți atașamentele trimise în timpul acestui apel în Messages.</string>
-  <string name="multiple_ec_data_deleted">Apelurile au fost șterse. Afișați și ștergeți atașamentele trimise în timpul apelurilor în Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ru/cm_strings.xml b/java/com/android/dialer/app/res/values-ru/cm_strings.xml
new file mode 100644
index 0000000..8317f24
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-ru/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Во время вызова</string>
+    <string name="incall_enable_dnd_title">Включать режим Не беспокоить во время вызова</string>
+    <string name="incall_vibrate_outgoing_title">Вибрировать при ответе</string>
+    <string name="incall_vibrate_call_waiting_title">Вибрировать при ожидании</string>
+    <string name="incall_vibrate_hangup_title">Вибрировать при разъединении</string>
+    <string name="incall_vibrate_45_title">Вибрировать каждую минуту</string>
+    <string name="incall_vibrate_45_summary">Вибрировать на 45-ой секунде каждой минуты во время исходящих вызовов</string>
+    <string name="incall_dnd_dialog_message">Для включения режима Не беспокоить приложению Телефон должно быть разрешено управление статусом режима Не беспокоить.\nПожалуйста, предоставьте разрешение.</string>
+    <string name="allow">Разрешить</string>
+    <string name="deny">Отклонить</string>
+    <string name="call_recording_category_title">Запись вызова</string>
+    <string name="call_recording_format">Формат аудио</string>
+    <string name="call_via">Позвонить через</string>
+    <string name="call_via_dialog_title">Позвонить через\u2026</string>
+    <string name="call_log_stats_title">Статистика</string>
+    <string name="action_menu_helplines">Телефоны доверия</string>
+    <string name="default_dialer_text">Перед использованием, вы должны установить \'Телефон\' в качестве приложения по умолчанию.</string>
+    <string name="default_dialer_action">Установить по умолчанию</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-ru/strings.xml b/java/com/android/dialer/app/res/values-ru/strings.xml
index fec18a1..1810b5d 100644
--- a/java/com/android/dialer/app/res/values-ru/strings.xml
+++ b/java/com/android/dialer/app/res/values-ru/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Телефон</string>
-  <string name="launcherDialpadActivityLabel">Набор номера</string>
   <string name="callHistoryIconLabel">Журнал звонков.</string>
   <string name="action_copy_number_text">Скопировать номер</string>
-  <string name="copy_transcript_text">Скопировать транскрипцию</string>
   <string name="action_edit_number_before_call">Изменить номер и позвонить</string>
   <string name="call_log_delete_all">Очистить журнал звонков</string>
   <string name="call_log_trash_voicemail">Удалить голосовое сообщение</string>
@@ -37,10 +35,7 @@
   <string name="description_playback_seek">Выбрать позицию для воспроизведения</string>
   <string name="action_menu_call_history_description">Журнал звонков</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Ещё</string>
-  <string name="action_menu_dialpad_button">клавиатура</string>
   <string name="dialer_settings_label">Настройки</string>
-  <string name="simulator_submenu_label">Симулятор</string>
-  <string name="new_ui_launcher_shortcut_label">Создать ярлык для нового интерфейса</string>
   <string name="description_entering_bulk_action_mode">Вы вошли в режим массового действия</string>
   <string name="description_leaving_bulk_action_mode">Вы вышли из режима массового действия</string>
   <string name="description_selecting_bulk_action_mode">Выбран объект %1$s</string>
@@ -51,7 +46,6 @@
   <string name="description_video_call">Видеовстреча</string>
   <string name="description_start_voice_search">Начать голосовой поиск</string>
   <string name="voicemail">Голосовая почта</string>
-  <string name="description_cancel_multi_select">Отмена режима массового действия</string>
   <string name="voicemailMultiSelectDeleteConfirm">Удалить</string>
   <string name="voicemailMultiSelectDeleteCancel">Отмена</string>
   <string name="voicemailMultiSelectActionBarTitle">Выбрано: %1$s</string>
@@ -67,7 +61,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Голосовой поиск недоступен</string>
   <string name="dialer_hint_find_contact">Поиск в контактах</string>
-  <string name="block_number_search_hint">Найдите контакт или введите номер</string>
   <string name="call_log_all_empty">В журнале пока нет звонков</string>
   <string name="call_log_all_empty_action">Позвонить</string>
   <string name="call_log_missed_empty">Нет пропущенных звонков</string>
@@ -75,23 +68,13 @@
   <string name="call_log_activity_title">Журнал звонков</string>
   <string name="call_log_all_title">Все</string>
   <string name="call_log_missed_title">Пропущенные</string>
-  <string name="tab_speed_dial">Быстрый набор</string>
-  <string name="tab_history">Журнал звонков</string>
   <string name="tab_all_contacts">Контакты</string>
-  <string name="tab_voicemail">Голосовая почта</string>
-  <string name="search_shortcut_call_number">Позвонить: %s</string>
   <string name="search_shortcut_create_new_contact">Создать контакт</string>
   <string name="search_shortcut_add_to_contact">Добавить к контакту</string>
   <string name="search_shortcut_send_sms_message">Отправить SMS</string>
   <string name="search_shortcut_make_video_call">Начать видеовстречу</string>
-  <string name="search_shortcut_block_number">Заблокировать номер</string>
-  <string name="speed_dial_empty">Нет номеров для быстрого набора</string>
-  <string name="speed_dial_empty_add_favorite_action">Настроить быстрый набор</string>
-  <string name="remove_contact">Удалить</string>
   <string name="select_all">Выбрать все</string>
   <string name="call_log_action_video_call">Видеовстреча</string>
-  <string name="call_log_action_set_up_video">Настроить видеосвязь</string>
-  <string name="call_log_action_invite_video">Пригласить на видеовстречу</string>
   <string name="call_log_action_send_message">Отправить сообщение</string>
   <string name="call_log_action_details">Сведения о вызове</string>
   <string name="call_log_action_share_voicemail">Отправить</string>
@@ -130,23 +113,8 @@
   <string name="call_settings_label">Вызовы</string>
   <string name="manage_blocked_numbers_label">Заблокированные номера</string>
   <string name="voicemail_settings_label">Голосовая почта</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Блокировка вызовов временно отключена</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Блокировка вызовов отключена, поскольку вы недавно набирали номер экстренной службы. Когда с момента звонка пройдет 48 часов, эта функция включится автоматически.</string>
-  <string name="import_send_to_voicemail_numbers_label">Импортировать номера</string>
-  <string name="blocked_call_settings_import_description">Вы настроили перенаправление вызовов от некоторых абонентов в голосовую почту в других приложениях.</string>
-  <string name="blocked_call_settings_view_numbers_button">Просмотреть номера</string>
-  <string name="blocked_call_settings_import_button">Импортировать</string>
-  <string name="description_blocked_number_list_delete">Разблокировать номер</string>
-  <string name="addBlockedNumber">Добавить номер</string>
-  <string name="block_number_footer_message_vvm">Вызовы с этих номеров будут блокироваться, а голосовые сообщения – автоматически удаляться.</string>
-  <string name="block_number_footer_message_no_vvm">Вызовы с этих номеров будут блокироваться, но абоненты смогут оставлять вам голосовые сообщения.</string>
-  <string name="block_list">Заблокированные номера</string>
-  <string name="alreadyBlocked">%1$s уже заблокирован.</string>
   <string name="phone_account_settings_label">Аккаунты для звонков</string>
-  <string name="permission_no_speeddial">Чтобы настроить быстрый набор, предоставьте приложению разрешение \"Контакты\".</string>
   <string name="permission_no_calllog">Чтобы открыть список вызовов, предоставьте приложению разрешение \"Телефон\".</string>
-  <string name="permission_no_search">Для поиска контактов включите разрешение \"Контакты\".</string>
-  <string name="permission_place_call">Чтобы позвонить, предоставьте приложению разрешение \"Телефон\".</string>
   <string name="toast_cannot_write_system_settings">У приложения \"Телефон\" нет разрешения на изменение системных настроек.</string>
   <string name="blocked_number_call_log_label">Заблокировано</string>
   <string name="call_log_action_block_report_number">Заблокировать/сообщить о спаме</string>
@@ -154,22 +122,4 @@
   <string name="call_log_action_remove_spam">Не спам</string>
   <string name="call_log_action_unblock_number">Разблокировать номер</string>
   <string name="spam_number_call_log_label">Спам</string>
-  <string name="call_composer_connection_failed">%1$s сейчас офлайн и не ответит на вызов</string>
-  <string name="about_phone_label">О приложении</string>
-  <string name="voicemail_transcription_branding_text">Расшифровано Google</string>
-  <string name="voicemail_transcription_in_progress">Выполняется запись текста…</string>
-  <string name="voicemail_transcription_failed">Транскрипция недоступна.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Транскрипция недоступна. Язык не поддерживается.</string>
-  <string name="voicemail_transcription_failed_no_speech">Транскрипция недоступна. Речь не найдена.</string>
-  <string name="voicemail_donation_promo_title">Помогите сделать расшифровки более точными</string>
-  <string name="voicemail_donation_promo_content">Предоставьте Google доступ к этому и последующим сообщениям голосовой почты с расшифровками. Они будут храниться анонимно. Изменить настройки можно в любое время. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">ОК</string>
-  <string name="voicemail_donation_promo_opt_out">Нет</string>
-  <string name="voicemail_transcription_rating">Оцените качество транскрипции:</string>
-  <string name="voicemail_transcription_rating_thanks">Благодарим за отзыв</string>
-  <string name="description_rating_good">Мне понравилось</string>
-  <string name="description_rating_bad">Мне не понравилось</string>
-  <string name="view_conversation">Посмотреть</string>
-  <string name="ec_data_deleted">Вызов удален. Посмотреть и удалить прикрепленные к нему файлы можно в приложении \"Сообщения\".</string>
-  <string name="multiple_ec_data_deleted">Вызовы удалены. Посмотреть и удалить прикрепленные к ним файлы можно в приложении \"Сообщения\".</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-sc-rIT/cm_strings.xml b/java/com/android/dialer/app/res/values-sc-rIT/cm_strings.xml
new file mode 100644
index 0000000..b1421e8
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-sc-rIT/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="allow">Permiti</string>
+    <string name="deny">Refuda</string>
+    <string name="call_recording_category_title">Registratzione de sas mutidas</string>
+    <string name="call_recording_format">Formadu àudio</string>
+    <string name="call_via">Muti cun</string>
+    <string name="call_via_dialog_title">Muti cun\u2026</string>
+    <string name="call_log_stats_title">Istatìsticas</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-si/strings.xml b/java/com/android/dialer/app/res/values-si/strings.xml
index deea355..e55936e 100644
--- a/java/com/android/dialer/app/res/values-si/strings.xml
+++ b/java/com/android/dialer/app/res/values-si/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">දුරකථනය</string>
-  <string name="launcherDialpadActivityLabel">දුරකථන යතුරු පුවරුව</string>
   <string name="callHistoryIconLabel">ඇමතුම් ඉතිහාසය</string>
   <string name="action_copy_number_text">අංකය පිටපත් කරන්න</string>
-  <string name="copy_transcript_text">පිටපත් කිරීම පිටපත් කරන්න</string>
   <string name="action_edit_number_before_call">ඇමතුමට පෙර අංකය සංස්කරණය</string>
   <string name="call_log_delete_all">ඇමතුම් ඉතිහාසය හිස් කරන්න</string>
   <string name="call_log_trash_voicemail">හඬ තැපෑල මකන්න</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Playback ස්ථානය සොයාබලන්න</string>
   <string name="action_menu_call_history_description">ඇමතුම් ඉතිහාසය</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">තවත් විකල්ප</string>
-  <string name="action_menu_dialpad_button">යතුරු පුවරුව</string>
   <string name="dialer_settings_label">සැකසීම්</string>
-  <string name="simulator_submenu_label">සමාකෘතිය</string>
-  <string name="new_ui_launcher_shortcut_label">නව UI කෙටිමග තනන්න</string>
   <string name="description_entering_bulk_action_mode">තොග ක්‍රියා ප්‍රකාරය ඇතුළු කරමින්</string>
   <string name="description_leaving_bulk_action_mode">තොග ක්‍රියා ප්‍රකාරය හැර යන ලදී</string>
   <string name="description_selecting_bulk_action_mode">%1$s තෝරා ගන්නා ලදී</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">වීඩියෝ ඇමතුම.</string>
   <string name="description_start_voice_search">හඬ සෙවීම අරඹන්න</string>
   <string name="voicemail">හඬ තැපෑල</string>
-  <string name="description_cancel_multi_select">කාණ්ඩ ක්‍රියා ප්‍රකාරය අවලංගු කරන්න</string>
   <string name="voicemailMultiSelectDeleteConfirm">මකන්න</string>
   <string name="voicemailMultiSelectDeleteCancel">අවලංගු කරන්න</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s තෝරා ගන්නා ලදි</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">හඬ සෙවුම ලබාගත නොහැකිය</string>
   <string name="dialer_hint_find_contact">සම්බන්ධතා සෙවීම</string>
-  <string name="block_number_search_hint">අංකය එක් කරන්න හෝ සම්බන්ධතා සොයන්න</string>
   <string name="call_log_all_empty">ඔබගේ ඇමතුම් ඉතිහාසය හිස්ය</string>
   <string name="call_log_all_empty_action">ඇමතුමක් සිදු කරන්න</string>
   <string name="call_log_missed_empty">ඔබට මඟ හැරුණු ඇමතුම් නැත.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">ඇමතුම් ඉතිහාසය</string>
   <string name="call_log_all_title">සියලු</string>
   <string name="call_log_missed_title">මග හැරුණේය</string>
-  <string name="tab_speed_dial">වේග ඩයල් කිරීම</string>
-  <string name="tab_history">ඇමතුම් ඉතිහාසය</string>
   <string name="tab_all_contacts">සම්බන්ධතා</string>
-  <string name="tab_voicemail">හඬ තැපෑල</string>
-  <string name="search_shortcut_call_number">%s අමතන්න</string>
   <string name="search_shortcut_create_new_contact">නව සම්බන්ධතාවයක් සාදන්න</string>
   <string name="search_shortcut_add_to_contact">සම්බන්ධතාවකට එක් කරන්න</string>
   <string name="search_shortcut_send_sms_message">SMS යවන්න</string>
   <string name="search_shortcut_make_video_call">වීඩියෝ ඇමතුමක් ලබාගන්න</string>
-  <string name="search_shortcut_block_number">අංකය අවහිර කරන්න</string>
-  <string name="speed_dial_empty">ඔබගේ වේග ඩයල් එකේ තවමත් කවුරුවත් නැහැ</string>
-  <string name="speed_dial_empty_add_favorite_action">ප්‍රියතම ලෙස එක් කරන්න</string>
-  <string name="remove_contact">ඉවත් කරන්න</string>
   <string name="select_all">සියල්ල තෝරන්න</string>
   <string name="call_log_action_video_call">වීඩියෝ ඇමතුම</string>
-  <string name="call_log_action_set_up_video">වීඩියෝ ඇමතීම පිහිටුවන්න</string>
-  <string name="call_log_action_invite_video">වීඩියෝ ඇමතුමට ආරාධනා කරන්න</string>
   <string name="call_log_action_send_message">පණිවිඩයක් යවන්න</string>
   <string name="call_log_action_details">ඇමතුම් විස්තර</string>
   <string name="call_log_action_share_voicemail">වෙත යවන්න …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">ඇමතුම්</string>
   <string name="manage_blocked_numbers_label">අවහිර කළ අංක</string>
   <string name="voicemail_settings_label">හඬ තැපෑල</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">ඇමතුම් අවහිර කිරීම තාවකාලිකව අක්‍රියයි</string>
-  <string name="blocked_numbers_disabled_emergency_desc">ඔබ පසුගිය පැය 48 ඇතුළත මෙම දුරකථනයෙන් හදිසි අවස්ථා සේවා ඇමතූ බැව්න් ඇමතුම් අවහිර කිරීම අබල කර ඇත. පැය 48ක කාල සීමාව ඉකුත් වූ විට එය ස්වයංක්‍රියව යළි සබල කෙරේ.</string>
-  <string name="import_send_to_voicemail_numbers_label">අංක ආයාත කරන්න</string>
-  <string name="blocked_call_settings_import_description">ඔබ පෙරදී සමහර අමතන්නන් වෙනත් යෙදුම් හරහා ස්වයංක්‍රියව හඬ තැපෑල වෙත යැවීමට ලකුණු කරන ලදී.</string>
-  <string name="blocked_call_settings_view_numbers_button">අංක බලන්න</string>
-  <string name="blocked_call_settings_import_button">ආයාත කරන්න</string>
-  <string name="description_blocked_number_list_delete">අංකය අවහිර නොකරන්න</string>
-  <string name="addBlockedNumber">අංකයක් එක් කරන්න</string>
-  <string name="block_number_footer_message_vvm">මෙම අංක වෙතින් වන ඇමතුම් අවහිර කරනු ඇති අතර හඬ තැපැල් ස්වයංක්‍රියව මකනු ඇත.</string>
-  <string name="block_number_footer_message_no_vvm">මෙම අංක වෙතින් වන ඇමතුම් අවහිර කරනු ඇති නමුත්, ඔවුන්ට තවම ඔබට හඬ තැපැල් තැබීමට හැකිය.</string>
-  <string name="block_list">අවහිර කළ අංක</string>
-  <string name="alreadyBlocked">%1$s දැනටමත් අවහිර කර ඇත.</string>
   <string name="phone_account_settings_label">ගිණුම් ඇමතීම</string>
-  <string name="permission_no_speeddial">වේග ඩයල් කිරීම සබල කිරීමට, සම්බන්ධතා අවසරය ක්‍රියාත්මක කරන්න.</string>
   <string name="permission_no_calllog">ඔබේ ඇමතුම් ලොගය බැලීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න.</string>
-  <string name="permission_no_search">ඔබේ සම්බන්ධතා සෙවීමට, සම්බන්ධතා අවසර ක්‍රියාත්මක කරන්න.</string>
-  <string name="permission_place_call">ඇමතුමක් ලබා ගැනීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න.</string>
   <string name="toast_cannot_write_system_settings">දුරකථන යෙදුමට පද්ධති සැකසීම් වෙත ලිවීමට අවසර නැත.</string>
   <string name="blocked_number_call_log_label">අවහිර කරන ලදි</string>
   <string name="call_log_action_block_report_number">අයාචිත තැපැල අවහිර/වාර්තා කර.</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">අයාචිත තැපෑලක් නොවේ</string>
   <string name="call_log_action_unblock_number">අංකය අවහිර නොකරන්න</string>
   <string name="spam_number_call_log_label">අයාචිත තැපෑල</string>
-  <string name="call_composer_connection_failed">%1$s නොබැඳි අතර ළඟා වීමට නොහැකිය</string>
-  <string name="about_phone_label">ගැන</string>
-  <string name="voicemail_transcription_branding_text">Google මගින් පිටපත් කරන ලදී</string>
-  <string name="voicemail_transcription_in_progress">පිටපත් කරමින්…</string>
-  <string name="voicemail_transcription_failed">අනුපිටපතක් නොමැත.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">අනුපිටපතක් නොමැත. භාෂාව සහාය නොදක්වයි.</string>
-  <string name="voicemail_transcription_failed_no_speech">අනුපිටපතක් නොමැත. කථනය අනාවරණය කරගෙන නැත.</string>
-  <string name="voicemail_donation_promo_title">පිටපත් කිරීමේ නිරවද්‍යතාව වැඩිදියුණු කිරීමට උදව් වන්නද?</string>
-  <string name="voicemail_donation_promo_content">පිටපත් සමග මෙම සහ අනාගත හඬ තැපෑල් පණිවිඩ සමාලෝචනය කිරීමට Google හට ඉඩ දෙන්න. ඒවා නිර්නාමිකව ගබඩා කෙරෙනු ඇත. ඕනෑම අවස්ථාවක සැකසීම් වෙනස් කරන්න. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">ඔව්, මම කැමතියි</string>
-  <string name="voicemail_donation_promo_opt_out">එපා ස්තූතියි</string>
-  <string name="voicemail_transcription_rating">පිටපත් කිරීමේ ගුණත්වය අගයන්න</string>
-  <string name="voicemail_transcription_rating_thanks">ඔබේ ප්‍රතිපෝෂණයට ස්තුතියි!</string>
-  <string name="description_rating_good">කැමතියි</string>
-  <string name="description_rating_bad">අකමැතියි</string>
-  <string name="view_conversation">බලන්න</string>
-  <string name="ec_data_deleted">ඇමතුම මකන ලදී. Messages වල මෙම ඇමතුම අතරතුර බෙදා ගත් ඇමුණුම් බලා මකන්න.</string>
-  <string name="multiple_ec_data_deleted">ඇමතුම මකන ලදී. Messages වල මෙම ඇමතුම් අතරතුර බෙදා ගත් ඇමුණුම් බලා මකන්න.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-sk/cm_strings.xml b/java/com/android/dialer/app/res/values-sk/cm_strings.xml
new file mode 100644
index 0000000..e51f26c
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-sk/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Počas hovoru</string>
+    <string name="incall_enable_dnd_title">Povoliť režim Nerušiť počas hovoru</string>
+    <string name="incall_vibrate_outgoing_title">Vibrovať po prijatí</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrovať pri čakajúcom hovore</string>
+    <string name="incall_vibrate_hangup_title">Vibrovať po zavesení</string>
+    <string name="incall_vibrate_45_title">Vibrovať každú minútu</string>
+    <string name="incall_vibrate_45_summary">Vibrovať každú 45. sekundu pri odchádzajúcom hovore</string>
+    <string name="incall_dnd_dialog_message">Ak chcete povoliť režim Nerušiť, musí byť telefónnej aplikácii udelené oprávnenie na ovládanie stavu režimu Nerušiť.\nPovoľte to.</string>
+    <string name="allow">Povoliť</string>
+    <string name="deny">Zakázať</string>
+    <string name="call_recording_category_title">Nahrávanie hovorov</string>
+    <string name="call_recording_format">Formát zvuku</string>
+    <string name="call_via">Volať prostredníctvom</string>
+    <string name="call_via_dialog_title">Volať prostredníctvom\u2026</string>
+    <string name="call_log_stats_title">Štatistiky</string>
+    <string name="action_menu_helplines">Linky pomoci</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-sk/strings.xml b/java/com/android/dialer/app/res/values-sk/strings.xml
index d2726f3..3e38b7b 100644
--- a/java/com/android/dialer/app/res/values-sk/strings.xml
+++ b/java/com/android/dialer/app/res/values-sk/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefón</string>
-  <string name="launcherDialpadActivityLabel">Klávesnica telefónu</string>
   <string name="callHistoryIconLabel">História hovorov</string>
   <string name="action_copy_number_text">Kopírovať číslo</string>
-  <string name="copy_transcript_text">Kopírovať prepis</string>
   <string name="action_edit_number_before_call">Pred volaním upraviť číslo</string>
   <string name="call_log_delete_all">Vymazať históriu hovorov</string>
   <string name="call_log_trash_voicemail">Odstrániť hlasovú správu</string>
@@ -37,10 +35,7 @@
   <string name="description_playback_seek">Hľadať pozíciu prehrávania</string>
   <string name="action_menu_call_history_description">História hovorov</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Ďalšie možnosti</string>
-  <string name="action_menu_dialpad_button">klávesnica</string>
   <string name="dialer_settings_label">Nastavenia</string>
-  <string name="simulator_submenu_label">Simulátor</string>
-  <string name="new_ui_launcher_shortcut_label">Vyt. skratku na nové rozhranie</string>
   <string name="description_entering_bulk_action_mode">Vstupuje sa do režimu hromadných akcií</string>
   <string name="description_leaving_bulk_action_mode">Odišli ste z režimu hromadných akcií</string>
   <string name="description_selecting_bulk_action_mode">Položka %1$s bola vybraná</string>
@@ -51,7 +46,6 @@
   <string name="description_video_call">Videohovor</string>
   <string name="description_start_voice_search">Spustenie hlasového vyhľadávania</string>
   <string name="voicemail">Hlasová schránka</string>
-  <string name="description_cancel_multi_select">Zrušiť režim hromadných akcií</string>
   <string name="voicemailMultiSelectDeleteConfirm">Odstrániť</string>
   <string name="voicemailMultiSelectDeleteCancel">Zrušiť</string>
   <string name="voicemailMultiSelectActionBarTitle">Vybraté: %1$s</string>
@@ -67,7 +61,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Hlasové vyhľadávanie nie je k dispozícii</string>
   <string name="dialer_hint_find_contact">Hľadať v kontaktoch</string>
-  <string name="block_number_search_hint">Pridajte číslo / vyhľadajte v kontaktoch</string>
   <string name="call_log_all_empty">História hovorov je prázdna</string>
   <string name="call_log_all_empty_action">Zavolať</string>
   <string name="call_log_missed_empty">Nemáte žiadne zmeškané hovory.</string>
@@ -75,23 +68,13 @@
   <string name="call_log_activity_title">História hovorov</string>
   <string name="call_log_all_title">Všetky</string>
   <string name="call_log_missed_title">Zmeškané</string>
-  <string name="tab_speed_dial">Rýchla voľba</string>
-  <string name="tab_history">História hovorov</string>
   <string name="tab_all_contacts">Kontakty</string>
-  <string name="tab_voicemail">Hlasová schránka</string>
-  <string name="search_shortcut_call_number">Volať %s</string>
   <string name="search_shortcut_create_new_contact">Vytvoriť nový kontakt</string>
   <string name="search_shortcut_add_to_contact">Pridať ku kontaktu</string>
   <string name="search_shortcut_send_sms_message">Odoslať SMS</string>
   <string name="search_shortcut_make_video_call">Uskutočniť videohovor</string>
-  <string name="search_shortcut_block_number">Blokovať číslo</string>
-  <string name="speed_dial_empty">V rýchlej voľbe zatiaľ nemáte žiadny kontakt</string>
-  <string name="speed_dial_empty_add_favorite_action">Pridať obľúbený kontakt</string>
-  <string name="remove_contact">Odstrániť</string>
   <string name="select_all">Vybrať všetko</string>
   <string name="call_log_action_video_call">Videohovor</string>
-  <string name="call_log_action_set_up_video">Nastaviť videohovory</string>
-  <string name="call_log_action_invite_video">Pozvať na videohovor</string>
   <string name="call_log_action_send_message">Odoslať správu</string>
   <string name="call_log_action_details">Podrobnosti hovoru</string>
   <string name="call_log_action_share_voicemail">Poslať cez aplikáciu…</string>
@@ -130,23 +113,8 @@
   <string name="call_settings_label">Hovory</string>
   <string name="manage_blocked_numbers_label">Blokované čísla</string>
   <string name="voicemail_settings_label">Hlasová schránka</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blokovanie hovorov je dočasne vypnuté</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Pretože ste z tohto telefónu počas posledných 48 hodín volali na tiesňovú linku, blokovanie hovorov bolo vypnuté. Po uplynutí 48 hodín sa automaticky znova zapne.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importovať čísla</string>
-  <string name="blocked_call_settings_import_description">V minulosti ste niektorých volajúcich označili, aby boli automaticky prepojení do hlasovej schránky prostredníctvom ďalších aplikácií.</string>
-  <string name="blocked_call_settings_view_numbers_button">Zobraziť čísla</string>
-  <string name="blocked_call_settings_import_button">Importovať</string>
-  <string name="description_blocked_number_list_delete">Zrušiť blokovanie čísla</string>
-  <string name="addBlockedNumber">Pridať číslo</string>
-  <string name="block_number_footer_message_vvm">Hovory z týchto čísel budú blokované a hlasové správy budú automaticky odstraňované.</string>
-  <string name="block_number_footer_message_no_vvm">Hovory z týchto čísel budú blokované, ale volajúci vám budú stále môcť zanechať hlasové správy.</string>
-  <string name="block_list">Blokované čísla</string>
-  <string name="alreadyBlocked">Číslo %1$s je už blokované.</string>
   <string name="phone_account_settings_label">Telefónne účty</string>
-  <string name="permission_no_speeddial">Ak chcete aktivovať rýchlu voľbu, zapnite povolenie Kontakty.</string>
   <string name="permission_no_calllog">Ak si chcete zobraziť denník hovorov, zapnite povolenie Telefón.</string>
-  <string name="permission_no_search">Ak chcete hľadať kontakty, zapnite povolenie Kontakty.</string>
-  <string name="permission_place_call">Ak chcete volať, zapnite povolenie Telefón.</string>
   <string name="toast_cannot_write_system_settings">Telefónna aplikácia nemá povolenie na zápis do nastavení systému.</string>
   <string name="blocked_number_call_log_label">Blokované</string>
   <string name="call_log_action_block_report_number">Blokovať / nahlásiť spam</string>
@@ -154,22 +122,4 @@
   <string name="call_log_action_remove_spam">Toto nie je spam</string>
   <string name="call_log_action_unblock_number">Zrušiť blokovanie čísla</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s je offline a nedá sa zastihnúť</string>
-  <string name="about_phone_label">Informácie</string>
-  <string name="voicemail_transcription_branding_text">Prepísané Googlom</string>
-  <string name="voicemail_transcription_in_progress">Prepisuje sa…</string>
-  <string name="voicemail_transcription_failed">Prepis nie je k dispozícii.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Prepis nie je k dispozícii. Jazyk nie je podporovaný.</string>
-  <string name="voicemail_transcription_failed_no_speech">Prepis nie je k dispozícii. Nebola zistená žiadna reč.</string>
-  <string name="voicemail_donation_promo_title">Chcete pomôcť so zlepšovaním presnosti prepisov?</string>
-  <string name="voicemail_donation_promo_content">Umožnite Googlu skontrolovať túto a budúce hlasové správy s prepismi. Správy budú ukladané anonymne. Nastavenia môžete kedykoľvek zmeniť. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Áno, súhlasím</string>
-  <string name="voicemail_donation_promo_opt_out">Nie, vďaka</string>
-  <string name="voicemail_transcription_rating">Ohodnoťte kvalitu prepisu</string>
-  <string name="voicemail_transcription_rating_thanks">Ďakujeme vám za spätnú väzbu</string>
-  <string name="description_rating_good">Páči sa mi</string>
-  <string name="description_rating_bad">Nepáči sa mi</string>
-  <string name="view_conversation">Zobraziť</string>
-  <string name="ec_data_deleted">Hovor bol odstránený. Prílohy zdieľané počas neho si môžete pozrieť a odstrániť v aplikácii Správy.</string>
-  <string name="multiple_ec_data_deleted">Hovory boli odstránené. Prílohy zdieľané počas nich si môžete pozrieť a odstrániť v aplikácii Správy.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-sl/cm_strings.xml b/java/com/android/dialer/app/res/values-sl/cm_strings.xml
new file mode 100644
index 0000000..5e0458f
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-sl/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Med klicem</string>
+    <string name="incall_enable_dnd_title">Omogoči Ne moti med klici</string>
+    <string name="incall_vibrate_outgoing_title">Vibriraj ob odgovoru</string>
+    <string name="incall_vibrate_call_waiting_title">Vibriraj ob čakajočem klicu</string>
+    <string name="incall_vibrate_hangup_title">Vibriraj ob prekinitvi</string>
+    <string name="incall_vibrate_45_title">Vibriraj vsako minuto</string>
+    <string name="incall_vibrate_45_summary">Vibrira ob preteklih 45 sekundah vsake minute med odhodnimi klici</string>
+    <string name="incall_dnd_dialog_message">Da omogočite Ne moti, mora aplikaciji Telefon biti odobreno dovoljenje za nadzor Ne moti stanja.\nProsimo, da ga dovolite.</string>
+    <string name="allow">Dovoli</string>
+    <string name="deny">Zavrni</string>
+    <string name="call_recording_category_title">Snemanje klicev</string>
+    <string name="call_recording_format">Oblika zvoka</string>
+    <string name="call_via">Kliči prek</string>
+    <string name="call_via_dialog_title">Kliči prek \u2026</string>
+    <string name="call_log_stats_title">Statistika</string>
+    <string name="action_menu_helplines">Tel. št. za pomoč</string>
+    <string name="default_dialer_text">Klicalnik morate nastaviti kot privzeto telefonsko aplikacijo, da ga uporabite</string>
+    <string name="default_dialer_action">Nastavi kot privzeto</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-sl/strings.xml b/java/com/android/dialer/app/res/values-sl/strings.xml
index 5b00bd5..95fde9c 100644
--- a/java/com/android/dialer/app/res/values-sl/strings.xml
+++ b/java/com/android/dialer/app/res/values-sl/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Tipkovnica telefona</string>
   <string name="callHistoryIconLabel">Zgodovina klicev</string>
   <string name="action_copy_number_text">Kopiranje številke</string>
-  <string name="copy_transcript_text">Kopiraj prepis</string>
   <string name="action_edit_number_before_call">Urejanje številke pred klicem</string>
   <string name="call_log_delete_all">Izbriši zgodovino klicev</string>
   <string name="call_log_trash_voicemail">Brisanje sporočil iz odzivnika</string>
@@ -37,10 +35,7 @@
   <string name="description_playback_seek">Iskanje položaja predvajanja</string>
   <string name="action_menu_call_history_description">Zgodovina klicev</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Več možnosti</string>
-  <string name="action_menu_dialpad_button">tipkovnica</string>
   <string name="dialer_settings_label">Nastavitve</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Ustvari bliž. za novi up. vm.</string>
   <string name="description_entering_bulk_action_mode">Prehod v način množičnega dejanja</string>
   <string name="description_leaving_bulk_action_mode">Prehod iz načina množičnega dejanja</string>
   <string name="description_selecting_bulk_action_mode">Izbrano: %1$s</string>
@@ -51,7 +46,6 @@
   <string name="description_video_call">Videoklic.</string>
   <string name="description_start_voice_search">Začni glasovno iskanje</string>
   <string name="voicemail">Glasovna pošta</string>
-  <string name="description_cancel_multi_select">Prekliči način množičnega dejanja</string>
   <string name="voicemailMultiSelectDeleteConfirm">Izbriši</string>
   <string name="voicemailMultiSelectDeleteCancel">Prekliči</string>
   <string name="voicemailMultiSelectActionBarTitle">Št. izbranih: %1$s</string>
@@ -67,7 +61,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Glasovno iskanje ni na voljo</string>
   <string name="dialer_hint_find_contact">Iskanje stikov</string>
-  <string name="block_number_search_hint">Dodajte št. ali iščite med st.</string>
   <string name="call_log_all_empty">Zgodovina klicev je prazna</string>
   <string name="call_log_all_empty_action">Klicanje</string>
   <string name="call_log_missed_empty">Nimate neodgovorjenih klicev.</string>
@@ -75,23 +68,13 @@
   <string name="call_log_activity_title">Zgodovina klicev</string>
   <string name="call_log_all_title">Vsi</string>
   <string name="call_log_missed_title">Neodgovorjeni</string>
-  <string name="tab_speed_dial">Hitro izbiranje</string>
-  <string name="tab_history">Zgodovina klicev</string>
   <string name="tab_all_contacts">Stiki</string>
-  <string name="tab_voicemail">Odzivnik</string>
-  <string name="search_shortcut_call_number">Pokliči %s</string>
   <string name="search_shortcut_create_new_contact">Ustvari nov stik</string>
   <string name="search_shortcut_add_to_contact">Dodaj stiku</string>
   <string name="search_shortcut_send_sms_message">Pošlji SMS</string>
   <string name="search_shortcut_make_video_call">Opravi videoklic</string>
-  <string name="search_shortcut_block_number">Blokiraj številko</string>
-  <string name="speed_dial_empty">Na seznamu za hitro klicanje nimate še nikogar</string>
-  <string name="speed_dial_empty_add_favorite_action">Dodajte priljubljenega</string>
-  <string name="remove_contact">Odstrani</string>
   <string name="select_all">Izberi vse</string>
   <string name="call_log_action_video_call">Videoklic</string>
-  <string name="call_log_action_set_up_video">Nastavi videoklicanje</string>
-  <string name="call_log_action_invite_video">Povabi v videoklic</string>
   <string name="call_log_action_send_message">Pošljite sporočilo</string>
   <string name="call_log_action_details">Podrobnosti klica</string>
   <string name="call_log_action_share_voicemail">Pošlji …</string>
@@ -130,23 +113,8 @@
   <string name="call_settings_label">Klici</string>
   <string name="manage_blocked_numbers_label">Blokirane številke</string>
   <string name="voicemail_settings_label">Odzivnik</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blokiranje klicev je začasno izklopljeno</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Blokiranje klicev je onemogočeno, ker ste se v zadnjih 48 urah s tem telefonom obrnili na nujno pomoč. Ko 48-urno obdobje poteče, bo blokiranje klicev samodejno znova omogočeno.</string>
-  <string name="import_send_to_voicemail_numbers_label">Uvoz številk</string>
-  <string name="blocked_call_settings_import_description">Označili ste, naj nekatere klicatelje druge aplikacije samodejno preusmerijo v odzivnik.</string>
-  <string name="blocked_call_settings_view_numbers_button">Ogled številk</string>
-  <string name="blocked_call_settings_import_button">Uvozi</string>
-  <string name="description_blocked_number_list_delete">Odblokiranje telefonske številke</string>
-  <string name="addBlockedNumber">Dodaj telefonsko številko</string>
-  <string name="block_number_footer_message_vvm">Klici s teh številk bodo blokirani in sporočila v odzivniku bodo samodejno izbrisana.</string>
-  <string name="block_number_footer_message_no_vvm">Klici s teh številk bodo blokirani, klicatelji pa bodo morda še vedno lahko pustil sporočila v odzivniku.</string>
-  <string name="block_list">Blokirane številke</string>
-  <string name="alreadyBlocked">Telefonska številka %1$s je že blokirana.</string>
   <string name="phone_account_settings_label">Računi za klicanje</string>
-  <string name="permission_no_speeddial">Če želite omogočiti hitro klicanje, vklopite dovoljenje za stike.</string>
   <string name="permission_no_calllog">Če si želite ogledati dnevnik klicev, vklopite dovoljenje za telefon.</string>
-  <string name="permission_no_search">Če želite iskati po stikih, vklopite dovoljenje za stike.</string>
-  <string name="permission_place_call">Če želite klicati, vklopite dovoljenje za telefon.</string>
   <string name="toast_cannot_write_system_settings">Aplikacija Telefon nima dovoljenja za pisanje v sistemske nastavitve.</string>
   <string name="blocked_number_call_log_label">Blokirano</string>
   <string name="call_log_action_block_report_number">Blokiraj/prij. než. vsebino</string>
@@ -154,22 +122,4 @@
   <string name="call_log_action_remove_spam">Ni neželena vsebina</string>
   <string name="call_log_action_unblock_number">Odblokiranje telefonske številke</string>
   <string name="spam_number_call_log_label">Vsiljena pošta</string>
-  <string name="call_composer_connection_failed">Oseba %1$s nima vzpostavljene povezave in ni dosegljiva</string>
-  <string name="about_phone_label">Vizitka</string>
-  <string name="voicemail_transcription_branding_text">Prepis je zagotovil Google</string>
-  <string name="voicemail_transcription_in_progress">Ustvarjanje prepisa …</string>
-  <string name="voicemail_transcription_failed">Prepis ni na voljo.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Prepis ni na voljo. Jezik ni podprt.</string>
-  <string name="voicemail_transcription_failed_no_speech">Prepis ni na voljo. Govora ni bilo mogoče zaznati.</string>
-  <string name="voicemail_donation_promo_title">Želite pomagati izboljšati natančnost prepisov?</string>
-  <string name="voicemail_donation_promo_content">Dovolite Googlu, da pregleda ta in prihodnja sporočila v odzivniku s prepisi. Shranjena bodo anonimno. Nastavitve lahko kadar koli spremenite. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Da, sem za</string>
-  <string name="voicemail_donation_promo_opt_out">Ne, hvala</string>
-  <string name="voicemail_transcription_rating">Ocenite kakovost prepisa</string>
-  <string name="voicemail_transcription_rating_thanks">Hvala za povratne informacije</string>
-  <string name="description_rating_good">Všeč mi je</string>
-  <string name="description_rating_bad">Ni mi všeč</string>
-  <string name="view_conversation">Prikaži</string>
-  <string name="ec_data_deleted">Klic je izbrisan. Priloge, ki so bile dane v skupno rabo v tem klicu, si lahko ogledate in izbrišete v aplikaciji Messages.</string>
-  <string name="multiple_ec_data_deleted">Klici so izbrisani. Priloge, ki so bile dane v skupno rabo v teh klicih, si lahko ogledate in izbrišete v aplikaciji Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-sq/cm_strings.xml b/java/com/android/dialer/app/res/values-sq/cm_strings.xml
new file mode 100644
index 0000000..9106c1e
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-sq/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Në telefonatë</string>
+    <string name="incall_enable_dnd_title">Aktivizo Mos Më Shqetëso gjatë telefonatave</string>
+    <string name="incall_vibrate_outgoing_title">Dridhu në përgjigje</string>
+    <string name="incall_vibrate_call_waiting_title">Dridhu kur thirrja vihet në pritje</string>
+    <string name="incall_vibrate_hangup_title">Dridhu në fund të telefonatës</string>
+    <string name="incall_vibrate_45_title">Dridhu çdo minutë</string>
+    <string name="incall_vibrate_45_summary">Dridhet në sekondën e 45-të të çdo minuti gjatë një telefonate</string>
+    <string name="incall_dnd_dialog_message">Për të aktivuar Mos Më Shqetëso, aplikacioni Phone (Telefon) duhet të lejohet të kontrollojë gjendjen e Mos Më Shqetëso.\nTë lutem lejoje.</string>
+    <string name="allow">Lejo</string>
+    <string name="deny">Moho</string>
+    <string name="call_recording_category_title">Regjistrimi i telefonatës</string>
+    <string name="call_recording_format">Formati i zërit</string>
+    <string name="call_via">Telefono nga</string>
+    <string name="call_via_dialog_title">Telefono nga\u2026</string>
+    <string name="call_log_stats_title">Statistikat</string>
+    <string name="action_menu_helplines">Linjat e ndihmës</string>
+    <string name="default_dialer_text">Duhet të caktoni Telefoni si aplikacionin e paracaktuar të telefonit për ta përdorur atë.</string>
+    <string name="default_dialer_action">Vendoseni si parazgjedhje</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-sq/strings.xml b/java/com/android/dialer/app/res/values-sq/strings.xml
index cd9e0e0..bfcd7ff 100644
--- a/java/com/android/dialer/app/res/values-sq/strings.xml
+++ b/java/com/android/dialer/app/res/values-sq/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefoni</string>
-  <string name="launcherDialpadActivityLabel">Blloku i tasteve i telefonit</string>
   <string name="callHistoryIconLabel">Historiku i telefonatave</string>
   <string name="action_copy_number_text">Kopjo numrin</string>
-  <string name="copy_transcript_text">Kopjo transkriptimin</string>
   <string name="action_edit_number_before_call">Redakto numrin para telefonatës</string>
   <string name="call_log_delete_all">Pastro historikun e telefonatave</string>
   <string name="call_log_trash_voicemail">Fshije postën zanore</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Kërko pozicionin e luajtjes</string>
   <string name="action_menu_call_history_description">Historiku i telefonatave</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Opsione të tjera</string>
-  <string name="action_menu_dialpad_button">blloku i tasteve</string>
   <string name="dialer_settings_label">Cilësimet</string>
-  <string name="simulator_submenu_label">Simuluesi</string>
-  <string name="new_ui_launcher_shortcut_label">Krijo një shkurtore për ndërfaqen e re të përdoruesit</string>
   <string name="description_entering_bulk_action_mode">Po hyn në modalitetin e veprimit në masë</string>
   <string name="description_leaving_bulk_action_mode">U largove nga modaliteti i veprimit në masë</string>
   <string name="description_selecting_bulk_action_mode">U zgjodh %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Telefonatë me video.</string>
   <string name="description_start_voice_search">Nis kërkimin me zë</string>
   <string name="voicemail">Posta zanore</string>
-  <string name="description_cancel_multi_select">Anulo modalitetin e veprimeve në grup</string>
   <string name="voicemailMultiSelectDeleteConfirm">Fshi</string>
   <string name="voicemailMultiSelectDeleteCancel">Anulo</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s të zgjedhura</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Kërkimi me zë nuk mundësohet</string>
   <string name="dialer_hint_find_contact">Kërko për kontakte</string>
-  <string name="block_number_search_hint">Shto një numër ose kërko te kontaktet</string>
   <string name="call_log_all_empty">Historiku i telefonatave është bosh</string>
   <string name="call_log_all_empty_action">Bëj një telefonatë</string>
   <string name="call_log_missed_empty">Nuk ke thirrje të humbura.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Historiku i telefonatave</string>
   <string name="call_log_all_title">Të gjitha</string>
   <string name="call_log_missed_title">Të humbura</string>
-  <string name="tab_speed_dial">Telefonatë e shpejtë</string>
-  <string name="tab_history">Historiku i telefonatave</string>
   <string name="tab_all_contacts">Kontaktet</string>
-  <string name="tab_voicemail">Posta zanore</string>
-  <string name="search_shortcut_call_number">Telefono %s</string>
   <string name="search_shortcut_create_new_contact">Krijo një kontakt të ri</string>
   <string name="search_shortcut_add_to_contact">Shto te një kontakt</string>
   <string name="search_shortcut_send_sms_message">Dërgo SMS</string>
   <string name="search_shortcut_make_video_call">Bëj një telefonatë me video</string>
-  <string name="search_shortcut_block_number">Blloko numrin</string>
-  <string name="speed_dial_empty">Askush nuk është ende në thirrjen tënde të shpejtuar</string>
-  <string name="speed_dial_empty_add_favorite_action">Shto një të preferuar</string>
-  <string name="remove_contact">Hiq</string>
   <string name="select_all">Zgjidh të gjitha</string>
   <string name="call_log_action_video_call">Telefonatë me video</string>
-  <string name="call_log_action_set_up_video">Konfiguro telefonatat me video</string>
-  <string name="call_log_action_invite_video">Fto në telefonatë me video</string>
   <string name="call_log_action_send_message">Dërgo një mesazh</string>
   <string name="call_log_action_details">Detajet e telefonatës</string>
   <string name="call_log_action_share_voicemail">Dërgo te ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Telefonatat</string>
   <string name="manage_blocked_numbers_label">Numrat e bllokuar</string>
   <string name="voicemail_settings_label">Posta zanore</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Bllokimi i telefonatave është përkohësisht joaktiv</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Bllokimi i telefonatave është çaktivizuar sepse kontaktove me shërbimet e urgjencës nga ky telefon brenda 48 orëve të fundit. Ai do të riaktivizohet automatikisht pas skadimit të periudhës prej 48 orë.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importo numrat</string>
-  <string name="blocked_call_settings_import_description">Disa telefonues i ke shënuar më parë që të dërgohen automatikisht drejt postës zanore përmes aplikacioneve të tjera.</string>
-  <string name="blocked_call_settings_view_numbers_button">Shiko numrat</string>
-  <string name="blocked_call_settings_import_button">Importo</string>
-  <string name="description_blocked_number_list_delete">Zhblloko numrin</string>
-  <string name="addBlockedNumber">Shto një numër</string>
-  <string name="block_number_footer_message_vvm">Telefonatat nga këta numra do të bllokohen dhe mesazhet zanore do të fshihen automatikisht.</string>
-  <string name="block_number_footer_message_no_vvm">Telefonatat nga këta numra do të bllokohen, por mund të jenë ende në gjendje të lënë mesazhe zanore.</string>
-  <string name="block_list">Numrat e bllokuar</string>
-  <string name="alreadyBlocked">%1$s është i bllokuar tashmë.</string>
   <string name="phone_account_settings_label">Llogaritë e telefonatave</string>
-  <string name="permission_no_speeddial">Për të aktivizuar thirrjen e shpejtuar, aktivizo lejen e Kontakteve.</string>
   <string name="permission_no_calllog">Për të parë evidencën e telefonatave, aktivizo lejen e Telefonit.</string>
-  <string name="permission_no_search">Për të kërkuar kontaktet, aktivizo lejet e Kontakteve</string>
-  <string name="permission_place_call">Për të kryer një telefonatë, aktivizo lejen e Telefonit.</string>
   <string name="toast_cannot_write_system_settings">Aplikacionet e telefonit nuk kanë leje të shkruajnë në cilësimet e sistemit.</string>
   <string name="blocked_number_call_log_label">I bllokuar</string>
   <string name="call_log_action_block_report_number">Blloko/raporto të padëshiruar</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Nuk është i padëshiruar</string>
   <string name="call_log_action_unblock_number">Zhblloko numrin</string>
   <string name="spam_number_call_log_label">E bezdisshme</string>
-  <string name="call_composer_connection_failed">%1$s është jashtë linje dhe nuk mund të kontaktohet</string>
-  <string name="about_phone_label">Rreth</string>
-  <string name="voicemail_transcription_branding_text">Transkriptuar nga Google</string>
-  <string name="voicemail_transcription_in_progress">Po transkriptohet…</string>
-  <string name="voicemail_transcription_failed">Transkripti nuk ofrohet.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkripti nuk ofrohet. Gjuha nuk mbështetet.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkripti nuk ofrohet. Nuk u zbulua asnjë e folur.</string>
-  <string name="voicemail_donation_promo_title">Do të ndihmosh në përmirësimin e saktësisë së transkriptimit?</string>
-  <string name="voicemail_donation_promo_content">Lejo që Google ta rishikojë këtë dhe mesazhet e ardhshme të postës zanore me transkripte. Ato do të ruhen në mënyrë anonime. Ndrysho \"Cilësimet\" në çdo kohë. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Po, jam dakord</string>
-  <string name="voicemail_donation_promo_opt_out">Jo, faleminderit</string>
-  <string name="voicemail_transcription_rating">Vlerëso cilësinë</string>
-  <string name="voicemail_transcription_rating_thanks">Faleminderit për komentin tënd</string>
-  <string name="description_rating_good">Pëlqej</string>
-  <string name="description_rating_bad">Nuk më pëlqen</string>
-  <string name="view_conversation">Shiko</string>
-  <string name="ec_data_deleted">Telefonata u fshi. Shiko dhe fshi bashkëngjitjet e ndara gjatë kësaj telefonate te \"Mesazhet\".</string>
-  <string name="multiple_ec_data_deleted">Telefonatat u fshinë. Shiko dhe fshi bashkëngjitjet e ndara gjatë telefonatave te \"Mesazhet\".</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-sr/cm_strings.xml b/java/com/android/dialer/app/res/values-sr/cm_strings.xml
new file mode 100644
index 0000000..4f0bb69
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-sr/cm_strings.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">За време позива</string>
+    <string name="incall_enable_dnd_title">Омогући \"Не Узнемиравај\" током позива</string>
+    <string name="incall_vibrate_outgoing_title">Вибрација при јављању</string>
+    <string name="incall_vibrate_call_waiting_title">Вибрација при позиву на чекању</string>
+    <string name="incall_vibrate_hangup_title">Вибрација при прекиду</string>
+    <string name="incall_vibrate_45_title">Вибрација сваког минута</string>
+    <string name="incall_vibrate_45_summary">Вибрира на 45. секунди сваког минута током одлазних позива</string>
+    <string name="incall_dnd_dialog_message">Да би се омогућило \"Не Узнемиравај\", апликацији Телефона се мора одобрити дозвола да контролише \"Не Узнемиравај\" стање.\nМолимо да је одобрите.</string>
+    <string name="allow">Дозволи</string>
+    <string name="deny">Одбиј</string>
+    <string name="call_recording_category_title">Снимање позива</string>
+    <string name="call_recording_format">Аудио формат</string>
+    <string name="call_via">Позив преко</string>
+    <string name="call_via_dialog_title">Позив преко\u2026</string>
+    <string name="call_log_stats_title">Статистике</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-sr/strings.xml b/java/com/android/dialer/app/res/values-sr/strings.xml
index 0814963..7020630 100644
--- a/java/com/android/dialer/app/res/values-sr/strings.xml
+++ b/java/com/android/dialer/app/res/values-sr/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Телефон</string>
-  <string name="launcherDialpadActivityLabel">Телефонска тастатура</string>
   <string name="callHistoryIconLabel">Историја позива</string>
   <string name="action_copy_number_text">Копирај број</string>
-  <string name="copy_transcript_text">Копирај транскрипцију</string>
   <string name="action_edit_number_before_call">Измени број пре позива</string>
   <string name="call_log_delete_all">Обриши историју позива</string>
   <string name="call_log_trash_voicemail">Избриши говорну поруку</string>
@@ -36,10 +34,7 @@
   <string name="description_playback_seek">Тражење позиције у репродукцији</string>
   <string name="action_menu_call_history_description">Историја позива</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Још опција</string>
-  <string name="action_menu_dialpad_button">тастатура</string>
   <string name="dialer_settings_label">Подешавања</string>
-  <string name="simulator_submenu_label">Симулатор</string>
-  <string name="new_ui_launcher_shortcut_label">Направите пречицу за нови UI</string>
   <string name="description_entering_bulk_action_mode">Улазите у режим групних радњи</string>
   <string name="description_leaving_bulk_action_mode">Изашли сте из режима групних радњи</string>
   <string name="description_selecting_bulk_action_mode">Изабрано је %1$s</string>
@@ -50,7 +45,6 @@
   <string name="description_video_call">Видео позив.</string>
   <string name="description_start_voice_search">Покретање гласовне претраге</string>
   <string name="voicemail">Говорна пошта</string>
-  <string name="description_cancel_multi_select">Откажите режим групних радњи</string>
   <string name="voicemailMultiSelectDeleteConfirm">Избриши</string>
   <string name="voicemailMultiSelectDeleteCancel">Откажи</string>
   <string name="voicemailMultiSelectActionBarTitle">Изабраних: %1$s</string>
@@ -65,7 +59,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Гласовна претрага није доступна</string>
   <string name="dialer_hint_find_contact">Претражи контакте</string>
-  <string name="block_number_search_hint">Додајте број или претражите контакте</string>
   <string name="call_log_all_empty">Историја позива је празна</string>
   <string name="call_log_all_empty_action">Позови</string>
   <string name="call_log_missed_empty">Немате ниједан пропуштен позив.</string>
@@ -73,23 +66,13 @@
   <string name="call_log_activity_title">Историја позива</string>
   <string name="call_log_all_title">Сви</string>
   <string name="call_log_missed_title">Пропуштени</string>
-  <string name="tab_speed_dial">Брзо бирање</string>
-  <string name="tab_history">Историја позива</string>
   <string name="tab_all_contacts">Контакти</string>
-  <string name="tab_voicemail">Говорна пошта</string>
-  <string name="search_shortcut_call_number">Позови %s</string>
   <string name="search_shortcut_create_new_contact">Направи нови контакт</string>
   <string name="search_shortcut_add_to_contact">Додај у контакт</string>
   <string name="search_shortcut_send_sms_message">Пошаљи SMS</string>
   <string name="search_shortcut_make_video_call">Упути видео позив</string>
-  <string name="search_shortcut_block_number">Блокирај број</string>
-  <string name="speed_dial_empty">Немате ниједан контакт на брзом бирању</string>
-  <string name="speed_dial_empty_add_favorite_action">Додај омиљен контакт</string>
-  <string name="remove_contact">Уклони</string>
   <string name="select_all">Изабери све</string>
   <string name="call_log_action_video_call">Видео позив</string>
-  <string name="call_log_action_set_up_video">Подеси видео позиве</string>
-  <string name="call_log_action_invite_video">Позови у видео позив</string>
   <string name="call_log_action_send_message">Пошаљи поруку</string>
   <string name="call_log_action_details">Детаљи позива</string>
   <string name="call_log_action_share_voicemail">Пошаљи у…</string>
@@ -128,23 +111,8 @@
   <string name="call_settings_label">Позиви</string>
   <string name="manage_blocked_numbers_label">Блокирани бројеви</string>
   <string name="voicemail_settings_label">Говорна пошта</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Блокирање позива је привремено искључено</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Блокирање позива је онемогућено зато што сте контактирали службе за помоћ у хитним случајевима са овог телефона у последњих 48 сати. Аутоматски ће бити поново омогућено када истекне период од 48 сати.</string>
-  <string name="import_send_to_voicemail_numbers_label">Увези бројеве</string>
-  <string name="blocked_call_settings_import_description">Раније сте означили неке позиваоце које аутоматски треба преусмерити на говорну пошту преко других апликација.</string>
-  <string name="blocked_call_settings_view_numbers_button">Прикажи бројеве</string>
-  <string name="blocked_call_settings_import_button">Увeзи</string>
-  <string name="description_blocked_number_list_delete">Деблокирај број</string>
-  <string name="addBlockedNumber">Додај број</string>
-  <string name="block_number_footer_message_vvm">Позиви са ових бројева ће бити блокирани и поруке говорне поште ће се аутоматски брисати.</string>
-  <string name="block_number_footer_message_no_vvm">Позиви са ових бројева ће бити блокирани, али позиваоци са ових бројева ће и даље моћи да вам остављају поруке говорне поште.</string>
-  <string name="block_list">Блокирани бројеви</string>
-  <string name="alreadyBlocked">%1$s је већ блокиран.</string>
   <string name="phone_account_settings_label">Налози за позивање</string>
-  <string name="permission_no_speeddial">Да бисте омогућили брзо бирање, укључите дозволу за Контакте.</string>
   <string name="permission_no_calllog">Да бисте видели евиденцију позива, укључите дозволу за Телефон.</string>
-  <string name="permission_no_search">Да бисте претражили контакте, укључите дозволе за Контакте.</string>
-  <string name="permission_place_call">Да бисте упутили позив, укључите дозволу за Телефон.</string>
   <string name="toast_cannot_write_system_settings">Апликација Телефон нема дозволу за уписивање у системска подешавања.</string>
   <string name="blocked_number_call_log_label">Блокирано</string>
   <string name="call_log_action_block_report_number">Блокирај/пријави као непожељан</string>
@@ -152,22 +120,4 @@
   <string name="call_log_action_remove_spam">Није непожељан</string>
   <string name="call_log_action_unblock_number">Деблокирај број</string>
   <string name="spam_number_call_log_label">Непожељан</string>
-  <string name="call_composer_connection_failed">%1$s је офлајн и не можете да га/је контактирате</string>
-  <string name="about_phone_label">Основни подаци</string>
-  <string name="voicemail_transcription_branding_text">Транскрипт је направио Google</string>
-  <string name="voicemail_transcription_in_progress">Транскрибује се…</string>
-  <string name="voicemail_transcription_failed">Транскрипт није доступан.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Транскрипт није доступан. Није подржан језик.</string>
-  <string name="voicemail_transcription_failed_no_speech">Транскрипт није доступан. Није откривен говор.</string>
-  <string name="voicemail_donation_promo_title">Желите ли да нам помогнете да побољшамо тачност транскрипције?</string>
-  <string name="voicemail_donation_promo_content">Дозволите Google-у да прегледа ову и будуће говорне поруке са транскриптима. Чуваће се анонимно. Подешавања увек можете да промените. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Да, омогући</string>
-  <string name="voicemail_donation_promo_opt_out">Не, хвала</string>
-  <string name="voicemail_transcription_rating">Оцените квалитет транскрипције</string>
-  <string name="voicemail_transcription_rating_thanks">Хвала вам на оцени квалитета</string>
-  <string name="description_rating_good">Означите да је добро</string>
-  <string name="description_rating_bad">Означите да је лоше</string>
-  <string name="view_conversation">Прикажи</string>
-  <string name="ec_data_deleted">Позив је избрисан. Прегледајте и избришите прилоге дељене током овог позива у Messages-у.</string>
-  <string name="multiple_ec_data_deleted">Позиви су избрисани. Прегледајте и избришите прилоге дељене током позива у Messages-у.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-sv/cm_strings.xml b/java/com/android/dialer/app/res/values-sv/cm_strings.xml
new file mode 100644
index 0000000..a8ad320
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-sv/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">I samtal</string>
+    <string name="incall_enable_dnd_title">Aktivera Stör ej under samtal</string>
+    <string name="incall_vibrate_outgoing_title">Vibrera vid svar</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrera vid samtal väntar</string>
+    <string name="incall_vibrate_hangup_title">Vibrera vid avslutat samtal</string>
+    <string name="incall_vibrate_45_title">Vibrera varje minut</string>
+    <string name="incall_vibrate_45_summary">Vibrerar vid 45:e sekunden för varje minut under utgående samtal</string>
+    <string name="incall_dnd_dialog_message">För att aktivera Stör ej behöver telefonappen beviljas behörigheten till att kontrollera Stör ej-statusen.\nVänligen tillåt den.</string>
+    <string name="allow">Tillåt</string>
+    <string name="deny">Neka</string>
+    <string name="call_recording_category_title">Samtalsinspelning</string>
+    <string name="call_recording_format">Ljudformat</string>
+    <string name="call_via">Ring med</string>
+    <string name="call_via_dialog_title">Ring med\u2026</string>
+    <string name="call_log_stats_title">Statistik</string>
+    <string name="action_menu_helplines">Hjälplinjer</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-sv/strings.xml b/java/com/android/dialer/app/res/values-sv/strings.xml
index eee9af9..6033b81 100644
--- a/java/com/android/dialer/app/res/values-sv/strings.xml
+++ b/java/com/android/dialer/app/res/values-sv/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Telefonens knappsats</string>
   <string name="callHistoryIconLabel">Samtalshistorik</string>
   <string name="action_copy_number_text">Kopiera nummer</string>
-  <string name="copy_transcript_text">Kopiera transkription</string>
   <string name="action_edit_number_before_call">Redigera nummer före samtal</string>
   <string name="call_log_delete_all">Rensa samtalshistorik</string>
   <string name="call_log_trash_voicemail">Radera röstmeddelande</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Sök uppspelningsläge</string>
   <string name="action_menu_call_history_description">Samtalshistorik</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Fler alternativ</string>
-  <string name="action_menu_dialpad_button">knappsats</string>
   <string name="dialer_settings_label">Inställningar</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Skapa genväg till anv.gränssn.</string>
   <string name="description_entering_bulk_action_mode">Öppnar läget för massåtgärd</string>
   <string name="description_leaving_bulk_action_mode">Stängde läget för massåtgärd</string>
   <string name="description_selecting_bulk_action_mode">Markerade %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Videosamtal.</string>
   <string name="description_start_voice_search">Starta röstsökning</string>
   <string name="voicemail">Röstbrevlåda</string>
-  <string name="description_cancel_multi_select">Avbryt läget för massåtgärd</string>
   <string name="voicemailMultiSelectDeleteConfirm">Radera</string>
   <string name="voicemailMultiSelectDeleteCancel">Avbryt</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s har markerats</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Röstsökning är inte tillgänglig</string>
   <string name="dialer_hint_find_contact">Sök efter kontakter</string>
-  <string name="block_number_search_hint">Ange nummer eller kontakt</string>
   <string name="call_log_all_empty">Samtalshistoriken är tom</string>
   <string name="call_log_all_empty_action">Ring ett samtal</string>
   <string name="call_log_missed_empty">Du har inga missade samtal.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Samtalshistorik</string>
   <string name="call_log_all_title">Alla</string>
   <string name="call_log_missed_title">Missade</string>
-  <string name="tab_speed_dial">Kortnummer</string>
-  <string name="tab_history">Samtalshistorik</string>
   <string name="tab_all_contacts">Kontakter</string>
-  <string name="tab_voicemail">Röstbrevlåda</string>
-  <string name="search_shortcut_call_number">Ring %s</string>
   <string name="search_shortcut_create_new_contact">Skapa ny kontakt</string>
   <string name="search_shortcut_add_to_contact">Lägg till i kontakt</string>
   <string name="search_shortcut_send_sms_message">Skicka sms</string>
   <string name="search_shortcut_make_video_call">Ring videosamtal</string>
-  <string name="search_shortcut_block_number">Blockera nummer</string>
-  <string name="speed_dial_empty">Du har ingen kontakt som snabbval ännu</string>
-  <string name="speed_dial_empty_add_favorite_action">Lägg till en favorit</string>
-  <string name="remove_contact">Ta bort</string>
   <string name="select_all">Markera alla</string>
   <string name="call_log_action_video_call">Videosamtal</string>
-  <string name="call_log_action_set_up_video">Konfigurera videosamtal</string>
-  <string name="call_log_action_invite_video">Bjud in till videosamtal</string>
   <string name="call_log_action_send_message">Skicka ett meddelande</string>
   <string name="call_log_action_details">Samtalsinfo</string>
   <string name="call_log_action_share_voicemail">Skicka till …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Samtal</string>
   <string name="manage_blocked_numbers_label">Blockerade nummer</string>
   <string name="voicemail_settings_label">Röstbrevlåda</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Blockeringen har inaktiverats tillfälligt</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Samtalsblockering har inaktiverats eftersom du ringde ett larmnummer från den här mobilen under de senaste 48 timmarna. Blockeringen aktiveras igen när 48 timmar har gått.</string>
-  <string name="import_send_to_voicemail_numbers_label">Importera nummer</string>
-  <string name="blocked_call_settings_import_description">Du har tidigare angett via andra appar att vissa inkommande samtal ska skickas till röstbrevlådan automatiskt.</string>
-  <string name="blocked_call_settings_view_numbers_button">Visa telefonnummer</string>
-  <string name="blocked_call_settings_import_button">Importera</string>
-  <string name="description_blocked_number_list_delete">Häv blockeringen av numret</string>
-  <string name="addBlockedNumber">Lägg till telefonnummer</string>
-  <string name="block_number_footer_message_vvm">Samtal från de här numren blockeras och röstmeddelanden raderas automatiskt.</string>
-  <string name="block_number_footer_message_no_vvm">Samtal från de här numren blockeras, men det kan fortfarande gå att lämna ett röstmeddelande.</string>
-  <string name="block_list">Blockerade nummer</string>
-  <string name="alreadyBlocked">%1$s är redan blockerat.</string>
   <string name="phone_account_settings_label">Konton för samtal</string>
-  <string name="permission_no_speeddial">Du måste aktivera behörigheten Kontakter för att kunna använda snabbuppringning.</string>
   <string name="permission_no_calllog">Du måste aktivera behörigheten Telefon för att kunna visa samtalsloggen.</string>
-  <string name="permission_no_search">Aktivera behörigheter för Kontakter om du vill söka bland kontakterna.</string>
-  <string name="permission_place_call">Du måste aktivera behörigheten Telefon för att kunna ringa.</string>
   <string name="toast_cannot_write_system_settings">Telefonappen har inte skrivbehörighet i systeminställningarna.</string>
   <string name="blocked_number_call_log_label">Blockerad</string>
   <string name="call_log_action_block_report_number">Blockera/rapportera spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Inte spam</string>
   <string name="call_log_action_unblock_number">Häv blockeringen av numret</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s är offline och går inte att nå</string>
-  <string name="about_phone_label">Om</string>
-  <string name="voicemail_transcription_branding_text">Transkriberat av Google</string>
-  <string name="voicemail_transcription_in_progress">Transkriberar …</string>
-  <string name="voicemail_transcription_failed">Transkription inte tillgänglig.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkription inte tillgänglig. Språket stöds inte.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkription inte tillgänglig. Inget tal identifierat.</string>
-  <string name="voicemail_donation_promo_title">Vill du hjälpa till att förbättra transkriptionskvaliteten?</string>
-  <string name="voicemail_donation_promo_content">Låt Google granska denna och framtida röstmeddelanden med transkriptioner. De lagras anonymt. Du kan ändra inställningarna när du vill. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">OK</string>
-  <string name="voicemail_donation_promo_opt_out">Nej tack</string>
-  <string name="voicemail_transcription_rating">Betygsätt transkriptionskvalitet</string>
-  <string name="voicemail_transcription_rating_thanks">Tack för din feedback</string>
-  <string name="description_rating_good">Gilla</string>
-  <string name="description_rating_bad">Ogilla</string>
-  <string name="view_conversation">Visa</string>
-  <string name="ec_data_deleted">Samtalet har raderats. Visa och radera bilagor som delats under samtalet i Messages.</string>
-  <string name="multiple_ec_data_deleted">Samtalen har raderats. Visa och radera bilagor som delats under samtal i Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-sw/strings.xml b/java/com/android/dialer/app/res/values-sw/strings.xml
index 356a8da..c3eeaa5 100644
--- a/java/com/android/dialer/app/res/values-sw/strings.xml
+++ b/java/com/android/dialer/app/res/values-sw/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Simu</string>
-  <string name="launcherDialpadActivityLabel">Vitufe vya Simu</string>
   <string name="callHistoryIconLabel">Rekodi ya simu zilizopigwa</string>
   <string name="action_copy_number_text">Nakili nambari</string>
-  <string name="copy_transcript_text">Nakili unukuzi</string>
   <string name="action_edit_number_before_call">Badilisha nambari kabla ya kupiga simu</string>
   <string name="call_log_delete_all">Futa rekodi ya simu zilizopigwa</string>
   <string name="call_log_trash_voicemail">Futa ujumbe wa sauti</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Tafuta sehemu ya kucheza ujumbe wa sauti</string>
   <string name="action_menu_call_history_description">Rekodi ya simu zilizopigwa</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Chaguo zaidi</string>
-  <string name="action_menu_dialpad_button">vitufe vya simu</string>
   <string name="dialer_settings_label">Mipangilio</string>
-  <string name="simulator_submenu_label">Kielelezo</string>
-  <string name="new_ui_launcher_shortcut_label">Unda Mkato Mpya wa Kiolesura</string>
   <string name="description_entering_bulk_action_mode">Unaingia katika hali ya kutekeleza vitendo vingi</string>
   <string name="description_leaving_bulk_action_mode">Umeondoka katika hali ya kutekeleza vitendo vingi</string>
   <string name="description_selecting_bulk_action_mode">Umeteua %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Hangout ya video.</string>
   <string name="description_start_voice_search">Anza kutafuta kwa kutamka</string>
   <string name="voicemail">Ujumbe wa sauti</string>
-  <string name="description_cancel_multi_select">Ghairi hali ya kutekeleza vitendo vingi</string>
   <string name="voicemailMultiSelectDeleteConfirm">Futa</string>
   <string name="voicemailMultiSelectDeleteCancel">Ghairi</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s zimechaguliwa</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Kutafuta kwa kutamka hakupatikani</string>
   <string name="dialer_hint_find_contact">Tafuta anwani</string>
-  <string name="block_number_search_hint">Ongeza nambari au utafute anwani</string>
   <string name="call_log_all_empty">Rekodi yako ya simu zilizopigwa haina chochote</string>
   <string name="call_log_all_empty_action">Piga simu</string>
   <string name="call_log_missed_empty">Huna simu ulizokosa kupokea</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Historia ya Simu</string>
   <string name="call_log_all_title">Zote</string>
   <string name="call_log_missed_title">Ambazo hazikupokewa</string>
-  <string name="tab_speed_dial">Unaowasiliana nao zaidi</string>
-  <string name="tab_history">Rekodi ya Simu Zilizopigwa</string>
   <string name="tab_all_contacts">Anwani zote</string>
-  <string name="tab_voicemail">Ujumbe wa sauti</string>
-  <string name="search_shortcut_call_number">Piga simu %s</string>
   <string name="search_shortcut_create_new_contact">Ongeza anwani mpya</string>
   <string name="search_shortcut_add_to_contact">Ongeza kwenye anwani</string>
   <string name="search_shortcut_send_sms_message">Tuma SMS</string>
   <string name="search_shortcut_make_video_call">Piga Hangout ya video</string>
-  <string name="search_shortcut_block_number">Zuia nambari</string>
-  <string name="speed_dial_empty">Hakuna mtu aliye katika orodha yako ya watu unaowasiliana nao zaidi</string>
-  <string name="speed_dial_empty_add_favorite_action">Ongeza anwani unazopenda zaidi</string>
-  <string name="remove_contact">Ondoa</string>
   <string name="select_all">Chagua zote</string>
   <string name="call_log_action_video_call">Hangout ya Video</string>
-  <string name="call_log_action_set_up_video">Weka mipangilio ya kupiga simu ya video</string>
-  <string name="call_log_action_invite_video">Alika kwenye simu ya video</string>
   <string name="call_log_action_send_message">Tuma SMS</string>
   <string name="call_log_action_details">Maelezo ya simu</string>
   <string name="call_log_action_share_voicemail">Tuma kwenye …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Simu zilizopigwa</string>
   <string name="manage_blocked_numbers_label">Nambari zilizozuiwa</string>
   <string name="voicemail_settings_label">Ujumbe wa sauti</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Kuzuia simu kumezimwa kwa muda</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Kipengele cha kuzuia simu kimezimwa kwa sababu uliwasiliana na huduma za dharura kwenye simu hii ndani ya saa 48 zilizopita. Kipengele hiki kitawashwa kiotomatiki baada ya kipindi cha saa 48 kumalizika.</string>
-  <string name="import_send_to_voicemail_numbers_label">Leta nambari</string>
-  <string name="blocked_call_settings_import_description">Hapo awali uliwekea alama baadhi ya wanaopiga ili simu zao ziingie kwenye ujumbe wa sauti kiotomatiki kupitia programu nyingine.</string>
-  <string name="blocked_call_settings_view_numbers_button">Angalia Nambari</string>
-  <string name="blocked_call_settings_import_button">Leta</string>
-  <string name="description_blocked_number_list_delete">Ondolea nambari kizuizi</string>
-  <string name="addBlockedNumber">Ongeza nambari</string>
-  <string name="block_number_footer_message_vvm">Simu zinazopigwa kutoka nambari hizi zitazuiwa na ujumbe wa sauti utafutwa kiotomatiki.</string>
-  <string name="block_number_footer_message_no_vvm">Simu zinazopigwa kutoka nambari hizi zitazuiwa, lakini wapigaji bado wanaweza kukutumia ujumbe wa sauti.</string>
-  <string name="block_list">Nambari zilizozuiwa</string>
-  <string name="alreadyBlocked">%1$s tayari imezuiwa.</string>
   <string name="phone_account_settings_label">Akaunti za simu</string>
-  <string name="permission_no_speeddial">Ili kuwasha kipengele cha unaowasiliana nao zaidi, washa ruhusa ya Anwani.</string>
   <string name="permission_no_calllog">Ili uone rekodi yako ya nambari za simu, washa ruhusa ya Simu.</string>
-  <string name="permission_no_search">Ili utafute anwani zako, washa ruhusa za Anwani.</string>
-  <string name="permission_place_call">Ili upige simu, washa ruhusa ya Simu.</string>
   <string name="toast_cannot_write_system_settings">Programu ya simu haina ruhusa ya kuandika kwenye mipangilio ya mfumo.</string>
   <string name="blocked_number_call_log_label">Imezuiwa</string>
   <string name="call_log_action_block_report_number">Zuia/ripoti taka</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Si taka</string>
   <string name="call_log_action_unblock_number">Ondolea nambari kizuizi</string>
   <string name="spam_number_call_log_label">Taka</string>
-  <string name="call_composer_connection_failed">%1$s hayuko mtandaoni na hapatikani</string>
-  <string name="about_phone_label">Kuhusu</string>
-  <string name="voicemail_transcription_branding_text">Unukuzi umefanywa na Google</string>
-  <string name="voicemail_transcription_in_progress">Inanukuu…</string>
-  <string name="voicemail_transcription_failed">Nukuu haipatikani.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Nukuu haipatikani. Lugha haitumiki.</string>
-  <string name="voicemail_transcription_failed_no_speech">Nukuu haipatikani. Hakuna sauti iliyogunduliwa.</string>
-  <string name="voicemail_donation_promo_title">Je, ungependa kusaidia kuimarisha usahihi wa nukuu?</string>
-  <string name="voicemail_donation_promo_content">Ruhusu Google ikague ujumbe huu wa sauti na mwingine kama huu siku zijazo ulio na manukuu. Ujumbe utahifadhiwa bila kutambulishwa. Badilisha Mipangilio wakati wowote. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Ndiyo, ninakubali</string>
-  <string name="voicemail_donation_promo_opt_out">Hapana, asante</string>
-  <string name="voicemail_transcription_rating">Kadiria ubora wa nukuu</string>
-  <string name="voicemail_transcription_rating_thanks">Asante kwa maoni yako</string>
-  <string name="description_rating_good">Imenipendeza</string>
-  <string name="description_rating_bad">Haijanipendeza</string>
-  <string name="view_conversation">Angalia</string>
-  <string name="ec_data_deleted">Mazungumzo ya simu yamefutwa. Angalia na ufute viambatisho vilivyoshirikiwa kwenye mazungumzo haya ya simu katika Programu ya Messages.</string>
-  <string name="multiple_ec_data_deleted">Mazungumzo ya simu yamefutwa. Angalia na ufute viambatisho vilivyoshirikiwa kwenye mazungumzo ya simu katika Programu ya Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ta/strings.xml b/java/com/android/dialer/app/res/values-ta/strings.xml
index bd5382c..78f4e30 100644
--- a/java/com/android/dialer/app/res/values-ta/strings.xml
+++ b/java/com/android/dialer/app/res/values-ta/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ஃபோன்</string>
-  <string name="launcherDialpadActivityLabel">ஃபோன் விசைத்தளம்</string>
   <string name="callHistoryIconLabel">அழைப்பு பதிவு</string>
   <string name="action_copy_number_text">எண்ணை நகலெடு</string>
-  <string name="copy_transcript_text">டிரான்ஸ்கிரிப்ஷனை நகலெடு</string>
   <string name="action_edit_number_before_call">அழைக்கும் முன் எண்ணை மாற்று</string>
   <string name="call_log_delete_all">அழைப்பு வரலாற்றை அழி</string>
   <string name="call_log_trash_voicemail">குரலஞ்சலை நீக்கு</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">பிளேபேக் நிலையைத் தேடு</string>
   <string name="action_menu_call_history_description">அழைப்பு வரலாறு</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">மேலும் விருப்பங்கள்</string>
-  <string name="action_menu_dialpad_button">விசைத்தளம்</string>
   <string name="dialer_settings_label">அமைப்பு</string>
-  <string name="simulator_submenu_label">சிமுலேட்டர்</string>
-  <string name="new_ui_launcher_shortcut_label">புதிய UI குறுக்குவழியை உருவாக்கு</string>
   <string name="description_entering_bulk_action_mode">மொத்தச் செயல் பயன்முறையில் நுழைகிறீர்கள்</string>
   <string name="description_leaving_bulk_action_mode">மொத்தச் செயல் பயன்முறையிலிருந்து வெளியேறிவிட்டீர்கள்</string>
   <string name="description_selecting_bulk_action_mode">தேர்ந்தெடுத்த %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">வீடியோ அழைப்பு.</string>
   <string name="description_start_voice_search">குரல் தேடலைத் தொடங்கு</string>
   <string name="voicemail">குரலஞ்சல்</string>
-  <string name="description_cancel_multi_select">தொகுப்புச் செயல்கள் பயன்முறையை ரத்துசெய்யும்</string>
   <string name="voicemailMultiSelectDeleteConfirm">நீக்கு</string>
   <string name="voicemailMultiSelectDeleteCancel">ரத்துசெய்</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s தேர்ந்தெடுக்கப்பட்டன</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">குரல் தேடல் இல்லை</string>
   <string name="dialer_hint_find_contact">தொடர்புகளைத் தேடு</string>
-  <string name="block_number_search_hint">எண்ணைச் சேர்க்கவும் அல்லது தொடர்புகளில் தேடவும்</string>
   <string name="call_log_all_empty">அழைப்பு வரலாறு காலியாக உள்ளது</string>
   <string name="call_log_all_empty_action">அழை</string>
   <string name="call_log_missed_empty">தவறிய அழைப்புகள் இல்லை.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">அழைப்பு பட்டியல்</string>
   <string name="call_log_all_title">எல்லாம்</string>
   <string name="call_log_missed_title">தவறியவை</string>
-  <string name="tab_speed_dial">விரைவு டயல்</string>
-  <string name="tab_history">அழைப்பு வரலாறு</string>
   <string name="tab_all_contacts">தொடர்புகள்</string>
-  <string name="tab_voicemail">குரலஞ்சல்</string>
-  <string name="search_shortcut_call_number">%s ஐ அழை</string>
   <string name="search_shortcut_create_new_contact">புதிய தொடர்பை உருவாக்கு</string>
   <string name="search_shortcut_add_to_contact">தொடர்பில் சேர்</string>
   <string name="search_shortcut_send_sms_message">SMS அனுப்பு</string>
   <string name="search_shortcut_make_video_call">வீடியோவில் அழை</string>
-  <string name="search_shortcut_block_number">எண்ணைத் தடு</string>
-  <string name="speed_dial_empty">இன்னும் விரைவு டயலில் யாரையும் சேர்க்கவில்லை</string>
-  <string name="speed_dial_empty_add_favorite_action">முக்கியமானவர்களைச் சேர்</string>
-  <string name="remove_contact">அகற்று</string>
   <string name="select_all">அனைத்தையும் தேர்ந்தெடு</string>
   <string name="call_log_action_video_call">வீடியோ அழைப்பு</string>
-  <string name="call_log_action_set_up_video">வீடியோ அழைப்பை அமை</string>
-  <string name="call_log_action_invite_video">வீடியோ அழைப்பிற்கு அழை</string>
   <string name="call_log_action_send_message">செய்தி அனுப்பவும்</string>
   <string name="call_log_action_details">அழைப்பு விவரங்கள்</string>
   <string name="call_log_action_share_voicemail">இதற்கு அனுப்பு …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">அழைப்புகள்</string>
   <string name="manage_blocked_numbers_label">தடுத்த எண்கள்</string>
   <string name="voicemail_settings_label">குரலஞ்சல்</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">அழைப்புத் தடுப்பு அம்சம் தற்காலிகமாக முடக்கப்பட்டுள்ளது</string>
-  <string name="blocked_numbers_disabled_emergency_desc">கடந்த 48 மணிநேரத்தில், இந்த ஃபோனிலிருந்து அவசர அழைப்பு எண்ணைத் தொடர்புகொண்டதால் அழைப்புத் தடுப்பு அம்சம் முடக்கப்பட்டுள்ளது. 48 மணிநேரம் கழித்து, இந்த அம்சம் தானாகவே மீண்டும் இயக்கப்படும்.</string>
-  <string name="import_send_to_voicemail_numbers_label">எண்களை இறக்கு</string>
-  <string name="blocked_call_settings_import_description">பிற பயன்பாடுகளின் மூலம் சில அழைப்பாளர்களின் அழைப்புகளை தானாகவே குரலஞ்சலுக்கு அனுப்புமாறு ஏற்கனவே குறித்துள்ளீர்கள்.</string>
-  <string name="blocked_call_settings_view_numbers_button">எண்களைக் காட்டு</string>
-  <string name="blocked_call_settings_import_button">இறக்கு</string>
-  <string name="description_blocked_number_list_delete">எண்ணை அனுமதி</string>
-  <string name="addBlockedNumber">எண்ணைச் சேர்</string>
-  <string name="block_number_footer_message_vvm">இந்த எண்களின் அழைப்புகள் தடுக்கப்படுவதுடன், அவற்றின் குரலஞ்சல்களும் தானாகவே நீக்கப்படும்.</string>
-  <string name="block_number_footer_message_no_vvm">இந்த எண்களின் அழைப்புகள் தடுக்கப்படும், ஆனால் அழைப்பாளர்களால் இன்னமும் உங்களுக்குக் குரலஞ்சல்களை அனுப்ப முடியும்.</string>
-  <string name="block_list">தடுக்கப்பட்ட எண்கள்</string>
-  <string name="alreadyBlocked">%1$s ஏற்கனவே தடுக்கப்பட்டுள்ளது.</string>
   <string name="phone_account_settings_label">அழைப்பு கணக்குகள்</string>
-  <string name="permission_no_speeddial">விரைவு டயலை இயக்க, தொடர்புகள் அனுமதியை இயக்கவும்.</string>
   <string name="permission_no_calllog">அழைப்புப் பதிவைப் பார்க்க, ஃபோன் அனுமதியை இயக்கவும்.</string>
-  <string name="permission_no_search">தொடர்புகளைத் தேட, தொடர்புகள் அனுமதிகளை இயக்கவும்.</string>
-  <string name="permission_place_call">அழைக்க, ஃபோன் அனுமதியை இயக்கவும்.</string>
   <string name="toast_cannot_write_system_settings">முறைமை அமைப்புகளில் எழுதுவதற்கான அனுமதி ஃபோன் பயன்பாட்டுக்கு இல்லை.</string>
   <string name="blocked_number_call_log_label">தடுக்கப்பட்டது</string>
   <string name="call_log_action_block_report_number">தடு/ஸ்பேமெனப் புகாரளி</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">ஸ்பேமில்லை</string>
   <string name="call_log_action_unblock_number">எண்ணை அனுமதி</string>
   <string name="spam_number_call_log_label">ஸ்பேம்</string>
-  <string name="call_composer_connection_failed">%1$s ஆஃப்லைனில் உள்ளதால், தொடர்புகொள்ள முடியாது</string>
-  <string name="about_phone_label">அறிமுகம்</string>
-  <string name="voicemail_transcription_branding_text">Google டிரான்ஸ்கிரைப் செய்தது</string>
-  <string name="voicemail_transcription_in_progress">டிரான்ஸ்கிரைப் செய்கிறது…</string>
-  <string name="voicemail_transcription_failed">டிரான்ஸ்கிரிப்ட் இல்லை.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">டிரான்ஸ்கிரிப்ட் இல்லை. மொழி ஆதரிக்கப்படவில்லை.</string>
-  <string name="voicemail_transcription_failed_no_speech">டிரான்ஸ்கிரிப்ட் இல்லை. பேச்சு எதுவும் கேட்கவில்லை.</string>
-  <string name="voicemail_donation_promo_title">டிரான்ஸ்கிரிப்ஷன் துல்லியத்தை மேம்படுத்த உதவ விருப்பமா?</string>
-  <string name="voicemail_donation_promo_content">இதையும் எதிர்காலக் குரலஞ்சல்கள் செய்திகளையும் டிரான்ஸ்கிரிப்ட்டுகளின் மூலம் மதிப்பாய்வு செய்வதற்கு, Googleஐ அனுமதிக்கவும். அவை பெயரற்ற முறையில் சேமிக்கப்படும். அமைப்புகளை எப்போது வேண்டுமானாலும் மாற்றலாம். %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">ஏற்கிறேன்</string>
-  <string name="voicemail_donation_promo_opt_out">வேண்டாம்</string>
-  <string name="voicemail_transcription_rating">டிரான்ஸ்கிரிப்ஷன் தரத்தை மதிப்பிடுக</string>
-  <string name="voicemail_transcription_rating_thanks">கருத்து தெரிவித்தமைக்கு நன்றி</string>
-  <string name="description_rating_good">விரும்புகிறேன்</string>
-  <string name="description_rating_bad">விரும்பவில்லை</string>
-  <string name="view_conversation">காட்டு</string>
-  <string name="ec_data_deleted">அழைப்பு நீக்கப்பட்டது. இந்த அழைப்பின் போது பகிர்ந்த இணைப்புகளை மெசேஜஸ் பயன்பாட்டில் பார்க்கலாம், நீக்கலாம்.</string>
-  <string name="multiple_ec_data_deleted">அழைப்புகள் நீக்கப்பட்டன. அழைப்புகளின் போது பகிர்ந்த இணைப்புகளை மெசேஜஸ் பயன்பாட்டில் பார்க்கலாம், நீக்கலாம்.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-te/strings.xml b/java/com/android/dialer/app/res/values-te/strings.xml
index 3b592f7..dbef186 100644
--- a/java/com/android/dialer/app/res/values-te/strings.xml
+++ b/java/com/android/dialer/app/res/values-te/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">ఫోన్</string>
-  <string name="launcherDialpadActivityLabel">ఫోన్ కీప్యాడ్</string>
   <string name="callHistoryIconLabel">కాల్ చరిత్ర</string>
   <string name="action_copy_number_text">నంబర్‌ను కాపీ చేయి</string>
-  <string name="copy_transcript_text">లిప్యంతరీకరణను కాపీ చేయి</string>
   <string name="action_edit_number_before_call">కాల్ చేయడానికి ముందు నంబర్‌ను సవరించు</string>
   <string name="call_log_delete_all">కాల్ చరిత్రను క్లియర్ చేయి</string>
   <string name="call_log_trash_voicemail">వాయిస్ మెయిల్‌ను తొలగించు</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">ప్లేబ్యాక్ స్థానాన్ని కావాల్సిన చోటుకి జరపండి</string>
   <string name="action_menu_call_history_description">కాల్ చరిత్ర</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">మరిన్ని ఎంపికలు</string>
-  <string name="action_menu_dialpad_button">కీ ప్యాడ్</string>
   <string name="dialer_settings_label">సెట్టింగ్‌లు</string>
-  <string name="simulator_submenu_label">సిములేటర్</string>
-  <string name="new_ui_launcher_shortcut_label">కొత్త UI సత్వరమార్గం సృష్టించు</string>
   <string name="description_entering_bulk_action_mode">బల్క్ చర్య మోడ్‌లోకి ప్రవేశిస్తున్నారు</string>
   <string name="description_leaving_bulk_action_mode">బల్క్ చర్య మోడ్ నుండి నిష్క్రమించారు</string>
   <string name="description_selecting_bulk_action_mode">%1$s ఎంచుకోబడింది</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">వీడియో కాల్.</string>
   <string name="description_start_voice_search">వాయిస్ శోధనను ప్రారంభించండి</string>
   <string name="voicemail">వాయిస్ మెయిల్</string>
-  <string name="description_cancel_multi_select">సమూహ చర్యల మోడ్‌ను రద్దు చేస్తుంది</string>
   <string name="voicemailMultiSelectDeleteConfirm">తొలగించు</string>
   <string name="voicemailMultiSelectDeleteCancel">రద్దు చేయి</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s ఎంచుకోబడ్డాయి</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">వాయిస్ శోధన అందుబాటులో లేదు</string>
   <string name="dialer_hint_find_contact">పరిచయాలను శోధించు</string>
-  <string name="block_number_search_hint">నంబర్ జోడించండి లేదా పరిచయాల్లో శోధించండి</string>
   <string name="call_log_all_empty">మీ కాల్ చరిత్ర ఖాళీగా ఉంది</string>
   <string name="call_log_all_empty_action">కాల్ చేయి</string>
   <string name="call_log_missed_empty">మీరు సమాధానమివ్వని కాల్‌లు ఏవీ కలిగి లేరు.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">కాల్ చరిత్ర</string>
   <string name="call_log_all_title">అన్నీ</string>
   <string name="call_log_missed_title">సమాధానం ఇవ్వనవి</string>
-  <string name="tab_speed_dial">స్పీడ్ డయల్</string>
-  <string name="tab_history">కాల్ చరిత్ర</string>
   <string name="tab_all_contacts">పరిచయాలు</string>
-  <string name="tab_voicemail">వాయిస్ మెయిల్</string>
-  <string name="search_shortcut_call_number">%sకు కాల్ చేయి</string>
   <string name="search_shortcut_create_new_contact">కొత్త పరిచయాన్ని సృష్టించు</string>
   <string name="search_shortcut_add_to_contact">పరిచయానికి జోడించు</string>
   <string name="search_shortcut_send_sms_message">SMS పంపు</string>
   <string name="search_shortcut_make_video_call">వీడియో కాల్ చేయండి</string>
-  <string name="search_shortcut_block_number">నంబర్‌ను బ్లాక్ చేయి</string>
-  <string name="speed_dial_empty">మీ స్పీడ్ డయల్‌లో ఇంకా ఎవరూ లేరు</string>
-  <string name="speed_dial_empty_add_favorite_action">ఇష్టమైన వారిని జోడించండి</string>
-  <string name="remove_contact">తీసివేయి</string>
   <string name="select_all">అన్నీ ఎంచుకోండి</string>
   <string name="call_log_action_video_call">వీడియో కాల్</string>
-  <string name="call_log_action_set_up_video">వీడియో కాలింగ్‌ని సెటప్ చేయి</string>
-  <string name="call_log_action_invite_video">వీడియో కాల్‌కు ఆహ్వానించు</string>
   <string name="call_log_action_send_message">సందేశాన్ని పంపు</string>
   <string name="call_log_action_details">కాల్ వివరాలు</string>
   <string name="call_log_action_share_voicemail">దీనికి/వీటికి పంపు …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">కాల్‌లు</string>
   <string name="manage_blocked_numbers_label">బ్లాక్ చేయబడిన నంబర్‌లు</string>
   <string name="voicemail_settings_label">వాయిస్ మెయిల్</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">కాల్ బ్లాకింగ్ తాత్కాలికంగా ఆఫ్ అయ్యింది</string>
-  <string name="blocked_numbers_disabled_emergency_desc">మీరు గత 48 గంటల వ్యవధిలో ఈ ఫోన్ నుండి అత్యవసర సేవలను సంప్రదించినందున కాల్ బ్లాకింగ్ నిలిపివేయబడింది. 48 గంటల వ్యవధి ముగిసిన తర్వాత ఇది స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది.</string>
-  <string name="import_send_to_voicemail_numbers_label">నంబర్‌లను దిగుమతి చేయి</string>
-  <string name="blocked_call_settings_import_description">మీరు ఇంతకుముందే కొంతమంది కాలర్‌లను స్వయంచాలకంగా ఇతర అనువర్తనాల ద్వారా వాయిస్ మెయిల్‌కి పంపేందుకు గుర్తు పెట్టారు.</string>
-  <string name="blocked_call_settings_view_numbers_button">నంబర్‌లను వీక్షించండి</string>
-  <string name="blocked_call_settings_import_button">దిగుమతి చేయి</string>
-  <string name="description_blocked_number_list_delete">నంబర్‌ను అన్‌బ్లాక్ చేయి</string>
-  <string name="addBlockedNumber">నంబర్‌ను జోడించండి</string>
-  <string name="block_number_footer_message_vvm">ఈ నంబర్‌ల నుండి కాల్‌లు బ్లాక్ చేయబడతాయి మరియు వాయిస్‌మెయిల్‌లు స్వయంచాలకంగా తొలగించబడతాయి.</string>
-  <string name="block_number_footer_message_no_vvm">ఈ నంబర్‌ల నుండి కాల్‌లు బ్లాక్ చేయబడతాయి, కానీ వాటి నుండి ఇప్పటికీ వాయిస్‌మెయిల్‌లు పంపబడవచ్చు.</string>
-  <string name="block_list">బ్లాక్ చేయబడిన నంబర్‌లు</string>
-  <string name="alreadyBlocked">%1$s ఇప్పటికే బ్లాక్ చేయబడింది.</string>
   <string name="phone_account_settings_label">కాల్ చేసే ఖాతాలు</string>
-  <string name="permission_no_speeddial">స్పీడ్ డయల్‌ను ప్రారంభించడానికి, పరిచయాల అనుమతిని ఆన్ చేయండి.</string>
   <string name="permission_no_calllog">మీ కాల్ లాగ్‌ను చూడటానికి, ఫోన్ అనుమతిని ఆన్ చేయండి.</string>
-  <string name="permission_no_search">మీ పరిచయాలను శోధించడానికి, పరిచయాల అనుమతులను ఆన్ చేయండి.</string>
-  <string name="permission_place_call">కాల్ చేయడానికి, ఫోన్ అనుమతిని ఆన్ చేయండి.</string>
   <string name="toast_cannot_write_system_settings">సిస్టమ్ సెట్టింగ్‌లకు వ్రాయడం కోసం ఫోన్ అనువర్తనానికి అనుమతి లేదు.</string>
   <string name="blocked_number_call_log_label">బ్లాక్ చేయబడింది</string>
   <string name="call_log_action_block_report_number">బ్లాక్ చేయి/స్పామ్‌గానివేదించు</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">స్పామ్ కాదు</string>
   <string name="call_log_action_unblock_number">నంబర్‌ను అన్‌బ్లాక్ చేయి</string>
   <string name="spam_number_call_log_label">స్పామ్</string>
-  <string name="call_composer_connection_failed">%1$s ఆఫ్‌లైన్‌లో ఉన్నందున వారిని చేరుకోవడం సాధ్యపడదు</string>
-  <string name="about_phone_label">పరిచయం</string>
-  <string name="voicemail_transcription_branding_text">Google లిప్యంతరీకరించింది</string>
-  <string name="voicemail_transcription_in_progress">లిప్యంతరణం చేస్తోంది…</string>
-  <string name="voicemail_transcription_failed">లిప్యంతరీకరణ అందుబాటులో లేదు.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">లిప్యంతరీకరణ అందుబాటులో లేదు. భాషకు మద్దతు లేదు.</string>
-  <string name="voicemail_transcription_failed_no_speech">లిప్యంతరీకరణ అందుబాటులో లేదు. ప్రసంగం కనుగొనబడలేదు.</string>
-  <string name="voicemail_donation_promo_title">లిపి మార్పు ఖచ్చితత్వాన్ని మెరుగుపరచడంలో సహాయం చేయాలా?</string>
-  <string name="voicemail_donation_promo_content">లిపి మార్పులతో ప్రస్తుత మరియు భవిష్యత్ వాయిస్‌మెయిల్ సందేశాలను సమీక్షించడానికి Googleని అనుమతించండి. అవి అనామకంగా నిల్వ చేయబడతాయి. ఏ సమయంలో అయినా సెట్టింగ్‌లను మార్చండి. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">సరే, సమ్మతమే</string>
-  <string name="voicemail_donation_promo_opt_out">వద్దు</string>
-  <string name="voicemail_transcription_rating">లిప్యంతరీకరణ నాణ్యతను రేట్ చేయండి</string>
-  <string name="voicemail_transcription_rating_thanks">మీ అభిప్రాయానికి ధన్యవాదాలు</string>
-  <string name="description_rating_good">లైక్</string>
-  <string name="description_rating_bad">డిస్‌లైక్</string>
-  <string name="view_conversation">వీక్షించండి</string>
-  <string name="ec_data_deleted">కాల్ తొలగించబడింది. ఈ కాల్‌లో భాగస్వామ్యం చేయబడిన జోడింపులను సందేశాల అనువర్తనంలో వీక్షించండి మరియు తొలగించండి.</string>
-  <string name="multiple_ec_data_deleted">కాల్ తొలగించబడింది. కాల్‌ల్లో భాగస్వామ్యం చేయబడిన జోడింపులను సందేశాల అనువర్తనంలో వీక్షించండి మరియు తొలగించండి.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-th/cm_strings.xml b/java/com/android/dialer/app/res/values-th/cm_strings.xml
new file mode 100644
index 0000000..9166f57
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-th/cm_strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">โทรอยู่</string>
+    <string name="incall_enable_dnd_title">เปิดการใช้งานห้ามรบกวนในระหว่างการโทร</string>
+    <string name="incall_vibrate_outgoing_title">สั่นเมื่อมีการรับสาย</string>
+    <string name="incall_vibrate_call_waiting_title">สั่นขณะรอสาย</string>
+    <string name="incall_vibrate_hangup_title">สั่นเมื่อวางสาย</string>
+    <string name="incall_vibrate_45_title">สั่นทุก ๆ นาที</string>
+    <string name="incall_vibrate_45_summary">สั่นในวินาทีที่ 45 ของทุก ๆ นาทีระหว่างการโทรออก</string>
+    <string name="incall_dnd_dialog_message">การเปิดใช้งานห้ามรบกวน แอปโทรศัพท์จำเป็นต้องได้รับสิทธิ์ในการควบคุมสถานะห้ามรบกวน\nโปรดอนุญาต</string>
+    <string name="allow">อนุญาต</string>
+    <string name="deny">ปฏิเสธ</string>
+    <string name="call_recording_category_title">บันทึกการสนทนา</string>
+    <string name="call_recording_format">รูปแบบไฟล์เสียง</string>
+    <string name="call_via">โทรผ่าน</string>
+    <string name="call_via_dialog_title">โทรผ่าน\u2026</string>
+    <string name="call_log_stats_title">สถิติ</string>
+    <string name="action_menu_helplines">สายด่วน</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-th/strings.xml b/java/com/android/dialer/app/res/values-th/strings.xml
index 6aabd66..372e4f9 100644
--- a/java/com/android/dialer/app/res/values-th/strings.xml
+++ b/java/com/android/dialer/app/res/values-th/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">โทรศัพท์</string>
-  <string name="launcherDialpadActivityLabel">ปุ่มกดโทรศัพท์</string>
   <string name="callHistoryIconLabel">ประวัติการโทร</string>
   <string name="action_copy_number_text">คัดลอกหมายเลข</string>
-  <string name="copy_transcript_text">คัดลอกการถอดเสียงเป็นคำ</string>
   <string name="action_edit_number_before_call">แก้ไขหมายเลขก่อนโทร</string>
   <string name="call_log_delete_all">ล้างประวัติการโทร</string>
   <string name="call_log_trash_voicemail">ลบข้อความเสียง</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">ค้นหาตำแหน่งการเล่น</string>
   <string name="action_menu_call_history_description">ประวัติการโทร</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">ตัวเลือกเพิ่มเติม</string>
-  <string name="action_menu_dialpad_button">ปุ่มกด</string>
   <string name="dialer_settings_label">การตั้งค่า</string>
-  <string name="simulator_submenu_label">เครื่องมือจำลอง</string>
-  <string name="new_ui_launcher_shortcut_label">สร้างทางลัด UI ใหม่</string>
   <string name="description_entering_bulk_action_mode">กำลังเข้าสู่โหมดการดำเนินการแบบกลุ่ม</string>
   <string name="description_leaving_bulk_action_mode">ออกจากโหมดการทำงานแบบกลุ่มแล้ว</string>
   <string name="description_selecting_bulk_action_mode">เลือก %1$s แล้ว</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call"> Hangouts วิดีโอ</string>
   <string name="description_start_voice_search">เริ่มต้นการค้นหาด้วยเสียง</string>
   <string name="voicemail">ข้อความเสียง</string>
-  <string name="description_cancel_multi_select">ยกเลิกโหมดการทำงานแบบกลุ่ม</string>
   <string name="voicemailMultiSelectDeleteConfirm">ลบ</string>
   <string name="voicemailMultiSelectDeleteCancel">ยกเลิก</string>
   <string name="voicemailMultiSelectActionBarTitle">เลือกไว้ %1$s รายการ</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">การค้นหาด้วยเสียงไม่พร้อมใช้งาน</string>
   <string name="dialer_hint_find_contact">ค้นหารายชื่อติดต่อ</string>
-  <string name="block_number_search_hint">เพิ่มหมายเลขหรือค้นหาผู้ติดต่อ</string>
   <string name="call_log_all_empty">ประวัติการโทรว่างเปล่า</string>
   <string name="call_log_all_empty_action">โทรออก</string>
   <string name="call_log_missed_empty">คุณไม่มีสายที่ไม่ได้รับ</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">ประวัติการโทร</string>
   <string name="call_log_all_title">ทั้งหมด</string>
   <string name="call_log_missed_title">ไม่ได้รับ</string>
-  <string name="tab_speed_dial">การโทรด่วน</string>
-  <string name="tab_history">ประวัติการโทร</string>
   <string name="tab_all_contacts">รายชื่อติดต่อ</string>
-  <string name="tab_voicemail">ข้อความเสียง</string>
-  <string name="search_shortcut_call_number">โทร %s</string>
   <string name="search_shortcut_create_new_contact">สร้างรายชื่อติดต่อใหม่</string>
   <string name="search_shortcut_add_to_contact">เพิ่มในรายชื่อติดต่อ</string>
   <string name="search_shortcut_send_sms_message">ส่ง SMS</string>
   <string name="search_shortcut_make_video_call">ใช้ Hangouts วิดีโอ</string>
-  <string name="search_shortcut_block_number">บล็อกหมายเลข</string>
-  <string name="speed_dial_empty">ยังไม่ได้กำหนดผู้ใดในการโทรด่วน</string>
-  <string name="speed_dial_empty_add_favorite_action">เพิ่มรายการโปรด</string>
-  <string name="remove_contact">ลบ</string>
   <string name="select_all">เลือกทั้งหมด</string>
   <string name="call_log_action_video_call"> Hangouts วิดีโอ</string>
-  <string name="call_log_action_set_up_video">ตั้งค่าวิดีโอคอล</string>
-  <string name="call_log_action_invite_video">เชิญเข้าร่วมวิดีโอคอล</string>
   <string name="call_log_action_send_message">ส่งข้อความ</string>
   <string name="call_log_action_details">รายละเอียดการโทร</string>
   <string name="call_log_action_share_voicemail">ส่งไปที่…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">การโทร</string>
   <string name="manage_blocked_numbers_label">หมายเลขที่ถูกบล็อก</string>
   <string name="voicemail_settings_label">ข้อความเสียง</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">การบล็อกสายเรียกเข้าปิดชั่วคราว</string>
-  <string name="blocked_numbers_disabled_emergency_desc">ระบบปิดใช้การบล็อกสายเรียกเข้าเนื่องจากคุณติดต่อบริการฉุกเฉินจากโทรศัพท์เครื่องนี้ภายใน 48 ชั่วโมงที่ผ่านมา ระบบจะเปิดใช้ฟีเจอร์นี้อีกครั้งโดยอัตโนมัติเมื่อครบ 48 ชั่วโมง</string>
-  <string name="import_send_to_voicemail_numbers_label">นำเข้าหมายเลข</string>
-  <string name="blocked_call_settings_import_description">ก่อนหน้านี้คุณได้ทำเครื่องหมายว่าให้ส่งผู้โทรบางคนไปยังข้อความเสียงโดยอัตโนมัติผ่านแอปอื่นๆ</string>
-  <string name="blocked_call_settings_view_numbers_button">ดูหมายเลข</string>
-  <string name="blocked_call_settings_import_button">นำเข้า</string>
-  <string name="description_blocked_number_list_delete">เลิกบล็อกหมายเลข</string>
-  <string name="addBlockedNumber">เพิ่มหมายเลข</string>
-  <string name="block_number_footer_message_vvm">ระบบจะบล็อกสายเรียกเข้าจากหมายเลขเหล่านี้และลบข้อความเสียงโดยอัตโนมัติ</string>
-  <string name="block_number_footer_message_no_vvm">ระบบจะบล็อกสายเรียกเข้าจากหมายเลขเหล่านี้ แต่ผู้โทรอาจยังฝากข้อความเสียงถึงคุณได้อยู่</string>
-  <string name="block_list">หมายเลขที่ถูกบล็อก</string>
-  <string name="alreadyBlocked">%1$s ถูกบล็อกอยู่แล้ว</string>
   <string name="phone_account_settings_label">บัญชีการโทร</string>
-  <string name="permission_no_speeddial">หากต้องการเปิดใช้การโทรด่วน ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ</string>
   <string name="permission_no_calllog">หากต้องการดูประวัติการโทร ให้เปิดสิทธิ์เข้าถึงโทรศัพท์</string>
-  <string name="permission_no_search">หากต้องการค้นหารายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ</string>
-  <string name="permission_place_call">หากต้องการโทรออก ให้เปิดสิทธิ์เข้าถึงโทรศัพท์</string>
   <string name="toast_cannot_write_system_settings">แอปโทรศัพท์ไม่ได้รับอนุญาตให้เขียนไปยังการตั้งค่าระบบ</string>
   <string name="blocked_number_call_log_label">ถูกบล็อก</string>
   <string name="call_log_action_block_report_number">บล็อก/รายงานจดหมายขยะ</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">ไม่ใช่จดหมายขยะ</string>
   <string name="call_log_action_unblock_number">เลิกบล็อกหมายเลข</string>
   <string name="spam_number_call_log_label">สแปม</string>
-  <string name="call_composer_connection_failed">%1$s ออฟไลน์อยู่และไม่สามารถติดต่อได้</string>
-  <string name="about_phone_label">เกี่ยวกับ</string>
-  <string name="voicemail_transcription_branding_text">ถอดเสียงโดย Google</string>
-  <string name="voicemail_transcription_in_progress">กำลังถอดเสียง…</string>
-  <string name="voicemail_transcription_failed">การถอดเสียงไม่พร้อมใช้งาน</string>
-  <string name="voicemail_transcription_failed_language_not_supported">การถอดเสียงไม่พร้อมใช้งาน ไม่รองรับภาษานี้</string>
-  <string name="voicemail_transcription_failed_no_speech">การถอดเสียงไม่พร้อมใช้งาน ไม่พบเสียง</string>
-  <string name="voicemail_donation_promo_title">ต้องการช่วยปรับปรุงความถูกต้องของการถอดเสียงใช่ไหม</string>
-  <string name="voicemail_donation_promo_content">ให้ Google ตรวจสอบข้อความเสียงนี้และข้อความอื่นๆ ในอนาคตด้วยการถอดเสียง ระบบจะจัดเก็บข้อมูลไว้โดยไม่ระบุชื่อ ซึ่งคุณสามารถเปลี่ยนแปลงการตั้งค่าได้ทุกเมื่อ%1$s</string>
-  <string name="voicemail_donation_promo_opt_in">ได้สิ ตกลง</string>
-  <string name="voicemail_donation_promo_opt_out">ไม่เป็นไร</string>
-  <string name="voicemail_transcription_rating">ให้คะแนนคุณภาพการถอดเสียง</string>
-  <string name="voicemail_transcription_rating_thanks">ขอขอบคุณสำหรับความคิดเห็นของคุณ</string>
-  <string name="description_rating_good">ชอบ</string>
-  <string name="description_rating_bad">ไม่ชอบ</string>
-  <string name="view_conversation">ดู</string>
-  <string name="ec_data_deleted">ลบการโทรแล้ว ดูและลบไฟล์แนบที่แชร์ระหว่างการโทรนี้ใน Messages</string>
-  <string name="multiple_ec_data_deleted">ลบการโทรแล้ว ดูและลบไฟล์แนบที่แชร์ระหว่างการโทรใน Messages</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-tl/strings.xml b/java/com/android/dialer/app/res/values-tl/strings.xml
index b349c7f..15d3696 100644
--- a/java/com/android/dialer/app/res/values-tl/strings.xml
+++ b/java/com/android/dialer/app/res/values-tl/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telepono</string>
-  <string name="launcherDialpadActivityLabel">Keypad ng Telepono</string>
   <string name="callHistoryIconLabel">History ng tawag</string>
   <string name="action_copy_number_text">Kopyahin ang numero</string>
-  <string name="copy_transcript_text">Kopyahin ang transkripsyon</string>
   <string name="action_edit_number_before_call">I-edit ang numero bago tumawag</string>
   <string name="call_log_delete_all">I-clear ang history ng tawag</string>
   <string name="call_log_trash_voicemail">I-delete ang voicemail</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Hanapin ang posisyon ng playback</string>
   <string name="action_menu_call_history_description">History ng tawag</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Higit pang mga pagpipilian</string>
-  <string name="action_menu_dialpad_button">keypad</string>
   <string name="dialer_settings_label">Mga Setting</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">Gawa ng Shortcut ng Bagong UI</string>
   <string name="description_entering_bulk_action_mode">Pumapasok sa bulk action mode</string>
   <string name="description_leaving_bulk_action_mode">Umalis sa bulk action mode</string>
   <string name="description_selecting_bulk_action_mode">Napili %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Video call.</string>
   <string name="description_start_voice_search">Simulan ang paghahanap gamit ang boses</string>
   <string name="voicemail">Voicemail</string>
-  <string name="description_cancel_multi_select">Kanselahin ang batch actions mode</string>
   <string name="voicemailMultiSelectDeleteConfirm">I-delete</string>
   <string name="voicemailMultiSelectDeleteCancel">Kanselahin</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s ang napili</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Hindi available ang paghahanap gamit ang boses</string>
   <string name="dialer_hint_find_contact">Maghanap ng mga contact</string>
-  <string name="block_number_search_hint">Magdagdag ng numero, maghanap sa contact</string>
   <string name="call_log_all_empty">Walang laman ang iyong history ng tawag</string>
   <string name="call_log_all_empty_action">Tumawag</string>
   <string name="call_log_missed_empty">Wala kang mga hindi nasagot na tawag.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">History ng Tawag</string>
   <string name="call_log_all_title">Lahat</string>
   <string name="call_log_missed_title">Di nasagot</string>
-  <string name="tab_speed_dial">Speed dial</string>
-  <string name="tab_history">History ng Tawag</string>
   <string name="tab_all_contacts">Mga Contact</string>
-  <string name="tab_voicemail">Voicemail</string>
-  <string name="search_shortcut_call_number">Tumawag sa %s</string>
   <string name="search_shortcut_create_new_contact">Gumawa ng bagong contact</string>
   <string name="search_shortcut_add_to_contact">Idagdag sa isang contact</string>
   <string name="search_shortcut_send_sms_message">Magpadala ng SMS</string>
   <string name="search_shortcut_make_video_call">Gumawa ng video call</string>
-  <string name="search_shortcut_block_number">I-block ang numero</string>
-  <string name="speed_dial_empty">Wala pang tao sa iyong speed dial</string>
-  <string name="speed_dial_empty_add_favorite_action">Magdagdag ng paborito</string>
-  <string name="remove_contact">Alisin</string>
   <string name="select_all">Piliin lahat</string>
   <string name="call_log_action_video_call">Mag-video call</string>
-  <string name="call_log_action_set_up_video">Mag-set up ng pag-video call</string>
-  <string name="call_log_action_invite_video">Imbitahan sa video call</string>
   <string name="call_log_action_send_message">Magpadala ng mensahe</string>
   <string name="call_log_action_details">Mga detalye ng tawag</string>
   <string name="call_log_action_share_voicemail">Ibahagi sa …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Mga Tawag</string>
   <string name="manage_blocked_numbers_label">Mga naka-block na numero</string>
   <string name="voicemail_settings_label">Voicemail</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Pansamantalang na-off ang call blocking</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Na-disable ang pagba-block ng tawag dahil nakipag-ugnayan ka sa mga pang-emergency na serbisyo mula sa teleponong ito sa nakalipas na 48 oras. Awtomatiko itong muling i-enable kapag nag-expire na ang 48 oras.</string>
-  <string name="import_send_to_voicemail_numbers_label">I-import ang mga numero</string>
-  <string name="blocked_call_settings_import_description">Minarkahan mo na dati ang ilang tumatawag na awtomatikong ipadala sa voicemail sa pamamagitan ng iba pang mga app.</string>
-  <string name="blocked_call_settings_view_numbers_button">Tingnan ang Numero</string>
-  <string name="blocked_call_settings_import_button">I-import</string>
-  <string name="description_blocked_number_list_delete">I-unblock ang numero</string>
-  <string name="addBlockedNumber">Magdagdag ng numero</string>
-  <string name="block_number_footer_message_vvm">Iba-block ang mga tawag mula sa mga numerong ito at awtomatikong ide-delete ang mga voicemail.</string>
-  <string name="block_number_footer_message_no_vvm">Iba-block ang mga tawag mula sa numerong ito, ngunit makakapag-iwan pa rin sila sa iyo ng mga voicemail.</string>
-  <string name="block_list">Mga naka-block na numero</string>
-  <string name="alreadyBlocked">Naka-block na ang %1$s</string>
   <string name="phone_account_settings_label">Account sa pagtawag</string>
-  <string name="permission_no_speeddial">Upang i-enable ang speed dial, i-on ang pahintulot ng Mga Contact.</string>
   <string name="permission_no_calllog">Upang makita ang iyong log ng tawag, i-on ang pahintulot ng Telepono.</string>
-  <string name="permission_no_search">Upang hanapin ang iyong mga contact, i-on ang mga pahintulot sa Mga Contact.</string>
-  <string name="permission_place_call">Upang tumawag, i-on ang pahintulot ng Telepono.</string>
   <string name="toast_cannot_write_system_settings">Walang pahintulot ang app ng Telepono na mag-write sa mga setting ng system.</string>
   <string name="blocked_number_call_log_label">Naka-block</string>
   <string name="call_log_action_block_report_number">I-block/iulat ang spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Hindi spam</string>
   <string name="call_log_action_unblock_number">I-unblock ang numero</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">Offline si %1$s at hindi makontak</string>
-  <string name="about_phone_label">Tungkol dito</string>
-  <string name="voicemail_transcription_branding_text">Na-transcribe ng Google</string>
-  <string name="voicemail_transcription_in_progress">Tina-transcribe…</string>
-  <string name="voicemail_transcription_failed">Hindi available ang transcript.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Hindi available ang transcript. Hindi sinusuportahan ang wika.</string>
-  <string name="voicemail_transcription_failed_no_speech">Hindi available ang transcript. Walang na-detect na pagsasalita.</string>
-  <string name="voicemail_donation_promo_title">Tulungang pagandahin ang katumpakan ng transkripsyon?</string>
-  <string name="voicemail_donation_promo_content">Hayaang suriin ito ng Google at ang mga darating na mensahe sa voicemail na may mga transcript. Ang mga ito ay ii-store nang anonymous. Baguhin ang Mga Setting anumang oras. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Oo, sali ako</string>
-  <string name="voicemail_donation_promo_opt_out">Hindi, salamat</string>
-  <string name="voicemail_transcription_rating">I-rate ang transkripsyon</string>
-  <string name="voicemail_transcription_rating_thanks">Salamat sa iyong feedback</string>
-  <string name="description_rating_good">I-like</string>
-  <string name="description_rating_bad">I-dislike</string>
-  <string name="view_conversation">Tingnan</string>
-  <string name="ec_data_deleted">Dinelete ang tawag. Tingnan at i-delete ang mga attachment na ibinahagi sa tawag na ito sa Messages.</string>
-  <string name="multiple_ec_data_deleted">Dinelete ang mga tawag. Tingnan at i-delete ang mga attachment na ibinahagi sa mga tawag sa Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-tr/cm_strings.xml b/java/com/android/dialer/app/res/values-tr/cm_strings.xml
new file mode 100644
index 0000000..35b2e11
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-tr/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Arama sırasında</string>
+    <string name="incall_enable_dnd_title">Aramalar sırasında Rahatsız Etmeyin\'i Etkinleştir</string>
+    <string name="incall_vibrate_outgoing_title">Cevaplandığında titret</string>
+    <string name="incall_vibrate_call_waiting_title">Arama bekletildiğinde titret</string>
+    <string name="incall_vibrate_hangup_title">Kapatıldığında titret</string>
+    <string name="incall_vibrate_45_title">Her dakika titret</string>
+    <string name="incall_vibrate_45_summary">Giden aramaların her dakikasının 45. saniyesinde titrer</string>
+    <string name="incall_dnd_dialog_message">Rahatsız Etmeyin\'i etkinleştirmek için, Telefon uygulamasının Rahatsız Etmeyin durumunu kontrol etme iznine sahip olması gerekir.\nLütfen buna izin verin.</string>
+    <string name="allow">İzin ver</string>
+    <string name="deny">Reddet</string>
+    <string name="call_recording_category_title">Arama kaydı</string>
+    <string name="call_recording_format">Ses formatı</string>
+    <string name="call_via">ile ara</string>
+    <string name="call_via_dialog_title">\u2026 ile ara</string>
+    <string name="call_log_stats_title">İstatistikler</string>
+    <string name="action_menu_helplines">Yardım hatları</string>
+    <string name="default_dialer_text">Telefon Uygulamasını kullanmak için varsayılan olarak ayarlamanız gerekir</string>
+    <string name="default_dialer_action">Varsayılan olarak ayarla</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-tr/strings.xml b/java/com/android/dialer/app/res/values-tr/strings.xml
index a3d0799..e29896f 100644
--- a/java/com/android/dialer/app/res/values-tr/strings.xml
+++ b/java/com/android/dialer/app/res/values-tr/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Telefon Tuş Takımı</string>
   <string name="callHistoryIconLabel">Çağrı geçmişi</string>
   <string name="action_copy_number_text">Numarayı kopyala</string>
-  <string name="copy_transcript_text">Çeviri yazıyı kopyala</string>
   <string name="action_edit_number_before_call">Telefon etmeden önce numarayı düzenle</string>
   <string name="call_log_delete_all">Çağrı geçmişini temizle</string>
   <string name="call_log_trash_voicemail">Sesli mesajı sil</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Oynatma konumunu ayarla</string>
   <string name="action_menu_call_history_description">Çağrı geçmişi</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Diğer seçenekler</string>
-  <string name="action_menu_dialpad_button">tuş takımı</string>
   <string name="dialer_settings_label">Ayarlar</string>
-  <string name="simulator_submenu_label">Simülatör</string>
-  <string name="new_ui_launcher_shortcut_label">Kull. Arayüzü Kısayolu Oluştur</string>
   <string name="description_entering_bulk_action_mode">Toplu işlem moduna giriliyor</string>
   <string name="description_leaving_bulk_action_mode">Toplu işlem modundan çıkıldı</string>
   <string name="description_selecting_bulk_action_mode">Seçildi: %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Video görüşmesi.</string>
   <string name="description_start_voice_search">Sesli arama başlat</string>
   <string name="voicemail">Sesli Mesaj</string>
-  <string name="description_cancel_multi_select">Toplu işlemler modu iptal edilir</string>
   <string name="voicemailMultiSelectDeleteConfirm">Sil</string>
   <string name="voicemailMultiSelectDeleteCancel">İptal</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s öğe seçildi</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Sesli arama kullanılamaz</string>
   <string name="dialer_hint_find_contact">Kişilerde ara</string>
-  <string name="block_number_search_hint">Numara ekleyin veya kişi arayın</string>
   <string name="call_log_all_empty">Çağrı geçmişiniz boş</string>
   <string name="call_log_all_empty_action">Telefon et</string>
   <string name="call_log_missed_empty">Cevapsız çağrınız yok.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Çağrı Geçmişi</string>
   <string name="call_log_all_title">Tümü</string>
   <string name="call_log_missed_title">Cevapsız</string>
-  <string name="tab_speed_dial">Hızlı arama</string>
-  <string name="tab_history">Çağrı Geçmişi</string>
   <string name="tab_all_contacts">Kişiler</string>
-  <string name="tab_voicemail">Sesli mesaj</string>
-  <string name="search_shortcut_call_number">Çağrı yap: %s</string>
   <string name="search_shortcut_create_new_contact">Yeni kişi oluştur</string>
   <string name="search_shortcut_add_to_contact">Bir kişiye ekle</string>
   <string name="search_shortcut_send_sms_message">SMS gönder</string>
   <string name="search_shortcut_make_video_call">Video görüşmesi yap</string>
-  <string name="search_shortcut_block_number">Numarayı engelle</string>
-  <string name="speed_dial_empty">Hızlı arama listenizde henüz kimse yok</string>
-  <string name="speed_dial_empty_add_favorite_action">Favori ekle</string>
-  <string name="remove_contact">Kaldır</string>
   <string name="select_all">Tümünü seç</string>
   <string name="call_log_action_video_call">Video görüşmesi</string>
-  <string name="call_log_action_set_up_video">Görüntülü görüşmeyi yapılandır</string>
-  <string name="call_log_action_invite_video">Görüntülü görüşmeye davet et</string>
   <string name="call_log_action_send_message">İleti gönder</string>
   <string name="call_log_action_details">Çağrı ayrıntıları</string>
   <string name="call_log_action_share_voicemail">Gönder…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Çağrılar</string>
   <string name="manage_blocked_numbers_label">Engellenen numaralar</string>
   <string name="voicemail_settings_label">Sesli mesaj</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Çağrı engelleme geçici olarak kapalı</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Son 48 saat içinde bu telefondan acil servislerle iletişimde bulunduğunuz için çağrı engelleme modu devre dışı bırakıldı. 48 saatlik süre dolduktan sonra çağrı engelleme modu otomatik olarak tekrar etkinleştirilecektir.</string>
-  <string name="import_send_to_voicemail_numbers_label">Numaraları içe aktar</string>
-  <string name="blocked_call_settings_import_description">Bazı arayanları, diğer uygulamalar aracılığıyla otomatik olarak sesli mesaj gönderilmesi için önceden işaretlediniz.</string>
-  <string name="blocked_call_settings_view_numbers_button">Numaraları Görüntüle</string>
-  <string name="blocked_call_settings_import_button">İçe aktar</string>
-  <string name="description_blocked_number_list_delete">Numaranın engellemesini kaldır</string>
-  <string name="addBlockedNumber">Numara ekle</string>
-  <string name="block_number_footer_message_vvm">Bu numaralardan gelen çağrılar engellenecek ve sesli mesajlar otomatik olarak silinecektir.</string>
-  <string name="block_number_footer_message_no_vvm">Bu numaralardan gelen çağrılar engellenecek, ancak arayan kişiler yine de size sesli mesaj bırakabileceklerdir.</string>
-  <string name="block_list">Engellenen numaralar</string>
-  <string name="alreadyBlocked">%1$s numaralı telefon zaten engellendi.</string>
   <string name="phone_account_settings_label">Çağrı hesapları</string>
-  <string name="permission_no_speeddial">Hızlı aramayı etkinleştirmek için Kişiler iznini açın.</string>
   <string name="permission_no_calllog">Çağrı günlüğünüzü görmek için Telefon iznini açın.</string>
-  <string name="permission_no_search">Kişilerinizde arama yapmak için Kişiler izinlerini açın.</string>
-  <string name="permission_place_call">Telefon etmek için Telefon iznini açın.</string>
   <string name="toast_cannot_write_system_settings">Telefon uygulamasının sistem ayarlarına yazma izni yok.</string>
   <string name="blocked_number_call_log_label">Engellendi</string>
   <string name="call_log_action_block_report_number">Engelle/spam bildir</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Spam değil</string>
   <string name="call_log_action_unblock_number">Numaranın engellemesini kaldır</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s çevrimdışı olduğundan ulaşılamıyor</string>
-  <string name="about_phone_label">Hakkında</string>
-  <string name="voicemail_transcription_branding_text">Çeviri yazı Google\'a aittir</string>
-  <string name="voicemail_transcription_in_progress">Metne dönüştürülüyor…</string>
-  <string name="voicemail_transcription_failed">Çeviri yazı oluşturulamadı.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Çeviri yazı oluşturulamadı. Dil desteklenmiyor.</string>
-  <string name="voicemail_transcription_failed_no_speech">Çeviri yazı oluşturulamadı. Konuşma algılanmadı.</string>
-  <string name="voicemail_donation_promo_title">Çeviri yazının iyileştirilmesine yardımcı olmak ister misiniz?</string>
-  <string name="voicemail_donation_promo_content">Google\'ın, bu mesajı ve çeviri yazı içeren diğer sesli mesajları incelemesine izin verin. Mesajlar anonim olarak depolanır. Ayarlar\'da istediğiniz zaman değişiklik yapabilirsiniz. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Evet, istiyorum</string>
-  <string name="voicemail_donation_promo_opt_out">Hayır, teşekkürler</string>
-  <string name="voicemail_transcription_rating">Çeviri yazı kalit. değerlend.</string>
-  <string name="voicemail_transcription_rating_thanks">Geri bildirim için teşekkürler</string>
-  <string name="description_rating_good">Beğen</string>
-  <string name="description_rating_bad">Beğenme</string>
-  <string name="view_conversation">Göster</string>
-  <string name="ec_data_deleted">Çağrı silindi. Bu çağrı sırasında paylaşılan ekleri Mesajlar\'da görebilir ve silebilirsiniz.</string>
-  <string name="multiple_ec_data_deleted">Çağrılar silindi. Çağrılar sırasında paylaşılan ekleri Mesajlar\'da görebilir ve silebilirsiniz.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-uk/cm_strings.xml b/java/com/android/dialer/app/res/values-uk/cm_strings.xml
new file mode 100644
index 0000000..69151d1
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-uk/cm_strings.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Під час виклику</string>
+    <string name="incall_enable_dnd_title">Вмикати режим «Не турбувати» під час викликів</string>
+    <string name="incall_vibrate_outgoing_title">Вібрувати при відповіді</string>
+    <string name="incall_vibrate_call_waiting_title">Вібрувати при очікуванні виклику</string>
+    <string name="incall_vibrate_hangup_title">Вібрувати при завершенні</string>
+    <string name="incall_vibrate_45_title">Вібрувати щохвилини</string>
+    <string name="incall_vibrate_45_summary">Вібрація на 45 секунді кожної хвилини вихідного виклику</string>
+    <string name="allow">Дозволити</string>
+    <string name="deny">Відмовити</string>
+    <string name="call_recording_category_title">Записи дзвінків</string>
+    <string name="call_recording_format">Аудіоформат</string>
+    <string name="call_log_stats_title">Статистика</string>
+    <string name="action_menu_helplines">Гарячі лінії</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-uk/strings.xml b/java/com/android/dialer/app/res/values-uk/strings.xml
index a470e99..59da296 100644
--- a/java/com/android/dialer/app/res/values-uk/strings.xml
+++ b/java/com/android/dialer/app/res/values-uk/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Телефон</string>
-  <string name="launcherDialpadActivityLabel">Клавіатура телефона</string>
   <string name="callHistoryIconLabel">Історія дзвінків</string>
   <string name="action_copy_number_text">Копіювати номер</string>
-  <string name="copy_transcript_text">Копіювати транскрипцію</string>
   <string name="action_edit_number_before_call">Редагувати номер перед викликом</string>
   <string name="call_log_delete_all">Очистити історію дзвінків</string>
   <string name="call_log_trash_voicemail">Видалити голосову пошту</string>
@@ -37,10 +35,7 @@
   <string name="description_playback_seek">Шукати місце відтворення</string>
   <string name="action_menu_call_history_description">Історія викликів</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Інші варіанти</string>
-  <string name="action_menu_dialpad_button">клавіатура</string>
   <string name="dialer_settings_label">Налаштування</string>
-  <string name="simulator_submenu_label">Симулятор</string>
-  <string name="new_ui_launcher_shortcut_label">Створити ярлик для нової дії</string>
   <string name="description_entering_bulk_action_mode">Перехід у режим масових дій</string>
   <string name="description_leaving_bulk_action_mode">Ви вийшли з режиму масових дій</string>
   <string name="description_selecting_bulk_action_mode">Вибрано користувача %1$s</string>
@@ -51,7 +46,6 @@
   <string name="description_video_call">Відеодзвінок.</string>
   <string name="description_start_voice_search">Розпочати голосовий пошук</string>
   <string name="voicemail">Голосова пошта</string>
-  <string name="description_cancel_multi_select">Скасувати режим масових дій</string>
   <string name="voicemailMultiSelectDeleteConfirm">Видалити</string>
   <string name="voicemailMultiSelectDeleteCancel">Скасувати</string>
   <string name="voicemailMultiSelectActionBarTitle">Вибрано %1$s</string>
@@ -67,7 +61,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Голосовий пошук недоступний</string>
   <string name="dialer_hint_find_contact">Пошук контактів</string>
-  <string name="block_number_search_hint">Введіть або знайдіть номер</string>
   <string name="call_log_all_empty">Немає історії дзвінків</string>
   <string name="call_log_all_empty_action">Телефонувати</string>
   <string name="call_log_missed_empty">Немає пропущених дзвінків.</string>
@@ -75,23 +68,13 @@
   <string name="call_log_activity_title">Історія викликів</string>
   <string name="call_log_all_title">Усі</string>
   <string name="call_log_missed_title">Пропущені</string>
-  <string name="tab_speed_dial">Швидкий набір</string>
-  <string name="tab_history">Історія дзвінків</string>
   <string name="tab_all_contacts">Контакти</string>
-  <string name="tab_voicemail">Голосова пошта</string>
-  <string name="search_shortcut_call_number">Подзвонити на %s</string>
   <string name="search_shortcut_create_new_contact">Створити контакт</string>
   <string name="search_shortcut_add_to_contact">Додати в контакти</string>
   <string name="search_shortcut_send_sms_message">Надіслати SMS</string>
   <string name="search_shortcut_make_video_call">Здійснити відеодзвінок</string>
-  <string name="search_shortcut_block_number">Заблокувати номер</string>
-  <string name="speed_dial_empty">Немає номерів для швидкого набору</string>
-  <string name="speed_dial_empty_add_favorite_action">Додати номер</string>
-  <string name="remove_contact">Видалити</string>
   <string name="select_all">Вибрати все</string>
   <string name="call_log_action_video_call">Відеодзвінок</string>
-  <string name="call_log_action_set_up_video">Налаштувати відеодзвінки</string>
-  <string name="call_log_action_invite_video">Запросити на відеодзвінок</string>
   <string name="call_log_action_send_message">Надіслати повідомлення</string>
   <string name="call_log_action_details">Деталі виклику</string>
   <string name="call_log_action_share_voicemail">Надіслати в…</string>
@@ -130,23 +113,8 @@
   <string name="call_settings_label">Дзвінки</string>
   <string name="manage_blocked_numbers_label">Заблоковані номери</string>
   <string name="voicemail_settings_label">Голосова пошта</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Блокування дзвінків тимчасово вимкнено</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Блокування дзвінків вимкнено, оскільки ви зверталися з цього телефона в екстрені служби протягом останніх 48 годин. Ця функція автоматично ввімкнеться, коли мине 48 годин.</string>
-  <string name="import_send_to_voicemail_numbers_label">Імпортувати номери</string>
-  <string name="blocked_call_settings_import_description">Ви позначили абонентів, чиї дзвінки мають автоматично спрямовуватися на голосову пошту через інші додатки.</string>
-  <string name="blocked_call_settings_view_numbers_button">Переглянути номери</string>
-  <string name="blocked_call_settings_import_button">Імпортувати</string>
-  <string name="description_blocked_number_list_delete">Розблокувати номер</string>
-  <string name="addBlockedNumber">Додати номер</string>
-  <string name="block_number_footer_message_vvm">Виклики з цих номерів блокуватимуться, а голосові повідомлення автоматично видалятимуться.</string>
-  <string name="block_number_footer_message_no_vvm">Виклики з цих номерів блокуватимуться, але абоненти зможуть залишати голосові повідомлення.</string>
-  <string name="block_list">Заблоковані номери</string>
-  <string name="alreadyBlocked">Номер %1$s уже заблоковано.</string>
   <string name="phone_account_settings_label">Обл. записи для дзвінків</string>
-  <string name="permission_no_speeddial">Щоб активувати швидкий набір, увімкніть дозвіл \"Контакти\".</string>
   <string name="permission_no_calllog">Щоб переглянути журнал викликів, увімкніть дозвіл \"Телефон\".</string>
-  <string name="permission_no_search">Щоб шукати контакти, увімкніть дозвіл \"Контакти\".</string>
-  <string name="permission_place_call">Щоб зателефонувати, увімкніть дозвіл \"Телефон\".</string>
   <string name="toast_cannot_write_system_settings">Додаток Телефон не має дозволу змінювати системні налаштування.</string>
   <string name="blocked_number_call_log_label">Заблоковано</string>
   <string name="call_log_action_block_report_number">Заблокувати/позначити як спам</string>
@@ -154,22 +122,4 @@
   <string name="call_log_action_remove_spam">Не спам</string>
   <string name="call_log_action_unblock_number">Розблокувати номер</string>
   <string name="spam_number_call_log_label">Спам</string>
-  <string name="call_composer_connection_failed">%1$s не в мережі, неможливо встановити зв’язок</string>
-  <string name="about_phone_label">Про додаток</string>
-  <string name="voicemail_transcription_branding_text">Транскрипція від Google</string>
-  <string name="voicemail_transcription_in_progress">Транскрибування…</string>
-  <string name="voicemail_transcription_failed">Транскрипція недоступна.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Транскрипція недоступна. Мова не підтримується.</string>
-  <string name="voicemail_transcription_failed_no_speech">Транскрипція недоступна. Не виявлено мовлення.</string>
-  <string name="voicemail_donation_promo_title">Хочете допомогти покращити якість транскрипції?</string>
-  <string name="voicemail_donation_promo_content">Надайте Google доступ до цього й подальших повідомлень голосової пошти з транскрипцією. Повідомлення зберігатимуться анонімно. Ви можете будь-коли змінити налаштування. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Погоджуюся</string>
-  <string name="voicemail_donation_promo_opt_out">Ні, дякую</string>
-  <string name="voicemail_transcription_rating">Оцініть якість транскрипції</string>
-  <string name="voicemail_transcription_rating_thanks">Дякуємо за ваш відгук</string>
-  <string name="description_rating_good">Подобається</string>
-  <string name="description_rating_bad">Не подобається</string>
-  <string name="view_conversation">Переглянути</string>
-  <string name="ec_data_deleted">Виклик видалено. Переглянути й видалити файли, надіслані під час цього виклику, можна в Повідомленнях.</string>
-  <string name="multiple_ec_data_deleted">Виклики видалено. Переглянути й видалити файли, надіслані під час цих викликів, можна в Повідомленнях.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-ur/strings.xml b/java/com/android/dialer/app/res/values-ur/strings.xml
index 0016d12..badc2a6 100644
--- a/java/com/android/dialer/app/res/values-ur/strings.xml
+++ b/java/com/android/dialer/app/res/values-ur/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">فون</string>
-  <string name="launcherDialpadActivityLabel">فون کی پیڈ</string>
   <string name="callHistoryIconLabel">کال کی سرگزشت</string>
   <string name="action_copy_number_text">نمبر کاپی کریں</string>
-  <string name="copy_transcript_text">ٹرانسکرپشن کاپی کریں</string>
   <string name="action_edit_number_before_call">کال کرنے سے پہلے نمبر میں ترمیم کریں</string>
   <string name="call_log_delete_all">کال کی سرگزشت صاف کریں</string>
   <string name="call_log_trash_voicemail">صوتی میل حذف کریں</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">پلے بیک پوزیشن طلب کریں</string>
   <string name="action_menu_call_history_description">کال کی سرگزشت</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">مزید اختیارات</string>
-  <string name="action_menu_dialpad_button">کی پیڈ</string>
   <string name="dialer_settings_label">ترتیبات</string>
-  <string name="simulator_submenu_label">Simulator</string>
-  <string name="new_ui_launcher_shortcut_label">‏نیا UI شارٹ کٹ تخلیق کریں</string>
   <string name="description_entering_bulk_action_mode">بلک کاروائی موڈ میں داخل ہو رہا ہے</string>
   <string name="description_leaving_bulk_action_mode">بلک کاروائی موڈ چھوڑ دیا</string>
   <string name="description_selecting_bulk_action_mode">منتخب کردہ %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">ویڈیو کال۔</string>
   <string name="description_start_voice_search">صوتی تلاش شروع کریں</string>
   <string name="voicemail">صوتی میل</string>
-  <string name="description_cancel_multi_select">بیچ کاروائی موڈ منسوخ کریں</string>
   <string name="voicemailMultiSelectDeleteConfirm">حذف کریں</string>
   <string name="voicemailMultiSelectDeleteCancel">منسوخ کریں</string>
   <string name="voicemailMultiSelectActionBarTitle">%1$s منتخب کردہ</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">صوتی تلاش دستیاب نہیں ہے</string>
   <string name="dialer_hint_find_contact">رابطے تلاش کریں</string>
-  <string name="block_number_search_hint">نمبر شامل کریں یا رابطے تلاش کریں</string>
   <string name="call_log_all_empty">آپ کی کال کی سرگزشت خالی ہے</string>
   <string name="call_log_all_empty_action">ایک کال کریں</string>
   <string name="call_log_missed_empty">آپ کے پاس کوئی چھوٹی ہوئی کالز نہیں ہیں۔</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">کال کی سرگزشت</string>
   <string name="call_log_all_title">سبھی</string>
   <string name="call_log_missed_title">چھوٹی ہوئی</string>
-  <string name="tab_speed_dial">اسپیڈ ڈائل</string>
-  <string name="tab_history">کال کی سرگزشت</string>
   <string name="tab_all_contacts">رابطے</string>
-  <string name="tab_voicemail">صوتی میل</string>
-  <string name="search_shortcut_call_number">%s کو کال کریں</string>
   <string name="search_shortcut_create_new_contact">نیا رابطہ بنائیں</string>
   <string name="search_shortcut_add_to_contact">رابطے میں شامل کریں</string>
   <string name="search_shortcut_send_sms_message">‏SMS بھیجیں</string>
   <string name="search_shortcut_make_video_call">ویڈیو کال کریں</string>
-  <string name="search_shortcut_block_number">نمبر مسدود کریں</string>
-  <string name="speed_dial_empty">آپ کے اسپیڈ ڈائل پر ابھی تک کوئی نہیں ہے</string>
-  <string name="speed_dial_empty_add_favorite_action">ایک پسندیدہ شامل کریں</string>
-  <string name="remove_contact">ہٹائیں</string>
   <string name="select_all">سبھی کو منتخب کریں</string>
   <string name="call_log_action_video_call">ویڈیو کال</string>
-  <string name="call_log_action_set_up_video">ویڈیو کالنگ سیٹ اپ کریں</string>
-  <string name="call_log_action_invite_video">ویڈیو کال میں مدعو کریں</string>
   <string name="call_log_action_send_message">پیغام بھیجیں</string>
   <string name="call_log_action_details">کال کی تفصیلات</string>
   <string name="call_log_action_share_voicemail">بھیجیں بنام …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">کالز</string>
   <string name="manage_blocked_numbers_label">مسدود کردہ نمبرز</string>
   <string name="voicemail_settings_label">صوتی میل</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">کال مسدود کرنا عارضی طور پر آف ہے</string>
-  <string name="blocked_numbers_disabled_emergency_desc">کال مسدود کرنا غیر فعال کر دیا گیا ہے کیونکہ آپ نے پچھلے 48 گھنٹوں میں اس فون سے ہنگامی سروسز کے ساتھ رابطہ کیا تھا۔ جب 48 گھنٹے کا دورانیہ ختم ہوگا تو یہ خودکار طور پر دوبارہ فعال ہو جائے گا۔</string>
-  <string name="import_send_to_voicemail_numbers_label">نمبرز درآمد کریں</string>
-  <string name="blocked_call_settings_import_description">آپ نے پہلے کچھ کالرز کو خودکار طور پر بذریعہ دیگر ایپس صوتی میل کو بھیجنا نشان زد کیا تھا۔</string>
-  <string name="blocked_call_settings_view_numbers_button">نمبرز دیکھیں</string>
-  <string name="blocked_call_settings_import_button">درآمد کریں</string>
-  <string name="description_blocked_number_list_delete">نمبر غیر مسدود کریں</string>
-  <string name="addBlockedNumber">نمبر شامل کریں</string>
-  <string name="block_number_footer_message_vvm">ان نمبرز سے کالز مسدود ہوجائیں گی اور صوتی میلز خودبخود جذف ہو جائیں گی۔</string>
-  <string name="block_number_footer_message_no_vvm">ان نمبرز سے کالز مسدود ہو جائیں گی گی لیکن ممکن ہے وہ پھر بھی آپ کیلئے صوتی میلز چھوڑ پائیں۔</string>
-  <string name="block_list">مسدود کردہ نمبرز</string>
-  <string name="alreadyBlocked">%1$s پہلے ہی مسدود ہے۔</string>
   <string name="phone_account_settings_label">کالنگ اکاؤنٹس</string>
-  <string name="permission_no_speeddial">اسپیڈ ڈائل کو فعال کرنے کیلئے رابطوں کی اجازت آن کریں۔</string>
   <string name="permission_no_calllog">اپنا کال لاگ دیکھنے کیلئے فون کی اجازت آن کریں۔</string>
-  <string name="permission_no_search">اپنے رابطوں کو تلاش کرنے کیلئے رابطوں کی اجازتیں آن کریں۔</string>
-  <string name="permission_place_call">کال کرنے کیلئے فون کی اجازت آن کریں۔</string>
   <string name="toast_cannot_write_system_settings">فون ایپ کے پاس سسٹم ترتیبات کو لکھنے کی اجازت نہیں ہے۔</string>
   <string name="blocked_number_call_log_label">مسدود</string>
   <string name="call_log_action_block_report_number">مسدود کریں/سپام کی اطلاع دیں</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">سپام نہیں ہے</string>
   <string name="call_log_action_unblock_number">نمبر غیر مسدود کریں</string>
   <string name="spam_number_call_log_label">سپام</string>
-  <string name="call_composer_connection_failed">%1$s آف لائن ہے اور اس تک پہنچا نہیں جا سکتا</string>
-  <string name="about_phone_label">تفصیل</string>
-  <string name="voicemail_transcription_branding_text">‏Google کی جانب سے ٹرانسکرائب کردہ</string>
-  <string name="voicemail_transcription_in_progress">نقل حرفی ہو رہی ہے…</string>
-  <string name="voicemail_transcription_failed">ٹرانسکرپٹ دستیاب نہیں ہے۔</string>
-  <string name="voicemail_transcription_failed_language_not_supported">ٹرانسکرپٹ دستیاب نہیں ہے۔ زبان تعاون یافتہ نہیں ہے۔</string>
-  <string name="voicemail_transcription_failed_no_speech">ٹرانسکرپٹ دستیاب نہیں ہے۔ کسی بھی اسپیچ کا پتا نہیں چلا ہے۔</string>
-  <string name="voicemail_donation_promo_title">نقل حرفی کی درستگی کو بہتر بنانے میں مدد کریں؟</string>
-  <string name="voicemail_donation_promo_content">‏Google کو ٹرانسکرپٹس کے ساتھ اس کا اور آئندہ کے صوتی میل کے پیغامات کا جائزہ لینے کی اجازت دیں۔ انہیں گمنام طور پر اسٹور کیا جائے گا۔ کسی بھی وقت ترتیبات کو تبدیل کریں۔ %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">ہاں، میں شامل ہوں</string>
-  <string name="voicemail_donation_promo_opt_out">نہیں شکریہ</string>
-  <string name="voicemail_transcription_rating">نقل حرفی کے معیار کی درجہ بندی کریں</string>
-  <string name="voicemail_transcription_rating_thanks">آپ کے تاثرات کا شکریہ</string>
-  <string name="description_rating_good">پسند کریں</string>
-  <string name="description_rating_bad">ناپسند کریں</string>
-  <string name="view_conversation">دیکھیں</string>
-  <string name="ec_data_deleted">کال حذف ہو گئی۔ اس کال کے دوران اشتراک کردہ منسلکہ جات کو \'پیغامات \' میں ملاحظہ کریں اور حذف کریں۔</string>
-  <string name="multiple_ec_data_deleted">کالیں حذف ہو گئیں۔ کالوں کے دوران اشتراک کردہ منسلکہ جات کو \'پیغامات \' میں ملاحظہ کریں اور حذف کریں۔</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-uz/strings.xml b/java/com/android/dialer/app/res/values-uz/strings.xml
index 2081a5a..5d97bf7 100644
--- a/java/com/android/dialer/app/res/values-uz/strings.xml
+++ b/java/com/android/dialer/app/res/values-uz/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Telefon</string>
-  <string name="launcherDialpadActivityLabel">Telefon klaviaturasi</string>
   <string name="callHistoryIconLabel">Chaqiruvlar tarixi</string>
   <string name="action_copy_number_text">Raqamdan nusxa olish</string>
-  <string name="copy_transcript_text">Transkripsiyadan nusxa olish</string>
   <string name="action_edit_number_before_call">Tahrirlash va telefon qilish</string>
   <string name="call_log_delete_all">Qo‘ng‘iroqlar tarixini tozalash</string>
   <string name="call_log_trash_voicemail">Ovozli xabarni o‘chirish</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Ijro vaziyatini qidirish</string>
   <string name="action_menu_call_history_description">Chaqiruvlar tarixi</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Boshqa parametrlar</string>
-  <string name="action_menu_dialpad_button">klaviatura</string>
   <string name="dialer_settings_label">Sozlamalar</string>
-  <string name="simulator_submenu_label">Simulyator</string>
-  <string name="new_ui_launcher_shortcut_label">Yangi interfeys uchun yorliq</string>
   <string name="description_entering_bulk_action_mode">Yoppasiga bajariladigan amallar rejimiga o‘tilmoqda</string>
   <string name="description_leaving_bulk_action_mode">Yoppasiga bajariladigan amallar rejimidan chiqib ketildi</string>
   <string name="description_selecting_bulk_action_mode">%1$s tanlandi</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Video qo‘ng‘iroq.</string>
   <string name="description_start_voice_search">Ovozli qidiruvni boshlash</string>
   <string name="voicemail">Ovozli pochta</string>
-  <string name="description_cancel_multi_select">Yoppasiga bajariladigan amallar rejimini bekor qilish</string>
   <string name="voicemailMultiSelectDeleteConfirm">O‘chirish</string>
   <string name="voicemailMultiSelectDeleteCancel">Bekor qilish</string>
   <string name="voicemailMultiSelectActionBarTitle">Tanlandi: %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Ovozli qidiruv mavjud emas</string>
   <string name="dialer_hint_find_contact">Kontaktlar ichidan qidirish</string>
-  <string name="block_number_search_hint">Raqam qo‘shish yoki kontaktlardan qidirish</string>
   <string name="call_log_all_empty">Chaqiruvlar tarixida hech narsa yo‘q</string>
   <string name="call_log_all_empty_action">Telefon qilish</string>
   <string name="call_log_missed_empty">Hech qanday javobsiz chaqiruv yo‘q.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Chaqiruvlar tarixi</string>
   <string name="call_log_all_title">Hammasi</string>
   <string name="call_log_missed_title">Javobsiz</string>
-  <string name="tab_speed_dial">Tezkor terish</string>
-  <string name="tab_history">Chaqiruvlar tarixi</string>
   <string name="tab_all_contacts">Kontaktlar</string>
-  <string name="tab_voicemail">Ovozli pochta</string>
-  <string name="search_shortcut_call_number">Qo‘ng‘iroq: %s</string>
   <string name="search_shortcut_create_new_contact">Yangi kontakt yaratish</string>
   <string name="search_shortcut_add_to_contact">Mavjud kontaktga saqlash</string>
   <string name="search_shortcut_send_sms_message">SMS yuborish</string>
   <string name="search_shortcut_make_video_call">Videoqo‘ng‘iroq qilish</string>
-  <string name="search_shortcut_block_number">Raqamni bloklash</string>
-  <string name="speed_dial_empty">Tezkor terish uchun hech kim yo‘q</string>
-  <string name="speed_dial_empty_add_favorite_action">Tezkor raqam terishni sozlang</string>
-  <string name="remove_contact">O‘chirish</string>
   <string name="select_all">Hammasini tanlash</string>
   <string name="call_log_action_video_call">Video qo‘ng‘iroq</string>
-  <string name="call_log_action_set_up_video">Video suhbatni sozlash</string>
-  <string name="call_log_action_invite_video">Video suhbatga taklif qilish</string>
   <string name="call_log_action_send_message">Xabar yuborish</string>
   <string name="call_log_action_details">Chaqiruv tafsilotlari</string>
   <string name="call_log_action_share_voicemail">Yuborish:</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Chaqiruvlar</string>
   <string name="manage_blocked_numbers_label">Bloklangan raqamlar</string>
   <string name="voicemail_settings_label">Ovozli pochta</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Qo‘ng‘iroqlarni bloklash o‘chirilgan</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Oxirgi 48 soat ichida ushbu telefon orqali favqulodda xizmatlar bilan bog‘lanilganligi uchun qo‘ng‘iroqlarni bloklash o‘chirib qo‘yildi. 48 soatlik muddat tugagandan so‘ng bu avtomatik qayta yoqiladi.</string>
-  <string name="import_send_to_voicemail_numbers_label">Raqamlarni import qilish</string>
-  <string name="blocked_call_settings_import_description">Ba’zi kiruvchi kontaktlaringiz boshqa ilovalar orqali avtomatik ovozli xabar yo‘llaydigan qilib belgilagansiz.</string>
-  <string name="blocked_call_settings_view_numbers_button">Sonini ko‘rish</string>
-  <string name="blocked_call_settings_import_button">Import qilish</string>
-  <string name="description_blocked_number_list_delete">Raqamni blokdan chiqarish</string>
-  <string name="addBlockedNumber">Raqam qo‘shish</string>
-  <string name="block_number_footer_message_vvm">Bu raqamlardan kelgan qo‘ng‘iroqlar bloklanadi va ovozli xabarlari avtomatik o‘chiriladi.</string>
-  <string name="block_number_footer_message_no_vvm">Bu raqamlardan kelgan qo‘ng‘iroqlar bloklanadi, lekin raqam egalari sizga ovozli xabar qoldira olishadi.</string>
-  <string name="block_list">Bloklangan raqamlar</string>
-  <string name="alreadyBlocked">%1$s raqami allaqachon bloklangan.</string>
   <string name="phone_account_settings_label">Chaqiruv uchun hisoblar</string>
-  <string name="permission_no_speeddial">Tezkor raqam terish uchun “Kontaktlar” ruxsatnomasini yoqing.</string>
   <string name="permission_no_calllog">Qo‘ng‘iroqlaringiz ro‘yxatini ko‘rish uchun “Telefon” ruxsatnomasini yoqing.</string>
-  <string name="permission_no_search">Kontaktlarni qidirish uchun “Kontaktlar” ruxsatnomasini yoqing.</string>
-  <string name="permission_place_call">Chaqiruv uchun “Telefon” ruxsatnomasini yoqing.</string>
   <string name="toast_cannot_write_system_settings">Telefon ilovasida tizim sozlamalarini o‘zgartirish uchun ruxsat yo‘q.</string>
   <string name="blocked_number_call_log_label">Bloklandi</string>
   <string name="call_log_action_block_report_number">Bloklash/spam deb belgilash</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Spam emas</string>
   <string name="call_log_action_unblock_number">Raqamni blokdan chiqarish</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s hozir oflayn va u bilan bog‘lanishning imkoni yo‘q</string>
-  <string name="about_phone_label">Ilova haqida</string>
-  <string name="voicemail_transcription_branding_text">Google tomon. trans-ya qilindi</string>
-  <string name="voicemail_transcription_in_progress">Transkripsiya qilinmoqda…</string>
-  <string name="voicemail_transcription_failed">Transkripsiya qilib bo‘lmadi.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Transkripsiya qilib bo‘lmadi. Bu til qo‘llab-quvvatlanmaydi.</string>
-  <string name="voicemail_transcription_failed_no_speech">Transkripsiya qilib bo‘lmadi. Nutq aniqlanmadi.</string>
-  <string name="voicemail_donation_promo_title">Transkripsiya sifatini oshirishga yordam berasizmi?</string>
-  <string name="voicemail_donation_promo_content">Google kompaniyasiga ushbu va kelgusi ovozli xabarlaringizni tekshirishiga va ularning transkripsiyalarini tahlil qilishiga ruxsat bering. Xabarlar anonim tarzda saqlanadi. Bu parametrni xohlagan vaqtda Sozlamalardan o‘zgartirish mumkin. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">OK</string>
-  <string name="voicemail_donation_promo_opt_out">Kerak emas</string>
-  <string name="voicemail_transcription_rating">Transkripsiya sifatini baholang</string>
-  <string name="voicemail_transcription_rating_thanks">Fikr-mulohazangiz u-n rahmat!</string>
-  <string name="description_rating_good">Yoqdi</string>
-  <string name="description_rating_bad">Yoqmadi</string>
-  <string name="view_conversation">Ko‘rish</string>
-  <string name="ec_data_deleted">Chaqiruv o‘chirildi. Android Xabarlar ilovasi orqali bu qo‘ng‘iroq davomida ulashilgan biriktirmalarni ko‘rish va o‘chirsh mumkin.</string>
-  <string name="multiple_ec_data_deleted">Chaqiruvlar o‘chirildi. Android Xabarlar ilovasi orqali bu qo‘ng‘iroqlar davomida ulashilgan biriktirmalarni ko‘rish va o‘chirsh mumkin.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-v27/styles.xml b/java/com/android/dialer/app/res/values-v27/styles.xml
deleted file mode 100644
index bc9b119..0000000
--- a/java/com/android/dialer/app/res/values-v27/styles.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <style name="DialtactsTheme" parent="Dialer.ThemeBase.ActionBar">
-    <item name="android:windowLightNavigationBar">true</item>
-    <item name="android:navigationBarColor">?android:attr/windowBackground</item>
-    <item name="android:navigationBarDividerColor">#E0E0E0</item>
-  </style>
-</resources>
diff --git a/java/com/android/dialer/app/res/values-vi/cm_strings.xml b/java/com/android/dialer/app/res/values-vi/cm_strings.xml
new file mode 100644
index 0000000..ff1627b
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-vi/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">Trong cuộc gọi</string>
+    <string name="incall_enable_dnd_title">Bật Không Làm Phiền trong khi gọi</string>
+    <string name="incall_vibrate_outgoing_title">Rung khi trả lời</string>
+    <string name="incall_vibrate_call_waiting_title">Rung khi chờ cuộc gọi</string>
+    <string name="incall_vibrate_hangup_title">Rung khi gác máy</string>
+    <string name="incall_vibrate_45_title">Rung mỗi phút</string>
+    <string name="incall_vibrate_45_summary">Rung tại giây 45 mỗi phút trong khi gọi đi</string>
+    <string name="incall_dnd_dialog_message">Để bật Không Làm Phiền, ứng dụng Điện thoại cần được cấp quyền để kiểm soát trạng thái Không Làm Phiền.\nVui lòng chọn cho phép.</string>
+    <string name="allow">Cho phép</string>
+    <string name="deny">Từ chối</string>
+    <string name="call_recording_category_title">Ghi âm cuộc gọi</string>
+    <string name="call_recording_format">Định dạng âm thanh</string>
+    <string name="call_via">Gọi bằng</string>
+    <string name="call_via_dialog_title">Gọi bằng\u2026</string>
+    <string name="call_log_stats_title">Thống kê</string>
+    <string name="action_menu_helplines">Đường dây nóng</string>
+    <string name="default_dialer_text">Bạn phải đặt Điện thoại làm Ứng dụng điện thoại mặc định để sử dụng nó.</string>
+    <string name="default_dialer_action">Đặt làm mặc định</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-vi/strings.xml b/java/com/android/dialer/app/res/values-vi/strings.xml
index 452c9f0..3c06b3f 100644
--- a/java/com/android/dialer/app/res/values-vi/strings.xml
+++ b/java/com/android/dialer/app/res/values-vi/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Điện thoại</string>
-  <string name="launcherDialpadActivityLabel">Bàn phím điện thoại</string>
   <string name="callHistoryIconLabel">Nhật ký cuộc gọi</string>
   <string name="action_copy_number_text">Sao chép số</string>
-  <string name="copy_transcript_text">Sao chép bản ghi âm</string>
   <string name="action_edit_number_before_call">Chỉnh sửa số trước khi gọi</string>
   <string name="call_log_delete_all">Xóa nhật ký cuộc gọi</string>
   <string name="call_log_trash_voicemail">Xóa thư thoại</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Tìm kiếm vị trí phát lại</string>
   <string name="action_menu_call_history_description">Nhật ký cuộc gọi</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Tùy chọn khác</string>
-  <string name="action_menu_dialpad_button">bàn phím</string>
   <string name="dialer_settings_label">Cài đặt</string>
-  <string name="simulator_submenu_label">Trình mô phỏng</string>
-  <string name="new_ui_launcher_shortcut_label">Tạo phím tắt giao diện người dùng mới</string>
   <string name="description_entering_bulk_action_mode">Truy cập chế độ tác vụ hàng loạt</string>
   <string name="description_leaving_bulk_action_mode">Đã rời khỏi chế độ tác vụ hàng loạt</string>
   <string name="description_selecting_bulk_action_mode">Đã chọn %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Gọi điện video.</string>
   <string name="description_start_voice_search">Bắt đầu tìm kiếm bằng giọng nói</string>
   <string name="voicemail">Thư thoại</string>
-  <string name="description_cancel_multi_select">Hủy chế độ tác vụ hàng loạt</string>
   <string name="voicemailMultiSelectDeleteConfirm">Xóa</string>
   <string name="voicemailMultiSelectDeleteCancel">Hủy</string>
   <string name="voicemailMultiSelectActionBarTitle">Đã chọn %1$s</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Không có tính năng tìm kiếm bằng giọng nói</string>
   <string name="dialer_hint_find_contact">Tìm kiếm trong danh bạ</string>
-  <string name="block_number_search_hint">Thêm số hoặc tìm kiếm danh bạ</string>
   <string name="call_log_all_empty">Nhật ký cuộc gọi của bạn trống</string>
   <string name="call_log_all_empty_action">Gọi điện</string>
   <string name="call_log_missed_empty">Bạn không có cuộc gọi nhỡ nào.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Nhật ký cuộc gọi</string>
   <string name="call_log_all_title">Tất cả</string>
   <string name="call_log_missed_title">Bị nhỡ</string>
-  <string name="tab_speed_dial">Quay số nhanh</string>
-  <string name="tab_history">Nhật ký cuộc gọi</string>
   <string name="tab_all_contacts">Danh bạ</string>
-  <string name="tab_voicemail">Thư thoại</string>
-  <string name="search_shortcut_call_number">Gọi %s</string>
   <string name="search_shortcut_create_new_contact">Tạo liên hệ mới</string>
   <string name="search_shortcut_add_to_contact">Thêm vào liên hệ</string>
   <string name="search_shortcut_send_sms_message">Gửi SMS</string>
   <string name="search_shortcut_make_video_call">Gọi điện video</string>
-  <string name="search_shortcut_block_number">Chặn số</string>
-  <string name="speed_dial_empty">Chưa có ai trong danh bạ quay số nhanh của bạn</string>
-  <string name="speed_dial_empty_add_favorite_action">Thêm liên hệ quay số nhanh yêu thích</string>
-  <string name="remove_contact">Xóa</string>
   <string name="select_all">Chọn tất cả</string>
   <string name="call_log_action_video_call">Cuộc gọi điện video</string>
-  <string name="call_log_action_set_up_video">Thiết lập cuộc gọi video</string>
-  <string name="call_log_action_invite_video">Mời tham gia cuộc gọi video</string>
   <string name="call_log_action_send_message">Gửi tin nhắn</string>
   <string name="call_log_action_details">Chi tiết cuộc gọi</string>
   <string name="call_log_action_share_voicemail">Gửi đến …</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Cuộc gọi</string>
   <string name="manage_blocked_numbers_label">Số bị chặn</string>
   <string name="voicemail_settings_label">Thư thoại</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Tạm thời tắt chặn cuộc gọi</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Tính năng chặn cuộc gọi đã bị tắt vì bạn đã liên hệ với dịch vụ khẩn cấp từ điện thoại này trong vòng 48 giờ qua. Tính năng này sẽ được bật lại tự động sau khi khoảng thời gian 48 giờ kết thúc.</string>
-  <string name="import_send_to_voicemail_numbers_label">Nhập số</string>
-  <string name="blocked_call_settings_import_description">Trước đây bạn đã đánh dấu một số người gọi sẽ được tự động gửi tới thư thoại qua các ứng dụng khác.</string>
-  <string name="blocked_call_settings_view_numbers_button">Xem số</string>
-  <string name="blocked_call_settings_import_button">Nhập</string>
-  <string name="description_blocked_number_list_delete">Bỏ chặn số</string>
-  <string name="addBlockedNumber">Thêm số</string>
-  <string name="block_number_footer_message_vvm">Cuộc gọi từ các số này sẽ bị chặn và thư thoại sẽ tự động bị xóa.</string>
-  <string name="block_number_footer_message_no_vvm">Cuộc gọi từ các số này sẽ bị chặn nhưng họ vẫn có thể để lại thư thoại cho bạn.</string>
-  <string name="block_list">Số bị chặn</string>
-  <string name="alreadyBlocked">%1$s đã bị chặn.</string>
   <string name="phone_account_settings_label">Tài khoản gọi</string>
-  <string name="permission_no_speeddial">Để bật quay số nhanh, bật quyền đối với Danh bạ.</string>
   <string name="permission_no_calllog">Để xem nhật ký cuộc gọi của bạn, bật quyền đối với Điện thoại.</string>
-  <string name="permission_no_search">Để tìm kiếm liên hệ của bạn, hãy bật quyền đối với Danh bạ.</string>
-  <string name="permission_place_call">Để thực hiện cuộc gọi, bật quyền đối với Điện thoại.</string>
   <string name="toast_cannot_write_system_settings">Ứng dụng Điện thoại không có quyền ghi vào cài đặt hệ thống.</string>
   <string name="blocked_number_call_log_label">Đã chặn</string>
   <string name="call_log_action_block_report_number">Chặn/báo cáo spam</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Không phải là spam</string>
   <string name="call_log_action_unblock_number">Bỏ chặn số</string>
   <string name="spam_number_call_log_label">Spam</string>
-  <string name="call_composer_connection_failed">%1$s ngoại tuyến và không liên hệ được</string>
-  <string name="about_phone_label">Giới thiệu</string>
-  <string name="voicemail_transcription_branding_text">Do Google phiên âm</string>
-  <string name="voicemail_transcription_in_progress">Đang phiên âm…</string>
-  <string name="voicemail_transcription_failed">Không có bản phiên âm.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Không có bản phiên âm. Không hỗ trợ ngôn ngữ.</string>
-  <string name="voicemail_transcription_failed_no_speech">Không có bản phiên âm. Không tìm thấy giọng nói.</string>
-  <string name="voicemail_donation_promo_title">Giúp cải thiện độ chính xác của bản chép lời?</string>
-  <string name="voicemail_donation_promo_content">Cho phép Google xem xét thư thoại này và các thư thoại trong tương lai có bản chép lời. Các thư thoại này sẽ được lưu trữ ẩn danh. Bạn có thể thay đổi Cài đặt bất cứ lúc nào. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Có, tôi đồng ý</string>
-  <string name="voicemail_donation_promo_opt_out">Không, cảm ơn</string>
-  <string name="voicemail_transcription_rating">Đánh giá chất lượng ghi âm</string>
-  <string name="voicemail_transcription_rating_thanks">Cảm ơn bạn đã phản hồi</string>
-  <string name="description_rating_good">Thích</string>
-  <string name="description_rating_bad">Không thích</string>
-  <string name="view_conversation">Xem</string>
-  <string name="ec_data_deleted">Đã xóa cuộc gọi. Hãy xem và xóa tệp đính kèm được chia sẻ trong cuộc gọi này trong Messages.</string>
-  <string name="multiple_ec_data_deleted">Đã xóa cuộc gọi. Hãy xem và xóa tệp đính kèm được chia sẻ trong các cuộc gọi này trong Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-zh-rCN/cm_strings.xml b/java/com/android/dialer/app/res/values-zh-rCN/cm_strings.xml
new file mode 100644
index 0000000..b8bc6b6
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-zh-rCN/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">通话中</string>
+    <string name="incall_enable_dnd_title">通话时启用勿扰</string>
+    <string name="incall_vibrate_outgoing_title">对方接听时振动</string>
+    <string name="incall_vibrate_call_waiting_title">呼叫等待时振动</string>
+    <string name="incall_vibrate_hangup_title">通话结束时振动</string>
+    <string name="incall_vibrate_45_title">每分钟振动</string>
+    <string name="incall_vibrate_45_summary">呼出通话达到每分钟的 45 秒时振动</string>
+    <string name="incall_dnd_dialog_message">为能启用勿扰，电话应用需要被授予控制“勿扰”状态的权限。\n请允许此权限。</string>
+    <string name="allow">允许</string>
+    <string name="deny">拒绝</string>
+    <string name="call_recording_category_title">通话录音</string>
+    <string name="call_recording_format">音频格式</string>
+    <string name="call_via">呼叫途径</string>
+    <string name="call_via_dialog_title">呼叫途径\u2026</string>
+    <string name="call_log_stats_title">统计</string>
+    <string name="action_menu_helplines">求助热线</string>
+    <string name="default_dialer_text">您需要将 电话应用 设置为默认手机应用程序才能使用它。</string>
+    <string name="default_dialer_action">设为默认</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
index c828654..043af95 100644
--- a/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rCN/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">电话</string>
-  <string name="launcherDialpadActivityLabel">电话拨号键盘</string>
   <string name="callHistoryIconLabel">通话记录</string>
   <string name="action_copy_number_text">复制号码</string>
-  <string name="copy_transcript_text">复制转录内容</string>
   <string name="action_edit_number_before_call">拨打之前修改号码</string>
   <string name="call_log_delete_all">清除通话记录</string>
   <string name="call_log_trash_voicemail">删除语音邮件</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">拖动到播放位置</string>
   <string name="action_menu_call_history_description">通话记录</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">更多选项</string>
-  <string name="action_menu_dialpad_button">拨号键盘</string>
   <string name="dialer_settings_label">设置</string>
-  <string name="simulator_submenu_label">模拟器</string>
-  <string name="new_ui_launcher_shortcut_label">创建可在新界面中使用的快捷键</string>
   <string name="description_entering_bulk_action_mode">正在进入批量操作模式</string>
   <string name="description_leaving_bulk_action_mode">已退出批量操作模式</string>
   <string name="description_selecting_bulk_action_mode">已选择 %1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">视频通话。</string>
   <string name="description_start_voice_search">开始语音搜索</string>
   <string name="voicemail">语音信箱</string>
-  <string name="description_cancel_multi_select">取消批量操作模式</string>
   <string name="voicemailMultiSelectDeleteConfirm">删除</string>
   <string name="voicemailMultiSelectDeleteCancel">取消</string>
   <string name="voicemailMultiSelectActionBarTitle">已选择 %1$s 封</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">无法使用语音搜索</string>
   <string name="dialer_hint_find_contact">搜索联系人</string>
-  <string name="block_number_search_hint">添加号码或搜索联系人</string>
   <string name="call_log_all_empty">您没有任何通话记录</string>
   <string name="call_log_all_empty_action">拨打电话</string>
   <string name="call_log_missed_empty">您没有任何未接电话。</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">通话记录</string>
   <string name="call_log_all_title">全部</string>
   <string name="call_log_missed_title">未接电话</string>
-  <string name="tab_speed_dial">快速拨号</string>
-  <string name="tab_history">通话记录</string>
   <string name="tab_all_contacts">通讯录</string>
-  <string name="tab_voicemail">语音邮件</string>
-  <string name="search_shortcut_call_number">拨打 %s</string>
   <string name="search_shortcut_create_new_contact">新建联系人</string>
   <string name="search_shortcut_add_to_contact">添加到联系人</string>
   <string name="search_shortcut_send_sms_message">发送短信</string>
   <string name="search_shortcut_make_video_call">发起视频通话</string>
-  <string name="search_shortcut_block_number">屏蔽号码</string>
-  <string name="speed_dial_empty">尚未给任何联系人设定快速拨号</string>
-  <string name="speed_dial_empty_add_favorite_action">添加常用联系人</string>
-  <string name="remove_contact">移除</string>
   <string name="select_all">全选</string>
   <string name="call_log_action_video_call">视频通话</string>
-  <string name="call_log_action_set_up_video">设置视频通话</string>
-  <string name="call_log_action_invite_video">邀请加入视频通话</string>
   <string name="call_log_action_send_message">发送短信</string>
   <string name="call_log_action_details">通话详情</string>
   <string name="call_log_action_share_voicemail">发送至…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">通话</string>
   <string name="manage_blocked_numbers_label">已屏蔽的号码</string>
   <string name="voicemail_settings_label">语音邮件</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">来电拦截功能已暂时关闭</string>
-  <string name="blocked_numbers_disabled_emergency_desc">来电拦截功能已停用，因为您在过去 48 小时内使用该手机拨打了紧急服务电话。系统会在 48 小时的期限结束后自动重新启用该功能。</string>
-  <string name="import_send_to_voicemail_numbers_label">导入号码</string>
-  <string name="blocked_call_settings_import_description">您曾通过其他应用将某些来电者设为自动转到语音信箱。</string>
-  <string name="blocked_call_settings_view_numbers_button">查看号码</string>
-  <string name="blocked_call_settings_import_button">导入</string>
-  <string name="description_blocked_number_list_delete">取消屏蔽号码</string>
-  <string name="addBlockedNumber">添加号码</string>
-  <string name="block_number_footer_message_vvm">系统将屏蔽这些号码的来电，并将自动删除这些来电者发送的语音邮件。</string>
-  <string name="block_number_footer_message_no_vvm">系统将屏蔽这些号码的来电，但这些来电者可能仍然能够给您发送语音邮件。</string>
-  <string name="block_list">已屏蔽的号码</string>
-  <string name="alreadyBlocked">%1$s 已被屏蔽。</string>
   <string name="phone_account_settings_label">通话帐号</string>
-  <string name="permission_no_speeddial">要启用快速拨号功能，请开启“通讯录”权限。</string>
   <string name="permission_no_calllog">要查看您的通话记录，请开启“电话”权限。</string>
-  <string name="permission_no_search">要搜索您的联系人，请开启“通讯录”权限。</string>
-  <string name="permission_place_call">要拨打电话，请开启“电话”权限。</string>
   <string name="toast_cannot_write_system_settings">电话应用不具备写入系统设置的权限。</string>
   <string name="blocked_number_call_log_label">已屏蔽</string>
   <string name="call_log_action_block_report_number">屏蔽/举报骚扰电话号码</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">非骚扰电话号码</string>
   <string name="call_log_action_unblock_number">取消屏蔽号码</string>
   <string name="spam_number_call_log_label">骚扰电话号码</string>
-  <string name="call_composer_connection_failed">%1$s不在线，无法接通</string>
-  <string name="about_phone_label">应用信息</string>
-  <string name="voicemail_transcription_branding_text">由 Google 转录</string>
-  <string name="voicemail_transcription_in_progress">正在转录…</string>
-  <string name="voicemail_transcription_failed">转录失败。</string>
-  <string name="voicemail_transcription_failed_language_not_supported">转录失败，语言不受支持。</string>
-  <string name="voicemail_transcription_failed_no_speech">转录失败，检测不到语音。</string>
-  <string name="voicemail_donation_promo_title">想帮助提高转录的准确性吗？</string>
-  <string name="voicemail_donation_promo_content">允许 Google 查看这条和日后的语音邮件及转录内容。系统会以匿名方式存储这些内容。您随时可以更改设置。%1$s</string>
-  <string name="voicemail_donation_promo_opt_in">立即启用</string>
-  <string name="voicemail_donation_promo_opt_out">不用了，谢谢</string>
-  <string name="voicemail_transcription_rating">为转录质量评分</string>
-  <string name="voicemail_transcription_rating_thanks">感谢您的反馈</string>
-  <string name="description_rating_good">顶</string>
-  <string name="description_rating_bad">踩</string>
-  <string name="view_conversation">查看</string>
-  <string name="ec_data_deleted">通话已删除。请前往“信息”应用查看和删除通过此通话分享的附件。</string>
-  <string name="multiple_ec_data_deleted">通话已删除。请前往“信息”应用查看和删除通过通话分享的附件。</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
index 219ac40..27d8037 100644
--- a/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rHK/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">手機</string>
-  <string name="launcherDialpadActivityLabel">手機小鍵盤</string>
   <string name="callHistoryIconLabel">通話記錄</string>
   <string name="action_copy_number_text">複製號碼</string>
-  <string name="copy_transcript_text">複製內容轉錄</string>
   <string name="action_edit_number_before_call">致電前編輯號碼</string>
   <string name="call_log_delete_all">清除通話記錄</string>
   <string name="call_log_trash_voicemail">刪除留言</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">指定播放位置</string>
   <string name="action_menu_call_history_description">通話記錄</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">更多選項</string>
-  <string name="action_menu_dialpad_button">小鍵盤</string>
   <string name="dialer_settings_label">設定</string>
-  <string name="simulator_submenu_label">模擬器</string>
-  <string name="new_ui_launcher_shortcut_label">建立新使用者介面捷徑</string>
   <string name="description_entering_bulk_action_mode">正在進入大量操作模式</string>
   <string name="description_leaving_bulk_action_mode">已離開大量操作模式</string>
   <string name="description_selecting_bulk_action_mode">已選取%1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">視像通話。</string>
   <string name="description_start_voice_search">開始語音搜尋</string>
   <string name="voicemail">留言</string>
-  <string name="description_cancel_multi_select">取消批量操作模式</string>
   <string name="voicemailMultiSelectDeleteConfirm">刪除</string>
   <string name="voicemailMultiSelectDeleteCancel">取消</string>
   <string name="voicemailMultiSelectActionBarTitle">已選取 %1$s 個</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">無法使用語音搜尋</string>
   <string name="dialer_hint_find_contact">搜尋聯絡人</string>
-  <string name="block_number_search_hint">新增號碼或搜尋聯絡人</string>
   <string name="call_log_all_empty">沒有通話記錄</string>
   <string name="call_log_all_empty_action">撥號</string>
   <string name="call_log_missed_empty">您沒有未接來電。</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">通話記錄</string>
   <string name="call_log_all_title">全部</string>
   <string name="call_log_missed_title">未接來電</string>
-  <string name="tab_speed_dial">快速撥號</string>
-  <string name="tab_history">通話記錄</string>
   <string name="tab_all_contacts">聯絡人</string>
-  <string name="tab_voicemail">留言信箱</string>
-  <string name="search_shortcut_call_number">撥打 %s</string>
   <string name="search_shortcut_create_new_contact">建立新聯絡人</string>
   <string name="search_shortcut_add_to_contact">加至現有聯絡人資料</string>
   <string name="search_shortcut_send_sms_message">傳送短訊</string>
   <string name="search_shortcut_make_video_call">進行視像通話</string>
-  <string name="search_shortcut_block_number">封鎖號碼</string>
-  <string name="speed_dial_empty">快速撥號名單中沒有聯絡人</string>
-  <string name="speed_dial_empty_add_favorite_action">新增常用聯絡人</string>
-  <string name="remove_contact">移除</string>
   <string name="select_all">全選</string>
   <string name="call_log_action_video_call">視像通話</string>
-  <string name="call_log_action_set_up_video">設定視像通話</string>
-  <string name="call_log_action_invite_video">邀請加入視像通話</string>
   <string name="call_log_action_send_message">傳送訊息</string>
   <string name="call_log_action_details">通話詳情</string>
   <string name="call_log_action_share_voicemail">傳送至…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">通話</string>
   <string name="manage_blocked_numbers_label">已封鎖的號碼</string>
   <string name="voicemail_settings_label">留言</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">暫時關閉來電封鎖功能</string>
-  <string name="blocked_numbers_disabled_emergency_desc">您在過去 48 小時內曾經使用此手機聯絡緊急服務，因此來電封鎖功能已停用。系統會在 48 小時期限結束後自動重新啟用功能。</string>
-  <string name="import_send_to_voicemail_numbers_label">匯入號碼</string>
-  <string name="blocked_call_settings_import_description">您早前透過其他應用程式標記部分來電者，將他們的來電自動轉駁至留言信箱。</string>
-  <string name="blocked_call_settings_view_numbers_button">查看電話號碼</string>
-  <string name="blocked_call_settings_import_button">匯入</string>
-  <string name="description_blocked_number_list_delete">解除封鎖號碼</string>
-  <string name="addBlockedNumber">新增電話號碼</string>
-  <string name="block_number_footer_message_vvm">將會封鎖這些號碼的來電，而留言將會自動刪除。</string>
-  <string name="block_number_footer_message_no_vvm">將會封鎖這些號碼的來電，但來電可能會轉駁至留言信箱。</string>
-  <string name="block_list">已封鎖的號碼</string>
-  <string name="alreadyBlocked">已封鎖 %1$s。</string>
   <string name="phone_account_settings_label">通話帳戶</string>
-  <string name="permission_no_speeddial">如要啟用快速撥號功能，請開放「通訊錄」權限。</string>
   <string name="permission_no_calllog">如要查看通話記錄，請開放「手機」權限。</string>
-  <string name="permission_no_search">如要搜尋聯絡人，請開啟「通訊錄」權限。</string>
-  <string name="permission_place_call">如要撥打電話，請開放「手機」權限。</string>
   <string name="toast_cannot_write_system_settings">手機應用程式沒有系統設定的寫入權限。</string>
   <string name="blocked_number_call_log_label">已封鎖</string>
   <string name="call_log_action_block_report_number">封鎖/舉報為垃圾來電</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">非垃圾來電</string>
   <string name="call_log_action_unblock_number">解除封鎖號碼</string>
   <string name="spam_number_call_log_label">垃圾號碼</string>
-  <string name="call_composer_connection_failed">%1$s已離線，無法取得聯繫</string>
-  <string name="about_phone_label">關於</string>
-  <string name="voicemail_transcription_branding_text">已由 Google 轉錄</string>
-  <string name="voicemail_transcription_in_progress">正在轉錄…</string>
-  <string name="voicemail_transcription_failed">找不到轉錄文字。</string>
-  <string name="voicemail_transcription_failed_language_not_supported">無法轉錄，語言不受支援。</string>
-  <string name="voicemail_transcription_failed_no_speech">無法轉錄，偵測不到語音。</string>
-  <string name="voicemail_donation_promo_title">想協助提高轉錄準確度嗎？</string>
-  <string name="voicemail_donation_promo_content">讓 Google 審查這則和日後含有轉錄內容的留言訊息。這些訊息會以匿名方式儲存下來。您可以隨時變更相關設定。%1$s</string>
-  <string name="voicemail_donation_promo_opt_in">是，我要</string>
-  <string name="voicemail_donation_promo_opt_out">不用了，謝謝</string>
-  <string name="voicemail_transcription_rating">為轉錄品質評分</string>
-  <string name="voicemail_transcription_rating_thanks">多謝您提供意見</string>
-  <string name="description_rating_good">喜歡</string>
-  <string name="description_rating_bad">不喜歡</string>
-  <string name="view_conversation">查看</string>
-  <string name="ec_data_deleted">已刪除通話。在「訊息」中查看及刪除此通話期間所分享的附件。</string>
-  <string name="multiple_ec_data_deleted">已刪除通話。在「訊息」中查看及刪除通話期間所分享的附件。</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-zh-rTW/cm_strings.xml b/java/com/android/dialer/app/res/values-zh-rTW/cm_strings.xml
new file mode 100644
index 0000000..2521100
--- /dev/null
+++ b/java/com/android/dialer/app/res/values-zh-rTW/cm_strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_title">來電</string>
+    <string name="incall_enable_dnd_title">在通話過程中啟用免打擾功能</string>
+    <string name="incall_vibrate_outgoing_title">接通時震動</string>
+    <string name="incall_vibrate_call_waiting_title">來電等待時震動</string>
+    <string name="incall_vibrate_hangup_title">掛斷時震動</string>
+    <string name="incall_vibrate_45_title">每分鐘震動一次</string>
+    <string name="incall_vibrate_45_summary">撥出電話後每分鐘的 45 秒時震動</string>
+    <string name="incall_dnd_dialog_message">為了啟用免打擾功能，電話應用程式需要啟用權限。\n請允許。</string>
+    <string name="allow">允許</string>
+    <string name="deny">拒絕</string>
+    <string name="call_recording_category_title">通話錄音</string>
+    <string name="call_recording_format">音訊格式</string>
+    <string name="call_via">來電透過</string>
+    <string name="call_via_dialog_title">來電透過\u2026</string>
+    <string name="call_log_stats_title">統計資料</string>
+    <string name="action_menu_helplines">求助熱線</string>
+    <string name="default_dialer_text">您必須將「撥號」設為預設電話應用程式才能使用它。</string>
+    <string name="default_dialer_action">設為預設值</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
index 6b985ee..a95a50c 100644
--- a/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/app/res/values-zh-rTW/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">電話</string>
-  <string name="launcherDialpadActivityLabel">電話撥號鍵盤</string>
   <string name="callHistoryIconLabel">通話記錄</string>
   <string name="action_copy_number_text">複製號碼</string>
-  <string name="copy_transcript_text">複製留言轉錄內容</string>
   <string name="action_edit_number_before_call">撥打前編輯號碼</string>
   <string name="call_log_delete_all">清除通話記錄</string>
   <string name="call_log_trash_voicemail">刪除語音留言</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">指定播放時間點</string>
   <string name="action_menu_call_history_description">通話記錄</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">更多選項</string>
-  <string name="action_menu_dialpad_button">撥號鍵盤</string>
   <string name="dialer_settings_label">設定</string>
-  <string name="simulator_submenu_label">模擬工具</string>
-  <string name="new_ui_launcher_shortcut_label">建立新版 UI 捷徑</string>
   <string name="description_entering_bulk_action_mode">已進入大量操作模式</string>
   <string name="description_leaving_bulk_action_mode">已離開大量操作模式</string>
   <string name="description_selecting_bulk_action_mode">已選取：%1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">視訊通話。</string>
   <string name="description_start_voice_search">開始進行語音搜尋</string>
   <string name="voicemail">語音留言</string>
-  <string name="description_cancel_multi_select">取消批次操作模式</string>
   <string name="voicemailMultiSelectDeleteConfirm">刪除</string>
   <string name="voicemailMultiSelectDeleteCancel">取消</string>
   <string name="voicemailMultiSelectActionBarTitle">已選取 %1$s 個</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">無法使用語音搜尋</string>
   <string name="dialer_hint_find_contact">搜尋聯絡人</string>
-  <string name="block_number_search_hint">新增號碼或搜尋聯絡人</string>
   <string name="call_log_all_empty">沒有任何通話記錄</string>
   <string name="call_log_all_empty_action">撥打電話</string>
   <string name="call_log_missed_empty">您沒有任何未接來電。</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">通話記錄</string>
   <string name="call_log_all_title">全部</string>
   <string name="call_log_missed_title">未接來電</string>
-  <string name="tab_speed_dial">快速撥號</string>
-  <string name="tab_history">通話記錄</string>
   <string name="tab_all_contacts">聯絡人</string>
-  <string name="tab_voicemail">語音信箱</string>
-  <string name="search_shortcut_call_number">撥打 %s</string>
   <string name="search_shortcut_create_new_contact">建立新聯絡人</string>
   <string name="search_shortcut_add_to_contact">新增至聯絡人</string>
   <string name="search_shortcut_send_sms_message">傳送簡訊</string>
   <string name="search_shortcut_make_video_call">進行視訊通話</string>
-  <string name="search_shortcut_block_number">封鎖號碼</string>
-  <string name="speed_dial_empty">您的快速撥號功能尚未設定任何聯絡人</string>
-  <string name="speed_dial_empty_add_favorite_action">新增常用聯絡人</string>
-  <string name="remove_contact">移除</string>
   <string name="select_all">全選</string>
   <string name="call_log_action_video_call">視訊通話</string>
-  <string name="call_log_action_set_up_video">設定視訊通話</string>
-  <string name="call_log_action_invite_video">邀請加入視訊通話</string>
   <string name="call_log_action_send_message">傳送簡訊</string>
   <string name="call_log_action_details">通話詳細資料</string>
   <string name="call_log_action_share_voicemail">傳送至…</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">通話</string>
   <string name="manage_blocked_numbers_label">已封鎖的號碼</string>
   <string name="voicemail_settings_label">語音留言</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">來電封鎖功能已暫時關閉</string>
-  <string name="blocked_numbers_disabled_emergency_desc">由於您曾在過去 48 小時內使用這支手機撥打緊急服務電話，因此來電封鎖功能已停用。此功能停用達 48 小時後，將由系統自動重新啟用。</string>
-  <string name="import_send_to_voicemail_numbers_label">匯入電話號碼</string>
-  <string name="blocked_call_settings_import_description">您之前曾將某些來電者標示為自動透過其他應用程式轉到語音信箱。</string>
-  <string name="blocked_call_settings_view_numbers_button">查看號碼</string>
-  <string name="blocked_call_settings_import_button">匯入</string>
-  <string name="description_blocked_number_list_delete">解除封鎖號碼</string>
-  <string name="addBlockedNumber">新增號碼</string>
-  <string name="block_number_footer_message_vvm">系統會封鎖這些號碼的來電，並自動刪除對方的語音留言。</string>
-  <string name="block_number_footer_message_no_vvm">系統會封鎖這些號碼的來電，但對方仍可錄製語音留言給您。</string>
-  <string name="block_list">已封鎖的號碼</string>
-  <string name="alreadyBlocked">%1$s 已在封鎖清單中。</string>
   <string name="phone_account_settings_label">通話帳戶</string>
-  <string name="permission_no_speeddial">如要啟用快速撥號，請開啟「聯絡人」存取權限。</string>
   <string name="permission_no_calllog">如要查看您的通話記錄，請開啟「電話」存取權限。</string>
-  <string name="permission_no_search">如要搜尋您的聯絡人，請開啟「聯絡人」存取權限。</string>
-  <string name="permission_place_call">如要撥打電話，請開啟「電話」存取權限。</string>
   <string name="toast_cannot_write_system_settings">電話應用程式的權限不足，無法寫入系統設定。</string>
   <string name="blocked_number_call_log_label">已封鎖</string>
   <string name="call_log_action_block_report_number">封鎖/回報為騷擾/廣告電話</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">非騷擾/廣告電話</string>
   <string name="call_log_action_unblock_number">解除封鎖號碼</string>
   <string name="spam_number_call_log_label">騷擾/廣告電話</string>
-  <string name="call_composer_connection_failed">%1$s已離線，無法接聽來電</string>
-  <string name="about_phone_label">關於</string>
-  <string name="voicemail_transcription_branding_text">由 Google 轉錄</string>
-  <string name="voicemail_transcription_in_progress">轉錄中…</string>
-  <string name="voicemail_transcription_failed">無法轉錄留言。</string>
-  <string name="voicemail_transcription_failed_language_not_supported">無法轉錄留言。系統不支援這個語言。</string>
-  <string name="voicemail_transcription_failed_no_speech">無法轉錄留言。系統未偵測到語音內容。</string>
-  <string name="voicemail_donation_promo_title">想要協助改善留言轉錄的精確度嗎？</string>
-  <string name="voicemail_donation_promo_content">允許 Google 聽取這則和日後含有轉錄內容的語音留言。系統會以匿名的方式儲存這些內容。你隨時可以變更這項設定。%1$s</string>
-  <string name="voicemail_donation_promo_opt_in">是，我同意</string>
-  <string name="voicemail_donation_promo_opt_out">不用了，謝謝</string>
-  <string name="voicemail_transcription_rating">為轉錄品質評分</string>
-  <string name="voicemail_transcription_rating_thanks">感謝你提供寶貴意見</string>
-  <string name="description_rating_good">喜歡</string>
-  <string name="description_rating_bad">不喜歡</string>
-  <string name="view_conversation">查看</string>
-  <string name="ec_data_deleted">已刪除這筆通話記錄。你可以在「訊息」應用程式中查看及刪除通話期間分享的附件。</string>
-  <string name="multiple_ec_data_deleted">已刪除這些通話記錄。你可以在「訊息」應用程式中查看及刪除通話期間分享的附件。</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values-zu/strings.xml b/java/com/android/dialer/app/res/values-zu/strings.xml
index e0cca2c..9d4e26f 100644
--- a/java/com/android/dialer/app/res/values-zu/strings.xml
+++ b/java/com/android/dialer/app/res/values-zu/strings.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="applicationLabel">Ifoni</string>
-  <string name="launcherDialpadActivityLabel">Ikhiphedi yefoni</string>
   <string name="callHistoryIconLabel">Umlando wekholi</string>
   <string name="action_copy_number_text">Kopisha inombolo</string>
-  <string name="copy_transcript_text">Kopisha ukukhiphela</string>
   <string name="action_edit_number_before_call">Hlela inombolo ngaphambi kwekholi</string>
   <string name="call_log_delete_all">Sula umlando wekholi</string>
   <string name="call_log_trash_voicemail">Susa ivoyisimeyili</string>
@@ -35,10 +33,7 @@
   <string name="description_playback_seek">Funa indawo yokudlala</string>
   <string name="action_menu_call_history_description">Umlando wekholi</string>
   <string msgid="2295659037509008453" name="action_menu_overflow_description">Izinketho eziningi</string>
-  <string name="action_menu_dialpad_button">ikhiphedi</string>
   <string name="dialer_settings_label">Izilungiselelo</string>
-  <string name="simulator_submenu_label">Isilingisi</string>
-  <string name="new_ui_launcher_shortcut_label">Dala isinqamuleli esisha se-UI</string>
   <string name="description_entering_bulk_action_mode">Kungenwa kumodi yesenzo senqwaba</string>
   <string name="description_leaving_bulk_action_mode">Ishiye imodi yesenzo senqwaba</string>
   <string name="description_selecting_bulk_action_mode">Kukhethwe i-%1$s</string>
@@ -49,7 +44,6 @@
   <string name="description_video_call">Ikholi yevidiyo.</string>
   <string name="description_start_voice_search">Qalisa ukusesha ngezwi</string>
   <string name="voicemail">Ivoyisimeyili</string>
-  <string name="description_cancel_multi_select">Khansela imodi lezenzo zeqoqo</string>
   <string name="voicemailMultiSelectDeleteConfirm">Susa</string>
   <string name="voicemailMultiSelectDeleteCancel">Khansela</string>
   <string name="voicemailMultiSelectActionBarTitle">Engu-%1$s ekhethiwe</string>
@@ -63,7 +57,6 @@
   <string name="voicemailCallLogDateTimeFormatWithDuration">%1$s • %2$s</string>
   <string name="voice_search_not_available">Usesho lwezwi alutholakali</string>
   <string name="dialer_hint_find_contact">Sesha othintana nabo</string>
-  <string name="block_number_search_hint">Engeza inombolo noma useshe oxhumana nabo</string>
   <string name="call_log_all_empty">Umlando wakho wekholi awunalutho</string>
   <string name="call_log_all_empty_action">Yenza ikholi</string>
   <string name="call_log_missed_empty">Awunawo amakholi aphuthelwe.</string>
@@ -71,23 +64,13 @@
   <string name="call_log_activity_title">Umlando wekholi</string>
   <string name="call_log_all_title">Konke</string>
   <string name="call_log_missed_title">Phuthelwe</string>
-  <string name="tab_speed_dial">Ukudayela okusheshayo</string>
-  <string name="tab_history">Umlando wekholi</string>
   <string name="tab_all_contacts">Oxhumana nabo</string>
-  <string name="tab_voicemail">Ivoyisimeyili</string>
-  <string name="search_shortcut_call_number">Shayela %s</string>
   <string name="search_shortcut_create_new_contact">Dala oxhumana naye omusha</string>
   <string name="search_shortcut_add_to_contact">Engeza koxhumana naye</string>
   <string name="search_shortcut_send_sms_message">Thumela i-SMS</string>
   <string name="search_shortcut_make_video_call">Yenza ikholi yevidiyo</string>
-  <string name="search_shortcut_block_number">Vimba inombolo</string>
-  <string name="speed_dial_empty">Akekho umuntu osekudayeleni kwakho okusheshayo okwamanje</string>
-  <string name="speed_dial_empty_add_favorite_action">Engeza intandokazi</string>
-  <string name="remove_contact">Susa</string>
   <string name="select_all">Khetha konke</string>
   <string name="call_log_action_video_call">Ikholi yevidiyo</string>
-  <string name="call_log_action_set_up_video">Setha ikholi yevidiyo</string>
-  <string name="call_log_action_invite_video">Memela kwikholi yevidiyo</string>
   <string name="call_log_action_send_message">Thumela umlayezo</string>
   <string name="call_log_action_details">Imininingwane yekholi</string>
   <string name="call_log_action_share_voicemail">Thumela ku ...</string>
@@ -126,23 +109,8 @@
   <string name="call_settings_label">Amakholi</string>
   <string name="manage_blocked_numbers_label">Izinombolo ezivinjiwe</string>
   <string name="voicemail_settings_label">Ivoyisimeyili</string>
-  <string name="blocked_numbers_disabled_emergency_header_label">Ukuvimbela ikholi kuvalwe isikhashana</string>
-  <string name="blocked_numbers_disabled_emergency_desc">Ukuvimbela ikholi kukhutshaziwe ngoba uxhumane nabosizo oluphuthumayo kusukela kule foni phakathi kwamahora angu-48 wokugcina. Kuzophinda kunikwe amandla ngokuzenzakalela uma sokuphele isikhathi samahora angu-48.</string>
-  <string name="import_send_to_voicemail_numbers_label">Ngenisa izinombolo</string>
-  <string name="blocked_call_settings_import_description">Ngaphambilini umake abanye abashayi ukuthi bathunyelwe ngokuzenzakalelayo kuvoyisimeyili ngezinhlelo zokusebenza.</string>
-  <string name="blocked_call_settings_view_numbers_button">Buka izinombolo</string>
-  <string name="blocked_call_settings_import_button">Ngenisa</string>
-  <string name="description_blocked_number_list_delete">Vulela inombolo</string>
-  <string name="addBlockedNumber">Engeza inombolo</string>
-  <string name="block_number_footer_message_vvm">Amakholi kusuka kulezi lzinombolo azovinjwa futhi amavoyisimeyili azosulwa ngokuzenzakalela.</string>
-  <string name="block_number_footer_message_no_vvm">Amakholi kusuka kulezi zinombolo azovinjwa, kodwa angakwazi ukushiya amavoyisimeyili.</string>
-  <string name="block_list">Izinombolo ezivinjiwe</string>
-  <string name="alreadyBlocked">%1$s isivinjiwe kakade.</string>
   <string name="phone_account_settings_label">Ama-akhawunti wokushaya</string>
-  <string name="permission_no_speeddial">Nika amandla ukudayela okusheshayo, vula imvume yoxhumana nabo.</string>
   <string name="permission_no_calllog">Ukuze ubone irekhodi lakho lamakholi, vuma imvume yefoni.</string>
-  <string name="permission_no_search">Ukuze useshe oxhumana nabo, vula izimvume zoxhumana nabo.</string>
-  <string name="permission_place_call">Ukuze ubeke ikholi, vula imvume yefoni.</string>
   <string name="toast_cannot_write_system_settings">Uhlelo lokusebenza lefoni alinayo imvume yokubhalela kuzilungiselelo zesistimu.</string>
   <string name="blocked_number_call_log_label">Ivinjelwe</string>
   <string name="call_log_action_block_report_number">Vimba/bika ugaxekile</string>
@@ -150,22 +118,4 @@
   <string name="call_log_action_remove_spam">Akusiko okugaxekile</string>
   <string name="call_log_action_unblock_number">Vulela inombolo</string>
   <string name="spam_number_call_log_label">Ugaxekile</string>
-  <string name="call_composer_connection_failed">U-%1$s akaxhunyiwe kwi-inthanethi futhi akakwazi ukufinyelelwa</string>
-  <string name="about_phone_label">Mayelana</string>
-  <string name="voicemail_transcription_branding_text">Kubhalwe ngokuloba i-Google</string>
-  <string name="voicemail_transcription_in_progress">Iyaloba...</string>
-  <string name="voicemail_transcription_failed">Ukubhalwa ngokuloba akutholakali.</string>
-  <string name="voicemail_transcription_failed_language_not_supported">Ukubhalwa ngokuloba akutholakali. Ulimi alusekelwa.</string>
-  <string name="voicemail_transcription_failed_no_speech">Ukubhalwa ngokuloba akutholakali. Ayikho inkulumo etholakele.</string>
-  <string name="voicemail_donation_promo_title">Sisize sithuthukise ukunemba kokuloba?</string>
-  <string name="voicemail_donation_promo_content">Vumela i-Google ukuthi ibuyekeze lokhu nemilayezo ezayo yevoyisimeyili ngokulotshiwe. Kuzogcinwa ngokungaziwa. Shintsha izilungiselelo noma kunini. %1$s</string>
-  <string name="voicemail_donation_promo_opt_in">Yebo, ngingenile</string>
-  <string name="voicemail_donation_promo_opt_out">Cha ngiyabonga</string>
-  <string name="voicemail_transcription_rating">Linganisa ikhwalithi yokuloba</string>
-  <string name="voicemail_transcription_rating_thanks">Siyabonga ngempendulo yakho</string>
-  <string name="description_rating_good">Thanda</string>
-  <string name="description_rating_bad">Ukungathandi</string>
-  <string name="view_conversation">Buka</string>
-  <string name="ec_data_deleted">Ikholi isusiwe. Buka uphinde ususe okunamathiselwe ku-imeyili okwabiwe ngesikhathi sale kholi kumilayezo.</string>
-  <string name="multiple_ec_data_deleted">Amakholi asusiwe. Buka uphinde ususe okunamathiselwe kwi-imeyili okwabiwe ngesikhathi samakholi kumilayezo.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values/animation_constants.xml b/java/com/android/dialer/app/res/values/animation_constants.xml
deleted file mode 100644
index 4029e77..0000000
--- a/java/com/android/dialer/app/res/values/animation_constants.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2012 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <integer name="fade_duration">300</integer>
-</resources>
diff --git a/java/com/android/dialer/app/res/values/attrs.xml b/java/com/android/dialer/app/res/values/attrs.xml
deleted file mode 100644
index b346390..0000000
--- a/java/com/android/dialer/app/res/values/attrs.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2012 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-
-  <declare-styleable name="SearchEditTextLayout"/>
-
-</resources>
diff --git a/java/com/android/dialer/app/res/values/cm_arrays.xml b/java/com/android/dialer/app/res/values/cm_arrays.xml
new file mode 100644
index 0000000..a788fd3
--- /dev/null
+++ b/java/com/android/dialer/app/res/values/cm_arrays.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_recording_encoder_entries" translatable="false">
+        <item>@string/wb_amr_format</item>
+        <item>@string/aac_format</item>
+    </string-array>
+
+    <string-array name="call_recording_encoder_values" translatable="false">
+        <item>"0"</item>
+        <item>"1"</item>
+    </string-array>
+
+</resources>
diff --git a/java/com/android/dialer/app/res/values/cm_attrs.xml b/java/com/android/dialer/app/res/values/cm_attrs.xml
new file mode 100644
index 0000000..3155845
--- /dev/null
+++ b/java/com/android/dialer/app/res/values/cm_attrs.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <declare-styleable name="LinearColorBar">
+        <attr name="redColor" format="color" />
+        <attr name="greenColor" format="color" />
+        <attr name="blueColor" format="color" />
+        <attr name="orangeColor" format="color" />
+        <attr name="backgroundColor" format="color" />
+    </declare-styleable>
+</resources>
diff --git a/java/com/android/dialer/app/res/values/cm_strings.xml b/java/com/android/dialer/app/res/values/cm_strings.xml
new file mode 100644
index 0000000..79dee54
--- /dev/null
+++ b/java/com/android/dialer/app/res/values/cm_strings.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="incall_category_key" translatable="false">dialer_general_incall_category_key</string>
+    <string name="incall_category_title">In-call</string>
+    <string name="incall_enable_dnd_title">Enable Do Not Disturb during calls</string>
+    <string name="incall_vibrate_outgoing_key" translatable="false">incall_vibrate_outgoing</string>
+    <string name="incall_vibrate_outgoing_title">Vibrate on answer</string>
+    <string name="incall_vibrate_call_waiting_key" translatable="false">incall_vibrate_call_waiting</string>
+    <string name="incall_vibrate_call_waiting_title">Vibrate on call waiting</string>
+    <string name="incall_vibrate_hangup_key" translatable="false">incall_vibrate_hangup</string>
+    <string name="incall_vibrate_hangup_title">Vibrate on hang up</string>
+    <string name="incall_vibrate_45_key" translatable="false">incall_vibrate_45secs</string>
+    <string name="incall_vibrate_45_title">Vibrate every minute</string>
+    <string name="incall_vibrate_45_summary">Vibrates at the 45 second mark of every minute during outgoing calls</string>
+    <string name="incall_dnd_dialog_message">In order to enable Do Not Disturb, the Phone app needs to be granted the permission to control the Do Not Disturb status.\nPlease allow it.</string>
+    <string name="allow">Allow</string>
+    <string name="deny">Deny</string>
+
+    <string name="call_recording_category_key" translatable="false">call_recording_category</string>
+    <string name="call_recording_category_title">Call recording</string>
+    <string name="call_recording_format_key" translatable="false">call_recording_format</string>
+    <string name="call_recording_format">Audio format</string>
+    <string name="wb_amr_format" translatable="false">AMR-WB</string>
+    <string name="aac_format" translatable="false">AAC</string>
+
+    <string name="call_via">Call via</string>
+    <string name="call_via_dialog_title">Call via\u2026</string>
+
+    <string name="call_log_stats_title">Statistics</string>
+
+    <string name="action_menu_helplines">Helplines</string>
+
+    <string name="default_dialer_text">You must set Dialer as the default phone app to use it.</string>
+    <string name="default_dialer_action">Set as default</string>
+</resources>
diff --git a/java/com/android/dialer/app/res/values/colors.xml b/java/com/android/dialer/app/res/values/colors.xml
index a971347..45aba55 100644
--- a/java/com/android/dialer/app/res/values/colors.xml
+++ b/java/com/android/dialer/app/res/values/colors.xml
@@ -16,11 +16,28 @@
 
 <resources>
   <color name="voicemail_icon_disabled_tint">#80000000</color>
-  <color name="voicemail_playpause_icon_tint">?colorIcon</color>
+
+  <color name="call_record_playback_icon_color">#8a000000</color>
 
   <!-- Text color for the "Remove" text when a contact is dragged on top of the remove view -->
   <color name="remove_highlighted_text_color">#FF3F3B</color>
 
-  <!--  Colors for blocked numbers list -->
-  <color name="blocked_number_block_color">#F44336</color>
+  <color name="nav_item">@android:color/system_neutral1_600</color>
+  <color name="dialer_pill_color">@android:color/system_accent2_200</color>
+  <color name="dialer_fab_icon_color">#ffffffff</color>
+
+  <!-- Material next state on color-->
+  <color name="state_on_color">@android:color/system_accent3_100</color>
+
+  <!-- Material next thumb disable color-->
+  <color name="thumb_disabled_color">@android:color/black</color>
+
+  <!-- Material next thumb off color-->
+  <color name="thumb_off_color">@color/dialer_background_color</color>
+
+  <!-- Material next track on color-->
+  <color name="track_on_color">@color/dialer_theme_color</color>
+
+  <!-- Material next track off color-->
+  <color name="track_off_color">@android:color/system_neutral2_500</color>
 </resources>
diff --git a/java/com/android/dialer/app/res/values/dimens.xml b/java/com/android/dialer/app/res/values/dimens.xml
index fdbcac9..22730fd 100644
--- a/java/com/android/dialer/app/res/values/dimens.xml
+++ b/java/com/android/dialer/app/res/values/dimens.xml
@@ -17,12 +17,6 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
   <dimen name="button_horizontal_padding">16dp</dimen>
 
-  <!--
-        Drag to remove view (in dp because it is used in conjunction with a statically
-        sized icon
-  -->
-  <dimen name="remove_text_size">16dp</dimen>
-
   <!-- Select All/Multi Select -->
   <dimen name="select_all_text_size">14sp</dimen>
   <dimen name="select_all_icon_padding">16dp</dimen>
@@ -40,59 +34,9 @@
   <!-- Size of contact photos in the call log and call details. -->
   <dimen name="contact_photo_size">48dp</dimen>
 
-  <!-- Dimensions for speed dial tiles -->
-  <dimen name="contact_tile_divider_width">1dp</dimen>
-  <dimen name="contact_tile_info_button_height_and_width">36dp</dimen>
-  <item name="contact_tile_height_to_width_ratio" type="dimen">76%</item>
-  <dimen name="contact_tile_text_side_padding">12dp</dimen>
-  <dimen name="contact_tile_text_bottom_padding">9dp</dimen>
-  <dimen name="favorites_row_top_padding">1dp</dimen>
-  <dimen name="favorites_row_start_padding">1dp</dimen>
-
-  <!-- Padding from the last contact tile will provide the end padding. -->
-  <dimen name="favorites_row_end_padding">0dp</dimen>
-
-  <!-- Size of the star icon on the favorites tile. -->
-  <dimen name="favorites_star_icon_size">12dp</dimen>
-
-  <!-- Margin to the left and right of the search box. -->
-  <dimen name="search_margin_horizontal">8dp</dimen>
-  <!-- Margin above the search box. -->
-  <dimen name="search_top_margin">8dp</dimen>
-  <!-- Margin below the search box. -->
-  <dimen name="search_bottom_margin">8dp</dimen>
-  <dimen name="search_collapsed_text_size">16sp</dimen>
-  <!-- Search box interior padding - left -->
-  <dimen name="search_box_left_padding">4dp</dimen>
-  <dimen name="search_box_search_icon_padding">2dp</dimen>
-  <dimen name="search_box_collapsed_text_margin_left">22dp</dimen>
-  <dimen name="search_list_padding_top">16dp</dimen>
-  <dimen name="search_box_elevation">3dp</dimen>
-
   <dimen name="call_log_list_item_primary_action_dimen">48dp</dimen>
 
-  <!-- Dimensions for promo cards -->
-  <dimen name="promo_card_icon_size">24dp</dimen>
-  <dimen name="promo_card_start_padding">16dp</dimen>
-  <dimen name="promo_card_top_padding">21dp</dimen>
-  <dimen name="promo_card_main_padding">24dp</dimen>
-  <dimen name="promo_card_title_padding">12dp</dimen>
-  <dimen name="promo_card_action_vertical_padding">4dp</dimen>
-  <dimen name="promo_card_action_end_padding">4dp</dimen>
-  <dimen name="promo_card_action_between_padding">11dp</dimen>
-  <dimen name="promo_card_line_spacing">4dp</dimen>
-
   <dimen name="voicemail_playback_top_padding">12dp</dimen>
 
-  <!-- Size of entries in blocked numbers list -->
-  <dimen name="blocked_number_container_padding">16dp</dimen>
-  <dimen name="blocked_number_horizontal_margin">16dp</dimen>
-  <dimen name="blocked_number_top_margin">16dp</dimen>
-  <dimen name="blocked_number_bottom_margin">16dp</dimen>
-  <dimen name="blocked_number_add_top_margin">8dp</dimen>
-  <dimen name="blocked_number_add_bottom_margin">8dp</dimen>
-  <dimen name="blocked_number_primary_text_size">16sp</dimen>
-  <dimen name="blocked_number_delete_icon_size">32dp</dimen>
-  <dimen name="blocked_number_search_text_size">14sp</dimen>
-  <dimen name="blocked_number_settings_description_text_size">14sp</dimen>
+  <dimen name="touch_target_min_size">48dp</dimen>
 </resources>
diff --git a/java/com/android/dialer/app/res/values/ids.xml b/java/com/android/dialer/app/res/values/ids.xml
index ca5f854..2b0ec7e 100644
--- a/java/com/android/dialer/app/res/values/ids.xml
+++ b/java/com/android/dialer/app/res/values/ids.xml
@@ -17,7 +17,6 @@
 <resources>
   <item name="call_detail_action_delete" type="id"/>
   <item name="context_menu_copy_to_clipboard" type="id"/>
-  <item name="context_menu_copy_transcript_to_clipboard" type="id"/>
   <item name="context_menu_edit_before_call" type="id"/>
   <item name="context_menu_block_report_spam" type="id"/>
   <item name="context_menu_block" type="id"/>
diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml
index e5092f0..7800d41 100644
--- a/java/com/android/dialer/app/res/values/strings.xml
+++ b/java/com/android/dialer/app/res/values/strings.xml
@@ -23,7 +23,6 @@
   <string name="applicationLabel" tools:ignore="UnusedResources">Phone</string>
 
   <!-- Title for the activity that dials the phone, when launched directly into the dialpad -->
-  <string name="launcherDialpadActivityLabel">Phone Keypad</string>
 
   <!-- The description text for the call log tab.
 
@@ -36,9 +35,6 @@
   <!-- Option displayed in context menu to copy long pressed phone number. [CHAR LIMIT=48] -->
   <string name="action_copy_number_text">Copy number</string>
 
-  <!-- Option displayed in context menu to copy long pressed voicemail transcription. [CHAR LIMIT=48] -->
-  <string name="copy_transcript_text">Copy transcription</string>
-
   <!-- Label for action to edit a number before calling it. [CHAR LIMIT=48] -->
   <string name="action_edit_number_before_call">Edit number before call</string>
 
@@ -150,20 +146,9 @@
        [CHAR LIMIT=NONE] -->
   <string msgid="2295659037509008453" name="action_menu_overflow_description">More options</string>
 
-  <!-- Content description for the button that displays the dialpad
-       [CHAR LIMIT=NONE] -->
-  <string name="action_menu_dialpad_button">key pad</string>
-
   <!-- Label for the dialer app setting page [CHAR LIMIT=30]-->
   <string name="dialer_settings_label">Settings</string>
 
-  <!-- Label for the simulator submenu. This is used to show actions that are useful for development
-       and testing. [CHAR LIMIT=30]-->
-  <string name="simulator_submenu_label">Simulator</string>
-
-  <!-- Label for the menu item that installs a shortcut for the new UI. [CHAR LIMIT=30] -->
-  <string name="new_ui_launcher_shortcut_label">Create New UI Shortcut</string>
-
   <!-- String describing the user entering bulk action mode.
 
     Note: AccessibilityServices use this attribute to announce what the view represents.
@@ -228,11 +213,6 @@
   <!-- String used for displaying calls to the voicemail number in the call log -->
   <string name="voicemail">Voicemail</string>
 
-  <!-- String describing the cancel button in multi select.
-       Note: AccessibilityServices uses this attribute to announce what the view represents.
-       [CHAR LIMIT=NONE] -->
-  <string name="description_cancel_multi_select">Cancel batch actions mode</string>
-
   <string name="voicemailMultiSelectDeleteConfirm">Delete</string>
   <string name="voicemailMultiSelectDeleteCancel">Cancel</string>
 
@@ -266,10 +246,6 @@
        [CHAR LIMIT=30] -->
   <string name="dialer_hint_find_contact">Search contacts</string>
 
-  <!-- Hint displayed in add blocked number search box when there is no query typed.
-       [CHAR LIMIT=45] -->
-  <string name="block_number_search_hint">Add number or search contacts</string>
-
   <!-- Text displayed when the call log is empty. -->
   <string name="call_log_all_empty">Your call history is empty</string>
 
@@ -293,24 +269,9 @@
        [CHAR LIMIT=30] -->
   <string name="call_log_missed_title">Missed</string>
 
-  <!-- Accessibility text for the tab showing recent and favorite contacts who can be called.
-       [CHAR LIMIT=40] -->
-  <string name="tab_speed_dial">Speed dial</string>
-
-  <!-- Accessibility text for the tab showing the call history. [CHAR LIMIT=40] -->
-  <string name="tab_history">Call History</string>
-
   <!-- Accessibility text for the tab showing the user's contacts. [CHAR LIMIT=40] -->
   <string name="tab_all_contacts">Contacts</string>
 
-  <!-- Accessibility text for the tab showing the user's voicemails. [CHAR LIMIT=40] -->
-  <string name="tab_voicemail">Voicemail</string>
-
-  <!-- Shortcut item used to call a number directly from search -->
-  <string name="search_shortcut_call_number">Call
-        <xliff:g id="number">%s</xliff:g>
-    </string>
-
   <!-- Shortcut item used to add a number directly to a new contact from search.
        [CHAR LIMIT=25] -->
   <string name="search_shortcut_create_new_contact">Create new contact</string>
@@ -325,18 +286,6 @@
   <!-- Shortcut item used to make a video call directly from search. [CHAR LIMIT=25] -->
   <string name="search_shortcut_make_video_call">Make video call</string>
 
-  <!-- Shortcut item used to block a number directly from search. [CHAR LIMIT=25] -->
-  <string name="search_shortcut_block_number">Block number</string>
-
-  <!-- Shown when there are no speed dial favorites. -->
-  <string name="speed_dial_empty">No one is on your speed dial yet</string>
-
-  <!-- Shown as an action when there are no speed dial favorites -->
-  <string name="speed_dial_empty_add_favorite_action">Add a favorite</string>
-
-  <!-- Remove button that shows up when contact is long-pressed. [CHAR LIMIT=NONE] -->
-  <string name="remove_contact">Remove</string>
-
   <!-- Select all text that shows up when in multi select mode. [CHAR LIMIT=NONE] -->
   <string name="select_all">Select all</string>
 
@@ -345,16 +294,6 @@
        [CHAR LIMIT=30] -->
   <string name="call_log_action_video_call">Video call</string>
 
-  <!-- Button text for the "Set up" video calling option displayed underneath an entry in the call log.
-       Tapping causes a the user to be taken to set up video calling.
-       [CHAR LIMIT=30] -->
-  <string name="call_log_action_set_up_video">Set up video calling</string>
-
-  <!-- Button text for the "Invite" option displayed underneath an entry in the call log.
-       Tapping causes a the user to be taken to the messaging app with a message ready to invite them to set up video calling.
-       [CHAR LIMIT=30] -->
-  <string name="call_log_action_invite_video">Invite to video call</string>
-
   <!-- Button text for a button displayed underneath an entry in the call log, which opens up a
        messaging app to send a SMS to the number represented by the call log entry.
        [CHAR LIMIT=30] -->
@@ -534,68 +473,6 @@
   <!-- Label for the voicemail settings section [CHAR LIMIT=30] -->
   <string name="voicemail_settings_label">Voicemail</string>
 
-  <!-- Label for a section describing that call blocking is temporarily disabled because an
-       emergency call was made. [CHAR LIMIT=50] -->
-  <string name="blocked_numbers_disabled_emergency_header_label">
-        Call blocking temporarily off
-    </string>
-
-  <!-- Description that call blocking is temporarily disabled because the user called an
-       emergency number, and explains that call blocking will be re-enabled after a buffer
-       period has passed. [CHAR LIMIT=NONE] -->
-  <string name="blocked_numbers_disabled_emergency_desc">
-        Call blocking has been disabled because you contacted emergency services from this phone
-        within the last 48 hours. It will be automatically reenabled once the 48 hour period
-        expires.
-    </string>
-
-  <!-- Label for fragment to import numbers from contacts marked as send to voicemail.
-       [CHAR_LIMIT=30] -->
-  <string name="import_send_to_voicemail_numbers_label">Import numbers</string>
-
-  <!-- Text informing the user they have previously marked contacts to be sent to voicemail.
-       This will be followed by two buttons, 1) to view who is marked to be sent to voicemail
-       and 2) importing these settings to Dialer's block list. [CHAR LIMIT=NONE] -->
-  <string name="blocked_call_settings_import_description">
-        You previously marked some callers to be automatically sent to voicemail via other apps.
-    </string>
-
-  <!-- Label for button to view numbers of contacts previous marked to be sent to voicemail.
-       [CHAR_LIMIT=20] -->
-  <string name="blocked_call_settings_view_numbers_button">View Numbers</string>
-
-  <!-- Label for button to import settings for sending contacts to voicemail into Dialer's block
-       list. [CHAR_LIMIT=20] -->
-  <string name="blocked_call_settings_import_button">Import</string>
-
-  <!-- String describing the delete icon on a blocked number list item.
-      When tapped, it will show a dialog confirming the unblocking of the number.
-      [CHAR LIMIT=NONE]-->
-  <string name="description_blocked_number_list_delete">Unblock number</string>
-
-  <!-- Button to bring up UI to add a number to the blocked call list. [CHAR LIMIT=40] -->
-  <string name="addBlockedNumber">Add number</string>
-
-  <!-- Footer message of number blocking screen with visual voicemail active.
-      [CHAR LIMIT=NONE] -->
-  <string name="block_number_footer_message_vvm">
-        Calls from these numbers will be blocked and voicemails will be automatically deleted.
-    </string>
-
-  <!-- Footer message of number blocking screen with no visual voicemail.
-       [CHAR LIMIT=NONE] -->
-  <string name="block_number_footer_message_no_vvm">
-         Calls from these numbers will be blocked, but they may still be able to leave you voicemails.
-    </string>
-
-  <!-- Heading for the block list in the "Spam and blocked cal)ls" settings. [CHAR LIMIT=64] -->
-  <string name="block_list">Blocked numbers</string>
-
-  <!-- Error message shown when user tries to add a number to the block list that was already
-      blocked. [CHAR LIMIT=64] -->
-  <string name="alreadyBlocked"><xliff:g example="(555) 555-5555" id="number">%1$s</xliff:g>
-        is already blocked.</string>
-
   <!-- Label for the phone account settings [CHAR LIMIT=30] -->
   <string name="phone_account_settings_label">Calling accounts</string>
 
@@ -608,18 +485,9 @@
   <!-- Internal key for DTMF tone length preference. -->
   <string name="dtmf_tone_length_preference_key" translatable="false">button_dtmf_settings</string>
 
-  <!-- Shown as a prompt to turn on the contacts permission to enable speed dial [CHAR LIMIT=NONE]-->
-  <string name="permission_no_speeddial">To enable speed dial, turn on the Contacts permission.</string>
-
   <!-- Shown as a prompt to turn on the phone permission to enable the call log [CHAR LIMIT=NONE]-->
   <string name="permission_no_calllog">To see your call log, turn on the Phone permission.</string>
 
-  <!-- Shown as a prompt to turn on contacts permissions to allow contact search [CHAR LIMIT=NONE]-->
-  <string name="permission_no_search">To search your contacts, turn on the Contacts permissions.</string>
-
-  <!-- Shown as a prompt to turn on the phone permission to allow a call to be placed [CHAR LIMIT=NONE]-->
-  <string name="permission_place_call">To place a call, turn on the Phone permission.</string>
-
   <!-- Shown as a message that notifies the user that the Phone app cannot write to system settings, which is why the system settings app is being launched directly instead. [CHAR LIMIT=NONE]-->
   <string name="toast_cannot_write_system_settings">Phone app does not have permission to write to system settings.</string>
 
@@ -648,74 +516,4 @@
 
   <!-- Label under the name of a spam number in the call log. [CHAR LIMIT=15] -->
   <string name="spam_number_call_log_label">Spam</string>
-
-  <!-- Shown as a message that notifies the user enriched calling isn't working -->
-  <string name="call_composer_connection_failed"><xliff:g id="name">%1$s</xliff:g> is offline and can\'t be reached</string>
-
-  <!-- Label for setting that shows more information about the Phone app [CHAR LIMIT=30] -->
-  <string name="about_phone_label">About</string>
-
-  <!-- Label indicating who provided the voicemail transcription [CHAR LIMIT=64] -->
-  <string name="voicemail_transcription_branding_text">Transcribed by Google</string>
-
-  <!-- Label indicating that a voicemail transcription is in progress [CHAR LIMIT=64] -->
-  <string name="voicemail_transcription_in_progress">Transcribing&#8230;</string>
-
-  <!-- Label indicating that a voicemail transcription failed [CHAR LIMIT=64] -->
-  <string name="voicemail_transcription_failed">Transcript not available.</string>
-
-  <!-- Label indicating that a voicemail transcription failed because it was in an
-       unsupported language [CHAR LIMIT=64] -->
-  <string name="voicemail_transcription_failed_language_not_supported">Transcript not available. Language not supported.</string>
-
-  <!-- Label indicating that a voicemail transcription failed because no speech was detected
-       [CHAR LIMIT=64] -->
-  <string name="voicemail_transcription_failed_no_speech">Transcript not available. No speech detected.</string>
-
-  <!-- Title of voicemail donation promo dialog
-      [CHAR LIMIT=64] -->
-  <string name="voicemail_donation_promo_title">Help improve transcription accuracy?</string>
-
-  <!-- Content of voicemail donation promo dialog
-       [CHAR LIMIT=NONE] -->
-  <string name="voicemail_donation_promo_content">
-    Let Google review this and future voicemail messages with transcripts.
-    They\'ll be stored anonymously. Change Settings any time. <xliff:g example="Learn more">%1$s</xliff:g>
-  </string>
-
-  <string translatable="false" name="voicemail_donation_promo_learn_more_url">https://support.google.com/phoneapp/answer/2811844?hl=en%26ref_topic=7539039</string>
-
-  <!-- Label for the voicemail donation promo dialog opt-in button
-       [CHAR LIMIT=20] -->
-  <string name="voicemail_donation_promo_opt_in">Yes, I\'m in</string>
-
-  <!-- Label for the voicemail donation promo dialog opt-out button
-       [CHAR LIMIT=20] -->
-  <string name="voicemail_donation_promo_opt_out">No thanks</string>
-
-  <!-- Prompt asking the user to rate the quality of the voicemail transcription
-       [CHAR LIMIT=30] -->
-  <string name="voicemail_transcription_rating">Rate transcription quality</string>
-
-  <!-- Message displayed after user has rated a voicemail transcription [CHAR LIMIT=30] -->
-  <string name="voicemail_transcription_rating_thanks">Thanks for your feedback</string>
-
-  <!-- Describes the thumbs up, 'good' transcription button. Read by TalkBack.
-      [CHAR LIMIT=NONE] -->
-  <string name="description_rating_good">Like</string>
-
-  <!-- Describes the thumbs down, 'bad' transcription button. Read by TalkBack.
-      [CHAR LIMIT=NONE] -->
-  <string name="description_rating_bad">Dislike</string>
-
-  <!-- Button text to prompt a user to open an sms conversation [CHAR LIMIT=NONE] -->
-  <string name="view_conversation">View</string>
-
-  <!-- If a user deletes a call that has attachments (photo, message, ect) bundled with it, they need
-        to be told that they need to go to the SMS app to delete the attachments. [CHAR LIMIT=NONE] -->
-  <string name="ec_data_deleted">Call deleted. View and delete attachments shared during this call in Messages.</string>
-
-  <!-- If a user deletes a call that has attachments (photo, message, ect) bundled with it, they need
-        to be told that they need to go to the SMS app to delete the attachments. [CHAR LIMIT=NONE] -->
-  <string name="multiple_ec_data_deleted">Calls deleted. View and delete attachments shared during calls in Messages.</string>
 </resources>
diff --git a/java/com/android/dialer/app/res/values/styles.xml b/java/com/android/dialer/app/res/values/styles.xml
index c2cad31..4316869 100644
--- a/java/com/android/dialer/app/res/values/styles.xml
+++ b/java/com/android/dialer/app/res/values/styles.xml
@@ -16,31 +16,25 @@
   -->
 <resources>
   <style name="DialtactsTheme" parent="Dialer.ThemeBase.ActionBar">
-    <!-- todo(calderwoodra): fill this in with dialpad theme and call log card theme -->
+    <item name="android:windowLightNavigationBar">true</item>
+    <item name="android:navigationBarColor">?android:attr/windowBackground</item>
+    <item name="android:navigationBarDividerColor">@null</item>
   </style>
 
-  <style name="DialpadTheme" parent="DialtactsTheme">
-    <item name="android:textColorPrimary">?android:attr/textColorPrimaryInverse</item>
-  </style>
-
-  <style name="ActionModeStyle" parent="Widget.AppCompat.ActionMode">
-    <item name="android:background">?android:attr/colorPrimary</item>
-    <item name="background">?android:attr/colorPrimary</item>
-    <item name="closeItemLayout">@layout/action_mode_close_button</item>
-  </style>
-
-  <style name="DialtactsSearchBarThemeOverlay" parent="ThemeOverlay.AppCompat.Light"/>
-
-  <!-- Text in the action bar at the top of the screen -->
-  <style name="DialtactsActionBarTitleText"
-    parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title">
-    <item name="android:textColor">?colorTextOnUnthemedDarkBackground</item>
+  <style name="TransparentTheme" parent="DialtactsTheme">
+    <item name="android:alertDialogTheme">@style/AlertDialogTheme</item>
+    <item name="android:windowBackground">@android:color/transparent</item>
+    <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
+    <item name="android:windowContentOverlay">@null</item>
+    <item name="android:windowIsTranslucent">true</item>
+    <item name="android:windowNoTitle">true</item>
+    <item name="android:windowIsFloating">true</item>
   </style>
 
   <!-- Text style for tabs. -->
   <style name="DialtactsActionBarTabTextStyle"
     parent="android:style/Widget.Material.Light.ActionBar.TabText">
-    <item name="android:textColor">?colorTextOnUnthemedDarkBackground</item>
+    <item name="android:textColor">@color/tab_text</item>
     <item name="android:textSize">@dimen/tab_text_size</item>
     <item name="android:fontFamily">"sans-serif-medium"</item>
   </style>
@@ -79,40 +73,6 @@
     <item name="android:importantForAccessibility">no</item>
   </style>
 
-  <style name="ManageBlockedNumbersStyle" parent="SettingsStyle">
-    <!-- Styles that require AppCompat compatibility, remember to update both sets -->
-    <item name="android:windowActionBarOverlay">true</item>
-    <item name="windowActionBarOverlay">true</item>
-    <item name="android:actionBarStyle">@style/ManageBlockedNumbersActionBarStyle</item>
-    <item name="android:fastScrollTrackDrawable">@null</item>
-  </style>
-
-  <style name="ManageBlockedNumbersActionBarStyle" parent="DialerActionBarBaseStyle">
-    <!-- Styles that require AppCompat compatibility, remember to update both sets -->
-    <item name="android:height">@dimen/action_bar_height</item>
-    <item name="height">@dimen/action_bar_height</item>
-
-    <!-- Styles that require AppCompat compatibility, remember to update both sets -->
-    <item name="android:displayOptions"></item>
-    <item name="displayOptions"></item>
-    <!-- Override ActionBar title offset to keep search box aligned left -->
-    <item name="android:contentInsetStart">0dp</item>
-    <item name="contentInsetStart">0dp</item>
-    <item name="android:contentInsetEnd">0dp</item>
-    <item name="contentInsetEnd">0dp</item>
-
-    <!-- Styles that require AppCompat compatibility, remember to update both sets -->
-    <item name="android:background">?android:attr/colorPrimary</item>
-    <item name="background">?android:attr/colorPrimary</item>
-    <item name="android:titleTextStyle">@style/DialtactsActionBarTitleText</item>
-    <item name="titleTextStyle">@style/DialtactsActionBarTitleText</item>
-    <item name="android:elevation">@dimen/action_bar_elevation</item>
-    <item name="elevation">@dimen/action_bar_elevation</item>
-    <!-- Empty icon -->
-    <item name="android:icon">@android:color/transparent</item>
-    <item name="icon">@android:color/transparent</item>
-  </style>
-
   <style name="VoicemailPlaybackLayoutButtonStyle">
     <item name="android:layout_width">56dp</item>
     <item name="android:layout_height">56dp</item>
@@ -135,36 +95,4 @@
     <item name="android:paddingStart">@dimen/button_horizontal_padding</item>
     <item name="android:textColor">@android:color/white</item>
   </style>
-
-  <style name="BlockedNumbersDescriptionTextStyle">
-    <item name="android:lineSpacingMultiplier">1.43</item>
-    <item name="android:paddingTop">8dp</item>
-    <item name="android:paddingBottom">8dp</item>
-    <item name="android:textSize">@dimen/blocked_number_settings_description_text_size</item>
-  </style>
-
-  <style name="FullWidthDivider">
-    <item name="android:layout_width">match_parent</item>
-    <item name="android:layout_height">1dp</item>
-    <item name="android:background">?android:attr/listDivider</item>
-  </style>
-
-  <style name="TranscriptionQualityRating" parent="Dialer.TextAppearance.Secondary">
-    <item name="android:textStyle">italic</item>
-    <item name="android:paddingRight">20dp</item>
-    <item name="android:minHeight">56dp</item>
-  </style>
-
-  <style name="TranscriptionQualityRatingIcon">
-    <item name="android:paddingTop">8dp</item>
-    <item name="android:paddingBottom">8dp</item>
-    <item name="android:paddingLeft">16dp</item>
-    <item name="android:paddingRight">16dp</item>
-    <item name="android:minHeight">56dp</item>
-  </style>
-
-  <style name="PromoLinkStyle">
-    <item name="android:textColor">?android:attr/colorPrimary</item>
-    <item name="android:fontFamily">"sans-serif-medium"</item>
-  </style>
 </resources>
diff --git a/java/com/android/dialer/app/res/xml/display_options_settings.xml b/java/com/android/dialer/app/res/xml/display_options_settings.xml
index f154122..0f424ea 100644
--- a/java/com/android/dialer/app/res/xml/display_options_settings.xml
+++ b/java/com/android/dialer/app/res/xml/display_options_settings.xml
@@ -16,7 +16,8 @@
   ~ limitations under the License
   -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
 
   <ListPreference
       android:dialogTitle="@string/display_options_sort_list_by"
@@ -25,7 +26,8 @@
       android:entries="@array/contact_sort_order_entries"
       android:entryValues="@array/contact_sort_order_values"
       android:title="@string/display_options_sort_list_by"
-      android:defaultValue="@string/display_options_sort_by_given_name_value"/>
+      android:defaultValue="@string/display_options_sort_by_given_name_value"
+      app:iconSpaceReserved="false"/>
 
   <ListPreference
       android:dialogTitle="@string/display_options_view_names_as"
@@ -34,6 +36,7 @@
       android:entries="@array/contact_display_order_entries"
       android:entryValues="@array/contact_display_order_values"
       android:title="@string/display_options_view_names_as"
-      android:defaultValue="@string/display_options_view_given_name_first_value"/>
+      android:defaultValue="@string/display_options_view_given_name_first_value"
+      app:iconSpaceReserved="false"/>
 
 </PreferenceScreen>
diff --git a/java/com/android/dialer/app/res/xml/file_paths.xml b/java/com/android/dialer/app/res/xml/file_paths.xml
index 0dd41a0..b43f450 100644
--- a/java/com/android/dialer/app/res/xml/file_paths.xml
+++ b/java/com/android/dialer/app/res/xml/file_paths.xml
@@ -22,4 +22,8 @@
   <files-path
     name="voicemails"
     path="voicemails/"/>
+  <!-- Offer access to saved call recordings -->
+  <external-path
+    name="recordings"
+    path="CallRecordings/"/>
 </paths>
diff --git a/java/com/android/dialer/app/res/xml/sound_settings.xml b/java/com/android/dialer/app/res/xml/sound_settings.xml
index d9afb74..86f9284 100644
--- a/java/com/android/dialer/app/res/xml/sound_settings.xml
+++ b/java/com/android/dialer/app/res/xml/sound_settings.xml
@@ -2,6 +2,7 @@
 
 <!--
   ~ Copyright (C) 2014 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -16,31 +17,80 @@
   ~ limitations under the License
   -->
 
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
 
-  <com.android.dialer.app.settings.DefaultRingtonePreference
-    android:dialogTitle="@string/ringtone_title"
-    android:key="@string/ringtone_preference_key"
-    android:persistent="false"
-    android:ringtoneType="ringtone"
-    android:title="@string/ringtone_title"/>
+    <com.android.dialer.app.settings.DefaultRingtonePreference
+        android:dialogTitle="@string/ringtone_title"
+        android:key="@string/ringtone_preference_key"
+        android:persistent="false"
+        android:ringtoneType="ringtone"
+        android:title="@string/ringtone_title"
+        android:summary="&#x20;"
+        app:iconSpaceReserved="false" />
 
-  <SwitchPreference
-    android:defaultValue="false"
-    android:key="@string/vibrate_on_preference_key"
-    android:persistent="false"
-    android:title="@string/vibrate_on_ring_title"/>
+    <SwitchPreferenceCompat
+        android:defaultValue="false"
+        android:key="@string/vibrate_on_preference_key"
+        android:persistent="false"
+        android:title="@string/vibrate_on_ring_title" />
 
-  <SwitchPreference
-    android:defaultValue="true"
-    android:key="@string/play_dtmf_preference_key"
-    android:persistent="false"
-    android:title="@string/dtmf_tone_enable_title"/>
+    <SwitchPreferenceCompat
+        android:defaultValue="true"
+        android:key="@string/play_dtmf_preference_key"
+        android:persistent="false"
+        android:title="@string/dtmf_tone_enable_title" />
 
-  <ListPreference
-    android:entries="@array/dtmf_tone_length_entries"
-    android:entryValues="@array/dtmf_tone_length_entry_values"
-    android:key="@string/dtmf_tone_length_preference_key"
-    android:title="@string/dtmf_tone_length_title"/>
+    <ListPreference
+        android:entries="@array/dtmf_tone_length_entries"
+        android:entryValues="@array/dtmf_tone_length_entry_values"
+        android:key="@string/dtmf_tone_length_preference_key"
+        android:title="@string/dtmf_tone_length_title"
+        app:iconSpaceReserved="false" />
+
+    <PreferenceCategory
+        android:key="@string/incall_category_key"
+        android:title="@string/incall_category_title"
+        app:iconSpaceReserved="false">
+
+        <SwitchPreferenceCompat
+            android:defaultValue="false"
+            android:key="incall_enable_dnd"
+            android:title="@string/incall_enable_dnd_title" />
+
+        <SwitchPreferenceCompat
+            android:key="@string/incall_vibrate_outgoing_key"
+            android:title="@string/incall_vibrate_outgoing_title" />
+
+        <SwitchPreferenceCompat
+            android:key="@string/incall_vibrate_call_waiting_key"
+            android:title="@string/incall_vibrate_call_waiting_title" />
+
+        <SwitchPreferenceCompat
+            android:key="@string/incall_vibrate_hangup_key"
+            android:title="@string/incall_vibrate_hangup_title" />
+
+        <SwitchPreferenceCompat
+            android:key="@string/incall_vibrate_45_key"
+            android:summary="@string/incall_vibrate_45_summary"
+            android:title="@string/incall_vibrate_45_title" />
+
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="@string/call_recording_category_key"
+        android:title="@string/call_recording_category_title"
+        app:iconSpaceReserved="false">
+
+        <ListPreference
+            android:defaultValue="0"
+            android:entries="@array/call_recording_encoder_entries"
+            android:entryValues="@array/call_recording_encoder_values"
+            android:key="@string/call_recording_format_key"
+            android:summary="%s"
+            android:title="@string/call_recording_format"
+            app:iconSpaceReserved="false" />
+
+    </PreferenceCategory>
 
 </PreferenceScreen>
diff --git a/java/com/android/dialer/app/settings/AppCompatPreferenceActivity.java b/java/com/android/dialer/app/settings/AppCompatPreferenceActivity.java
deleted file mode 100644
index b2cb03e..0000000
--- a/java/com/android/dialer/app/settings/AppCompatPreferenceActivity.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.app.settings;
-
-import android.content.res.Configuration;
-import android.os.Bundle;
-import android.preference.PreferenceActivity;
-import android.support.v7.app.AppCompatDelegate;
-import android.support.v7.widget.Toolbar;
-import android.view.MenuInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-/**
- * A {@link android.preference.PreferenceActivity} which implements and proxies the necessary calls
- * to be used with AppCompat.
- */
-public class AppCompatPreferenceActivity extends PreferenceActivity {
-
-  private AppCompatDelegate delegate;
-
-  private boolean isSafeToCommitTransactions;
-
-  @Override
-  protected void onCreate(Bundle savedInstanceState) {
-    getDelegate().installViewFactory();
-    getDelegate().onCreate(savedInstanceState);
-    super.onCreate(savedInstanceState);
-    isSafeToCommitTransactions = true;
-  }
-
-  @Override
-  protected void onPostCreate(Bundle savedInstanceState) {
-    super.onPostCreate(savedInstanceState);
-    getDelegate().onPostCreate(savedInstanceState);
-  }
-
-  public void setSupportActionBar(Toolbar toolbar) {
-    getDelegate().setSupportActionBar(toolbar);
-  }
-
-  @Override
-  public MenuInflater getMenuInflater() {
-    return getDelegate().getMenuInflater();
-  }
-
-  @Override
-  public void setContentView(int layoutResID) {
-    getDelegate().setContentView(layoutResID);
-  }
-
-  @Override
-  public void setContentView(View view) {
-    getDelegate().setContentView(view);
-  }
-
-  @Override
-  public void setContentView(View view, ViewGroup.LayoutParams params) {
-    getDelegate().setContentView(view, params);
-  }
-
-  @Override
-  public void addContentView(View view, ViewGroup.LayoutParams params) {
-    getDelegate().addContentView(view, params);
-  }
-
-  @Override
-  protected void onPostResume() {
-    super.onPostResume();
-    getDelegate().onPostResume();
-  }
-
-  @Override
-  protected void onTitleChanged(CharSequence title, int color) {
-    super.onTitleChanged(title, color);
-    getDelegate().setTitle(title);
-  }
-
-  @Override
-  public void onConfigurationChanged(Configuration newConfig) {
-    super.onConfigurationChanged(newConfig);
-    getDelegate().onConfigurationChanged(newConfig);
-  }
-
-  @Override
-  protected void onStop() {
-    super.onStop();
-    getDelegate().onStop();
-  }
-
-  @Override
-  protected void onDestroy() {
-    super.onDestroy();
-    getDelegate().onDestroy();
-  }
-
-  @Override
-  public void invalidateOptionsMenu() {
-    getDelegate().invalidateOptionsMenu();
-  }
-
-  private AppCompatDelegate getDelegate() {
-    if (delegate == null) {
-      delegate = AppCompatDelegate.create(this, null);
-    }
-    return delegate;
-  }
-
-  @Override
-  protected void onStart() {
-    super.onStart();
-    isSafeToCommitTransactions = true;
-  }
-
-  @Override
-  protected void onResume() {
-    super.onResume();
-    isSafeToCommitTransactions = true;
-  }
-
-  @Override
-  protected void onSaveInstanceState(Bundle outState) {
-    super.onSaveInstanceState(outState);
-    isSafeToCommitTransactions = false;
-  }
-
-  /**
-   * Returns true if it is safe to commit {@link FragmentTransaction}s at this time, based on
-   * whether {@link Activity#onSaveInstanceState} has been called or not.
-   *
-   * <p>Make sure that the current activity calls into {@link super.onSaveInstanceState(Bundle
-   * outState)} (if that method is overridden), so the flag is properly set.
-   */
-  public boolean isSafeToCommitTransactions() {
-    return isSafeToCommitTransactions;
-  }
-}
diff --git a/java/com/android/dialer/app/settings/DefaultRingtonePreference.java b/java/com/android/dialer/app/settings/DefaultRingtonePreference.java
index 579584e..409eea3 100644
--- a/java/com/android/dialer/app/settings/DefaultRingtonePreference.java
+++ b/java/com/android/dialer/app/settings/DefaultRingtonePreference.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,31 +21,37 @@
 import android.content.Intent;
 import android.media.RingtoneManager;
 import android.net.Uri;
-import android.preference.RingtonePreference;
 import android.provider.Settings;
 import android.util.AttributeSet;
 import android.widget.Toast;
-import com.android.dialer.app.R;
+
+import androidx.preference.Preference;
+
+import com.android.dialer.R;
 
 /** RingtonePreference which doesn't show default ringtone setting. */
-public class DefaultRingtonePreference extends RingtonePreference {
+public class DefaultRingtonePreference extends Preference {
+
+  private final Intent mRingtonePickerIntent;
 
   public DefaultRingtonePreference(Context context, AttributeSet attrs) {
     super(context, attrs);
+
+    mRingtonePickerIntent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
+    mRingtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, getRingtoneType());
+    mRingtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
+    mRingtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
+    mRingtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI,
+            Settings.System.DEFAULT_NOTIFICATION_URI);
+    mRingtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getTitle());
   }
 
-  @Override
-  protected void onPrepareRingtonePickerIntent(Intent ringtonePickerIntent) {
-    super.onPrepareRingtonePickerIntent(ringtonePickerIntent);
-
-    /*
-     * Since this preference is for choosing the default ringtone, it
-     * doesn't make sense to show a 'Default' item.
-     */
-    ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
+  public Intent getRingtonePickerIntent() {
+    mRingtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI,
+            onRestoreRingtone());
+    return mRingtonePickerIntent;
   }
 
-  @Override
   protected void onSaveRingtone(Uri ringtoneUri) {
     if (!Settings.System.canWrite(getContext())) {
       Toast.makeText(
@@ -57,8 +64,11 @@
     RingtoneManager.setActualDefaultRingtoneUri(getContext(), getRingtoneType(), ringtoneUri);
   }
 
-  @Override
   protected Uri onRestoreRingtone() {
     return RingtoneManager.getActualDefaultRingtoneUri(getContext(), getRingtoneType());
   }
+
+  private int getRingtoneType() {
+    return RingtoneManager.TYPE_RINGTONE;
+  }
 }
diff --git a/java/com/android/dialer/app/settings/DialerSettingsActivity.java b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
index d9bcd6b..b4e1782 100644
--- a/java/com/android/dialer/app/settings/DialerSettingsActivity.java
+++ b/java/com/android/dialer/app/settings/DialerSettingsActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,44 +16,42 @@
  */
 package com.android.dialer.app.settings;
 
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.UserManager;
-import android.preference.PreferenceManager;
+import android.provider.BlockedNumberContract;
 import android.provider.Settings;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
-import android.view.MenuItem;
 import android.widget.Toast;
-import com.android.dialer.about.AboutPhoneFragment;
-import com.android.dialer.app.R;
-import com.android.dialer.assisteddialing.ConcreteCreator;
-import com.android.dialer.blocking.FilteredNumberCompat;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.proguard.UsedByReflection;
+import com.android.dialer.lookup.LookupSettingsFragment;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.voicemail.settings.VoicemailSettingsFragment;
 import com.android.voicemail.VoicemailClient;
-import java.util.List;
 
 /** Activity for dialer settings. */
-@SuppressWarnings("FragmentInjection") // Activity not exported
-@UsedByReflection(value = "AndroidManifest-app.xml")
-public class DialerSettingsActivity extends AppCompatPreferenceActivity {
+public class DialerSettingsActivity extends AppCompatActivity implements
+        PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
 
   protected SharedPreferences preferences;
-  private boolean migrationStatusOnBuildHeaders;
-  private List<Header> headers;
 
   @Override
   protected void onCreate(Bundle savedInstanceState) {
@@ -60,270 +59,250 @@
     super.onCreate(savedInstanceState);
     preferences = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());
 
+    setContentView(R.layout.activity_settings);
+
     Intent intent = getIntent();
     Uri data = intent.getData();
+
+    String initialFragment = null;
     if (data != null) {
       String headerToOpen = data.getSchemeSpecificPart();
-      if (headerToOpen != null && headers != null) {
-        for (Header header : headers) {
-          if (headerToOpen.equals(header.fragment)) {
-            LogUtil.i("DialerSettingsActivity.onCreate", "switching to header: " + headerToOpen);
-            switchToHeader(header);
-            break;
-          }
-        }
+      if (headerToOpen != null) {
+        initialFragment = headerToOpen;
       }
     }
+
+    // If savedInstanceState is non-null, then the activity is being
+    // recreated and super.onCreate() has already recreated the fragment.
+    if (savedInstanceState == null) {
+      if (initialFragment == null) {
+        initialFragment = PrefsFragment.class.getName();
+      }
+      Fragment fragment;
+      try {
+        fragment = getSupportFragmentManager()
+                .getFragmentFactory()
+                .instantiate(getClassLoader(), initialFragment);
+      } catch (Exception ignored) {
+        fragment = new PrefsFragment();
+      }
+
+      getSupportFragmentManager().beginTransaction()
+              .replace(R.id.content_frame, fragment)
+              .commit();
+    }
+
+    getSupportFragmentManager().addOnBackStackChangedListener(() -> {
+      if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
+        setTitle(R.string.dialer_settings_label);
+      }
+    });
   }
 
   @Override
-  protected void onResume() {
-    super.onResume();
-    /*
-     * The blockedCallsHeader need to be recreated if the migration status changed because
-     * the intent needs to be updated.
+  public boolean onPreferenceStartFragment(@NonNull PreferenceFragmentCompat caller,
+                                           @NonNull Preference pref) {
+    Fragment fragment = getSupportFragmentManager()
+            .getFragmentFactory()
+            .instantiate(getClassLoader(), pref.getFragment());
+    fragment.setArguments(pref.getExtras());
+    getSupportFragmentManager().beginTransaction()
+            .replace(R.id.content_frame, fragment, "")
+            .addToBackStack(null)
+            .commit();
+    setTitle(pref.getTitle());
+    return true;
+  }
+
+  public static class PrefsFragment extends PreferenceFragmentCompat implements
+          Preference.OnPreferenceClickListener {
+
+    @Override
+    public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
+      setPreferenceScreen(getPreferenceManager().createPreferenceScreen(requireContext()));
+
+      if (showDisplayOptions()) {
+        Preference displayOptions = new Preference(getContext());
+        displayOptions.setTitle(R.string.display_options_title);
+        displayOptions.setFragment(DisplayOptionsSettingsFragment.class.getName());
+        displayOptions.setIconSpaceReserved(false);
+        getPreferenceScreen().addPreference(displayOptions);
+      }
+
+      Preference soundSettings = new Preference(getContext());
+      soundSettings.setTitle(R.string.sounds_and_vibration_title);
+      soundSettings.setFragment(SoundSettingsFragment.class.getName());
+      soundSettings.setViewId(R.id.settings_header_sounds_and_vibration);
+      soundSettings.setIconSpaceReserved(false);
+      getPreferenceScreen().addPreference(soundSettings);
+
+      Preference quickResponseSettings = new Preference(getContext());
+      Intent quickResponseSettingsIntent =
+              new Intent(TelecomManager.ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS);
+      quickResponseSettings.setTitle(R.string.respond_via_sms_setting_title);
+      quickResponseSettings.setIntent(quickResponseSettingsIntent);
+      quickResponseSettings.setIconSpaceReserved(false);
+      getPreferenceScreen().addPreference(quickResponseSettings);
+
+      final Preference lookupSettings = new Preference(getContext());
+      lookupSettings.setTitle(R.string.lookup_settings_label);
+      lookupSettings.setFragment(LookupSettingsFragment.class.getName());
+      lookupSettings.setIconSpaceReserved(false);
+      getPreferenceScreen().addPreference(lookupSettings);
+
+      TelephonyManager telephonyManager = getContext().getSystemService(TelephonyManager.class);
+      TelecomManager telecomManager = (TelecomManager) getContext().getSystemService(
+              Context.TELECOM_SERVICE);
+
+      // "Call Settings" (full settings) is shown if the current user is primary user and there
+      // is only one SIM. Otherwise, "Calling accounts" is shown.
+      boolean isPrimaryUser = isPrimaryUser();
+      if (isPrimaryUser && TelephonyManagerCompat.getPhoneCount(telephonyManager) <= 1) {
+        Preference callSettings = new Preference(getContext());
+        Intent callSettingsIntent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);
+        callSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+
+        callSettings.setTitle(R.string.call_settings_label);
+        callSettings.setIntent(callSettingsIntent);
+        callSettings.setIconSpaceReserved(false);
+        getPreferenceScreen().addPreference(callSettings);
+      } else {
+        Preference phoneAccountSettings = new Preference(getContext());
+        Intent phoneAccountSettingsIntent = new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS);
+        phoneAccountSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+
+        phoneAccountSettings.setTitle(R.string.phone_account_settings_label);
+        phoneAccountSettings.setIntent(phoneAccountSettingsIntent);
+        phoneAccountSettings.setIconSpaceReserved(false);
+        getPreferenceScreen().addPreference(phoneAccountSettings);
+      }
+      if (BlockedNumberContract.canCurrentUserBlockNumbers(getContext())) {
+        Preference blockedCalls = new Preference(getContext());
+        blockedCalls.setTitle(R.string.manage_blocked_numbers_label);
+        blockedCalls.setIntent(getContext().getSystemService(TelecomManager.class)
+                .createManageBlockedNumbersIntent());
+        blockedCalls.setIconSpaceReserved(false);
+        getPreferenceScreen().addPreference(blockedCalls);
+      }
+
+      addVoicemailSettings(isPrimaryUser);
+
+      if (isPrimaryUser
+              && (TelephonyManagerCompat.isTtyModeSupported(telecomManager)
+              || TelephonyManagerCompat.isHearingAidCompatibilitySupported(telephonyManager))) {
+        Preference accessibilitySettings = new Preference(getContext());
+        Intent accessibilitySettingsIntent =
+                new Intent(TelecomManager.ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS);
+        accessibilitySettings.setTitle(R.string.accessibility_settings_title);
+        accessibilitySettings.setIntent(accessibilitySettingsIntent);
+        accessibilitySettings.setIconSpaceReserved(false);
+        getPreferenceScreen().addPreference(accessibilitySettings);
+      }
+    }
+
+    @Override
+    public boolean onPreferenceClick(@NonNull Preference preference) {
+      if (preference.getTitle().equals(getString(R.string.sounds_and_vibration_title))) {
+        // If we don't have the permission to write to system settings, go to system sound
+        // settings instead. Otherwise, perform the super implementation (which launches our
+        // own preference fragment.
+        if (!Settings.System.canWrite(getContext())) {
+          Toast.makeText(getContext(),
+                          getResources().getString(R.string.toast_cannot_write_system_settings),
+                          Toast.LENGTH_SHORT)
+                  .show();
+          startActivity(new Intent(Settings.ACTION_SOUND_SETTINGS));
+          return true;
+        }
+      }
+      super.onPreferenceTreeClick(preference);
+      return false;
+    }
+
+    private void addVoicemailSettings(boolean isPrimaryUser) {
+      if (!isPrimaryUser) {
+        LogUtil.i("DialerSettingsActivity.addVoicemailSettings", "user not primary user");
+        return;
+      }
+
+      if (!PermissionsUtil.hasReadPhoneStatePermissions(getContext())) {
+        LogUtil.i("DialerSettingsActivity.addVoicemailSettings", "Missing READ_PHONE_STATE");
+        return;
+      }
+
+      LogUtil.i("DialerSettingsActivity.addVoicemailSettings", "adding voicemail settings");
+      Preference voicemailSettings = new Preference(getContext());
+      voicemailSettings.setTitle(R.string.voicemail_settings_label);
+      Bundle bundle = new Bundle();
+      PhoneAccountHandle soleAccount = getSoleSimAccount();
+      if (soleAccount == null) {
+        LogUtil.i("DialerSettingsActivity.addVoicemailSettings",
+                "showing multi-SIM voicemail settings");
+        voicemailSettings.setFragment(PhoneAccountSelectionFragment.class.getName());
+        bundle.putString(
+                PhoneAccountSelectionFragment.PARAM_TARGET_FRAGMENT,
+                VoicemailSettingsFragment.class.getName());
+        bundle.putString(
+                PhoneAccountSelectionFragment.PARAM_PHONE_ACCOUNT_HANDLE_KEY,
+                VoicemailClient.PARAM_PHONE_ACCOUNT_HANDLE);
+        bundle.putBundle(PhoneAccountSelectionFragment.PARAM_ARGUMENTS, new Bundle());
+        bundle.putInt(PhoneAccountSelectionFragment.PARAM_TARGET_TITLE_RES,
+                R.string.voicemail_settings_label);
+      } else {
+        LogUtil.i("DialerSettingsActivity.addVoicemailSettings",
+                "showing single-SIM voicemail settings");
+        voicemailSettings.setFragment(VoicemailSettingsFragment.class.getName());
+        bundle.putParcelable(VoicemailClient.PARAM_PHONE_ACCOUNT_HANDLE, soleAccount);
+      }
+      voicemailSettings.getExtras().putAll(bundle);
+      voicemailSettings.setIconSpaceReserved(false);
+      getPreferenceScreen().addPreference(voicemailSettings);
+    }
+
+    /**
+     * @return the only SIM phone account, or {@code null} if there are none or more than one. Note:
+     * having a empty SIM slot still count as a PhoneAccountHandle that is "invalid", and
+     * voicemail settings should still be available for it.
      */
-    if (migrationStatusOnBuildHeaders != FilteredNumberCompat.hasMigratedToNewBlocking(this)) {
-      invalidateHeaders();
-    }
-  }
-
-  @Override
-  public void onBuildHeaders(List<Header> target) {
-    // Keep a reference to the list of headers (since PreferenceActivity.getHeaders() is @Hide)
-    headers = target;
-
-    if (showDisplayOptions()) {
-      Header displayOptionsHeader = new Header();
-      displayOptionsHeader.titleRes = R.string.display_options_title;
-      displayOptionsHeader.fragment = DisplayOptionsSettingsFragment.class.getName();
-      target.add(displayOptionsHeader);
-    }
-
-    Header soundSettingsHeader = new Header();
-    soundSettingsHeader.titleRes = R.string.sounds_and_vibration_title;
-    soundSettingsHeader.id = R.id.settings_header_sounds_and_vibration;
-    target.add(soundSettingsHeader);
-
-    Header quickResponseSettingsHeader = new Header();
-    Intent quickResponseSettingsIntent =
-        new Intent(TelecomManager.ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS);
-    quickResponseSettingsHeader.titleRes = R.string.respond_via_sms_setting_title;
-    quickResponseSettingsHeader.intent = quickResponseSettingsIntent;
-    target.add(quickResponseSettingsHeader);
-
-    TelephonyManager telephonyManager =
-        (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
-
-    // "Call Settings" (full settings) is shown if the current user is primary user and there
-    // is only one SIM. Otherwise, "Calling accounts" is shown.
-    boolean isPrimaryUser = isPrimaryUser();
-    if (isPrimaryUser && TelephonyManagerCompat.getPhoneCount(telephonyManager) <= 1) {
-      Header callSettingsHeader = new Header();
-      Intent callSettingsIntent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);
-      callSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-
-      callSettingsHeader.titleRes = R.string.call_settings_label;
-      callSettingsHeader.intent = callSettingsIntent;
-      target.add(callSettingsHeader);
-    } else {
-      Header phoneAccountSettingsHeader = new Header();
-      Intent phoneAccountSettingsIntent = new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS);
-      phoneAccountSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-
-      phoneAccountSettingsHeader.titleRes = R.string.phone_account_settings_label;
-      phoneAccountSettingsHeader.intent = phoneAccountSettingsIntent;
-      target.add(phoneAccountSettingsHeader);
-    }
-    if (FilteredNumberCompat.canCurrentUserOpenBlockSettings(this)) {
-      Header blockedCallsHeader = new Header();
-      blockedCallsHeader.titleRes = R.string.manage_blocked_numbers_label;
-      blockedCallsHeader.intent = FilteredNumberCompat.createManageBlockedNumbersIntent(this);
-      target.add(blockedCallsHeader);
-      migrationStatusOnBuildHeaders = FilteredNumberCompat.hasMigratedToNewBlocking(this);
-    }
-
-    addVoicemailSettings(target, isPrimaryUser);
-
-    if (isPrimaryUser
-        && (TelephonyManagerCompat.isTtyModeSupported(telephonyManager)
-            || TelephonyManagerCompat.isHearingAidCompatibilitySupported(telephonyManager))) {
-      Header accessibilitySettingsHeader = new Header();
-      Intent accessibilitySettingsIntent =
-          new Intent(TelecomManager.ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS);
-      accessibilitySettingsHeader.titleRes = R.string.accessibility_settings_title;
-      accessibilitySettingsHeader.intent = accessibilitySettingsIntent;
-      target.add(accessibilitySettingsHeader);
-    }
-
-    boolean isAssistedDialingEnabled =
-        ConcreteCreator.isAssistedDialingEnabled(
-            ConfigProviderComponent.get(getApplicationContext()).getConfigProvider());
-    LogUtil.i(
-        "DialerSettingsActivity.onBuildHeaders",
-        "showing assisted dialing header: " + isAssistedDialingEnabled);
-    if (isAssistedDialingEnabled) {
-
-      Header assistedDialingSettingsHeader = new Header();
-      assistedDialingSettingsHeader.titleRes =
-          com.android.dialer.assisteddialing.ui.R.string.assisted_dialing_setting_title;
-      assistedDialingSettingsHeader.intent =
-          new Intent("com.android.dialer.app.settings.SHOW_ASSISTED_DIALING_SETTINGS");
-      target.add(assistedDialingSettingsHeader);
-    }
-
-    if (showAbout()) {
-      Header aboutPhoneHeader = new Header();
-      aboutPhoneHeader.titleRes = R.string.about_phone_label;
-      aboutPhoneHeader.fragment = AboutPhoneFragment.class.getName();
-      target.add(aboutPhoneHeader);
-    }
-  }
-
-  private void addVoicemailSettings(List<Header> target, boolean isPrimaryUser) {
-    if (!isPrimaryUser) {
-      LogUtil.i("DialerSettingsActivity.addVoicemailSettings", "user not primary user");
-      return;
-    }
-    if (VERSION.SDK_INT < VERSION_CODES.O) {
-      LogUtil.i(
-          "DialerSettingsActivity.addVoicemailSettings",
-          "Dialer voicemail settings not supported by system");
-      return;
-    }
-
-    if (!PermissionsUtil.hasReadPhoneStatePermissions(this)) {
-      LogUtil.i("DialerSettingsActivity.addVoicemailSettings", "Missing READ_PHONE_STATE");
-      return;
-    }
-
-    LogUtil.i("DialerSettingsActivity.addVoicemailSettings", "adding voicemail settings");
-    Header voicemailSettings = new Header();
-    voicemailSettings.titleRes = R.string.voicemail_settings_label;
-    PhoneAccountHandle soleAccount = getSoleSimAccount();
-    if (soleAccount == null) {
-      LogUtil.i(
-          "DialerSettingsActivity.addVoicemailSettings", "showing multi-SIM voicemail settings");
-      voicemailSettings.fragment = PhoneAccountSelectionFragment.class.getName();
-      Bundle bundle = new Bundle();
-      bundle.putString(
-          PhoneAccountSelectionFragment.PARAM_TARGET_FRAGMENT,
-          VoicemailSettingsFragment.class.getName());
-      bundle.putString(
-          PhoneAccountSelectionFragment.PARAM_PHONE_ACCOUNT_HANDLE_KEY,
-          VoicemailClient.PARAM_PHONE_ACCOUNT_HANDLE);
-      bundle.putBundle(PhoneAccountSelectionFragment.PARAM_ARGUMENTS, new Bundle());
-      bundle.putInt(
-          PhoneAccountSelectionFragment.PARAM_TARGET_TITLE_RES, R.string.voicemail_settings_label);
-      voicemailSettings.fragmentArguments = bundle;
-      target.add(voicemailSettings);
-    } else {
-      LogUtil.i(
-          "DialerSettingsActivity.addVoicemailSettings", "showing single-SIM voicemail settings");
-      voicemailSettings.fragment = VoicemailSettingsFragment.class.getName();
-      Bundle bundle = new Bundle();
-      bundle.putParcelable(VoicemailClient.PARAM_PHONE_ACCOUNT_HANDLE, soleAccount);
-      voicemailSettings.fragmentArguments = bundle;
-      target.add(voicemailSettings);
-    }
-  }
-
-  /**
-   * @return the only SIM phone account, or {@code null} if there are none or more than one. Note:
-   *     having a empty SIM slot still count as a PhoneAccountHandle that is "invalid", and
-   *     voicemail settings should still be available for it.
-   */
-  @Nullable
-  private PhoneAccountHandle getSoleSimAccount() {
-    TelecomManager telecomManager = getSystemService(TelecomManager.class);
-    PhoneAccountHandle result = null;
-    for (PhoneAccountHandle phoneAccountHandle : telecomManager.getCallCapablePhoneAccounts()) {
-      PhoneAccount phoneAccount = telecomManager.getPhoneAccount(phoneAccountHandle);
-      if (phoneAccount == null) {
-        continue;
-      }
-      if (phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
-        LogUtil.i(
-            "DialerSettingsActivity.getSoleSimAccount", phoneAccountHandle + " is a SIM account");
-        if (result != null) {
-          return null;
+    @SuppressLint("MissingPermission")
+    @Nullable
+    private PhoneAccountHandle getSoleSimAccount() {
+      TelecomManager telecomManager = requireContext().getSystemService(TelecomManager.class);
+      PhoneAccountHandle result = null;
+      for (PhoneAccountHandle phoneAccountHandle : telecomManager.getCallCapablePhoneAccounts()) {
+        PhoneAccount phoneAccount = telecomManager.getPhoneAccount(phoneAccountHandle);
+        if (phoneAccount == null) {
+          continue;
         }
-        result = phoneAccountHandle;
+        if (phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
+          LogUtil.i("DialerSettingsActivity.getSoleSimAccount",
+                  phoneAccountHandle + " is a SIM account");
+          if (result != null) {
+            return null;
+          }
+          result = phoneAccountHandle;
+        }
       }
-    }
-    return result;
-  }
-
-  /** Whether "about" should be shown in settings. Override to hide about. */
-  public boolean showAbout() {
-    return true;
-  }
-
-  /**
-   * Returns {@code true} or {@code false} based on whether the display options setting should be
-   * shown. For languages such as Chinese, Japanese, or Korean, display options aren't useful since
-   * contacts are sorted and displayed family name first by default.
-   *
-   * @return {@code true} if the display options should be shown, {@code false} otherwise.
-   */
-  private boolean showDisplayOptions() {
-    return getResources().getBoolean(R.bool.config_display_order_user_changeable)
-        && getResources().getBoolean(R.bool.config_sort_order_user_changeable);
-  }
-
-  /**
-   * For the "sounds and vibration" setting, we go directly to the system sound settings fragment.
-   * This helps since:
-   * <li>We don't need a separate Dialer sounds and vibrations fragment, as everything we need is
-   *     present in the system sounds fragment.
-   * <li>OEM's e.g Moto that support dual sim ring-tones no longer need to update the dialer sound
-   *     and settings fragment.
-   *
-   *     <p>For all other settings, we launch our our preferences fragment.
-   */
-  @Override
-  public void onHeaderClick(Header header, int position) {
-    if (header.id == R.id.settings_header_sounds_and_vibration) {
-
-      if (!Settings.System.canWrite(this)) {
-        Toast.makeText(
-                this,
-                getResources().getString(R.string.toast_cannot_write_system_settings),
-                Toast.LENGTH_SHORT)
-            .show();
-      }
-
-      startActivity(new Intent(Settings.ACTION_SOUND_SETTINGS));
-      return;
+      return result;
     }
 
-    super.onHeaderClick(header, position);
-  }
-
-  @Override
-  public boolean onOptionsItemSelected(MenuItem item) {
-    if (item.getItemId() == android.R.id.home) {
-      onBackPressed();
-      return true;
+    /**
+     * Returns {@code true} or {@code false} based on whether the display options setting should be
+     * shown. For languages such as Chinese, Japanese, or Korean, display options aren't useful
+     * since contacts are sorted and displayed family name first by default.
+     *
+     * @return {@code true} if the display options should be shown, {@code false} otherwise.
+     */
+    private boolean showDisplayOptions() {
+      return getResources().getBoolean(R.bool.config_display_order_user_changeable)
+              && getResources().getBoolean(R.bool.config_sort_order_user_changeable);
     }
-    return false;
-  }
 
-  @Override
-  public void onBackPressed() {
-    if (!isSafeToCommitTransactions()) {
-      return;
+    /**
+     * @return Whether the current user is the primary user.
+     */
+    private boolean isPrimaryUser() {
+      return requireContext().getSystemService(UserManager.class).isSystemUser();
     }
-    super.onBackPressed();
-  }
-
-  @Override
-  protected boolean isValidFragment(String fragmentName) {
-    return true;
-  }
-
-  /** @return Whether the current user is the primary user. */
-  private boolean isPrimaryUser() {
-    return getSystemService(UserManager.class).isSystemUser();
   }
 }
diff --git a/java/com/android/dialer/app/settings/DisplayOptionsSettingsFragment.java b/java/com/android/dialer/app/settings/DisplayOptionsSettingsFragment.java
index bf1637f..93853ae 100644
--- a/java/com/android/dialer/app/settings/DisplayOptionsSettingsFragment.java
+++ b/java/com/android/dialer/app/settings/DisplayOptionsSettingsFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,14 +18,16 @@
 package com.android.dialer.app.settings;
 
 import android.os.Bundle;
-import android.preference.PreferenceFragment;
-import com.android.dialer.app.R;
 
-public class DisplayOptionsSettingsFragment extends PreferenceFragment {
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.android.dialer.R;
+
+public class DisplayOptionsSettingsFragment extends PreferenceFragmentCompat {
 
   @Override
-  public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
+  public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
     addPreferencesFromResource(R.xml.display_options_settings);
   }
 }
diff --git a/java/com/android/dialer/app/settings/PhoneAccountSelectionFragment.java b/java/com/android/dialer/app/settings/PhoneAccountSelectionFragment.java
index 8fd2767..a1923d1 100644
--- a/java/com/android/dialer/app/settings/PhoneAccountSelectionFragment.java
+++ b/java/com/android/dialer/app/settings/PhoneAccountSelectionFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,33 +17,37 @@
 
 package com.android.dialer.app.settings;
 
-import android.app.Fragment;
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.PreferenceActivity;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceScreen;
+
+import com.android.dialer.R;
+
 import java.util.List;
 
 /**
  * Preference screen that lists SIM phone accounts to select from, and forwards the selected account
- * to {@link #PARAM_TARGET_FRAGMENT}. Can only be used in a {@link PreferenceActivity}
+ * to {@link #PARAM_TARGET_FRAGMENT}.
  */
-public class PhoneAccountSelectionFragment extends PreferenceFragment {
+public class PhoneAccountSelectionFragment extends PreferenceFragmentCompat {
 
-  /** The {@link PreferenceFragment} to launch after the account is selected. */
+  /** The {@link PreferenceFragmentCompat} to launch after the account is selected. */
   public static final String PARAM_TARGET_FRAGMENT = "target_fragment";
 
   /**
    * The arguments bundle to pass to the {@link #PARAM_TARGET_FRAGMENT}
    *
-   * @see Fragment#getArguments()
+   * @see PreferenceFragmentCompat#getArguments()
    */
   public static final String PARAM_ARGUMENTS = "arguments";
 
@@ -52,8 +57,7 @@
   public static final String PARAM_PHONE_ACCOUNT_HANDLE_KEY = "phone_account_handle_key";
 
   /**
-   * The title of the {@link #PARAM_TARGET_FRAGMENT} once it is launched with {@link
-   * PreferenceActivity#startWithFragment(String, Bundle, Fragment, int)}, as a string resource ID.
+   * The title of the {@link #PARAM_TARGET_FRAGMENT} once it is launched, as a string resource ID.
    */
   public static final String PARAM_TARGET_TITLE_RES = "target_title_res";
 
@@ -72,6 +76,11 @@
     titleRes = getArguments().getInt(PARAM_TARGET_TITLE_RES, 0);
   }
 
+  @Override
+  public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
+
+  }
+
   final class AccountPreference extends Preference {
     private final PhoneAccountHandle phoneAccountHandle;
 
@@ -84,30 +93,35 @@
       Icon icon = phoneAccount.getIcon();
       if (icon != null) {
         setIcon(icon.loadDrawable(context));
+      } else {
+        setIconSpaceReserved(false);
       }
     }
 
-    @VisibleForTesting
-    void click() {
-      onClick();
-    }
-
     @Override
     protected void onClick() {
       super.onClick();
-      PreferenceActivity preferenceActivity = (PreferenceActivity) getActivity();
+      Fragment fragment = getChildFragmentManager()
+              .getFragmentFactory()
+              .instantiate(getActivity().getClassLoader(), targetFragment);
       arguments.putParcelable(phoneAccountHandleKey, phoneAccountHandle);
-      preferenceActivity.startWithFragment(targetFragment, arguments, null, 0, titleRes, 0);
+      fragment.setArguments(arguments);
+      getParentFragmentManager().beginTransaction()
+              .replace(R.id.content_frame, fragment)
+              .addToBackStack(null)
+              .commit();
+      setTitle(titleRes);
     }
   }
 
+  @SuppressLint("MissingPermission")
   @Override
   public void onResume() {
     super.onResume();
-    setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+    setPreferenceScreen(getPreferenceManager().createPreferenceScreen(requireContext()));
     PreferenceScreen screen = getPreferenceScreen();
 
-    TelecomManager telecomManager = getContext().getSystemService(TelecomManager.class);
+    TelecomManager telecomManager = requireContext().getSystemService(TelecomManager.class);
 
     List<PhoneAccountHandle> accountHandles = telecomManager.getCallCapablePhoneAccounts();
 
diff --git a/java/com/android/dialer/app/settings/SoundSettingsFragment.java b/java/com/android/dialer/app/settings/SoundSettingsFragment.java
new file mode 100644
index 0000000..36957b5
--- /dev/null
+++ b/java/com/android/dialer/app/settings/SoundSettingsFragment.java
@@ -0,0 +1,305 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023-2024 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.app.settings;
+
+import static android.app.Activity.RESULT_OK;
+
+import android.annotation.SuppressLint;
+import android.app.AlertDialog;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.content.Intent;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.os.Vibrator;
+import android.provider.Settings;
+import android.telephony.CarrierConfigManager;
+import android.telephony.TelephonyManager;
+import android.widget.Toast;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.Nullable;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreferenceCompat;
+
+import com.android.dialer.R;
+import com.android.dialer.callrecord.impl.CallRecorderService;
+import com.android.dialer.util.SettingsUtil;
+
+public class SoundSettingsFragment extends PreferenceFragmentCompat
+    implements Preference.OnPreferenceChangeListener {
+
+  private static final int NO_DTMF_TONE = 0;
+  private static final int PLAY_DTMF_TONE = 1;
+
+  private static final int NO_VIBRATION_FOR_CALLS = 0;
+  private static final int DO_VIBRATION_FOR_CALLS = 1;
+
+  private static final int DTMF_TONE_TYPE_NORMAL = 0;
+
+  private static final int MSG_UPDATE_RINGTONE_SUMMARY = 1;
+
+  private DefaultRingtonePreference ringtonePreference;
+  private final Handler ringtoneLookupComplete =
+      new Handler(Looper.getMainLooper()) {
+        @Override
+        public void handleMessage(Message msg) {
+          switch (msg.what) {
+            case MSG_UPDATE_RINGTONE_SUMMARY:
+              ringtonePreference.setSummary((CharSequence) msg.obj);
+              break;
+          }
+        }
+      };
+  private final Runnable ringtoneLookupRunnable = () -> updateRingtonePreferenceSummary();
+
+  private final ActivityResultLauncher<Intent> mRingtonePickerResult = registerForActivityResult(
+          new ActivityResultContracts.StartActivityForResult(), result -> {
+            if (result.getResultCode() == RESULT_OK) {
+              Intent data = result.getData();
+              if (data == null || data.getExtras() == null) {
+                return;
+              }
+              Uri uri = (Uri) data.getExtras().get(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
+              ringtonePreference.onSaveRingtone(uri);
+            }
+          });
+
+  private SwitchPreferenceCompat vibrateWhenRinging;
+  private SwitchPreferenceCompat playDtmfTone;
+  private ListPreference dtmfToneLength;
+  private SwitchPreferenceCompat enableDndInCall;
+
+  private NotificationManager notificationManager;
+
+  @Override
+  public Context getContext() {
+    return getActivity();
+  }
+
+  @Override
+  public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    getPreferenceManager().setStorageDeviceProtected();
+  }
+
+  @Override
+  public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
+    getPreferenceManager().setStorageDeviceProtected();
+    addPreferencesFromResource(R.xml.sound_settings);
+
+    Context context = getActivity();
+
+    ringtonePreference = findPreference(context.getString(R.string.ringtone_preference_key));
+    vibrateWhenRinging = findPreference(context.getString(R.string.vibrate_on_preference_key));
+    playDtmfTone = findPreference(context.getString(R.string.play_dtmf_preference_key));
+    dtmfToneLength = findPreference(context.getString(R.string.dtmf_tone_length_preference_key));
+    enableDndInCall = findPreference("incall_enable_dnd");
+
+    if (hasVibrator()) {
+      vibrateWhenRinging.setOnPreferenceChangeListener(this);
+    } else {
+      PreferenceScreen ps = getPreferenceScreen();
+      Preference inCallVibrateOutgoing = findPreference(
+              context.getString(R.string.incall_vibrate_outgoing_key));
+      Preference inCallVibrateCallWaiting = findPreference(
+              context.getString(R.string.incall_vibrate_call_waiting_key));
+      Preference inCallVibrateHangup = findPreference(
+              context.getString(R.string.incall_vibrate_hangup_key));
+      Preference inCallVibrate45Secs = findPreference(
+              context.getString(R.string.incall_vibrate_45_key));
+      ps.removePreference(vibrateWhenRinging);
+      ps.removePreference(inCallVibrateOutgoing);
+      ps.removePreference(inCallVibrateCallWaiting);
+      ps.removePreference(inCallVibrateHangup);
+      ps.removePreference(inCallVibrate45Secs);
+      vibrateWhenRinging = null;
+    }
+
+    playDtmfTone.setOnPreferenceChangeListener(this);
+    playDtmfTone.setChecked(shouldPlayDtmfTone());
+
+    enableDndInCall.setOnPreferenceChangeListener(this);
+
+    TelephonyManager telephonyManager =
+            (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
+    if (telephonyManager.canChangeDtmfToneLength()
+            && (telephonyManager.isWorldPhone() || !shouldHideCarrierSettings())) {
+      dtmfToneLength.setOnPreferenceChangeListener(this);
+      dtmfToneLength.setValueIndex(
+              Settings.System.getInt(
+                      context.getContentResolver(),
+                      Settings.System.DTMF_TONE_TYPE_WHEN_DIALING,
+                      DTMF_TONE_TYPE_NORMAL));
+    } else {
+      getPreferenceScreen().removePreference(dtmfToneLength);
+      dtmfToneLength = null;
+    }
+    if (!CallRecorderService.isEnabled(getActivity())) {
+      getPreferenceScreen().removePreference(
+              findPreference(context.getString(R.string.call_recording_category_key)));
+    }
+    notificationManager = context.getSystemService(NotificationManager.class);
+  }
+
+  @Override
+  public void onResume() {
+    super.onResume();
+
+    if (!Settings.System.canWrite(getContext())) {
+      // If the user launches this setting fragment, then toggles the WRITE_SYSTEM_SETTINGS
+      // AppOp, then close the fragment since there is nothing useful to do.
+      getActivity().onBackPressed();
+      return;
+    }
+
+    if (vibrateWhenRinging != null) {
+      vibrateWhenRinging.setChecked(shouldVibrateWhenRinging());
+    }
+
+    // Lookup the ringtone name asynchronously.
+    new Thread(ringtoneLookupRunnable).start();
+  }
+
+  /**
+   * Supports onPreferenceChangeListener to look for preference changes.
+   *
+   * @param preference The preference to be changed
+   * @param objValue The value of the selection, NOT its localized display value.
+   */
+  @Override
+  public boolean onPreferenceChange(Preference preference, Object objValue) {
+    if (!Settings.System.canWrite(getContext())) {
+      // A user shouldn't be able to get here, but this protects against monkey crashes.
+      Toast.makeText(
+              getContext(),
+              getResources().getString(R.string.toast_cannot_write_system_settings),
+              Toast.LENGTH_SHORT)
+          .show();
+      return true;
+    }
+    if (preference == vibrateWhenRinging) {
+      boolean doVibrate = (Boolean) objValue;
+      Settings.System.putInt(
+          getActivity().getContentResolver(),
+          Settings.System.VIBRATE_WHEN_RINGING,
+          doVibrate ? DO_VIBRATION_FOR_CALLS : NO_VIBRATION_FOR_CALLS);
+    } else if (preference == dtmfToneLength) {
+      int index = dtmfToneLength.findIndexOfValue((String) objValue);
+      Settings.System.putInt(
+          getActivity().getContentResolver(), Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, index);
+    } else if (preference == enableDndInCall) {
+      boolean newValue = (Boolean) objValue;
+      if (newValue && !notificationManager.isNotificationPolicyAccessGranted()) {
+        new AlertDialog.Builder(getContext())
+            .setMessage(R.string.incall_dnd_dialog_message)
+            .setPositiveButton(R.string.allow, (dialog, which) -> {
+              dialog.dismiss();
+              Intent intent = new Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
+              startActivity(intent);
+            })
+            .setNegativeButton(R.string.deny, (dialog, which) -> dialog.dismiss())
+            .show();
+
+        // At this time, it is unknown whether the user granted the permission
+        return false;
+      }
+    }
+    return true;
+  }
+
+  /** Click listener for toggle events. */
+  @Override
+  public boolean onPreferenceTreeClick(Preference preference) {
+    if (!Settings.System.canWrite(getContext())) {
+      Toast.makeText(
+              getContext(),
+              getResources().getString(R.string.toast_cannot_write_system_settings),
+              Toast.LENGTH_SHORT)
+          .show();
+      return true;
+    }
+    if (preference == ringtonePreference) {
+      mRingtonePickerResult.launch(ringtonePreference.getRingtonePickerIntent());
+    } else if (preference == playDtmfTone) {
+      Settings.System.putInt(
+          getActivity().getContentResolver(),
+          Settings.System.DTMF_TONE_WHEN_DIALING,
+          playDtmfTone.isChecked() ? PLAY_DTMF_TONE : NO_DTMF_TONE);
+    }
+    return true;
+  }
+
+  /** Updates the summary text on the ringtone preference with the name of the ringtone. */
+  private void updateRingtonePreferenceSummary() {
+    SettingsUtil.updateRingtoneName(
+        getActivity(),
+        ringtoneLookupComplete,
+        RingtoneManager.TYPE_RINGTONE,
+        ringtonePreference.getKey(),
+        MSG_UPDATE_RINGTONE_SUMMARY);
+  }
+
+  /**
+   * Obtain the value for "vibrate when ringing" setting. The default value is false.
+   *
+   * <p>Watch out: if the setting is missing in the device, this will try obtaining the old "vibrate
+   * on ring" setting from AudioManager, and save the previous setting to the new one.
+   */
+  private boolean shouldVibrateWhenRinging() {
+    int vibrateWhenRingingSetting =
+        Settings.System.getInt(
+            requireActivity().getContentResolver(),
+            Settings.System.VIBRATE_WHEN_RINGING,
+            NO_VIBRATION_FOR_CALLS);
+    return hasVibrator() && (vibrateWhenRingingSetting == DO_VIBRATION_FOR_CALLS);
+  }
+
+  /** Obtains the value for dialpad/DTMF tones. The default value is true. */
+  private boolean shouldPlayDtmfTone() {
+    int dtmfToneSetting =
+        Settings.System.getInt(
+            requireActivity().getContentResolver(),
+            Settings.System.DTMF_TONE_WHEN_DIALING,
+            PLAY_DTMF_TONE);
+    return dtmfToneSetting == PLAY_DTMF_TONE;
+  }
+
+  /** Whether the device hardware has a vibrator. */
+  private boolean hasVibrator() {
+    Vibrator vibrator = requireActivity().getSystemService(Vibrator.class);
+    return vibrator != null && vibrator.hasVibrator();
+  }
+
+  @SuppressLint("MissingPermission")
+  private boolean shouldHideCarrierSettings() {
+    CarrierConfigManager configManager =
+        (CarrierConfigManager) requireActivity().getSystemService(Context.CARRIER_CONFIG_SERVICE);
+    return configManager
+        .getConfig()
+        .getBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL);
+  }
+}
diff --git a/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
index cf76385..fb75ef1 100644
--- a/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
+++ b/java/com/android/dialer/app/voicemail/LegacyVoicemailNotificationReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,18 +17,15 @@
 
 package com.android.dialer.app.voicemail;
 
-import android.annotation.TargetApi;
 import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Build;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.os.BuildCompat;
-import android.support.v4.os.UserManagerCompat;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
+
+import androidx.core.os.UserManagerCompat;
+
 import com.android.dialer.app.calllog.LegacyVoicemailNotifier;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
@@ -42,10 +40,9 @@
  * LegacyVoicemailNotifier}. Will ignore the notification if the account has visual voicemail.
  * Legacy voicemail is the traditional, non-visual, dial-in voicemail.
  */
-@TargetApi(VERSION_CODES.O)
 public class LegacyVoicemailNotificationReceiver extends BroadcastReceiver {
 
-  @VisibleForTesting static final String LEGACY_VOICEMAIL_DISMISSED = "legacy_voicemail_dismissed";
+  private static final String LEGACY_VOICEMAIL_DISMISSED = "legacy_voicemail_dismissed";
 
   @Override
   public void onReceive(Context context, Intent intent) {
@@ -57,20 +54,9 @@
 
     LogUtil.i(
         "LegacyVoicemailNotificationReceiver.onReceive", "received legacy voicemail notification");
-    if (!BuildCompat.isAtLeastO()) {
-      LogUtil.e(
-          "LegacyVoicemailNotificationReceiver.onReceive",
-          "SDK not finalized: SDK_INT="
-              + Build.VERSION.SDK_INT
-              + ", PREVIEW_SDK_INT="
-              + Build.VERSION.PREVIEW_SDK_INT
-              + ", RELEASE="
-              + Build.VERSION.RELEASE_OR_CODENAME);
-      return;
-    }
-
     PhoneAccountHandle phoneAccountHandle =
-        Assert.isNotNull(intent.getParcelableExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE));
+        Assert.isNotNull(intent.getParcelableExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE,
+                PhoneAccountHandle.class));
     int count = intent.getIntExtra(TelephonyManager.EXTRA_NOTIFICATION_COUNT, -1);
 
     boolean isRefresh = intent.getBooleanExtra(TelephonyManagerCompat.EXTRA_IS_REFRESH, false);
@@ -113,9 +99,11 @@
 
     String voicemailNumber = intent.getStringExtra(TelephonyManager.EXTRA_VOICEMAIL_NUMBER);
     PendingIntent callVoicemailIntent =
-        intent.getParcelableExtra(TelephonyManager.EXTRA_CALL_VOICEMAIL_INTENT);
+        intent.getParcelableExtra(TelephonyManager.EXTRA_CALL_VOICEMAIL_INTENT,
+                PendingIntent.class);
     PendingIntent voicemailSettingIntent =
-        intent.getParcelableExtra(TelephonyManager.EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT);
+        intent.getParcelableExtra(TelephonyManager.EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT,
+                PendingIntent.class);
 
     LogUtil.i("LegacyVoicemailNotificationReceiver.onReceive", "sending notification");
     LegacyVoicemailNotifier.showNotification(
@@ -136,7 +124,6 @@
         .apply();
   }
 
-  @VisibleForTesting
   static PerAccountSharedPreferences getSharedPreferences(
       Context context, PhoneAccountHandle phoneAccountHandle) {
     return new PerAccountSharedPreferences(
diff --git a/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java b/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java
index 79716cb..7d6b551 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailAudioManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,11 +18,15 @@
 package com.android.dialer.app.voicemail;
 
 import android.content.Context;
+import android.media.AudioAttributes;
 import android.media.AudioDeviceInfo;
+import android.media.AudioFocusRequest;
 import android.media.AudioManager;
 import android.media.AudioManager.OnAudioFocusChangeListener;
 import android.telecom.CallAudioState;
+
 import com.android.dialer.common.LogUtil;
+
 import java.util.concurrent.RejectedExecutionException;
 
 /** This class manages all audio changes for voicemail playback. */
@@ -32,13 +37,15 @@
 
   public static final int PLAYBACK_STREAM = AudioManager.STREAM_VOICE_CALL;
 
-  private AudioManager audioManager;
-  private VoicemailPlaybackPresenter voicemailPlaybackPresenter;
-  private WiredHeadsetManager wiredHeadsetManager;
+  private final AudioManager audioManager;
+  private final VoicemailPlaybackPresenter voicemailPlaybackPresenter;
+  private final WiredHeadsetManager wiredHeadsetManager;
   private boolean wasSpeakerOn;
   private CallAudioState callAudioState;
   private boolean bluetoothScoEnabled;
 
+  private AudioFocusRequest audioFocusRequest;
+
   public VoicemailAudioManager(
       Context context, VoicemailPlaybackPresenter voicemailPlaybackPresenter) {
     audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
@@ -52,10 +59,15 @@
   }
 
   public void requestAudioFocus() {
-    int result =
-        audioManager.requestAudioFocus(
-            this, PLAYBACK_STREAM, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+    audioFocusRequest = new AudioFocusRequest.Builder(
+            AudioManager.AUDIOFOCUS_GAIN_TRANSIENT)
+            .setAudioAttributes(
+                    new AudioAttributes.Builder().setLegacyStreamType(PLAYBACK_STREAM).build())
+            .setOnAudioFocusChangeListener(this)
+            .build();
+    int result = audioManager.requestAudioFocus(audioFocusRequest);
     if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
+      audioFocusRequest = null;
       throw new RejectedExecutionException("Could not capture audio focus.");
     }
     updateBluetoothScoState(true);
@@ -63,7 +75,10 @@
 
   public void abandonAudioFocus() {
     updateBluetoothScoState(false);
-    audioManager.abandonAudioFocus(this);
+    if (audioFocusRequest != null) {
+      audioManager.abandonAudioFocusRequest(audioFocusRequest);
+      audioFocusRequest = null;
+    }
   }
 
   @Override
diff --git a/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java b/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
index a441e79..a390ff6 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailErrorManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,12 +21,15 @@
 import android.database.ContentObserver;
 import android.database.Cursor;
 import android.os.Handler;
-import android.support.annotation.MainThread;
+import android.os.Looper;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
 import android.telephony.TelephonyManager;
 import android.util.ArrayMap;
+
+import androidx.annotation.MainThread;
+
 import com.android.dialer.app.calllog.CallLogAlertManager;
 import com.android.dialer.app.calllog.CallLogModalAlertManager;
 import com.android.dialer.common.Assert;
@@ -36,6 +40,7 @@
 import com.android.dialer.voicemail.listui.error.VoicemailStatus;
 import com.android.dialer.voicemail.listui.error.VoicemailStatusReader;
 import com.android.voicemail.VoicemailComponent;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -53,7 +58,7 @@
   private final Map<PhoneAccountHandle, ServiceStateListener> listeners = new ArrayMap<>();
 
   private final ContentObserver statusObserver =
-      new ContentObserver(new Handler()) {
+      new ContentObserver(new Handler(Looper.getMainLooper())) {
         @Override
         public void onChange(boolean selfChange) {
           super.onChange(selfChange);
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
index 3a1e196..3f80220 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackLayout.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,8 +21,6 @@
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Handler;
-import android.support.annotation.VisibleForTesting;
-import android.support.design.widget.Snackbar;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -30,15 +29,17 @@
 import android.widget.SeekBar;
 import android.widget.SeekBar.OnSeekBarChangeListener;
 import android.widget.TextView;
-import com.android.dialer.app.R;
+
+import com.android.dialer.R;
 import com.android.dialer.app.calllog.CallLogAsyncTaskUtil;
 import com.android.dialer.app.calllog.CallLogListItemViewHolder;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
+import com.google.android.material.snackbar.Snackbar;
+
 import java.util.Objects;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
+
 import javax.annotation.concurrent.GuardedBy;
 import javax.annotation.concurrent.NotThreadSafe;
 import javax.annotation.concurrent.ThreadSafe;
@@ -58,7 +59,7 @@
   private static final String TAG = VoicemailPlaybackLayout.class.getSimpleName();
   private static final int VOICEMAIL_DELETE_DELAY_MS = 3000;
 
-  private Context context;
+  private final Context context;
   private CallLogListItemViewHolder viewHolder;
   private VoicemailPlaybackPresenter presenter;
   /** Click listener to toggle speakerphone. */
@@ -77,7 +78,6 @@
       new View.OnClickListener() {
         @Override
         public void onClick(View view) {
-          Logger.get(context).logImpression(DialerImpression.Type.VOICEMAIL_DELETE_ENTRY);
           if (presenter == null) {
             return;
           }
@@ -92,16 +92,12 @@
           presenter.onVoicemailDeleted(viewHolder);
 
           final Uri deleteUri = voicemailUri;
-          final Runnable deleteCallback =
-              new Runnable() {
-                @Override
-                public void run() {
-                  if (Objects.equals(deleteUri, voicemailUri)) {
-                    CallLogAsyncTaskUtil.deleteVoicemail(
-                        context, deleteUri, VoicemailPlaybackLayout.this);
-                  }
-                }
-              };
+          final Runnable deleteCallback = () -> {
+            if (Objects.equals(deleteUri, voicemailUri)) {
+              CallLogAsyncTaskUtil.deleteVoicemail(
+                      context, deleteUri, VoicemailPlaybackLayout.this);
+            }
+          };
 
           final Handler handler = new Handler();
           // Add a little buffer time in case the user clicked "undo" at the end of the delay
@@ -113,15 +109,10 @@
                   R.string.snackbar_voicemail_deleted,
                   Snackbar.LENGTH_LONG)
               .setDuration(VOICEMAIL_DELETE_DELAY_MS)
-              .setAction(
-                  R.string.snackbar_undo,
-                  new View.OnClickListener() {
-                    @Override
-                    public void onClick(View view) {
-                      presenter.onVoicemailDeleteUndo(adapterPosition);
-                      handler.removeCallbacks(deleteCallback);
-                    }
-                  })
+              .setAction(R.string.snackbar_undo, view1 -> {
+                presenter.onVoicemailDeleteUndo(adapterPosition);
+                handler.removeCallbacks(deleteCallback);
+              })
               .setActionTextColor(
                   context.getResources().getColor(R.color.dialer_snackbar_action_text_color))
               .show();
@@ -140,8 +131,6 @@
           if (isPlaying) {
             presenter.pausePlayback();
           } else {
-            Logger.get(context)
-                .logImpression(DialerImpression.Type.VOICEMAIL_PLAY_AUDIO_AFTER_EXPANDING_ENTRY);
             presenter.resumePlayback();
           }
         }
@@ -241,7 +230,7 @@
   public void onPlaybackStarted(int duration, ScheduledExecutorService executorService) {
     isPlaying = true;
 
-    startStopButton.setImageResource(R.drawable.ic_pause);
+    startStopButton.setImageResource(R.drawable.quantum_ic_pause_vd_theme_24);
 
     if (positionUpdater != null) {
       positionUpdater.stopUpdating();
@@ -255,7 +244,7 @@
   public void onPlaybackStopped() {
     isPlaying = false;
 
-    startStopButton.setImageResource(R.drawable.ic_play_arrow);
+    startStopButton.setImageResource(R.drawable.quantum_ic_play_arrow_vd_theme_24);
 
     if (positionUpdater != null) {
       positionUpdater.stopUpdating();
@@ -280,7 +269,7 @@
       // Speaker is now on, tapping button will turn it off.
       playbackSpeakerphone.setContentDescription(context.getString(R.string.voicemail_speaker_off));
     } else {
-      playbackSpeakerphone.setImageResource(R.drawable.quantum_ic_volume_down_white_24);
+      playbackSpeakerphone.setImageResource(R.drawable.quantum_ic_volume_down_vd_theme_24);
       // Speaker is now off, tapping button will turn it on.
       playbackSpeakerphone.setContentDescription(context.getString(R.string.voicemail_speaker_on));
     }
@@ -368,11 +357,6 @@
     return String.format("%02d:%02d", minutes, seconds);
   }
 
-  @VisibleForTesting
-  public String getStateText() {
-    return stateText.getText().toString();
-  }
-
   /** Controls the animation of the playback slider. */
   @ThreadSafe
   private final class PositionUpdater implements Runnable {
@@ -382,12 +366,12 @@
 
     private final ScheduledExecutorService executorService;
     private final Object lock = new Object();
-    private int durationMs;
+    private final int durationMs;
 
     @GuardedBy("lock")
     private ScheduledFuture<?> scheduledFuture;
 
-    private Runnable updateClipPositionRunnable =
+    private final Runnable updateClipPositionRunnable =
         new Runnable() {
           @Override
           public void run() {
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
index 95662a1..a5f8efa 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +17,6 @@
 
 package com.android.dialer.app.voicemail;
 
-import android.app.Activity;
 import android.content.ContentResolver;
 import android.content.ContentUris;
 import android.content.Context;
@@ -26,24 +26,28 @@
 import android.media.AudioManager;
 import android.media.MediaPlayer;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Looper;
 import android.os.PowerManager;
 import android.provider.CallLog;
 import android.provider.VoicemailContract;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.MainThread;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.content.FileProvider;
 import android.text.TextUtils;
 import android.util.Pair;
 import android.view.View;
 import android.view.WindowManager.LayoutParams;
 import android.webkit.MimeTypeMap;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.content.FileProvider;
+
 import com.android.common.io.MoreCloseables;
-import com.android.dialer.app.R;
+import com.android.dialer.R;
+import com.android.dialer.app.calllog.CallLogAdapter;
+import com.android.dialer.app.calllog.CallLogFragment;
 import com.android.dialer.app.calllog.CallLogListItemViewHolder;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
@@ -51,15 +55,12 @@
 import com.android.dialer.common.concurrent.AsyncTaskExecutors;
 import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.constants.Constants;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.phonenumbercache.CallLogQuery;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.PermissionsUtil;
 import com.google.common.io.ByteStreams;
+
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -67,11 +68,13 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Locale;
+import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
+
 import javax.annotation.concurrent.NotThreadSafe;
 import javax.annotation.concurrent.ThreadSafe;
 
@@ -110,7 +113,6 @@
   private static final String IS_SPEAKERPHONE_ON_KEY =
       VoicemailPlaybackPresenter.class.getName() + ".IS_SPEAKER_PHONE_ON";
   private static final String VOICEMAIL_SHARE_FILE_NAME_DATE_FORMAT = "MM-dd-yy_hhmmaa";
-  private static final String CONFIG_SHARE_VOICEMAIL_ALLOWED = "share_voicemail_allowed";
 
   private static VoicemailPlaybackPresenter instance;
   private static ScheduledExecutorService scheduledExecutorService;
@@ -126,8 +128,8 @@
   protected Uri voicemailUri;
   protected MediaPlayer mediaPlayer;
   // Used to run async tasks that need to interact with the UI.
-  protected AsyncTaskExecutor asyncTaskExecutor;
-  private Activity activity;
+  protected final AsyncTaskExecutor asyncTaskExecutor;
+  private AppCompatActivity activity;
   private PlaybackView view;
   private int position;
   private boolean isPlaying;
@@ -145,14 +147,14 @@
   private FetchResultHandler fetchResultHandler;
 
   private PowerManager.WakeLock proximityWakeLock;
-  private VoicemailAudioManager voicemailAudioManager;
+  private final VoicemailAudioManager voicemailAudioManager;
   private OnVoicemailDeletedListener onVoicemailDeletedListener;
   private View shareVoicemailButtonView;
 
   private DialerExecutor<Pair<Context, Uri>> shareVoicemailExecutor;
 
   /** Initialize variables which are activity-independent and state-independent. */
-  protected VoicemailPlaybackPresenter(Activity activity) {
+  protected VoicemailPlaybackPresenter(AppCompatActivity activity) {
     Context context = activity.getApplicationContext();
     asyncTaskExecutor = AsyncTaskExecutors.createAsyncTaskExecutor();
     voicemailAudioManager = new VoicemailAudioManager(context, this);
@@ -160,7 +162,7 @@
     if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
       proximityWakeLock =
           powerManager.newWakeLock(
-              PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "VoicemailPlaybackPresenter");
+              PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "Voicemail:PlaybackPresenter");
     }
   }
 
@@ -175,7 +177,7 @@
    */
   @MainThread
   public static VoicemailPlaybackPresenter getInstance(
-      Activity activity, Bundle savedInstanceState) {
+      AppCompatActivity activity, Bundle savedInstanceState) {
     if (instance == null) {
       instance = new VoicemailPlaybackPresenter(activity);
     }
@@ -193,7 +195,7 @@
 
   /** Update variables which are activity-dependent or state-dependent. */
   @MainThread
-  protected void init(Activity activity, Bundle savedInstanceState) {
+  protected void init(AppCompatActivity activity, Bundle savedInstanceState) {
     Assert.isMainThread();
     this.activity = activity;
     context = activity;
@@ -215,7 +217,7 @@
     }
 
     if (this.activity != null) {
-      if (isPlaying()) {
+      if (isPlaying) {
         this.activity.getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
       } else {
         this.activity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
@@ -223,8 +225,8 @@
       shareVoicemailExecutor =
           DialerExecutorComponent.get(context)
               .dialerExecutorFactory()
-              .createUiTaskBuilder(
-                  this.activity.getFragmentManager(), "shareVoicemail", new ShareVoicemailWorker())
+              .createUiTaskBuilder(this.activity.getSupportFragmentManager(), "shareVoicemail",
+                      new ShareVoicemailWorker())
               .onSuccess(
                   output -> {
                     if (output == null) {
@@ -391,19 +393,13 @@
 
   /** Checks to see if we have content available for this voicemail. */
   protected void checkForContent(final OnContentCheckedListener callback) {
-    asyncTaskExecutor.submit(
-        Tasks.CHECK_FOR_CONTENT,
-        new AsyncTask<Void, Void, Boolean>() {
-          @Override
-          public Boolean doInBackground(Void... params) {
-            return queryHasContent(voicemailUri);
-          }
+    ExecutorService executor = Executors.newSingleThreadExecutor();
+    Handler handler = new Handler(Looper.getMainLooper());
 
-          @Override
-          public void onPostExecute(Boolean hasContent) {
-            callback.onContentChecked(hasContent);
-          }
-        });
+    executor.execute(() -> {
+      final boolean hasContent = queryHasContent(voicemailUri);
+      handler.post(() -> callback.onContentChecked(hasContent));
+    });
   }
 
   private boolean queryHasContent(Uri voicemailUri) {
@@ -458,37 +454,28 @@
         break;
     }
 
-    asyncTaskExecutor.submit(
-        Tasks.SEND_FETCH_REQUEST,
-        new AsyncTask<Void, Void, Void>() {
-
-          @Override
-          protected Void doInBackground(Void... voids) {
-            try (Cursor cursor =
-                context
-                    .getContentResolver()
-                    .query(
-                        voicemailUri, new String[] {Voicemails.SOURCE_PACKAGE}, null, null, null)) {
-              String sourcePackage;
-              if (!hasContent(cursor)) {
-                LogUtil.e(
-                    "VoicemailPlaybackPresenter.requestContent",
-                    "mVoicemailUri does not return a SOURCE_PACKAGE");
-                sourcePackage = null;
-              } else {
-                sourcePackage = cursor.getString(0);
-              }
-              // Send voicemail fetch request.
-              Intent intent = new Intent(VoicemailContract.ACTION_FETCH_VOICEMAIL, voicemailUri);
-              intent.setPackage(sourcePackage);
-              LogUtil.i(
+    ExecutorService executor = Executors.newSingleThreadExecutor();
+    executor.execute(() -> {
+      try (Cursor cursor = context.getContentResolver().query(
+              voicemailUri, new String[] {Voicemails.SOURCE_PACKAGE}, null, null, null)) {
+        String sourcePackage;
+        if (!hasContent(cursor)) {
+          LogUtil.e(
                   "VoicemailPlaybackPresenter.requestContent",
-                  "Sending ACTION_FETCH_VOICEMAIL to " + sourcePackage);
-              context.sendBroadcast(intent);
-            }
-            return null;
-          }
-        });
+                  "mVoicemailUri does not return a SOURCE_PACKAGE");
+          sourcePackage = null;
+        } else {
+          sourcePackage = cursor.getString(0);
+        }
+        // Send voicemail fetch request.
+        Intent intent = new Intent(VoicemailContract.ACTION_FETCH_VOICEMAIL, voicemailUri);
+        intent.setPackage(sourcePackage);
+        LogUtil.i(
+                "VoicemailPlaybackPresenter.requestContent",
+                "Sending ACTION_FETCH_VOICEMAIL to " + sourcePackage);
+        context.sendBroadcast(intent);
+      }
+    });
     return true;
   }
 
@@ -519,7 +506,7 @@
       handleError(new IllegalStateException("Cannot play voicemail when call is in progress"));
       return;
     }
-    StrictModeUtils.bypass(this::prepareMediaPlayer);
+    prepareMediaPlayer();
   }
 
   private void prepareMediaPlayer() {
@@ -814,16 +801,6 @@
     }
   }
 
-  @VisibleForTesting
-  public boolean isPlaying() {
-    return isPlaying;
-  }
-
-  @VisibleForTesting
-  public boolean isSpeakerphoneOn() {
-    return isSpeakerphoneOn;
-  }
-
   /**
    * This method only handles app-level changes to the speakerphone. Audio layer changes should be
    * handled separately. This is so that the VoicemailAudioManager can trigger changes to the
@@ -850,30 +827,16 @@
     }
   }
 
-  @VisibleForTesting
-  public void clearInstance() {
-    instance = null;
-  }
-
   private void showShareVoicemailButton(boolean show) {
     if (context == null) {
       return;
     }
-    if (isShareVoicemailAllowed(context) && shareVoicemailButtonView != null) {
-      if (show) {
-        Logger.get(context).logImpression(DialerImpression.Type.VVM_SHARE_VISIBLE);
-      }
+    if (shareVoicemailButtonView != null) {
       LogUtil.d("VoicemailPlaybackPresenter.showShareVoicemailButton", "show: %b", show);
       shareVoicemailButtonView.setVisibility(show ? View.VISIBLE : View.GONE);
     }
   }
 
-  private static boolean isShareVoicemailAllowed(Context context) {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(CONFIG_SHARE_VOICEMAIL_ALLOWED, true);
-  }
-
   private static class ShareVoicemailWorker
       implements DialerExecutor.Worker<Pair<Context, Uri>, Pair<Uri, String>> {
 
@@ -899,6 +862,7 @@
           // dialer/app/res/xml/file_paths.xml for correct cache directory name.
           File parentDir = new File(context.getCacheDir(), "my_cache");
           if (!parentDir.exists()) {
+            //noinspection ResultOfMethodCallIgnored
             parentDir.mkdirs();
           }
           File temporaryVoicemailFile =
@@ -911,7 +875,7 @@
               ByteStreams.copy(inputStream, outputStream);
               return new Pair<>(
                   FileProvider.getUriForFile(
-                      context, Constants.get().getFileProviderAuthority(), temporaryVoicemailFile),
+                      context, Constants.FILE_PROVIDER_AUTHORITY, temporaryVoicemailFile),
                   transcription);
             }
           } catch (IOException e) {
@@ -998,14 +962,6 @@
         null);
   }
 
-  /** The enumeration of {@link AsyncTask} objects we use in this class. */
-  public enum Tasks {
-    CHECK_FOR_CONTENT,
-    CHECK_CONTENT_AFTER_CHANGE,
-    SHARE_VOICEMAIL,
-    SEND_FETCH_REQUEST
-  }
-
   /** Contract describing the behaviour we need from the ui we are controlling. */
   public interface PlaybackView {
 
@@ -1055,7 +1011,7 @@
 
     private final Handler fetchResultHandler;
     private final Uri voicemailUri;
-    private AtomicBoolean isWaitingForResult = new AtomicBoolean(true);
+    private final AtomicBoolean isWaitingForResult = new AtomicBoolean(true);
 
     public FetchResultHandler(Handler handler, Uri uri, int code) {
       super(handler);
@@ -1089,24 +1045,19 @@
 
     @Override
     public void onChange(boolean selfChange) {
-      asyncTaskExecutor.submit(
-          Tasks.CHECK_CONTENT_AFTER_CHANGE,
-          new AsyncTask<Void, Void, Boolean>() {
+      ExecutorService executor = Executors.newSingleThreadExecutor();
+      Handler handler = new Handler(Looper.getMainLooper());
 
-            @Override
-            public Boolean doInBackground(Void... params) {
-              return queryHasContent(voicemailUri);
-            }
-
-            @Override
-            public void onPostExecute(Boolean hasContent) {
-              if (hasContent && context != null && isWaitingForResult.getAndSet(false)) {
-                context.getContentResolver().unregisterContentObserver(FetchResultHandler.this);
-                showShareVoicemailButton(true);
-                prepareContent();
-              }
-            }
-          });
+      executor.execute(() -> {
+        final boolean hasContent = queryHasContent(voicemailUri);
+        handler.post(() -> {
+          if (hasContent && context != null && isWaitingForResult.getAndSet(false)) {
+            context.getContentResolver().unregisterContentObserver(FetchResultHandler.this);
+            showShareVoicemailButton(true);
+            prepareContent();
+          }
+        });
+      });
     }
   }
 }
diff --git a/java/com/android/dialer/app/voicemail/WiredHeadsetManager.java b/java/com/android/dialer/app/voicemail/WiredHeadsetManager.java
index 2873f8d..46a6ba1 100644
--- a/java/com/android/dialer/app/voicemail/WiredHeadsetManager.java
+++ b/java/com/android/dialer/app/voicemail/WiredHeadsetManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.media.AudioManager;
+
 import com.android.dialer.common.LogUtil;
 
 /** Listens for and caches headset state. */
@@ -29,7 +31,7 @@
   private final WiredHeadsetBroadcastReceiver receiver;
   private boolean isPluggedIn;
   private Listener listener;
-  private Context context;
+  private final Context context;
 
   WiredHeadsetManager(Context context) {
     this.context = context;
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-af/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-af/strings.xml
deleted file mode 100644
index 69f49bd..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-af/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktiveer tans visuele stemboodskapdiens"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Jy sal dalk nie stemboodskapkennisgewings ontvang totdat visuele stemboodskapdiens heeltemal geaktiveer is nie. Bel stemboodskapdiens om nuwe boodskappe te kry totdat stemboodskapdiens volledig geaktiveer is."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Kan nie visuele stemboodskapdiens aktiveer nie"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Maak seker jou foon het ’n mobiele netwerkverbinding en probeer weer."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Skakel vliegtuigmodus af en probeer weer."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Geen verbinding nie"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Jy sal nie van nuwe stemboodskappe in kennis gestel word nie. As jy op Wi-Fi is, kan jy jou stemboodskapdiens nagaan deur nou te sinkroniseer."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Jy sal nie van nuwe stemboodskappe in kennis gestel word nie. Skakel vliegtuigmodus af om jou stemboodskapdiens te sinkroniseer."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Jou foon benodig \'n mobiele dataverbinding om stemboodskapdiens na te gaan"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Kan nie visuele stemboodskapdiens aktiveer nie"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Jy kan steeds bel om stemboodskapdiens na te gaan."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Kan nie visuele stemboodskapdiens opdateer nie"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Probeer weer wanneer jou Wi-Fi- of mobiele dataverbinding beter is. Jy kan steeds bel om stemboodskapdiens na te gaan."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Probeer weer wanneer jou mobiele dataverbinding beter is. Jy kan steeds bel om stemboodskapdiens na te gaan."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Kan nie visuele stemboodskapdiens opdateer nie"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Jy kan steeds bel om stemboodskapdiens na te gaan."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Kan nie visuele stemboodskapdiens opdateer nie"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Jy kan steeds bel om stemboodskapdiens na te gaan."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Kan nie visuele stemboodskapdiens opdateer nie"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Jy kan steeds bel om stemboodskapdiens na te gaan."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Kan nie visuele stemboodskapdiens opdateer nie"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Jy kan steeds bel om stemboodskapdiens na te gaan."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Inkassie is byna vol"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Jy sal nie nuwe stemboodskappe kan ontvang as jou inkassie vol is nie."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Kan nie nuwe stemboodskappe ontvang nie"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Jou inkassie is vol. Probeer \'n paar boodskappe uitvee om nuwe stemboodskappe te ontvang."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Skakel ekstra berging en rugsteun aan"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Jou posbus is vol. Om spasie beskikbaar te maak, skakel ekstra berging aan sodat Google jou stemboodskappe kan bestuur en rugsteun."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Skakel ekstra berging en rugsteun aan"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Jou posbus is amper vol. Om spasie beskikbaar te maak, skakel ekstra berging aan sodat Google jou stemboodskappe kan bestuur en rugsteun."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Stel jou stemboodskap-PIN"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Jy sal \'n stemboodskap-PIN nodig hê wanneer jy ook al na jou stemboodskapdiens toe bel."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Vliegtuigmodusinstellings"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Stel PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Probeer weer"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Skakel aan"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nee, dankie"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinkroniseer"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Bel stemboodskapdiens"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Bel Kliëntediens"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Iets het verkeerd geloop"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Jammer, ons het \'n probleem teëgekom. Probeer asseblief later weer. As daar steeds \'n probleem is, kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Iets het verkeerd geloop"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Jammer, ons het \'n probleem teëgekom. Probeer asseblief later weer. As daar steeds \'n probleem is, kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Iets het verkeerd geloop"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Jammer, ons het \'n probleem teëgekom. Probeer asseblief later weer. As daar steeds \'n probleem is, kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Kan nie aan jou stemboodskapdiens koppel nie"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Jammer, ons sukkel om aan jou stemboodskapdiens te koppel. As jy in \'n gebied met swak sein is, wag totdat jy \'n sterk sein het en probeer weer. As daar steeds \'n probleem is, kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Kan nie aan jou stemboodskapdiens koppel nie"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Jammer, ons sukkel om aan jou stemboodskapdiens te koppel. As jy in \'n gebied met swak sein is, wag totdat jy \'n sterk sein het en probeer weer. As daar steeds \'n probleem is, kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Kan nie aan jou stemboodskapdiens koppel nie"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Jammer, ons sukkel om aan jou stemboodskapdiens te koppel. As jy in \'n gebied met swak sein is, wag totdat jy \'n sterk sein het en probeer weer. As daar steeds\' n probleem is, kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g>en gee vir hulle die foutkode 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Iets het verkeerd geloop"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Jammer, ons het \'n probleem teëgekom. Probeer asseblief later weer. As daar steeds \'n probleem is, kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Iets het verkeerd geloop"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Jammer, ons het \'n probleem teëgekom. Probeer asseblief later weer. As daar steeds \'n probleem is, kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Iets het verkeerd geloop"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Jammer, ons sukkel om jou diens op te stel. Probeer asseblief later weer. As daar steeds \'n probleem is, kontak asseblieff Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Kan nie aan jou stemboodskapdiens koppel nie"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Jammer, ons kan nie op die oomblik aan jou stemboodskapdiens koppel nie. Probeer asseblief later weer. As daar steeds \'n probleem is, kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Stel stemboodskap op"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Stemboodskapdiens is nie op jou rekening opgestel nie. Kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Stemboodskap"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Visuele stemboodskap kan nie op jou rekening gebruik word nie. Kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Iets het verkeerd geloop"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visuele stemboodskap"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9994 om opstelling vir visuele stemboodskap te voltooi."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visuele stemboodskap"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9995 om opstelling vir visuele stemboodskap te voltooi."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visuele stemboodskap"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9996 om visuele stemboodskap te aktiveer."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Iets het verkeerd geloop"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9998 om visuele stemboodskap te aktiveer."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visuele stemboodskap is gedeaktiveer"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> om visuele stemboodskapdiens te aktiveer."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Iets het verkeerd geloop"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Iets het verkeerd geloop"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Iets het verkeerd geloop"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Kontak asseblief Kliëntediens by <xliff:g id="NUMBER">%1$s</xliff:g> en gee vir hulle die foutkode 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Skakel visuele stemboodskap aan"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nDeur visuele stemboodskap aan te skakel, stem jy in tot die Verizon Wireless-bepalings en -voorwaardes:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Skakel visuele stemboodskap aan"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Kyk en luister na jou boodskappe sonder dat jy stemboodskap hoef te bel. Transkripsies van jou stemboodskap word deur Google se gratis transkripsiediens verskaf. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Kyk en luister na jou boodskappe sonder dat jy stemboodskap hoef te bel. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Kom meer te wete"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Visuele stemboodskapdiens sal gedeaktiveer word as die bepalings en voorwaardes afgekeur word."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Deaktiveer visuele stemboodskapdiens"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Stemboodskaptranskripsie sal gedeaktiveer word as die bepalings en voorwaardes afgekeur word."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Deaktiveer stemboodskaptranskripsie"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Stempos sal slegs toeganklik wees as jy *86 bel. Stel \'n nuwe stempos-PIN om voort te gaan."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Stel PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-am/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-am/strings.xml
deleted file mode 100644
index 79baf4f..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-am/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"እይታዊ የድምጽ መልዕክት በማግበር ላይ"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"እይታዊ የድምጽ መልዕክት ሙሉ ለሙሉ እስከሚነቃ ድረስ የድምፅ መልዕክት ማሳወቂያዎችን ላይቀበሉ ይችላሉ። የድምጽ መልዕክት ሙሉ ለሙሉ እስኪያገብር ድረስ አዲስ መልዕክቶችን ለማምጣት ወደ ድምፅ መልዕክት ይደውሉ።"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"እይታዊ የድምጽ መልዕክትን ማግበር አይቻልም"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"ስልክዎ የተንቀሳቃሽ ስልክ አውታረ መረብ ግንኙነት እንዳለው ያረጋግጡና እንደገና ይሞክሩ።"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"የአውሮፕላን ሁነታን ያጥፉ እና እንደገና ይሞክሩ።"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"ምንም ግንኙነት የለም"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"ለአዲስ የድምጽ መልዕክቶች ማሳወቂያ አይደርስዎትም። Wi-Fi ላይ ከሆኑ አሁን በማስመር የድምጽ መልዕክትን መፈተሽ ይችላሉ።"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"ለአዲስ የድምጽ መልዕክቶች ማሳወቂያ አይደርስዎትም። የድምጽ መልዕክትዎን ለማስመር የአውሮፕላን ሁነታን ያጥፉ።"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"የድምጽ መልዕክትን ለመፈተሽ ስልክዎ የተንቀሳቃሽ ስልክ ውሂብ ግንኙነት ያስፈልገዋል።"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"እይታዊ የድምጽ መልዕክትን ማግበር አይቻልም"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"አሁንም ቢሆን የድምጽ መልዕክትን ለመፈተሽ መደወል ይችላሉ።"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"እይታዊ የድምጽ መልዕክትን ማዘመን አይቻልም"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"የWi‑Fi ወይም የተንቀሳቃሽ ስልክ ውሂብ ግንኙነትዎ ሲሻሻል እንደገና ይሞክሩ። አሁንም ቢሆን የድምጽ መልዕክትዎን ለመፈተሽ መደወል ይችላሉ።"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"የተንቀሳቃሽ ስልክ ውሂብ ግንኙነትዎ ሲሻሻል እንደገና ይሞክሩ። አሁንም ቢሆን የድምጽ መልዕክትዎን ለመፈተሽ መደወል ይችላሉ።"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"እይታዊ የድምጽ መልዕክትን ማዘመን አይቻልም"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"አሁንም ቢሆን የድምጽ መልዕክትን ለመፈተሽ መደወል ይችላሉ።"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"እይታዊ የድምጽ መልዕክትን ማዘመን አይቻልም"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"አሁንም ቢሆን የድምጽ መልዕክትን ለመፈተሽ መደወል ይችላሉ።"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"እይታዊ የድምጽ መልዕክትን ማዘመን አይቻልም"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"አሁንም ቢሆን የድምጽ መልዕክትን ለመፈተሽ መደወል ይችላሉ።"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"እይታዊ የድምጽ መልዕክትን ማዘመን አይቻልም"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"አሁንም ቢሆን የድምጽ መልዕክትን ለመፈተሽ መደወል ይችላሉ።"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"የገቢ መልዕክት ሳጥን ሊሞላ ጥቂት ቀርቶታል"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"የገቢ መልዕክት ሳጥንዎ ሙሉ ከሆነ አዲስ የድምጽ መልዕክት መቀበል አይችሉም።"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"አዲስ የድምጽ መልዕክት መቀበል አይቻልም"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"የመልዕክት ሳጥንዎ ሙሉ ነው። አዲስ የድምጽ መልዕክት ለመቀበል የተወሰኑ መልዕክቶችን ለመሰረዝ ይሞክሩ።"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"ትርፍ ማከማቻ እና ምትኬን ያብሩ"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"የእርስዎ የመልእክት ሳጥን ሙሉ ነው። ባዶ ቦታ ነጻ ለማድረግ፣ Google የእርስዎን የድምፅ መልእክቶች ማስተዳደር እና በምትኬ ማስቀመጥ እንዲችል ትርፍ ማከማቻን ያብሩ።"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"ትርፍ ማከማቻ እና ምትኬን ያብሩ"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"የእርስዎ የመልእክት ሳጥን ሙሉ ነው። ባዶ ቦታ ነጻ ለማድረግ፣ Google የእርስዎን የድምፅ መልእክቶች ማስተዳደር እና በምትኬ ማስቀመጥ እንዲችል ትርፍ ማከማቻን ያብሩ።"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"የድምፅ መልዕክት ፒንዎን ያስገቡ"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"በማንኛውም ጊዜ የድምፅ መልዕክትዎ ላይ ለመድረስ ሲደውሉ የድምፅ መልዕክት ፒን ያስፈልግዎታል።"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"የአውሮፕላን ሁነታ ቅንብሮች"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"ፒን ያዘጋጁ"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"እንደገና ይሞክሩ"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"አብራ"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"አይ አመሰግናለሁ"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"አስምር"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"የድምፅ መልዕክት ደውል"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"ወደ ደንበኛ ድጋፍ ይደውሉ"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"የሆነ ችግር ተፈጥሯል"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"ይቅርታ፣ ችግር አጋጥሞናል። እባክዎ ቆይተው እንደገና ይሞክሩ። አሁንም ችግር ካለ፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9001 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"የሆነ ችግር ተፈጥሯል"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"ይቅርታ፣ ችግር አጋጥሞናል። እባክዎ ቆይተው እንደገና ይሞክሩ። አሁንም ችግር ካለ፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9002 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"የሆነ ችግር ተፈጥሯል"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"ይቅርታ፣ ችግር አጋጥሞናል። እባክዎ ቆይተው እንደገና ይሞክሩ። አሁንም ችግር ካለ፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9003 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"ከድምጽ መልዕክት ሳጥንዎ ጋር መገናኘት አይቻልም"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"ይቅርታ፣ ከድምፅ መልዕክት ሳጥንዎ ጋር ለመገናኘት ችግር እየገጠመን ነው። ደካማ የሲግናል ጥንካሬ ያለበት አካባቢ ውስጥ ከሆኑ ጠንካራ ሲግናል እስኪያገኙ ድረስ ይቆዩና እንደገና ይሞክሩ። ይቅርታ፣ ችግር አጋጥሞናል። አሁንም ችግር ካለ፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9004 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"ከድምጽ መልዕክት ሳጥንዎ ጋር መገናኘት አይቻልም"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"ይቅርታ፣ ከድምፅ መልዕክት ሳጥንዎ ጋር ለመገናኘት ችግር እየገጠመን ነው። ደካማ የሲግናል ጥንካሬ ያለበት አካባቢ ውስጥ ከሆኑ ጠንካራ ሲግናል እስኪያገኙ ድረስ ይቆዩና እንደገና ይሞክሩ። አሁንም ችግር ካለ፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9005 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"ከድምጽ መልዕክት ሳጥንዎ ጋር መገናኘት አይቻልም"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"ይቅርታ፣ ከድምፅ መልዕክት ሳጥንዎ ጋር ለመገናኘት ችግር እየገጠመን ነው። ደካማ የሲግናል ጥንካሬ ያለበት አካባቢ ውስጥ ከሆኑ ጠንካራ ሲግናል እስኪያገኙ ድረስ ይቆዩና እንደገና ይሞክሩ። አሁንም ችግር ካለ፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9006 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"የሆነ ችግር ተፈጥሯል"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"ይቅርታ፣ ችግር አጋጥሞናል። እባክዎ ቆይተው እንደገና ይሞክሩ። አሁንም ችግር ካለ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9007 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"የሆነ ችግር ተፈጥሯል"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"ይቅርታ፣ ችግር አጋጥሞናል። እባክዎ ቆይተው እንደገና ይሞክሩ። አሁንም ችግር ካለ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9008 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"የሆነ ችግር ተፈጥሯል"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"ይቅርታ፣ አገልግሎትዎን በማዘጋጀት ላይ ችግር አጋጥሞናል። እባክዎ ቆይተው እንደገና ይሞክሩ። አሁንም ችግር ካለ፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9009 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"ከድምጽ መልዕክት ሳጥንዎ ጋር መገናኘት አይቻልም"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"ይቅርታ፣ በአሁኑ ጊዜ ከድምጽ መልዕክት ሳጥንዎ ጋር መገናኘት አልቻልንም። እባክዎ ቆይተው እንደገና ይሞክሩ። አሁንም ችግር ካለ፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9990 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"የድምፅ መልዕክት ያዘጋጁ"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"በእርስዎ መለያ ላይ የድምፅ መልዕክት አልተዘጋጀም። እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9991 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"የድምፅ መልዕክት"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"ዕይታዊ የድምጽ መልዕክት በዚህ መሳሪያ ላይ ጥቅም ላይ መዋል አይችልም። እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9992 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"የሆነ ችግር ተፈጥሯል"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙ እና የስህተት ቁጥሩ 9993 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"ዕይታዊ የድምጽ መልዕክት"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"የዕይታዊ የድምጽ መልዕት ዝግጅትን ለማጠናቀቅ፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9994 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"የሚታይ የድምጽ መልዕክት"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"የዕይታዊ የድምጽ መልዕት ዝግጅትን ለማጠናቀቅ፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9995 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"የሚታይ የድምጽ መልዕክት"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"ዕይታዊ የድምጽ መልዕትን ለማግበር፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9996 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"የሆነ ችግር ተፈጥሯል"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"የዕይታዊ የድምጽ መልዕት ዝግጅትን ለማጠናቀቅ፣ እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9998 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"ዕይታዊ የድምጽ መልዕክት ተሰናክሏል"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"እባክዎ እይታዊ የድምጽ መልዕክትን ለማግበር የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙ።"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"የሆነ ችግር ተፈጥሯል"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙና የስህተት ቁጥሩ 9997 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"የሆነ ችግር ተፈጥሯል"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙ እና የስህተት ቁጥሩ 9989 እንደሆነ ይንገሯቸው።"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"የሆነ ችግር ተፈጥሯል"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"እባክዎ የደንበኛ አገልግሎትን በ<xliff:g id="NUMBER">%1$s</xliff:g> ላይ ያግኙ እና የስህተት ቁጥሩ 9999 እንደሆነ ይንገሯቸው።"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"ዕይታዊ የድምጽ መልዕክን አብራ"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nዕይታዊ የድምጽ መልዕክትን በማብራት ከVerizon Wireless ውሎች እና ሁኔታዎች ጋር ተስማምተዋል፦\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"ዕይታዊ የድምጽ መልዕክትን አብራ"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"ወደ የድምጽ መልዕክት መደወል ሳያስፈልግዎ መልዕክቶችዎን ይዩ እንዲሁም ያዳምጡ። የድምጽ መልዕክትዎ የጽሁፍ ግልባጮች የቀረቡት በGoogle ነጻ ወደ ጽሁፍ መገልበጥ አገልግሎት ነው። %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"ወደ የድምጽ መልዕክት መደወል ሳያስፈልግዎ መልዕክቶችዎን ይዩ እንዲሁም ያዳምጡ። %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"የበለጠ ለመረዳት"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"የአገልግሎት ውሉ ተቀባይነት ካላገኘ እይታዊ የድምጽ መልዕክት ይወገዳል።"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"እይታዊ የድምጽ መልዕክትን አስወግድ"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"የአገልግሎት ውል ተቀባይነት ካላገኙ፣ የድምጽ መልዕክት ወደ ጽሁፍ መለወጥ ይሰናከላል።"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"የድምጽ መልዕክትን ወደ ጽሁፍ መለወጥን አሰናክል"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"የድምጽ መልዕክት ላይ መድረስ የሚቻለው *86 በመደወል ብቻ ነው። ለመቀጠል አዲስ የድምጽ መልዕክት ፒን ያዘጋጁ።"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"ፒን ያዘጋጁ"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ar/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ar/strings.xml
deleted file mode 100644
index 4978ea1..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ar/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"تنشيط البريد الصوتي المرئي"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"قد لا تتلقّى إشعارات البريد الصوتي حتى يتم تنشيط البريد الصوتي المرئي تمامًا. يمكنك الاتصال بالبريد الصوتي لاسترداد الرسائل الجديدة إلى أن يتم تنشيط البريد الصوتي تمامًا."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"يتعذر تنشيط البريد الصوتي المرئي"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"تأكد من أن هاتفك توجد به اتصال شبكة جوال وحاول مرة أخرى."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"أوقف تشغيل وضع الطائرة وحاول مرة أخرى."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"لا يتوفر اتصال"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"‏لن يتم إعلامك برسائل البريد الصوتي الجديدة. إذا كنت تستخدم شبكة Wi-Fi، فيمكنك التحقق من البريد الصوتي عن طريق إجراء المزامنة الآن."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"لن يتم إعلامك برسائل البريد الصوتي الجديدة. أوقف تشغيل وضع الطائرة لمزامنة بريدك الصوتي."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"يحتاج هاتفك إلى اتصال بيانات جوال للتحقق من البريد الصوتي."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"يتعذر تنشيط البريد الصوتي المرئي"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"لا يزال بإمكانك إجراء الاتصال للتحقق من البريد الصوتي."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"يتعذر تحديث البريد الصوتي المرئي"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"‏حاول مرة أخرى عندما يكون لديك اتصال Wi-Fi أو جوال أفضل. لا يزال بإمكانك الاتصال والتحقق من البريد الصوتي."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"حاول مرة أخرى عندما يكون لديك اتصال جوال أفضل. لا يزال بإمكانك الاتصال والتحقق من البريد الصوتي."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"يتعذر تحديث البريد الصوتي المرئي"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"لا يزال بإمكانك إجراء الاتصال للتحقق من البريد الصوتي."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"يتعذر تحديث البريد الصوتي المرئي"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"لا يزال بإمكانك إجراء الاتصال للتحقق من البريد الصوتي."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"يتعذر تحديث البريد الصوتي المرئي"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"لا يزال بإمكانك إجراء الاتصال للتحقق من البريد الصوتي."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"يتعذر تحديث البريد الصوتي المرئي"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"لا يزال بإمكانك إجراء الاتصال للتحقق من البريد الصوتي."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"البريد الوارد على وشك الامتلاء"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"لن تتمكن من تلقي بريد صوتي جديد إذا امتلأ بريدك الوارد."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"يتعذر تلقي رسائل بريد صوتي جديدة"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"بريدك الوارد ممتلئ. حاول حذف بعض الرسائل لتلقي رسائل بريد صوتي جديدة."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"تشغيل سعة التخزين الإضافية والنسخ الاحتياطي"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"‏صندوق بريدك ممتلئ. للحصول على بعض المساحة، ينبغي تشغيل سعة التخزين الإضافية حتى يتمكن Google من إدارة رسائل البريد الصوتي ونسخها احتياطيًا."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"تشغيل سعة التخزين الإضافية والنسخ الاحتياطي"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"‏صندوق بريدك ممتلئ. للحصول على بعض المساحة، ينبغي تشغيل سعة التخزين الإضافية حتى يتمكن Google من إدارة رسائل البريد الصوتي ونسخها احتياطيًا."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"إعداد رقم التعريف الشخصي للبريد الصوتي"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ستحتاج رقم تعريف شخصي للبريد الصوتي في كل مرة تتصل فيها للوصول إلى بريدك الصوتي."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"إعدادات وضع الطائرة"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"تعيين رقم التعريف الشخصي"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"إعادة المحاولة"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"تشغيل"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"لا، شكرًا"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"مزامنة"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"اتصال بالبريد الصوتي"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"الاتصال بدعم العملاء"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"حدث خطأٌ ما"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"عذرًا، هناك مشكلة. يُرجى إعادة المحاولة لاحقًا. وإذا استمرت المشكلة، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"حدث خطأٌ ما"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"عذرًا، هناك مشكلة. يُرجى إعادة المحاولة لاحقًا. وإذا استمرت المشكلة، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"حدث خطأٌ ما"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"عذرًا، هناك مشكلة. يُرجى إعادة المحاولة لاحقًا. وإذا استمرت المشكلة، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"لا يمكن الاتصال بصندوق بريدك الصوتي"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"عذرًا، هناك مشكلة في الاتصال بصندوق بريدك الصوتي. إذا كانت قوة الإشارة ضعيفةً في منطقتك، فانتظر حتى تصبح الإشارة قويةً ثم أعِد المحاولة. وإذا استمرت المشكلة، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"لا يمكن الاتصال بصندوق بريدك الصوتي"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"عذرًا، هناك مشكلة في الاتصال بصندوق بريدك الصوتي. إذا كانت قوة الإشارة ضعيفةً في منطقتك، فانتظر حتى تصبح الإشارة قويةً ثم أعِد المحاولة. وإذا استمرت المشكلة، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"لا يمكن الاتصال بصندوق بريدك الصوتي"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"عذرًا، هناك مشكلة في الاتصال بصندوق بريدك الصوتي. إذا كانت قوة الإشارة ضعيفةً في منطقتك، فانتظر حتى تصبح الإشارة قويةً ثم أعِد المحاولة. وإذا استمرت المشكلة، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"حدث خطأٌ ما"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"عذرًا، هناك مشكلة. يُرجى إعادة المحاولة لاحقًا. وإذا استمرت المشكلة، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"حدث خطأٌ ما"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"عذرًا، هناك مشكلة. يُرجى إعادة المحاولة لاحقًا. وإذا استمرت المشكلة، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"حدث خطأٌ ما"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"عذرًا، هناك مشكلة في إعداد خدمتك. يُرجى إعادة المحاولة لاحقًا. وإذا استمرت المشكلة، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"لا يمكن الاتصال بصندوق بريدك الصوتي"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"عذرًا، لا يمكننا الاتصال بصندوق بريدك الصوتي حاليًا. يُرجى إعادة المحاولة لاحقًا. وإذا استمرت المشكلة، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"إعداد البريد الصوتي"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"لم يتم إعداد البريد الصوتي في حسابك. يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"بريد صوتي"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"لا يمكن استخدام البريد الصوتي المرئي على هذا الجهاز. يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم برمز الخطأ وهو 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"حدث خطأٌ ما"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"بريد صوتي مرئي"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"لإتمام إعداد البريد الصوتي المرئي، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم برمز الخطأ وهو 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"بريد صوتي مرئي"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"لإتمام إعداد البريد الصوتي المرئي، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم برمز الخطأ وهو 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"بريد صوتي مرئي"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"لتنشيط البريد الصوتي المرئي، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم برمز الخطأ وهو 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"حدث خطأٌ ما"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"لإتمام إعداد البريد الصوتي المرئي، يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم برمز الخطأ وهو 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"تم تعطيل البريد الصوتي المرئي"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> لتنشيط البريد الصوتي المرئي."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"حدث خطأٌ ما"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"حدث خطأٌ ما"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"حدث خطأٌ ما"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"يُرجى الاتصال بخدمة العملاء على الرقم <xliff:g id="NUMBER">%1$s</xliff:g> وإبلاغهم أن رمز الخطأ هو 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"تشغيل البريد الصوتي المرئي"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"‏%1$s\n\nعندما تشغّل البريد الصوتي، فأنت توافق على أحكام وشروط Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"تشغيل البريد الصوتي المرئي"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"‏اطلع على رسائلك واستمع إليها دون الحاجة إلى الاتصال بالبريد الصوتي. يتم تحويل بريدك الصوتي إلى نص بواسطة خدمة تحويل الصوت إلى نص المجانية من Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"‏اطلع على رسائلك واستمع إليها دون الحاجة إلى الاتصال بالبريد الصوتي. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"مزيد من المعلومات"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"سيتم تعطيل البريد الصوتي المرئي في حالة رفض الأحكام والشروط."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"تعطيل البريد الصوتي المرئي"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"سيتم تعطيل نسخ البريد الصوتي في حالة رفض الأحكام والشروط."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"تعطيل نسخ البريد الصوتي"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"يمكن الوصول إلى البريد الصوتي فقط عن طريق طلب *86. ينبغي تعيين رقم تعريف شخصي جديد للبريد الصوتي للمتابعة."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"تعيين رقم التعريف الشخصي"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-az/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-az/strings.xml
deleted file mode 100644
index 7eed2bc..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-az/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Vizual Səsli Mesaj aktiv edilir"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Vizual səsli mesaj tam aktiv edilənə klim səsli mesaj bildirişi ala bilməzsiniz. Səsli mesaj tam aktiv edilənə kimi yeni mesajları əldə etmək üçün səsli poçta zəng edin."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Vizual Səsli Mesaj aktiv edilə bilmir"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Əmin olun ki, telefonun şəbəkə bağlantısı var və yenidən cəhd edin."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Təyyarə rejimini deaktiv edin və yenidən cəhd edin."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Bağlantı yoxdur"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Yeni gələn səsli e-məktublara görə bildiriş almayacaqsınız. Wi-Fi qoşuludursa, sinxronizasiya etməklə səsli e-məktubları yoxlaya bilərsiniz."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Yeni gələn səsli mesajlara görə bildiriş almayacaqsınız. Səsli mesajları sinxronizasiya etmək üçün təyyarə rejimini deaktiv edin."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Səsli e-məktubları yoxlamaq üçün telefonda mobil data bağlantısı olmalıdır."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Vizual Səsli Mesaj aktiv edilə bilmir"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Səsli mesajları yoxlamaq üçün yenə də zəng edə bilərsiniz."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Vizual səsli mesajları yeniləmək olmur"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Wi‑Fi və ya mobil data bağlantısı daha yaxşı olduqda yenidən cəhd edin. Səsli e-məktubları yoxlamaq üçün yenə də zəng edə bilərsiniz."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Mobil data bağlantısı yaxşı olduqda bir daha yoxlayın. Səsli e-məktubları yoxlamaq üçün yenə də zəng edə bilərsiniz."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Vizual səsli mesajları yeniləmək olmur"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Səsli mesajları yoxlamaq üçün yenə də zəng edə bilərsiniz."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Vizual səsli mesajları yeniləmək olmur"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Səsli mesajları yoxlamaq üçün yenə də zəng edə bilərsiniz."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Vizual səsli mesajları yeniləmək olmur"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Səsli mesajları yoxlamaq üçün yenə də zəng edə bilərsiniz."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Vizual səsli mesajları yeniləmək olmur"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Səsli mesajları yoxlamaq üçün yenə də zəng edə bilərsiniz."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Gələnlər qutusu demək olar ki doludur"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Gələnlər qutusu dolu olduqda, yeni səsli mesaj almaq olmayacaq."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Yeni səsli mesaj almaq olmur"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Gələnlər qutusu doludur. Yeni səsli mesaj əldə etmək üçün bəzi mesajları silin."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Əlavə yaddaş və yedəkləməni aktiv edin"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"E-poçt qutusu doludur. Boş yer yaratmaq üçün əlavə yaddaşı aktiv edin, beləliklə Google səsli e-məktub mesajlarını idarə edə və yedəkləyə bilər."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Əlavə yaddaş və yedəkləməni aktiv edin"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"E-poçt qutusu artıq doludur. Boş yer yaratmaq üçün əlavə yaddaşı aktiv edin, beləliklə Google səsli e-məktub mesajlarını idarə edə və yedəkləyə bilər."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Səsli mesaj PIN kodunu ayarlayın"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Zəng etdiyiniz zaman səsli mesaja daxil olmaq üçün PIN koda ehtiyacınız olacaq."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Təyyarə Rejimi Ayarları"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN kodu ayarlayın"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Yenidən cəhd edin"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Aktiv edin"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Xeyr, Təşəkkür edirəm"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinx"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Səsli poçta zəng edin"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Müştəri Xidmətinə zəng edin"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Nəsə Xəta Oldu"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Üzr istəyirik, problem var. Daha sonra cəhd edin. Problem davam edərsə, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Nəsə Xəta Oldu"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Üzr istəyirik, problem var. Daha sonra cəhd edin. Problem davam edərsə, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Nəsə Xəta Oldu"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Üzr istəyirik, problem var. Daha sonra cəhd edin. Problem davam edərsə, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Səsli Poçt qutunuza qoşulmaq olmur"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Üzr istəyirik, səsli poçt qutusuna qoşulmaqda problem var. Əgər hazırda olduğunuz məkanda siqnal zəifdirsə, siqnalın güclənməsini gözləyin və yenidən cəhd edin. Əgər problem davam edərsə, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Səsli Poçt qutunuza qoşulmaq olmur"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Üzr istəyirik, səsli poçt qutusuna qoşulmaqda problem var. Əgər hazırda olduğunuz məkanda siqnal zəifdirsə, siqnalın güclənməsini gözləyin və yenidən cəhd edin. Əgər problem davam edərsə, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Səsli Poçt qutunuza qoşulmaq olmur"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Üzr istəyirik, səsli poçt qutusuna qoşulmaqda problem var. Əgər hazırda olduğunuz məkanda siqnal zəifdirsə, siqnalın güclənməsini gözləyin və yenidən cəhd edin. Əgər problem davam edərsə, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Nəsə Xəta Oldu"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Üzr istəyirik, problem var. Daha sonra cəhd edin. Problem davam edərsə, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Nəsə Xəta Oldu"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Üzr istəyirik, problem var. Daha sonra cəhd edin. Problem davam edərsə, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Nəsə Xəta Oldu"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Üzr istəyirik, xidməti quraşdıra bilmirik. Problem davam edərsə, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Səsli Poçt qutunuza qoşulmaq olmur"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Üzr istəyirik, hazırda səsli poçt qutusuna daxil ola bilmirik. Daha sonra cəhd edin. Problem davam edərsə, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Səsli Poçt Ayarlayın"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Səsli poçt hesabınızda quraşdırılmayıb. Lütfən, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"E-poçt"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Görünən səsli e-poçt bu cihazda istifadə oluna bilməz. <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edib xəta kodunun 9992 olduğunu bildirin."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Nəsə Xəta Oldu"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Lütfən, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Görünən səsli e-poçt"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Görünən Səsli e-poçtun ayarlanmasını tamamlamaq üçün <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edib xəta kodunun 9994 olduğunu bildirin."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Görünən səsli e-poçt"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Görünən Səsli e-poçtun ayarlanmasını tamamlamaq üçün <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edib xəta kodunun 9995 olduğunu bildirin."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Görünən səsli e-poçt"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Görünən səsli e-poçtu aktiv etmək üçün <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edib xəta kodunun 9996 olduğunu bildirin."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Nəsə Xəta Oldu"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Görünən səsli e-poçtun ayarlanmasını tamamlamaq üçün <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidməti ilə əlaqə saxlayıb xəta kodunun 9998 olduğunu bildirin."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Görünən səsli e-poçt deaktivdir"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Vizual səsli mesajı aktiv etmək üçün <xliff:g id="NUMBER">%1$s</xliff:g> ilə Müştəri Xidmətinə zəng edin."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Nəsə Xəta Oldu"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Lütfən, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Nəsə Xəta Oldu"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Lütfən, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Nəsə Xəta Oldu"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Lütfən, <xliff:g id="NUMBER">%1$s</xliff:g> nömrəsi ilə Müştəri Xidmətinə zəng edin. Xəta kodu 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Görünən Səsli E-poçtu aktiv edin"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nGörünən Səsli E-poçtu aktiv etməklə Verizon Wireless\'in şərt və qaydaları ilə razılaşırsınız:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Görünən səsli e-poçtu aktiv edin"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Səsli e-poçta zəng etmədən mesajlara baxın və qulaq asın. Səsli e-məktubun transkripsiyası Google\'un ödənişsiz transkripsiya xidməti tərəfindən təmin edilir. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Səsli e-poçta zəng etmədən mesajlara baxın və qulaq asın. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Ətraflı məlumat"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Şərtlər və qaydalar rədd edilsə, vizual səsli poçt deaktiv ediləcək."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Vizual səsli poçtu deaktiv edin"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Şərt və qaydalar rədd edilərsə, səsli e-poçt transkripsiyası deaktiv ediləcək."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Səsli e-poçt transkripsiyasını deaktiv edin"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Səsli məktub yalnız *86 nömrəsinə zəng etməklə mümkündür. Davam etmək üçün yeni səsli məktub PIN kodu təyin edin."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN kodu ayarlayın"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 915b7e8..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktivira se vizuelna govorna pošta"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Možda nećete dobijati obaveštenja o govornoj pošti dok potpuno ne aktivirate vizuelnu govornu poštu. Pozovite govornu poštu da biste preuzeli nove poruke dok govorna pošta ne bude potpuno aktivirana."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Aktiviranje vizuelne govorne pošte nije uspelo"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Proverite da li telefon ima vezu preko mobilne mreže i probajte ponovo."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Isključite režim rada u avionu i pokušajte ponovo."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Veza nije uspostavljena"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Nećete dobijati obaveštenja o novim govornim porukama. Ako ste na Wi‑Fi mreži, možete da sinhronizujete da biste proverili govornu poštu."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Nećete dobijati obaveštenja o novim govornim porukama. Isključite režim rada u avionu da biste sinhronizovali govornu poštu."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Telefonu je za proveru govorne pošte potrebna mobilna veza za prenos podataka."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Aktiviranje vizuelne govorne pošte nije uspelo"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"I dalje možete da pozovete govornu poštu da biste je proverili."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Ažuriranje vizuelne govorne pošte nije uspelo"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Probajte ponovo kad budete imali bolju Wi‑Fi ili mobilnu vezu za prenos podataka. I dalje možete da pozovete govornu poštu da biste je proverili."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Probajte ponovo kad budete imali bolju mobilnu vezu za prenos podataka. I dalje možete da pozovete govornu poštu da biste je proverili."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Ažuriranje vizuelne govorne pošte nije uspelo"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"I dalje možete da pozovete govornu poštu da biste je proverili."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Ažuriranje vizuelne govorne pošte nije uspelo"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"I dalje možete da pozovete govornu poštu da biste je proverili."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Ažuriranje vizuelne govorne pošte nije uspelo"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"I dalje možete da pozovete govornu poštu da biste je proverili."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Ažuriranje vizuelne govorne pošte nije uspelo"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"I dalje možete da pozovete govornu poštu da biste je proverili."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Prijemno sanduče je skoro puno"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Nećete moći da primate novu govornu poštu ako je prijemno sanduče puno."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Ne možete da primate nove govorne poruke"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Prijemno sanduče je puno. Izbrišite neke poruke da biste primili novu govornu poštu."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Uključite dodatni memorijski prostor i rezervne kopije"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Poštansko sanduče je puno. Da biste oslobodili prostor, uključite dodatni memorijski prostor, pa će Google moći da upravlja vašim govornim porukama i pravi njihove rezervne kopije."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Uključite dodatni memorijski prostor i rezervne kopije"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Poštansko sanduče je skoro puno. Da biste oslobodili prostor, uključite dodatni memorijski prostor, pa će Google moći da upravlja vašim govornim porukama i pravi njihove rezervne kopije."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Podesite PIN govorne pošte"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN govorne pošte vam treba svaki put kad upućujete poziv da biste pristupili govornoj pošti."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Podešavanja režima rada u avionu"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Podesi PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Probaj ponovo"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Uključi"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Ne, hvala"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinhronizuj"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Pozovi govornu poštu"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Pozovi korisničku podršku"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Nešto nije u redu"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Žao nam je, naišli smo na problem. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Nešto nije u redu"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Žao nam je, naišli smo na problem. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Nešto nije u redu"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Žao nam je, naišli smo na problem. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Povezivanje sa sandučetom govorne pošte nije uspelo"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Žao nam je, imamo probleme pri povezivanju sa sandučetom govorne pošte. Ako ste u oblasti sa slabim signalom, sačekajte dok ne budete imali jak signal i pokušajte ponovo. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Povezivanje sa sandučetom govorne pošte nije uspelo"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Žao nam je, imamo probleme pri povezivanju sa sandučetom govorne pošte. Ako ste u oblasti sa slabim signalom, sačekajte dok ne budete imali jak signal i pokušajte ponovo. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Povezivanje sa sandučetom govorne pošte nije uspelo"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Žao nam je, imamo probleme pri povezivanju sa sandučetom govorne pošte. Ako ste u oblasti sa slabim signalom, sačekajte dok ne budete imali jak signal i pokušajte ponovo. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Nešto nije u redu"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Žao nam je, naišli smo na problem. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Nešto nije u redu"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Žao nam je, naišli smo na problem. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Nešto nije u redu"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Žao nam je, imamo probleme pri podešavanju usluge. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Povezivanje sa sandučetom govorne pošte nije uspelo"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Žao nam je, trenutno ne možemo da se povežemo sa sandučetom govorne pošte. Probajte ponovo kasnije. Ako i dalje bude problema, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Podesite govornu poštu"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Govorna pošta nije podešena na nalogu. Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Govorna pošta"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Ne možete da koristite vizuelnu govornu poštu na ovom uređaju. Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Nešto nije u redu"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Vizuelna govorna pošta"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Da biste završili podešavanje vizuelne govorne pošte, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Vizuelna govorna pošta"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Da biste završili podešavanje vizuelne govorne pošte, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Vizuelna govorna pošta"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Da biste aktivirali vizuelnu govornu poštu, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Nešto nije u redu"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Da biste završili podešavanje vizuelne govorne pošte, kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Vizuelna govorna pošta je onemogućena"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> da biste aktivirali vizuelnu govornu poštu."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Nešto nije u redu"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Nešto nije u redu"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Nešto nije u redu"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Kontaktirajte korisničku podršku na <xliff:g id="NUMBER">%1$s</xliff:g> i recite im da je kôd greške 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Uključite vizuelnu govornu poštu"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nAko uključite vizuelnu govornu poštu, prihvatate uslove i odredbe za Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Uključite vizuelnu govornu poštu"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Pregledajte i slušajte poruke bez pozivanja govorne pošte. Transkripte govornih poruka dobijate pomoću Google-ove besplatne usluge transkripcije. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Pregledajte i slušajte poruke bez pozivanja govorne pošte. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Saznajte više"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Ako odbijete uslove i odredbe, onemogućićete vizuelnu govornu poštu."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Onemogućite vizuelnu govornu poštu"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Transkripcija govorne pošte će biti onemogućena ako se uslovi i odredbe odbiju."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Onemogućite transkripciju govorne pošte"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Govornoj pošti ćete moći da pristupite samo ako pozovete *86. Podesite novi PIN kôd govorne pošte da biste nastavili."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Podesite PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-be/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-be/strings.xml
deleted file mode 100644
index 9670385..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-be/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Актывацыя візуальнай галасавой пошты"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Вы можаце не атрымліваць апавяшчэнні галасавой пошты, пакуль візуальная галасавая пошта не будзе поўнасцю актывавана. Каб атрымліваць новыя паведамленні да завяршэння актывацыі, выклікайце галасавую пошту."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Немагчыма актываваць візуальную галасавую пошту"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Пераканайцеся, што ваш тэлефон падключаны да мабільнай сеткі і паўтарыце спробу."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Выключыце рэжым палёту і паўтарыце спробу."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Няма падключэння"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Вас не будуць апавяшчаць аб новых галасавых паведамленнях. Калі вы падключаны да Wi-Fi, можаце праверыць галасавую пошту шляхам сінхранізацыі."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Вас не будуць апавяшчаць аб новых галасавых паведамленнях. Выключыце рэжым палёту і сінхранізуйце сваю галасавую пошту."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Каб праверыць галасавую пошту, вашаму тэлефону патрэбна падключэнне да мабільнай перадачы даных."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Немагчыма актываваць візуальную галасавую пошту"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Вы надалей можаце пазваніць, каб праверыць галасавую пошту."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Немагчыма абнавіць візуальную галасавую пошту"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Паўтарыце спробу, калі падключэнне да Wi-Fi або да мабільнай перадачы даных палепшыцца. Вы надалей можаце пазваніць, каб праверыць галасавую пошту."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Паўтарыце спробу, калі паша падключэнне да мабільнай перадачы даных палепшыцца. Вы надалей можаце пазваніць, каб праверыць галасавую пошту."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Немагчыма абнавіць візуальную галасавую пошту"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Вы надалей можаце пазваніць, каб праверыць галасавую пошту."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Немагчыма абнавіць візуальную галасавую пошту"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Вы надалей можаце пазваніць, каб праверыць галасавую пошту."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Немагчыма абнавіць візуальную галасавую пошту"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Вы надалей можаце пазваніць, каб праверыць галасавую пошту."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Немагчыма абнавіць візуальную галасавую пошту"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Вы надалей можаце пазваніць, каб праверыць галасавую пошту."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Папка ўваходных амаль запоўнена"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Вы не зможаце атрымліваць новыя галасавыя паведамленні, калі ваша папка ўваходных поўная."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Немагчыма атрымліваць новыя галасавыя паведамленні"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Ваша папка ўваходных запоўнена. Паспрабуйце выдаліць некалькі паведамленняў, каб атрымаць новую галасавую пошту."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Уключыць дадатковае сховішча і рэзервовае капіраванне"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Ваша паштовая скрыня запоўнена. Каб вызваліць месца, уключыце дадатковае сховішча, каб Google мог кіраваць вашымі паведамленнямі галасавой пошты і рабіць іх рэзервовую копію."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Уключыць дадатковае сховішча і рэзервовае капіраванне"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Ваша паштовая скрыня амаль запоўнена. Каб вызваліць месца, уключыце дадатковае сховішча, каб Google мог кіраваць вашымі паведамленнямі галасавой пошты і рабіць іх рэзервовую копію."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Наладзьце PIN-код галасавой пошты"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Вам спатрэбіцца PIN-код галасавой пошты заўжды, калі вы тэлефануеце на сваю галасавую пошту."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Налады рэжыму палёту"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Наладзіць PIN-код"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Паўтарыце спробу"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Уключыць"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Не, дзякуй"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Сінхранізацыя"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Выклік на галасавую пошту"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Выклік на службу падтрымкі"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Нешта пайшло не так"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"На жаль, узнікла праблема. Паўтарыце спробу пазней. Калі праблема не знікне, звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Нешта пайшло не так"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"На жаль, узнікла праблема. Паўтарыце спробу пазней. Калі праблема не знікне, звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Нешта пайшло не так"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"На жаль, узнікла праблема. Паўтарыце спробу пазней. Калі праблема не знікне, звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Не ўдалося падключыцца да вашай галасавой скрынкі"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"На жаль, узнікла праблема з падключэннем да вашай галасавой скрынкі. Калі вы знаходзіцеся ў месцы з дрэнным сігналам, пачакайце, калі сігнал стане лепшым, і паўтарыце спробу. Калі праблема не знікне, звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Не ўдалося падключыцца да вашай галасавой скрынкі"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"На жаль, узнікла праблема з падключэннем да вашай галасавой скрынкі. Калі вы знаходзіцеся ў месцы з дрэнным сігналам, пачакайце, калі сігнал стане лепшым, і паўтарыце спробу. Калі праблема не знікне, звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Не ўдалося падключыцца да вашай галасавой скрынкі"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"На жаль, узнікла праблема з падключэннем да вашай галасавой скрынкі. Калі вы знаходзіцеся ў месцы з дрэнным сігналам, пачакайце, калі сігнал стане лепшым, і паўтарыце спробу. Калі праблема не знікне, звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Нешта пайшло не так"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"На жаль, узнікла праблема. Паўтарыце спробу пазней. Калі праблема не знікне, звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Нешта пайшло не так"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"На жаль, узнікла праблема. Паўтарыце спробу пазней. Калі праблема не знікне, звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Нешта пайшло не так"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"На жаль, узнікла праблема з наладай сэрвісу. Паўтарыце спробу пазней. Калі праблема не знікне, звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Не ўдалося падключыцца да вашай галасавой скрынкі"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"На жаль, узнікла праблема з падключэннем да вашай галасавой скрынкі. Паўтарыце спробу пазней. Калі праблема не знікне, звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Наладзіць галасавую пошту"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Галасавая пошта не наладжана для вашага ўліковага запісу. Звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Галасавая пошта"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Галасавая пошта не можа выкарыстоўвацца на гэтай прыладзе. Звяжыцеся са службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Нешта пайшло не так"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Візуальная галасавая пошта"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Каб завяршыць наладжванне візуальнай галасавой пошты, звяжыцеся са службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Візуальная галасавая пошта"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Каб завяршыць наладжванне візуальнай галасавой пошты, звяжыцеся са службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Візуальная галасавая пошта"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Каб актываваць візуальную галасавую пошту, звяжыцеся са службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Нешта пайшло не так"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Каб завяршыць наладжванне візуальнай галасавой пошты, звяжыцеся са службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Візуальная галасавая пошта адключаная"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Каб актываваць візуальную галасавую пошту, звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Нешта пайшло не так"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Нешта пайшло не так"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Нешта пайшло не так"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Звяжыцеся са Службай падтрымкі па нумары <xliff:g id="NUMBER">%1$s</xliff:g> і паведаміце код памылкі 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Уключыць візуальную галасавую пошту"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nУключэнне візуальнай галасавой пошты азначае, што вы згаджаецеся з умовамі Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Уключыць візуальную галасавую пошту"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Праглядайце і праслухоўвайце паведамленні без званкоў на галасавую пошту. Google бясплатна расшыфруе іх і запіша як тэкст. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Праглядайце і праслухоўвайце паведамленні без званкоў на галасавую пошту. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Даведацца больш"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Без згоды з правіламі і ўмовамі візуальная галасавая пошта будзе адключана."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Адключыць візуальную галасавую пошту"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Без згоды з правіламі і ўмовамі транскрыпцыя галасавой пошты будзе адключана."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Адключыць транскрыпцыю галасавой пошты"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Галасавая пошта даступна толькі па выкліку на нумар *86. Каб працягнуць, задайце новы PIN-код галасавой пошты."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Задаць PIN-код"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-bg/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-bg/strings.xml
deleted file mode 100644
index e0edf1c..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-bg/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Визуалната гласова поща се активира"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Възможно е да не получавате известия за гласова поща, докато визуалната гласова поща не бъде напълно активирана. Обаждайте се на номера за гласова поща, за да получавате нови съобщения, докато гласовата поща не е активирана."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Визуалната гласова поща не може да се активира"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Проверете дали телефонът ви има връзка с мобилната мрежа и опитайте отново."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Изключете самолетния режим и опитайте отново."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Няма връзка"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Няма да бъдете известявани за нови гласови съобщения. Ако използвате Wi-Fi, можете да проверите за гласова поща, като синхронизирате сега."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Няма да бъдете известявани за нови гласови съобщения. Изключете самолетния режим, за да синхронизирате гласовата си поща."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"За да проверите гласовата поща, телефонът ви трябва да използва мобилна връзка за данни."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Визуалната гласова поща не може да се активира"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Все пак можете да проверите гласовата поща с обаждане."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Визуалната гласова поща не може да се актуализира."</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Опитайте отново, когато имате по-добра Wi-Fi връзка или мобилна връзка за данни. Пак можете да проверите гласовата си поща чрез обаждане."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Опитайте отново, когато имате по-добра мобилна връзка за данни. Пак можете да проверите гласовата си поща чрез обаждане."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Визуалната гласова поща не може да се актуализира."</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Все пак можете да проверите гласовата поща с обаждане."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Визуалната гласова поща не може да се актуализира."</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Все пак можете да проверите гласовата поща с обаждане."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Визуалната гласова поща не може да се актуализира."</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Все пак можете да проверите гласовата поща с обаждане."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Визуалната гласова поща не може да се актуализира."</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Все пак можете да проверите гласовата поща с обаждане."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Входящата поща е почти пълна"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Няма да можете да получавате нова гласова поща, ако входящата ви поща е пълна."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Не могат да се получават нови гласови съобщения"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Входящата ви поща е пълна. Опитайте да изтриете съобщения, за да получавате нова гласова поща."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Включване на допълнително хранилище и създаване на резервно копие"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Пощенската ви кутия е пълна. За да освободите място, включете допълнително хранилище, така че Google да може да управлява и създаде резервно копие на съобщенията в гласовата ви поща."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Включване на допълнително хранилище и създаване на резервно копие"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Пощенската ви кутия е почти пълна. За да освободите място, включете допълнително хранилище, така че Google да може да управлява и създаде резервно копие на съобщенията в гласовата ви поща."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Задайте ПИН за гласовата си поща"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Ще ви е необходим ПИН за гласовата поща при всяко обаждане за достъп до съобщенията ви в нея."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Настройки за самолетен режим"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Задаване на ПИН"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Нов опит"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Включване"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Не, благодаря"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Синхронизиране"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Обаждане до гласовата поща"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Свържете се с екипа за поддръжка на клиенти"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Нещо се обърка"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"За съжаление, възникна проблем. Моля, опитайте отново по-късно. Ако проблемът все още е налице, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Нещо се обърка"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"За съжаление, възникна проблем. Моля, опитайте отново по-късно. Ако проблемът все още е налице, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Нещо се обърка"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"За съжаление, възникна проблем. Моля, опитайте отново по-късно. Ако проблемът все още е налице, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Не може да се установи връзка с гласовата ви пощенска кутия"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"За съжаление, възникнаха проблеми при осъществяването на връзка с гласовата ви пощенска кутия. Ако се намирате в зона със слаб сигнал, изчакайте, докато не се усили, и опитайте отново. Ако проблемът все още е налице, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Не може да се установи връзка с гласовата ви пощенска кутия"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"За съжаление, възникнаха проблеми при осъществяването на връзка с гласовата ви пощенска кутия. Ако се намирате в зона със слаб сигнал, изчакайте, докато не се усили, и опитайте отново. Ако проблемът все още е налице, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Не може да се установи връзка с гласовата ви пощенска кутия"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"За съжаление, възникнаха проблеми при осъществяването на връзка с гласовата ви пощенска кутия. Ако се намирате в зона със слаб сигнал, изчакайте, докато не се усили, и опитайте отново. Ако проблемът все още е налице, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Нещо се обърка"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"За съжаление, възникна проблем. Моля, опитайте отново по-късно. Ако проблемът все още е налице, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Нещо се обърка"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"За съжаление, възникна проблем. Моля, опитайте отново по-късно. Ако проблемът все още е налице, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Нещо се обърка"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"За съжаление, имаме проблеми с настройването на устройството ви. Моля, опитайте отново по-късно. Ако проблемът все още е налице, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Не може да се установи връзка с гласовата ви пощенска кутия"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"За съжаление, имаме проблеми с осъществяването на връзка с гласовата ви пощенска кутия в момента. Моля, опитайте отново по-късно. Ако проблемът все още е налице, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Настройване на гласова поща"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Гласовата поща не е настроена за профила ви. Моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Гласова поща"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"На това устройство не може да се използва визуална гласова поща. Моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Нещо се обърка"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Визуална гласова поща"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"За да завършите настройването на визуалната гласова поща, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Визуална гласова поща"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"За да завършите настройването на визуалната гласова поща, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Визуална гласова поща"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"За да активирате визуалната гласова поща, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Нещо се обърка"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"За да завършите настройването на визуалната гласова поща, моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Визуалната гласова поща е декативирана"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Моля, свържете се екипа за обслужване на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g>, за да активирате визуалната гласова поща."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Нещо се обърка"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Нещо се обърка"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Нещо се обърка"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Моля, свържете се с екипа за поддръжка на клиенти на телефон <xliff:g id="NUMBER">%1$s</xliff:g> и кажете, че кодът на грешката е 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Включване на визуалната гласова поща"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nВключвайки визуалната гласова поща, приемате общите условия на Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Включване на визуалната гласова поща"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Виждайте и слушайте съобщенията си, без да трябва да се обаждате до гласовата поща. Преписите на гласовата ви поща се предоставят от безплатната услуга на Google за преписи. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Виждайте и слушайте съобщенията си, без да трябва да се обаждате до гласовата поща. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Научете повече"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Ако отхвърлите Общите условия, визуалната гласова поща ще бъде деактивирана."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Деактивиране на визуалната гласова поща"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Ако отхвърлите Общите условия, създаването на преписи на гласовите съобщения ще бъде деактивирано."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Деактивиране на преписите на гласовите съобщения"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Ще имате достъп до гласовата поща само когато наберете *86. За да продължите, задайте нов ПИН за гласовата поща."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Задаване на ПИН"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-bn/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-bn/strings.xml
deleted file mode 100644
index 33290da..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-bn/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"ভিজ্যুয়াল ভয়েসমেল সক্রিয়করণ"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"ভিজ্যুয়াল ভয়েসমেল সম্পূর্ণরূপে সক্রিয় না করা পর্যন্ত আপনি ভয়েসমেল সংক্রান্ত কোনো বিজ্ঞপ্তি নাও পেতে পারেন৷ ভয়েসমেল সম্পূর্ণরূপে সক্রিয় না হওয়া পর্যন্ত নতুন বার্তাগুলিকে পুনরুদ্ধার করতে ভয়েসমেলে কল করুন৷"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"ভিজ্যুয়াল ভয়েসমেল সক্রিয় করবেন না"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"আপনার ফোনে কোনো মোবাইল নেটওয়ার্ক সংযোগ আছে কিনা নিশ্চিত করে আবার চেষ্টা করুন।"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"বিমান মোড বন্ধ করুন এবং আবার চেষ্টা করুন।"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"কোনো সংযোগ নেই"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"আপনাকে নতুন ভয়েসমেলগুলির জন্য সূচিত করা হবে না। আপনি ওয়াই-ফাই ব্যবহার করলে, এখনই সিঙ্ক করে ভয়েসমেল চেক করতে পারেন।"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"আপনাকে নতুন ভয়েসমেলগুলির জন্য সূচিত করা হবে না। আপনার ভয়েসমেলে সিঙ্ক করার জন্য বিমান মোড বন্ধ করুন।"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"ভয়েসমেল চেক করার জন্য আপনার ফোনের একটি মোবাইল ডেটা সংযোগের প্রয়োজন।"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"ভিজ্যুয়াল ভয়েসমেল সক্রিয় করবেন না"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"আপনি এখনও ভয়েসমেল চেক করার জন্য কল করতে পারেন।"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"ভিজ্যুয়াল ভয়েসমেল আপডেট করা যাচ্ছে না"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"যখন আপনার ওয়াই-ফাই অথবা মোবাইল ডেটা সংযোগ ভালো থাকবে তখন আবার চেষ্টা করুন। আপনি এখনও ভয়েসমেল চেক করার জন্য কল করতে পারেন।"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"মোবাইল ডেটা সংযোগ ভালো থাকবে তখন আবার চেষ্টা করুন। আপনি এখনও ভয়েসমেল চেক করার জন্য কল করতে পারেন।"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"ভিজ্যুয়াল ভয়েসমেল আপডেট করা যাচ্ছে না"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"আপনি এখনও ভয়েসমেল চেক করার জন্য কল করতে পারেন।"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"ভিজ্যুয়াল ভয়েসমেল আপডেট করা যাচ্ছে না"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"আপনি এখনও ভয়েসমেল চেক করার জন্য কল করতে পারেন।"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"ভিজ্যুয়াল ভয়েসমেল আপডেট করা যাচ্ছে না"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"আপনি এখনও ভয়েসমেল চেক করার জন্য কল করতে পারেন।"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"ভিজ্যুয়াল ভয়েসমেল আপডেট করা যাচ্ছে না"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"আপনি এখনও ভয়েসমেল চেক করার জন্য কল করতে পারেন।"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"ইনবক্স প্রায় ভর্তি রয়েছে"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"যদি আপনার ইনবক্সে পূর্ণ থাকে তাহলে আপনি নতুন ভয়েসমেল পেতে সক্ষম হবেন না।"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"নতুন ভয়েসমেলগুলি গ্রহণ করতে পারবেন না"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"আপনার ইনবক্স পূর্ণ। নতুন ভয়েসমেল পেতে কিছু বার্তা মুছে ফেলার চেষ্টা করুন।"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"অতিরিক্ত সঞ্চয়স্থান এবং ব্যাক আপ চালু করুন"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"আপনার মেলবক্স পূর্ণ। স্থান খালি করতে, অতিরিক্ত সঞ্চয়স্থান চালু করুন যাতে Google আপনার ভয়েসমেল বার্তাগুলি পরিচালনা করতে এবং ব্যাক আপ নিতে পারে।"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"অতিরিক্ত সঞ্চয়স্থান এবং ব্যাক আপ চালু করুন"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"আপনার মেলবক্স প্রায় পূর্ণ। স্থান খালি করতে, অতিরিক্ত সঞ্চয়স্থান চালু করুন যাতে Google আপনার ভয়েসমেল বার্তাগুলি পরিচালনা করতে এবং ব্যাক আপ নিতে পারে।"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"আপনার ভয়েসমেল পিন সেট করুন"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"যে কোনো সময়ে আপনার ভয়েসমেল অ্যাক্সেস করার জন্য আপনার একটি ভয়েসমেল পিন প্রয়োজন৷"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"বিমান মোড সেটিংস"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"পিন সেট করুন"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"আবার চেষ্টা করুন"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"চালু করুন"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"না থাক"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"সমন্বয় করুন"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"ভয়েসমেলে কল করুন"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"কাস্টমার সমর্থনে কল করুন"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"কিছু ভুল হয়েছে"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"দুঃখিত, আমরা একটি সমস্যার সম্মুখীন হয়েছি৷ অনুগ্রহ করে আবার পরে চেষ্টা করুন৷ যদি তখনো সমস্যাটি থেকে থাকে, তাহলে অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯০০১৷"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"কিছু ভুল হয়েছে"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"দুঃখিত, আমরা একটি সমস্যার সম্মুখীন হয়েছি৷ অনুগ্রহ করে আবার পরে চেষ্টা করুন৷ যদি তখনো সমস্যাটি থেকে থাকে, তাহলে অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯০০২৷"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"কিছু ভুল হয়েছে"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"দুঃখিত, আমরা একটি সমস্যার সম্মুখীন হয়েছি৷ অনুগ্রহ করে আবার পরে চেষ্টা করুন৷ যদি তখনো সমস্যাটি থেকে থাকে, তাহলে অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯০০৩৷"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"আপনার ভয়েস মেলবক্সের সাথে সংযুক্ত করা যাবে না"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"দুঃখিত, আপনার ভয়েস মেলবক্সের সাথে সংযুক্ত করার সময়ে আমাদের সমস্যা হচ্ছে৷ আপনি যদি একটি দুর্বল সিগন্যালযুক্ত এলাকায় থাকেন, তাহলে জোরালো সিগন্যাল না পাওয়া পর্যন্ত অপেক্ষা করুন এবং আবার চেষ্টা করুন৷ যদি তখনো সমস্যাটি থেকে থাকে, তাহলে অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯০০৪৷"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"আপনার ভয়েস মেলবক্সের সাথে সংযুক্ত করা যাবে না"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"দুঃখিত, আপনার ভয়েস মেলবক্সের সাথে সংযুক্ত করার সময়ে আমাদের সমস্যা হচ্ছে৷ আপনি যদি একটি দুর্বল সিগন্যালযুক্ত এলাকায় থাকেন, তাহলে জোরালো সিগন্যাল না পাওয়া পর্যন্ত অপেক্ষা করুন এবং আবার চেষ্টা করুন৷ যদি তখনো সমস্যাটি থেকে থাকে, তাহলে অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯০০৫৷"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"আপনার ভয়েস মেলবক্সের সাথে সংযুক্ত করা যাবে না"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"দুঃখিত, আপনার ভয়েস মেলবক্সের সাথে সংযুক্ত করার সময়ে আমাদের সমস্যা হচ্ছে৷ আপনি যদি একটি দুর্বল সিগন্যালযুক্ত এলাকায় থাকেন, তাহলে জোরালো সিগন্যাল না পাওয়া পর্যন্ত অপেক্ষা করুন এবং আবার চেষ্টা করুন৷ যদি তখনো সমস্যাটি থেকে থাকে, তাহলে অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯০০৬৷"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"কিছু ভুল হয়েছে"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"দুঃখিত, আমরা একটি সমস্যার সম্মুখীন হয়েছি৷ অনুগ্রহ করে আবার পরে চেষ্টা করুন৷ যদি তখনো সমস্যাটি থেকে থাকে, তাহলে অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯০০৭৷"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"কিছু ভুল হয়েছে"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"দুঃখিত, আমরা একটি সমস্যার সম্মুখীন হয়েছি৷ অনুগ্রহ করে আবার পরে চেষ্টা করুন৷ যদি তখনো সমস্যাটি থেকে থাকে, তাহলে অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯০০৮৷"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"কিছু ভুল হয়েছে"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"দুঃখিত, আপনার পরিষেবার সেট আপ করার সময়ে আমাদের সমস্যা হচ্ছে৷ অনুগ্রহ করে আবার পরে চেষ্টা করুন৷ যদি তখনো সমস্যাটি থেকে থাকে, তাহলে অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯০০৯৷"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"আপনার ভয়েস মেলবক্সের সাথে সংযুক্ত করা যাবে না"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"দুঃখিত, আমরা আপনার ভয়েস মেলবক্সের সাথে এই সময়ে সংযুক্ত করতে পারছি না৷ অনুগ্রহ করে আবার পরে চেষ্টা করুন৷ যদি তখনো সমস্যাটি থেকে থাকে, তাহলে অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯৯৯০৷"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"ভয়েসমেল সেট-আপ করুন"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"আপনার অ্যাকাউন্টে ভয়েসমেলের সেট আপ করা নেই৷ অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯৯৯১৷"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"ভয়েসমেল"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"এই ডিভাইসটিতে ভিজুয়াল ভয়েসমেল ব্যবহার করা যাবে না। অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> নম্বরে কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হল ৯৯৯২৷"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"কিছু ভুল হয়েছে"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯৯৯৩৷"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"ভিজুয়াল ভয়েসমেল"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"ভিজুয়াল ভয়েসমেলের সেট-আপ সম্পূর্ণ করতে, অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> নম্বরে কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হল ৯৯৯৪৷"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"ভিজুয়াল ভয়েসমেল"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"ভিজুয়াল ভয়েসমেলের সেট-আপ সম্পূর্ণ করতে, অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> নম্বরে কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হল ৯৯৯৫।"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"ভিজুয়াল ভয়েসমেল"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"ভিজুয়াল ভয়েসমেল সক্রিয় করতে, অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> নম্বরে কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হল ৯৯৯৬৷"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"কিছু ভুল হয়েছে"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"ভিজুয়াল ভয়েসমেলের সেট-আপ সম্পূর্ণ করতে, অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> নম্বরে কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হল ৯৯৯৪৷"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"ভিজুয়াল ভয়েসমেল অক্ষম রয়েছে"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"ভিজ্যুয়াল ভয়েসমেলকে সক্রিয় করতে, অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন৷"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"কিছু ভুল হয়েছে"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯৯৯৭৷"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"কিছু ভুল হয়েছে"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯৯৮৯৷"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"কিছু ভুল হয়েছে"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"অনুগ্রহ করে <xliff:g id="NUMBER">%1$s</xliff:g> এ কল করে গ্রাহক পরিষেবার সাথে যোগাযোগ করুন এবং তাদের জানান যে ত্রুটি কোডটি হলো ৯৯৯৯৷"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"ভিজুয়াল ভয়েসমেল চালু করুন"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\n ভিজুয়াল ভয়েসমেল চালু করার মাধ্যমে আপনি Verizon Wireless এর নিয়ম ও শর্তাবলীতে সম্মতি দেন:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"ভিজুয়াল ভয়েসমেল চালু করুন"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"ভয়েসমেলে কল না করেই আপনার মেসেজ দেখুন এবং শুনুন। Google এর ফ্রি ট্রান্সক্রিপশন পরিষেবার মাধ্যমে আপনার ভয়েসমেলের ট্রান্সক্রিপ্ট দেওয়া হয়। %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"ভয়েসমেলে কল না করেই আপনার মেসেজ দেখুন এবং শুনুন। %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"আরও জানুন"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"নিবন্ধন এবং শর্তাদি অস্বীকার করা হলে ভিজ্যুয়াল ভয়েসমেল অক্ষম করা হবে৷"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"ভিজ্যুয়াল ভয়েসমেল অক্ষম করুন"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"নিবন্ধন এবং শর্তাদি অস্বীকার করা হলে ভিজ্যুয়াল ভয়েসমেলের ট্রান্সক্রিপশান অক্ষম করা হবে৷"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"ভয়েসমেলের ট্রান্সক্রিপশান অক্ষম করুন"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"শুধুমাত্র *৮৬ নম্বরে কল করেই ভয়েসমেল অ্যাক্সেস করা যাবে৷ এগিয়ে যাওয়ার জন্য একটি নতুন ভয়েসমেলের পিন সেট করুন৷"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"পিন সেট করুন"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-bs/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-bs/strings.xml
deleted file mode 100644
index d523178..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-bs/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktiviranje vizuelne govorne pošte"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Možda nećete primati obavještenja o govornoj pošti dok se vizuelna govorna pošta ne aktivira u potpunosti. U međuvremenu pozovite govornu poštu za preuzimanje novih poruka."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Nije moguće aktivirati vizuelnu govornu poštu"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Provjerite imate li mobilnu mrežu na telefonu i pokušajte ponovo."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Isključite način rada u avionu i pokušajte ponovo."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Niste povezani na mrežu"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Nećete primati obavještenja o novim govornim porukama. Ako ste na Wi-Fi mreži, provjerite govornu poštu tako što ćete odmah obaviti sinhronizaciju."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Nećete primati obavještenja o novoj govornoj pošti. Isključite način rada u avionu da sinhronizirate govornu poštu."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Telefonu je potreban mobilni prijenos podataka radi provjere govorne pošte."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Nije moguće aktivirati vizuelnu govornu poštu"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"I dalje možete nazvati za provjeru govorne pošte."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Nije moguće ažurirati vizuelnu govornu poštu"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Pokušajte ponovo kada Wi-Fi veza ili mobilni prijenos podataka bude bolji. I dalje možete nazvati za provjeru govorne pošte."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Pokušajte ponovo kada mobilni prijenos podataka bude bolji. I dalje možete nazvati za provjeru govorne pošte."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Nije moguće ažurirati vizuelnu govornu poštu"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"I dalje možete nazvati za provjeru govorne pošte."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Nije moguće ažurirati vizuelnu govornu poštu"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"I dalje možete nazvati za provjeru govorne pošte."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Nije moguće ažurirati vizuelnu govornu poštu"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"I dalje možete nazvati za provjeru govorne pošte."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Nije moguće ažurirati vizuelnu govornu poštu"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"I dalje možete nazvati za provjeru govorne pošte."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Pristigla pošta je skoro puna"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Nećete moći primati novu govornu poštu ako je vam je pristigla pošta puna."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Ne možete primati novu govornu poštu"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Vaša pristigla pošta je puna. Pokušajte izbrisati neke poruke da primite novu govornu poštu."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Uključite dodatnu pohranu i sigurnosnu kopiju"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Poštanski pretinac je pun. Da oslobodite prostor, uključite dodatnu pohranu tako da Google može upravljati vašim porukama govorne pošte i praviti njihovu sigurnosnu kopiju."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Uključite dodatnu pohranu i sigurnosnu kopiju"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Poštanski pretinac je gotovo sasvim pun. Da oslobodite prostor, uključite dodatnu pohranu tako da Google može upravljati vašim porukama govorne pošte i praviti njihovu sigurnosnu kopiju."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Postavite PIN za govornu poštu"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN za govornu poštu trebat će vam svaki put kada zatražite pristup govornoj pošti."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Postavke načina rada u avionu"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Postavi PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Pokušajte ponovo"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Uključi"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Ne, hvala"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinhroniziraj"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Pozovi govornu poštu"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Pozovi korisničku podršku"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Nešto nije uredu"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Nažalost, došlo je do problema. Pokušajte ponovo kasnije. Ako problem ne nestane, kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Nešto nije uredu"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Nažalost, došlo je do problema. Pokušajte ponovo kasnije. Ako problem ne nestane, kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Nešto nije uredu"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Nažalost, došlo je do problema. Pokušajte ponovo kasnije. Ako problem ne nestane, kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Povezivanje na spremnik govorne pošte nije moguće"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Nažalost, imamo problema pri povezivanju na spremnik govorne pošte. Ako se nalazite u području sa slabim signalom, pričekajte dok signal ne bude jači i pokušajte ponovo. Ako problem ne nestane, kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Povezivanje na spremnik govorne pošte nije moguće"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Nažalost, imamo problema pri povezivanju na spremnik govorne pošte. Ako se nalazite u području sa slabim signalom, pričekajte dok signal ne bude jači i pokušajte ponovo. Ako problem ne nestane, kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Povezivanje na spremnik govorne pošte nije moguće"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Nažalost, imamo problema pri povezivanju na spremnik govorne pošte. Ako se nalazite u području sa slabim signalom, pričekajte dok signal ne bude jači i pokušajte ponovo. Ako problem ne nestane, kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Nešto nije uredu"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Nažalost, došlo je do problema. Pokušajte ponovo kasnije. Ako problem ne nestane, kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Nešto nije uredu"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Nažalost, došlo je do problema. Pokušajte ponovo kasnije. Ako problem ne nestane, kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Nešto nije uredu"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Nažalost, imamo problema s postavljanjem vaše usluge. Pokušajte ponovo kasnije. Ako problem ne nestane, kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Povezivanje na spremnik govorne pošte nije moguće"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Nažalost, trenutno ne možemo uspostaviti vezu s vašim spremnikom govorne pošte. Pokušajte ponovo kasnije. Ako problem ne nestane, kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Postavljanje govorne pošte"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Govorna pošta nije postavljena na vašem računu. Kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Govorna pošta"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Vizuelna govorna pošta se ne može koristiti na ovom uređaju. Kontaktirajte podršku korisnicima na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Nešto nije uredu"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Vizuelna govorna pošta"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Da dovršite postavljanje vizuelne govorne pošte, kontaktirajte podršku korisnicima na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Vizuelna govorna pošta"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Da dovršite postavljanje vizuelne govorne pošte, kontaktirajte podršku korisnicima na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Vizuelna govorna pošta"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Da aktivirate vizuelnu govornu poštu, kontaktirajte podršku korisnicima na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Nešto nije uredu"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Da dovršite postavljanje vizuelne govorne pošte, kontaktirajte podršku korisnicima na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Vizuelna govorna pošta je onemogućena"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Kontaktirajte korisnički podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> da aktivirate vizuelnu govornu poštu."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Nešto nije uredu"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Nešto nije uredu"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Nešto nije uredu"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Kontaktirajte korisničku podršku na broj <xliff:g id="NUMBER">%1$s</xliff:g> i obavijestite ih da je kȏd greške 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Uključi vizuelnu govornu poštu"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nAko uključite vizuelnu govornu poštu, prihvatate uslove i odredbe kompanije Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Uključi vizuelnu govornu poštu"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Gledajte i slušajte poruke bez pozivanja govorne pošte. Transkripte govorne pošte omogućava Googleova besplatna usluga transkripcije. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Gledajte i slušajte poruke bez pozivanja govorne pošte. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Saznajte više"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Vizuelna govorna pošta bit će onemogućena ako odbijete uslove i odredbe."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Onemogući vizuelnu govornu poštu"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Transkripcija govorne pošte će biti onemogućena ako odbijete uslove i odredbe."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Onemogući transkripciju govorne pošte"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Govornoj pošti ćete moći pristupiti samo pozivanjem broja *86. Postavite novi PIN govorne pošte da nastavite."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Postavi PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ca/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ca/strings.xml
deleted file mode 100644
index 5ac1b39..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ca/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"S\'està activant la bústia de veu visual"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"És possible que no rebis notificacions de missatges de veu fins que la bústia de veu visual estigui completament activada. Fins aleshores, truca a la bústia de veu per recuperar els missatges nous."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"No es pot activar la bústia de veu visual"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Assegura\'t que el telèfon tingui connexió a una xarxa mòbil i torna-ho a provar."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Desactiva el mode d\'avió i torna-ho a provar."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Sense connexió"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"No rebràs notificacions de missatges de veu nous. Si estàs connectat a una xarxa Wi-Fi, pots sincronitzar ara per consultar la bústia de veu."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"No rebràs notificacions de missatges de veu nous. Desactiva el mode d\'avió per sincronitzar la bústia de veu."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Cal que el telèfon tingui una connexió de dades mòbils per poder consultar la bústia de veu."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"No es pot activar la bústia de veu visual"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Pots trucar igualment per consultar la bústia de veu."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"No es pot actualitzar la bústia de veu visual"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Torna-ho a provar quan la connexió Wi-Fi o de dades mòbils sigui millor. Pots trucar igualment per consultar la bústia de veu."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Torna-ho a provar quan la connexió de dades mòbils sigui millor. Pots trucar igualment per consultar la bústia de veu."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"No es pot actualitzar la bústia de veu visual"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Pots trucar igualment per consultar la bústia de veu."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"No es pot actualitzar la bústia de veu visual"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Pots trucar igualment per consultar la bústia de veu."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"No es pot actualitzar la bústia de veu visual"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Pots trucar igualment per consultar la bústia de veu."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"No es pot actualitzar la bústia de veu visual"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Pots trucar igualment per consultar la bústia de veu."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"La safata d\'entrada està gairebé plena"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"No podràs rebre missatges de veu nous si la safata d\'entrada està plena."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"No es poden rebre missatges de veu nous"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"La safata d\'entrada està plena. Per rebre missatges de veu nous, prova de suprimir alguns missatges."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activa l\'emmagatzematge addicional i la còpia de seguretat"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Tens la bústia plena. Per alliberar espai, activa l\'emmagatzematge addicional perquè Google pugui gestionar els missatges de veu i crear-ne una còpia de seguretat."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activa l\'emmagatzematge addicional i la còpia de seguretat"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Tens la bústia gairebé plena. Per alliberar espai, activa l\'emmagatzematge addicional perquè Google pugui gestionar els missatges de veu i crear-ne una còpia de seguretat."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Defineix el PIN per als missatges de veu"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Necessitaràs el PIN per als missatges de veu cada vegada que truquis per accedir-hi."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Configuració del mode d\'avió"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Defineix el PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Torna-ho a provar"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Activa"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"No, gràcies"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sincronitza"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Truca a la bústia veu"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Truca a l\'atenció al client"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"S\'ha produït un error"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Hem tingut un problema. Torna-ho a provar més tard. Si el problema continua, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"S\'ha produït un error"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Hem tingut un problema. Torna-ho a provar més tard. Si el problema continua, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"S\'ha produït un error"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Hem tingut un problema. Torna-ho a provar més tard. Si el problema continua, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"No es pot establir la connexió amb la bústia de veu"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Estem tenint dificultats per establir la connexió amb la bústia de veu. Si ets en una àrea amb poca cobertura, espera fins que millori i torna-ho a provar. Si el problema continua, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"No es pot establir la connexió amb la bústia de veu"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Estem tenint dificultats per establir la connexió amb la bústia de veu. Si ets en una àrea amb poca cobertura, espera fins que millori i torna-ho a provar. Si el problema continua, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"No es pot establir la connexió amb la bústia de veu"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Estem tenint dificultats per establir la connexió amb la bústia de veu. Si ets en una àrea amb poca cobertura, espera fins que millori i torna-ho a provar. Si el problema continua, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"S\'ha produït un error"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Hem tingut un problema. Torna-ho a provar més tard. Si el problema continua, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"S\'ha produït un error"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Hem tingut un problema. Torna-ho a provar més tard. Si el problema continua, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"S\'ha produït un error"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Estem tenint dificultats per configurar el servei. Torna-ho a provar més tard. Si el problema continua, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"No es pot establir la connexió amb la bústia de veu"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"No podem establir la connexió amb la bústia de veu en aquest moment. Torna-ho a provar més tard. Si el problema continua, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Configura la bústia de veu"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"La bústia de veu no està configurada al teu compte. Contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Bústia de veu"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"La bústia de veu visual no es pot utilitzar en aquest dispositiu. Contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"S\'ha produït un error"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Bústia de veu visual"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Per completar la configuració de la bústia de veu visual, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Bústia de veu visual"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Per completar la configuració de la bústia de veu visual, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Bústia de veu visual"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Per activar la bústia de veu visual, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"S\'ha produït un error"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Per completar la configuració de la bústia de veu visual, contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"La bústia de veu visual està desactivada"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> per activar la bústia de veu visual."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"S\'ha produït un error"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"S\'ha produït un error"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"S\'ha produït un error"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Contacta amb el servei d\'atenció al client al <xliff:g id="NUMBER">%1$s</xliff:g> i informa\'ls que el codi d\'error és 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Activa la bústia de veu visual"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nEn activar la bústia de veu visual, acceptes els termes i condicions de Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Activa la bústia de veu visual"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Consulta i escolta els missatges sense haver de trucar a la bústia de veu. El servei de transcripció gratuït de Google proporciona transcripcions dels missatges de veu. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Consulta i escolta els missatges sense haver de trucar a la bústia de veu. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Més informació"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"La bústia de veu visual es desactivarà si es rebutgen els termes i condicions."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Desactiva la bústia de veu visual"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"La transcripció dels missatges de veu es desactivarà si es rebutgen els termes i condicions."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Desactiva la transcripció dels missatges de veu"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Només podràs accedir a la bústia de veu trucant al *86. Defineix un nou PIN de la bústia de veu per continuar."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Defineix el PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-cs/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-cs/strings.xml
deleted file mode 100644
index d6db79d..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-cs/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktivace vizuální hlasové schránky"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Je možné, že dokud nebude vizuální hlasová schránka plně aktivována, nebudou vám chodit oznámení z hlasové schránky. Do té doby se k novým zprávám dostanete po zavolání do hlasové schránky."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Vizuální hlasovou schránku se nepodařilo aktivovat"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Zkontrolujte, že je telefon připojen k mobilní síti a zkuste to znovu."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Vypněte režim letadla a zkuste to znovu."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Nejste připojeni"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Nebudete dostávat oznámení o nových hlasových zprávách. Pokud jste připojeni k Wi-Fi, můžete hlasovou schránku zkontrolovat synchronizací."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Nebudete dostávat oznámení o nových hlasových zprávách. Pokud chcete hlasovou schránku synchronizovat, vypněte režim letadla."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Telefon musí být připojen k mobilním datům, aby bylo možné zkontrolovat hlasovou schránku."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Vizuální hlasovou schránku se nepodařilo aktivovat"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Můžete ji ale stále zkontrolovat zavoláním."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Vizuální hlasovou schránku se nepodařilo aktualizovat"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Zkuste to znovu, až budete mít lepší připojení k Wi-Fi nebo k mobilním datům. Stále ale můžete hlasovou schránku zkontrolovat zavoláním."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Zkuste to znovu, až budete mít lepší připojení k mobilním datům. Stále ale můžete hlasovou schránku zkontrolovat zavoláním."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Vizuální hlasovou schránku se nepodařilo aktualizovat"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Můžete ji ale stále zkontrolovat zavoláním."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Vizuální hlasovou schránku se nepodařilo aktualizovat"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Můžete ji ale stále zkontrolovat zavoláním."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Vizuální hlasovou schránku se nepodařilo aktualizovat"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Můžete ji ale stále zkontrolovat zavoláním."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Vizuální hlasovou schránku se nepodařilo aktualizovat"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Můžete ji ale stále zkontrolovat zavoláním."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Schránka je téměř plná"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Pokud máte plnou schránku, nemůžete přijímat nové hlasové zprávy."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nemůžete přijímat nové hlasové zprávy"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Vaše schránka je plná. Abyste mohli přijímat nové hlasové zprávy, zkuste nějaké zprávy smazat."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Zapněte si další úložiště a zálohování"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Vaše e-mailová schránka je plná. Pokud chcete uvolnit místo, zapněte si další úložiště, aby Google mohl spravovat a zálohovat vaše hlasové zprávy."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Zapněte si další úložiště a zálohování"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Vaše e-mailová schránka je téměř plná. Pokud chcete uvolnit místo, zapněte si další úložiště, aby Google mohl spravovat a zálohovat vaše hlasové zprávy."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Nastavit kód PIN hlasové schránky"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN hlasové schránky budete potřebovat, kdykoli do své hlasové schránky zavoláte."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Nastavení režimu letadla"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Nastavit kód PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Zkusit znovu"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Zapnout"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Ne, děkuji"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synchronizace"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Volat hlasovou schránku"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Volat zákaznickou podporu"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Něco se pokazilo"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Bohužel se vyskytl problém. Zkuste to prosím znovu. Pokud budou potíže přetrvávat, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Něco se pokazilo"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Bohužel se vyskytl problém. Zkuste to prosím znovu. Pokud budou potíže přetrvávat, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Něco se pokazilo"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Bohužel se vyskytl problém. Zkuste to prosím znovu. Pokud budou potíže přetrvávat, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"K vaší hlasové schránce se nepodařilo připojit"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Při připojování k vaší hlasové schránce se bohužel vyskytl problém. Jste-li na místě se slabým signálem, počkejte, dokud signál nebude lepší, a zkuste to znovu. Pokud budou potíže přetrvávat, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"K vaší hlasové schránce se nepodařilo připojit"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Při připojování k vaší hlasové schránce se bohužel vyskytl problém. Jste-li na místě se slabým signálem, počkejte, dokud nebudete mít lepší signál, a zkuste to znovu. Pokud budou potíže přetrvávat, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"K vaší hlasové schránce se nepodařilo připojit"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Při připojování k vaší hlasové schránce se bohužel vyskytl problém. Jste-li na místě se slabým signálem, počkejte, dokud nebudete mít lepší signál, a zkuste to znovu. Pokud budou potíže přetrvávat, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Něco se pokazilo"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Bohužel se vyskytl problém. Zkuste to prosím znovu. Pokud budou potíže přetrvávat, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Něco se pokazilo"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Bohužel se vyskytl problém. Zkuste to prosím znovu. Pokud budou potíže přetrvávat, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Něco se pokazilo"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Při nastavování vaší služby se bohužel vyskytl problém. Zkuste to znovu později. Pokud budou potíže přetrvávat, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"K vaší hlasové schránce se nepodařilo připojit"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Bohužel vás k vaší hlasové schránce momentálně nemůžeme připojit. Zkuste to znovu později. Pokud budou potíže přetrvávat, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Nastavte hlasovou schránku"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Hlasová schránka není ve vašem účtu nastavena. Kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Hlasová schránka"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Vizuální hlasovou schránku není na tomto zařízení možné používat. Kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Něco se pokazilo"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Vizuální hlasová schránka"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Pokud chcete dokončit nastavení vizuální hlasové schránky, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Vizuální hlasová schránka"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Pokud chcete dokončit nastavení vizuální hlasové schránky, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Vizuální hlasová schránka"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Pokud chcete zapnout vizuální hlasovou schránku, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Něco se pokazilo"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Pokud chcete dokončit nastavení vizuální hlasové schránky, kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Vizuální hlasová schránka je vypnutá"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Vizuální hlasovou schránku aktivujete po zavolání zákaznického servisu na čísle <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Něco se pokazilo"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Něco se pokazilo"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Něco se pokazilo"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Kontaktujte zákaznický servis na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a sdělte kód chyby 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Zapnout vizuální hlasovou schránku"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nKdyž zapnete vizuální hlasovou schránku, vyjadřujete tím souhlas se smluvními podmínkami společnosti Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Zapnout vizuální hlasovou schránku"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Čtěte a poslouchejte své zprávy, aniž byste museli volat do hlasové schránky. Přepisy hlasových zpráv poskytuje bezplatná přepisovací služba od Googlu. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Čtěte a poslouchejte své zprávy, aniž byste museli volat do hlasové schránky. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Další informace"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Pokud smluvní podmínky odmítnete, vizuální hlasová schránka bude vypnuta."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Vypnout vizuální hlasovou schránku"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Pokud smluvní podmínky odmítnete, přepis hlasové schránky bude vypnut."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Vypnout přepis hlasové schránky"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Hlasová schránka bude dostupná jen zavoláním na číslo *86. Pokud chcete pokračovat, nastavte si nový kód PIN k hlasové schránce."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Nastavit kód PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-da/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-da/strings.xml
deleted file mode 100644
index 60896f0..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-da/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktiverer visuel telefonsvarer"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Du modtager muligvis ikke telefonsvarerunderretninger, før den visuelle telefonsvarer er fuldt aktiveret. Ring til telefonsvareren for hente nye beskeder, indtil telefonsvareren er fuldt aktiveret."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Visuel telefonsvarer kan ikke aktiveres"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Sørg for, at din telefon har forbindelse til mobilnetværket, og prøv igen."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Slå flytilstand fra, og prøv igen."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Ingen forbindelse"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Du får ikke besked om nye talebeskeder. Hvis du er på Wi-Fi, kan du tjekke, om der er talebeskeder, ved at synkronisere nu."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Du vil ikke få besked om nye telefonsvarerbeskeder. Slå flytilstand fra for at synkronisere din e-mail."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Din telefon skal have en mobildataforbindelse, for at du kan tjekke, om der er talebeskeder."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Visuel telefonsvarer kan ikke aktiveres"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Du kan stadig ringe op for at tjekke din telefonsvarer."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Visuel telefonsvarer kan ikke opdateres"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Prøv igen, når din Wi-Fi- eller mobildataforbindelse er bedre. Du kan stadig ringe for at tjekke, om der er talebeskeder."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Prøv igen, når din mobildataforbindelse er bedre. Du kan stadig ringe for at tjekke, om der er talebeskeder."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Visuel telefonsvarer kan ikke opdateres"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Du kan stadig ringe op for at tjekke din telefonsvarer."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Visuel telefonsvarer kan ikke opdateres"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Du kan stadig ringe op for at tjekke din telefonsvarer."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Visuel telefonsvarer kan ikke opdateres"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Du kan stadig ringe op for at tjekke din telefonsvarer."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Visuel telefonsvarer kan ikke opdateres"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Du kan stadig ringe op for at tjekke din telefonsvarer."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Indbakken er næsten fuld"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Du vil ikke kunne modtage nye telefonsvarerbeskeder, hvis din indbakke er fuld."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Du kan ikke modtage nye telefonsvarerbeskeder"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Din indbakke er fuld. Prøv at slette nogle beskeder for at modtage nye telefonsvarerbeskeder."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Slå ekstra lagerplads og sikkerhedskopiering til"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Din telefonsvarer er fuld. Du kan frigøre plads ved at slå ekstra lagerplads til, så Google kan administrere og sikkerhedskopiere dine talebeskeder."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Slå ekstra lagerplads og sikkerhedskopiering til"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Din telefonsvarer er næsten fuld. Du kan frigøre plads ved at slå ekstra lagerplads til, så Google kan administrere og sikkerhedskopiere dine talebeskeder."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Bestem pinkoden til din telefonsvarer"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Du skal bruge en pinkode til din telefonsvarer, når du ringer for at få adgang til den."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Indstillinger for flytilstand"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Vælg pinkode"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Prøv igen"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Slå til"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nej tak"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synkroniser"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Ring til telefonsvarer"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Ring til kundesupport"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Der opstod en fejl"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Der opstod desværre et problem. Prøv igen senere. Hvis der stadig er et problem, skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Der opstod en fejl"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Der opstod desværre et problem. Prøv igen senere. Hvis der stadig er et problem, skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Der opstod en fejl"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Der opstod desværre et problem. Prøv igen senere. Hvis der stadig er et problem, skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Der kan ikke oprettes forbindelse til din telefonsvarer"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Vi har desværre problemer med at oprette forbindelse til din telefonsvarer. Hvis du befinder dig i et område med dårlig signalstyrke, skal du vente, til du har et stærkt signal, og prøve igen. Hvis der stadig er et problem, skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Der kan ikke oprettes forbindelse til din telefonsvarer"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Vi har desværre problemer med at oprette forbindelse til din telefonsvarer. Hvis du befinder dig i et område med dårlig signalstyrke, skal du vente, til du har et stærkt signal, og prøve igen. Hvis der stadig er et problem, skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Der kan ikke oprettes forbindelse til din telefonsvarer"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Vi har desværre problemer med at oprette forbindelse til din telefonsvarer. Hvis du befinder dig i et område med dårlig signalstyrke, skal du vente, til du har et stærkt signal, og prøve igen. Hvis der stadig er et problem, skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Der opstod en fejl"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Der opstod desværre et problem. Prøv igen senere. Hvis der stadig er et problem, skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Der opstod en fejl"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Der opstod desværre et problem. Prøv igen senere. Hvis der stadig er et problem, skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Der opstod en fejl"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Vi har desværre problemer med at konfigurere din tjeneste. Prøv igen senere. Hvis der stadig er et problem, skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Der kan ikke oprettes forbindelse til din telefonsvarer"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Vi kan desværre ikke oprette forbindelse til din telefonsvarer i øjeblikket. Prøv igen senere. Hvis der stadig er et problem, skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Konfigurer telefonsvarer"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Telefonsvarer er ikke konfigureret på din konto. Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g>, og fortæl dem, at fejlkoden er 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Telefonsvarer"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Visuel telefonsvarer kan ikke bruges på denne enhed. Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g>, og fortæl dem, at fejlkoden er 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Der opstod en fejl"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g>, og fortæl dem, at fejlkoden er 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visuel telefonsvarer"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"For at fuldføre konfigurationen af den visuelle telefonsvarer skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visuel telefonsvarer"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"For at fuldføre konfigurationen af den visuelle telefonsvarer skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visuel telefonsvarer"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"For at aktivere den visuelle telefonsvarer skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Der opstod en fejl"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"For at aktivere den visuelle telefonsvarer skal du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og fortælle dem, at fejlkoden er 9998"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visuel telefonsvarer er deaktiveret"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> for at aktivere visuel telefonsvarer."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Der opstod en fejl"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g>, og fortæl dem, at fejlkoden er 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Der opstod en fejl"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g>, og fortæl dem, at fejlkoden er 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Der opstod en fejl"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g>, og fortæl dem, at fejlkoden er 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Aktivér Visuel telefonsvarer"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nNår du aktiverer visuel telefonsvarer, accepterer du vilkår og betingelser for Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Aktivér Visuel telefonsvarer"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Se og lyt til dine beskeder uden at skulle ringe til din telefonsvarer. Googles gratis transskriptionstjeneste leverer transskriptioner af dine talebeskeder. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Se og lyt til dine beskeder uden at skulle ringe til din telefonsvarer. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Få flere oplysninger"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Visuel telefonsvarer bliver deaktiveret, hvis vilkår og betingelser afvises."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Deaktiver visuel telefonsvarer"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Transskription af talebeskeder deaktiveres, hvis du ikke accepterer vilkår og betingelser."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Deaktiver transskription af talebeskeder"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Telefonsvareren er kun tilgængelig, hvis du taster *86 og ringer op. Angiv en ny pinkode til telefonsvarer for at fortsætte."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Angiv pinkode"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-de/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-de/strings.xml
deleted file mode 100644
index a341351..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-de/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Visuelle Mailbox wird aktiviert"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Möglicherweise erhältst du keine Mailbox-Benachrichtigungen, solange die visuelle Mailbox nicht vollständig aktiviert ist. Bis es soweit ist, kannst du deine Mailbox anrufen, um neue Nachrichten abzuhören."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Visuelle Mailbox kann nicht aktiviert werden"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Vergewissere dich, dass auf deinem Smartphone eine Mobilfunkverbindung besteht, und versuche es noch einmal."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Schalte den Flugmodus aus und versuche es noch einmal."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Keine Verbindung"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Du wirst nicht über neue Mailboxnachrichten informiert. Wenn du eine WLAN-Verbindung verwendest, kannst du deine Mailbox abrufen, indem du dein Smartphone jetzt synchronisierst."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Du wirst nicht über neue Mailboxnachrichten informiert. Schalte den Flugmodus aus, um deine Mailbox zu synchronisieren."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Dein Smartphone benötigt eine mobile Datenverbindung, um die Mailbox abzurufen."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Visuelle Mailbox kann nicht aktiviert werden"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Du kannst deine Mailbox immer noch per Anruf abhören."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Visuelle Mailbox kann nicht aktualisiert werden"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Versuche es noch einmal, sobald die WLAN- bzw. Mobilfunkverbindung besser ist. Du kannst deine Mailbox weiterhin per Anruf abhören."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Versuche es noch einmal, sobald die Mobilfunkverbindung besser ist. Du kannst deine Mailbox weiterhin per Anruf abhören."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Visuelle Mailbox kann nicht aktualisiert werden"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Du kannst deine Mailbox immer noch per Anruf abhören."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Visuelle Mailbox kann nicht aktualisiert werden"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Du kannst deine Mailbox immer noch per Anruf abhören."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Visuelle Mailbox kann nicht aktualisiert werden"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Du kannst deine Mailbox immer noch per Anruf abhören."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Visuelle Mailbox kann nicht aktualisiert werden"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Du kannst deine Mailbox immer noch per Anruf abhören."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Mailbox fast voll"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Wenn deine Mailbox voll ist, kannst du keine neuen Sprachnachrichten empfangen."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Es können keine neuen Mailboxnachrichten empfangen werden"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Deine Mailbox ist voll. Lösche einige Nachrichten, um neue empfangen zu können."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Zusätzlichen Speicher und Sicherung aktivieren"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Dein Postfach ist voll. Aktivere zusätzlichen Speicher, um Speicherplatz freizugeben. So kann Google deine Mailboxnachrichten verwalten und sichern."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Zusätzlichen Speicher und Sicherung aktivieren"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Dein Postfach fast ist voll. Aktivere zusätzlichen Speicher, um Speicherplatz freizugeben. So kann Google deine Mailboxnachrichten verwalten und sichern."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Mailbox-PIN festlegen"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Bei jedem Anruf auf deiner Mailbox benötigst du eine Mailbox-PIN."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Flugmoduseinstellungen"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN festlegen"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Erneut versuchen"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Aktivieren"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nein danke"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synchronisieren"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Mailbox anrufen"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Kundensupport anrufen"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Ein Problem ist aufgetreten"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Wir haben einen Fehler entdeckt. Bitte versuche es später noch einmal. Wenn das Problem weiterhin besteht, wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9001 an."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Ein Problem ist aufgetreten"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Wir haben einen Fehler entdeckt. Bitte versuche es später noch einmal. Wenn das Problem weiterhin besteht, wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9002 an."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Ein Problem ist aufgetreten"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Wir haben einen Fehler entdeckt. Bitte versuche es später noch einmal. Wenn das Problem weiterhin besteht, wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9003 an."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Verbindung zur Sprach-Mailbox nicht möglich"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Wir haben einen Fehler entdeckt. Bitte versuche es später noch einmal. Wenn das Problem weiterhin besteht, wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9004 an."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Verbindung zur Sprach-Mailbox nicht möglich"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Wir haben einen Fehler entdeckt. Bitte versuche es später noch einmal. Wenn das Problem weiterhin besteht, wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9005 an."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Verbindung zur Sprach-Mailbox nicht möglich"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Wir haben einen Fehler entdeckt. Bitte versuche es später noch einmal. Wenn das Problem weiterhin besteht, wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9006 an."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Ein Problem ist aufgetreten"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Wir haben einen Fehler entdeckt. Bitte versuche es später noch einmal. Wenn das Problem weiterhin besteht, wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9007 an."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Ein Problem ist aufgetreten"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Wir haben einen Fehler entdeckt. Bitte versuche es später noch einmal. Wenn das Problem weiterhin besteht, wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9008 an."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Ein Problem ist aufgetreten"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Wir haben einen Fehler entdeckt. Bitte versuche es später noch einmal. Wenn das Problem weiterhin besteht, wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9009 an."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Verbindung zur Sprach-Mailbox nicht möglich"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Zurzeit kann keine Verbindung zu deiner Mailbox hergestellt werden. Bitte versuche es später noch einmal. Wenn das Problem weiterhin besteht, wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9990 an."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Mailbox einrichten"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Für dein Konto ist keine Mailbox eingerichtet. Bitte wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9991 an."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Mailbox"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Die visuelle Mailbox kann auf diesem Gerät nicht genutzt werden. Bitte wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9992 an."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Ein Problem ist aufgetreten"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Bitte wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9993 an."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visuelle Mailbox"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Um die Einrichtung der visuellen Mailbox abzuschließen, wende dich bitte an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9994 an."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visuelle Mailbox"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Um die Einrichtung der visuellen Mailbox abzuschließen, wende dich bitte an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9995 an."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visuelle Mailbox"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Um die visuelle Mailbox zu aktivieren, wende dich bitte an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9996 an."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Ein Problem ist aufgetreten"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Um die Einrichtung der visuellen Mailbox abzuschließen, wende dich bitte an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9998 an."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visuelle Mailbox ist deaktiviert"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Bitte wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g>, um die visuelle Mailbox zu aktivieren."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Ein Problem ist aufgetreten"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Bitte wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9997 an."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Ein Problem ist aufgetreten"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Bitte wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9989 an."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Ein Problem ist aufgetreten"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Bitte wende dich an den Kundensupport unter der Nummer <xliff:g id="NUMBER">%1$s</xliff:g> und gib den Fehlercode 9999 an."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Visuelle Mailbox aktivieren"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nMit dem Aktivieren der visuellen Mailbox stimmst du den Nutzungsbedingungen von Verizon Wireless zu:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Visuelle Mailbox aktivieren"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Du kannst deine Mailboxnachrichten einsehen und abhören, ohne die Mailbox anzurufen. Der kostenlose Transkriptionsdienst von Google liefert dir deine Mailboxnachrichten als geschriebenen Text. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Du kannst deine Mailboxnachrichten einsehen und abhören, ohne die Mailbox anzurufen. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Mehr erfahren"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Die visuelle Mailbox wird deaktiviert, wenn du die Nutzungsbedingungen ablehnst."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Visuelle Mailbox deaktivieren"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Die Sprache-zu-Text-Umwandlung von Mailbox-Nachrichten wird deaktiviert, wenn die Nutzungsbedingungen abgelehnt werden."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Sprache-zu-Text-Umwandlung von Mailbox-Nachrichten deaktivieren"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Du kannst nur auf Mailboxnachrichten zugreifen, indem du *86 anrufst. Lege eine neue Mailbox-PIN fest, um fortzufahren."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN festlegen"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-el/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-el/strings.xml
deleted file mode 100644
index 145b3b3..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-el/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Ενεργοποίηση οπτικού αυτόματου τηλεφωνητή"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Ενδέχεται να μην λαμβάνετε ειδοποιήσεις αυτόματου τηλεφωνητή έως ότου ο οπτικός αυτόματος τηλεφωνητής ενεργοποιηθεί πλήρως. Καλέστε τον αυτόματο τηλεφωνητή για να ανακτήσετε νέα μηνύματα, έως ότου γίνει πλήρης ενεργοποίηση του οπτικού αυτόματου τηλεφωνητή."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Δεν είναι δυνατή η ενεργοποίηση του οπτικού αυτόματου τηλεφωνητή"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Βεβαιωθείτε ότι το τηλέφωνό σας διαθέτει σύνδεση κινητής τηλεφωνίας και δοκιμάστε ξανά."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Απενεργοποιήστε τη λειτουργία πτήσης και δοκιμάστε ξανά."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Δεν υπάρχει σύνδεση"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Δεν θα ειδοποιείστε για νέα φωνητικά μηνύματα. Εάν είστε συνδεδεμένοι μέσω Wi-Fi, μπορείτε να ελέγξετε τον αυτόματο τηλεφωνητή σας για μηνύματα, εκτελώντας συγχρονισμό τώρα."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Δεν θα ειδοποιείστε για νέα φωνητικά μηνύματα. Απενεργοποιήστε τη λειτουργία πτήσης για συγχρονισμό φωνητικών μηνυμάτων του αυτόματου τηλεφωνητή σας."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Το τηλέφωνό σας χρειάζεται σύνδεση δεδομένων κινητής τηλεφωνίας για έλεγχο του αυτόματου τηλεφωνητή σας."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Δεν είναι δυνατή η ενεργοποίηση του οπτικού αυτόματου τηλεφωνητή"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Μπορείτε και πάλι να καλέσετε για να ελέγξετε τον αυτόματο τηλεφωνητή σας."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Δεν είναι δυνατή η ενημέρωση του οπτικού αυτόματου τηλεφωνητή"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Δοκιμάστε ξανά όταν η σύνδεση Wi-Fi ή η σύνδεση κινητής τηλεφωνίας είναι καλύτερη. Ακόμα κι έτσι, μπορείτε να καλέσετε για να ελέγξετε τον αυτόματο τηλεφωνητή σας."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Δοκιμάστε ξανά όταν η σύνδεση κινητής τηλεφωνίας είναι καλύτερη. Ακόμα κι έτσι, μπορείτε να καλέσετε για να ελέγξετε τον αυτόματο τηλεφωνητή σας."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Δεν είναι δυνατή η ενημέρωση του οπτικού αυτόματου τηλεφωνητή"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Μπορείτε και πάλι να καλέσετε για να ελέγξετε τον αυτόματο τηλεφωνητή σας."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Δεν είναι δυνατή η ενημέρωση του οπτικού αυτόματου τηλεφωνητή"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Μπορείτε και πάλι να καλέσετε για να ελέγξετε τον αυτόματο τηλεφωνητή σας."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Δεν είναι δυνατή η ενημέρωση του οπτικού αυτόματου τηλεφωνητή"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Μπορείτε και πάλι να καλέσετε για να ελέγξετε τον αυτόματο τηλεφωνητή σας."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Δεν είναι δυνατή η ενημέρωση του οπτικού αυτόματου τηλεφωνητή"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Μπορείτε και πάλι να καλέσετε για να ελέγξετε τον αυτόματο τηλεφωνητή σας."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Εισερχόμενα σχεδόν πλήρη"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Δεν θα είστε σε θέση να λάβετε νέα φωνητικά μηνύματα από τον αυτόματο τηλεφωνητή εάν τα εισερχόμενά σας είναι πλήρη."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Δεν μπορείτε να λάβετε νέα μηνύματα από τον αυτόματο τηλεφωνητή"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Τα εισερχόμενά σας είναι πλήρη. Δοκιμάστε να διαγράψετε μερικά μηνύματα, για να λάβετε νέα μηνύματα από τον αυτόματο τηλεφωνητή."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ενεργοποίηση επιπλέον αποθηκευτικού χώρου και αντιγράφων ασφαλείας"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Το γραμματοκιβώτιό σας είναι πλήρες. Για να ελευθερώσετε χώρο, ενεργοποιήστε επιπλέον αποθηκευτικό χώρο, ώστε η Google μπορεί να διαχειριστεί και να δημιουργήσει αντίγραφα ασφαλείας των μηνυμάτων του αυτόματου τηλεφωνητή σας."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ενεργοποίηση επιπλέον αποθηκευτικού χώρου και αντιγράφων ασφαλείας"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Το γραμματοκιβώτιό σας είναι σχεδόν πλήρες. Για να ελευθερώσετε χώρο, ενεργοποιήστε επιπλέον αποθηκευτικό χώρο, ώστε η Google μπορεί να διαχειριστεί και να δημιουργήσει αντίγραφα ασφαλείας των μηνυμάτων του αυτόματου τηλεφωνητή σας."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ορίστε PIN για τον αυτόματο τηλεφωνητή σας"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Θα χρειάζεστε ένα PIN φωνητικού τηλεφωνητή κάθε φορά που καλείτε, για να έχετε πρόσβαση στον τηλεφωνητή σας."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Ρυθμίσεις λειτουργίας πτήσης"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Ορισμός PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Δοκιμάστε ξανά"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Ενεργοποίηση"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Όχι, ευχαριστώ"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Συγχρονισμός"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Κλήση αυτόματου τηλεφωνητή"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Κλήση τμήματος υποστήριξης πελατών"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Παρουσιάστηκε κάποιο πρόβλημα"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Δυστυχώς, αντιμετωπίσαμε κάποιο πρόβλημα. Δοκιμάστε ξανά αργότερα. Εάν το πρόβλημα παραμένει, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Παρουσιάστηκε κάποιο πρόβλημα"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Δυστυχώς, αντιμετωπίσαμε κάποιο πρόβλημα. Δοκιμάστε ξανά αργότερα. Εάν το πρόβλημα παραμένει, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Παρουσιάστηκε κάποιο πρόβλημα"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Δυστυχώς, αντιμετωπίσαμε κάποιο πρόβλημα. Δοκιμάστε ξανά αργότερα. Εάν το πρόβλημα παραμένει, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Δεν είναι δυνατή η σύνδεση στον αυτόματο τηλεφωνητή σας"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Δυστυχώς, αντιμετωπίζουμε πρόβλημα με τη σύνδεση στον αυτόματο τηλεφωνητή σας. Εάν βρίσκεστε σε κάποια περιοχή με ασθενές σήμα, περιμένετε έως ότου βρεθείτε κάπου με ισχυρό σήμα και δοκιμάστε ξανά. Εάν το πρόβλημα παραμένει, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Δεν είναι δυνατή η σύνδεση στον αυτόματο τηλεφωνητή σας"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Δυστυχώς, αντιμετωπίζουμε πρόβλημα με τη σύνδεση στον αυτόματο τηλεφωνητή σας. Εάν βρίσκεστε σε κάποια περιοχή με ασθενές σήμα, περιμένετε έως ότου βρεθείτε κάπου με ισχυρό σήμα και δοκιμάστε ξανά. Εάν το πρόβλημα παραμένει, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Δεν είναι δυνατή η σύνδεση στον αυτόματο τηλεφωνητή σας"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Δυστυχώς, αντιμετωπίζουμε πρόβλημα με τη σύνδεση στον αυτόματο τηλεφωνητή σας. Εάν βρίσκεστε σε κάποια περιοχή με ασθενές σήμα, περιμένετε έως ότου βρεθείτε κάπου με ισχυρό σήμα και δοκιμάστε ξανά. Εάν το πρόβλημα παραμένει, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Παρουσιάστηκε κάποιο πρόβλημα"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Δυστυχώς, αντιμετωπίσαμε κάποιο πρόβλημα. Δοκιμάστε ξανά αργότερα. Εάν το πρόβλημα παραμένει, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Παρουσιάστηκε κάποιο πρόβλημα"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Δυστυχώς, αντιμετωπίσαμε κάποιο πρόβλημα. Δοκιμάστε ξανά αργότερα. Εάν το πρόβλημα παραμένει, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Παρουσιάστηκε κάποιο πρόβλημα"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Δυστυχώς, αντιμετωπίζουμε πρόβλημα με τη ρύθμιση της υπηρεσίας στην περίπτωσή σας. Δοκιμάστε ξανά αργότερα. Εάν το πρόβλημα παραμένει, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Δεν είναι δυνατή η σύνδεση στον αυτόματο τηλεφωνητή σας"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Δυστυχώς, δεν είμαστε σε θέση να συνδεθούμε στον αυτόματο τηλεφωνητή σας αυτήν τη στιγμή. Δοκιμάστε ξανά αργότερα. Εάν το πρόβλημα παραμένει, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Ρύθμιση αυτόματου τηλεφωνητή"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Δεν έχει γίνει ρύθμιση του αυτόματου τηλεφωνητή για τον λογαριασμό σας. Επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Αυτόματος τηλεφωνητής"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Ο οπτικός αυτόματος τηλεφωνητής δεν μπορεί να χρησιμοποιηθεί σε αυτήν τη συσκευή. Επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Παρουσιάστηκε κάποιο πρόβλημα"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Οπτικός αυτόματος τηλεφωνητής"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Για να ολοκληρώσετε τη ρύθμιση του οπτικού αυτόματου τηλεφωνητή, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Οπτικός αυτόματος τηλεφωνητής"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Για να ολοκληρώσετε τη ρύθμιση του οπτικού αυτόματου τηλεφωνητή, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Οπτικός αυτόματος τηλεφωνητής"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Για να ενεργοποιήσετε τον οπτικό αυτόματο τηλεφωνητή, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Παρουσιάστηκε κάποιο πρόβλημα"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Για να ολοκληρώσετε τη ρύθμιση του οπτικού αυτόματου τηλεφωνητή, επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Ο οπτικός αυτόματος τηλεφωνητής είναι απενεργοποιημένος"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> για να ενεργοποιήσετε τον οπτικό αυτόματο τηλεφωνητή."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Παρουσιάστηκε κάποιο πρόβλημα"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Παρουσιάστηκε κάποιο πρόβλημα"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Παρουσιάστηκε κάποιο πρόβλημα"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Επικοινωνήστε με το τμήμα εξυπηρέτησης πελατών στο <xliff:g id="NUMBER">%1$s</xliff:g> και αναφέρετέ τους τον κωδικό σφάλματος 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Ενεργοποίηση Οπτικού αυτόματου τηλεφωνητή"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nΜε την ενεργοποίηση του Οπτικού αυτόματου τηλεφωνητή, δηλώνετε ότι αποδέχεστε τους όρους και προϋποθέσεις της Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Ενεργοποίηση οπτικού αυτόματου τηλεφωνητή"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Δείτε και ακούστε τα μηνύματα αυτόματου τηλεφωνητή, χωρίς να χρειάζεται να τον καλέσετε. Οι μεταγραφές των φωνητικών μηνυμάτων του τηλεφωνητή παρέχονται από τη δωρεάν υπηρεσία μεταγρφής της Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Δείτε και ακούστε τα μηνύματα αυτόματου τηλεφωνητή, χωρίς να χρειάζεται να τον καλέσετε. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Μάθετε περισσότερα"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Ο οπτικός αυτόματος τηλεφωνητής θα απενεργοποιηθεί εάν δεν αποδεχτείτε τους Όρους και τις Προϋποθέσεις."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Απενεργοποίηση οπτικού αυτόματου τηλεφωνητή"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Η μεταγραφή αυτόματου τηλεφωνητή θα απενεργοποιηθεί εάν δεν αποδεχτείτε τους Όρους και τις Προϋποθέσεις."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Απενεργοποίηση μεταγραφής αυτόματου τηλεφωνητή"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Ο αυτόματος τηλεφωνητής θα είναι προσβάσιμος μόνο καλώντας το *86. Ορίστε έναν νέο αριθμό PIN αυτόματου τηλεφωνητή για να συνεχίσετε."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Ορισμός PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-en-rAU/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-en-rAU/strings.xml
deleted file mode 100644
index 9809c4b..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Activating visual voicemail"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"You might not receive voicemail notifications until visual voicemail is fully activated. Call voicemail to retrieve new messages until voicemail is fully activated."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Can\'t activate visual voicemail"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Make sure your phone has a mobile network connection and try again."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Turn off aeroplane mode and try again."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"No connection"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"You won\'t be notified for new voicemails. If you\'re on Wi‑Fi, you can check for voicemail by syncing now."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"You won\'t be notified about new voicemail. Turn off aeroplane mode to sync your voicemail."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Your phone needs a mobile data connection to check voicemail."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Can\'t activate visual voicemail"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Try again when your Wi‑Fi or mobile data connection is better. You can still call to check voicemail."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Try again when your mobile data connection is better. You can still call to check voicemail."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Inbox almost full"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"You won\'t be able to receive new voicemail if your inbox is full."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Can\'t receive new voicemail"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Your inbox is full. Try deleting some messages to receive new voicemail."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Your mailbox is full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Your mailbox is almost full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Set your voicemail PIN"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"You\'ll need a voicemail PIN whenever you call to access your voicemail."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Aeroplane mode settings"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Set PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Try again"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Turn on"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"No, thanks"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sync"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Call voicemail"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Call Customer Support"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Something went wrong"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Something went wrong"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Something went wrong"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Something went wrong"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Something went wrong"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Something went wrong"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Sorry, we\'re having trouble setting up your service. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Sorry, we\'re not able to connect to your voice mailbox at the moment. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Set Up Voicemail"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Voicemail isn\'t set up on your account. Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Voicemail"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Visual voicemail cannot be used on this device. Please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Something went wrong"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visual voicemail"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"To complete visual voicemail setup, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visual voicemail"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"To complete visual voicemail setup, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visual voicemail"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"To activate visual voicemail, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Something went wrong"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"To complete visual voicemail setup, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visual voicemail is disabled"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> to activate visual voicemail."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Something went wrong"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Something went wrong"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Something went wrong"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Turn on Visual Voicemail"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nBy turning on Visual Voicemail you agree to the Verizon Wireless terms and conditions:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Turn on visual voicemail"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"See and listen to your messages, without having to call voicemail. Transcripts of your voicemail are provided by Google’s free transcription service. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"See and listen to your messages, without having to call voicemail. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Learn more"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Visual voicemail will be disabled if the Terms and Conditions are declined."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Disable visual voicemail"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Voicemail transcription will be disabled if the terms and conditions are declined."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Disable voicemail transcription"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Voicemail will only be accessible by calling *86. Set a new voicemail PIN to proceed."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Set PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-en-rGB/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-en-rGB/strings.xml
deleted file mode 100644
index 9809c4b..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Activating visual voicemail"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"You might not receive voicemail notifications until visual voicemail is fully activated. Call voicemail to retrieve new messages until voicemail is fully activated."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Can\'t activate visual voicemail"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Make sure your phone has a mobile network connection and try again."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Turn off aeroplane mode and try again."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"No connection"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"You won\'t be notified for new voicemails. If you\'re on Wi‑Fi, you can check for voicemail by syncing now."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"You won\'t be notified about new voicemail. Turn off aeroplane mode to sync your voicemail."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Your phone needs a mobile data connection to check voicemail."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Can\'t activate visual voicemail"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Try again when your Wi‑Fi or mobile data connection is better. You can still call to check voicemail."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Try again when your mobile data connection is better. You can still call to check voicemail."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Inbox almost full"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"You won\'t be able to receive new voicemail if your inbox is full."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Can\'t receive new voicemail"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Your inbox is full. Try deleting some messages to receive new voicemail."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Your mailbox is full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Your mailbox is almost full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Set your voicemail PIN"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"You\'ll need a voicemail PIN whenever you call to access your voicemail."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Aeroplane mode settings"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Set PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Try again"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Turn on"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"No, thanks"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sync"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Call voicemail"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Call Customer Support"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Something went wrong"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Something went wrong"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Something went wrong"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Something went wrong"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Something went wrong"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Something went wrong"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Sorry, we\'re having trouble setting up your service. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Sorry, we\'re not able to connect to your voice mailbox at the moment. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Set Up Voicemail"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Voicemail isn\'t set up on your account. Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Voicemail"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Visual voicemail cannot be used on this device. Please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Something went wrong"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visual voicemail"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"To complete visual voicemail setup, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visual voicemail"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"To complete visual voicemail setup, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visual voicemail"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"To activate visual voicemail, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Something went wrong"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"To complete visual voicemail setup, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visual voicemail is disabled"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> to activate visual voicemail."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Something went wrong"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Something went wrong"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Something went wrong"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Turn on Visual Voicemail"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nBy turning on Visual Voicemail you agree to the Verizon Wireless terms and conditions:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Turn on visual voicemail"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"See and listen to your messages, without having to call voicemail. Transcripts of your voicemail are provided by Google’s free transcription service. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"See and listen to your messages, without having to call voicemail. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Learn more"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Visual voicemail will be disabled if the Terms and Conditions are declined."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Disable visual voicemail"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Voicemail transcription will be disabled if the terms and conditions are declined."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Disable voicemail transcription"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Voicemail will only be accessible by calling *86. Set a new voicemail PIN to proceed."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Set PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-en-rIN/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-en-rIN/strings.xml
deleted file mode 100644
index 9809c4b..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Activating visual voicemail"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"You might not receive voicemail notifications until visual voicemail is fully activated. Call voicemail to retrieve new messages until voicemail is fully activated."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Can\'t activate visual voicemail"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Make sure your phone has a mobile network connection and try again."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Turn off aeroplane mode and try again."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"No connection"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"You won\'t be notified for new voicemails. If you\'re on Wi‑Fi, you can check for voicemail by syncing now."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"You won\'t be notified about new voicemail. Turn off aeroplane mode to sync your voicemail."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Your phone needs a mobile data connection to check voicemail."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Can\'t activate visual voicemail"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Try again when your Wi‑Fi or mobile data connection is better. You can still call to check voicemail."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Try again when your mobile data connection is better. You can still call to check voicemail."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Can\'t update visual voicemail"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"You can still call to check voicemail."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Inbox almost full"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"You won\'t be able to receive new voicemail if your inbox is full."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Can\'t receive new voicemail"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Your inbox is full. Try deleting some messages to receive new voicemail."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Your mailbox is full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Turn on extra storage and backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Your mailbox is almost full. To free up space, turn on extra storage so that Google can manage and back up your voicemail messages."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Set your voicemail PIN"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"You\'ll need a voicemail PIN whenever you call to access your voicemail."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Aeroplane mode settings"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Set PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Try again"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Turn on"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"No, thanks"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sync"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Call voicemail"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Call Customer Support"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Something went wrong"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Something went wrong"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Something went wrong"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Something went wrong"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Something went wrong"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Something went wrong"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Sorry, we\'re having trouble setting up your service. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Can\'t connect to your voice mailbox"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Sorry, we\'re not able to connect to your voice mailbox at the moment. Please try again later. If there is still a problem, please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Set Up Voicemail"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Voicemail isn\'t set up on your account. Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Voicemail"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Visual voicemail cannot be used on this device. Please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Something went wrong"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visual voicemail"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"To complete visual voicemail setup, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visual voicemail"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"To complete visual voicemail setup, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visual voicemail"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"To activate visual voicemail, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Something went wrong"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"To complete visual voicemail setup, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visual voicemail is disabled"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> to activate visual voicemail."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Something went wrong"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Something went wrong"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Something went wrong"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Please contact Customer Service on <xliff:g id="NUMBER">%1$s</xliff:g> and tell them that the error code is 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Turn on Visual Voicemail"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nBy turning on Visual Voicemail you agree to the Verizon Wireless terms and conditions:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Turn on visual voicemail"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"See and listen to your messages, without having to call voicemail. Transcripts of your voicemail are provided by Google’s free transcription service. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"See and listen to your messages, without having to call voicemail. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Learn more"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Visual voicemail will be disabled if the Terms and Conditions are declined."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Disable visual voicemail"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Voicemail transcription will be disabled if the terms and conditions are declined."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Disable voicemail transcription"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Voicemail will only be accessible by calling *86. Set a new voicemail PIN to proceed."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Set PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-es-rUS/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-es-rUS/strings.xml
deleted file mode 100644
index 769db2d..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Activando el buzón de voz visual"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Es posible que no recibas notificaciones de los mensajes de voz hasta que el buzón de voz visual se encuentre completamente activado. Hasta ese momento, puedes llamar al buzón de voz para recuperar los mensajes nuevos."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"No se puede activar el buzón de voz visual"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Asegúrate de que el teléfono tenga conexión móvil y vuelve a intentarlo."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Desactiva el modo de avión y vuelve a intentarlo."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Sin conexión"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"No recibirás notificaciones de los mensajes de voz nuevos. Si estás conectado a Wi-Fi, puedes sincronizar ahora para revisar el buzón de voz."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"No recibirás notificaciones de los mensajes de voz nuevos. Desactiva el modo de avión para sincronizar el buzón de voz."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"El teléfono necesita una conexión de datos móviles para revisar el buzón de voz."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"No se puede activar el buzón de voz visual"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Aún puedes llamar para revisar el buzón de voz."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"No se puede actualizar el buzón de voz visual"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Vuelve a intentarlo cuando la conexión Wi-Fi o la conexión de datos móviles mejoren. Aún puedes llamar para revisar el buzón de voz."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Vuelve a intentarlo cuando la conexión de datos móviles mejore. Aún puedes llamar para revisar el buzón de voz."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"No se puede actualizar el buzón de voz visual"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Aún puedes llamar para revisar el buzón de voz."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"No se puede actualizar el buzón de voz visual"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Aún puedes llamar para revisar el buzón de voz."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"No se puede actualizar el buzón de voz visual"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Aún puedes llamar para revisar el buzón de voz."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"No se puede actualizar el buzón de voz visual"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Aún puedes llamar para revisar el buzón de voz."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"La carpeta Recibidos está casi llena"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Si la carpeta Recibidos está llena, no podrás recibir mensajes de voz nuevos."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"No se pueden recibir mensajes de voz nuevos"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"La carpeta Recibidos está llena. Intenta borrar algunos mensajes para recibir mensajes de voz nuevos."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activar la copia de seguridad y obtener almacenamiento adicional"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Tu buzón está lleno. Para liberar espacio, obtén almacenamiento adicional para que Google pueda administrar tus mensajes de voz y hacer copias de seguridad de ellos."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activar la copia de seguridad y obtener almacenamiento adicional"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Tu buzón está casi lleno. Para liberar espacio, obtén almacenamiento adicional para que Google pueda administrar tus mensajes de voz y hacer copias de seguridad de ellos."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Configura el PIN del buzón de voz"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Necesitas un PIN cada vez que llames para acceder al buzón de voz."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Configuración del modo de avión"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Establecer PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Volver a intentarlo"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Activar"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"No, gracias"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sincronizar"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Llamar al buzón de voz"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Llamar al servicio de atención al cliente"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Se produjo un error"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Lo sentimos, tuvimos un problema. Vuelve a intentarlo más tarde. Si el problema persiste, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Se produjo un error"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Lo sentimos, tuvimos un problema. Vuelve a intentarlo más tarde. Si el problema persiste, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Se produjo un error"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Lo sentimos, tuvimos un problema. Vuelve a intentarlo más tarde. Si el problema persiste, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"No se puede establecer la conexión con el buzón de voz"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Lo sentimos, tenemos problemas para establecer la conexión con tu buzón de voz. Si te encuentras en un área donde la señal es débil, espera a que haya buena señal y vuelve a intentarlo. Si el problema persiste, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"No se puede establecer la conexión con el buzón de voz"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Lo sentimos, tenemos problemas para establecer la conexión con tu buzón de voz. Si te encuentras en un área donde la señal es débil, espera a que haya buena señal y vuelve a intentarlo. Si el problema persiste, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"No se puede establecer la conexión con el buzón de voz"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Lo sentimos, tenemos problemas para establecer la conexión con tu buzón de voz. Si te encuentras en un área donde la señal es débil, espera a que haya buena señal y vuelve a intentarlo. Si el problema persiste, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Se produjo un error"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Lo sentimos, tuvimos un problema. Vuelve a intentarlo más tarde. Si el problema persiste, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Se produjo un error"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Lo sentimos, tuvimos un problema. Vuelve a intentarlo más tarde. Si el problema persiste, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Se produjo un error"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Lo sentimos, tenemos dificultades para configurar tu servicio. Vuelve a intentarlo más tarde. Si el problema persiste, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"No se puede establecer la conexión con el buzón de voz"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Lo sentimos, no podemos establecer la conexión con tu buzón de voz en este momento. Vuelve a intentarlo más tarde. Si el problema persiste, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Configurar buzón de voz"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"El buzón de voz no está configurado en tu cuenta. Comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Buzón de voz"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"No se puede usar el buzón de voz visual en este dispositivo. Comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> y diles que el código de error es 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Se produjo un error"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Buzón de voz visual"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Para completar la configuración del buzón de voz visual, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> y diles que el código de error es 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Buzón de voz visual"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Para completar la configuración del buzón de voz visual, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> y diles que el código de error es 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Buzón de voz visual"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Para activar el buzón de voz visual, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> y diles que el código de error es 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Se produjo un error"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Para completar la configuración del buzón de voz visual, comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> y diles que el código de error es 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"El buzón de voz visual está inhabilitado"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> para activar el buzón de voz visual."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Se produjo un error"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Se produjo un error"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Se produjo un error"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Comunícate con el servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Activar el buzón de voz visual"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nAl activar el buzón de voz visual, aceptas los términos y condiciones de Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Activar el buzón de voz visual"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Puedes ver y escuchar tus mensajes sin necesidad de llamar al buzón de voz. El servicio de transcripción gratuito de Google te proporciona transcripciones del buzón de voz. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Puedes ver y escuchar tus mensajes sin necesidad de llamar al buzón de voz. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Más información"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"El buzón de voz visual se desactiva si no aceptas los términos y condiciones."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Inhabilitar buzón de voz visual"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"La transcripción del buzón de voz se desactivará si no aceptas los términos y condiciones."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Inhabilitar la transcripción del buzón de voz"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Solo podrás acceder al buzón de voz llamando al *86. Para continuar, establece un nuevo PIN para el buzón de voz."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Establecer PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-es/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-es/strings.xml
deleted file mode 100644
index 6d21c0d..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-es/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Activando el buzón de voz visual"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Es posible que no recibas notificaciones de mensajes de voz hasta que se active totalmente el buzón de voz visual. Hasta ese momento, puedes llamar al buzón de voz para escuchar los mensajes nuevos."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"No se puede activar el correo de voz visual"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Asegúrate de que tu teléfono tenga conexión a una red móvil y vuelve a intentarlo."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Desactiva el modo avión e inténtalo otra vez."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Sin conexión"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"No recibirás notificaciones de los mensajes de voz nuevos. Si estás usando una conexión Wi-Fi, puedes sincronizar ahora el teléfono para comprobar si hay mensajes de voz."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"No recibirás notificaciones de los mensajes de voz nuevos. Si quieres sincronizar tu buzón de voz, desactiva el modo avión."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Para comprobar el buzón de voz, necesitas una conexión de datos móviles en el teléfono."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"No se puede activar el correo de voz visual"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Puedes llamar para comprobar el buzón de voz."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"No se puede actualizar el correo de voz visual"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Inténtalo otra vez cuando tengas mejor conexión Wi-Fi o de datos móviles. Puedes llamar para comprobar el buzón de voz."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Inténtalo otra vez cuando tengas mejor conexión de datos móviles. Puedes llamar para comprobar el buzón de voz."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"No se puede actualizar el correo de voz visual"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Puedes llamar para comprobar el buzón de voz."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"No se puede actualizar el correo de voz visual"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Puedes llamar para comprobar el buzón de voz."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"No se puede actualizar el correo de voz visual"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Puedes llamar para comprobar el buzón de voz."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"No se puede actualizar el correo de voz visual"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Puedes llamar para comprobar el buzón de voz."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"La bandeja de entrada está casi llena"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Si la bandeja de entrada está llena, no podrás recibir los mensajes de voz nuevos."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"No puedes recibir los mensajes de voz nuevos"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Tienes la bandeja de entrada llena. Para recibir nuevos mensajes de voz, prueba a eliminar algunos antiguos."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Habilitar más espacio de almacenamiento y de copia de seguridad"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Tu buzón de voz está lleno. Para desocupar espacio, habilita más almacenamiento para que Google pueda hacer una copia de seguridad de tus mensajes del buzón de buzón y gestionarlos."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Habilitar más espacio de almacenamiento y de copia de seguridad"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Tu buzón de voz está prácticamente lleno. Para desocupar espacio, habilita más almacenamiento para que Google pueda hacer una copia de seguridad de tus mensajes del buzón de buzón y gestionarlos."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Configura el PIN del buzón de voz"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Deberás introducir un PIN del buzón de voz siempre que llames para escuchar los mensajes de voz."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Ajustes del modo avión"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Configurar el PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Volver a intentarlo"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Habilitar"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"No, gracias"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sincronizar"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Llamar a buzón de voz"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Llamar al servicio de Atención al cliente"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Se ha producido un error"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Hemos encontrado un problema. Vuelve a intentarlo más tarde. Si no se ha resuelto, llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Se ha producido un error"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Hemos encontrado un problema. Vuelve a intentarlo más tarde. Si no se ha resuelto, llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Se ha producido un error"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Hemos encontrado un problema. Vuelve a intentarlo más tarde. Si no se ha resuelto, llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"No se puede conectar con tu buzón de voz"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"No hemos podido conectar con tu buzón de voz. Si tienes poca cobertura, espera a tener más para volver a intentarlo. Si no se ha resuelto el problema, llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"No se puede conectar con tu buzón de voz"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"No hemos podido conectar con tu buzón de voz. Si tienes poca cobertura, espera a tener más para volver a intentarlo. Si no se ha resuelto el problema, llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"No se puede conectar con tu buzón de voz"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"No hemos podido conectar con tu buzón de voz. Si tienes poca cobertura, espera a tener más para volver a intentarlo. Si no se ha resuelto el problema, llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Se ha producido un error"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Hemos encontrado un problema. Vuelve a intentarlo más tarde. Si no se ha resuelto, llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Se ha producido un error"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Hemos encontrado un problema. Vuelve a intentarlo más tarde. Si no se ha resuelto, llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Se ha producido un error"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Hemos encontrado un problema para configurar tu servicio. Vuelve a intentarlo más tarde. Si no se ha resuelto, llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"No se puede conectar con tu buzón de voz"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"No podemos conectar con tu buzón de voz en este momento. Vuelve a intentarlo más tarde. Si no se ha resuelto el problema, llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Configurar el buzón de voz"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"El buzón de voz no está configurado en tu cuenta. Llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Buzón de voz"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"No se puede utilizar el buzón de voz visual en este dispositivo. Llama al servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indica el código de error 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Se ha producido un error"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Buzón de voz visual"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"No se puede utilizar el buzón de voz visual en este dispositivo. Llama al servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indica el código de error 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Buzón de voz visual"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"No se puede utilizar el buzón de voz visual en este dispositivo. Llama al servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indica el código de error 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Buzón de voz visual"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"No se puede utilizar el buzón de voz visual en este dispositivo. Llama al servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indica el código de error 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Se ha producido un error"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"No se puede utilizar el buzón de voz visual en este dispositivo. Llama al servicio de atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indica el código de error 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"El buzón de voz visual está inhabilitado"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> para activar el buzón de voz visual."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Se ha producido un error"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Se ha producido un error"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Se ha producido un error"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Llama al servicio de Atención al cliente al <xliff:g id="NUMBER">%1$s</xliff:g> e indícales que el código de error es el 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Activar el buzón de voz visual"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nAl activar el buzón de voz visual, aceptas los términos y condiciones de Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Activar el buzón de voz visual"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Consulta y escucha tus mensajes sin tener que llamar al buzón de voz. El servicio de transcripción gratuito de Google te ofrece transcripciones de tus mensajes de voz. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Consulta y escucha tus mensajes sin tener que llamar al buzón de voz. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Más información"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Si rechazas los términos y condiciones, el buzón de voz visual se quedará inhabilitado."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Inhabilitar el buzón de voz visual"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Si rechazas los términos y condiciones, se inhabilitará la transcripción de mensajes de voz."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Inhabilitar la transcripción de mensajes de voz"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Solo podrás acceder al buzón de voz llamando al *86. Configura un nuevo PIN del buzón para continuar."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Configurar el PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-et/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-et/strings.xml
deleted file mode 100644
index e95a9eb..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-et/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Visuaalse kõneposti aktiveerimine"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Te ei pruugi kõneposti märguandeid saada enne, kui visuaalne kõnepost on täielikult aktiveeritud. Kuni kõnepost on täielikult aktiveeritud, helistage uute sõnumite toomiseks kõneposti."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Visuaalset kõneposti ei saa aktiveerida"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Veenduge, et teie telefonis oleks mobiilsidevõrk saadaval, ja proovige uuesti."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Lülitage lennurežiim välja ja proovige uuesti."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Ühendus puudub"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Teid ei teavitata uutest kõnepostisõnumitest. Kui kasutate WiFi-t, saate kõneposti kontrollida, kui kohe sünkroonite."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Teid ei teavitata uutest kõnepostisõnumitest. Kõneposti sünkroonimiseks lülitage lennurežiim välja."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Teie telefonis peab kõneposti kontrollimiseks olema lubatud mobiilne andmesideühendus."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Visuaalset kõneposti ei saa aktiveerida"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Kõneposti saate siiski kontrollida, kui sinna helistate."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Visuaalset kõneposti ei saa värskendada"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Proovige uuesti, kui WiFi- või mobiilne andmesideühendus on parem. Kõneposti saate siiski kontrollida, kui sinna helistate."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Proovige uuesti, kui mobiilne andmesideühendus on parem. Kõneposti saate siiski kontrollida, kui sinna helistate."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Visuaalset kõneposti ei saa värskendada"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Kõneposti saate siiski kontrollida, kui sinna helistate."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Visuaalset kõneposti ei saa värskendada"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Kõneposti saate siiski kontrollida, kui sinna helistate."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Visuaalset kõneposti ei saa värskendada"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Kõneposti saate siiski kontrollida, kui sinna helistate."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Visuaalset kõneposti ei saa värskendada"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Kõneposti saate siiski kontrollida, kui sinna helistate."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Postkast on peaaegu täis"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Kui teie postkast on täis, ei saa te uusi kõnepostisõnumeid vastu võtta."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Uusi kõnepostisõnumeid ei saa vastu võtta"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Teie postkast on täis. Uute kõnepostisõnumite vastuvõtmiseks kustutage mõned sõnumid."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Lisasalvestusruumi ja varundamise sisselülitamine"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Teie postkast on täis. Ruumi vabastamiseks lülitage sisse lisasalvestusruum, et Google saaks teie kõnepostisõnumeid hallata ja varundada."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Lisasalvestusruumi ja varundamise sisselülitamine"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Teie postkast on peaaegu täis. Ruumi vabastamiseks lülitage sisse lisasalvestusruum, et Google saaks teie kõnepostisõnumeid hallata ja varundada."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Määrake kõneposti PIN-kood"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Vajate PIN-koodi juhul, kui helistate kõnepostile juurdepääsemiseks."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Lennurežiimi seaded"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Määra PIN-kood"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Proovi uuesti"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Lülita sisse"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Tänan, ei"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sünkrooni"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Helista kõneposti"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Helista klienditoele"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Midagi läks valesti"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Kahjuks ilmnes probleem. Proovige hiljem uuesti. Kui probleem püsib, võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Midagi läks valesti"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Kahjuks ilmnes probleem. Proovige hiljem uuesti. Kui probleem püsib, võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Midagi läks valesti"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Kahjuks ilmnes probleem. Proovige hiljem uuesti. Kui probleem püsib, võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Teie kõnepostkastiga ei saa ühendust luua"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Kahjuks esineb probleeme teie kõnepostkastiga ühendamisel. Kui asute kehva leviga piirkonnas, oodake, kuni signaal on tugev, ja proovige uuesti. Kui probleem püsib, võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Teie kõnepostkastiga ei saa ühendust luua"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Kahjuks esineb probleeme teie kõnepostkastiga ühendamisel. Kui asute kehva leviga piirkonnas, oodake, kuni signaal on tugev, ja proovige uuesti. Kui probleem püsib, võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Teie kõnepostkastiga ei saa ühendust luua"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Kahjuks esineb probleeme teie kõnepostkastiga ühendamisel. Kui asute kehva leviga piirkonnas, oodake, kuni signaal on tugev, ja proovige uuesti. Kui probleem püsib, võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Midagi läks valesti"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Kahjuks ilmnes probleem. Proovige hiljem uuesti. Kui probleem püsib, võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Midagi läks valesti"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Kahjuks ilmnes probleem. Proovige hiljem uuesti. Kui probleem püsib, võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Midagi läks valesti"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Kahjuks on meil probleeme teie teenuse seadistamisega. Proovige hiljem uuesti. Kui probleem püsib, võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Teie kõnepostkastiga ei saa ühendust luua"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Kahjuks ei õnnestu meil praegu teie kõnepostkastiga ühendust luua. Proovige hiljem uuesti. Kui probleem püsib, võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Kõneposti seadistamine"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Kõnepost pole teie kontol seadistatud. Võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Kõnepost"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Selles seadmes ei saa visuaalset kõneposti kasutada. Võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Midagi läks valesti"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visuaalne kõnepost"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Visuaalse kõneposti seadistamise lõpuleviimiseks võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visuaalne kõnepost"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Visuaalse kõneposti seadistamise lõpuleviimiseks võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visuaalne kõnepost"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Visuaalse kõneposti aktiveerimiseks võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Midagi läks valesti"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Visuaalse kõneposti seadistamise lõpuleviimiseks võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visuaalne kõnepost on keelatud"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Visuaalse kõneposti aktiveerimiseks võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Midagi läks valesti"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Midagi läks valesti"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Midagi läks valesti"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Võtke ühendust klienditeenindusega numbril <xliff:g id="NUMBER">%1$s</xliff:g> ja öelge neile, et veakood on 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Visuaalse kõneposti sisselülitamine"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nVisuaalse kõneposti sisselülitamisel nõustute Verizon Wirelessi nõuete ja tingimustega:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Visuaalse kõneposti sisselülitamine"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Vaadake ja kuulake oma sõnumeid, ilma et peaksite kõneposti helistama. Kõnepostisõnumite transkriptsioone pakub Google\'i tasuta transkribeerimisteenus. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Vaadake ja kuulake oma sõnumeid, ilma et peaksite kõneposti helistama. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Lisateave"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Visuaalne kõnepost keelatakse, kui nõuded ja tingimused tagasi lükatakse."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Visuaalse kõneposti keelamine"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Kõnepostisõnumite transkribeerimine keelatakse, kui nõuete ja tingimustega ei nõustuta."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Kõnepostisõnumite transkribeerimise keelamine"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Kõnepost on saadaval vaid siis, kui helistate numbril *86. Jätkamiseks määrake uus kõneposti PIN-kood."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN-koodi määramine"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-eu/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-eu/strings.xml
deleted file mode 100644
index 3f31e67..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-eu/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Ikusizko erantzungailua aktibatzen"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"aktibatu arte, agian ez duzu jasoko erantzungailuaren jakinarazpenik. Erantzungailua guztiz aktibatuta ez dagoen artean, deitu erantzungailuari mezu berriak entzuteko."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Ezin da aktibatu ikusizko erantzungailua"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Ziurtatu telefonoak datu-konexioa duela eta saiatu berriro."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Desaktibatu hegaldi modua eta saiatu berriro."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Ez dago konexiorik"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Ez duzu jasoko jakinarazpenik ahots-mezu berriak dituzunean. Wi-Fi sarea erabiltzen ari bazara, orain sinkroniza dezakezu erantzungailua ahots-mezurik duzun begiratzeko."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Ez duzu jakinarazpenik jasoko ahots-mezu berriak dituzunean. Desaktibatu hegaldi modua erantzungailua sinkronizatzeko."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Erantzungailua egiaztatzeko, datu-konexioa behar du telefonoak."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Ezin da aktibatu ikusizko erantzungailua"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Deitu egin dezakezu erantzungailua egiaztatzeko."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Ezin da eguneratu ikusizko erantzungailua."</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Saiatu berriro Wi-Fi edo datu-konexioa hobeak direnean. Bestela ere, deitu egin dezakezu erantzungailua egiaztatzeko."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Saiatu berriro datu-konexioa hobea denean. Bestela ere, deitu egin dezakezu erantzungailua egiaztatzeko."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Ezin da eguneratu ikusizko erantzungailua."</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Deitu egin dezakezu erantzungailua egiaztatzeko."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Ezin da eguneratu ikusizko erantzungailua."</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Deitu egin dezakezu erantzungailua egiaztatzeko."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Ezin da eguneratu ikusizko erantzungailua."</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Deitu egin dezakezu erantzungailua egiaztatzeko."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Ezin da eguneratu ikusizko erantzungailua."</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Deitu egin dezakezu erantzungailua egiaztatzeko."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Ia beteta dago sarrera-ontzia"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Ezin izango duzu jaso ahots-mezu berririk sarrera-ontzia beteta badago."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Ezin da jaso ahots-mezu berririk"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Beteta dago sarrera-ontzia. Ezabatu mezu batzuk ahots-mezu berriak jasotzeko."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Lortu biltegiratze-toki gehiago eta egin babeskopiak"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Beteta dago postontzia. Tokia egiteko, lortu biltegiratze-toki gehiago, Google-k erantzungailuko mezuak kudeatu eta haien babeskopiak egin ahal izan ditzan."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Lortu biltegiratze-toki gehiago eta egin babeskopiak"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Ia beteta dago postontzia. Tokia egiteko, lortu biltegiratze-toki gehiago, Google-k erantzungailuko mezuak kudeatu eta haien babeskopiak egin ahal izan ditzan."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ezarri erantzungailuko PIN kodea"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Erantzungailua atzitzeko deitzen duzunerako behar duzu PIN kodea."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Hegaldi moduaren ezarpenak"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Ezarri PIN kodea"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Saiatu berriro"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Lortu biltegiratze-tokia"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Ez, eskerrik asko"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinkronizazioa"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Deitu erantzungailuari"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Deitu bezeroarentzako arreta-zerbitzuari"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Arazoren bat izan da"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Arazoren bat izan dugu. Saiatu berriro geroago. Arazoak bere horretan jarraitzen badu, jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9001 dela."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Arazoren bat izan da"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Arazoren bat izan dugu. Saiatu berriro geroago. Arazoak bere horretan jarraitzen badu, jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9002 dela."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Arazoren bat izan da"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Arazoren bat izan dugu. Saiatu berriro geroago. Arazoak bere horretan jarraitzen badu, jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9003 dela."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Ezin zara konektatu erantzungailura"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Arazoren bat dugu erantzungailura konektatzeko. Estaldura ahula duen tokiren batean bazaude, itxaron estaldura hobea izan arte eta saiatu berriro. Arazoak bere horretan jarraitzen badu, jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9004 dela."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Ezin zara konektatu erantzungailura"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Arazoren bat dugu erantzungailura konektatzeko. Estaldura ahula duen tokiren batean bazaude, itxaron estaldura hobea izan arte eta saiatu berriro. Arazoak bere horretan jarraitzen badu, jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9005 dela."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Ezin zara konektatu erantzungailura"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Arazoren bat dugu erantzungailura konektatzeko. Estaldura ahula duen tokiren batean bazaude, itxaron estaldura hobea izan arte eta saiatu berriro. Arazoak bere horretan jarraitzen badu, jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9006 dela."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Arazoren bat izan da"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Arazoren bat izan dugu. Saiatu berriro geroago. Arazoak bere horretan jarraitzen badu, jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9007 dela."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Arazoren bat izan da"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Arazoren bat izan dugu. Saiatu berriro geroago. Arazoak bere horretan jarraitzen badu, jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9008 dela."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Arazoren bat izan da"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Arazoren bat dugu zerbitzua konfiguratzeko. Saiatu berriro geroago. Arazoak bere horretan jarraitzen badu, jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9009 dela."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Ezin zara konektatu erantzungailura"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Une honetan, ezin gara konektatu erantzungailura. Saiatu berriro geroago. Arazoak bere horretan jarraitzen badu, jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9990 dela."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Konfiguratu erantzungailua"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Erantzungailua ez dago konfiguratuta kontu honetan. Jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9991 dela."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Erantzungailua"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Ikusizko erantzungailua ezin da erabili gailu honetan. Jarri harremanetan bezeroarentzako zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9992 dela."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Arazoren bat izan da"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9993 dela."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Ikusizko erantzungailua"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Ikusizko erantzungailuaren konfigurazioa osatzeko, jarri harremanetan bezeroarentzako zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9994 dela."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Ikusizko erantzungailua"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Ikusizko erantzungailuaren konfigurazioa osatzeko, jarri harremanetan bezeroarentzako zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9995 dela."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Ikusizko erantzungailua"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Ikusizko erantzungailua aktibatzeko, jarri harremanetan bezeroarentzako zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9996 dela."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Arazoren bat izan da"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Ikusizko erantzungailuaren konfigurazioa osatzeko, jarri harremanetan bezeroarentzako zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9998 dela."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Ikusizko erantzungailua desgaituta dago"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) ikusizko erantzungailua aktibatzeko."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Arazoren bat izan da"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9997 dela."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Arazoren bat izan da"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9989 dela."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Arazoren bat izan da"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Jarri harremanetan bezeroarentzako arreta-zerbitzuarekin (<xliff:g id="NUMBER">%1$s</xliff:g>) eta esan iezaiezu errore-kodea 9999 dela."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Aktibatu ikusizko erantzungailua"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nIkusizko erantzungailua aktibatzen baduzu, onartu egingo dituzu Verizon Wireless zerbitzuaren Zehaztapenak eta baldintzak:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Aktibatu ikusizko erantzungailua"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Ikusi eta entzun mezuak, erantzungailura deitu beharrik gabe. Google-ren doako transkripzio-zerbitzuaren bidez egiten dira erantzungailuko mezuen transkripzioak. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Ikusi eta entzun mezuak, erantzungailura deitu beharrik gabe. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Informazio gehiago"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Zehaztapenak eta baldintzak onartzen ez badituzu, desgaitu egingo da ikusizko erantzungailua."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Desgaitu ikusizko erantzungailua"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Zehaztapenak eta baldintzak onartzen ez badituzu, desgaitu egingo da ahots-mezuak transkribatzeko aukera."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Desgaitu ahots-mezuak transkribatzeko aukera"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Erantzungailua atzitzeko, *86 zenbakira deitu beharko duzu. Jarraitzeko, ezarri erantzungailuaren PIN kodea."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Ezarri PIN kodea"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-fa/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-fa/strings.xml
deleted file mode 100644
index 61328e3..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-fa/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"فعال کردن پست صوتی تصویری"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"ممکن است تا زمانی که پست صوتی تصویری کاملاً فعال نشده باشد، اعلان‌های پست صوتی را دریافت نکنید. تا زمانی که پست صوتی به‌طور کامل فعال نشده است، برای بازیابی پیام‌های جدید، با پست صوتی تماس بگیرید."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"پست صوتی تصویری فعال نشد"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"مطمئن شوید تلفنتان اتصال شبکه تلفن همراه دارد و دوباره امتحان کنید."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"حالت هواپیما را غیرفعال کنید و دوباره امتحان کنید."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"اتصال برقرار نیست"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"‏از پست‌های صوتی جدید مطلع نمی‌شود. اگر از Wi-Fi استفاده می‌کنید، با انجام همگام‌سازی در این لحظه، می‌توانید پست صوتی را بررسی کنید."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"برای پست‌های صوتی جدید به شما اطلاع داده نمی‌شود. حالت هواپیما را غیرفعال کنید تا پست صوتی همگام‌سازی شود."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"برای بررسی پست صوتی، تلفنتان باید اتصال داده همراه داشته باشد."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"پست صوتی تصویری فعال نشد"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"همچنان می‌توانید برای بررسی پست صوتی تماس بگیرید."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"پست صوتی تصویری به‌روزرسانی نشد"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"‏وقتی Wi-Fi یا اتصال داده همراه بهتر شد دوباره امتحان کنید. همچنان می‌توانید برای بررسی پست صوتی، تماس بگیرید."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"وقتی اتصال داده همراه بهتر شد دوباره امتحان کنید. همچنان می‌توانید برای بررسی پست صوتی تماس بگیرید."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"پست صوتی تصویری به‌روزرسانی نشد"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"همچنان می‌توانید برای بررسی پست صوتی تماس بگیرید."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"پست صوتی تصویری به‌روزرسانی نشد"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"همچنان می‌توانید برای بررسی پست صوتی تماس بگیرید."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"پست صوتی تصویری به‌روزرسانی نشد"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"همچنان می‌توانید برای بررسی پست صوتی تماس بگیرید."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"پست صوتی تصویری به‌روزرسانی نشد"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"همچنان می‌توانید برای بررسی پست صوتی تماس بگیرید."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"صندوق ورودی تقریباً پر است"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"اگر صندوق ورودی‌تان پر باشد نمی‌توانید پست صوتی جدیدی دریافت کنید."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"پست‌های صوتی جدید دریافت نمی‌شود"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"صندوق ورودی‌تان پر است. بعضی از پیام‌ها را حذف کنید تا پست صوتی جدید دریافت کنید."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"فعال‌سازی فضای ذخیره‌سازی اضافی و پشتیبان‌گیری"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"‏صندوق ورودی‌تان پر است. برای آزاد کردن فضا، فضای ذخیره‌سازی اضافی را فعال‌سازی کنید تا Google بتواند پیام‌های صندوق پستی‌تان را مدیریت و پشتیبان‌گیری کند."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"فعال‌سازی فضای ذخیره‌سازی اضافی و پشتیبان‌گیری"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"‏صندوق ورودی‌تان تقریباً پر است. برای آزاد کردن فضا، فضای ذخیره‌سازی اضافی را فعال‌سازی کنید تا Google بتواند پیام‌های صندوق پستی‌تان را مدیریت و پشتیبان‌گیری کند."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"تنظیم پین پست صوتی"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"هر بار که تماس می‌گیرید برای دسترسی به پست صوتی‌تان به پین پست صوتی نیاز دارید."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"تنظیمات حالت هواپیما"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"تنظیم پین"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"دوباره امتحان کنید"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"فعال‌سازی"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"نه سپاسگزارم"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"همگام‌سازی"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"تماس با پست صوتی"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"تماس با پشتیبانی مشتری"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"مشکلی روی داد"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"متأسفیم، مشکلی روی داد. لطفاً بعداً دوباره امتحان کنید. اگر هنوز مشکل دارید، لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٠٠١."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"مشکلی روی داد"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"متأسفیم، مشکلی روی داد. لطفاً بعداً دوباره امتحان کنید. اگر هنوز مشکل دارید، لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٠٠۲."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"مشکلی روی داد"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"متأسفیم، مشکلی روی داد. لطفاً بعداً دوباره امتحان کنید. اگر هنوز مشکل دارید، لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٠٠٣."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"اتصال به صندوق پستی صوتی برقرار نشد"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"متأسفیم، برای اتصال به صندوق پستی صوتی‌تان مشکلی داریم. اگر در منطقه‌ای هستید که قدرت سیگنال ضعیف است، منتظر بمانید تا سیگنال قوی شود و دوباره امتحان کنید. اگر همچنان مشکل دارید، لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٠٠۴."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"اتصال به صندوق پستی صوتی برقرار نشد"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"متأسفیم، برای اتصال به صندوق پستی صوتی‌تان مشکلی داریم. اگر در منطقه‌ای هستید که قدرت سیگنال ضعیف است، منتظر بمانید تا سیگنال قوی شود و دوباره امتحان کنید. اگر همچنان مشکل دارید، لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٠٠۵."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"اتصال به صندوق پستی صوتی برقرار نشد"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"متأسفیم، برای اتصال به صندوق پستی صوتی‌تان مشکلی داریم. اگر در منطقه‌ای هستید که قدرت سیگنال ضعیف است، منتظر بمانید تا سیگنال قوی شود و دوباره امتحان کنید. اگر همچنان مشکل دارید، لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٠٠۶."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"مشکلی روی داد"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"متأسفیم، مشکلی روی داد. لطفاً بعداً دوباره امتحان کنید. اگر همچنان مشکل دارید، لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٠٠٧."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"مشکلی روی داد"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"متأسفیم، مشکلی روی داد. لطفاً بعداً دوباره امتحان کنید. اگر هنوز مشکل دارید، لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٠٠٨."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"مشکلی روی داد"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"متأسفیم، برای تنظیم سرویستان مشکلی داریم. لطفاً بعداً دوباره امتحان کنید. اگر هنوز مشکل دارید، لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٠٠٩."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"اتصال به صندوق پستی صوتی برقرار نشد"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"متأسفیم، فعلاً نمی‌توانیم به صندوق پست صوتی‌تان متصل شویم. لطفاً بعداً دوباره امتحان کنید. اگر هنوز مشکل دارید، لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٩٩٠."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"تنظیم پست صوتی"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"پست صوتی در حسابتان تنظیم نشده است. لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٩٩١."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"پست صوتی"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"پست صوتی تصویری در این دستگاه قابل استفاده نیست. لطفاً ازطریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٩٩۲."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"مشکلی روی داد"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٩٩٣."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"پست صوتی تصویری"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"برای تکمیل مراحل تنظیم پست صوتی تصویری، لطفاً ازطریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٩٩۴."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"پست صوتی تصویری"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"برای تکمیل مراحل تنظیم پست صوتی تصویری، لطفاً ازطریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٩٩۵."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"پست صوتی تصویری"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"برای فعال کردن پست صوتی تصویری، لطفاً ازطریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٩٩۶."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"مشکلی روی داد"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"برای تکمیل مراحل تنظیم پست صوتی تصویری، لطفاً ازطریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٩٩۸."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"پست صوتی تصویری غیرفعال است"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"برای فعال کردن پست صوتی تصویری، لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"مشکلی روی داد"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٩٩٧."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"مشکلی روی داد"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٩٨٩."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"مشکلی روی داد"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"لطفاً از طریق شماره <xliff:g id="NUMBER">%1$s</xliff:g> با خدمات مشتری تماس بگیرید و این کد خطا را به آنها بگویید: ٩٩٩٩."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"روشن کردن پست صوتی تصویری"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"‏%1$s\n\nبا روشن کردن پست صوتی تصویری، با شرایط خدمات Verizon Wireless موافقت می‌کنید:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"روشن کردن پست صوتی تصویری"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"‏بدون نیاز به تماس با پست صوتی، پیام‌هایتان را ببینید و به آن‌ها گوش دهید. متن پست صوتی‌تان توسط سرویس آوانویسی رایگان Google ارائه می‌شود. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"‏بدون نیاز به تماس با پست صوتی، پیام‌هایتان را ببینید و به آن‌ها گوش کنید. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"بیشتر بدانید"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"اگر شرایط و ضوابط را رد کنید، پست صوتی تصویری غیرفعال می‌شود."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"غیرفعال کردن پست صوتی تصویری"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"اگر شرایط و ضوابط را رد کنید، ترانویسی پست صوتی غیرفعال خواهد شد."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"غیرفعال کردن ترانویسی پست صوتی"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"پست صوتی فقط از طریق تماس با ٨۶* قابل دسترسی است. برای ادامه، یک پین پست صوتی جدید تنظیم کنید."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"تنظیم پین"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-fi/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-fi/strings.xml
deleted file mode 100644
index b8a772c..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-fi/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktivoidaan visuaalista puhelinvastaajaa."</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Et ehkä saa vastaajan ilmoituksia, ennen kuin visuaalinen puhelinvastaaja on täysin aktivoitu. Saat uudet viestit soittamalla vastaajaan."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Visuaalisen puhelinvastaajan aktivointi epäonnistui."</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Varmista, että puhelimesi mobiilidatayhteys toimii, ja yritä uudelleen."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Poista lentokonetila käytöstä ja yritä uudelleen."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Ei yhteyttä"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Uusista vastaajaviesteistä ei lähetetä ilmoitusta. Jos olet yhteydessä Wi-Fi-verkkoon, voit tarkistaa vastaajaviestit synkronoimalla nyt."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Uusista vastaajaviesteistä ei lähetetä ilmoitusta. Synkronoi vastaajaviestit poistamalla lentokonetila käytöstä."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Vastaajaviestien tarkistamista varten puhelimessasi on oltava mobiilidatayhteys."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Visuaalisen puhelinvastaajan aktivointi epäonnistui."</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Voit silti tarkistaa vastaajaviestit soittamalla."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Visuaalisen vastaajan päivitys epäonnistui."</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Yritä uudelleen, kun Wi-Fi- tai mobiilidatayhteys on vahvempi. Voit edelleen tarkistaa vastaajaviestit soittamalla."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Yritä uudelleen, kun mobiilidatayhteys on vahvempi. Voit edelleen tarkistaa vastaajaviestit soittamalla."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Visuaalisen vastaajan päivitys epäonnistui."</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Voit silti tarkistaa vastaajaviestit soittamalla."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Visuaalisen vastaajan päivitys epäonnistui."</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Voit silti tarkistaa vastaajaviestit soittamalla."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Visuaalisen vastaajan päivitys epäonnistui."</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Voit silti tarkistaa vastaajaviestit soittamalla."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Visuaalisen vastaajan päivitys epäonnistui."</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Voit silti tarkistaa vastaajaviestit soittamalla."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Postilaatikko lähes täynnä"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Uusia vastaajaviestejä ei voi vastaanottaa, jos postilaatikko on täynnä."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Uusien vastaajaviestien vastaanottaminen ei onnistu."</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Postilaatikkosi on täynnä. Poista viestejä, jotta voit vastaanottaa uusia vastaajaviestejä."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ota käyttöön lisätallennustila ja ‑varmuuskopiointi"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Postilaatikkosi on täynnä. Jos haluat vapauttaa tilaa, ota käyttöön lisätallennustila, niin Google voi hallinnoida ja varmuuskopioida vastaajaviestisi."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ota käyttöön lisätallennustila ja ‑varmuuskopiointi"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Postilaatikkosi on lähes täynnä. Jos haluat vapauttaa tilaa, ota käyttöön lisätallennustila, niin Google voi hallinnoida ja varmuuskopioida vastaajaviestisi."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Aseta vastaajan PIN-koodi"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Vastaajan PIN-koodi on annettava aina, kun käytät vastaajaa."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Lentokonetilan asetukset"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Aseta PIN-koodi"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Yritä uudelleen"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Ota käyttöön"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Ei kiitos"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synkronoidut tiedot"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Soita vastaajaan"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Soita asiakastukeen"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Jokin meni vikaan"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Tapahtui virhe. Yritä myöhemmin uudelleen. Jos ongelma jatkuu, ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Jokin meni vikaan"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Tapahtui virhe. Yritä myöhemmin uudelleen. Jos ongelma jatkuu, ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Jokin meni vikaan"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Tapahtui virhe. Yritä myöhemmin uudelleen. Jos ongelma jatkuu, ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Vastaajaviestien postilaatikkoon ei saada yhteyttä"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Valitettavasti vastaajaviesteihisi ei saada yhteyttä. Jos olet alueella, jossa signaali on heikko, yritä uudelleen, kun pääset vahvemman signaalin alueelle. Jos ongelma jatkuu, ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Vastaajaviestien postilaatikkoon ei saada yhteyttä"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Valitettavasti vastaajaviesteihisi ei saada yhteyttä. Jos olet alueella, jossa signaali on heikko, yritä uudelleen, kun pääset vahvemman signaalin alueelle. Jos ongelma jatkuu, ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Vastaajaviestien postilaatikkoon ei saada yhteyttä"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Valitettavasti vastaajaviesteihisi ei saada yhteyttä. Jos olet alueella, jossa signaali on heikko, yritä uudelleen, kun pääset vahvemman signaalin alueelle. Jos ongelma jatkuu, ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Jokin meni vikaan"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Tapahtui virhe. Yritä myöhemmin uudelleen. Jos ongelma jatkuu, ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Jokin meni vikaan"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Tapahtui virhe. Yritä myöhemmin uudelleen. Jos ongelma jatkuu, ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Jokin meni vikaan"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Palvelun asetusten määrittäminen ei onnistunut. Yritä myöhemmin uudelleen. Jos ongelma jatkuu, ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Vastaajaviestien postilaatikkoon ei saada yhteyttä"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Valitettavasti vastaajaviesteihisi ei juuri nyt saada yhteyttä. Yritä myöhemmin uudelleen. Jos ongelma jatkuu, ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Määritä vastaaja."</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Tilillesi ei ole määritetty vastaajaa. Ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Vastaaja"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Visuaalista vastaajaa ei voi käyttää tässä laitteessa. Ota yhteyttä asiakaspalveluun numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Jokin meni vikaan"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visuaalinen vastaaja"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Jotta voit määrittää visuaalisen vastaajan loppuun, ota yhteyttä asiakaspalveluun numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visuaalinen vastaaja"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Jotta voit määrittää visuaalisen vastaajan loppuun, ota yhteyttä asiakaspalveluun numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visuaalinen vastaaja"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Jos haluat aktivoida visuaalisen vastaajan, ota yhteyttä asiakaspalveluun numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Jokin meni vikaan"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Jotta voit määrittää visuaalisen vastaajan loppuun, ota yhteyttä asiakaspalveluun numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visuaalinen vastaaja on poistettu käytöstä."</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Aktivoi visuaalinen puhelinvastaaja ottamalla yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Jokin meni vikaan"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Jokin meni vikaan"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Jokin meni vikaan"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Ota yhteys asiakastukeen numerossa <xliff:g id="NUMBER">%1$s</xliff:g> ja ilmoita virhekoodi 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Ota visuaalinen vastaaja käyttöön."</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nOttamalla visuaalisen vastaajan käyttöön hyväksyt Verizon Wirelessin käyttöehdot:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Ota visuaalinen vastaaja käyttöön."</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Voit tarkistaa ja kuunnella viestisi soittamatta vastaajaan. Googlen ilmainen transkriptiopalvelu tarjoaa vastaajaviestiesi transkriptiot. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Voit tarkistaa ja kuunnella viestisi soittamatta vastaajaan. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Lisätietoja"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Visuaalinen puhelinvastaaja poistetaan käytöstä, jos käyttöehtoja ei hyväksytä."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Poista visuaalinen puhelinvastaaja käytöstä"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Puhelinvastaajan transkriptio poistetaan käytöstä, jos käyttöehtoja ei hyväksytä."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Poista puhelinvastaajan transkriptio käytöstä"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Vastaaja on käytettävissä vain soittamalla numeroon *86. Jatka asettamalla vastaajalle uusi PIN-koodi."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Aseta PIN-koodi"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-fr-rCA/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 3ad1876..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Activation de la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Vous ne recevrez peut-être aucune notification de la messagerie vocale tant que la messagerie vocale visuelle ne sera pas complètement activée. Appelez la messagerie vocale pour récupérer de nouveaux messages jusqu\'à l\'activation complète de la messagerie vocale."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Impossible d\'activer la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Assurez-vous que votre téléphone dispose d\'une connexion réseau cellulaire et réessayez."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Désactivez le mode Avion et réessayez."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Aucune connexion"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Vous ne recevrez pas de notification à l\'arrivée de nouveaux messages vocaux. Si vous utilisez le Wi-Fi, vous pouvez vérifier si vous avez de nouveaux messages vocaux en effectuant une synchronisation."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Vous ne serez pas averti à la réception de nouveaux messages vocaux. Désactivez le mode Avion pour synchroniser votre messagerie vocale."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Votre téléphone requiert une connexion de données mobiles pour que vous puissiez consulter la messagerie vocale."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Impossible d\'activer la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Vous pouvez tout de même appeler pour consulter votre messagerie vocale."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Impossible de mettre à jour la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Réessayez lorsque votre connexion Wi-Fi ou de données mobiles sera meilleure. Vous pouvez tout de même appeler pour consulter votre messagerie vocale."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Réessayez lorsque votre connexion de données mobiles sera meilleure. Vous pouvez tout de même appeler pour consulter votre messagerie vocale."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Impossible de mettre à jour la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Vous pouvez tout de même appeler pour consulter votre messagerie vocale."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Impossible de mettre à jour la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Vous pouvez tout de même appeler pour consulter votre messagerie vocale."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Impossible de mettre à jour la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Vous pouvez tout de même appeler pour consulter votre messagerie vocale."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Impossible de mettre à jour la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Vous pouvez tout de même appeler pour consulter votre messagerie vocale."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Boîte de réception presque pleine"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Vous ne pourrez pas recevoir de nouveaux messages vocaux si votre boîte de réception est pleine."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Impossible de recevoir de nouveaux messages vocaux"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Votre boîte de réception est pleine. Essayez de supprimer des messages pour pouvoir recevoir de nouveaux messages vocaux."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activer l\'espace supplémentaire de stockage et de sauvegarde"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Votre boîte aux lettres est pleine. Pour libérer de l\'espace, activez l\'espace de stockage supplémentaire pour que Google puisse gérer et sauvegarder vos messages vocaux."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activer l\'espace supplémentaire de stockage et de sauvegarde"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Votre boîte aux lettres est presque pleine. Pour libérer de l\'espace, activez l\'espace de stockage supplémentaire pour que Google puisse gérer et sauvegarder vos messages vocaux."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Définir votre NIP de messagerie vocale"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Vous devez saisir un NIP de messagerie vocale chaque fois que vous appelez pour accéder à vos messages vocaux."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Paramètres du mode Avion"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Définir le NIP"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Réessayer"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Activer"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Non, merci"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synchroniser"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Appeler la messagerie vocale"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Appeler le service à la clientèle"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Une erreur s\'est produite"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Désolés, un problème est survenu. Veuillez réessayer plus tard. Si le problème persiste, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Une erreur s\'est produite"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Désolés, un problème est survenu. Veuillez réessayer plus tard. Si le problème persiste, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Une erreur s\'est produite"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Désolés, un problème est survenu. Veuillez réessayer plus tard. Si le problème persiste, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Impossible de se connecter à votre messagerie vocale"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Désolés, nous éprouvons des difficultés à nous connecter à votre messagerie vocale. Si vous vous trouvez dans une zone qui possède un signal faible, attendez d\'en obtenir un meilleur et réessayez. Si le problème persiste, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Impossible de se connecter à votre messagerie vocale"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Désolés, nous éprouvons des difficultés à nous connecter à votre messagerie vocale. Si vous vous trouvez dans une zone qui possède un signal faible, attendez d\'en obtenir un meilleur et réessayez. Si le problème persiste, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Impossible de se connecter à votre messagerie vocale"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Désolés, nous éprouvons des difficultés à nous connecter à votre messagerie vocale. Si vous vous trouvez dans une zone qui possède un signal faible, attendez d\'en obtenir un meilleur et réessayez. Si le problème persiste, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Une erreur s\'est produite"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Désolés, un problème est survenu. Veuillez réessayer plus tard. Si le problème persiste, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Une erreur s\'est produite"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Désolés, un problème est survenu. Veuillez réessayer plus tard. Si le problème persiste, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Une erreur s\'est produite"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Désolés, nous éprouvons des difficultés à configurer votre service. Veuillez réessayer plus tard. Si le problème persiste, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Impossible de se connecter à votre messagerie vocale"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Désolés, nous ne sommes pas en mesure de nous connecter à votre messagerie vocale pour le moment. Veuillez réessayer plus tard. Si le problème persiste, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Configurer la messagerie vocale"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"La messagerie vocale n\'est pas configurée sur votre compte. Veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Messagerie vocale"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Vous ne pouvez pas utiliser la messagerie vocale visuelle sur cet appareil. Veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Une erreur s\'est produite"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Messagerie vocale visuelle"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Pour terminer la configuration de la messagerie vocale visuelle, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Messagerie vocale visuelle"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Pour terminer la configuration de la messagerie vocale visuelle, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Messagerie vocale visuelle"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Pour activer la messagerie vocale visuelle, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Une erreur s\'est produite"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Pour terminer la configuration de la messagerie vocale visuelle, veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"La messagerie vocale visuelle est désactivée"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> pour activer la messagerie vocale visuelle."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Une erreur s\'est produite"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Une erreur s\'est produite"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Une erreur s\'est produite"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Veuillez communiquer avec le service à la clientèle au numéro <xliff:g id="NUMBER">%1$s</xliff:g> et lui indiquer que le code d\'erreur est le 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Activer la messagerie vocale visuelle"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nEn activant la messagerie vocale visuelle, vous acceptez les conditions d\'utilisation de Verizon Wireless :\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Activer la messagerie vocale visuelle"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Affichez et écoutez vos messages, sans devoir appeler la messagerie vocale. Des transcriptions de vos messages vocaux sont fournies par le service de transcription gratuit de Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Affichez et écoutez vos messages, sans devoir appeler la messagerie vocale. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"En savoir plus"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Si les conditions d\'utilisation sont refusées, la messagerie vocale visuelle sera désactivée."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Désactiver la messagerie vocale visuelle"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Si les conditions d\'utilisation sont refusées, la fonction de transcription des messages vocaux sera désactivée."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Désactiver la fonction de transcription des messages vocaux"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Pour accéder à la messagerie vocale, vous devrez composer *86. Définissez un nouveau NIP de messagerie vocale pour continuer."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Définir le NIP"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-fr/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-fr/strings.xml
deleted file mode 100644
index 7efd48f..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-fr/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Activation de la messagerie vocale visuelle..."</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Tant que la messagerie vocale visuelle n\'est pas totalement activée, vous risquez de ne pas être averti de la réception de nouveaux messages. Appelez votre boîte vocale pour consulter ces derniers."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Impossible d\'activer la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Vérifiez que votre téléphone est bien connecté au réseau mobile, puis réessayez."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Désactivez le mode Avion, puis réessayez."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Aucune connexion"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Vous ne recevrez aucune notification en cas de nouveau message vocal. Si vous êtes connecté en Wi-Fi, vous pouvez consulter votre messagerie vocale dès à présent en effectuant une synchronisation."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Vous ne recevrez aucune notification en cas de nouveau message. Désactivez le mode Avion pour synchroniser votre messagerie vocale."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Vous devez disposer d\'une connexion de données mobiles pour consulter votre messagerie vocale."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Impossible d\'activer la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"La consultation de votre messagerie vocale par téléphone est toujours possible."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Impossible de mettre à jour la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Réessayez lorsque vous bénéficierez d\'une meilleure connexion au réseau mobile ou Wi-Fi. Vous pouvez tout de même consulter votre messagerie vocale par téléphone."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Réessayez lorsque vous bénéficierez d\'une meilleure connexion de données mobiles. Vous pouvez tout de même consulter votre messagerie vocale par téléphone."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Impossible de mettre à jour la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"La consultation de votre messagerie vocale par téléphone est toujours possible."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Impossible de mettre à jour la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"La consultation de votre messagerie vocale par téléphone est toujours possible."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Impossible de mettre à jour la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"La consultation de votre messagerie vocale par téléphone est toujours possible."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Impossible de mettre à jour la messagerie vocale visuelle"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"La consultation de votre messagerie vocale par téléphone est toujours possible."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Boîte de réception presque pleine"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Vous ne pouvez pas recevoir de nouveaux messages vocaux si votre boîte de réception est pleine."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Impossible de recevoir de nouveaux messages vocaux"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Votre boîte de réception est pleine. Supprimez des messages vocaux pour pouvoir en recevoir de nouveaux."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activer l\'espace de stockage et de sauvegarde supplémentaire"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Votre boîte aux lettres est pleine. Pour libérer de l\'espace, activez l\'espace de stockage supplémentaire. Google pourra ainsi gérer vos messages vocaux et les sauvegarder."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activer l\'espace de stockage et de sauvegarde supplémentaire"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Votre boîte aux lettres est presque pleine. Pour libérer de l\'espace, activez l\'espace de stockage supplémentaire. Google pourra ainsi gérer vos messages vocaux et les sauvegarder."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Définir le code de votre messagerie vocale"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Vous devrez saisir ce code chaque fois que vous consulterez votre messagerie vocale."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Paramètres du mode Avion"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Définir un code"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Réessayer"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Activer"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Non, merci"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synchroniser"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Appeler la messagerie vocale"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Contacter le service client"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Problème"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Une erreur s\'est produite. Veuillez réessayer ultérieurement. Si le problème persiste, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Problème"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Une erreur s\'est produite. Veuillez réessayer ultérieurement. Si le problème persiste, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Problème"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Une erreur s\'est produite. Veuillez réessayer ultérieurement. Si le problème persiste, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Connexion à votre boîte vocale impossible"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Malheureusement, nous n\'arrivons pas à établir de connexion à votre boîte vocale. Si vous vous trouvez dans une zone où le signal est faible, attendez de capter un bon signal pour réessayer. Si le problème persiste, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g> (le code d\'erreur à transmettre au conseiller est le 9004)."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Connexion à votre boîte vocale impossible"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Malheureusement, nous n\'arrivons pas à établir de connexion à votre boîte vocale. Si vous vous trouvez dans une zone où le signal est faible, attendez de capter un bon signal pour réessayer. Si le problème persiste, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g> (le code d\'erreur à transmettre au conseiller est le 9005)."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Connexion à votre boîte vocale impossible"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Malheureusement, nous n\'arrivons pas à établir de connexion à votre boîte vocale. Si vous vous trouvez dans une zone où le signal est faible, attendez de capter un bon signal pour réessayer. Si le problème persiste, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g> (le code d\'erreur à transmettre au conseiller est le 9006)."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Problème"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Une erreur s\'est produite. Veuillez réessayer ultérieurement. Si le problème persiste, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Problème"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Une erreur s\'est produite. Veuillez réessayer ultérieurement. Si le problème persiste, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Problème"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Malheureusement, nous ne parvenons pas à configurer votre service. Veuillez réessayer ultérieurement. Si le problème persiste, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Connexion à votre boîte vocale impossible"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Désolé, nous ne parvenons pas à établir de connexion à votre boîte vocale pour l\'instant. Veuillez réessayer ultérieurement. Si le problème persiste, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g> (le code d\'erreur à transmettre au conseiller est le 9990)."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Configurer la messagerie vocale"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"La messagerie vocale n\'est pas configurée sur votre compte. Veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Messagerie vocale"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Vous ne pouvez pas utiliser la messagerie vocale visuelle sur cet appareil. Veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Problème"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Messagerie vocale visuelle"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Pour terminer la configuration de la messagerie vocale visuelle, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Messagerie vocale visuelle"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Pour terminer la configuration de la messagerie vocale visuelle, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Messagerie vocale visuelle"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Pour activer la messagerie vocale visuelle, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Problème"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Pour terminer la configuration de la messagerie vocale visuelle, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Messagerie vocale visuelle désactivée"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Pour activer la messagerie vocale visuelle, veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Problème"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Problème"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Problème"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Veuillez contacter le service client au <xliff:g id="NUMBER">%1$s</xliff:g>. Le code d\'erreur à transmettre au conseiller est le 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Activer la messagerie vocale visuelle"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nEn activant la messagerie vocale visuelle, vous acceptez les conditions d\'utilisation de Verizon Wireless :\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Activer la messagerie vocale visuelle"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Affichez et écoutez vos messages, sans avoir à appeler la messagerie vocale. La transcription des messages vocaux est un service fourni gratuitement par Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Affichez et écoutez vos messages, sans avoir à appeler la messagerie vocale. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"En savoir plus"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Si vous refusez les conditions d\'utilisation, la messagerie vocale visuelle sera désactivée."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Désactiver la messagerie vocale visuelle"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"La transcription des messages vocaux sera désactivée en cas de refus des conditions d\'utilisation."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Désactiver la transcription des messages vocaux"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Vous ne pouvez accéder à la messagerie vocale qu\'en composant le *86. Définissez un nouveau code PIN de messagerie vocale pour continuer."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Définir un code"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-gl/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-gl/strings.xml
deleted file mode 100644
index b670a91..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-gl/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Activando correo de voz visual"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"É posible que non recibas notificacións do correo de voz ata que actives o correo de voz visual. Chama ao correo de voz para consultar as mensaxes novas ata que o correo de voz estea completamente activado."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Non se pode activar o correo de voz visual"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Asegúrate de que o teu teléfono ten unha conexión de rede móbil e téntao de novo."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Desactiva o modo avión e téntao de novo."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Sen conexión"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Non recibirás notificacións dos correos de voz novos. Se estás utilizando o sinal wifi, podes comprobar o correo de voz se o sincronizas agora."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Non recibirás notificacións dos correos de voz novos. Desactiva o modo avión para sincronizar o correo de voz."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"O teléfono necesita conexión de datos móbiles para comprobar o correo de voz."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Non se pode activar o correo de voz visual"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Aínda podes chamar para comprobar o correo de voz."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Non se pode actualizar o correo de voz visual"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Téntao de novo cando o a túa conexión de datos móbiles ou wifi sexa mellor. Aínda podes chamar para comprobar o correo de voz."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Téntao de novo cando a túa conexión de datos móbiles sexa mellor. Aínda podes chamar para comprobar o correo de voz."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Non se pode actualizar o correo de voz visual"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Aínda podes chamar para comprobar o correo de voz."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Non se pode actualizar o correo de voz visual"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Aínda podes chamar para comprobar o correo de voz."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Non se pode actualizar o correo de voz visual"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Aínda podes chamar para comprobar o correo de voz."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Non se pode actualizar o correo de voz visual"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Aínda podes chamar para comprobar o correo de voz."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"A caixa de entrada está case chea"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Non poderás recibir correo de voz novo se a caixa de entrada está chea."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Non se poden recibir correos de voz novos"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"A caixa de entrada está chea. Proba a eliminar algunhas mensaxes para recibir correo de voz novo."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activa o almacenamento adicional e a copia de seguranza"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"A túa caixa de correo está chea. Para liberar espazo, activa o almacenamento adicional, de modo que Google poida xestionar as túas mensaxes do correo de voz e facer unha copia de seguranza."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activa o almacenamento adicional e a copia de seguranza"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"A túa caixa de correo está case chea. Para liberar espazo, activa o almacenamento adicional, de modo que Google poida xestionar as túas mensaxes do correo de voz e facer unha copia de seguranza."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Establece o PIN para o teu correo de voz"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Necesitarás o PIN cada vez que chames para acceder ao teu correo de voz."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Configuración do modo avión"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Establecer PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Tentar de novo"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Activar"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Non, grazas"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sincronizar"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Chamar ao correo de voz"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Chamar a atención ao cliente"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Produciuse un erro"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Houbo un problema. Téntao de novo máis tarde. Se o problema continúa, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Produciuse un erro"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Houbo un problema. Téntao de novo máis tarde. Se o problema continúa, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Produciuse un erro"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Houbo un problema. Téntao de novo máis tarde. Se o problema continúa, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Non se pode conectar coa caixa de entrada do correo de voz"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Houbo algúns problemas ao conectar coa caixa de entrada do teu correo de voz. Se te encontras nunha zona con pouca cobertura, agarda ata ter mellor sinal e téntao de novo. Se o problema continúa, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Non se pode conectar coa caixa de entrada do correo de voz"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Houbo algúns problemas ao conectar coa caixa de entrada do teu correo de voz. Se te encontras nunha zona con pouca cobertura, agarda ata ter mellor sinal e téntao de novo. Se o problema continúa, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Non se pode conectar coa caixa de entrada do correo de voz"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Houbo algúns problemas ao conectar coa caixa de entrada do teu correo de voz. Se te encontras nunha zona con pouca cobertura, agarda ata ter mellor sinal e téntao de novo. Se o problema continúa, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Produciuse un erro"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Houbo un problema. Téntao de novo máis tarde. Se o problema continúa, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Produciuse un erro"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Houbo un problema. Téntao de novo máis tarde. Se o problema continúa, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Produciuse un erro"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Produciuse un erro ao configurar o teu servizo. Téntao de novo máis tarde. Se o problema continúa, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Non se pode conectar coa caixa de entrada do correo de voz"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Non se puido conectar coa caixa de entrada do correo de voz. Téntao de novo máis tarde. Se o problema continúa, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Configurar correo de voz"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"O correo de voz non está configurado para a túa conta. Ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Correo de voz"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Non se pode usar o correo de voz visual neste dispositivo. Ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Produciuse un erro"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Correo de voz visual"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Para finalizar a configuración do correo de voz visual, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Correo de voz visual"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Para finalizar a configuración do correo de voz visual, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Correo de voz visual"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Para activar o correo de voz visual, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Produciuse un erro"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Para finalizar a configuración do correo de voz visual, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"O correo de voz visual está desactivado"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Para activar o correo de voz visual, ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>)."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Produciuse un erro"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Produciuse un erro"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Produciuse un erro"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Ponte en contacto co servizo de atención ao cliente (<xliff:g id="NUMBER">%1$s</xliff:g>) e indica o código de erro 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Activar correo de voz visual"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nAo activar o correo de voz visual, aceptas os termos e condicións de Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Activar correo de voz visual"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Consulta e escoita as túas mensaxes sen ter que chamar ao correo de voz. O servizo de transcrición gratuíto de Google proporciona transcricións dos teus correos de voz. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Consulta e escoita as túas mensaxes sen ter que chamar ao correo de voz. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Máis información"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Se non se aceptan os termos e condicións, desactivarase o correo de voz visual."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Desactivar correo de voz visual"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Se se rexeitan os termos e condicións, desactivarase a transcrición do correo de voz."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Desactivar transcrición do correo de voz"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Só poderás acceder ao correo de voz chamando ao *86. Configura un novo PIN do correo de voz para continuar."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Establecer PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-gu/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-gu/strings.xml
deleted file mode 100644
index 2ee050e..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-gu/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"વિઝ્યુઅલ વૉઇસમેઇલ સક્રિય કરી રહ્યાં છે"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"જ્યાં સુધી વિઝ્યુઅલ વૉઇસમેઇલ સંપૂર્ણપણે સક્રિય ન થાય ત્યાં સુધી તમે વૉઇસમેઇલની સૂચનાઓ પ્રાપ્ત કરી શકશો નહીં. વૉઇસમેઇલ સંપૂર્ણપણે સક્રિય ન થાય ત્યાં સુધી નવા સંદેશા પુનઃપ્રાપ્ત કરવા માટે વૉઇસમેઇલને કૉલ કરો."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"વિઝ્યુઅલ વૉઇસમેઇલ સક્રિય કરી શકતાં નથી"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"તમારા ફોન પર મોબાઇલ નેટવર્ક કનેક્શન હોવાની ખાતરી કરો અને ફરી પ્રયાસ કરો."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"એરપ્લેન મોડ બંધ કરો અને ફરી પ્રયાસ કરો."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"કોઈ કનેક્શન નથી"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"નવા વૉઇસમેઇલ માટે તમને સૂચિત કરવામાં આવશે નહીં. જો તમે Wi-Fi પર છો, તો તમે હમણાં સમન્વયિત કરીને વૉઇસમેઇલ માટે તપાસ કરી શકો છો."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"નવી વૉઇસમેઇલ્સ માટે તમને સૂચિત કરવામાં આવશે નહીં. તમારી વૉઇસમેઇલ સમન્વયિત કરવા માટે એરપ્લેન મોડ બંધ કરો."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"વૉઇસમેઇલને તપાસવા માટે તમારા ફોનને મોબાઇલ ડેટા કનેક્શનની જરૂર છે."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"વિઝ્યુઅલ વૉઇસમેઇલ સક્રિય કરી શકતાં નથી"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"તમે વૉઇસમેઇલ તપાસવા માટે હજી પણ કૉલ કરી શકો છો."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"વિઝ્યુઅલ વૉઇસમેઇલ અપડેટ કરી શકતાં નથી"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"તમારું Wi-Fi અથવા મોબાઇલ ડેટા કનેક્શન બહેતર હોવા પર ફરી પ્રયાસ કરો. તમે વૉઇસમેઇલ તપાસવા માટે હજી પણ કૉલ કરી શકો છો."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"તમારું મોબાઇલ ડેટા કનેક્શન બહેતર હોવા પર ફરી પ્રયાસ કરો. તમે વૉઇસમેઇલ તપાસવા માટે હજી પણ કૉલ કરી શકો છો."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"વિઝ્યુઅલ વૉઇસમેઇલ અપડેટ કરી શકતાં નથી"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"તમે વૉઇસમેઇલ તપાસવા માટે હજી પણ કૉલ કરી શકો છો."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"વિઝ્યુઅલ વૉઇસમેઇલ અપડેટ કરી શકતાં નથી"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"તમે વૉઇસમેઇલ તપાસવા માટે હજી પણ કૉલ કરી શકો છો."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"વિઝ્યુઅલ વૉઇસમેઇલ અપડેટ કરી શકતાં નથી"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"તમે વૉઇસમેઇલ તપાસવા માટે હજી પણ કૉલ કરી શકો છો."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"વિઝ્યુઅલ વૉઇસમેઇલ અપડેટ કરી શકતાં નથી"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"તમે વૉઇસમેઇલ તપાસવા માટે હજી પણ કૉલ કરી શકો છો."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"ઇનબોક્સ મોટાભાગે ભરાઇ ગયું છે"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"જો તમારું ઇનબોક્સ ભરાઈ ગયું હોય તો તમે નવી વૉઇસમેઇલ પ્રાપ્ત કરી શકશો નહીં."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"નવી વૉઇસમેઇલ્સ પ્રાપ્ત કરી શકતાંં નથી"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"તમારું ઇનબોક્સ ભરાઈ ગયું છે. નવી વૉઇસમેઇલ પ્રાપ્ત કરવા માટે કેટલા સંદેશા કાઢી નાખવાનો પ્રયાસ કરો."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"અતિરિક્ત સ્ટોરેજ ચાલુ કરો અને બેકઅપ લો"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"તમારું મેઇલબોક્સ ભરાઇ ગયું છે. સ્થાન ખાલી કરવા માટે, અતિરિક્ત સ્ટોરેજ ખાલી કરો જેથી Google તમારા વૉઇસમેઇલ સંદેશા સંચાલિત કરી અને તેનું બેકઅપ લઈ શકે."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"અતિરિક્ત સ્ટોરેજ ચાલુ કરો અને બેકઅપ લો"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"તમારું મેઇલબોક્સ મોટાંભાગે ભરાઇ ગયું છે. સ્થાન ખાલી કરવા માટે, અતિરિક્ત સ્ટોરેજ ખાલી કરો જેથી Google તમારા વૉઇસમેઇલ સંદેશા સંચાલિત કરી અને તેનું બેકઅપ લઈ શકે."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"તમારો વૉઇસમેઇલ PIN સેટ કરો"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"તમારી વૉઇસમેઇલને ઍક્સેસ કરવા માટે તમે કોઈપણ સમયે કૉલ કરો છો, ત્યારે તમને વૉઇસમેઇલ PIN ની જરૂર પડશે."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"એરપ્લેન મોડ સેટિંગ્સ"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN સેટ કરો"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"ફરી પ્રયાસ કરો"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"ચાલુ કરો"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"નહીં આભાર"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"સમન્વયન"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"વૉઇસમેઇલ પર કૉલ કરો"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"ગ્રાહક સમર્થનને કૉલ કરો"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"કંઈક ખોટું થયું"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"માફ કરશો, અમને સમસ્યા આવી હતી. કૃપા કરીને પછીથી ફરી પ્રયાસ કરો. જો અહીં હજુ પણ કોઇ સમસ્યા હોય, તો કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9001 કહો."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"કંઈક ખોટું થયું"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"માફ કરશો, અમને સમસ્યા આવી હતી. કૃપા કરીને પછીથી ફરી પ્રયાસ કરો. જો અહીં હજુ પણ કોઇ સમસ્યા હોય, તો કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9002 કહો."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"કંઈક ખોટું થયું"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"માફ કરશો, અમને સમસ્યા આવી હતી. કૃપા કરીને પછીથી ફરી પ્રયાસ કરો. જો અહીં હજુ પણ કોઇ સમસ્યા હોય, તો કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9003 કહો."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"તમારા વૉઇસ મેઇલબોક્સ પર કનેક્ટ કરી શકતાં નથી"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"માફ કરશો, અમને તમારા વૉઇસ મેઇલબોક્સ સાથે કનેક્ટ થવામાં સમસ્યા છે. જો તમે નબળી સિગ્નલ સશક્તતાવાળા વિસ્તારમાં હોવ, તો સશક્ત સિગ્નલ ન આવે ત્યાં સુધી રાહ જુઓ અને ફરીથી પ્રયાસ કરો. જો અહીં હજુ પણ કોઇ સમસ્યા હોય, તો કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9004 કહો."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"તમારા વૉઇસ મેઇલબોક્સ પર કનેક્ટ કરી શકતાં નથી"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"માફ કરશો, અમને તમારા વૉઇસ મેઇલબોક્સ સાથે કનેક્ટ થવામાં સમસ્યા છે. જો તમે નબળી સિગ્નલ સશક્તતાવાળા વિસ્તારમાં હોવ, તો સશક્ત સિગ્નલ ન આવે ત્યાં સુધી રાહ જુઓ અને ફરીથી પ્રયાસ કરો. જો અહીં હજુ પણ કોઇ સમસ્યા હોય, તો કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9005 કહો."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"તમારા વૉઇસ મેઇલબોક્સ પર કનેક્ટ કરી શકતાં નથી"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"માફ કરશો, અમને તમારા વૉઇસ મેઇલબોક્સ સાથે કનેક્ટ થવામાં સમસ્યા છે. જો તમે નબળી સિગ્નલ સશક્તતાવાળા વિસ્તારમાં હોવ, તો સશક્ત સિગ્નલ ન આવે ત્યાં સુધી રાહ જુઓ અને ફરીથી પ્રયાસ કરો. જો અહીં હજુ પણ કોઇ સમસ્યા હોય, તો કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9006 કહો."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"કંઈક ખોટું થયું"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"માફ કરશો, અમને સમસ્યા આવી હતી. કૃપા કરીને પછીથી ફરી પ્રયાસ કરો. જો અહીં હજુ પણ કોઇ સમસ્યા હોય, તો કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9007 કહો."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"કંઈક ખોટું થયું"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"માફ કરશો, અમને સમસ્યા આવી હતી. કૃપા કરીને પછીથી ફરી પ્રયાસ કરો. જો અહીં હજુ પણ કોઇ સમસ્યા હોય, તો કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9008 કહો."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"કંઈક ખોટું થયું"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"માફ કરશો, અમને તમારી સેવા સેટ કરવામાં સમસ્યા આવી રહી છે. કૃપા કરીને પછીથી ફરી પ્રયાસ કરો. જો અહીં હજુ પણ કોઇ સમસ્યા હોય, તો કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9009 કહો."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"તમારા વૉઇસ મેઇલબોક્સ પર કનેક્ટ કરી શકતાં નથી"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"માફ કરશો, અમે આ સમયે તમારા વૉઇસ મેઇલબોક્સ સાથે કનેક્ટ થવામાં સમર્થ નથી. કૃપા કરીને પછીથી ફરી પ્રયાસ કરો. જો અહીં હજુ પણ કોઇ સમસ્યા હોય, તો કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9990 કહો."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"વૉઇસમેઇલ સેટ કરો"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"તમારા એકાઉન્ટ પર વૉઇસમેઇલ સેટ થયેલ નથી. કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9991 કહો."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"વૉઇસમેઇલ"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"આ ઉપકરણ પર વિઝ્યુઅલ વૉઇસમેઇલનો ઉપયોગ કરી શકતાં નથી. કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરો અને તેમને કહો કે ભૂલનો કોડ 9992 છે."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"કંઈક ખોટું થયું"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરો અને તેમને ભૂલ કોડ 9993 કહો."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"વિઝ્યુઅલ વૉઇસમેઇલ"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"વિઝ્યુઅલ વૉઇસમેઇલ સેટઅપ પૂર્ણ કરવા માટે, કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરો અને તેમને કહો કે ભૂલનો કોડ 9994 છે."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"વિઝ્યુઅલ વૉઇસમેઇલ"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"વિઝ્યુઅલ વૉઇસમેઇલ સેટઅપ પૂર્ણ કરવા માટે, કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરો અને તેમને કહો કે ભૂલનો કોડ 9995 છે."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"વિઝ્યુઅલ વૉઇસમેઇલ"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"વિઝ્યુઅલ વૉઇસમેઇલ સક્રિય કરવા માટે, કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરો અને તેમને કહો કે ભૂલનો કોડ 9996 છે."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"કંઈક ખોટું થયું"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"વિઝ્યુઅલ વૉઇસમેઇલ સેટઅપ પૂર્ણ કરવા માટે, કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરો અને તેમને કહો કે ભૂલનો કોડ 9998 છે."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"વિઝ્યુઅલ વૉઇસમેઇલ બંધ છે"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"વિઝ્યુઅલ વૉઇસમેઇલ સક્રિય કરવા માટે કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરો."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"કંઈક ખોટું થયું"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9997 કહો."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"કંઈક ખોટું થયું"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9989 કહો."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"કંઈક ખોટું થયું"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"કૃપા કરીને <xliff:g id="NUMBER">%1$s</xliff:g> પર ગ્રાહક સેવાનો સંપર્ક કરી અને તેમને ભૂલ કોડ 9999 કહો."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"વિઝ્યુઅલ વૉઇસ મેઇલ ચાલુ કરો"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nવિઝ્યુઅલ વૉઇસ મેઇલ ચાલુ કરીને તમે Verizon Wirelessના નિયમો અને શરતો સાથે સંમત થાઓ છો:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"વિઝ્યુઅલ વૉઇસમેઇલ ચાલુ કરો"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"વૉઇસમેઇલને કૉલ કરવાની જરૂરિયાત વિના તમારા સંદેશા જુઓ અને સાંભળો. Googleની નિઃશુલ્ક ટ્રાન્સ્ક્રિપ્શન સેવા તમારા વૉઇસમેઇલની ટ્રાન્સ્ક્રિપ્ટ પ્રદાન કરે છે. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"વૉઇસમેઇલ પર કૉલ કરવાની જરૂરિયાત વિના, તમારા સંદેશા જુઓ અને સાંભળો. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"વધુ જાણો"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"જો શરતો અને નિયમો નકારવામાં આવે છે તો વિઝ્યુઅલ વૉઇસમેઇલ અક્ષમ કરવામાં આવશે."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"વિઝ્યુઅલ વૉઇસમેઇલ અક્ષમ કરો"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"જો શરતો અને નિયમો નકારવામાં આવે તો વૉઇસમેઇલ ટ્રાંસ્ક્રિપ્શન અક્ષમ કરવામાં આવશે."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"વૉઇસમેઇલ ટ્રાંસ્ક્રિપ્શન અક્ષમ કરો"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"વૉઇસમેઇલ માત્ર *86 પર કૉલ કરીને જ ઍક્સેસ કરી શકાશે. આગળ વધવા માટે નવો વૉઇસમેઇલ PIN સેટ કરો."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN સેટ કરો"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml
deleted file mode 100644
index a68dc0a..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-hi/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"विज़ुअल वॉइसमेल सक्रिय किया जा रहा है"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"विज़ुअल वॉइसमेल के पूरी तरह सक्रिय होने तक हो सकता है कि आपको वॉइसमेल नोटिफ़िकेशन प्राप्त ना हों. वॉइसमेल के पूरी तरह सक्रिय होने तक नए संदेश प्राप्त करने के लिए वॉइसमेल को कॉल करें."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"विज़ुअल वॉइसमेल सक्रिय नहीं किया जा सकता"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"सुनिश्चित करें कि आपके फ़ोन में मोबाइल नेटवर्क कनेक्शन है और दोबारा कोशिश करें."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"हवाई जहाज़ मोड बंद करें और फिर से प्रयास करें."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"कोई कनेक्शन नहीं"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"आपको नए वॉइसमेल की सूचना नहीं दी जाएगी. अगर आप Wi‑Fi का उपयोग कर रहे हैं, तो आप अभी सिंक करके वॉइसमेल देख सकते हैं."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"आपको नए वॉइसमेल के लिए सूचित नहीं किया जाएगा. अपना वॉइसमेल समन्वयित करने के लिए हवाई जहाज़ मोड बंद करें."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"वॉइसमेल देखने के लिए आपके फ़ोन में मोबाइल डेटा कनेक्शन होना चाहिए."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"विज़ुअल वॉइसमेल सक्रिय नहीं किया जा सकता"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"आप वॉइसमेल देखने के लिए अभी भी कॉल कर सकते हैं."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"विज़ुअल वॉइसमेल अपडेट नहीं किया जा सकता"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"आपका Wi‑Fi या मोबाइल डेटा कनेक्शन बेहतर होने पर दोबारा कोशिश करें. आप अभी भी वॉइसमेल देखने के लिए कॉल कर सकते हैं."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"आपका मोबाइल डेटा कनेक्शन बेहतर होने पर दोबारा कोशिश करें. आप अभी भी वॉइसमेल देखने के लिए कॉल कर सकते हैं."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"विज़ुअल वॉइसमेल अपडेट नहीं किया जा सकता"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"आप वॉइसमेल देखने के लिए अभी भी कॉल कर सकते हैं."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"विज़ुअल वॉइसमेल अपडेट नहीं किया जा सकता"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"आप वॉइसमेल देखने के लिए अभी भी कॉल कर सकते हैं."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"विज़ुअल वॉइसमेल अपडेट नहीं किया जा सकता"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"आप वॉइसमेल देखने के लिए अभी भी कॉल कर सकते हैं."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"विज़ुअल वॉइसमेल अपडेट नहीं किया जा सकता"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"आप वॉइसमेल देखने के लिए अभी भी कॉल कर सकते हैं."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"इनबॉक्स लगभग पूरा भर गया है"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"यदि आपका इनबॉक्स भरा हुआ है, तो आप नया वॉइसमेल नहीं प्राप्त कर सकेंगे."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"नए वॉइसमेल प्राप्त नहीं किए जा सकते"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"आपका इनबॉक्स पूरा भर गया है. नया वॉइसमेल प्राप्त करने के लिए कुछ संदेश हटाने का प्रयास करें."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"अतिरिक्त जगह और बैकअप चालू करें"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"आपका मेलबॉक्स भर गया है. जगह खाली करने के लिए, अतिरिक्त जगह चालू करें ताकि Google आपके वॉइसमेल संदेशों को प्रबंधित कर सके और उनका बैकअप ले सके."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"अतिरिक्त जगह और बैकअप चालू करें"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"आपका मेलबॉक्स लगभग भर गया है. जगह खाली करने के लिए, अतिरिक्त जगह चालू करें ताकि Google आपके वॉइसमेल संदेशों को प्रबंधित कर सके और उनका बैकअप ले सके."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"अपना वॉइसमेल पिन सेट करें"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"आप जब भी अपना वॉइसमेल एक्सेस करने के लिए कॉल करते हैं, आपको वॉइसमेल पिन की आवश्यकता होगी."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"हवाई जहाज़ मोड सेटिंग"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"पिन सेट करें"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"पुन: प्रयास करें"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"चालू करें"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"रहने दें"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"समन्वयित करें"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"वॉइसमेल को कॉल करें"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"ग्राहक सहायता को कॉल करें"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"कुछ गलत हुआ"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"क्षमा करें, हमारे साथ समस्या हो गई है. कृपया बाद में फिर से प्रयास करें. यदि तब भी कोई समस्या रहती है, तो कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9001 है."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"कुछ गलत हुआ"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"क्षमा करें, हमारे साथ समस्या हो गई है. कृपया बाद में फिर से प्रयास करें. यदि तब भी कोई समस्या रहती है, तो कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9002 है."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"कुछ गलत हुआ"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"क्षमा करें, हमारे साथ समस्या हो गई है. कृपया बाद में फिर से प्रयास करें. यदि तब भी कोई समस्या रहती है, तो कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9003 है."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"आपके वॉइस मेलबॉक्स से कनेक्ट नहीं किया जा सकता"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"क्षमा करें, हमें आपके वॉइस मेलबॉक्स से कनेक्ट करने में समस्या हो रही है. यदि आप किसी ऐसे क्षेत्र में हैं जहां सिग्नल कमज़ोर है, तो अपने पास सशक्त सिग्नल आने तक प्रतीक्षा करें और पुनः प्रयास करें. यदि तब भी समस्या रहती है, तो कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9004 है."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"आपके वॉइस मेलबॉक्स से कनेक्ट नहीं किया जा सकता"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"क्षमा करें, हमें आपके वॉइस मेलबॉक्स से कनेक्ट करने में समस्या हो रही है. यदि आप किसी ऐसे क्षेत्र में हैं जहां सिग्नल कमज़ोर है, तो अपने पास सशक्त सिग्नल आने तक प्रतीक्षा करें और पुनः प्रयास करें. यदि तब भी समस्या रहती है, तो कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9005 है."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"आपके वॉइस मेलबॉक्स से कनेक्ट नहीं किया जा सकता"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"क्षमा करें, हमें आपके वॉइस मेलबॉक्स से कनेक्ट करने में समस्या हो रही है. यदि आप किसी ऐसे क्षेत्र में हैं जहां सिग्नल कमज़ोर है, तो अपने पास सशक्त सिग्नल आने तक प्रतीक्षा करें और पुनः प्रयास करें. यदि तब भी समस्या रहती है, तो कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9006 है."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"कुछ गलत हुआ"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"क्षमा करें, हमारे साथ समस्या हो गई है. कृपया बाद में फिर से प्रयास करें. यदि तब भी कोई समस्या रहती है, तो कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9007 है."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"कुछ गलत हुआ"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"क्षमा करें, हमारे साथ समस्या हो गई है. कृपया बाद में फिर से प्रयास करें. यदि तब भी कोई समस्या रहती है, तो कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9008 है."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"कुछ गलत हुआ"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"क्षमा करें, हमें आपकी सेवा सेट करने में समस्या हो रही है. कृपया बाद में फिर से प्रयास करें. यदि तब भी कोई समस्या रहती है, तो कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9009 है."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"आपके वॉइस मेलबॉक्स से कनेक्ट नहीं किया जा सकता"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"क्षमा करें, हम इस समय आपके वॉइस मेलबॉक्स से कनेक्ट नहीं कर पा रहे हैं. कृपया बाद में फिर से प्रयास करें. यदि तब भी कोई समस्या होती है, तो कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9990 है."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"वॉइसमेल सेट अप करें"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"आपके खाते में वॉइसमेल सेट नहीं है. कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9991 है."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"वॉइसमेल"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"इस डिवाइस पर विज़ुअल वॉइसमेल का उपयोग नहीं किया जा सकता. कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करके उन्हें बताएं कि गड़बड़ी कोड 9992 है."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"कुछ गलत हुआ"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9993 है."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"विज़ुअल वॉइसमेल"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"विज़ुअल वॉइसमेल का सेटअप पूरा करने के लिए, कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करके उन्हें बताएं कि गड़बड़ी कोड 9994 है."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"विज़ुअल वॉइसमेल"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"विज़ुअल वॉइसमेल का सेटअप पूरा करने के लिए, कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करके उन्हें बताएं कि गड़बड़ी कोड 9995 है."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"विज़ुअल वॉइसमेल"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"विज़ुअल वॉइसमेल सक्रिय करने के लिए, कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करके उन्हें बताएं कि गड़बड़ी कोड 9996 है."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"कुछ गलत हुआ"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"विज़ुअल वॉइसमेल का सेटअप पूरा करने के लिए, कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करके उन्हें बताएं कि गड़बड़ी कोड 9998 है."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"विज़ुअल वॉइसमेल बंद है"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और विज़ुअल वॉइसमेल सक्रिय करें."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"कुछ गलत हुआ"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9997 है."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"कुछ गलत हुआ"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9989 है."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"कुछ गलत हुआ"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"कृपया <xliff:g id="NUMBER">%1$s</xliff:g> पर ग्राहक सेवा से संपर्क करें और उन्हें बताएं कि गड़बड़ी कोड 9999 है."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"विज़ुअल वॉइस मेल चालू करें"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nविज़ुअल वॉइस मेल चालू करके, आप Verizon Wireless के नियम और शर्तों पर अपनी सहमति जताते/जताती हैं:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"विज़ुअल वॉइसमेल चालू करें"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"वॉइसमेल पर कॉल किए बिना अपने संदेश देखें और सुनें. Google की मुफ़्त ट्रांसक्रिप्शन सेवा आपके वॉइसमेल को लिखकर देती है. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"वॉइसमेल पर कॉल किए बिना अपने संदेश देखें और सुनें. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"अधिक जानें"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"नियम और शर्तों को अस्वीकार किए जाने पर विज़ुअल वॉइसमेल अक्षम कर दिया जाएगा."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"विज़ुअल वॉइसमेल अक्षम करें"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"अगर नियम और शर्तों को अस्वीकार कर दिया जाता है, तो वॉइसमेंल ट्रांसक्रिप्शन अक्षम हो जाएगा."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"वॉइसमेल ट्रांसक्रिप्शन अक्षम करें"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"वॉइसमेल को केवल *86 पर कॉल करके एक्सेस किया जा सकेगा. आगे बढ़ने के लिए नया वॉइसमेल पिन सेट करें."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"पिन सेट करें"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-hr/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-hr/strings.xml
deleted file mode 100644
index 30eddb6..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-hr/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktiviranje vizualne govorne pošte"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Možda nećete primiti obavijesti o govornoj pošti dok se vizualna govorna pošta u potpunosti ne aktivira. Nazovite službu za govornu poštu da biste dohvatili nove poruke dok se govorna pošta u potpunosti ne aktivira."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Vizualna govorna pošta ne može se aktivirati"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Provjerite mobilnu vezu telefona i pokušajte ponovno."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Isključite način rada u zrakoplovu i pokušajte ponovno."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Nema veze"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Nećete primati obavijesti o novim govornim porukama. Ako upotrebljavate Wi-Fi mrežu, govornu poštu možete provjeriti tako da se odmah sinkronizirate."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Nećete primati obavijesti o novim govornim porukama. Isključite način rada u zrakoplovu da biste sinkronizirali govornu poštu."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Telefon mora imati mobilnu podatkovnu vezu da biste provjerili govornu poštu."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Vizualna govorna pošta ne može se aktivirati"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"I dalje možete nazvati govornu poštu i provjeriti je."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Vizualna govorna pošta ne može se ažurirati"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Pokušajte ponovno kad uspostavite bolju Wi-Fi ili mobilnu vezu. I dalje možete nazvati govornu poštu i provjeriti je."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Pokušajte ponovno kad uspostavite bolju mobilnu podatkovnu vezu. I dalje možete nazvati govornu poštu i provjeriti je."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Vizualna govorna pošta ne može se ažurirati"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"I dalje možete nazvati govornu poštu i provjeriti je."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Vizualna govorna pošta ne može se ažurirati"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"I dalje možete nazvati govornu poštu i provjeriti je."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Vizualna govorna pošta ne može se ažurirati"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"I dalje možete nazvati govornu poštu i provjeriti je."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Vizualna govorna pošta ne može se ažurirati"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"I dalje možete nazvati govornu poštu i provjeriti je."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Primljena pošta gotovo je puna"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Ako je vaša pristigla pošta puna, nećete moći primiti novu govornu poruku."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Primanje nove govorne pošte nije moguće"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Pristigla pošta je puna. Izbrišite neke poruke da biste primili novu govornu poštu."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Uključivanje dodatne pohrane i sigurnosnog kopiranja"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Vaš je poštanski pretinac pun. Da biste oslobodili prostor, uključite dodatnu pohranu tako da Google može upravljati porukama u govornoj pošti i sigurnosno ih kopirati."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Uključivanje dodatne pohrane i sigurnosnog kopiranja"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Vaš je poštanski pretinac gotovo pun. Da biste oslobodili prostor, uključite dodatnu pohranu tako da Google može upravljati porukama u govornoj pošti i sigurnosno ih kopirati."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Postavljanje PIN-a za govornu poštu"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN za govornu poštu trebat će vam svaki put kad zatražite pristup govornoj pošti."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Postavke načina rada u zrakoplovu"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Postavi PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Pokušajte ponovo"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Uključi"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Ne, hvala"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinkroniziraj"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Nazovi službu govorne pošte"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Nazovi korisničku podršku"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Nešto je pošlo po zlu"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Naišli smo na problem. Pokušajte ponovno kasnije. Ako se problem ne riješi, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Nešto je pošlo po zlu"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Naišli smo na problem. Pokušajte ponovno kasnije. Ako se problem ne riješi, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Nešto je pošlo po zlu"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Naišli smo na problem. Pokušajte ponovno kasnije. Ako se problem ne riješi, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Povezivanje s pretincem govorne pošte nije uspjelo"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Nažalost, naišli smo na problem pri povezivanju s pretincem govorne pošte. Ako se nalazite na području s lošim signalom, pričekajte dok se signal ne poboljša i pokušajte ponovno. Ako se problem ne riješi, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Povezivanje s pretincem govorne pošte nije uspjelo"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Nažalost, naišli smo na problem pri povezivanju s pretincem govorne pošte. Ako se nalazite na području s lošim signalom, pričekajte dok se signal ne poboljša i pokušajte ponovno. Ako se problem ne riješi, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Povezivanje s pretincem govorne pošte nije uspjelo"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Nažalost, naišli smo na problem pri povezivanju s pretincem govorne pošte. Ako se nalazite na području s lošim signalom, pričekajte dok se signal ne poboljša i pokušajte ponovno. Ako se problem ne riješi, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Nešto je pošlo po zlu"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Naišli smo na problem. Pokušajte ponovno kasnije. Ako se problem ne riješi, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Nešto je pošlo po zlu"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Naišli smo na problem. Pokušajte ponovno kasnije. Ako se problem ne riješi, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Nešto je pošlo po zlu"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Naišli smo na problem pri postavljanju vaše usluge. Pokušajte ponovno kasnije. Ako se problem ne riješi, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Povezivanje s pretincem govorne pošte nije uspjelo"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Nažalost, povezivanje s pretincem govorne pošte trenutačno nije moguće. Pokušajte ponovno kasnije. Ako se problem ne riješi, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Postavljanje govorne pošte"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Govorna pošta nije postavljene na vašem računu. Obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Govorna pošta"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Vizualna govorna pošta ne može se koristiti na ovom uređaju. Obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Nešto je pošlo po zlu"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Vizualna govorna pošta"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Da biste dovršili postavljanje vizualne govorne pošte, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Vizualna govorna pošta"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Da biste dovršili postavljanje vizualne govorne pošte, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Vizualna govorna pošta"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Da biste aktivirali vizualnu govornu poštu, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Nešto je pošlo po zlu"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Da biste dovršili postavljanje vizualne govorne pošte, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Vizualna govorna pošta onemogućena"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Da biste aktivirali vizualnu govornu poštu, obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Nešto je pošlo po zlu"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Nešto je pošlo po zlu"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Nešto je pošlo po zlu"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Obratite se korisničkoj službi na broj <xliff:g id="NUMBER">%1$s</xliff:g> i recite da je kôd pogreške 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Uključivanje vizualne govorne pošte"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nAko uključite vizualnu govornu poštu, pristajete na uvjete i odredbe Verizon Wirelessa:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Uključivanje vizualne govorne pošte"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Pogledajte i poslušajte svoje poruke bez pozivanja govorne pošte. Googleova besplatna usluga prijepisa omogućuje vam prijepise vaših poruka govorne pošte. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Pogledajte i poslušajte govornu poštu bez pozivanja govorne pošte. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Saznajte više"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Ako odbijete uvjete i odredbe, onemogućit ćete vizualnu govornu poštu."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Onemogući vizualnu govornu poštu"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Ako odbijete uvjete i odredbe, onemogućit ćete prijepis govorne pošte."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Onemogućavanje prijepisa govorne pošte"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Govornoj pošti moći će se pristupiti samo pozivanjem broja *86. Postavite novi PIN za govornu poštu da biste nastavili."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Postavljanje PIN-a"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-hu/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-hu/strings.xml
deleted file mode 100644
index 050c624..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-hu/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Vizuális hangpostaüzenetek aktiválása"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"A vizuális hangposta teljes aktiválásáig nem feltétlenül kap értesítést a hangpostaüzenetekről. A szolgáltatás teljes aktiválásáig a hangpostát felhívva kérheti le új üzeneteit."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Nem sikerült aktiválni a vizuális hangpostaüzeneteket"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Győződjön meg róla, hogy van mobil-adatkapcsolat, és próbálja újra."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Kapcsolja ki a repülős üzemmódot, és próbálja újra."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Nincs kapcsolat"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Nem kap értesítést az új hangpostaüzenetekről. Ha Wi-Fi-t használ, szinkronizálással lekérheti a hangpostaüzeneteket."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Nem kap értesítést az új hangpostaüzenetekről. Kapcsolja ki a repülős üzemmódot, és szinkronizálja a hangpostaüzeneteket."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"A hangpostaüzenetek lekéréshez adatkapcsolattal kell rendelkeznie."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Nem sikerült aktiválni a vizuális hangpostaüzeneteket"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Hívással továbbra is lekérheti a hangpostaüzeneteket."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Nem sikerült frissíteni a vizuális hangpostaüzeneteket"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Próbálja újra, amikor a Wi-Fi- vagy adatkapcsolat erősebb lesz. Hívással továbbra is lekérheti a hangpostaüzeneteket."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Próbálja újra, amikor a mobil-adatkapcsolat erősebb lesz. Hívással továbbra is lekérheti a hangpostaüzeneteket."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Nem sikerült frissíteni a vizuális hangpostaüzeneteket"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Hívással továbbra is lekérheti a hangpostaüzeneteket."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Nem sikerült frissíteni a vizuális hangpostaüzeneteket"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Hívással továbbra is lekérheti a hangpostaüzeneteket."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Nem sikerült frissíteni a vizuális hangpostaüzeneteket"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Hívással továbbra is lekérheti a hangpostaüzeneteket."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Nem sikerült frissíteni a vizuális hangpostaüzeneteket"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Hívással továbbra is lekérheti a hangpostaüzeneteket."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Hangpostafiókja majdnem megtelt"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Ha a postaláda megtelt, nem fogadhat új hangpostaüzeneteket."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nem tud új hangpostaüzeneteket fogadni"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"A postaláda megtelt. Ha meg szeretné kapni az új hangpostaüzeneteket, töröljön néhány üzenetet."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Az extra tárhely és biztonsági mentés bekapcsolása"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"A postaláda betelt. Ha szeretne helyet felszabadítani, kapcsolja be az extra tárhely funkciót, hogy a Google kezelhesse a hangpostaüzeneteket, és biztonsági mentést készíthessen róluk."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Az extra tárhely és biztonsági mentés bekapcsolása"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"A postaláda majdnem betelt. Ha szeretne helyet felszabadítani, kapcsolja be az extra tárhely funkciót, hogy a Google kezelhesse a hangpostaüzeneteket, és biztonsági mentést készíthessen róluk."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"A hangposta PIN-kódjának beállítása"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"A hangpostafiók eléréséhez PIN-kódra van szüksége."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"A repülős üzemmód beállításai"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN-kód beállítása"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Próbálja újra"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Bekapcsolás"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Köszönöm, nem"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Szinkronizálás"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Hangposta hívása"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Ügyfélszolgálat hívása"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Hiba történt"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Hibába ütköztünk. Kérjük, próbálkozzon újra később. Ha továbbra is problémát tapasztal, forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9001-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Hiba történt"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Hibába ütköztünk. Kérjük, próbálkozzon újra később. Ha továbbra is problémát tapasztal, forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9002-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Hiba történt"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Hibába ütköztünk. Kérjük, próbálkozzon újra később. Ha továbbra is problémát tapasztal, forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9003-as hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Nem sikerült csatlakozni a hangpostafiókjához"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Nem sikerült csatlakoznunk a hangpostafiókjához. Ha olyan helyen tartózkodik, ahol gyenge a hálózat, próbálkozzon újra később, amikor újra erős lesz a hálózati jel. Ha továbbra is problémát tapasztal, forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9004-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Nem sikerült csatlakozni a hangpostafiókjához"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Nem sikerült csatlakoznunk a hangpostafiókjához. Ha olyan helyen tartózkodik, ahol gyenge a hálózat, próbálkozzon újra később, amikor újra erős lesz a hálózati jel. Ha továbbra is problémát tapasztal, forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9005-ös hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Nem sikerült csatlakozni a hangpostafiókjához"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Nem sikerült csatlakoznunk a hangpostafiókjához. Ha olyan helyen tartózkodik, ahol gyenge a hálózat, próbálkozzon újra később, amikor újra erős lesz a hálózati jel. Ha továbbra is problémát tapasztal, forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9006-os hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Hiba történt"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Hibába ütköztünk. Kérjük, próbálkozzon újra később. Ha továbbra is problémát tapasztal, forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9007-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Hiba történt"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Hibába ütköztünk. Kérjük, próbálkozzon újra később. Ha továbbra is problémát tapasztal, forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9008-as hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Hiba történt"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Sajnos nem sikerült beállítanunk a szolgáltatást. Próbálkozzon újra később. Ha továbbra is problémát tapasztal, forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9009-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Nem sikerült csatlakozni a hangpostafiókjához"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Sajnos jelenleg nem tudunk csatlakozni a hangpostafiókjához. Ha továbbra is problémát tapasztal, forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9990-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Hangposta beállítása"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Fiókjában nincs beállítva a hangposta. Forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9991-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Hangposta"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"A vizuális hangposta nem használható ezen a készüléken. Forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9992-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Hiba történt"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9993-as hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Vizuális hangposta"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"A vizuális hangposta beállításának befejezéséhez hívja az ügyfélszolgálatot a következő telefonszámon, és adja meg a 9994-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Vizuális hangposta"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"A vizuális hangposta beállításának befejezéséhez hívja az ügyfélszolgálatot a következő telefonszámon, és adja meg a 9995-ös hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Vizuális hangposta"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"A vizuális hangposta aktiválásához hívja az ügyfélszolgálatot a következő telefonszámon, és adja meg a 9996-os hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Hiba történt"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"A vizuális hangposta beállításának befejezéséhez hívja az ügyfélszolgálatot a következő telefonszámon, és adja meg a 9998-as hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"A vizuális hangposta ki van kapcsolva"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"A vizuális hangposta aktiválásához hívja az ügyfélszolgálatot a következő számon: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Hiba történt"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9997-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Hiba történt"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9989-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Hiba történt"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Forduljon az ügyfélszolgálathoz a következő telefonszámon, és adja meg a 9999-es hibakódot: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"A vizuális hangposta bekapcsolása"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nA Vizuális hangposta szolgáltatás bekapcsolásával elfogadja a Verizon Wireless Általános Szerződési Feltételeit:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"A vizuális hangposta bekapcsolása"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Telefonálás nélkül tekintheti meg és hallgathatja vissza hangpostafiókja tartalmát. A hangpostaüzenetek átiratát a Google ingyenes átírási szolgáltatása biztosítja. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Telefonálás nélkül tekintheti meg és hallgathatja vissza hangpostafiókja tartalmát. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"További információ"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Ha nem fogadja el az általános szerződési feltételeket, letiltjuk a vizuális hangpostát."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"A vizuális hangposta letiltása"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Ha nem fogadja el az általános szerződési feltételeket, letiltjuk a hangpostaüzenetek átírását."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Hangpostaüzenetek átírásának letiltása"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"A hangpostát a *86 számot tárcsázva érheti el. A folytatáshoz állítson be új PIN-kódot."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN-kód beállítása"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-hy/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-hy/strings.xml
deleted file mode 100644
index 0999753..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-hy/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Ձայնային փոստի ցուցադրման ակտիվացում"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Ձայնային հաղորդագրությունների մասին ծանուցումներ չեք ստանա, քանի որ չեք ակտիվացրել ձայնային փոստի ցուցադրումը: Մինչ այդ, նոր հաղորդագրությունները լսելու համար զանգեք ձայնային փոստի ծառայություն:"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Չհաջողվեց ակտիվացնել ձայնային փոստի ցուցադրումը"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Համոզվեք, որ հեռախոսը միացած է բջջային ցանցին և նորից փորձեք:"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Անջատեք ինքնաթիռի ռեժիմը և նորից փորձեք:"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Կապ չկա"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Նոր ձայնային հաղորդագրությունների մասին ծանուցումներ չեք ստանա: Եթե միացած եք Wi-Fi-ին, կարող եք ստուգել ձայնային փոստը՝ կատարելով համաժամեցում:"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Նոր ձայնային հաղորդագրությունների մասին ծանուցումներ չեք ստանա: Անջատեք ինքնաթիռի ռեժիմը՝ ձայնային փոստը համաժամեցնելու համար:"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Ձայնային փոստը ստուգելու համար ձեր հեռախոսի բջջային ինտերնետը պետք է միացած լինի:"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Չհաջողվեց ակտիվացնել ձայնային փոստի ցուցադրումը"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Ձայնային փոստը ստուգելու համար զանգահարեք հատուկ համարին:"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Չհաջողվեց թարմացնել ձայնային փոստի ցուցադրումը"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Նորից փորձեք, երբ Wi-Fi-ը կամ բջջային ինտերնետը լավանա: Ձայնային փոստը ստուգելու համար զանգահարեք հատուկ համարին:"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Նորից փորձեք, երբ բջջային ինտերնետը լավանա: Ձայնային փոստը ստուգելու համար զանգահարեք հատուկ համարին:"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Չհաջողվեց թարմացնել ձայնային փոստի ցուցադրումը"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Ձայնային փոստը ստուգելու համար զանգահարեք հատուկ համարին:"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Չհաջողվեց թարմացնել ձայնային փոստի ցուցադրումը"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Ձայնային փոստը ստուգելու համար զանգահարեք հատուկ համարին:"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Չհաջողվեց թարմացնել ձայնային փոստի ցուցադրումը"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Ձայնային փոստը ստուգելու համար զանգահարեք հատուկ համարին:"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Չհաջողվեց թարմացնել ձայնային փոստի ցուցադրումը"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Ձայնային փոստը ստուգելու համար զանգահարեք հատուկ համարին:"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Մուտքի արկղը գրեթե լիքն է"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Եթե մուտքի արկղը լցվի, նոր ձայնային հաղորդագրություններ չեք կարողանա ստանալ:"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Հնարավոր չէ ստանալ նոր ձայնային հաղորդագրություններ"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Մուտքի արկղը լիքն է: Նոր հաղոդագրություններ ստանալու համար ջնջեք հները:"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Պահանջվում է լրացուցիչ տարածք"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Ձեր փոստարկղը լիքն է: Ակտիվացրեք լրացուցիչ տարածք, որպեսզի Google-ը կարողանա կառավարել և պահուստավորել ձեր ձայնային փոստի հաղորդագրությունները:"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Պահանջվում է լրացուցիչ տարածք"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Ձեր փոստարկղը գրեթե լիքն է: Ակտիվացրեք լրացուցիչ տարածք, որպեսզի Google-ը կարողանա կառավարել և պահուստավորել ձեր ձայնային փոստի հաղորդագրությունները:"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ընտրել ձեր ձայնային փոստի PIN-ը"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Ամեն անգամ ձայնային փոստին զանգելիս ձեզանից կպահանջվի ձայնային փոստի PIN-ը:"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Ինքնաթիռի ռեժիմի կարգավորումներ"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Ընտրել PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Փորձել նորից"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Միացնել"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Ոչ"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Համաժամեցնել"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Զանգել ձայնային փոստին"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Զանգել հաճախորդների աջակցման կենտրոն"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Սխալ առաջացավ"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Սխալ առաջացավ: Փորձեք ավելի ուշ: Եթե խնդիրը չվերանա, <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք հաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9001 կոդը:"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Սխալ առաջացավ"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Սխալ առաջացավ: Փորձեք ավելի ուշ: Եթե խնդիրը չվերանա, <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք հաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9002 կոդը:"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Սխալ առաջացավ"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Սխալ առաջացավ: Փորձեք ավելի ուշ: Եթե խնդիրը չվերանա, <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9003 կոդը:"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Չհաջողվեց միանալ ձայնային փոստարկղին"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Չհաջողվեց միանալ ձայնային փոստարկղին: Եթե բջջային ցանցի ազդանշանը թույլ է, սպասեք, միչև որ այն ուժեղանա և նորից փորձեք: Եթե խնդիրը չվերանա, <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9004 կոդը:"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Չհաջողվեց միանալ ձայնային փոստարկղին"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Չհաջողվեց միանալ ձայնային փոստարկղին: Եթե բջջային ցանցի ազդանշանը թույլ է, սպասեք, միչև որ այն ուժեղանա և նորից փորձեք: Եթե խնդիրը չվերանա, <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9005 կոդը:"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Չհաջողվեց միանալ ձայնային փոստարկղին"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Չհաջողվեց միանալ ձայնային փոստարկղին: Եթե բջջային ցանցի ազդանշանը թույլ է, սպասեք, միչև որ այն ուժեղանա և նորից փորձեք: Եթե խնդիրը չվերանա, <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9006 կոդը:"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Սխալ առաջացավ"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Սխալ առաջացավ: Փորձեք ավելի ուշ: Եթե խնդիրը չվերանա, <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9007 կոդը:"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Սխալ առաջացավ"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Սխալ առաջացավ: Փորձեք ավելի ուշ: Եթե խնդիրը չվերանա, <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9008 կոդը:"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Սխալ առաջացավ"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Սերվերը կարգավորելիս սխալ առաջացավ: Փորձեք ավելի ուշ: Եթե խնդիրը չվերանա, <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9009 կոդը:"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Չհաջողվեց միանալ ձայնային փոստարկղին"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Դեռևս չի հաջողվում միանալ ձայնային փոստարկղին: Փորձեք ավելի ուշ: Եթե խնդիրը չվերանա, <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9990 կոդը:"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Ձայնային փոստի կարգավորում"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Ձեր հաշվի ձայնային փոստը կարգավորված չէ: <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9991 կոդը:"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Ձայնային փոստ"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Ձայնային փոստի ցուցադրումը հասանելի չէ այս սարքում: <xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9992 կոդը:"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Սխալ առաջացավ"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"<xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9993 կոդը:"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Ձայնային փոստի ցուցադրում"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Ձայնային փոստի ցուցադրման կարգավորումն ավարտելու համար <xliff:g id="NUMBER">%1$s</xliff:g> հեռախոսահամարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9994 կոդը:"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Ձայնային փոստի ցուցադրում"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Ձայնային փոստի ցուցադրման կարգավորումն ավարտելու համար <xliff:g id="NUMBER">%1$s</xliff:g> հեռախոսահամարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9995 կոդը:"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Ձայնային փոստի ցուցադրում"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Ձայնային փոստի ցուցադրումն ակտիվացնելու համար <xliff:g id="NUMBER">%1$s</xliff:g> հեռախոսահամարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9996 կոդը:"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Սխալ առաջացավ"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Ձայնային փոստի ցուցադրման կարգավորումն ավարտելու համար <xliff:g id="NUMBER">%1$s</xliff:g> հեռախոսահամարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9998 կոդը:"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Ձայնային փոստի ցուցադրումն անջատած է"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Ձայնային փոստի ցուցադրումն ակտիվացնելու համար <xliff:g id="NUMBER">%1$s</xliff:g> հեռախոսահամարով կապվեք hաճախորդների սպասարկման ծառայության հետ:"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Սխալ առաջացավ"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"<xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9997 կոդը:"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Սխալ առաջացավ"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"<xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9989 կոդը:"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Սխալ առաջացավ"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"<xliff:g id="NUMBER">%1$s</xliff:g> համարով կապվեք hաճախորդների սպասարկման ծառայության հետ և հայտնեք սխալի 9999 կոդը:"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Միացնել ձայնային փոստի ցուցադրումը"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nՄիացնելով ձայնային փոստի ցուցադրումը՝ դուք ընդունում եք Verizon Wireless-ի օգտագործման պայմանները՝\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Միացնել ձայնային փոստի ցուցադրումը"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Տեսեք և լսեք ձեր հաղորդագրությունները՝ առանց ձայնային փոստին զանգելու անհրաժեշտության: Ձայնային հաղորդագրությունների տառադրումն արվում է Google-ի անվճար տառադրման ծառայության կողմից: %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Տեսեք և լսեք ձեր հաղորդագրությունները՝ առանց ձայնային փոստին զանգելու անհրաժեշտության: %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Իմանալ ավելին"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Եթե չընդունեք օգտագործման պայմանները, տեսողական ձայնային փոստը կանջատվի:"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Անջատել տեսողական ձայնային փոստը"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Եթե չընդունեք օգտագործման պայմանները, ձայնային փոստի տառադրումը կանջատվի:"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Անջատել ձայնային փոստի տառադրումը"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Ձայնային փոստը հասանելի կլինի միայն *86 համարով: Շարունակելու համար ընտրեք ձայնային փոստի նոր PIN:"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Ընտրել PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-in/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-in/strings.xml
deleted file mode 100644
index 8d6665b..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-in/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Mengaktifkan pesan suara visual"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Anda mungkin tidak menerima pemberitahuan pesan suara hingga visual pesan suara sepenuhnya diaktifkan. Panggil pesan suara untuk mengambil pesan baru hingga pesan suara sepenuhnya diaktifkan."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Tidak dapat mengaktifkan pesan suara visual"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Pastikan ponsel memiliki koneksi jaringan seluler, dan coba lagi."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Nonaktifkan mode pesawat, lalu coba lagi."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Tidak ada sambungan internet"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Anda tidak akan menerima notifikasi pesan suara baru. Jika menggunakan Wi-Fi, pesan suara dapat diperiksa dengan menyinkronkannya sekarang."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Anda tidak akan menerima notifikasi pesan suara baru. Nonaktifkan mode pesawat untuk menyinkronkan pesan suara."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Ponsel memerlukan koneksi data seluler untuk memeriksa pesan suara."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Tidak dapat mengaktifkan pesan suara visual"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Anda masih dapat menelepon untuk memeriksa pesan suara."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Tidak dapat memperbarui pesan suara visual"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Coba lagi ketika koneksi Wi-Fi atau data seluler lebih baik. Anda masih bisa menelepon untuk memeriksa pesan suara."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Coba lagi ketika koneksi data seluler lebih baik. Anda masih bisa menelepon untuk memeriksa pesan suara."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Tidak dapat memperbarui pesan suara visual"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Anda masih dapat menelepon untuk memeriksa pesan suara."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Tidak dapat memperbarui pesan suara visual"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Anda masih dapat menelepon untuk memeriksa pesan suara."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Tidak dapat memperbarui pesan suara visual"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Anda masih dapat menelepon untuk memeriksa pesan suara."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Tidak dapat memperbarui pesan suara visual"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Anda masih dapat menelepon untuk memeriksa pesan suara."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Kotak masuk hampir penuh"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Pesan suara tidak dapat diterima jika kotak masuk Anda penuh."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Tidak dapat menerima pesan suara baru"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Kotak masuk Anda penuh. Coba hapus beberapa pesan untuk menerima pesan suara baru."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Aktifkan penyimpanan dan backup ekstra"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Kotak surat Anda sudah penuh. Untuk mengosongkan ruang, aktifkan penyimpanan ekstra sehingga Google dapat mengelola dan melakukan backup pada pesan suara Anda."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Aktifkan penyimpanan dan backup ekstra"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Kotak surat Anda hampir penuh. Untuk mengosongkan ruang, aktifkan penyimpanan ekstra sehingga Google dapat mengelola dan melakukan backup pada pesan suara Anda."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Setel PIN pesan suara Anda"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Anda akan memerlukan PIN pesan suara setiap kali menelepon untuk mengakses pesan suara."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Setelan Mode Pesawat"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Setel PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Coba Lagi"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Aktifkan"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Tidak, Terima Kasih"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinkron"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Panggil Pesan Suara"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Panggil Dukungan Pelanggan"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Terjadi Kesalahan"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Maaf, kami mengalami masalah. Coba lagi nanti. Jika masih ada masalah, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Terjadi Kesalahan"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Maaf, kami mengalami masalah. Coba lagi nanti. Jika masih ada masalah, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Terjadi Kesalahan"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Maaf, kami mengalami masalah. Coba lagi nanti. Jika masih ada masalah, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Tidak Dapat Menyambungkan ke Kotak Pesan Suara Anda"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Maaf, kami mengalami masalah saat menyambungkan ke kotak pesan suara Anda. Jika Anda berada di area dengan kekuatan sinyal yang buruk, tunggu hingga sinyal membaik, lalu coba lagi. Jika masih ada masalah, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Tidak Dapat Menyambungkan ke Kotak Pesan Suara Anda"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Maaf, kami mengalami masalah saat menyambungkan ke kotak pesan suara Anda. Jika Anda berada di area dengan kekuatan sinyal yang buruk, tunggu hingga sinyal membaik, lalu coba lagi. Jika masih ada masalah, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Tidak Dapat Menyambungkan ke Kotak Pesan Suara Anda"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Maaf, kami mengalami masalah saat menyambungkan ke kotak pesan suara Anda. Jika Anda berada di area dengan kekuatan sinyal yang buruk, tunggu hingga sinyal membaik, lalu coba lagi. Jika masih ada masalah, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Terjadi Kesalahan"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Maaf, kami mengalami masalah. Coba lagi nanti. Jika masih ada masalah, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Terjadi Kesalahan"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Maaf, kami mengalami masalah. Coba lagi nanti. Jika masih ada masalah, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Terjadi Kesalahan"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Maaf, kami mengalami masalah saat menyiapkan layanan Anda. Coba lagi nanti. Jika masih ada masalah, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Tidak Dapat Menyambungkan ke Kotak Pesan Suara Anda"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Maaf, kami tidak dapat menyambungkan ke kotak pesan suara Anda saat ini. Coba lagi nanti. Jika masih ada masalah, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Set up Voice  Mail"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Pesan suara tidak disiapkan pada akun Anda. Hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Pesan suara"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Pesan suara visual tidak dapat digunakan pada perangkat ini. Hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahukan kode error 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Terjadi Kesalahan"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Pesan suara visual"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Untuk menyelesaikan penyiapan pesan suara visual, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahukan kode error 9995."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Pesan suara visual"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Untuk menyelesaikan penyiapan pesan suara visual, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahukan kode error 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Pesan suara visual"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Untuk mengaktifkan pesan suara visual, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahukan kode error 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Terjadi Kesalahan"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Untuk menyelesaikan penyiapan pesan suara visual, hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahukan kode error 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Pesan suara visual dinonaktifkan"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> untuk mengaktifkan pesan suara visual."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Terjadi Kesalahan"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Terjadi Kesalahan"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Terjadi Kesalahan"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Hubungi Layanan Pelanggan melalui nomor telepon <xliff:g id="NUMBER">%1$s</xliff:g> dan beri tahukan kode kesalahan 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Aktifkan Pesan Suara Visual"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nDengan mengaktifkan Pesan Suara Visual, Anda menyetujui persyaratan dan ketentuan Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Aktifkan pesan suara visual"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Lihat dan dengarkan pesan Anda, tanpa harus menelepon pesan suara. Transkrip pesan suara Anda disediakan oleh layanan transkripsi gratis Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Lihat dan dengarkan pesan Anda, tanpa harus menelepon pesan suara. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Pelajari lebih lanjut"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Pesan suara visual akan dinonaktifkan jika persyaratan dan ketentuan ditolak."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Nonaktifkan pesan suara visual"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Transkripsi pesan suara akan dinonaktifkan jika persyaratan dan ketentuan ditolak."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Nonaktifkan transkripsi pesan suara"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Pesan suara hanya dapat diakses dengan menghubungi *86. Setel PIN pesan suara baru untuk melanjutkan."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Setel PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-is/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-is/strings.xml
deleted file mode 100644
index b36e288..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-is/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Virkjar myndrænt talhólf"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Þú getur ekki fengið tilkynningar um talhólfsskilaboð fyrr en myndrænt talhólf er virkjað að fullu. Hringdu í talhólfið til að sækja ný skilaboð þar til talhólfið hefur verið virkjað að fullu."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Ekki hægt að virkja myndrænt talhólf"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Gakktu úr skugga um að síminn sé tengdur farsímakerfi og reyndu aftur."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Slökktu á flugstillingu og reyndu aftur."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Engin tenging"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Þú færð ekki tilkynningar um ný talhólfsskilaboð. Ef þú ert með Wi-Fi tengingu geturðu athugað talhólfið með því að samstilla núna."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Þú færð ekki tilkynningu um ný talhólfsskilaboð. Slökktu á flugstillingu til að samstilla talhólfið."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Síminn þarf tengingu við farsímanet til að athuga talhólf."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Ekki hægt að virkja myndrænt talhólf"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Þú getur samt hringt til að athuga talhólfið."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Ekki hægt að uppfæra sjónrænt talhólf"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Reyndu aftur þegar Wi-Fi eða farsímanettengingin þín er betri. Þú getur samt hringt til að athuga talhólfið."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Reyndu aftur þegar farsímanettengingin þín er betri. Þú getur samt hringt til að athuga talhólfið."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Ekki hægt að uppfæra sjónrænt talhólf"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Þú getur samt hringt til að athuga talhólfið."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Ekki hægt að uppfæra sjónrænt talhólf"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Þú getur samt hringt til að athuga talhólfið."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Ekki hægt að uppfæra sjónrænt talhólf"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Þú getur samt hringt til að athuga talhólfið."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Ekki hægt að uppfæra sjónrænt talhólf"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Þú getur samt hringt til að athuga talhólfið."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Pósthólfið er næstum fullt"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Þú getur ekki tekið á móti nýjum talhólfsskilaboðum ef pósthólfið er fullt."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Ekki hægt að taka á móti nýjum talhólfsskilaboðum"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Pósthólfið er fullt. Prófaðu að eyða skilaboðum til að taka á móti nýjum talhólfsskilaboðum."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Kveikja á viðbótargeymslu og öryggisafritun"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Pósthólfið þitt er fullt. Þú getur losað pláss með því að kveikja á viðbótargeymslu til að Google geti unnið með og tekið öryggisafrit af talhólfsskilaboðunum þínum."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Kveikja á viðbótargeymslu og öryggisafritun"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Pósthólfið þitt er næstum fullt. Þú getur losað pláss með því að kveikja á viðbótargeymslu til að Google geti unnið með og tekið öryggisafrit af talhólfsskilaboðunum þínum."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Stilla PIN-númer talhólfs"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Þú þarft að nota PIN-númer talhólfsins í hvert skipti sem þú hringir til að athuga það."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Stilling flugstillingar"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Stilla PIN-númer"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Reyna aftur"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Kveikja"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nei, takk"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Samstilling"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Hringja í talhólf"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Hringja í þjónustufulltrúa"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Eitthvað fór úrskeiðis"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Því miður kom upp vandamál. Reyndu aftur seinna. Ef vandamálið heldur áfram skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Eitthvað fór úrskeiðis"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Því miður kom upp vandamál. Reyndu aftur seinna. Ef vandamálið heldur áfram skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Eitthvað fór úrskeiðis"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Því miður kom upp vandamál. Reyndu aftur seinna. Ef vandamálið heldur áfram skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Ekki tókst að tengjast talhólfinu"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Því miður kom upp vandamál við að tengjast talhólfinu. Ef þú ert á svæði þar sem er lélegt símasamband skaltu bíða þar til þú kemst í betra samband og reyna aftur. Ef vandamálið heldur áfram skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Ekki tókst að tengjast talhólfinu"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Því miður kom upp vandamál við að tengjast talhólfinu. Ef þú ert á svæði þar sem er lélegt símasamband skaltu bíða þar til þú kemst í betra samband og reyna aftur. Ef vandamálið heldur áfram skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Ekki tókst að tengjast talhólfinu"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Því miður kom upp vandamál við að tengjast talhólfinu. Ef þú ert á svæði þar sem er lélegt símasamband skaltu bíða þar til þú kemst í betra samband og reyna aftur. Ef vandamálið heldur áfram skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Eitthvað fór úrskeiðis"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Því miður kom upp vandamál. Reyndu aftur seinna. Ef vandamálið heldur áfram skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Eitthvað fór úrskeiðis"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Því miður kom upp vandamál. Reyndu aftur seinna. Ef vandamálið heldur áfram skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Eitthvað fór úrskeiðis"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Því miður kom upp vandamál við uppsetningu þjónustunnar. Reyndu aftur seinna. Ef vandamálið heldur áfram skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Ekki tókst að tengjast talhólfinu"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Því miður kom upp vandamál við að tengjast talhólfinu þínu á þessari stundu. Reyndu aftur seinna. Ef vandamálið heldur áfram skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Setja upp talhólf"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Talhólf er ekki uppsett á reikningnum þínum. Hafðu samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefðu upp villukóðann 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Talhólf"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Ekki er hægt að nota myndrænt talhólf í þessu tæki. Hafðu samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefðu upp villukóðann 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Eitthvað fór úrskeiðis"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Hafðu samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefðu upp villukóðann 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Myndrænt talhólf"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Til þess að ljúka uppsetningu myndræns talhólfs skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Myndrænt talhólf"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Til þess að ljúka uppsetningu myndræns talhólfs skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Myndrænt talhólf"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Til þess að virkja myndrænt talhólf skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Eitthvað fór úrskeiðis"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Til þess að ljúka uppsetningu myndræns talhólfs skaltu hafa samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefa upp villukóðann 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Myndrænt talhólf er óvirkt"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Hafðu samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> til að virkja myndrænt talhólf."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Eitthvað fór úrskeiðis"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Hafðu samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefðu upp villukóðann 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Eitthvað fór úrskeiðis"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Hafðu samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefðu upp villukóðann 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Eitthvað fór úrskeiðis"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Hafðu samband við þjónustudeild í síma <xliff:g id="NUMBER">%1$s</xliff:g> og gefðu upp villukóðann 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Kveikja á myndrænu talhólfi"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nMeð því að kveikja á myndrænu talhólfi samþykkir þú skilmála Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Kveikja á myndrænu talhólfi"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Sjáðu og hlustaðu á skilaboðin þín, án þess að þurfa að hringja í talhólfið. Talhólfsskilaboð eru umrituð með ókeypis umritunarþjónustu Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Sjáðu og hlustaðu á skilaboðin þín, án þess að þurfa að hringja í talhólfið. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Frekari upplýsingar"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Slökkt verður á myndrænu talhólfi ef skilmálum er hafnað."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Slökkva á myndrænu talhólfi"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Slökkt verður á umritun talhólfsskilaboða ef skilmálarnir eru ekki samþykktir."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Slökkva á umritun talhólfsskilaboða"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Talhólf er einungis aðgengilegt með því að hringja í *86. Stilltu nýtt PIN-númer fyrir talhólfið til að halda áfram."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Stilla PIN-númer"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-it/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-it/strings.xml
deleted file mode 100644
index 2155240..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-it/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Attivazione della lettura della segreteria"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Potresti non ricevere le notifiche dei messaggi vocali fino a che non avrai attivato completamente la funzione di lettura della segreteria. Fino ad allora, chiama la segreteria per recuperare i nuovi messaggi."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Impossibile attivare la lettura della segreteria"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Assicurati che il telefono abbia una connessione alla rete mobile e riprova."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Disattiva la modalità aereo e riprova."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Nessuna connessione"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Non riceverai notifiche per i nuovi messaggi vocali. Se sei connesso a una rete Wi-Fi, puoi consultare la segreteria effettuando subito la sincronizzazione."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Non riceverai notifiche per i nuovi messaggi vocali. Disattiva la modalità aereo per sincronizzare la segreteria."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Per poter consultare la segreteria, il telefono deve essere connesso a una rete mobile."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Impossibile attivare la lettura della segreteria"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Puoi ancora consultare la segreteria tramite chiamata."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Impossibile aggiornare la lettura della segreteria"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Riprova quando la connessione alla rete Wi-Fi o mobile sarà migliore. Puoi ancora consultare la segreteria tramite chiamata."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Riprova quando la connessione dati mobile sarà migliore. Puoi ancora consultare la segreteria tramite chiamata."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Impossibile aggiornare la lettura della segreteria"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Puoi ancora consultare la segreteria tramite chiamata."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Impossibile aggiornare la lettura della segreteria"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Puoi ancora consultare la segreteria tramite chiamata."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Impossibile aggiornare la lettura della segreteria"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Puoi ancora consultare la segreteria tramite chiamata."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Impossibile aggiornare la lettura della segreteria"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Puoi ancora consultare la segreteria tramite chiamata."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Casella della segreteria quasi piena"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Se la casella della segreteria è piena non potrai ricevere nuovi messaggi vocali."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Impossibile ricevere nuovi messaggi vocali"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"La casella della segreteria è piena. Prova a eliminare alcuni messaggi per riceverne di nuovi."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Attiva spazio di archiviazione supplementare e backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"La tua casella di posta e piena. Per liberare spazio, attiva lo spazio di archiviazione supplementare in modo che Google possa gestire i messaggi vocali ed eseguirne il backup."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Attiva spazio di archiviazione supplementare e backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"La tua casella di posta e quasi piena. Per liberare spazio, attiva lo spazio di archiviazione supplementare in modo che Google possa gestire i messaggi vocali ed eseguirne il backup."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Imposta il PIN della segreteria"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Dovrai inserire il PIN della segreteria ogni volta che chiami per accedervi."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Impostazioni modalità aereo"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Imposta PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Riprova"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Attiva"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"No grazie"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sincronizza"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Chiama segreteria"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Chiama l\'assistenza clienti"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Si è verificato un problema"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Spiacenti, si è verificato un problema. Riprova più tardi. Se il problema persiste, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Si è verificato un problema"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Spiacenti, si è verificato un problema. Riprova più tardi. Se il problema persiste, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Si è verificato un problema"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Spiacenti, si è verificato un problema. Riprova più tardi. Se il problema persiste, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Impossibile connettersi alla casella dei messaggi vocali"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Spiacenti, si è verificato un problema durante la connessione alla tua casella dei messaggi vocali. Se ti trovi in una zona con segnale debole, attendi che il segnale sia più forte e riprova. Se il problema persiste, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Impossibile connettersi alla casella dei messaggi vocali"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Spiacenti, si è verificato un problema durante la connessione alla tua casella dei messaggi vocali. Se ti trovi in una zona con segnale debole, attendi che il segnale sia più forte e riprova. Se il problema persiste, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Impossibile connettersi alla casella dei messaggi vocali"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Spiacenti, si è verificato un problema durante la connessione alla tua casella dei messaggi vocali. Se ti trovi in una zona con segnale debole, attendi che il segnale sia più forte e riprova. Se il problema persiste, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Si è verificato un problema"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Spiacenti, si è verificato un problema. Riprova più tardi. Se il problema persiste, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Si è verificato un problema"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Spiacenti, si è verificato un problema. Riprova più tardi. Se il problema persiste, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Si è verificato un problema"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Spiacenti, si è verificato un problema durante l\'impostazione del servizio. Riprova più tardi. Se il problema persiste, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Impossibile connettersi alla casella dei messaggi vocali"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Al momento non è possibile connettersi alla tua casella dei messaggi vocali. Riprova più tardi. Se il problema persiste, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Imposta la segreteria"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"La segreteria non è impostata sul tuo account. Contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Segreteria"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Non è possibile utilizzare la funzione di lettura della segreteria su questo dispositivo. Contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Si è verificato un problema"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Lettura della segreteria"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Per completare l\'impostazione della lettura della segreteria, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Lettura della segreteria"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Per completare l\'impostazione della lettura della segreteria, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Lettura della segreteria"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Per attivare la lettura della segreteria, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Si è verificato un problema"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Per completare l\'impostazione della lettura della segreteria, contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"La lettura della segreteria è disattivata"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> per attivare la lettura della segreteria."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Si è verificato un problema"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Si è verificato un problema"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Si è verificato un problema"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Contatta l\'assistenza clienti al numero <xliff:g id="NUMBER">%1$s</xliff:g> indicando il seguente codice di errore: 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Attiva la lettura della segreteria"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nAttivando la lettura della segreteria, accetti i termini e le condizioni di Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Attiva la lettura della segreteria"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Leggi e ascolta i tuoi messaggi senza dover chiamare la segreteria. Le trascrizioni dei messaggi vocali sono fornite dal servizio gratuito di trascrizione di Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Leggi e ascolta i tuoi messaggi senza dover chiamare la segreteria. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Altre informazioni"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"La lettura della segreteria verrà disattivata se non accetti i termini e condizioni."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Disattiva la lettura della segreteria"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"La trascrizione della segreteria verrà disattivata se non accetti termini e condizioni."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Disattiva la trascrizione della segreteria"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"La segreteria sarà accessibile unicamente chiamando il numero *86. Imposta un nuovo PIN per la segreteria per procedere."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Imposta PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-iw/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-iw/strings.xml
deleted file mode 100644
index 9b2188d..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-iw/strings.xml
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"מפעיל את הדואר הקולי הוויזואלי"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"ייתכן שלא תקבל עדכונים על הודעות חדשות בדואר הקולי עד שהדואר הקולי הוויזואלי יופעל במלואו. עד אז, תצטרך להתקשר לדואר הקולי כדי להאזין להודעות החדשות."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"לא ניתן להפעיל את הדואר הקולי הוויזואלי"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"ודא שהטלפון מחובר לרשת סלולרית ונסה שוב."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"השבת את מצב טיסה ונסה שוב."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"אין חיבור"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"‏לא תקבל עדכונים על הודעות קוליות חדשות. אם אתה משתמש בחיבור Wi-Fi, סנכרן עכשיו כדי לבדוק אם יש לך הודעות קוליות."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"לא תקבל עדכונים על הודעות חדשות בדואר הקולי. השבת את מצב הטיסה כדי לסנכרן את הדואר הקולי שלך."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"כדי לבדוק הודעות קוליות נדרש חיבור לרשת סלולרית בטלפון."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"לא ניתן להפעיל את הדואר הקולי הוויזואלי"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"עדיין תוכל להתקשר כדי לבדוק את הדואר הקולי."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"לא ניתן לעדכן את הדואר הקולי הוויזואלי"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"‏נסה שוב כשיהיה חיבור טוב יותר ל-Wi-Fi או לרשת הסלולרית. אפשר גם להתקשר כדי לבדוק הודעות קוליות."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"נסה שוב כשיהיה חיבור טוב יותר לרשת הסלולרית. אפשר גם להתקשר כדי לבדוק הודעות קוליות."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"לא ניתן לעדכן את הדואר הקולי הוויזואלי"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"עדיין תוכל להתקשר כדי לבדוק את הדואר הקולי."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"לא ניתן לעדכן את הדואר הקולי הוויזואלי"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"עדיין תוכל להתקשר כדי לבדוק את הדואר הקולי."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"לא ניתן לעדכן את הדואר הקולי הוויזואלי"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"עדיין תוכל להתקשר כדי לבדוק את הדואר הקולי."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"לא ניתן לעדכן את הדואר הקולי הוויזואלי"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"עדיין תוכל להתקשר כדי לבדוק את הדואר הקולי."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"תיבת הדואר הנכנס כמעט מלאה"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"אם תיבת הדואר הנכנס מלאה, לא תוכל לקבל דואר קולי חדש."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"לא ניתן לקבל הודעות חדשות בדואר הקולי"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"תיבת הדואר הנכנס מלאה. נסה למחוק חלק מההודעות כדי שתוכל לקבל דואר קולי חדש."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"הפעל את הגיבוי ופינוי המקום"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"‏תיבת הדואר שלך מלאה. הפעל את הגיבוי ופינוי המקום כדי ש-Google תוכל לנהל ולגבות את ההודעות הקוליות שלך."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"הפעל את הגיבוי ופינוי המקום"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"‏תיבת הדואר שלך כמעט מלאה. הפעל את הגיבוי ופינוי המקום כדי ש-Google תוכל לנהל ולגבות את ההודעות הקוליות שלך."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"הגדר קוד גישה לדואר הקולי"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"בכל פעם שתשתמש בדואר הקולי תצטרך את קוד הגישה."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"הגדרות למצב טיסה"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"הגדרת קוד גישה"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"נסה שוב"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"הפעל"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"לא, תודה"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"סנכרון"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"התקשר לדואר קולי"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"התקשר לשירות הלקוחות"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"משהו השתבש"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"מצטערים, נתקלנו בבעיה. נסה שוב מאוחר יותר. אם הבעיה נמשכת, התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"משהו השתבש"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"מצטערים, נתקלנו בבעיה. נסה שוב מאוחר יותר. אם הבעיה נמשכת, התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"משהו השתבש"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"מצטערים, נתקלנו בבעיה. נסה שוב מאוחר יותר. אם הבעיה נמשכת, התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"לא ניתן להתחבר לתיבת הדואר הקולי שלך"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"מצטערים, נתקלנו בבעיה ולא הצלחנו להתחבר לתיבת הדואר הקולי שלך. אם אין לך קליטה טובה, המתן עד שתהיה לך קליטה טובה יותר ונסה שוב. אם הבעיה נמשכת, התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"לא ניתן להתחבר לתיבת הדואר הקולי שלך"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"מצטערים, נתקלנו בבעיה ולא הצלחנו להתחבר לתיבת הדואר הקולי שלך. אם אין לך קליטה טובה, המתן עד שתהיה לך קליטה טובה יותר ונסה שוב. אם הבעיה נמשכת, התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"לא ניתן להתחבר לתיבת הדואר הקולי שלך"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"מצטערים, נתקלנו בבעיה ולא הצלחנו להתחבר לתיבת הדואר הקולי שלך. אם אין לך קליטה טובה, המתן עד שתהיה לך קליטה טובה יותר ונסה שוב. אם הבעיה נמשכת, התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"משהו השתבש"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"מצטערים, נתקלנו בבעיה. נסה שוב מאוחר יותר. אם הבעיה נמשכת, התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"משהו השתבש"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"מצטערים, נתקלנו בבעיה. נסה שוב מאוחר יותר. אם הבעיה נמשכת, התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"משהו השתבש"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"מצטערים, נתקלנו בבעיה ולא הצלחנו להגדיר את השירות. נסה שוב מאוחר יותר. אם הבעיה נמשכת, התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"לא ניתן להתחבר לתיבת הדואר הקולי שלך"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"מצטערים, לא ניתן להתחבר לתיבת הדואר הקולי שלך כרגע. נסה שוב מאוחר יותר. אם הבעיה נמשכת, התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"הגדרת הדואר הקולי"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"לא מוגדר דואר קולי בחשבון שלך. התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"דואר קולי"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"לא ניתן להשתמש בדואר הקולי הוויזואלי במכשיר הזה. ניתן להתקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ולומר לנציג שקוד השגיאה הוא 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"משהו השתבש"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"דואר קולי ויזואלי"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"כדי להשלים את ההגדרה של הדואר הקולי הוויזואלי, עליך להתקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ולומר לנציג שקוד השגיאה הוא 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"דואר קולי ויזואלי"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"כדי להשלים את ההגדרה של הדואר הקולי הוויזואלי, עליך להתקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ולומר לנציג שקוד השגיאה הוא 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"דואר קולי ויזואלי"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"כדי להפעיל את הדואר הקולי הוויזואלי, עליך להתקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ולומר לנציג שקוד השגיאה הוא 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"משהו השתבש"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"כדי להשלים את ההגדרה של הדואר הקולי הוויזואלי, עליך להתקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ולומר לנציג שקוד השגיאה הוא 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"הדואר הקולי הוויזואלי מושבת"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"כדי להפעיל את הדואר הקולי הוויזואלי, התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"משהו השתבש"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"משהו השתבש"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"משהו השתבש"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"התקשר לשירות הלקוחות בטלפון <xliff:g id="NUMBER">%1$s</xliff:g> ואמור לנציג שקוד השגיאה הוא 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"הפעלה של הדואר הקולי הוויזואלי"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"‏%1$s\n\nהפעלה של הדואר הקולי הוויזואלי מהווה את הסכמתך לתנאים ולהגבלות של Verizon Wireless‏:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"הפעלה של הדואר הקולי הוויזואלי"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"‎%s‎"</string>
-    <!-- String.format failed for translation -->
-    <!-- no translation found for dialer_terms_and_conditions_1.0 (9151400923645683073) -->
-    <skip />
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"‏ניתן להציג את ההודעות הקוליות ולהאזין להן בלי להתקשר לתא הקולי. ‎%s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"למידע נוסף"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"אם תדחה את התנאים וההגבלות הדואר הקולי הוויזואלי יושבת."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"השבת את הדואר הקולי הוויזואלי"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"אם התנאים וההגבלות לא יאושרו, התמלולים של ההודעות הקוליות יושבתו."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"השבתת התמלולים של ההודעות הקוליות"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"תוכל לבדוק את הדואר הקולי רק על ידי חיוג 86*. כדי להמשיך, הגדר קוד גישה חדש לדואר הקולי."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"הגדרת קוד גישה"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ja/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ja/strings.xml
deleted file mode 100644
index 3302fc0..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ja/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"ビジュアル ボイスメールを有効化中"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"ビジュアル ボイスメールの有効化が完了するまでボイスメール通知を受信できません。ボイスメールの有効化が完了するまでは、ボイスメールを呼び出して新しいメッセージを取得してください。"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"ビジュアル ボイスメールを有効化できません"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"スマートフォンがモバイル ネットワークに接続済みであることを確認してから、もう一度お試しください。"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"機内モードをオフにしてから、もう一度お試しください。"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"接続なし"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"新しいボイスメールの通知を受信できません。Wi-Fi をご利用の場合は同期してボイスメールを確認できます。"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"新しいボイスメールの通知を受信できません。ボイスメールを同期するには機内モードをオフにしてください。"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"ボイスメールを確認するには、スマートフォンでモバイルデータ接続を使用する必要があります。"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"ビジュアル ボイスメールを有効化できません"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"ボイスメール サービスを呼び出してボイスメールを確認することは可能です。"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"ビジュアル ボイスメールを更新できません"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Wi-Fi かモバイルデータの接続状態が良好なときにもう一度お試しください。ボイスメール サービスを呼び出してボイスメールを確認することは可能です。"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"モバイルデータの接続状態が良好なときにもう一度お試しください。ボイスメール サービスを呼び出してボイスメールを確認することは可能です。"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"ビジュアル ボイスメールを更新できません"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"ボイスメール サービスを呼び出してボイスメールを確認することは可能です。"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"ビジュアル ボイスメールを更新できません"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"ボイスメール サービスを呼び出してボイスメールを確認することは可能です。"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"ビジュアル ボイスメールを更新できません"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"ボイスメール サービスを呼び出してボイスメールを確認することは可能です。"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"ビジュアル ボイスメールを更新できません"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"ボイスメール サービスを呼び出してボイスメールを確認することは可能です。"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"受信トレイの空き容量が少なくなっています"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"新しいボイスメールを受信できません。受信トレイがいっぱいです。"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"新しいボイスメールを受信できません"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"受信トレイがいっぱいです。新しいボイスメールを受信するには、古いメッセージをいくつか削除してみてください。"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"追加の保存容量とバックアップを ON にしてください"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"メールボックスの保存容量が上限に達しました。空き容量を増やすには、追加の保存容量を ON にして、Google がボイスメールのメッセージの管理とバックアップを行えるようにしてください。"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"追加の保存容量とバックアップを ON にしてください"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"メールボックスの保存容量がもう少しで上限に達します。空き容量を増やすには、追加の保存容量を ON にして、Google がボイスメールのメッセージの管理とバックアップを行えるようにしてください。"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ボイスメール PIN を設定"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ボイスメールを呼び出すには、ボイスメール PIN が必要です。"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"機内モードの設定"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN を設定"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"再試行"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"ON にする"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"スキップ"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"同期"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"ボイスメール呼び出し"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"カスタマー サポートへの電話"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"エラー"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"エラーが発生しました。しばらくしてからもう一度お試しください。問題が解決しない場合は、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9001 をお伝えください。"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"エラー"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"エラーが発生しました。しばらくしてからもう一度お試しください。問題が解決しない場合は、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9002 をお伝えください。"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"エラー"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"エラーが発生しました。しばらくしてからもう一度お試しください。問題が解決しない場合は、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9003 をお伝えください。"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"ボイスメール ボックスに接続できません"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"ボイスメール ボックスへの接続中にエラーが発生しました。電波が弱い場合は、電波状況が良好な場所でもう一度お試しください。問題が解決しない場合は、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9004 をお伝えください。"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"ボイスメール ボックスに接続できません"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"ボイスメール ボックスへの接続中にエラーが発生しました。電波が弱い場合は、電波状況が良好な場所でもう一度お試しください。問題が解決しない場合は、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9005 をお伝えください。"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"ボイスメール ボックスに接続できません"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"ボイスメール ボックスへの接続中にエラーが発生しました。電波が弱い場合は、電波状況が良好な場所でもう一度お試しください。問題が解決しない場合は、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9006 をお伝えください。"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"エラー"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"エラーが発生しました。しばらくしてからもう一度お試しください。問題が解決しない場合は、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9007 をお伝えください。"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"エラー"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"エラーが発生しました。しばらくしてからもう一度お試しください。問題が解決しない場合は、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9008 をお伝えください。"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"エラー"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"サービスの設定中にエラーが発生しました。しばらくしてからもう一度お試しください。問題が解決しない場合は、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9009 をお伝えください。"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"ボイスメール ボックスに接続できません"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"ボイスメール ボックスに接続できません。しばらくしてからもう一度お試しください。問題が解決しない場合は、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9990 をお伝えください。"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"ボイスメールの設定"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"アカウントでボイスメールが設定されていません。カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9991 をお伝えください。"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"ボイスメール"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"ご利用の端末ではビジュアル ボイスメールをご利用いただけません。カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9992 をお伝えください。"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"エラー"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9993 をお伝えください。"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"ビジュアル ボイスメール"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"ビジュアル ボイスメールの設定を完了するには、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9994 をお伝えください。"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"ビジュアル ボイスメール"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"ビジュアル ボイスメールの設定を完了するには、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9995 をお伝えください。"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"ビジュアル ボイスメール"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"ビジュアル ボイスメールを有効にするには、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9996 をお伝えください。"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"エラー"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"ビジュアル ボイスメールの設定を完了するには、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9998 をお伝えください。"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"ビジュアル ボイスメールが無効になっています"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"ビジュアル ボイスメールを有効にするには、カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡ください。"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"エラー"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9997 をお伝えください。"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"エラー"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9989 をお伝えください。"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"エラー"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"カスタマー サービス（<xliff:g id="NUMBER">%1$s</xliff:g>）にご連絡いただき、エラーコード 9999 をお伝えください。"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"ビジュアル ボイスメールを ON にする"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nビジュアル ボイスメールを ON にすると、Verizon Wireless の利用規約にご同意いただいたものとみなされます。\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"ビジュアル ボイスメールを ON にする"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"ボイスメール宛に通話を発信しなくても、メッセージを表示して再生することができます。ボイスメールは、Google の無料の音声文字変換サービスで文字に変換されます。%s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"ボイスメール宛に通話を発信しなくても、メッセージを表示して再生できます。%s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"詳細"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"利用規約に同意いただけない場合は、ビジュアル ボイスメールが無効となります。"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"ビジュアル ボイスメールを無効にする"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"利用規約に同意いただけない場合は、ボイスメールの音声文字変換が無効になります。"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"ボイスメールの音声文字変換を無効にする"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"*86 への発信によってのみ、ボイスメールにアクセスできます。続行するには、新しいボイスメール PIN を設定してください。"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN の設定"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ka/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ka/strings.xml
deleted file mode 100644
index 3872907..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ka/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"ვიზუალური ხმოვანი ფოსტა აქტიურდება"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"ვიზუალური ხმოვანი ფოსტის სრულად გააქტიურებამდე შეიძლება ხმოვანი ფოსტის შეტყობინებები არ მიიღოთ. დარეკეთ ხმოვან ფოსტაში, რათა მიიღოთ ახალი შეტყობინებები ხმოვანი ფოსტის ბოლომდე გააქტიურებამდე."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"ვიზუალური ხმოვანი ფოსტის გააქტიურება შეუძლებელია"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"დარწმუნდით, რომ თქვენს ტელეფონს აქვს მობილურ ქსელთან კავშირი და სცადეთ ხელახლა."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"გამორთეთ თვითმფრინავის რეჟიმი და სცადეთ ხელახლა."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"კავშირი არ არის"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"ახალი ხმოვანი ფოსტის შესახებ შეტყობინებას არ მიიღებთ. თუ იყენებთ Wi-Fi-ს, შეგიძლიათ შეამოწმოთ ხმოვანი ფოსტა ახლავე სინქრონიზაციის მეშვეობით."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"ახალი ხმოვანი ფოსტის შესახებ არ გეცნობებათ. გამორთეთ თვითმფრინავის რეჟიმი ხმოვანი ფოსტის სინქრონიზაციისთვის."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"ხმოვანი ფოსტის შესამოწმებლად თქვენი ტელეფონი საჭიროებს მობილურ ინტერნეტთან კავშირს."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"ვიზუალური ხმოვანი ფოსტის გააქტიურება შეუძლებელია"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"ხმოვანი ფოსტის შესამოწმებლად დარეკვა მაინც შეგიძლიათ."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"ვიზუალური ხმოვანი ფოსტის განახლება შეუძლებელია"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"სცადეთ ხელახლა, როდესაც Wi‑Fi ან მობილურ ინტერნეტთან კავშირი გაუმჯობესდება. ხმოვანი ფოსტის შესამოწმებლად დარეკვა ახლაც შეგიძლიათ."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"სცადეთ ხელახლა, როდესაც მობილურ ინტერნეტთან კავშირი გაუმჯობესდება. ხმოვანი ფოსტის შესამოწმებლად დარეკვა ახლაც შეგიძლიათ."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"ვიზუალური ხმოვანი ფოსტის განახლება შეუძლებელია"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"ხმოვანი ფოსტის შესამოწმებლად დარეკვა მაინც შეგიძლიათ."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"ვიზუალური ხმოვანი ფოსტის განახლება შეუძლებელია"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"ხმოვანი ფოსტის შესამოწმებლად დარეკვა მაინც შეგიძლიათ."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"ვიზუალური ხმოვანი ფოსტის განახლება შეუძლებელია"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"ხმოვანი ფოსტის შესამოწმებლად დარეკვა მაინც შეგიძლიათ."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"ვიზუალური ხმოვანი ფოსტის განახლება შეუძლებელია"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"ხმოვანი ფოსტის შესამოწმებლად დარეკვა მაინც შეგიძლიათ."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"შემოსულები თითქმის სავსეა"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"თუ თქვენი შემოსულები სავსეა, ახალ ხმოვან ფოსტას ვერ მიიღებთ."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"ახალი ხმოვანი ფოსტის მიღება შეუძლებელია"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"თქვენი შემოსულები სავსეა. ახალი ხმოვანი ფოსტის მისაღებად სცადეთ რამდენიმე შეტყობინების წაშლა."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"დამატებითი მეხსიერების ჩართვა და სარეზერვო ასლების შექმნა"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"თქვენი საფოსტო ყუთი სავსეა. ადგილის გასათავისუფლებლად ჩართეთ დამატებითი მეხსიერება, რათა Google-მა შეძლოს თქვენი ხმოვანი ფოსტის შეტყობინებების მართვა და სარეზერვო ასლების შექმნა."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"დამატებითი მეხსიერების ჩართვა და სარეზერვო ასლების შექმნა"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"თქვენი საფოსტო ყუთი თითქმის სავსეა. ადგილის გასათავისუფლებლად ჩართეთ დამატებითი მეხსიერება, რათა Google-მა შეძლოს თქვენი ხმოვანი ფოსტის შეტყობინებების მართვა და სარეზერვო ასლების შექმნა."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"დააყენეთ თქვენი ხმოვანი ფოსტის PIN-კოდი"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ნებისმიერ დროს, როდესაც დარეკავთ, რათა ხმოვან ფოსტაზე წვდომა იქონიოთ, ხმოვანი ფოსტის PIN-კოდი დაგჭირდებათ."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"თვითმფრინავის რეჟიმის პარამეტრები"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"დააყენეთ PIN-კოდი"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"ხელახლა ცდა"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"ჩართვა"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"არა, გმადლობთ"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"სინქრონიზაცია"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"ხმოვან ფოსტაში დარეკვა"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"კლიენტთა მხარდაჭერის ცენტრში დარეკვა"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"მოხდა რაღაც შეცდომა"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"უკაცრავად, წარმოიშვა პრობლემა. გთხოვთ, სცადოთ ხელახლა მოგვიანებით. თუ პრობლემა არ გამოსწორდება, გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"მოხდა რაღაც შეცდომა"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"უკაცრავად, წარმოიშვა პრობლემა. გთხოვთ, სცადოთ ხელახლა მოგვიანებით. თუ პრობლემა არ გამოსწორდება, გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"მოხდა რაღაც შეცდომა"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"უკაცრავად, წარმოიშვა პრობლემა. გთხოვთ, სცადოთ ხელახლა მოგვიანებით. თუ პრობლემა არ გამოსწორდება, გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"თქვენს ხმოვან საფოსტო ყუთთან დაკავშირება ვერ ხერხდება"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"უკაცრავად, თქვენს ხმოვან საფოსტო ყუთთან დაკავშირებას ვერ ვახერხებთ. გთხოვთ, სცადოთ ხელახლა მოგვიანებით. თუ ხართ ისეთ ადგილას, სადაც სუსტი სიგნალია, დაელოდეთ ძლიერ სიგნალს და სცადეთ ხელახლა. თუ პრობლემა არ გამოსწორდება, გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"თქვენს ხმოვან საფოსტო ყუთთან დაკავშირება ვერ ხერხდება"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"უკაცრავად, თქვენს ხმოვან საფოსტო ყუთთან დაკავშირებას ვერ ვახერხებთ. გთხოვთ, სცადოთ ხელახლა მოგვიანებით. თუ ხართ ისეთ ადგილას, სადაც სუსტი სიგნალია, დაელოდეთ ძლიერ სიგნალს და სცადეთ ხელახლა. თუ პრობლემა არ გამოსწორდება, გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"თქვენს ხმოვან საფოსტო ყუთთან დაკავშირება ვერ ხერხდება"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"უკაცრავად, თქვენს ხმოვან საფოსტო ყუთთან დაკავშირებას ვერ ვახერხებთ. გთხოვთ, სცადოთ ხელახლა მოგვიანებით. თუ ხართ ისეთ ადგილას, სადაც სუსტი სიგნალია, დაელოდეთ ძლიერ სიგნალს და სცადეთ ხელახლა. თუ პრობლემა არ გამოსწორდება, გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"მოხდა რაღაც შეცდომა"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"უკაცრავად, წარმოიშვა პრობლემა. გთხოვთ, სცადოთ ხელახლა მოგვიანებით. თუ პრობლემა არ გამოსწორდება, გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"მოხდა რაღაც შეცდომა"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"უკაცრავად, წარმოიშვა პრობლემა. გთხოვთ, სცადოთ ხელახლა მოგვიანებით. თუ პრობლემა არ გამოსწორდება, გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"მოხდა რაღაც შეცდომა"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"<xliff:g id="NUMBER">%1$s</xliff:g>უკაცრავად, თქვენი სერვისის დაყენებას ვერ ვახერხებთ. გთხოვთ, სცადოთ ხელახლა მოგვიანებით. თუ პრობლემა არ გამოსწორდება, გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე  და უთხრათ, რომ შეცდომის კოდია 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"თქვენს ხმოვან საფოსტო ყუთთან დაკავშირება ვერ ხერხდება"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"უკაცრავად, ამჯერად თქვენს ხმოვან საფოსტო ყუთს ვერ ვუკავშირდებით. გთხოვთ, სცადოთ ხელახლა მოგვიანებით. თუ პრობლემა არ გამოსწორდება, გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"ხმოვანი ფოსტის დაყენება"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"თქვენს ანგარიშზე ხმოვანი ფოსტა დაყენებული არ არის. გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"ხმოვანი ფოსტა"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"ამ მოწყობილობაზე ვიზუალური ხმოვანი ფოსტის გამოყენება შეუძლებელია. გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"მოხდა რაღაც შეცდომა"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"ვიზუალური ხმოვანი ფოსტა"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"ვიზუალური ხმოვანი ფოსტის დაყენების დასასრულებლად გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"ვიზუალური ხმოვანი ფოსტა"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"ვიზუალური ხმოვანი ფოსტის დაყენების დასასრულებლად გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"ვიზუალური ხმოვანი ფოსტა"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"ვიზუალური ხმოვანი ფოსტის გასააქტიურებლად გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"მოხდა რაღაც შეცდომა"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"ვიზუალური ხმოვანი ფოსტის დაყენების დასასრულებლად გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"ვიზუალური ხმოვანი ფოსტა გათიშულია"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g>, რათა გაააქტიუროთ ხმოვანი ფოსტა."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"მოხდა რაღაც შეცდომა"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"მოხდა რაღაც შეცდომა"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"მოხდა რაღაც შეცდომა"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"გთხოვთ, დაუკავშირდეთ კლიენტთა მხარდაჭერის ცენტრს ნომერზე <xliff:g id="NUMBER">%1$s</xliff:g> და უთხრათ, რომ შეცდომის კოდია 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"ვიზუალური ხმოვანი ფოსტის ჩართვა"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nვიზუალური ხმოვანი ფოსტის ჩართვით თქვენ ეთანხმებით Verizon Wireless-ის მომსახურების პირობებს:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"ვიზუალური ხმოვანი ფოსტის ჩართვა"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"იხილეთ და მოისმინეთ თქვენი შეტყობინებები ხმოვან ფოსტაში დარეკვის გარეშე. თქვენი ხმოვანი ფოსტის ტრანსკრიპტებს გაწვდით Google-ის უფასო ტრანსკრიბირების სერვისი. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"იხილეთ და მოისმინეთ თქვენი შეტყობინებები ხმოვან ფოსტაში დარეკვის გარეშე. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"შეიტყვეთ მეტი"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"თუ მომსახურების პირობებს უარყოფთ, ვიზუალური ხმოვანი ფოსტა გამოირთვება."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"ვიზუალური ხმოვანი ფოსტის გამორთვა"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"მომსახურების პირობების უარყოფის შემთხვევაში ხმოვანი ფოსტის ტრანსკრიბირება გამოირთვება."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"ხმოვანი ფოსტის ტრანსკრიბირების გამორთვა"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"ხმოვანი ფოსტა ხელმისაწვდომი იქნება მხოლოდ *86-ზე დარეკვით. გასაგრძელებლად დააყენეთ ხმოვანი ფოსტის ახალი PIN-კოდი."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"დააყენეთ PIN-კოდი"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-kk/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-kk/strings.xml
deleted file mode 100644
index b99542a..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-kk/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Визуалды дауыстық хабарды іске қосу"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Визуалды дауыстық пошта толығымен белсендірілгенше, дауыстық пошта хабарландыруларын қабылдай алмайсыз. Дауыстық пошта толығымен белсендірілгенше, жаңа хабарлар шығарып алу үшін дауыстық поштаға қоңырау шалыңыз."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Визуалды дауыстық хабарды іске қосу мүмкін болмады"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Телефоныңыздың мобильдік байланысын тексеріп, әрекетті қайталаңыз."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Ұшақ режимін өшіріп, әрекетті қайталаңыз."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Байланыс жоқ"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Сізге жаңа дауыстық хабарлар туралы ескерту жіберілмейді. Егер Wi-Fi байланысын қолдансаңыз, қазір синхрондап, дауыстық хабарларды қазір тексеруіңізге болады."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Жаңа дауыстық хабарлар туралы сізге хабарланбайды. Дауыстық хабарды синхрондау үшін ұшақ режимін өшіріңіз."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Дауыстық хабарларды тексеру үшін телефоныңызда мобильдік байланыс болуы керек."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Визуалды дауыстық хабарды іске қосу мүмкін болмады"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Дауыстық хабарды тексеру үшін қоңырау шалуыңызға болады."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Визуалды дауыстық хабарды жаңарту мүмкін болмады."</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Wi-Fi немесе мобильдік байланыс жақсарғанда қайталап көріңіз. Дауыстық хабарды тексеру үшін қоңырау шалуыңызға болады."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Мобильдік байланыс жақсарғанда қайталап көріңіз. Дауыстық хабарды тексеру үшін қоңырау шалуыңызға болады."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Визуалды дауыстық хабарды жаңарту мүмкін болмады"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Дауыстық хабарды тексеру үшін қоңырау шалуыңызға болады."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Визуалды дауыстық хабарды жаңарту мүмкін болмады"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Дауыстық хабарды тексеру үшін қоңырау шалуыңызға болады."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Визуалды дауыстық хабарды жаңарту мүмкін болмады"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Дауыстық хабарды тексеру үшін қоңырау шалуыңызға болады."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Визуалды дауыстық хабарды жаңарту мүмкін болмады"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Дауыстық хабарды тексеру үшін қоңырау шалуыңызға болады."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Кіріс қалтасы толуға жақын"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Кіріс қалтасы толы болса, жаңа дауыстық хабар ала алмайсыз."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Жаңа дауыстық хабарды алу мүмкін емес"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Кіріс қалтасы толы. Жаңа дауыстық хабарды алу үшін кейбір хабарларды жойып көріңіз."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Қосымша жадты қосып, сақтық көшірме жасау"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Кіріс жәшігі толы. Орын босату үшін, қосымша жад функциясын қосып, Google-ға дауыстық хабарларыңызды басқарып, сақтық көшірмесін жасауға рұқсат беріңіз."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Қосымша жадты қосып, сақтық көшірме жасау"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Кіріс жәшігі толы. Орын босату үшін, қосымша жад функциясын қосып, Google-ға дауыстық хабарларыңызды басқарып, сақтық көшірмесін жасауға рұқсат беріңіз."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Дауыстық пошта PIN кодын орнатыңыз"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Дауыстық поштаны тыңдау үшін кез келген уақытта қоңырау шалғанда, дауыстық пошта PIN коды сұралады."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Ұшақ режимінің параметрлері"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN кодын орнату"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Әрекетті қайталау"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Қосу"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Жоқ, рақмет"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Синхрондау"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Дауыстық поштаға қоңырау шалу"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Тұтынушыларға қолдау көрсету орталығына қоңырау шалу"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Бірдеңе дұрыс болмады"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Кешіріңіз, ақаулық орын алды. Әрекетті кейінірек қайталаңыз. Егер әлі де ақаулық болса, тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9001 екенін айтыңыз."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Бірдеңе дұрыс болмады"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Кешіріңіз, ақаулық орын алды. Әрекетті кейінірек қайталаңыз. Егер әлі де ақаулық болса, тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9002 екенін айтыңыз."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Бірдеңе дұрыс болмады"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Кешіріңіз, ақаулық орын алды. Әрекетті кейінірек қайталаңыз. Егер әлі де ақаулық болса, тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9003 екенін айтыңыз."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Дауыстық пошта жәшігіне қосылмайды"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Кешіріңіз, дауыстық пошта жәшігіңізге қосылу кезінде қиындық туындап жатыр. Егер сигнал күші нашар аймақта болсаңыз, сигнал күшті болғанша күтіңіз және әрекетті қайталаңыз. Егер әлі де ақаулық болса, тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9004 екенін айтыңыз."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Дауыстық пошта жәшігіне қосылмайды"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Кешіріңіз, дауыстық пошта жәшігіңізге қосылу кезінде қиындық туындап жатыр. Егер сигнал күші нашар аймақта болсаңыз, сигнал күшті болғанша күтіңіз және әрекетті қайталаңыз. Егер әлі де ақаулық болса, тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9005 екенін айтыңыз."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Дауыстық пошта жәшігіне қосылмайды"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Кешіріңіз, дауыстық пошта жәшігіңізге қосылу кезінде қиындық туындап жатыр. Егер сигнал күші нашар аймақта болсаңыз, сигнал күшті болғанша күтіңіз және әрекетті қайталаңыз. Егер әлі де ақаулық болса, тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9006 екенін айтыңыз."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Бірдеңе дұрыс болмады"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Кешіріңіз, ақаулық орын алды. Әрекетті кейінірек қайталаңыз. Егер әлі де ақаулық болса, тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9007 екенін айтыңыз."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Бірдеңе дұрыс болмады"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Кешіріңіз, ақаулық орын алды. Әрекетті кейінірек қайталаңыз. Егер әлі де ақаулық болса, тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9008 екенін айтыңыз."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Бірдеңе дұрыс болмады"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Кешіріңіз, қызметіңізді орнату ақаулығы орын алды. Егер әлі де ақаулық болса, тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9009 екенін айтыңыз."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Дауыстық пошта жәшігіне қосылмайды"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Кешіріңіз, бұл уақытта дауыстық поштаңызға қосыла алмаймыз. Егер әлі де ақаулық болса, тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9990 екенін айтыңыз."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Дауыстық хабар поштасын орнату"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Тіркелгіңізде дауыстық пошта орнатылмаған. Тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9991 екенін айтыңыз."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Дауыстық хабар"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Бұл құрылғыда визуалды дауыстық хабар қолданылмайды. <xliff:g id="NUMBER">%1$s</xliff:g> нөмірі бойынша тұтынушыларға қызмет көрсету орталығына хабарласып, қате коды 9992 екенін айтыңыз."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Бірдеңе дұрыс болмады"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9993 екенін айтыңыз."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Визуалды дауыстық хабар"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Визуалды дауыстық хабар поштасын орнатуды аяқтау үшін, <xliff:g id="NUMBER">%1$s</xliff:g> нөмірі бойынша тұтынушыларға қызмет көрсету орталығына  хабарласып, қате коды 9994 екенін айтыңыз."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Визуалды дауыстық хабар"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Визуалды дауыстық хабар поштасын орнатуды аяқтау үшін, <xliff:g id="NUMBER">%1$s</xliff:g> нөмірі бойынша тұтынушыларға қызмет көрсету орталығына  хабарласып, қате коды 9995 екенін айтыңыз."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Визуалды дауыстық хабар"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Визуалды дауыстық хабар поштасын қосу үшін, <xliff:g id="NUMBER">%1$s</xliff:g> нөмірі бойынша тұтынушыларға қызмет көрсету орталығына хабарласып, қате коды 9996 екенін айтыңыз."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Бірдеңе дұрыс болмады"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Визуалды дауыстық пошта орнатуды аяқтау үшін, <xliff:g id="NUMBER">%1$s</xliff:g> нөмірі бойынша тұтынушыларға қызмет көрсету орталығына хабарласып, қате коды 9998 екенін айтыңыз."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Визуалды дауыстық пошта өшірулі"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Визуалды дауыстық пошта белсендіру үшін тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Бірдеңе дұрыс болмады"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9997 екенін айтыңыз."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Бірдеңе дұрыс болмады"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9989 екенін айтыңыз."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Бірдеңе дұрыс болмады"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Тұтынушыларға қызмет көрсету орталығына <xliff:g id="NUMBER">%1$s</xliff:g> бойынша хабарласыңыз және қате коды 9999 екенін айтыңыз."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Визуалды дауыстық хабар поштасын қосу"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nВизуалды дауыстық хабар поштасын қолдану арқылы Verizon Wireless шарттарын қабылдайсыз:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Визуалды дауыстық хабар поштасын қосу"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Хабарларды дауыстық хабар қызметіне қоңырау шалмай-ақ көру және есту мүмкіндігі. Дауыстық хабар транскриптілерін Google-дың тегін транскрипция қызметі жасайды. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Хабарларды дауыстық хабар қызметіне қоңырау шалмай-ақ көру және есту мүмкіндігі. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Қосымша мәліметтер"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Шарттары мен талаптары қабылданбаса, визуалды дауыстық хабар функциясы өшіріледі."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Визуалды дауыстық хабар функциясын өшіру"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Шарттары мен талаптары қабылданбаса, визуалды дауыстық хабар транскрипциясы өшіріледі."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Дауыстық хабар транскрипциясын өшіру"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Дауыстық хабарлар поштасына кіру *86 нөміріне қоңырау шалғанда ғана мүмкін болады. Жалғастыру үшін жаңа PIN кодын тағайындаңыз."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN кодын тағайындау"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-km/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-km/strings.xml
deleted file mode 100644
index 28b40b8..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-km/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"ធ្វើ​ឲ្យ​សកម្ម​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"អ្នក​ប្រហែលជា​​មិន​ទទួល​បាន​ការ​ជូនដំណឹង​ជា​សារ​សំឡេង​រហូត​​ទាល់តែ​ធ្វើ​ឲ្យ​សកម្ម​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ​ពេញលេញ​​។ ហៅ​ជា​សារ​សំឡេង​ដើម្បី​​ទទួល​បាន​សារ​ថ្មី​រហូត​សារ​ជា​សំឡេង​ត្រូវ​បាន​ធ្វើ​ឲ្យ​សកម្ម​ពេញលេញ។"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"មិន​អាច​ធ្វើ​ឲ្យ​សកម្ម​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ​បាន​ទេ"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"សូមប្រាកដ​ថា ទូរសព្ទ​របស់​អ្នក​មាន​ភ្ជាប់​បណ្ដាញ​ទូរសព្ទ​ចល័ត រួច​ព្យាយាម​ម្ដង​ទៀត។"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"បិទ​របៀប​លើ​យន្តហោះ និង​ព្យាយាម​ម្ដង​ទៀត។"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"គ្មាន​បណ្ដាញ​អ៊ីនធឺណិត"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"អ្នក​នឹង​មិន​ទទួល​បាន​ការជូនដំណឹង នៅពេល​មាន​សារ​ជា​សំឡេង​ថ្មី​ទេ។ បើ​អ្នក​​ភ្ជាប់​ទៅ Wi-Fi អ្នក​អាច​ពិនិត្យមើល​​សារ​ជា​សំឡេង​ដោយ​ធ្វើ​សមកាលកម្ម​ឥឡូវ​នេះ។"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"ពេល​មាន​សារ​ជា​សំឡេង​ថ្មី​នឹង​មិន​ជូន​ដំណឹង​ទៅ​អ្នក​ឡើយ។ សូម​បិទ​របៀប​លើ​យន្តហោះ​ដើម្បី​ទាញយក​សារ​សំឡេង​របស់​អ្នក។"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"ទូរសព្ទ​របស់​អ្នក​ត្រូវ​​ភ្ជាប់​អ៊ីនធឺណិតតាម​ទិន្នន័យ​ទូរសព្ទ​​​ចល័ត​ ដើម្បី​អាច​ពិនិត្យ​មើល​សារ​​ជា​សំឡេង​បាន​។"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"មិន​អាច​ធ្វើ​ឲ្យ​សកម្ម​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ​បាន​ទេ"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"អ្នក​នៅ​តែ​អាច​ហៅ​​ទូរសព្ទ​ដើម្បី​ស្ដាប់​សារ​ជា​សំឡេង។"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"មិន​អាច​ធ្វើ​បច្ចុប្បន្នភាព​សារ​​ជា​សំឡេង​ដែល​មើល​ឃើញ​បាន​​​ទេ។"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"សូមព្យាយាម​ម្ដង​ទៀត នៅពេលការតភ្ជាប់ Wi-Fi ឬ​​​ទិន្នន័យ​​ទូរសព្ទ​ចល័តរបស់អ្នក​បានប្រសើរឡើង។ អ្នក​នៅ​តែ​អាច​ហៅ​ទូរសព្ទ​ ដើម្បី​​ពិនិត្យមើល​សារ​ជា​សំឡេង​​បាន។"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"សូមព្យាយាម​ម្ដង​ទៀត នៅពេល​​​​ការតភ្ជាប់​ទិន្នន័យ​​ទូរសព្ទ​ចល័តរបស់អ្នកបាន​ប្រសើរឡើង។ អ្នក​នៅ​តែ​អាច​ហៅ​ទូរសព្ទ​ ដើម្បី​​ពិនិត្យមើលសារ​ជា​សំឡេង​បាន។"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"មិន​អាច​ធ្វើ​បច្ចុប្បន្នភាព​សារ​​ជា​សំឡេង​ដែល​មើល​ឃើញ​​បាន​ទេ។"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"អ្នក​នៅ​តែ​អាច​ហៅ​​ទូរសព្ទ​ដើម្បី​ស្ដាប់​សារ​ជា​សំឡេង។"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"មិន​អាច​ធ្វើ​បច្ចុប្បន្នភាព​សារ​​ជា​សំឡេង​ដែល​មើល​ឃើញ​បាន​​​ទេ។"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"អ្នក​នៅ​តែ​អាច​ហៅ​​ទូរសព្ទ​ដើម្បី​ស្ដាប់​សារ​ជា​សំឡេង។"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"មិន​អាច​ធ្វើ​បច្ចុប្បន្នភាព​សារ​​ជា​សំឡេង​ដែល​មើល​ឃើញ​បាន​​​ទេ។"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"អ្នក​នៅ​តែ​អាច​ហៅ​​ទូរសព្ទ​ដើម្បី​ស្ដាប់​សារ​ជា​សំឡេង។"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"មិន​អាច​ធ្វើ​បច្ចុប្បន្នភាព​សារ​​ជា​សំឡេង​ដែល​មើល​ឃើញ​បាន​​​ទេ។"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"អ្នក​នៅ​តែ​អាច​ហៅ​​ទូរសព្ទ​ដើម្បី​ស្ដាប់​សារ​ជា​សំឡេង។"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"ប្រអប់​សំបុត្រ​ជិត​ពេញ"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"អ្នក​នឹង​មិន​អាច​ទទួល​សារ​ជា​សំឡេង​ថ្មី​បាន​ទេ បើ​ប្រអប់​សំបុត្រ​របស់​អ្នក​ពេញ។"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"មិនអាចទទួល​សារជា​សំឡេង​ថ្មី​បាន​ទេ"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"ប្រអប់សំបុត្ររបស់អ្នកពេញ។ សូមព្យាយាមលុបសារមួយចំនួនដើម្បី​អាច​ទទួល​សារជាសំឡេងថ្មី​បាន។"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"បើក​ទំហំ​ផ្ទុក​បន្ថែម រួច​បម្រុងទុក"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"ប្រអប់​​សារ​​របស់​អ្នក​ពេញហើយ។ ដើម្បី​បង្កើន​ទំហំ​ផ្ទុក​ទំនេរ សូម​បើក​ទំហំផ្ទុក​បន្ថែម ដើម្បី​ឲ្យ Google អាច​គ្រប់គ្រង និង​បម្រុងទុក​សារ​សារ​ជា​សំឡេង​របស់​អ្នក​បាន។"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"បើក​ទំហំ​ផ្ទុក​បន្ថែម រួច​បម្រុងទុក"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"ប្រអប់​សារ​របស់​អ្នក​ពេញហើយ។ ដើម្បី​បង្កើន​ទំហំ​ផ្ទុក​ទំនេរ សូម​បើក​ទំហំផ្ទុក​បន្ថែម ដើម្បី​ឲ្យ Google អាច​គ្រប់គ្រង និង​បម្រុងទុក​សារ​សារ​ជា​សំឡេង​របស់​អ្នក​បាន។"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"កំណត់កូដ PIN ​សារ​ជាសំឡេង​របស់​អ្នក"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"អ្នក​នឹង​ត្រូវការកូដ PIN សារ​ជាសំឡេងមួយ ​គ្រប់​ពេល​ដែល​អ្នក​ហៅ ​​ដើម្បី​ចូល​ដំណើរការ​សារ​ជា​សំឡេង​របស់​អ្នក។"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"ការ​កំណត់​របៀប​​ពេល​ជិះ​យន្តហោះ"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"កំណត់​កូដ PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"ព្យាយាម​ម្តង​ទៀត"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"បើក"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"ទេ​ អរគុណ"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"ធ្វើ​សមកាលកម្ម"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"ហៅ​ជា​សារ​សំឡេង"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"ហៅ​​ជំនួយ​អតិថិជន"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"មានអ្វីមួយមិនប្រក្រតី"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"សូម​ទោស យើង​ជួបប្រទះ​បញ្ហា​ហើយ។ សូម​ព្យាយាម​ម្ដង​ទៀត​ពេលក្រោយ។ បើ​​នៅ​តែ​មាន​បញ្ហា សូម​ទាក់ទង​ផ្នែក​បម្រើសេវា​​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​​​កូដ​​មាន​បញ្ហា គឺ 9001។"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"មានអ្វីមួយមិនប្រក្រតី"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"សូម​ទោស យើង​ជួបប្រទះ​បញ្ហា​ហើយ។ សូម​ព្យាយាម​ម្ដង​ទៀត​ពេលក្រោយ។ បើ​​នៅ​តែ​មាន​បញ្ហា សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​ម​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​​​កូដ​​មាន​បញ្ហា គឺ 9002។"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"មានអ្វីមួយមិនប្រក្រតី"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"សូម​ទោស យើង​ជួបប្រទះ​បញ្ហា​ហើយ។ សូម​ព្យាយាម​ម្ដង​ទៀត​ពេលក្រោយ។ បើ​​នៅ​តែ​មាន​បញ្ហា សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​ម​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​​​កូដ​​មាន​បញ្ហា គឺ 9003។"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"មិន​អាច​ភ្ជាប់​ទៅ​ប្រអប់​សំបុត្រ​សំឡេង​របស់​អ្នក​បាន​ទេ"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"សូម​ទោស យើង​មាន​បញ្ហា​ភ្ជាប់​ទៅ​ប្រអប់​សំបុត្រ​សំឡេង​របស់​អ្នក។ បើ​អ្នក​ស្ថិត​នៅ​តំបន់​ដែល​មាន​សញ្ញា​អ៊ីនធឺណិត​មិន​ល្អ សូម​រង់ចាំ​រហូតដល់​អ្នក​មាន​សេវា​អ៊ីនធឺណិត​ខ្លាំង និង​​ព្យាយាម​ម្ដង​ទៀត។ បើ​​នៅ​តែ​មាន​បញ្ហា​ទៀត សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​កូដ​មាន​បញ្ហា គឺ 9004។"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"មិន​អាច​ភ្ជាប់​ទៅ​ប្រអប់​សំបុត្រ​សំឡេង​របស់​អ្នក​បាន​ទេ"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"សូម​ទោស យើង​មាន​បញ្ហា​ភ្ជាប់​ទៅ​ប្រអប់​សំបុត្រ​សំឡេង​របស់​អ្នក។ បើ​អ្នក​ស្ថិត​នៅ​តំបន់​ដែល​មាន​សញ្ញា​អ៊ីនធឺណិត​មិន​ល្អ សូម​រង់ចាំ​រហូតដល់​អ្នក​មាន​សេវា​អ៊ីនធឺណិត​ខ្លាំង និង​​ព្យាយាម​ម្ដង​ទៀត។ បើ​​នៅ​តែ​មាន​បញ្ហា​ទៀត សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​កូដ​មាន​បញ្ហា គឺ 9005។"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"មិន​អាច​ភ្ជាប់​ទៅ​ប្រអប់​សំបុត្រ​សំឡេង​របស់​អ្នក​បាន​ទេ"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"សូម​ទោស យើង​មាន​បញ្ហា​ភ្ជាប់​ទៅ​ប្រអប់​សំបុត្រ​សំឡេង​របស់​អ្នក។ បើ​អ្នក​ស្ថិត​នៅ​តំបន់​ដែល​មាន​សញ្ញា​អ៊ីនធឺណិត​មិន​ល្អ សូម​រង់ចាំ​រហូតដល់​អ្នក​មាន​សេវា​អ៊ីនធឺណិត​ខ្លាំង និង​​ព្យាយាម​ម្ដង​ទៀត។ បើ​​នៅ​តែ​មាន​បញ្ហា​ទៀត សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​កូដ​មាន​បញ្ហា គឺ 9006។"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"មានអ្វីមួយមិនប្រក្រតី"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"សូម​ទោស យើង​ជួបប្រទះ​បញ្ហា​ហើយ។ សូម​ព្យាយាម​ម្ដង​ទៀត​ពេលក្រោយ។ បើ​​នៅ​តែ​មាន​បញ្ហា សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​ម​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​​​កូដ​​មាន​បញ្ហា គឺ 9007។"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"មានអ្វីមួយមិនប្រក្រតី"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"សូម​ទោស យើង​ជួបប្រទះ​បញ្ហា​ហើយ។ សូម​ព្យាយាម​ម្ដង​ទៀត​ពេលក្រោយ។ បើ​​នៅ​តែ​មាន​បញ្ហា សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​ម​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​​​កូដ​​មាន​បញ្ហា គឺ 9008។"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"មានអ្វីមួយមិនប្រក្រតី"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"សូម​ទោស យើង​មាន​បញ្ហា​រៀបចំ​សេវាកម្ម​របស់​អ្នក។ សូម​ព្យាយាម​ម្ដង​ទៀត​ពេលក្រោយ។ បើ​​នៅ​តែ​មាន​បញ្ហា សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​ម​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​​​កូដ​​មាន​បញ្ហា គឺ 9009។"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"មិន​អាច​ភ្ជាប់​ទៅ​ប្រអប់​សំបុត្រ​សំឡេង​របស់​អ្នក​បាន​ទេ"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"សូម​ទោស យើង​មាន​បញ្ហា​ភ្ជាប់​ទៅ​ប្រអប់​សំបុត្រ​សំឡេង​របស់​អ្នក។ សូម​ព្យាយាម​ម្ដង​ទៀត​ពេលក្រោយ។ បើ​​នៅ​តែ​មាន​បញ្ហា សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​ម​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​​​កូដ​​មាន​បញ្ហា គឺ 9990។"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"រៀបចំ​សារ​ជា​សំឡេង"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"សារ​ជា​សំឡេង​មិន​បាន​រៀបចំ​នៅ​លើ​គណនី​របស់​អ្នក​ទេ។ សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​កូដ​មាន​បញ្ហា គឺ 9991។"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"សារ​ជា​សំឡេង"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ​មិន​អាច​ប្រើ​នៅ​លើ​ឧបករណ៍​នេះ​បាន​ទេ។ សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួក​គេ​ថា លេខ​កូដ​មាន​បញ្ហា​គឺ 9992។"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"មានអ្វីមួយមិនប្រក្រតី"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​កូដ​មាន​បញ្ហា គឺ 9993។"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"ដើម្បី​បញ្ចប់​ការ​រៀបចំ​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួក​គេ​ថា លេខ​កូដ​មាន​បញ្ហា​គឺ 9994។"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"ដើម្បី​បញ្ចប់​ការ​រៀបចំ​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​​ថា លេខ​កូដ​មាន​បញ្ហា​គឺ 9995។"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"ដើម្បី​បើក​ដំណើរការ​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​ថា លេខ​កូដ​មាន​បញ្ហា​គឺ 9996។"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"មានអ្វីមួយមិនប្រក្រតី"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"ដើម្បី​បញ្ចប់​ការ​រៀបចំ​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួក​គេ​ថា លេខ​កូដ​មាន​បញ្ហា​គឺ 9998។"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ​ត្រូវ​បាន​បិទ"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> ដើម្បី​ធ្វើ​ឲ្យ​សកម្ម​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ។"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"មានអ្វីមួយមិនប្រក្រតី"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​កូដ​មាន​បញ្ហា គឺ 9997។"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"មានអ្វីមួយមិនប្រក្រតី"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​កូដ​មាន​បញ្ហា គឺ 9989។"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"មានអ្វីមួយមិនប្រក្រតី"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"សូម​ទាក់ទង​ផ្នែក​បម្រើ​សេវា​អតិថិជន​តាមរយៈ <xliff:g id="NUMBER">%1$s</xliff:g> និង​ប្រាប់​ពួកគេ​កូដ​មាន​បញ្ហា គឺ 9999។"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"បើក​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nតាម​រយៈ​ការបើក​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ មាន​ន័យ​ថា អ្នក​យល់​ស្រប​នឹង​លក្ខខណ្ឌ​របស់ Verizon Wireless៖ \n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"បើក​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"មើល និង​ស្ដាប់​សារ​របស់​អ្នក ដោយ​មិន​ចាំបាច់​ហៅ​សារ​ជា​សំឡេង។ ប្រតិចារឹក​នៃ​សារ​ជា​សំឡេង​របស់​អ្នក​ត្រូវ​បាន​ផ្ដល់​ដោយ​សេវាកម្ម​ប្រតិចារឹក​ឥត​គិត​ថ្លៃ​របស់ Google។ %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"មើល និង​ស្ដាប់​សារ​របស់​អ្នក ដោយ​មិន​ចាំបាច់​ហៅ​សារ​ជា​សំឡេង។ %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"ស្វែង​យល់​បន្ថែម"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"សារ​ជា​សំឡេង​ដែល​​មើល​ឃើញ​នឹង​ត្រូវ​បាន​បិទ បើ​លក្ខខណ្ឌ​ប្រើប្រាស់​ត្រូវ​បាន​បដិសេធ។"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"បិទសារជាសំឡេងដែលមើលឃើញ"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"ការធ្វើ​ប្រតិចារឹក​សារ​ជាសំឡេង​នឹង​ត្រូវ​បិទ ប្រសិនបើ​គោលការណ៍ និង​លក្ខខណ្ឌ​ត្រូវបាន​បដិសេធ។"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"បិទ​ការធ្វើ​ប្រតិចារឹក​សារ​ជា​សំឡេង"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"សារ​ជា​សំឡេង​នឹង​អាច​ចូល​ស្ដាប់​បាន​​ដោយ​ហៅ​ទៅ *86។ កំណត់​កូដ PIN នៃ​សារ​ជា​សំឡេង​ថ្មី ដើម្បី​ចាប់ផ្ដើម​ដំណើរការ។"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"កំណត់​កូដ PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-kn/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-kn/strings.xml
deleted file mode 100644
index d6376e6..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-kn/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತಿದೆ"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಪೂರ್ಣವಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸುವವರೆಗೂ ನಿಮಗೆ ಧ್ವನಿಮೇಲ್‌ ಅಧಿಸೂಚನೆಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸಾಧ್ಯವಾಗದೇ ಇರಬಹುದು. ಧ್ವನಿಮೇಲ್‌ಗಳು ಪೂರ್ಣವಾಗಿ ಸಕ್ರಿಯವಾಗುವವರೆಗೆ ಹೊಸ ಸಂದೇಶಗಳನ್ನು ಹಿಂಪಡೆಯಲು ಧ್ವನಿಮೇಲ್‌ನಲ್ಲಿ ಕರೆಮಾಡಿ."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"ನಿಮ್ಮ ಫೋನ್‌ ಮೊಬೈಲ್ ಸಂಪರ್ಕವನ್ನು ಹೊಂದಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಹಾಗೂ ನಂತರ ಪ್ರಯತ್ನಿಸಿ."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ ಹಾಗೂ ನಂತರ ಪ್ರಯತ್ನಿಸಿ."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"ಯಾವುದೇ ಸಂಪರ್ಕವಿಲ್ಲ"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"ಹೊಸ ಧ್ವನಿಮೇಲ್‌ಗಳ ಕುರಿತು ನಿಮಗೆ ಸೂಚಿಸಲಾಗುವುದಿಲ್ಲ. ನೀವು ವೈ-ಫೈ ನಲ್ಲಿದ್ದರೆ, ನೀವು ಈಗಲೇ ಸಿಂಕ್ ಮಾಡುವ ಮೂಲಕ ಧ್ವನಿಮೇಲ್‌ ಪರಿಶೀಲಿಸಬಹುದು."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"ಹೊಸ ಧ್ವನಿಮೇಲ್‌ಗಳ ಕುರಿತು ನಿಮಗೆ ಸೂಚಿಸಲಾಗುವುದಿಲ್ಲ. ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್‌ ಸಿಂಕ್ ಮಾಡಲು ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಅನ್ನು ಆಫ್ ಮಾಡಿ."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"ಧ್ವನಿಮೇಲ್‌ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ನಿಮ್ಮ ಫೋನ್‌‌ಗೆ ಮೊಬೈಲ್ ಡೇಟಾ ಸಂಪರ್ಕದ ಅಗತ್ಯವಿದೆ."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"ನೀವು ಧ್ವನಿಮೇಲ್‌ ಪರಿಶೀಲಿಸಲು ಈಗಲೂ ಕರೆ ಮಾಡಬಹುದು."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"ನಿಮ್ಮ ವೈ-ಫೈ ಅಥವಾ ಮೊಬೈಲ್ ಸಂಪರ್ಕವು ಉತ್ತಮವಾದಾಗ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ನೀವು ಧ್ವನಿಮೇಲ್‌ ಪರಿಶೀಲಿಸಲು ಈಗಲೂ ಕರೆ ಮಾಡಬಹುದು."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"ನಿಮ್ಮ ಮೊಬೈಲ್ ಡೇಟಾ ಸಂಪರ್ಕವು ಉತ್ತಮವಾದಾಗ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ನೀವು ಧ್ವನಿಮೇಲ್‌ ಪರಿಶೀಲಿಸಲು ಈಗಲೂ ಕರೆ ಮಾಡಬಹುದು."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"ನೀವು ಧ್ವನಿಮೇಲ್‌ ಪರಿಶೀಲಿಸಲು ಈಗಲೂ ಕರೆ ಮಾಡಬಹುದು."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"ನೀವು ಧ್ವನಿಮೇಲ್‌ ಪರಿಶೀಲಿಸಲು ಈಗಲೂ ಕರೆ ಮಾಡಬಹುದು."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"ನೀವು ಧ್ವನಿಮೇಲ್‌ ಪರಿಶೀಲಿಸಲು ಈಗಲೂ ಕರೆ ಮಾಡಬಹುದು."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"ನೀವು ಧ್ವನಿಮೇಲ್‌ ಪರಿಶೀಲಿಸಲು ಈಗಲೂ ಕರೆ ಮಾಡಬಹುದು."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"ಇನ್‌ಬಾಕ್ಸ್‌ ಬಹುತೇಕ ಪೂರ್ಣವಾಗಿದೆ"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"ನಿಮ್ಮ ಇನ್‌ಬಾಕ್ಸ್ ಪೂರ್ಣವಾಗಿದ್ದಾಗ ಹೊಸ ಧ್ವನಿಮೇಲ್‌ ಅನ್ನು ಸ್ವೀಕರಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"ಹೊಸ ಧ್ವನಿಮೇಲ್‌‌ಗಳನ್ನು ಸ್ವೀಕರಿಸಲಾಗುವುದಿಲ್ಲ"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"ನಿಮ್ಮ ಇನ್‌ಬಾಕ್ಸ್‌ ಪೂರ್ಣವಾಗಿದೆ. ಹೊಸ ಧ್ವನಿಮೇಲ್‌ ಸ್ವೀಕರಿಸಲು ಕೆಲವು ಸಂದೇಶಗಳನ್ನು ಅಳಿಸಲು ಪ್ರಯತ್ನಿಸಿ."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಣೆ ಮತ್ತು ಬ್ಯಾಕಪ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"ನಿಮ್ಮ ಮೇಲ್‌ಬಾಕ್ಸ್ ತುಂಬಿದೆ. ಸ್ಥಳಾವಕಾಶವನ್ನು ತೆರವುಗೊಳಿಸಲು, ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹವನ್ನು ಆನ್ ಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ Google ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಸಂದೇಶಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು ಮತ್ತು ಬ್ಯಾಕಪ್ ಮಾಡಬಹುದು."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹಣೆ ಮತ್ತು ಬ್ಯಾಕಪ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"ನಿಮ್ಮ ಮೇಲ್‌ಬಾಕ್ಸ್ ಬಹುತೇಕ ತುಂಬಿದೆ. ಸ್ಥಳಾವಕಾಶವನ್ನು ತೆರವುಗೊಳಿಸಲು, ಹೆಚ್ಚುವರಿ ಸಂಗ್ರಹವನ್ನು ಆನ್ ಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ Google ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಸಂದೇಶಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು ಮತ್ತು ಬ್ಯಾಕಪ್  ಮಾಡಬಹುದು."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಪಿನ್ ಹೊಂದಿಸಿ"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ನೀವು ಕರೆ ಮಾಡಿದಾಗ ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಪ್ರವೇಶಿಸಲು ನಿಮಗೆ ಯಾವಾಗಲೂ ಧ್ವನಿಮೇಲ್‌ ಪಿನ್ ಅಗತ್ಯವಿರುತ್ತದೆ."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"ಪಿನ್ ಹೊಂದಿಸಿ"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"ಆನ್ ಮಾಡಿ"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"ಇಲ್ಲ, ಧನ್ಯವಾದಗಳು"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"ಸಿಂಕ್"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"ಧ್ವನಿಮೇಲ್‌‌ಗೆ ಕರೆ ಮಾಡಿ"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"ಗ್ರಾಹಕ ಬೆಂಬಲಕ್ಕೆ ಕರೆಮಾಡಿ"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"ಕ್ಷಮಿಸಿ, ನಮಗೆ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ. ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ಇನ್ನೂ ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9001 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"ಕ್ಷಮಿಸಿ, ನಮಗೆ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ. ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ಇನ್ನೂ ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9002 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"ಕ್ಷಮಿಸಿ, ನಮಗೆ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ. ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ಇನ್ನೂ ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9003 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"ನಿಮ್ಮ ಧ್ವನಿ ಮೇಲ್‌ಬಾಕ್ಸ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"ಕ್ಷಮಿಸಿ, ನಿಮ್ಮ ಧ್ವನಿ ಮೇಲ್‌ಬಾಕ್ಸ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸುವಲ್ಲಿ ನಮಗೆ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ. ನೀವು ಕಳಪೆ ಸಿಗ್ನಲ್‌ ಸಾಮರ್ಥ್ಯವಿರುವ ಪ್ರದೇಶದಲ್ಲಿದ್ದರೆ ಉತ್ತಮ ಸಿಗ್ನಲ್‌ ಪಡೆದುಕೊಳ್ಳುವವರೆಗೂ ಕಾಯಿರಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ಇನ್ನೂ ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9004 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"ನಿಮ್ಮ ಧ್ವನಿ ಮೇಲ್‌ಬಾಕ್ಸ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"ಕ್ಷಮಿಸಿ, ನಿಮ್ಮ ಧ್ವನಿ ಮೇಲ್‌ಬಾಕ್ಸ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸುವಲ್ಲಿ ನಮಗೆ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ. ನೀವು ಕಳಪೆ ಸಿಗ್ನಲ್‌ ಸಾಮರ್ಥ್ಯವಿರುವ ಪ್ರದೇಶದಲ್ಲಿದ್ದರೆ ಉತ್ತಮ ಸಿಗ್ನಲ್‌ ಹೊಂದುವವರೆಗೂ ಕಾಯಿರಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ಇನ್ನೂ ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಸಂಖ್ಯೆಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9005 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"ನಿಮ್ಮ ಧ್ವನಿ ಮೇಲ್‌ಬಾಕ್ಸ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"ಕ್ಷಮಿಸಿ, ನಿಮ್ಮ ಧ್ವನಿ ಮೇಲ್‌ಬಾಕ್ಸ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸುವಲ್ಲಿ ನಮಗೆ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ. ನೀವು ಕಳಪೆ ಸಿಗ್ನಲ್‌ ಸಾಮರ್ಥ್ಯವಿರುವ ಪ್ರದೇಶದಲ್ಲಿದ್ದರೆ ಉತ್ತಮ ಸಿಗ್ನಲ್‌ ಹೊಂದುವವರೆಗೂ ಕಾಯಿರಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ಇನ್ನೂ ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9006 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"ಕ್ಷಮಿಸಿ, ನಮಗೆ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ. ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ಈ ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9007 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"ಕ್ಷಮಿಸಿ, ನಮಗೆ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ. ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ಈ ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9008 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"ಕ್ಷಮಿಸಿ, ನಿಮ್ಮ ಸೇವೆಯನ್ನು ಹೊಂದಿಸುವಲ್ಲಿ ನಮಗೆ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ, ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ಇನ್ನೂ ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9009 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"ನಿಮ್ಮ ಧ್ವನಿ ಮೇಲ್‌ಬಾಕ್ಸ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"ಕ್ಷಮಿಸಿ, ಈ ಸಮಯದಲ್ಲಿ ನಿಮ್ಮ ಧ್ವನಿ ಮೇಲ್‌ಬಾಕ್ಸ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಲು ನಮಗೆ ಸಾಧ್ಯವಿಲ್ಲ. ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ಇನ್ನೂ ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9990 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"ಧ್ವನಿ ಮೇಲ್ ಹೊಂದಿಸಿ"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"ನಿಮ್ಮ ಖಾತೆಯಲ್ಲಿ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ. ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9991 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"ಧ್ವನಿಮೇಲ್"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"ಈ ಸಾಧನದಲ್ಲಿ ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ. ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9992 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9993 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಸೆಟಪ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು, ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9995 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಸೆಟಪ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು, ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9995 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9996 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಸೆಟಪ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು, ದಯವಿಟ್ಟು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9995 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಸಕ್ರಿಯಗೊಳಿಸಲು ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9997 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9989 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"ಗ್ರಾಹಕ ಸೇವೆ ಸಂಖ್ಯೆ <xliff:g id="NUMBER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು 9999 ದೋಷದ ಕೋಡ್‌ ಅನ್ನು ಅವರಿಗೆ ತಿಳಿಸಿ."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಆನ್ ಮಾಡಿ"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nದೃಶ್ಯ ಧ್ವನಿ ಮೇಲ್ ಆನ್ ಮಾಡುವ ಮೂಲಕ ನೀವು Verizon Wireless ನ ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳಿಗೆಒಪ್ಪುತ್ತೀರಿ:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಆನ್ ಮಾಡಿ"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"ಧ್ವನಿಮೇಲ್‌ಗೆ ಕರೆ ಮಾಡದೆಯೇ ನಿಮ್ಮ ಸಂದೇಶಗಳನ್ನು ನೋಡಿ ಮತ್ತು ಆಲಿಸಿ. ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್‌ನ ಪ್ರತಿಲಿಪಿಗಳನ್ನು Google ನ ಉಚಿತ ಪ್ರತಿಲಿಪಿ ಸೇವೆಯಿಂದ ಒದಗಿಸಲಾಗುತ್ತದೆ. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"ಧ್ವನಿಮೇಲ್‌ಗೆ ಕರೆ ಮಾಡದೆಯೇ ನಿಮ್ಮ ಸಂದೇಶಗಳನ್ನು ನೋಡಿ ಮತ್ತು ಆಲಿಸಿ. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"ನಿಯಮಗಳು ಮತ್ತು ನಿಬಂಧನೆಗಳುಗಳನ್ನು ನಿರಾಕರಿಸಿದಲ್ಲಿ ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"ನಿಯಮಗಳು ಮತ್ತು ನಿಬಂಧನೆಗಳನ್ನು ನಿರಾಕರಿಸಿದಲ್ಲಿ ಧ್ವನಿಮೇಲ್ ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಶನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"ಧ್ವನಿಮೇಲ್ ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಶನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"*86 ಗ ಕರೆ ಮಾಡುವ ಮೂಲಕ ಮಾತ್ರ ಧ್ವನಿಮೇಲ್‌ಗೆ ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯ. ಮುಂದುವರೆಯಲು ಒಂದು ಹೊಸ ಧ್ವನಿಮೇಲ್ ಪಿನ್ ಹೊಂದಿಸಿ."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"ಪಿನ್ ಹೊಂದಿಸಿ"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ko/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ko/strings.xml
deleted file mode 100644
index 82a6f2c..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ko/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"시각적 음성사서함 활성화 중"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"시각적 음성사서함이 완전히 활성화될 때까지 음성사서함 알림을 받지 못할 수 있습니다. 음성사서함이 완전히 활성화될 때까지 음성사서함으로 전화하여 새 메시지를 가져오세요."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"시각적 음성사서함을 활성화할 수 없음"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"휴대전화가 모바일 네트워크에 연결되었는지 확인한 다음 다시 시도해 주세요."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"비행기 모드를 사용 중지한 다음 다시 시도해 주세요."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"네트워크 연결 없음"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"새로운 음성 메시지에 관한 알림이 전송되지 않습니다. Wi-Fi에 연결되어 있는 경우 지금 동기화하여 음성사서함을 확인할 수 있습니다."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"새로운 음성사서함에 대한 알림이 전송되지 않습니다. 음성사서함을 동기화하려면 비행기 모드를 사용 중지하세요."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"음성사서함을 확인하려면 휴대전화가 모바일 데이터에 연결되어야 합니다."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"시각적 음성사서함을 활성화할 수 없음"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"여전히 전화를 걸어 음성사서함을 확인할 수 있습니다."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"시각적 음성사서함을 업데이트할 수 없음"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Wi-Fi 또는 모바일 데이터 연결이 개선되면 다시 시도해 주세요. 지금도 전화를 걸어 음성사서함을 확인할 수 있습니다."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"모바일 데이터 연결이 개선되면 다시 시도해 주세요. 지금도 전화를 걸어 음성사서함을 확인할 수 있습니다."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"시각적 음성사서함을 업데이트할 수 없음"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"여전히 전화를 걸어 음성사서함을 확인할 수 있습니다."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"시각적 음성사서함을 업데이트할 수 없음"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"여전히 전화를 걸어 음성사서함을 확인할 수 있습니다."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"시각적 음성사서함을 업데이트할 수 없음"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"여전히 전화를 걸어 음성사서함을 확인할 수 있습니다."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"시각적 음성사서함을 업데이트할 수 없음"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"여전히 전화를 걸어 음성사서함을 확인할 수 있습니다."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"받은편지함이 거의 가득 참"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"받은편지함이 가득 차면 새로운 음성메시지를 받을 수 없습니다."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"새로운 음성메시지를 받을 수 없음"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"받은편지함이 가득 찼습니다. 새로운 음성메시지를 받으려면 일부 메시지를 삭제해 보세요."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"추가 저장용량 및 백업 사용"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"음성사서함이 가득 찼습니다. Google에서 음성사서함 메시지를 관리하고 백업할 수 있도록 추가 저장용량을 사용 설정하여 여유 공간을 확보하세요."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"추가 저장용량 및 백업 사용"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"음성사서함이 거의 가득 찼습니다. Google에서 음성사서함 메시지를 관리하고 백업할 수 있도록 추가 저장용량을 사용 설정하여 여유 공간을 확보하세요."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"음성사서함 PIN 설정"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"음성사서함에 액세스하도록 호출할 때마다 음성사서함 PIN이 필요합니다."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"비행기 모드 설정"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN 설정"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"다시 시도"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"사용"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"거부"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"동기화"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"음성사서함 전화"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"고객지원팀 전화"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"문제 발생"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"문제가 발생했습니다. 나중에 다시 시도해 주세요. 문제가 지속되면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9001임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"문제 발생"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"문제가 발생했습니다. 나중에 다시 시도해 주세요. 문제가 지속되면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9002임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"문제 발생"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"문제가 발생했습니다. 나중에 다시 시도해 주세요. 문제가 지속되면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9003임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"음성사서함에 연결할 수 없음"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"음성사서함에 연결하는 중에 문제가 발생했습니다. 신호 강도가 약한 지역인 경우 강해질 때까지 기다렸다가 다시 시도해 주세요. 문제가 지속되면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9004임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"음성사서함에 연결할 수 없음"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"음성사서함에 연결하는 중에 문제가 발생했습니다. 신호 강도가 약한 지역인 경우 강해질 때까지 기다렸다가 다시 시도해 주세요. 문제가 지속되면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9005임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"음성사서함에 연결할 수 없음"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"음성사서함에 연결하는 중에 문제가 발생했습니다. 신호 강도가 약한 지역인 경우 강해질 때까지 기다렸다가 다시 시도해 주세요. 문제가 지속되면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9006임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"문제 발생"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"문제가 발생했습니다. 나중에 다시 시도해 주세요. 문제가 지속되면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9007임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"문제 발생"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"문제가 발생했습니다. 나중에 다시 시도해 주세요. 문제가 지속되면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9008임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"문제 발생"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"서비스를 설정하는 중에 문제가 발생했습니다. 나중에 다시 시도해 주세요. 문제가 지속되면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9009임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"음성사서함에 연결할 수 없음"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"현재 음성사서함에 연결할 수 없습니다. 나중에 다시 시도해 주세요. 문제가 지속되면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9990임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"음성사서함 설정"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"계정에 음성사서함이 설정되지 않았습니다. 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9991임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"음성사서함"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"이 기기에서 시각적 음성사서함을 사용할 수 없습니다. 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9992임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"문제 발생"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9993임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"시각적 음성사서함"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"시각적 음성사서함 설정을 완료하려면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9994임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"시각적 음성사서함"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"시각적 음성사서함 설정을 완료하려면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9995임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"시각적 음성사서함"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"시각적 음성사서함을 활성화하려면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9996임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"문제 발생"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"시각적 음성사서함 설정을 완료하려면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9998임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"시각적 음성사서함이 사용 중지됨"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"시각적 음성사서함을 활성화하려면 고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하시기 바랍니다."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"문제 발생"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9997임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"문제 발생"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9989임을 알려주시기 바랍니다."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"문제 발생"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"고객 서비스 담당자(<xliff:g id="NUMBER">%1$s</xliff:g>)에게 문의하고 오류 코드가 9999임을 알려주시기 바랍니다."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"시각적 음성사서함 사용"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\n시각적 음성사서함을 사용 설정하면 Verizon Wireless 이용약관에 동의하게 됩니다.\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"시각적 음성사서함 사용"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"음성사서함으로 전화를 걸지 않고도 메시지를 확인하고 들을 수 있습니다. Google의 무료 음성인식 서비스에서 음성메일의 스크립트를 제공합니다. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"음성사서함으로 전화를 걸지 않고도 메시지를 확인하고 들을 수 있습니다. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"자세히 알아보기"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"이용약관을 거부하는 경우 시각적 음성사서함이 사용 중지됩니다."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"시각적 음성사서함 사용 중지"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"이용약관을 거부하면 음성사서함 텍스트 변환은 사용 중지됩니다."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"음성사서함 텍스트 변환 사용 중지"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"음성사서함은 *86번으로 통화해야만 액세스가 가능합니다. 계속하려면 새 음성사서함 PIN을 설정하세요."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN 설정"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ky/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ky/strings.xml
deleted file mode 100644
index fcc84ca..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ky/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Визуалдык үн почтасын иштетүү"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Визуалдык үн почтасы толук иштетилмейинче үн почтасынын эскертмелерин ала албайсыз. Үн почтасы толугу менен иштетилгенче жаңы билдирүүлөрдү алуу үчүн үн почтасына чалыңыз."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Визуалдык үн почтасы иштебей жатат"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Телефонуңузда мобилдик байланыш бар экенин текшерип, кайра аракет кылыңыз."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Учак режимин өчүрүп, кайра аракет кылыңыз."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Байланыш жок"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Жаңы билдирүүлөр жөнүндө эскертмелер келбейт. Эгер телефонуңуз Wi-Fi тармагына туташып турса, аны үн почтасы менен шайкештириңиз."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Жаңы билдирүүлөр жөнүндө эскертмелер келбейт. Учак режимин өчүрүп, телефонуңузду үн почтаңыз менен шайкештириңиз."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Үн почтаңызды текшерүү үчүн мобилдик интернетти иштетиңиз."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Визуалдык үн почтасы иштебей жатат"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Үн почтасын текшерүү үчүн атайын номерге чалсаңыз болот."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Визуалдык үн почтасы жаңырбай жатат"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Wi-Fi сигналы же мобилдик интернет туруктуу болгончо күтө туруп, анан кайра аракет кылыңыз. Эгер почтаны азыр текшергиңиз келсе, атайын номерге чалыңыз."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Мобилдик интернет туруктуу болгончо күтө туруп, анан кайра аракет кылыңыз. Эгер почтаны азыр текшергиңиз келсе, атайын номерге чалыңыз."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Визуалдык үн почтасы жаңырбай жатат"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Үн почтасын текшерүү үчүн атайын номерге чалсаңыз болот."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Визуалдык үн почтасы жаңырбай жатат"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Үн почтасын текшерүү үчүн атайын номерге чалсаңыз болот."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Визуалдык үн почтасы жаңырбай жатат"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Үн почтасын текшерүү үчүн атайын номерге чалсаңыз болот."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Визуалдык үн почтасы жаңырбай жатат"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Үн почтасын текшерүү үчүн атайын номерге чалсаңыз болот."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"\"Келген каттар\" кутусу дээрлик толуп калды"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Почтаңыз толуп калса, жаңы үн каттарын ала албай каласыз."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Жаңы үн каттары алынбай жатат"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"\"Келген каттар\" кутуңуз толуп калды. Үн каттарын алуу үчүн айрым билдирүүлөрдү өчүрүңүз."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Кошумча мейкиндик талап кылынат"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Үн почтаңызда бош орун жок. Үн каттарыңызды башкаруу жана алардын камдык көчүрмөлөрүн сактоо үчүн кошумча мейкиндикти күйгүзүп коюңуз."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Кошумча мейкиндик талап кылынат"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Үн почтаңыз толуп калды. Үн каттарыңызды башкаруу жана алардын камдык көчүрмөлөрүн сактоо үчүн кошумча мейкиндикти күйгүзүп коюңуз."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Үн почтаңыздын PIN-кодун орнотуңуз"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN-код ар чалган сайын үн почтаңызды угуу үчүн керек."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Учак режиминин жөндөөлөрү"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN-кодду орнотуу"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Дагы аракет кылыңыз"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Күйгүзүү"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Жок, рахмат"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Шайкештирүү"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Үн почтасына чалуу"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Кардарларды колдоо кызматына чалуу"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Бир жерден ката кетти"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Кечиресиз, көйгөйгө учурадык. Бир аздан кийин дагы аракет кылып көрүңүз. Көйгөй кайталана берсе, Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине  чалып, ката коду 9001 деп айтыңыз."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Бир жерден ката кетти"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Кечиресиз, көйгөйгө учурадык. Бир аздан кийин дагы аракет кылып көрүңүз. Көйгөй кайталана берсе, Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине  чалып, ката коду 9001 деп айтыңыз."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Бир жерден ката кетти"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Кечиресиз, көйгөйгө учурадык. Көйгөй кайталана берсе, Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине  чалып, ката коду 9001 деп айтыңыз."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Үн почтаңыздын кутусуна туташа албай жатабыз"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Кечиресиз, үн почтаңызга туташуу мүмкүн болбой жатат. Сигнал күчтүү болгон жерди таап, дагы аракет кылып көрүңүз. Көйгөй кайталана берсе, Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9004 деп айтыңыз."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Үн почтаңыздын кутусуна туташа албай жатабыз"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Кечиресиз, үн почтаңызга туташуу мүмкүн болбой жатат. Сигнал күчтүү болгон жерди таап, кайталап көрүңүз. Көйгөй кайталана берсе, Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9005 деп айтыңыз."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Үн почтаңыздын кутусуна туташа албай жатабыз"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Кечиресиз, үн почтаңызга туташуу мүмкүн болбой жатат. Сигнал күчтүү болгон жерди таап, кайталап көрүңүз. Көйгөй кайталана берсе, Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9006 деп айтыңыз."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Бир жерден ката кетти"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Кечиресиз, көйгөйгө учурадык. Бир аздан кийин дагы аракет кылып көрүңүз. Көйгөй кайталана берсе, Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9007 деп айтыңыз."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Бир жерден ката кетти"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Кечиресиз, көйгөйгө учурадык. Бир аздан кийин дагы аракет кылып көрүңүз. Көйгөй кайталана берсе, Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9008 деп айтыңыз."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Бир жерден ката кетти"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Кечиресиз, кызматыңызды жөндөө мүмкүн болбой жатат. Бир аздан кийин дагы аракет кылып көрүңүз. Көйгөй кайталана берсе, Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9009 деп айтыңыз."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Үн почтаңыздын кутусуна туташа албай жатабыз"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Кечиресиз, үн почтаңызга туташуу мүмкүн болбой жатат. Бир аздан кийин дагы аракет кылып көрүңүз. Көйгөй кайталана берсе, Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9990 деп айтыңыз."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Үн почтасын жөндөө"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Каттоо эсебиңизде үн  почтасы жөндөлгөн эмес. Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9991 деп айтыңыз."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Үн почтасы"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Визуалдык үн почтасын бул түзмөктө колдонууга болбойт. Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9992 деп айтыңыз."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Бир жерден ката кетти"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9993 деп айтыңыз."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Визуалдык үн почтасы"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Визуалдык үн почтасын жөндөөнү аягына чыгаруу үчүн Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9994 деп айтыңыз."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Визуалдык үн почтасы"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Визуалдык үн почтасын жөндөөнү аягына чыгаруу үчүн Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9995 деп айтыңыз."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Визуалдык үн почтасы"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Визуалдык үн почтасын иштетүү үчүн Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9996 деп айтыңыз."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Бир жерден ката кетти"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Визуалдык үн почтасын жөндөөнү аягына чыгаруу үчүн Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9998 деп айтыңыз."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Визуалдык үн почтасы өчүк"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Визуалдык үн почтасын иштетүү үчүн Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине кайрылыңыз."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Бир жерден ката кетти"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9997 деп айтыңыз."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Бир жерден ката кетти"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9989 деп айтыңыз."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Бир жерден ката кетти"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Кардарларды колдоо кызматынын <xliff:g id="NUMBER">%1$s</xliff:g> номерине чалып, ката коду 9999 деп айтыңыз."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Визуалдык үн почтасын күйгүзүңүз"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nВизуалдык үн почтасын күйгүзүү менен сиз Verizon Wireless\'тин жоболору менен шарттарына макулдугуңузду бересиз:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Визуалдык үн почтасын күйгүзүңүз"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Үн почтасына чалып отурбастан, үн почтаңызды көрүп, уга аласыз. Үн почтаңыздын транскрипттери Google’дун бекер транскрипция кызматын камсыз кылат. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Ун почтасына чалып отурбастан, билдирүүлөрүңүздү көрүп, уга аласыз. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Кеңири маалымат"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Эгер колдонуу жоболору менен шарттары четке кагылган болсо, визуалдык үн почтасы өчүрүлөт."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Визуалдык үн почтасын өчүрүү"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Эгер колдонуу жоболору менен шарттары четке кагылган болсо, үн почтасы өчүрүлөт."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Үн почтасынын транскрипциясын өчүрүңүз"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Үн почтасын угуу үчүн *86 номерине чалыңыз. Улантуу үчүн, үн почтасына жаңы PIN-кодду коюңуз."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN-код коюу"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-lo/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-lo/strings.xml
deleted file mode 100644
index 25577c6..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-lo/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"ກຳລັງເປີດໃຊ້ຂໍ້ຄວາມສຽງແບບພາບ"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"You might not receive voicemail notifications until visual voicemail is fully activated. Call voicemail to retrieve new messages until voicemail is fully activated."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"ບໍ່ສາມາດເປີດໃຊ້ຂໍ້ຄວາມສຽງແບບພາບໄດ້"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"ໃຫ້ກວດສອບວ່າໂທລະສັບຂອງທ່ານມີການເຊື່ອມຕໍ່ອິນເຕີເນັດ ແລ້ວລອງໃໝ່ອີກຄັ້ງ"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"ປິດໂໝດຢູ່ໃນຍົນແລ້ວລອງໃໝ່ອີກຄັ້ງ."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"ບໍ່ມີການເຊື່ອມຕໍ່"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"ທ່ານຈະບໍ່ໄດ້ຮັບການແຈ້ງເຕືອນເມື່ອມີຂໍ້ຄວາມສຽງໃໝ່. ຫາກທ່ານໃຊ້ Wi-Fi, ທ່ານສາມາດກວດສອບຂໍ້ຄວາມສຽງໄດ້ໂດຍການຊິ້ງຂໍ້ມູນຕອນນີ້."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"ທ່ານຈະບໍ່ໄດ້ຮັບການແຈ້ງເຕືອນເມື່ອມີຂໍ້ຄວາມສຽງໃໝ່. ກະລຸນາປິດໂໝດຢູ່ໃນຍົນເພື່ອຊິ້ງຂໍ້ຄວາມສຽງຂອງທ່ານ."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"ໂທລະສັບຂອງທ່ານຕ້ອງມີການເຊື່ອມຕໍ່ອິນເຕີເນັດມືຖືເພື່ອກວດສອບຂໍ້ຄວາມສຽງ."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"ບໍ່ສາມາດເປີດໃຊ້ຂໍ້ຄວາມສຽງແບບພາບໄດ້"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"ທ່ານສາມາດໂທເພື່ອກວດສອບຂໍ້ຄວາມສຽງໄດ້ຢູ່."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"ບໍ່ສາມາດອັບເດດຂໍ້ຄວາມສຽງແບບພາບໄດ້"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"ໃຫ້ລອງໃໝ່ອີກຄັ້ງເມື່ອການເຊື່ອມຕໍ່ Wi‑Fi ຫຼື ອິນເຕີເນັດມືຖືຂອງທ່ານໄວຂຶ້ນກວ່ານີ້. ທ່ານຍັງຄົງສາມາດໂທເພື່ອກວດສອບຂໍ້ຄວາມສຽງຂອງທ່ານໄດ້ຢູ່."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"ໃຫ້ລອງອີກຄັ້ງເມື່ອການເຊື່ອມຕໍ່ອິນຕີເນັດມືຖືຂອງທ່ານໄວຂຶ້ນກວ່ານີ້. ທ່ານຍັງຄົງສາມາດໂທເພື່ອກວດສອບຂໍ້ຄວາມສຽງຂອງທ່ານໄດ້ຢູ່."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"ບໍ່ສາມາດອັບເດດຂໍ້ຄວາມສຽງແບບພາບໄດ້"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"ທ່ານສາມາດໂທເພື່ອກວດສອບຂໍ້ຄວາມສຽງໄດ້ຢູ່."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"ບໍ່ສາມາດອັບເດດຂໍ້ຄວາມສຽງແບບພາບໄດ້"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"ທ່ານສາມາດໂທເພື່ອກວດສອບຂໍ້ຄວາມສຽງໄດ້ຢູ່."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"ບໍ່ສາມາດອັບເດດຂໍ້ຄວາມສຽງແບບພາບໄດ້"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"ທ່ານສາມາດໂທເພື່ອກວດສອບຂໍ້ຄວາມສຽງໄດ້ຢູ່."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"ບໍ່ສາມາດອັບເດດຂໍ້ຄວາມສຽງແບບພາບໄດ້"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"ທ່ານສາມາດໂທເພື່ອກວດສອບຂໍ້ຄວາມສຽງໄດ້ຢູ່."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Inbox almost full"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"ທ່ານຈະບໍ່ສາມາດຮັບຂໍ້ຄວາມສຽງໃໝ່ໄດ້ຫາກອິນບັອກຂອງທ່ານເຕັມ."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"ບໍ່ສາມາດຮັບຂໍ້ຄວາມສຽງໃໝ່"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"ອິນບັອກຂອງທ່ານເຕັມແລ້ວ. ໃຫ້ລອງລຶບບາງຂໍ້ຄວາມອອກເພື່ອຮັບຂໍ້ຄວາມສຽງໃໝ່."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"ເປີດໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນເພີ່ມເຕີມ ແລະ ການສຳຮອງຂໍ້ມູນ"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"ກ່ອງອີເມວຂອງທ່ານເຕັມແລ້ວ. ເພື່ອເພີ່ມບ່ອນຈັດເກັບຂໍ້ມູນ, ໃຫ້ເປີດໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນເພີ່າມເຕີມເພື່ອໃຫ້ Google ສາມາດຈັດການ ແລະ ສຳຮອງຂໍ້ມູນຂໍ້ຄວາມສຽງຂອງທ່ານໄດ້."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"ເປີດໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນເພີ່ມເຕີມ ແລະ ການສຳຮອງຂໍ້ມູນ"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"ກ່ອງອີເມວຂອງທ່ານໃກ້ເຕັມແລ້ວ. ເພື່ອເພີ່ມບ່ອນຈັດເກັບຂໍ້ມູນ, ໃຫ້ເປີດໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນເພີ່າມເຕີມເພື່ອໃຫ້ Google ສາມາດຈັດການ ແລະ ສຳຮອງຂໍ້ມູນຂໍ້ຄວາມສຽງຂອງທ່ານໄດ້."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ຕັ້ງລະຫັດ PIN ຂໍ້ຄວາມສຽງຂອງທ່ານ"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ທ່ານຈະຕ້ອງໃຊ້ລະຫັດ PIN ໃນຕອນໃດກໍຕາມທີ່ທ່ານໂທເພື່ອເຂົ້າຟັງຂໍ້ຄວາມສຽງຂອງທ່ານ."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"ການຕ້ງຄ່າໂໝດຢູ່ໃນຍົນ"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"ຕັ້ງລະຫັດ PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"ລອງໃໝ່ອີກເທື່ອໜຶ່ງ"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"ເປີດໃຊ້"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"​ບໍ່, ຂອບ​ໃຈ"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"ຊິ້ງຂໍ້ມູນ"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"ໂທຫາເບີຂໍ້ຄວາມສຽງ"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Call Customer Support"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"ມີບາງສິ່ງຜິດປົກກະຕິເກີດຂຶ້ນ"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"ມີບາງສິ່ງຜິດປົກກະຕິເກີດຂຶ້ນ"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"ມີບາງສິ່ງຜິດປົກກະຕິເກີດຂຶ້ນ"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Can\'t Connect to Your Voice Mailbox"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Can\'t Connect to Your Voice Mailbox"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Can\'t Connect to Your Voice Mailbox"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Sorry, we\'re having trouble connecting to your voice mailbox. If you\'re in an area with poor signal strength, wait until you have a strong signal and try again. If there is still a problem, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"ມີບາງສິ່ງຜິດປົກກະຕິເກີດຂຶ້ນ"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"ມີບາງສິ່ງຜິດປົກກະຕິເກີດຂຶ້ນ"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Sorry, we ran into a problem. Please try again later. If there is still a problem, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"ມີບາງສິ່ງຜິດປົກກະຕິເກີດຂຶ້ນ"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Sorry, we\'re having trouble setting up your service. Please try again later. If there is still a problem, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Can\'t Connect to Your Voice Mailbox"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Sorry, we\'re not able to connect to your voice mailbox at this time. Please try again later. If there is still a problem, please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"ຕັ້ງຄ່າຂໍ້ຄວາມສຽງ"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Voicemail is not set up on your account. Please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"ຂໍ້ຄວາມສຽງ"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"ບໍ່ສາມາດໃຊ້ຂໍ້ຄວາມສຽງແບບສະເໝືອນຢູ່ອຸປະກອນນີ້ໄດ້. ກະລຸນາຕິດຕໍ່ຫາຝ່າຍບໍລິການລູກຄ້າທີ່ເບີ <xliff:g id="NUMBER">%1$s</xliff:g> ແລ້ວແຈ້ງລະຫັດຂໍ້ຜິດພາດ 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"ມີບາງສິ່ງຜິດປົກກະຕິເກີດຂຶ້ນ"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"ຂໍ້ຄວາມສຽງສະເໝືອນ"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"ເພື່ອສຳເລັດການຕັ້ງຄ່າຂໍ້ຄວາມສຽງແບບສະເໝືອນ, ກະລຸນາຕິດຕໍ່ຝ່າຍບໍລິການລູກຄ້າທີ່ເບີ <xliff:g id="NUMBER">%1$s</xliff:g> ແລ້ວແຈ້ງລະຫັດຂໍ້ຜິດພາດ 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"ຂໍ້ຄວາມສຽງສະເໝືອນ"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"ເພື່ອສຳເລັດການຕັ້ງຄ່າຂໍ້ຄວາມສຽງແບບສະເໝືອນ, ກະລຸນາຕິດຕໍ່ຝ່າຍບໍລິການລູກຄ້າທີ່ເບີ <xliff:g id="NUMBER">%1$s</xliff:g> ແລ້ວແຈ້ງລະຫັດຂໍ້ຜິດພາດ 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"ຂໍ້ຄວາມສຽງສະເໝືອນ"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"ເພື່ອເປີດນຳໃຊ້ຂໍ້ຄວາມສຽງແບບສະເໝືອນ, ກະລຸນາຕິດຕໍ່ຝ່າຍບໍລິການລູກຄ້າທີ່ເບີ <xliff:g id="NUMBER">%1$s</xliff:g> ແລ້ວແຈ້ງລະຫັດຂໍ້ຜິດພາດ 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"ມີບາງສິ່ງຜິດປົກກະຕິເກີດຂຶ້ນ"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"ເພື່ອສຳເລັດການຕັ້ງຄ່າຂໍ້ຄວາມສຽງແບບສະເໝືອນ, ກະລຸນາຕິດຕໍ່ຝ່າຍບໍລິການລູກຄ້າທີ່ເບີ <xliff:g id="NUMBER">%1$s</xliff:g> ແລ້ວແຈ້ງລະຫັດຂໍ້ຜິດພາດ 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"ຂໍ້ຄວາມສຽງສະເໝືອນຖືກປິດການນຳໃຊ້ແລ້ວ"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> to activate visual voicemail."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"ມີບາງສິ່ງຜິດປົກກະຕິເກີດຂຶ້ນ"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"ມີບາງສິ່ງຜິດປົກກະຕິເກີດຂຶ້ນ"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"ມີບາງສິ່ງຜິດປົກກະຕິເກີດຂຶ້ນ"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Please contact Customer Service at <xliff:g id="NUMBER">%1$s</xliff:g> and tell them the error code is 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"ເປີດໃຊ້ຂໍ້ຄວາມສຽງສະເໝືອນ"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nໂດຍການເປີດນຳໃຊ້ຂໍ້ຄວາມສຽງສະເໝືອນ ແມ່ນຖືວ່າທ່ານຍອມຮັບຂໍ້ກຳນົດ ແລະ ເງື່ອນໄຂຂອງ Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"ເປີດໃຊ້ຂໍ້ຄວາມສຽງສະເໝືອນ"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"ເບິ່ງ ແລະ ຟັງຂໍ້ຄວາມຂອງທ່ານໂດຍບໍ່ຕ້ອງໂທຫາເບີຂໍ້ຄວາມສຽງ. ທ່ານສາມາດອ່ານການຖອດຂໍ້ຄວາມສຽງເຊິ່ງສະໜອງໃຫ້ໂດຍບໍລິການຖອດຂໍ້ຄວາມຟຣີຂອງ Google ໄດ້. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"ເບິ່ງ ແລະ ຟັງຂໍ້ຄວາມຂອງທ່ານໂດຍບໍ່ຕ້ອງໂທຫາເບີຂໍ້ຄວາມສຽງ. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"ສຶກສາເພີ່ມເຕີມ"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"ຂໍ້ຄວາມສຽງສະເໝືອນຈະຖືກປິດການນຳໃຊ້ຫາກປະຕິເສດຂໍ້ກຳນົດ ແລະ ເງື່ອນໄຂດັ່ງກ່າວ."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"ປິດການນຳໃຊ້ຂໍ້ຄວາມສຽງສະເໝືອນ"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"ການຖອດຂໍ້ຄວາມສຽງຈະຖືກປິດການນຳໃຊ້ຫາກປະຕິເສດຂໍ້ກຳນົດ ແລະ ເງື່ອນໄຂ."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"ປິດການນຳໃຊ້ການຖອດຂໍ້ຄວາມສຽງ"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"ຂໍ້ຄວາມສຽງສາມາດເຂົ້າເຖິງໄດ້ສະເພາະການໂທຜ່ານ *86 ເທົ່ານັ້ນ. ຕັ້ງລະຫັດ PIN ຂໍ້ຄວາມສຽງໃໝ່ເພື່ອດຳເນີນການຕໍ່."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"ຕັ້ງລະຫັດ PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-lt/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-lt/strings.xml
deleted file mode 100644
index 0a3cf02..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-lt/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Suaktyvinamas vaizdinis balso paštas"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Kol vaizdinis balso paštas nebus visiškai suaktyvintas, galite negauti balso pašto pranešimų. Jei norite gauti naujus pranešimus, kol jis nėra visiškai suaktyvintas, paskambinkite į balso paštą."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Nepavyksta suaktyvinti vaizdinio balso pašto"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Įsitikinkite, kad telefone veikia mobilusis ryšys, ir bandykite dar kartą."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Išjunkite lėktuvo režimą ir bandykite dar kartą."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Nėra ryšio"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Jums nebus pranešta apie naujus balso pašto pranešimus. Jei esate prisijungę prie „Wi-Fi“, dabar įjungę sinchronizavimą galite patikrinti, ar yra balso pašto pranešimų."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Jums nebus pranešta apie naujus balso pašto pranešimus. Išjunkite lėktuvo režimą, kad galėtumėte sinchronizuoti balso pašto pranešimus."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Kad galėtumėte patikrinti balso pašto pranešimus, telefone turi būti įjungti mobiliojo ryšio duomenys."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Nepavyksta suaktyvinti vaizdinio balso pašto"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Vis tiek galite skambinti ir tikrinti balso pašto pranešimus."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Nepavyksta atnaujinti vaizdinio balso pašto"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Bandykite dar kartą, kai „Wi-Fi“ arba mobiliųjų duomenų ryšys bus geresnis. Vis tiek galite paskambinti ir patikrinti balso pašto pranešimus."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Bandykite dar kartą, kai mobiliųjų duomenų ryšys bus geresnis. Vis tiek galite paskambinti ir patikrinti balso pašto pranešimus."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Nepavyksta atnaujinti vaizdinio balso pašto"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Vis tiek galite skambinti ir tikrinti balso pašto pranešimus."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Nepavyksta atnaujinti vaizdinio balso pašto"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Vis tiek galite skambinti ir tikrinti balso pašto pranešimus."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Nepavyksta atnaujinti vaizdinio balso pašto"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Vis tiek galite skambinti ir tikrinti balso pašto pranešimus."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Nepavyksta atnaujinti vaizdinio balso pašto"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Vis tiek galite skambinti ir tikrinti balso pašto pranešimus."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Gautųjų aplankas beveik pilnas"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Negalėsite gauti naujų balso pašto pranešimų, jei gautuosiuose nebeliks laisvos vietos."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nepavyksta gauti naujų balso pašto pranešimų"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Gautuosiuose nebėra laisvos vietos. Kad galėtumėte gauti naujus balso pašto pranešimus, pabandykite ištrinti keletą pranešimų."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Įjunkite papildomos saugyklos vietos ir atsarginės kopijos kūrimo parinktį"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Jūsų pašto dėžutė pilna. Jei norite atlaisvinti vietos, įjunkite papildomos saugyklos vietos parinktį, kad „Google“ galėtų tvarkyti balso pašto pranešimus ir kurti atsargines jų kopijas."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Įjunkite papildomos saugyklos vietos ir atsarginės kopijos kūrimo parinktį"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Jūsų pašto dėžutė beveik pilna. Jei norite atlaisvinti vietos, įjunkite papildomos saugyklos vietos parinktį, kad „Google“ galėtų tvarkyti balso pašto pranešimus ir kurti atsargines jų kopijas."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Nustatyti balso pašto PIN kodą"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Jums reikės balso pašto PIN kodo visada, kai skambinsite norėdami pasiekti balso paštą."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Lėktuvo režimo nustatymai"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Nustatyti PIN kodą"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Bandyti dar kartą"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Įjungti"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Ne, ačiū"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinchronizuoti"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Skambinti į balso paštą"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Skambinti klientų palaikymo tarnybai"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Kažkas ne taip"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Deja, kilo problema. Bandykite dar kartą vėliau. Jei problema išlieka, susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Kažkas ne taip"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Deja, kilo problema. Bandykite dar kartą vėliau. Jei problema išlieka, susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Kažkas ne taip"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Deja, kilo problema. Bandykite dar kartą vėliau. Jei problema išlieka, susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Nepavyko prisijungti prie balso pašto dėžutės"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Deja, nepavyksta prisijungti prie balso pašto dėžutės. Jei esate vietoje, kur signalas yra silpnas, palaukite, kol jis bus stiprus, ir bandykite dar kartą. Jei problema išlieka, susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Nepavyko prisijungti prie balso pašto dėžutės"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Deja, nepavyksta prisijungti prie balso pašto dėžutės. Jei esate vietoje, kur signalas yra silpnas, palaukite, kol jis bus stiprus, ir bandykite dar kartą. Jei problema išlieka, susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Nepavyko prisijungti prie balso pašto dėžutės"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Deja, nepavyksta prisijungti prie balso pašto dėžutės. Jei esate vietoje, kur signalas yra silpnas, palaukite, kol jis bus stiprus, ir bandykite dar kartą. Jei problema išlieka, susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Kažkas ne taip"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Deja, kilo problema. Bandykite dar kartą vėliau. Jei problema išlieka, susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Kažkas ne taip"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Deja, kilo problema. Bandykite dar kartą vėliau. Jei problema išlieka, susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Kažkas ne taip"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Deja, nepavyksta nustatyti paslaugos. Bandykite dar kartą vėliau. Jei problema išlieka, susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Nepavyko prisijungti prie balso pašto dėžutės"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Deja, šiuo metu nepavyksta prisijungti prie jūsų balso pašto dėžutės. Bandykite dar kartą vėliau. Jei problema išlieka, susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Balso pašto nustatymas"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Nenustatytas jūsų paskyros balso paštas. Susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Balso paštas"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Šiame įrenginyje negalima naudoti vaizdinio balso pašto. Susisiekite su klientų aptarnavimo komanda numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Kažkas ne taip"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Vaizdinis balso paštas"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Norėdami užbaigti vaizdinio balso pašto sąranką, susisiekite su klientų aptarnavimo komanda numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9998."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Vaizdinis balso paštas"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Norėdami užbaigti vaizdinio balso pašto sąranką, susisiekite su klientų aptarnavimo komanda numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9998."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Vaizdinis balso paštas"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Norėdami suaktyvinti vaizdinį balso paštą, susisiekite su klientų aptarnavimo komanda numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Kažkas ne taip"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Norėdami užbaigti vaizdinio balso pašto sąranką, susisiekite su klientų aptarnavimo komanda numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Vaizdinis balso paštas išjungtas"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Norėdami suaktyvinti vaizdinį balso paštą, susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Kažkas ne taip"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Kažkas ne taip"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Kažkas ne taip"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Susisiekite su klientų aptarnavimo tarnyba numeriu <xliff:g id="NUMBER">%1$s</xliff:g> ir pasakykite klaidos kodą 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Vaizdinio balso pašto įjungimas"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nĮjungdami vaizdinį balso paštą sutinkate su „Verizon Wireless“ taisyklėmis ir nuostatomis:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Vaizdinio balso pašto įjungimas"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Peržiūrėkite ir klausykite pranešimų neskambindami balso pašto paslaugos numeriu. Balso pašto pranešimų nuorašus teikia „Google“ nemokama transkribavimo paslauga. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Peržiūrėkite ir klausykite pranešimų neskambindami balso pašto paslaugos numeriu. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Sužinoti daugiau"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Atmetus taisykles ir nuostatas, vaizdinis balso paštas bus išjungtas."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Išjungti vaizdinį balso paštą"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Atmetus taisykles ir nuostatas, balso pašto transkribavimas bus išjungtas."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Išjungti balso pašto transkribavimą"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Balso paštas bus pasiekiamas tik paskambinus numeriu *86. Nustatykite naują balso pašto PIN kodą, kad galėtumėte tęsti."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN kodo nustatymas"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-lv/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-lv/strings.xml
deleted file mode 100644
index 3640d8d..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-lv/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Vizuālā balss pasta aktivizēšana"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Kamēr vizuālais balss pasts nebūs pilnībā aktivizēts, iespējams, nesaņemsiet balss pasta paziņojumus. Lai izgūtu jaunus ziņojumus, kamēr balss pasts nav pilnībā aktivizēts, zvaniet balss pastam."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Nevar aktivizēt vizuālo balss pastu."</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Pārbaudiet, vai tālrunim ir mobilo datu savienojums, un mēģiniet vēlreiz."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Izslēdziet lidojuma režīmu un mēģiniet vēlreiz."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Nav savienojuma."</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Jums netiks paziņots par jauniem balss pasta ziņojumiem. Ja ir izveidots Wi-Fi savienojums, varat pārbaudīt balss pastu, tagad veicot sinhronizāciju."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Jums netiks paziņots par jauniem balss pasta ziņojumiem. Lai sinhronizētu balss pastu, izslēdziet lidojuma režīmu."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Lai pārbaudītu balss pastu, tālrunim ir nepieciešams mobilo datu savienojums."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Nevar aktivizēt vizuālo balss pastu."</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Joprojām varat piezvanīt, lai pārbaudītu balss pastu."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Nevar atjaunināt vizuālo balss pastu."</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Mēģiniet vēlreiz, kad būs spēcīgāks Wi-Fi vai mobilo datu savienojuma signāls. Joprojām varat piezvanīt, lai pārbaudītu balss pastu."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Mēģiniet vēlreiz, kad būs spēcīgāks mobilo datu savienojuma signāls. Joprojām varat piezvanīt, lai pārbaudītu balss pastu."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Nevar atjaunināt vizuālo balss pastu."</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Joprojām varat piezvanīt, lai pārbaudītu balss pastu."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Nevar atjaunināt vizuālo balss pastu."</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Joprojām varat piezvanīt, lai pārbaudītu balss pastu."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Nevar atjaunināt vizuālo balss pastu."</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Joprojām varat piezvanīt, lai pārbaudītu balss pastu."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Nevar atjaunināt vizuālo balss pastu."</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Joprojām varat piezvanīt, lai pārbaudītu balss pastu."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Iesūtne ir gandrīz pilna"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Jūs nevarēsiet saņemt jaunus balss pasta ziņojumus, ja iesūtne ir pilna."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nevar saņemt balss pasta ziņojumus."</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Iesūtne ir pilna. Izdzēsiet dažus ziņojumus, lai saņemtu jaunus balss pasta ziņojumus."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Papildu krātuves un dublēšanas aktivizēšana"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Jūsu pastkaste ir pilna. Lai atbrīvotu vietu un Google varētu pārvaldīt un dublēt jūsu balss pasta ziņojumus, aktivizējiet papildu krātuvi."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Papildu krātuves un dublēšanas aktivizēšana"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Jūsu pastkaste ir gandrīz pilna. Lai atbrīvotu vietu un Google varētu pārvaldīt un dublēt jūsu balss pasta ziņojumus, aktivizējiet papildu krātuvi."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Balss pasta PIN iestatīšana"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Lai piekļūtu balss pastam zvanot, būs vajadzīgs balss pasta PIN."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Lidojuma režīma iestatījumi"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN iestatīšana"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Mēģināt vēlreiz"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Aktivizēt"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nē, paldies"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinhronizēt"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Zvanīt balss pastam"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Zvanīt klientu atbalsta dienestam"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Radās problēma"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Diemžēl radās problēma. Lūdzu, vēlāk mēģiniet vēlreiz. Ja problēma joprojām pastāv, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9001”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Radās problēma"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Diemžēl radās problēma. Lūdzu, vēlāk mēģiniet vēlreiz. Ja problēma joprojām pastāv, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9002”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Radās problēma"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Diemžēl radās problēma. Lūdzu, vēlāk mēģiniet vēlreiz. Ja problēma joprojām pastāv, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9003”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Nevar izveidot savienojumu ar jūsu balss pastkasti"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Diemžēl mums neizdodas izveidot savienojumu ar jūsu balss pastkasti. Ja atrodaties vietā, kur ir vājš signāls, gaidiet, līdz ir pieejams stiprs signāls, un mēģiniet vēlreiz. Ja problēma joprojām pastāv, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9004”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Nevar izveidot savienojumu ar jūsu balss pastkasti"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Diemžēl mums neizdodas izveidot savienojumu ar jūsu balss pastkasti. Ja atrodaties vietā, kur ir vājš signāls, gaidiet, līdz ir pieejams stiprs signāls, un mēģiniet vēlreiz. Ja problēma joprojām pastāv, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9005”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Nevar izveidot savienojumu ar jūsu balss pastkasti"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Diemžēl mums neizdodas izveidot savienojumu ar jūsu balss pastkasti. Ja atrodaties vietā, kur ir vājš signāls, gaidiet, līdz ir pieejams stiprs signāls, un mēģiniet vēlreiz. Ja problēma joprojām pastāv, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9006”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Radās problēma"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Diemžēl radās problēma. Lūdzu, vēlāk mēģiniet vēlreiz. Ja problēma joprojām pastāv, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9007”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Radās problēma"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Diemžēl radās problēma. Lūdzu, vēlāk mēģiniet vēlreiz. Ja problēma joprojām pastāv, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9008”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Radās problēma"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Diemžēl mums neizdodas iestatīt jūsu pakalpojumu. Lūdzu, vēlāk mēģiniet vēlreiz. Ja problēma joprojām pastāv, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdu kodu “9009”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Nevar izveidot savienojumu ar jūsu balss pastkasti"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Diemžēl pašlaik nevaram izveidot savienojumu ar jūsu balss pastkasti. Lūdzu, vēlāk mēģiniet vēlreiz. Ja problēma joprojām pastāv, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdu kodu “9990”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Balss pasta iestatīšana"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Jūsu kontā nav iestatīts balss pasts. Lūdzu, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9991”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Balss pasts"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Šajā ierīcē nevar izmantot vizuālo balss pastu. Lūdzu, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālruņa numuru <xliff:g id="NUMBER">%1$s</xliff:g>, un nosauciet kļūdas kodu “9992”."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Radās problēma"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Lūdzu, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9993”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Vizuālais balss pasts"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Lai pabeigtu vizuālā balss pasta iestatīšanu, lūdzu, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālruņa numuru <xliff:g id="NUMBER">%1$s</xliff:g>, un nosauciet kļūdas kodu “9994”."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Vizuālais balss pasts"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Lai pabeigtu vizuālā balss pasta iestatīšanu, lūdzu, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālruņa numuru <xliff:g id="NUMBER">%1$s</xliff:g>, un nosauciet kļūdas kodu “9995”."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Vizuālais balss pasts"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Lai aktivizētu vizuālo balss pastu, lūdzu, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālruņa numuru <xliff:g id="NUMBER">%1$s</xliff:g>, un nosauciet kļūdas kodu “9996”."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Radās problēma"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Lai pabeigtu vizuālā balss pasta iestatīšanu, lūdzu, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālruņa numuru <xliff:g id="NUMBER">%1$s</xliff:g>, un nosauciet kļūdas kodu “9998”."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Vizuālais balss pasts ir atspējots"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Lai aktivizētu vizuālo balss pastu, lūdzu, sazinieties ar klientu apkalpošanas dienestu, izmantojot šo tālruņa numuru: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Radās problēma"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Lūdzu, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9997”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Radās problēma"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Lūdzu, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9989”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Radās problēma"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Lūdzu, sazinieties ar klientu apkalpošanas dienestu, izmantojot tālāk norādīto tālruņa numuru, un nosauciet kļūdas kodu “9999”: <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Vizuālā balss pasta ieslēgšana"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nIeslēdzot vizuālo balss pastu, jūs piekrītat Verizon Wireless pakalpojumu sniegšanas noteikumiem:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Vizuālā balss pasta ieslēgšana"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Skatiet un klausieties savus ziņojumus, nezvanot uz balss pastu. Balss pasta ziņojumu transkripciju nodrošina Google bezmaksas transkripcijas pakalpojums. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Skatiet un klausieties savus ziņojumus, nezvanot uz balss pastu. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Uzzināt vairāk"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Ja tiks noraidīti pakalpojumu sniegšanas noteikumi, vizuālais balss pasts tiks atspējots."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Atspējot vizuālo balss pastu"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Ja tiks noraidīti pakalpojumu sniegšanas noteikumi, balss pasta transkripcija tiks atspējota."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Atspējot balss pasta transkripciju"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Balss pasts būs pieejams, tikai zvanot uz numuru *86. Lai turpinātu, iestatiet jaunu balss pasta PIN."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN iestatīšana"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-mk/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-mk/strings.xml
deleted file mode 100644
index bbe65d3..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-mk/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Се активира визуелна говорна пошта"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Може да не добивате известувања за говорна пошта сѐ додека говорната пошта не се активира во целост. Дотогаш, повикувајте ја говорната пошта за преслушување на новите пораки."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Не може да се активира визуелна говорна пошта"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Проверете дали телефонот е поврзан на мобилна мрежа и обидете се повторно."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Исклучете го авионскиот режим и обидете се повторно."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Нема мрежа"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Нема да добивате известувања за нови говорни пораки. Ако сте поврзани на Wi-Fi, може да ја проверите говорната пошта со синхронизирање сега."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Нема да добивате известувања за нова говорна пошта. Исклучете го авионскиот режим за синхронизирање на говорната пошта."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"За проверување говорна пошта, телефонот треба да се поврзе на мобилен интернет."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Не може да се активира визуелна говорна пошта"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Сѐ уште може да повикате за да ја проверите говорната пошта"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Не може да се ажурира визуелната говорна пошта"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Обидете се повторно кога Wi-Fi или мобилниот интернет ќе се подобрат. Сѐ уште може да повикате за да ја проверите говорната пошта."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Обидете се повторно кога ќе се подобри мобилниот интернет. Сѐ уште може да повикате за да ја проверите говорната пошта."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Не може да се ажурира визуелната говорна пошта"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Сѐ уште може да повикате за да ја проверите говорната пошта."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Не може да се ажурира визуелната говорна пошта"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Сѐ уште може да повикате за да ја проверите говорната пошта."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Не може да се ажурира визуелната говорна пошта"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Сѐ уште може да повикате за да ја проверите говорната пошта."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Не може да се ажурира визуелната говорна пошта"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Сѐ уште може да повикате за да ја проверите говорната пошта."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Приемното сандаче е речиси полно"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Нема да може да добивате нова говорна пошта ако вашето приемно сандаче е полно."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Не може да добивате нова говорна пошта"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Вашето приемно сандаче е полно. Обидете се да избришете неколку пораки за да добиете нова говорна пошта."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Вклучете дополнителен простор и бекап"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Вашето поштенско сандаче е полно. За да ослободите простор, вклучете дополнителен простор за да може Google да управува и да прави бекап на пораките од вашата говорна пошта."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Вклучете дополнителен простор и бекап"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Вашето поштенско сандаче е речиси полно. За да ослободите простор, вклучете дополнителен простор за да може Google да управува и да прави бекап на пораките од вашата говорна пошта."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Поставете PIN за говорната пошта"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Секогаш кога ќе повикате за да пристапите до говорната пошта, ќе треба да внесете PIN за говорна пошта."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Поставки на авионски режим"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Поставете PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Обидете се повторно"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Вклучи"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Не, фала"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Синхронизирајте"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Повикајте говорна пошта"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Повикајте ја Поддршката на корисници"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Нешто тргна наопаку"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"За жал, наидовме на проблем. Обидете се повторно подоцна. Ако и понатаму постои проблем, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Нешто тргна наопаку"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"За жал, наидовме на проблем. Обидете се повторно подоцна. Ако и понатаму постои проблем, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Нешто тргна наопаку"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"За жал, наидовме на проблем. Обидете се повторно подоцна. Ако и понатаму постои проблем, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Не може да се поврзе со вашето сандаче за говорна пошта"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"За жал, имаме проблем при поврзување со вашето сандаче за говорна пошта. Ако сте во област со слаб сигнал, почекајте додека да добиете јак сигнал и обидете се повторно. Ако и понатаму постои проблем, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Не може да се поврзе со вашето сандаче за говорна пошта"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"За жал, имаме проблем при поврзување со вашето сандаче за говорна пошта. Ако сте во област со слаб сигнал, почекајте додека да добиете јак сигнал и обидете се повторно. Ако и понатаму постои проблем, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Не може да се поврзе со вашето сандаче за говорна пошта"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"За жал, имаме проблем при поврзување со вашето сандаче за говорна пошта. Ако сте во област со слаб сигнал, почекајте додека да добиете јак сигнал и обидете се повторно. Ако и понатаму постои проблем, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Нешто тргна наопаку"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"За жал, наидовме на проблем. Обидете се повторно подоцна. Ако и понатаму постои проблем, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Нешто тргна наопаку"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"За жал, наидовме на проблем. Обидете се повторно подоцна. Ако и понатаму постои проблем, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Нешто тргна наопаку"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"За жал, имаме проблем при поставување на вашата услуга. Обидете се повторно подоцна. Ако и понатаму постои проблем, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Не може да се поврзе со вашето сандаче за говорна пошта"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"За жал, не сме во можност да се поврземе со вашето сандаче за говорна пошта во моментов. Обидете се повторно подоцна. Ако и понатаму постои проблем, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Поставете говорна пошта"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Говорната пошта не е поставена на вашата сметка. Контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Говорна пошта"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"На уредов не може да се користи визуелна говорна пошта. Контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Нешто тргна наопаку"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Визуелна говорна пошта"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"За да го завршите поставувањето на визуелната говорна пошта, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Визуелна говорна пошта"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"За да го завршите поставувањето на визуелната говорна пошта, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9994."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Визуелна говорна пошта"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"За да ја активирате визуелната говорна пошта, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Нешто тргна наопаку"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"За да го завршите поставувањето на визуелната говорна пошта, контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9994."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Визуелната говорна пошта е оневозможена"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> за активирање на визуелната говорна пошта."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Нешто тргна наопаку"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Нешто тргна наопаку"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Нешто тргна наопаку"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Контактирајте со Грижа за корисници на <xliff:g id="NUMBER">%1$s</xliff:g> и кажете им дека кодот за грешка е 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Вклучете визуелна говорна пошта"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nАко вклучите визуелна говорна пошта, се согласувате со Одредбите и условите на Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Вклучете визуелна говорна пошта"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Гледајте и слушајте ги вашите пораки без да треба да ја повикате говорната пошта. Бесплатната услуга за транскрипција на Google обезбедува преписи од вашата говорна пошта. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Гледајте и слушајте ги вашите пораки без да треба да ја повикате говорната пошта. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Дознајте повеќе"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Ако ги одбиете Одредбите и условите, визуелната говорна пошта ќе се оневозможи."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Оневозможете визуелна говорна пошта"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Ако ги одбиете Одредбите и условите, транскрипцијата на говорната пошта ќе се оневозможи."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Оневозможи транскрипција на говорна пошта"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Говорната пошта ќе биде достапна само со повикување *86. За да продолжите, поставете нов PIN на говорната пошта."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Поставете PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ml/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ml/strings.xml
deleted file mode 100644
index 396f643..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ml/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"വിഷ്വൽ വോയ്‌സ്മെയിൽ സജീവമാക്കുന്നു"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ പൂർണ്ണമായും സജീവമാകുന്നത് വരെ നിങ്ങൾക്ക് വോയ്‌സ്‌മെയിൽ അറിയിപ്പുകൾ ലഭിക്കാനിടയില്ല. വോയ്‌സ്‌മെയിൽ പൂർണ്ണമായും സജീവമാകുന്നത് വരെ പുതിയ സന്ദേശങ്ങൾ വീണ്ടെടുക്കാൻ വോയ്‌സ്‌മെയിലിലേക്ക് വിളിക്കുക."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ സജീവമാക്കാനാവുന്നില്ല"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"നിങ്ങളുടെ ഫോണിന് മൊബൈൽ നെറ്റ്‌വർക്ക് കണക്ഷനുണ്ടെന്ന് ഉറപ്പാക്കിയശേഷം വീണ്ടും ശ്രമിക്കുക."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"ഫ്ലൈറ്റ് മോഡ് ഓഫാക്കി, വീണ്ടും ശ്രമിക്കുക."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"കണക്ഷൻ ഇല്ല"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"പുതിയ വോയ്‌സ്‌മെയിലുകൾ വരുമ്പോൾ നിങ്ങളെ അറിയിക്കില്ല. നിങ്ങൾ വൈഫൈ ഉപയോഗിക്കുകയാണെങ്കിൽ, ഇപ്പോൾ സമന്വയിപ്പിക്കുന്നതിലൂടെ വോയ്‌സ്‌മെയിൽ പരിശോധിക്കാനാവും."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"പുതിയ വോയ്‌സ്‌മെയിലുകൾ വരുമ്പോൾ നിങ്ങളെ അറിയിക്കില്ല. വോയ്‌സ്‌മെയിൽ സമന്വയിപ്പിക്കാൻ ഫ്ലൈറ്റ് മോഡ് ഓഫാക്കുക."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"വോയ്‌സ്‌മെയിൽ പരിശോധിക്കാൻ നിങ്ങളുടെ ഫോണിന് ഒരു മൊബൈൽ ഡാറ്റ കണക്ഷൻ ആവശ്യമാണ്."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ സജീവമാക്കാനാവുന്നില്ല"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"വോയ്‌സ്‌മെയിൽ പരിശോധിക്കാൻ തുടർന്നും നിങ്ങൾക്ക് കോൾ ചെയ്യാനാവും."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ അപ്‌ഡേറ്റുചെയ്യാനാകുന്നില്ല"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"നിങ്ങൾക്ക് മെച്ചപ്പെട്ട വൈഫൈ അല്ലെങ്കിൽ മൊബൈൽ ഡാറ്റ കണക്ഷൻ ലഭിക്കുമ്പോൾ, വീണ്ടും ശ്രമിക്കുക. വോയ്‌സ്‌മെയിൽ പരിശോധിക്കാൻ തുടർന്നും നിങ്ങൾക്ക് കോൾ ചെയ്യാനാവും."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"നിങ്ങൾക്ക് മെച്ചപ്പെട്ട മൊബൈൽ ഡാറ്റ കണക്ഷൻ ലഭിക്കുമ്പോൾ വീണ്ടും ശ്രമിക്കുക. വോയ്‌സ്‌മെയിൽ പരിശോധിക്കാൻ തുടർന്നും നിങ്ങൾക്ക് കോൾ ചെയ്യാനാവും."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ അപ്‌ഡേറ്റുചെയ്യാനാകുന്നില്ല"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"വോയ്‌സ്‌മെയിൽ പരിശോധിക്കാൻ തുടർന്നും നിങ്ങൾക്ക് കോൾ ചെയ്യാനാവും."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ അപ്‌ഡേറ്റുചെയ്യാനാകുന്നില്ല"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"വോയ്‌സ്‌മെയിൽ പരിശോധിക്കാൻ തുടർന്നും നിങ്ങൾക്ക് കോൾ ചെയ്യാനാവും."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ അപ്‌ഡേറ്റുചെയ്യാനാകുന്നില്ല"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"വോയ്‌സ്‌മെയിൽ പരിശോധിക്കാൻ തുടർന്നും നിങ്ങൾക്ക് കോൾ ചെയ്യാനാവും."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ അപ്‌ഡേറ്റുചെയ്യാനാകുന്നില്ല"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"വോയ്‌സ്‌മെയിൽ പരിശോധിക്കാൻ തുടർന്നും നിങ്ങൾക്ക് കോൾ ചെയ്യാനാവും."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"ഇൻ‌ബോക്‌സ് ഏകദേശം നിറഞ്ഞു"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"ഇൻബോക്‌സ്‌ നിറഞ്ഞിരിക്കുകയാണെങ്കിൽ നിങ്ങൾക്ക് പുതിയ വോയ്‌സ്‌മെയിൽ സ്വീകരിക്കാനാവില്ല."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"പുതിയ വോയ്‌സ്‌മെയിലുകൾ സ്വീകരിക്കാനാകുന്നില്ല"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"നിങ്ങളുടെ ഇൻബോക്‌സ്‌ നിറഞ്ഞിരിക്കുകയാണ്. പുതിയ വോയ്‌സ്‌മെയിൽ സ്വീകരിക്കാൻ ചില സന്ദേശങ്ങൾ ഇല്ലാതാക്കുന്നത് പരീക്ഷിച്ചുനോക്കൂ."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"അധിക സ്‌റ്റോറേജും ബായ്‌ക്കപ്പും ഓണാക്കുക"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"നിങ്ങളുടെ മെയിൽബോക്‌സ് നിറഞ്ഞിരിക്കുന്നു. ഇടം സൃഷ്‌ടിക്കാൻ, അധിക സ്‌റ്റോറേജ് ഓണാക്കുക, തുടർന്ന് Google-ന് നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ സന്ദേശങ്ങൾ മാനേജുചെയ്യാനും ബായ്‌ക്കപ്പെടുക്കാനുമാകും."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"അധിക സ്‌റ്റോറേജും ബായ്‌ക്കപ്പും ഓണാക്കുക"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"നിങ്ങളുടെ മെയിൽബോക്‌സ്‌ ഏകദേശം നിറഞ്ഞിരിക്കുന്നു. ഇടം സൃഷ്‌ടിക്കാൻ അധിക സ്‌റ്റോറേജ് ഓണാക്കുക, തുടർന്ന് Google-ന് നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ സന്ദേശങ്ങൾ മാനേജുചെയ്യാനും ബായ്‌ക്കപ്പെടുക്കാനുമാകും."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"നിങ്ങളുടെ വോയ്‌സ്മെയിൽ പിൻ സജ്ജമാക്കുക"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"വോയ്‌സ്മെയിൽ ആക്‌സസ് ചെയ്യാൻ ശ്രമിക്കുമ്പോഴെല്ലാം നിങ്ങൾക്കൊരു വോയ്‌സ്‌മെയിൽ പിൻ ആവശ്യമാണ്."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"ഫ്ലൈറ്റ് മോഡ് ക്രമീകരണം"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"പിൻ സജ്ജമാക്കുക"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"വീണ്ടും ശ്രമിക്കുക"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"ഓൺ ചെയ്യുക"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"വേണ്ട, നന്ദി"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"സമന്വയിപ്പിക്കുക"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"വോയ്‌സ്‌മെയിലിലേക്ക് വിളിക്കുക"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"കസ്‌റ്റമർ സപ്പോർട്ടിനെ വിളിക്കുക"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"എന്തോ കുഴപ്പം സംഭവിച്ചു"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"ക്ഷമിക്കണം, ഒരു പ്രശ്‌നമുണ്ടായി. പിന്നീട് വീണ്ടും ശ്രമിക്കുക. പ്രശ്‌നം നിലനിൽക്കുകയാണെങ്കിൽ, <xliff:g id="NUMBER">%1$s</xliff:g> എന്നതിൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9001 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"എന്തോ കുഴപ്പം സംഭവിച്ചു"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"ക്ഷമിക്കണം, ഒരു പ്രശ്‌നമുണ്ടായി. പിന്നീട് വീണ്ടും ശ്രമിക്കുക. പ്രശ്‌നം നിലനിൽക്കുകയാണെങ്കിൽ, <xliff:g id="NUMBER">%1$s</xliff:g> എന്നതിൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9002 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"എന്തോ കുഴപ്പം സംഭവിച്ചു"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"ക്ഷമിക്കണം, ഒരു പ്രശ്‌നമുണ്ടായി. പിന്നീട് വീണ്ടും ശ്രമിക്കുക. പ്രശ്‌നം നിലനിൽക്കുകയാണെങ്കിൽ, <xliff:g id="NUMBER">%1$s</xliff:g> എന്നതിൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9003 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"നിങ്ങളുടെ വോയ്‌സ് മെയിൽബോക്‌സിൽ കണക്‌റ്റുചെയ്യാനാവുന്നില്ല"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"ക്ഷമിക്കണം, നിങ്ങളുടെ വോയ്‌സ് മെയിൽബോക്‌സിൽ കണക്‌റ്റുചെയ്യുന്നതിൽ പ്രശ്‌നം നേരിട്ടു. വളരെ മോശം സിഗ്നലുള്ള ഒരിടത്താണ് നിങ്ങളെങ്കിൽ, സിഗ്നൽ ദൃഢത വർദ്ധിക്കുന്നത് വരെ കാത്തിരിക്കുക. തുടർന്ന് വീണ്ടും ശ്രമിക്കുക. പ്രശ്‌നം നിലനിൽക്കുകയാണെങ്കിൽ, <xliff:g id="NUMBER">%1$s</xliff:g> എന്നതിൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9004 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"നിങ്ങളുടെ വോയ്‌സ് മെയിൽബോക്‌സിൽ കണക്‌റ്റുചെയ്യാനാവുന്നില്ല"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"ക്ഷമിക്കണം, നിങ്ങളുടെ വോയ്‌സ് മെയിൽബോക്‌സിൽ കണക്‌റ്റുചെയ്യുന്നതിൽ പ്രശ്‌നം നേരിട്ടു. വളരെ മോശം സിഗ്നലുള്ള ഒരിടത്താണ് നിങ്ങളെങ്കിൽ, സിഗ്നൽ ദൃഢത വർദ്ധിക്കുന്നത് വരെ കാത്തിരിക്കുക. തുടർന്ന് വീണ്ടും ശ്രമിക്കുക. പ്രശ്‌നം നിലനിൽക്കുകയാണെങ്കിൽ, <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9005 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"നിങ്ങളുടെ വോയ്‌സ് മെയിൽബോക്‌സിൽ കണക്‌റ്റുചെയ്യാനാവുന്നില്ല"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"ക്ഷമിക്കണം, നിങ്ങളുടെ വോയ്‌സ് മെയിൽബോക്‌സിൽ കണക്‌റ്റുചെയ്യുന്നതിൽ പ്രശ്‌നം നേരിട്ടു. വളരെ മോശം സിഗ്നലുള്ള ഒരിടത്താണ് നിങ്ങളെങ്കിൽ, സിഗ്നൽ ദൃഢത വർദ്ധിക്കുന്നത് വരെ കാത്തിരിക്കുക. തുടർന്ന് വീണ്ടും ശ്രമിക്കുക. പ്രശ്‌നം നിലനിൽക്കുകയാണെങ്കിൽ, <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9006 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"എന്തോ കുഴപ്പം സംഭവിച്ചു"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"ക്ഷമിക്കണം, ഒരു പ്രശ്‌നമുണ്ടായി. പിന്നീട് വീണ്ടും ശ്രമിക്കുക. പ്രശ്‌നം നിലനിൽക്കുകയാണെങ്കിൽ, <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9007 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"എന്തോ കുഴപ്പം സംഭവിച്ചു"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"ക്ഷമിക്കണം, ഒരു പ്രശ്‌നമുണ്ടായി. പിന്നീട് വീണ്ടും ശ്രമിക്കുക. പ്രശ്‌നം നിലനിൽക്കുകയാണെങ്കിൽ, <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9008 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"എന്തോ കുഴപ്പം സംഭവിച്ചു"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"ക്ഷമിക്കണം, നിങ്ങൾക്കുള്ള സേവനം സജ്ജമാക്കുന്നതിൽ പ്രശ്‌നം നേരിട്ടു. പിന്നീട് വീണ്ടും ശ്രമിക്കുക. പ്രശ്‌നം നിലനിൽക്കുകയാണെങ്കിൽ, <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9009 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"നിങ്ങളുടെ വോയ്‌സ് മെയിൽബോക്‌സിൽ കണക്‌റ്റുചെയ്യാനാവുന്നില്ല"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"ക്ഷമിക്കണം, ഇപ്പോൾ നിങ്ങളുടെ വോയ്‌സ് മെയിൽബോക്‌സുമായി കണക്‌റ്റുചെയ്യാനാവുന്നില്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക. പ്രശ്‌നം നിലനിൽക്കുകയാണെങ്കിൽ, <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9990 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"വോയ്‌സ്‌മെയിൽ സജ്ജീകരിക്കുക"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"നിങ്ങളുടെ അക്കൗണ്ടിൽ വോയ്‌സ്‌മെയിൽ സജ്ജമാക്കിയിട്ടില്ല. <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9991 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"വോയ്‌സ്‌മെയിൽ"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"ഈ ഉപകരണത്തിൽ വിഷ്വൽ വോയ്‌സ്‌മെയിൽ ഉപയോഗിക്കാനാകുന്നില്ല. <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9992 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"എന്തോ കുഴപ്പം സംഭവിച്ചു"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"<xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9993 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ സജ്ജീകരിക്കുന്നത് പൂർത്തിയാക്കാൻ, <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9994 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ സജ്ജീകരിക്കുന്നത് പൂർത്തിയാക്കാൻ, <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9995 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ സജീവമാക്കാൻ, <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9996 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"എന്തോ കുഴപ്പം സംഭവിച്ചു"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ സജ്ജീകരിക്കുന്നത് പൂർത്തിയാക്കാൻ, <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9998 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ പ്രവർത്തനരഹിതമാക്കി"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ സജീവമാക്കാൻ <xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെടുക."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"എന്തോ കുഴപ്പം സംഭവിച്ചു"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"<xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9997 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"എന്തോ കുഴപ്പം സംഭവിച്ചു"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"<xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9989 ആണെന്ന് പറയുക."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"എന്തോ കുഴപ്പം സംഭവിച്ചു"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"<xliff:g id="NUMBER">%1$s</xliff:g>-ൽ ഉപയോക്തൃ സേവനവുമായി ബന്ധപ്പെട്ട്, പിശക് കോഡ് 9999 ആണെന്ന് പറയുക."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ ഓണാക്കുക"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nവിഷ്വൽ വോയ്‌സ് മെയിൽ ഓണാക്കുന്നതിലൂടെ നിങ്ങൾ Verizon Wireless-ന്‍റെ നിബന്ധനകളും വ്യവസ്ഥകളും അംഗീകരിക്കുന്നു:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ ഓണാക്കുക"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"വോയ്‌സ്‌മെയിലിൽ ‌വിളിക്കാതെ തന്നെ, സന്ദേശങ്ങൾ കാണുക, കേൾക്കുക. Google-ന്‍റെ സൗജന്യ ട്രാൻസ്‌ക്രിപ്ഷൻ സേവനമാണ് നിങ്ങളുടെ വോയ്‌സ്‌മെയിലിന്‍റെ ട്രാൻസ്‌ക്രിപ്റ്റുകൾ നൽകുന്നത്. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"വോയ്‌സ്‌മെയിലിൽ ‌വിളിക്കാതെ തന്നെ, സന്ദേശങ്ങൾ കാണുക, കേൾക്കുക. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"കൂടുതലറിയുക"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"നിബന്ധനകളും വ്യവസ്ഥകളും നിരസിക്കപ്പെട്ടാൽ വിഷ്വൽ വോയ്‌സ്‌ മെയിൽ പ്രവർത്തനരഹിതമാവും."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"വിഷ്വൽ വോയ്‌സ്‌‌മെയിൽ പ്രവർത്തനരഹിതമാക്കുക"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"നിബന്ധനകളും വ്യവസ്ഥകളും നിരസിക്കപ്പെടുകയാണെങ്കിൽ വിഷ്വൽ വോയ്‌സ്‌മെയിൽ ട്രാൻസ്‌ക്രിപ്‌ഷൻ പ്രവർത്തനരഹിതമാക്കും."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"വോയ്‌സ്‌മെയിൽ ട്രാൻസ്‌ക്രിപ്‌ഷൻ പ്രവർത്തനരഹിതമാക്കുക"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"*86-ൽ വിളിച്ച്‌ മാത്രമേ വോയ്‌സ്‌മെയിൽ ആക്‌സസ്‌ ചെയ്യാനാവൂ. തുടരാൻ, പുതിയൊരു വോയ്‌സ്‌മെയിൽ പിൻ‌ നമ്പർ‌ സജ്ജമാക്കുക."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"പിൻ സജ്ജമാക്കുക"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-mn/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-mn/strings.xml
deleted file mode 100644
index f1c284d..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-mn/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Уншиж болох дуут шууданг идэвхжүүлж байна"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Уншиж болох дуут шууданг бүрэн идэвхжүүлэхээс өмнө танд дуут шуудангийн мэдэгдэл ирэхгүй байж магадгүй. Дуут шууданг бүрэн идэвхжих хүртэл шинэ зурвас авахын тулд дуут шуудан руу залгана уу."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Уншиж болох дуут шууданг идэвхжүүлэх боломжгүй"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Утасны мобайл холболт байгаа эсэхийг шалгаад дахин оролдоно уу."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Нислэгийн горимыг идэвхгүй болгоод дахин оролдоно уу."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Холболт байхгүй"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Шинэ дуут шуудангийн талаар танд мэдэгдэхгүй. Хэрэв та Wi-Fi-тай холбогдсон бол одоо синк хийж дуут шуудангаа шалгана уу."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Шинэ дуут шуудангийн талаар танд мэдэгдэхгүй. Дуут шуудангаа синк хийхийн тулд нислэгийн горимыг идэвхгүй болгоно уу."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Дуут шууданг шалгахын тулд таны утсанд мобайл датаны холболт шаардлагатай."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Уншиж болох дуут шууданг идэвхжүүлэх боломжгүй"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Та дуут шууданг дуудлага хийж сонсох боломжтой хэвээр байна."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Уншиж болох дуут шууданг шинэчлэх боломжгүй"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Та Wi-Fi эсвэл мобайл холболт илүү сайн үед дахин оролдоно уу. Та дуудлага хийж дуут шуудангаа сонсох боломжтой хэвээр байна."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Таны мобайл датаны холболт илүү сайн үед дахин оролдоно уу. Та дуудлага хийж дуут шуудангаа сонсох боломжтой хэвээр байна."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Уншиж болох дуут шууданг шинэчлэх боломжгүй"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Та дуудлага хийж дуут шуудангаа сонсох боломжтой хэвээр байна."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Уншиж болох дуут шууданг шинэчлэх боломжгүй"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Та дуудлага хийж дуут шуудангаа сонсох боломжтой хэвээр байна."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Уншиж болох дуут шууданг шинэчлэх боломжгүй"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Та дуудлага хийж дуут шуудангаа сонсох боломжтой хэвээр байна."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Уншиж болох дуут шууданг шинэчлэх боломжгүй"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Та дуудлага хийж дуут шуудангаа сонсох боломжтой хэвээр байна."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Ирсэн имэйл хайрцаг бараг дүүрсэн"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Ирсэн имэйл хайрцаг дүүрсэн бол та шинэ дуут шуудан хүлээж авах боломжгүй."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Шинэ дуут шуудан хүлээж авах боломжгүй"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Таны ирсэн имэйл хайрцаг дүүрэн байна. Шинэ дуут шуудан авахын тулд зарим зурвасыг устгаж үзнэ үү."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Гадаад хадгалах сан болон нөөцлөлтийг асаана уу"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Таны имэйл хайрцаг дүүрсэн байна. Сул зай гаргахын тулд гадаад хадгалах санг асааж өөрийн дуут шуудангийн зурвасуудыг удирдах, нөөцлөх боломжийг Google-д олгоно уу."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Гадаад хадгалах сан болон нөөцлөлтийг асаана уу"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Таны имэйл хайрцаг бараг дүүрсэн байна. Сул зай гаргахын тулд гадаад хадгалах санг асааж өөрийн дуут шуудангийн зурвасуудыг удирдах, нөөцлөх боломжийг Google-д олгоно уу."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Өөрийн дуут шуудангийн PIN-г тохируулна уу"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Та дуут шуудандаа хандахаар дуудлага хийх бүрт дуут шуудангийн PIN шаардлагатай болно."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Нислэгийн горимын тохиргоо"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN тохируулах"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Дахин оролдоно уу"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Асаах"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Үгүй, баярлалаа"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Синк"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Дуут шуудан руу залгах"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Хэрэглэгчийн Дэмжлэг рүү залгах"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Ямар нэг алдаа гарсан байна"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Уучлаарай, гэнэтийн алдаа гарлаа. Дараа дахин оролдоно уу. Хэрэв асуудал хэвээр байвал Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9001 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Ямар нэг алдаа гарсан байна"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Уучлаарай, гэнэтийн алдаа гарлаа. Дараа дахин оролдоно уу. Хэрэв асуудал хэвээр байвал Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9002 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Ямар нэг алдаа гарлаа"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Уучлаарай, гэнэтийн алдаа гарлаа. Дараа дахин оролдоно уу. Хэрэв асуудал хэвээр байвал Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9003 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Таны Дуут шуудангийн хайрцагтай холбогдох боломжгүй"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Уучлаарай, таны дуут шуудангийн хайрцагтай холбогдоход асуудалтай байна. Хэрэв та холболтын дохио сул газар байгаа бол дохио сайн болтол хүлээгээд дахин оролдоно уу. Хэрэв асуудал хэвээр байвал Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9004 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Таны Дуут шуудангийн хайрцагтай холбогдох боломжгүй"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Уучлаарай, таны дуут шуудангийн хайрцагтай холбогдоход асуудалтай байна. Хэрэв та холболтын дохио сул газар байгаа бол дохио сайн болтол хүлээгээд дахин оролдоно уу. Хэрэв асуудал хэвээр байвал Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9005 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Таны Дуут шуудангийн хайрцагтай холбогдох боломжгүй"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Уучлаарай, таны дуут шуудангийн хайрцагтай холбогдоход асуудалтай байна. Хэрэв та холболтын дохио сул газар байгаа бол дохио сайн болтол хүлээгээд дахин оролдоно уу. Хэрэв асуудал хэвээр байвал Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9006 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Ямар нэг алдаа гарлаа"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Уучлаарай, гэнэтийн алдаа гарлаа. Дараа дахин оролдоно уу. Хэрэв асуудал хэвээр байвал Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9007 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Ямар нэг алдаа гарлаа"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Уучлаарай, гэнэтийн алдаа гарлаа. Дараа дахин оролдоно уу. Хэрэв асуудал хэвээр байвал Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9008 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Ямар нэг алдаа гарлаа"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Уучлаарай, таны үйлчилгээг тохируулах явцад алдаа гарлаа. Дараа дахин оролдоно уу. Хэрэв асуудал хэвээр байвал Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9009 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Таны Дуут шуудангийн хайрцагтай холбогдох боломжгүй"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Уучлаарай, таны дуут шуудангийн хайрцагтай холбогдох явцад алдаа гарлаа. Дараа дахин оролдоно уу. Хэрэв асуудал хэвээр байвал Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9990 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Дуут шуудан тохируулах"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Таны бүртгэлд дуут шууданг тохируулаагүй байна. Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9991 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Дуут шуудан"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Энэ төхөөрөмж дээр уншиж болох дуут шууданг ашиглах боломжгүй. Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9992 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Ямар нэг алдаа гарлаа"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9993 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Уншиж болох дуут шуудан"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Уншиж болох дуут шуудангийн тохируулгыг дуусгахын тулд Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9994 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Уншиж болох дуут шуудан"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Уншиж болох дуут шуудангийн тохируулгыг дуусгахын тулд Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9994 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Уншиж болох дуут шуудан"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Уншиж болох дуут шууданг идэвхжүүлэхийн тулд Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9996 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Ямар нэг алдаа гарлаа"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Уншиж болох дуут шуудангийн тохируулгыг дуусгахын тулд Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9998 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Уншиж болох дуут шууданг идэвхгүй болгосон"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Уншиж болох дуут шууданг идэвхжүүлэхийн тулд Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу холбоо барина уу."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Ямар нэг алдаа гарлаа"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9997 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Ямар нэг алдаа гарлаа"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9989 гэж хэлнэ үү."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Ямар нэг алдаа гарлаа"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Хэрэглэгчийн үйлчилгээ <xliff:g id="NUMBER">%1$s</xliff:g> руу залгаж алдааны код 9999 гэж хэлнэ үү."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Уншиж болох дуут шууданг асаах"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nУншиж болох дуут шууданг нээснээр та Verizon Wireless үйлчилгээний нөхцөл, болзлыг зөвшөөрнө:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Уншиж болох дуут шууданг идэвхжүүлэх"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Дуут шуудан руу залгахгүйгээр зурвасуудаа харах, сонсох боломжтой. Таны дуут шуудангийн сийрүүлгийг Google-н үнэгүй орчуулгын үйлчилгээ үзүүлж байна. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Дуутан шуудан руу залгах шаардлагагүйгээр зурваснуудаа харах, сонсох боломжтой:"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Дэлгэрэнгүй үзэх"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Нөхцөлийг зөвшөөрөхгүй бол уншиж болохуйц дуут шууданг идэвхгүй болгоно."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Уншиж болохуйц дуут шууданг идэвхгүй болгох"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Нөхцөлийг зөвшөөрөхгүй бол дуут шуудан сийрүүлэхийг идэвхгүй болгоно."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Дуут шуудан сийрүүлэхийг идэвхгүй болгох"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Дуут шууданд зөвхөн *86 руу залгаж хандах боломжтой. Үргэлжлүүлэхийн тулд шинэ дуут шуудангийн PIN тохируулна уу."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN тохируулах"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-mr/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-mr/strings.xml
deleted file mode 100644
index 68842e9..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-mr/strings.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"दृश्‍यमान व्हॉइसमेल सक्रिय करीत आहे"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"व्हिज्युअल व्हॉइसमेल पूर्णपणे सक्रिय होईपर्यंत आपल्याला व्हॉइसमेल सूचना प्राप्त होऊ शकत नाहीत. व्हॉइसमेल पूर्णपणे सक्रिय होईपर्यंत नवीन संदेश पुनर्प्राप्त करण्यासाठी व्हॉइसमेल बोलवा."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"दृश्‍यमान व्हॉइसमेल सक्रिय करू शकत नाही"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"आपल्या फोनमध्‍ये मोबाइल नेटवर्क कनेक्शन आहे याची खात्री करा आणि पुन्हा प्रयत्न करा."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"विमान मोड बंद करा आणि पुन्हा प्रयत्न करा."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"कोणतेही कनेक्शन नाही"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"आपल्याला नवीन व्हॉइसमेलसाठी सूचित केले जाणार नाही. आपण वाय-फाय वर असल्यास, आपण आता संकालित करून व्हॉइसमेल तपासू शकता."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"आपल्याला नवीन व्हॉइसमेलसाठी सूचित केले जाणार नाही. आपला व्हॉइसमेल संकालित करण्यासाठी विमान मोड बंद करा."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"व्हॉइसमेल तपासण्यासाठी आपल्या फोनसाठी मोबाइल डेटा कनेक्शनची आवश्यकता आहे."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"दृश्‍यमान व्हॉइसमेल सक्रिय करू शकत नाही"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"आपण व्हॉइसमेल तपासण्यासाठी अद्याप कॉल करू शकता."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"दृश्यमान व्हॉइसमेल अपडेट करू शकत नाही"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"आपले वाय‑फाय किंवा मोबाइल डेटा कनेक्शन चांगले असताना पुन्हा प्रयत्न करा. आपण व्हॉइसमेल तपासण्‍यासाठी अद्याप कॉल करू शकता."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"आपले मोबाइल डेटा कनेक्शन चांगले असताना पुन्हा प्रयत्न करा. आपण  व्हॉइसमेल तपासण्यासाठी अद्याप कॉल करू शकता."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"दृश्यमान व्हॉइसमेल अपडेट करू शकत नाही"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"आपण व्हॉइसमेल तपासण्यासाठी अद्याप कॉल करू शकता."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"दृश्यमान व्हॉइसमेल अपडेट करू शकत नाही"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"आपण व्हॉइसमेल तपासण्यासाठी अद्याप कॉल करू शकता."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"दृश्यमान व्हॉइसमेल अपडेट करू शकत नाही"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"आपण व्हॉइसमेल तपासण्यासाठी अद्याप कॉल करू शकता."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"दृश्यमान व्हॉइसमेल अपडेट करू शकत नाही"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"आपण व्हॉइसमेल तपासण्यासाठी अद्याप कॉल करू शकता."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"इनबॉक्स जवळजवळ भरलेला"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"आपला इनबॉक्स भरलेला असल्यास आपण नवीन व्हॉइसमेल प्राप्त करण्यात सक्षम असणार नाही."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"नवीन व्हॉइसमेल प्राप्त करू शकत नाही"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"आपला इनबॉक्स भरलेला आहे. नवीन व्हॉइसमेल प्राप्त करण्यासाठी काही संदेश हटविण्याचा प्रयत्न करा."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"अतिरिक्त संचय आणि बॅक अप चालू करा"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"आपला मेलबॉक्स पूर्ण भरला आहे. स्थान मोकळे करण्यासाठी, अतिरिक्त संचय चालू करा त्यामुळे Google आपले व्हॉइसमेल संदेश व्यवस्थापित करू शकते आणि त्यांचा बॅक अप घेऊ शकते."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"अतिरिक्त संचय आणि बॅक अप चालू करा"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"आपला मेलबॉक्स जवळजवळ पूर्ण भरला आहे. स्थान मोकळे करण्यासाठी, अतिरिक्त संचय चालू करा त्यामुळे Google आपले व्हॉइसमेल संदेश व्यवस्थापित करू शकते आणि त्यांचा बॅक अप घेऊ शकते."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"आपला व्हॉइसमेल पिन सेट करा"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"आपल्या व्हॉइसमेलमध्ये प्रवेश करण्यासाठी आपण कधीही कॉल करता तेव्हा आपल्याला व्हॉइसमेल पिन आवश्यक असेल."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"विमान मोड सेटिंग्ज"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"पिन सेट करा"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"पुन्‍हा प्रयत्न करा"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"चालू करा"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"नाही, नको"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"संकालित करा"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"व्हॉइसमेलवर कॉल करा"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"ग्राहक समर्थन ला कॉल करा"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"काहीतरी चूक झाली"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"क्षमस्व, आम्हाला एक समस्या आली आहे. कृपया पुन्हा प्रयत्न करा.अद्याप समस्या असल्यास, ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क साधा आणि त्यांना त्रुटी कोड 9001 सांगा."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"काहीतरी चूक झाली"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"क्षमस्व, आम्हाला एक समस्या आली आहे. कृपया पुन्हा प्रयत्न करा.अद्याप समस्या असल्यास, ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क साधा आणि त्यांना त्रुटी कोड 9002 सांगा."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"काहीतरी चूक झाली."</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"क्षमस्व, आम्हाला एक समस्या आली आहे. कृपया पुन्हा प्रयत्न करा.अद्याप समस्या असल्यास, ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क साधा आणि त्यांना त्रुटी कोड 9003 सांगा."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"आपल्या व्हाईस मेलबॉक्सशी कनेक्ट करू शकत नाही"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"क्षमस्व, आम्हाला आपल्या व्हाईस मेलबॉक्सशी कनेक्ट करताना समस्या येत आहे. आपण निकृष्ट  सिग्नल ताकद क्षेत्रात असल्यास, आपण सशक्त सिग्नल होईपर्यंत प्रतीक्षा करावी आणि पुन्हा प्रयत्न करावा.अद्याप समस्या असल्यास, ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे साधा आणि त्यांना त्रुटी कोड 9004 सांगा."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"आपल्या व्हाईस मेलबॉक्सशी कनेक्ट करू शकत नाही"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"क्षमस्व, आम्हाला आपल्या व्हाईस मेलबॉक्सशी कनेक्ट करताना समस्या येत आहे. आपण निकृष्ट सिग्नल ताकद क्षेत्रात असल्यास, आपण सशक्त सिग्नल होईपर्यंत प्रतीक्षा करावी आणि पुन्हा प्रयत्न करावा.अद्याप समस्या असल्यास, ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे साधा आणि त्यांना त्रुटी कोड 9005 सांगा."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"आपल्या व्हाईस मेलबॉक्सशी कनेक्ट करू शकत नाही"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"क्षमस्व, आम्हाला आपल्या व्हाईस मेलबॉक्सशी कनेक्ट करताना समस्या येत आहे. आपण निकृष्ट सिग्नल ताकद क्षेत्रात असल्यास, आपण सशक्त सिग्नल होईपर्यंत प्रतीक्षा करावी आणि पुन्हा प्रयत्न करावा.अद्याप समस्या असल्यास, ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे साधा आणि त्यांना त्रुटी कोड 9006 सांगा."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"काहीतरी चूक झाली."</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"क्षमस्व, आम्हाला एक समस्या आली आहे. कृपया पुन्हा प्रयत्न करा.अद्याप समस्या असल्यास, ग्राहक सेवा संपर्काशी  <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क साधा आणि त्यांना त्रुटी कोड 9007 सांगा."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"काहीतरी चूक झाली"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"क्षमस्व, आम्हाला एक समस्या आली आहे. कृपया पुन्हा प्रयत्न करा.अद्याप समस्या असल्यास, ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क साधा आणि त्यांना त्रुटी कोड 9008 सांगा."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"काहीतरी चूक झाली"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"क्षमस्व, आम्हाला आपल्या सेवा सेट करताना समस्या येत आहेत. कृपया पुन्हा प्रयत्न करा. अद्याप  समस्या येत असल्यास, ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क साधा आणि त्यांना त्रुटी कोड 9009 सांगा."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"आपल्या व्हाईस मेलबॉक्सशी कनेक्ट करू शकत नाही"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"क्षमस्व, आम्हाला आपल्या सेवा सेट करताना समस्या येत आहेत. कृपया पुन्हा प्रयत्न करा. अद्याप समस्या येत असल्यास, ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क साधा आणि त्यांना त्रुटी कोड 9990 सांगा."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"व्हॉइसमेल सेट अप करा"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"व्हॉइसमेल आपल्या खात्यावर सेट केलेली नाही.  ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे साधा आणि त्यांना त्रुटी कोड 9991 सांगा."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"व्हॉइसमेल"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"व्हिज्युअल व्हॉइसमेल या डिव्हाइसवर वापरला जाऊ शकत नाही. ग्राहक सेवेशी <xliff:g id="NUMBER">%1$s</xliff:g> वर संपर्क साधा आणि त्यांना एरर कोड 9992 असल्याचे सांगा."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"काहीतरी चूक झाली"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क साधा आणि त्यांना त्रुटी कोड 9993 सांगा."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"व्हिज्युअल व्हॉइसमेल"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"व्हिज्युअल व्हॉइसमेल सेट अप पूर्ण करण्यासाठी कृपया, ग्राहक सेवेशी <xliff:g id="NUMBER">%1$s</xliff:g> वर संपर्क साधा आणि त्यांना एरर कोड 9994 असल्याचे सांगा."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"व्हिज्युअल व्हॉइसमेल"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"व्हिज्युअल व्हॉइसमेल सेटअप पूर्ण करण्यासाठी, ग्राहक सेवेशी <xliff:g id="NUMBER">%1$s</xliff:g> वर संपर्क साधा आणि त्यांना एरर कोड 9995 सांगा."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"व्हिज्युअल व्हॉइसमेल"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"व्हिज्युअल व्हॉइसमेल चालू करण्यासाठी कृपया, ग्राहक सेवेशी <xliff:g id="NUMBER">%1$s</xliff:g> वर संपर्क साधा आणि त्यांना एरर कोड 9996 असल्याचे सांगा."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"काहीतरी चूक झाली"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"व्हिज्युअल व्हॉइसमेलचा सेट अप पूर्ण करण्यासाठी कृपया ग्राहक सेवेशी <xliff:g id="NUMBER">%1$s</xliff:g> वर संपर्क साधा आणि त्यांना एरर कोड 9998 असल्याचे सांगा."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"व्हिज्युअल व्हॉइसमेल बंद केलेले आहे"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"व्हिज्युअल व्हॉइसमेल सक्रिय करण्यासाठी ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क साधा."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"काहीतरी चूक झाली."</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क साधा आणि त्यांना त्रुटी कोड 9997 सांगा."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"काहीतरी चूक झाली."</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क  साधा आणि त्यांना त्रुटी कोड 9989 सांगा."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"काहीतरी चूक झाली."</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"ग्राहक सेवा संपर्काशी <xliff:g id="NUMBER">%1$s</xliff:g> येथे संपर्क साधाा आणि त्यांना त्रुटी कोड 9999 सांगा."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"व्हिज्युअल व्हॉइसमेल चालू करा"</string>
-    <!-- String.format failed for translation -->
-    <!-- no translation found for verizon_terms_and_conditions_message (115838469000232781) -->
-    <skip />
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"व्हिज्युअल व्हॉइसमेल चालू करा"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <!-- String.format failed for translation -->
-    <!-- no translation found for dialer_terms_and_conditions_1.0 (9151400923645683073) -->
-    <skip />
-    <!-- String.format failed for translation -->
-    <!-- no translation found for dialer_terms_and_conditions_for_verizon_1.0 (4354228864875417888) -->
-    <skip />
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"अधिक जाणून घ्या"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"अटी आणि नियम नाकारल्या गेल्यास व्हिज्युअल व्हॉइसमेल अक्षम केले जाईल."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"व्हिज्युअल व्हॉइसमेल अक्षम करा"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"अटी आणि नियम नाकारल्यास व्हॉइसमेल प्रतिलेखन अक्षम केले जाईल."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"व्हॉइसमेल प्रतिलेखन अक्षम करा"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"व्हॉइसमेल केवळ *86 वर कॉल करून प्रवेश करण्यायोग्य असेल. सुरू ठेवण्यासाठी नवीन व्हॉइसमेल पिन सेट करा."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"पिन सेट करा"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ms/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ms/strings.xml
deleted file mode 100644
index e0b4e1a..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ms/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Mengaktifkan mel suara visual"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Anda mungkin tidak menerima pemberitahuan mel suara sehingga mel suara visual diaktifkan sepenuhnya. Panggil mel suara untuk mengambil mesej baharu sehingga mel suara diaktifkan sepenuhnya."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Tidak dapat mengaktifkan mel suara visual"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Pastikan telefon anda mempunyai sambungan rangkaian mudah alih, kemudian cuba lagi."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Matikan mod pesawat, kemudian cuba lagi."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Tiada sambungan"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Anda tidak akan dimaklumi tentang mel suara baharu. Jika anda menggunakan Wi-Fi, anda boleh menyemak mel suara dengan menyegerak sekarang."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Anda tidak akan diberitahu tentang mel suara baharu. Matikan mod pesawat untuk menyegerakkan mel suara anda."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Telefon anda memerlukan sambungan data mudah alih untuk menyemak mel suara."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Tidak dapat mengaktifkan mel suara visual"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Anda masih dapat membuat panggilan untuk menyemak mel suara."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Tidak dapat mengemas kini mel suara visual"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Cuba lagi apabila sambungan Wi-Fi atau data mudah alih anda lebih bagus. Anda masih dapat membuat panggilan untuk menyemak mel suara."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Cuba lagi apabila sambungan data mudah alih anda lebih bagus. Anda masih dapat membuat panggilan untuk menyemak mel suara."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Tidak dapat mengemas kini mel suara visual"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Anda masih dapat membuat panggilan untuk menyemak mel suara."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Tidak dapat mengemas kini mel suara visual"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Anda masih dapat membuat panggilan untuk menyemak mel suara."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Tidak dapat mengemas kini mel suara visual"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Anda masih dapat membuat panggilan untuk menyemak mel suara."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Tidak dapat mengemas kini mel suara visual"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Anda masih dapat membuat panggilan untuk menyemak mel suara."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Peti masuk hampir penuh"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Anda tidak akan dapat menerima mel suara baharu jika peti masuk anda penuh."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Tidak dapat menerima mel suara baharu"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Peti masuk anda penuh. Cuba padamkan beberapa mesej untuk menerima mel suara baharu."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Hidupkan storan tambahan dan sandaran"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Peti mel anda penuh. Untuk mengosongkan ruang, hidupkan storan tambahan supaya Google boleh mengurus dan menyandarkan mesej mel suara anda."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Hidupkan storan tambahan dan sandaran"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Peti mel anda hampir penuh. Untuk mengosongkan ruang, hidupkan storan tambahan supaya Google boleh mengurus dan menyandarkan mesej mel suara anda."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Tetapkan PIN mel suara anda"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Anda memerlukan PIN mel suara setiap kali anda memanggil untuk mengakses mel suara anda."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Tetapan Mod Pesawat"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Tetapkan PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Cuba Lagi"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Hidupkan"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Tidak, Terima Kasih"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Segerakkan"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Panggil Mel Suara"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Panggil Sokongan Pelanggan"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Berlaku Kesilapan"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Harap maaf, kami menghadapi masalah. Sila cuba sebentar lagi. Jika masih terdapat masalah, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Berlaku Kesilapan"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Harap maaf, kami menghadapi masalah. Sila cuba sebentar lagi. Jika masih terdapat masalah, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Berlaku Kesilapan"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Harap maaf, kami menghadapi masalah. Sila cuba sebentar lagi. Jika masih terdapat masalah, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Tidak Dapat Menyambung ke Peti Mel Suara Anda"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Harap maaf, kami menghadapi masalah menyambung ke peti mel suara anda. Jika isyarat lemah di kawasan anda, sila tunggu sehingga isyarat kuat dan cuba lagi. Jika masih terdapat masalah, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Tidak Dapat Menyambung ke Peti Mel Suara Anda"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Harap maaf, kami menghadapi masalah menyambung ke peti mel suara anda. Jika isyarat lemah di kawasan anda, sila tunggu sehingga isyarat kuat dan cuba lagi. Jika masih terdapat masalah, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Tidak Dapat Menyambung ke Peti Mel Suara Anda"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Harap maaf, kami menghadapi masalah menyambung ke peti mel suara anda. Jika isyarat lemah di kawasan anda, sila tunggu sehingga isyarat kuat dan cuba lagi. Jika masih terdapat masalah, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Berlaku Kesilapan"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Harap maaf, kami menghadapi masalah. Sila cuba sebentar lagi. Jika masih terdapat masalah, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Berlaku Kesilapan"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Harap maaf, kami menghadapi masalah. Sila cuba sebentar lagi. Jika masih terdapat masalah, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Berlaku Kesilapan"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Harap maaf, kami menghadapi masalah menyediakan perkhidmatan anda. Sila cuba sebentar lagi. Jika masih terdapat masalah, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Tidak Dapat Menyambung ke Peti Mel Suara Anda"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Harap maaf, kami tidak dapat menyambung ke peti mel suara anda pada masa ini. Sila cuba sebentar lagi. Jika masih terdapat masalah, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Sediakan Mel Suara"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Mel suara tidak disediakan pada akaun anda. Sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Mel suara"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Mel Suara Visual tidak dapat digunakan pada peranti ini. Sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Berlaku Kesilapan"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Mel suara visual"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Untuk melengkapkan persediaan mel suara visual, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Mel suara visual"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Untuk melengkapkan persediaan mel suara visual, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Mel suara visual"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Untuk mengaktifkan mel suara visual, sila hubungi Khidmat Pelanggan di <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Berlaku Kesilapan"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Untuk melengkapkan persediaan mel suara visual, sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Mel suara visual dilumpuhkan"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> untuk mengaktifkan mel suara visual."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Berlaku Kesilapan"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka bahawa kod ralatnya ialah 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Berlaku Kesilapan"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Berlaku Kesilapan"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Sila hubungi Khidmat Pelanggan melalui <xliff:g id="NUMBER">%1$s</xliff:g> dan beritahu mereka kod ralatnya ialah 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Hidupkan Mel Suara Visual"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nDengan menghidupkan Mel Suara Visual, anda bersetuju menerima terma dan syarat Verizon Wireless :\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Hidupkan mel suara visual"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Lihat dan dengar mesej anda tanpa memanggil mel suara. Transkrip mel suara anda disediakan oleh perkhidmatan percuma Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Lihat dan dengar mesej anda tanpa memanggil mel suara. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Ketahui lebih lanjut"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Mel suara visual akan dilumpuhkan jika terma dan syarat ditolak."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Lumpuhkan mel suara visual"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Transkripsi mel suara akan dilumpuhkan jika terma dan syarat ditolak."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Lumpuhkan transkripsi mel suara"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Mel suara hanya dapat diakses dengan memanggil *86. Tetapkan PIN mel suara baharu untuk meneruskan."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Tetapkan PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-my/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-my/strings.xml
deleted file mode 100644
index 2e86c13..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-my/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"မြင်နိုင်သောအသံမေးလ်ကို ဖွင့်နေသည်"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"မြင်ရသောအသံမေးလ်ကို အပြည့်အဝစမဖွင့်သရွေ့ အသံမေးလ်အကြောင်းကြားချက်များကို လက်ခံရရှိနိုင်မည်မဟုတ်ပါ။ အသံမေးလ်ကို အပြည့်အဝစဖွင့်မပြီးမချင်း မက်ဆေ့ဂျ်အသစ်များရယူရန် အသံမေးလ်ခေါ်ဆိုပါ။"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"မြင်ရသောအသံမေးလ်ကို ဖွင့်၍မရပါ"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"သင့်ဖုန်းတွင် မိုဘိုင်းကွန်ရက် ချိတ်ဆက်မှုရှိကြောင်း စစ်ဆေး၍ ထပ်စမ်းကြည့်ပါ။"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"လေယာဉ်ပျံမုဒ်ပိတ်၍ ထပ်စမ်းကြည့်ပါ။"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"ချိတ်ဆက်မှုမရှိပါ"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"အသံမေးလ်အသစ်များအတွက် သင့်ကို အကြောင်းကြားလိမ့်မည်မဟုတ်ပါ။ Wi-Fi သုံးနေပါက ယခုပင် စင့်ခ်လုပ်ခြင်းဖြင့် အသံမေးလ်ကို စစ်ဆေးနိုင်ပါသည်။"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"အသံမေးလ်အသစ်များအတွက် သင့်ကို အကြောင်းကြားလိမ့်မည်မဟုတ်ပါ။ သင့်အသံမေးလ်ပြိုင်တူညှိရန် လေယာဉ်ပျံမုဒ်ပိတ်ပါ။"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"အသံမေးလ်စစ်ရန်အတွက် သင့်ဖုန်းတွင် မိုဘိုင်းဒေတာချိတ်ဆက်မှုတစ်ခု လိုပါသည်။"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"မြင်ရသောအသံမေးလ် ဖွင့်၍မရပါ"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"အသံမေးလ်စစ်ရန်အတွက် ဖုန်းခေါ်နိုင်ပါသေးသည်။"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"မြင်ရသောအသံမေးလ်ကို အပ်ဒိတ်လုပ်၍မရပါ"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"သင်၏ Wi-Fi (သို့) မိုဘိုင်းဒေတာချိတ်ဆက်မှု လိုင်းပိုကောင်းမှ ထပ်စမ်းကြည့်ပါ။ အသံမေးလ်စစ်ရန်အတွက် ဖုန်းခေါ်နိုင်ပါသေးသည်။"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"သင်၏ မိုဘိုင်းဒေတာ ချိတ်ဆက်မှု လိုင်းပိုကောင်းမှ ထပ်စမ်းကြည့်ပါ။ အသံမေးလ်စစ်ရန်အတွက် ဖုန်းခေါ်နိုင်ပါသေးသည်။"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"မြင်ရသောအသံမေးလ်ကို အပ်ဒိတ်လုပ်၍မရပါ"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"အသံမေးလ်စစ်ရန်အတွက် ဖုန်းခေါ်နိုင်ပါသေးသည်။"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"မြင်ရသောအသံမေးလ်ကို အပ်ဒိတ်လုပ်၍မရပါ"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"အသံမေးလ်စစ်ရန်အတွက် ဖုန်းခေါ်နိုင်ပါသေးသည်။"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"မြင်ရသောအသံမေးလ်ကို အပ်ဒိတ်လုပ်၍မရပါ"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"အသံမေးလ်စစ်ရန်အတွက် ဖုန်းခေါ်နိုင်ပါသေးသည်။"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"မြင်ရသောအသံမေးလ်ကို အပ်ဒိတ်လုပ်၍မရပါ"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"အသံမေးလ်စစ်ရန်အတွက် ဖုန်းခေါ်နိုင်ပါသေးသည်။"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"ဝင်စာပြည့်ခါနီးပြီ"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"သင့်ဝင်စာပြည့်နေပါက အသံမေးလ်အသစ်များ လက်ခံရယူနိုင်မည်မဟုတ်ပါ။"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"အသံမေးလ်အသစ် လက်ခံ၍မရပါ"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"သင့်ဝင်စာပြည့်နေပါသည်။ အသံမေးလ်အသစ်များ လက်ခံရယူနိုင်ရန် မက်ဆေ့ဂျ်အချို့ဖျက်ကြည့်ပါ။"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"အပိုသိုလှောင်မှုနှင့် မိတ္တူ ဖွင့်ရန်"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"သင့်ဝင်စာ ပြည့်နေပါပြီ။ နေရာလွတ်ရရှိရန်အတွက် Google က သင်၏အသံမေးလ်မက်ဆေ့ဂျ်များကို စီမံခန့်ခွဲပြီး မိတ္တူကူးနိုင်ရန် အပိုသိုလှောင်မှုကို ဖွင့်ပါ။"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"အပိုသိုလှောင်မှုနှင့် မိတ္တူ ဖွင့်ရန်"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"သင့်ဝင်စာ ပြည့်လုပါပြီ။ နေရာလွတ်ရရှိရန်အတွက် Google က သင်၏အသံမေးလ်မက်ဆေ့ဂျ်များကို စီမံခန့်ခွဲပြီး မိတ္တူကူးနိုင်ရန် အပိုသိုလှောင်မှုကို ဖွင့်ပါ။"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"သင်၏အသံမေးလ်ပင်နံပါတ် သတ်မှတ်ပါ"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"သင်၏အသံမေးလ်ကို သုံးစွဲရန်အတွက် သင်ခေါ်ဆိုသည့်အခါတိုင်း အသံမေးလ်ပင်နံပါတ်တစ်ခု လိုအပ်ပါမည်။"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"လေယာဉ်ပျံမုဒ်ဆက်တင်များ"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"ပင်နံပါတ်သတ်မှတ်ပါ"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"ထပ်စမ်းကြည့်ရန်"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"ဖွင့်ရန်"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"မလိုပါ"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"ပြိုင်တူညှိရန်"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"အသံမေးလ်ခေါ်ဆိုရန်"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"သုံးစွဲသူဝန်ဆောင်ရေးကို ခေါ်ဆိုရန်"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"တစ်စုံတစ်ခု လွဲချော်နေပါသည်"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"ပြဿနာတစ်ခုရှိနေသဖြင့် တောင်းပန်ပါသည်။ နောက်မှထပ်စမ်းကြည့်ပါ။ ပြဿနာရှိနေသေးပါက သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၀၀၁ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"တစ်စုံတစ်ခု လွဲချော်နေပါသည်"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"ပြဿနာတစ်ခုရှိနေသဖြင့် တောင်းပန်ပါသည်။ နောက်မှထပ်စမ်းကြည့်ပါ။ ပြဿနာရှိနေသေးပါက သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၀၀၂ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"တစ်စုံတစ်ခု လွဲချော်နေပါသည်"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"ပြဿနာတစ်ခုရှိနေသဖြင့် တောင်းပန်ပါသည်။ နောက်မှထပ်စမ်းကြည့်ပါ။ ပြဿနာရှိနေသေးပါက သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၀၀၃ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"သင့်အသံဝင်စာနှင့် ချိတ်ဆက်၍မရပါ"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"သင့်အသံဝင်စာနှင့် ချိတ်ဆက်၍မရသောကြောင့် ဝမ်းနည်းပါသည်။ လိုင်းမကောင်းသောနေရာတွင် သင်ရောက်ရှိနေပါက လိုင်းကောင်းသည်အထိစောင့်ပြီးမှ ထပ်စမ်းကြည့်ပါ။ ပြဿနာရှိနေသေးပါက သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၀၀၄ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"သင့်အသံဝင်စာနှင့် ချိတ်ဆက်၍မရပါ"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"သင့်အသံဝင်စာနှင့် ချိတ်ဆက်၍မရသောကြောင့် ဝမ်းနည်းပါသည်။ လိုင်းမကောင်းသောနေရာတွင် သင်ရောက်ရှိနေပါက လိုင်းကောင်းသည်အထိစောင့်ပြီးမှ ထပ်စမ်းကြည့်ပါ။ ပြဿနာရှိနေသေးပါက သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၀၀၅ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"သင့်အသံဝင်စာနှင့် ချိတ်ဆက်၍မရပါ"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"သင့်အသံဝင်စာနှင့် ချိတ်ဆက်၍မရသောကြောင့် ဝမ်းနည်းပါသည်။ လိုင်းမကောင်းသောနေရာတွင် သင်ရောက်ရှိနေပါက လိုင်းကောင်းသည်အထိစောင့်ပြီးမှ ထပ်စမ်းကြည့်ပါ။ ပြဿနာရှိနေသေးပါက သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၀၀၆ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"တစ်စုံတစ်ခု လွဲချော်နေပါသည်"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"ပြဿနာတစ်ခုရှိနေသဖြင့် တောင်းပန်ပါသည်။ နောက်မှထပ်စမ်းကြည့်ပါ။ ပြဿနာရှိနေသေးပါက သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၀၀၇ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"တစ်စုံတစ်ခု လွဲချော်နေပါသည်"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"ပြဿနာတစ်ခုရှိနေသဖြင့် တောင်းပန်ပါသည်။ နောက်မှထပ်စမ်းကြည့်ပါ။ ပြဿနာရှိနေသေးပါက သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၀၀၈ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"တစ်စုံတစ်ခု လွဲချော်နေပါသည်"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"သင့်ဝန်ဆောင်မှုကို ပြင်ဆင်ပေးရာတွင် ပြဿနာတစ်ခုရှိနေသဖြင့် တောင်းပန်ပါသည်။ နောက်မှထပ်စမ်းကြည့်ပါ။ ပြဿနာရှိနေသေးပါက သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၀၀၉ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"သင့်အသံဝင်စာနှင့် ချိတ်ဆက်၍မရပါ"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"သင့်အသံဝင်စာနှင့် ယခုချိတ်ဆက်၍မရသဖြင့် တောင်းပန်ပါသည်။ နောက်မှထပ်စမ်းကြည့်ပါ။ ပြဿနာရှိနေသေးပါက သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၉၉၀ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"အသံမေးလ် စနစ်ထည့်သွင်းခြင်း"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"သင့်အကောင့်တွင် အသံမေးလ်ပြင်ဆင်မထားပါ။ သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၉၉၁ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"အသံမေးလ်"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"ဤစက်ပစ္စည်းတွင် ကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ်ကို သုံး၍မရပါ။ ဝန်ဆောင်မှုဌာနဖုန်း <xliff:g id="NUMBER">%1$s</xliff:g> သို့ ဆက်သွယ်ပြီး အမှားကုဒ်သည် ၉၉၉၂ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"တစ်စုံတစ်ခု လွဲချော်နေပါသည်"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၉၉၃ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"ကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ်"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"ကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ် စနစ်ထည့်သွင်းမှုကို အပြီးသတ်ရန် ဝန်ဆောင်မှုဌာနဖုန်း <xliff:g id="NUMBER">%1$s</xliff:g> သို့ ဆက်သွယ်ပြီး အမှားကုဒ်သည် ၉၉၉၄ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"ကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ်"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"ကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ် စနစ်ထည့်သွင်းမှုကို အပြီးသတ်ရန် ဝန်ဆောင်မှုဌာနဖုန်း <xliff:g id="NUMBER">%1$s</xliff:g> သို့ ဆက်သွယ်ပြီး အမှားကုဒ်သည် ၉၉၉၅ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"ကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ်"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"ကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ်ကို စဖွင့်အသုံးပြုရန် ဝန်ဆောင်မှုဌာနဖုန်း <xliff:g id="NUMBER">%1$s</xliff:g> သို့ ဆက်သွယ်ပြီး အမှားကုဒ်သည် ၉၉၉၆ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"တစ်စုံတစ်ခု လွဲချော်နေပါသည်"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"ကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ် စနစ်ထည့်သွင်းမှုကို အပြီးသတ်ရန် ဝန်ဆောင်မှုဌာနဖုန်း <xliff:g id="NUMBER">%1$s</xliff:g> သို့ ဆက်သွယ်ပြီး အမှားကုဒ်သည် ၉၉၉၈ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"ကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ်ကို ပိတ်ထားပါသည်"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"မြင်ရသောအသံမေးလ်စဖွင့်ရန် သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပါ။"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"တစ်စုံတစ်ခု လွဲချော်နေပါသည်"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၉၉၇ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"တစ်စုံတစ်ခု လွဲချော်နေပါသည်"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၉၈၉ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"တစ်စုံတစ်ခု လွဲချော်နေပါသည်"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"သုံးစွဲသူဝန်ဆောင်ရေးကို <xliff:g id="NUMBER">%1$s</xliff:g> တွင် ဆက်သွယ်ပြီး အမှားအယွင်းကုဒ်သည် ၉၉၉၉ ဖြစ်ကြောင်း ပြောပါ။"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"ကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ်ကို ဖွင့်ခြင်း"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ်ကို ဖွင့်ခြင်းဖြင့် သင်သည် Verizon Wireless စည်းမျဉ်းစည်းကမ်းများ−\n\n%2$s ကို သဘောတူရာ ရောက်ပါသည်"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"ကြည့်ရှုစီမံနိုင်သည့် အသံမေးလ်ကို ဖွင့်ခြင်း"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"အသံမေးလ် ခေါ်ဆိုစရာမလိုဘဲ သင့်မက်ဆေ့ဂျ်များကို ကြည့်ရှုပြီး နားဆင်ပါ။ အသံမေးလ်များအတွက် စာသားပြောင်းခြင်းစနစ်ကို Google ၏ အခမဲ့ စာသားပြောင်းခြင်းဝန်ဆောင်မှုက ပံ့ပိုးပါသည်။ %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"အသံမေးလ် ခေါ်ဆိုစရာမလိုဘဲ သင့်မက်ဆေ့ဂျ်များကို ကြည့်ရှုပြီး နားဆင်ပါ။ %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"ပိုမိုလေ့လာရန်"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"ဝန်ဆောင်မှုဆိုင်ရာစည်းမျဉ်းများကို ငြင်းပယ်ပါက မြင်နိုင်သောအသံမေးလ်ကို ပိတ်ပစ်ပါလိမ့်မည်။"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"မြင်နိုင်သောအသံမေးလ် ပိတ်ပါ"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"ဝန်ဆောင်မှုဆိုင်ရာစည်းမျဉ်းများကို ငြင်းပယ်ပါက အသံမေးလ် စာသားမှတ်တမ်းများကို ပိတ်ပစ်ပါလိမ့်မည်။"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"အသံမေးလ် စာသားမှတ်တမ်းကို ပိတ်ရန်"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"*၈၆ သို့ ခေါ်ဆိုခြင်းဖြင့်သာ အသံမေးလ်ကို ဝင်သုံးနိုင်ပါမည်။ ဆက်သွားရန် အသံမေးလ်ပင်နံပါတ်အသစ်ကို သတ်မှတ်ပါ။"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"ပင်နံပါတ်ကို သတ်မှတ်ပါ"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-nb/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-nb/strings.xml
deleted file mode 100644
index 894473b..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-nb/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Slår på visuell talepostkasse"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Det er ikke sikert at du kan motta talepostvarsler før visuell talepost er fullt aktivert. Ring talepost for å hente nye meldinger før aktiveringen er fullført."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Kan ikke slå på visuell talepost"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Sjekk at telefonen din har mobilforbindelse, og prøv på nytt."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Slå av flymodus og prøv igjen."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Ingen tilkobling"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Du blir ikke varslet om nye talemeldinger. Hvis du er på Wi-Fi, kan du sjekke taleposten ved å synkronisere nå."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Du blir ikke varslet om nye talemeldinger. Slå av flymodus for å synkronisere talepost."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Telefonen må ha mobildataforbindelse for at du skal kunne sjekke talepost."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Kan ikke slå på visuell talepost"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Kan ikke oppdatere visuell talepost"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Prøv på nytt når Wi‑Fi- eller mobildatadekningen er bedre. Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Prøv igjen når mobildatadekningen er bedre. Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Kan ikke oppdatere visuell talepost"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Kan ikke oppdatere visuell talepost"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Kan ikke oppdatere visuell talepost"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Kan ikke oppdatere visuell talepost"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Innboksen er nesten full"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Du kan ikke motta ny talepost hvis innboksen din er full."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Kan ikke motta ny talepost"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Innboksen din er full. Prøv å slette noen meldinger for å motta ny talepost."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Slå på ekstra lagringsplass og sikkerhetskopiering"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Talepostkassen din er full. Frigjør plass ved å slå på ekstra lagringsplass og la Google administrere og ta sikkerhetskopi av taleposten din."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Slå på ekstra lagringsplass og sikkerhetskopiering"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Talepostkassen din er nesten full. Frigjør plass ved å slå på ekstra lagringsplass og la Google administrere og ta sikkerhetskopi av taleposten din."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Angi PIN-koden din for talepost"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Du trenger PIN-koden hver gang du ringer for å sjekke taleposten din."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Flymodus-innstillinger"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Angi PIN-kode"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Prøv på nytt"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Slå på"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nei takk"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synkroniser"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Ring talepostkassen"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Ring kundeservice"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Noe gikk galt"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Beklager, det oppsto et problem. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Noe gikk galt"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Beklager, det oppsto et problem. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Noe gikk galt"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Beklager, det oppsto et problem. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Kan ikke koble til talepostkassen"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Beklager, vi har problemer med å koble til talepostkassen. Hvis du er i et område med dårlig signalstyrke, må du vente til du har et sterkt signal og prøve igjen. Hvis problemet vedvarer, kan du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referere til feilkode 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Kan ikke koble til talepostkassen"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Beklager, vi har problemer med å koble til talepostkassen. Hvis du er i et område med dårlig signalstyrke, må du vente til du har et sterkt signal og prøve igjen. Hvis problemet vedvarer, kan du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referere til feilkode 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Kan ikke koble til talepostkassen"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Beklager, vi har problemer med å koble til talepostkassen. Hvis du er i et område med dårlig signalstyrke, må du vente til du har et sterkt signal og prøve igjen. Hvis problemet vedvarer, kan du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referere til feilkode 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Noe gikk galt"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Beklager, det oppsto et problem. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Noe gikk galt"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Beklager, det oppsto et problem. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Noe gikk galt"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Beklager, vi har problemer med å opprette tjenesten. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Kan ikke koble til talepostkassen"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Beklager, vi kunne ikke koble til talepostkassen akkurat nå. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Konfigurer talepost"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Talepost er ikke satt opp på din konto. Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Talepost"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Visuell talepost kan ikke brukes på denne enheten. Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Noe gikk galt"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visuell talepost"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9994 for å fullføre konfigureringen av visuell talepost."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visuell talepost"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9995 for å fullføre konfigureringen av visuell talepost."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visuell talepost"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9996 for å fullføre konfigureringen av visuell talepost."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Noe gikk galt"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9998 for å fullføre konfigureringen av visuell talepost."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visuell talepost er slått av"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> for å slå på visuell talepost."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Noe gikk galt"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Noe gikk galt"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Noe gikk galt"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Slå på visuell talepost"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nVed å slå på visuell talepost godtar du vilkårene til Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Slå på visuell talepost"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Se og hør meldingene dine, uten å måtte ringe til talepostkassen din. Transskripsjoner av taleposten din utføres av Googles gratis transkripsjonstjeneste. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Se og hør meldingene dine, uten å måtte ringe til talepostkassen din. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Finn ut mer"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Visuell talepost blir slått av hvis vilkårene ikke godtas."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Slå av visuell talepost"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Transkripsjon av talepost blir slått av hvis vilkårene blir avvist."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Slå av transkripsjon av talepost"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Talemeldinger er bare tilgjengelig ved å ringe *86. Angi en ny PIN-kode for å fortsette."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Angi PIN-kode"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ne/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ne/strings.xml
deleted file mode 100644
index b87333f..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ne/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"भिजुअल भ्वाइसमेललाई सक्रिय पार्दै"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"भिजुअल भ्वाइसमेल पूर्णतया सक्रिय नभएसम्म तपाईँलाई भ्वाइसमेलका सूचनाहरू प्राप्त नहुन सक्छन्। भ्वाइसमेल पूर्णतया सक्रिय नहुन्जेल नयाँ सन्देशहरू प्राप्त गर्न भ्वाइसमेल सेवामा कल गर्नुहोस्।"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"भिजुअल भ्वाइस मेललाई सक्रिय पार्न सकिँदैन"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"आफ्नो फोन मोबाइल नेटवर्कमा जडान भएको छ भन्ने निश्चित गर्नुहोस् र फेरि प्रयास गर्नुहोस्।"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"हवाइजहाज मोड बन्द गर्नुहोस् र फेरि प्रयास गर्नुहोस्।"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"जडान छैन"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"तपाईंलाई नयाँ भ्वाइस मेल सम्बन्धी सूचना दिइने छैन। तपाईं Wi-Fi चलाउँदै हुनुहुन्छ भने, अब सिङ्क गरी भ्वाइस मेल जाँच गर्न सक्नुहुन्छ।"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"तपाईंलाई नयाँ भ्वाइस मेल सम्बन्धी सूचना दिइने छैन। आफ्नो भ्वाइस मेल सिङ्क गर्न हवाइजहाज मोड बन्द गर्नुहोस्।"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"भ्वाइस मेल जाँच गर्न तपाईंको फोन मोबाइल डेटामा जडान हुनु आवश्यक हुन्छ।"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"भिजुअल भ्वाइस मेललाई सक्रिय गर्न सकिँदैन"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"तपाईं अझै पनि भ्वाइस मेल जाँच गर्न कल गर्न सक्नुहुन्छ।"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"भिजुअल भ्वाइस मेल अद्यावधिक गर्न सकिँदैन"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"तपाईंको Wi-Fi वा मोबाइल जडान राम्रो भएका बेला पुन: प्रयास गर्नुहोस्। तपाईंले अझै पनि भ्वाइस मेल जाँच गर्न कल गर्न सक्नुहुन्छ।"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"तपाईंको मोबाइल डेटा जडान अझ राम्रो भएका बेला पुन: प्रयास गर्नुहोस्। तपाईंले अझै पनि भ्वाइस मेल जाँच गर्न कल गर्न सक्नुहुन्छ।"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"भिजुअल भ्वाइस मेल अद्यावधिक गर्न सकिँदैन"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"तपाईं अझै पनि भ्वाइस मेल जाँच गर्न कल गर्न सक्नुहुन्छ।"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"भिजुअल भ्वाइस मेल अद्यावधिक गर्न सकिँदैन"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"तपाईं अझै पनि भ्वाइस मेल जाँच गर्न कल गर्न सक्नुहुन्छ।"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"भिजुअल भ्वाइस मेल अद्यावधिक गर्न सकिँदैन"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"तपाईं अझै पनि भ्वाइस मेल जाँच गर्न कल गर्न सक्नुहुन्छ।"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"भिजुअल भ्वाइस मेल अद्यावधिक गर्न सकिँदैन"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"तपाईं अझै पनि भ्वाइस मेल जाँच गर्न कल गर्न सक्नुहुन्छ।"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"इनबक्स लगभग भरिएको छ"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"तपाईंको इनबक्स भरिएको छ भने तपाईंले नयाँ भ्वाइस मेल प्राप्त गर्न सक्नुहुने छैन।"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"नयाँ भ्वाइस मेलहरू प्राप्त गर्न सकिँदैन"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"तपाईँको इनबक्स भरिएको छ। नयाँ भ्वाइस मेलहरू प्राप्त गर्न कृपया केही सन्देशहरू मेटी हेर्नुहोस्।"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"अतिरिक्त भण्डारण र ब्याकअप सेवा सक्रिय पार्नुहोस्"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"तपाईंको मेल बक्स भरिएको छ। ठाउँ खाली गर्न, Google ले तपाईंका भ्वाइस मेल सन्देशहरूको व्यवस्थापन र ब्याकअप गर्न सकोस् भन्नाका खातिर अतिरिक्त भण्डारणलाई सक्रिय पार्नुहोस्।"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"अतिरिक्त भण्डारण र ब्याकअप सेवा सक्रिय पार्नुहोस्"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"तपाईंको मेल बक्स लगभग भरिएको छ। ठाउँ खाली गर्न Google ले तपाईंका भ्वाइस मेल सन्देशहरूको व्यवस्थापन र ब्याकअप गर्न सकोस् भन्नाका खातिर अतिरिक्त भण्डारणलाई सक्रिय पार्नुहोस्।"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"आफ्नो भ्वाइस मेलको PIN सेट गर्नुहोस्"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"तपाईँलाई जुनसुकै समयमा आफ्नो भ्वाइस मेलमा पहुँच गर्न कल गर्दा भ्वाइस मेल PIN को आवश्यकता पर्दछ।"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"हवाइजहाज मोड सेटिङ"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN सेट गर्नुहोस्"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"फेरि प्रयास गर्नुहोस्"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"सक्रिय गर्नुहोस्"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"पर्दैन, धन्यवाद"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"सिंक गर्नुहोस्"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"भ्वाइसमेल सेवामा कल गर्नुहोस्"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"ग्राहक सहायतामा कल गर्नुहोस्"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"केही गडबड भयो"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"माफ गर्नुहोस्, हामी एउटा समस्यामा पर्‍याैँ। कृपया पछि फेरि प्रयास गर्नुहोस्। अझै पनि कुनै समस्या छ भने कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९००१ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"केही गडबड भयो"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"माफ गर्नुहोस्, हामी एउटा समस्यामा पर्‍याैँ। कृपया पछि फेरि प्रयास गर्नुहोस्। अझै पनि कुनै समस्या छ भने कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९००२ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"केही गडबड भयो"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"माफ गर्नुहोस्, हामी एउटा समस्यामा पर्‍याैँ। कृपया पछि फेरि प्रयास गर्नुहोस्। अझै पनि कुनै समस्या छ भने कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९००३ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"तपाईँको भ्वाइस मेलबक्समा जडान गर्न सकिँदैन"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"माफ गर्नुहोस्, हामीलाई तपाईंको भ्वाइस मेलबक्समा जडान गर्दा समस्या भइरहेको छ। यदि तपाईं कमजोर सिग्नल भएको कुनै क्षेत्रमा हुनुहुन्छ भने बलियो सिग्नल नआएसम्म कुर्नुहोस् र फेरि प्रयास गर्नुहोस्। अझै पनि कुनै समस्या छ भने कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९००४ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"तपाईँको भ्वाइस मेलबक्समा जडान गर्न सकिँदैन"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"माफ गर्नुहोस्, हामीलाई तपाईंको भ्वाइस मेलबक्समा जडान गर्न समस्या भइरहेको छ। यदि तपाईं कमजोर सिग्नल भएको कुनै क्षेत्रमा हुनुहुन्छ भने बलियो सिग्नल नआएसम्म कुर्नुहोस् र फेरि प्रयास गर्नुहोस्। अझै पनि कुनै समस्या छ भने कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९००५ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"तपाईँको भ्वाइस मेलबक्समा जडान गर्न सकिँदैन"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"माफ गर्नुहोस्, हामीलाई तपाईंको भ्वाइस मेलबक्समा जडान गर्न समस्या भइरहेको छ। यदि तपाईं कमजोर सिग्नल भएको कुनै क्षेत्रमा हुनुहुन्छ भने बलियो सिग्नल नआएसम्म कुर्नुहोस् र फेरि प्रयास गर्नुहोस्। अझै पनि कुनै समस्या छ भने कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९००६ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"केही गडबड भयो"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"माफ गर्नुहोस्, हामी एउटा समस्यामा पर्‍याैँ। कृपया पछि फेरि प्रयास गर्नुहोस्। अझै पनि कुनै समस्या छ भने कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९००७ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"केही गडबड भयो"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"माफ गर्नुहोस्, हामी एउटा समस्यामा पर्‍याैँ। कृपया पछि फेरि प्रयास गर्नुहोस्। अझै पनि कुनै समस्या छ भने कृपया कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९००८ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"केही गडबड भयो"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"माफ गर्नुहोस्, हामीलाई तपाईँको सेवा सेट अप गर्दा भइरहेको छ। कृपया पछि फेरि प्रयास गर्नुहोस्। अझै पनि कुनै समस्या छ भने कृपया कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९००९ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"तपाईँको भ्वाइस मेलबक्समा जडान गर्न सकिँदैन"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"माफ गर्नुहोस्, हामी यस समय तपाईँको भ्वाइस मेलबक्समा जडान गर्न सक्दैनौँ। कृपया पछि फेरि प्रयास गर्नुहोस्। अझै पनि कुनै समस्या छ भने कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९९९० हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"भ्वाइस मेल सेटअप गर्नुहोस्"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"तपाईँको खातामा भ्वाइसमेल सेट अप गरिएको छैन। कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९९९१ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"भ्वाइस मेल"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"यस यन्त्रमा भिजुअल भ्वाइसमेल प्रयोग गर्न सकिँदैन। कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवालाई सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिसम्बन्धी कोड ९९९२ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"केही गडबड भयो"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९९९३ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"भिजुअल भ्वाइस मेल"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"भिजुअल भ्वाइसमेलको सेटअप पूरा गर्न कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवालाई सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिसम्बन्धी कोड ९९९४ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"भिजुअल भ्वाइस मेल"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"भिजुअल भ्वाइसमेलको सेटअप पूरा गर्न कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवालाई सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिसम्बन्धी कोड ९९९५ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"भिजुअल भ्वाइस मेल"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"भिजुअल भ्वाइस मेल सक्रिय गर्न कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवालाई सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिसम्बन्धी कोड ९९९६ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"केही गडबड भयो"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"भिजुअल भ्वाइसमेलको सेटअप पूरा गर्न कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवालाई सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिसम्बन्धी कोड ९९९८ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"भिजुअल भ्वाइसमेल असक्षम पारिएको छ"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"भिजुअल भ्वाइसमेललाई सक्रिय गर्न कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस्।"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"केही गडबड भयो"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९९९७ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"केही गडबड भयो"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९९८९ हो भनी बताउनुहोस्।"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"केही गडबड भयो"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"कृपया <xliff:g id="NUMBER">%1$s</xliff:g> मा ग्राहक सेवामा सम्पर्क गर्नुहोस् र तिनीहरूलाई त्रुटिको कोड ९९९९ हो भनी बताउनुहोस्।"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"भिजुअल भ्वाइस मेल सक्रिय गर्नुहोस्"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nभिजुअल भ्वाइस मेल सक्रिय गरेर तपाईं Verizon Wireless का सेवाका सर्तहरूमा सहमत हुनुहुन्छ:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"भिजुअल भ्वाइस मेल सक्रिय गर्नुहोस्"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"भ्वाइस मेल कल नगरिकनै आफ्ना सन्देशहरू हेर्नुहोस् र सुन्नुहोस्। Google को निःशुल्क ट्रान्स्क्रिप्सन सेवाले तपाईंको भ्वाइस मेलका ट्रान्स्क्रिप्टहरू उपलब्ध गराउँछ। %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"भ्वाइस मेल कल नगरिकनै आफ्ना सन्देशहरू हेर्नुहोस् र सुन्नुहोस्। %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"थप जान्नुहोस्"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"सेवाका सर्तहरू अस्वीकार गरिएमा भिजुअल भ्वाइस मेल असक्षम पारिने छ।"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"भिजुअल भ्वाइस मेल असक्षम पार्नुहोस्"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"सेवाका सर्तहरू अस्वीकार गरिएमा भिजुअल ट्रान्स्क्रिप्सनलाई असक्षम पारिने छ।"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"भ्वाइस मेल ट्रान्स्क्रिप्सन असक्षम पार्नुहोस्"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"*८६ मा कल गरेर मात्र भ्वाइस मेलमाथि पहुँच राख्न सकिने छ। अघि बढ्न भ्वाइस मेलको नयाँ PIN सेट गर्नुहोस्।"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN सेट गर्नुहोस्"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-nl/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-nl/strings.xml
deleted file mode 100644
index 5c4cddb..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-nl/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Visuele voicemail activeren"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Je ontvangt mogelijk geen voicemailmeldingen totdat visuele voicemail volledig is geactiveerd. Bel je voicemail om nieuwe berichten op te halen totdat visuele voicemail volledig is geactiveerd."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Kan visuele voicemail niet activeren"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Zorg dat je telefoon een mobiele netwerkverbinding heeft en probeer het opnieuw."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Schakel de vliegtuigmodus uit en probeer het opnieuw."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Geen verbinding"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Je ontvangt geen meldingen voor nieuwe voicemails. Als je wifi gebruikt, kun je je voicemail controleren door nu te synchroniseren."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Je ontvangt geen meldingen voor nieuwe voicemails. Schakel de vliegtuigmodus uit om je voicemail te synchroniseren."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Je telefoon heeft een mobiele dataverbinding nodig om je voicemail te controleren."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Kan visuele voicemail niet activeren"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Je kunt nog steeds bellen om je voicemail te controleren."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Kan visuele voicemail niet updaten"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Probeer het opnieuw als er een betere wifi- of mobiele dataverbinding beschikbaar is. Je kunt nog steeds bellen om je voicemail te controleren."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Probeer het opnieuw wanneer er een betere mobiele dataverbinding beschikbaar is. Je kunt nog steeds bellen om je voicemail te controleren."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Kan visuele voicemail niet updaten"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Je kunt nog steeds bellen om je voicemail te controleren."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Kan visuele voicemail niet updaten"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Je kunt nog steeds bellen om je voicemail te controleren."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Kan visuele voicemail niet updaten"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Je kunt nog steeds bellen om je voicemail te controleren."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Kan visuele voicemail niet updaten"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Je kunt nog steeds bellen om je voicemail te controleren."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Inbox bijna vol"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Je kunt geen nieuwe voicemails ontvangen als je inbox vol is."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Kan geen nieuwe voicemails ontvangen"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Je inbox is vol. Verwijder enkele berichten om nieuwe voicemails te ontvangen."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Extra opslag en back-up inschakelen"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Je mailbox is vol. Als je ruimte wilt vrijmaken, schakel je extra opslagruimte in zodat Google je voicemailberichten kan beheren en er back-ups van kan maken."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Extra opslag en back-up inschakelen"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Je mailbox is bijna vol. Als je ruimte wilt vrijmaken, schakel je extra opslagruimte in zodat Google je voicemailberichten kan beheren en er back-ups van kan maken."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Een pincode voor je voicemail instellen"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Je hebt een pincode voor de voicemail nodig wanneer je belt om toegang tot je voicemail te krijgen."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Instellingen voor vliegtuigmodus"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Pincode instellen"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Opnieuw proberen"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Inschakelen"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nee, bedankt"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synchroniseren"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Voicemail bellen"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Klantenondersteuning bellen"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Er is iets misgegaan"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Er is een probleem opgetreden. Probeer het later opnieuw. Blijft het probleem optreden, neem dan via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9001 door."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Er is iets misgegaan"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Er is een probleem opgetreden. Probeer het later opnieuw. Blijft het probleem optreden, neem dan via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9002 door."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Er is iets misgegaan"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Er is een probleem opgetreden. Probeer het later opnieuw. Blijft het probleem optreden, neem dan via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9003 door."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Kan geen verbinding maken met je voicemailbox"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Er is een probleem opgetreden bij het maken van verbinding met je voicemailbox. Ben je in een gebied met een zwak signaal, wacht dan totdat je een sterk signaal hebt en probeer het opnieuw. Blijft het probleem optreden, neem dan via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9004 door."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Kan geen verbinding maken met je voicemailbox"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Er is een probleem opgetreden bij het maken van verbinding met je voicemailbox. Ben je in een gebied met een zwak signaal, wacht dan totdat je een sterk signaal hebt en probeer het opnieuw. Blijft het probleem optreden, neem dan via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9005 door."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Kan geen verbinding maken met je voicemailbox"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Er is een probleem opgetreden bij het maken van verbinding met je voicemailbox. Ben je in een gebied met een zwak signaal, wacht dan totdat je een sterk signaal hebt en probeer het opnieuw. Blijft het probleem optreden, neem dan via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9006 door."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Er is iets misgegaan"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Er is een probleem opgetreden. Probeer het later opnieuw. Blijft het probleem optreden, neem dan via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9007 door."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Er is iets misgegaan"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Er is een probleem opgetreden. Probeer het later opnieuw. Blijft het probleem optreden, neem dan via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9008 door."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Er is iets misgegaan"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Er is een probleem opgetreden bij het instellen van je service. Probeer het later opnieuw. Blijft het probleem optreden, neem dan via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9009 door."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Kan geen verbinding maken met je voicemailbox"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Er kan momenteel geen verbinding worden gemaakt met je voicemailbox. Probeer het later opnieuw. Blijft het probleem optreden, neem dan via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9990 door."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Voicemail instellen"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Voicemail is niet ingesteld in je account. Neem via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9991 door."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Voicemail"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Visuele voicemail kan niet worden gebruikt op dit apparaat. Neem via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9992 door."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Er is iets misgegaan"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Neem via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9993 door."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visuele voicemail"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Neem via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9994 door om het instellen van visuele voicemail te voltooien."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visuele voicemail"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Neem via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9995 door om het instellen van visuele voicemail te voltooien."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visuele voicemail"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Neem via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9996 door om visuele voicemail te activeren."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Er is iets misgegaan"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Neem via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9998 door om het instellen van visuele voicemail te voltooien."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visuele voicemail is uitgeschakeld"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Neem via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice om visuele voicemail te activeren."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Er is iets misgegaan"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Neem via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9997 door."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Er is iets misgegaan"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Neem via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9989 door."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Er is iets misgegaan"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Neem via <xliff:g id="NUMBER">%1$s</xliff:g> contact op met de klantenservice en geef de foutcode 9999 door."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Visuele voicemail inschakelen"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nAls je visuele voicemail inschakelt, ga je akkoord met de algemene voorwaarden van Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Visuele voicemail inschakelen"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Bekijk en beluister je berichten, zonder dat je je voicemail hoeft te bellen. Transcripten van je voicemail worden geleverd via de gratis transcriptieservice van Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Bekijk en beluister je berichten, zonder dat je je voicemail hoeft te bellen. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Meer informatie"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Visuele voicemail wordt uitgeschakeld als de Algemene voorwaarden worden geweigerd."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Visuele voicemail uitschakelen"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Voicemail-transcriptie wordt uitgeschakeld als de Algemene voorwaarden worden geweigerd."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Voicemail-transcriptie uitschakelen"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Voicemail is alleen toegankelijk door *86 te bellen. Stel een nieuwe pincode voor de voicemail in om door te gaan."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Pincode instellen"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-no/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-no/strings.xml
deleted file mode 100644
index 894473b..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-no/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Slår på visuell talepostkasse"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Det er ikke sikert at du kan motta talepostvarsler før visuell talepost er fullt aktivert. Ring talepost for å hente nye meldinger før aktiveringen er fullført."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Kan ikke slå på visuell talepost"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Sjekk at telefonen din har mobilforbindelse, og prøv på nytt."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Slå av flymodus og prøv igjen."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Ingen tilkobling"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Du blir ikke varslet om nye talemeldinger. Hvis du er på Wi-Fi, kan du sjekke taleposten ved å synkronisere nå."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Du blir ikke varslet om nye talemeldinger. Slå av flymodus for å synkronisere talepost."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Telefonen må ha mobildataforbindelse for at du skal kunne sjekke talepost."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Kan ikke slå på visuell talepost"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Kan ikke oppdatere visuell talepost"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Prøv på nytt når Wi‑Fi- eller mobildatadekningen er bedre. Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Prøv igjen når mobildatadekningen er bedre. Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Kan ikke oppdatere visuell talepost"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Kan ikke oppdatere visuell talepost"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Kan ikke oppdatere visuell talepost"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Kan ikke oppdatere visuell talepost"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Du kan fortsatt ringe for å sjekke talepost."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Innboksen er nesten full"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Du kan ikke motta ny talepost hvis innboksen din er full."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Kan ikke motta ny talepost"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Innboksen din er full. Prøv å slette noen meldinger for å motta ny talepost."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Slå på ekstra lagringsplass og sikkerhetskopiering"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Talepostkassen din er full. Frigjør plass ved å slå på ekstra lagringsplass og la Google administrere og ta sikkerhetskopi av taleposten din."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Slå på ekstra lagringsplass og sikkerhetskopiering"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Talepostkassen din er nesten full. Frigjør plass ved å slå på ekstra lagringsplass og la Google administrere og ta sikkerhetskopi av taleposten din."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Angi PIN-koden din for talepost"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Du trenger PIN-koden hver gang du ringer for å sjekke taleposten din."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Flymodus-innstillinger"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Angi PIN-kode"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Prøv på nytt"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Slå på"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nei takk"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synkroniser"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Ring talepostkassen"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Ring kundeservice"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Noe gikk galt"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Beklager, det oppsto et problem. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Noe gikk galt"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Beklager, det oppsto et problem. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Noe gikk galt"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Beklager, det oppsto et problem. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Kan ikke koble til talepostkassen"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Beklager, vi har problemer med å koble til talepostkassen. Hvis du er i et område med dårlig signalstyrke, må du vente til du har et sterkt signal og prøve igjen. Hvis problemet vedvarer, kan du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referere til feilkode 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Kan ikke koble til talepostkassen"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Beklager, vi har problemer med å koble til talepostkassen. Hvis du er i et område med dårlig signalstyrke, må du vente til du har et sterkt signal og prøve igjen. Hvis problemet vedvarer, kan du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referere til feilkode 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Kan ikke koble til talepostkassen"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Beklager, vi har problemer med å koble til talepostkassen. Hvis du er i et område med dårlig signalstyrke, må du vente til du har et sterkt signal og prøve igjen. Hvis problemet vedvarer, kan du kontakte kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referere til feilkode 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Noe gikk galt"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Beklager, det oppsto et problem. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Noe gikk galt"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Beklager, det oppsto et problem. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Noe gikk galt"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Beklager, vi har problemer med å opprette tjenesten. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Kan ikke koble til talepostkassen"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Beklager, vi kunne ikke koble til talepostkassen akkurat nå. Prøv igjen senere, eller kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Konfigurer talepost"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Talepost er ikke satt opp på din konto. Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Talepost"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Visuell talepost kan ikke brukes på denne enheten. Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Noe gikk galt"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visuell talepost"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9994 for å fullføre konfigureringen av visuell talepost."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visuell talepost"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9995 for å fullføre konfigureringen av visuell talepost."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visuell talepost"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9996 for å fullføre konfigureringen av visuell talepost."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Noe gikk galt"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9998 for å fullføre konfigureringen av visuell talepost."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visuell talepost er slått av"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> for å slå på visuell talepost."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Noe gikk galt"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Noe gikk galt"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Noe gikk galt"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Kontakt kundeservice på <xliff:g id="NUMBER">%1$s</xliff:g> og referer til feilkode 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Slå på visuell talepost"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nVed å slå på visuell talepost godtar du vilkårene til Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Slå på visuell talepost"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Se og hør meldingene dine, uten å måtte ringe til talepostkassen din. Transskripsjoner av taleposten din utføres av Googles gratis transkripsjonstjeneste. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Se og hør meldingene dine, uten å måtte ringe til talepostkassen din. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Finn ut mer"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Visuell talepost blir slått av hvis vilkårene ikke godtas."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Slå av visuell talepost"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Transkripsjon av talepost blir slått av hvis vilkårene blir avvist."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Slå av transkripsjon av talepost"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Talemeldinger er bare tilgjengelig ved å ringe *86. Angi en ny PIN-kode for å fortsette."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Angi PIN-kode"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-pa/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-pa/strings.xml
deleted file mode 100644
index 7ad8fd1..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-pa/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਕਿਰਿਆਸ਼ੀਲ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"ਜਦੋਂ ਤੱਕ ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕਿਰਿਆਸ਼ੀਲ ਨਹੀਂ ਹੋ ਜਾਂਦੀ, ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ਵੌਇਸਮੇਲ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਨਾ ਹੋਣ। ਵੌਇਸਮੇਲ ਦੇ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕਿਰਿਆਸ਼ੀਲ ਹੋਣ ਤੱਕ ਨਵੇਂ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਵੌਇਸਮੇਲ ਨੂੰ ਕਾਲ ਕਰੋ।"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡੇ ਫ਼ੋਨ \'ਤੇ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨ ਹੈ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"ਹਵਾਈ ਜਹਾਜ਼ ਮੋਡ ਬੰਦ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"ਕੋਈ ਕਨੈਕਸ਼ਨ ਨਹੀਂ"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"ਤੁਹਾਨੂੰ ਨਵੀਆਂ ਵੌਇਸਮੇਲਾਂ ਲਈ ਸੂਚਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ। ਜੇਕਰ ਤੁਸੀਂ Wi-Fi \'ਤੇ ਹੋ, ਤਾਂ ਹੁਣੇ ਸਮਕਾਲੀਕਰਨ ਕਰਕੇ ਵੌਇਸਮੇਲ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ।"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"ਤੁਹਾਨੂੰ ਨਵੀਆਂ ਵੌਇਸਮੇਲਾਂ ਲਈ ਸੂਚਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ। ਆਪਣੀਆਂ ਵੌਇਸਮੇਲਾਂ ਸਮਕਾਲੀਕਿਰਤ ਕਰਨ ਲਈ ਹਵਾਈ ਜਹਾਜ਼ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"ਵੌਇਸਮੇਲ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਫ਼ੋਨ ਨੂੰ ਇੱਕ ਸੈਲਿਊਲਰ ਕਨੈਕਸ਼ਨ ਦੀ ਲੋੜ ਹੈ।"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"ਤੁਸੀਂ ਹਾਲੇ ਵੀ ਵੌਇਸਮੇਲ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਕਾਲ ਕਰ ਸਕਦੇ ਹੋ।"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"ਤੁਹਾਡੇ Wi-Fi ਜਾਂ ਮੋਬਾਈਲ  ਡਾਟਾ  ਕਨੈਕਸ਼ਨ ਦੇ ਬਿਹਤਰ ਹੋਣ \'ਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਤੁਸੀਂ ਹਾਲੇ ਵੀ ਵੌਇਸਮੇਲ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਕਾਲ ਕਰ ਸਕਦੇ ਹੋ।"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"ਤੁਹਾਡੇ ਮੋਬਾਈਲ  ਡਾਟਾ  ਕਨੈਕਸ਼ਨ ਦੇ ਬਿਹਤਰ ਹੋਣ \'ਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਤੁਸੀਂ ਹਾਲੇ ਵੀ ਵੌਇਸਮੇਲ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਕਾਲ ਕਰ ਸਕਦੇ ਹੋ।"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"ਤੁਸੀਂ ਹਾਲੇ ਵੀ ਵੌਇਸਮੇਲ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਕਾਲ ਕਰ ਸਕਦੇ ਹੋ।"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"ਤੁਸੀਂ ਹਾਲੇ ਵੀ ਵੌਇਸਮੇਲ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਕਾਲ ਕਰ ਸਕਦੇ ਹੋ।"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"ਤੁਸੀਂ ਹਾਲੇ ਵੀ ਵੌਇਸਮੇਲ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਕਾਲ ਕਰ ਸਕਦੇ ਹੋ।"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"ਤੁਸੀਂ ਹਾਲੇ ਵੀ ਵੌਇਸਮੇਲ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਕਾਲ ਕਰ ਸਕਦੇ ਹੋ।"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"ਇਨਬਾਕਸ ਲਗਭਗ ਭਰ ਗਿਆ ਹੈ"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"ਜੇਕਰ ਤੁਹਾਡਾ ਇਨਬਾਕਸ ਭਰਿਆ ਹੋਇਆ ਹੈ ਤਾਂ ਤੁਸੀਂ ਨਵੀਂ ਵੌਇਸਮੇਲ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕੋਂਗੇ।"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"ਨਵੀਆਂ ਵੌਇਸਮੇਲਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"ਤੁਹਾਡਾ ਇਨਬਾਕਸ ਭਰਿਆ ਹੋਇਆ ਹੈ। ਨਵੀਂ ਵੌਇਸਮੇਲ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਕੁਝ ਸੁਨੇਹਿਆਂ ਨੂੰ ਮਿਟਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਅਤੇ ਬੈਕਅੱਪ ਲਓ"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"ਤੁਹਾਡਾ ਮੇਲਬਾਕਸ ਭਰਿਆ ਹੋਇਆ ਹੈ। ਜਗ੍ਹਾ ਖਾਲੀ ਕਰਨ ਲਈ, ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਤਾਂ ਕਿ Google ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਸੁਨੇਹਿਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕੇ ਅਤੇ ਬੈਕਅੱਪ ਲੈ ਸਕੇ।"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਅਤੇ ਬੈਕਅੱਪ ਲਓ"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"ਤੁਹਾਡਾ ਮੇਲਬਾਕਸ ਲਗਭਗ ਭਰਿਆ ਹੋਇਆ ਹੈ। ਜਗ੍ਹਾ ਖਾਲੀ ਕਰਨ ਲਈ, ਵਾਧੂ ਸਟੋਰੇਜ ਨੂੰ ਚਾਲੂ ਕਰੋ ਤਾਂ ਕਿ Google ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਸੁਨੇਹਿਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕੇ ਅਤੇ ਬੈਕਅੱਪ ਲੈ ਸਕੇ।"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ਆਪਣਾ ਵੌਇਸਮੇਲ PIN ਸੈੱਟ ਕਰੋ"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ਜਦੋਂ ਵੀ ਤੁਸੀਂ ਆਪਣੀ ਵੌਇਸਮੇਲ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਕਾਲ ਕਰੋਂਗੇ ਤਾਂ ਤੁਹਾਨੂੰ ਇੱਕ ਵੌਇਸਮੇਲ PIN ਦੀ ਲੋੜ ਪਵੇਗੀ।"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"ਹਵਾਈ ਜਹਾਜ਼ ਮੋਡ ਸੈਟਿੰਗਾਂ"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN ਸੈੱਟ ਕਰੋ"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"ਚਾਲੂ ਕਰੋ"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"ਨਹੀਂ ਧੰਨਵਾਦ"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"ਸਮਕਾਲੀਕਰਨ ਕਰੋ"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"ਵੌਇਸਮੇਲ ਨੂੰ ਕਾਲ ਕਰੋ"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"ਗਾਹਕ ਸਹਾਇਤਾ ਨੂੰ ਕਾਲ ਕਰੋ"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"ਮਾਫ਼ ਕਰਨਾ, ਸਾਨੂੰ ਕਿਸੇ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇਕਰ ਫਿਰ ਵੀ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9001 ਹੈ।"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"ਮਾਫ਼ ਕਰਨਾ, ਸਾਨੂੰ ਕਿਸੇ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇਕਰ ਫਿਰ ਵੀ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9002 ਹੈ।"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"ਮਾਫ਼ ਕਰਨਾ, ਸਾਨੂੰ ਕਿਸੇ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇਕਰ ਫਿਰ ਵੀ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9003 ਹੈ।"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"ਤੁਹਾਡੇ ਵੌਇਸ ਮੇਲਬਾਕਸ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"ਮਾਫ਼ ਕਰਨਾ, ਸਾਨੂੰ ਤੁਹਾਡੇ ਵੌਇਸ ਮੇਲਬਾਕਸ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆ ਆ ਰਹੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਅਜਿਹੇ ਖੇਤਰ ਵਿੱਚ ਹੋ, ਜਿੱਥੇ ਸਿਗਨਲ ਤਾਕਤ ਕਮਜ਼ੋਰ ਹੈ, ਤਾਂ ਜਦੋਂ ਤੱਕ ਤੁਹਾਡੇ ਕੋਲ ਮਜ਼ਬੂਤ ਸਿਗਨਲ ਨਾ ਆ ਜਾਵੇ, ਉਦੋਂ ਤੱਕ ਉਡੀਕ ਕਰੋ ਅਤੇ ਫਿਰ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇਕਰ ਫਿਰ ਵੀ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9004 ਹੈ।"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"ਤੁਹਾਡੇ ਵੌਇਸ ਮੇਲਬਾਕਸ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"ਮਾਫ਼ ਕਰਨਾ, ਸਾਨੂੰ ਤੁਹਾਡੇ ਵੌਇਸ ਮੇਲਬਾਕਸ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆ ਆ ਰਹੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਅਜਿਹੇ ਖੇਤਰ ਵਿੱਚ ਹੋ, ਜਿੱਥੇ ਸਿਗਨਲ ਤਾਕਤ ਕਮਜ਼ੋਰ ਹੈ, ਤਾਂ ਜਦੋਂ ਤੱਕ ਤੁਹਾਡੇ ਕੋਲ ਮਜ਼ਬੂਤ ਸਿਗਨਲ ਨਾ ਆ ਜਾਵੇ, ਉਦੋਂ ਤੱਕ ਉਡੀਕ ਕਰੋ ਅਤੇ ਫਿਰ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇਕਰ ਫਿਰ ਵੀ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9005 ਹੈ।"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"ਤੁਹਾਡੇ ਵੌਇਸ ਮੇਲਬਾਕਸ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"ਮਾਫ਼ ਕਰਨਾ, ਸਾਨੂੰ ਤੁਹਾਡੇ ਵੌਇਸ ਮੇਲਬਾਕਸ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆ ਆ ਰਹੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਅਜਿਹੇ ਖੇਤਰ ਵਿੱਚ ਹੋ, ਜਿੱਥੇ ਸਿਗਨਲ ਤਾਕਤ ਕਮਜ਼ੋਰ ਹੈ, ਤਾਂ ਜਦੋਂ ਤੱਕ ਤੁਹਾਡੇ ਕੋਲ ਮਜ਼ਬੂਤ ਸਿਗਨਲ ਨਾ ਆ ਜਾਵੇ, ਉਦੋਂ ਤੱਕ ਉਡੀਕ ਕਰੋ ਅਤੇ ਫਿਰ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇਕਰ ਫਿਰ ਵੀ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9006 ਹੈ।"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"ਮਾਫ਼ ਕਰਨਾ, ਸਾਨੂੰ ਇੱਕ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇਕਰ ਫਿਰ ਵੀ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9007 ਹੈ।"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"ਮਾਫ਼ ਕਰਨਾ, ਸਾਨੂੰ ਇੱਕ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇਕਰ ਫਿਰ ਵੀ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9008 ਹੈ।"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"ਮਾਫ਼ ਕਰਨਾ, ਸਾਨੂੰ ਤੁਹਾਡੀ ਸੇਵਾ ਸਥਾਪਤ ਕਰਨ ਦੌਰਾਨ ਸਮੱਸਿਆ ਆ ਰਹੀ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇਕਰ ਫਿਰ ਵੀ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9009 ਹੈ।"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"ਤੁਹਾਡੇ ਵੌਇਸ ਮੇਲਬਾਕਸ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"ਮਾਫ਼ ਕਰਨਾ, ਅਸੀਂ ਇਸ ਵੇਲੇ ਤੁਹਾਡੇ ਵੌਇਸ ਮੇਲਬਾਕਸ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਦੇ ਅਯੋਗ ਹਾਂ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਜੇਕਰ ਫਿਰ ਵੀ ਸਮੱਸਿਆ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9990 ਹੈ।"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"ਵੌਇਸਮੇਲ ਸੈੱਟਅੱਪ ਕਰੋ"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"ਤੁਹਾਡੇ ਖਾਤੇ ਲਈ ਵੌਇਸਮੇਲ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤੀ ਗਈ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9991 ਹੈ।"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"ਵੌਇਸਮੇਲ"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ ਨੂੰ ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਨਹੀਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ। ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9992 ਹੈ।"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9993 ਹੈ।"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ ਦਾ ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9994 ਹੈ।"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ ਦਾ ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9995 ਹੈ।"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰਨ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9996 ਹੈ।"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ ਦਾ ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9998 ਹੈ।"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ ਬੰਦ ਹੈ"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"ਕਿਰਪਾ ਕਰਕੇ ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰਨ ਲਈ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9997 ਹੈ।"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9989 ਹੈ।"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"ਕਿਰਪਾ ਕਰਕੇ <xliff:g id="NUMBER">%1$s</xliff:g> \'ਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਸੰਪਰਕ ਕਰੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੱਸੋ ਕਿ ਗੜਬੜ ਕੋਡ 9999 ਹੈ।"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸ ਮੇਲ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ ਨੂੰ ਚਾਲੂ ਕਰ ਕੇ ਤੁਸੀਂ Verizon Wireless ਦੇ ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਦੇ ਹੋ:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"ਵੌਇਸਮੇਲ \'ਤੇ ਕਾਲ ਕੀਤੇ ਬਿਨਾਂ, ਆਪਣੇ ਸੁਨੇਹੇ ਦੇਖੋ ਅਤੇ ਸੁਣੋ। ਤੁਹਾਡੀ ਵੌਇਸਮੇਲ ਦੀਆਂ ਪ੍ਰਤਿਲਿਪੀਆਂ Google ਦੀ ਮੁਫ਼ਤ ਪ੍ਰਤਿਲਿਪੀ ਸੇਵਾ ਵੱਲੋਂ ਮੁਹੱਈਆ ਕਰਵਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ। %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"ਵੌਇਸਮੇਲ \'ਤੇ ਕਾਲ ਕੀਤੇ ਬਿਨਾਂ, ਆਪਣੇ ਸੁਨੇਹੇ ਦੇਖੋ ਅਤੇ ਸੁਣੋ। %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"ਹੋਰ ਜਾਣੋ"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਅਯੋਗ ਹੋ ਜਾਵੇਗੀ ਜੇਕਰ ਮਦਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਨੂੰ ਅਸਵੀਕਾਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"ਵਿਜ਼ੁਅਲ ਵੌਇਸਮੇਲ ਅਯੋਗ ਬਣਾਓ"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"ਵੌਇਸਮੇਲ ਪ੍ਰਤਿਲਿਪੀ ਅਯੋਗ ਹੋ ਜਾਵੇਗੀ ਜੇਕਰ ਮਦਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਨੂੰ ਅਸਵੀਕਾਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"ਵੌਇਸਮੇਲ ਪ੍ਰਤਿਲਿਪੀ ਨੂੰ ਅਯੋਗ ਬਣਾਓ"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"ਵੌਇਸਮੇਲ ਸਿਰਫ਼ *86 \'ਤੇ ਕਾਲ ਕਰਨ ਦੁਆਰਾ ਪਹੁੰਚਯੋਗ ਹੋਵੇਗੀ। ਜਾਰੀ ਰੱਖਣ ਲਈ ਇੱਕ ਨਵਾਂ ਵੌਇਸਮੇਲ PIN ਸੈੱਟ ਕਰੋ।"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN ਸੈੱਟ ਕਰੋ"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-pl/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-pl/strings.xml
deleted file mode 100644
index b8dfa95..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-pl/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktywuję wizualną pocztę głosową"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Powiadomienia poczty głosowej mogą być dostępne dopiero po pełnej aktywacji wizualnej poczty głosowej. Do tego momentu nowe wiadomości możesz pobierać, dzwoniąc na pocztę głosową."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Nie udało się aktywować wizualnej poczty głosowej"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Upewnij się, że telefon ma połączenie z siecią komórkową, i spróbuj jeszcze raz."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Wyłącz tryb samolotowy i spróbuj jeszcze raz."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Brak połączenia"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Nie otrzymasz powiadomień o nowych wiadomościach głosowych. Jeśli masz połączenie Wi-Fi, możesz teraz sprawdzić dostępność nowych wiadomości przez zsynchronizowanie urządzenia."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Nie otrzymasz powiadomień o nowych wiadomościach głosowych. Wyłącz tryb samolotowy, aby zsynchronizować pocztę głosową."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Aby sprawdzić pocztę głosową, telefon musi mieć połączenie z internetem."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Nie udało się aktywować wizualnej poczty głosowej"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Możesz też zadzwonić do poczty głosowej, aby odsłuchać wiadomości."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Nie udało się zaktualizować wizualnej poczty głosowej"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Spróbuj jeszcze raz, gdy znajdziesz lepszy zasięg sieci komórkowej lub Wi-Fi. Możesz też zadzwonić do poczty głosowej, aby odsłuchać wiadomości."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Spróbuj jeszcze raz, gdy znajdziesz lepszy zasięg sieci komórkowej. Możesz też zadzwonić do poczty głosowej, aby odsłuchać wiadomości."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Nie udało się zaktualizować wizualnej poczty głosowej"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Możesz też zadzwonić do poczty głosowej, aby odsłuchać wiadomości."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Nie udało się zaktualizować wizualnej poczty głosowej"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Możesz też zadzwonić do poczty głosowej, aby odsłuchać wiadomości."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Nie udało się zaktualizować wizualnej poczty głosowej"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Możesz też zadzwonić do poczty głosowej, aby odsłuchać wiadomości."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Nie udało się zaktualizować wizualnej poczty głosowej"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Możesz też zadzwonić do poczty głosowej, aby odsłuchać wiadomości."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Skrzynka odbiorcza jest prawie pełna"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Nie otrzymasz nowych wiadomości głosowych, gdy Twoja skrzynka odbiorcza jest pełna."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nie udało się odebrać nowych wiadomości głosowych"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Twoja skrzynka odbiorcza jest pełna. Spróbuj usunąć kilka wiadomości głosowych, aby odebrać nowe."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Włącz dodatkowe miejsce i kopię zapasową"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Twoja skrzynka pocztowa jest pełna. Jeśli chcesz zwolnić miejsce, włącz dodatkowe miejsce, aby umożliwić Google zarządzanie Twoimi wiadomościami głosowymi i tworzenie ich kopii zapasowej."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Włącz dodatkowe miejsce i kopię zapasową"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Twoja skrzynka pocztowa jest prawie pełna. Jeśli chcesz zwolnić miejsce, włącz dodatkowe miejsce, aby umożliwić Google zarządzanie Twoimi wiadomościami głosowymi i tworzenie ich kopii zapasowej."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ustaw kod PIN do poczty głosowej"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Za każdym razem, gdy zadzwonisz pod numer poczty głosowej, będzie konieczne wpisanie kodu PIN."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Ustawienia trybu samolotowego"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Ustaw kod PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Spróbuj jeszcze raz"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Włącz"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nie, dziękuję"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synchronizuj"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Zadzwoń na pocztę głosową"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Zadzwoń do obsługi klienta"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Coś poszło nie tak"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Wystąpił problem. Spróbuj ponownie później. Jeśli problem będzie nadal występował, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Coś poszło nie tak"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Wystąpił problem. Spróbuj ponownie później. Jeśli problem będzie nadal występował, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Coś poszło nie tak"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Wystąpił problem. Spróbuj ponownie później. Jeśli problem będzie nadal występował, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Nie udało się połączyć ze skrzynką poczty głosowej"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Nie udało się połączyć ze skrzynką poczty głosowej. Jeśli znajdujesz się w miejscu ze słabym sygnałem, poczekaj aż sygnał będzie mocny i spróbuj ponownie. Jeśli problem będzie nadal występował, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Nie udało się połączyć ze skrzynką poczty głosowej"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Nie udało się połączyć ze skrzynką poczty głosowej. Jeśli znajdujesz się w miejscu ze słabym sygnałem, poczekaj aż sygnał będzie mocny i spróbuj ponownie. Jeśli problem będzie nadal występował, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Nie udało się połączyć ze skrzynką poczty głosowej"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Nie udało się połączyć ze skrzynką poczty głosowej. Jeśli znajdujesz się w miejscu ze słabym sygnałem, poczekaj aż sygnał będzie mocny i spróbuj ponownie. Jeśli problem będzie nadal występował, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Coś poszło nie tak"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Wystąpił problem. Spróbuj ponownie później. Jeśli problem będzie nadal występował, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Coś poszło nie tak"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Wystąpił problem. Spróbuj ponownie później. Jeśli problem będzie nadal występował, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Coś poszło nie tak"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Wystąpił problem podczas konfigurowania usługi. Spróbuj ponownie później. Jeśli problem będzie nadal występował, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Nie udało się połączyć ze skrzynką poczty głosowej"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Nie udało się połączyć ze skrzynką poczty głosowej. Spróbuj ponownie później. Jeśli problem będzie nadal występował, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Skonfiguruj pocztę głosową"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Poczta głosowa nie została skonfigurowana na Twoim koncie. Skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Poczta głosowa"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Na tym urządzeniu nie można używać wizualnej poczty głosowej. Skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g> i podaj kod błędu 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Coś poszło nie tak"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Wizualna poczta głosowa"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Aby ukończyć konfigurację wizualnej poczty głosowej, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g> i podaj kod błędu 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Wizualna poczta głosowa"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Aby ukończyć konfigurację wizualnej poczty głosowej, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g> i podaj kod błędu 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Wizualna poczta głosowa"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Aby aktywować wizualną pocztę głosową, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g> i podaj kod błędu 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Coś poszło nie tak"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Aby ukończyć konfigurację wizualnej poczty głosowej, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g> i podaj kod błędu 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Wizualna poczta głosowa jest wyłączona"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Aby aktywować wizualną pocztę głosową, skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Coś poszło nie tak"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Coś poszło nie tak"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Coś poszło nie tak"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Skontaktuj się z obsługą klienta pod numerem <xliff:g id="NUMBER">%1$s</xliff:g>, podając kod błędu 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Włącz wizualną pocztę głosową"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nWłączając wizualną pocztę głosową, akceptujesz warunki operatora Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Włącz wizualną pocztę głosową"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Sprawdź i odsłuchaj wiadomości bez dzwonienia na pocztę głosową. Zapisy wiadomości głosowych są udostępniane przez bezpłatną usługę transkrypcji Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Sprawdź i odsłuchaj wiadomości bez dzwonienia na pocztę głosową. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Więcej informacji"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Jeśli odrzucisz warunki korzystania z usługi, wizualna poczta głosowa zostanie wyłączona."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Wyłącz wizualną pocztę głosową"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Jeśli odrzucisz warunki korzystania z usługi, transkrypcja wiadomości w poczcie głosowej zostanie wyłączona."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Wyłącz transkrypcję wiadomości w poczcie głosowej"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Poczta głosowa będzie dostępna tylko przez połączenie telefoniczne z numerem *86. Ustaw nowy kod PIN poczty głosowej, aby przejść dalej."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Ustaw kod PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-pt-rBR/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-pt-rBR/strings.xml
deleted file mode 100644
index af20665..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Ativando correio de voz visual"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Talvez você não receba notificações do correio de voz até que o correio de voz visual esteja totalmente ativado. Enquanto isso não acontecer, ligue para o correio de voz para receber as novas mensagens."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Não foi possível ativar o correio de voz visual"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Verifique se seu smartphone tem uma conexão por rede móvel e tente novamente."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Desative o modo avião e tente novamente."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Sem conexão"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Você não será notificado sobre novos correios de voz. Se estiver usando Wi-Fi, sincronize agora para verificar o correio de voz."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Você não será notificado sobre novos correios de voz. Desative o modo avião para sincronizar seu correio de voz."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Seu smartphone precisa de uma conexão de dados móveis para verificar o correio de voz."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Não foi possível ativar o correio de voz visual"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Não foi possível atualizar o correio de voz visual"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Tente novamente quando estiver com uma conexão de dados móveis ou Wi‑Fi melhor. Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Tente novamente quando estiver com uma conexão de dados móveis melhor. Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Não foi possível atualizar o correio de voz visual"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Não foi possível atualizar o correio de voz visual"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Não foi possível atualizar o correio de voz visual"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Não foi possível atualizar o correio de voz visual"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Caixa de entrada quase cheia"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Não será possível receber novos correios de voz se sua Caixa de entrada estiver cheia."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Não é possível receber novos correios de voz"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Sua Caixa de entrada está cheia. Exclua algumas mensagens para receber novos correios de voz."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ativar armazenamento extra e fazer backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Sua caixa de correio está cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ativar armazenamento extra e fazer backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Sua caixa de correio está quase cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Definir seu PIN do correio de voz"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Você precisará de um PIN do correio de voz sempre que ligar para acessar seu correio de voz."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Configurações do modo avião"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Definir PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Tentar novamente"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Ativar"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Não, obrigado"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sincronizar"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Ligar para correio de voz"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Ligar para o Suporte ao Cliente"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Há um problema. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Há um problema. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Ocorreu um erro"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Há um problema. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Não é possível a conexão com o correio de voz"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Há um problema na conexão com sua caixa de correio de voz. Se você estiver em uma área onde a intensidade do sinal é fraca, tente novamente quando tiver um sinal forte. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Não é possível a conexão com o correio de voz"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Há um problema na conexão com sua caixa de correio de voz. Se você estiver em uma área onde a intensidade do sinal é fraca, tente novamente quando tiver um sinal forte. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Não é possível a conexão com o correio de voz"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Há um problema na conexão com sua caixa de correio de voz. Se você estiver em uma área onde a intensidade do sinal é fraca, tente novamente quando tiver um sinal forte. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Há um problema. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Há um problema. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Ocorreu um erro"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Há um problema para configurar o serviço. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Não é possível a conexão com o correio de voz"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Não foi possível a conexão com sua caixa de correio de voz no momento. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Configurar correio de voz"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"O correio de voz não está configurado na conta. Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Correio de voz"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Não é possível usar o correio de voz visual no dispositivo. Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Ocorreu um erro"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Correio de voz visual"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Para concluir a configuração do correio de voz visual, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Correio de voz visual"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Para concluir a configuração do correio de voz visual, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Correio de voz visual"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Para ativar o correio de voz visual, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Ocorreu um erro"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Para concluir a configuração do correio de voz visual, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Correio de voz visual desativado"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> para ativar o correio de voz visual."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Ocorreu um erro"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Ocorreu um erro"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Ocorreu um erro"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Ativar correio de voz visual"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nAo ativar o correio de voz visual, você concorda com os Termos e Condições da Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Ativar correio de voz visual"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Veja e ouça suas mensagens sem precisar ligar para o correio de voz. As transcrições do correio de voz são fornecidas pelo serviço de transcrição gratuito do Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Veja e ouça suas mensagens sem precisar ligar para o correio de voz. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Saiba mais"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"O correio de voz visual será desativado se os termos e condições forem recusados."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Desativar correio de voz visual"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"A transcrição do correio de voz será desativada se os Temos e Condições forem recusados."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Desativar transcrição do correio de voz"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"O correio de voz só estará acessível quando você ligar para *86. Defina um novo PIN do correio de voz para continuar."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Definir PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-pt-rPT/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-pt-rPT/strings.xml
deleted file mode 100644
index c494e91..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"A ativar o correio de voz visual..."</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Poderá não receber notificações de correio de voz até o correio de voz visual estar completamente ativado. Ligue para o correio de voz para obter novas mensagens até o correio de voz estar completamente ativado."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Não é possível ativar o correio de voz visual"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Certifique-se de que o seu telemóvel tem uma ligação de rede móvel e tente novamente."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Desative o modo de avião e tente novamente."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Sem ligação"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Não será notificado quando receber novas mensagens de correio de voz. Se estiver numa ligação Wi-Fi, pode verificar se existem mensagens de correio de voz ao sincronizar agora."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Não será notificado quando receber novas mensagens de correio de voz. Desative o modo de avião para sincronizar as suas mensagens de correio de voz."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"O seu telemóvel precisa de uma ligação de dados móveis para verificar se existem mensagens de correio de voz."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Não é possível ativar o correio de voz visual"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Ainda pode efetuar chamadas para consultar as mensagens de correio de voz."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Não é possível atualizar as mensagens de correio de voz visuais"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Tente novamente quando a sua ligação Wi-Fi ou de dados móveis for mais forte. Ainda pode efetuar chamadas para consultar as mensagens de correio de voz."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Tente novamente quando a sua ligação de dados móveis for mais forte. Ainda pode efetuar chamadas para consultar as mensagens de correio de voz."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Não é possível atualizar as mensagens de correio de voz visuais"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Ainda pode efetuar chamadas para consultar as mensagens de correio de voz."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Não é possível atualizar as mensagens de correio de voz visuais"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Ainda pode efetuar chamadas para consultar as mensagens de correio de voz."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Não é possível atualizar as mensagens de correio de voz visuais"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Ainda pode efetuar chamadas para consultar as mensagens de correio de voz."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Não é possível atualizar as mensagens de correio de voz visuais"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Ainda pode efetuar chamadas para consultar as mensagens de correio de voz."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"A caixa de entrada está quase cheia"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Se a sua caixa de entrada estiver cheia, não irá receber novas mensagens de correio de voz."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Não é possível receber novas mensagens de correio de voz"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"A sua caixa de entrada está cheia. Tente eliminar algumas mensagens para receber novas mensagens de correio de voz."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ativar o armazenamento adicional e a cópia de segurança"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"A sua caixa de correio está cheia. Para libertar espaço, ative o armazenamento adicional para que a Google possa gerir e criar uma cópia de segurança das suas mensagens de correio de voz."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ativar o armazenamento adicional e a cópia de segurança"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"A sua caixa de correio está quase cheia. Para libertar espaço, ative o armazenamento adicional para que a Google possa gerir e criar uma cópia de segurança das suas mensagens de correio de voz."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Definir o seu PIN do correio de voz"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Irá precisar de um PIN do correio de voz sempre que efetuar uma chamada para aceder ao seu correio de voz."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Definições do modo de avião"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Definir PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Tentar novamente"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Ativar"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Não, obrigado"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sincronizar"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Ligar para correio de voz"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Ligar para o Apoio ao cliente"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Ocorreu um problema. Tente novamente mais tarde. Se o problema persistir, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Ocorreu um problema. Tente novamente mais tarde. Se o problema persistir, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Ocorreu um erro"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Ocorreu um problema. Tente novamente mais tarde. Se o problema persistir, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Não é possível ligar para o seu correio de voz"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Estamos a ter problemas a ligar para o seu correio de voz. Se estiver numa área com um sinal fraco, aguarde até ter um sinal forte e tente novamente. Se o problema persistir, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Não é possível ligar para o seu correio de voz"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Estamos a ter problemas a ligar para o seu correio de voz. Se estiver numa área com um sinal fraco, aguarde até ter um sinal forte e tente novamente. Se o problema persistir, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Não é possível ligar para o seu correio de voz"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Estamos a ter problemas a ligar para o seu correio de voz. Se estiver numa área com um sinal fraco, aguarde até ter um sinal forte e tente novamente. Se o problema persistir, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Ocorreu um problema. Tente novamente mais tarde. Se o problema persistir, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Ocorreu um problema. Tente novamente mais tarde. Se o problema persistir, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Ocorreu um erro"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Estamos a ter problemas a configurar o seu serviço. Tente novamente mais tarde. Se o problema persistir, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Não é possível ligar para o seu correio de voz"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Não conseguimos ligar para o seu correio de voz neste momento. Tente novamente mais tarde. Se o problema persistir, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Configurar correio de voz"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"O correio de voz não está configurado na sua conta. Contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Correio de voz"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Não é possível utilizar o correio de voz visual neste dispositivo. Contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Ocorreu um erro"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Correio de voz visual"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Para concluir a configuração do correio de voz visual, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Correio de voz visual"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Para concluir a configuração do correio de voz visual, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Correio de voz visual"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Para ativar o correio de voz visual, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Ocorreu um erro"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Para concluir a configuração do correio de voz visual, contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"O correio de voz visual está desativado"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> para ativar o correio de voz visual."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Ocorreu um erro"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Ocorreu um erro"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Ocorreu um erro"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Contacte o serviço de apoio ao cliente através do número <xliff:g id="NUMBER">%1$s</xliff:g> e indique que o código de erro é 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Ativar correio de voz visual"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nAo ativar o correio de voz visual, aceita os Termos de Utilização da Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Ativar correio de voz visual"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Veja e ouça as suas mensagens sem ter de ligar para o correio de voz. As transcrições do correio de voz são disponibilizadas pelo serviço de transcrição gratuito da Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Veja e ouça as suas mensagens sem ter de ligar para o correio de voz. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Saiba mais"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"O correio de voz visual será desativado se tiver recusado os Termos de Utilização."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Desativar o correio de voz visual"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"A transcrição das mensagens de correio de voz será desativada se tiver recusado os Termos de Utilização."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Desativar a transcrição das mensagens de correio de voz"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"O correio de voz está apenas disponível ao ligar para *86. Defina um novo PIN do correio de voz para continuar."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Definir PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-pt/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-pt/strings.xml
deleted file mode 100644
index af20665..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-pt/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Ativando correio de voz visual"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Talvez você não receba notificações do correio de voz até que o correio de voz visual esteja totalmente ativado. Enquanto isso não acontecer, ligue para o correio de voz para receber as novas mensagens."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Não foi possível ativar o correio de voz visual"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Verifique se seu smartphone tem uma conexão por rede móvel e tente novamente."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Desative o modo avião e tente novamente."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Sem conexão"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Você não será notificado sobre novos correios de voz. Se estiver usando Wi-Fi, sincronize agora para verificar o correio de voz."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Você não será notificado sobre novos correios de voz. Desative o modo avião para sincronizar seu correio de voz."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Seu smartphone precisa de uma conexão de dados móveis para verificar o correio de voz."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Não foi possível ativar o correio de voz visual"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Não foi possível atualizar o correio de voz visual"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Tente novamente quando estiver com uma conexão de dados móveis ou Wi‑Fi melhor. Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Tente novamente quando estiver com uma conexão de dados móveis melhor. Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Não foi possível atualizar o correio de voz visual"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Não foi possível atualizar o correio de voz visual"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Não foi possível atualizar o correio de voz visual"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Não foi possível atualizar o correio de voz visual"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Você ainda pode ligar para verificar o correio de voz."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Caixa de entrada quase cheia"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Não será possível receber novos correios de voz se sua Caixa de entrada estiver cheia."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Não é possível receber novos correios de voz"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Sua Caixa de entrada está cheia. Exclua algumas mensagens para receber novos correios de voz."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ativar armazenamento extra e fazer backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Sua caixa de correio está cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ativar armazenamento extra e fazer backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Sua caixa de correio está quase cheia. Para liberar espaço, ative o armazenamento extra para que o Google possa gerenciar e fazer o backup das suas mensagens do correio de voz."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Definir seu PIN do correio de voz"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Você precisará de um PIN do correio de voz sempre que ligar para acessar seu correio de voz."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Configurações do modo avião"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Definir PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Tentar novamente"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Ativar"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Não, obrigado"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sincronizar"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Ligar para correio de voz"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Ligar para o Suporte ao Cliente"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Há um problema. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Há um problema. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Ocorreu um erro"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Há um problema. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Não é possível a conexão com o correio de voz"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Há um problema na conexão com sua caixa de correio de voz. Se você estiver em uma área onde a intensidade do sinal é fraca, tente novamente quando tiver um sinal forte. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Não é possível a conexão com o correio de voz"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Há um problema na conexão com sua caixa de correio de voz. Se você estiver em uma área onde a intensidade do sinal é fraca, tente novamente quando tiver um sinal forte. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Não é possível a conexão com o correio de voz"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Há um problema na conexão com sua caixa de correio de voz. Se você estiver em uma área onde a intensidade do sinal é fraca, tente novamente quando tiver um sinal forte. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Há um problema. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Ocorreu um erro"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Há um problema. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Ocorreu um erro"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Há um problema para configurar o serviço. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Não é possível a conexão com o correio de voz"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Não foi possível a conexão com sua caixa de correio de voz no momento. Tente novamente mais tarde. Caso o problema persista, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Configurar correio de voz"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"O correio de voz não está configurado na conta. Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Correio de voz"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Não é possível usar o correio de voz visual no dispositivo. Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Ocorreu um erro"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Correio de voz visual"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Para concluir a configuração do correio de voz visual, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Correio de voz visual"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Para concluir a configuração do correio de voz visual, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Correio de voz visual"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Para ativar o correio de voz visual, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Ocorreu um erro"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Para concluir a configuração do correio de voz visual, entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Correio de voz visual desativado"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> para ativar o correio de voz visual."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Ocorreu um erro"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Ocorreu um erro"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Ocorreu um erro"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Entre em contato com o atendimento ao cliente pelo número <xliff:g id="NUMBER">%1$s</xliff:g> e forneça o código de erro 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Ativar correio de voz visual"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nAo ativar o correio de voz visual, você concorda com os Termos e Condições da Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Ativar correio de voz visual"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Veja e ouça suas mensagens sem precisar ligar para o correio de voz. As transcrições do correio de voz são fornecidas pelo serviço de transcrição gratuito do Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Veja e ouça suas mensagens sem precisar ligar para o correio de voz. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Saiba mais"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"O correio de voz visual será desativado se os termos e condições forem recusados."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Desativar correio de voz visual"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"A transcrição do correio de voz será desativada se os Temos e Condições forem recusados."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Desativar transcrição do correio de voz"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"O correio de voz só estará acessível quando você ligar para *86. Defina um novo PIN do correio de voz para continuar."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Definir PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ro/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ro/strings.xml
deleted file mode 100644
index f80f1e1..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ro/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Se activează mesageria vocală vizuală"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"E posibil să nu primiți notificări de la mesageria vocală până când mesageria vocală vizuală nu este activată complet. Apelați mesageria vocală pentru a prelua mesajele noi până la activarea completă a mesageriei."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Nu se poate activa mesagerie vocală vizuală"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Asigurați-vă că telefonul are o conexiune la o rețea mobilă și încercați din nou."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Dezactivați modul avion și încercați din nou."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Nicio conexiune"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Nu veți primi notificări pentru mesaje vocale noi. Dacă folosiți Wi-Fi, puteți verifica mesageria sincronizând acum."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Nu veți primi notificări pentru mesajele vocale noi. Dezactivați modul avion pentru a vă sincroniza mesageria."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Telefonul dvs. are nevoie de conexiune mobilă pentru a verifica mesageria vocală."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Nu se poate activa mesagerie vocală vizuală"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Puteți totuși să apelați pentru a verifica mesageria vocală."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Nu se poate actualiza mesageria vocală vizuală"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Încercați din nou când aveți o conexiune Wi-Fi sau mobilă mai bună. Puteți totuși să apelați pentru a verifica mesageria vocală."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Încercați din nou când aveți o conexiune mobilă mai bună. Puteți totuși să apelați pentru a verifica mesageria vocală."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Nu se poate actualiza mesageria vocală vizuală"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Puteți totuși să apelați pentru a verifica mesageria vocală."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Nu se poate actualiza mesageria vocală vizuală"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Puteți totuși să apelați pentru a verifica mesageria vocală."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Nu se poate actualiza mesageria vocală vizuală"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Puteți totuși să apelați pentru a verifica mesageria vocală."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Nu se poate actualiza mesageria vocală vizuală"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Puteți totuși să apelați pentru a verifica mesageria vocală."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Căsuța de mesaje este aproape plină"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Nu veți putea primi mesaje vocale noi dacă aveți căsuța de mesaje plină."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nu puteți primi mesaje vocale noi"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Căsuța de mesaje este plină. Încercați să ștergeți câteva mesaje pentru a putea primi unele noi."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Activați spațiul de stocare suplimentar și backupul"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Căsuța dvs. de e-mail este plină. Pentru a elibera spațiu, activați spațiul de stocare suplimentar și astfel Google poate să vă gestioneze mesajele vocale și să facă backup pentru acestea."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Activați spațiul de stocare suplimentar și backupul"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Căsuța dvs. de e-mail este aproape plină. Pentru a elibera spațiu, activați spațiul de stocare suplimentar și astfel Google poate să vă gestioneze mesajele vocale și să facă backup pentru acestea."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Setați un cod PIN pentru mesageria vocală"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Aveți nevoie de un cod PIN pentru mesageria vocală când sunați pentru a o accesa."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Setări pentru modul avion"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Setați codul PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Încercați din nou"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Activați"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nu, mulțumesc"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sincronizați"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Apelați mesageria vocală"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Apelați serviciul de asistență pentru clienți"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"A apărut o eroare"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"A apărut o problemă. Încercați din nou mai târziu. Dacă problema persistă, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"A apărut o eroare"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"A apărut o problemă. Încercați din nou mai târziu. Dacă problema persistă, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"A apărut o eroare"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"A apărut o problemă. Încercați din nou mai târziu. Dacă problema persistă, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Nu vă puteți conecta la căsuța de mesaje vocale"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"A apărut o problemă de conectare la căsuța de mesaje vocale. Dacă vă aflați într-o zonă cu semnal slab, așteptați până aveți semnal puternic și încercați din nou. Dacă problema persistă, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Nu vă puteți conecta la căsuța de mesaje vocale"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"A apărut o problemă de conectare la căsuța de mesaje vocale. Dacă vă aflați într-o zonă cu semnal slab, așteptați până aveți semnal puternic și încercați din nou. Dacă problema persistă, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Nu vă puteți conecta la căsuța de mesaje vocale"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"A apărut o problemă de conectare la căsuța de mesaje vocale. Dacă vă aflați într-o zonă cu semnal slab, așteptați până aveți semnal puternic și încercați din nou. Dacă problema persistă, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"A apărut o eroare"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"A apărut o problemă. Încercați din nou mai târziu. Dacă problema persistă, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"A apărut o eroare"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"A apărut o problemă. Încercați din nou mai târziu. Dacă problema persistă, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"A apărut o eroare"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"A apărut o problemă la configurarea serviciului. Încercați din nou mai târziu. Dacă problema persistă, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Nu vă puteți conecta la căsuța de mesaje vocale"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Nu s-a putut face conectarea la căsuța de mesaje vocale în acest moment. Încercați din nou mai târziu. Dacă problema persistă, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Configurați mesageria vocală"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Mesageria vocală nu este configurată pentru contul dvs. Contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Mesagerie vocală"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Nu puteți folosi mesageria vocală vizuală pe acest dispozitiv. Contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"A apărut o eroare"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Mesagerie vocală vizuală"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Pentru a finaliza configurarea mesageriei vocale vizuale, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Mesagerie vocală vizuală"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Pentru a finaliza configurarea mesageriei vocale vizuale, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Mesagerie vocală vizuală"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Pentru a activa mesageria vocală vizuală, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"A apărut o eroare"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Pentru a finaliza configurarea mesageriei vocale vizuale, contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Mesageria vocală vizuală e dezactivată"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> pentru a activa mesageria vocală vizuală."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"A apărut o eroare"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"A apărut o eroare"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"A apărut o eroare"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Contactați Serviciul de asistență pentru clienți la <xliff:g id="NUMBER">%1$s</xliff:g> și comunicați-le codul erorii: 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Activați Mesageria vocală vizuală"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nDacă activați Mesageria vocală vizuală, sunteți de acord să respectați termenii și condițiile Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Activați Mesageria vocală vizuală"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Vedeți și ascultați mesajele, fără să fie necesar să apelați mesageria vocală. Transcrierile mesajelor vocale sunt oferite de serviciul gratuit de transcriere de la Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Vedeți și ascultați mesajele vocale, fără să fie necesar să apelați mesageria vocală. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Aflați mai multe"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Mesageria vocală vizuală va fi dezactivată dacă nu acceptați termenii și condițiile."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Dezactivați mesageria vocală vizuală"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Transcrierea mesajelor vocale va fi dezactivată dacă termenii și condițiile sunt refuzate."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Dezactivați transcrierea mesajelor vocale"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Mesageria vocală va fi accesibilă numai apelând *86. Setați un cod PIN nou pentru mesageria vocală pentru a continua."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Setați codul PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ru/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ru/strings.xml
deleted file mode 100644
index f88cbc0..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ru/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Включение просмотра голосовой почты"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Вы не будете получать оповещения, пока не активируете визуальную голосовую почту. Позвоните, чтобы прослушать новые сообщения."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Не удалось включить просмотр голосовой почты"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Убедитесь, что телефон подключен к мобильной сети, и повторите попытку."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Отключите режим полета и повторите попытку."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Нет соединения"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Вы не будете получать оповещения о новых голосовых сообщениях. Если телефон подключен к Wi-Fi, то вы можете выполнить синхронизацию и проверить голосовую почту сейчас."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Вы не будете получать оповещения о новых сообщениях. Чтобы выполнить синхронизацию, отключите режим полета."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Чтобы проверить голосовую почту, подключитесь к мобильному Интернету."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Не удалось включить просмотр голосовой почты"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Чтобы проверить голосовую почту, вы можете позвонить на специальный номер."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Не удалось обновить страницу просмотра голосовой почты"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Дождитесь стабильного сигнала Wi-Fi или мобильного Интернета и повторите попытку. Если вы хотите проверить голосовую почту сейчас, позвоните на специальный номер."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Дождитесь стабильного сигнала мобильного Интернета и повторите попытку. Если вы хотите проверить голосовую почту сейчас, позвоните на специальный номер."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Не удалось обновить страницу просмотра голосовой почты"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Чтобы проверить голосовую почту, вы можете позвонить на специальный номер."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Не удалось обновить страницу просмотра голосовой почты"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Чтобы проверить голосовую почту, вы можете позвонить на специальный номер."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Не удалось обновить страницу просмотра голосовой почты"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Чтобы проверить голосовую почту, вы можете позвонить на специальный номер."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Не удалось обновить страницу просмотра голосовой почты"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Чтобы проверить голосовую почту, вы можете позвонить на специальный номер."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Почтовый ящик почти заполнен"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Когда почтовый ящик будет заполнен, вы не сможете получать новые голосовые сообщения."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Нет свободного места"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Почтовый ящик заполнен. Чтобы получать новые голосовые сообщения, удалите старые."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Требуется дополнительное пространство"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Почтовый ящик заполнен. Чтобы освободить место, активируйте дополнительное пространство. После этого Google сможет управлять вашими голосовыми сообщениями и сохранять их резервные копии."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Требуется дополнительное пространство"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Почтовый ящик почти заполнен. Чтобы освободить место, активируйте дополнительное пространство. После этого Google сможет управлять вашими голосовыми сообщениями и сохранять их резервные копии."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Установите PIN-код голосовой почты"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Он будет нужен вам каждый раз, когда вы звоните, чтобы прослушать голосовую почту."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Настройки режима полета"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Установить PIN-код"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Повторить"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Активировать"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Нет, спасибо"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Синхронизировать"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Получить почту"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Позвонить в службу поддержки"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Ошибка"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Произошла ошибка. Повторите попытку позже. Если проблема не исчезнет, свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Ошибка"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Произошла ошибка. Повторите попытку позже. Если проблема не исчезнет, свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Ошибка"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Произошла ошибка. Повторите попытку позже. Если проблема не исчезнет, свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Не удается подключиться к голосовой почте"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Не удается подключиться к голосовой почте. Попробуйте найти место с более сильным сигналом и повторите попытку. Если проблема не исчезнет, свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Не удается подключиться к голосовой почте"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Не удается подключиться к голосовой почте. Попробуйте найти место с более сильным сигналом и повторите попытку. Если проблема не исчезнет, свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Не удается подключиться к голосовой почте"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Не удается подключиться к голосовой почте. Попробуйте найти место с более сильным сигналом и повторите попытку. Если проблема не исчезнет, свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Ошибка"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Произошла ошибка. Повторите попытку позже. Если проблема не исчезнет, свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Ошибка"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Произошла ошибка. Повторите попытку позже. Если проблема не исчезнет, свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Ошибка"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Не удается настроить услугу. Повторите попытку позже. Если проблема не исчезнет, свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Не удается подключиться к голосовой почте"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Не удается подключиться к голосовой почте. Повторите попытку позже. Если проблема не исчезнет, свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Настройте голосовую почту"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"В вашем аккаунте не настроена голосовая почта. Свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Голосовая почта"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"На этом устройстве нельзя использовать визуальную голосовую почту. Обратитесь в службу поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите код ошибки: 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Ошибка"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Визуальная голосовая почта"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Чтобы завершить настройку визуальной голосовой почты, обратитесь в службу поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите код ошибки: 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Визуальная голосовая почта"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Чтобы завершить настройку визуальной голосовой почты, обратитесь в службу поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите код ошибки: 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Визуальная голосовая почта"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Чтобы активировать визуальную голосовую почту, обратитесь в службу поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите код ошибки: 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Ошибка"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Чтобы завершить настройку визуальной голосовой почты, обратитесь в службу поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите код ошибки: 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Визуальная голосовая почта отключена"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g>, чтобы активировать визуальную голосовую почту."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Ошибка"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Ошибка"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Ошибка"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Свяжитесь со службой поддержки по номеру <xliff:g id="NUMBER">%1$s</xliff:g> и сообщите им код ошибки 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Включите визуальную голосовую почту"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nВключая визуальную голосовую почту, вы соглашаетесь с Условиями использования Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Включите визуальную голосовую почту"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Просматривайте и прослушивайте голосовые сообщения без лишних звонков. Расшифровки аудиозаписей создаются с помощью специальной бесплатной службы Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Просматривайте и прослушивайте голосовые сообщения без лишних звонков. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Подробнее…"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Если вы не примете Условия использования, визуальная голосовая почта будет отключена."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Отключение визуальной голосовой почты"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Если вы не примете Условия использования, транскрипция голосовых сообщений будет отключена."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Отключение транскрипции голосовых сообщений"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Для прослушивания голосовой почты необходимо будет отправить вызов по номеру *86. Чтобы продолжить, установите новый PIN-код голосовой почты."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Установка PIN-кода"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-si/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-si/strings.xml
deleted file mode 100644
index a571d6b..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-si/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"දෘශ්‍ය හඬ තැපෑල ක්‍රියාත්මක කිරීම"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"දෘශ්‍ය හඬ තැපෑල සම්පූර්ණයෙන් සක්‍රිය කරන තෙක් ඔබට හඩ තැපැල් දැනුම් දීම් නොලැබීමට හැකිය. දෘශ්‍ය හඬ තැපෑල සම්පූර්ණයෙන් සක්‍රිය කරන තෙක් නව පණිවිඩ යළි ලබා ගැනීමට හඬ තැපෑල අමතන්න."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"දෘශ්‍ය හඬ තැපෑල ක්‍රියාත්මක කළ නොහැකිය"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"ඔබේ දුරකථනයට ජංගම ජාල සම්බන්ධතාවක් ඇති බව සහතික කරගෙන නැවත උත්සාහ කරන්න."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"ගුවන් යානා ප්‍රකාරය ක්‍රියාවිරහිත කර නැවත උත්සාහ කරන්න."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"සම්බන්ධතාවය නැත"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"ඔබට නව හඬ තැපැල් සඳහා දැනුම් දීම් නොලැබෙනු ඇත. ඔබ Wi-Fi වල සිටින්නේ නම්, ඔබට දැන් සමමුහුර්ත කිරීමෙන් හඬ තැපෑල සඳහා පරීක්ෂා කළ හැකිය."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"ඔබට නව හඬ තැපැල් සඳහා දැනුම් දීම් නොලැබෙනු ඇත. ඔබේ හඬ තැපැල් සමමුහුර්ත කිරීමට ගුවන් යානා ප්‍රකාරය ක්‍රියාවිරහිත කරන්න."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"හඬ තැපෑල පරීක්ෂා කිරීමට ඔබේ දුරකථනයට ජංගම දත්ත සම්බන්ධතාවක් අවශ්‍යයි."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"දෘශ්‍ය හඬ තැපෑල ක්‍රියාත්මක කළ නොහැකිය"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"ඔබට තවම හඬ තැපෑල පරීක්ෂා කිරීමට ඇමතිය හැකිය."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"දෘශ්‍ය හඬ තැපෑල යාවත්කාලීන කළ නොහැකිය"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"ඔබේ Wi-Fi හෝ ජංගම දත්ත සම්බන්ධතාව වඩා යහපත් විට නැවත උත්සාහ කරන්න. ඔබට තවම හඬ තැපෑල පරීක්ෂා කිරීමට ඇමතිය හැකිය."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"ඔබේ ජංගම දත්ත සම්බන්ධතාව වඩා යහපත් විට නැවත උත්සාහ කරන්න. ඔබට තවම හඬ තැපෑල පරීක්ෂා කිරීමට ඇමතිය හැකිය."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"දෘශ්‍ය හඬ තැපෑල යාවත්කාලීන කළ නොහැකිය"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"ඔබට තවම හඬ තැපෑල පරීක්ෂා කිරීමට ඇමතිය හැකිය."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"දෘශ්‍ය හඬ තැපෑල යාවත්කාලීන කළ නොහැකිය"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"ඔබට තවම හඬ තැපෑල පරීක්ෂා කිරීමට ඇමතිය හැකිය."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"දෘශ්‍ය හඬ තැපෑල යාවත්කාලීන කළ නොහැකිය"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"ඔබට තවම හඬ තැපෑල පරීක්ෂා කිරීමට ඇමතිය හැකිය."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"දෘශ්‍ය හඬ තැපෑල යාවත්කාලීන කළ නොහැකිය"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"ඔබට තවම හඬ තැපෑල පරීක්ෂා කිරීමට ඇමතිය හැකිය."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"එන ලිපි මුළුමනින්ම පාහේ පිරී ඇත"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"ඔබේ එන ලිපි පිරී ඇති නම් ඔබට නව හඩ තැපැල් ලැබීමට නොහැකි වනු ඇත."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"නව හඬ තැපැල් ලැබීමට නොහැකිය"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"ඔබේ එන ලිපි පිරී ඇත. නව හඬ තැපැල් ලබා ගැනීමට පණිවිඩ සමහරක් මැකීම උත්සාහ කරන්න."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"අතිරේක ගබඩාව සහ උපස්ථය ක්‍රියාත්මක කරන්න"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"ඔබේ තැපැල් පෙට්ටිය පිරී ඇත. ඉඩ නිදහස් කර ගැනීමට, අතිරේක ගබඩාව ක්‍රියාත්මක කරන්න. එවිට Google හට ඔබේ හඬ තැපැල් පණිවිඩ කළමනාකරණය කිරීමට සහ උපස්ථ කිරීමට හැකිය."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"අතිරේක ගබඩාව සහ උපස්ථය ක්‍රියාත්මක කරන්න"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"ඔබේ තැපැල් පෙට්ටිය මුළුමනින්ම පාහේ පිරී ඇත. ඉඩ නිදහස් කර ගැනීමට, අතිරේක ගබඩාව ක්‍රියාත්මක කරන්න. එවිට Google හට ඔබේ හඬ තැපැල් පණිවිඩ කළමනාකරණය කිරීමට සහ උපස්ථ කිරීමට හැකිය."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ඔබේ හඬ තැපැල් PIN අංකය සකසන්න"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"ඔබ ඔබේ හඬ තැපෑලට ප්‍රවේශ වීමට අමතන ඕනෑම අවස්ථාවක ඔබට හඬ තැපැල් PIN අංකයක් අවශ්‍ය වනු ඇත."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"ගුවන් යානා ප්‍රකාර සැකසීම්"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN අංකය සකසන්න"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"නැවත උත්සාහ කරන්න"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"ක්‍රියාත්මක කරන්න"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"එපා ස්තුතියි"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"සමමුහුර්තය"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"හඬ තැපැල් අමතන්න"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"පාරිභෝගික සහාය අමතන්න"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"යම් දෙයක් වැරදිණි"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"කනගාටුයි, අපට දෝෂයක් ඇති විය. කරුණාකර පසුව නැවත උත්සාහ කරන්න. තවම ගැටලුවක් තිබේ නම්, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9001 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"යම් දෙයක් වැරදිණි"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"කනගාටුයි, අපට දෝෂයක් ඇති විය. කරුණාකර පසුව නැවත උත්සාහ කරන්න. තවම ගැටලුවක් තිබේ නම්, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9002 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"යම් දෙයක් වැරදිණි"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"කනගාටුයි, අපට දෝෂයක් ඇති විය. කරුණාකර පසුව නැවත උත්සාහ කරන්න. තවම ගැටලුවක් තිබේ නම්, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9003 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"ඔබේ හඬ තැපැල් පෙට්ටිය වෙත සම්බන්ධ විය නොහැකිය"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"කනගාටුයි, අපට ඔබේ හඬ තැපැල් පෙට්ටියට සම්බන්ධ වීමේ ගැටලු ඇත. ඔබ දුර්වල සංඥා ප්‍රබලතාවක් ඇති ප්‍රදේශයක සිටින්නේ නම්, ඔබේ සංඥා ප්‍රබල වන තෙක් රැඳී සිට නැවත උත්සාහ කරන්න. තවම ගැටලුවක් තිබේ නම්, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9004 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"ඔබේ හඬ තැපැල් පෙට්ටිය වෙත සම්බන්ධ විය නොහැකිය"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"කනගාටුයි, අපට ඔබේ හඬ තැපැල් පෙට්ටියට සම්බන්ධ වීමේ ගැටලු ඇත. ඔබ දුර්වල සංඥා ප්‍රබලතාවක් ඇති ප්‍රදේශයක සිටින්නේ නම්, ඔබේ සංඥා ප්‍රබල වන තෙක් රැඳී සිට නැවත උත්සාහ කරන්න. තවම ගැටලුවක් තිබේ නම්, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9005 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"ඔබේ හඬ තැපැල් පෙට්ටිය වෙත සම්බන්ධ විය නොහැකිය"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"කනගාටුයි, අපට ඔබේ හඬ තැපැල් පෙට්ටියට සම්බන්ධ වීමේ ගැටලු ඇත. ඔබ දුර්වල සංඥා ප්‍රබලතාවක් ඇති ප්‍රදේශයක සිටින්නේ නම්, ඔබේ සංඥා ප්‍රබල වන තෙක් රැඳී සිට නැවත උත්සාහ කරන්න. තවම ගැටලුවක් තිබේ නම්, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9006 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"යම් දෙයක් වැරදිණි"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"කනගාටුයි, අපට දෝෂයක් ඇති විය. කරුණාකර පසුව නැවත උත්සාහ කරන්න. තවම ගැටලුවක් තිබේ නම්, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9007 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"යම් දෙයක් වැරදිණි"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"කනගාටුයි, අපට දෝෂයක් ඇති විය. කරුණාකර පසුව නැවත උත්සාහ කරන්න. තවම ගැටලුවක් තිබේ නම්, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9008 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"යම් දෙයක් වැරදිණි"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"කනගාටුයි, අපට ඔබේ සේවාව පිහිටුවීමේ දෝෂයක් ඇති විය. කරුණාකර පසුව නැවත උත්සාහ කරන්න. තවම ගැටලුවක් තිබේ නම්, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9009 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"ඔබේ හඬ තැපැල් පෙට්ටිය වෙත සම්බන්ධ විය නොහැකිය"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"කනගාටුයි, අපට මේ අවස්ථාවේදී ඔබේ හඬ තැපැල් පෙට්ටිය වෙත සම්බන්ධ විය නොහැකිය. කරුණාකර පසුව නැවත උත්සාහ කරන්න. තවම ගැටලුවක් තිබේ නම්, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9990 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"හඬ තැපෑල පිහිටුවන්න"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"ඔබේ ගිණුම මත හඬ තැපෑල පිහිටුවා නැත. කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9991 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"හඬ තැපෑල"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"දෘශ්‍ය හඬ තැපෑල මෙම උපාංගයේ භාවිත කළ නොහැකිය. කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9992 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"යම් දෙයක් වැරදිණි"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9993 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"දෘශ්‍ය හඬ තැපෑල"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"දෘශ්‍ය හඬ තැපෑල පිහිටුවීම සම්පූර්ණ කිරීමට, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9994 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"දෘශ්‍ය හඬ තැපෑල"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"දෘශ්‍ය හඬ තැපෑල පිහිටුවීම සම්පූර්ණ කිරීමට, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9995 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"දෘශ්‍ය හඬ තැපෑල"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"දෘශ්‍ය හඬ තැපෑල සක්‍රිය කිරීමට, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9996 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"යම් දෙයක් වැරදිණි"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"දෘශ්‍ය හඬ තැපෑල පිහිටුවීම සම්පූර්ණ කිරීමට, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9998 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"දෘශ්‍ය හඬ තැපෑල අබලයි"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"දෘශ්‍ය හඬ තැපෑල සක්‍රිය කිරීමට, කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතන්න."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"යම් දෙයක් වැරදිණි"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9997 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"යම් දෙයක් වැරදිණි"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9989 බව ඔවුන්ට පවසන්න."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"යම් දෙයක් වැරදිණි"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"කරුණාකර <xliff:g id="NUMBER">%1$s</xliff:g> අංකයට පාරිභෝගික සේවාව අමතා දෝෂ කේතය 9999 බව ඔවුන්ට පවසන්න."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"දෘශ්‍ය හඬ තැපෑල ක්‍රියාත්මක කරන්න"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nදෘශ්‍ය හඬ තැපෑල ක්‍රියාත්මක කිරීමෙන් ඔබ Verizon Wireless නියම සහ කොන්දේසිවලට එකඟ වේ:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"දෘශ්‍ය හඬ තැපෑල ක්‍රියාත්මක කරන්න"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"හඬ තැපෑලට ඇමතීමෙන් තොරව ඔබේ පණිවිඩ බලා ඒවාට සවන් දෙන්න. ඔබේ හඬ තැපෑලේ පිටපත් Google ගාස්තු රහිත පිටපත් කිරීමේ සේවාව මගින් සපයයි. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"හඬ තැපෑලට ඇමතීමෙන් තොරව ඔබේ හඬ තැපෑල බලා ඒවාට සවන් දෙන්න. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"තව දැන ගන්න"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"නියම සහ කොන්දේසි ප්‍රතික්ෂේප කර ඇති නම් දෘශ්‍ය හඬ තැපෑල අබල කරනු ඇත."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"දෘශ්‍ය හඬ තැපෑල අබල කරන්න"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"නියම සහ කොන්දේසි ප්‍රතික්ෂේප කර ඇති නම් හඬ තැපැල් පිටපත් කිරීම අබල කරනු ඇත."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"හඬ තැපැල් පිටපත් කිරීම අබල කරන්න"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"හඩ තැපෑල *86 වෙත ඇමතීමෙන් පමණක් ලබා ගත හැකිය. ඉදිරියට යාමට නව හඩ තැපැල් PIN එකක් පිහිටුවන්න."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN අංකය සකසන්න"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sk/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sk/strings.xml
deleted file mode 100644
index bd510b4..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-sk/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktivuje sa vizuálna hlasová schránka"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Kým nebude vizuálna hlasová schránka úplne aktivovaná, pravdepodobne nebudete dostávať upozornenia hlasovej schránky. Kým nebude hlasová schránka úplne aktivovaná, nové správy môžete načítať zavolaním do hlasovej schránky."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Vizuálna hlasová schránka sa nedá aktivovať"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Skontrolujte, či má telefón pripojenie k mobilnej sieti, a skúste to znova."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Vypnite režim v lietadle a skúste to znova."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Žiadne pripojenie"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Nedostanete upozornenia na nové hlasové správy. Ak používate Wi‑Fi, hlasovú schránku môžete skontrolovať synchronizáciou."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Nedostanete upozornenia na nové hlasové správy. Vypnite režim v lietadle a synchronizujte hlasovú schránku."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Na kontrolu hlasovej schránky potrebuje telefón mobilné dátové pripojenie."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Vizuálna hlasová schránka sa nedá aktivovať"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Hlasovú schránku si stále môžete skontrolovať zavolaním."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Vizuálna hlasová schránka sa nedá aktualizovať"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Skúste to znova, keď budete mať lepšie pripojenie cez Wi‑Fi alebo lepšie mobilné dátové pripojenie. Hlasovú schránku si stále môžete skontrolovať zavolaním."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Skúste to znova, keď budete mať lepšie mobilné dátové pripojenie. Hlasovú schránku si stále môžete skontrolovať zavolaním."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Vizuálna hlasová schránka sa nedá aktualizovať"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Hlasovú schránku si stále môžete skontrolovať zavolaním."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Vizuálna hlasová schránka sa nedá aktualizovať"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Hlasovú schránku si stále môžete skontrolovať zavolaním."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Vizuálna hlasová schránka sa nedá aktualizovať"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Hlasovú schránku si stále môžete skontrolovať zavolaním."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Vizuálna hlasová schránka sa nedá aktualizovať"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Hlasovú schránku si stále môžete skontrolovať zavolaním."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Doručená pošta je takmer plná"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"S plnou doručenou poštou nebudete môcť prijímať nové hlasové správy."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Nemôžete prijímať nové hlasové správy"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Máte plnú doručenú poštu. Skúste odstrániť niekoľko správ, aby ste mohli prijať novú hlasovú správu."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Zapnite si ďalšie úložisko a zálohovanie"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Poštovú schránku máte plnú. Ak chcete uvoľniť miesto, zapnite si ďalšie úložisko, aby mohol Google spravovať a zálohovať vaše hlasové správy."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Zapnite si ďalšie úložisko a zálohovanie"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Poštovú schránku máte takmer plnú. Ak chcete uvoľniť miesto, zapnite si ďalšie úložisko, aby mohol Google spravovať a zálohovať vaše hlasové správy."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Nastaviť kód PIN hlasovej schránky"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Kód PIN hlasovej schránky budete potrebovať vždy, keď zavoláte do svojej hlasovej schránky."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Nastavenia režimu v lietadle"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Nastaviť kód PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Skúsiť znova"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Zapnúť"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nie, ďakujem"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synchronizovať"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Volať do hlasovej schránky"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Volať podporu zákazníka"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Vyskytol sa problém"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Ľutujeme, vyskytol sa problém. Skúste to znova neskôr. Ak bude problém pretrvávať, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Vyskytol sa problém"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Ľutujeme, vyskytol sa problém. Skúste to znova neskôr. Ak bude problém pretrvávať, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Vyskytol sa problém"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Ľutujeme, vyskytol sa problém. Skúste to znova neskôr. Ak bude problém pretrvávať, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Nedá sa pripojiť k vašej hlasovej poštovej schránke"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Ľutujeme, máme problémy s pripojením k vašej hlasovej poštovej schránke. Ak sa nachádzate v oblasti so slabým signálom, počkajte, kým nebudete mať silný signál, a skúste to znova. Ak bude problém pretrvávať, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Nedá sa pripojiť k vašej hlasovej poštovej schránke"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Ľutujeme, máme problémy s pripojením k vašej hlasovej poštovej schránke. Ak sa nachádzate v oblasti so slabým signálom, počkajte, kým nebudete mať silný signál, a skúste to znova. Ak bude problém pretrvávať, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Nedá sa pripojiť k vašej hlasovej poštovej schránke"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Ľutujeme, máme problémy s pripojením k vašej hlasovej poštovej schránke. Ak sa nachádzate v oblasti so slabým signálom, počkajte, kým nebudete mať silný signál, a skúste to znova. Ak bude problém pretrvávať, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Vyskytol sa problém"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Ľutujeme, vyskytol sa problém. Skúste to znova neskôr. Ak bude problém pretrvávať, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Vyskytol sa problém"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Ľutujeme, vyskytol sa problém. Skúste to znova neskôr. Ak bude problém pretrvávať, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Vyskytol sa problém"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Ľutujeme, máme problémy s nastavením vašej služby. Skúste to znova neskôr. Ak bude problém pretrvávať, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Nedá sa pripojiť k vašej hlasovej poštovej schránke"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Ľutujeme, momentálne sa nemôžeme pripojiť k vašej hlasovej poštovej schránke. Skúste to znova neskôr. Ak bude problém pretrvávať, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Nastavenie hlasovej schránky"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Váš účet nemá nastavenú hlasovú schránku. Obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Hlasová schránka"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"V tomto zariadení sa nedá používať vizuálna hlasová schránka. Obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Vyskytol sa problém"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Vizuálna hlasová schránka"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Ak chcete dokončiť nastavenie vizuálnej hlasovej schránky, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Vizuálna hlasová schránka"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Ak chcete dokončiť nastavenie vizuálnej hlasovej schránky, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Vizuálna hlasová schránka"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Ak chcete aktivovať vizuálnu hlasovú schránku, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Vyskytol sa problém"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Ak chcete dokončiť nastavenie vizuálnej hlasovej schránky, obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Vizuálna hlasová schránka je vypnutá"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a požiadajte o aktiváciu vizuálnej hlasovej schránky."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Vyskytol sa problém"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Vyskytol sa problém"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Vyskytol sa problém"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Obráťte sa na služby zákazníkom na čísle <xliff:g id="NUMBER">%1$s</xliff:g> a oznámte kód chyby 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Zapnutie vizuálnej hlasovej schránky"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nZapnutím vizuálnej hlasovej schránky súhlasíte so zmluvnými podmienkami služby Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Zapnutie vizuálnej hlasovej schránky"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Zobrazte a vypočujte si správy bez toho, aby ste museli zavolať do hlasovej schránky. Prepisy vašich hlasových správ poskytuje bezplatná prepisovacia služba Googlu. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Zobrazte a vypočujte si správy bez toho, aby ste museli zavolať do hlasovej schránky. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Ďalšie informácie"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"V prípade odmietnutia zmluvných podmienok bude vizuálna hlasová schránka zakázaná."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Zakázať vizuálnu hlasovú schránku"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"V prípade odmietnutia zmluvných podmienok bude prepis hlasových správ zakázaný."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Zakázať prepis hlasových správ"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Hlasová schránka bude k dispozícii len po zavolaní na číslo *86. Ak chcete pokračovať, nastavte nový PIN hlasovej schránky."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Nastavenie kódu PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sl/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sl/strings.xml
deleted file mode 100644
index 7b00e2b..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-sl/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktiviranje vizualnih sporočil v odzivniku"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Dokler niso vizualna sporočila v odzivniku v celoti aktivirana, morda ne boste prejemali obvestil o sporočilih v odzivniku. Pokličite odzivnik, da prenesete nova sporočila, dokler niso sporočila v odzivniku v celoti aktivirana."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Vizualnih sporočil v odzivniku ni mogoče aktivirati"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Preverite, ali je v telefonu vzpostavljena povezava z mobilnim omrežjem, in poskusite znova."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Izklopite način za letalo in poskusite znova."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Ni povezave"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Obvestil o novih sporočilih v odzivniku ne boste prejemali. Če ste v omrežju Wi-Fi, lahko zdaj zaženete sinhronizacijo in preverite, ali ste prejeli sporočila v odzivniku."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Obvestil o novih sporočilih v odzivniku ne boste prejemali. Če želite sinhronizirati sporočila v odzivniku, izklopite način za letalo."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Če želite preveriti sporočila v odzivniku, je treba v telefonu vzpostaviti povezavo za prenos podatkov v mobilnem omrežju."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Vizualnih sporočil v odzivniku ni mogoče aktivirati"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Sporočila v odzivniku lahko še vedno preverite tako, da pokličete."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Vizualnih sporočil v odzivniku ni mogoče posodobiti"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Poskusite znova, ko bo povezava z omrežjem Wi-Fi ali povezava za prenos podatkov v mobilnem omrežju boljša. Sporočila v odzivniku lahko še vedno preverite tako, da pokličete."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Poskusite znova, ko bo povezava za prenos podatkov v mobilnem omrežju boljša. Sporočila v odzivniku lahko še vedno preverite tako, da pokličete."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Vizualnih sporočil v odzivniku ni mogoče posodobiti"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Sporočila v odzivniku lahko še vedno preverite tako, da pokličete."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Vizualnih sporočil v odzivniku ni mogoče posodobiti"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Sporočila v odzivniku lahko še vedno preverite tako, da pokličete."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Vizualnih sporočil v odzivniku ni mogoče posodobiti"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Sporočila v odzivniku lahko še vedno preverite tako, da pokličete."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Vizualnih sporočil v odzivniku ni mogoče posodobiti"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Sporočila v odzivniku lahko še vedno preverite tako, da pokličete."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Nabiralnik je skoraj poln"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Če je nabiralnik poln, ne boste mogli prejemati novih sporočil v odzivniku."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Vizualnih sporočil v odzivniku ni mogoče prejemati"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Nabiralnik je poln. Poskusite izbrisati nekaj sporočil, da bo mogoče prejeti nova sporočila v odzivniku."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Vklop dodatnega prostora za shranjevanje in varnostno kopiranje"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Odzivnik je poln. Če želite sprostiti prostor, vklopite dodaten prostor za shranjevanje, da bo Google lahko upravljal vaša sporočila v odzivniku in jih varnostno kopiral."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Vklop dodatnega prostora za shranjevanje in varnostno kopiranje"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Odzivnik je skoraj poln. Če želite sprostiti prostor, vklopite dodaten prostor za shranjevanje, da bo Google lahko upravljal vaša sporočila v odzivniku in jih varnostno kopiral."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Nastavite kodo PIN za glasovno pošto"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Kodo PIN za glasovno pošto boste potrebovali ob vsakem klicu za dostop do glasovne pošte."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Nastavitve načina za letalo"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Nastavi kodo PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Poskusi znova"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Vklopi"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Ne, hvala"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinhroniziraj"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Pokliči odzivnik"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Pokliči podporo za stranke"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Prišlo je do napake"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Žal je prišlo do težave. Poskusite znova pozneje. Če se težava ponovi, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Prišlo je do napake"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Žal je prišlo do težave. Poskusite znova pozneje. Če se težava ponovi, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Prišlo je do napake"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Žal je prišlo do težave. Poskusite znova pozneje. Če se težava ponovi, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Povezave z odzivnikom ni mogoče vzpostaviti"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Žal je prišlo do težav pri vzpostavljanju povezave z odzivnikom. Če ste na območju s slabim signalom, počakajte, da bo signal močnejši, in nato poskusite znova. Če se težava ponovi, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Povezave z odzivnikom ni mogoče vzpostaviti"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Žal je prišlo do težav pri vzpostavljanju povezave z odzivnikom. Če ste na območju s slabim signalom, počakajte, da bo signal močnejši, in nato poskusite znova. Če se težava ponovi, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Povezave z odzivnikom ni mogoče vzpostaviti"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Žal je prišlo do težav pri vzpostavljanju povezave z odzivnikom. Če ste na območju s slabim signalom, počakajte, da bo signal močnejši, in nato poskusite znova. Če se težava ponovi, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Prišlo je do napake"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Žal je prišlo do težave. Poskusite znova pozneje. Če se težava ponovi, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Prišlo je do napake"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Žal je prišlo do težave. Poskusite znova pozneje. Če se težava ponovi, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Prišlo je do napake"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Žal je prišlo do težave pri nastavitvi storitve. Poskusite znova pozneje. Če se težava ponovi, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Povezave z odzivnikom ni mogoče vzpostaviti"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Žal trenutno ne moremo vzpostaviti povezave z vašim odzivnikom. Poskusite znova pozneje. Če se težava ponovi, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Nastavitev sporočil v odzivniku"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Odzivnik ni nastavljen za vaš račun. Obrnite se na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Sporočila v odzivniku"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"V tej napravi ni mogoče uporabljati vizualnih sporočil v odzivniku. Obrnite se na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Prišlo je do napake"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Obrnite se na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Vizualna sporočila v odzivniku"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Če želite dokončati nastavitev vizualnih sporočil v odzivniku, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Vizualna sporočila v odzivniku"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Če želite dokončati nastavitev vizualnih sporočil v odzivniku, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Vizualna sporočila v odzivniku"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Če želite aktivirati vizualna sporočila v odzivniku, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Prišlo je do napake"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Če želite dokončati nastavitev vizualnih sporočil v odzivniku, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Vizualna sporočila v odzivniku so onemogočena"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Če želite aktivirati vizualna sporočila v odzivniku, se obrnite na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Prišlo je do napake"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Obrnite se na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Prišlo je do napake"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Obrnite se na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Prišlo je do napake"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Obrnite se na podporo za stranke na številki <xliff:g id="NUMBER">%1$s</xliff:g> in jim sporočite to kodo napake: 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Vklop vizualnih sporočil v odzivniku"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nČe vklopite vizualna sporočila v odzivniku, se strinjate z določili in pogoji za Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Vklop vizualnih sporočil v odzivniku"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Ogledujte si in poslušajte sporočila, ne da bi vam bilo treba klicati odzivnik. Prepise sporočil v odzivniku zagotavlja Googlova brezplačna storitev za prepise. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Ogledujte si in poslušajte sporočila, ne da bi vam bilo treba klicati odzivnik. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Več o tem"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Če zavrnete določila in pogoje, bodo vizualna sporočila v odzivniku onemogočena."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Onemogočanje vizualnih sporočil v odzivniku"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Če zavrnete določila in pogoje, bo prepis sporočil v odzivniku onemogočen."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Onemogočanje prepisa sporočil v odzivniku"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Sporočila v odzivniku so na voljo samo tako, da pokličete *86. Če želite nadaljevati, nastavite novo kodo PIN za sporočila v odzivniku."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Nastavitev kode PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sq/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sq/strings.xml
deleted file mode 100644
index 9074b7b..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-sq/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Po aktivizon postën zanore vizuale"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Mund të mos marrësh njoftime të postës zanore derisa posta zanore vizuale të aktivizohet plotësisht. Merr në telefon te posta zanore për të marrë mesazhet e reja derisa posta zanore të aktivizohet plotësisht."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Posta zanore vizuale nuk aktivizohet"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Sigurohu që telefoni yt të ketë një lidhje rrjeti celular dhe provo përsëri."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Çaktivizo modalitetin e aeroplanit dhe provo përsëri."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Nuk ka lidhje"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Nuk do të njoftohesh për postat e reja zanore. Nëse je në rrjetin Wi-Fi, mund të kontrollosh për postën zanore duke e sinkronizuar tani."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Nuk do të njoftohesh për postë zanore të re. Çaktivizo modalitetin në aeroplan për të sinkronizuar postën zanore."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Telefoni yt ka nevojë për një lidhje të të dhënave celulare për të kontrolluar postën zanore."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Posta zanore vizuale nuk aktivizohet"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Përsëri mund të telefonosh për të kontrolluar postën zanore."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Posta zanore vizuale nuk u përditësua"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Provo përsëri kur lidhja Wi-Fi ose e të dhënave celulare të jetë më e mirë. Mund të telefonosh përsëri për të kontrolluar postën zanore."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Provo përsëri kur lidhja e të dhënave celulare të jetë më e mirë. Mund të telefonosh përsëri për të kontrolluar postën zanore."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Posta zanore vizuale nuk u përditësua"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Përsëri mund të telefonosh për të kontrolluar postën zanore."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Posta zanore vizuale nuk u përditësua"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Përsëri mund të telefonosh për të kontrolluar postën zanore."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Posta zanore vizuale nuk u përditësua"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Përsëri mund të telefonosh për të kontrolluar postën zanore."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Posta zanore vizuale nuk u përditësua"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Përsëri mund të telefonosh për të kontrolluar postën zanore."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Kutia hyrëse është pothuajse plot"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Nuk mund të marrësh postë zanore të re nëse kutia hyrëse është plot."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Posta zanore nuk mund të merret"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Kutia hyrëse është plot. Provo të fshish disa mesazhe për të marrë postë zanore të re."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Aktivizo hapësirën ruajtëse shtesë dhe rezervimin"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Kutia jote postare është plot. Për të liruar hapësirën, aktivizo hapësirën ruajtëse shtesë që Google të mund të menaxhojë dhe të rezervojë mesazhet e tua të postës zanore."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Aktivizo hapësirën ruajtëse shtesë dhe rezervimin"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Kutia jote postare është thuajse plot. Për të liruar hapësirën, aktivizo hapësirën ruajtëse shtesë që Google të mund të menaxhojë dhe të rezervojë mesazhet e tua të postës zanore."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Vendos kodin PIN të postës zanore"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Të duhet një kod PIN për postën zanore në çdo kohë që telefonon për të hyrë te posta zanore."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Cilësimet e modalitetit në aeroplan"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Konfiguro kodin PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Provo përsëri"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Aktivizo"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Jo, faleminderit"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinkronizo"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Telefono postën zanore"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Mbështetja e klientit"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Ndodhi një gabim"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Na vjen keq, patëm një problem. Provo përsëri më vonë. Nëse akoma ka gabim, kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Ndodhi një gabim"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Na vjen keq, patëm një problem. Provo përsëri më vonë. Nëse akoma ka gabim, kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Ndodhi një gabim"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Na vjen keq, patëm një problem. Provo përsëri më vonë. Nëse akoma ka gabim, kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Nuk mund të lidhet te kutia postare zanore"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Na vjen keq, kemi problem në lidhjen me kutinë e postës zanore. Nëse je në një zonë me sinjal të dobët, prit derisa të kesh sinjal më të fortë dhe provo përsëri. Nëse akoma ka gabim, kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Nuk mund të lidhet te kutia postare zanore"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Na vjen keq, kemi problem në lidhjen me kutinë e postës zanore. Nëse je në një zonë me sinjal të dobët, prit derisa të kesh sinjal më të fortë dhe provo përsëri. Nëse akoma ka gabim, kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Nuk mund të lidhet te kutia postare zanore"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Na vjen keq, kemi problem në lidhjen me kutinë e postës zanore. Nëse je në një zonë me sinjal të dobët, prit derisa të kesh sinjal më të fortë dhe provo përsëri. Nëse akoma ka gabim, kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Ndodhi një gabim"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Na vjen keq, patëm një problem. Provo përsëri më vonë. Nëse përsëri ka gabim, kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Ndodhi një gabim"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Na vjen keq, patëm një problem. Provo përsëri më vonë. Nëse përsëri ka gabim, kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Ndodhi një gabim"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Na vjen keq, patëm një problem me konfigurimin e shërbimit tënd. Provo përsëri më vonë. Nëse përsëri ka gabim, kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Nuk mund të lidhet te kutia postare zanore"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Na vjen keq, nuk mund të lidhnim kutinë postare. Provo përsëri më vonë. Nëse përsëri ka gabim, kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Konfiguro postën zanore"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Posta zanore nuk është konfiguruar në llogarinë tënde. Kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Posta zanore"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"\"Posta zanore vizuale\" nuk mund të përdoret në këtë pajisje. Kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju se kodi i gabimit është 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Ndodhi një gabim"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Posta zanore vizuale"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Për të përfunduar konfigurimin e \"Postës zanore vizuale\", kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju se kodi i gabimit është 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Posta zanore vizuale"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Për të përfunduar konfigurimin e \"Postës zanore vizuale\", kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju se kodi i gabimit është 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Posta zanore vizuale"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Për të aktivizuar \"Postën zanore vizuale\", kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju se kodi i gabimit është 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Ndodhi një gabim"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Për të përfunduar konfigurimin e \"Postës zanore vizuale\", kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju se kodi i gabimit është 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"\"Posta zanore vizuale\" u çaktivizua"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> për të aktivizuar postën zanore vizuale."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Ndodhi një gabim"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Ndodhi një gabim"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Ndodhi një gabim"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Kontakto me \"Shërbimin e klientit\" në <xliff:g id="NUMBER">%1$s</xliff:g> dhe tregoju kodin e gabimit 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Aktivizo \"Postën zanore vizuale\""</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nDuke aktivizuar \"Postën zanore vizuale\", ti pranon kushtet e përgjithshme të Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Aktivizo postën zanore vizuale"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Shiko dhe dëgjo mesazhet e tua, pa pasur nevojë të telefonosh postën zanore. Transkriptet e postës zanore ofrohen nga shërbimi falas i transkriptimit të Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Shiko dhe dëgjo mesazhet e tua, pa pasur nevojë të telefonosh postën zanore. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Mëso më shumë"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Posta zanore vizuale duhet të çaktivizohet nëse refuzohen kushtet e përgjithshme."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Çaktivizo postën zanore vizuale"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Transkriptimi i postës zanore do të çaktivizohet nëse refuzohen kushtet e përgjithshme."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Çaktivizo transkriptimin e postës zanore"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Do të mund të qasesh te posta zanore vetëm duke telefonuar në *86. Cakto një kod PIN të ri për postën zanore për të vazhduar."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Konfiguro kodin PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sr/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sr/strings.xml
deleted file mode 100644
index 773ea53..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-sr/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Активира се визуелна говорна пошта"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Можда нећете добијати обавештења о говорној пошти док потпуно не активирате визуелну говорну пошту. Позовите говорну пошту да бисте преузели нове поруке док говорна пошта не буде потпуно активирана."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Активирање визуелне говорне поште није успело"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Проверите да ли телефон има везу преко мобилне мреже и пробајте поново."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Искључите режим рада у авиону и покушајте поново."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Веза није успостављена"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Нећете добијати обавештења о новим говорним порукама. Ако сте на Wi‑Fi мрежи, можете да синхронизујете да бисте проверили говорну пошту."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Нећете добијати обавештења о новим говорним порукама. Искључите режим рада у авиону да бисте синхронизовали говорну пошту."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Телефону је за проверу говорне поште потребна мобилна веза за пренос података."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Активирање визуелне говорне поште није успело"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"И даље можете да позовете говорну пошту да бисте је проверили."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Ажурирање визуелне говорне поште није успело"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Пробајте поново кад будете имали бољу Wi‑Fi или мобилну везу за пренос података. И даље можете да позовете говорну пошту да бисте је проверили."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Пробајте поново кад будете имали бољу мобилну везу за пренос података. И даље можете да позовете говорну пошту да бисте је проверили."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Ажурирање визуелне говорне поште није успело"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"И даље можете да позовете говорну пошту да бисте је проверили."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Ажурирање визуелне говорне поште није успело"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"И даље можете да позовете говорну пошту да бисте је проверили."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Ажурирање визуелне говорне поште није успело"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"И даље можете да позовете говорну пошту да бисте је проверили."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Ажурирање визуелне говорне поште није успело"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"И даље можете да позовете говорну пошту да бисте је проверили."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Пријемно сандуче је скоро пуно"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Нећете моћи да примате нову говорну пошту ако је пријемно сандуче пуно."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Не можете да примате нове говорне поруке"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Пријемно сандуче је пуно. Избришите неке поруке да бисте примили нову говорну пошту."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Укључите додатни меморијски простор и резервне копије"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Поштанско сандуче је пуно. Да бисте ослободили простор, укључите додатни меморијски простор, па ће Google моћи да управља вашим говорним порукама и прави њихове резервне копије."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Укључите додатни меморијски простор и резервне копије"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Поштанско сандуче је скоро пуно. Да бисте ослободили простор, укључите додатни меморијски простор, па ће Google моћи да управља вашим говорним порукама и прави њихове резервне копије."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Подесите PIN говорне поште"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN говорне поште вам треба сваки пут кад упућујете позив да бисте приступили говорној пошти."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Подешавања режима рада у авиону"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Подеси PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Пробај поново"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Укључи"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Не, хвала"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Синхронизуј"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Позови говорну пошту"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Позови корисничку подршку"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Нешто није у реду"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Жао нам је, наишли смо на проблем. Пробајте поново касније. Ако и даље буде проблема, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Нешто није у реду"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Жао нам је, наишли смо на проблем. Пробајте поново касније. Ако и даље буде проблема, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Нешто није у реду"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Жао нам је, наишли смо на проблем. Пробајте поново касније. Ако и даље буде проблема, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Повезивање са сандучетом говорне поште није успело"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Жао нам је, имамо проблеме при повезивању са сандучетом говорне поште. Ако сте у области са слабим сигналом, сачекајте док не будете имали јак сигнал и покушајте поново. Ако и даље буде проблема, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Повезивање са сандучетом говорне поште није успело"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Жао нам је, имамо проблеме при повезивању са сандучетом говорне поште. Ако сте у области са слабим сигналом, сачекајте док не будете имали јак сигнал и покушајте поново. Ако и даље буде проблема, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Повезивање са сандучетом говорне поште није успело"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Жао нам је, имамо проблеме при повезивању са сандучетом говорне поште. Ако сте у области са слабим сигналом, сачекајте док не будете имали јак сигнал и покушајте поново. Ако и даље буде проблема, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Нешто није у реду"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Жао нам је, наишли смо на проблем. Пробајте поново касније. Ако и даље буде проблема, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Нешто није у реду"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Жао нам је, наишли смо на проблем. Пробајте поново касније. Ако и даље буде проблема, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Нешто није у реду"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Жао нам је, имамо проблеме при подешавању услуге. Пробајте поново касније. Ако и даље буде проблема, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Повезивање са сандучетом говорне поште није успело"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Жао нам је, тренутно не можемо да се повежемо са сандучетом говорне поште. Пробајте поново касније. Ако и даље буде проблема, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Подесите говорну пошту"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Говорна пошта није подешена на налогу. Контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Говорна пошта"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Не можете да користите визуелну говорну пошту на овом уређају. Контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Нешто није у реду"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Визуелна говорна пошта"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Да бисте завршили подешавање визуелне говорне поште, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Визуелна говорна пошта"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Да бисте завршили подешавање визуелне говорне поште, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Визуелна говорна пошта"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Да бисте активирали визуелну говорну пошту, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Нешто није у реду"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Да бисте завршили подешавање визуелне говорне поште, контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Визуелна говорна пошта је онемогућена"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> да бисте активирали визуелну говорну пошту."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Нешто није у реду"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Нешто није у реду"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Нешто није у реду"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Контактирајте корисничку подршку на <xliff:g id="NUMBER">%1$s</xliff:g> и реците им да је кôд грешке 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Укључите визуелну говорну пошту"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nАко укључите визуелну говорну пошту, прихватате услове и одредбе за Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Укључите визуелну говорну пошту"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Прегледајте и слушајте поруке без позивања говорне поште. Транскрипте говорних порука добијате помоћу Google-ове бесплатне услуге транскрипције. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Прегледајте и слушајте поруке без позивања говорне поште. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Сазнајте више"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Ако одбијете услове и одредбе, онемогућићете визуелну говорну пошту."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Онемогућите визуелну говорну пошту"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Транскрипција говорне поште ће бити онемогућена ако се услови и одредбе одбију."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Онемогућите транскрипцију говорне поште"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Говорној пошти ћете моћи да приступите само ако позовете *86. Подесите нови PIN кôд говорне поште да бисте наставили."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Подесите PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sv/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sv/strings.xml
deleted file mode 100644
index 4faaa9d..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-sv/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Aktiverar visuell röstbrevlåda"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Du får kanske inte röstmeddelanden tills visuell röstbrevlåda är helt aktiverad. Ring röstbrevlådan för att hämta nya meddelanden innan den är helt aktiverad."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Det går inte att aktivera visuell röstbrevlåda"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Se till att mobilen har en mobilnätverksanslutning och försök igen."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Inaktivera flygplansläget och försök igen."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Ingen anslutning"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Du meddelas inte om nya röstmeddelanden. Om du är ansluten till Wi-Fi kan du lyssna på nya röstmeddelanden genom att synkronisera nu."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Du blir inte meddelad om nya röstmeddelanden. Inaktivera flygplansläget om du vill synkronisera röstbrevlådan."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Mobilen måste ha en mobildataanslutning för att lyssna av röstbrevlådan."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Det går inte att aktivera visuell röstbrevlåda"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Du kan fortfarande lyssna av röstbrevlådan genom att ringa."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Det går inte att uppdatera den visuella röstbrevlådan"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Försök igen när du har en bättre Wi-Fi- eller mobildataanslutning. Det går fortfarande att lyssna av röstbrevlådan."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Försök igen när du har en bättre mobildataanslutning. Det går fortfarande att lyssna av röstbrevlådan."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Det går inte att uppdatera den visuella röstbrevlådan"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Du kan fortfarande lyssna av röstbrevlådan genom att ringa."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Det går inte att uppdatera den visuella röstbrevlådan"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Du kan fortfarande lyssna av röstbrevlådan genom att ringa."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Det går inte att uppdatera den visuella röstbrevlådan"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Du kan fortfarande lyssna av röstbrevlådan genom att ringa."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Det går inte att uppdatera den visuella röstbrevlådan"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Du kan fortfarande lyssna av röstbrevlådan genom att ringa."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Inkorgen nästan full"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Du kan inte ta emot nya röstmeddelanden om inkorgen är full."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Du kan inte ta emot nya röstmeddelanden."</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Inkorgen är full. Testa att radera några meddelanden om du vill kunna ta emot nya röstmeddelanden."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Aktivera extra lagring och säkerhetskopiering"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Din postlåda är full. Frigör utrymme genom att aktivera extra lagringsutrymme så att Google kan hantera och säkerhetskopiera dina röstmeddelanden."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Aktivera extra lagring och säkerhetskopiering"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Din postlåda är nästan full. Frigör utrymme genom att aktivera extra lagringsutrymme så att Google kan hantera och säkerhetskopiera dina röstmeddelanden."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ange PIN-kod till röstbrevlåda"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Du måste ha en PIN-kod till röstbrevlådan varje gång du ringer till den."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Inställningar för flygplansläge"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Ange PIN-kod"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Försök igen"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Aktivera"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Nej tack"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Synkronisera"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Ring röstbrevlådan"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Ring kundsupport"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Något gick fel"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Tyvärr uppstod ​​ett problem. Försök igen senare. Om problemet kvarstår, kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Något gick fel"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Tyvärr uppstod ​​ett problem. Försök igen senare. Om problemet kvarstår, kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Något gick fel"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Tyvärr uppstod ​​ett problem. Försök igen senare. Om problemet kvarstår, kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Det går inte att ansluta till röstbrevlådan"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Tyvärr har vi problem med att ansluta till röstbrevlådan. Om du har svag signalstyrka, vänta tills signalen blir starkare och försök igen. Om problemet kvarstår, kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Det går inte att ansluta till röstbrevlådan"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Tyvärr har vi problem med att ansluta till röstbrevlådan. Om du har svag signalstyrka, vänta tills signalen blir starkare och försök igen. Om problemet kvarstår, kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Det går inte att ansluta till röstbrevlådan"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Tyvärr har vi problem med att ansluta till röstbrevlådan. Om du har svag signalstyrka, vänta tills signalen blir starkare och försök igen. Om problemet kvarstår, kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Något gick fel"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Tyvärr uppstod ​​ett problem. Försök igen senare. Om problemet kvarstår, kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Något gick fel"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Tyvärr uppstod ​​ett problem. Försök igen senare. Om problemet kvarstår, kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Något gick fel"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Vi har problem med att konfigurera tjänsten. Försök igen senare. Om problemet kvarstår, kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Det går inte att ansluta till röstbrevlådan"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Det går för närvarande tyvärr inte att ansluta till röstbrevlådan. Försök igen senare. Om problemet kvarstår, kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Konfigurera röstbrevlåda"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Röstbrevlådan är inte konfigurerad på ditt konto. Kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Röstbrevlåda"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Det går inte att använda visuell röstbrevlåda på den här enheten. Kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Något gick fel"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visuell röstbrevlåda"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Slutför konfiguration av visuell röstbrevlåda genom att kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visuell röstbrevlåda"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Slutför konfiguration av visuell röstbrevlåda genom att kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visuell röstbrevlåda"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Aktivera visuell röstbrevlåda genom att kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Något gick fel"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Slutför konfiguration av visuell röstbrevlåda genom att kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Visuell röstbrevlåda inaktiverad"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Aktivera visuell röstbrevlåda genom att kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Något gick fel"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Något gick fel"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Slutför konfiguration av visuell röstbrevlåda genom att kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Något gick fel"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Kontakta kundtjänst på <xliff:g id="NUMBER">%1$s</xliff:g> och ange felkoden 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Aktivera visuell röstbrevlåda"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nGenom att aktivera visuell röstbrevlåda godkänner du Verizon Wireless användarvillkor:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Aktivera visuell röstbrevlåda"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Titta och lyssna på röstmeddelanden utan att behöva ringa röstbrevlådan. Transkription av röstmeddelanden tillhandahålls av Googles kostnadsfria transkriberingstjänst. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Titta och lyssna på ett röstmeddelande utan att behöva ringa rösbrevlådan. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Läs mer"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Visuell röstbrevlåda inaktiveras om användarvillkoren avböjs."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Inaktivera visuell röstbrevlåda"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Transkription av röstbrevlådan inaktiveras om användarvillkoren avböjs."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Inaktivera transkription av röstbrevlåda"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Röstbrevlådan är endast tillgänglig genom att ringa *86. Fortsätt genom att ställa in en ny PIN-kod till röstbrevlådan."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Ställ in pinkod"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-sw/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-sw/strings.xml
deleted file mode 100644
index 6959e01..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-sw/strings.xml
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Inawasha kipengele cha ujumbe wa sauti unaoonekana"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Huenda usipokee arifa za ujumbe wa sauti mpaka kipengele cha ujumbe wa sauti unaoonekana kiwe kimewashwa kabisa. Piga nambari ya ujumbe wa sauti ili upate ujumbe mpya mpaka kipengele hicho kitakapokuwa kimewashwa kabisa."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Imeshindwa kuwasha kipengele cha ujumbe wa sauti unaoonekana"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Hakikisha kwamba simu yako ina muunganisho wa mtandao wa simu kisha ujaribu tena."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Zima hali ya ndegeni kisha ujaribu tena."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Hakuna muunganisho"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Hutaarifiwa ukipata ujumbe mpya wa sauti. Kama unatumia Wi-Fi sasa hivi, unaweza kuangalia kama una ujumbe wa sauti kwa kusawazisha sasa."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Hutaarifiwa ukipata ujumbe mpya wa sauti. Zima hali ya ndegeni ili usawazishe ujumbe wa sauti."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Simu yako inahitaji muunganisho wa mtandao wa simu kufungua ujumbe wa sauti."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Imeshindwa kuwasha kipengele cha ujumbe wa sauti unaoonekana"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Bado unaweza kupiga simu usikilize ujumbe wa sauti."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Imeshindwa kusasisha kipengele cha ujumbe wa sauti unaoonekana"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Jaribu tena baadaye muunganisho wa Wi-Fi au mtandao wa simu ukiimarika. Bado unaweza kupiga simu usikilize ujumbe wa sauti."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Jaribu tena baadaye muunganisho wa data ya simu za mkononi ukiimarika. Bado unaweza kupiga simu usikilize ujumbe wa sauti."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Imeshindwa kusasisha kipengele cha ujumbe wa sauti unaoonekana"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Bado unaweza kupiga simu usikilize ujumbe wa sauti."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Imeshindwa kusasisha kipengele cha ujumbe wa sauti unaoonekana"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Bado unaweza kupiga simu usikilize ujumbe wa sauti."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Imeshindwa kusasisha kipengele cha ujumbe wa sauti unaoonekana"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Bado unaweza kupiga simu usikilize ujumbe wa sauti."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Imeshindwa kusasisha kipengele cha ujumbe wa sauti unaoonekana"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Bado unaweza kupiga simu usikilize ujumbe wa sauti."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Kikasha kinakaribia kujaa"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Hutaweza kupokea ujumbe mpya wa sauti kama kikasha chako kimejaa."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Huwezi kupokea ujumbe mpya wa sauti"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Kikasha chako kimejaa. Jaribu kufuta baadhi ili uweze kupokea ujumbe mpya wa sauti."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Washa nafasi ya ziada halafu uhifadhi nakala rudufu"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Sanduku lako la ujumbe wa sauti limejaa. Ili upate nafasi, washa hifadhi ya ziada ili Google idhibiti na kuweka nakala rudufu ya ujumbe wako wa sauti."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Washa nafasi ya ziada halafu uhifadhi nakala rudufu"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Sanduku lako la ujumbe wa sauti linakaribia kujaa. Ili upate nafasi, washa hifadhi ya ziada ili Google idhibiti na kuweka nakala rudufu ya ujumbe wako wa sauti."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Weka PIN yako ya ujumbe wa sauti"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Utahitaji PIN ya ujumbe wa sauti wakati wowote unapopiga simu ili ufikie ujumbe wako wa sauti."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Mipangilio ya Hali ya Ndegeni"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Weka PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Jaribu Tena"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Washa"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Hapana, asante"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sawazisha"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Piga nambari ya ujumbe wa sauti"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Pigia Kituo cha Usaidizi kwa Wateja"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Hitilafu Fulani Imetokea"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Samahani, tatizo fulani limetokea. Tafadhali jaribu tena baadaye. Tatizo hili likiendelea, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Hitilafu Fulani Imetokea"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Samahani, tatizo fulani limetokea. Tafadhali jaribu tena baadaye. Tatizo hili likiendelea, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Hitilafu Fulani Imetokea"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Samahani, tatizo fulani limetokea. Tafadhali jaribu tena baadaye. Tatizo hili likiendelea, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Imeshindwa kuunganisha kwenye Kikasha chako cha Ujumbe wa Sauti"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Samahani, tunatatizika kuunganisha kwenye kikasha chako cha ujumbe wa sauti kwa sasa. Kama upo mahali penye muunganisho hafifu wa mtandao, subiri hadi upate muunganisho mzuri kisha ujaribu tena. Tatizo hili likiendelea, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Imeshindwa kuunganisha kwenye Kikasha chako cha Ujumbe wa Sauti"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Samahani, tunatatizika kuunganisha kwenye kikasha chako cha ujumbe wa sauti kwa sasa. Kama upo mahali penye muunganisho hafifu wa mtandao, subiri hadi upate muunganisho mzuri kisha ujaribu tena. Tatizo hili likiendelea, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Imeshindwa kuunganisha kwenye Kikasha chako cha Ujumbe wa Sauti"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Samahani, tunatatizika kuunganisha kwenye kikasha chako cha ujumbe wa sauti kwa sasa. Kama upo mahali penye muunganisho hafifu wa mtandao, subiri hadi upate muunganisho mzuri kisha ujaribu tena. Tatizo hili likiendelea, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Hitilafu Fulani Imetokea"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Samahani, tatizo fulani limetokea. Tafadhali jaribu tena baadaye. Tatizo hili likiendelea, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Hitilafu Fulani Imetokea"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Samahani, tatizo fulani limetokea. Tafadhali jaribu tena baadaye. Tatizo hili likiendelea, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Hitilafu Fulani Imetokea"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Samahani, tatizo limetokea wakati wa kuweka mipangilio katika kifaa chako. Tafadhali jaribu tena baadaye. Tatizo hili likiendelea, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Imeshindwa kuunganisha kwenye Kikasha chako cha Ujumbe wa Sauti"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Samahani, tumeshindwa kuunganisha kwenye kikasha chako cha ujumbe wa sauti kwa sasa. Tafadhali jaribu tena baadaye. Tatizo hili likiendelea, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Weka mipangilio ya Kipengele cha Ujumbe wa Sauti"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Kipengele cha Ujumbe wa Sauti hakijawekwa kwenye akaunti yako. Tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Ujumbe wa sauti"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Kipengele cha ujumbe wa sauti unaoonekana hakiwezi kutumika kwenye kifaa hiki. Tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia nambari <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Hitilafu Fulani Imetokea"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Ujumbe wa sauti unaoonekana"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Ili ukamilishe kuweka mipangilio ya kipengele cha ujumbe wa sauti unaoonekana, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia nambari <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Ujumbe wa sauti unaoonekana"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Ili ukamilishe kuweka mipangilio ya kipengele cha ujumbe wa sauti unaoonekana, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia nambari <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Ujumbe wa sauti unaoonekana"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Ili uwashe kipengele cha ujumbe wa sauti, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia nambari <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Hitilafu Fulani Imetokea"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Ili ukamilishe kuweka mipangilio ya kipengele cha ujumbe wa sauti unaoonekana, tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia nambari <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Kipengele cha ujumbe wa sauti unaoonekana kimezimwa"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> ili wakuwashie kipengele cha ujumbe wa sauti unaoonekana."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Hitilafu Fulani Imetokea"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Hitilafu Fulani Imetokea"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Hitilafu Fulani Imetokea"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Tafadhali wasiliana na Kituo cha Huduma kwa Wateja kupitia <xliff:g id="NUMBER">%1$s</xliff:g> na uwaambie kwamba msimbo wa hitilafu ni 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Washa kipengele cha ujumbe wa sauti unaoonekana"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nKwa kuwasha kipengele cha Ujumbe wa Sauti Unaoonekana, unakubaliana na sheria na masharti ya Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Washa kipengele cha ujumbe wa sauti unaoonekana"</string>
-    <!-- String.format failed for translation -->
-    <!-- no translation found for dialer_terms_and_conditions_message (6207219973959897196) -->
-    <skip />
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Ona na usikilize ujumbe wako bila kulazimika kupiga kupitia ujumbe wa sauti. Nukuu za ujumbe wako wa sauti zinatolewa kupitia huduma ya Google ya kutoa nukuu bila malipo. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Ona na usikilize ujumbe wako bila kulazimika kupiga kupitia ujumbe wa sauti. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Pata maelezo zaidi"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Kipengele cha ujumbe wa sauti unaoonekana kitazimwa ukikataa sheria na masharti."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Zima kipengele cha ujumbe wa sauti unaoonekana"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Kipengele cha unukuzi wa ujumbe wa sauti kitazimwa ukikataa sheria na masharti."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Zima kipengele cha unukuzi wa ujumbe wa sauti"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Utaweza kupata ujumbe wa sauti kwa kupiga *86 tu. Weka PIN mpya ya ujumbe wa sauti ili uweze kuendelea."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Weka PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ta/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ta/strings.xml
deleted file mode 100644
index 24c83e8..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ta/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"விஷூவல் குரலஞ்சலைச் செயல்படுத்துகிறது"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"விஷுவல் குரலஞ்சலை முழுவதுமாக இயக்கும் வரை, உங்களால் குரலஞ்சல் அறிவிப்புகளைப் பெற முடியாமல் போகலாம். குரலஞ்சலை முழுவதுமாக இயக்கும் வரை புதிய செய்திகளைப் பெற, குரலஞ்சலை அழைக்கவும்."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"விஷூவல் குரலஞ்சலைச் செயல்படுத்த முடியவில்லை"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"உங்கள் ஃபோனில் மொபைல் நெட்வொர்க் இணைப்பு உள்ளதை உறுதிசெய்து, மீண்டும் முயலவும்."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"விமானப் பயன்முறையை முடக்கி, மீண்டும் முயலவும்."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"இணைப்பு இல்லை"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"புதிய குரலஞ்சல்கள் குறித்த அறிவிப்புகளைப் பெறமாட்டீர்கள். வைஃபை இணைப்பைப் பயன்படுத்திக்கொண்டிருந்தால், இப்போதே ஒத்திசைத்து குரலஞ்சல் உள்ளதா எனப் பார்க்கலாம்."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"புதிய குரலஞ்சல்கள் குறித்த அறிவிப்புகளைப் பெறமாட்டீர்கள். குரலஞ்சலை ஒத்திசைக்க, விமானப் பயன்முறையை முடக்கவும்."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"குரலஞ்சலைக் கேட்க, உங்கள் ஃபோனில் மொபைல் தரவு இணைப்பு இருக்க வேண்டும்."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"விஷூவல் குரலஞ்சலைச் செயல்படுத்த முடியவில்லை"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"குரலஞ்சலைப் பெற, இப்போதும் நீங்கள் குரலஞ்சல் எண்ணிற்கு அழைக்கலாம்."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"விஷூவல் குரலஞ்சலைப் புதுப்பிக்க முடியவில்லை"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"வைஃபை அல்லது மொபைல் தரவு இணைப்பின் வேகம் முன்பை விட அதிகமாகும் போது, மீண்டும் முயலவும். குரலஞ்சலைப் பெற, இப்போதும் நீங்கள் குரலஞ்சல் எண்ணிற்கு அழைக்கலாம்."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"மொபைல் தரவு இணைப்பின் வேகம் முன்பை விட அதிகமாகும் போது, மீண்டும் முயலவும். குரலஞ்சலைப் பெற, இப்போதும் நீங்கள் குரலஞ்சல் எண்ணிற்கு அழைக்கலாம்."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"விஷூவல் குரலஞ்சலைப் புதுப்பிக்க முடியவில்லை"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"குரலஞ்சலைப் பெற, இப்போதும் நீங்கள் குரலஞ்சல் எண்ணிற்கு அழைக்கலாம்."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"விஷூவல் குரலஞ்சலைப் புதுப்பிக்க முடியவில்லை"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"குரலஞ்சலைப் பெற, இப்போதும் நீங்கள் குரலஞ்சல் எண்ணிற்கு அழைக்கலாம்."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"விஷூவல் குரலஞ்சலைப் புதுப்பிக்க முடியவில்லை"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"குரலஞ்சலைப் பெற, இப்போதும் நீங்கள் குரலஞ்சல் எண்ணிற்கு அழைக்கலாம்."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"விஷூவல் குரலஞ்சலைப் புதுப்பிக்க முடியவில்லை"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"குரலஞ்சலைப் பெற, இப்போதும் நீங்கள் குரலஞ்சல் எண்ணிற்கு அழைக்கலாம்."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"இன்பாக்ஸ் கிட்டத்தட்ட நிரம்பிவிட்டது"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"இன்பாக்ஸ் நிரம்பியிருந்தால், புதிய குரலஞ்சலைப் பெற முடியாது."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"புதிய குரலஞ்சல்களைப் பெற முடியவில்லை"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"இன்பாக்ஸ் நிரம்பிவிட்டது. புதிய குரலஞ்சல்களைப் பெற, சில செய்திகளை நீக்கவும்."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"கூடுதல் சேமிப்பகத்தையும் காப்புப் பிரதியையும் இயக்கு"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"உங்கள் அஞ்சல்பெட்டி நிரம்பிவிட்டது. இடத்தைக் காலியாக்க, கூடுதல் சேமிப்பகத்தை இயக்கவும். இதன் மூலம் Google உங்கள் குரலஞ்சல் செய்திகளை நிர்வகித்து, காப்புப் பிரதி எடுக்கலாம்."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"கூடுதல் சேமிப்பகத்தையும் காப்புப் பிரதியையும் இயக்கு"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"உங்கள் அஞ்சல்பெட்டி கிட்டத்தட்ட நிரம்பிவிட்டது. இடத்தைக் காலியாக்க, கூடுதல் சேமிப்பகத்தை இயக்கவும். இதன் மூலம் Google உங்கள் குரலஞ்சல் செய்திகளை நிர்வகித்து, காப்புப் பிரதி எடுக்கலாம்."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"உங்கள் குரலஞ்சல் பின்னை அமைக்கவும்"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"உங்கள் குரலஞ்சலை அணுகுவதற்கு நீங்கள் எப்போது அழைத்தாலும் குரலஞ்சல் பின் அவசியம்."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"விமானப் பயன்முறை அமைப்புகள்"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"பின்னை அமை"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"மீண்டும் முயலவும்"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"இயக்கு"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"வேண்டாம்"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"ஒத்திசை"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"குரலஞ்சலை அழை"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"வாடிக்கையாளர் ஆதரவை அழை"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"ஏதோ தவறாகிவிட்டது"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"சிக்கல் ஏற்பட்டது. பிறகு முயலவும். சிக்கல் தொடர்ந்தால், <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9001 எனக் கூறவும்."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"ஏதோ தவறாகிவிட்டது"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"சிக்கல் ஏற்பட்டது. பிறகு முயலவும். சிக்கல் தொடர்ந்தால், <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9002 எனக் கூறவும்."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"ஏதோ தவறாகிவிட்டது"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"சிக்கல் ஏற்பட்டது. பிறகு முயலவும். சிக்கல் தொடர்ந்தால், <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9003 எனக் கூறவும்."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"குரல் அஞ்சல்பெட்டியுடன் இணைக்க முடியவில்லை"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"குரல் அஞ்சல்பெட்டியை அமைப்பதில் சிக்கலை எதிர்கொள்கிறோம். சிக்னலின் வலிமை குறைவாக உள்ள இடத்தில் இருந்தால், சிக்னலின் வலிமை அதிகரிக்கும் வரை காத்திருந்து மீண்டும் முயலவும். சிக்கல் தொடர்ந்தால், <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9004 எனக் கூறவும்."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"குரல் அஞ்சல்பெட்டியுடன் இணைக்க முடியவில்லை"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"குரல் அஞ்சல்பெட்டியை அமைப்பதில் சிக்கலை எதிர்கொள்கிறோம். சிக்னலின் வலிமை குறைவாக உள்ள இடத்தில் இருந்தால், சிக்னலின் வலிமை அதிகரிக்கும் வரை காத்திருந்து மீண்டும் முயலவும். சிக்கல் தொடர்ந்தால், <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9005 எனக் கூறவும்."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"குரல் அஞ்சல்பெட்டியுடன் இணைக்க முடியவில்லை"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"குரல் அஞ்சல்பெட்டியை அமைப்பதில் சிக்கலை எதிர்கொள்கிறோம். சிக்னலின் வலிமை குறைவாக உள்ள இடத்தில் இருந்தால், சிக்னலின் வலிமை அதிகரிக்கும் வரை காத்திருந்து மீண்டும் முயலவும். சிக்கல் தொடர்ந்தால், <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9006 எனக் கூறவும்."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"ஏதோ தவறாகிவிட்டது"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"சிக்கல் ஏற்பட்டது. பிறகு முயலவும். சிக்கல் தொடர்ந்தால், <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9007 எனக் கூறவும்."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"ஏதோ தவறாகிவிட்டது"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"சிக்கல் ஏற்பட்டது. பிறகு முயலவும். சிக்கல் தொடர்ந்தால், <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9008 எனக் கூறவும்."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"ஏதோ தவறாகிவிட்டது"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"உங்கள் சேவையை அமைப்பதில் சிக்கலை எதிர்கொள்கிறோம். பிறகு முயலவும். சிக்கல் தொடர்ந்தால், <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9009 எனக் கூறவும்."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"குரல் அஞ்சல் பெட்டியுடன் இணைக்க முடியவில்லை"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"இந்த நேரத்தில், உங்கள் குரல் அஞ்சல்பெட்டியுடன் இணைக்க முடியவில்லை. பிறகு முயலவும். சிக்கல் தொடர்ந்தால், <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9990 எனக் கூறவும்."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"குரலஞ்சலை அமைக்கவும்"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"உங்கள் கணக்கில் குரலஞ்சலை அமைக்க முடியவில்லை. <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9991 எனக் கூறவும்."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"குரலஞ்சல்"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"இந்தச் சாதனத்தில் விஷுவல் குரலஞ்சலைப் பயன்படுத்த முடியாது. <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9992 எனக் கூறவும்."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"ஏதோ தவறாகிவிட்டது"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"<xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9993 எனக் கூறவும்."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"விஷூவல் குரலஞ்சல்"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"விஷுவல் குரலஞ்சல் அமைவை நிறைவுசெய்ய, <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9994 எனக் கூறவும்."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"விஷூவல் குரலஞ்சல்"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"விஷுவல் குரலஞ்சல் அமைவை நிறைவுசெய்ய, <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9995 எனக் கூறவும்."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"விஷூவல் குரலஞ்சல்"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"விஷுவல் குரலஞ்சலைச் செயல்படுத்த, <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9996 எனக் கூறவும்."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"ஏதோ தவறாகிவிட்டது"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"விஷுவல் குரலஞ்சல் அமைவை நிறைவுசெய்ய, <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9998 எனக் கூறவும்."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"விஷுவல் குரலஞ்சல் முடக்கப்பட்டுள்ளது"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"விஷுவல் குரலஞ்சலை இயக்க, <xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைக்கவும்."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"ஏதோ தவறாகிவிட்டது"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"<xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9997 எனக் கூறவும்."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"ஏதோ தவறாகிவிட்டது"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"<xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9989 எனக் கூறவும்."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"ஏதோ தவறாகிவிட்டது"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"<xliff:g id="NUMBER">%1$s</xliff:g> என்ற எண்ணில் வாடிக்கையாளர் சேவையை அழைத்து, அவர்களிடம் பிழையின் குறியீடு 9999 எனக் கூறவும்."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"விஷுவல் குரலஞ்சலை இயக்கவும்"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nவிஷுவல் குரலஞ்சலை இயக்குவதன் மூலம், Verizon Wireless விதிமுறைகளையும் நிபந்தனைகளையும் ஏற்கிறீர்கள்:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"விஷுவல் குரலஞ்சலை இயக்கவும்"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"குரலஞ்சலை அழைக்காமலே, உங்கள் செய்திகளைப் பார்க்கலாம், கேட்கலாம். உங்கள் குரலஞ்சலின் டிரான்ஸ்கிரிப்ட்டுகளை, Google இன் இலவச டிரான்ஸ்கிரிப்ஷன் சேவை வழங்குகிறது. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"குரலஞ்சலை அழைக்காமலே, உங்கள் செய்திகளைப் பார்க்கலாம், கேட்கலாம். %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"மேலும் அறிக"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"விதிமுறைகள் மற்றும் நிபந்தனைகள் நிராகரிக்கப்பட்டால், விஷுவல் குரலஞ்சல் முடக்கப்படும்."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"விஷுவல் குரலஞ்சலை முடக்கு"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"விதிமுறைகளையும் நிபந்தனைகளையும் நிராகரித்தீர்கள் எனில், குரலஞ்சல் டிரான்ஸ்கிரிப்ஷன் முடக்கப்படும்."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"குரலஞ்சல் டிரான்ஸ்கிரிப்ஷனை முடக்கு"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"*86ஐ அழைத்தால் மட்டுமே, குரலஞ்சலை அணுக முடியும். தொடர, புதிய குரலஞ்சல் பின்னை அமைக்கவும்."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"பின்னை அமை"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-te/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-te/strings.xml
deleted file mode 100644
index 17220b0..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-te/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"దృశ్య వాయిస్ మెయిల్‌ను సక్రియం చేస్తోంది"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"దృశ్య వాయిస్ మెయిల్ పూర్తిగా సక్రియం అయ్యే వరకు మీరు వాయిస్ మెయిల్ నోటిఫికేషన్‌లను స్వీకరించలేకపోవచ్చు. వాయిస్ మెయిల్ పూర్తిగా సక్రియం అయ్యే వరకు కొత్త సందేశాలను తిరిగి పొందడానికి వాయిస్ మెయిల్‌కి కాల్ చేయండి."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"దృశ్య వాయిస్ మెయిల్‌ను సక్రియం చేయడం సాధ్యపడదు"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"మీ ఫోన్‌కు మొబైల్ నెట్‌వర్క్ కనెక్షన్ ఉన్నట్లు నిర్ధారించుకొని, ఆపై మళ్లీ ప్రయత్నించండి."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"ఎయిర్‌ప్లైన్ మోడ్‌ను ఆఫ్ చేసి, ఆపై మళ్లీ ప్రయత్నించండి."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"కనెక్షన్ లేదు"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"మీకు కొత్త వాయిస్ మెయిల్‌ల గురించి తెలియజేయబడదు. మీరు Wi-Fiలో ఉంటే, ఇప్పుడే సమకాలీకరించడం ద్వారా వాయిస్ మెయిల్‌‍ను తనిఖీ చేయవచ్చు."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"మీకు కొత్త వాయిస్ మెయిల్‌ల గురించి తెలియజేయబడదు. మీ వాయిస్ మెయిల్‌‍ను సమకాలీకరించడానికి ఎయిర్‌ప్లైన్ మోడ్‌ను ఆఫ్ చేయండి."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"వాయిస్ మెయిల్‌ను తనిఖీ చేయడానికి మీ ఫోన్‌కు మొబైల్ డేటా కనెక్షన్ అవసరం."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"దృశ్య వాయిస్ మెయిల్‌ను సక్రియం చేయడం సాధ్యపడదు"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"మీరు ఇప్పటికీ వాయిస్ మెయిల్‌ను తనిఖీ చేయడానికి కాల్ చేయవచ్చు."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"దృశ్య వాయిస్ మెయిల్‌ను నవీకరించడం సాధ్యపడదు"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"మీ Wi-Fi లేదా మొబైల్ డేటా కనెక్షన్ మెరుగైనప్పుడు మళ్లీ ప్రయత్నించండి. మీరు ఇప్పటికీ వాయిస్ మెయిల్‌ను తనిఖీ చేయడానికి కాల్ చేయవచ్చు."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"మీ మొబైల్ డేటా కనెక్షన్ మెరుగైనప్పుడు మళ్లీ ప్రయత్నించండి. మీరు ఇప్పటికీ వాయిస్ మెయిల్‌ను తనిఖీ చేయడానికి కాల్ చేయవచ్చు."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"దృశ్య వాయిస్ మెయిల్‌ను నవీకరించడం సాధ్యపడదు"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"మీరు ఇప్పటికీ వాయిస్ మెయిల్‌ను తనిఖీ చేయడానికి కాల్ చేయవచ్చు."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"దృశ్య వాయిస్ మెయిల్‌ను నవీకరించడం సాధ్యపడదు"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"మీరు ఇప్పటికీ వాయిస్ మెయిల్‌ను తనిఖీ చేయడానికి కాల్ చేయవచ్చు."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"దృశ్య వాయిస్ మెయిల్‌ను నవీకరించడం సాధ్యపడదు"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"మీరు ఇప్పటికీ వాయిస్ మెయిల్‌ను తనిఖీ చేయడానికి కాల్ చేయవచ్చు."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"దృశ్య వాయిస్ మెయిల్‌ను నవీకరించడం సాధ్యపడదు"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"మీరు ఇప్పటికీ వాయిస్ మెయిల్‌ను తనిఖీ చేయడానికి కాల్ చేయవచ్చు."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"ఇన్‌బాక్స్‌ దాదాపు నిండింది"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"మీ ఇన్‌బాక్స్ నిండిపోయి ఉంటే, కొత్త వాయిస్ మెయిల్‌ను స్వీకరించలేరు."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"కొత్త వాయిస్ మెయిల్‌లను స్వీకరించలేరు"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"మీ ఇన్‌బాక్స్ నిండింది. కొత్త వాయిస్ మెయిల్‌ను స్వీకరించడానికి కొన్ని సందేశాలను తొలగించడానికి ప్రయత్నించండి."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"అదనపు నిల్వ మరియు బ్యాకప్‌ను ఆన్ చేయండి"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"మీ మెయిల్‌బాక్స్ నిండింది. స్థలాన్ని ఖాళీ చేసేందుకు అదనపు నిల్వను ఆన్ చేయండి, దీని వలన Google మీ వాయిస్ మెయిల్ సందేశాలను నిర్వహించగలదు మరియు బ్యాకప్ చేయగలదు."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"అదనపు నిల్వ మరియు బ్యాకప్‌ను ఆన్ చేయండి"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"మీ మెయిల్‌బాక్స్ దాదాపు నిండిపోయింది. స్థలాన్ని ఖాళీ చేసేందుకు అదనపు నిల్వను ఆన్ చేయండి, దీని వలన Google మీ వాయిస్ మెయిల్ సందేశాలను నిర్వహించగలదు మరియు బ్యాకప్ చేయగలదు."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"మీ వాయిస్ మెయిల్ PIN సెట్ చేయండి"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"మీరు మీ వాయిస్ మెయిల్‌ను ప్రాప్యత చేయడానికి కాల్ చేసే ప్రతిసారి మీకు వాయిస్ మెయిల్ PIN అవసరమవుతుంది."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"ఎయిర్‌ప్లైన్ మోడ్ సెట్టింగ్‌లు"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN సెట్ చేయి"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"మళ్లీ ప్రయత్నించండి"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"ఆన్ చేయి"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"వద్దు, ధన్యవాదాలు"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"సమకాలీకరించు"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"వాయిస్ మెయిల్‌కు కాల్ చేయి"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"వినియోగదారు సేవా కేంద్రానికి కాల్ చేయి"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"ఏదో తప్పు జరిగింది"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"క్షమించండి, ఒక సమస్య ఏర్పడింది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి. అప్పటికీ సమస్య ఉంటే, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ సంఖ్య 9001గా తెలపండి."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"ఏదో తప్పు జరిగింది"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"క్షమించండి, ఒక సమస్య ఏర్పడింది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి. అప్పటికీ సమస్య ఉంటే, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ సంఖ్య 9002గా తెలపండి."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"ఏదో తప్పు జరిగింది"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"క్షమించండి, ఒక సమస్య ఏర్పడింది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి. అప్పటికీ సమస్య ఉంటే, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ సంఖ్య 9003గా తెలపండి."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"మీ వాయిస్‌ మెయిల్‌బాక్స్‌కు కనెక్ట్ చేయడం సాధ్యపడదు"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"క్షమించండి, మీ వాయిస్ మెయిల్‌బాక్స్‌కు కనెక్ట్ చేయడంలో సమస్య ఎదుర్కొంటున్నాము. మీరు బలహీనమైన సిగ్నల్ గల ప్రాంతంలో ఉన్నట్లయితే, శక్తివంతమైన సిగ్నల్ పొందే వరకు వేచి ఉండి, ఆపై మళ్లీ ప్రయత్నించండి. అప్పటికీ సమస్య ఉన్నట్లయితే, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ సంఖ్య 9004గా తెలపండి."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"మీ వాయిస్‌ మెయిల్‌బాక్స్‌కు కనెక్ట్ చేయడం సాధ్యపడదు"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"క్షమించండి, మీ వాయిస్ మెయిల్‌బాక్స్‌కు కనెక్ట్ చేయడంలో సమస్య ఎదుర్కొంటున్నాము. మీరు బలహీనమైన సిగ్నల్ గల ప్రాంతంలో ఉన్నట్లయితే, శక్తివంతమైన సిగ్నల్ పొందే వరకు వేచి ఉండి, ఆపై మళ్లీ ప్రయత్నించండి. అప్పటికీ సమస్య ఉన్నట్లయితే, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ సంఖ్య 9005 అని తెలపండి."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"మీ వాయిస్‌ మెయిల్‌బాక్స్‌కు కనెక్ట్ చేయడం సాధ్యపడదు"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"క్షమించండి, మీ వాయిస్ మెయిల్‌బాక్స్‌కు కనెక్ట్ చేయడంలో సమస్య ఎదుర్కొంటున్నాము. మీరు బలహీనమైన సిగ్నల్ గల ప్రాంతంలో ఉన్నట్లయితే, శక్తివంతమైన సిగ్నల్ పొందే వరకు వేచి ఉండి, ఆపై మళ్లీ ప్రయత్నించండి. అప్పటికీ సమస్య ఉన్నట్లయితే, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ సంఖ్య 9006గా తెలపండి."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"ఏదో తప్పు జరిగింది"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"క్షమించండి, ఒక సమస్య ఏర్పడింది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి. అప్పటికీ సమస్య ఉంటే, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ సంఖ్య 9007గా తెలపండి."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"ఏదో తప్పు జరిగింది"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"క్షమించండి, ఒక సమస్య ఏర్పడింది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి. అప్పటికీ సమస్య ఉంటే, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ సంఖ్య 9008గా తెలపండి."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"ఏదో తప్పు జరిగింది"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"క్షమించండి, మీకు సేవ ఏర్పాటు చేయడంలో సమస్య ఎదుర్కొంటున్నాము. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి. అప్పటికీ సమస్య ఉంటే, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ సంఖ్య 9009గా తెలపండి."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"మీ వాయిస్‌ మెయిల్‌బాక్స్‌కు కనెక్ట్ చేయడం సాధ్యపడదు"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"క్షమించండి, ఈ సమయంలో మేము మీ ఇన్‌బాక్స్‌కు కనెక్ట్ చేయలేకపోతున్నాము. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి. అప్పటికీ సమస్య ఉంటే, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ సంఖ్య 9990గా తెలపండి."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"వాయిస్ మెయిల్ సెటప్ చేయండి"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"మీ ఖాతాలో వాయిస్ మెయిల్ సెటప్ చేయబడలేదు. దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ 9991గా తెలపండి."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"వాయిస్ మెయిల్"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"ఈ పరికరంలో దృశ్య వాయిస్ మెయిల్‌ను ఉపయోగించలేరు. దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ 9992గా తెలపండి."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"ఏదో తప్పు జరిగింది"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ 9993గా తెలపండి."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"దృశ్య వాయిస్ మెయిల్"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"దృశ్య వాయిస్ మెయిల్ సెటప్‌ను పూర్తి చేయడానికి, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ 9994గా తెలపండి."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"దృశ్య వాయిస్ మెయిల్"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"దృశ్య వాయిస్ మెయిల్ సెటప్‌ను పూర్తి చేయడానికి, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ 9995గా తెలపండి."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"దృశ్య వాయిస్ మెయిల్"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"దృశ్య వాయిస్ మెయిల్‌ను సక్రియం చేయడానికి, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ 9996గా తెలపండి."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"ఏదో తప్పు జరిగింది"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"దృశ్య వాయిస్ మెయిల్ సెటప్‌ను పూర్తి చేయడానికి, దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ 9998గా తెలపండి."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"దృశ్య వాయిస్ మెయిల్ నిలిపివేయబడింది"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"దృశ్య వాయిస్ మెయిల్‌ను సక్రియం చేయడానికి దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేయండి."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"ఏదో తప్పు జరిగింది"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ 9997గా తెలపండి."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"ఏదో తప్పు జరిగింది"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ 9989గా తెలపండి."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"ఏదో తప్పు జరిగింది"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"దయచేసి <xliff:g id="NUMBER">%1$s</xliff:g> నంబర్‌లో వినియోగదారు సేవా కేంద్రానికి కాల్ చేసి, వారికి లోపం కోడ్ 9999గా తెలపండి."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"దృశ్య వాయిస్ మెయిల్‌ను ఆన్ చేయండి"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nదృశ్య వాయిస్ మెయిల్‌ని ఆన్ చేయడం ద్వారా మీరు  Verizon వైర్‌లెస్ నిబంధనలు మరియు షరతులను అంగీకరిస్తున్నారు:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"దృశ్య వాయిస్ మెయిల్‌ను ఆన్ చేయండి"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"వాయిస్ మెయిల్‌కి కాల్ చేయకుండానే మీ సందేశాలను చూడండి మరియు వినండి. మీ వాయిస్ మెయిల్ యొక్క లిప్యంతరీకరణలు Google యొక్క ఉచిత లిప్యంతరీకరణ సేవ ద్వారా అందించబడతాయి. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"వాయిస్ మెయిల్‌కి కాల్ చేయకుండానే మీ సందేశాలను చూడండి మరియు వినండి. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"మరింత తెలుసుకోండి"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"నిబంధనలు మరియు షరతులను తిరస్కరిస్తే దృశ్య వాయిస్ మెయిల్ నిలిపివేయబడుతుంది."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"దృశ్య వాయిస్ మెయిల్‌ను నిలిపివేయండి"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"నిబంధనలు మరియు షరతులను నిరాకరిస్తే వాయిస్ మెయిల్ లిప్యంతరీకరణ నిలిపివేయబడుతుంది."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"వాయిస్ మెయిల్ లిప్యంతరీకరణను నిలిపివేయండి"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"వాయిస్ మెయిల్‌ను కేవలం *86కి కాల్ చేయడం ద్వారా మాత్రమే ప్రాప్యత చేయగలరు. కొనసాగించడానికి కొత్త వాయిస్ మెయిల్ PINని సెట్ చేయండి."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PINని సెట్ చేయండి"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-th/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-th/strings.xml
deleted file mode 100644
index 2b9aaab..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-th/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"กำลังเปิดใช้ข้อความเสียงพร้อมภาพ"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"คุณอาจไม่ได้รับการแจ้งเตือนข้อความเสียงจนกว่าจะเปิดใช้ข้อความเสียงพร้อมภาพแบบเต็มรูปแบบ โทรฟังข้อความเสียงเพื่อเรียกข้อความใหม่จนกว่าจะเปิดใช้ข้อความเสียงพร้อมภาพแบบเต็มรูปแบบ"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"เปิดใช้ข้อความเสียงพร้อมภาพไม่ได้"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"โปรดตรวจสอบว่าโทรศัพท์เชื่อมต่อเครือข่ายมือถืออยู่ แล้วลองใหม่"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"ปิดโหมดบนเครื่องบินและลองใหม่"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"ไม่มีการเชื่อมต่อ"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"คุณจะไม่ได้รับข้อความเสียงใหม่ ถ้าคุณใช้เครือข่าย Wi-Fi อยู่ สามารถตรวจสอบข้อความเสียงได้โดยซิงค์เดี๋ยวนี้"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"คุณจะไม่ได้รับข้อความเสียงใหม่ ปิดโหมดบนเครื่องบินเพื่อซิงค์ข้อความเสียง"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"โทรศัพท์ต้องเชื่อมต่ออินเทอร์เน็ตมือถือจึงจะตรวจสอบข้อความเสียงได้"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"เปิดใช้ข้อความเสียงพร้อมภาพไม่ได้"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"คุณยังโทรเพื่อตรวจสอบข้อความเสียงได้"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"ไม่สามารถอัปเดตข้อความเสียงพร้อมภาพได้"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"ลองใหม่เมื่อ Wi-Fi หรือการเชื่อมต่ออินเทอร์เน็ตมือถือถือดีขึ้น คุณยังโทรเพื่อตรวจสอบข้อความเสียงได้"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"ลองใหม่เมื่อการเชื่อมต่ออินเทอร์เน็ตมือถือดีขึ้น คุณยังโทรเพื่อตรวจสอบข้อความเสียงได้"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"ไม่สามารถอัปเดตข้อความเสียงพร้อมภาพได้"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"คุณยังโทรเพื่อตรวจสอบข้อความเสียงได้"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"ไม่สามารถอัปเดตข้อความเสียงพร้อมภาพได้"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"คุณยังโทรเพื่อตรวจสอบข้อความเสียงได้"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"ไม่สามารถอัปเดตข้อความเสียงพร้อมภาพได้"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"คุณยังโทรเพื่อตรวจสอบข้อความเสียงได้"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"ไม่สามารถอัปเดตข้อความเสียงพร้อมภาพได้"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"คุณยังโทรเพื่อตรวจสอบข้อความเสียงได้"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"กล่องจดหมายเกือบเต็มแล้ว"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"คุณจะไม่สามารถรับข้อความเสียงใหม่ได้ ถ้ากล่องจดหมายเต็ม"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"ไม่สามารถรับข้อความเสียงใหม่ได้"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"กล่องจดหมายเต็ม ลองลบข้อความบางส่วนออกเพื่อรับข้อความเสียงใหม่"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"เปิดพื้นที่เก็บข้อมูลเพิ่มเติมและการสำรองข้อมูล"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"กล่องจดหมายของคุณเต็มแล้ว หากต้องการเพิ่มพื้นที่ว่าง โปรดเปิดพื้นที่เก็บข้อมูลเพิ่มเติมเพื่อให้ Google สามารถจัดการและเก็บสำรองข้อความเสียงได้"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"เปิดพื้นที่เก็บข้อมูลเพิ่มเติมและการสำรองข้อมูล"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"กล่องจดหมายของคุณใกล้เต็มแล้ว หากต้องการเพิ่มพื้นที่ว่าง โปรดเปิดพื้นที่เก็บข้อมูลเพิ่มเติมเพื่อให้ Google สามารถจัดการและเก็บสำรองข้อความเสียงได้"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"ตั้งค่า PIN ข้อความเสียง"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"คุณต้องใช้ PIN ข้อความเสียงทุกครั้งที่โทรหาบริการข้อความเสียง"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"การตั้งค่าโหมดบนเครื่องบิน"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"ตั้งค่า PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"ลองใหม่"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"เปิด"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"ไม่ ขอบคุณ"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"ซิงค์"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"เรียกข้อความเสียง"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"โทรติดต่อฝ่ายสนับสนุนลูกค้า"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"เกิดข้อผิดพลาด"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"ขออภัย เราพบว่ามีปัญหาเกิดขึ้น โปรดลองอีกครั้งในภายหลัง หากยังพบปัญหาอยู่ โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9001"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"เกิดข้อผิดพลาด"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"ขออภัย เราพบว่ามีปัญหาเกิดขึ้น โปรดลองอีกครั้งในภายหลัง หากยังพบปัญหาอยู่ โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9002"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"เกิดข้อผิดพลาด"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"ขออภัย เราพบว่ามีปัญหาเกิดขึ้น โปรดลองอีกครั้งในภายหลัง หากยังพบปัญหาอยู่ โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9003"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"เชื่อมต่อกล่องข้อความเสียงไม่ได้"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"ขออภัย เราพบปัญหาในการเชื่อมต่อกล่องข้อความเสียง หากคุณอยู่ในพื้นที่ที่สัญญาณอ่อน ขอให้รอจนกว่าสัญญาณแรงแล้วลองอีกครั้ง หากยังพบปัญหาอยู่ โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9004"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"เชื่อมต่อกล่องข้อความเสียงไม่ได้"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"ขออภัย เราพบปัญหาในการเชื่อมต่อกล่องข้อความเสียง หากคุณอยู่ในพื้นที่ที่สัญญาณอ่อน ขอให้รอจนกว่าสัญญาณแรงแล้วลองอีกครั้ง หากยังพบปัญหาอยู่ โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9005"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"เชื่อมต่อกล่องข้อความเสียงไม่ได้"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"ขออภัย เราพบปัญหาในการเชื่อมต่อกล่องข้อความเสียง หากคุณอยู่ในพื้นที่ที่สัญญาณอ่อน ขอให้รอจนกว่าสัญญาณแรงแล้วลองอีกครั้ง หากยังพบปัญหาอยู่ โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9006"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"เกิดข้อผิดพลาด"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"ขออภัย เราพบว่ามีปัญหาเกิดขึ้น โปรดลองอีกครั้งในภายหลัง หากยังพบปัญหาอยู่ โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9007"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"เกิดข้อผิดพลาด"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"ขออภัย เราพบว่ามีปัญหาเกิดขึ้น โปรดลองอีกครั้งในภายหลัง หากยังพบปัญหาอยู่ โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9008"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"เกิดข้อผิดพลาด"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"ขออภัย เราพบว่ามีปัญหาเกิดขึ้น โปรดลองอีกครั้งในภายหลัง หากยังพบปัญหาอยู่ โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9009"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"เชื่อมต่อกล่องข้อความเสียงไม่ได้"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"ขออภัย เราไม่สามารถเชื่อมต่อกล่องข้อความเสียงได้ในขณะนี้ โปรดลองอีกครั้งในภายหลัง หากยังพบปัญหาอยู่ โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9990"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"ตั้งค่าข้อความเสียง"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"ยังไม่ได้ตั้งค่าข้อความเสียงในบัญชี โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9991"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"ข้อความเสียง"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"ใช้ข้อความเสียงพร้อมภาพในอุปกรณ์เครื่องนี้ไม่ได้ โปรดติดต่อฝ่ายบริการลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> แล้วแจ้งรหัสข้อผิดพลาด 9992"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"เกิดข้อผิดพลาด"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9993"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"ข้อความเสียงพร้อมภาพ"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"หากต้องการตั้งค่าข้อความเสียงพร้อมภาพให้เสร็จสมบูรณ์ โปรดติดต่อฝ่ายบริการลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> แล้วแจ้งรหัสข้อผิดพลาด 9994"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"ข้อความเสียงพร้อมภาพ"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"หากต้องการตั้งค่าข้อความเสียงพร้อมภาพ โปรดติดต่อฝ่ายบริการลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> แล้วแจ้งรหัสข้อผิดพลาด 9995"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"ข้อความเสียงพร้อมภาพ"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"หากต้องการเปิดใช้งานข้อความเสียงพร้อมภาพ โปรดติดต่อฝ่ายบริการลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> แล้วแจ้งรหัสข้อผิดพลาด 9996"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"เกิดข้อผิดพลาด"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"หากต้องการตั้งค่าข้อความเสียงพร้อมภาพให้เสร็จสมบูรณ์ โปรดติดต่อฝ่ายบริการลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> แล้วแจ้งรหัสข้อผิดพลาด 9998"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"ปิดใช้ข้อความเสียงพร้อมภาพ"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> เพื่อเปิดใช้ข้อความเสียงพร้อมภาพ"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"เกิดข้อผิดพลาด"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9997"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"เกิดข้อผิดพลาด"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9989"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"เกิดข้อผิดพลาด"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"โปรดติดต่อฝ่ายสนับสนุนลูกค้าที่หมายเลข <xliff:g id="NUMBER">%1$s</xliff:g> และแจ้งรหัสข้อผิดพลาด 9999"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"เปิดข้อความเสียงพร้อมภาพ"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nการเปิดข้อความเสียงพร้อมภาพ หมายความว่า คุณยอมรับข้อกำหนดในการให้บริการของ Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"เปิดข้อความเสียงพร้อมภาพ"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"ดูและฟังข้อความโดยไม่ต้องโทรไปฟังข้อความเสียงเอง เนื่องจากบริการถอดเสียงฟรีของ Google ได้ดำเนินการถอดเสียงข้อความให้แล้ว %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"ดูและฟังข้อความโดยไม่ต้องโทรไปฟังข้อความเสียงเอง %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"เรียนรู้เพิ่มเติม"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"หากคุณไม่ยอมรับข้อกำหนดในการใช้บริการ ข้อความเสียงพร้อมภาพจะถูกปิดใช้งาน"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"ปิดใช้ข้อความเสียงพร้อมภาพ"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"หากคุณไม่ยอมรับข้อกำหนดในการใช้บริการ การถอดข้อความเสียงจะปิดใช้งาน"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"ปิดใช้การถอดข้อความเสียง"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"คุณสามารถรับฟังข้อความเสียงด้วยการโทรไป *86 เท่านั้น และตั้งค่า PIN ข้อความเสียงใหม่เพื่อดำเนินการต่อ"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"ตั้งค่า PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-tl/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-tl/strings.xml
deleted file mode 100644
index 8fb2561..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-tl/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Ina-activate ang visual na voicemail"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Maaaring hindi ka makatanggap ng mga notification sa voicemail hanggang sa ganap na ma-activate ang visual na voicemail. Tawagan ang voicemail upang makuha ang mga bagong mensahe hanggang sa ganap na ma-activate ang voicemail."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Hindi ma-activate ang visual na voicemail"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Tiyaking mayroong koneksyon sa mobile network ang iyong telepono at subukang muli."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"I-off ang airplane mode at subukang muli."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Walang koneksyon"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Hindi ka aabisuhan para sa mga bagong voicemail. Kung nasa Wi-Fi ka, maaari mong tingnan ang voicemail sa pamamagitan ng pag-sync ngayon."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Hindi ka aabisuhan para sa mga bagong voicemail. I-off ang airplane mode para i-sync ang iyong voicemail."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Kailangan ng koneksyon ng mobile data ng iyong telepono upang tingnan ang voicemail."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Hindi ma-activate ang visual na voicemail"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Maaari ka pa ring tumawag upang tingnan ang voicemail."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Hindi ma-update ang visual na voicemail"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Subukang muli kapag mas maganda na ang iyong Wi-Fi o koneksyon ng mobile data."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Subukang muli kapag mas maganda na ang iyong koneksyon ng mobile data. Maaari ka pa ring tumawag upang tingnan ang voicemail."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Hindi ma-update ang visual na voicemail"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Maaari ka pa ring tumawag upang tingnan ang voicemail."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Hindi ma-update ang visual na voicemail"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Maaari ka pa ring tumawag upang tingnan ang voicemail."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Hindi ma-update ang visual na voicemail"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Maaari ka pa ring tumawag upang tingnan ang voicemail."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Hindi ma-update ang visual na voicemail"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Maaari ka pa ring tumawag upang tingnan ang voicemail."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Malapit nang mapuno ang inbox"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Hindi ka makakatanggap ng bagong voicemail kung puno na ang inbox mo."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Hindi makatanggap ng mga bagong voicemail"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Puno na ang inbox mo. Subukang i-delete ang ilang mensahe upang makatanggap ng bagong voicemail."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"I-on ang karagdagang storage at backup"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Puno na ang iyong mailbox. Upang magbakante ng space, i-on ang karagdagang storage para pamahalaan at i-back up ng Google ang iyong mga mensahe sa voicemail."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"I-on ang karagdagang storage at backup"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Malapit nang mapuno ang iyong mailbox. Upang magbakante ng space, i-on ang karagdagang storage para pamahalaan at i-back up ng Google ang iyong mga mensahe sa voicemail."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Itakda ang iyong PIN sa voicemail"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Kakailanganin mo ng isang PIN sa voicemail sa tuwing tatawag ka upang ma-access ang iyong voicemail."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Mga Setting ng Airplane Mode"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Magtakda ng PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Subukang Muli"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"I-on"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Hindi, Salamat na lang"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"I-sync"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Tawagan ang Voicemail"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Tumawag sa Customer Support"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Nagkaroon ng Problema"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Paumanhin, nagkaroon kami ng problema. Pakisubukang muli sa ibang pagkakataon. Kung mayroon pa ring problema, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Nagkaroon ng Problema"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Paumanhin, nagkaroon kami ng problema. Pakisubukang muli sa ibang pagkakataon. Kung mayroon pa ring problema, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Nagkaroon ng Problema"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Paumanhin, nagkaroon kami ng problema. Pakisubukang muli sa ibang pagkakataon. Kung mayroon pa ring problema, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Hindi Makakonekta sa Iyong Voice Mailbox"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Paumanhin, nagkakaproblema kami sa pagkonekta sa iyong voice mailbox. Kung nasa isang lugar ka na mahina ang signal, maghintay hanggang sa magkaroon ka ng malakas na signal at subukang muli. Kung mayroon pa ring problema, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Hindi Makakonekta sa Iyong Voice Mailbox"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Paumanhin, nagkakaproblema kami sa pagkonekta sa iyong voice mailbox. Kung nasa isang lugar ka na mahina ang signal, maghintay hanggang sa magkaroon ka ng malakas na signal at subukang muli. Kung mayroon pa ring problema, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Hindi Makakonekta sa Iyong Voice Mailbox"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Paumanhin, nagkakaproblema kami sa pagkonekta sa iyong voice mailbox. Kung nasa isang lugar ka na mahina ang signal, maghintay hanggang sa magkaroon ka ng malakas na signal at subukang muli. Kung mayroon pa ring problema, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Nagkaroon ng Problema"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Paumanhin, nagkaroon kami ng problema. Pakisubukang muli sa ibang pagkakataon. Kung mayroon pa ring problema, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Nagkaroon ng Problema"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Paumanhin, nagkaroon kami ng problema. Pakisubukang muli sa ibang pagkakataon. Kung mayroon pa ring problema, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Nagkaroon ng Problema"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Paumanhin, nagkakaproblema kami sa pag-set up ng iyong serbisyo. Pakisubukang muli sa ibang pagkakataon. Kung mayroon pa ring problema, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Hindi Makakonekta sa Iyong Voice Mailbox"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Paumanhin, hindi ka namin naikonekta sa ngayon sa iyong voice mailbox. Pakisubukang muli sa ibang pagkakataon. Kung mayroon pa ring problema, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"I-set Up ang Voicemail"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Hindi naka-set up ang voicemail sa iyong account. Pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Voicemail"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Hindi maaaring gamitin ang visual na voicemail sa device na ito. Pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Nagkaroon ng Problema"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Visual na voicemail"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Upang makumpleto ang pag-set up ng visual na voicemail, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Visual na voicemail"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Upang makumpleto ang pag-set up ng visual na voicemail, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Visual na voicemail"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Upang i-activate ang visual na voicemail, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Nagkaroon ng Problema"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Upang makumpleto ang pag-set up ng visual na voicemail, pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Na-disable ang visual na voicemail"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> upang i-activate ang visual na voicemail."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Nagkaroon ng Problema"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Nagkaroon ng Problema"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Nagkaroon ng Problema"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Pakikontak ang Customer Service sa <xliff:g id="NUMBER">%1$s</xliff:g> at sabihin sa kanila na ang code ng error ay 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"I-on ang visual na voicemail"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nSa pamamagitan ng pag-on sa Visual na Voice Mail, sumasang-ayon ka sa mga tuntunin at kundisyon ng Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"I-on ang visual na voicemail"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Tingnan at pakinggan ang iyong mga mensahe, nang hindi kailangang tawagan ang voicemail. Ang mga transcript ng voicemail mo ay ibinibigay ng libreng serbisyo ng transkripsyon ng Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Tingnan at pakinggan ang iyong mga mensahe, nang hindi kailangang tawagan ang voicemail. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Matuto pa"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Idi-disable ang visual na voicemail kung tatanggihan ang mga tuntunin at kundisyon."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"I-disable ang visual na voicemail"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Idi-disable ang transkripsyon ng voicemail kung tatanggihan ang mga tuntunin at kundisyon."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"I-disable ang transkripsyon ng voicemail"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Maa-access lang ang voicemail sa pamamagitan ng pagtawag sa *86. Magtakda ng bagong PIN sa voicemail upang magpatuloy."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Magtakda ng PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-tr/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-tr/strings.xml
deleted file mode 100644
index 3a57d8f..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-tr/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Görsel sesli mesaj etkinleştiriliyor"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Görsel sesli mesaj tam olarak etkinleştirilene dek sesli mesaj bildirimlerini almayabilirsiniz. Sesli mesaj tam olarak etkinleştirilene kadar, yeni mesajları almak için sesli mesaj hizmetini arayın."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Görsel sesli mesaj etkinleştirilemiyor"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Telefonunuzda mobil ağ bağlantısı olduğundan emin olup tekrar deneyin."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Uçak modunu kapatıp tekrar deneyin."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Bağlantı yok"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Yeni sesli mesajlarla ilgili olarak bilgilendirilmeyeceksiniz. Kablosuz bağlantınız varsa şimdi senkronizasyon gerçekleştirerek sesli mesajlarınızı kontrol edebilirsiniz."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Yeni sesli mesajlarla ilgili olarak bilgilendirilmeyeceksiniz. Sesli mesajlarınızı senkronize etmek için uçak modunu kapatın."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Sesli mesaj kontrolü için telefonunuzda mobil veri bağlantısı olmalıdır."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Görsel sesli mesaj etkinleştirilemiyor"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Hâlâ arayarak sesli mesajlarınızı kontrol edebilirsiniz."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Görsel sesli mesaj güncellenemiyor"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Kablosuz veya mobil veri bağlantısı kalitesi daha iyi olduğunda tekrar deneyin. Hâlâ arayarak sesli mesajlarınızı kontrol edebilirsiniz."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Mobil veri bağlantısı kalitesi daha iyi olduğunda tekrar deneyin. Hâlâ arayarak sesli mesajlarınızı kontrol edebilirsiniz."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Görsel sesli mesaj güncellenemiyor"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Hâlâ arayarak sesli mesajlarınızı kontrol edebilirsiniz."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Görsel sesli mesaj güncellenemiyor"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Hâlâ arayarak sesli mesajlarınızı kontrol edebilirsiniz."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Görsel sesli mesaj güncellenemiyor"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Hâlâ arayarak sesli mesajlarınızı kontrol edebilirsiniz."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Görsel sesli mesaj güncellenemiyor"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Hâlâ arayarak sesli mesajlarınızı kontrol edebilirsiniz."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Gelen kutusu dolmak üzere"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Gelen kutunuz dolarsa yeni sesli mesajları alamayacaksınız."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Yeni sesli mesajlar alınamıyor"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Gelen kutunuz doldu. Yeni sesli mesajları almak için bazı mesajları silmeyi deneyin."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Ekstra depolama alanını ve yedeklemeyi etkinleştirin"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Posta kutunuz dolu. Google\'ın sesli mesajlarınızı yönetebileceği ve yedekleyebileceği şekilde yer açmak için ekstra depolama alanını etkinleştirin."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Ekstra depolama alanını ve yedeklemeyi etkinleştirin"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Posta kutunuz dolmak üzere. Google\'ın sesli mesajlarınızı yönetebileceği ve yedekleyebileceği şekilde yer açmak için ekstra depolama alanını etkinleştirin."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Sesli mesaj PIN\'inizi ayarlayın"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Sesli mesajlarınıza erişmek için her aradığınızda bir sesli mesaj PIN\'i girmeniz gerekecek."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Uçak Modu Ayarları"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN ayarlayın"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Tekrar Deneyin"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Etkinleştir"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Hayır, teşekkürler"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Senkronize et"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Sesli Mesaj Hizmetini Ara"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Müşteri Desteğini Ara"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Bir Sorun Oluştu"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Maalesef bir sorunla karşılaştık. Lütfen daha sonra tekrar deneyin. Sorun devam ederse lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9001 olduğunu bildirin."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Bir Sorun Oluştu"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Maalesef bir sorunla karşılaştık. Lütfen daha sonra tekrar deneyin. Sorun devam ederse lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9002 olduğunu bildirin."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Bir Sorun Oluştu"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Maalesef bir sorunla karşılaştık. Lütfen daha sonra tekrar deneyin. Sorun devam ederse lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9003 olduğunu bildirin."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Sesli Mesaj Kutunuza Bağlanılamıyor"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Maalesef sesli mesaj kutunuza bağlanmada sorun yaşıyoruz. Sinyal gücünün zayıf olduğu bir alandaysanız sinyal gücü kuvvetlenene kadar bekleyin ve tekrar deneyin. Sorun devam ederse lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9004 olduğunu bildirin."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Sesli Mesaj Kutunuza Bağlanılamıyor"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Maalesef sesli mesaj kutunuza bağlanmada sorun yaşıyoruz. Sinyal gücünün zayıf olduğu bir alandaysanız sinyal gücü kuvvetlenene kadar bekleyin ve tekrar deneyin. Sorun devam ederse lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9005 olduğunu bildirin."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Sesli Mesaj Kutunuza Bağlanılamıyor"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Maalesef sesli mesaj kutunuza bağlanmada sorun yaşıyoruz. Sinyal gücünün zayıf olduğu bir alandaysanız sinyal gücü kuvvetlenene kadar bekleyin ve tekrar deneyin. Sorun devam ederse lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9006 olduğunu bildirin."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Bir Sorun Oluştu"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Maalesef bir sorunla karşılaştık. Lütfen daha sonra tekrar deneyin. Sorun devam ederse lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9007 olduğunu bildirin."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Bir Sorun Oluştu"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Maalesef bir sorunla karşılaştık. Lütfen daha sonra tekrar deneyin. Sorun devam ederse lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9008 olduğunu bildirin."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Bir Sorun Oluştu"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Maalesef hizmetin ayarlanmasında sorun yaşıyoruz. Lütfen daha sonra tekrar deneyin. Sorun devam ederse lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9009 olduğunu bildirin."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Sesli Mesaj Kutunuza Bağlanılamıyor"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Maalesef şu anda sesli mesaj kutunuza bağlanamadık. Lütfen daha sonra tekrar deneyin. Sorun devam ederse lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9990 olduğunu bildirin."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Sesli Mesajı Ayarlayın"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Hesabınızda sesli mesaj ayarlanmadı. Lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9991 olduğunu bildirin."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Sesli mesaj"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Görsel sesli mesaj bu cihazda kullanılamıyor. Lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9992 olduğunu bildirin."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Bir Sorun Oluştu"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9993 olduğunu bildirin."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Görsel sesli mesaj"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Görsel sesli mesaj kurulumunu tamamlamak için lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9994 olduğunu bildirin."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Görsel sesli mesaj"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Görsel sesli mesaj kurulumunu tamamlamak için lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9995 olduğunu bildirin."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Görsel sesli mesaj"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Görsel sesli mesajı etkinleştirmek için lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9996 olduğunu bildirin."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Bir Sorun Oluştu"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Görsel sesli mesaj kurulumunu tamamlamak için lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9998 olduğunu bildirin."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Görsel sesli mesaj devre dışı bırakıldı"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Görsel sesli mesajı etkinleştirmek için lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçin."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Bir Sorun Oluştu"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9997 olduğunu bildirin."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Bir Sorun Oluştu"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9989 olduğunu bildirin."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Bir Sorun Oluştu"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Lütfen <xliff:g id="NUMBER">%1$s</xliff:g> numaralı telefondan Müşteri Hizmetleri ile iletişime geçerek hata kodunun 9999 olduğunu bildirin."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Görsel Sesli Mesaj\'ı etkinleştirme"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nGörsel Sesli Mesaj\'ı etkinleştirerek Verizon Wireless şartlar ve koşullarına uymayı kabul etmiş olursunuz:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Görsel sesli mesajı etkinleştirme"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Sesli mesaj hizmetini aramak zorunda kalmadan mesajlarınızı görün ve dinleyin. Sesli mesajlarınızın çeviri yazıları Google\'ın ücretsiz çeviri yazı hizmeti tarafından sağlanır. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Sesli mesaj hizmetini aramak zorunda kalmadan mesajlarınızı görün ve dinleyin. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Daha fazla bilgi"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Şartlar ve koşullar reddedilirse görsel sesli mesaj devre dışı bırakılır."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Görsel sesli mesajı devre dışı bırak"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Şartlar ve koşullar reddedilirse sesli mesaj çeviri yazısı devre dışı bırakılır."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Sesli mesaj çeviri yazısını devre dışı bırakın"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Sesli mesajlara yalnızca *86 aranarak erişilebilir. Devam etmek için yeni bir sesli mesaj PIN\'i belirleyin."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN belirleyin"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-uk/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-uk/strings.xml
deleted file mode 100644
index db87971..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-uk/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Активація візуальної голосової пошти"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Якщо візуальну голосову пошту активовано неповністю, сповіщення голосової пошти можуть не надходити. У такому разі слід телефонувати на голосову пошту, щоб прослуховувати нові повідомлення."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Не вдалось активувати візуальну голосову пошту"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Переконайтеся, що в телефоні ввімкнено мобільний Інтернет, і спробуйте ще раз."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Вимкніть режим польоту та спробуйте ще раз."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Немає з’єднання"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Ви не отримуватимете сповіщення про нові повідомлення голосової пошти. Якщо активовано Wi-Fi, можете просто ввімкнути синхронізацію, і нові повідомлення завантажаться."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Ви не отримуватимете сповіщення про нові повідомлення голосової пошти. Щоб синхронізувати голосову пошту, вимкніть режим польоту."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Щоб перевірити голосову пошту, потрібно ввімкнути мобільний Інтернет."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Не вдалось активувати візуальну голосову пошту"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Щоб перевірити голосову пошту, ви також можете зателефонувати."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Не вдалось оновити візуальну голосову пошту"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Спробуйте ще раз, коли буде вища швидкість мобільного Інтернету або кращий сигнал Wi-Fi. Щоб перевірити голосову пошту, ви також можете зателефонувати."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Спробуйте ще раз, коли буде вища швидкість мобільного Інтернету. Щоб перевірити голосову пошту, ви також можете зателефонувати."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Не вдалось оновити візуальну голосову пошту"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Щоб перевірити голосову пошту, ви також можете зателефонувати."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Не вдалось оновити візуальну голосову пошту"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Щоб перевірити голосову пошту, ви також можете зателефонувати."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Не вдалось оновити візуальну голосову пошту"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Щоб перевірити голосову пошту, ви також можете зателефонувати."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Не вдалось оновити візуальну голосову пошту"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Щоб перевірити голосову пошту, ви також можете зателефонувати."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Папка \"Вхідні\" майже заповнена"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Якщо папка вхідної голосової пошти заповнена, ви не зможете отримувати нові повідомлення."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Неможливо отримати нові голосові повідомлення"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Папка вхідної голосової пошти заповнена. Видаліть деякі повідомлення, щоб отримати нові."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Увімкніть додаткову пам’ять і резервне копіювання"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"У поштовій скриньці не залишилося місця. Щоб звільнити його, увімкніть додаткову пам’ять, і тоді Google почне робити резервні копії вашої голосової пошти й керувати нею."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Увімкніть додаткову пам’ять і резервне копіювання"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"У поштовій скриньці майже не залишилося місця. Щоб звільнити його, увімкніть додаткову пам’ять, і тоді Google почне робити резервні копії вашої голосової пошти й керувати нею."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Установіть PIN-код голосової пошти"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"PIN-код буде потрібен під час кожного дзвінка на голосову пошту."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Налаштування режиму польоту"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Установити PIN-код"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Повторити спробу"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Увімкнути"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Не вмикати"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Синхронізувати"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Зателефонувати на голосову пошту"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Зателефонувати в службу підтримки користувачів"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Сталася помилка"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Сталася помилка. Спробуйте пізніше. Якщо проблема спостерігатиметься й надалі, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Сталася помилка"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Сталася помилка. Спробуйте пізніше. Якщо проблема спостерігатиметься й надалі, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Сталася помилка"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Сталася помилка. Спробуйте пізніше. Якщо проблема спостерігатиметься й надалі, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Не вдалося підключитися до скриньки голосової пошти"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Не вдалося підключитися до вашої скриньки голосової пошти. Якщо сигнал мобільної мережі слабкий, зачекайте, доки він не покращиться, і спробуйте ще раз. Якщо проблема спостерігатиметься й надалі, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Не вдалося підключитися до скриньки голосової пошти"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Не вдалося підключитися до вашої скриньки голосової пошти. Якщо сигнал мобільної мережі слабкий, зачекайте, доки він не покращиться, і спробуйте ще раз. Якщо проблема спостерігатиметься й надалі, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Не вдалося підключитися до скриньки голосової пошти"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Не вдалося підключитися до вашої скриньки голосової пошти. Якщо сигнал мобільної мережі слабкий, зачекайте, доки він не покращиться, і спробуйте ще раз. Якщо проблема спостерігатиметься й надалі, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Сталася помилка"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Сталася помилка. Спробуйте пізніше. Якщо проблема спостерігатиметься й надалі, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Сталася помилка"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Сталася помилка. Спробуйте пізніше. Якщо проблема спостерігатиметься й надалі, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Сталася помилка"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Під час налаштування сервісу сталася помилка. Спробуйте пізніше. Якщо проблема спостерігатиметься й надалі, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Не вдалося підключитися до скриньки голосової пошти"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Наразі не вдається підключитися до вашої скриньки голосової пошти. Спробуйте пізніше. Якщо проблема спостерігатиметься й надалі, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Налаштування голосової пошти"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"У вашому обліковому записі не налаштовано голосову пошту. Зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Голосова пошта"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Візуальна голосова пошта недоступна на цьому пристрої. Зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Сталася помилка"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Візуальна голосова пошта"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Щоб завершити налаштування візуальної голосової пошти, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Візуальна голосова пошта"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Щоб завершити налаштування візуальної голосової пошти, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Візуальна голосова пошта"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Щоб активувати візуальну голосову пошту, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Сталася помилка"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Щоб завершити налаштування візуальної голосової пошти, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Візуальну голосову пошту вимкнено"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Щоб активувати візуальну голосову пошту, зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Сталася помилка"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Сталася помилка"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Сталася помилка"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Зв’яжіться зі службою обслуговування клієнтів за номером <xliff:g id="NUMBER">%1$s</xliff:g> і повідомте такий код помилки: 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Увімкнення візуальної голосової пошти"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nУвімкнувши візуальну голосову пошту, ви приймаєте Умови використання Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Увімкнення візуальної голосової пошти"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Переглядайте та прослуховуйте повідомлення, не телефонуючи на голосову пошту. Тексти голосових повідомлень надаються безкоштовною службою транскрибування Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Переглядайте та прослуховуйте повідомлення, не телефонуючи на голосову пошту. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Докладніше"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Якщо відхилити умови використання, візуальну голосову пошту буде вимкнено."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Вимкнути візуальну голосову пошту"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Якщо відхилити правила та умови, транскрипцію голосової пошти буде вимкнено."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Вимкнути транскрипцію голосової пошти"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Прослухати голосову пошту можна буде, лише набравши *86. Установіть новий PIN-код для голосової пошти, щоб продовжити."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Установити PIN-код"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-ur/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-ur/strings.xml
deleted file mode 100644
index 23ace8a..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-ur/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"بصری صوتی میل کو فعال کیا جا رہا ہے"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"بصری صوتی میل کے مکمل طور پر فعال ہونے تک ہو سکتا ہے آپ کو صوتی میل کی اطلاعات موصول نہ ہو۔ صوتی میل کے مکمل طور پر فعال ہونے تک نئے پیغامات کی بازیافت کیلئے صوتی میل پر کال کریں۔"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"بصری صوتی میل کو فعال نہیں کیا جا سکتا"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"یقینی بنائیں کہ آپ کے فون میں ایک موبائل کنکشن موجود ہے اور دوبارہ کوشش کریں۔"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"ہوائی جہاز وضع آف کریں اور دوبارہ کوشش کریں۔"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"کوئی کنکشن نہیں ہے"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"‏آپ کو نئی صوتی میلز سے مطلع نہیں کیا جائے گا۔ اگر آپ Wi-Fi پر ہیں تو آپ ابھی مطابقت پذیری کرکے صوتی میل کیلئے چیک کر سکتے ہیں۔"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"آپ کو نئی صوتی میلز سے مطلع نہیں کیا جائے گا۔ اپنی صوتی میل کو مطابقت پذیر بنانے کیلئے ہوائی جہاز وضع آف کریں۔"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"صوتی میل چیک کرنے کیلئے آپ کے فون کو موبائل ڈیٹا کنکشن کی ضرورت ہے۔"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"بصری صوتی میل کو فعال نہیں کیا جا سکتا"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"صوتی میل چیک کرنے کیلئے آپ ابھی بھی کال کر سکتے ہیں۔"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"بصری صوتی میل اپ ڈیٹ نہیں ہو سکتی"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"‏جب آپ کا Wi-Fi یا موبائل کنکشن بہتر تو دوبارہ کوشش کریں۔ صوتی میل چیک کرنے کیلئے آپ ابھی بھی کال کر سکتے ہیں۔"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"جب آپ کا موبائل ڈیٹا کنکشن بہتر تو دوبارہ کوشش کریں۔ صوتی میل چیک کرنے کیلئے آپ ابھی بھی کال کر سکتے ہیں۔"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"بصری صوتی میل اپ ڈیٹ نہیں ہو سکتی"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"صوتی میل چیک کرنے کیلئے آپ ابھی بھی کال کر سکتے ہیں۔"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"بصری صوتی میل اپ ڈیٹ نہیں ہو سکتی"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"صوتی میل چیک کرنے کیلئے آپ ابھی بھی کال کر سکتے ہیں۔"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"بصری صوتی میل اپ ڈیٹ نہیں ہو سکتی"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"صوتی میل چیک کرنے کیلئے آپ ابھی بھی کال کر سکتے ہیں۔"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"بصری صوتی میل اپ ڈیٹ نہیں ہو سکتی"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"صوتی میل چیک کرنے کیلئے آپ ابھی بھی کال کر سکتے ہیں۔"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"ان باکس تقریباً بھرا ہوا ہے"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"اگر آپ کا ان باکس بھرا ہوا ہوگا تو آپ نئی صوتی میل موصول نہیں کر پائیں گے۔"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"نئی صوتی میلز موصول نہیں ہو سکتی"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"آپ کا ان باکس بھرا ہوا ہے۔ نئی صوتی میل موصول کرنے کیلئے کچھ پیغامات حذف کرنے کی کوشش کریں۔"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"اضافی اسٹوریج اور بیک اپ آن کریں"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"‏آپ کا میل باکس بھر گیا ہے۔ جگہ خالی کرنے کیلئے، اضافی اسٹوریج کو آن کریں تا کہ Google آپ کے صوتی میل پیغامات کا بیک اپ اور ان کا نظم کر سکے۔"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"اضافی اسٹوریج اور بیک اپ آن کریں"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"‏آپ کا میل باکس تقریباً بھر گیا ہے۔ جگہ خالی کرنے کیلئے، اضافی اسٹوریج کو آن کریں تا کہ Google آپ کے صوتی میل پیغامات کا بیک اپ اور ان کا نظم کر سکے۔"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"‏اپنی صوتی میل PIN سیٹ کریں"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"‏آپ جب بھی صوتی میل تک رسائی کیلئے کال کریں گے تو آپ کو صوتی میل PIN چاہئیے ہوگی۔"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"ہوائی جہاز وضع کی ترتیبات"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"‏PIN سیٹ کریں"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"دوبارہ کوشش کریں"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"آن کریں"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"نہیں شکریہ"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"مطابقت پذیری کریں"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"صوتی میل پر کال کریں"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"کسٹمر سپورٹ کو کال کریں"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"کچھ غلط ہوگیا"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"معذرت، ہمیں کچھ مسئلہ پیش آ گیا۔ براہ کرم بعد میں دوبارہ کوشش کریں۔ اگر مسئلہ موجود رہتا ہے تو براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9001 ہے۔"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"کچھ غلط ہوگیا"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"معذرت، ہمیں کچھ مسئلہ پیش آ گیا۔ براہ کرم بعد میں دوبارہ کوشش کریں۔ اگر مسئلہ موجود رہتا ہے تو براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9002 ہے۔"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"کچھ غلط ہوگیا"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"معذرت، ہمیں کچھ مسئلہ پیش آ گیا۔ براہ کرم بعد میں دوبارہ کوشش کریں۔ اگر مسئلہ موجود رہتا ہے تو براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9003 ہے۔"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"آپ کے صوتی میل باکس سے منسلک نہیں ہو سکتا"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"معذرت، ہمیں آپ کے صوتی میل باکس سے منسلک ہونے میں پریشانی ہو رہی ہے۔ اگر آپ کسی ایسے علاقے میں ہیں جہاں سگنل کی قوت کم ہے تو مضبوط سگنل آنے تک انتظار کریں اور دوبارہ کوشش کریں۔ اگر مسئلہ موجود رہتا ہے تو براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9004 ہے۔"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"آپ کے صوتی میل باکس سے منسلک نہیں ہو سکتا"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"معذرت، ہمیں آپ کے صوتی میل باکس سے منسلک ہونے میں پریشانی ہو رہی ہے۔ اگر آپ کسی ایسے علاقے میں ہیں جہاں سگنل کی قوت کم ہے تو مضبوط سگنل آنے تک انتظار کریں اور دوبارہ کوشش کریں۔ اگر مسئلہ موجود رہتا ہے تو براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9005 ہے۔"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"آپ کے صوتی میل باکس سے منسلک نہیں ہو سکتا"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"معذرت، ہمیں آپ کے صوتی میل باکس سے منسلک ہونے میں پریشانی ہو رہی ہے۔ اگر آپ کسی ایسے علاقے میں ہیں جہاں سگنل کی قوت کم ہے تو مضبوط سگنل آنے تک انتظار کریں اور دوبارہ کوشش کریں۔ اگر مسئلہ موجود رہتا ہے تو براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9006 ہے۔"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"کچھ غلط ہوگیا"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"معذرت، ہمیں ایک مسئلہ پیش آ گیا۔ براہ کرم بعد میں دوبارہ کوشش کریں۔ اگر مسئلہ موجود رہتا ہے تو براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9007 ہے۔"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"کچھ غلط ہوگیا"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"معذرت، ہمیں ایک مسئلہ پیش آ گیا۔ براہ کرم بعد میں دوبارہ کوشش کریں۔ اگر مسئلہ موجود رہتا ہے تو براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9008 ہے۔"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"کچھ غلط ہوگیا"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"معذرت، ہمیں آپ کی سروس سیٹ اپ کرنے میں پریشانی ہو رہی ہے۔ براہ کرم بعد میں دوبارہ کوشش کریں۔ اگر مسئلہ موجود رہتا ہے تو براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سپورٹ سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9009 ہے۔"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"آپ کے صوتی میل باکس سے منسلک نہیں ہو سکتا"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"معذرت، ہم اس وقت آپ کے میل باکس سے منسلک کرنے سے قاصر ہیں۔ براہ کرم بعد میں دوبارہ کوشش کریں۔ اگر مسئلہ موجود رہتا ہے تو براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9990 ہے۔"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"صوتی میل ترتیب دیں"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"آپ کے اکاؤنٹ پر صوتی میل ترتیب نہیں دی گئی ہے۔ براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9991 ہے۔"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"صوتی میل"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"اس آلہ پر بصری صوتی میل استعمال نہیں ہو سکتی۔ براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9992 ہے۔"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"کچھ غلط ہوگیا"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9993 ہے۔"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"بصری صوتی میل"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"بصری صوتی میل کا سیٹ اپ مکمل کرنے کیلئے براہ کرم کسٹمر سروس سے <xliff:g id="NUMBER">%1$s</xliff:g> پر رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9994 ہے۔"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"بصری صوتی میل"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"بصری صوتی میل کا سیٹ اپ مکمل کرنے کیلئے براہ کرم کسٹمر سروس سے <xliff:g id="NUMBER">%1$s</xliff:g> پر رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9995 ہے۔"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"بصری صوتی میل"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"بصری صوتی میل فعال کرنے کیلئے براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9996 ہے۔"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"کچھ غلط ہوگیا"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"بصری صوتی میل کا سیٹ اپ مکمل کرنے کیلئے براہ کرم کسٹمر سروس سے <xliff:g id="NUMBER">%1$s</xliff:g> پر رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9998 ہے۔"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"بصری صوتی میل غیر فعال ہے"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"بصری صوتی میل فعال کرنے کیلئے <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں۔"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"کچھ غلط ہوگیا"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9997 ہے۔"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"کچھ غلط ہوگیا"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9989 ہے۔"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"کچھ غلط ہوگیا"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"براہ کرم <xliff:g id="NUMBER">%1$s</xliff:g> پر کسٹمر سروس سے رابطہ کریں اور انہیں بتائیں کہ خرابی کا کوڈ 9999 ہے۔"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"بصری صوتی میل آن کریں"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"‏%1$s\n\nبصری صوتی میل کو آن کر کے آپ Verizon Wireless کی شرائط و ضوابط سے اتفاق کرتے ہیں:\n\n‎%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"بصری صوتی میل آن کریں"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"‎%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"‏صوتی میل میں کال کئے بغیر، اپنے پیغامات دیکھیں اور سنیں۔ آپ کے صوتی میل کی ٹرانسکرپٹس Google کی مفت نقل حرفی کی سروس کے ذریعے فراہم کرائی جاتی ہیں۔ ‎%s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"‏صوتی میل میں کال کئے بغیر، اپنے پیغامات دیکھیں اور سنیں۔ ‎%s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"مزید جانیں"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"شرائط و ضوابط مسترد کئے جانے کی صورت میں بصری صوتی میل غیر فعال کر دی جائے گی۔"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"بصری صوتی میل کو غیر فعال کریں"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"شرائط و ضوابط مسترد کئے جانے کی صورت میں صوتی میل ٹرانسکرپشن غیر فعال کر دی جائے گی۔"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"صوتی میل ٹرانسکرپشن غیر فعال کریں"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"‏صوتی میل تک رسائی صرف ‎*86 کو کال کرنے سے ہوگی۔ آگے بڑھنے کیلئے صوتی میل کی نئی PIN سیٹ کریں۔"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"‏PIN سیٹ کریں"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-uz/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-uz/strings.xml
deleted file mode 100644
index 8640acd..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-uz/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Vizual ovozli pochta faollashtirilmoqda"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Vizual ovozli pochta xizmati faollashtirilmasa, yangi ovozli xabarlar haqida bildirishnoma kelmaydi. Ungacha ovozli pochtaga qo‘ng‘iroq qilib, yangi xabarlarni tinglashingiz mumkin."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Vizual ovozli pochtani faollashtirib bo‘lmadi"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Telefoningizda mobil internet yoqilganligini tekshiring va qayta urinib ko‘ring."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Parvoz rejimini o‘chiring va qayta urinib ko‘ring."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Aloqa yo‘q"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Sizga yangi ovozli xabarlar haqida bildirishnoma kelmaydi. Wi-Fi tarmog‘iga ulangan qurilmangizda sinxronizatsiya yoqilsa, xabarlar yuklanadi."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Sizga yangi ovozli pochta xabarlari haqida bildirishnoma kelmaydi. Ovozli pochtani sinxronlash uchun parvoz rejimini o‘chiring."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Ovozli pochtani tekshirish uchun mobil internet yoqilgan bo‘lishi lozim."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Vizual ovozli pochtani faollashtirib bo‘lmadi"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Ovozli pochtani qo‘ng‘iroq qilib ham tekshirishingiz mumkin."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Vizual ovozli pochtani yangilab bo‘lmadi"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Tezkor Wi-Fi yoki mobil internetdan foydalanish imkoniyati paydo bo‘lganida, qayta urinib ko‘ring. Ovozli pochtani uyali qo‘ng‘iroq orqali ham tekshirish mumkin."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Tezkor mobil internetdan foydalanish imkoniyati paydo bo‘lganida, qayta urinib ko‘ring. Ovozli pochtani uyali qo‘ng‘iroq orqali ham tekshirish mumkin."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Vizual ovozli pochtani yangilab bo‘lmadi"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Ovozli pochtani qo‘ng‘iroq qilib ham tekshirishingiz mumkin."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Vizual ovozli pochtani yangilab bo‘lmadi"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Ovozli pochtani qo‘ng‘iroq qilib ham tekshirishingiz mumkin."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Vizual ovozli pochtani yangilab bo‘lmadi"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Ovozli pochtani qo‘ng‘iroq qilib ham tekshirishingiz mumkin."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Vizual ovozli pochtani yangilab bo‘lmadi"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Ovozli pochtani qo‘ng‘iroq qilib ham tekshirishingiz mumkin."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Ovozli pochta qutisi deyarli to‘lgan"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Agar ovozli pochta qutisi to‘lib qolsa, yangi xabarlar qabul qilishning imkoni bo‘lmay qoladi."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Yangi ovozli pochta xabarlarini qabul qilib bo‘lmadi"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Ovozli pochta qutisi to‘lgan. Yangi xabarlar qabul qilish uchun eskilaridan bir nechtasini o‘chirib tashlang."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Qo‘shimcha xotira va zaxiralash xususiyatini yoqish"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Pochtangiz qutisi deyarli to‘lgan. Unda joy bo‘shatish uchun qo‘shimcha xotirani yoqing. Google esa, ovozli xabarlaringiz nusxasini zaxiralashni hamda ularni boshqarishni boshlaydi."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Qo‘shimcha xotira va zaxiralash xususiyatini yoqish"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Pochtangiz qutisi deyarli to‘lgan. Unda joy bo‘shatish uchun qo‘shimcha xotirani yoqing. Google esa, ovozli xabarlaringiz nusxasini zaxiralashni hamda ularni boshqarishni boshlaydi."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Ovozli pochta uchun PIN kod o‘rnatish"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Ovozli pochtaga har safar qo‘ng‘iroq qilinganda PIN kod so‘raladi."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Parvoz rejimi sozlamalari"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"PIN kodni o‘rnatish"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Qayta urinib ko‘rish"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Yoqish"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Yo‘q, rahmat"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Sinxronlash"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Ovozli pochtaga qo‘ng‘iroq qilish"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Mijozlarni qo‘llab-quvvatlash xizmatiga qo‘ng‘iroq qilish"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Noma’lum xatolik yuz berdi"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Xatolik yuz berdi. Keyinroq qayta urinib ko‘ring. Agar bu muammo bartaraf qilinmasa, <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9001)."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Noma’lum xatolik yuz berdi"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Xatolik yuz berdi. Keyinroq qayta urinib ko‘ring. Agar bu muammo bartaraf qilinmasa, <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9002)."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Noma’lum xatolik yuz berdi"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Xatolik yuz berdi. Keyinroq qayta urinib ko‘ring. Agar bu muammo bartaraf qilinmasa, <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9003)."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Ovozli pochta qutisiga ulanib bo‘lmadi"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Ovozli pochta qutisiga ulanib bo‘lmayapti. Aloqa signali kuchliroq bo‘lgan joyni qidirib ko‘ring va qayta ulaning. Agar bu muammo bartaraf qilinmasa, <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9004)."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Ovozli pochta qutisiga ulanib bo‘lmadi"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Ovozli pochta qutisiga ulanib bo‘lmayapti. Aloqa signali kuchliroq bo‘lgan joyni qidirib ko‘ring va qayta ulaning. Agar bu muammo bartaraf qilinmasa, <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9005)."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Ovozli pochta qutisiga ulanib bo‘lmadi"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Ovozli pochta qutisiga ulanib bo‘lmayapti. Aloqa signali kuchliroq bo‘lgan joyni qidirib ko‘ring va qayta ulaning. Agar bu muammo bartaraf qilinmasa, <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9006)."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Noma’lum xatolik yuz berdi"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Xatolik yuz berdi. Keyinroq qayta urinib ko‘ring. Agar bu muammo bartaraf qilinmasa, <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9007)."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Noma’lum xatolik yuz berdi"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Xatolik yuz berdi. Keyinroq qayta urinib ko‘ring. Agar bu muammo bartaraf qilinmasa, <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9008)."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Noma’lum xatolik yuz berdi"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Xizmatni sozlab bo‘lmayapti. Keyinroq qayta urinib ko‘ring. Agar bu muammo bartaraf qilinmasa, <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9009)."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Ovozli pochta qutisiga ulanib bo‘lmadi"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Hozir ovozli pochta qutisiga ulanib bo‘lmayapti. Keyinroq qayta urinib ko‘ring. Agar bu muammo bartaraf qilinmasa, <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9990)."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Ovozli pochtani sozlash"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Hisobingizda ovozli pochta xizmati sozlanmagan. <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9991)."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Ovozli pochta"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Bu qurilmada vizual ovozli pochtadan foydalanib bo‘lmaydi. <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va xatolik kodi haqida xabar bering (kod: 9992)."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Noma’lum xatolik yuz berdi"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9993)."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Vizual ovozli pochta"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Vizual ovozli pochtani sozlashni tugallash uchun <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va xatolik kodi haqida xabar bering (kod: 9994)."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Vizual ovozli pochta"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Vizual ovozli pochtani sozlashni tugallash uchun <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va xatolik kodi haqida xabar bering (kod: 9995)."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Vizual ovozli pochta"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Vizual ovozli pochtani faollashtirish uchun <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va xatolik kodi haqida xabar bering (kod: 9996)."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Noma’lum xatolik yuz berdi"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Vizual ovozli pochtani sozlashni tugallash uchun <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va xatolik kodi haqida xabar bering (kod: 9998)."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Vizual ovozli pochta faolsizlantirildi"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Vizual ovozli pochta xizmatini faollashtirish uchun <xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Noma’lum xatolik yuz berdi"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9997)."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Noma’lum xatolik yuz berdi"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9989)."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Noma’lum xatolik yuz berdi"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"<xliff:g id="NUMBER">%1$s</xliff:g> raqami orqali mijozlarni qo‘llab-quvvatlash markazi bilan bog‘laning va ularga xatolik kodi haqida xabar bering (kod: 9999)."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Vizual ovozli pochtani faollashtirish"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nVizual ovozli pochtani faollashtirish orqali siz Verizon Wireless xizmatidan foydalanish shartlarini qabul qilgan hisoblanasiz:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Vizual ovozli pochtani faollashtirish"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Ovozli pochtaga qo‘ng‘iroq qilmasdan ovozli xabarlarni ko‘rishingiz va tinglashingiz mumkin. Ovozli xabarlar transkripsiyasi Google’ning bepul transkripsiya xizmati tomonidan taqdim etiladi. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Ovozli pochtaga qo‘ng‘iroq qilmasdan ovozli xabarlarni ko‘rishingiz va tinglashingiz mumkin. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Batafsil"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Agar foydalanish shartlari qabul qilinmasa, vizual ovozli pochta o‘chirib qo‘yiladi."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Vizual ovozli pochta o‘chirib qo‘yilsin"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Agar Foydalanish shartlari qabul qilinmasa, ovozli xabarlarni transkripsiyalash xizmati o‘chirib qo‘yiladi."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Ovozli xabarlarni transkripsiyalash xususiyatini o‘chirib qo‘yish"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Ovozli pochta xabarlarini *86 raqamiga qo‘ng‘iroq qilib tinglash mumkin. Davom ettirish uchun ovozli pochtaga yangi PIN kod o‘rnating."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"PIN kod o‘rnatish"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-vi/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-vi/strings.xml
deleted file mode 100644
index 482f83a..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-vi/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Đang kích hoạt thư thoại kèm theo hình ảnh"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Bạn có thể không nhận được thông báo thư thoại cho đến khi thư thoại kèm theo hình ảnh được kích hoạt hoàn toàn. Gọi thư thoại để truy xuất tin nhắn mới cho đến khi thư thoại được kích hoạt hoàn toàn."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Không kích hoạt được thư thoại kèm theo hình ảnh"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Đảm bảo điện thoại của bạn có kết nối mạng di động và thử lại."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Hãy tắt chế độ trên máy bay và thử lại."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Không có kết nối"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Bạn sẽ không được thông báo về thư thoại mới. Nếu đang dùng Wi-Fi, bạn có thể kiểm tra thư thoại bằng cách đồng bộ hóa ngay bây giờ."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Bạn sẽ không được thông báo về thư thoại mới. Hãy tắt chế độ trên máy bay để đồng bộ hóa thư thoại của bạn."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Điện thoại của bạn cần kết nối dữ liệu di động để kiểm tra thư thoại."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Không kích hoạt được thư thoại kèm theo hình ảnh"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Bạn vẫn có thể gọi để kiểm tra thư thoại."</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Không cập nhật được thư thoại kèm theo hình ảnh"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Hãy thử lại khi Wi-Fi hoặc kết nối dữ liệu di động của bạn tốt hơn. Bạn vẫn có thể gọi để kiểm tra thư thoại."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Hãy thử lại khi kết nối dữ liệu di động của bạn tốt hơn. Bạn vẫn có thể gọi để kiểm tra thư thoại."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Không cập nhật được thư thoại kèm theo hình ảnh"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Bạn vẫn có thể gọi để kiểm tra thư thoại."</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Không cập nhật được thư thoại kèm theo hình ảnh"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Bạn vẫn có thể gọi để kiểm tra thư thoại."</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Không cập nhật được thư thoại kèm theo hình ảnh"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Bạn vẫn có thể gọi để kiểm tra thư thoại."</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Không cập nhật được thư thoại kèm theo hình ảnh"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Bạn vẫn có thể gọi để kiểm tra thư thoại."</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Hộp thư đến gần đầy"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Bạn sẽ không thể nhận được thư thoại mới nếu hộp thư đến của bạn đã đầy."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Không nhận được thư thoại mới"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Hộp thư đến của bạn đã đầy. Hãy thử xóa một vài thư để nhận thư thoại mới."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Bật sao lưu và bộ nhớ bổ sung"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Hộp thư của bạn đã đầy. Để giải phóng dung lượng, hãy bật bộ nhớ bổ sung để Google có thể quản lý và sao lưu thư thoại của bạn."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Bật sao lưu và bộ nhớ bổ sung"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Hộp thư của bạn đã gần đầy. Để giải phóng dung lượng, hãy bật bộ nhớ bổ sung để Google có thể quản lý và sao lưu thư thoại của bạn."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Đặt mã PIN thư thoại của bạn"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Bạn cần có mã PIN thư thoại mỗi khi gọi để truy cập thư thoại của mình."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Cài đặt chế độ trên máy bay"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Đặt mã PIN"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Thử lại"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Bật"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Không, cảm ơn"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Đồng bộ hóa"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Gọi thư thoại"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Gọi bộ phận hỗ trợ khách hàng"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Đã xảy ra lỗi"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Rất tiếc, chúng tôi đã gặp phải sự cố. Vui lòng thử lại sau. Nếu vẫn xảy ra sự cố, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Đã xảy ra lỗi"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Rất tiếc, chúng tôi đã gặp phải sự cố. Vui lòng thử lại sau. Nếu vẫn xảy ra sự cố, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Đã xảy ra lỗi"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Rất tiếc, chúng tôi đã gặp phải sự cố. Vui lòng thử lại sau. Nếu vẫn xảy ra sự cố, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Không thể kết nối với hộp thư thoại của bạn"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Rất tiếc, chúng tôi gặp phải sự cố khi kết nối với hộp thư thoại của bạn. Nếu bạn đang ở khu vực có cường độ tín hiệu yếu, hãy đợi cho đến khi bạn có tín hiệu mạnh và thử lại. Nếu vẫn xảy ra sự cố, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Không thể kết nối với hộp thư thoại của bạn"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Rất tiếc, chúng tôi gặp phải sự cố khi kết nối với hộp thư thoại của bạn. Nếu bạn đang ở khu vực có cường độ tín hiệu yếu, hãy đợi cho đến khi bạn có tín hiệu mạnh và thử lại. Nếu vẫn xảy ra sự cố, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Không thể kết nối với hộp thư thoại của bạn"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Rất tiếc, chúng tôi gặp phải sự cố khi kết nối với hộp thư thoại của bạn. Nếu bạn đang ở khu vực có cường độ tín hiệu yếu, hãy đợi cho đến khi bạn có tín hiệu mạnh và thử lại. Nếu vẫn xảy ra sự cố, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Đã xảy ra lỗi"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Rất tiếc, chúng tôi đã gặp phải sự cố. Vui lòng thử lại sau. Nếu vẫn xảy ra sự cố, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Đã xảy ra lỗi"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Rất tiếc, chúng tôi đã gặp phải sự cố. Vui lòng thử lại sau. Nếu vẫn xảy ra sự cố, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Đã xảy ra lỗi"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Rất tiếc, chúng tôi gặp phải sự cố khi thiết lập dịch vụ của bạn. Vui lòng thử lại sau. Nếu vẫn xảy ra sự cố, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Không thể kết nối với hộp thư thoại của bạn"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Rất tiếc, chúng tôi không thể kết nối với hộp thư thoại của bạn vào lúc này. Vui lòng thử lại sau. Nếu vẫn xảy ra sự cố, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Thiết lập thư thoại"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Thư thoại không được thiết lập trên tài khoản của bạn. Vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Thư thoại"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Không thể sử dụng thư thoại kèm theo hình ảnh trên thiết bị này. Vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Đã xảy ra lỗi"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Thư thoại kèm theo hình ảnh"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Để hoàn thành việc thiết lập thư thoại kèm theo hình ảnh, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9994."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Thư thoại kèm theo hình ảnh"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Để hoàn thành việc thiết lập thư thoại kèm theo hình ảnh, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9995."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Thư thoại kèm theo hình ảnh"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Để kích hoạt thư thoại kèm theo hình ảnh, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Đã xảy ra lỗi"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Để hoàn thành việc thiết lập thư thoại kèm theo hình ảnh, vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Thư thoại kèm theo hình ảnh bị tắt"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> để kích hoạt thư thoại kèm theo hình ảnh."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Đã xảy ra lỗi"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Đã xảy ra lỗi"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Đã xảy ra lỗi"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Vui lòng liên hệ với bộ phận Dịch vụ khách hàng theo số <xliff:g id="NUMBER">%1$s</xliff:g> và cho họ biết mã lỗi là 9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Bật Thư thoại kèm theo hình ảnh"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nBằng cách bật Thư thoại kèm theo hình ảnh, bạn đồng ý với các điều khoản và điều kiện của Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Bật thư thoại kèm theo hình ảnh"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Xem và nghe tin nhắn của bạn mà không phải gọi thư thoại. Bản ghi thư thoại của bạn do dịch vụ phiên âm miễn phí của Google cung cấp. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Xem và nghe tin nhắn của bạn mà không phải gọi thư thoại. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Tìm hiểu thêm"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"Thư thoại kèm theo hình ảnh sẽ bị tắt nếu điều khoản và điều kiện bị từ chối."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Tắt thư thoại kèm theo hình ảnh"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Ghi âm thư thoại sẽ bị vô hiệu hóa nếu bạn từ chối điều khoản và điều kiện."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Vô hiệu hóa ghi âm thư thoại"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Bạn chỉ có thể truy cập thư thoại bằng cách gọi *86. Hãy đặt mã PIN thư thoại mới để tiếp tục."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Đặt mã PIN"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-zh-rCN/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 30a02ee..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"正在激活可视语音信箱"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"在可视语音信箱未完全激活前，您可能不会收到新语音邮件通知。在完全激活前，请呼叫语音信箱以获取新邮件。"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"无法激活可视语音信箱"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"请确保您的手机已连接到移动网络，然后重试。"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"请关闭飞行模式，然后重试。"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"无网络连接"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"您将不会收到关于新语音邮件的通知。如果您已连接到 WLAN 网络，则可以立即同步以便查看语音邮件。"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"您将不会收到关于新语音邮件的通知。请关闭飞行模式以便同步语音信箱。"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"要查看语音邮件，您的手机需要连接到移动数据网络。"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"无法激活可视语音信箱"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"您仍然可以通过拨打电话来查看语音邮件。"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"无法更新可视语音信箱"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"请在 WLAN 或移动网络连接信号较强时重试。您仍然可以通过拨打电话来查看语音邮件。"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"请在移动数据网络连接信号较强时重试。您仍然可以通过拨打电话来查看语音邮件。"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"无法更新可视语音信箱"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"您仍然可以通过拨打电话来查看语音邮件。"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"无法更新可视语音信箱"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"您仍然可以通过拨打电话来查看语音邮件。"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"无法更新可视语音信箱"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"您仍然可以通过拨打电话来查看语音邮件。"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"无法更新可视语音信箱"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"您仍然可以通过拨打电话来查看语音邮件。"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"收件箱快满了"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"如果收件箱已满，您将无法接收新的语音邮件。"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"无法接收新的语音邮件"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"您的收件箱已满。请尝试删除部分邮件，以便接收新的语音邮件。"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"启用额外存储空间和备份功能"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"您的邮箱已满。要释放空间，请启用额外存储空间，以便 Google 管理和备份您的语音邮件。"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"启用额外存储空间和备份功能"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"您的邮箱快满了。要释放空间，请启用额外存储空间，以便 Google 管理和备份您的语音邮件。"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"设置语音信箱 PIN 码"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"您必须使用语音信箱 PIN 码，才能访问您的语音信箱。"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"飞行模式设置"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"设置 PIN 码"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"请重试"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"启用"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"不用了"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"同步"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"呼叫语音信箱"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"致电客服中心"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"出了点问题"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"很抱歉，我们遇到了一个问题，请稍后再试。如果仍然出现问题，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9001。"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"出了点问题"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"很抱歉，我们遇到了一个问题，请稍后再试。如果仍然出现问题，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9002。"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"出了点问题"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"很抱歉，我们遇到了一个问题，请稍后再试。如果仍然出现问题，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9003。"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"无法连接到您的语音信箱"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"很抱歉，无法连接到您的语音信箱。如果您所在的位置信号差，请在信号强的时候重新尝试连接。如果仍然出现问题，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9004。"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"无法连接到您的语音信箱"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"很抱歉，无法连接到您的语音信箱。如果您所在的位置信号差，请在信号强的时候重新尝试连接。如果仍然出现问题，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9005。"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"无法连接到您的语音信箱"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"很抱歉，无法连接到您的语音信箱。如果您所在的位置信号差，请在信号强的时候重新尝试连接。如果仍然出现问题，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9006。"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"出了点问题"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"很抱歉，我们遇到了一个问题，请稍后再试。如果仍然出现问题，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9007。"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"出了点问题"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"很抱歉，我们遇到了一个问题，请稍后再试。如果仍然出现问题，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9008。"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"出了点问题"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"很抱歉，我们无法设置您的服务，请稍后再试。如果仍然出现问题，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9009。"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"无法连接到您的语音信箱"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"很抱歉，目前无法连接到您的语音信箱，请稍后再试。如果仍然出现问题，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9990。"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"设置语音信箱"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"您的帐号尚未设置语音信箱。请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9991。"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"语音信箱"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"无法在此设备上使用可视语音信箱。请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9992。"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"出了点问题"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9993。"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"可视语音信箱"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"要完成可视语音信箱设置，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9994。"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"可视语音信箱"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"要完成可视语音信箱设置，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9995。"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"可视语音信箱"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"要激活可视语音信箱，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9996。"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"出了点问题"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"要完成可视语音信箱设置，请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9998。"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"可视语音信箱已停用"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，以激活可视语音信箱。"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"出了点问题"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9997。"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"出了点问题"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9989。"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"出了点问题"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"请拨打 <xliff:g id="NUMBER">%1$s</xliff:g> 联系客户服务人员，并告诉他们错误代码是 9999。"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"启用可视语音信箱"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\n启用可视语音信箱即表示您同意 Verizon Wireless 的条款及条件：\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"启用可视语音信箱"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"无需呼叫语音信箱便可查看和收听您的语音邮件。Google 的转录服务会免费为您提供语音邮件的转录文本。"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"无需呼叫语音信箱便可查看和收听您的语音邮件。%s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"了解详情"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"如果您拒绝接受条款及条件，可视语音信箱将被停用。"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"停用可视语音信箱"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"如果您拒绝接受条款及条件，语音邮件转录功能将被停用。"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"停用语音邮件转录功能"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"您只能通过拨打 *86 来访问语音信箱。请先设置新的语音信箱 PIN 码再继续操作。"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"设置 PIN 码"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-zh-rHK/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 319c0f3..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"正在啟用視像留言"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"視像留言完全啟用前，您可能無法接收留言通知。請致電留言信箱以取得新訊息，直至視像留言完全啟用。"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"無法啟用視像留言"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"請確定您的手機有數據連線，然後再試一次。"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"關閉飛行模式，然後再試一次。"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"沒有連線"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"您不會收到新留言通知。如果您使用的是 Wi-Fi，可以立即透過同步處理的方式查看是否有留言。"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"您不會收到新留言通知。請關閉飛行模式，以便同步處理留言信箱。"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"您的手機需要有流動數據連線，才能查看留言。"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"無法啟用視像留言"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"您仍可撥號以查看留言信箱。"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"無法更新視像留言信箱"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"請在您的 Wi-Fi 或數據連線品質較佳時再試一次。您仍可撥號以查看留言。"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"請在您的數據連線品質較佳時再試一次。您仍可撥號以查看留言。"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"無法更新視像留言信箱"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"您仍可撥號以查看留言信箱。"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"無法更新視像留言信箱"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"您仍可撥號以查看留言信箱。"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"無法更新視像留言信箱"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"您仍可撥號以查看留言信箱。"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"無法更新視像留言信箱"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"您仍可撥號以查看留言信箱。"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"收件箱快要滿了"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"如果您的收件箱已滿，就無法接收新留言。"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"無法接收新留言"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"您的收件箱已滿。建議您刪除部分訊息以接收新留言。"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"啟用額外儲存裝置和備份功能"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"您的信箱已滿。若要騰出空間，請啟用額外儲存裝置，以便 Google 管理並備份您的留言訊息。"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"啟用額外儲存裝置和備份功能"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"您的信箱快要滿了。若要騰出空間，請啟用額外儲存裝置，以便 Google 管理並備份您的留言訊息。"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"設定留言信箱 PIN"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"您必須輸入留言信箱 PIN 才可收聽留言。"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"飛行模式設定"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"設定 PIN 碼"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"再試一次"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"啟用"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"不用了，謝謝"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"同步"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"致電留言信箱"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"致電客戶支援"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"發生問題"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"抱歉，系統發生問題，請稍後再試。如果問題持續，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9001。"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"發生問題"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"抱歉，系統發生問題，請稍後再試。如果問題持續，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9002。"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"發生問題"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"抱歉，系統發生問題，請稍後再試。如果問題持續，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9003。"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"無法連接您的留言信箱"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"抱歉，連接留言信箱時發生問題。如果您所在位置的訊號較差，請待訊號較佳時再試一次。如果問題持續，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9004。"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"無法連接您的留言信箱"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"抱歉，連接留言信箱時發生問題。如果您所在位置的訊號較差，請待訊號較佳時再試一次。如果問題持續，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9005。"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"無法連接您的留言信箱"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"抱歉，連接留言信箱時發生問題。如果您所在位置的訊號較差，請待訊號較佳時再試一次。如果問題持續，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9006。"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"發生問題"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"抱歉，系統發生問題，請稍後再試。如果問題持續，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9007。"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"發生問題"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"抱歉，系統發生問題，請稍後再試。如果問題持續，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9008。"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"發生問題"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"抱歉，設定服務時發生問題，請稍後再試。如果問題持續，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9009。"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"無法連接您的留言信箱"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"抱歉，我們目前無法連接您的留言信箱，請稍後再試。如果問題持續，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9990。"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"設定留言信箱"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"您的帳戶尚未設定留言信箱。請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9991。"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"留言"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"無法在此裝置上使用視像留言。請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9992。"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"發生問題"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9993。"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"視像留言"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"如要完成視像留言設定，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9994。"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"視像留言"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"如要完成視像留言設定，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9994。"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"視像留言"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"如要啟用視像留言，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9996。"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"發生問題"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"如要完成視像留言設定，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9994。"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"已停用視像留言"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"如要啟用視像留言，請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務。"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"發生問題"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9997。"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"發生問題"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9989。"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"發生問題"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"請致電 <xliff:g id="NUMBER">%1$s</xliff:g> 聯絡客戶服務，並提供錯誤代碼 9999。"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"開啟視覺留言"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\n開啟視覺留言即表示您同意 Verizon Wireless 條款及細則：\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"開啟視覺留言"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"查看及聆聽訊息，無需致電留言信箱。您的留言轉錄內容是由 Google 的免費轉錄服務所提供。%s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"查看及聆聽訊息，無需致電留言信箱。%s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"瞭解詳情"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"如果拒絕條款及細則，視像留言將會停用。"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"停用視像留言"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"如果拒絕條款及細則，留言轉錄功能將會停用。"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"停用留言轉錄功能"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"您只可以撥打 *86 使用留言信箱。請先設定新留言信箱 PIN 碼，然後繼續。"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"設定 PIN 碼"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-zh-rTW/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 1a5a447..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"啟用視覺化語音信箱"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"您必須完整啟用視覺化語音信箱，才會收到語音留言通知。在未完整啟用這項功能之前，如要擷取新訊息，請撥打語音信箱號碼。"</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"無法啟用視覺化語音信箱"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"請確認你的手機已連上行動網路，然後再試一次。"</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"請關閉飛航模式，然後再試一次。"</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"沒有訊號"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"你不會收到新的語音留言通知。如果你已連上 Wi-Fi 網路，立即執行同步處理就能檢查是否有語音留言。"</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"您不會收到新的語音留言通知。請關閉飛航模式，以便同步處理語音留言。"</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"手機必須要有行動數據連線才能檢查語音留言。"</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"無法啟用視覺化語音信箱"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"您也可以撥打電話來檢查語音留言。"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"無法更新視覺化語音信箱"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"請在 Wi‑Fi 或行動網路連線品質較佳時再試一次。你還是可以撥打電話來檢查語音留言。"</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"請在行動網路連線品質較佳時再試一次。你還是可以撥打電話來檢查語音留言。"</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"無法更新視覺化語音信箱"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"您也可以撥打電話來檢查語音留言。"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"無法更新視覺化語音信箱"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"您也可以撥打電話來檢查語音留言。"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"無法更新視覺化語音信箱"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"您也可以撥打電話來檢查語音留言。"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"無法更新視覺化語音信箱"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"您也可以撥打電話來檢查語音留言。"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"收件匣幾乎已滿"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"收件匣已滿時無法接收新的語音留言。"</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"無法接收新的語音留言"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"您的收件匣已滿。請刪除部分訊息，以便接收新的語音留言。"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"啟用額外的儲存空間和備份功能"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"你的信箱容量已滿。如要釋出空間，請啟用額外的儲存空間，方便 Google 管理及備份你的語音留言。"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"啟用額外的儲存空間和備份功能"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"你的信箱容量幾乎已滿。如要釋出空間，請啟用額外的儲存空間，方便 Google 管理及備份你的語音留言。"</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"設定您的語音信箱 PIN 碼"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"您必須輸入語音信箱 PIN 碼才能存取您的語音信箱。"</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"飛航模式設定"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"設定 PIN 碼"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"再試一次"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"啟用"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"不用了，謝謝"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"同步處理"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"撥打語音信箱"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"撥打客服電話"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"發生錯誤"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"抱歉，系統發生錯誤，請稍後再試。如果仍有問題，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9001。"</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"發生錯誤"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"抱歉，系統發生錯誤，請稍後再試。如果仍有問題，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9002。"</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"發生錯誤"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"抱歉，系統發生錯誤，請稍後再試。如果仍有問題，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9003。"</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"無法連線至您的語音信箱"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"抱歉，目前無法連線至您的語音信箱。如果您所在區域的訊號不佳，請移至訊號較強的地方後再試一次。如果仍有問題，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9004。"</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"無法連線至您的語音信箱"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"抱歉，目前無法連線至您的語音信箱。如果您所在區域的訊號不佳，請移至訊號較強的地方後再試一次。如果仍有問題，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9005。"</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"無法連線至您的語音信箱"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"抱歉，目前無法連線至您的語音信箱。如果您所在區域的訊號不佳，請移至訊號較強的地方後再試一次。如果仍有問題，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9006。"</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"發生錯誤"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"抱歉，系統發生錯誤，請稍後再試。如果仍有問題，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9007。"</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"發生錯誤"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"抱歉，系統發生錯誤，請稍後再試。如果仍有問題，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9008。"</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"發生錯誤"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"抱歉，目前無法為您設定服務，請稍後再試。如果仍有問題，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9009。"</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"無法連線至您的語音信箱"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"抱歉，目前無法連線至您的語音信箱，請稍後再試。如果仍有問題，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9990。"</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"設定語音信箱"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"您的帳戶未設定語音信箱。請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9991。"</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"語音信箱"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"這部裝置無法使用視覺化語音信箱。請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告知錯誤代碼為 9992。"</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"發生錯誤"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9993。"</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"視覺化語音信箱"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"如要完成視覺化語音信箱設定作業，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告知錯誤代碼為 9994。"</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"視覺化語音信箱"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"如要完成視覺化語音信箱設定作業，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告知錯誤代碼為 9995。"</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"視覺化語音信箱"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"如要啟用視覺化語音信箱，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告知錯誤代碼為 9996。"</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"發生錯誤"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"如要完成視覺化語音信箱設定作業，請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告知錯誤代碼為 9998。"</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"已停用視覺化語音信箱"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，以啟用視覺化語音信箱。"</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"發生錯誤"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9997。"</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"發生錯誤"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9989。"</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"發生錯誤"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"請撥打 <xliff:g id="NUMBER">%1$s</xliff:g> 與客服人員聯絡，並告訴對方錯誤代碼為 9999。"</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"啟用視覺化語音信箱"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\n啟用視覺化語音信箱即表示你同意 Verizon Wireless 的條款及細則：\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"啟用視覺化語音信箱"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"不必撥打語音信箱即可查看和聽取留言。語音留言轉錄功能是由 Google 的免費留言轉錄服務所提供。%s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"不必撥打語音信箱即可查看和聽取留言。%s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"瞭解詳情"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"如果你拒絕接受相關條款及細則，系統將停用視覺化語音信箱功能。"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"停用視覺化語音信箱"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"如果拒絕接受條款及細則，系統將停用語音信箱留言轉錄功能。"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"停用語音信箱留言轉錄"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"必須撥打 *86 才能聽取語音信箱。如要繼續進行，請先設定新的語音信箱密碼。"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"設定語音信箱密碼"</string>
-</resources>
diff --git a/java/com/android/dialer/app/voicemail/error/res/values-zu/strings.xml b/java/com/android/dialer/app/voicemail/error/res/values-zu/strings.xml
deleted file mode 100644
index fda56c6..0000000
--- a/java/com/android/dialer/app/voicemail/error/res/values-zu/strings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-   -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="voicemail_error_activating_title" msgid="2428457130578359186">"Yenza kusebenze ivoyisimeyili ebonakalayo"</string>
-    <string name="voicemail_error_activating_message" msgid="7157030596259443393">"Kungenzeka ungatholi izaziso zevoyisimeyili kuze kwenziwe kusebenze ngokugcwele ivoyisimeyili ebonakalayo. Shayela ivoyisimeyili ukuze uthole imilayezo emisha kuze kwenziwe kusebenze ngokugcwele ivoyisimeyili."</string>
-    <string name="voicemail_error_not_activate_no_signal_title" msgid="742273366199085615">"Ayikwazi ukwenza kusebenze ivoyisimeyili ebonakalayo"</string>
-    <string name="voicemail_error_not_activate_no_signal_message" msgid="2929059808327964011">"Qiniseka ukuthi ifoni yakho inoxhumo lenethiwekhi leselula bese uyazama futhi."</string>
-    <string name="voicemail_error_not_activate_no_signal_airplane_mode_message" msgid="2005255281543281215">"Vala imodi yendiza uphinde uzame futhi."</string>
-    <string name="voicemail_error_no_signal_title" msgid="341954685733680219">"Akukho ukuxhumana"</string>
-    <string name="voicemail_error_no_signal_message" msgid="2626509025723748371">"Ngeke uze waziswe ngamavoyisimeyili amasha. Uma uku-Wi-Fi, ungahlolela ivoyisimeyili ngokuvumelanisa manje."</string>
-    <string name="voicemail_error_no_signal_airplane_mode_message" msgid="8553646558282754276">"Ngeke waziswe ngamavoyisimeyili amasha. Vala imodi yendiza ukuze uvumelanise ivoyisimeyili yakho."</string>
-    <string name="voicemail_error_no_signal_cellular_required_message" msgid="6452586752169746399">"Ifoni yakho idinga ukuxhumeka kwedatha yeselula ukuze ihlole ivoyisimeyili."</string>
-    <string name="voicemail_error_activation_failed_title" msgid="3823477898681399391">"Ayikwazi ukwenza kusebenze ivoyisimeyili ebonakalayo"</string>
-    <string name="voicemail_error_activation_failed_message" msgid="2188301459207765442">"Usengashaya ukuze uhlole ivoyisimeyili"</string>
-    <string name="voicemail_error_no_data_title" msgid="8127858252892092732">"Ayikwazi ukubuyekeza ivoyisimeyili ebonakalayo"</string>
-    <string name="voicemail_error_no_data_message" msgid="6634124460113498265">"Zama futhi uma i-Wi-Fi yakho noma ukuxhumeka kwakho kwedatha kungcono. Usengashaya ukuze uhlole ivoyisimeyili."</string>
-    <string name="voicemail_error_no_data_cellular_required_message" msgid="2521491029817662357">"Zama futhi uma ukuxhumeka kwakho kwedaha sekungcono. Usengashaya ukuze uhlole ivoyisimeyili."</string>
-    <string name="voicemail_error_bad_config_title" msgid="527594487104462966">"Ayikwazi ukubuyekeza ivoyisimeyili ebonakalayo"</string>
-    <string name="voicemail_error_bad_config_message" msgid="2692955418930476771">"Usengashaya ukuze uhlole ivoyisimeyili"</string>
-    <string name="voicemail_error_communication_title" msgid="9183339646110368169">"Ayikwazi ukubuyekeza ivoyisimeyili ebonakalayo"</string>
-    <string name="voicemail_error_communication_message" msgid="1226746423005179379">"Usengashaya ukuze uhlole ivoyisimeyili"</string>
-    <string name="voicemail_error_server_connection_title" msgid="3036980885397552848">"Ayikwazi ukubuyekeza ivoyisimeyili ebonakalayo"</string>
-    <string name="voicemail_error_server_connection_message" msgid="6008577624710159550">"Usengashaya ukuze uhlole ivoyisimeyili"</string>
-    <string name="voicemail_error_server_title" msgid="5355286554022049134">"Ayikwazi ukubuyekeza ivoyisimeyili ebonakalayo"</string>
-    <string name="voicemail_error_server_message" msgid="3538157415413084592">"Usengashaya ukuze uhlole ivoyisimeyili"</string>
-    <string name="voicemail_error_inbox_near_full_title" msgid="7568681773644454672">"Ibhokisi lokungenayo licishe seligcwele"</string>
-    <string name="voicemail_error_inbox_near_full_message" msgid="354118612203528244">"Ngeke uze ukwazi ukuthola ivoyisimeyili entsha uma ibhokisi lakho lokungenayo ligcwele."</string>
-    <string name="voicemail_error_inbox_full_title" msgid="249268068442046872">"Ayikwazi ukwamukela amavoyisimeyili amasha"</string>
-    <string name="voicemail_error_inbox_full_message" msgid="5788411018158899123">"Ibhokisi lakho lokungenayo ligcwele. Zama ukususa eminye imilayezo ukuze uthole ivoyisimeyili entsha."</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_title" msgid="6209039728273651055">"Vula isitoreji esingeziwe nesipele"</string>
-    <string name="voicemail_error_inbox_full_turn_archive_on_message" msgid="5203159732288749722">"Ibhokisi lakho lemeyili ligcwele. Ukuze ukhulule isikhala, vula isitoreji esingeziwe ukuze i-Google ikwazi ukuphatha futhi yenze isipele imilTo free up space, turn on extra storage so Google can manage and backup your voicemail messages."</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_title" msgid="20352920357816927">"Vula isitoreji esingeziwe nesipele"</string>
-    <string name="voicemail_error_inbox_almost_full_turn_archive_on_message" msgid="9140680538578301853">"Ibhokisi lakho lemeyili cishe ligcwele. Ukuze ukhulule isikhala, vula isitoreji esingeziwe ukuze i-Google ikwazi ukuphatha nokwenza isipele imilayezo yakho yevoyisimeyili."</string>
-    <string name="voicemail_error_pin_not_set_title" msgid="1287168514277948082">"Setha iphini yakho yevoyisimeyili"</string>
-    <string name="voicemail_error_pin_not_set_message" msgid="3802375002103184625">"Udinga iphini yevoyisimeyili noma kunini uma wenza ikholi ukufinyelela ivoyisimeyili yakho."</string>
-    <string name="voicemail_action_turn_off_airplane_mode" msgid="6905706401164671086">"Izilungiselelo zemodi yendiza"</string>
-    <string name="voicemail_action_set_pin" msgid="958510049866316228">"Setha iphini"</string>
-    <string name="voicemail_action_retry" msgid="4450307484541052511">"Zama Futhi"</string>
-    <string name="voicemail_action_turn_archive_on" msgid="6008444955560830591">"Vula"</string>
-    <string name="voicemail_action_dimiss" msgid="6018415798136796966">"Cha ngiyabonga"</string>
-    <string name="voicemail_action_sync" msgid="5139315923415392787">"Vumelanisa"</string>
-    <string name="voicemail_action_call_voicemail" msgid="6701710720535556395">"Shayela ivoyisimeyili"</string>
-    <string name="voicemail_action_call_customer_support" msgid="7698973007656462748">"Shayela Ukwesekelwa Kwamakhasimende"</string>
-    <string name="vvm3_error_vms_dns_failure_title" msgid="7561818769198666727">"Kukhona okungahambanga kahle"</string>
-    <string name="vvm3_error_vms_dns_failure_message" msgid="4284259553458502369">"Uxolo, sihlangabezane nenkinga. Sicela uzame futhi emuva kwesikhathi. Uma kusesekhona inkinga, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9001."</string>
-    <string name="vvm3_error_vmg_dns_failure_title" msgid="6257196468618464574">"Kukhona okungahambanga kahle"</string>
-    <string name="vvm3_error_vmg_dns_failure_message" msgid="7110154996415009499">"Uxolo, sihlangabezane nenkinga. Sicela uzame futhi emuva kwesikhathi. Uma kusesekhona inkinga, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9002."</string>
-    <string name="vvm3_error_spg_dns_failure_title" msgid="8670172138011171697">"Kukhona okungahambanga kahle"</string>
-    <string name="vvm3_error_spg_dns_failure_message" msgid="6780011498675342391">"Uxolo, sihlangabezane nenkinga. Sicela uphinde uzame futhi emuva kwesikhathi. Uma kusese nenkinga, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9003."</string>
-    <string name="vvm3_error_vms_no_cellular_title" msgid="5402891018307856824">"Ayikwazi ukuxhumeka kubhokisi lakho lemeyili lezwi"</string>
-    <string name="vvm3_error_vms_no_cellular_message" msgid="6671769320769351896">"Uxolo, sinenkinga yokuxhumeka kubhokisi lemeyili lakho lezwi. Uma usendaweni enamandla esignali ebuthaka, linda uze ube nesignali eqinile uphinde uzame. Uma kusesekhona inkinga, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9004."</string>
-    <string name="vvm3_error_vmg_no_cellular_title" msgid="7974884412395827829">"Ayikwazi ukuxhumeka kubhokisi lakho lemeyili lezwi"</string>
-    <string name="vvm3_error_vmg_no_cellular_message" msgid="4591495395224161921">"Uxolo, sinenkinga yokuxhumeka kubhokisi lakho lemeyili lezwi. Uma usendaweni enamandla esignali antulayo, linda uze ube nesignali eqinile uphinde uzame futhi. Uma kusesekhona inkinga, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9005."</string>
-    <string name="vvm3_error_spg_no_cellular_title" msgid="8175349498869951939">"Ayikwazi ukuxhumeka kubhokisi lakho lemeyili lezwi"</string>
-    <string name="vvm3_error_spg_no_cellular_message" msgid="7902149969965747111">"Uxolo, sinenkinga yokuxhumeka kubhokisi lakho lemeyili lezwi. Uma usendaweni enamandla esignali antulayo, linda uze ube nesignali eqinile uphinde uzame futhi. Uma kusesekhona inkinga, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9006."</string>
-    <string name="vvm3_error_vms_timeout_title" msgid="4044531581957597519">"Kukhona okungahambanga kahle"</string>
-    <string name="vvm3_error_vms_timeout_message" msgid="2997890600174252849">"Uxolo, sihlangabezane nenkinga. Sicela uzame futhi emuva kwesikhathi. Uma kusesekhona inkinga, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9007."</string>
-    <string name="vvm3_error_vmg_timeout_title" msgid="2631426958078372779">"Kukhona okungahambanga kahle"</string>
-    <string name="vvm3_error_vmg_timeout_message" msgid="8366857300952305567">"Uxolo, sihlangabezane nenkinga. Sicela uzame futhi emuva kwesikhathi. Uma kusesekhona inkinga, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9008."</string>
-    <string name="vvm3_error_status_sms_timeout_title" msgid="6528532085593533049">"Kukhona okungahambanga kahle"</string>
-    <string name="vvm3_error_status_sms_timeout_message" msgid="9079367624352316780">"Uxolo, sinenkinga yokusetha isevisi yakho. Sicela uzame futhi emuva kwesikhathi. Uma kusesekhona inkinga, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9009."</string>
-    <string name="vvm3_error_subscriber_blocked_title" msgid="3650932081111129710">"Ayikwazi ukuxhumeka kubhokisi lakho lemeyili lezwi"</string>
-    <string name="vvm3_error_subscriber_blocked_message" msgid="5162479488602796264">"Uxolo, asikwazi ukuxhumeka kubhokisi lakho lemeyili lezwi ngalesi sikhathi. Sicela uzame futhi emuva kwesikhathi. Uma kusesekhona inkinga, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9990."</string>
-    <string name="vvm3_error_unknown_user_title" msgid="2667768481941705796">"Setha ivoyisimeyili"</string>
-    <string name="vvm3_error_unknown_user_message" msgid="1509539640475335686">"Ivoyisimeyili ayisethiwe ku-akhawunti yakho. Sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9991."</string>
-    <string name="vvm3_error_unknown_device_title" msgid="1759276751912714581">"Ivoyisimeyili"</string>
-    <string name="vvm3_error_unknown_device_message" msgid="3135004871983210946">"Ivoyisimeyili ebonakalayo ayikwazi ukuphinda isetshenziswe kule divayisi. Sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9992."</string>
-    <string name="vvm3_error_invalid_password_title" msgid="4552360498026788519">"Kukhona okungahambanga kahle"</string>
-    <string name="vvm3_error_invalid_password_message" msgid="7203223289526274700">"Sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9993."</string>
-    <string name="vvm3_error_mailbox_not_initialized_title" msgid="7764342270506951131">"Ivoyisimeyili ebonakalayo"</string>
-    <string name="vvm3_error_mailbox_not_initialized_message" msgid="362772845865359110">"Ukuze uqedele ukusethwa kwevoyisimeyili ebonakalayo, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9998."</string>
-    <string name="vvm3_error_service_not_provisioned_title" msgid="6061112314968583016">"Ivoyisimeyili ebonakalayo"</string>
-    <string name="vvm3_error_service_not_provisioned_message" msgid="543364752584952428">"Ukuze uqedele ukusethwa kwevoyisimeyili ebonakalayo, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9998."</string>
-    <string name="vvm3_error_service_not_activated_title" msgid="8083873030555985013">"Ivoyisimeyili ebonakalayo"</string>
-    <string name="vvm3_error_service_not_activated_message" msgid="6537476630560465297">"Ukuze wenze kusebenze imeyili yevoyisi ebonakalayo, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9996."</string>
-    <string name="vvm3_error_user_blocked_title" msgid="3182280563102274326">"Kukhona okungahambanga kahle"</string>
-    <string name="vvm3_error_user_blocked_message" msgid="562687121370364596">"Ukuze uqedele ukusethwa kwevoyisimeyili ebonakalayo, sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9998."</string>
-    <string name="vvm3_error_subscriber_unknown_title" msgid="2776762297746819776">"Ivoyisimeyili ebonakalayo ikhutshaziwe"</string>
-    <string name="vvm3_error_subscriber_unknown_message" msgid="7991526423950940698">"Sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> ukuze wenze kusebenze ivoyisimeyili ebonakalayo."</string>
-    <string name="vvm3_error_imap_getquota_error_title" msgid="2229474251543811881">"Kukhona okungahambanga kahle"</string>
-    <string name="vvm3_error_imap_getquota_error_message" msgid="4266777005393484563">"Sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9997."</string>
-    <string name="vvm3_error_imap_select_error_title" msgid="688468464562761731">"Kukhona okungahambanga kahle"</string>
-    <string name="vvm3_error_imap_select_error_message" msgid="7535508175537847085">"Sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9989."</string>
-    <string name="vvm3_error_imap_error_title" msgid="1952971680250515832">"Kukhona okungahambanga kahle"</string>
-    <string name="vvm3_error_imap_error_message" msgid="6668651261796655388">"Sicela uxhumane Nesevisi Yekhasimende ku-<xliff:g id="NUMBER">%1$s</xliff:g> uphinde ubatshele ukuthi ikhodi yephutha ngu-9999."</string>
-    <string name="verizon_terms_and_conditions_title" msgid="7885825788225936898">"Vula ivoyisimeyili yokubuka"</string>
-    <string name="verizon_terms_and_conditions_message" msgid="115838469000232781">"%1$s\n\nNgokuvula ivoyisimeyili yokubuka uyavumelana nemigomo nemibandela ye-Verizon Wireless:\n\n%2$s"</string>
-    <string name="dialer_terms_and_conditions_title" msgid="3861661058770826975">"Vula ivoyisimeyili yokubuka"</string>
-    <string name="dialer_terms_and_conditions_message" msgid="6207219973959897196">"%s"</string>
-    <string name="dialer_terms_and_conditions_1.0" msgid="9151400923645683073">"Bona futhi ulalele imilayezo yakho ngaphandle kokushayela ivoyisimeyili. Imibhalo yevoyisimeyili yakho inikezelwa yisevisi yokubhala emahhala ye-Google. %s"</string>
-    <string name="dialer_terms_and_conditions_for_verizon_1.0" msgid="4354228864875417888">"Bona futhi ulalele imilayezo yakho, ngaphandle kokushayela ivoyisimeyili. %s"</string>
-    <string name="dialer_terms_and_conditions_learn_more" msgid="658300158603798287">"Funda kabanzi"</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_message" msgid="7852059293806766767">"I-Visual voicemail izokhutshazwa uma imigomo nemibandela inqatshawa."</string>
-    <string name="verizon_terms_and_conditions_decline_dialog_downgrade" msgid="8347128304508008823">"Khubaza i-visual voicemail"</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_message" msgid="1726573227032877573">"Ukubhalwa kweviyisimeyili kuizokhutshazwa uma imigomo nemibandela inqatshawa."</string>
-    <string name="dialer_terms_and_conditions_decline_dialog_downgrade" msgid="6694612247173639685">"Khuyaza ukubhalwa kwevoyisimeyili"</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_message" msgid="2200388197966526000">"Ivoyisimeyili izofinyeleleka kuphela ngokushayela ku-*86. Setha iphinikhodi entsha yevoyisimeyili ukuze uqhubeke."</string>
-    <string name="verizon_terms_and_conditions_decline_set_pin_dialog_set_pin" msgid="4320664492466296770">"Setha iphinikhodi"</string>
-</resources>
diff --git a/java/com/android/dialer/app/widget/ActionBarController.java b/java/com/android/dialer/app/widget/ActionBarController.java
deleted file mode 100644
index 8ab57bc..0000000
--- a/java/com/android/dialer/app/widget/ActionBarController.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.app.widget;
-
-import android.animation.ValueAnimator;
-import android.os.Bundle;
-import com.android.dialer.animation.AnimUtils.AnimationCallback;
-import com.android.dialer.common.LogUtil;
-
-/**
- * Controls the various animated properties of the actionBar: showing/hiding, fading/revealing, and
- * collapsing/expanding, and assigns suitable properties to the actionBar based on the current state
- * of the UI.
- */
-public class ActionBarController {
-
-  private static final String KEY_IS_SLID_UP = "key_actionbar_is_slid_up";
-  private static final String KEY_IS_FADED_OUT = "key_actionbar_is_faded_out";
-  private static final String KEY_IS_EXPANDED = "key_actionbar_is_expanded";
-
-  private ActivityUi activityUi;
-  private SearchEditTextLayout searchBox;
-
-  private boolean isActionBarSlidUp;
-
-  private final AnimationCallback fadeOutCallback =
-      new AnimationCallback() {
-        @Override
-        public void onAnimationEnd() {
-          slideActionBar(true /* slideUp */, false /* animate */);
-        }
-
-        @Override
-        public void onAnimationCancel() {
-          slideActionBar(true /* slideUp */, false /* animate */);
-        }
-      };
-
-  private ValueAnimator animator;
-
-  public ActionBarController(ActivityUi activityUi, SearchEditTextLayout searchBox) {
-    this.activityUi = activityUi;
-    this.searchBox = searchBox;
-  }
-
-  /** @return Whether or not the action bar is currently showing (both slid down and visible) */
-  public boolean isActionBarShowing() {
-    return !isActionBarSlidUp && !searchBox.isFadedOut();
-  }
-
-  /** Called when the user has tapped on the collapsed search box, to start a new search query. */
-  public void onSearchBoxTapped() {
-    LogUtil.d("ActionBarController.onSearchBoxTapped", "isInSearchUi " + activityUi.isInSearchUi());
-    if (!activityUi.isInSearchUi()) {
-      searchBox.expand(true /* animate */, true /* requestFocus */);
-    }
-  }
-
-  /** Called when search UI has been exited for some reason. */
-  public void onSearchUiExited() {
-    LogUtil.d(
-        "ActionBarController.onSearchUIExited",
-        "isExpanded: %b, isFadedOut %b",
-        searchBox.isExpanded(),
-        searchBox.isFadedOut());
-    if (searchBox.isExpanded()) {
-      searchBox.collapse(true /* animate */);
-    }
-    if (searchBox.isFadedOut()) {
-      searchBox.fadeIn();
-    }
-
-    slideActionBar(false /* slideUp */, false /* animate */);
-  }
-
-  /**
-   * Called to indicate that the user is trying to hide the dialpad. Should be called before any
-   * state changes have actually occurred.
-   */
-  public void onDialpadDown() {
-    LogUtil.d(
-        "ActionBarController.onDialpadDown",
-        "isInSearchUi: %b, hasSearchQuery: %b, isFadedOut: %b, isExpanded: %b",
-        activityUi.isInSearchUi(),
-        activityUi.hasSearchQuery(),
-        searchBox.isFadedOut(),
-        searchBox.isExpanded());
-    if (activityUi.isInSearchUi()) {
-      if (searchBox.isFadedOut()) {
-        searchBox.setVisible(true);
-      }
-      if (!searchBox.isExpanded()) {
-        searchBox.expand(false /* animate */, false /* requestFocus */);
-      }
-      slideActionBar(false /* slideUp */, true /* animate */);
-    }
-  }
-
-  /**
-   * Called to indicate that the user is trying to show the dialpad. Should be called before any
-   * state changes have actually occurred.
-   */
-  public void onDialpadUp() {
-    LogUtil.d("ActionBarController.onDialpadUp", "isInSearchUi " + activityUi.isInSearchUi());
-    if (activityUi.isInSearchUi()) {
-      slideActionBar(true /* slideUp */, true /* animate */);
-    } else {
-      // From the lists fragment
-      searchBox.fadeOut(fadeOutCallback);
-    }
-  }
-
-  public void slideActionBar(boolean slideUp, boolean animate) {
-    LogUtil.d("ActionBarController.slidingActionBar", "up: %b, animate: %b", slideUp, animate);
-
-    if (animator != null && animator.isRunning()) {
-      animator.cancel();
-      animator.removeAllUpdateListeners();
-    }
-    if (animate) {
-      animator = slideUp ? ValueAnimator.ofFloat(0, 1) : ValueAnimator.ofFloat(1, 0);
-      animator.addUpdateListener(
-          animation -> {
-            final float value = (float) animation.getAnimatedValue();
-            setHideOffset((int) (activityUi.getActionBarHeight() * value));
-          });
-      animator.start();
-    } else {
-      setHideOffset(slideUp ? activityUi.getActionBarHeight() : 0);
-    }
-    isActionBarSlidUp = slideUp;
-  }
-
-  public void setAlpha(float alphaValue) {
-    searchBox.animate().alpha(alphaValue).start();
-  }
-
-  private void setHideOffset(int offset) {
-    activityUi.setActionBarHideOffset(offset);
-  }
-
-  /** Saves the current state of the action bar into a provided {@link Bundle} */
-  public void saveInstanceState(Bundle outState) {
-    outState.putBoolean(KEY_IS_SLID_UP, isActionBarSlidUp);
-    outState.putBoolean(KEY_IS_FADED_OUT, searchBox.isFadedOut());
-    outState.putBoolean(KEY_IS_EXPANDED, searchBox.isExpanded());
-  }
-
-  /** Restores the action bar state from a provided {@link Bundle}. */
-  public void restoreInstanceState(Bundle inState) {
-    isActionBarSlidUp = inState.getBoolean(KEY_IS_SLID_UP);
-
-    final boolean isSearchBoxFadedOut = inState.getBoolean(KEY_IS_FADED_OUT);
-    if (isSearchBoxFadedOut) {
-      if (!searchBox.isFadedOut()) {
-        searchBox.setVisible(false);
-      }
-    } else if (searchBox.isFadedOut()) {
-      searchBox.setVisible(true);
-    }
-
-    final boolean isSearchBoxExpanded = inState.getBoolean(KEY_IS_EXPANDED);
-    if (isSearchBoxExpanded) {
-      if (!searchBox.isExpanded()) {
-        searchBox.expand(false, false);
-      }
-    } else if (searchBox.isExpanded()) {
-      searchBox.collapse(false);
-    }
-  }
-
-  /**
-   * This should be called after onCreateOptionsMenu has been called, when the actionbar has been
-   * laid out and actually has a height.
-   */
-  public void restoreActionBarOffset() {
-    slideActionBar(isActionBarSlidUp /* slideUp */, false /* animate */);
-  }
-
-  public interface ActivityUi {
-
-    boolean isInSearchUi();
-
-    boolean hasSearchQuery();
-
-    int getActionBarHeight();
-
-    void setActionBarHideOffset(int offset);
-  }
-}
diff --git a/java/com/android/dialer/app/widget/DialpadSearchEmptyContentView.java b/java/com/android/dialer/app/widget/DialpadSearchEmptyContentView.java
index 5846b1f..e348102 100644
--- a/java/com/android/dialer/app/widget/DialpadSearchEmptyContentView.java
+++ b/java/com/android/dialer/app/widget/DialpadSearchEmptyContentView.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.content.Context;
 import android.view.LayoutInflater;
 import android.widget.LinearLayout;
+
 import com.android.dialer.app.R;
 import com.android.dialer.util.OrientationUtil;
 import com.android.dialer.widget.EmptyContentView;
diff --git a/java/com/android/dialer/app/widget/SearchEditTextLayout.java b/java/com/android/dialer/app/widget/SearchEditTextLayout.java
deleted file mode 100644
index 40189a8..0000000
--- a/java/com/android/dialer/app/widget/SearchEditTextLayout.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.app.widget;
-
-import android.animation.ValueAnimator;
-import android.animation.ValueAnimator.AnimatorUpdateListener;
-import android.content.Context;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.util.AttributeSet;
-import android.view.KeyEvent;
-import android.view.View;
-import android.widget.EditText;
-import android.widget.FrameLayout;
-import com.android.dialer.animation.AnimUtils;
-import com.android.dialer.app.R;
-import com.android.dialer.util.DialerUtils;
-
-public class SearchEditTextLayout extends FrameLayout {
-
-  private static final float EXPAND_MARGIN_FRACTION_START = 0.8f;
-  private static final int ANIMATION_DURATION = 200;
-  /* Subclass-visible for testing */
-  protected boolean isExpanded = false;
-  protected boolean isFadedOut = false;
-  private OnKeyListener preImeKeyListener;
-  private int topMargin;
-  private int bottomMargin;
-  private int leftMargin;
-  private int rightMargin;
-  private float collapsedElevation;
-  private View collapsed;
-  private View expanded;
-  private EditText searchView;
-  private View searchIcon;
-  private View collapsedSearchBox;
-  private View voiceSearchButtonView;
-  private View overflowButtonView;
-  private View clearButtonView;
-
-  private ValueAnimator animator;
-
-  private Callback callback;
-
-  private boolean voiceSearchEnabled;
-
-  public SearchEditTextLayout(Context context, AttributeSet attrs) {
-    super(context, attrs);
-  }
-
-  public void setPreImeKeyListener(OnKeyListener listener) {
-    preImeKeyListener = listener;
-  }
-
-  public void setCallback(Callback listener) {
-    callback = listener;
-  }
-
-  public void setVoiceSearchEnabled(boolean enabled) {
-    voiceSearchEnabled = enabled;
-    updateVisibility(isExpanded);
-  }
-
-  @Override
-  protected void onFinishInflate() {
-    MarginLayoutParams params = (MarginLayoutParams) getLayoutParams();
-    topMargin = params.topMargin;
-    bottomMargin = params.bottomMargin;
-    leftMargin = params.leftMargin;
-    rightMargin = params.rightMargin;
-
-    collapsedElevation = getElevation();
-
-    collapsed = findViewById(R.id.search_box_collapsed);
-    expanded = findViewById(R.id.search_box_expanded);
-    searchView = (EditText) expanded.findViewById(R.id.search_view);
-
-    searchIcon = findViewById(R.id.search_magnifying_glass);
-    collapsedSearchBox = findViewById(R.id.search_box_start_search);
-    voiceSearchButtonView = findViewById(R.id.voice_search_button);
-    overflowButtonView = findViewById(R.id.dialtacts_options_menu_button);
-    clearButtonView = findViewById(R.id.search_close_button);
-
-    // Convert a long click into a click to expand the search box. Touch events are also
-    // forwarded to the searchView. This accelerates the long-press scenario for copy/paste.
-    collapsed.setOnLongClickListener(
-        new OnLongClickListener() {
-          @Override
-          public boolean onLongClick(View view) {
-            collapsed.performClick();
-            return false;
-          }
-        });
-    collapsed.setOnTouchListener(
-        (v, event) -> {
-          searchView.onTouchEvent(event);
-          return false;
-        });
-
-    searchView.setOnFocusChangeListener(
-        new OnFocusChangeListener() {
-          @Override
-          public void onFocusChange(View v, boolean hasFocus) {
-            if (hasFocus) {
-              DialerUtils.showInputMethod(v);
-            } else {
-              DialerUtils.hideInputMethod(v);
-            }
-          }
-        });
-
-    searchView.setOnClickListener(
-        new View.OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            if (callback != null) {
-              callback.onSearchViewClicked();
-            }
-          }
-        });
-
-    searchView.addTextChangedListener(
-        new TextWatcher() {
-          @Override
-          public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
-
-          @Override
-          public void onTextChanged(CharSequence s, int start, int before, int count) {
-            clearButtonView.setVisibility(TextUtils.isEmpty(s) ? View.GONE : View.VISIBLE);
-          }
-
-          @Override
-          public void afterTextChanged(Editable s) {}
-        });
-
-    findViewById(R.id.search_close_button)
-        .setOnClickListener(
-            new OnClickListener() {
-              @Override
-              public void onClick(View v) {
-                searchView.setText(null);
-              }
-            });
-
-    findViewById(R.id.search_back_button)
-        .setOnClickListener(
-            new OnClickListener() {
-              @Override
-              public void onClick(View v) {
-                if (callback != null) {
-                  callback.onBackButtonClicked();
-                }
-              }
-            });
-
-    super.onFinishInflate();
-  }
-
-  @Override
-  public boolean dispatchKeyEventPreIme(KeyEvent event) {
-    if (preImeKeyListener != null) {
-      if (preImeKeyListener.onKey(this, event.getKeyCode(), event)) {
-        return true;
-      }
-    }
-    return super.dispatchKeyEventPreIme(event);
-  }
-
-  public void fadeOut() {
-    fadeOut(null);
-  }
-
-  public void fadeOut(AnimUtils.AnimationCallback callback) {
-    AnimUtils.fadeOut(this, ANIMATION_DURATION, callback);
-    isFadedOut = true;
-  }
-
-  public void fadeIn() {
-    AnimUtils.fadeIn(this, ANIMATION_DURATION);
-    isFadedOut = false;
-  }
-
-  public void fadeIn(AnimUtils.AnimationCallback callback) {
-    AnimUtils.fadeIn(this, ANIMATION_DURATION, AnimUtils.NO_DELAY, callback);
-    isFadedOut = false;
-  }
-
-  public void setVisible(boolean visible) {
-    if (visible) {
-      setAlpha(1);
-      setVisibility(View.VISIBLE);
-      isFadedOut = false;
-    } else {
-      setAlpha(0);
-      setVisibility(View.GONE);
-      isFadedOut = true;
-    }
-  }
-
-  public void expand(boolean animate, boolean requestFocus) {
-    updateVisibility(true /* isExpand */);
-
-    if (animate) {
-      AnimUtils.crossFadeViews(expanded, collapsed, ANIMATION_DURATION);
-      animator = ValueAnimator.ofFloat(EXPAND_MARGIN_FRACTION_START, 0f);
-      setMargins(EXPAND_MARGIN_FRACTION_START);
-      prepareAnimator();
-    } else {
-      expanded.setVisibility(View.VISIBLE);
-      expanded.setAlpha(1);
-      setMargins(0f);
-      collapsed.setVisibility(View.GONE);
-    }
-
-    // Set 9-patch background. This owns the padding, so we need to restore the original values.
-    int paddingTop = this.getPaddingTop();
-    int paddingStart = this.getPaddingStart();
-    int paddingBottom = this.getPaddingBottom();
-    int paddingEnd = this.getPaddingEnd();
-    setBackgroundResource(R.drawable.search_shadow);
-    setElevation(0);
-    setPaddingRelative(paddingStart, paddingTop, paddingEnd, paddingBottom);
-
-    if (requestFocus) {
-      searchView.requestFocus();
-    }
-    isExpanded = true;
-  }
-
-  public void collapse(boolean animate) {
-    updateVisibility(false /* isExpand */);
-
-    if (animate) {
-      AnimUtils.crossFadeViews(collapsed, expanded, ANIMATION_DURATION);
-      animator = ValueAnimator.ofFloat(0f, 1f);
-      prepareAnimator();
-    } else {
-      collapsed.setVisibility(View.VISIBLE);
-      collapsed.setAlpha(1);
-      setMargins(1f);
-      expanded.setVisibility(View.GONE);
-    }
-
-    isExpanded = false;
-    setElevation(collapsedElevation);
-    setBackgroundResource(R.drawable.rounded_corner);
-  }
-
-  /**
-   * Updates the visibility of views depending on whether we will show the expanded or collapsed
-   * search view. This helps prevent some jank with the crossfading if we are animating.
-   *
-   * @param isExpand Whether we are about to show the expanded search box.
-   */
-  private void updateVisibility(boolean isExpand) {
-    int collapsedViewVisibility = isExpand ? View.GONE : View.VISIBLE;
-    int expandedViewVisibility = isExpand ? View.VISIBLE : View.GONE;
-
-    searchIcon.setVisibility(collapsedViewVisibility);
-    collapsedSearchBox.setVisibility(collapsedViewVisibility);
-    if (voiceSearchEnabled) {
-      voiceSearchButtonView.setVisibility(collapsedViewVisibility);
-    } else {
-      voiceSearchButtonView.setVisibility(View.GONE);
-    }
-    overflowButtonView.setVisibility(collapsedViewVisibility);
-    // TODO: Prevents keyboard from jumping up in landscape mode after exiting the
-    // SearchFragment when the query string is empty. More elegant fix?
-    // mExpandedSearchBox.setVisibility(expandedViewVisibility);
-    if (TextUtils.isEmpty(searchView.getText())) {
-      clearButtonView.setVisibility(View.GONE);
-    } else {
-      clearButtonView.setVisibility(expandedViewVisibility);
-    }
-  }
-
-  private void prepareAnimator() {
-    if (animator != null) {
-      animator.cancel();
-    }
-
-    animator.addUpdateListener(
-        new AnimatorUpdateListener() {
-          @Override
-          public void onAnimationUpdate(ValueAnimator animation) {
-            final Float fraction = (Float) animation.getAnimatedValue();
-            setMargins(fraction);
-          }
-        });
-
-    animator.setDuration(ANIMATION_DURATION);
-    animator.start();
-  }
-
-  public boolean isExpanded() {
-    return isExpanded;
-  }
-
-  public boolean isFadedOut() {
-    return isFadedOut;
-  }
-
-  /**
-   * Assigns margins to the search box as a fraction of its maximum margin size
-   *
-   * @param fraction How large the margins should be as a fraction of their full size
-   */
-  private void setMargins(float fraction) {
-    MarginLayoutParams params = (MarginLayoutParams) getLayoutParams();
-    params.topMargin = (int) (topMargin * fraction);
-    params.bottomMargin = (int) (bottomMargin * fraction);
-    params.leftMargin = (int) (leftMargin * fraction);
-    params.rightMargin = (int) (rightMargin * fraction);
-    requestLayout();
-  }
-
-  /** Listener for the back button next to the search view being pressed */
-  public interface Callback {
-
-    void onBackButtonClicked();
-
-    void onSearchViewClicked();
-  }
-}
diff --git a/java/com/android/dialer/assisteddialing/AndroidManifest.xml b/java/com/android/dialer/assisteddialing/AndroidManifest.xml
deleted file mode 100644
index 6b44f1b..0000000
--- a/java/com/android/dialer/assisteddialing/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.assisteddialing">
-
-  <uses-sdk
-      android:minSdkVersion="24"
-      android:targetSdkVersion="30"/>
-
-</manifest>
diff --git a/java/com/android/dialer/assisteddialing/AssistedDialingMediator.java b/java/com/android/dialer/assisteddialing/AssistedDialingMediator.java
index 6715e2b..7e25d27 100644
--- a/java/com/android/dialer/assisteddialing/AssistedDialingMediator.java
+++ b/java/com/android/dialer/assisteddialing/AssistedDialingMediator.java
@@ -16,7 +16,8 @@
 
 package com.android.dialer.assisteddialing;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
+
 import java.util.Optional;
 
 /** The core interface for the AssistedDialingMediator. */
diff --git a/java/com/android/dialer/assisteddialing/AssistedDialingMediatorImpl.java b/java/com/android/dialer/assisteddialing/AssistedDialingMediatorImpl.java
index 7fdb8da..5442e66 100644
--- a/java/com/android/dialer/assisteddialing/AssistedDialingMediatorImpl.java
+++ b/java/com/android/dialer/assisteddialing/AssistedDialingMediatorImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,10 @@
 
 package com.android.dialer.assisteddialing;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.LogUtil;
+
 import java.util.Optional;
 
 /**
@@ -32,8 +35,8 @@
   private final LocationDetector locationDetector;
   private final NumberTransformer numberTransformer;
 
-  AssistedDialingMediatorImpl(
-      @NonNull LocationDetector locationDetector, @NonNull NumberTransformer numberTransformer) {
+  AssistedDialingMediatorImpl(@NonNull LocationDetector locationDetector,
+                              @NonNull NumberTransformer numberTransformer) {
     if (locationDetector == null) {
       throw new NullPointerException("locationDetector was null");
     }
diff --git a/java/com/android/dialer/assisteddialing/AssistedDialingMediatorStub.java b/java/com/android/dialer/assisteddialing/AssistedDialingMediatorStub.java
index cb3ca79..8862933 100644
--- a/java/com/android/dialer/assisteddialing/AssistedDialingMediatorStub.java
+++ b/java/com/android/dialer/assisteddialing/AssistedDialingMediatorStub.java
@@ -16,7 +16,8 @@
 
 package com.android.dialer.assisteddialing;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
+
 import java.util.Optional;
 
 /** A stub assisted dialing implementation. */
diff --git a/java/com/android/dialer/assisteddialing/ConcreteCreator.java b/java/com/android/dialer/assisteddialing/ConcreteCreator.java
index b4f926d..39158dd 100644
--- a/java/com/android/dialer/assisteddialing/ConcreteCreator.java
+++ b/java/com/android/dialer/assisteddialing/ConcreteCreator.java
@@ -16,17 +16,6 @@
 
 package com.android.dialer.assisteddialing;
 
-import android.content.Context;
-import android.os.Build;
-import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
-import android.support.v4.os.UserManagerCompat;
-import android.telephony.TelephonyManager;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProvider;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.strictmode.StrictModeUtils;
-
 /**
  * A Creator for AssistedDialingMediators.
  *
@@ -35,84 +24,19 @@
  */
 public final class ConcreteCreator {
 
-  // Ceiling set at P (version code 28) because this feature will ship as part of the framework in
-  // Q.
-  public static final int BUILD_CODE_CEILING = 28;
-
   /**
    * Creates a new AssistedDialingMediator
    *
-   * @param telephonyManager The telephony manager used to determine user location.
-   * @param context The context used to determine whether or not a provided number is an emergency
-   *     number.
    * @return An AssistedDialingMediator
    */
-  public static AssistedDialingMediator createNewAssistedDialingMediator(
-      @NonNull TelephonyManager telephonyManager, @NonNull Context context) {
-
-    ConfigProvider configProvider = ConfigProviderComponent.get(context).getConfigProvider();
-
-    if (telephonyManager == null) {
-      LogUtil.i(
-          "ConcreteCreator.createNewAssistedDialingMediator", "provided TelephonyManager was null");
-      throw new NullPointerException("Provided TelephonyManager was null");
-    }
-    if (context == null) {
-      LogUtil.i("ConcreteCreator.createNewAssistedDialingMediator", "provided context was null");
-      throw new NullPointerException("Provided context was null");
-    }
-
-    if (!UserManagerCompat.isUserUnlocked(context)) {
-      // To avoid any issues reading preferences, we disable the feature when the user is in a
-      // locked state.
-      LogUtil.i("ConcreteCreator.createNewAssistedDialingMediator", "user is locked");
-      return new AssistedDialingMediatorStub();
-    }
-
-    if (!isAssistedDialingEnabled(configProvider)) {
-      LogUtil.i("ConcreteCreator.createNewAssistedDialingMediator", "feature not enabled");
-      return new AssistedDialingMediatorStub();
-    }
-
-    if (!PreferenceManager.getDefaultSharedPreferences(context)
-        .getBoolean(context.getString(R.string.assisted_dialing_setting_toggle_key), true)) {
-      LogUtil.i("ConcreteCreator.createNewAssistedDialingMediator", "disabled by local setting");
-
-      return new AssistedDialingMediatorStub();
-    }
-
-    Constraints constraints = new Constraints(context, getCountryCodeProvider(configProvider));
-    return new AssistedDialingMediatorImpl(
-        new LocationDetector(
-            telephonyManager,
-            StrictModeUtils.bypass(
-                () ->
-                    PreferenceManager.getDefaultSharedPreferences(context)
-                        .getString(
-                            context.getString(R.string.assisted_dialing_setting_cc_key), null))),
-        new NumberTransformer(constraints));
-  }
-
-  /** Returns a boolean indicating whether or not the assisted dialing feature is enabled. */
-  public static boolean isAssistedDialingEnabled(@NonNull ConfigProvider configProvider) {
-    if (configProvider == null) {
-      LogUtil.i("ConcreteCreator.isAssistedDialingEnabled", "provided configProvider was null");
-      throw new NullPointerException("Provided configProvider was null");
-    }
-
-    return Build.VERSION.SDK_INT <= BUILD_CODE_CEILING
-        && configProvider.getBoolean("assisted_dialing_enabled", false);
+  public static AssistedDialingMediator createNewAssistedDialingMediator() {
+    return new AssistedDialingMediatorStub();
   }
 
   /**
    * Returns a CountryCodeProvider responsible for providing countries eligible for assisted Dialing
    */
-  public static CountryCodeProvider getCountryCodeProvider(ConfigProvider configProvider) {
-    if (configProvider == null) {
-      LogUtil.i("ConcreteCreator.getCountryCodeProvider", "provided configProvider was null");
-      throw new NullPointerException("Provided configProvider was null");
-    }
-
-    return new CountryCodeProvider(configProvider);
+  public static CountryCodeProvider getCountryCodeProvider() {
+    return new CountryCodeProvider();
   }
 }
diff --git a/java/com/android/dialer/assisteddialing/Constraints.java b/java/com/android/dialer/assisteddialing/Constraints.java
index 41a3e92..5b95517 100644
--- a/java/com/android/dialer/assisteddialing/Constraints.java
+++ b/java/com/android/dialer/assisteddialing/Constraints.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,18 +18,17 @@
 package com.android.dialer.assisteddialing;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.google.i18n.phonenumbers.NumberParseException;
 import com.google.i18n.phonenumbers.PhoneNumberUtil;
 import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
 import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber.CountryCodeSource;
+
 import java.util.Locale;
 import java.util.Optional;
 
@@ -55,7 +55,7 @@
     }
 
     this.countryCodeProvider = countryCodeProvider;
-    this.phoneNumberUtil = StrictModeUtils.bypass(() -> PhoneNumberUtil.getInstance());
+    this.phoneNumberUtil = PhoneNumberUtil.getInstance();
   }
 
   /**
@@ -144,18 +144,13 @@
    */
   private Optional<PhoneNumber> parsePhoneNumber(
       @NonNull String numberToParse, @NonNull String userHomeCountryCode) {
-    return StrictModeUtils.bypass(
-        () -> {
-          try {
-            return Optional.of(
-                phoneNumberUtil.parseAndKeepRawInput(numberToParse, userHomeCountryCode));
-          } catch (NumberParseException e) {
-            Logger.get(context)
-                .logImpression(DialerImpression.Type.ASSISTED_DIALING_CONSTRAINT_PARSING_FAILURE);
-            LogUtil.i("Constraints.parsePhoneNumber", "could not parse the number");
-            return Optional.empty();
-          }
-        });
+    try {
+      return Optional.of(
+          phoneNumberUtil.parseAndKeepRawInput(numberToParse, userHomeCountryCode));
+    } catch (NumberParseException e) {
+      LogUtil.i("Constraints.parsePhoneNumber", "could not parse the number");
+      return Optional.empty();
+    }
   }
 
   /** Returns a boolean indicating if the provided number is already internationally formatted. */
@@ -164,8 +159,6 @@
     if (parsedPhoneNumber.get().hasCountryCode()
         && parsedPhoneNumber.get().getCountryCodeSource()
             != CountryCodeSource.FROM_DEFAULT_COUNTRY) {
-      Logger.get(context)
-          .logImpression(DialerImpression.Type.ASSISTED_DIALING_CONSTRAINT_NUMBER_HAS_COUNTRY_CODE);
       LogUtil.i(
           "Constraints.isNotInternationalNumber", "phone number already provided the country code");
       return false;
@@ -183,8 +176,6 @@
 
     if (parsedPhoneNumber.get().hasExtension()
         && !TextUtils.isEmpty(parsedPhoneNumber.get().getExtension())) {
-      Logger.get(context)
-          .logImpression(DialerImpression.Type.ASSISTED_DIALING_CONSTRAINT_NUMBER_HAS_EXTENSION);
       LogUtil.i("Constraints.doesNotHaveExtension", "phone number has an extension");
       return false;
     }
@@ -193,8 +184,7 @@
 
   /** Returns a boolean indicating if the provided number is considered to be a valid number. */
   private boolean isValidNumber(@NonNull Optional<PhoneNumber> parsedPhoneNumber) {
-    boolean result =
-        StrictModeUtils.bypass(() -> phoneNumberUtil.isValidNumber(parsedPhoneNumber.get()));
+    boolean result = phoneNumberUtil.isValidNumber(parsedPhoneNumber.get());
     LogUtil.i("Constraints.isValidNumber", String.valueOf(result));
 
     return result;
@@ -204,9 +194,7 @@
   private boolean isNotEmergencyNumber(@NonNull String numberToCheck, @NonNull Context context) {
     // isEmergencyNumber may depend on network state, so also use isLocalEmergencyNumber when
     // roaming and out of service.
-    boolean result =
-        !PhoneNumberUtils.isEmergencyNumber(numberToCheck)
-            && !PhoneNumberHelper.isLocalEmergencyNumber(context, numberToCheck);
+    boolean result = !PhoneNumberHelper.isEmergencyNumber(context, numberToCheck);
     LogUtil.i("Constraints.isNotEmergencyNumber", String.valueOf(result));
     return result;
   }
diff --git a/java/com/android/dialer/assisteddialing/CountryCodeProvider.java b/java/com/android/dialer/assisteddialing/CountryCodeProvider.java
index 04b2291..7099cd6 100644
--- a/java/com/android/dialer/assisteddialing/CountryCodeProvider.java
+++ b/java/com/android/dialer/assisteddialing/CountryCodeProvider.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,17 +17,14 @@
 
 package com.android.dialer.assisteddialing;
 
-import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
 import android.util.ArraySet;
+
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProvider;
-import java.util.ArrayList;
+
 import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
-import java.util.StringTokenizer;
 import java.util.stream.Collectors;
 
 /** A class to provide the appropriate country codes related to assisted dialing. */
@@ -35,8 +33,7 @@
   // TODO(erfanian): Ensure the below standard is consistent between libphonenumber and the
   // platform.
   // ISO 3166-1 alpha-2 Country Codes that are eligible for assisted dialing.
-  @VisibleForTesting
-  static final List<String> DEFAULT_COUNTRY_CODES =
+  private static final List<String> DEFAULT_COUNTRY_CODES =
       Arrays.asList(
           "CA" /* Canada */,
           "GB" /* United Kingdom */,
@@ -46,10 +43,8 @@
 
   private final Set<String> supportedCountryCodes;
 
-  CountryCodeProvider(ConfigProvider configProvider) {
-    supportedCountryCodes =
-        parseConfigProviderCountryCodes(
-                configProvider.getString("assisted_dialing_csv_country_codes", ""))
+  CountryCodeProvider() {
+    supportedCountryCodes = DEFAULT_COUNTRY_CODES
             .stream()
             .map(v -> v.toUpperCase(Locale.US))
             .collect(Collectors.toCollection(ArraySet::new));
@@ -61,43 +56,4 @@
   public boolean isSupportedCountryCode(String countryCode) {
     return supportedCountryCodes.contains(countryCode);
   }
-
-  private List<String> parseConfigProviderCountryCodes(String configProviderCountryCodes) {
-    if (TextUtils.isEmpty(configProviderCountryCodes)) {
-      LogUtil.i(
-          "Constraints.parseConfigProviderCountryCodes",
-          "configProviderCountryCodes was empty, returning default");
-      return DEFAULT_COUNTRY_CODES;
-    }
-
-    StringTokenizer tokenizer = new StringTokenizer(configProviderCountryCodes, ",");
-
-    if (tokenizer.countTokens() < 1) {
-      LogUtil.i(
-          "Constraints.parseConfigProviderCountryCodes", "insufficient provided country codes");
-      return DEFAULT_COUNTRY_CODES;
-    }
-
-    List<String> parsedCountryCodes = new ArrayList<>();
-    while (tokenizer.hasMoreTokens()) {
-      String foundLocale = tokenizer.nextToken();
-      if (foundLocale == null) {
-        LogUtil.i(
-            "Constraints.parseConfigProviderCountryCodes",
-            "Unexpected empty value, returning default.");
-        return DEFAULT_COUNTRY_CODES;
-      }
-
-      if (foundLocale.length() != 2) {
-        LogUtil.i(
-            "Constraints.parseConfigProviderCountryCodes",
-            "Unexpected locale %s, returning default",
-            foundLocale);
-        return DEFAULT_COUNTRY_CODES;
-      }
-
-      parsedCountryCodes.add(foundLocale);
-    }
-    return parsedCountryCodes;
-  }
 }
diff --git a/java/com/android/dialer/assisteddialing/LocationDetector.java b/java/com/android/dialer/assisteddialing/LocationDetector.java
index 9fa9441..51dd182 100644
--- a/java/com/android/dialer/assisteddialing/LocationDetector.java
+++ b/java/com/android/dialer/assisteddialing/LocationDetector.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +17,14 @@
 
 package com.android.dialer.assisteddialing;
 
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
+
 import java.util.Locale;
 import java.util.Optional;
 
@@ -35,7 +39,7 @@
   private final String userProvidedHomeCountry;
 
   LocationDetector(
-      @NonNull TelephonyManager telephonyManager, @Nullable String userProvidedHomeCountry) {
+          @NonNull TelephonyManager telephonyManager, @Nullable String userProvidedHomeCountry) {
     if (telephonyManager == null) {
       throw new NullPointerException("Provided TelephonyManager was null");
     }
diff --git a/java/com/android/dialer/assisteddialing/NumberTransformer.java b/java/com/android/dialer/assisteddialing/NumberTransformer.java
index eabf856..26b25a5 100644
--- a/java/com/android/dialer/assisteddialing/NumberTransformer.java
+++ b/java/com/android/dialer/assisteddialing/NumberTransformer.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,11 +18,12 @@
 package com.android.dialer.assisteddialing;
 
 import android.text.TextUtils;
+
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.google.i18n.phonenumbers.NumberParseException;
 import com.google.i18n.phonenumbers.PhoneNumberUtil;
 import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
 import java.util.Optional;
 
 /** Responsible for transforming numbers to make them dialable and valid when roaming. */
@@ -32,7 +34,7 @@
 
   NumberTransformer(Constraints constraints) {
     this.constraints = constraints;
-    this.phoneNumberUtil = StrictModeUtils.bypass(PhoneNumberUtil::getInstance);
+    this.phoneNumberUtil = PhoneNumberUtil.getInstance();
   }
 
   /**
@@ -53,27 +55,21 @@
       return Optional.empty();
     }
 
-    PhoneNumber phoneNumber =
-        StrictModeUtils.bypass(
-            () -> {
-              try {
-                return phoneNumberUtil.parse(numbertoTransform, userHomeCountryCode);
-              } catch (NumberParseException e) {
-                LogUtil.i(
-                    "NumberTransformer.doAssistedDialingTransformation", "number failed to parse");
-                return null;
-              }
-            });
+    PhoneNumber phoneNumber;
+    try {
+      phoneNumber = phoneNumberUtil.parse(numbertoTransform, userHomeCountryCode);
+    } catch (NumberParseException e) {
+      LogUtil.i(
+          "NumberTransformer.doAssistedDialingTransformation", "number failed to parse");
+      phoneNumber = null;
+    }
 
     if (phoneNumber == null) {
       return Optional.empty();
     }
 
-    String transformedNumber =
-        StrictModeUtils.bypass(
-            () ->
-                phoneNumberUtil.formatNumberForMobileDialing(
-                    phoneNumber, userRoamingCountryCode, true));
+    String transformedNumber = phoneNumberUtil.formatNumberForMobileDialing(
+            phoneNumber, userRoamingCountryCode, true);
 
     // formatNumberForMobileDialing may return an empty String.
     if (TextUtils.isEmpty(transformedNumber)) {
diff --git a/java/com/android/dialer/assisteddialing/TransformationInfo.java b/java/com/android/dialer/assisteddialing/TransformationInfo.java
index de8f27d..af54092 100644
--- a/java/com/android/dialer/assisteddialing/TransformationInfo.java
+++ b/java/com/android/dialer/assisteddialing/TransformationInfo.java
@@ -17,7 +17,9 @@
 package com.android.dialer.assisteddialing;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
 import com.google.auto.value.AutoValue;
 
 /**
@@ -26,7 +28,8 @@
  */
 @AutoValue
 public abstract class TransformationInfo {
-  @NonNull private static final String ORIGINAL_NUBMER_KEY = "TRANSFORMATION_INFO_ORIGINAL_NUMBER";
+  @NonNull
+  private static final String ORIGINAL_NUBMER_KEY = "TRANSFORMATION_INFO_ORIGINAL_NUMBER";
 
   @NonNull
   private static final String TRANSFORMED_NUMBER_KEY = "TRANSFORMATION_INFO_TRANSFORMED_NUMBER";
diff --git a/java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml b/java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml
deleted file mode 100644
index fb6e305..0000000
--- a/java/com/android/dialer/assisteddialing/ui/AndroidManifest.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.assisteddialing.ui">
-
-  <uses-sdk
-      android:minSdkVersion="24"
-      android:targetSdkVersion="30"/>
-
-  <application>
-    <activity
-        android:label="@string/assisted_dialing_setting_title"
-        android:name=".AssistedDialingSettingActivity"
-        android:parentActivityName="com.android.dialer.app.settings.DialerSettingsActivity"
-        android:exported="true"
-        android:theme="@style/SettingsStyle">
-      <intent-filter>
-        <action android:name="com.android.dialer.app.settings.SHOW_ASSISTED_DIALING_SETTINGS"/>
-        <category android:name="android.intent.category.DEFAULT"/>
-      </intent-filter>
-    </activity>
-  </application>
-
-</manifest>
diff --git a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingActivity.java b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingActivity.java
index ca36745..48410b0 100644
--- a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingActivity.java
+++ b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,10 @@
 package com.android.dialer.assisteddialing.ui;
 
 import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
 import android.view.MenuItem;
 
+import androidx.appcompat.app.AppCompatActivity;
+
 /** The Settings Activity for Assisted Dialing. */
 public class AssistedDialingSettingActivity extends AppCompatActivity {
 
@@ -27,7 +29,7 @@
   protected void onCreate(Bundle bundle) {
     super.onCreate(bundle);
 
-    getFragmentManager()
+    getSupportFragmentManager()
         .beginTransaction()
         .replace(android.R.id.content, new AssistedDialingSettingFragment())
         .commit();
diff --git a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
index 2da2528..082936e 100644
--- a/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
+++ b/java/com/android/dialer/assisteddialing/ui/AssistedDialingSettingFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,25 +19,25 @@
 import android.icu.util.ULocale;
 import android.icu.util.ULocale.Builder;
 import android.os.Bundle;
-import android.preference.ListPreference;
-import android.preference.Preference;
-import android.preference.PreferenceFragment;
-import android.preference.SwitchPreference;
-import android.telephony.TelephonyManager;
+
+import androidx.annotation.Nullable;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.android.dialer.R;
 import com.android.dialer.assisteddialing.AssistedDialingMediator;
 import com.android.dialer.assisteddialing.ConcreteCreator;
 import com.android.dialer.assisteddialing.CountryCodeProvider;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.google.auto.value.AutoValue;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 
 /** The setting for Assisted Dialing */
-public class AssistedDialingSettingFragment extends PreferenceFragment {
+public class AssistedDialingSettingFragment extends PreferenceFragmentCompat {
 
   private CountryCodeProvider countryCodeProvider;
   private AssistedDialingMediator assistedDialingMediator;
@@ -61,29 +62,22 @@
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
 
-    assistedDialingMediator =
-        ConcreteCreator.createNewAssistedDialingMediator(
-            getContext().getSystemService(TelephonyManager.class), getContext());
+    assistedDialingMediator = ConcreteCreator.createNewAssistedDialingMediator();
+    countryCodeProvider = ConcreteCreator.getCountryCodeProvider();
+  }
 
-    countryCodeProvider =
-        ConcreteCreator.getCountryCodeProvider(
-            ConfigProviderComponent.get(getContext()).getConfigProvider());
-
+  @Override
+  public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
     // Load the preferences from an XML resource
     addPreferencesFromResource(R.xml.assisted_dialing_setting);
-    SwitchPreference switchPref =
-        (SwitchPreference)
-            findPreference(getContext().getString(R.string.assisted_dialing_setting_toggle_key));
 
     ListPreference countryChooserPref =
-        (ListPreference)
             findPreference(getContext().getString(R.string.assisted_dialing_setting_cc_key));
 
     updateCountryChoices(countryChooserPref);
     updateCountryChooserSummary(countryChooserPref);
 
     countryChooserPref.setOnPreferenceChangeListener(this::updateListSummary);
-    switchPref.setOnPreferenceChangeListener(this::logIfUserDisabledFeature);
   }
 
   private void updateCountryChooserSummary(ListPreference countryChooserPref) {
@@ -135,8 +129,8 @@
       }
     }
 
-    countryChooserPref.setEntries(newKeys.toArray(new CharSequence[newKeys.size()]));
-    countryChooserPref.setEntryValues(newValues.toArray(new CharSequence[newValues.size()]));
+    countryChooserPref.setEntries(newKeys.toArray(new CharSequence[0]));
+    countryChooserPref.setEntryValues(newValues.toArray(new CharSequence[0]));
 
     if (!newValues.contains(countryChooserPref.getValue())) {
       ameliorateInvalidSelectedValue(countryChooserPref);
@@ -195,13 +189,4 @@
     listPref.setSummary(entries[listPref.findIndexOfValue(newValue.toString())]);
     return true;
   }
-
-  boolean logIfUserDisabledFeature(Preference pref, Object newValue) {
-    if (!((boolean) newValue)) {
-      Logger.get(getActivity().getApplicationContext())
-          .logImpression(DialerImpression.Type.ASSISTED_DIALING_FEATURE_DISABLED_BY_USER);
-    }
-
-    return true;
-  }
 }
diff --git a/java/com/android/dialer/assisteddialing/ui/res/xml/assisted_dialing_setting.xml b/java/com/android/dialer/assisteddialing/ui/res/xml/assisted_dialing_setting.xml
index 9fb61a1..d7a0d8d 100644
--- a/java/com/android/dialer/assisteddialing/ui/res/xml/assisted_dialing_setting.xml
+++ b/java/com/android/dialer/assisteddialing/ui/res/xml/assisted_dialing_setting.xml
@@ -1,5 +1,6 @@
 <!--
   ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -17,7 +18,7 @@
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android">
 
-  <SwitchPreference
+  <SwitchPreferenceCompat
       android:defaultValue="true"
       android:key="@string/assisted_dialing_setting_toggle_key"
       android:summary="@string/assisted_dialing_setting_summary"
diff --git a/java/com/android/dialer/backup/AndroidManifest.xml b/java/com/android/dialer/backup/AndroidManifest.xml
deleted file mode 100644
index 84992c0..0000000
--- a/java/com/android/dialer/backup/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.backup">
-
-
-  <!-- Android backup service key -->
-  <!-- https://developer.android.com/google/backup/signup.html -->
-  <meta-data
-      android:name="com.google.android.backup.api_key"
-      android:value="AEdPqrEAAAAIn3-Y3JKit1mrzfvcdbVhUiJn2ICtKfhGYLy0Bg"/>
-</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/backup/DialerPersistentBackupAgent.java b/java/com/android/dialer/backup/DialerPersistentBackupAgent.java
deleted file mode 100644
index 18cb084..0000000
--- a/java/com/android/dialer/backup/DialerPersistentBackupAgent.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.dialer.backup;
-
-import android.app.backup.BackupDataInput;
-import android.app.backup.BackupDataOutput;
-import android.os.ParcelFileDescriptor;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.util.ArrayMap;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.google.android.libraries.backup.BackupKeyPredicate;
-import com.google.android.libraries.backup.BackupKeyPredicates;
-import com.google.android.libraries.backup.PersistentBackupAgentHelper;
-import java.io.IOException;
-import java.util.Map;
-
-/** Implementation of Key/Value Backup that powers Dialer's backup and restore. */
-public class DialerPersistentBackupAgent extends PersistentBackupAgentHelper {
-
-  private static final String[] BACKUP_NAMED_SHARED_PREFS = {
-    "com.google.android.dialer_preferences", "com.google.android.dialer", "com.android.dialer"
-  };
-
-  @NonNull private final String[] sharedPreferencesToBackup;
-
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  DialerPersistentBackupAgent(@NonNull String[] sharedPrefs) {
-    this.sharedPreferencesToBackup = Assert.isNotNull(sharedPrefs);
-    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_BACKUP_AGENT_CONSTRUCTOR);
-  }
-
-  public DialerPersistentBackupAgent() {
-    this(BACKUP_NAMED_SHARED_PREFS);
-  }
-
-  @Override
-  public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor stateFile)
-      throws IOException {
-    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_RESTORE);
-    LogUtil.i("DialerPersistentBackupAgent.onRestore", "restore from version: " + appVersionCode);
-    super.onRestore(data, appVersionCode, stateFile);
-  }
-
-  @Override
-  public void onBackup(
-      ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)
-      throws IOException {
-    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_BACKUP);
-    LogUtil.i("DialerPersistentBackupAgent.onBackup", "onBackup being performed");
-    super.onBackup(oldState, data, newState);
-  }
-
-  @Override
-  public Map<String, BackupKeyPredicate> getBackupSpecification() {
-    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_GET_BACKUP_SPECIFICATION);
-    LogUtil.i(
-        "DialerPersistentBackupAgent.getBackupSpecification",
-        "number of files being backed up: " + sharedPreferencesToBackup.length);
-
-    Map<String, BackupKeyPredicate> arrayMap = new ArrayMap<>();
-    for (String fileName : sharedPreferencesToBackup) {
-      LogUtil.i("DialerPersistentBackupAgent.getBackupSpecification", "arrayMap.put: " + fileName);
-      arrayMap.put(fileName, BackupKeyPredicates.alwaysTrue());
-    }
-
-    return arrayMap;
-  }
-
-  @Override
-  public void onRestoreFinished() {
-    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_RESTORE_FINISHED);
-    super.onRestoreFinished();
-  }
-}
diff --git a/java/com/android/dialer/binary/aosp/AospDialerApplication.java b/java/com/android/dialer/binary/aosp/AospDialerApplication.java
index 4ca94e2..8b2774e 100644
--- a/java/com/android/dialer/binary/aosp/AospDialerApplication.java
+++ b/java/com/android/dialer/binary/aosp/AospDialerApplication.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,15 +17,33 @@
 
 package com.android.dialer.binary.aosp;
 
-import android.support.annotation.NonNull;
+import android.content.Context;
+import android.net.Uri;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.contacts.common.extensions.PhoneDirectoryExtender;
+import com.android.contacts.common.extensions.PhoneDirectoryExtenderFactory;
 import com.android.dialer.binary.common.DialerApplication;
 import com.android.dialer.inject.ContextModule;
+import com.android.dialer.lookup.LookupCacheService;
+import com.android.dialer.lookup.LookupProvider;
+import com.android.dialer.lookup.LookupSettings;
+import com.android.dialer.lookup.ReverseLookupService;
+import com.android.dialer.phonenumbercache.PhoneNumberCacheBindings;
+import com.android.dialer.phonenumbercache.PhoneNumberCacheBindingsFactory;
+import com.android.incallui.bindings.InCallUiBindings;
+import com.android.incallui.bindings.InCallUiBindingsFactory;
+import com.android.incallui.bindings.InCallUiBindingsStub;
+import com.android.incallui.bindings.PhoneNumberService;
 
 /**
  * The application class for the AOSP Dialer. This is a version of the Dialer app that has no
  * dependency on Google Play Services.
  */
-public class AospDialerApplication extends DialerApplication {
+public class AospDialerApplication extends DialerApplication implements
+    PhoneNumberCacheBindingsFactory, PhoneDirectoryExtenderFactory, InCallUiBindingsFactory {
 
   /** Returns a new instance of the root component for the AOSP Dialer. */
   @Override
@@ -32,4 +51,36 @@
   protected Object buildRootComponent() {
     return DaggerAospDialerRootComponent.builder().contextModule(new ContextModule(this)).build();
   }
+
+  @Override
+  public PhoneDirectoryExtender newPhoneDirectoryExtender() {
+    return new PhoneDirectoryExtender() {
+      @Override
+      public boolean isEnabled(Context context) {
+        return LookupSettings.isForwardLookupEnabled(AospDialerApplication.this);
+      }
+
+      @Override
+      @Nullable
+      public Uri getContentUri() {
+        return LookupProvider.NEARBY_AND_PEOPLE_LOOKUP_URI;
+      }
+    };
+  }
+
+  @Override
+  public InCallUiBindings newInCallUiBindings() {
+    return new InCallUiBindingsStub() {
+      @Override
+      @Nullable
+      public PhoneNumberService newPhoneNumberService(Context context) {
+        return new ReverseLookupService(context);
+      }
+    };
+  }
+
+  @Override
+  public PhoneNumberCacheBindings newPhoneNumberCacheBindings() {
+    return LookupCacheService::new;
+  }
 }
diff --git a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
index 8181e21..407afa2 100644
--- a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
+++ b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,21 +17,13 @@
 
 package com.android.dialer.binary.aosp;
 
-import com.android.bubble.stub.StubBubbleModule;
 import com.android.dialer.activecalls.ActiveCallsModule;
 import com.android.dialer.binary.basecomponent.BaseDialerRootComponent;
 import com.android.dialer.calllog.CallLogModule;
-import com.android.dialer.calllog.config.CallLogConfigModule;
-import com.android.dialer.commandline.CommandLineModule;
 import com.android.dialer.common.concurrent.DialerExecutorModule;
-import com.android.dialer.configprovider.SharedPrefConfigProviderModule;
 import com.android.dialer.contacts.ContactsModule;
-import com.android.dialer.duo.stub.StubDuoModule;
-import com.android.dialer.enrichedcall.stub.StubEnrichedCallModule;
-import com.android.dialer.feedback.stub.StubFeedbackModule;
 import com.android.dialer.glidephotomanager.GlidePhotoManagerModule;
 import com.android.dialer.inject.ContextModule;
-import com.android.dialer.metrics.StubMetricsModule;
 import com.android.dialer.phonelookup.PhoneLookupModule;
 import com.android.dialer.phonenumbergeoutil.impl.PhoneNumberGeoUtilModule;
 import com.android.dialer.precall.impl.PreCallModule;
@@ -38,26 +31,20 @@
 import com.android.dialer.preferredsim.suggestion.stub.StubSimSuggestionModule;
 import com.android.dialer.promotion.impl.PromotionModule;
 import com.android.dialer.simulator.impl.SimulatorModule;
-import com.android.dialer.simulator.stub.StubSimulatorEnrichedCallModule;
-import com.android.dialer.spam.stub.StubSpamModule;
 import com.android.dialer.storage.StorageModule;
-import com.android.dialer.strictmode.impl.SystemStrictModeModule;
 import com.android.dialer.theme.base.impl.AospThemeModule;
-import com.android.incallui.calllocation.stub.StubCallLocationModule;
-import com.android.incallui.maps.stub.StubMapsModule;
-import com.android.incallui.speakeasy.StubSpeakEasyModule;
 import com.android.voicemail.impl.VoicemailModule;
-import dagger.Component;
+
 import javax.inject.Singleton;
 
+import dagger.Component;
+
 /** Root component for the AOSP Dialer application. */
 @Singleton
 @Component(
     modules = {
       ActiveCallsModule.class,
       CallLogModule.class,
-      CallLogConfigModule.class,
-      CommandLineModule.class,
       ContactsModule.class,
       ContextModule.class,
       DialerExecutorModule.class,
@@ -67,21 +54,9 @@
       PreCallModule.class,
       PreferredSimModule.class,
       PromotionModule.class,
-      SharedPrefConfigProviderModule.class,
       SimulatorModule.class,
-      StubSimulatorEnrichedCallModule.class,
       StorageModule.class,
-      StubCallLocationModule.class,
-      StubDuoModule.class,
-      StubEnrichedCallModule.class,
-      StubBubbleModule.class,
-      StubMetricsModule.class,
-      StubFeedbackModule.class,
-      StubMapsModule.class,
       StubSimSuggestionModule.class,
-      StubSpamModule.class,
-      StubSpeakEasyModule.class,
-      SystemStrictModeModule.class,
       AospThemeModule.class,
       VoicemailModule.class,
     })
diff --git a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
index acf14b1..997101c 100644
--- a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
+++ b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
@@ -16,21 +16,13 @@
 
 package com.android.dialer.binary.basecomponent;
 
-import com.android.bubble.BubbleComponent;
 import com.android.dialer.activecalls.ActiveCallsComponent;
 import com.android.dialer.calllog.CallLogComponent;
-import com.android.dialer.calllog.config.CallLogConfigComponent;
 import com.android.dialer.calllog.database.CallLogDatabaseComponent;
 import com.android.dialer.calllog.ui.CallLogUiComponent;
-import com.android.dialer.commandline.CommandLineComponent;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.contacts.ContactsComponent;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.feedback.FeedbackComponent;
 import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent;
-import com.android.dialer.metrics.MetricsComponent;
 import com.android.dialer.phonelookup.PhoneLookupComponent;
 import com.android.dialer.phonelookup.database.PhoneLookupDatabaseComponent;
 import com.android.dialer.phonenumbergeoutil.PhoneNumberGeoUtilComponent;
@@ -39,14 +31,9 @@
 import com.android.dialer.preferredsim.suggestion.SimSuggestionComponent;
 import com.android.dialer.promotion.PromotionComponent;
 import com.android.dialer.simulator.SimulatorComponent;
-import com.android.dialer.spam.SpamComponent;
 import com.android.dialer.speeddial.loader.UiItemLoaderComponent;
 import com.android.dialer.storage.StorageComponent;
-import com.android.dialer.strictmode.StrictModeComponent;
 import com.android.dialer.theme.base.ThemeComponent;
-import com.android.incallui.calllocation.CallLocationComponent;
-import com.android.incallui.maps.MapsComponent;
-import com.android.incallui.speakeasy.SpeakEasyComponent;
 import com.android.voicemail.VoicemailComponent;
 
 /**
@@ -55,22 +42,12 @@
  */
 public interface BaseDialerRootComponent
     extends ActiveCallsComponent.HasComponent,
-        BubbleComponent.HasComponent,
-        CallLocationComponent.HasComponent,
         CallLogComponent.HasComponent,
-        CallLogConfigComponent.HasComponent,
         CallLogDatabaseComponent.HasComponent,
         CallLogUiComponent.HasComponent,
-        ConfigProviderComponent.HasComponent,
-        CommandLineComponent.HasComponent,
         ContactsComponent.HasComponent,
         DialerExecutorComponent.HasComponent,
-        DuoComponent.HasComponent,
-        EnrichedCallComponent.HasComponent,
-        FeedbackComponent.HasComponent,
         GlidePhotoManagerComponent.HasComponent,
-        MapsComponent.HasComponent,
-        MetricsComponent.HasComponent,
         PhoneLookupComponent.HasComponent,
         PhoneLookupDatabaseComponent.HasComponent,
         PhoneNumberGeoUtilComponent.HasComponent,
@@ -80,9 +57,6 @@
         UiItemLoaderComponent.HasComponent,
         SimSuggestionComponent.HasComponent,
         SimulatorComponent.HasComponent,
-        SpamComponent.HasComponent,
-        SpeakEasyComponent.HasComponent,
         StorageComponent.HasComponent,
-        StrictModeComponent.HasComponent,
         ThemeComponent.HasComponent,
         VoicemailComponent.HasComponent {}
diff --git a/java/com/android/dialer/binary/common/DialerApplication.java b/java/com/android/dialer/binary/common/DialerApplication.java
index 31d4d82..69db1f9 100644
--- a/java/com/android/dialer/binary/common/DialerApplication.java
+++ b/java/com/android/dialer/binary/common/DialerApplication.java
@@ -18,20 +18,11 @@
 
 import android.app.Application;
 import android.os.Trace;
-import android.support.annotation.NonNull;
-import android.support.v4.os.BuildCompat;
-import com.android.dialer.blocking.BlockedNumbersAutoMigrator;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.calllog.CallLogComponent;
-import com.android.dialer.calllog.CallLogFramework;
-import com.android.dialer.calllog.config.CallLogConfig;
-import com.android.dialer.calllog.config.CallLogConfigComponent;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.notification.NotificationChannelManager;
-import com.android.dialer.persistentlog.PersistentLogger;
-import com.android.dialer.strictmode.StrictModeComponent;
 
 /** A common application subclass for all Dialer build variants. */
 public abstract class DialerApplication extends Application implements HasRootComponent {
@@ -41,34 +32,11 @@
   @Override
   public void onCreate() {
     Trace.beginSection("DialerApplication.onCreate");
-    StrictModeComponent.get(this).getDialerStrictMode().onApplicationCreate(this);
     super.onCreate();
-    new BlockedNumbersAutoMigrator(
-            this.getApplicationContext(),
-            new FilteredNumberAsyncQueryHandler(this),
-            DialerExecutorComponent.get(this).dialerExecutorFactory())
-        .asyncAutoMigrate();
-    initializeAnnotatedCallLog();
-    PersistentLogger.initialize(this);
-
-    if (BuildCompat.isAtLeastO()) {
-      NotificationChannelManager.initChannels(this);
-    }
+    NotificationChannelManager.initChannels(this);
     Trace.endSection();
   }
 
-  private void initializeAnnotatedCallLog() {
-    CallLogConfig callLogConfig = CallLogConfigComponent.get(this).callLogConfig();
-    callLogConfig.schedulePollingJob();
-
-    if (callLogConfig.isCallLogFrameworkEnabled()) {
-      CallLogFramework callLogFramework = CallLogComponent.get(this).callLogFramework();
-      callLogFramework.registerContentObservers();
-    } else {
-      LogUtil.i("DialerApplication.initializeAnnotatedCallLog", "framework not enabled");
-    }
-  }
-
   /**
    * Returns a new instance of the root component for the application. Sub classes should define a
    * root component that extends all the sub components "HasComponent" intefaces. The component
diff --git a/java/com/android/dialer/binary/google/AndroidManifest.xml b/java/com/android/dialer/binary/google/AndroidManifest.xml
deleted file mode 100644
index 8555ff6..0000000
--- a/java/com/android/dialer/binary/google/AndroidManifest.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  coreApp="true"
-  package="com.google.android.google_stub_dialer"
-  android:versionCode="2900000"
-  android:versionName="23.0">
-
-  <uses-sdk
-    android:minSdkVersion="24"
-    android:targetSdkVersion="30"/>
-
-  <uses-permission android:name="android.permission.CALL_PHONE"/>
-  <uses-permission android:name="android.permission.READ_CONTACTS"/>
-  <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
-  <uses-permission android:name="android.permission.READ_CALL_LOG"/>
-  <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
-  <uses-permission android:name="android.permission.READ_PROFILE"/>
-  <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
-  <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
-  <uses-permission android:name="android.permission.GET_ACCOUNTS_PRIVILEGED"/>
-  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
-  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
-  <uses-permission android:name="android.permission.INTERNET"/>
-  <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
-  <uses-permission android:name="android.permission.NFC"/>
-  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
-  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
-  <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
-  <uses-permission android:name="android.permission.WAKE_LOCK"/>
-  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-  <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
-  <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
-  <uses-permission android:name="android.permission.VIBRATE"/>
-  <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
-  <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL"/>
-  <uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL"/>
-  <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL"/>
-  <uses-permission android:name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK"/>
-  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
-  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
-  <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
-  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
-
-  <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
-  <!-- We use this to disable the status bar buttons of home, back and recent
-  during an incoming call. By doing so this allows us to not show the user
-  is viewing the activity in full screen alert, on a fresh system/factory
-  reset state of the app. -->
-  <uses-permission android:name="android.permission.STATUS_BAR"/>
-  <uses-permission android:name="android.permission.CAMERA"/>
-
-  <!-- This tells the activity manager to not delay any of our activity
-   start requests, even if they happen immediately after the user
-   presses home. -->
-  <uses-permission android:name="android.permission.STOP_APP_SWITCHES"/>
-
-  <!-- Permissions needed for badger count showing on launch icon. -->
-
-  <!--for Samsung-->
-  <uses-permission android:name="com.sec.android.provider.badge.permission.READ"/>
-  <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>
-
-  <!--for htc-->
-  <uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
-  <uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT"/>
-
-  <!--for sony-->
-  <uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE"/>
-  <uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"/>
-
-  <!--for apex-->
-  <uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT"/>
-
-  <!--for solid-->
-  <uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE"/>
-
-  <!--for huawei-->
-  <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
-  <uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/>
-  <uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/>
-
-  <!--for ZUK-->
-  <uses-permission android:name="android.permission.READ_APP_BADGE"/>
-
-  <!--for OPPO-->
-  <uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/>
-  <uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
-
-  <application
-    android:hardwareAccelerated="true"
-    android:icon="@mipmap/ic_launcher_phone"
-    android:label="@string/applicationLabel"
-    android:name="com.android.dialer.binary.google.GoogleStubDialerApplication"
-    android:supportsRtl="true"
-    android:usesCleartextTraffic="false"
-    android:extractNativeLibs="false">
-  </application>
-
-</manifest>
diff --git a/java/com/android/dialer/binary/google/GoogleStubDialerApplication.java b/java/com/android/dialer/binary/google/GoogleStubDialerApplication.java
deleted file mode 100644
index e9289af..0000000
--- a/java/com/android/dialer/binary/google/GoogleStubDialerApplication.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.binary.google;
-
-import android.support.annotation.NonNull;
-import com.android.dialer.binary.common.DialerApplication;
-import com.android.dialer.inject.ContextModule;
-
-/**
- * The application class for the Google Stub Dialer. This is a version of the Dialer app that
- * depends on Google Play Services.
- */
-public class GoogleStubDialerApplication extends DialerApplication {
-
-  /** Returns a new instance of the root component for the Google Stub Dialer. */
-  @Override
-  @NonNull
-  protected Object buildRootComponent() {
-    return DaggerGoogleStubDialerRootComponent.builder()
-        .contextModule(new ContextModule(this))
-        .build();
-  }
-}
diff --git a/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java b/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java
deleted file mode 100644
index 35e7809..0000000
--- a/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.binary.google;
-
-import com.android.bubble.stub.StubBubbleModule;
-import com.android.dialer.activecalls.ActiveCallsModule;
-import com.android.dialer.binary.basecomponent.BaseDialerRootComponent;
-import com.android.dialer.calllog.CallLogModule;
-import com.android.dialer.calllog.config.CallLogConfigModule;
-import com.android.dialer.commandline.CommandLineModule;
-import com.android.dialer.common.concurrent.DialerExecutorModule;
-import com.android.dialer.configprovider.SharedPrefConfigProviderModule;
-import com.android.dialer.contacts.ContactsModule;
-import com.android.dialer.duo.stub.StubDuoModule;
-import com.android.dialer.enrichedcall.stub.StubEnrichedCallModule;
-import com.android.dialer.feedback.stub.StubFeedbackModule;
-import com.android.dialer.glidephotomanager.GlidePhotoManagerModule;
-import com.android.dialer.inject.ContextModule;
-import com.android.dialer.metrics.StubMetricsModule;
-import com.android.dialer.phonelookup.PhoneLookupModule;
-import com.android.dialer.phonenumbergeoutil.impl.PhoneNumberGeoUtilModule;
-import com.android.dialer.precall.impl.PreCallModule;
-import com.android.dialer.preferredsim.PreferredSimModule;
-import com.android.dialer.preferredsim.suggestion.stub.StubSimSuggestionModule;
-import com.android.dialer.promotion.impl.PromotionModule;
-import com.android.dialer.simulator.impl.SimulatorModule;
-import com.android.dialer.simulator.stub.StubSimulatorEnrichedCallModule;
-import com.android.dialer.spam.stub.StubSpamModule;
-import com.android.dialer.storage.StorageModule;
-import com.android.dialer.strictmode.impl.SystemStrictModeModule;
-import com.android.dialer.theme.base.impl.AospThemeModule;
-import com.android.incallui.calllocation.impl.CallLocationModule;
-import com.android.incallui.maps.impl.MapsModule;
-import com.android.incallui.speakeasy.StubSpeakEasyModule;
-import com.android.voicemail.impl.VoicemailModule;
-import dagger.Component;
-import javax.inject.Singleton;
-
-/**
- * Root component for the Google Stub Dialer application. Unlike the AOSP variant, this component
- * can pull in modules that depend on Google Play Services like the maps module.
- */
-@Singleton
-@Component(
-    modules = {
-      ActiveCallsModule.class,
-      CallLocationModule.class,
-      CallLogModule.class,
-      CallLogConfigModule.class,
-      CommandLineModule.class,
-      ContextModule.class,
-      ContactsModule.class,
-      DialerExecutorModule.class,
-      GlidePhotoManagerModule.class,
-      MapsModule.class,
-      PhoneLookupModule.class, // TODO(zachh): Module which uses APDL?
-      PhoneNumberGeoUtilModule.class,
-      PreCallModule.class,
-      PreferredSimModule.class,
-      PromotionModule.class,
-      SharedPrefConfigProviderModule.class,
-      SimulatorModule.class,
-      StorageModule.class,
-      StubSimulatorEnrichedCallModule.class,
-      StubDuoModule.class,
-      StubEnrichedCallModule.class,
-      StubFeedbackModule.class,
-      StubMetricsModule.class,
-      StubBubbleModule.class,
-      StubSimSuggestionModule.class,
-      StubSpamModule.class,
-      StubSpeakEasyModule.class,
-      SystemStrictModeModule.class,
-      AospThemeModule.class,
-      VoicemailModule.class,
-    })
-public interface GoogleStubDialerRootComponent extends BaseDialerRootComponent {}
diff --git a/java/com/android/dialer/blocking/AndroidManifest.xml b/java/com/android/dialer/blocking/AndroidManifest.xml
deleted file mode 100644
index fb811ea..0000000
--- a/java/com/android/dialer/blocking/AndroidManifest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<!-- Copyright (C) 2018 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.blocking">
-
-  <application>
-
-  <provider
-      android:authorities="com.android.dialer.blocking.filterednumberprovider"
-      android:exported="false"
-      android:multiprocess="false"
-      android:name="com.android.dialer.blocking.FilteredNumberProvider"/>
-
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/blocking/BlockNumberDialogFragment.java b/java/com/android/dialer/blocking/BlockNumberDialogFragment.java
deleted file mode 100644
index de974cb..0000000
--- a/java/com/android/dialer/blocking/BlockNumberDialogFragment.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.blocking;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.design.widget.Snackbar;
-import android.telephony.PhoneNumberUtils;
-import android.text.TextUtils;
-import android.view.View;
-import android.widget.Toast;
-import com.android.contacts.common.util.ContactDisplayUtils;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler.OnBlockNumberListener;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler.OnUnblockNumberListener;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
-
-/**
- * Fragment for confirming and enacting blocking/unblocking a number. Also invokes snackbar
- * providing undo functionality.
- */
-@Deprecated
-public class BlockNumberDialogFragment extends DialogFragment {
-
-  private static final String BLOCK_DIALOG_FRAGMENT = "BlockNumberDialog";
-  private static final String ARG_BLOCK_ID = "argBlockId";
-  private static final String ARG_NUMBER = "argNumber";
-  private static final String ARG_COUNTRY_ISO = "argCountryIso";
-  private static final String ARG_DISPLAY_NUMBER = "argDisplayNumber";
-  private static final String ARG_PARENT_VIEW_ID = "parentViewId";
-  private String number;
-  private String displayNumber;
-  private String countryIso;
-  private FilteredNumberAsyncQueryHandler handler;
-  private View parentView;
-  private VisualVoicemailEnabledChecker voicemailEnabledChecker;
-  private Callback callback;
-
-  public static BlockNumberDialogFragment show(
-      Integer blockId,
-      String number,
-      String countryIso,
-      String displayNumber,
-      Integer parentViewId,
-      FragmentManager fragmentManager,
-      Callback callback) {
-    final BlockNumberDialogFragment newFragment =
-        BlockNumberDialogFragment.newInstance(
-            blockId, number, countryIso, displayNumber, parentViewId);
-
-    newFragment.setCallback(callback);
-    newFragment.show(fragmentManager, BlockNumberDialogFragment.BLOCK_DIALOG_FRAGMENT);
-    return newFragment;
-  }
-
-  private static BlockNumberDialogFragment newInstance(
-      Integer blockId,
-      String number,
-      String countryIso,
-      String displayNumber,
-      Integer parentViewId) {
-    final BlockNumberDialogFragment fragment = new BlockNumberDialogFragment();
-    final Bundle args = new Bundle();
-    if (blockId != null) {
-      args.putInt(ARG_BLOCK_ID, blockId.intValue());
-    }
-    if (parentViewId != null) {
-      args.putInt(ARG_PARENT_VIEW_ID, parentViewId.intValue());
-    }
-    args.putString(ARG_NUMBER, number);
-    args.putString(ARG_COUNTRY_ISO, countryIso);
-    args.putString(ARG_DISPLAY_NUMBER, displayNumber);
-    fragment.setArguments(args);
-    return fragment;
-  }
-
-  public void setFilteredNumberAsyncQueryHandlerForTesting(
-      FilteredNumberAsyncQueryHandler handler) {
-    this.handler = handler;
-  }
-
-  @Override
-  public Context getContext() {
-    return getActivity();
-  }
-
-  @Override
-  public Dialog onCreateDialog(Bundle savedInstanceState) {
-    super.onCreateDialog(savedInstanceState);
-    final boolean isBlocked = getArguments().containsKey(ARG_BLOCK_ID);
-
-    number = getArguments().getString(ARG_NUMBER);
-    displayNumber = getArguments().getString(ARG_DISPLAY_NUMBER);
-    countryIso = getArguments().getString(ARG_COUNTRY_ISO);
-
-    if (TextUtils.isEmpty(displayNumber)) {
-      displayNumber = number;
-    }
-
-    handler = new FilteredNumberAsyncQueryHandler(getContext());
-    voicemailEnabledChecker = new VisualVoicemailEnabledChecker(getActivity(), null);
-    // Choose not to update VoicemailEnabledChecker, as checks should already been done in
-    // all current use cases.
-    parentView = getActivity().findViewById(getArguments().getInt(ARG_PARENT_VIEW_ID));
-
-    CharSequence title;
-    String okText;
-    String message;
-    if (isBlocked) {
-      title = null;
-      okText = getString(R.string.unblock_number_ok);
-      message =
-          ContactDisplayUtils.getTtsSpannedPhoneNumber(
-                  getResources(), R.string.unblock_number_confirmation_title, displayNumber)
-              .toString();
-    } else {
-      title =
-          ContactDisplayUtils.getTtsSpannedPhoneNumber(
-              getResources(), R.string.old_block_number_confirmation_title, displayNumber);
-      okText = getString(R.string.block_number_ok);
-      if (FilteredNumberCompat.useNewFiltering(getContext())) {
-        message = getString(R.string.block_number_confirmation_message_new_filtering);
-      } else if (voicemailEnabledChecker.isVisualVoicemailEnabled()) {
-        message = getString(R.string.block_number_confirmation_message_vvm);
-      } else {
-        message = getString(R.string.block_number_confirmation_message_no_vvm);
-      }
-    }
-
-    AlertDialog.Builder builder =
-        new AlertDialog.Builder(getActivity())
-            .setTitle(title)
-            .setMessage(message)
-            .setPositiveButton(
-                okText,
-                new DialogInterface.OnClickListener() {
-                  @Override
-                  public void onClick(DialogInterface dialog, int id) {
-                    if (isBlocked) {
-                      unblockNumber();
-                    } else {
-                      blockNumber();
-                    }
-                  }
-                })
-            .setNegativeButton(android.R.string.cancel, null);
-    return builder.create();
-  }
-
-  @Override
-  public void onActivityCreated(Bundle savedInstanceState) {
-    super.onActivityCreated(savedInstanceState);
-    String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
-    if (!FilteredNumbersUtil.canBlockNumber(getContext(), e164Number, number)) {
-      dismiss();
-      Toast.makeText(
-              getContext(),
-              ContactDisplayUtils.getTtsSpannedPhoneNumber(
-                  getResources(), R.string.invalidNumber, displayNumber),
-              Toast.LENGTH_SHORT)
-          .show();
-    }
-  }
-
-  @Override
-  public void onPause() {
-    // Dismiss on rotation.
-    dismiss();
-    callback = null;
-
-    super.onPause();
-  }
-
-  public void setCallback(Callback callback) {
-    this.callback = callback;
-  }
-
-  private CharSequence getBlockedMessage() {
-    return ContactDisplayUtils.getTtsSpannedPhoneNumber(
-        getResources(), R.string.snackbar_number_blocked, displayNumber);
-  }
-
-  private CharSequence getUnblockedMessage() {
-    return ContactDisplayUtils.getTtsSpannedPhoneNumber(
-        getResources(), R.string.snackbar_number_unblocked, displayNumber);
-  }
-
-  private int getActionTextColor() {
-    return getContext().getResources().getColor(R.color.dialer_snackbar_action_text_color);
-  }
-
-  private void blockNumber() {
-    final CharSequence message = getBlockedMessage();
-    final CharSequence undoMessage = getUnblockedMessage();
-    final Callback callback = this.callback;
-    final int actionTextColor = getActionTextColor();
-    final Context applicationContext = getContext().getApplicationContext();
-
-    final OnUnblockNumberListener onUndoListener =
-        new OnUnblockNumberListener() {
-          @Override
-          public void onUnblockComplete(int rows, ContentValues values) {
-            Snackbar.make(parentView, undoMessage, Snackbar.LENGTH_LONG).show();
-            if (callback != null) {
-              callback.onChangeFilteredNumberUndo();
-            }
-          }
-        };
-
-    final OnBlockNumberListener onBlockNumberListener =
-        new OnBlockNumberListener() {
-          @Override
-          public void onBlockComplete(final Uri uri) {
-            final View.OnClickListener undoListener =
-                new View.OnClickListener() {
-                  @Override
-                  public void onClick(View view) {
-                    // Delete the newly created row on 'undo'.
-                    Logger.get(applicationContext)
-                        .logInteraction(InteractionEvent.Type.UNDO_BLOCK_NUMBER);
-                    handler.unblock(onUndoListener, uri);
-                  }
-                };
-
-            Snackbar.make(parentView, message, Snackbar.LENGTH_LONG)
-                .setAction(R.string.snackbar_undo, undoListener)
-                .setActionTextColor(actionTextColor)
-                .show();
-
-            if (callback != null) {
-              callback.onFilterNumberSuccess();
-            }
-
-            if (FilteredNumbersUtil.hasRecentEmergencyCall(applicationContext)) {
-              FilteredNumbersUtil.maybeNotifyCallBlockingDisabled(applicationContext);
-            }
-          }
-        };
-
-    handler.blockNumber(onBlockNumberListener, number, countryIso);
-  }
-
-  private void unblockNumber() {
-    final CharSequence message = getUnblockedMessage();
-    final CharSequence undoMessage = getBlockedMessage();
-    final Callback callback = this.callback;
-    final int actionTextColor = getActionTextColor();
-    final Context applicationContext = getContext().getApplicationContext();
-
-    final OnBlockNumberListener onUndoListener =
-        new OnBlockNumberListener() {
-          @Override
-          public void onBlockComplete(final Uri uri) {
-            Snackbar.make(parentView, undoMessage, Snackbar.LENGTH_LONG).show();
-            if (callback != null) {
-              callback.onChangeFilteredNumberUndo();
-            }
-          }
-        };
-
-    handler.unblock(
-        new OnUnblockNumberListener() {
-          @Override
-          public void onUnblockComplete(int rows, final ContentValues values) {
-            final View.OnClickListener undoListener =
-                new View.OnClickListener() {
-                  @Override
-                  public void onClick(View view) {
-                    // Re-insert the row on 'undo', with a new ID.
-                    Logger.get(applicationContext)
-                        .logInteraction(InteractionEvent.Type.UNDO_UNBLOCK_NUMBER);
-                    handler.blockNumber(onUndoListener, values);
-                  }
-                };
-
-            Snackbar.make(parentView, message, Snackbar.LENGTH_LONG)
-                .setAction(R.string.snackbar_undo, undoListener)
-                .setActionTextColor(actionTextColor)
-                .show();
-
-            if (callback != null) {
-              callback.onUnfilterNumberSuccess();
-            }
-          }
-        },
-        getArguments().getInt(ARG_BLOCK_ID));
-  }
-
-  /**
-   * Use a callback interface to update UI after success/undo. Favor this approach over other more
-   * standard paradigms because of the variety of scenarios in which the DialogFragment can be
-   * invoked (by an Activity, by a fragment, by an adapter, by an adapter list item). Because of
-   * this, we do NOT support retaining state on rotation, and will dismiss the dialog upon rotation
-   * instead.
-   */
-  public interface Callback {
-
-    /** Called when a number is successfully added to the set of filtered numbers */
-    void onFilterNumberSuccess();
-
-    /** Called when a number is successfully removed from the set of filtered numbers */
-    void onUnfilterNumberSuccess();
-
-    /** Called when the action of filtering or unfiltering a number is undone */
-    void onChangeFilteredNumberUndo();
-  }
-}
diff --git a/java/com/android/dialer/blocking/BlockedNumbersAutoMigrator.java b/java/com/android/dialer/blocking/BlockedNumbersAutoMigrator.java
deleted file mode 100644
index 8a57f29..0000000
--- a/java/com/android/dialer/blocking/BlockedNumbersAutoMigrator.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.blocking;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.os.UserManagerCompat;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler.OnHasBlockedNumbersListener;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutor.Worker;
-import com.android.dialer.common.concurrent.DialerExecutorFactory;
-
-/**
- * Class responsible for checking if the user can be auto-migrated to {@link
- * android.provider.BlockedNumberContract} blocking. In order for this to happen, the user cannot
- * have any numbers that are blocked in the Dialer solution.
- */
-@Deprecated
-public class BlockedNumbersAutoMigrator {
-
-  static final String HAS_CHECKED_AUTO_MIGRATE_KEY = "checkedAutoMigrate";
-
-  @NonNull private final Context appContext;
-  @NonNull private final FilteredNumberAsyncQueryHandler queryHandler;
-  @NonNull private final DialerExecutorFactory dialerExecutorFactory;
-
-  /**
-   * Constructs the BlockedNumbersAutoMigrator with the given {@link
-   * FilteredNumberAsyncQueryHandler}.
-   *
-   * @param queryHandler The FilteredNumberAsyncQueryHandler used to determine if there are blocked
-   *     numbers.
-   * @throws NullPointerException if sharedPreferences or queryHandler are null.
-   */
-  public BlockedNumbersAutoMigrator(
-      @NonNull Context appContext,
-      @NonNull FilteredNumberAsyncQueryHandler queryHandler,
-      @NonNull DialerExecutorFactory dialerExecutorFactory) {
-    this.appContext = Assert.isNotNull(appContext);
-    this.queryHandler = Assert.isNotNull(queryHandler);
-    this.dialerExecutorFactory = Assert.isNotNull(dialerExecutorFactory);
-  }
-
-  public void asyncAutoMigrate() {
-    dialerExecutorFactory
-        .createNonUiTaskBuilder(new ShouldAttemptAutoMigrate(appContext))
-        .onSuccess(this::autoMigrate)
-        .build()
-        .executeParallel(null);
-  }
-
-  /**
-   * Attempts to perform the auto-migration. Auto-migration will only be attempted once and can be
-   * performed only when the user has no blocked numbers. As a result of this method, the user will
-   * be migrated to the framework blocking solution if blocked numbers don't exist.
-   */
-  private void autoMigrate(boolean shouldAttemptAutoMigrate) {
-    if (!shouldAttemptAutoMigrate) {
-      return;
-    }
-
-    LogUtil.i("BlockedNumbersAutoMigrator", "attempting to auto-migrate.");
-    queryHandler.hasBlockedNumbers(
-        new OnHasBlockedNumbersListener() {
-          @Override
-          public void onHasBlockedNumbers(boolean hasBlockedNumbers) {
-            if (hasBlockedNumbers) {
-              LogUtil.i("BlockedNumbersAutoMigrator", "not auto-migrating: blocked numbers exist.");
-              return;
-            }
-            LogUtil.i("BlockedNumbersAutoMigrator", "auto-migrating: no blocked numbers.");
-            FilteredNumberCompat.setHasMigratedToNewBlocking(appContext, true);
-          }
-        });
-  }
-
-  private static class ShouldAttemptAutoMigrate implements Worker<Void, Boolean> {
-    private final Context appContext;
-
-    ShouldAttemptAutoMigrate(Context appContext) {
-      this.appContext = appContext;
-    }
-
-    @Nullable
-    @Override
-    public Boolean doInBackground(@Nullable Void input) {
-      if (!UserManagerCompat.isUserUnlocked(appContext)) {
-        LogUtil.i("BlockedNumbersAutoMigrator", "not attempting auto-migrate: device is locked");
-        return false;
-      }
-      SharedPreferences sharedPreferences =
-          PreferenceManager.getDefaultSharedPreferences(appContext);
-
-      if (sharedPreferences.contains(HAS_CHECKED_AUTO_MIGRATE_KEY)) {
-        LogUtil.v(
-            "BlockedNumbersAutoMigrator", "not attempting auto-migrate: already checked once.");
-        return false;
-      }
-
-      if (!FilteredNumberCompat.canAttemptBlockOperations(appContext)) {
-        // This may be the case where the user is on the lock screen, so we shouldn't record that
-        // the migration status was checked.
-        LogUtil.i(
-            "BlockedNumbersAutoMigrator", "not attempting auto-migrate: current user can't block");
-        return false;
-      }
-      LogUtil.i(
-          "BlockedNumbersAutoMigrator", "updating state as already checked for auto-migrate.");
-      sharedPreferences.edit().putBoolean(HAS_CHECKED_AUTO_MIGRATE_KEY, true).apply();
-
-      if (!FilteredNumberCompat.canUseNewFiltering()) {
-        LogUtil.i("BlockedNumbersAutoMigrator", "not attempting auto-migrate: not available.");
-        return false;
-      }
-
-      if (FilteredNumberCompat.hasMigratedToNewBlocking(appContext)) {
-        LogUtil.i("BlockedNumbersAutoMigrator", "not attempting auto-migrate: already migrated.");
-        return false;
-      }
-      return true;
-    }
-  }
-}
diff --git a/java/com/android/dialer/blocking/BlockedNumbersMigrator.java b/java/com/android/dialer/blocking/BlockedNumbersMigrator.java
deleted file mode 100644
index ef047a0..0000000
--- a/java/com/android/dialer/blocking/BlockedNumbersMigrator.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.blocking;
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.os.AsyncTask;
-import android.provider.BlockedNumberContract.BlockedNumbers;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.database.FilteredNumberContract;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-import java.util.Objects;
-
-/**
- * Class which should be used to migrate numbers from {@link FilteredNumberContract} blocking to
- * {@link android.provider.BlockedNumberContract} blocking.
- */
-@Deprecated
-public class BlockedNumbersMigrator {
-
-  private final Context context;
-
-  /**
-   * Creates a new BlockedNumbersMigrate, using the given {@link ContentResolver} to perform queries
-   * against the blocked numbers tables.
-   */
-  public BlockedNumbersMigrator(Context context) {
-    this.context = Objects.requireNonNull(context);
-  }
-
-  private static boolean migrateToNewBlockingInBackground(ContentResolver resolver) {
-    try (Cursor cursor =
-        resolver.query(
-            FilteredNumber.CONTENT_URI,
-            new String[] {FilteredNumberColumns.NUMBER},
-            null,
-            null,
-            null)) {
-      if (cursor == null) {
-        LogUtil.i(
-            "BlockedNumbersMigrator.migrateToNewBlockingInBackground", "migrate - cursor was null");
-        return false;
-      }
-
-      LogUtil.i(
-          "BlockedNumbersMigrator.migrateToNewBlockingInBackground",
-          "migrate - attempting to migrate " + cursor.getCount() + "numbers");
-
-      int numMigrated = 0;
-      while (cursor.moveToNext()) {
-        String originalNumber =
-            cursor.getString(cursor.getColumnIndex(FilteredNumberColumns.NUMBER));
-        if (isNumberInNewBlocking(resolver, originalNumber)) {
-          LogUtil.i(
-              "BlockedNumbersMigrator.migrateToNewBlockingInBackground",
-              "migrate - number was already blocked in new blocking");
-          continue;
-        }
-        ContentValues values = new ContentValues();
-        values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, originalNumber);
-        resolver.insert(BlockedNumbers.CONTENT_URI, values);
-        ++numMigrated;
-      }
-      LogUtil.i(
-          "BlockedNumbersMigrator.migrateToNewBlockingInBackground",
-          "migrate - migration complete. " + numMigrated + " numbers migrated.");
-      return true;
-    }
-  }
-
-  private static boolean isNumberInNewBlocking(ContentResolver resolver, String originalNumber) {
-    try (Cursor cursor =
-        resolver.query(
-            BlockedNumbers.CONTENT_URI,
-            new String[] {BlockedNumbers.COLUMN_ID},
-            BlockedNumbers.COLUMN_ORIGINAL_NUMBER + " = ?",
-            new String[] {originalNumber},
-            null)) {
-      return cursor != null && cursor.getCount() != 0;
-    }
-  }
-
-  /**
-   * Copies all of the numbers in the {@link FilteredNumberContract} block list to the {@link
-   * android.provider.BlockedNumberContract} block list.
-   *
-   * @param listener {@link Listener} called once the migration is complete.
-   * @return {@code true} if the migrate can be attempted, {@code false} otherwise.
-   * @throws NullPointerException if listener is null
-   */
-  public boolean migrate(final Listener listener) {
-    LogUtil.i("BlockedNumbersMigrator.migrate", "migrate - start");
-    if (!FilteredNumberCompat.canUseNewFiltering()) {
-      LogUtil.i("BlockedNumbersMigrator.migrate", "migrate - can't use new filtering");
-      return false;
-    }
-    Objects.requireNonNull(listener);
-    new MigratorTask(listener).execute();
-    return true;
-  }
-
-  /**
-   * Listener for the operation to migrate from {@link FilteredNumberContract} blocking to {@link
-   * android.provider.BlockedNumberContract} blocking.
-   */
-  public interface Listener {
-
-    /** Called when the migration operation is finished. */
-    void onComplete();
-  }
-
-  private class MigratorTask extends AsyncTask<Void, Void, Boolean> {
-
-    private final Listener listener;
-
-    public MigratorTask(Listener listener) {
-      this.listener = listener;
-    }
-
-    @Override
-    protected Boolean doInBackground(Void... params) {
-      LogUtil.i("BlockedNumbersMigrator.doInBackground", "migrate - start background migration");
-      return migrateToNewBlockingInBackground(context.getContentResolver());
-    }
-
-    @Override
-    protected void onPostExecute(Boolean isSuccessful) {
-      LogUtil.i("BlockedNumbersMigrator.onPostExecute", "migrate - marking migration complete");
-      FilteredNumberCompat.setHasMigratedToNewBlocking(context, isSuccessful);
-      LogUtil.i("BlockedNumbersMigrator.onPostExecute", "migrate - calling listener");
-      listener.onComplete();
-    }
-  }
-}
diff --git a/java/com/android/dialer/blocking/Blocking.java b/java/com/android/dialer/blocking/Blocking.java
index a1d8b4f..34cd97d 100644
--- a/java/com/android/dialer/blocking/Blocking.java
+++ b/java/com/android/dialer/blocking/Blocking.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -26,14 +27,17 @@
 import android.os.RemoteException;
 import android.provider.BlockedNumberContract;
 import android.provider.BlockedNumberContract.BlockedNumbers;
-import android.support.annotation.Nullable;
 import android.telephony.PhoneNumberUtils;
 import android.util.ArrayMap;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.database.Selection;
 import com.google.common.collect.ImmutableCollection;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.ListenableFuture;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
diff --git a/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java b/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
index 08526ef..bc5a595 100644
--- a/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
+++ b/java/com/android/dialer/blocking/FilteredNumberAsyncQueryHandler.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,31 +21,17 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
-import android.database.DatabaseUtils;
-import android.database.sqlite.SQLiteDatabaseCorruptException;
 import android.net.Uri;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.os.UserManagerCompat;
-import android.telephony.PhoneNumberUtils;
-import android.text.TextUtils;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
+import android.provider.BlockedNumberContract;
+import android.provider.BlockedNumberContract.BlockedNumbers;
+
+import java.util.Objects;
 
 /** TODO(calderwoodra): documentation */
 @Deprecated
 public class FilteredNumberAsyncQueryHandler extends AsyncQueryHandler {
 
   public static final int INVALID_ID = -1;
-  // Id used to replace null for blocked id since ConcurrentHashMap doesn't allow null key/value.
-  @VisibleForTesting static final int BLOCKED_NUMBER_CACHE_NULL_ID = -1;
-
-  @VisibleForTesting
-  static final Map<String, Integer> blockedNumberCache = new ConcurrentHashMap<>();
 
   private static final int NO_TOKEN = 0;
   private final Context context;
@@ -88,205 +75,11 @@
     }
   }
 
-  void hasBlockedNumbers(final OnHasBlockedNumbersListener listener) {
-    if (!FilteredNumberCompat.canAttemptBlockOperations(context)) {
-      listener.onHasBlockedNumbers(false);
-      return;
-    }
-    startQuery(
-        NO_TOKEN,
-        new Listener() {
-          @Override
-          protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
-            listener.onHasBlockedNumbers(cursor != null && cursor.getCount() > 0);
-          }
-        },
-        FilteredNumberCompat.getContentUri(context, null),
-        new String[] {FilteredNumberCompat.getIdColumnName(context)},
-        FilteredNumberCompat.useNewFiltering(context)
-            ? null
-            : FilteredNumberColumns.TYPE + "=" + FilteredNumberTypes.BLOCKED_NUMBER,
-        null,
-        null);
-  }
-
-  /**
-   * Checks if the given number is blocked, calling the given {@link OnCheckBlockedListener} with
-   * the id for the blocked number, {@link #INVALID_ID}, or {@code null} based on the result of the
-   * check.
-   */
-  public void isBlockedNumber(
-      final OnCheckBlockedListener listener, @Nullable final String number, String countryIso) {
-    if (number == null) {
-      listener.onCheckComplete(INVALID_ID);
-      return;
-    }
-    if (!FilteredNumberCompat.canAttemptBlockOperations(context)) {
-      listener.onCheckComplete(null);
-      return;
-    }
-    Integer cachedId = blockedNumberCache.get(number);
-    if (cachedId != null) {
-      if (listener == null) {
-        return;
-      }
-      if (cachedId == BLOCKED_NUMBER_CACHE_NULL_ID) {
-        cachedId = null;
-      }
-      listener.onCheckComplete(cachedId);
-      return;
-    }
-
-    if (!UserManagerCompat.isUserUnlocked(context)) {
-      LogUtil.i(
-          "FilteredNumberAsyncQueryHandler.isBlockedNumber",
-          "Device locked in FBE mode, cannot access blocked number database");
-      listener.onCheckComplete(INVALID_ID);
-      return;
-    }
-
-    String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
-    String formattedNumber = FilteredNumbersUtil.getBlockableNumber(context, e164Number, number);
-    if (TextUtils.isEmpty(formattedNumber)) {
-      listener.onCheckComplete(INVALID_ID);
-      blockedNumberCache.put(number, INVALID_ID);
-      return;
-    }
-
-    startQuery(
-        NO_TOKEN,
-        new Listener() {
-          @Override
-          protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
-            /*
-             * In the frameworking blocking, numbers can be blocked in both e164 format
-             * and not, resulting in multiple rows being returned for this query. For
-             * example, both '16502530000' and '6502530000' can exist at the same time
-             * and will be returned by this query.
-             */
-            if (cursor == null || cursor.getCount() == 0) {
-              blockedNumberCache.put(number, BLOCKED_NUMBER_CACHE_NULL_ID);
-              listener.onCheckComplete(null);
-              return;
-            }
-            cursor.moveToFirst();
-            // New filtering doesn't have a concept of type
-            if (!FilteredNumberCompat.useNewFiltering(context)
-                && cursor.getInt(cursor.getColumnIndex(FilteredNumberColumns.TYPE))
-                    != FilteredNumberTypes.BLOCKED_NUMBER) {
-              blockedNumberCache.put(number, BLOCKED_NUMBER_CACHE_NULL_ID);
-              listener.onCheckComplete(null);
-              return;
-            }
-            Integer blockedId = cursor.getInt(cursor.getColumnIndex(FilteredNumberColumns._ID));
-            blockedNumberCache.put(number, blockedId);
-            listener.onCheckComplete(blockedId);
-          }
-        },
-        FilteredNumberCompat.getContentUri(context, null),
-        FilteredNumberCompat.filter(
-            new String[] {
-              FilteredNumberCompat.getIdColumnName(context),
-              FilteredNumberCompat.getTypeColumnName(context)
-            }),
-        getIsBlockedNumberSelection(e164Number != null) + " = ?",
-        new String[] {formattedNumber},
-        null);
-  }
-
-  /**
-   * Synchronously check if this number has been blocked.
-   *
-   * @return blocked id.
-   */
-  @Nullable
-  public Integer getBlockedIdSynchronous(@Nullable String number, String countryIso) {
-    Assert.isWorkerThread();
-    if (number == null) {
-      return null;
-    }
-    if (!FilteredNumberCompat.canAttemptBlockOperations(context)) {
-      return null;
-    }
-    Integer cachedId = blockedNumberCache.get(number);
-    if (cachedId != null) {
-      if (cachedId == BLOCKED_NUMBER_CACHE_NULL_ID) {
-        cachedId = null;
-      }
-      return cachedId;
-    }
-
-    String e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
-    String formattedNumber = FilteredNumbersUtil.getBlockableNumber(context, e164Number, number);
-    if (TextUtils.isEmpty(formattedNumber)) {
-      return null;
-    }
-
-    try (Cursor cursor =
-        context
-            .getContentResolver()
-            .query(
-                FilteredNumberCompat.getContentUri(context, null),
-                FilteredNumberCompat.filter(
-                    new String[] {
-                      FilteredNumberCompat.getIdColumnName(context),
-                      FilteredNumberCompat.getTypeColumnName(context)
-                    }),
-                getIsBlockedNumberSelection(e164Number != null) + " = ?",
-                new String[] {formattedNumber},
-                null)) {
-      /*
-       * In the frameworking blocking, numbers can be blocked in both e164 format
-       * and not, resulting in multiple rows being returned for this query. For
-       * example, both '16502530000' and '6502530000' can exist at the same time
-       * and will be returned by this query.
-       */
-      if (cursor == null || cursor.getCount() == 0) {
-        blockedNumberCache.put(number, BLOCKED_NUMBER_CACHE_NULL_ID);
-        return null;
-      }
-      cursor.moveToFirst();
-      int blockedId = cursor.getInt(cursor.getColumnIndex(FilteredNumberColumns._ID));
-      blockedNumberCache.put(number, blockedId);
-      return blockedId;
-    } catch (SecurityException e) {
-      LogUtil.e("FilteredNumberAsyncQueryHandler.getBlockedIdSynchronous", null, e);
-      return null;
-    }
-  }
-
-  @VisibleForTesting
-  public void clearCache() {
-    blockedNumberCache.clear();
-  }
-
-  /*
-   * TODO(maxwelb): a bug, non-e164 numbers can be blocked in the new form of blocking. As a
-   * temporary workaround, determine which column of the database to query based on whether the
-   * number is e164 or not.
-   */
-  private String getIsBlockedNumberSelection(boolean isE164Number) {
-    if (FilteredNumberCompat.useNewFiltering(context) && !isE164Number) {
-      return FilteredNumberCompat.getOriginalNumberColumnName(context);
-    }
-    return FilteredNumberCompat.getE164NumberColumnName(context);
-  }
-
-  public void blockNumber(
-      final OnBlockNumberListener listener, String number, @Nullable String countryIso) {
-    blockNumber(listener, null, number, countryIso);
-  }
-
   /** Add a number manually blocked by the user. */
-  public void blockNumber(
-      final OnBlockNumberListener listener,
-      @Nullable String normalizedNumber,
-      String number,
-      @Nullable String countryIso) {
-    blockNumber(
-        listener,
-        FilteredNumberCompat.newBlockNumberContentValues(
-            context, number, normalizedNumber, countryIso));
+  public void blockNumber(final OnBlockNumberListener listener, String number) {
+    ContentValues contentValues = new ContentValues();
+    contentValues.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, Objects.requireNonNull(number));
+    blockNumber(listener, contentValues);
   }
 
   /**
@@ -294,8 +87,7 @@
    * performing the 'undo' action after unblocking.
    */
   public void blockNumber(final OnBlockNumberListener listener, ContentValues values) {
-    blockedNumberCache.clear();
-    if (!FilteredNumberCompat.canAttemptBlockOperations(context)) {
+    if (!BlockedNumberContract.canCurrentUserBlockNumbers(context)) {
       if (listener != null) {
         listener.onBlockComplete(null);
       }
@@ -311,87 +103,10 @@
             }
           }
         },
-        FilteredNumberCompat.getContentUri(context, null),
+        BlockedNumbers.CONTENT_URI,
         values);
   }
 
-  /**
-   * Unblocks the number with the given id.
-   *
-   * @param listener (optional) The {@link OnUnblockNumberListener} called after the number is
-   *     unblocked.
-   * @param id The id of the number to unblock.
-   */
-  public void unblock(@Nullable final OnUnblockNumberListener listener, Integer id) {
-    if (id == null) {
-      throw new IllegalArgumentException("Null id passed into unblock");
-    }
-    unblock(listener, FilteredNumberCompat.getContentUri(context, id));
-  }
-
-  /**
-   * Removes row from database.
-   *
-   * @param listener (optional) The {@link OnUnblockNumberListener} called after the number is
-   *     unblocked.
-   * @param uri The uri of row to remove, from {@link FilteredNumberAsyncQueryHandler#blockNumber}.
-   */
-  public void unblock(@Nullable final OnUnblockNumberListener listener, final Uri uri) {
-    blockedNumberCache.clear();
-    if (!FilteredNumberCompat.canAttemptBlockOperations(context)) {
-      if (listener != null) {
-        listener.onUnblockComplete(0, null);
-      }
-      return;
-    }
-    startQuery(
-        NO_TOKEN,
-        new Listener() {
-          @Override
-          public void onQueryComplete(int token, Object cookie, Cursor cursor) {
-            int rowsReturned = cursor == null ? 0 : cursor.getCount();
-            if (rowsReturned != 1) {
-              throw new SQLiteDatabaseCorruptException(
-                  "Returned " + rowsReturned + " rows for uri " + uri + "where 1 expected.");
-            }
-            cursor.moveToFirst();
-            final ContentValues values = new ContentValues();
-            DatabaseUtils.cursorRowToContentValues(cursor, values);
-            values.remove(FilteredNumberCompat.getIdColumnName(context));
-
-            startDelete(
-                NO_TOKEN,
-                new Listener() {
-                  @Override
-                  public void onDeleteComplete(int token, Object cookie, int result) {
-                    if (listener != null) {
-                      listener.onUnblockComplete(result, values);
-                    }
-                  }
-                },
-                uri,
-                null,
-                null);
-          }
-        },
-        uri,
-        null,
-        null,
-        null,
-        null);
-  }
-
-  /** TODO(calderwoodra): documentation */
-  public interface OnCheckBlockedListener {
-
-    /**
-     * Invoked after querying if a number is blocked.
-     *
-     * @param id The ID of the row if blocked, null otherwise.
-     */
-    void onCheckComplete(Integer id);
-  }
-
   /** TODO(calderwoodra): documentation */
   public interface OnBlockNumberListener {
 
@@ -403,28 +118,6 @@
     void onBlockComplete(Uri uri);
   }
 
-  /** TODO(calderwoodra): documentation */
-  public interface OnUnblockNumberListener {
-
-    /**
-     * Invoked after removing a blocked number
-     *
-     * @param rows The number of rows affected (expected value 1).
-     * @param values The deleted data (used for restoration).
-     */
-    void onUnblockComplete(int rows, ContentValues values);
-  }
-
-  /** TODO(calderwoodra): documentation */
-  interface OnHasBlockedNumbersListener {
-
-    /**
-     * @param hasBlockedNumbers {@code true} if any blocked numbers are stored. {@code false}
-     *     otherwise.
-     */
-    void onHasBlockedNumbers(boolean hasBlockedNumbers);
-  }
-
   /** Methods for FilteredNumberAsyncQueryHandler result returns. */
   private abstract static class Listener {
 
diff --git a/java/com/android/dialer/blocking/FilteredNumberCompat.java b/java/com/android/dialer/blocking/FilteredNumberCompat.java
deleted file mode 100644
index 71af340..0000000
--- a/java/com/android/dialer/blocking/FilteredNumberCompat.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.blocking;
-
-import android.app.FragmentManager;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.preference.PreferenceManager;
-import android.provider.BlockedNumberContract;
-import android.provider.BlockedNumberContract.BlockedNumbers;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.telecom.TelecomManager;
-import android.telephony.PhoneNumberUtils;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
-import com.android.dialer.strictmode.StrictModeUtils;
-import com.android.dialer.telecom.TelecomUtil;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Compatibility class to encapsulate logic to switch between call blocking using {@link
- * com.android.dialer.database.FilteredNumberContract} and using {@link
- * android.provider.BlockedNumberContract}. This class should be used rather than explicitly
- * referencing columns from either contract class in situations where both blocking solutions may be
- * used.
- */
-@Deprecated
-public class FilteredNumberCompat {
-
-  private static Boolean canAttemptBlockOperationsForTest;
-
-  @VisibleForTesting
-  public static final String HAS_MIGRATED_TO_NEW_BLOCKING_KEY = "migratedToNewBlocking";
-
-  /** @return The column name for ID in the filtered number database. */
-  public static String getIdColumnName(Context context) {
-    return useNewFiltering(context) ? BlockedNumbers.COLUMN_ID : FilteredNumberColumns._ID;
-  }
-
-  /**
-   * @return The column name for type in the filtered number database. Will be {@code null} for the
-   *     framework blocking implementation.
-   */
-  @Nullable
-  public static String getTypeColumnName(Context context) {
-    return useNewFiltering(context) ? null : FilteredNumberColumns.TYPE;
-  }
-
-  /**
-   * @return The column name for source in the filtered number database. Will be {@code null} for
-   *     the framework blocking implementation
-   */
-  @Nullable
-  public static String getSourceColumnName(Context context) {
-    return useNewFiltering(context) ? null : FilteredNumberColumns.SOURCE;
-  }
-
-  /** @return The column name for the original number in the filtered number database. */
-  public static String getOriginalNumberColumnName(Context context) {
-    return useNewFiltering(context)
-        ? BlockedNumbers.COLUMN_ORIGINAL_NUMBER
-        : FilteredNumberColumns.NUMBER;
-  }
-
-  /**
-   * @return The column name for country iso in the filtered number database. Will be {@code null}
-   *     the framework blocking implementation
-   */
-  @Nullable
-  public static String getCountryIsoColumnName(Context context) {
-    return useNewFiltering(context) ? null : FilteredNumberColumns.COUNTRY_ISO;
-  }
-
-  /** @return The column name for the e164 formatted number in the filtered number database. */
-  public static String getE164NumberColumnName(Context context) {
-    return useNewFiltering(context)
-        ? BlockedNumbers.COLUMN_E164_NUMBER
-        : FilteredNumberColumns.NORMALIZED_NUMBER;
-  }
-
-  /**
-   * @return {@code true} if the current SDK version supports using new filtering, {@code false}
-   *     otherwise.
-   */
-  public static boolean canUseNewFiltering() {
-    return true;
-  }
-
-  /**
-   * @return {@code true} if the new filtering should be used, i.e. it's enabled and any necessary
-   *     migration has been performed, {@code false} otherwise.
-   */
-  public static boolean useNewFiltering(Context context) {
-    return !ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean("debug_force_dialer_filtering", false)
-        && canUseNewFiltering()
-        && hasMigratedToNewBlocking(context);
-  }
-
-  /**
-   * @return {@code true} if the user has migrated to use {@link
-   *     android.provider.BlockedNumberContract} blocking, {@code false} otherwise.
-   */
-  public static boolean hasMigratedToNewBlocking(Context context) {
-    return StrictModeUtils.bypass(
-        () ->
-            PreferenceManager.getDefaultSharedPreferences(context)
-                .getBoolean(HAS_MIGRATED_TO_NEW_BLOCKING_KEY, false));
-  }
-
-  /**
-   * Called to inform this class whether the user has fully migrated to use {@link
-   * android.provider.BlockedNumberContract} blocking or not.
-   *
-   * @param hasMigrated {@code true} if the user has migrated, {@code false} otherwise.
-   */
-  public static void setHasMigratedToNewBlocking(Context context, boolean hasMigrated) {
-    PreferenceManager.getDefaultSharedPreferences(context)
-        .edit()
-        .putBoolean(HAS_MIGRATED_TO_NEW_BLOCKING_KEY, hasMigrated)
-        .apply();
-  }
-
-  /**
-   * Gets the content {@link Uri} for number filtering.
-   *
-   * @param id The optional id to append with the base content uri.
-   * @return The Uri for number filtering.
-   */
-  public static Uri getContentUri(Context context, @Nullable Integer id) {
-    if (id == null) {
-      return getBaseUri(context);
-    }
-    return ContentUris.withAppendedId(getBaseUri(context), id);
-  }
-
-  private static Uri getBaseUri(Context context) {
-    // Explicit version check to aid static analysis
-    return useNewFiltering(context) ? BlockedNumbers.CONTENT_URI : FilteredNumber.CONTENT_URI;
-  }
-
-  /**
-   * Removes any null column names from the given projection array. This method is intended to be
-   * used to strip out any column names that aren't available in every version of number blocking.
-   * Example: {@literal getContext().getContentResolver().query( someUri, // Filtering ensures that
-   * no non-existent columns are queried FilteredNumberCompat.filter(new String[]
-   * {FilteredNumberCompat.getIdColumnName(), FilteredNumberCompat.getTypeColumnName()},
-   * FilteredNumberCompat.getE164NumberColumnName() + " = ?", new String[] {e164Number}); }
-   *
-   * @param projection The projection array.
-   * @return The filtered projection array.
-   */
-  @Nullable
-  public static String[] filter(@Nullable String[] projection) {
-    if (projection == null) {
-      return null;
-    }
-    List<String> filtered = new ArrayList<>();
-    for (String column : projection) {
-      if (column != null) {
-        filtered.add(column);
-      }
-    }
-    return filtered.toArray(new String[filtered.size()]);
-  }
-
-  /**
-   * Creates a new {@link ContentValues} suitable for inserting in the filtered number table.
-   *
-   * @param number The unformatted number to insert.
-   * @param e164Number (optional) The number to insert formatted to E164 standard.
-   * @param countryIso (optional) The country iso to use to format the number.
-   * @return The ContentValues to insert.
-   * @throws NullPointerException If number is null.
-   */
-  public static ContentValues newBlockNumberContentValues(
-      Context context, String number, @Nullable String e164Number, @Nullable String countryIso) {
-    ContentValues contentValues = new ContentValues();
-    contentValues.put(getOriginalNumberColumnName(context), Objects.requireNonNull(number));
-    if (!useNewFiltering(context)) {
-      if (e164Number == null) {
-        e164Number = PhoneNumberUtils.formatNumberToE164(number, countryIso);
-      }
-      contentValues.put(getE164NumberColumnName(context), e164Number);
-      contentValues.put(getCountryIsoColumnName(context), countryIso);
-      contentValues.put(getTypeColumnName(context), FilteredNumberTypes.BLOCKED_NUMBER);
-      contentValues.put(getSourceColumnName(context), FilteredNumberSources.USER);
-    }
-    return contentValues;
-  }
-
-  /**
-   * Shows block number migration dialog if necessary.
-   *
-   * @param fragmentManager The {@link FragmentManager} used to show fragments.
-   * @param listener The {@link BlockedNumbersMigrator.Listener} to call when migration is complete.
-   * @return boolean True if migration dialog is shown.
-   */
-  public static boolean maybeShowBlockNumberMigrationDialog(
-      Context context, FragmentManager fragmentManager, BlockedNumbersMigrator.Listener listener) {
-    if (shouldShowMigrationDialog(context)) {
-      LogUtil.i(
-          "FilteredNumberCompat.maybeShowBlockNumberMigrationDialog",
-          "maybeShowBlockNumberMigrationDialog - showing migration dialog");
-      MigrateBlockedNumbersDialogFragment.newInstance(new BlockedNumbersMigrator(context), listener)
-          .show(fragmentManager, "MigrateBlockedNumbers");
-      return true;
-    }
-    return false;
-  }
-
-  private static boolean shouldShowMigrationDialog(Context context) {
-    return canUseNewFiltering() && !hasMigratedToNewBlocking(context);
-  }
-
-  /**
-   * Creates the {@link Intent} which opens the blocked numbers management interface.
-   *
-   * @param context The {@link Context}.
-   * @return The intent.
-   */
-  public static Intent createManageBlockedNumbersIntent(Context context) {
-    // Explicit version check to aid static analysis
-    if (canUseNewFiltering() && hasMigratedToNewBlocking(context)) {
-      return context.getSystemService(TelecomManager.class).createManageBlockedNumbersIntent();
-    }
-    Intent intent = new Intent("com.android.dialer.action.BLOCKED_NUMBERS_SETTINGS");
-    intent.setPackage(context.getPackageName());
-    return intent;
-  }
-
-  /**
-   * Method used to determine if block operations are possible.
-   *
-   * @param context The {@link Context}.
-   * @return {@code true} if the app and user can block numbers, {@code false} otherwise.
-   */
-  public static boolean canAttemptBlockOperations(Context context) {
-    if (canAttemptBlockOperationsForTest != null) {
-      return canAttemptBlockOperationsForTest;
-    }
-
-    // Great Wall blocking, must be primary user and the default or system dialer
-    // TODO(maxwelb): check that we're the system Dialer
-    return TelecomUtil.isDefaultDialer(context)
-        && safeBlockedNumbersContractCanCurrentUserBlockNumbers(context);
-  }
-
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public static void setCanAttemptBlockOperationsForTest(boolean canAttempt) {
-    canAttemptBlockOperationsForTest = canAttempt;
-  }
-
-  /**
-   * Used to determine if the call blocking settings can be opened.
-   *
-   * @param context The {@link Context}.
-   * @return {@code true} if the current user can open the call blocking settings, {@code false}
-   *     otherwise.
-   */
-  public static boolean canCurrentUserOpenBlockSettings(Context context) {
-    // BlockedNumberContract blocking, verify through Contract API
-    return TelecomUtil.isDefaultDialer(context)
-        && safeBlockedNumbersContractCanCurrentUserBlockNumbers(context);
-  }
-
-  /**
-   * Calls {@link BlockedNumberContract#canCurrentUserBlockNumbers(Context)} in such a way that it
-   * never throws an exception. While on the CryptKeeper screen, the BlockedNumberContract isn't
-   * available, using this method ensures that the Dialer doesn't crash when on that screen.
-   *
-   * @param context The {@link Context}.
-   * @return the result of BlockedNumberContract#canCurrentUserBlockNumbers, or {@code false} if an
-   *     exception was thrown.
-   */
-  private static boolean safeBlockedNumbersContractCanCurrentUserBlockNumbers(Context context) {
-    try {
-      return BlockedNumberContract.canCurrentUserBlockNumbers(context);
-    } catch (Exception e) {
-      LogUtil.e(
-          "FilteredNumberCompat.safeBlockedNumbersContractCanCurrentUserBlockNumbers",
-          "Exception while querying BlockedNumberContract",
-          e);
-      return false;
-    }
-  }
-}
diff --git a/java/com/android/dialer/blocking/FilteredNumberProvider.java b/java/com/android/dialer/blocking/FilteredNumberProvider.java
index 547892b..970659a 100644
--- a/java/com/android/dialer/blocking/FilteredNumberProvider.java
+++ b/java/com/android/dialer/blocking/FilteredNumberProvider.java
@@ -1,176 +1,40 @@
 /*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
+ * SPDX-FileCopyrightText: The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
  */
-
 package com.android.dialer.blocking;
 
 import android.content.ContentProvider;
-import android.content.ContentUris;
 import android.content.ContentValues;
-import android.content.UriMatcher;
 import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteQueryBuilder;
 import android.net.Uri;
-import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.database.Database;
-import com.android.dialer.database.DialerDatabaseHelper;
-import com.android.dialer.database.FilteredNumberContract;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-import com.android.dialer.location.GeoUtil;
 
-/** Filtered number content provider. */
-@Deprecated
+/** Stub class for upgrade path */
 public class FilteredNumberProvider extends ContentProvider {
+    @Override
+    public boolean onCreate() {
+        return false;
+    }
+    @Override
+    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+                        String sortOrder) {
+        return null;
+    }
+    @Override
+    public String getType(Uri uri) {
+        return null;
+    }
+    @Override
+    public Uri insert(Uri uri, ContentValues values) {
+        return null;
+    }
 
-  private static final int FILTERED_NUMBERS_TABLE = 1;
-  private static final int FILTERED_NUMBERS_TABLE_ID = 2;
-  private static final UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
-  private DialerDatabaseHelper dialerDatabaseHelper;
-
-  @Override
-  public boolean onCreate() {
-    dialerDatabaseHelper = Database.get(getContext()).getDatabaseHelper(getContext());
-    if (dialerDatabaseHelper == null) {
-      return false;
+    @Override
+    public int delete(Uri uri, String selection, String[] selectionArgs) {
+        return 0;
     }
-    uriMatcher.addURI(
-        FilteredNumberContract.AUTHORITY,
-        FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE,
-        FILTERED_NUMBERS_TABLE);
-    uriMatcher.addURI(
-        FilteredNumberContract.AUTHORITY,
-        FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE + "/#",
-        FILTERED_NUMBERS_TABLE_ID);
-    return true;
-  }
-
-  @Override
-  public Cursor query(
-      Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
-    final SQLiteDatabase db = dialerDatabaseHelper.getReadableDatabase();
-    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
-    qb.setTables(DialerDatabaseHelper.Tables.FILTERED_NUMBER_TABLE);
-    final int match = uriMatcher.match(uri);
-    switch (match) {
-      case FILTERED_NUMBERS_TABLE:
-        break;
-      case FILTERED_NUMBERS_TABLE_ID:
-        qb.appendWhere(FilteredNumberColumns._ID + "=" + ContentUris.parseId(uri));
-        break;
-      default:
-        throw new IllegalArgumentException("Unknown uri: " + uri);
+    @Override
+    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+        return 0;
     }
-    final Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, null);
-    if (c != null) {
-      c.setNotificationUri(
-          getContext().getContentResolver(), FilteredNumberContract.FilteredNumber.CONTENT_URI);
-    } else {
-      LogUtil.d("FilteredNumberProvider.query", "CURSOR WAS NULL");
-    }
-    return c;
-  }
-
-  @Override
-  public String getType(Uri uri) {
-    return FilteredNumberContract.FilteredNumber.CONTENT_ITEM_TYPE;
-  }
-
-  @Override
-  public Uri insert(Uri uri, ContentValues values) {
-    SQLiteDatabase db = dialerDatabaseHelper.getWritableDatabase();
-    setDefaultValues(values);
-    long id = db.insert(DialerDatabaseHelper.Tables.FILTERED_NUMBER_TABLE, null, values);
-    if (id < 0) {
-      return null;
-    }
-    notifyChange(uri);
-    return ContentUris.withAppendedId(uri, id);
-  }
-
-  @VisibleForTesting
-  protected long getCurrentTimeMs() {
-    return System.currentTimeMillis();
-  }
-
-  private void setDefaultValues(ContentValues values) {
-    if (values.getAsString(FilteredNumberColumns.COUNTRY_ISO) == null) {
-      values.put(FilteredNumberColumns.COUNTRY_ISO, GeoUtil.getCurrentCountryIso(getContext()));
-    }
-    if (values.getAsInteger(FilteredNumberColumns.TIMES_FILTERED) == null) {
-      values.put(FilteredNumberContract.FilteredNumberColumns.TIMES_FILTERED, 0);
-    }
-    if (values.getAsLong(FilteredNumberColumns.CREATION_TIME) == null) {
-      values.put(FilteredNumberColumns.CREATION_TIME, getCurrentTimeMs());
-    }
-  }
-
-  @Override
-  public int delete(Uri uri, String selection, String[] selectionArgs) {
-    SQLiteDatabase db = dialerDatabaseHelper.getWritableDatabase();
-    final int match = uriMatcher.match(uri);
-    switch (match) {
-      case FILTERED_NUMBERS_TABLE:
-        break;
-      case FILTERED_NUMBERS_TABLE_ID:
-        selection = getSelectionWithId(selection, ContentUris.parseId(uri));
-        break;
-      default:
-        throw new IllegalArgumentException("Unknown uri: " + uri);
-    }
-    int rows =
-        db.delete(DialerDatabaseHelper.Tables.FILTERED_NUMBER_TABLE, selection, selectionArgs);
-    if (rows > 0) {
-      notifyChange(uri);
-    }
-    return rows;
-  }
-
-  @Override
-  public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
-    SQLiteDatabase db = dialerDatabaseHelper.getWritableDatabase();
-    final int match = uriMatcher.match(uri);
-    switch (match) {
-      case FILTERED_NUMBERS_TABLE:
-        break;
-      case FILTERED_NUMBERS_TABLE_ID:
-        selection = getSelectionWithId(selection, ContentUris.parseId(uri));
-        break;
-      default:
-        throw new IllegalArgumentException("Unknown uri: " + uri);
-    }
-    int rows =
-        db.update(
-            DialerDatabaseHelper.Tables.FILTERED_NUMBER_TABLE, values, selection, selectionArgs);
-    if (rows > 0) {
-      notifyChange(uri);
-    }
-    return rows;
-  }
-
-  private String getSelectionWithId(String selection, long id) {
-    if (TextUtils.isEmpty(selection)) {
-      return FilteredNumberContract.FilteredNumberColumns._ID + "=" + id;
-    } else {
-      return selection + "AND " + FilteredNumberContract.FilteredNumberColumns._ID + "=" + id;
-    }
-  }
-
-  private void notifyChange(Uri uri) {
-    getContext().getContentResolver().notifyChange(uri, null);
-  }
 }
diff --git a/java/com/android/dialer/blocking/FilteredNumbersUtil.java b/java/com/android/dialer/blocking/FilteredNumbersUtil.java
deleted file mode 100644
index d839ef5..0000000
--- a/java/com/android/dialer/blocking/FilteredNumbersUtil.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.blocking;
-
-import android.app.Notification;
-import android.app.PendingIntent;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.os.AsyncTask;
-import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.provider.ContactsContract.Contacts;
-import android.provider.Settings;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.os.BuildCompat;
-import android.support.v4.os.UserManagerCompat;
-import android.telephony.PhoneNumberUtils;
-import android.text.TextUtils;
-import android.widget.Toast;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler.OnHasBlockedNumbersListener;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.notification.DialerNotificationManager;
-import com.android.dialer.notification.NotificationChannelId;
-import com.android.dialer.storage.StorageComponent;
-import com.android.dialer.util.PermissionsUtil;
-import java.util.concurrent.TimeUnit;
-
-/** Utility to help with tasks related to filtered numbers. */
-@Deprecated
-public class FilteredNumbersUtil {
-
-  public static final String CALL_BLOCKING_NOTIFICATION_TAG = "call_blocking";
-  public static final int CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_NOTIFICATION_ID = 10;
-  // Pref key for storing the time of end of the last emergency call in milliseconds after epoch.\
-  @VisibleForTesting
-  public static final String LAST_EMERGENCY_CALL_MS_PREF_KEY = "last_emergency_call_ms";
-  // Pref key for storing whether a notification has been dispatched to notify the user that call
-  // blocking has been disabled because of a recent emergency call.
-  protected static final String NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY =
-      "notified_call_blocking_disabled_by_emergency_call";
-  // Disable incoming call blocking if there was a call within the past 2 days.
-  static final long RECENT_EMERGENCY_CALL_THRESHOLD_MS = TimeUnit.DAYS.toMillis(2);
-
-  /**
-   * Used for testing to specify the custom threshold value, in milliseconds for whether an
-   * emergency call is "recent". The default value will be used if this custom threshold is less
-   * than zero. For example, to set this threshold to 60 seconds:
-   *
-   * <p>adb shell settings put system dialer_emergency_call_threshold_ms 60000
-   */
-  private static final String RECENT_EMERGENCY_CALL_THRESHOLD_SETTINGS_KEY =
-      "dialer_emergency_call_threshold_ms";
-
-  /** Checks if there exists a contact with {@code Contacts.SEND_TO_VOICEMAIL} set to true. */
-  public static void checkForSendToVoicemailContact(
-      final Context context, final CheckForSendToVoicemailContactListener listener) {
-    final AsyncTask task =
-        new AsyncTask<Object, Void, Boolean>() {
-          @Override
-          public Boolean doInBackground(Object... params) {
-            if (context == null || !PermissionsUtil.hasContactsReadPermissions(context)) {
-              return false;
-            }
-
-            final Cursor cursor =
-                context
-                    .getContentResolver()
-                    .query(
-                        Contacts.CONTENT_URI,
-                        ContactsQuery.PROJECTION,
-                        ContactsQuery.SELECT_SEND_TO_VOICEMAIL_TRUE,
-                        null,
-                        null);
-
-            boolean hasSendToVoicemailContacts = false;
-            if (cursor != null) {
-              try {
-                hasSendToVoicemailContacts = cursor.getCount() > 0;
-              } finally {
-                cursor.close();
-              }
-            }
-
-            return hasSendToVoicemailContacts;
-          }
-
-          @Override
-          public void onPostExecute(Boolean hasSendToVoicemailContact) {
-            if (listener != null) {
-              listener.onComplete(hasSendToVoicemailContact);
-            }
-          }
-        };
-    task.execute();
-  }
-
-  /**
-   * Blocks all the phone numbers of any contacts marked as SEND_TO_VOICEMAIL, then clears the
-   * SEND_TO_VOICEMAIL flag on those contacts.
-   */
-  public static void importSendToVoicemailContacts(
-      final Context context, final ImportSendToVoicemailContactsListener listener) {
-    Logger.get(context).logInteraction(InteractionEvent.Type.IMPORT_SEND_TO_VOICEMAIL);
-    final FilteredNumberAsyncQueryHandler mFilteredNumberAsyncQueryHandler =
-        new FilteredNumberAsyncQueryHandler(context);
-
-    final AsyncTask<Object, Void, Boolean> task =
-        new AsyncTask<Object, Void, Boolean>() {
-          @Override
-          public Boolean doInBackground(Object... params) {
-            if (context == null) {
-              return false;
-            }
-
-            // Get the phone number of contacts marked as SEND_TO_VOICEMAIL.
-            final Cursor phoneCursor =
-                context
-                    .getContentResolver()
-                    .query(
-                        Phone.CONTENT_URI,
-                        PhoneQuery.PROJECTION,
-                        PhoneQuery.SELECT_SEND_TO_VOICEMAIL_TRUE,
-                        null,
-                        null);
-
-            if (phoneCursor == null) {
-              return false;
-            }
-
-            try {
-              while (phoneCursor.moveToNext()) {
-                final String normalizedNumber =
-                    phoneCursor.getString(PhoneQuery.NORMALIZED_NUMBER_COLUMN_INDEX);
-                final String number = phoneCursor.getString(PhoneQuery.NUMBER_COLUMN_INDEX);
-                if (normalizedNumber != null) {
-                  // Block the phone number of the contact.
-                  mFilteredNumberAsyncQueryHandler.blockNumber(
-                      null, normalizedNumber, number, null);
-                }
-              }
-            } finally {
-              phoneCursor.close();
-            }
-
-            // Clear SEND_TO_VOICEMAIL on all contacts. The setting has been imported to Dialer.
-            ContentValues newValues = new ContentValues();
-            newValues.put(Contacts.SEND_TO_VOICEMAIL, 0);
-            context
-                .getContentResolver()
-                .update(
-                    Contacts.CONTENT_URI,
-                    newValues,
-                    ContactsQuery.SELECT_SEND_TO_VOICEMAIL_TRUE,
-                    null);
-
-            return true;
-          }
-
-          @Override
-          public void onPostExecute(Boolean success) {
-            if (success) {
-              if (listener != null) {
-                listener.onImportComplete();
-              }
-            } else if (context != null) {
-              String toastStr = context.getString(R.string.send_to_voicemail_import_failed);
-              Toast.makeText(context, toastStr, Toast.LENGTH_SHORT).show();
-            }
-          }
-        };
-    task.execute();
-  }
-
-  public static long getLastEmergencyCallTimeMillis(Context context) {
-    return StorageComponent.get(context)
-        .unencryptedSharedPrefs()
-        .getLong(LAST_EMERGENCY_CALL_MS_PREF_KEY, 0);
-  }
-
-  public static boolean hasRecentEmergencyCall(Context context) {
-    if (context == null) {
-      return false;
-    }
-
-    Long lastEmergencyCallTime = getLastEmergencyCallTimeMillis(context);
-    if (lastEmergencyCallTime == 0) {
-      return false;
-    }
-
-    return (System.currentTimeMillis() - lastEmergencyCallTime)
-        < getRecentEmergencyCallThresholdMs(context);
-  }
-
-  public static void recordLastEmergencyCallTime(Context context) {
-    if (context == null) {
-      return;
-    }
-
-    StorageComponent.get(context)
-        .unencryptedSharedPrefs()
-        .edit()
-        .putLong(LAST_EMERGENCY_CALL_MS_PREF_KEY, System.currentTimeMillis())
-        .putBoolean(NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY, false)
-        .apply();
-
-    if (UserManagerCompat.isUserUnlocked(context)) {
-      maybeNotifyCallBlockingDisabled(context);
-    }
-  }
-
-  public static void maybeNotifyCallBlockingDisabled(final Context context) {
-    // The Dialer is not responsible for this notification after migrating
-    if (FilteredNumberCompat.useNewFiltering(context)) {
-      return;
-    }
-    // Skip if the user has already received a notification for the most recent emergency call.
-    if (StorageComponent.get(context)
-        .unencryptedSharedPrefs()
-        .getBoolean(NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY, false)) {
-      return;
-    }
-
-    // If the user has blocked numbers, notify that call blocking is temporarily disabled.
-    FilteredNumberAsyncQueryHandler queryHandler = new FilteredNumberAsyncQueryHandler(context);
-    queryHandler.hasBlockedNumbers(
-        new OnHasBlockedNumbersListener() {
-          @Override
-          public void onHasBlockedNumbers(boolean hasBlockedNumbers) {
-            if (context == null || !hasBlockedNumbers) {
-              return;
-            }
-
-            Notification.Builder builder =
-                new Notification.Builder(context)
-                    .setSmallIcon(R.drawable.quantum_ic_block_white_24)
-                    .setContentTitle(
-                        context.getString(R.string.call_blocking_disabled_notification_title))
-                    .setContentText(
-                        context.getString(R.string.call_blocking_disabled_notification_text))
-                    .setAutoCancel(true);
-
-            if (BuildCompat.isAtLeastO()) {
-              builder.setChannelId(NotificationChannelId.DEFAULT);
-            }
-            builder.setContentIntent(
-                PendingIntent.getActivity(
-                    context,
-                    0,
-                    FilteredNumberCompat.createManageBlockedNumbersIntent(context),
-                    PendingIntent.FLAG_UPDATE_CURRENT));
-
-            DialerNotificationManager.notify(
-                context,
-                CALL_BLOCKING_NOTIFICATION_TAG,
-                CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_NOTIFICATION_ID,
-                builder.build());
-
-            // Record that the user has been notified for this emergency call.
-            StorageComponent.get(context)
-                .unencryptedSharedPrefs()
-                .edit()
-                .putBoolean(NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY, true)
-                .apply();
-          }
-        });
-  }
-
-  /**
-   * @param e164Number The e164 formatted version of the number, or {@code null} if such a format
-   *     doesn't exist.
-   * @param number The number to attempt blocking.
-   * @return {@code true} if the number can be blocked, {@code false} otherwise.
-   */
-  public static boolean canBlockNumber(Context context, String e164Number, String number) {
-    String blockableNumber = getBlockableNumber(context, e164Number, number);
-    return !TextUtils.isEmpty(blockableNumber)
-        && !PhoneNumberUtils.isEmergencyNumber(blockableNumber);
-  }
-
-  /**
-   * @param e164Number The e164 formatted version of the number, or {@code null} if such a format
-   *     doesn't exist..
-   * @param number The number to attempt blocking.
-   * @return The version of the given number that can be blocked with the current blocking solution.
-   */
-  @Nullable
-  public static String getBlockableNumber(
-      Context context, @Nullable String e164Number, String number) {
-    if (!FilteredNumberCompat.useNewFiltering(context)) {
-      return e164Number;
-    }
-    return TextUtils.isEmpty(e164Number) ? number : e164Number;
-  }
-
-  private static long getRecentEmergencyCallThresholdMs(Context context) {
-    if (LogUtil.isVerboseEnabled()) {
-      long thresholdMs =
-          Settings.System.getLong(
-              context.getContentResolver(), RECENT_EMERGENCY_CALL_THRESHOLD_SETTINGS_KEY, 0);
-      return thresholdMs > 0 ? thresholdMs : RECENT_EMERGENCY_CALL_THRESHOLD_MS;
-    } else {
-      return RECENT_EMERGENCY_CALL_THRESHOLD_MS;
-    }
-  }
-
-  public interface CheckForSendToVoicemailContactListener {
-
-    void onComplete(boolean hasSendToVoicemailContact);
-  }
-
-  public interface ImportSendToVoicemailContactsListener {
-
-    void onImportComplete();
-  }
-
-  private static class ContactsQuery {
-
-    static final String[] PROJECTION = {Contacts._ID};
-
-    static final String SELECT_SEND_TO_VOICEMAIL_TRUE = Contacts.SEND_TO_VOICEMAIL + "=1";
-
-    static final int ID_COLUMN_INDEX = 0;
-  }
-
-  public static class PhoneQuery {
-
-    public static final String[] PROJECTION = {Contacts._ID, Phone.NORMALIZED_NUMBER, Phone.NUMBER};
-
-    public static final int ID_COLUMN_INDEX = 0;
-    public static final int NORMALIZED_NUMBER_COLUMN_INDEX = 1;
-    public static final int NUMBER_COLUMN_INDEX = 2;
-
-    public static final String SELECT_SEND_TO_VOICEMAIL_TRUE = Contacts.SEND_TO_VOICEMAIL + "=1";
-  }
-}
diff --git a/java/com/android/dialer/blocking/MigrateBlockedNumbersDialogFragment.java b/java/com/android/dialer/blocking/MigrateBlockedNumbersDialogFragment.java
deleted file mode 100644
index 9a3b647..0000000
--- a/java/com/android/dialer/blocking/MigrateBlockedNumbersDialogFragment.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.blocking;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnShowListener;
-import android.os.Bundle;
-import android.view.View;
-import com.android.dialer.blocking.BlockedNumbersMigrator.Listener;
-import java.util.Objects;
-
-/**
- * Dialog fragment shown to users when they need to migrate to use {@link
- * android.provider.BlockedNumberContract} for blocking.
- */
-@Deprecated
-public class MigrateBlockedNumbersDialogFragment extends DialogFragment {
-
-  private BlockedNumbersMigrator blockedNumbersMigrator;
-  private BlockedNumbersMigrator.Listener migrationListener;
-
-  /**
-   * Creates a new MigrateBlockedNumbersDialogFragment.
-   *
-   * @param blockedNumbersMigrator The {@link BlockedNumbersMigrator} which will be used to migrate
-   *     the numbers.
-   * @param migrationListener The {@link BlockedNumbersMigrator.Listener} to call when the migration
-   *     is complete.
-   * @return The new MigrateBlockedNumbersDialogFragment.
-   * @throws NullPointerException if blockedNumbersMigrator or migrationListener are {@code null}.
-   */
-  public static DialogFragment newInstance(
-      BlockedNumbersMigrator blockedNumbersMigrator,
-      BlockedNumbersMigrator.Listener migrationListener) {
-    MigrateBlockedNumbersDialogFragment fragment = new MigrateBlockedNumbersDialogFragment();
-    fragment.blockedNumbersMigrator = Objects.requireNonNull(blockedNumbersMigrator);
-    fragment.migrationListener = Objects.requireNonNull(migrationListener);
-    return fragment;
-  }
-
-  @Override
-  public Dialog onCreateDialog(Bundle savedInstanceState) {
-    super.onCreateDialog(savedInstanceState);
-    AlertDialog dialog =
-        new AlertDialog.Builder(getActivity())
-            .setTitle(R.string.migrate_blocked_numbers_dialog_title)
-            .setMessage(R.string.migrate_blocked_numbers_dialog_message)
-            .setPositiveButton(R.string.migrate_blocked_numbers_dialog_allow_button, null)
-            .setNegativeButton(R.string.migrate_blocked_numbers_dialog_cancel_button, null)
-            .create();
-    // The Dialog's buttons aren't available until show is called, so an OnShowListener
-    // is used to set the positive button callback.
-    dialog.setOnShowListener(
-        new OnShowListener() {
-          @Override
-          public void onShow(DialogInterface dialog) {
-            final AlertDialog alertDialog = (AlertDialog) dialog;
-            alertDialog
-                .getButton(AlertDialog.BUTTON_POSITIVE)
-                .setOnClickListener(newPositiveButtonOnClickListener(alertDialog));
-          }
-        });
-    return dialog;
-  }
-
-  /*
-   * Creates a new View.OnClickListener to be used as the positive button in this dialog. The
-   * OnClickListener will grey out the dialog's positive and negative buttons while the migration
-   * is underway, and close the dialog once the migrate is complete.
-   */
-  private View.OnClickListener newPositiveButtonOnClickListener(final AlertDialog alertDialog) {
-    return new View.OnClickListener() {
-      @Override
-      public void onClick(View v) {
-        alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
-        alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);
-        blockedNumbersMigrator.migrate(
-            new Listener() {
-              @Override
-              public void onComplete() {
-                alertDialog.dismiss();
-                migrationListener.onComplete();
-              }
-            });
-      }
-    };
-  }
-
-  @Override
-  public void onPause() {
-    // The dialog is dismissed and state is cleaned up onPause, i.e. rotation.
-    dismiss();
-    blockedNumbersMigrator = null;
-    migrationListener = null;
-    super.onPause();
-  }
-}
diff --git a/java/com/android/dialer/blocking/res/drawable/blocked_contact.xml b/java/com/android/dialer/blocking/res/drawable/blocked_contact.xml
index 905616d..0d86252 100644
--- a/java/com/android/dialer/blocking/res/drawable/blocked_contact.xml
+++ b/java/com/android/dialer/blocking/res/drawable/blocked_contact.xml
@@ -28,7 +28,7 @@
   </item>
 
   <item
-    android:drawable="@drawable/quantum_ic_report_white_24"
+    android:drawable="@drawable/quantum_ic_report_vd_theme_24"
     android:gravity="center"
     android:height="18dp"
     android:width="18dp"/>
diff --git a/java/com/android/dialer/blocking/res/values-af/strings.xml b/java/com/android/dialer/blocking/res/values-af/strings.xml
deleted file mode 100644
index d1b87d5..0000000
--- a/java/com/android/dialer/blocking/res/values-af/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Nuwe, vereenvoudigde blokkering</string>
-  <string name="migrate_blocked_numbers_dialog_message">Om jou beter te beskerm, moet Phone die manier verander waarop blokkering werk. Jou geblokkeerde nommers sal nou sowel oproepe as SMS\'e keer en kan met ander programme gedeel word.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Laat toe</string>
-  <string name="old_block_number_confirmation_title">Blokkeer%1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Oproepe van hierdie nommer af sal geblokkeer word en stemboodskappe sal outomaties uitgevee word.</string>
-  <string name="block_number_confirmation_message_no_vvm">Oproepe van hierdie nommer af sal geblokkeer word, maar die beller sal dalk steeds vir jou stemboodskappe kan los.</string>
-  <string name="block_number_confirmation_message_new_filtering">Jy sal nie meer oproepe of SMS\'e van hierdie nommer ontvang nie.</string>
-  <string name="block_number_ok">BLOKKEER</string>
-  <string name="unblock_number_confirmation_title">Deblokkeer%1$s?</string>
-  <string name="unblock_number_ok">DEBLOKKEER</string>
-  <string name="invalidNumber">%1$sis ongeldig.</string>
-  <string name="snackbar_number_blocked">%1$s is geblokkeer</string>
-  <string name="snackbar_number_unblocked">%1$s is gedeblokkeer</string>
-  <string name="send_to_voicemail_import_failed">Kon nie invoer nie</string>
-  <string name="call_blocking_disabled_notification_title">Oproepblokkering is vir 48 uur gedeaktiveer</string>
-  <string name="call_blocking_disabled_notification_text">Gedeaktiveer omdat \'n noodoproep gemaak is.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-am/strings.xml b/java/com/android/dialer/blocking/res/values-am/strings.xml
deleted file mode 100644
index 68de90f..0000000
--- a/java/com/android/dialer/blocking/res/values-am/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">አዲስ፣ የተቃለለ ማገድ</string>
-  <string name="migrate_blocked_numbers_dialog_message">እርስዎን በተሻለ ሁኔታ መጠበቅ እንዲችል ስልክ ማገድ እንዴት እንደሚሰራ መቀየር አለበት። የታገዱ ቁጥሮችዎ አሁን ጥሪዎችም ጽሑፎችም መላክ ያቆማሉ፣ እና ከሌሎች መተግበሪያዎች ጋር ሊጋሩ ይችላሉ።</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">ፍቀድ</string>
-  <string name="old_block_number_confirmation_title">%1$sን አግድ?</string>
-  <string name="block_number_confirmation_message_vvm">ከዚህ ቁጥር የሚመጡ ጥሪዎች ይታገዳሉ፣ እና የድምጽ መልዕክቶች በራስ-ሰር ይሰረዛሉ።</string>
-  <string name="block_number_confirmation_message_no_vvm">ከዚህ ቁጥር የሚመጡ ጥሪዎች ይታገዳሉ፣ ነገር ግን ደዋዩ አሁንም የድምጽ መልዕክቶችን ሊተዉልዎ ይችላል።</string>
-  <string name="block_number_confirmation_message_new_filtering">ከአሁን በኋላ ከዚህ ቁጥር የሚመጡ ጥሪዎችን ወይም ጽሑፎችን አይቀበሉም።</string>
-  <string name="block_number_ok">አግድ</string>
-  <string name="unblock_number_confirmation_title">ከ%1$s እግድ ይነሳ?</string>
-  <string name="unblock_number_ok">እገዳ አንሳ</string>
-  <string name="invalidNumber">%1$s ልክ ያልኾነ ነው።</string>
-  <string name="snackbar_number_blocked">%1$s ታግዷል</string>
-  <string name="snackbar_number_unblocked">የ%1$s እገዳ ተነስቷል</string>
-  <string name="send_to_voicemail_import_failed">ማስመጣት አልተሳካም</string>
-  <string name="call_blocking_disabled_notification_title">የጥሪ እገዳ ለ48 ሰዓቶች ተሰናክሏል።</string>
-  <string name="call_blocking_disabled_notification_text">የአስቸኳይ አደጋ ጥሪ ስለተደረገ ተሰናክሏል።</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ar/strings.xml b/java/com/android/dialer/blocking/res/values-ar/strings.xml
deleted file mode 100644
index a783e0b..0000000
--- a/java/com/android/dialer/blocking/res/values-ar/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">حظر جديد ومبسط</string>
-  <string name="migrate_blocked_numbers_dialog_message">لحمايتك بشكل أفضل، يحتاج الهاتف إلى تغيير آلية تنفيذ الحظر. تؤدي الآن ميزة حظر الأرقام إلى إيقاف كل من المكالمات والرسائل النصية، كما أن ذلك الحظر يمكن أن يمتد إلى تطبيقات أخرى.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">سماح</string>
-  <string name="old_block_number_confirmation_title">هل تريد حظر %1$s؟</string>
-  <string name="block_number_confirmation_message_vvm">سيتم حظر المكالمات الواردة من هذا الرقم كما سيتم تلقائيًا حذف الرسائل الصوتية.</string>
-  <string name="block_number_confirmation_message_no_vvm">سيتم حظر المكالمات من هذا الرقم، إلا أنه سيظل بإمكان المتصل ترك رسائل صوتية.</string>
-  <string name="block_number_confirmation_message_new_filtering">لن تتلقي المكالمات أو المراسلات النصية بعد الآن من هذا الرقم.</string>
-  <string name="block_number_ok">حظر</string>
-  <string name="unblock_number_confirmation_title">هل تريد إزالة حظر %1$s؟</string>
-  <string name="unblock_number_ok">إلغاء الحظر</string>
-  <string name="invalidNumber">%1$s غير صالح.</string>
-  <string name="snackbar_number_blocked">تم حظر %1$s</string>
-  <string name="snackbar_number_unblocked">تم إلغاء حظر %1$s</string>
-  <string name="send_to_voicemail_import_failed">تعذّر الاستيراد</string>
-  <string name="call_blocking_disabled_notification_title">تم إيقاف حظر المكالمات لمدة 48 ساعة.</string>
-  <string name="call_blocking_disabled_notification_text">تم الإيقاف نظرًا لإجراء مكالمة طوارئ.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-az/strings.xml b/java/com/android/dialer/blocking/res/values-az/strings.xml
deleted file mode 100644
index a72e4e6..0000000
--- a/java/com/android/dialer/blocking/res/values-az/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Yeni, sadələşdirilmiş bloklama</string>
-  <string name="migrate_blocked_numbers_dialog_message">Sizi daha yaxşı qorumaq üçün, Phone blok etmənin işləmə formasını dəyişməlidir. Bloklanmış nömrələriniz indi zəng və mətnləri dayandıracaq və digər tətbiqlər ilə paylaşıla bilər.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">İcazə verin</string>
-  <string name="old_block_number_confirmation_title">%1$s blok edilsin?</string>
-  <string name="block_number_confirmation_message_vvm">Bu nömrədən zənglər blok ediləcək və səsli məktublar avtomatik silinəcək.</string>
-  <string name="block_number_confirmation_message_no_vvm">Bu nömrədən zənglər bağlanacaq, amma zəng edən səsli zəng qoya bilər.</string>
-  <string name="block_number_confirmation_message_new_filtering">Bu nömrədən daha zəng və ya mesaj almayacaqsınız.</string>
-  <string name="block_number_ok">BLOK</string>
-  <string name="unblock_number_confirmation_title">%1$s blokdan çıxarılsın?</string>
-  <string name="unblock_number_ok">BLOKDAN ÇIXARIN</string>
-  <string name="invalidNumber">%1$s yanlışdır.</string>
-  <string name="snackbar_number_blocked">%1$s blok edilib</string>
-  <string name="snackbar_number_unblocked">%1$s blokdan çıxarılıb</string>
-  <string name="send_to_voicemail_import_failed">Import alınmadı</string>
-  <string name="call_blocking_disabled_notification_title">Çağrının bloklanması 48 saatlıq deaktiv edildi</string>
-  <string name="call_blocking_disabled_notification_text">Təcili zəng olduğu üçün deaktiv edildi.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/blocking/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 2a3bae8..0000000
--- a/java/com/android/dialer/blocking/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Novo, jednostavnije blokiranje</string>
-  <string name="migrate_blocked_numbers_dialog_message">Telefon treba da promeni način na koji blokiranje funkcioniše da bi vam pružio bolju zaštitu. Sa blokiranih brojeva više nećete primati ni pozive ni SMS-ove, ali možete da ih delite sa drugim aplikacijama.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Dozvoli</string>
-  <string name="old_block_number_confirmation_title">Želite li da blokirate %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Pozivi sa ovog broja će biti blokirani i poruke govorne pošte će se automatski brisati.</string>
-  <string name="block_number_confirmation_message_no_vvm">Pozivi sa ovog broja će biti blokirani, ali pozivalac i dalje može da vam ostavlja poruke govorne pošte.</string>
-  <string name="block_number_confirmation_message_new_filtering">Više nećete primati pozive ni SMS-ove sa ovog broja.</string>
-  <string name="block_number_ok">BLOKIRAJ</string>
-  <string name="unblock_number_confirmation_title">Želite li da deblokirate %1$s?</string>
-  <string name="unblock_number_ok">DEBLOKIRAJ</string>
-  <string name="invalidNumber">%1$s je nevažeći.</string>
-  <string name="snackbar_number_blocked">%1$s je blokiran</string>
-  <string name="snackbar_number_unblocked">%1$s je deblokiran</string>
-  <string name="send_to_voicemail_import_failed">Uvoz nije uspeo</string>
-  <string name="call_blocking_disabled_notification_title">Blokiranje poziva je onemogućeno na 48 sati</string>
-  <string name="call_blocking_disabled_notification_text">Onemogućeno je zato što je upućen hitan poziv.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-be/strings.xml b/java/com/android/dialer/blocking/res/values-be/strings.xml
deleted file mode 100644
index 1de602e..0000000
--- a/java/com/android/dialer/blocking/res/values-be/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Новае спрошчанае блакіраванне</string>
-  <string name="migrate_blocked_numbers_dialog_message">Каб лепш вас абараняць, Тэлефон павінен змяніць спосаб блакіроўкі. Зараз вашы заблакіраваныя нумары не могуць выкарыстоўвацца для выклікаў і перадачы тэкставых паведамленняў і могуць выкарыстоўвацца сумесна з іншымі праграмамі.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Дазволіць</string>
-  <string name="old_block_number_confirmation_title">Заблакіраваць нумар%1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Выклікі з гэтага нумара будуць блакіравацца, а паведамленні галасавой пошты - аўтаматычна выдаляцца.</string>
-  <string name="block_number_confirmation_message_no_vvm">Выклікі з гэтага нумара будуць блакіравацца, але абанент усё яшчэ зможа пакінуць вам паведамленне галасавой пошты.</string>
-  <string name="block_number_confirmation_message_new_filtering">Вы больш не будзеце атрымліваць выклікі або SMS з гэтага нумара.</string>
-  <string name="block_number_ok">БЛАКІРАВАЦЬ</string>
-  <string name="unblock_number_confirmation_title">Разблакіраваць нумар%1$s?</string>
-  <string name="unblock_number_ok">РАЗБЛАКІРАВАЦЬ</string>
-  <string name="invalidNumber">Нумар %1$sнесапраўдны.</string>
-  <string name="snackbar_number_blocked">%1$s заблакіраваны</string>
-  <string name="snackbar_number_unblocked">Нумар %1$sразблакіраваны</string>
-  <string name="send_to_voicemail_import_failed">Імпарт не ўдаўся</string>
-  <string name="call_blocking_disabled_notification_title">Блакіроўка выклікаў адключана на 48 гадзін</string>
-  <string name="call_blocking_disabled_notification_text">Адключана, таму што быў зроблены экстранны выклік.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-bg/strings.xml b/java/com/android/dialer/blocking/res/values-bg/strings.xml
deleted file mode 100644
index 1809a2f..0000000
--- a/java/com/android/dialer/blocking/res/values-bg/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Ново и лесно блокиране</string>
-  <string name="migrate_blocked_numbers_dialog_message">За да ви защитава по-добре, Phone трябва да промени начина на работа на функцията за блокиране. Вече няма да получавате обаждания и текстови съобщения от блокираните номера. Възможно е тези номера да бъдат споделени с други приложения.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Разрешаване</string>
-  <string name="old_block_number_confirmation_title">Да се блокира ли %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Обажданията от този номер ще бъдат блокирани, а гласовите съобщения – автоматично изтривани.</string>
-  <string name="block_number_confirmation_message_no_vvm">Обажданията от този номер ще бъдат блокирани, но обаждащият се пак може да е в състояние да ви оставя гласови съобщения.</string>
-  <string name="block_number_confirmation_message_new_filtering">Повече няма да получавате обаждания или SMS от този номер.</string>
-  <string name="block_number_ok">БЛОКИРАНЕ</string>
-  <string name="unblock_number_confirmation_title">Да се отблокира ли %1$s?</string>
-  <string name="unblock_number_ok">ОТБЛОКИРАНЕ</string>
-  <string name="invalidNumber">Номер %1$s е невалиден.</string>
-  <string name="snackbar_number_blocked">Блокирахте %1$s</string>
-  <string name="snackbar_number_unblocked">Отблокирахте %1$s</string>
-  <string name="send_to_voicemail_import_failed">Импортирането не бе успешно</string>
-  <string name="call_blocking_disabled_notification_title">Блокирането на обажданията е деактивирано за 48 часа</string>
-  <string name="call_blocking_disabled_notification_text">Деактивирано, тъй като бе извършено спешно обаждане.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-bn/strings.xml b/java/com/android/dialer/blocking/res/values-bn/strings.xml
deleted file mode 100644
index 66074b8..0000000
--- a/java/com/android/dialer/blocking/res/values-bn/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">নতুন, সরলীকৃত অবরুদ্ধ করার ব্যবস্থা</string>
-  <string name="migrate_blocked_numbers_dialog_message">আপনাকে আরও ভালো সুরক্ষা দিতে, \'ফোন\' এর ব্লক করার পদ্ধতি পরিবর্তন করতে হবে৷ আপনার ব্লক করা নম্বরগুলি থেকে আসা কলগুলি এবং পাঠ্যবার্তা উভয়ই থামানো হবে এবং অন্যান্য অ্যাপ্লিকেশানের সাথে শেয়ার করা হতে পারে৷</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">অনুমতি দিন</string>
-  <string name="old_block_number_confirmation_title">%1$s ব্লক করবেন?</string>
-  <string name="block_number_confirmation_message_vvm">এই নম্বর থেকে আসা কলগুলি অবরোধ করা হবে এবং ভয়েসমেলগুলি স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে৷</string>
-  <string name="block_number_confirmation_message_no_vvm">এই নম্বর থেকে আসা কলগুলি অবরোধ করা হবে, কিন্তু কলার হয়ত এখনও আপনাকে ভয়েসমেলগুলি পাঠাতে পারবে৷</string>
-  <string name="block_number_confirmation_message_new_filtering">আপনি এই নম্বর থেকে আর কল বা পাঠ্যবার্তাগুলি পাবেন না৷</string>
-  <string name="block_number_ok">অবরোধ করুন</string>
-  <string name="unblock_number_confirmation_title">%1$s আনব্লক করবেন?</string>
-  <string name="unblock_number_ok">অবরোধ মুক্ত করুন</string>
-  <string name="invalidNumber">%1$s নম্বরটি ভুল।</string>
-  <string name="snackbar_number_blocked">%1$s অবরোধ করা হয়েছে</string>
-  <string name="snackbar_number_unblocked">%1$s আনব্লক করা হয়েছে</string>
-  <string name="send_to_voicemail_import_failed">আমদানি ব্যর্থ হয়েছে</string>
-  <string name="call_blocking_disabled_notification_title">৪৮ ঘন্টার জন্য কল অবরোধ করা অক্ষম করা হয়েছে</string>
-  <string name="call_blocking_disabled_notification_text">কোনো জরুরি কল করার কারণে অক্ষম করা হয়েছে৷</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-bs/strings.xml b/java/com/android/dialer/blocking/res/values-bs/strings.xml
deleted file mode 100644
index 6d2fabc..0000000
--- a/java/com/android/dialer/blocking/res/values-bs/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Novo, jednostavnije blokiranje</string>
-  <string name="migrate_blocked_numbers_dialog_message">Radi bolje zaštite, Telefon treba promijeniti način rada blokiranja. S blokiranih brojeva od sada nećete primati ni pozive ni SMS-ove i blokirani brojevi će se moći dijeliti s drugim aplikacijama.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Dozvoli</string>
-  <string name="old_block_number_confirmation_title">Blokirati broj %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Pozivi s ovog broja će biti blokirani, a govorna pošta će se automatski brisati.</string>
-  <string name="block_number_confirmation_message_no_vvm">Pozivi s ovog broja će biti blokirani, ali pozivalac će vam moći ostavljati govornu poštu.</string>
-  <string name="block_number_confirmation_message_new_filtering">Više nećete primati pozive i SMS poruke s ovog broja.</string>
-  <string name="block_number_ok">BLOKIRAJ</string>
-  <string name="unblock_number_confirmation_title">Deblokirati broj %1$s?</string>
-  <string name="unblock_number_ok">DEBLOKIRAJ</string>
-  <string name="invalidNumber">Broj %1$s je nevažeći.</string>
-  <string name="snackbar_number_blocked">%1$s je blokiran</string>
-  <string name="snackbar_number_unblocked">Broj %1$s je deblokiran</string>
-  <string name="send_to_voicemail_import_failed">Uvoz nije uspio</string>
-  <string name="call_blocking_disabled_notification_title">Blokiranje poziva je onemogućeno na 48 sati</string>
-  <string name="call_blocking_disabled_notification_text">Onemogućeno jer je upućen hitni poziv.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ca/strings.xml b/java/com/android/dialer/blocking/res/values-ca/strings.xml
deleted file mode 100644
index dbc8e2b..0000000
--- a/java/com/android/dialer/blocking/res/values-ca/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Bloqueig nou i simplificat</string>
-  <string name="migrate_blocked_numbers_dialog_message">Per protegir-te millor, l\'aplicació Telèfon ha de canviar la manera com funciona el bloqueig. No rebràs trucades ni missatges de text dels números bloquejats, i pot ser que compartim aquests números amb altres aplicacions.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Permet</string>
-  <string name="old_block_number_confirmation_title">Vols bloquejar el número %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Es bloquejaran les trucades d\'aquest número i els missatges de veu se suprimiran automàticament.</string>
-  <string name="block_number_confirmation_message_no_vvm">Es bloquejaran les trucades d\'aquest número, però és possible que continuïn deixant-te missatges de veu.</string>
-  <string name="block_number_confirmation_message_new_filtering">Deixaràs de rebre trucades i missatges de text d\'aquest número.</string>
-  <string name="block_number_ok">BLOQUEJA</string>
-  <string name="unblock_number_confirmation_title">Vols desbloquejar el número %1$s?</string>
-  <string name="unblock_number_ok">DESBLOQUEJA</string>
-  <string name="invalidNumber">El número %1$s no és vàlid.</string>
-  <string name="snackbar_number_blocked">S\'ha bloquejat el número %1$s</string>
-  <string name="snackbar_number_unblocked">S\'ha desbloquejat el número %1$s</string>
-  <string name="send_to_voicemail_import_failed">Error en la importació</string>
-  <string name="call_blocking_disabled_notification_title">El bloqueig de trucades s\'ha desactivat durant 48 hores</string>
-  <string name="call_blocking_disabled_notification_text">S\'ha desactivat perquè s\'ha fet una trucada d\'emergència.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-cs/strings.xml b/java/com/android/dialer/blocking/res/values-cs/strings.xml
deleted file mode 100644
index 7744ee1..0000000
--- a/java/com/android/dialer/blocking/res/values-cs/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Nové zjednodušené blokování</string>
-  <string name="migrate_blocked_numbers_dialog_message">Z důvodu zvýšení zabezpečení potřebuje aplikace Telefon změnit nastavení blokování. Blokovaná čísla vám teď nebudou moci volat ani psát SMS a mohou být sdílena s dalšími aplikacemi.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Povolit</string>
-  <string name="old_block_number_confirmation_title">Blokovat číslo %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Volání z tohoto čísla budou zablokována. Hlasové zprávy budou automaticky smazány.</string>
-  <string name="block_number_confirmation_message_no_vvm">Volání z tohoto čísla budou zablokována, avšak volající vám bude moci zanechat hlasovou zprávu.</string>
-  <string name="block_number_confirmation_message_new_filtering">Z tohoto čísla už nebudete přijímat hovory ani zprávy SMS.</string>
-  <string name="block_number_ok">BLOKOVAT</string>
-  <string name="unblock_number_confirmation_title">Odblokovat číslo %1$s?</string>
-  <string name="unblock_number_ok">ODBLOKOVAT</string>
-  <string name="invalidNumber">Číslo %1$s je neplatné.</string>
-  <string name="snackbar_number_blocked">Číslo %1$s zablokováno</string>
-  <string name="snackbar_number_unblocked">Číslo %1$s odblokováno</string>
-  <string name="send_to_voicemail_import_failed">Import se nezdařil.</string>
-  <string name="call_blocking_disabled_notification_title">Blokování hovorů je vypnuto na 48 hodin</string>
-  <string name="call_blocking_disabled_notification_text">Vypnuto z důvodu provedeného tísňového volání</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-da/strings.xml b/java/com/android/dialer/blocking/res/values-da/strings.xml
deleted file mode 100644
index cf6e809..0000000
--- a/java/com/android/dialer/blocking/res/values-da/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Ny, forenklet blokering</string>
-  <string name="migrate_blocked_numbers_dialog_message">Phone er nødt til at ændre, hvordan blokering fungerer, for bedre at kunne beskytte dig. Dine blokerede numre forhindrer både opkald og sms-beskeder, og de kan muligvis deles med andre apps.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Tillad</string>
-  <string name="old_block_number_confirmation_title">Vil du blokere %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Opkald fra dette nummer blokeres, og beskeder i telefonsvareren slettes automatisk.</string>
-  <string name="block_number_confirmation_message_no_vvm">Opkald fra dette nummer bliver blokeret, men der kan muligvis stadig lægges beskeder i din telefonsvarer.</string>
-  <string name="block_number_confirmation_message_new_filtering">Du modtager ikke længere opkald eller sms-beskeder fra dette nummer.</string>
-  <string name="block_number_ok">BLOKER</string>
-  <string name="unblock_number_confirmation_title">Vil du fjerne blokering af %1$s?</string>
-  <string name="unblock_number_ok">FJERN BLOKERING</string>
-  <string name="invalidNumber">%1$s er ugyldigt.</string>
-  <string name="snackbar_number_blocked">%1$s er blokeret</string>
-  <string name="snackbar_number_unblocked">Blokeringen af %1$s blev fjernet</string>
-  <string name="send_to_voicemail_import_failed">Importen mislykkedes</string>
-  <string name="call_blocking_disabled_notification_title">Opkaldsblokering er blevet deaktiveret i 48 timer</string>
-  <string name="call_blocking_disabled_notification_text">Deaktiveret, da du har foretaget et nødopkald.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-de/strings.xml b/java/com/android/dialer/blocking/res/values-de/strings.xml
deleted file mode 100644
index 93d309f..0000000
--- a/java/com/android/dialer/blocking/res/values-de/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Neue einfache Blockierfunktion</string>
-  <string name="migrate_blocked_numbers_dialog_message">Um dich besser schützen zu können, müssen die Einstellungen der Blockierung beim Telefon geändert werden. Von blockierten Nummern erhältst du jetzt keine Anrufe und Nachrichten mehr und diese Nummern können auch an andere Apps weitergegeben werden.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Zulassen</string>
-  <string name="old_block_number_confirmation_title">%1$s blockieren?</string>
-  <string name="block_number_confirmation_message_vvm">Anrufe von dieser Nummer werden blockiert und Mailboxnachrichten automatisch gelöscht.</string>
-  <string name="block_number_confirmation_message_no_vvm">Anrufe von dieser Nummer werden blockiert. Der Anrufer hat aber unter Umständen weiterhin die Möglichkeit, dir Mailboxnachrichten zu hinterlassen.</string>
-  <string name="block_number_confirmation_message_new_filtering">Du erhältst von dieser Nummer keine Anrufe oder Nachrichten mehr.</string>
-  <string name="block_number_ok">BLOCKIEREN</string>
-  <string name="unblock_number_confirmation_title">Blockierung von %1$s aufheben?</string>
-  <string name="unblock_number_ok">BLOCKIERUNG AUFHEBEN</string>
-  <string name="invalidNumber">%1$s ist ungültig.</string>
-  <string name="snackbar_number_blocked">%1$s blockiert</string>
-  <string name="snackbar_number_unblocked">Blockierung von %1$s aufgehoben</string>
-  <string name="send_to_voicemail_import_failed">Import fehlgeschlagen</string>
-  <string name="call_blocking_disabled_notification_title">Anrufblockierung für 48 Stunden deaktiviert</string>
-  <string name="call_blocking_disabled_notification_text">Deaktiviert, da ein Notruf getätigt wurde.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-el/strings.xml b/java/com/android/dialer/blocking/res/values-el/strings.xml
deleted file mode 100644
index 3284b5e..0000000
--- a/java/com/android/dialer/blocking/res/values-el/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Νέος, απλούστερος αποκλεισμός</string>
-  <string name="migrate_blocked_numbers_dialog_message">Για την καλύτερη δυνατή προστασία σας, το Phone πρέπει να αλλάξει τον τρόπο με τον οποίο λειτουργεί ο αποκλεισμός. Οι αποκλεισμένοι αριθμοί σας δεν θα επιτρέπουν πλέον τη λήψη τόσο κλήσεων όσο και μηνυμάτων κειμένου και μπορεί να κοινοποιηθούν σε άλλες εφαρμογές.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Αποδοχή</string>
-  <string name="old_block_number_confirmation_title">Αποκλεισμός αριθμού %1$s;</string>
-  <string name="block_number_confirmation_message_vvm">Οι μελλοντικές κλήσεις από αυτόν τον αριθμό θα αποκλείονται και τα μηνύματα στον αυτόματο τηλεφωνητή θα διαγράφονται αυτόματα.</string>
-  <string name="block_number_confirmation_message_no_vvm">Οι κλήσεις από αυτόν τον αριθμό θα αποκλείονται, αλλά ο καλών ενδέχεται να μπορεί να αφήνει μηνύματα στον αυτόματο τηλεφωνητή.</string>
-  <string name="block_number_confirmation_message_new_filtering">Δεν θα λαμβάνετε πλέον κλήσεις ή μηνύματα κειμένου από αυτόν τον αριθμό.</string>
-  <string name="block_number_ok">ΑΠΟΚΛΕΙΣΜΟΣ</string>
-  <string name="unblock_number_confirmation_title">Να καταργηθεί ο αποκλεισμός του αριθμού %1$s;</string>
-  <string name="unblock_number_ok">ΚΑΤΑΡΓΗΣΗ ΑΠΟΚΛΕΙΣΜΟΥ</string>
-  <string name="invalidNumber">Ο αριθμός %1$s δεν είναι έγκυρος.</string>
-  <string name="snackbar_number_blocked">Ο αριθμός %1$s αποκλείστηκε</string>
-  <string name="snackbar_number_unblocked">Ο αποκλεισμός του αριθμού %1$s καταργήθηκε</string>
-  <string name="send_to_voicemail_import_failed">Αποτυχία εισαγωγής</string>
-  <string name="call_blocking_disabled_notification_title">Η φραγή κλήσεων απενεργοποιήθηκε για 48 ώρες</string>
-  <string name="call_blocking_disabled_notification_text">Απενεργοποιημένο επειδή πραγματοποιήθηκε κλήση έκτακτης ανάγκης.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-en-rAU/strings.xml b/java/com/android/dialer/blocking/res/values-en-rAU/strings.xml
deleted file mode 100644
index db19c37..0000000
--- a/java/com/android/dialer/blocking/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">New, simplified blocking</string>
-  <string name="migrate_blocked_numbers_dialog_message">To protect you better, Phone needs to change how blocking works. Your blocked numbers will now stop both calls and texts and may be shared with other apps.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Allow</string>
-  <string name="old_block_number_confirmation_title">Block%1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Calls from this number will be blocked and voicemails will be automatically deleted.</string>
-  <string name="block_number_confirmation_message_no_vvm">Calls from this number will be blocked, but the caller may still be able to leave you voicemails.</string>
-  <string name="block_number_confirmation_message_new_filtering">You will no longer receive calls or texts from this number.</string>
-  <string name="block_number_ok">BLOCK</string>
-  <string name="unblock_number_confirmation_title">Unblock%1$s?</string>
-  <string name="unblock_number_ok">UNBLOCK</string>
-  <string name="invalidNumber">%1$sis invalid.</string>
-  <string name="snackbar_number_blocked">%1$s blocked</string>
-  <string name="snackbar_number_unblocked">%1$sunblocked</string>
-  <string name="send_to_voicemail_import_failed">Import failed</string>
-  <string name="call_blocking_disabled_notification_title">Call blocking disabled for 48 hours</string>
-  <string name="call_blocking_disabled_notification_text">Disabled because an emergency call was made.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-en-rGB/strings.xml b/java/com/android/dialer/blocking/res/values-en-rGB/strings.xml
deleted file mode 100644
index db19c37..0000000
--- a/java/com/android/dialer/blocking/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">New, simplified blocking</string>
-  <string name="migrate_blocked_numbers_dialog_message">To protect you better, Phone needs to change how blocking works. Your blocked numbers will now stop both calls and texts and may be shared with other apps.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Allow</string>
-  <string name="old_block_number_confirmation_title">Block%1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Calls from this number will be blocked and voicemails will be automatically deleted.</string>
-  <string name="block_number_confirmation_message_no_vvm">Calls from this number will be blocked, but the caller may still be able to leave you voicemails.</string>
-  <string name="block_number_confirmation_message_new_filtering">You will no longer receive calls or texts from this number.</string>
-  <string name="block_number_ok">BLOCK</string>
-  <string name="unblock_number_confirmation_title">Unblock%1$s?</string>
-  <string name="unblock_number_ok">UNBLOCK</string>
-  <string name="invalidNumber">%1$sis invalid.</string>
-  <string name="snackbar_number_blocked">%1$s blocked</string>
-  <string name="snackbar_number_unblocked">%1$sunblocked</string>
-  <string name="send_to_voicemail_import_failed">Import failed</string>
-  <string name="call_blocking_disabled_notification_title">Call blocking disabled for 48 hours</string>
-  <string name="call_blocking_disabled_notification_text">Disabled because an emergency call was made.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-en-rIN/strings.xml b/java/com/android/dialer/blocking/res/values-en-rIN/strings.xml
deleted file mode 100644
index db19c37..0000000
--- a/java/com/android/dialer/blocking/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">New, simplified blocking</string>
-  <string name="migrate_blocked_numbers_dialog_message">To protect you better, Phone needs to change how blocking works. Your blocked numbers will now stop both calls and texts and may be shared with other apps.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Allow</string>
-  <string name="old_block_number_confirmation_title">Block%1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Calls from this number will be blocked and voicemails will be automatically deleted.</string>
-  <string name="block_number_confirmation_message_no_vvm">Calls from this number will be blocked, but the caller may still be able to leave you voicemails.</string>
-  <string name="block_number_confirmation_message_new_filtering">You will no longer receive calls or texts from this number.</string>
-  <string name="block_number_ok">BLOCK</string>
-  <string name="unblock_number_confirmation_title">Unblock%1$s?</string>
-  <string name="unblock_number_ok">UNBLOCK</string>
-  <string name="invalidNumber">%1$sis invalid.</string>
-  <string name="snackbar_number_blocked">%1$s blocked</string>
-  <string name="snackbar_number_unblocked">%1$sunblocked</string>
-  <string name="send_to_voicemail_import_failed">Import failed</string>
-  <string name="call_blocking_disabled_notification_title">Call blocking disabled for 48 hours</string>
-  <string name="call_blocking_disabled_notification_text">Disabled because an emergency call was made.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-es-rUS/strings.xml b/java/com/android/dialer/blocking/res/values-es-rUS/strings.xml
deleted file mode 100644
index 0a9a40d..0000000
--- a/java/com/android/dialer/blocking/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Nuevo bloqueo simplificado</string>
-  <string name="migrate_blocked_numbers_dialog_message">Para brindarte mayor protección, el teléfono necesita cambiar el comportamiento de bloqueo. Se detendrán las llamadas y los mensajes de texto de los números bloqueados, y es posible que estos se compartan con otras apps.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Permitir</string>
-  <string name="old_block_number_confirmation_title">¿Deseas bloquear el número %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Se bloquearán las llamadas que provengan de este número y se borrarán los mensajes del correo de voz de forma automática.</string>
-  <string name="block_number_confirmation_message_no_vvm">Se bloquearán las llamadas que provengan de este número, pero es posible que la persona que llama pueda dejar mensajes en el correo de voz.</string>
-  <string name="block_number_confirmation_message_new_filtering">Ya no recibirás llamadas o mensajes de textos de este número.</string>
-  <string name="block_number_ok">BLOQUEAR</string>
-  <string name="unblock_number_confirmation_title">¿Deseas desbloquear el número %1$s?</string>
-  <string name="unblock_number_ok">DESBLOQUEAR</string>
-  <string name="invalidNumber">%1$s no es válido.</string>
-  <string name="snackbar_number_blocked">%1$s bloqueado</string>
-  <string name="snackbar_number_unblocked">%1$s desbloqueado</string>
-  <string name="send_to_voicemail_import_failed">Error al importar</string>
-  <string name="call_blocking_disabled_notification_title">El bloqueo de llamadas se inhabilitó durante 48 horas</string>
-  <string name="call_blocking_disabled_notification_text">Se inhabilitó porque se realizó una llamada de emergencia.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-es/strings.xml b/java/com/android/dialer/blocking/res/values-es/strings.xml
deleted file mode 100644
index 1a39e25..0000000
--- a/java/com/android/dialer/blocking/res/values-es/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Nuevo bloqueo, más sencillo</string>
-  <string name="migrate_blocked_numbers_dialog_message">Para garantizar tu seguridad, Teléfono necesita cambiar cómo funciona el bloqueo. Ya no recibirás llamadas ni SMS de los números bloqueados y es posible que estos se compartan con otras aplicaciones.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Permitir</string>
-  <string name="old_block_number_confirmation_title">¿Quieres bloquear el %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Se bloquearán las llamadas de este número y se eliminarán los mensajes del buzón de voz automáticamente.</string>
-  <string name="block_number_confirmation_message_no_vvm">Se bloquearán las llamadas de este número, pero la persona que llame puede seguir dejando mensajes en el buzón de voz.</string>
-  <string name="block_number_confirmation_message_new_filtering">Ya no recibirás llamadas ni SMS de este número.</string>
-  <string name="block_number_ok">BLOQUEAR</string>
-  <string name="unblock_number_confirmation_title">¿Quieres desbloquear el número %1$s?</string>
-  <string name="unblock_number_ok">DESBLOQUEAR</string>
-  <string name="invalidNumber">El número %1$s no es válido.</string>
-  <string name="snackbar_number_blocked">%1$s bloqueado</string>
-  <string name="snackbar_number_unblocked">Se ha desbloqueado el número %1$s</string>
-  <string name="send_to_voicemail_import_failed">Error al importar</string>
-  <string name="call_blocking_disabled_notification_title">Bloqueo de llamadas inhabilitado durante 48 horas</string>
-  <string name="call_blocking_disabled_notification_text">Inhabilitado porque has hecho una llamada de emergencia.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-et/strings.xml b/java/com/android/dialer/blocking/res/values-et/strings.xml
deleted file mode 100644
index 9493374..0000000
--- a/java/com/android/dialer/blocking/res/values-et/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Uus lihtsustatud blokeerimine</string>
-  <string name="migrate_blocked_numbers_dialog_message">Teie paremaks kaitsmiseks peab rakendus Telefon muutma blokeerimise tööpõhimõtet. Blokeeritud numbrite puhul blokeeritakse nüüd nii helistamine kui ka tekstsõnumid ja blokeeritud numbreid võidakse jagada teiste rakendustega.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Luba</string>
-  <string name="old_block_number_confirmation_title">Kas soovite blokeerida numbri %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Kõned sellelt numbrilt blokeeritakse ja kõnepostisõnumid kustutatakse automaatselt.</string>
-  <string name="block_number_confirmation_message_no_vvm">Kõned sellelt numbrilt blokeeritakse, kuid helistaja saab võib-olla siiski teile kõnepostisõnumeid jätta.</string>
-  <string name="block_number_confirmation_message_new_filtering">Te ei saa enam sellelt numbrilt kõnesid ega tekstsõnumeid.</string>
-  <string name="block_number_ok">BLOKEERI</string>
-  <string name="unblock_number_confirmation_title">Kas soovite deblokeerida numbri %1$s?</string>
-  <string name="unblock_number_ok">DEBLOKEERI</string>
-  <string name="invalidNumber">%1$s on kehtetu.</string>
-  <string name="snackbar_number_blocked">Number %1$s on blokeeritud</string>
-  <string name="snackbar_number_unblocked">Number %1$s on deblokeeritud</string>
-  <string name="send_to_voicemail_import_failed">Importimine ebaõnnestus</string>
-  <string name="call_blocking_disabled_notification_title">Kõnede blokeerimine on 48 tunniks keelatud</string>
-  <string name="call_blocking_disabled_notification_text">Keelatud, kuna tehti hädaabikõne.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-eu/strings.xml b/java/com/android/dialer/blocking/res/values-eu/strings.xml
deleted file mode 100644
index 62b419f..0000000
--- a/java/com/android/dialer/blocking/res/values-eu/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Blokeatzeko aukera berri sinplifikatua</string>
-  <string name="migrate_blocked_numbers_dialog_message">Zu hobeto babesteko, blokeatzeko funtzioa aldatu behar du Telefonoa aplikazioak. Aurrerantzean, blokeatutako zenbakien deiak eta testu-mezuak jasotzeari utziko zaio, eta baliteke zenbaki horiek beste aplikazioekin partekatzea.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Baimendu</string>
-  <string name="old_block_number_confirmation_title">%1$s blokeatu nahi duzu?</string>
-  <string name="block_number_confirmation_message_vvm">Zenbaki honetatik jasotzen diren deiak blokeatu egingo dira, eta mezuak automatikoki ezabatuko dira erantzungailutik.</string>
-  <string name="block_number_confirmation_message_no_vvm">Zenbaki honetatik jasotzen diren deiak blokeatu egingo dira, baina deitzaileak mezuak utzi ahal izango dizkizu erantzungailuan.</string>
-  <string name="block_number_confirmation_message_new_filtering">Ez duzu deirik edo testu-mezurik jasoko zenbaki horretatik.</string>
-  <string name="block_number_ok">BLOKEATU</string>
-  <string name="unblock_number_confirmation_title">%1$s desblokeatu nahi duzu?</string>
-  <string name="unblock_number_ok">DESBLOKEATU</string>
-  <string name="invalidNumber">%1$s zenbakiak ez du balio.</string>
-  <string name="snackbar_number_blocked">%1$s blokeatuta</string>
-  <string name="snackbar_number_unblocked">Desblokeatu da %1$s</string>
-  <string name="send_to_voicemail_import_failed">Ezin izan da inportatu</string>
-  <string name="call_blocking_disabled_notification_title">Deiak blokeatzeko aukera desgaituta egongo da 48 orduan</string>
-  <string name="call_blocking_disabled_notification_text">Desgaituta dago, larrialdi-dei bat egin delako.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-fa/strings.xml b/java/com/android/dialer/blocking/res/values-fa/strings.xml
deleted file mode 100644
index 718041b..0000000
--- a/java/com/android/dialer/blocking/res/values-fa/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">مسدود کردن جدید و ساده‌شده</string>
-  <string name="migrate_blocked_numbers_dialog_message">برای محافظت بهتر از شما، «تلفن» باید عملکرد مسدود کردن را تغییر دهد. شماره‌های مسدود شده دیگر تماس و پیام نوشتاری ارسال/دریافت نخواهند کرد و ممکن است با برنامه‌های دیگر به اشتراک گذاشته شوند.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">اجازه دادن</string>
-  <string name="old_block_number_confirmation_title">%1$s مسدود شود؟</string>
-  <string name="block_number_confirmation_message_vvm">تماس‌‌ها از این شماره مسدود می‌شود و پست‌‌های صوتی به‌طور خودکار حذف می‌شود.</string>
-  <string name="block_number_confirmation_message_no_vvm">تماس‌ها از این شماره مسدود می‌شود، اما ممکن است تماس‌گیرنده همچنان بتواند برایتان پست صوتی بگذارد.</string>
-  <string name="block_number_confirmation_message_new_filtering">دیگر از این شماره، تماس یا پیام نوشتاری دریافت نمی‌کنید.</string>
-  <string name="block_number_ok">مسدود کردن</string>
-  <string name="unblock_number_confirmation_title">%1$s رفع انسداد شود؟</string>
-  <string name="unblock_number_ok">رفع انسداد</string>
-  <string name="invalidNumber">%1$s نامعتبر است.</string>
-  <string name="snackbar_number_blocked">%1$s مسدود شد</string>
-  <string name="snackbar_number_unblocked">%1$s رفع انسداد شد</string>
-  <string name="send_to_voicemail_import_failed">وارد کردن انجام نشد</string>
-  <string name="call_blocking_disabled_notification_title">مسدود کردن تماس برای ۴۸ ساعت غیرفعال شد</string>
-  <string name="call_blocking_disabled_notification_text">به علت برقرار شدن تماس اضطراری، غیرفعال شد.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-fi/strings.xml b/java/com/android/dialer/blocking/res/values-fi/strings.xml
deleted file mode 100644
index ab47254..0000000
--- a/java/com/android/dialer/blocking/res/values-fi/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Uusi kätevämpi estotapa</string>
-  <string name="migrate_blocked_numbers_dialog_message">Puhelimen on muokattava estoperiaatetta, jotta suojaus toimii paremmin. Nyt estetyistä numeroista saapuvat puhelut ja tekstiviestit estetään, ja estotiedot voidaan jakaa muille sovelluksille.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Salli</string>
-  <string name="old_block_number_confirmation_title">Estetäänkö %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Tästä numerosta tulevat puhelut estetään, ja vastaajaviestit poistetaan automaattisesti.</string>
-  <string name="block_number_confirmation_message_no_vvm">Tästä numerosta tulevat puhelut estetään, mutta soittaja voi silti mahdollisesti jättää vastaajaviestejä.</string>
-  <string name="block_number_confirmation_message_new_filtering">Tästä numerosta tulevat puhelut ja tekstiviestit estetään.</string>
-  <string name="block_number_ok">ESTÄ</string>
-  <string name="unblock_number_confirmation_title">Kumotaanko numeron %1$s esto?</string>
-  <string name="unblock_number_ok">KUMOA ESTO</string>
-  <string name="invalidNumber">%1$s on virheellinen.</string>
-  <string name="snackbar_number_blocked">Numero %1$s estetty</string>
-  <string name="snackbar_number_unblocked">Numeron %1$s esto kumottu</string>
-  <string name="send_to_voicemail_import_failed">Tuonti epäonnistui.</string>
-  <string name="call_blocking_disabled_notification_title">Puhelujen esto poistettiin käytöstä 48 tunnin ajaksi</string>
-  <string name="call_blocking_disabled_notification_text">Toiminto poistettiin käytöstä hätäpuhelun vuoksi.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-fr-rCA/strings.xml b/java/com/android/dialer/blocking/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 8941e70..0000000
--- a/java/com/android/dialer/blocking/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Nouveau blocage simplifié</string>
-  <string name="migrate_blocked_numbers_dialog_message">Afin de mieux vous protéger, l\'application Téléphone doit modifier la façon dont le blocage fonctionne. Le blocage de numéros s\'appliquera désormais aux appels et aux messages texte et pourra être partagé avec d\'autres applications.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Autoriser</string>
-  <string name="old_block_number_confirmation_title">Bloquer le numéro %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Les appels provenant de ce numéro seront bloqués et les messages vocaux seront automatiquement supprimés.</string>
-  <string name="block_number_confirmation_message_no_vvm">Les appels provenant de ce numéro seront bloqués, mais il se peut que l\'appelant puisse quand même vous laisser des messages vocaux.</string>
-  <string name="block_number_confirmation_message_new_filtering">Vous ne recevrez plus d\'appels ni de messages texte de ce numéro.</string>
-  <string name="block_number_ok">BLOQUER</string>
-  <string name="unblock_number_confirmation_title">Débloquer le numéro %1$s?</string>
-  <string name="unblock_number_ok">DÉBLOQUER</string>
-  <string name="invalidNumber">Le numéro %1$s est incorrect.</string>
-  <string name="snackbar_number_blocked">Le numéro « %1$s » est bloqué</string>
-  <string name="snackbar_number_unblocked">Le numéro %1$s a été débloqué</string>
-  <string name="send_to_voicemail_import_failed">Échec de l\'importation</string>
-  <string name="call_blocking_disabled_notification_title">Blocage des appels désactivé pendant 48 heures</string>
-  <string name="call_blocking_disabled_notification_text">Désactivé, car un appel d\'urgence a été effectué</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-fr/strings.xml b/java/com/android/dialer/blocking/res/values-fr/strings.xml
deleted file mode 100644
index 965f401..0000000
--- a/java/com/android/dialer/blocking/res/values-fr/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Nouveau processus de blocage simplifié</string>
-  <string name="migrate_blocked_numbers_dialog_message">Afin de mieux vous protéger, la fonctionnalité de blocage de numéros doit être modifiée. Le blocage pourra désormais être appliqué aux appels entrants comme aux SMS entrants, et être étendu à d\'autres applications.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Autoriser</string>
-  <string name="old_block_number_confirmation_title">Bloquer le %1$s ?</string>
-  <string name="block_number_confirmation_message_vvm">Les appels associés à ce numéro seront bloqués, et les messages vocaux seront automatiquement supprimés.</string>
-  <string name="block_number_confirmation_message_no_vvm">Les appels associés à ce numéro seront bloqués, mais l\'appelant pourra peut-être toujours vous laisser des messages vocaux.</string>
-  <string name="block_number_confirmation_message_new_filtering">Vous ne recevrez plus d\'appels ni de SMS provenant de ce numéro.</string>
-  <string name="block_number_ok">BLOQUER</string>
-  <string name="unblock_number_confirmation_title">Débloquer le %1$s ?</string>
-  <string name="unblock_number_ok">DÉBLOQUER</string>
-  <string name="invalidNumber">Le %1$s n\'est pas un numéro valide.</string>
-  <string name="snackbar_number_blocked">Le numéro \"%1$s\" est bloqué.</string>
-  <string name="snackbar_number_unblocked">Le numéro %1$s a été débloqué.</string>
-  <string name="send_to_voicemail_import_failed">Échec lors de l\'importation.</string>
-  <string name="call_blocking_disabled_notification_title">Blocage des appels désactivé pendant 48 heures</string>
-  <string name="call_blocking_disabled_notification_text">Désactivé, car un appel d\'urgence a été effectué</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-gl/strings.xml b/java/com/android/dialer/blocking/res/values-gl/strings.xml
deleted file mode 100644
index 4bcecda..0000000
--- a/java/com/android/dialer/blocking/res/values-gl/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Novo bloqueo simplificado</string>
-  <string name="migrate_blocked_numbers_dialog_message">Para protexerte mellor, a aplicación do teléfono necesita cambiar o funcionamento do bloqueo. Os teus números bloqueados agora deterán as chamadas e as mensaxes de texto e, ademais, pode que se compartan con outras aplicacións.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Permitir</string>
-  <string name="old_block_number_confirmation_title">Queres bloquear o %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Bloquearanse as chamadas deste número e eliminaranse automaticamente os correos de voz.</string>
-  <string name="block_number_confirmation_message_no_vvm">Bloquearanse as chamadas deste número, pero é posible que o emisor da chamada aínda poida deixarche correos de voz.</string>
-  <string name="block_number_confirmation_message_new_filtering">Xa non recibirás máis chamadas nin mensaxes de texto deste número.</string>
-  <string name="block_number_ok">BLOQUEAR</string>
-  <string name="unblock_number_confirmation_title">Queres desbloquear o %1$s?</string>
-  <string name="unblock_number_ok">DESBLOQUEAR</string>
-  <string name="invalidNumber">O %1$s non e válido.</string>
-  <string name="snackbar_number_blocked">Bloqueouse o %1$s</string>
-  <string name="snackbar_number_unblocked">Desbloqueouse o %1$s</string>
-  <string name="send_to_voicemail_import_failed">Produciuse un erro na importación</string>
-  <string name="call_blocking_disabled_notification_title">Desactivouse o bloqueo de chamadas durante 48 horas</string>
-  <string name="call_blocking_disabled_notification_text">Desactivouse porque se realizou unha chamada de urxencia.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-gu/strings.xml b/java/com/android/dialer/blocking/res/values-gu/strings.xml
deleted file mode 100644
index 5abca88..0000000
--- a/java/com/android/dialer/blocking/res/values-gu/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">અવરોધિત કરવાની નવી, સરળ રીત</string>
-  <string name="migrate_blocked_numbers_dialog_message">તમારી બહેતર સુરક્ષા માટે, ફોનને, અવરોધિત કરવું કેવી રીતે કાર્ય કરે છે તે બદલવાની જરૂર છે. તમારા અવરોધિત નંબર્સ હવે કૉલ્સ અને ટેક્સ્ટ્સ બન્નેને રોકશે અને તે અન્ય ઍપ્લિકેશનો સાથે શેર કરવામાં આવી શકે છે.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">મંજૂરી આપો</string>
-  <string name="old_block_number_confirmation_title">%1$sને બ્લૉક કરીએ?</string>
-  <string name="block_number_confirmation_message_vvm">આ નંબરથી આવનારા કૉલ્સ અવરોધિત કરવામાં આવશે અને વૉઇસમેઇલ્સ આપમેળે કાઢી નાખવામાં આવશે.</string>
-  <string name="block_number_confirmation_message_no_vvm">આ નંબરથી આવનારા કૉલ્સ અવરોધિત કરવામાં આવશે, પરંતુ કૉલર હજી પણ તમારા માટે વૉઇસમેઇલ્સ મૂકવામાં સમર્થ હોઈ શકે છે.</string>
-  <string name="block_number_confirmation_message_new_filtering">તમે હવે આ નંબરથી કૉલ્સ અથવા ટેક્સ્ટ પ્રાપ્ત કરશો નહીં.</string>
-  <string name="block_number_ok">અવરોધિત કરો</string>
-  <string name="unblock_number_confirmation_title">%1$sને અનબ્લૉક કરીએ?</string>
-  <string name="unblock_number_ok">અનાવરોધિત કરો</string>
-  <string name="invalidNumber">%1$s અમાન્ય છે.</string>
-  <string name="snackbar_number_blocked">%1$s અવરોધિત કર્યો</string>
-  <string name="snackbar_number_unblocked">%1$sને અનબ્લૉક કર્યો</string>
-  <string name="send_to_voicemail_import_failed">આયાત નિષ્ફળ થયું</string>
-  <string name="call_blocking_disabled_notification_title">કૉલ અવરોધિત કરવાનું 48 કલાક માટે અક્ષમ કરાયું</string>
-  <string name="call_blocking_disabled_notification_text">અક્ષમ કરાયું કારણ કે એક કટોકટીનો કૉલ કરવામાં આવ્યો હતો.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-hi/strings.xml b/java/com/android/dialer/blocking/res/values-hi/strings.xml
deleted file mode 100644
index a4fd6b1..0000000
--- a/java/com/android/dialer/blocking/res/values-hi/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">नया, सरल अवरोधन</string>
-  <string name="migrate_blocked_numbers_dialog_message">आपकी बेहतर सुरक्षा के लिए, फ़ोन के ब्लॉक करने के तरीके को बदलने की ज़रूरत है. आपके ब्लॉक किए गए नंबर अब कॉल और मैसेज दोनों को रोक देंगे और उन्हें दूसरे ऐप्लिकेशन के साथ शेयर किया जा सकता है.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">अनुमति दें</string>
-  <string name="old_block_number_confirmation_title">%1$sपर रोक लगाएं?</string>
-  <string name="block_number_confirmation_message_vvm">इस नंबर से आने वाले कॉल ब्लॉक कर दिए जाएंगे और वॉइसमेल अपने आप हटा दिए जाएंगे.</string>
-  <string name="block_number_confirmation_message_no_vvm">इस नंबर से आने वाले कॉल ब्लॉक कर दिए जाएंगे, लेकिन कॉलर अब भी आपके लिए वॉइसमेल भेज सकेंगे.</string>
-  <string name="block_number_confirmation_message_new_filtering">अब आपको इस नंबर से कॉल या लेख संदेश प्राप्त नहीं होंगे.</string>
-  <string name="block_number_ok">अवरुद्ध करें</string>
-  <string name="unblock_number_confirmation_title">%1$sपर से रोक हटाएं?</string>
-  <string name="unblock_number_ok">अनवरोधित करें</string>
-  <string name="invalidNumber">%1$sगलत है.</string>
-  <string name="snackbar_number_blocked">%1$s अवरोधित किया गया</string>
-  <string name="snackbar_number_unblocked">%1$sपर से रोक हटाई गई</string>
-  <string name="send_to_voicemail_import_failed">आयात करना विफल रहा</string>
-  <string name="call_blocking_disabled_notification_title">कॉल अवरुद्ध करना 48 घंटे के लिए अक्षम कर दिया गया</string>
-  <string name="call_blocking_disabled_notification_text">आपातकालीन कॉल किए जाने के कारण अक्षम कर दिया गया.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-hr/strings.xml b/java/com/android/dialer/blocking/res/values-hr/strings.xml
deleted file mode 100644
index 6aa049d..0000000
--- a/java/com/android/dialer/blocking/res/values-hr/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Novo, jednostavnije blokiranje</string>
-  <string name="migrate_blocked_numbers_dialog_message">Da bi vas bolje zaštitio, Phone mora promijeniti način funkcioniranja blokiranja. S blokiranih brojeva više nećete primati pozive ni SMS poruke. Osim toga, blokirani brojevi moći će se dijeliti s drugim aplikacijama.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Omogući</string>
-  <string name="old_block_number_confirmation_title">Želite li blokirati broj %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Pozivi s tog broja blokirat će se, a govorna pošta automatski će se brisati.</string>
-  <string name="block_number_confirmation_message_no_vvm">Pozivi s tog broja blokirat će se, ali pozivatelj će vam moći ostavljati govornu poštu.</string>
-  <string name="block_number_confirmation_message_new_filtering">Više nećete primati pozive ni poruke s tog broja.</string>
-  <string name="block_number_ok">BLOKIRAJ</string>
-  <string name="unblock_number_confirmation_title">Želite li deblokirati broj %1$s?</string>
-  <string name="unblock_number_ok">DEBLOKIRAJ</string>
-  <string name="invalidNumber">Broj %1$s nije važeći.</string>
-  <string name="snackbar_number_blocked">%1$s blokiran</string>
-  <string name="snackbar_number_unblocked">%1$s deblokiran</string>
-  <string name="send_to_voicemail_import_failed">Uvoz nije uspio</string>
-  <string name="call_blocking_disabled_notification_title">Blokiranje poziva onemogućeno je na 48 sati</string>
-  <string name="call_blocking_disabled_notification_text">Onemogućeno jer je upućen hitni poziv.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-hu/strings.xml b/java/com/android/dialer/blocking/res/values-hu/strings.xml
deleted file mode 100644
index ed638db..0000000
--- a/java/com/android/dialer/blocking/res/values-hu/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Új, egyszerűbb letiltás</string>
-  <string name="migrate_blocked_numbers_dialog_message">Az Ön fokozottabb védelme érdekében a telefonnak módosítania kell a tiltás működését. A letiltott számok most már a hívásokat és az SMS-eket is megakadályozzák, és megoszthatók más alkalmazásokkal is.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Engedélyezés</string>
-  <string name="old_block_number_confirmation_title">Letiltja a következő számot: %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Az erről a számról érkező hívásokat a rendszer letiltja, továbbá automatikusan törli az onnan érkező hangpostaüzeneteket is.</string>
-  <string name="block_number_confirmation_message_no_vvm">Az erről a számról érkező hívásokat letiltja a rendszer, azonban a hívó fél továbbra is hagyhat hangpostaüzeneteket.</string>
-  <string name="block_number_confirmation_message_new_filtering">A továbbiakban nem fogad hívásokat vagy SMS-eket erről a számról.</string>
-  <string name="block_number_ok">LETILTÁS</string>
-  <string name="unblock_number_confirmation_title">Feloldja a következő szám tiltását: %1$s?</string>
-  <string name="unblock_number_ok">TILTÁS FELOLDÁSA</string>
-  <string name="invalidNumber">A következő szám érvénytelen: %1$s.</string>
-  <string name="snackbar_number_blocked">A következő szám letiltva: %1$s</string>
-  <string name="snackbar_number_unblocked">A következő szám tiltása feloldva: %1$s</string>
-  <string name="send_to_voicemail_import_failed">Az importálás nem sikerült</string>
-  <string name="call_blocking_disabled_notification_title">A hívások tiltása funkció kikapcsolva 48 órára</string>
-  <string name="call_blocking_disabled_notification_text">Letiltva segélyhívás miatt.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-hy/strings.xml b/java/com/android/dialer/blocking/res/values-hy/strings.xml
deleted file mode 100644
index 3b15177..0000000
--- a/java/com/android/dialer/blocking/res/values-hy/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Նոր, պարզեցված արգելափակում</string>
-  <string name="migrate_blocked_numbers_dialog_message">Ձեզ ավելի լավ պաշտպանելու նպատակով Հեռախոսին անհրաժեշտ է փոխել արգելափակման կարգավորումները: Արգելափակված համարներից զանգերի և տեքստային հաղորդագրությունների ստացումը կկասեցվի, իսկ այդ համարները կարող են տրամադրվել այլ հավելվածներին:</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Թույլատրել</string>
-  <string name="old_block_number_confirmation_title">Արգելափակե՞լ %1$s համարը</string>
-  <string name="block_number_confirmation_message_vvm">Այս համարից զանգերը կարգելափակվեն, իսկ ձայնային փոստի հաղորդագրություններն ավտոմատ կերպով կջնջվեն:</string>
-  <string name="block_number_confirmation_message_no_vvm">Այս համարից զանգերը կարգելափակվեն, սակայն զանգողը կկարողանա ձեզ համար ձայնային փոստի հաղորդագրություններ թողնել:</string>
-  <string name="block_number_confirmation_message_new_filtering">Այս համարից զանգեր և SMS-ներ այլևս չեք ստանա:</string>
-  <string name="block_number_ok">ԱՐԳԵԼԱՓԱԿԵԼ</string>
-  <string name="unblock_number_confirmation_title">Արգելաբացե՞լ %1$s համարը:</string>
-  <string name="unblock_number_ok">ԱՐԳԵԼԱԲԱՑԵԼ</string>
-  <string name="invalidNumber">%1$s համարը սխալ է:</string>
-  <string name="snackbar_number_blocked">Արգելափակվել է %1$s համար</string>
-  <string name="snackbar_number_unblocked">%1$s համարն արգելաբացվեց</string>
-  <string name="send_to_voicemail_import_failed">Ներմուծումը չհաջողվեց</string>
-  <string name="call_blocking_disabled_notification_title">Զանգերի արգելափակումն անջատվել է 48 ժամով</string>
-  <string name="call_blocking_disabled_notification_text">Անջատվել է, քանի որ շտապ կանչ է արվել:</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-in/strings.xml b/java/com/android/dialer/blocking/res/values-in/strings.xml
deleted file mode 100644
index a51b0a3..0000000
--- a/java/com/android/dialer/blocking/res/values-in/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Pemblokiran baru yang disederhanakan</string>
-  <string name="migrate_blocked_numbers_dialog_message">Untuk semakin melindungi Anda, Telepon harus mengubah cara kerja pemblokiran. Sekarang nomor yang diblokir akan menghentikan panggilan telepon dan SMS, dan mungkin dibagikan dengan aplikasi lain.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Izinkan</string>
-  <string name="old_block_number_confirmation_title">Blokir%1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Panggilan telepon dari nomor ini akan diblokir dan pesan suara akan dihapus secara otomatis.</string>
-  <string name="block_number_confirmation_message_no_vvm">Panggilan telepon dari nomor ini akan diblokir, tetapi penelepon mungkin masih dapat meninggalkan pesan suara.</string>
-  <string name="block_number_confirmation_message_new_filtering">Anda tidak akan menerima telepon atau SMS lagi dari nomor ini.</string>
-  <string name="block_number_ok">BLOKIR</string>
-  <string name="unblock_number_confirmation_title">Batalkan pemblokiran%1$s?</string>
-  <string name="unblock_number_ok">BEBASKAN</string>
-  <string name="invalidNumber">%1$stidak valid.</string>
-  <string name="snackbar_number_blocked">%1$s diblokir</string>
-  <string name="snackbar_number_unblocked">Pemblokiran %1$sdibatalkan</string>
-  <string name="send_to_voicemail_import_failed">Impor gagal</string>
-  <string name="call_blocking_disabled_notification_title">Pemblokiran panggilan dinonaktifkan selama 48 jam</string>
-  <string name="call_blocking_disabled_notification_text">Dinonaktifkan karena panggilan darurat dilakukan.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-is/strings.xml b/java/com/android/dialer/blocking/res/values-is/strings.xml
deleted file mode 100644
index 0fef2d9..0000000
--- a/java/com/android/dialer/blocking/res/values-is/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Nýr, einfaldari bannlisti</string>
-  <string name="migrate_blocked_numbers_dialog_message">Til að vernda þig enn betur þarf símaforritið að breyta því hvernig farið er með bannlista. Séu númer á bannlista verður bæði lokað fyrir símtöl og skilaboð frá þeim og hugsanlega verður þeim deilt með öðrum forritum.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Leyfa</string>
-  <string name="old_block_number_confirmation_title">Setja %1$s á bannlista?</string>
-  <string name="block_number_confirmation_message_vvm">Lokað verður fyrir símtöl frá þessu númeri og talhólfsskilaboðum sjálfkrafa eytt.</string>
-  <string name="block_number_confirmation_message_no_vvm">Lokað verður fyrir símtöl frá þessu númeri. Hugsanlegt er að sá sem hringir geti engu að síður sent þér talhólfsskilaboð.</string>
-  <string name="block_number_confirmation_message_new_filtering">Þú munt ekki lengur fá símtöl eða textaskilaboð úr þessu númeri.</string>
-  <string name="block_number_ok">SETJA Á BANNLISTA</string>
-  <string name="unblock_number_confirmation_title">Taka%1$s af bannlista?</string>
-  <string name="unblock_number_ok">TAKA AF BANNLISTA</string>
-  <string name="invalidNumber">%1$ser ógilt.</string>
-  <string name="snackbar_number_blocked">Lokað fyrir %1$s</string>
-  <string name="snackbar_number_unblocked">%1$stekið af bannlista</string>
-  <string name="send_to_voicemail_import_failed">Innflutningur mistókst</string>
-  <string name="call_blocking_disabled_notification_title">Slökkt á lokun símtala í 48 klukkustundir</string>
-  <string name="call_blocking_disabled_notification_text">Óvirkt vegna þess að neyðarsímtal var hringt.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-it/strings.xml b/java/com/android/dialer/blocking/res/values-it/strings.xml
deleted file mode 100644
index 9a9ae85..0000000
--- a/java/com/android/dialer/blocking/res/values-it/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Nuovo blocco semplificato</string>
-  <string name="migrate_blocked_numbers_dialog_message">Per una migliore protezione, l\'app Telefono deve modificare il funzionamento del blocco. Ora gli SMS e le chiamate provenienti dai numeri bloccati non verranno ricevuti. I numeri bloccati, inoltre, possono essere condivisi con altre app.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Consenti</string>
-  <string name="old_block_number_confirmation_title">Bloccare il numero%1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Le chiamate da questo numero verranno bloccate e i messaggi in segreteria verranno automaticamente eliminati.</string>
-  <string name="block_number_confirmation_message_no_vvm">Le chiamate da questo numero verranno bloccate, ma il chiamante potrebbe lasciarti messaggi in segreteria.</string>
-  <string name="block_number_confirmation_message_new_filtering">Non riceverai più chiamate o SMS da questo numero.</string>
-  <string name="block_number_ok">BLOCCA</string>
-  <string name="unblock_number_confirmation_title">Sbloccare il numero%1$s?</string>
-  <string name="unblock_number_ok">SBLOCCA</string>
-  <string name="invalidNumber">%1$snon è valido.</string>
-  <string name="snackbar_number_blocked">%1$s bloccato</string>
-  <string name="snackbar_number_unblocked">%1$ssbloccato</string>
-  <string name="send_to_voicemail_import_failed">Importazione non riuscita</string>
-  <string name="call_blocking_disabled_notification_title">Il blocco chiamate è stato disattivato per 48 ore</string>
-  <string name="call_blocking_disabled_notification_text">Funzione disattivata: è stata fatta una chiamata di emergenza.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-iw/strings.xml b/java/com/android/dialer/blocking/res/values-iw/strings.xml
deleted file mode 100644
index f5699ca..0000000
--- a/java/com/android/dialer/blocking/res/values-iw/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">תהליך חסימה חדש ופשוט</string>
-  <string name="migrate_blocked_numbers_dialog_message">כדי להגן עליך טוב יותר, הטלפון צריך לשנות את האופן שבו החסימה פועלת. לא תוכל לקבל שיחות והודעות טקסט ממספרים חסומים, וייתכן שהם ישותפו עם אפליקציות אחרות.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">אפשר</string>
-  <string name="old_block_number_confirmation_title">לחסום את %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">שיחות ממספר זה ייחסמו והודעות דואר קולי יימחקו באופן אוטומטי.</string>
-  <string name="block_number_confirmation_message_no_vvm">שיחות ממספר זה ייחסמו, אבל המתקשר עדיין יוכל להשאיר לך הודעות דואר קולי.</string>
-  <string name="block_number_confirmation_message_new_filtering">לא יגיעו אליך יותר שיחות או הודעות טקסט מהמספר הזה.</string>
-  <string name="block_number_ok">חסום</string>
-  <string name="unblock_number_confirmation_title">לבטל את החסימה של %1$s?</string>
-  <string name="unblock_number_ok">ביטול חסימה</string>
-  <string name="invalidNumber">המספר %1$s אינו חוקי.</string>
-  <string name="snackbar_number_blocked">%1$s חסום</string>
-  <string name="snackbar_number_unblocked">החסימה של %1$s בוטלה</string>
-  <string name="send_to_voicemail_import_failed">הייבוא נכשל</string>
-  <string name="call_blocking_disabled_notification_title">חסימת השיחות הושבתה ל-48 שעות</string>
-  <string name="call_blocking_disabled_notification_text">מושבתת מפני שבוצעה שיחת חירום.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ja/strings.xml b/java/com/android/dialer/blocking/res/values-ja/strings.xml
deleted file mode 100644
index 71614b8..0000000
--- a/java/com/android/dialer/blocking/res/values-ja/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">新しい、簡素化されたブロック</string>
-  <string name="migrate_blocked_numbers_dialog_message">セキュリティを強化するため、スマートフォンはブロック動作を変更する必要があります。ブロックされた電話番号からの通話とテキスト メッセージの両方が停止されます。また、ブロックされた電話番号は他のアプリと共有できます。</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">許可</string>
-  <string name="old_block_number_confirmation_title">%1$s をブロックしますか？</string>
-  <string name="block_number_confirmation_message_vvm">この番号からの着信はブロックされ、ボイスメールは自動的に削除されます。</string>
-  <string name="block_number_confirmation_message_no_vvm">この番号からの着信はブロックされますが、発信者は今後もボイスメールを残すことができます。</string>
-  <string name="block_number_confirmation_message_new_filtering">今後はこの番号からの通話やテキスト メッセージは受信しなくなります。</string>
-  <string name="block_number_ok">ブロック</string>
-  <string name="unblock_number_confirmation_title">%1$s のブロックを解除しますか？</string>
-  <string name="unblock_number_ok">ブロックを解除</string>
-  <string name="invalidNumber">%1$s は無効な番号です。</string>
-  <string name="snackbar_number_blocked">%1$sをブロックしました</string>
-  <string name="snackbar_number_unblocked">%1$s のブロックを解除しました</string>
-  <string name="send_to_voicemail_import_failed">インポートに失敗しました</string>
-  <string name="call_blocking_disabled_notification_title">着信のブロックは48時間経過するまで無効になりました</string>
-  <string name="call_blocking_disabled_notification_text">緊急通報を行ったため無効になりました。</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ka/strings.xml b/java/com/android/dialer/blocking/res/values-ka/strings.xml
deleted file mode 100644
index c26ff5a..0000000
--- a/java/com/android/dialer/blocking/res/values-ka/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">დაბლოკვის ახალი, მარტივი ხერხი</string>
-  <string name="migrate_blocked_numbers_dialog_message">თქვენი უკეთ დაცვის მიზნით, ტელეფონმა დაბლოკვის წესი უნდა შეცვალოს. თქვენ მიერ დაბლოკილი ნომრებიდან როგორც ზარები, ისე ტექსტური შეტყობინებები შეწყდება და შესაძლოა მოხდეს ამ ნომრების სხვა აპებთან გაზიარება.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">დაშვება</string>
-  <string name="old_block_number_confirmation_title">დაიბლოკოს%1$s?</string>
-  <string name="block_number_confirmation_message_vvm">ამ ნომრიდან შემოსული ზარები დაიბლოკება, ხოლო ხმოვანი ფოსტა ავტომატურად წაიშლება.</string>
-  <string name="block_number_confirmation_message_no_vvm">ამ ნომრიდან შემოსული ზარები დაიბლოკება, თუმცა აბონენტს მაინც შეეძლება თქვენთვის ხმოვანი ფოსტის დატოვება.</string>
-  <string name="block_number_confirmation_message_new_filtering">ამ ნომრიდან ზარებს ან ტექსტურ შეტყობინებებს აღარ მიიღებთ.</string>
-  <string name="block_number_ok">დაბლოკვა</string>
-  <string name="unblock_number_confirmation_title">განიბლოკოს%1$s?</string>
-  <string name="unblock_number_ok">განბლოკვა</string>
-  <string name="invalidNumber">%1$sარასწორია.</string>
-  <string name="snackbar_number_blocked">%1$s დაბლოკილია</string>
-  <string name="snackbar_number_unblocked">%1$sგანბლოკილია</string>
-  <string name="send_to_voicemail_import_failed">იმპორტი ვერ მოხერხდა</string>
-  <string name="call_blocking_disabled_notification_title">ზარების დაბლოკვა გაითიშა 48 საათით</string>
-  <string name="call_blocking_disabled_notification_text">გათიშულია, რადგან განხორციელდა საგანგებო ზარი.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-kk/strings.xml b/java/com/android/dialer/blocking/res/values-kk/strings.xml
deleted file mode 100644
index 8672ce3..0000000
--- a/java/com/android/dialer/blocking/res/values-kk/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Жаңа, қарапайым бөгеу</string>
-  <string name="migrate_blocked_numbers_dialog_message">Қорғанысыңызды арттыру үшін телефон бөгеудің қолданылу жолын өзгертуі керек. Бөгелген нөмірлер енді қоңырауларды да, мәтіндік хабарларды да тоқтатып, басқа қолданбаларда көрсетілуі мүмкін.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Рұқсат беру</string>
-  <string name="old_block_number_confirmation_title">%1$s нөмірін бөгеу қажет пе?</string>
-  <string name="block_number_confirmation_message_vvm">Осы нөмірден болашақ қоңыраулар бөгеледі және дауыстық хабарлар автоматты түрде жойылады.</string>
-  <string name="block_number_confirmation_message_no_vvm">Осы нөмірден қоңыраулар бөгеледі, бірақ қоңырау шалушы әлі де сізге дауыстық хабарлар қалдыра алуы мүмкін.</string>
-  <string name="block_number_confirmation_message_new_filtering">Бұдан былай осы нөмірден қоңыраулар немесе мәтіндік хабарлар алмайсыз.</string>
-  <string name="block_number_ok">БӨГЕУ</string>
-  <string name="unblock_number_confirmation_title">%1$s бөгеуін алу қажет пе?</string>
-  <string name="unblock_number_ok">БӨГЕУДЕН ШЫҒАРУ</string>
-  <string name="invalidNumber">%1$s нөмірі жарамсыз.</string>
-  <string name="snackbar_number_blocked">%1$s бөгелген</string>
-  <string name="snackbar_number_unblocked">%1$s бөгеуі алынды</string>
-  <string name="send_to_voicemail_import_failed">Импорттау сәтсіз аяқталды</string>
-  <string name="call_blocking_disabled_notification_title">Қоңырауларға тыйым салу 48 сағат бойы өшірілген</string>
-  <string name="call_blocking_disabled_notification_text">Өшірілген, өйткені төтенше қоңырау соғылған.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-km/strings.xml b/java/com/android/dialer/blocking/res/values-km/strings.xml
deleted file mode 100644
index a76dde9..0000000
--- a/java/com/android/dialer/blocking/res/values-km/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">ថ្មី ការ​ទប់ស្កាត់​ដែល​ងាយស្រួល</string>
-  <string name="migrate_blocked_numbers_dialog_message">ដើម្បីការពារអ្នកឲ្យបានប្រសើរជាងមុន ទូរសព្ទ​ត្រូវធ្វើការផ្លាស់ប្តូររបៀប​​​ដែល​ការ​ទប់ស្កាត់​ដំណើរការ។ លេខដែល​បាន​ទប់ស្កាត់​របស់អ្នក​ឥឡូវ​នឹងបញ្ឈប់​ទាំង​ការហៅ និងការផ្ញើសារ និងអាច​ត្រូវបានចែករំលែកជាមួយកម្មវិធីផ្សេងទៀត។</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">អនុញ្ញាត</string>
-  <string name="old_block_number_confirmation_title">ទប់ស្កាត់ %1$s ឬ?</string>
-  <string name="block_number_confirmation_message_vvm">ការហៅចេញពីលេខនេះនឹងត្រូវបានរារាំង ហើយសារជាសំឡេងនឹងត្រូវបានលុបដោយស្វ័យប្រវត្តិ។</string>
-  <string name="block_number_confirmation_message_no_vvm">ការហៅចេញពីលេខនេះនឹងត្រូវបានរារាំង ប៉ុន្តែអ្នកហៅនៅតែអាចទុកសារជាសំឡេងឲ្យអ្នកបាន។</string>
-  <string name="block_number_confirmation_message_new_filtering">អ្នក​នឹង​លែង​ទទួល​​ការ​ហៅ ឬ​​សារ​​អត្ថបទ​ពី​លេខ​នេះ​ទៀត​ហើយ។</string>
-  <string name="block_number_ok">រារាំង</string>
-  <string name="unblock_number_confirmation_title">ឈប់​ទប់ស្កាត់ %1$s ?</string>
-  <string name="unblock_number_ok">ឈប់រារាំង</string>
-  <string name="invalidNumber">%1$s មិនត្រឹមត្រូវទេ។</string>
-  <string name="snackbar_number_blocked">បានរារាំង %1$s</string>
-  <string name="snackbar_number_unblocked">បាន​ឈប់​ទប់ស្កាត់ %1$s</string>
-  <string name="send_to_voicemail_import_failed">ការនាំចូលបានបរាជ័យ</string>
-  <string name="call_blocking_disabled_notification_title">ការរារាំងការហៅត្រូវបានបិទដំណើរការរយៈពេល 48 ម៉ោង</string>
-  <string name="call_blocking_disabled_notification_text">បានបិទដំណើរការពីព្រោះការហៅបន្ទាន់ត្រូវបានធ្វើឡើង</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-kn/strings.xml b/java/com/android/dialer/blocking/res/values-kn/strings.xml
deleted file mode 100644
index cf80ae0..0000000
--- a/java/com/android/dialer/blocking/res/values-kn/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">ಹೊಸ, ಸರಳೀಕರಿಸಿದ ನಿರ್ಬಂಧ</string>
-  <string name="migrate_blocked_numbers_dialog_message">ನಿಮ್ಮನ್ನು ಉತ್ತಮ ರೀತಿಯಲ್ಲಿ ರಕ್ಷಿಸಲು, ನಿರ್ಬಂಧ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ಫೋನ್ ಬದಲಾಯಿಸಬೇಕಾಗಿದೆ. ನಿಮ್ಮ ನಿರ್ಬಂಧಿಸಿದ ಸಂಖ್ಯೆಗಳು ಈಗ ಕರೆ ಮತ್ತು ಪಠ್ಯ ಸಂದೇಶಗಳನ್ನು ನಿಲ್ಲಿಸುತ್ತವೆ ಹಾಗೂ ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳಬಹುದು.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">ಅನುಮತಿಸಿ</string>
-  <string name="old_block_number_confirmation_title">%1$sಅನ್ನು ನಿರ್ಬಂಧಿಸಬೇಕೇ?</string>
-  <string name="block_number_confirmation_message_vvm">ಈ ಸಂಖ್ಯೆಗೆ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ.</string>
-  <string name="block_number_confirmation_message_no_vvm">ಈ ಸಂಖ್ಯೆಗೆ ಕರೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗುವುದು, ಆದರೆ ಕರೆಮಾಡುವವರು ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಈಗಲೂ ನಿಮಗೆ ಕಳುಹಿಸಬಹುದು.</string>
-  <string name="block_number_confirmation_message_new_filtering">ಈ ಸಂಖ್ಯೆಯಿಂದ ನೀವು ಇನ್ನು ಮುಂದೆ ಕರೆಗಳು ಅಥವಾ ಪಠ್ಯ ಸಂದೇಶಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ.</string>
-  <string name="block_number_ok">ನಿರ್ಬಂಧಿಸು</string>
-  <string name="unblock_number_confirmation_title">%1$sನಿರ್ಬಂಧವನ್ನು ತೆಗೆಯುವುದೇ?</string>
-  <string name="unblock_number_ok">ನಿರ್ಬಂಧ ತೆಗೆ</string>
-  <string name="invalidNumber">%1$sಅಮಾನ್ಯವಾಗಿದೆ.</string>
-  <string name="snackbar_number_blocked">%1$s ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</string>
-  <string name="snackbar_number_unblocked">%1$sನಿರ್ಬಂಧವನ್ನು ತೆಗೆಯಲಾಗಿದೆ</string>
-  <string name="send_to_voicemail_import_failed">ಆಮದು ವಿಫಲವಾಗಿದೆ</string>
-  <string name="call_blocking_disabled_notification_title">ಕರೆ ನಿರ್ಬಂಧಿಸುವಿಕೆ 48 ಗಂಟೆಗಳವರೆಗೆ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</string>
-  <string name="call_blocking_disabled_notification_text">ತುರ್ತು ಕರೆಯನ್ನು ಮಾಡಿರುವ ಕಾರಣದಿಂದ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ko/strings.xml b/java/com/android/dialer/blocking/res/values-ko/strings.xml
deleted file mode 100644
index 5d52207..0000000
--- a/java/com/android/dialer/blocking/res/values-ko/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">새로운 간편 차단 기능</string>
-  <string name="migrate_blocked_numbers_dialog_message">사용자를 보호하기 위하여 전화에서 차단 작동 방식을 변경해야 합니다. 차단된 번호에서 발송되는 통화 및 문자 메시지는 수신되지 않으며 다른 앱과 차단 사실이 공유될 수 있습니다.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">허용</string>
-  <string name="old_block_number_confirmation_title">%1$s번을 차단하시겠습니까?</string>
-  <string name="block_number_confirmation_message_vvm">이 번호에서 걸려오는 전화가 차단되며 음성사서함이 자동으로 삭제됩니다.</string>
-  <string name="block_number_confirmation_message_no_vvm">이 번호에서 걸려오는 전화가 차단되지만, 발신자가 음성사서함에 메시지를 남길 수는 있습니다.</string>
-  <string name="block_number_confirmation_message_new_filtering">이 번호로부터 수신되는 전화와 문자를 더 이상 받지 않습니다.</string>
-  <string name="block_number_ok">차단</string>
-  <string name="unblock_number_confirmation_title">%1$s번을 차단 해제하시겠습니까?</string>
-  <string name="unblock_number_ok">차단 해제</string>
-  <string name="invalidNumber">%1$s번은 잘못된 번호입니다.</string>
-  <string name="snackbar_number_blocked">%1$s 차단됨</string>
-  <string name="snackbar_number_unblocked">%1$s번 차단 해제됨</string>
-  <string name="send_to_voicemail_import_failed">가져오지 못했습니다.</string>
-  <string name="call_blocking_disabled_notification_title">통화 차단이 48시간 동안 중지됨</string>
-  <string name="call_blocking_disabled_notification_text">긴급 통화를 사용했기 때문에 중지되었습니다.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ky/strings.xml b/java/com/android/dialer/blocking/res/values-ky/strings.xml
deleted file mode 100644
index 4b2e26f..0000000
--- a/java/com/android/dialer/blocking/res/values-ky/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Номерлерди жаңы жөнөкөй ыкма менен бөгөттөө</string>
-  <string name="migrate_blocked_numbers_dialog_message">Сизди жакшыраак коргоо үчүн, \"Телефон\" колдонмосу бөгөттөө жөндөөлөрүн өзгөртүшү керек. Бөгөттөлгөн номерлерден чалуулар жана билдирүүлөр келбейт жана алар башка колдонмолор менен бөлүшүлүшү мүмкүн.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Уруксат берүү</string>
-  <string name="old_block_number_confirmation_title">%1$s бөгөттөлсүнбү?</string>
-  <string name="block_number_confirmation_message_vvm">Бул номерден келген чалуулар бөгөттөлөт жана үн билдирүүлөрү автоматтык түрдө жок кылынат.</string>
-  <string name="block_number_confirmation_message_no_vvm">Бул номерден келген чалуулар бөгөттөлөт, бирок чалуучу сизге үн билдирүүлөрүн калтыра берет.</string>
-  <string name="block_number_confirmation_message_new_filtering">Бул номерден келген чалууларды же SMS билдирүүлөрдү албай каласыз.</string>
-  <string name="block_number_ok">БӨГӨТТӨӨ</string>
-  <string name="unblock_number_confirmation_title">%1$s бөгөттөн чыгарылсынбы?</string>
-  <string name="unblock_number_ok">БӨГӨТТӨН ЧЫГАРУУ</string>
-  <string name="invalidNumber">%1$s жараксыз.</string>
-  <string name="snackbar_number_blocked">%1$s бөгөттөлдү</string>
-  <string name="snackbar_number_unblocked">%1$s бөгөттөн чыгарылды</string>
-  <string name="send_to_voicemail_import_failed">Импорттолбой калды</string>
-  <string name="call_blocking_disabled_notification_title">Чалууну бөгөттөө 48 саатка өчүрүлгөн</string>
-  <string name="call_blocking_disabled_notification_text">Шашылыш чалуу аткарылгандыктан өчүрүлгөн.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-lo/strings.xml b/java/com/android/dialer/blocking/res/values-lo/strings.xml
deleted file mode 100644
index 02bd974..0000000
--- a/java/com/android/dialer/blocking/res/values-lo/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">ການລັອກແບບໃໝ່ທີ່ງ່າຍດາຍ</string>
-  <string name="migrate_blocked_numbers_dialog_message">ເພື່ອປົກປ້ອງທ່ານໄດ້ດີຂຶ້ນ, ແອັບໂທລະສັບຕ້ອງການປ່ຽນວິທີການບລັອກ. ເບີໂທທີ່ທ່ານບລັອກໄວ້ຈະປິດກັ້ນທັງການໂທ ແລະ ຂໍ້ຄວາມ ແລະ ອາດມີການແບ່ງປັນກັບແອັບອື່ນໆນຳ.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">ອະນຸຍາດ</string>
-  <string name="old_block_number_confirmation_title">ບລັອກເບີ %1$s ບໍ?</string>
-  <string name="block_number_confirmation_message_vvm">ການໂທຈາກເບີໂທນີ້ຈະຖືກບລັອກໄວ້ ແລະຂໍ້ຄວາມສຽງຈະຖືກລຶບໂດຍອັດຕະໂນມັດ.</string>
-  <string name="block_number_confirmation_message_no_vvm">ການໂທຈາກເບີນີ້ຈະຖືກບລັອກໄວ້, ແຕ່ຜູ່ໂທອາດຈະຍັງສາມາດຝາກຂໍ້ຄວາມສຽງໃຫ້ທ່ານໄດ້.</string>
-  <string name="block_number_confirmation_message_new_filtering">ທ່ານຈະບໍ່ໄດ້ຮັບສາຍ ຫຼື ຂໍ້ຄວາມຈາກເບີນີ້ອີກຕໍ່ໄປ.</string>
-  <string name="block_number_ok">ບລັອກ</string>
-  <string name="unblock_number_confirmation_title">ປົດບລັອກເບີ %1$s ບໍ?</string>
-  <string name="unblock_number_ok">​ປົດ​ບລັອກ</string>
-  <string name="invalidNumber">%1$s ບໍ່ຖືກຕ້ອງ.</string>
-  <string name="snackbar_number_blocked">%1$s ຖືກບ​ລັອກໄວ້​ແລ້ວ</string>
-  <string name="snackbar_number_unblocked">%1$s ຖືກປົດບລັອກໄວ້ແລ້ວ</string>
-  <string name="send_to_voicemail_import_failed">ນຳ​ເຂົ້າ​ລົ້ມ​ເຫລວ</string>
-  <string name="call_blocking_disabled_notification_title">ການບ​ລັອກ​ສາຍ​ໂທ​ຖືກ​ປິດ​ໃຊ້​ງານ​ແລ້ວ​ເປັນ​ເວ​ລາ 48 ຊົ່​ວ​ໂມງ</string>
-  <string name="call_blocking_disabled_notification_text">ປິດ​ໃຊ້​ງານ​ແລ້ວ ເພາະ​ວ່າ​ໄດ້​ມີ​ການ​ໂທ​ສຸກ​ເສີນ.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-lt/strings.xml b/java/com/android/dialer/blocking/res/values-lt/strings.xml
deleted file mode 100644
index 2fc7f9b..0000000
--- a/java/com/android/dialer/blocking/res/values-lt/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Naujas supaprast. blokavimas</string>
-  <string name="migrate_blocked_numbers_dialog_message">Siekiant geriau jus apsaugoti, Telefono programa turi pakeisti blokavimo veikimo būdą. Blokuotų numerių skambučiai ir teksto pranešimai nebus priimami ir jie gali būti bendrinami su kitomis programomis.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Leisti</string>
-  <string name="old_block_number_confirmation_title">Blokuoti numerį %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Skambučiai iš šio numerio bus užblokuoti, o balso pašto pranešimai bus automatiškai ištrinti.</string>
-  <string name="block_number_confirmation_message_no_vvm">Skambučiai iš šio numerio bus užblokuoti, tačiau skambintojas vis tiek galės palikti jums balso pašto pranešimus.</string>
-  <string name="block_number_confirmation_message_new_filtering">Nebegausite skambučių ar teksto pranešimų iš šio numerio.</string>
-  <string name="block_number_ok">BLOKUOTI</string>
-  <string name="unblock_number_confirmation_title">Panaikinti numerio %1$s blokavimą?</string>
-  <string name="unblock_number_ok">PANAIKINTI BLOKAVIMĄ</string>
-  <string name="invalidNumber">%1$s yra netinkamas numeris.</string>
-  <string name="snackbar_number_blocked">%1$s užblokuotas</string>
-  <string name="snackbar_number_unblocked">Panaikintas %1$s blokavimas</string>
-  <string name="send_to_voicemail_import_failed">Importuoti nepavyko</string>
-  <string name="call_blocking_disabled_notification_title">Skambučių blokavimas išjungtas 48 val.</string>
-  <string name="call_blocking_disabled_notification_text">Išjungta, nes skambinta pagalbos numeriu.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-lv/strings.xml b/java/com/android/dialer/blocking/res/values-lv/strings.xml
deleted file mode 100644
index 6c8530a..0000000
--- a/java/com/android/dialer/blocking/res/values-lv/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Jauna, vienkāršota bloķēšanas funkcija</string>
-  <string name="migrate_blocked_numbers_dialog_message">Lai jūs labāk aizsargātu, lietotnē Tālrunis ir jāmaina bloķēšanas darbība. Turpmāk no bloķētajiem numuriem nevarēs saņemt zvanus un īsziņas, un bloķētos numurus varēs kopīgot ar citām lietotnēm.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Atļaut</string>
-  <string name="old_block_number_confirmation_title">Vai bloķēt numuru %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">No šī numura saņemtie zvani tiks bloķēti, un balss pasta ziņojumi tiks automātiski dzēsti.</string>
-  <string name="block_number_confirmation_message_no_vvm">No šī numura saņemtie zvani tiks bloķēti, taču zvanītājs joprojām varēs jums atstāt balss pasta ziņojumus.</string>
-  <string name="block_number_confirmation_message_new_filtering">Jūs vairs nesaņemsiet zvanus un īsziņas no šī numura.</string>
-  <string name="block_number_ok">BLOĶĒT</string>
-  <string name="unblock_number_confirmation_title">Vai atbloķēt numuru %1$s?</string>
-  <string name="unblock_number_ok">ATBLOĶĒT</string>
-  <string name="invalidNumber">Numurs %1$s nav derīgs.</string>
-  <string name="snackbar_number_blocked">%1$s bloķēts</string>
-  <string name="snackbar_number_unblocked">Numurs %1$s atbloķēts</string>
-  <string name="send_to_voicemail_import_failed">Importēšana neizdevās</string>
-  <string name="call_blocking_disabled_notification_title">Zvanu bloķēšana atspējota uz 48 stundām</string>
-  <string name="call_blocking_disabled_notification_text">Zvanu bloķēšana atspējota, jo tika veikts ārkārtas zvans.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-mk/strings.xml b/java/com/android/dialer/blocking/res/values-mk/strings.xml
deleted file mode 100644
index 7204398..0000000
--- a/java/com/android/dialer/blocking/res/values-mk/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Ново, поедноставено блокирање</string>
-  <string name="migrate_blocked_numbers_dialog_message">За подобра заштита, Телефонот треба да го промени начинот на блокирање. Блокираните броеви сега ќе ги сопрат повиците и текстуалните пораки и ќе може да се споделат со други апликации.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Дозволи</string>
-  <string name="old_block_number_confirmation_title">Да се блокира %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Повиците од овој број ќе се блокираат, а говорната пошта автоматски ќе се брише.</string>
-  <string name="block_number_confirmation_message_no_vvm">Повиците од овој број ќе се блокираат, но можно е повикувачот сѐ уште да може да ви остава говорна пошта.</string>
-  <string name="block_number_confirmation_message_new_filtering">Веќе нема да примате повици или текстуални пораки од овој број.</string>
-  <string name="block_number_ok">БЛОКИРАЈ</string>
-  <string name="unblock_number_confirmation_title">Да се одблокира %1$s?</string>
-  <string name="unblock_number_ok">ДЕБЛОКИРАЈ</string>
-  <string name="invalidNumber">Бројот %1$s е неважечки.</string>
-  <string name="snackbar_number_blocked">%1$s е блокиран</string>
-  <string name="snackbar_number_unblocked">Бројот %1$s е одблокиран</string>
-  <string name="send_to_voicemail_import_failed">Увоз не успеа</string>
-  <string name="call_blocking_disabled_notification_title">Блокирањето на повикот е оневозможено 48 часа</string>
-  <string name="call_blocking_disabled_notification_text">Оневозможено е затоа што беше направен итен повик.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ml/strings.xml b/java/com/android/dialer/blocking/res/values-ml/strings.xml
deleted file mode 100644
index f6fa394..0000000
--- a/java/com/android/dialer/blocking/res/values-ml/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">പുതിയ, ലളിതമായ ബ്ലോക്കുചെയ്യൽ</string>
-  <string name="migrate_blocked_numbers_dialog_message">നിങ്ങളെ മെച്ചപ്പെട്ട രീതിയിൽ പരിരക്ഷിക്കുന്നതിന്, ഫോണിലെ ബ്ലോക്കുചെയ്യൽ പ്രവർത്തന രീതി മാറ്റേണ്ടതുണ്ട്. നിങ്ങളുടെ ബ്ലോക്കുചെയ്‌ത നമ്പറുകളിൽ നിന്നുള്ള കോൾ, ടെക്‌സ്‌റ്റ് എന്നിവ ഇപ്പോൾ അവസാനിപ്പിക്കും, ഈ വിവരം അത് മറ്റ് ആപ്‌സുമായി പങ്കിടാനുമിടയുണ്ട്.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">അനുവദിക്കുക</string>
-  <string name="old_block_number_confirmation_title">%1$s ബ്ലോക്ക് ചെയ്യണോ?</string>
-  <string name="block_number_confirmation_message_vvm">ഈ നമ്പറിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്കുചെയ്യും, വോയ്സ്മെയിലുകളെ സ്വയമേവ ഇല്ലാതാക്കും.</string>
-  <string name="block_number_confirmation_message_no_vvm">ഈ നമ്പറിൽ നിന്നുള്ള കോളുകൾ ബ്ലോക്കുചെയ്യും, എന്നാൽ വിളിക്കുന്നയാൾക്ക് അപ്പോഴും നിങ്ങൾക്ക് വോയ്സ്‌മെയിലുകൾ അയയ്ക്കാൻ കഴിഞ്ഞേക്കാം.</string>
-  <string name="block_number_confirmation_message_new_filtering">നിങ്ങൾക്ക് ഇനി ഈ നമ്പറിൽ നിന്ന് കോളുകളോ ടെക്‌‌സ്‌റ്റോ ലഭിക്കില്ല.</string>
-  <string name="block_number_ok">ബ്ലോക്കുചെയ്യുക</string>
-  <string name="unblock_number_confirmation_title">%1$s അൺബ്ലോക്ക് ചെയ്യണോ?</string>
-  <string name="unblock_number_ok">അൺബ്ലോക്കുചെയ്യുക</string>
-  <string name="invalidNumber">%1$s അസാധുവാണ്.</string>
-  <string name="snackbar_number_blocked">%1$s ബ്ലോക്കുചെയ്തു</string>
-  <string name="snackbar_number_unblocked">%1$s അൺബ്ലോക്ക് ചെയ്‌തു</string>
-  <string name="send_to_voicemail_import_failed">ഇമ്പോർട്ടുചെയ്യൽ പരാജയപ്പെട്ടു</string>
-  <string name="call_blocking_disabled_notification_title">48 മണിക്കൂർ നേരത്തേക്ക് കോൾ ബ്ലോക്കുചെയ്യൽ പ്രവർത്തനരഹിതമാക്കി</string>
-  <string name="call_blocking_disabled_notification_text">എമർജൻസി കോൾ നടത്തിയതിനാൽ പ്രവർത്തനരഹിതമാക്കി.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-mn/strings.xml b/java/com/android/dialer/blocking/res/values-mn/strings.xml
deleted file mode 100644
index b687268..0000000
--- a/java/com/android/dialer/blocking/res/values-mn/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Шинэ, хялбаршуулсан хориг</string>
-  <string name="migrate_blocked_numbers_dialog_message">Таныг илүү сайн хамгаалахын тулд утасны хоригийн тохиргоог өөрчлөх шаардлагатай. Таны хориглосон дугааруудаас дуудлага, зурвас ирэхгүй бөгөөд тэдгээрийг бусад апп-тай хуваалцаж болзошгүй.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Зөвшөөрөх</string>
-  <string name="old_block_number_confirmation_title">%1$s-г хориглох уу?</string>
-  <string name="block_number_confirmation_message_vvm">Энэ дугаараас ирэх дуудлагыг блоклох бөгөөд дуут шуудан автоматаар устах болно.</string>
-  <string name="block_number_confirmation_message_no_vvm">Энэ дугаараас ирэх дуудлагыг блоклосон, гэхдээ залгагч танд дуут шуудан илгээх боломжтой.</string>
-  <string name="block_number_confirmation_message_new_filtering">Та энэ дугаараас цаашид дуудлага буюу мессеж хүлээж авахгүй.</string>
-  <string name="block_number_ok">БЛОКЛОХ</string>
-  <string name="unblock_number_confirmation_title">%1$s-г хоригоос гаргах уу?</string>
-  <string name="unblock_number_ok">БЛОКООС ГАРГАХ</string>
-  <string name="invalidNumber">%1$s буруу байна.</string>
-  <string name="snackbar_number_blocked">%1$s-г блоклосон</string>
-  <string name="snackbar_number_unblocked">%1$s-г хоригоос гаргасан</string>
-  <string name="send_to_voicemail_import_failed">Импортолж чадсангүй</string>
-  <string name="call_blocking_disabled_notification_title">Дуудлага блоклохыг 48 цагийн турш идэвхгүй болгосон.</string>
-  <string name="call_blocking_disabled_notification_text">Яаралтай дуудлага хийсэн тул идэвхгүй болгосон.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-mr/strings.xml b/java/com/android/dialer/blocking/res/values-mr/strings.xml
deleted file mode 100644
index 05b5bc1..0000000
--- a/java/com/android/dialer/blocking/res/values-mr/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">नवीन, सरलीकृत अवरोधित करणे</string>
-  <string name="migrate_blocked_numbers_dialog_message">आपले अधिक चांगले संरक्षण करण्यासाठी, अवरोधित करणे ज्या पद्धतीने कार्य करते ते बदलण्याची फोनला गरज आहे. आपले अवरोधित केलेले नंबर कॉल आणि मजकूर थांबवतील आणि कदाचित इतर अॅप्ससह सामायिक केले जाऊ शकतील.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">अनुमती द्या</string>
-  <string name="old_block_number_confirmation_title">%1$s ब्‍लॉक करायचा?</string>
-  <string name="block_number_confirmation_message_vvm">या नंबर वरून केलेले कॉल अवरोधित केले जातील आणि व्हॉइसमेल स्वयंचलितपणे हटविले जातील.</string>
-  <string name="block_number_confirmation_message_no_vvm">या नंबर वरून केलेले कॉल अवरोधित केले जातील परंतु कॉलर आपल्‍यासाठी व्हॉइसमेल सोडण्यात अद्याप सक्षम असू शकेल.</string>
-  <string name="block_number_confirmation_message_new_filtering">आपल्याला या नंबर वरून कॉल किंवा मजकूर प्राप्त होणार नाहीत.</string>
-  <string name="block_number_ok">अवरोधित करा</string>
-  <string name="unblock_number_confirmation_title">%1$s अनब्‍लॉक करायचा?</string>
-  <string name="unblock_number_ok">अनावरोधित करा</string>
-  <string name="invalidNumber">%1$s चुकीचा आहे.</string>
-  <string name="snackbar_number_blocked">%1$s अवरोधित केला</string>
-  <string name="snackbar_number_unblocked">%1$s अनब्‍लॉक केला</string>
-  <string name="send_to_voicemail_import_failed">आयात अयशस्वी झाले</string>
-  <string name="call_blocking_disabled_notification_title">कॉल अवरोधित करणे 48 तासांसाठी अक्षम केले</string>
-  <string name="call_blocking_disabled_notification_text">एक आणीबाणीचा कॉल केल्‍याने अक्षम केले.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ms/strings.xml b/java/com/android/dialer/blocking/res/values-ms/strings.xml
deleted file mode 100644
index 7202b58..0000000
--- a/java/com/android/dialer/blocking/res/values-ms/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Penyekatan mudah yang baharu</string>
-  <string name="migrate_blocked_numbers_dialog_message">Untuk melindungi anda dengan lebih berkesan, Telefon perlu menukar cara penyekatan berfungsi. Nombor yang disekat akan menghentikan panggilan dan teks serta boleh dikongsi dengan apl lain.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Benarkan</string>
-  <string name="old_block_number_confirmation_title">Sekat %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Panggilan daripada nombor ini akan disekat dan mel suara akan dipadamkan secara automatik.</string>
-  <string name="block_number_confirmation_message_no_vvm">Panggilan daripada nombor ini akan disekat, tetapi pemanggil masih boleh meninggalkan mel suara kepada anda.</string>
-  <string name="block_number_confirmation_message_new_filtering">Anda tidak akan menerima panggilan atau teks daripada nombor ini lagi.</string>
-  <string name="block_number_ok">SEKAT</string>
-  <string name="unblock_number_confirmation_title">Nyahsekat %1$s?</string>
-  <string name="unblock_number_ok">NYAHSEKAT</string>
-  <string name="invalidNumber">%1$s tidak sah.</string>
-  <string name="snackbar_number_blocked">%1$s disekat</string>
-  <string name="snackbar_number_unblocked">%1$s dinyahsekat</string>
-  <string name="send_to_voicemail_import_failed">Pengimportan gagal</string>
-  <string name="call_blocking_disabled_notification_title">Sekatan panggilan dilumpuhkan selama 48 jam</string>
-  <string name="call_blocking_disabled_notification_text">Dilumpuhkan kerana panggilan kecemasan telah dibuat.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-my/strings.xml b/java/com/android/dialer/blocking/res/values-my/strings.xml
deleted file mode 100644
index 3db73be..0000000
--- a/java/com/android/dialer/blocking/res/values-my/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">အသစ်၊ ရိုးရှင်းသည့် ပိတ်ဆို့မှု</string>
-  <string name="migrate_blocked_numbers_dialog_message">သင့်အား ပိုမိုကောင်းမွန်စွာကာကွယ်နိုင်ရန်၊ ဖုန်းသည် ပိတ်ဆို့ခြင်းအလုပ်လုပ်ပုံကို ပြောင်းလဲရန် လိုအပ်ပါသည်။ သင် ပိတ်ဆို့ထားသည့် နံပါတ်များမှ ခေါ်ဆိုခြင်းနှင့် စာပို့ခြင်းများကို ရပ်တန့်လိုက်မည်ဖြစ်ပြီး၊ ၎င်းနံပါတ်များကို အခြားအက်ပ်များဖြင့်လည်း မျှဝေနိုင်ပါသည်။</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">ခွင့်ပြုမည်</string>
-  <string name="old_block_number_confirmation_title">%1$sကို ပိတ်မလား။</string>
-  <string name="block_number_confirmation_message_vvm">ဤနံပါတ်မှခေါ်ဆိုမှုများကို ပိတ်ဆို့လိုက်မည်ဖြစ်ပြီး အသံမေးလ်များကို အလိုအလျောက် ဖျက်လိုက်ပါမည်။</string>
-  <string name="block_number_confirmation_message_no_vvm">ဤနံပါတ်မှ ခေါ်ဆိုမှုများကို ပိတ်ဆို့လိုက်ပါမည်၊ သို့သော် ၎င်းတို့သည် သင့်ကို အသံမေးလ်ချန်ခဲ့နိုင်ပါသည်။</string>
-  <string name="block_number_confirmation_message_new_filtering">ဤနံပါတ်ထံမှ ဖုန်းခေါ်ဆိုမှုများနှင့် စာများကို သင် ထပ်မံရရှိတော့မည် မဟုတ်ပါ။</string>
-  <string name="block_number_ok">ပိတ်ဆို့ပါ</string>
-  <string name="unblock_number_confirmation_title">%1$sကို ပြန်ဖွင့်မလား။</string>
-  <string name="unblock_number_ok">ပိတ်ဆို့ခြင်းမှ ဖယ်ရှားပါ</string>
-  <string name="invalidNumber">%1$sသည် မမှန်ကန်ပါ။</string>
-  <string name="snackbar_number_blocked">%1$s ကိုပိတ်ဆို့လိုက်ပါပြီ</string>
-  <string name="snackbar_number_unblocked">%1$sကို ပြန်ဖွင့်လိုက်ပါပြီ</string>
-  <string name="send_to_voicemail_import_failed">တင်သွင်းမှု မအောင်မြင်ပါ</string>
-  <string name="call_blocking_disabled_notification_title">ခေါ်ဆိုမှုပိတ်ဆို့ခြင်းကို ၄၈ နာရီပိတ်ထားသည်</string>
-  <string name="call_blocking_disabled_notification_text">အရေးပေါ်ခေါ်ဆိုမှု ပြုလုပ်ခဲ့သည့်အတွက် ပိတ်ထားပါသည်။</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-nb/strings.xml b/java/com/android/dialer/blocking/res/values-nb/strings.xml
deleted file mode 100644
index 9ce2a18..0000000
--- a/java/com/android/dialer/blocking/res/values-nb/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Ny, forenklet blokkering</string>
-  <string name="migrate_blocked_numbers_dialog_message">Telefon-appen endrer innstillingene for blokkering for at du skal være bedre beskyttet. Du mottar verken meldinger eller anrop fra blokkerte numre, og det kan hende at disse numrene blir delt med andre apper.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Tillat</string>
-  <string name="old_block_number_confirmation_title">Vil du blokkere %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Anrop fra dette nummeret blokkeres, og talepost blir automatisk slettet.</string>
-  <string name="block_number_confirmation_message_no_vvm">Anrop fra dette nummeret blokkeres, men den som ringer kan fortsatt legge igjen beskjeder i talepostkassen din.</string>
-  <string name="block_number_confirmation_message_new_filtering">Du kommer ikke lenger til å motta anrop eller SMS-er fra dette nummeret.</string>
-  <string name="block_number_ok">BLOKKÉR</string>
-  <string name="unblock_number_confirmation_title">Vil du oppheve blokkeringen av %1$s?</string>
-  <string name="unblock_number_ok">OPPHEV BLOKKERINGEN</string>
-  <string name="invalidNumber">%1$s er ugyldig.</string>
-  <string name="snackbar_number_blocked">%1$s er blokkert</string>
-  <string name="snackbar_number_unblocked">Blokkeringen av %1$s er opphevet</string>
-  <string name="send_to_voicemail_import_failed">Importeringen mislyktes</string>
-  <string name="call_blocking_disabled_notification_title">Anropsblokkering er slått av i 48 timer</string>
-  <string name="call_blocking_disabled_notification_text">Slått av fordi du foretok et nødanrop.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ne/strings.xml b/java/com/android/dialer/blocking/res/values-ne/strings.xml
deleted file mode 100644
index 4271c81..0000000
--- a/java/com/android/dialer/blocking/res/values-ne/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">नयाँ, सरलीकृत रोकावट</string>
-  <string name="migrate_blocked_numbers_dialog_message">तपाईँको थप सुरक्षाका लागि फोनको रोकावट गर्ने विधिमा परिवर्तन गर्न आवश्यक छ। तपाईँबाट रोकावट गरिएका नम्बरहरूले अब कल र पाठ सन्देशहरूलाई रोक्नेछन् र यी नम्बरहरूलाई अन्य अनुप्रयोगहरूसँग साझेदारी गरिन सक्छ।</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">अनुमति दिनुहोस्</string>
-  <string name="old_block_number_confirmation_title">%1$s माथि रोक लगाउने हो?</string>
-  <string name="block_number_confirmation_message_vvm">यो नम्बरबाट सबै कलहरू रोकिनेछन् र भ्वाइसमेलहरू स्वचालित रूपमा मेटिनेछन्।</string>
-  <string name="block_number_confirmation_message_no_vvm">यो नम्बरबाट सबै कलहरू रोकिनेछन्। तर कलरले अझै तपाईँलाई भ्वाइस मेलहरू भने छोड्न सक्नेछन्।</string>
-  <string name="block_number_confirmation_message_new_filtering">तपाईँले अब उप्रान्त यस नम्बरबाट कल वा पाठ सन्देशहरू प्राप्त गर्नुहुने छैन।</string>
-  <string name="block_number_ok">रोक्नुहोस्</string>
-  <string name="unblock_number_confirmation_title">%1$s माथिको रोक हटाउने हो?</string>
-  <string name="unblock_number_ok">रोक हटाउनुहोस्</string>
-  <string name="invalidNumber">%1$s अमान्य छ।</string>
-  <string name="snackbar_number_blocked">%1$s रोकियो</string>
-  <string name="snackbar_number_unblocked">%1$s माथिको रोक हटाइयो</string>
-  <string name="send_to_voicemail_import_failed">आयात असफल भयो</string>
-  <string name="call_blocking_disabled_notification_title">४८ घण्टाको लागि कल निषेध असक्षम गरियो</string>
-  <string name="call_blocking_disabled_notification_text">आपत्कालीन कल गरिएको हुनाले असक्षम गरियो।</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-nl/strings.xml b/java/com/android/dialer/blocking/res/values-nl/strings.xml
deleted file mode 100644
index f0272e6..0000000
--- a/java/com/android/dialer/blocking/res/values-nl/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Verbeterde blokkeerfunctie</string>
-  <string name="migrate_blocked_numbers_dialog_message">Telefoon moet het blokkeergedrag aanpassen om je beter te beschermen. Voor je geblokkeerde nummers worden nu zowel oproepen als sms\'jes geblokkeerd. Deze instelling kan worden gedeeld met andere apps.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Toestaan</string>
-  <string name="old_block_number_confirmation_title">%1$s blokkeren?</string>
-  <string name="block_number_confirmation_message_vvm">Oproepen van dit nummer worden geblokkeerd en voicemails worden automatisch verwijderd.</string>
-  <string name="block_number_confirmation_message_no_vvm">Oproepen van dit nummer worden geblokkeerd, maar de beller kan nog wel voicemails achterlaten.</string>
-  <string name="block_number_confirmation_message_new_filtering">Je ontvangt geen oproepen of sms\'jes meer van dit nummer.</string>
-  <string name="block_number_ok">BLOKKEREN</string>
-  <string name="unblock_number_confirmation_title">Blokkering van %1$s opheffen?</string>
-  <string name="unblock_number_ok">BLOKKERING OPHEFFEN</string>
-  <string name="invalidNumber">%1$s is ongeldig.</string>
-  <string name="snackbar_number_blocked">%1$s geblokkeerd</string>
-  <string name="snackbar_number_unblocked">Blokkering van %1$s opgeheven</string>
-  <string name="send_to_voicemail_import_failed">Importeren mislukt</string>
-  <string name="call_blocking_disabled_notification_title">Oproepblokkering is 48 uur uitgeschakeld</string>
-  <string name="call_blocking_disabled_notification_text">Uitgeschakeld omdat een noodoproep is geplaatst.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-no/strings.xml b/java/com/android/dialer/blocking/res/values-no/strings.xml
deleted file mode 100644
index 9ce2a18..0000000
--- a/java/com/android/dialer/blocking/res/values-no/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Ny, forenklet blokkering</string>
-  <string name="migrate_blocked_numbers_dialog_message">Telefon-appen endrer innstillingene for blokkering for at du skal være bedre beskyttet. Du mottar verken meldinger eller anrop fra blokkerte numre, og det kan hende at disse numrene blir delt med andre apper.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Tillat</string>
-  <string name="old_block_number_confirmation_title">Vil du blokkere %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Anrop fra dette nummeret blokkeres, og talepost blir automatisk slettet.</string>
-  <string name="block_number_confirmation_message_no_vvm">Anrop fra dette nummeret blokkeres, men den som ringer kan fortsatt legge igjen beskjeder i talepostkassen din.</string>
-  <string name="block_number_confirmation_message_new_filtering">Du kommer ikke lenger til å motta anrop eller SMS-er fra dette nummeret.</string>
-  <string name="block_number_ok">BLOKKÉR</string>
-  <string name="unblock_number_confirmation_title">Vil du oppheve blokkeringen av %1$s?</string>
-  <string name="unblock_number_ok">OPPHEV BLOKKERINGEN</string>
-  <string name="invalidNumber">%1$s er ugyldig.</string>
-  <string name="snackbar_number_blocked">%1$s er blokkert</string>
-  <string name="snackbar_number_unblocked">Blokkeringen av %1$s er opphevet</string>
-  <string name="send_to_voicemail_import_failed">Importeringen mislyktes</string>
-  <string name="call_blocking_disabled_notification_title">Anropsblokkering er slått av i 48 timer</string>
-  <string name="call_blocking_disabled_notification_text">Slått av fordi du foretok et nødanrop.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-pa/strings.xml b/java/com/android/dialer/blocking/res/values-pa/strings.xml
deleted file mode 100644
index 110be23..0000000
--- a/java/com/android/dialer/blocking/res/values-pa/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">ਨਵੀਂ, ਸਰਲੀਕ੍ਰਿਤ ਬਲੌਕਿੰਗ</string>
-  <string name="migrate_blocked_numbers_dialog_message">ਤੁਹਾਡੀ ਬਿਹਤਰ ਢੰਗ ਨਾਲ ਰੱਖਿਆ ਲਈ, ਫੋਨ ਨੂੰ ਬਲੌਕਿੰਗ ਦੇ ਕੰਮ ਕਰਨ ਦੇ ਢੰਗ ਨੂੰ ਬਦਲਣ ਦੀ ਲੋੜ ਹੈ। ਹੁਣ ਤੁਹਾਡੇ ਬਲੌਕ ਕੀਤੇ ਗਏ ਨੰਬਰਾਂ ਤੋਂ ਕਾਲਾਂ ਅਤੇ ਲਿਖਤ ਸੁਨੇਹਿਆਂ ਦੋਵਾਂ ਨੂੰ ਰੋਕ ਦਿੱਤਾ ਜਾਵੇਗਾ ਅਤੇ ਇਹਨਾਂ ਨੂੰ ਹੋਰ ਐਪਾਂ ਨਾਲ ਵੀ ਸਾਂਝਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">ਮਨਜ਼ੂਰੀ ਦਿਓ</string>
-  <string name="old_block_number_confirmation_title">ਕੀ %1$s ਬਲਾਕ ਕਰਨਾ ਹੈ?</string>
-  <string name="block_number_confirmation_message_vvm">ਇਸ ਨੰਬਰ ਤੋਂ ਕਾਲਾਂ ਬਲੌਕ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ ਅਤੇ ਵੌਇਸਮੇਲਾਂ ਆਪਣੇ ਆਪ ਮਿਟਾ ਦਿੱਤੀਆਂ ਜਾਣਗੀਆਂ।</string>
-  <string name="block_number_confirmation_message_no_vvm">ਇਸ ਨੰਬਰ ਤੋਂ ਕਾਲਾਂ ਬਲੌਕ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ, ਪਰ ਕਾਲਰ ਹਾਲੇ ਵੀ ਤੁਹਾਡੇ ਲਈ ਵੌਇਸਮੇਲਾਂ ਛੱਡ ਸਕਦਾ ਹੈ।</string>
-  <string name="block_number_confirmation_message_new_filtering">ਤੁਹਾਨੂੰ ਹੁਣ ਇਸ ਨੰਬਰ ਤੋਂ ਕਾਲਾਂ ਜਾਂ ਲਿਖਤ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋਣਗੇ।</string>
-  <string name="block_number_ok">ਬਲੌਕ ਕਰੋ</string>
-  <string name="unblock_number_confirmation_title">ਕੀ %1$s ਅਣਬਲਾਕ ਕਰਨਾ ਹੈ?</string>
-  <string name="unblock_number_ok">ਅਨਬਲੌਕ ਕਰੋ</string>
-  <string name="invalidNumber">%1$s ਅਵੈਧ ਹੈ।</string>
-  <string name="snackbar_number_blocked">%1$s ਬਲੌਕ ਕੀਤਾ</string>
-  <string name="snackbar_number_unblocked">%1$s ਅਣਬਲਾਕ ਕੀਤਾ ਗਿਆ</string>
-  <string name="send_to_voicemail_import_failed">ਆਯਾਤ ਅਸਫਲ ਹੋਇਆ</string>
-  <string name="call_blocking_disabled_notification_title">ਕਾਲ ਬਲੋੌਕਿੰਗ 48 ਘੰਟਿਆਂ ਲਈ ਅਯੋਗ ਕੀਤੀ ਗਈ</string>
-  <string name="call_blocking_disabled_notification_text">ਆਯੋਗ ਕੀਤਾ ਕਿਉਂਕਿ ਇੱਕ ਸੰਕਟ ਕਾਲ ਕੀਤੀ ਗਈ ਸੀ।</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-pl/strings.xml b/java/com/android/dialer/blocking/res/values-pl/strings.xml
deleted file mode 100644
index a434a0b..0000000
--- a/java/com/android/dialer/blocking/res/values-pl/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Nowe, uproszczone blokowanie</string>
-  <string name="migrate_blocked_numbers_dialog_message">Aby lepiej Cię chronić, Telefon musi zmienić działanie związane z blokowaniem. Od teraz nie będziesz już otrzymywać połączeń ani SMS-ów z zablokowanych numerów. Numery te mogą też być udostępniane innym aplikacjom.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Zezwól</string>
-  <string name="old_block_number_confirmation_title">Zablokować numer %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Połączenia z tego numeru będą blokowane, a wiadomości głosowe będą usuwane automatycznie.</string>
-  <string name="block_number_confirmation_message_no_vvm">Połączenia z tego numeru będą blokowane, ale dzwoniący wciąż będzie mógł zostawiać wiadomości głosowe.</string>
-  <string name="block_number_confirmation_message_new_filtering">Nie będziesz otrzymywać połączeń ani SMS-ów z tego numeru.</string>
-  <string name="block_number_ok">ZABLOKUJ</string>
-  <string name="unblock_number_confirmation_title">Odblokować numer %1$s?</string>
-  <string name="unblock_number_ok">ODBLOKUJ</string>
-  <string name="invalidNumber">Numer %1$s jest nieprawidłowy.</string>
-  <string name="snackbar_number_blocked">%1$s zablokowany</string>
-  <string name="snackbar_number_unblocked">Numer %1$s odblokowany</string>
-  <string name="send_to_voicemail_import_failed">Nie udało się zaimportować</string>
-  <string name="call_blocking_disabled_notification_title">Blokada połączeń została wyłączona na 48 godzin</string>
-  <string name="call_blocking_disabled_notification_text">Wyłączona, ponieważ wykonano połączenie alarmowe.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-pt-rBR/strings.xml b/java/com/android/dialer/blocking/res/values-pt-rBR/strings.xml
deleted file mode 100644
index cfe3dc0..0000000
--- a/java/com/android/dialer/blocking/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Novo bloqueio simplificado</string>
-  <string name="migrate_blocked_numbers_dialog_message">Para aumentar sua proteção, é preciso alterar o modo como o bloqueio funciona no smartphone. Os números bloqueados agora impedirão chamadas e mensagens de texto, e será possível compartilhá-los com outros apps.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Permitir</string>
-  <string name="old_block_number_confirmation_title">Bloquear %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Chamadas feitas a partir deste número serão bloqueadas. Correios de voz serão excluídos automaticamente.</string>
-  <string name="block_number_confirmation_message_no_vvm">Chamadas feitas a partir deste número serão bloqueadas, mas é possível que o autor ainda consiga deixar correios de voz para você.</string>
-  <string name="block_number_confirmation_message_new_filtering">Você não receberá mais chamadas ou mensagens de texto deste número.</string>
-  <string name="block_number_ok">BLOQUEAR</string>
-  <string name="unblock_number_confirmation_title">Desbloquear %1$s?</string>
-  <string name="unblock_number_ok">DESBLOQUEAR</string>
-  <string name="invalidNumber">O número %1$s é inválido.</string>
-  <string name="snackbar_number_blocked">Número %1$s bloqueado</string>
-  <string name="snackbar_number_unblocked">O número %1$s foi desbloqueado</string>
-  <string name="send_to_voicemail_import_failed">Falha na importação</string>
-  <string name="call_blocking_disabled_notification_title">Bloqueio de chamadas desativado por 48 horas</string>
-  <string name="call_blocking_disabled_notification_text">Desativado porque foi feita uma chamada de emergência.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-pt-rPT/strings.xml b/java/com/android/dialer/blocking/res/values-pt-rPT/strings.xml
deleted file mode 100644
index c12d2c4..0000000
--- a/java/com/android/dialer/blocking/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Novo bloqueio simplificado</string>
-  <string name="migrate_blocked_numbers_dialog_message">Para o proteger melhor, a aplicação Telemóvel tem de alterar o modo de funcionamento do bloqueio. Deixa de receber chamadas e mensagens de texto dos números bloqueados e estes podem ser partilhados com outras aplicações.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Permitir</string>
-  <string name="old_block_number_confirmation_title">Pretende bloquear%1$s?</string>
-  <string name="block_number_confirmation_message_vvm">As chamadas a partir deste número serão bloqueadas e as mensagens de correio de voz serão automaticamente eliminadas.</string>
-  <string name="block_number_confirmation_message_no_vvm">As chamadas a partir deste número serão bloqueadas, mas o autor da chamada poderá deixar-lhe mensagens de correio de voz.</string>
-  <string name="block_number_confirmation_message_new_filtering">Deixará de receber chamadas ou mensagens de texto deste número.</string>
-  <string name="block_number_ok">BLOQUEAR</string>
-  <string name="unblock_number_confirmation_title">Pretende desbloquear%1$s?</string>
-  <string name="unblock_number_ok">DESBLOQUEAR</string>
-  <string name="invalidNumber">%1$sé inválido.</string>
-  <string name="snackbar_number_blocked">%1$s bloqueado</string>
-  <string name="snackbar_number_unblocked">%1$sdesbloqueado</string>
-  <string name="send_to_voicemail_import_failed">Falha ao importar</string>
-  <string name="call_blocking_disabled_notification_title">Bloqueio de chamadas desativado durante 48 horas</string>
-  <string name="call_blocking_disabled_notification_text">Desativado porque foi efetuada uma chamada de emergência.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-pt/strings.xml b/java/com/android/dialer/blocking/res/values-pt/strings.xml
deleted file mode 100644
index cfe3dc0..0000000
--- a/java/com/android/dialer/blocking/res/values-pt/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Novo bloqueio simplificado</string>
-  <string name="migrate_blocked_numbers_dialog_message">Para aumentar sua proteção, é preciso alterar o modo como o bloqueio funciona no smartphone. Os números bloqueados agora impedirão chamadas e mensagens de texto, e será possível compartilhá-los com outros apps.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Permitir</string>
-  <string name="old_block_number_confirmation_title">Bloquear %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Chamadas feitas a partir deste número serão bloqueadas. Correios de voz serão excluídos automaticamente.</string>
-  <string name="block_number_confirmation_message_no_vvm">Chamadas feitas a partir deste número serão bloqueadas, mas é possível que o autor ainda consiga deixar correios de voz para você.</string>
-  <string name="block_number_confirmation_message_new_filtering">Você não receberá mais chamadas ou mensagens de texto deste número.</string>
-  <string name="block_number_ok">BLOQUEAR</string>
-  <string name="unblock_number_confirmation_title">Desbloquear %1$s?</string>
-  <string name="unblock_number_ok">DESBLOQUEAR</string>
-  <string name="invalidNumber">O número %1$s é inválido.</string>
-  <string name="snackbar_number_blocked">Número %1$s bloqueado</string>
-  <string name="snackbar_number_unblocked">O número %1$s foi desbloqueado</string>
-  <string name="send_to_voicemail_import_failed">Falha na importação</string>
-  <string name="call_blocking_disabled_notification_title">Bloqueio de chamadas desativado por 48 horas</string>
-  <string name="call_blocking_disabled_notification_text">Desativado porque foi feita uma chamada de emergência.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ro/strings.xml b/java/com/android/dialer/blocking/res/values-ro/strings.xml
deleted file mode 100644
index bbcb8e7..0000000
--- a/java/com/android/dialer/blocking/res/values-ro/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Mod de blocare nou, mai simplu</string>
-  <string name="migrate_blocked_numbers_dialog_message">Pentru a vă proteja mai bine, aplicația Telefon trebuie să schimbe modul în care funcționează blocarea. Se vor opri apelurile și mesajele text de la numerele blocate, iar la acestea pot avea acces și alte aplicații.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Permiteți</string>
-  <string name="old_block_number_confirmation_title">Blocați %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Apelurile de la acest număr vor fi blocate, iar mesajele vocale vor fi șterse automat.</string>
-  <string name="block_number_confirmation_message_no_vvm">Apelurile de la acest număr vor fi blocate, dar apelantul va putea totuși să vă lase mesaje vocale.</string>
-  <string name="block_number_confirmation_message_new_filtering">Nu veți mai primi apeluri sau mesaje text de la acest număr.</string>
-  <string name="block_number_ok">BLOCAȚI</string>
-  <string name="unblock_number_confirmation_title">Deblocați %1$s?</string>
-  <string name="unblock_number_ok">DEBLOCAȚI</string>
-  <string name="invalidNumber">%1$s nu este valid.</string>
-  <string name="snackbar_number_blocked">%1$s a fost blocat</string>
-  <string name="snackbar_number_unblocked">%1$s a fost deblocat.</string>
-  <string name="send_to_voicemail_import_failed">Importul nu a reușit</string>
-  <string name="call_blocking_disabled_notification_title">Blocarea apelurilor este dezactivată pentru 48 de ore</string>
-  <string name="call_blocking_disabled_notification_text">Dezactivată din cauza efectuării unui apel de urgență.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ru/strings.xml b/java/com/android/dialer/blocking/res/values-ru/strings.xml
deleted file mode 100644
index 94574bd..0000000
--- a/java/com/android/dialer/blocking/res/values-ru/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Простая блокировка номеров</string>
-  <string name="migrate_blocked_numbers_dialog_message">Для более надежной защиты приложению \"Телефон\" требуется изменить настройки блокировки. С заблокированных номеров теперь не будут приниматься звонки и сообщения, а сами номера могут быть предоставлены другим приложениям.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Разрешить</string>
-  <string name="old_block_number_confirmation_title">Заблокировать номер %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Вызовы с этого номера будут блокироваться, а голосовые сообщения – автоматически удаляться.</string>
-  <string name="block_number_confirmation_message_no_vvm">Вызовы с этого номера будут блокироваться, но абонент сможет оставлять вам голосовые сообщения.</string>
-  <string name="block_number_confirmation_message_new_filtering">Вызовы и сообщения с этого номера будут блокироваться.</string>
-  <string name="block_number_ok">БЛОКИРОВАТЬ</string>
-  <string name="unblock_number_confirmation_title">Разблокировать номер %1$s?</string>
-  <string name="unblock_number_ok">РАЗБЛОКИРОВАТЬ</string>
-  <string name="invalidNumber">Номер %1$s недействителен.</string>
-  <string name="snackbar_number_blocked">Номер %1$s заблокирован</string>
-  <string name="snackbar_number_unblocked">Номер %1$s разблокирован</string>
-  <string name="send_to_voicemail_import_failed">Ошибка импорта</string>
-  <string name="call_blocking_disabled_notification_title">Блокировка вызовов отключена на 48 часов</string>
-  <string name="call_blocking_disabled_notification_text">Блокировка звонков отключена из-за экстренного вызова</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-si/strings.xml b/java/com/android/dialer/blocking/res/values-si/strings.xml
deleted file mode 100644
index 229e685..0000000
--- a/java/com/android/dialer/blocking/res/values-si/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">නව, සරල අවහිර කිරීම</string>
-  <string name="migrate_blocked_numbers_dialog_message">ඔබව වඩාත් හොඳින් ආරක්ෂා කිරීමට, දුරකථනයට අවහිර කිරීම ක්‍රියා කරන ආකාරය වෙනස් කිරීමට අවශ්‍යයි. ඔබේ අවහිර කළ අංක දැන් ඇමතුම් සහ පෙළ පණිවිඩ යන දෙකම නවත්වනු ඇති අතර වෙනත් යෙදුම් සමග බෙදා ගැනීමට හැකිය.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">ඉඩ දෙන්න</string>
-  <string name="old_block_number_confirmation_title">%1$s අවහිර කරන්නද?</string>
-  <string name="block_number_confirmation_message_vvm">මෙම අංකය වෙතින් වන ඇමතුම් අවහිර කරනු ඇති අතර හඬ තැපැල් ස්වයංක්‍රියව මකනු ඇත.</string>
-  <string name="block_number_confirmation_message_no_vvm">මෙම අංකය වෙතින් වන ඇමතුම් අවහිර කරනු ඇති නමුත්, අමතන්නාට තවම ඔබට හඬ තැපැල් තැබීමට හැකිය.</string>
-  <string name="block_number_confirmation_message_new_filtering">ඔබට මෙම අංකයෙන් තවදුරටත් ඇමතුම් හෝ පෙළ පණිවිඩ නොලැබෙනු ඇත.</string>
-  <string name="block_number_ok">අවහිරයි</string>
-  <string name="unblock_number_confirmation_title">%1$s අවහිර කිරීමෙන් ඉවත් කරන්නද?</string>
-  <string name="unblock_number_ok">අවහිර නොකරන්න</string>
-  <string name="invalidNumber">%1$s වලංගු නැත.</string>
-  <string name="snackbar_number_blocked">%1$s අවහිරයි</string>
-  <string name="snackbar_number_unblocked">%1$s අවහිර කිරීමෙන් ඉවත් කරන ලදී</string>
-  <string name="send_to_voicemail_import_failed">අයාත කිරීම අසාර්ථක විය</string>
-  <string name="call_blocking_disabled_notification_title">පැය 48ක් සඳහා ඇමතුම් අවහිර කිරීම අබල කරන ලදී</string>
-  <string name="call_blocking_disabled_notification_text">හදිසි ඇමතුමක් සිදු කළ නිසා අබල කරන ලදී.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-sk/strings.xml b/java/com/android/dialer/blocking/res/values-sk/strings.xml
deleted file mode 100644
index 713c1d9..0000000
--- a/java/com/android/dialer/blocking/res/values-sk/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Nové zjednodušené blokovanie</string>
-  <string name="migrate_blocked_numbers_dialog_message">V telefóne je potrebné zmeniť spôsob fungovania blokovania. Len tak dosiahnete lepšiu ochranu. Blokované čísla budú brániť prijímaniu hovorov aj textových správ a bude ich možné zdieľať s ďalšími aplikáciami.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Povoliť</string>
-  <string name="old_block_number_confirmation_title">Chcete blokovať číslo %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Hovory z tohto čísla budú blokované a hlasové správy budú automaticky odstraňované.</string>
-  <string name="block_number_confirmation_message_no_vvm">Hovory z tohto čísla budú zablokované, ale volajúci stále môže zanechať hlasové správy.</string>
-  <string name="block_number_confirmation_message_new_filtering">Z tohto čísla už nebudete prijímať hovory ani textové správy.</string>
-  <string name="block_number_ok">BLOKOVAŤ</string>
-  <string name="unblock_number_confirmation_title">Chcete odblokovať číslo %1$s?</string>
-  <string name="unblock_number_ok">ODBLOKOVAŤ</string>
-  <string name="invalidNumber">Číslo %1$s je neplatné.</string>
-  <string name="snackbar_number_blocked">%1$s – blokované</string>
-  <string name="snackbar_number_unblocked">Číslo %1$s bolo odblokované</string>
-  <string name="send_to_voicemail_import_failed">Import zlyhal</string>
-  <string name="call_blocking_disabled_notification_title">Blokovanie hovorov je deaktivované na 48 hodín</string>
-  <string name="call_blocking_disabled_notification_text">Deaktivované, pretože ste uskutočnili tiesňové volanie</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-sl/strings.xml b/java/com/android/dialer/blocking/res/values-sl/strings.xml
deleted file mode 100644
index 76253ca..0000000
--- a/java/com/android/dialer/blocking/res/values-sl/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Novo poenostavljeno blokiranje</string>
-  <string name="migrate_blocked_numbers_dialog_message">Za večjo varnost je treba v aplikaciji Telefon spremeniti nastavitev načina blokiranja. Tako z blokiranih številk ne boste več prejemali klicev in sporočil, poleg tega pa lahko take številke posredujete tudi v druge aplikacije.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Dovoli</string>
-  <string name="old_block_number_confirmation_title">Želite blokirati številko %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Klici s te številke bodo blokirani in sporočila v odzivniku bodo samodejno izbrisana.</string>
-  <string name="block_number_confirmation_message_no_vvm">Klici s te številke bodo blokirani, klicatelj pa bo morda še vedno lahko pustil sporočila v odzivniku.</string>
-  <string name="block_number_confirmation_message_new_filtering">S te številke ne boste več prejemali klicev ali sporočil SMS.</string>
-  <string name="block_number_ok">BLOKIRAJ</string>
-  <string name="unblock_number_confirmation_title">Želite odblokirati številko %1$s?</string>
-  <string name="unblock_number_ok">ODBLOKIRAJ</string>
-  <string name="invalidNumber">Številka %1$s je neveljavna.</string>
-  <string name="snackbar_number_blocked">Številka %1$s je blokirana</string>
-  <string name="snackbar_number_unblocked">Številka %1$s je odblokirana</string>
-  <string name="send_to_voicemail_import_failed">Uvoz ni uspel</string>
-  <string name="call_blocking_disabled_notification_title">Blokiranje klicev je onemogočeno za 48 ur</string>
-  <string name="call_blocking_disabled_notification_text">Onemogočeno zaradi opravljenega klica v sili</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-sq/strings.xml b/java/com/android/dialer/blocking/res/values-sq/strings.xml
deleted file mode 100644
index 0630303..0000000
--- a/java/com/android/dialer/blocking/res/values-sq/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Bllokim i ri i thjeshtëzuar</string>
-  <string name="migrate_blocked_numbers_dialog_message">Për të të mbrojtur më mirë, Telefoni ka nevojë të ndryshojë mënyrën se si funksionon bllokimi. Numrat e bllokuar tani do të ndalojnë si telefonatat ashtu edhe mesazhet me tekst dhe mund të ndahen me aplikacione të tjera.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Lejo</string>
-  <string name="old_block_number_confirmation_title">Të bllokohet %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Telefonatat nga ky numër do të bllokohen dhe mesazhet zanore do të fshihen automatikisht.</string>
-  <string name="block_number_confirmation_message_no_vvm">Telefonatat nga ky numër do të bllokohen, por telefonuesi mund të jetë ende në gjendje të lërë mesazhe zanore.</string>
-  <string name="block_number_confirmation_message_new_filtering">Nuk do të marrësh më telefonata apo mesazhe me tekst nga ky numër.</string>
-  <string name="block_number_ok">BLLOKO</string>
-  <string name="unblock_number_confirmation_title">Të zhbllokohet %1$s?</string>
-  <string name="unblock_number_ok">ZHBLLOKO</string>
-  <string name="invalidNumber">%1$s është i pavlefshëm.</string>
-  <string name="snackbar_number_blocked">%1$s u bllokua</string>
-  <string name="snackbar_number_unblocked">%1$s u zhbllokua</string>
-  <string name="send_to_voicemail_import_failed">Importimi dështoi</string>
-  <string name="call_blocking_disabled_notification_title">Bllokimi i thirrjeve është çaktivizuar për 48 orë</string>
-  <string name="call_blocking_disabled_notification_text">Është e çaktivizuar për shkak se është kryer një telefonatë urgjence.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-sr/strings.xml b/java/com/android/dialer/blocking/res/values-sr/strings.xml
deleted file mode 100644
index 6442412..0000000
--- a/java/com/android/dialer/blocking/res/values-sr/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Ново, једноставније блокирање</string>
-  <string name="migrate_blocked_numbers_dialog_message">Телефон треба да промени начин на који блокирање функционише да би вам пружио бољу заштиту. Са блокираних бројева више нећете примати ни позиве ни SMS-ове, али можете да их делите са другим апликацијама.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Дозволи</string>
-  <string name="old_block_number_confirmation_title">Желите ли да блокирате %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Позиви са овог броја ће бити блокирани и поруке говорне поште ће се аутоматски брисати.</string>
-  <string name="block_number_confirmation_message_no_vvm">Позиви са овог броја ће бити блокирани, али позивалац и даље може да вам оставља поруке говорне поште.</string>
-  <string name="block_number_confirmation_message_new_filtering">Више нећете примати позиве ни SMS-ове са овог броја.</string>
-  <string name="block_number_ok">БЛОКИРАЈ</string>
-  <string name="unblock_number_confirmation_title">Желите ли да деблокирате %1$s?</string>
-  <string name="unblock_number_ok">ДЕБЛОКИРАЈ</string>
-  <string name="invalidNumber">%1$s је неважећи.</string>
-  <string name="snackbar_number_blocked">%1$s је блокиран</string>
-  <string name="snackbar_number_unblocked">%1$s је деблокиран</string>
-  <string name="send_to_voicemail_import_failed">Увоз није успео</string>
-  <string name="call_blocking_disabled_notification_title">Блокирање позива је онемогућено на 48 сати</string>
-  <string name="call_blocking_disabled_notification_text">Онемогућено је зато што је упућен хитан позив.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-sv/strings.xml b/java/com/android/dialer/blocking/res/values-sv/strings.xml
deleted file mode 100644
index 5cb7229..0000000
--- a/java/com/android/dialer/blocking/res/values-sv/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">En ny, enklare blockering</string>
-  <string name="migrate_blocked_numbers_dialog_message">För bättre skydd måste mobilen ändra blockeringsfunktionen. Samtal eller sms från blockerade nummer stoppas och inställningarna går att dela med andra appar.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Tillåt</string>
-  <string name="old_block_number_confirmation_title">Blockera %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Samtal från det här numret blockeras och röstmeddelanden raderas automatiskt.</string>
-  <string name="block_number_confirmation_message_no_vvm">Samtal från det här numret blockeras, men det kan fortfarande gå att lämna ett röstmeddelande.</string>
-  <string name="block_number_confirmation_message_new_filtering">Du får inte längre samtal eller sms från det här numret.</string>
-  <string name="block_number_ok">BLOCKERA</string>
-  <string name="unblock_number_confirmation_title">Avblockera %1$s?</string>
-  <string name="unblock_number_ok">HÄV BLOCKERINGEN</string>
-  <string name="invalidNumber">%1$s ogiltigt.</string>
-  <string name="snackbar_number_blocked">%1$s har blockerats</string>
-  <string name="snackbar_number_unblocked">%1$s avblockerat</string>
-  <string name="send_to_voicemail_import_failed">Det gick inte att importera</string>
-  <string name="call_blocking_disabled_notification_title">Samtalsblockeringen har inaktiverats i 48 timmar</string>
-  <string name="call_blocking_disabled_notification_text">Inaktiverades därför att enheten har använts för ett nödsamtal.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-sw/strings.xml b/java/com/android/dialer/blocking/res/values-sw/strings.xml
deleted file mode 100644
index 8fbd614..0000000
--- a/java/com/android/dialer/blocking/res/values-sw/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Njia mpya na rahisi ya kuzuia</string>
-  <string name="migrate_blocked_numbers_dialog_message">Ili kukulinda vizuri zaidi, Simu inahitaji kubadilisha mipangilio ya kipengele cha kuzuia. Hutapokea simu wala SMS kutoka nambari ulizozizuia na nambari hizo huenda zikashirikiwa na programu zingine.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Ruhusu</string>
-  <string name="old_block_number_confirmation_title">Je, ungependa kuzuia %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Simu zinazopigwa kutoka nambari hii zitazuiwa na ujumbe wa sauti utafutwa kiotomatiki.</string>
-  <string name="block_number_confirmation_message_no_vvm">Simu zinazopigwa kutoka nambari hii zitazuiwa, lakini mpigaji bado anaweza kukutumia ujumbe wa sauti.</string>
-  <string name="block_number_confirmation_message_new_filtering">Hutapokea simu wala SMS kutoka kwa nambari hii tena.</string>
-  <string name="block_number_ok">ZUIA</string>
-  <string name="unblock_number_confirmation_title">Ungependa kuacha kuzuia nambari %1$s?</string>
-  <string name="unblock_number_ok">ACHA KUZUIA</string>
-  <string name="invalidNumber">%1$s si sahihi.</string>
-  <string name="snackbar_number_blocked">%1$s imezuiwa</string>
-  <string name="snackbar_number_unblocked">%1$s imeondolewa kizuizi</string>
-  <string name="send_to_voicemail_import_failed">Imeshindwa kuingiza</string>
-  <string name="call_blocking_disabled_notification_title">Huduma ya kuzuia simu imezimwa kwa saa 48</string>
-  <string name="call_blocking_disabled_notification_text">Imezimwa kwa sababu simu ya dharura imepigwa.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ta/strings.xml b/java/com/android/dialer/blocking/res/values-ta/strings.xml
deleted file mode 100644
index 94a4ff3..0000000
--- a/java/com/android/dialer/blocking/res/values-ta/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">புதிய, எளிதாக்கப்பட்ட தடுத்தல்</string>
-  <string name="migrate_blocked_numbers_dialog_message">சிறப்பான பாதுகாப்பை வழங்குவதற்காக, ஃபோனில் தடுத்தல் செயல்படும் விதத்தை மாற்ற வேண்டும். இப்போது தடுத்த எண்களிலிருந்து வரும் அழைப்புகளும் உரைச் செய்திகளும் நிறுத்தப்படுவதோடு, பிற பயன்பாடுகளுடன் பகிரப்பட்டு அவற்றிலும் தடுக்கப்படக்கூடும்.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">அனுமதி</string>
-  <string name="old_block_number_confirmation_title">%1$sஐத் தடுக்கவா?</string>
-  <string name="block_number_confirmation_message_vvm">இந்த எண்ணின் அழைப்புகள் தடுக்கப்படுவதுடன், அதன் குரலஞ்சல்களும் தானாகவே நீக்கப்படும்.</string>
-  <string name="block_number_confirmation_message_no_vvm">இந்த எண்ணின் அழைப்புகள் தடுக்கப்படும், ஆனால் அழைப்பாளரால் இன்னமும் உங்களுக்குக் குரலஞ்சல்களை அனுப்ப முடியும்.</string>
-  <string name="block_number_confirmation_message_new_filtering">இந்த எண்ணிலிருந்து இனி அழைப்புகளையோ உரைச் செய்திகளையோ பெறமாட்டீர்கள்.</string>
-  <string name="block_number_ok">தடு</string>
-  <string name="unblock_number_confirmation_title">%1$sஐ அனுமதிக்கவா?</string>
-  <string name="unblock_number_ok">அனுமதி</string>
-  <string name="invalidNumber">%1$s தவறானது.</string>
-  <string name="snackbar_number_blocked">%1$s தடுக்கப்பட்டது</string>
-  <string name="snackbar_number_unblocked">%1$s அனுமதிக்கப்பட்டது</string>
-  <string name="send_to_voicemail_import_failed">இறக்குவதில் தோல்வி</string>
-  <string name="call_blocking_disabled_notification_title">அழைப்புத் தடுப்பு 48 மணிநேரத்திற்கு முடக்கப்பட்டுள்ளது</string>
-  <string name="call_blocking_disabled_notification_text">அவசர அழைப்பு செய்திருப்பதால், அழைப்புத் தடுப்பு முடக்கப்பட்டது.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-te/strings.xml b/java/com/android/dialer/blocking/res/values-te/strings.xml
deleted file mode 100644
index 70956cf..0000000
--- a/java/com/android/dialer/blocking/res/values-te/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">కొత్త, సరళీకృత బ్లాకింగ్</string>
-  <string name="migrate_blocked_numbers_dialog_message">మిమ్మల్ని మెరుగైన రీతిలో సంరక్షించడానికి, ఫోన్ బ్లాకింగ్ పని చేసే విధానాన్ని మార్చాలి. అప్పుడు మీరు బ్లాక్ చేసిన నంబర్‌ల నుండి కాల్‌లు మరియు వచన సందేశాలు ఆపివేయబడతాయి మరియు ఆ బ్లాక్ చేయబడిన నంబర్‌లను ఇతర అనువర్తనాలకు కూడా భాగస్వామ్యం చేయవచ్చు.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">అనుమతించు</string>
-  <string name="old_block_number_confirmation_title">%1$sని బ్లాక్ చేయాలా?</string>
-  <string name="block_number_confirmation_message_vvm">ఈ నంబర్ నుండి కాల్‌లు బ్లాక్ చేయబడతాయి మరియు వాయిస్‌మెయిల్‌లు స్వయంచాలకంగా తొలగించబడతాయి.</string>
-  <string name="block_number_confirmation_message_no_vvm">ఈ నంబర్ నుండి కాల్‌లు బ్లాక్ చేయబడతాయి, కానీ కాలర్ ఇప్పటికీ మీకు వాయిస్‌మెయిల్‌లు పంపగలరు.</string>
-  <string name="block_number_confirmation_message_new_filtering">మీరు ఇకపై ఈ నంబర్ నుండి కాల్‌లు లేదా వచన సందేశాలను స్వీకరించరు.</string>
-  <string name="block_number_ok">బ్లాక్ చేయి</string>
-  <string name="unblock_number_confirmation_title">%1$sని అన్‌బ్లాక్ చేయాలా?</string>
-  <string name="unblock_number_ok">అన్‌బ్లాక్ చేయి</string>
-  <string name="invalidNumber">%1$s చెల్లదు.</string>
-  <string name="snackbar_number_blocked">%1$s బ్లాక్ చేయబడింది</string>
-  <string name="snackbar_number_unblocked">%1$s అన్‌బ్లాక్ చేయబడింది</string>
-  <string name="send_to_voicemail_import_failed">దిగుమతి విఫలమైంది</string>
-  <string name="call_blocking_disabled_notification_title">48 గంటల పాటు కాల్ బ్లాకింగ్ నిలిపివేయబడింది</string>
-  <string name="call_blocking_disabled_notification_text">అత్యవసర కాల్ చేసినందున నిలిపివేయబడింది.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-th/strings.xml b/java/com/android/dialer/blocking/res/values-th/strings.xml
deleted file mode 100644
index 6bd661c..0000000
--- a/java/com/android/dialer/blocking/res/values-th/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">การบล็อกแบบใหม่ที่ใช้งานง่าย</string>
-  <string name="migrate_blocked_numbers_dialog_message">เพื่อปกป้องคุณได้ดียิ่งขึ้น โทรศัพท์ฺจำเป็นต้องเปลี่ยนลักษณะการทำงานของการบล็อก ขณะนี้คุณจะไม่ได้รับสายเรียกเข้าหรือข้อความจากหมายเลขที่ถูกบล็อกอีกและอาจมีการแชร์หมายเลขนั้นกับแอปอื่น</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">อนุญาต</string>
-  <string name="old_block_number_confirmation_title">บล็อก %1$s ไหม</string>
-  <string name="block_number_confirmation_message_vvm">ระบบจะบล็อกสายเรียกเข้าจากหมายเลขนี้และลบข้อความเสียงโดยอัตโนมัติ</string>
-  <string name="block_number_confirmation_message_no_vvm">ระบบจะบล็อกสายเรียกเข้าจากหมายเลขนี้ แต่ผู้โทรอาจยังฝากข้อความเสียงถึงคุณได้อยู่</string>
-  <string name="block_number_confirmation_message_new_filtering">คุณจะไม่ได้รับสายเรียกเข้าหรือข้อความจากหมายเลขนี้อีก</string>
-  <string name="block_number_ok">บล็อก</string>
-  <string name="unblock_number_confirmation_title">เลิกบล็อก %1$s ไหม</string>
-  <string name="unblock_number_ok">เลิกบล็อก</string>
-  <string name="invalidNumber">%1$s ไม่ถูกต้อง</string>
-  <string name="snackbar_number_blocked">บล็อก %1$s แล้ว</string>
-  <string name="snackbar_number_unblocked">เลิกบล็อก %1$s แล้ว</string>
-  <string name="send_to_voicemail_import_failed">การนำเข้าล้มเหลว</string>
-  <string name="call_blocking_disabled_notification_title">ปิดการบล็อกสายเรียกเข้า 48 ชั่วโมง</string>
-  <string name="call_blocking_disabled_notification_text">ปิดใช้งานเนื่องจากมีการโทรเข้าหมายเลขฉุกเฉิน</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-tl/strings.xml b/java/com/android/dialer/blocking/res/values-tl/strings.xml
deleted file mode 100644
index 631c7bc..0000000
--- a/java/com/android/dialer/blocking/res/values-tl/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Bago at pinasimpleng pag-block</string>
-  <string name="migrate_blocked_numbers_dialog_message">Upang mas maprotektahan ka, kailangang baguhin ng Telepono ang paggana ng pag-block. Pipigilan na ngayon ng iyong mga naka-block na numero ang mga tawag at text, at maaaring ibahagi ang mga ito sa iba pang mga app.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Payagan</string>
-  <string name="old_block_number_confirmation_title">I-block ang %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Iba-block ang mga tawag mula sa numerong ito at awtomatikong ide-delete ang mga voicemail.</string>
-  <string name="block_number_confirmation_message_no_vvm">Iba-block ang mga tawag mula sa numerong ito, ngunit makakapag-iwan pa rin sa iyo ng mga voicemail ang tumatawag.</string>
-  <string name="block_number_confirmation_message_new_filtering">Hindi ka na makakatanggap ng mga tawag o text mula sa numerong ito.</string>
-  <string name="block_number_ok">I-BLOCK</string>
-  <string name="unblock_number_confirmation_title">I-unblock ang %1$s?</string>
-  <string name="unblock_number_ok">I-UNBLOCK</string>
-  <string name="invalidNumber">Di-wasto ang %1$s.</string>
-  <string name="snackbar_number_blocked">Na-block ang %1$s</string>
-  <string name="snackbar_number_unblocked">Na-unblock ang %1$s</string>
-  <string name="send_to_voicemail_import_failed">Hindi nakapag-import</string>
-  <string name="call_blocking_disabled_notification_title">Na-disable ang pagba-block ng tawag sa loob ng 48 oras</string>
-  <string name="call_blocking_disabled_notification_text">Na-disable dahil tumawag para sa emergency.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-tr/strings.xml b/java/com/android/dialer/blocking/res/values-tr/strings.xml
deleted file mode 100644
index 9634448..0000000
--- a/java/com/android/dialer/blocking/res/values-tr/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Yeni, basitleştirlmş engelleme</string>
-  <string name="migrate_blocked_numbers_dialog_message">Daha iyi korunmanız için engelleme işlevinin çalışma biçiminin Telefon tarafından değiştirilmesi gerekmektedir. Engellediğiniz numaralardan artık çağrı ve kısa mesaj almayacaksınız. Ayrıca bu numaralar başka uygulamalarla paylaşılabilir.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">İzin ver</string>
-  <string name="old_block_number_confirmation_title">%1$s numaralı telefon engellensin mi?</string>
-  <string name="block_number_confirmation_message_vvm">Bu numaradan gelen çağrılar engellenecek ve sesli mesajlar otomatik olarak silinecektir.</string>
-  <string name="block_number_confirmation_message_no_vvm">Bu numaradan gelen çağrılar engellenecek, ancak arayan kişi yine de size sesli mesaj bırakabilecektir.</string>
-  <string name="block_number_confirmation_message_new_filtering">Artık bu numaradan sesli arama veya kısa mesaj almayacaksınız.</string>
-  <string name="block_number_ok">ENGELLE</string>
-  <string name="unblock_number_confirmation_title">%1$s numaralı telefonun engellemesi kaldırılsın mı?</string>
-  <string name="unblock_number_ok">ENGELLEMEYİ KALDIR</string>
-  <string name="invalidNumber">%1$s numaralı telefon geçersiz.</string>
-  <string name="snackbar_number_blocked">%1$s numaralı telefon engellendi</string>
-  <string name="snackbar_number_unblocked">%1$s numaralı telefonun engellemesi kaldırıldı</string>
-  <string name="send_to_voicemail_import_failed">İçe aktarma başarısız oldu</string>
-  <string name="call_blocking_disabled_notification_title">Çağrı engelleme 48 saat süreyle devre dışı bırakıldı</string>
-  <string name="call_blocking_disabled_notification_text">Acil durum çağrısı yapıldığından devre dışı bırakıldı.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-uk/strings.xml b/java/com/android/dialer/blocking/res/values-uk/strings.xml
deleted file mode 100644
index b7b29e8..0000000
--- a/java/com/android/dialer/blocking/res/values-uk/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Нове простіше блокування</string>
-  <string name="migrate_blocked_numbers_dialog_message">Задля кращого захисту додаток Телефон має змінити параметри блокування. Із заблокованих номерів не надходитимуть виклики й SMS. Інші додатки також можуть мати доступ до списку цих номерів.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Дозволити</string>
-  <string name="old_block_number_confirmation_title">Заблокувати %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Виклики з цього номера блокуватимуться, а голосові повідомлення автоматично видалятимуться.</string>
-  <string name="block_number_confirmation_message_no_vvm">Виклики з цього номера блокуватимуться, але абонент зможе залишати голосові повідомлення.</string>
-  <string name="block_number_confirmation_message_new_filtering">Ви більше не отримуватиме виклики й SMS із цього номера.</string>
-  <string name="block_number_ok">БЛОКУВАТИ</string>
-  <string name="unblock_number_confirmation_title">Розблокувати %1$s?</string>
-  <string name="unblock_number_ok">РОЗБЛОКУВАТИ</string>
-  <string name="invalidNumber">Номер %1$s недісний.</string>
-  <string name="snackbar_number_blocked">Номер %1$s заблоковано</string>
-  <string name="snackbar_number_unblocked">%1$s розблоковано</string>
-  <string name="send_to_voicemail_import_failed">Не вдалось імпортувати</string>
-  <string name="call_blocking_disabled_notification_title">Блокування викликів вимкнено на 48 годин</string>
-  <string name="call_blocking_disabled_notification_text">Блокування вимкнено, оскільки ви зробили екстрений виклик.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-ur/strings.xml b/java/com/android/dialer/blocking/res/values-ur/strings.xml
deleted file mode 100644
index 80b9489..0000000
--- a/java/com/android/dialer/blocking/res/values-ur/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">نئی، آسان انسداد</string>
-  <string name="migrate_blocked_numbers_dialog_message">آپ کو بہتر طریقے سے حفاظت فراہم کرنے کیلئے فون کو انسداد کے کام کرنے کا طریقہ تبدیل کرنا ہوگا۔ آپ کے مسدود کردہ نمبروں سے کالیں اور متنی پیغامات دونوں مسدود کر دیے جائیں گے اور ممکن ہے ان کا اشتراک دیگر ایپس کے ساتھ کیا جائے۔</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">اجازت دیں</string>
-  <string name="old_block_number_confirmation_title">%1$s مسدود کریں؟</string>
-  <string name="block_number_confirmation_message_vvm">اس نمبر سے کالز مسدود ہوجائیں گی اور صوتی میلز خودبخزد جذف ہو جائیں گی۔</string>
-  <string name="block_number_confirmation_message_no_vvm">اس نمبر سے کالز مسدود ہو جائیں گی گی لیکن ممکن ہے کالر پھر بھی آپ کیلئے صوتی میلز چھوڑ پائے۔</string>
-  <string name="block_number_confirmation_message_new_filtering">آپ کو اب اس نمبر سے مزید کالز یا متنی پیغامات موصول نہیں ہوں گے۔</string>
-  <string name="block_number_ok">مسدود کریں</string>
-  <string name="unblock_number_confirmation_title">%1$s غیر مسدود کریں؟</string>
-  <string name="unblock_number_ok">غیر مسدود کریں</string>
-  <string name="invalidNumber">%1$s غلط ہے۔</string>
-  <string name="snackbar_number_blocked">%1$s مسدود ہو گیا</string>
-  <string name="snackbar_number_unblocked">%1$s غیر مسدود ہو گیا</string>
-  <string name="send_to_voicemail_import_failed">درآمد کرنا ناکام ہوگیا</string>
-  <string name="call_blocking_disabled_notification_title">کال مسدود کرنا 48 گھنٹے کیلئے غیر فعال ہو گیا</string>
-  <string name="call_blocking_disabled_notification_text">غیر فعال ہو گیا کیونکہ ایک ہنگامی کال کی گئی تھی۔</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-uz/strings.xml b/java/com/android/dialer/blocking/res/values-uz/strings.xml
deleted file mode 100644
index 03d484a..0000000
--- a/java/com/android/dialer/blocking/res/values-uz/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Raqamlarni bloklashning sodda usuli</string>
-  <string name="migrate_blocked_numbers_dialog_message">Sizni yanada yaxshiroq himoya qilish uchun Telefon ilovasi bloklash tartibini sozlashi lozim. Bloklangan raqamlardan keladigan chaqiruvlar ham, SMS xabarlar ham qabul qilinmaydi. Boshqa ilovalarga ham bunday raqamlardan foydalanishga ruxsat bering.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Ruxsat berish</string>
-  <string name="old_block_number_confirmation_title">%1$s bloklansinmi?</string>
-  <string name="block_number_confirmation_message_vvm">Bu raqamdan kelgan qo‘ng‘iroqlar bloklanadi va ovozli xabari avtomatik o‘chiriladi.</string>
-  <string name="block_number_confirmation_message_no_vvm">Bu raqamdan kelgan qo‘ng‘iroqlar bloklanadi, lekin raqam egasi sizga ovozli xabar qoldira oladi.</string>
-  <string name="block_number_confirmation_message_new_filtering">Siz endi bu raqamdan qo‘ng‘iroq va SMS qabul qilmaysiz.</string>
-  <string name="block_number_ok">BLOKLASH</string>
-  <string name="unblock_number_confirmation_title">%1$s raqami blokdan chiqarilsinmi?</string>
-  <string name="unblock_number_ok">BLOKDAN CHIQARISH</string>
-  <string name="invalidNumber">%1$s raqami xato.</string>
-  <string name="snackbar_number_blocked">%1$s raqami bloklandi</string>
-  <string name="snackbar_number_unblocked">%1$s raqami blokdan chiqarildi</string>
-  <string name="send_to_voicemail_import_failed">Import qilib bo‘lmadi</string>
-  <string name="call_blocking_disabled_notification_title">Qo‘ng‘iroqlarni bloklash 48 soat muddatga o‘chirildi</string>
-  <string name="call_blocking_disabled_notification_text">Favqulodda qo‘ng‘iroq amalga oshirilgani uchun o‘chirildi.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-vi/strings.xml b/java/com/android/dialer/blocking/res/values-vi/strings.xml
deleted file mode 100644
index d28cd7a..0000000
--- a/java/com/android/dialer/blocking/res/values-vi/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Tính năng chặn mới, được đơn giản hóa</string>
-  <string name="migrate_blocked_numbers_dialog_message">Để bảo vệ bạn tốt hơn, Điện thoại cần thay đổi cách hoạt động của tính năng chặn. Giờ đây, các số đã chặn của bạn sẽ bị chặn cả cuộc gọi và tin nhắn, đồng thời có thể được chia sẻ với các ứng dụng khác.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Cho phép</string>
-  <string name="old_block_number_confirmation_title">Bạn muốn chặn %1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Các cuộc gọi từ số này sẽ bị chặn và thư thoại sẽ tự động bị xóa.</string>
-  <string name="block_number_confirmation_message_no_vvm">Các cuộc gọi từ số này sẽ bị chặn nhưng người gọi vẫn có thể để lại thư thoại cho bạn.</string>
-  <string name="block_number_confirmation_message_new_filtering">Bạn sẽ không nhận được các cuộc gọi hoặc tin nhắn từ số này nữa.</string>
-  <string name="block_number_ok">CHẶN</string>
-  <string name="unblock_number_confirmation_title">Bỏ chặn %1$s?</string>
-  <string name="unblock_number_ok">BỎ CHẶN</string>
-  <string name="invalidNumber">%1$s không hợp lệ.</string>
-  <string name="snackbar_number_blocked">Đã chặn %1$s</string>
-  <string name="snackbar_number_unblocked">Đã bỏ chặn %1$s</string>
-  <string name="send_to_voicemail_import_failed">Nhập không thành công</string>
-  <string name="call_blocking_disabled_notification_title">Đã tắt tính năng chặn cuộc gọi trong 48 giờ</string>
-  <string name="call_blocking_disabled_notification_text">Bị tắt vì bạn đã thực hiện cuộc gọi khẩn cấp.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-zh-rCN/strings.xml b/java/com/android/dialer/blocking/res/values-zh-rCN/strings.xml
deleted file mode 100644
index c105424..0000000
--- a/java/com/android/dialer/blocking/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">简单易用的全新屏蔽功能</string>
-  <string name="migrate_blocked_numbers_dialog_message">为了向您提供更好的安全保护，“电话”应用需要升级屏蔽方式。您将不会再收到已屏蔽号码的来电和短信，而且系统还可能会将屏蔽号码列表共享给其他应用。</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">允许</string>
-  <string name="old_block_number_confirmation_title">要屏蔽 %1$s 吗？</string>
-  <string name="block_number_confirmation_message_vvm">系统将屏蔽该号码的来电，并将自动删除来电者发送的语音邮件。</string>
-  <string name="block_number_confirmation_message_no_vvm">系统将屏蔽该号码的来电，但来电者可能仍然能够给您发送语音邮件。</string>
-  <string name="block_number_confirmation_message_new_filtering">您将不会再收到此号码的来电或短信。</string>
-  <string name="block_number_ok">屏蔽</string>
-  <string name="unblock_number_confirmation_title">要取消屏蔽 %1$s 吗？</string>
-  <string name="unblock_number_ok">取消屏蔽</string>
-  <string name="invalidNumber">%1$s 无效。</string>
-  <string name="snackbar_number_blocked">已屏蔽 %1$s</string>
-  <string name="snackbar_number_unblocked">已取消屏蔽 %1$s</string>
-  <string name="send_to_voicemail_import_failed">导入失败</string>
-  <string name="call_blocking_disabled_notification_title">来电拦截功能将停用 48 小时</string>
-  <string name="call_blocking_disabled_notification_text">此功能已停用，因为您拨打了紧急呼救电话。</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-zh-rHK/strings.xml b/java/com/android/dialer/blocking/res/values-zh-rHK/strings.xml
deleted file mode 100644
index d59f430..0000000
--- a/java/com/android/dialer/blocking/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">全新、簡單的封鎖功能</string>
-  <string name="migrate_blocked_numbers_dialog_message">為更有效保護您的安全，Phone 需要變更封鎖功能的運作方式。系統現在會拒絕已封鎖號碼的來電和短訊，並可能將這些號碼提供給其他應用程式使用。</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">允許</string>
-  <string name="old_block_number_confirmation_title">要封鎖 %1$s 嗎？</string>
-  <string name="block_number_confirmation_message_vvm">將會封鎖這個號碼的來電，而留言將會自動刪除。</string>
-  <string name="block_number_confirmation_message_no_vvm">將會封鎖這個號碼的來電，但來電可能會轉駁至留言信箱。</string>
-  <string name="block_number_confirmation_message_new_filtering">您不會再收到這個號碼的來電和短訊。</string>
-  <string name="block_number_ok">封鎖</string>
-  <string name="unblock_number_confirmation_title">要解除封鎖 %1$s 嗎？</string>
-  <string name="unblock_number_ok">解除封鎖</string>
-  <string name="invalidNumber">%1$s 無效。</string>
-  <string name="snackbar_number_blocked">已封鎖 %1$s</string>
-  <string name="snackbar_number_unblocked">已解除封鎖 %1$s</string>
-  <string name="send_to_voicemail_import_failed">匯入失敗</string>
-  <string name="call_blocking_disabled_notification_title">已停用來電封鎖 (48 小時)</string>
-  <string name="call_blocking_disabled_notification_text">已撥打緊急電話，已停用來電封鎖功能。</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-zh-rTW/strings.xml b/java/com/android/dialer/blocking/res/values-zh-rTW/strings.xml
deleted file mode 100644
index c5f3fa2..0000000
--- a/java/com/android/dialer/blocking/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">全新、簡易的封鎖功能</string>
-  <string name="migrate_blocked_numbers_dialog_message">「電話」應用程式需要變更封鎖功能的運作方式，以進一步保護您的安全。現在開始，系統會拒絕已封鎖號碼的來電和簡訊，還會將這些號碼提供給其他應用程式。</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">允許</string>
-  <string name="old_block_number_confirmation_title">要封鎖 %1$s 嗎？</string>
-  <string name="block_number_confirmation_message_vvm">系統會封鎖這組號碼的來電，並自動刪除對方的語音留言。</string>
-  <string name="block_number_confirmation_message_no_vvm">系統會封鎖這組號碼的來電，但對方仍可錄製語音留言給您。</string>
-  <string name="block_number_confirmation_message_new_filtering">您不會再收到這組號碼的來電或簡訊。</string>
-  <string name="block_number_ok">封鎖</string>
-  <string name="unblock_number_confirmation_title">要解除封鎖 %1$s 嗎？</string>
-  <string name="unblock_number_ok">解除封鎖</string>
-  <string name="invalidNumber">%1$s 無效。</string>
-  <string name="snackbar_number_blocked">已封鎖 %1$s</string>
-  <string name="snackbar_number_unblocked">已解除封鎖 %1$s</string>
-  <string name="send_to_voicemail_import_failed">匯入失敗</string>
-  <string name="call_blocking_disabled_notification_title">來電封鎖功能會停用 48 小時</string>
-  <string name="call_blocking_disabled_notification_text">由於您曾撥打緊急電話，因此本功能已停用。</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values-zu/strings.xml b/java/com/android/dialer/blocking/res/values-zu/strings.xml
deleted file mode 100644
index a3e761d..0000000
--- a/java/com/android/dialer/blocking/res/values-zu/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="migrate_blocked_numbers_dialog_title">Ukuvimbela okusha, okwenziwe lula</string>
-  <string name="migrate_blocked_numbers_dialog_message">Ukuze uvikeleke kangcono, ifoni kumele sishintshe indlela okusebenza ngayo ukuvimbela. Izinombolo zakho ezivinjelwe manje zizomisa kokubili amakholi nemibhalo futhi zingabiwa nezinye izinhlelo zokusebenza.</string>
-  <string name="migrate_blocked_numbers_dialog_allow_button">Vumela</string>
-  <string name="old_block_number_confirmation_title">Vimba i-%1$s?</string>
-  <string name="block_number_confirmation_message_vvm">Amakholi wangakusasa kusuka kule nombolo azovinyelwa futhi amavoyisimeyili azosuswa ngokuzenzakalela.</string>
-  <string name="block_number_confirmation_message_no_vvm">Amakholi kusuka kule nombolo azovinjwa, kodwa inkampani yenenethiwekhi ingakwazi ukukushiyela amavoyisimeyili.</string>
-  <string name="block_number_confirmation_message_new_filtering">Ngeke usathola amakholi noma imibhalo kusukela kule nombolo.</string>
-  <string name="block_number_ok">VIMBA</string>
-  <string name="unblock_number_confirmation_title">Vulela i-%1$s?</string>
-  <string name="unblock_number_ok">VULELA</string>
-  <string name="invalidNumber">%1$s ayivumelekile.</string>
-  <string name="snackbar_number_blocked">%1$s ivinjiwe</string>
-  <string name="snackbar_number_unblocked">%1$s vulela</string>
-  <string name="send_to_voicemail_import_failed">Ukulanda akuphumelelanga</string>
-  <string name="call_blocking_disabled_notification_title">Ukuvimbela ikholi kukhutshaziwe amahora angu-48</string>
-  <string name="call_blocking_disabled_notification_text">Kukhutshaziwe ngoba ikholi ephuthumayo yenziwe.</string>
-</resources>
diff --git a/java/com/android/dialer/blocking/res/values/strings.xml b/java/com/android/dialer/blocking/res/values/strings.xml
deleted file mode 100644
index e5f6c80..0000000
--- a/java/com/android/dialer/blocking/res/values/strings.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <!-- Title for dialog which opens when the user needs to migrate to the framework blocking implementation [CHAR LIMIT=30]-->
-  <string name="migrate_blocked_numbers_dialog_title">New, simplified blocking</string>
-
-  <!-- Body text for dialog which opens when the user needs to migrate to the framework blocking implementation [CHAR LIMIT=NONE]-->
-  <string name="migrate_blocked_numbers_dialog_message">To better protect you, Phone needs to change how blocking works. Your blocked numbers will now stop both calls and texts and may be shared with other apps.</string>
-
-  <!-- Positive confirmation button for the dialog which opens when the user needs to migrate to the framework blocking implementation [CHAR LIMIT=NONE]-->
-  <string name="migrate_blocked_numbers_dialog_allow_button">Allow</string>
-
-  <string name="migrate_blocked_numbers_dialog_cancel_button" translatable="false">
-    @android:string/cancel
-  </string>
-
-  <!-- Confirmation dialog title for blocking a number. [CHAR LIMIT=NONE] -->
-  <string name="old_block_number_confirmation_title">
-    Block<xliff:g example="(555) 555-5555" id="number">%1$s</xliff:g>?
-  </string>
-
-  <!-- Confirmation dialog message for blocking a number with visual voicemail active.
-       [CHAR LIMIT=NONE] -->
-  <string name="block_number_confirmation_message_vvm">
-    Calls from this number will be blocked and voicemails will be automatically deleted.
-  </string>
-
-  <!-- Confirmation dialog message for blocking a number with no visual voicemail.
-       [CHAR LIMIT=NONE] -->
-  <string name="block_number_confirmation_message_no_vvm">
-    Calls from this number will be blocked, but the caller may still be able to leave you voicemails.
-  </string>
-
-  <!-- Confirmation dialog message for blocking a number with new filtering enabled.
-       [CHAR LIMIT=NONE] -->
-  <string name="block_number_confirmation_message_new_filtering">
-    You will no longer receive calls or texts from this number.
-  </string>
-
-  <!-- Block number alert dialog button [CHAR LIMIT=32] -->
-  <string name="block_number_ok">BLOCK</string>
-
-  <!-- Confirmation dialog for unblocking a number. [CHAR LIMIT=NONE] -->
-  <string name="unblock_number_confirmation_title">
-    Unblock<xliff:g example="(555) 555-5555" id="number">%1$s</xliff:g>?
-  </string>
-
-  <!-- Unblock number alert dialog button [CHAR LIMIT=32] -->
-  <string name="unblock_number_ok">UNBLOCK</string>
-
-  <!-- Error message shown when user tries to add invalid number to the block list.
-      [CHAR LIMIT=64] -->
-  <string name="invalidNumber">
-    <xliff:g example="(555) 555-5555" id="number">%1$s</xliff:g>is invalid.
-  </string>
-
-  <!-- Text for snackbar to undo blocking a number. [CHAR LIMIT=64] -->
-  <string name="snackbar_number_blocked">
-    <xliff:g example="(555) 555-5555" id="number">%1$s</xliff:g> blocked
-  </string>
-
-  <!-- Text for snackbar to undo unblocking a number. [CHAR LIMIT=64] -->
-  <string name="snackbar_number_unblocked">
-    <xliff:g example="(555) 555-5555" id="number">%1$s</xliff:g>unblocked
-  </string>
-
-  <!-- Error toast message for when send to voicemail import fails. [CHAR LIMIT=40] -->
-  <string name="send_to_voicemail_import_failed">Import failed</string>
-
-  <!-- Title of notification telling the user that call blocking has been temporarily disabled.
-       [CHAR LIMIT=56] -->
-  <string name="call_blocking_disabled_notification_title">
-    Call blocking disabled for 48 hours
-  </string>
-
-  <!-- Text for notification which provides the reason that call blocking has been temporarily
-       disabled. Namely, we disable call blocking after an emergency call in case of return
-       phone calls made by emergency services. [CHAR LIMIT=64] -->
-  <string name="call_blocking_disabled_notification_text">
-    Disabled because an emergency call was made.
-  </string>
-
-</resources>
diff --git a/java/com/android/dialer/blockreportspam/AndroidManifest.xml b/java/com/android/dialer/blockreportspam/AndroidManifest.xml
deleted file mode 100644
index 6e08043..0000000
--- a/java/com/android/dialer/blockreportspam/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<manifest package="com.android.dialer.blockreportspam"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/blockreportspam/BlockReportSpamDialogs.java b/java/com/android/dialer/blockreportspam/BlockReportSpamDialogs.java
index ff2a588..0be422c 100644
--- a/java/com/android/dialer/blockreportspam/BlockReportSpamDialogs.java
+++ b/java/com/android/dialer/blockreportspam/BlockReportSpamDialogs.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,13 +22,15 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.DialogFragment;
-import android.support.v7.app.AlertDialog;
 import android.view.View;
 import android.widget.CheckBox;
 import android.widget.TextView;
-import com.android.dialer.blocking.FilteredNumberCompat;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+
+import com.android.dialer.R;
 
 /** Creates dialog fragments to block a number and/or report it as spam/not spam. */
 public final class BlockReportSpamDialogs {
@@ -58,13 +61,7 @@
   }
 
   private static String getBlockMessage(Context context) {
-    String message;
-    if (FilteredNumberCompat.useNewFiltering(context)) {
-      message = context.getString(R.string.block_number_confirmation_message_new_filtering);
-    } else {
-      message = context.getString(R.string.block_report_number_alert_details);
-    }
-    return message;
+      return context.getString(R.string.block_number_confirmation_message_new_filtering);
   }
 
   /**
@@ -98,7 +95,8 @@
     protected OnConfirmListener positiveListener;
 
     /** Listener for when the dialog is dismissed. */
-    @Nullable protected DialogInterface.OnDismissListener dismissListener;
+    @Nullable
+    protected DialogInterface.OnDismissListener dismissListener;
 
     @Override
     public void onDismiss(DialogInterface dialog) {
@@ -187,11 +185,8 @@
   public static class DialogFragmentForBlockingNumberAndReportingAsSpam
       extends CommonDialogsFragment {
 
-    private boolean isSpamEnabled;
-
     public static DialogFragment newInstance(
         String displayNumber,
-        boolean isSpamEnabled,
         OnConfirmListener positiveListener,
         @Nullable DialogInterface.OnDismissListener dismissListener) {
       DialogFragmentForBlockingNumberAndReportingAsSpam fragment =
@@ -199,7 +194,6 @@
       fragment.displayNumber = displayNumber;
       fragment.positiveListener = positiveListener;
       fragment.dismissListener = dismissListener;
-      fragment.isSpamEnabled = isSpamEnabled;
       return fragment;
     }
 
@@ -211,11 +205,7 @@
       Dialog dialog =
           alertDialogBuilder
               .setTitle(getString(R.string.block_number_confirmation_title, displayNumber))
-              .setMessage(
-                  isSpamEnabled
-                      ? getString(
-                          R.string.block_number_alert_details, getBlockMessage(getContext()))
-                      : getString(R.string.block_report_number_alert_details))
+              .setMessage(getString(R.string.block_report_number_alert_details))
               .setPositiveButton(
                   R.string.block_number_ok, createGenericOnClickListener(this, positiveListener))
               .create();
diff --git a/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogNotifier.java b/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogNotifier.java
index b33dc0f..e595f31 100644
--- a/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogNotifier.java
+++ b/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogNotifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,9 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.v4.content.LocalBroadcastManager;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.protos.ProtoParsers;
 
diff --git a/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogReceiver.java b/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogReceiver.java
index 28ac7bf..9c5dd36 100644
--- a/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogReceiver.java
+++ b/java/com/android/dialer/blockreportspam/ShowBlockReportSpamDialogReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,8 +21,11 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.support.v4.app.FragmentManager;
 import android.widget.Toast;
+
+import androidx.fragment.app.FragmentManager;
+
+import com.android.dialer.R;
 import com.android.dialer.blocking.Blocking;
 import com.android.dialer.blocking.Blocking.BlockingFailedException;
 import com.android.dialer.blockreportspam.BlockReportSpamDialogs.DialogFragmentForBlockingNumber;
@@ -33,13 +37,7 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.DialerImpression.Type;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.protos.ProtoParsers;
-import com.android.dialer.spam.Spam;
-import com.android.dialer.spam.SpamComponent;
-import com.android.dialer.spam.SpamSettings;
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
@@ -57,7 +55,7 @@
   static final String ACTION_SHOW_DIALOG_TO_UNBLOCK_NUMBER = "show_dialog_to_unblock_number";
   static final String EXTRA_DIALOG_INFO = "dialog_info";
 
-  /** {@link FragmentManager} needed to show a {@link android.app.DialogFragment}. */
+  /** {@link FragmentManager} needed to show a {@link androidx.fragment.app.DialogFragment}. */
   private final FragmentManager fragmentManager;
 
   /** Returns an {@link IntentFilter} containing all actions accepted by this broadcast receiver. */
@@ -107,9 +105,6 @@
         ProtoParsers.getTrusted(
             intent, EXTRA_DIALOG_INFO, BlockReportSpamDialogInfo.getDefaultInstance());
 
-    Spam spam = SpamComponent.get(context).spam();
-    SpamSettings spamSettings = SpamComponent.get(context).spamSettings();
-
     // Set up the positive listener for the dialog.
     OnSpamDialogClickListener onSpamDialogClickListener =
         reportSpam -> {
@@ -117,29 +112,13 @@
               "ShowBlockReportSpamDialogReceiver.showDialogToBlockNumberAndOptionallyReportSpam",
               "confirmed");
 
-          if (reportSpam && spamSettings.isSpamEnabled()) {
-            LogUtil.i(
-                "ShowBlockReportSpamDialogReceiver.showDialogToBlockNumberAndOptionallyReportSpam",
-                "report spam");
-            Logger.get(context)
-                .logImpression(
-                    DialerImpression.Type
-                        .REPORT_CALL_AS_SPAM_VIA_CALL_LOG_BLOCK_REPORT_SPAM_SENT_VIA_BLOCK_NUMBER_DIALOG);
-            spam.reportSpamFromCallHistory(
-                dialogInfo.getNormalizedNumber(),
-                dialogInfo.getCountryIso(),
-                dialogInfo.getCallType(),
-                dialogInfo.getReportingLocation(),
-                dialogInfo.getContactSource());
-          }
-
           blockNumber(context, dialogInfo);
         };
 
     // Create and show the dialog.
     DialogFragmentForBlockingNumberAndOptionallyReportingAsSpam.newInstance(
             dialogInfo.getNormalizedNumber(),
-            spamSettings.isDialogReportSpamCheckedByDefault(),
+            false,
             onSpamDialogClickListener,
             /* dismissListener = */ null)
         .show(fragmentManager, BlockReportSpamDialogs.BLOCK_REPORT_SPAM_DIALOG_TAG);
@@ -176,22 +155,7 @@
 
     // Set up the positive listener for the dialog.
     OnConfirmListener onConfirmListener =
-        () -> {
-          LogUtil.i("ShowBlockReportSpamDialogReceiver.showDialogToReportNotSpam", "confirmed");
-
-          if (SpamComponent.get(context).spamSettings().isSpamEnabled()) {
-            Logger.get(context)
-                .logImpression(DialerImpression.Type.DIALOG_ACTION_CONFIRM_NUMBER_NOT_SPAM);
-            SpamComponent.get(context)
-                .spam()
-                .reportNotSpamFromCallHistory(
-                    dialogInfo.getNormalizedNumber(),
-                    dialogInfo.getCountryIso(),
-                    dialogInfo.getCallType(),
-                    dialogInfo.getReportingLocation(),
-                    dialogInfo.getContactSource());
-          }
-        };
+        () -> LogUtil.i("ShowBlockReportSpamDialogReceiver.showDialogToReportNotSpam", "confirmed");
 
     // Create & show the dialog.
     DialogFragmentForReportingNotSpam.newInstance(
@@ -222,7 +186,6 @@
   }
 
   private static void blockNumber(Context context, BlockReportSpamDialogInfo dialogInfo) {
-    Logger.get(context).logImpression(Type.USER_ACTION_BLOCKED_NUMBER);
     Futures.addCallback(
         Blocking.block(
             context,
@@ -237,7 +200,6 @@
           @Override
           public void onFailure(Throwable throwable) {
             if (throwable instanceof BlockingFailedException) {
-              Logger.get(context).logImpression(Type.USER_ACTION_BLOCK_NUMBER_FAILED);
               Toast.makeText(context, R.string.block_number_failed_toast, Toast.LENGTH_LONG).show();
             } else {
               throw new RuntimeException(throwable);
@@ -248,7 +210,6 @@
   }
 
   private static void unblockNumber(Context context, BlockReportSpamDialogInfo dialogInfo) {
-    Logger.get(context).logImpression(Type.USER_ACTION_UNBLOCKED_NUMBER);
     Futures.addCallback(
         Blocking.unblock(
             context,
@@ -263,7 +224,6 @@
           @Override
           public void onFailure(Throwable throwable) {
             if (throwable instanceof BlockingFailedException) {
-              Logger.get(context).logImpression(Type.USER_ACTION_UNBLOCK_NUMBER_FAILED);
               Toast.makeText(context, R.string.unblock_number_failed_toast, Toast.LENGTH_LONG)
                   .show();
             } else {
diff --git a/java/com/android/dialer/blockreportspam/block_report_spam_dialog_info.proto b/java/com/android/dialer/blockreportspam/block_report_spam_dialog_info.proto
index a9a7c2a..2b694ca 100644
--- a/java/com/android/dialer/blockreportspam/block_report_spam_dialog_info.proto
+++ b/java/com/android/dialer/blockreportspam/block_report_spam_dialog_info.proto
@@ -7,11 +7,10 @@
 package com.android.dialer.blockreportspam;
 
 import "java/com/android/dialer/logging/contact_source.proto";
-import "java/com/android/dialer/logging/reporting_location.proto";
 
 // Contains information needed in dialogs that allow a user to block a number
 // and/or report it as spam/not spam.
-// Next ID: 6
+// Next ID: 5
 message BlockReportSpamDialogInfo {
   // A dialer-normalized version of the number used in the dialogs.
   // See DialerPhoneNumber#normalized_number.
@@ -24,10 +23,6 @@
   // android.provider.CallLog.Calls
   optional int32 call_type = 3;
 
-  // The location where the number is reported.
-  optional com.android.dialer.logging.ReportingLocation.Type
-      reporting_location = 4;
-
   // The source where contact info is associated with the number.
-  optional com.android.dialer.logging.ContactSource.Type contact_source = 5;
-}
\ No newline at end of file
+  optional com.android.dialer.logging.ContactSource.Type contact_source = 4;
+}
diff --git a/java/com/android/dialer/blockreportspam/res/values-af/strings.xml b/java/com/android/dialer/blockreportspam/res/values-af/strings.xml
index 35640d9..58b532a 100644
--- a/java/com/android/dialer/blockreportspam/res/values-af/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-af/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DEBLOKKEER</string>
   <string name="block_report_number_alert_title">Blokkeer %1$s?</string>
   <string name="block_report_number_alert_details">Jy sal nie meer oproepe vanaf hierdie nommer ontvang nie.</string>
-  <string name="block_number_alert_details">%1$s Hierdie oproep sal as strooipos aangegee word.</string>
   <string name="unblock_number_alert_details">Hierdie nommer sal gedeblokkeer word en aangegee word as nie strooipos nie. Toekomstige oproepe sal nie as strooipos geïdentifiseer word nie.</string>
   <string name="unblock_report_number_alert_title">Deblokkeer %1$s?</string>
   <string name="report_not_spam_alert_button">Gee aan</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-am/strings.xml b/java/com/android/dialer/blockreportspam/res/values-am/strings.xml
index 3840290..eb44955 100644
--- a/java/com/android/dialer/blockreportspam/res/values-am/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-am/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">እገዳ አንሳ</string>
   <string name="block_report_number_alert_title">%1$s ይታገድ?</string>
   <string name="block_report_number_alert_details">ከአሁን በኋላ ከዚህ ቁጥር ጥሪዎችን ቅይቀበሉም።</string>
-  <string name="block_number_alert_details">%1$s ይህ ጥሪ እንደ አይፈለጌ ሪፖርት ይደረጋል።</string>
   <string name="unblock_number_alert_details">ይህ ቁጥር እግዱ ይነሳለታል እንዲሁም አይፈለጌ እንዳልሆነ ሪፖርት ይደረጋል። የወደፊት ጥሪዎች እና የድምፅ መልዕክቶች እንደ አይፈለጌ አይቆጠሩም።</string>
   <string name="unblock_report_number_alert_title">ከ%1$s እግድ ይነሳ?</string>
   <string name="report_not_spam_alert_button">ሪፖርት አድርግ</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ar/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ar/strings.xml
index 2e88ca4..cee3c5e 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ar/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ar/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">إلغاء الحظر</string>
   <string name="block_report_number_alert_title">هل تريد حظر %1$s؟</string>
   <string name="block_report_number_alert_details">لن تتلقى المزيد من المكالمات من هذا الرقم.</string>
-  <string name="block_number_alert_details">%1$s سيتم الإبلاغ عن هذه المكالمة باعتبارها غير مرغوب فيها.</string>
   <string name="unblock_number_alert_details">سيُزال حظر هذا الرقم والإبلاغ عنه أنه ليس رقمًا غير مرغوب فيه. لن يتم تحديد المكالمات كغير مرغوب فيها في ما بعد.</string>
   <string name="unblock_report_number_alert_title">هل تريد إزالة حظر %1$s؟</string>
   <string name="report_not_spam_alert_button">إبلاغ</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-az/strings.xml b/java/com/android/dialer/blockreportspam/res/values-az/strings.xml
index 17037c3..a8ab9a5 100644
--- a/java/com/android/dialer/blockreportspam/res/values-az/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-az/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">BLOKDAN ÇIXARIN</string>
   <string name="block_report_number_alert_title">%1$s blok edilsin?</string>
   <string name="block_report_number_alert_details">Bu nömrədən daha zəng almayacaqsınız.</string>
-  <string name="block_number_alert_details">%1$s Bu zəng spam kimi qeyd olunacaq.</string>
   <string name="unblock_number_alert_details">Bu nömrə blokdan çıxarılacaq və spam kimi qeyd olunmayacaq. Gələcək zənglər spam kimi göstərilməyəcək.</string>
   <string name="unblock_report_number_alert_title">%1$s blokdan çıxarılsın?</string>
   <string name="report_not_spam_alert_button">Bildirin</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/blockreportspam/res/values-b+sr+Latn/strings.xml
index e2fcc90..1dff48b 100644
--- a/java/com/android/dialer/blockreportspam/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-b+sr+Latn/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DEBLOKIRAJ</string>
   <string name="block_report_number_alert_title">Želite li da blokirate %1$s?</string>
   <string name="block_report_number_alert_details">Više nećete primati pozive sa ovog broja.</string>
-  <string name="block_number_alert_details">%1$s Prijavićemo ovaj poziv kao nepoželjan.</string>
   <string name="unblock_number_alert_details">Deblokiraćemo broj i prijaviti da nije nepoželjan. Budući pozivi neće biti označavani kao nepoželjni.</string>
   <string name="unblock_report_number_alert_title">Želite li da deblokirate %1$s?</string>
   <string name="report_not_spam_alert_button">Prijavi</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-be/strings.xml b/java/com/android/dialer/blockreportspam/res/values-be/strings.xml
index 4fdaa6f..705f6ad 100644
--- a/java/com/android/dialer/blockreportspam/res/values-be/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-be/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">РАЗБЛАКІРАВАЦЬ</string>
   <string name="block_report_number_alert_title">Заблакіраваць нумар %1$s?</string>
   <string name="block_report_number_alert_details">Вы больш не будзеце атрымліваць выклікі з гэтага нумара.</string>
-  <string name="block_number_alert_details">%1$s Гэты выклік будзе заяўлены як спам.</string>
   <string name="unblock_number_alert_details">Гэты нумар будзе разблакіраваны і заяўлены як не спам. Будучыя выклікі не будуць вызначацца як спам.</string>
   <string name="unblock_report_number_alert_title">Разблакіраваць нумар %1$s?</string>
   <string name="report_not_spam_alert_button">Паведаміць</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-bg/strings.xml b/java/com/android/dialer/blockreportspam/res/values-bg/strings.xml
index d576b9c..28179c0 100644
--- a/java/com/android/dialer/blockreportspam/res/values-bg/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-bg/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ОТБЛОКИРАНЕ</string>
   <string name="block_report_number_alert_title">Да се блокира ли %1$s?</string>
   <string name="block_report_number_alert_details">Повече няма да получавате обаждания от този номер.</string>
-  <string name="block_number_alert_details">%1$s За обаждането ще се подаде сигнал за спам.</string>
   <string name="unblock_number_alert_details">Номерът ще бъде отблокиран. Той и бъдещите обаждания от него няма да бъдат спам.</string>
   <string name="unblock_report_number_alert_title">Да се отблокира ли %1$s?</string>
   <string name="report_not_spam_alert_button">Подаване на сигнал</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-bn/strings.xml b/java/com/android/dialer/blockreportspam/res/values-bn/strings.xml
index e9640b9..7f22617 100644
--- a/java/com/android/dialer/blockreportspam/res/values-bn/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-bn/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">অবরোধ মুক্ত করুন</string>
   <string name="block_report_number_alert_title">%1$s ব্লক করবেন?</string>
   <string name="block_report_number_alert_details">এই নম্বর থেকে আপনার কাছে আর কল আসবে না।</string>
-  <string name="block_number_alert_details">%1$s এই কলটিকে স্প্যাম হিসেবে অভিযোগ করা হবে।</string>
   <string name="unblock_number_alert_details">এই নম্বরটিকে আনব্লক করা হবে এবং \'স্প্যাম নয়\' হিসেবে জানিয়ে দেওয়া হবে। ভবিষ্যতে এই নম্বর থেকে আসা কোনও কলকে স্প্যাম হিসেবে শনাক্ত করা হবে না।</string>
   <string name="unblock_report_number_alert_title">%1$s আনব্লক করবেন?</string>
   <string name="report_not_spam_alert_button">অভিযোগ জানান</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-bs/strings.xml b/java/com/android/dialer/blockreportspam/res/values-bs/strings.xml
index 6b02797..465c056 100644
--- a/java/com/android/dialer/blockreportspam/res/values-bs/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-bs/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DEBLOKIRAJ</string>
   <string name="block_report_number_alert_title">Blokirati broj %1$s?</string>
   <string name="block_report_number_alert_details">Više nećete primati pozive s ovog broja.</string>
-  <string name="block_number_alert_details">%1$s Ovaj poziv će biti prijavljen kao neželjen.</string>
   <string name="unblock_number_alert_details">Deblokirat ćemo broj i prijaviti da nije neželjen. Budući pozivi neće biti neželjeni.</string>
   <string name="unblock_report_number_alert_title">Deblokirati broj %1$s?</string>
   <string name="report_not_spam_alert_button">Prijavi</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ca/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ca/strings.xml
index b38a982..c64b64c 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ca/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ca/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DESBLOQUEJA</string>
   <string name="block_report_number_alert_title">Vols bloquejar el número %1$s?</string>
   <string name="block_report_number_alert_details">Deixaràs de rebre trucades d\'aquest número.</string>
-  <string name="block_number_alert_details">%1$s Aquesta trucada es marcarà com a brossa.</string>
   <string name="unblock_number_alert_details">El número es desbloquejarà i s\'indicarà que aquesta trucada (i les properes) no són brossa.</string>
   <string name="unblock_report_number_alert_title">Vols desbloquejar el número %1$s?</string>
   <string name="report_not_spam_alert_button">Informa</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-cs/strings.xml b/java/com/android/dialer/blockreportspam/res/values-cs/strings.xml
index 27c4319..23a203d 100644
--- a/java/com/android/dialer/blockreportspam/res/values-cs/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-cs/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ODBLOKOVAT</string>
   <string name="block_report_number_alert_title">Blokovat číslo %1$s?</string>
   <string name="block_report_number_alert_details">Z tohoto čísla už nebudete přijímat hovory.</string>
-  <string name="block_number_alert_details">%1$s Hovor bude nahlášen jako spam.</string>
   <string name="unblock_number_alert_details">Toto číslo bude odblokováno a bude nahlášeno, že se nejedná o spam. Budoucí hovory nebudou označeny jako spam.</string>
   <string name="unblock_report_number_alert_title">Odblokovat číslo %1$s?</string>
   <string name="report_not_spam_alert_button">Nahlásit</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-da/strings.xml b/java/com/android/dialer/blockreportspam/res/values-da/strings.xml
index 86ffeb4..226f6a4 100644
--- a/java/com/android/dialer/blockreportspam/res/values-da/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-da/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">FJERN BLOKERING</string>
   <string name="block_report_number_alert_title">Vil du blokere %1$s?</string>
   <string name="block_report_number_alert_details">Du modtager ikke længere opkald fra dette nummer.</string>
-  <string name="block_number_alert_details">%1$s Dette opkald rapporteres som spam.</string>
   <string name="unblock_number_alert_details">Blokeringen af nummeret ophæves, og spam rapporteres ikke. Nye opkald registreres ikke som spam.</string>
   <string name="unblock_report_number_alert_title">Vil du fjerne blokeringen af %1$s?</string>
   <string name="report_not_spam_alert_button">Rapportér</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-de/strings.xml b/java/com/android/dialer/blockreportspam/res/values-de/strings.xml
index d1a8420..7b0cce5 100644
--- a/java/com/android/dialer/blockreportspam/res/values-de/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-de/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">BLOCKIERUNG AUFHEBEN</string>
   <string name="block_report_number_alert_title">%1$s blockieren?</string>
   <string name="block_report_number_alert_details">Du erhältst von dieser Nummer keine Anrufe mehr.</string>
-  <string name="block_number_alert_details">%1$s Dieser Anruf wird als Spam gemeldet.</string>
   <string name="unblock_number_alert_details">Die Nummer wird nicht mehr blockiert und nicht als Spam gemeldet. Zukünftige Anrufe sind kein Spam.</string>
   <string name="unblock_report_number_alert_title">Blockierung von %1$s aufheben?</string>
   <string name="report_not_spam_alert_button">Melden</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-el/strings.xml b/java/com/android/dialer/blockreportspam/res/values-el/strings.xml
index 530e9ba..70f437f 100644
--- a/java/com/android/dialer/blockreportspam/res/values-el/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-el/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ΚΑΤΑΡΓΗΣΗ ΑΠΟΚΛΕΙΣΜΟΥ</string>
   <string name="block_report_number_alert_title">Να αποκλειστεί ο αριθμός %1$s;</string>
   <string name="block_report_number_alert_details">Δεν θα λαμβάνετε πλέον κλήσεις από αυτόν τον αριθμό.</string>
-  <string name="block_number_alert_details">%1$s Η κλήση αυτή θα αναφερθεί ως ανεπιθύμητη.</string>
   <string name="unblock_number_alert_details">Ο αποκλ. του αρ. θα καταργηθεί. Θα αναφερθεί ως μη ανεπιθ. Μελλοντικές κλ. δεν θα αναγν. ως ανεπιθ.</string>
   <string name="unblock_report_number_alert_title">Να καταργηθεί ο αποκλεισμός του αριθμού %1$s;</string>
   <string name="report_not_spam_alert_button">Αναφορά</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-en-rAU/strings.xml b/java/com/android/dialer/blockreportspam/res/values-en-rAU/strings.xml
index ef0af56..9b90a9d 100644
--- a/java/com/android/dialer/blockreportspam/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-en-rAU/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">UNBLOCK</string>
   <string name="block_report_number_alert_title">Block %1$s?</string>
   <string name="block_report_number_alert_details">You will no longer receive calls from this number.</string>
-  <string name="block_number_alert_details">%1$s This call will be reported as spam.</string>
   <string name="unblock_number_alert_details">This number will be unblocked and reported as not being spam. Future calls won\'t be identified as spam.</string>
   <string name="unblock_report_number_alert_title">Unblock %1$s?</string>
   <string name="report_not_spam_alert_button">Report</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-en-rGB/strings.xml b/java/com/android/dialer/blockreportspam/res/values-en-rGB/strings.xml
index ef0af56..9b90a9d 100644
--- a/java/com/android/dialer/blockreportspam/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-en-rGB/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">UNBLOCK</string>
   <string name="block_report_number_alert_title">Block %1$s?</string>
   <string name="block_report_number_alert_details">You will no longer receive calls from this number.</string>
-  <string name="block_number_alert_details">%1$s This call will be reported as spam.</string>
   <string name="unblock_number_alert_details">This number will be unblocked and reported as not being spam. Future calls won\'t be identified as spam.</string>
   <string name="unblock_report_number_alert_title">Unblock %1$s?</string>
   <string name="report_not_spam_alert_button">Report</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-en-rIN/strings.xml b/java/com/android/dialer/blockreportspam/res/values-en-rIN/strings.xml
index ef0af56..9b90a9d 100644
--- a/java/com/android/dialer/blockreportspam/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-en-rIN/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">UNBLOCK</string>
   <string name="block_report_number_alert_title">Block %1$s?</string>
   <string name="block_report_number_alert_details">You will no longer receive calls from this number.</string>
-  <string name="block_number_alert_details">%1$s This call will be reported as spam.</string>
   <string name="unblock_number_alert_details">This number will be unblocked and reported as not being spam. Future calls won\'t be identified as spam.</string>
   <string name="unblock_report_number_alert_title">Unblock %1$s?</string>
   <string name="report_not_spam_alert_button">Report</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-es-rUS/strings.xml b/java/com/android/dialer/blockreportspam/res/values-es-rUS/strings.xml
index 0169f4b..eacafa2 100644
--- a/java/com/android/dialer/blockreportspam/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-es-rUS/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DESBLOQUEAR</string>
   <string name="block_report_number_alert_title">¿Deseas bloquear el número %1$s?</string>
   <string name="block_report_number_alert_details">Ya no recibirás llamadas de este número.</string>
-  <string name="block_number_alert_details">%1$s Esta llamada se marcará como spam.</string>
   <string name="unblock_number_alert_details">El número se desbloqueará y no se marcará como spam. Las llamadas futuras no se considerarán spam.</string>
   <string name="unblock_report_number_alert_title">¿Deseas desbloquear el número %1$s?</string>
   <string name="report_not_spam_alert_button">Informar</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-es/strings.xml b/java/com/android/dialer/blockreportspam/res/values-es/strings.xml
index 25baadc..1a2fd83 100644
--- a/java/com/android/dialer/blockreportspam/res/values-es/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-es/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DESBLOQUEAR</string>
   <string name="block_report_number_alert_title">¿Quieres bloquear el número %1$s?</string>
   <string name="block_report_number_alert_details">Ya no recibirás llamadas de este número.</string>
-  <string name="block_number_alert_details">%1$s Esta llamada se marcará como spam.</string>
   <string name="unblock_number_alert_details">El número se desbloqueará y marcará como No es spam. Las llamadas futuras no se reconocerán como spam.</string>
   <string name="unblock_report_number_alert_title">¿Quieres desbloquear el número %1$s?</string>
   <string name="report_not_spam_alert_button">Informar</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-et/strings.xml b/java/com/android/dialer/blockreportspam/res/values-et/strings.xml
index 3495ceb..24ae0ea 100644
--- a/java/com/android/dialer/blockreportspam/res/values-et/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-et/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DEBLOKEERI</string>
   <string name="block_report_number_alert_title">Kas soovite blokeerida numbri %1$s?</string>
   <string name="block_report_number_alert_details">Te ei saa enam sellelt numbrilt kõnesid.</string>
-  <string name="block_number_alert_details">%1$s See kõne liigitatakse rämpspostiks.</string>
   <string name="unblock_number_alert_details">Number deblokeeritakse ja seda ei liigit. rämpspostiks. Tulevasi kõnesid ei liigitata rämpspostiks.</string>
   <string name="unblock_report_number_alert_title">Kas soovite deblokeerida numbri %1$s?</string>
   <string name="report_not_spam_alert_button">Teavita</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-eu/strings.xml b/java/com/android/dialer/blockreportspam/res/values-eu/strings.xml
index acb1130..b05a760 100644
--- a/java/com/android/dialer/blockreportspam/res/values-eu/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-eu/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DESBLOKEATU</string>
   <string name="block_report_number_alert_title">%1$s blokeatu nahi duzu?</string>
   <string name="block_report_number_alert_details">Aurrerantzean, ez duzu jasoko zenbaki horren deirik.</string>
-  <string name="block_number_alert_details">%1$s Dei hau spama dela salatuko da.</string>
   <string name="unblock_number_alert_details">Desblokeatu egingo da zenbakia. Aurrerantzean, deiak ez dira identifikatuko spam gisa.</string>
   <string name="unblock_report_number_alert_title">%1$s desblokeatu nahi duzu?</string>
   <string name="report_not_spam_alert_button">Salatu</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-fa/strings.xml b/java/com/android/dialer/blockreportspam/res/values-fa/strings.xml
index 9f155c5..146680f 100644
--- a/java/com/android/dialer/blockreportspam/res/values-fa/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-fa/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">رفع انسداد</string>
   <string name="block_report_number_alert_title">%1$s مسدود شود؟</string>
   <string name="block_report_number_alert_details">دیگر از این شماره تماس دریافت نمی‌کنید.</string>
-  <string name="block_number_alert_details">%1$sاین تماس به‌عنوان هرزنامه گزارش خواهد شد.</string>
   <string name="unblock_number_alert_details">این شماره لغو انسداد می‌شود و به‌عنوان غیرهرزنامه گزارش می‌شود. تماس‌ها و پست‌های صوتی بعدی به‌عنوان هرزنامه شناسایی نمی‌شود.</string>
   <string name="unblock_report_number_alert_title">%1$s لغو انسداد شود؟</string>
   <string name="report_not_spam_alert_button">گزارش</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-fi/strings.xml b/java/com/android/dialer/blockreportspam/res/values-fi/strings.xml
index 0efd591..154fe9c 100644
--- a/java/com/android/dialer/blockreportspam/res/values-fi/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-fi/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">KUMOA ESTO</string>
   <string name="block_report_number_alert_title">Estetäänkö %1$s?</string>
   <string name="block_report_number_alert_details">Tästä numerosta tulevat puhelut estetään.</string>
-  <string name="block_number_alert_details">%1$s. Puhelu ilmoitetaan häirikköpuheluksi.</string>
   <string name="unblock_number_alert_details">Numeron esto ja häirikkötila kumotaan. Puhelut tästä numerosta eivät enää ole häirikköpuheluja.</string>
   <string name="unblock_report_number_alert_title">Kumotaanko numeron %1$s esto?</string>
   <string name="report_not_spam_alert_button">Ilmoita</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-fr-rCA/strings.xml b/java/com/android/dialer/blockreportspam/res/values-fr-rCA/strings.xml
index d666b35..79ef546 100644
--- a/java/com/android/dialer/blockreportspam/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-fr-rCA/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DÉBLOQUER</string>
   <string name="block_report_number_alert_title">Bloquer le numéro %1$s?</string>
   <string name="block_report_number_alert_details">Vous ne recevrez plus d\'appels de ce numéro.</string>
-  <string name="block_number_alert_details">%1$s Cet appel sera signalé comme importun.</string>
   <string name="unblock_number_alert_details">Ce numéro sera débloqué, et les futurs appels ne seront pas signalés comme importuns.</string>
   <string name="unblock_report_number_alert_title">Débloquer le numéro %1$s?</string>
   <string name="report_not_spam_alert_button">Signaler</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-fr/strings.xml b/java/com/android/dialer/blockreportspam/res/values-fr/strings.xml
index fff49f5..7cf5d4f 100644
--- a/java/com/android/dialer/blockreportspam/res/values-fr/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-fr/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DÉBLOQUER</string>
   <string name="block_report_number_alert_title">Bloquer le %1$s ?</string>
   <string name="block_report_number_alert_details">Vous ne recevrez plus d\'appels de ce numéro.</string>
-  <string name="block_number_alert_details">%1$s Cet appel sera signalé comme indésirable.</string>
   <string name="unblock_number_alert_details">Ce numéro sera débloqué et considéré comme fiable. Les prochains appels provenant de celui-ci ne seront plus considérés comme indésirables.</string>
   <string name="unblock_report_number_alert_title">Débloquer le %1$s ?</string>
   <string name="report_not_spam_alert_button">Rapport</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-gl/strings.xml b/java/com/android/dialer/blockreportspam/res/values-gl/strings.xml
index ec2a118..8c22938 100644
--- a/java/com/android/dialer/blockreportspam/res/values-gl/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-gl/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DESBLOQUEAR</string>
   <string name="block_report_number_alert_title">Queres bloquear o %1$s?</string>
   <string name="block_report_number_alert_details">Xa non recibirás máis chamadas deste número.</string>
-  <string name="block_number_alert_details">%1$s Informarase de que esta chamada é spam.</string>
   <string name="unblock_number_alert_details">Desbloquearase este número e informarase de que non é spam. Aceptaranse as futuras chamadas.</string>
   <string name="unblock_report_number_alert_title">Queres desbloquear o %1$s?</string>
   <string name="report_not_spam_alert_button">Informar</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-gu/strings.xml b/java/com/android/dialer/blockreportspam/res/values-gu/strings.xml
index 4e90e9e..8332cc6 100644
--- a/java/com/android/dialer/blockreportspam/res/values-gu/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-gu/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">અનાવરોધિત કરો</string>
   <string name="block_report_number_alert_title">%1$sને બ્લૉક કરીએ?</string>
   <string name="block_report_number_alert_details">હવેથી તમે આ નંબર પરથી કૉલ પ્રાપ્ત કરશો નહીં.</string>
-  <string name="block_number_alert_details">%1$s આ કૉલની સ્પામ તરીકે જાણ કરવામાં આવશે.</string>
   <string name="unblock_number_alert_details">આ નંબરને અનબ્લૉક કરીને સ્પામ નથી તરીકે જાણ કરાશે. ભાવિ કૉલ સ્પામ તરીકે ઓળખવામાં આવશે નહીં.</string>
   <string name="unblock_report_number_alert_title">%1$s ને અનબ્લૉક કરીએ?</string>
   <string name="report_not_spam_alert_button">જાણ કરો</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-hi/strings.xml b/java/com/android/dialer/blockreportspam/res/values-hi/strings.xml
index fd29ace..09e5058 100644
--- a/java/com/android/dialer/blockreportspam/res/values-hi/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-hi/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">अनवरोधित करें</string>
   <string name="block_report_number_alert_title">%1$s पर रोक लगाएं?</string>
   <string name="block_report_number_alert_details">अब आपको इस नंबर से कॉल नहीं आएंगे.</string>
-  <string name="block_number_alert_details">%1$s इस कॉल को स्पैम के रूप में रिपोर्ट किया जाएगा.</string>
   <string name="unblock_number_alert_details">इस नंबर पर से रोक हटा दी जाएगी और इसे स्पैम नहीं माना जाएगा. इससे आने वाले कॉल स्पैम नहीं माने जाएंगे.</string>
   <string name="unblock_report_number_alert_title">%1$s पर से रोक हटाएं?</string>
   <string name="report_not_spam_alert_button">रिपोर्ट करें</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-hr/strings.xml b/java/com/android/dialer/blockreportspam/res/values-hr/strings.xml
index cfcba1f..0106932 100644
--- a/java/com/android/dialer/blockreportspam/res/values-hr/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-hr/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DEBLOKIRAJ</string>
   <string name="block_report_number_alert_title">Želite li blokirati %1$s?</string>
   <string name="block_report_number_alert_details">Više nećete primati pozive s tog broja.</string>
-  <string name="block_number_alert_details">%1$s Taj će se poziv prijaviti kao neželjeni.</string>
   <string name="unblock_number_alert_details">Taj će se broj deblokirati i neće biti prijavljen kao neželjeni. Budući pozivi neće se označiti kao neželjeni.</string>
   <string name="unblock_report_number_alert_title">Želite li deblokirati broj %1$s?</string>
   <string name="report_not_spam_alert_button">Prijavi</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-hu/strings.xml b/java/com/android/dialer/blockreportspam/res/values-hu/strings.xml
index 7c4a1f1..67ed343 100644
--- a/java/com/android/dialer/blockreportspam/res/values-hu/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-hu/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">TILTÁS FELOLDÁSA</string>
   <string name="block_report_number_alert_title">Letiltja a következő számot: %1$s?</string>
   <string name="block_report_number_alert_details">A jövőben nem fogad hívásokat erről a számról.</string>
-  <string name="block_number_alert_details">%1$s A hívást spamként jelentjük be.</string>
   <string name="unblock_number_alert_details">A rendszer feloldja a szám tiltását, és nem spamként jelenti be. A hívások nem spamek.</string>
   <string name="unblock_report_number_alert_title">Feloldja a következő szám tiltását: %1$s?</string>
   <string name="report_not_spam_alert_button">Bejelentés</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-hy/strings.xml b/java/com/android/dialer/blockreportspam/res/values-hy/strings.xml
index ef3f4b7..ff39f99 100644
--- a/java/com/android/dialer/blockreportspam/res/values-hy/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-hy/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ԱՐԳԵԼԱԲԱՑԵԼ</string>
   <string name="block_report_number_alert_title">Արգելափակե՞լ %1$s համարը</string>
   <string name="block_report_number_alert_details">Այս համարից այլևս զանգեր չեք ստանա:</string>
-  <string name="block_number_alert_details">%1$s Այս զանգը կնշվի որպես սպամ:</string>
   <string name="unblock_number_alert_details">Այս համարը կարգելաբացվի և կնշվի որպես ոչ սպամ: Այս համարից եկող զանգերն այլևս չեն նշվի որպես սպամ:</string>
   <string name="unblock_report_number_alert_title">Արգելաբացե՞լ %1$s համարը</string>
   <string name="report_not_spam_alert_button">Բողոքել</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-in/strings.xml b/java/com/android/dialer/blockreportspam/res/values-in/strings.xml
index 48a0e9a..457d266 100644
--- a/java/com/android/dialer/blockreportspam/res/values-in/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-in/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">BEBASKAN</string>
   <string name="block_report_number_alert_title">Blokir %1$s?</string>
   <string name="block_report_number_alert_details">Anda tidak akan menerima telepon dari nomor ini lagi.</string>
-  <string name="block_number_alert_details">%1$s Panggilan ini akan dilaporkan sebagai spam.</string>
   <string name="unblock_number_alert_details">Nomor akan dibebaskan &amp; dilaporkan bukan spam. Telepon mendatang dari nomor ini dianggap bukan spam.</string>
   <string name="unblock_report_number_alert_title">Batalkan pemblokiran %1$s?</string>
   <string name="report_not_spam_alert_button">Laporan</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-is/strings.xml b/java/com/android/dialer/blockreportspam/res/values-is/strings.xml
index 36e465b..1451657 100644
--- a/java/com/android/dialer/blockreportspam/res/values-is/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-is/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">TAKA AF BANNLISTA</string>
   <string name="block_report_number_alert_title">Setja %1$s á bannlista?</string>
   <string name="block_report_number_alert_details">Þú munt ekki lengur fá símtöl úr þessu númeri.</string>
-  <string name="block_number_alert_details">%1$s Þetta símtal verður tilkynnt sem úr ruslnúmeri.</string>
   <string name="unblock_number_alert_details">Þetta númer verður tekið af bannlista og ekki tilkynnt sem ruslnúmer. Ekki er lokað á símtöl.</string>
   <string name="unblock_report_number_alert_title">Taka %1$s af bannlista?</string>
   <string name="report_not_spam_alert_button">Tilkynna</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-it/strings.xml b/java/com/android/dialer/blockreportspam/res/values-it/strings.xml
index 862ba20..c28b17a 100644
--- a/java/com/android/dialer/blockreportspam/res/values-it/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-it/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">SBLOCCA</string>
   <string name="block_report_number_alert_title">Bloccare il numero %1$s?</string>
   <string name="block_report_number_alert_details">Non riceverai più chiamate da questo numero.</string>
-  <string name="block_number_alert_details">%1$s Questa chiamata verrà segnalata come spam.</string>
   <string name="unblock_number_alert_details">Il numero verrà sbloccato e segnalato come non spam. In futuro non sarà più considerato spam.</string>
   <string name="unblock_report_number_alert_title">Sbloccare il numero %1$s?</string>
   <string name="report_not_spam_alert_button">Segnala</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-iw/strings.xml b/java/com/android/dialer/blockreportspam/res/values-iw/strings.xml
index 101e43c..fec1e0e 100644
--- a/java/com/android/dialer/blockreportspam/res/values-iw/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-iw/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ביטול חסימה</string>
   <string name="block_report_number_alert_title">לחסום את %1$s?</string>
   <string name="block_report_number_alert_details">לא יגיעו אליך יותר שיחות מהמספר הזה.</string>
-  <string name="block_number_alert_details">%1$s השיחה הזו תדווח כספאם.</string>
   <string name="unblock_number_alert_details">החסימה של המספר הזה תבוטל וידווח שהוא אינו ספאם. שיחות שיתקבלו ממנו לא יזוהו כספאם.</string>
   <string name="unblock_report_number_alert_title">לבטל את החסימה של %1$s?</string>
   <string name="report_not_spam_alert_button">דיווח</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ja/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ja/strings.xml
index 899d4cd..051b780 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ja/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ja/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ブロックを解除</string>
   <string name="block_report_number_alert_title">%1$s をブロックしますか？</string>
   <string name="block_report_number_alert_details">今後この番号から通話を受信することはなくなります。</string>
-  <string name="block_number_alert_details">%1$sこの通話は迷惑電話として報告されます。</string>
   <string name="unblock_number_alert_details">この番号のブロックが解除され、迷惑電話ではないと報告されます（迷惑電話として識別されなくなります）。</string>
   <string name="unblock_report_number_alert_title">%1$s のブロックを解除しますか？</string>
   <string name="report_not_spam_alert_button">報告</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ka/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ka/strings.xml
index f0b6515..710e6ba 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ka/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ka/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">განბლოკვა</string>
   <string name="block_report_number_alert_title">გსურთ, დაბლოკოთ %1$s?</string>
   <string name="block_report_number_alert_details">ამ ნომრიდან ზარებს აღარ მიიღებთ.</string>
-  <string name="block_number_alert_details">%1$s ეს ზარი მოინიშნება სპამად.</string>
   <string name="unblock_number_alert_details">ეს ნომერი განიბლოკება და გაიგზავნება სპამის გაუქმ. შეტყობინება. მომავალი ზარები სპამად არ ჩაითვლება.</string>
   <string name="unblock_report_number_alert_title">გსურთ, განბლოკოთ %1$s?</string>
   <string name="report_not_spam_alert_button">ანგარიში</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-kk/strings.xml b/java/com/android/dialer/blockreportspam/res/values-kk/strings.xml
index 9aa364e..a33606b 100644
--- a/java/com/android/dialer/blockreportspam/res/values-kk/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-kk/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">БӨГЕУДЕН ШЫҒАРУ</string>
   <string name="block_report_number_alert_title">%1$s нөмірін бөгеу қажет пе?</string>
   <string name="block_report_number_alert_details">Бұдан былай бұл нөмірден қоңыраулар алмайтын боласыз.</string>
-  <string name="block_number_alert_details">%1$s Бұл қоңырау \"спам\" деп хабарланады.</string>
   <string name="unblock_number_alert_details">Бұл нөмірдің бөгеуі жойылып, \"спам емес\" деп белгіленеді. Алдағы қоңыраулар спам қалтасына жіберілмейді.</string>
   <string name="unblock_report_number_alert_title">%1$s бөгеуін алу қажет пе?</string>
   <string name="report_not_spam_alert_button">Хабарлау</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-km/strings.xml b/java/com/android/dialer/blockreportspam/res/values-km/strings.xml
index c7366f5..bdfb533 100644
--- a/java/com/android/dialer/blockreportspam/res/values-km/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-km/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ឈប់រារាំង</string>
   <string name="block_report_number_alert_title">ទប់ស្កាត់ %1$s ?</string>
   <string name="block_report_number_alert_details">អ្នក​នឹង​លែង​ទទួល​បាន​ការ​ហៅ​ពី​លេខ​នេះ​ទៀត​ហើយ។</string>
-  <string name="block_number_alert_details">%1$s ការ​ហៅ​នេះ​នឹង​ត្រូវ​រាយការណ៍​ថា​ជា​សារ​ឥត​បាន​ការ។</string>
   <string name="unblock_number_alert_details">លេខ​នេះ​នឹង​ត្រូវ​​បាន​ឈប់​​ទប់ស្កាត់ និង​រាយការណ៍​​ថា​​មិន​មែន​ជា​សារ​ឥតបានការ​ទេ។ ការ​ហៅ​លើក​ក្រោយៗ​នឹង​មិន​ត្រូវ​បាន​​កំណត់​​ថា​ជា​សារ​​ឥត​បាន​ការ​ទេ។</string>
   <string name="unblock_report_number_alert_title">ឈប់​ទប់ស្កាត់ %1$s ?</string>
   <string name="report_not_spam_alert_button">រាយការណ៍</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-kn/strings.xml b/java/com/android/dialer/blockreportspam/res/values-kn/strings.xml
index 5859a6c..de1cfad 100644
--- a/java/com/android/dialer/blockreportspam/res/values-kn/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-kn/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ನಿರ್ಬಂಧ ತೆಗೆ</string>
   <string name="block_report_number_alert_title">%1$s ನಿರ್ಬಂಧಿಸುವುದೇ?</string>
   <string name="block_report_number_alert_details">ನೀವು ಇನ್ನು ಮುಂದೆ ಈ ಸಂಖ್ಯೆಯಿಂದ ಕರೆಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ.</string>
-  <string name="block_number_alert_details">%1$s ಈ ಕರೆಯನ್ನು ಸ್ಪ್ಯಾಮ್ ಎಂದು ವರದಿ ಮಾಡಲಾಗುತ್ತದೆ.</string>
   <string name="unblock_number_alert_details">ಈ ಸಂಖ್ಯೆಗೆ ನಿರ್ಬಂಧ ತೆಗೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಸ್ಪ್ಯಾಮ್ ಎಂದು ವರದಿ ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಭವಿಷ್ಯದ ಕರೆಗಳನ್ನು ಸ್ಪ್ಯಾಮ್ ಎಂದು ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.</string>
   <string name="unblock_report_number_alert_title">%1$s ನಿರ್ಬಂಧವನ್ನು ತೆಗೆಯುವುದೇ?</string>
   <string name="report_not_spam_alert_button">ವರದಿ</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ko/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ko/strings.xml
index 539eb8e..fca929a 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ko/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ko/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">차단 해제</string>
   <string name="block_report_number_alert_title">%1$s번을 차단하시겠습니까?</string>
   <string name="block_report_number_alert_details">이 번호로부터 수신되는 전화를 더 이상 받지 않습니다.</string>
-  <string name="block_number_alert_details">%1$s 이 전화는 스팸으로 신고됩니다.</string>
   <string name="unblock_number_alert_details">이 번호는 차단되지 않으며 스팸이 아닌 것으로 신고됩니다. 앞으로 이 번호에서 전화가 오면 스팸으로 인식되지 않습니다.</string>
   <string name="unblock_report_number_alert_title">%1$s번을 차단 해제하시겠습니까?</string>
   <string name="report_not_spam_alert_button">신고</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ky/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ky/strings.xml
index 19c16d4..b873875 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ky/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ky/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">БӨГӨТТӨН ЧЫГАРУУ</string>
   <string name="block_report_number_alert_title">%1$s бөгөттөлсүнбү?</string>
   <string name="block_report_number_alert_details">Мындан ары бул номерден келген чалуулар кабыл алынбайт.</string>
-  <string name="block_number_alert_details">%1$s Бул чалуу спам деп белгиленет.</string>
   <string name="unblock_number_alert_details">Номер бөгөттөн чыгарылып, спам эмес деп белгиленет. Кийинки чалуулар спам деп белгиленбейт.</string>
   <string name="unblock_report_number_alert_title">%1$s бөгөттөн чыгарылсынбы?</string>
   <string name="report_not_spam_alert_button">Арыздануу</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-lo/strings.xml b/java/com/android/dialer/blockreportspam/res/values-lo/strings.xml
index 4154c93..fcb76f5 100644
--- a/java/com/android/dialer/blockreportspam/res/values-lo/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-lo/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">​ປົດ​ບລັອກ</string>
   <string name="block_report_number_alert_title">ບລັອກ %1$s ບໍ?</string>
   <string name="block_report_number_alert_details">ທ່ານຈະບໍ່ໄດ້ຮັບສາຍຈາກເບີໂທນີ້ອີກຕໍ່ໄປ.</string>
-  <string name="block_number_alert_details">%1$s ການໂທນີ້ຈະຖືກລາຍງານວ່າເປັນສະແປມ.</string>
   <string name="unblock_number_alert_details">ເບີໂທນີ້ຈະຖືກປົດບລັອກ ແລະ ລາຍງານວ່າບໍ່ແມ່ນສະແປມ. ການໂທໃນອະນາຄົດຈະບໍ່ຖືກລະບຸວ່າເປັນສະແປມ.</string>
   <string name="unblock_report_number_alert_title">ປົດບລັອກ %1$s ບໍ?</string>
   <string name="report_not_spam_alert_button">ລາຍງານ</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-lt/strings.xml b/java/com/android/dialer/blockreportspam/res/values-lt/strings.xml
index 7dcc7eb..b29e0c1 100644
--- a/java/com/android/dialer/blockreportspam/res/values-lt/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-lt/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">PANAIKINTI BLOKAVIMĄ</string>
   <string name="block_report_number_alert_title">Blokuoti numerį %1$s?</string>
   <string name="block_report_number_alert_details">Nebegausite skambučių iš šio numerio.</string>
-  <string name="block_number_alert_details">%1$s Apie šį skambutį bus pranešta kaip apie šlamštą.</string>
   <string name="unblock_number_alert_details">Šio nr. blok. bus pan. ir apie jį bus pran. kaip ne apie šl. siunt. Būs. sk. nebus nust. kaip šl.</string>
   <string name="unblock_report_number_alert_title">Panaikinti numerio %1$s blokavimą?</string>
   <string name="report_not_spam_alert_button">Pranešti</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-lv/strings.xml b/java/com/android/dialer/blockreportspam/res/values-lv/strings.xml
index bdfcb0a..48eef9f 100644
--- a/java/com/android/dialer/blockreportspam/res/values-lv/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-lv/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ATBLOĶĒT</string>
   <string name="block_report_number_alert_title">Vai bloķēt numuru %1$s?</string>
   <string name="block_report_number_alert_details">Jūs vairs nesaņemsiet zvanus no šī numura.</string>
-  <string name="block_number_alert_details">%1$s Šis zvans tiks atzīmēts kā nevēlams.</string>
   <string name="unblock_number_alert_details">Numurs tiks atbloķēts un netiks atzīmēts kā nevēlams. Turpmākie zvani netiks atzīmēti kā nevēlami.</string>
   <string name="unblock_report_number_alert_title">Vai atbloķēt numuru %1$s?</string>
   <string name="report_not_spam_alert_button">Ziņot</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-mk/strings.xml b/java/com/android/dialer/blockreportspam/res/values-mk/strings.xml
index 1fe8951..c2b2f29 100644
--- a/java/com/android/dialer/blockreportspam/res/values-mk/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-mk/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ДЕБЛОКИРАЈ</string>
   <string name="block_report_number_alert_title">Да се блокира %1$s?</string>
   <string name="block_report_number_alert_details">Веќе нема да примате повици од бројов.</string>
-  <string name="block_number_alert_details">%1$s Повиков ќе се пријави како спам.</string>
   <string name="unblock_number_alert_details">Бројов ќе се одблокира и пријави дека не е спам. Повиците и гов. пошта нема да се гледаат како спам.</string>
   <string name="unblock_report_number_alert_title">Да се одблокира %1$s?</string>
   <string name="report_not_spam_alert_button">Пријави</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ml/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ml/strings.xml
index a674877..aa380a3 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ml/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ml/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">അൺബ്ലോക്കുചെയ്യുക</string>
   <string name="block_report_number_alert_title">%1$s ബ്ലോക്ക് ചെയ്യണോ?</string>
   <string name="block_report_number_alert_details">നിങ്ങൾക്ക് ഇനി ഈ നമ്പറിൽ നിന്ന് കോളുകൾ ലഭിക്കില്ല.</string>
-  <string name="block_number_alert_details">%1$s ഈ കോൾ സ്‌പാം ആയി റിപ്പോർട്ട് ചെയ്യും.</string>
   <string name="unblock_number_alert_details">ഈ നമ്പർ അൺ‌ബ്ലോക്ക് ചെയ്‌ത്, സ്‌പാമല്ലെന്ന് റിപ്പോർട്ട് ചെയ്യും. ഭാവിയിൽ വരാൻ പോകുന്ന കോളുകളെ സ്‌പാം ആയി കണക്കാക്കപ്പെടില്ല.</string>
   <string name="unblock_report_number_alert_title">%1$s അൺബ്ലോക്ക് ചെയ്യണോ?</string>
   <string name="report_not_spam_alert_button">റിപ്പോര്‍ട്ട് ചെയ്യുക</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-mn/strings.xml b/java/com/android/dialer/blockreportspam/res/values-mn/strings.xml
index ed8579a..96642cb 100644
--- a/java/com/android/dialer/blockreportspam/res/values-mn/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-mn/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">БЛОКООС ГАРГАХ</string>
   <string name="block_report_number_alert_title">%1$s-г хориглох уу?</string>
   <string name="block_report_number_alert_details">Та энэ дугаараас цаашид дуудлага хүлээж авахгүй.</string>
-  <string name="block_number_alert_details">%1$s Энэ дуудлагыг спам гэж мэдээлэх болно.</string>
   <string name="unblock_number_alert_details">Энэ дугаарын хоригийг авч, спам биш гэж мэдээлэх болно. Цаашид ирэх дуудлагыг спам гэж үзэхгүй.</string>
   <string name="unblock_report_number_alert_title">%1$s-г хоригоос гаргах уу?</string>
   <string name="report_not_spam_alert_button">Мэдэгдэх</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-mr/strings.xml b/java/com/android/dialer/blockreportspam/res/values-mr/strings.xml
index d596cc4..c335dca 100644
--- a/java/com/android/dialer/blockreportspam/res/values-mr/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-mr/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">अनावरोधित करा</string>
   <string name="block_report_number_alert_title">%1$s ब्‍लॉक करायचा?</string>
   <string name="block_report_number_alert_details">तुम्‍ही या नंबरवरून कॉल घेऊ शकणार नाही.</string>
-  <string name="block_number_alert_details">%1$s या कॉलची स्पॅम म्हणून तक्रार नोंदवली जाईल.</string>
   <string name="unblock_number_alert_details">हा नंबर अनब्‍लॉक केला जाईल आणि त्याचा स्पॅम नाही म्हणून अहवाल दिला जाईल. भविष्यातील कॉल स्पॅम म्हणून ओळखले जाणार नाहीत.</string>
   <string name="unblock_report_number_alert_title">%1$s अनब्‍लॉक करायचा?</string>
   <string name="report_not_spam_alert_button">नोंदवा</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ms/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ms/strings.xml
index e7bd0d4..6f770b6 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ms/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ms/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">NYAHSEKAT</string>
   <string name="block_report_number_alert_title">Sekat %1$s?</string>
   <string name="block_report_number_alert_details">Anda tidak akan menerima panggilan daripada nombor ini lagi.</string>
-  <string name="block_number_alert_details">%1$s Panggilan ini akan dilaporkan sebagai spam.</string>
   <string name="unblock_number_alert_details">Nombor akn dinyahsekat &amp; dilaporkan bkn spam. Panggilan akan datang tdk akn dikenal pasti sbg spam.</string>
   <string name="unblock_report_number_alert_title">Nyahsekat %1$s?</string>
   <string name="report_not_spam_alert_button">Lapor</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-my/strings.xml b/java/com/android/dialer/blockreportspam/res/values-my/strings.xml
index b743a2c..4e887c2 100644
--- a/java/com/android/dialer/blockreportspam/res/values-my/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-my/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ပိတ်ဆို့ခြင်းမှ ဖယ်ရှားပါ</string>
   <string name="block_report_number_alert_title">%1$sကို ပိတ်မလား။</string>
   <string name="block_report_number_alert_details">ဤနံပါတ်ထံမှ ဖုန်းခေါ်ဆိုမှုများကို သင်လက်ခံရရှိတော့မည် မဟုတ်ပါ။</string>
-  <string name="block_number_alert_details">%1$s ဤခေါ်ဆိုမှုကို စပမ်းဖြစ်ကြောင်း သတင်းပို့ပါမည်။</string>
   <string name="unblock_number_alert_details">ဤနံပါတ်ကို ပြန်ဖွင့်၍ စပမ်းမဟုတ်ကြောင်း သတင်းပို့မည်။ နောင်ခေါ်ဆိုမှုများကို စပမ်းအဖြစ် မသတ်မှတ်ပါ။</string>
   <string name="unblock_report_number_alert_title">%1$s ကို ပြန်ဖွင့်မလား။</string>
   <string name="report_not_spam_alert_button">သတင်းပို့ရန်</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-nb/strings.xml b/java/com/android/dialer/blockreportspam/res/values-nb/strings.xml
index efc1600..2fd354c 100644
--- a/java/com/android/dialer/blockreportspam/res/values-nb/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-nb/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">OPPHEV BLOKKERINGEN</string>
   <string name="block_report_number_alert_title">Vil du blokkere %1$s?</string>
   <string name="block_report_number_alert_details">Du får ingen flere anrop eller meldinger fra dette telefonnummeret.</string>
-  <string name="block_number_alert_details">%1$s Dette anropet blir rapportert som useriøst.</string>
   <string name="unblock_number_alert_details">Blokkeringen oppheves, og nummeret rapporteres som «ikke useriøst». Fremtidige anrop blir ikke identifisert som useriøse.</string>
   <string name="unblock_report_number_alert_title">Vil du oppheve blokkeringen av %1$s?</string>
   <string name="report_not_spam_alert_button">Rapport</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ne/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ne/strings.xml
index dca535b..43c8575 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ne/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ne/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">रोक हटाउनुहोस्</string>
   <string name="block_report_number_alert_title">%1$s माथि रोक लगाउने हो?</string>
   <string name="block_report_number_alert_details">तपाईं अब उप्रान्त यस नम्बरबाट कलहरू प्राप्त गर्नु हुने छैन।</string>
-  <string name="block_number_alert_details">%1$s यस कललाई स्प्याम भनी रिपोर्ट गरिने छ।</string>
   <string name="unblock_number_alert_details">यो नम्बरमाथिको रोक हटाइने छ र यसलाई स्प्याम होइन भनी रिपोर्ट गरिने छ। आगामी कलहरूलाई स्प्याम भनी पहिचान गरिने छैन।</string>
   <string name="unblock_report_number_alert_title">%1$s माथिको रोक हटाउने हो?</string>
   <string name="report_not_spam_alert_button">रिपोर्ट गर्नुहोस्</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-nl/strings.xml b/java/com/android/dialer/blockreportspam/res/values-nl/strings.xml
index 2047563..a546038 100644
--- a/java/com/android/dialer/blockreportspam/res/values-nl/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-nl/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">BLOKKERING OPHEFFEN</string>
   <string name="block_report_number_alert_title">%1$s blokkeren?</string>
   <string name="block_report_number_alert_details">Je ontvangt geen oproepen meer van dit nummer.</string>
-  <string name="block_number_alert_details">%1$s Deze oproep wordt gemeld als spam.</string>
   <string name="unblock_number_alert_details">Nummerblokkering opgeheven, gemeld als geen spam. Nieuwe oproepen worden niet aangemerkt als spam.</string>
   <string name="unblock_report_number_alert_title">Blokkering van %1$s opheffen?</string>
   <string name="report_not_spam_alert_button">Melden</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-no/strings.xml b/java/com/android/dialer/blockreportspam/res/values-no/strings.xml
index efc1600..2fd354c 100644
--- a/java/com/android/dialer/blockreportspam/res/values-no/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-no/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">OPPHEV BLOKKERINGEN</string>
   <string name="block_report_number_alert_title">Vil du blokkere %1$s?</string>
   <string name="block_report_number_alert_details">Du får ingen flere anrop eller meldinger fra dette telefonnummeret.</string>
-  <string name="block_number_alert_details">%1$s Dette anropet blir rapportert som useriøst.</string>
   <string name="unblock_number_alert_details">Blokkeringen oppheves, og nummeret rapporteres som «ikke useriøst». Fremtidige anrop blir ikke identifisert som useriøse.</string>
   <string name="unblock_report_number_alert_title">Vil du oppheve blokkeringen av %1$s?</string>
   <string name="report_not_spam_alert_button">Rapport</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-pa/strings.xml b/java/com/android/dialer/blockreportspam/res/values-pa/strings.xml
index 784941c..d98c256 100644
--- a/java/com/android/dialer/blockreportspam/res/values-pa/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-pa/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ਅਨਬਲੌਕ ਕਰੋ</string>
   <string name="block_report_number_alert_title">ਕੀ %1$s ਬਲਾਕ ਕਰਨਾ ਹੈ?</string>
   <string name="block_report_number_alert_details">ਹੁਣ ਤੁਹਾਨੂੰ ਇਸ ਨੰਬਰ ਤੋਂ ਕਾਲਾਂ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋਣਗੀਆਂ।</string>
-  <string name="block_number_alert_details">%1$s ਇਸ ਕਾਲ ਨੂੰ ਸਪੈਮ ਵਜੋਂ ਰਿਪੋਰਟ ਕੀਤਾ ਜਾਵੇਗਾ।</string>
   <string name="unblock_number_alert_details">ਇਹ ਨੰਬਰ ਅਣਬਲਾਕ ਕਰਕੇ \'ਸਪੈਮ ਨਹੀਂ\' ਵਜੋਂ ਰਿਪੋਰਟ ਕੀਤਾ ਜਾਵੇਗਾ। ਭਵਿੱਖੀ ਕਾਲਾਂ ਨੂੰ \'ਸਪੈਮ ਨਹੀਂ\' ਸਮਝਿਆ ਜਾਵੇਗਾ।</string>
   <string name="unblock_report_number_alert_title">ਕੀ %1$s ਅਣਬਲਾਕ ਕਰਨਾ ਹੈ?</string>
   <string name="report_not_spam_alert_button">ਰਿਪੋਰਟ ਕਰੋ</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-pl/strings.xml b/java/com/android/dialer/blockreportspam/res/values-pl/strings.xml
index 2241026..1d80ab7 100644
--- a/java/com/android/dialer/blockreportspam/res/values-pl/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-pl/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ODBLOKUJ</string>
   <string name="block_report_number_alert_title">Zablokować numer %1$s?</string>
   <string name="block_report_number_alert_details">Nie będziesz już otrzymywać połączeń z tego numeru.</string>
-  <string name="block_number_alert_details">%1$s To połączenie zostanie zgłoszone jako spam.</string>
   <string name="unblock_number_alert_details">Ten numer zostanie odblokowany i usunięty z listy nadawców spamu. Połączenia nie będą już blokowane.</string>
   <string name="unblock_report_number_alert_title">Odblokować numer %1$s?</string>
   <string name="report_not_spam_alert_button">Zgłoś</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-pt-rBR/strings.xml b/java/com/android/dialer/blockreportspam/res/values-pt-rBR/strings.xml
index f7dbb7d..574922f 100644
--- a/java/com/android/dialer/blockreportspam/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-pt-rBR/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DESBLOQUEAR</string>
   <string name="block_report_number_alert_title">Bloquear %1$s?</string>
   <string name="block_report_number_alert_details">Você não receberá mais chamadas deste número.</string>
-  <string name="block_number_alert_details">%1$s Esta chamada será denunciada como spam.</string>
   <string name="unblock_number_alert_details">O número será desbloqueado/marcado como não spam. As chamadas futuras não serão tratadas como spam.</string>
   <string name="unblock_report_number_alert_title">Desbloquear %1$s?</string>
   <string name="report_not_spam_alert_button">Denunciar</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-pt-rPT/strings.xml b/java/com/android/dialer/blockreportspam/res/values-pt-rPT/strings.xml
index adb73c1..361de0c 100644
--- a/java/com/android/dialer/blockreportspam/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-pt-rPT/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DESBLOQUEAR</string>
   <string name="block_report_number_alert_title">Pretende bloquear %1$s?</string>
   <string name="block_report_number_alert_details">Irá deixar de receber chamadas deste número.</string>
-  <string name="block_number_alert_details">%1$s Esta chamada será registada como spam.</string>
   <string name="unblock_number_alert_details">Este núm. será desbloq. e não será considerado spam. As chamadas não serão identificadas como spam.</string>
   <string name="unblock_report_number_alert_title">Pretende desbloquear %1$s?</string>
   <string name="report_not_spam_alert_button">Comunicar</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-pt/strings.xml b/java/com/android/dialer/blockreportspam/res/values-pt/strings.xml
index f7dbb7d..574922f 100644
--- a/java/com/android/dialer/blockreportspam/res/values-pt/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-pt/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DESBLOQUEAR</string>
   <string name="block_report_number_alert_title">Bloquear %1$s?</string>
   <string name="block_report_number_alert_details">Você não receberá mais chamadas deste número.</string>
-  <string name="block_number_alert_details">%1$s Esta chamada será denunciada como spam.</string>
   <string name="unblock_number_alert_details">O número será desbloqueado/marcado como não spam. As chamadas futuras não serão tratadas como spam.</string>
   <string name="unblock_report_number_alert_title">Desbloquear %1$s?</string>
   <string name="report_not_spam_alert_button">Denunciar</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ro/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ro/strings.xml
index 8557252..800fb74 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ro/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ro/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">DEBLOCAȚI</string>
   <string name="block_report_number_alert_title">Blocați %1$s?</string>
   <string name="block_report_number_alert_details">Nu veți mai primi apeluri de la acest număr.</string>
-  <string name="block_number_alert_details">%1$s Acest apel va fi raportat ca spam.</string>
   <string name="unblock_number_alert_details">Acest număr va fi deblocat și raportat ca nefiind spam. Apelurile viitoare nu sunt considerate spam.</string>
   <string name="unblock_report_number_alert_title">Deblocați %1$s?</string>
   <string name="report_not_spam_alert_button">Raportați</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ru/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ru/strings.xml
index ae4875c..2e0582a 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ru/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ru/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">РАЗБЛОКИРОВАТЬ</string>
   <string name="block_report_number_alert_title">Заблокировать номер %1$s?</string>
   <string name="block_report_number_alert_details">Вы больше не будете получать вызовы с этого номера.</string>
-  <string name="block_number_alert_details">%1$s Вы сообщите об этом вызове как о спаме.</string>
   <string name="unblock_number_alert_details">Этот номер будет разблокирован. Вы сообщите, что это не спам. Вызовы не будут считаться спамом.</string>
   <string name="unblock_report_number_alert_title">Разблокировать номер %1$s?</string>
   <string name="report_not_spam_alert_button">Сообщить</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-si/strings.xml b/java/com/android/dialer/blockreportspam/res/values-si/strings.xml
index 16ecdc0..524ea3f 100644
--- a/java/com/android/dialer/blockreportspam/res/values-si/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-si/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">අවහිර නොකරන්න</string>
   <string name="block_report_number_alert_title">%1$s අවහිර කරන්නද?</string>
   <string name="block_report_number_alert_details">ඔබට මෙම අංකයෙන් තවදුරටත් ඇමතුම් නොලැබෙනු ඇත.</string>
-  <string name="block_number_alert_details">%1$s මෙම ඇමතුම අයාචිත තැපෑලක් ලෙස වාර්තා කරනු ඇත.</string>
   <string name="unblock_number_alert_details">මෙම අංකය අවහිර කිරීම ඉවත් කර අයාචිත නොවන ලෙස වාර්තා කරනු ඇත. අනාගත ඇමතුම් අයාචිත ලෙස හඳුනා නොගනු ඇත.</string>
   <string name="unblock_report_number_alert_title">%1$s අවහිර කිරීමෙන් ඉවත් කරන්නද?</string>
   <string name="report_not_spam_alert_button">වාර්තා කරන්න</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-sk/strings.xml b/java/com/android/dialer/blockreportspam/res/values-sk/strings.xml
index 51c0826..454873d 100644
--- a/java/com/android/dialer/blockreportspam/res/values-sk/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-sk/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ODBLOKOVAŤ</string>
   <string name="block_report_number_alert_title">Chcete blokovať číslo %1$s?</string>
   <string name="block_report_number_alert_details">Z tohto čísla už nebudete dostávať hovory.</string>
-  <string name="block_number_alert_details">%1$s Tento hovor bude nahlásený ako spam.</string>
   <string name="unblock_number_alert_details">Číslo bude odblokované a nahlásené, že nie je spam. Budúce hovory nebudú identifikované ako spam.</string>
   <string name="unblock_report_number_alert_title">Chcete odblokovať číslo %1$s?</string>
   <string name="report_not_spam_alert_button">Nahlásiť</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-sl/strings.xml b/java/com/android/dialer/blockreportspam/res/values-sl/strings.xml
index 5dc065d..ea3ac4d 100644
--- a/java/com/android/dialer/blockreportspam/res/values-sl/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-sl/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ODBLOKIRAJ</string>
   <string name="block_report_number_alert_title">Želite blokirati številko %1$s?</string>
   <string name="block_report_number_alert_details">Ne boste več prejemali klicev s te številke.</string>
-  <string name="block_number_alert_details">%1$s Ta klic bo prijavljen kot neželen.</string>
   <string name="unblock_number_alert_details">Številka bo odblokirana in ne bo obravnavana kot neželena. Klici ne bodo več zaznani kot neželeni.</string>
   <string name="unblock_report_number_alert_title">Želite odblokirati številko %1$s?</string>
   <string name="report_not_spam_alert_button">Prijavi</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-sq/strings.xml b/java/com/android/dialer/blockreportspam/res/values-sq/strings.xml
index 2611a32..7fea01a 100644
--- a/java/com/android/dialer/blockreportspam/res/values-sq/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-sq/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ZHBLLOKO</string>
   <string name="block_report_number_alert_title">Të bllokohet %1$s?</string>
   <string name="block_report_number_alert_details">Nuk do të marrësh më telefonata nga ky numër.</string>
-  <string name="block_number_alert_details">%1$s Kjo telefonatë do të raportohet si e padëshiruar.</string>
   <string name="unblock_number_alert_details">Ky numër do të zhbllokohet dhe nuk do të raportohet si i padëshiruar. Telefonatat në të ardhmen nuk do të identifikohen si të padëshiruara.</string>
   <string name="unblock_report_number_alert_title">Të zhbllokohet %1$s?</string>
   <string name="report_not_spam_alert_button">Raporto</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-sr/strings.xml b/java/com/android/dialer/blockreportspam/res/values-sr/strings.xml
index 68d013e..05f7a81 100644
--- a/java/com/android/dialer/blockreportspam/res/values-sr/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-sr/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ДЕБЛОКИРАЈ</string>
   <string name="block_report_number_alert_title">Желите ли да блокирате %1$s?</string>
   <string name="block_report_number_alert_details">Више нећете примати позиве са овог броја.</string>
-  <string name="block_number_alert_details">%1$s Пријавићемо овај позив као непожељан.</string>
   <string name="unblock_number_alert_details">Деблокираћемо број и пријавити да није непожељан. Будући позиви неће бити означавани као непожељни.</string>
   <string name="unblock_report_number_alert_title">Желите ли да деблокирате %1$s?</string>
   <string name="report_not_spam_alert_button">Пријави</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-sv/strings.xml b/java/com/android/dialer/blockreportspam/res/values-sv/strings.xml
index da688e2..604fb70 100644
--- a/java/com/android/dialer/blockreportspam/res/values-sv/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-sv/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">HÄV BLOCKERINGEN</string>
   <string name="block_report_number_alert_title">Blockera %1$s?</string>
   <string name="block_report_number_alert_details">Du får inte längre samtal från det här numret.</string>
-  <string name="block_number_alert_details">%1$s Det här samtalet rapporteras som spam.</string>
   <string name="unblock_number_alert_details">Numret avblockeras och rapporteras inte som spam. Framtida samtal identifieras inte som spam.</string>
   <string name="unblock_report_number_alert_title">Avblockera %1$s?</string>
   <string name="report_not_spam_alert_button">Rapport</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-sw/strings.xml b/java/com/android/dialer/blockreportspam/res/values-sw/strings.xml
index c558606..9b32089 100644
--- a/java/com/android/dialer/blockreportspam/res/values-sw/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-sw/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ACHA KUZUIA</string>
   <string name="block_report_number_alert_title">Ungependa kuzuia nambari %1$s?</string>
   <string name="block_report_number_alert_details">Hutapokea tena simu kutoka kwenye nambari hii.</string>
-  <string name="block_number_alert_details">%1$s Simu hii itaripotiwa kuwa ni taka.</string>
   <string name="unblock_number_alert_details">Kizuizi kitaondolewa; nambari itaripotiwa kuwa si taka. Simu hazitajumuishwa miongoni mwa taka tena.</string>
   <string name="unblock_report_number_alert_title">Ungependa kuacha kuzuia nambari %1$s?</string>
   <string name="report_not_spam_alert_button">Ripoti</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ta/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ta/strings.xml
index 46a31f5..8894519 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ta/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ta/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">அனுமதி</string>
   <string name="block_report_number_alert_title">%1$sஐத் தடுக்கவா?</string>
   <string name="block_report_number_alert_details">இந்த எண்ணிலிருந்து இனி அழைப்புகளைப் பெறமாட்டீர்கள்.</string>
-  <string name="block_number_alert_details">%1$s இந்த அழைப்பு ஸ்பேம் எனப் புகாரளிக்கப்படும்.</string>
   <string name="unblock_number_alert_details">இந்த எண் அனுமதிக்கப்பட்டு, ஸ்பேம் இல்லையென தெரிவிக்கப்படும். இனி அழைப்புகள் ஸ்பேமாக குறிக்கப்படாது.</string>
   <string name="unblock_report_number_alert_title">%1$sஐ அனுமதிக்கவா?</string>
   <string name="report_not_spam_alert_button">புகாரளி</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-te/strings.xml b/java/com/android/dialer/blockreportspam/res/values-te/strings.xml
index 4f358d3..6cff9eb 100644
--- a/java/com/android/dialer/blockreportspam/res/values-te/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-te/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">అన్‌బ్లాక్ చేయి</string>
   <string name="block_report_number_alert_title">%1$sని బ్లాక్ చేయాలా?</string>
   <string name="block_report_number_alert_details">మీరు ఇకపై ఈ నంబర్ నుండి కాల్‌లు స్వీకరించరు.</string>
-  <string name="block_number_alert_details">%1$s ఈ కాల్ స్పామ్ వలె నివేదించబడుతుంది.</string>
   <string name="unblock_number_alert_details">ఈ నంబర్ అన్‌బ్లాక్ చేయబడుతుంది మరియు ఇది స్పామ్ కాదని నివేదించబడుతుంది. భవిష్యత్తు కాల్‌లు స్పామ్‌గా గుర్తించబడవు.</string>
   <string name="unblock_report_number_alert_title">%1$sని అన్‌బ్లాక్ చేయాలా?</string>
   <string name="report_not_spam_alert_button">నివేదించు</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-th/strings.xml b/java/com/android/dialer/blockreportspam/res/values-th/strings.xml
index c3a2b3d..db00e60 100644
--- a/java/com/android/dialer/blockreportspam/res/values-th/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-th/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">เลิกบล็อก</string>
   <string name="block_report_number_alert_title">บล็อก %1$s ไหม</string>
   <string name="block_report_number_alert_details">คุณจะไม่ได้รับสายจากหมายเลขนี้อีกต่อไป</string>
-  <string name="block_number_alert_details">%1$s ระบบจะรายงานสายนี้ว่าเป็นสแปม</string>
   <string name="unblock_number_alert_details">ระบบจะเลิกบล็อกหมายเลขนี้และรายงานว่าไม่ใช่สแปม การโทรเข้ามาหลังจากนี้จะไม่ถูกระบุว่าเป็นสแปม</string>
   <string name="unblock_report_number_alert_title">เลิกบล็อก %1$s ไหม</string>
   <string name="report_not_spam_alert_button">รายงาน</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-tl/strings.xml b/java/com/android/dialer/blockreportspam/res/values-tl/strings.xml
index f1f5dd7..9f156b5 100644
--- a/java/com/android/dialer/blockreportspam/res/values-tl/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-tl/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">I-UNBLOCK</string>
   <string name="block_report_number_alert_title">I-block ang %1$s?</string>
   <string name="block_report_number_alert_details">Hindi ka na makakatanggap ng mga tawag mula sa numerong ito.</string>
-  <string name="block_number_alert_details">%1$s Iuulat ang tawag na ito bilang spam.</string>
   <string name="unblock_number_alert_details">Ia-unblock ang numerong ito at iuulat na di spam. Di kikilalaning spam ang darating na tawag.</string>
   <string name="unblock_report_number_alert_title">I-unblock ang %1$s?</string>
   <string name="report_not_spam_alert_button">Iulat</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-tr/strings.xml b/java/com/android/dialer/blockreportspam/res/values-tr/strings.xml
index 5ac29ec..00f3708 100644
--- a/java/com/android/dialer/blockreportspam/res/values-tr/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-tr/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">ENGELLEMEYİ KALDIR</string>
   <string name="block_report_number_alert_title">%1$s engellensin mi?</string>
   <string name="block_report_number_alert_details">Artık bu numaradan çağrı almayacaksınız.</string>
-  <string name="block_number_alert_details">%1$s Bu çağrı spam olarak bildirilecek.</string>
   <string name="unblock_number_alert_details">Numaranın engellemesi ve spam durumu kaldırılacak. Gelecekteki çağrılar spam olarak tanımlanmayacak.</string>
   <string name="unblock_report_number_alert_title">%1$s numaralı telefonun engellemesi kaldırılsın mı?</string>
   <string name="report_not_spam_alert_button">Bildir</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-uk/strings.xml b/java/com/android/dialer/blockreportspam/res/values-uk/strings.xml
index 76b825e..1c3c997 100644
--- a/java/com/android/dialer/blockreportspam/res/values-uk/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-uk/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">РОЗБЛОКУВАТИ</string>
   <string name="block_report_number_alert_title">Заблокувати %1$s?</string>
   <string name="block_report_number_alert_details">Ви більше не отримуватимете виклики з цього номера.</string>
-  <string name="block_number_alert_details">%1$s Цей виклик буде позначено як спам.</string>
   <string name="unblock_number_alert_details">Цей номер буде розблоковано. Виклики з нього (і він сам) не позначатимуться як спам.</string>
   <string name="unblock_report_number_alert_title">Розблокувати %1$s?</string>
   <string name="report_not_spam_alert_button">Повідомити</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-ur/strings.xml b/java/com/android/dialer/blockreportspam/res/values-ur/strings.xml
index d165f37..ea9cda2 100644
--- a/java/com/android/dialer/blockreportspam/res/values-ur/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-ur/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">غیر مسدود کریں</string>
   <string name="block_report_number_alert_title">%1$s مسدود کریں؟</string>
   <string name="block_report_number_alert_details">آپ کو اس نمبر سے مزید کالز موصول نہیں ہوں گی۔</string>
-  <string name="block_number_alert_details">%1$s اس کال کی بطور سپام اطلاع دی جائے گی۔</string>
   <string name="unblock_number_alert_details">یہ نمبر غیر مسدود ہو جائے گا اور اس کی \'سپام نہیں\' کے بطور اطلاع دی جائے گی۔ مستقبل میں کالز کی شناخت بطور سپام نہیں کی جائے گی۔</string>
   <string name="unblock_report_number_alert_title">%1$s غیر مسدود کریں؟</string>
   <string name="report_not_spam_alert_button">اطلاع دیں</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-uz/strings.xml b/java/com/android/dialer/blockreportspam/res/values-uz/strings.xml
index ea13456..1fad2c1 100644
--- a/java/com/android/dialer/blockreportspam/res/values-uz/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-uz/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">BLOKDAN CHIQARISH</string>
   <string name="block_report_number_alert_title">%1$s raqami bloklansinmi?</string>
   <string name="block_report_number_alert_details">Sizga bu raqamdan endi chaqiruv kelmaydi.</string>
-  <string name="block_number_alert_details">%1$s Bu spam chaqiruv deb xabar beriladi.</string>
   <string name="unblock_number_alert_details">Bu raqam blokdan chiqariladi va undan keluvchi chaqiruvlar spam emas deb aniqlanadi.</string>
   <string name="unblock_report_number_alert_title">%1$s raqami blokdan chiqarilsinmi?</string>
   <string name="report_not_spam_alert_button">Xabar berish</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-vi/strings.xml b/java/com/android/dialer/blockreportspam/res/values-vi/strings.xml
index 343bb25..cc8e0d3 100644
--- a/java/com/android/dialer/blockreportspam/res/values-vi/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-vi/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">BỎ CHẶN</string>
   <string name="block_report_number_alert_title">Chặn %1$s?</string>
   <string name="block_report_number_alert_details">Bạn sẽ không nhận được cuộc gọi từ số này nữa.</string>
-  <string name="block_number_alert_details">%1$s Cuộc gọi này sẽ được báo cáo là spam.</string>
   <string name="unblock_number_alert_details">Sẽ bỏ chặn số này và báo cáo không phải spam. Các cuộc gọi trong tương lai sẽ không bị coi là spam.</string>
   <string name="unblock_report_number_alert_title">Bỏ chặn %1$s?</string>
   <string name="report_not_spam_alert_button">Báo cáo</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-zh-rCN/strings.xml b/java/com/android/dialer/blockreportspam/res/values-zh-rCN/strings.xml
index 3ac5c43..1fa4efd 100644
--- a/java/com/android/dialer/blockreportspam/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-zh-rCN/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">取消屏蔽</string>
   <string name="block_report_number_alert_title">要屏蔽 %1$s 吗？</string>
   <string name="block_report_number_alert_details">您将不会再收到此号码的来电。</string>
-  <string name="block_number_alert_details">%1$s此次来电将被举报为骚扰电话。</string>
   <string name="unblock_number_alert_details">系统将取消屏蔽此号码，并停止将其列为骚扰电话号码。此号码日后的来电不会再被识别为骚扰电话。</string>
   <string name="unblock_report_number_alert_title">要取消屏蔽 %1$s 吗？</string>
   <string name="report_not_spam_alert_button">报告</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-zh-rHK/strings.xml b/java/com/android/dialer/blockreportspam/res/values-zh-rHK/strings.xml
index f8d0db7..6124d22 100644
--- a/java/com/android/dialer/blockreportspam/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-zh-rHK/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">解除封鎖</string>
   <string name="block_report_number_alert_title">要封鎖 %1$s 嗎？</string>
   <string name="block_report_number_alert_details">您不會再收到此號碼的來電。</string>
-  <string name="block_number_alert_details">%1$s 此來電將舉報為垃圾來電。</string>
   <string name="unblock_number_alert_details">系統會將此號碼解除封鎖，並舉報為非垃圾號碼。此外，系統不會將日後的來電視為垃圾來電。</string>
   <string name="unblock_report_number_alert_title">要解除封鎖 %1$s 嗎？</string>
   <string name="report_not_spam_alert_button">舉報</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-zh-rTW/strings.xml b/java/com/android/dialer/blockreportspam/res/values-zh-rTW/strings.xml
index a308a40..f054890 100644
--- a/java/com/android/dialer/blockreportspam/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-zh-rTW/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">解除封鎖</string>
   <string name="block_report_number_alert_title">要封鎖 %1$s 嗎？</string>
   <string name="block_report_number_alert_details">你不會再收到這組號碼的來電。</string>
-  <string name="block_number_alert_details">%1$s系統會將本次來電回報為騷擾/廣告電話。</string>
   <string name="unblock_number_alert_details">系統會解除封鎖這組號碼並回報為非騷擾/廣告電話，該號碼日後的來電不會歸類為騷擾/廣告電話。</string>
   <string name="unblock_report_number_alert_title">要解除封鎖 %1$s 嗎？</string>
   <string name="report_not_spam_alert_button">回報</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values-zu/strings.xml b/java/com/android/dialer/blockreportspam/res/values-zu/strings.xml
index 3c5b813..3a8964f 100644
--- a/java/com/android/dialer/blockreportspam/res/values-zu/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values-zu/strings.xml
@@ -5,7 +5,6 @@
   <string name="unblock_number_ok">VULELA</string>
   <string name="block_report_number_alert_title">Vimba %1$s?</string>
   <string name="block_report_number_alert_details">Ngeke usakwazi ukuthola amakholi kusuka kule nombolo.</string>
-  <string name="block_number_alert_details">%1$s Le kholi izobikwa njengogaxekile</string>
   <string name="unblock_number_alert_details">Le nombolo izovulelwa futhi ibikwe njengokungayena ugaxekile. Amakholi namavoyisimeyili wasesikhathini esizayo ngeke ahlonzwe njengogaxekile.</string>
   <string name="unblock_report_number_alert_title">Vulela i-%1$s?</string>
   <string name="report_not_spam_alert_button">Bika</string>
diff --git a/java/com/android/dialer/blockreportspam/res/values/colors.xml b/java/com/android/dialer/blockreportspam/res/values/colors.xml
deleted file mode 100644
index 5fa45eb..0000000
--- a/java/com/android/dialer/blockreportspam/res/values/colors.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  ~ Copyright (C) 2012 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
--->
-<resources>
-
-  <!-- 87% black -->
-  <color name="block_report_spam_primary_text_color">#de000000</color>
-
-</resources>
diff --git a/java/com/android/dialer/blockreportspam/res/values/strings.xml b/java/com/android/dialer/blockreportspam/res/values/strings.xml
index 1537c23..35b5b1a 100644
--- a/java/com/android/dialer/blockreportspam/res/values/strings.xml
+++ b/java/com/android/dialer/blockreportspam/res/values/strings.xml
@@ -39,9 +39,6 @@
   <!-- Text in alert dialog after clicking on Block/report as spam.  [CHAR LIMIT=100] -->
   <string name="block_report_number_alert_details">You will no longer receive calls from this number.</string>
 
-  <!-- Text in alert dialog after clicking on Block.  [CHAR LIMIT=100] -->
-  <string name="block_number_alert_details"><xliff:g id="text">%1$s</xliff:g> This call will be reported as spam.</string>
-
   <!-- Text in alert dialog after clicking on Unblock.  [CHAR LIMIT=100] -->
   <string name="unblock_number_alert_details">This number will be unblocked and reported as not spam. Future calls won\'t be identified as spam.</string>
 
diff --git a/java/com/android/dialer/buildtype/BuildType.java b/java/com/android/dialer/buildtype/BuildType.java
deleted file mode 100644
index c5c41d2..0000000
--- a/java/com/android/dialer/buildtype/BuildType.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.buildtype;
-
-import android.support.annotation.IntDef;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/** Utility to find out which build type the app is running as. */
-public class BuildType {
-
-  /** The type of build. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({
-    Type.BUGFOOD,
-    Type.FISHFOOD,
-    Type.DOGFOOD,
-    Type.RELEASE,
-    Type.TEST,
-  })
-  public @interface Type {
-    int BUGFOOD = 1;
-    int FISHFOOD = 2;
-    int DOGFOOD = 3;
-    int RELEASE = 4;
-    int TEST = 5;
-  }
-
-  private static int cachedBuildType;
-  private static boolean didInitializeBuildType;
-
-  @Type
-  public static synchronized int get() {
-    if (!didInitializeBuildType) {
-      didInitializeBuildType = true;
-      try {
-        Class<?> clazz = Class.forName(BuildTypeAccessor.class.getName() + "Impl");
-        BuildTypeAccessor accessorImpl = (BuildTypeAccessor) clazz.getConstructor().newInstance();
-        cachedBuildType = accessorImpl.getBuildType();
-      } catch (ReflectiveOperationException e) {
-        LogUtil.e("BuildType.get", "error creating BuildTypeAccessorImpl", e);
-        Assert.fail(
-            "Unable to get build type. To fix this error include one of the build type "
-                + "modules (bugfood, etc...) in your target.");
-      }
-    }
-    return cachedBuildType;
-  }
-
-  private BuildType() {}
-}
diff --git a/java/com/android/dialer/buildtype/BuildTypeAccessor.java b/java/com/android/dialer/buildtype/BuildTypeAccessor.java
deleted file mode 100644
index 940cf81..0000000
--- a/java/com/android/dialer/buildtype/BuildTypeAccessor.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.buildtype;
-
-import com.android.dialer.proguard.UsedByReflection;
-
-/**
- * Gets the build type. The functionality depends on a an implementation being present in the app
- * that has the same package and the class name ending in "Impl". For example,
- * com.android.dialer.buildtype.BuildTypeAccessorImpl. This class is found by the module using
- * reflection.
- */
-@UsedByReflection(value = "BuildType.java")
-/* package */ interface BuildTypeAccessor {
-  @BuildType.Type
-  int getBuildType();
-}
diff --git a/java/com/android/dialer/buildtype/release/BuildTypeAccessorImpl.java b/java/com/android/dialer/buildtype/release/BuildTypeAccessorImpl.java
deleted file mode 100644
index 4019dd0..0000000
--- a/java/com/android/dialer/buildtype/release/BuildTypeAccessorImpl.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.buildtype;
-
-import com.android.dialer.buildtype.BuildType.Type;
-import com.android.dialer.proguard.UsedByReflection;
-
-/** Gets the build type. */
-@UsedByReflection(value = "BuildType.java")
-public class BuildTypeAccessorImpl implements BuildTypeAccessor {
-
-  @Override
-  @BuildType.Type
-  public int getBuildType() {
-    return Type.RELEASE;
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/AndroidManifest.xml b/java/com/android/dialer/callcomposer/AndroidManifest.xml
deleted file mode 100644
index 369db6f..0000000
--- a/java/com/android/dialer/callcomposer/AndroidManifest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.callcomposer">
-
-  <application>
-    <activity
-      android:name="com.android.dialer.callcomposer.CallComposerActivity"
-      android:exported="true"
-      android:theme="@style/Theme.AppCompat.CallComposer"
-      android:windowSoftInputMode="adjustPan"/>
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
deleted file mode 100644
index fc5cb22..0000000
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ /dev/null
@@ -1,802 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer;
-
-import android.animation.Animator;
-import android.animation.Animator.AnimatorListener;
-import android.animation.AnimatorSet;
-import android.animation.ArgbEvaluator;
-import android.animation.ValueAnimator;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.res.Configuration;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.content.FileProvider;
-import android.support.v4.util.Pair;
-import android.support.v4.view.ViewPager.OnPageChangeListener;
-import android.support.v4.view.animation.FastOutSlowInInterpolator;
-import android.support.v7.app.AppCompatActivity;
-import android.text.TextUtils;
-import android.util.Base64;
-import android.view.Gravity;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewAnimationUtils;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.QuickContactBadge;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-import com.android.dialer.callcomposer.CallComposerFragment.CallComposerListener;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.UiUtil;
-import com.android.dialer.common.concurrent.DialerExecutor;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.constants.Constants;
-import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.dialercontact.DialerContact;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.enrichedcall.Session;
-import com.android.dialer.enrichedcall.Session.State;
-import com.android.dialer.enrichedcall.extensions.StateExtension;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.multimedia.MultimediaData;
-import com.android.dialer.precall.PreCall;
-import com.android.dialer.protos.ProtoParsers;
-import com.android.dialer.storage.StorageComponent;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.util.UriUtils;
-import com.android.dialer.util.ViewUtil;
-import com.android.dialer.widget.BidiTextView;
-import com.android.dialer.widget.DialerToolbar;
-import com.android.dialer.widget.LockableViewPager;
-import com.android.incallui.callpending.CallPendingActivity;
-import com.google.protobuf.InvalidProtocolBufferException;
-import java.io.File;
-
-/**
- * Implements an activity which prompts for a call with additional media for an outgoing call. The
- * activity includes a pop up with:
- *
- * <ul>
- *   <li>Contact galleryIcon
- *   <li>Name
- *   <li>Number
- *   <li>Media options to attach a gallery image, camera image or a message
- * </ul>
- */
-public class CallComposerActivity extends AppCompatActivity
-    implements OnClickListener,
-        OnPageChangeListener,
-        CallComposerListener,
-        EnrichedCallManager.StateChangedListener {
-
-  public static final String KEY_CONTACT_NAME = "contact_name";
-  private static final String KEY_IS_FIRST_CALL_COMPOSE = "is_first_call_compose";
-
-  private static final int ENTRANCE_ANIMATION_DURATION_MILLIS = 500;
-  private static final int EXIT_ANIMATION_DURATION_MILLIS = 500;
-
-  private static final String ARG_CALL_COMPOSER_CONTACT = "CALL_COMPOSER_CONTACT";
-  private static final String ARG_CALL_COMPOSER_CONTACT_BASE64 = "CALL_COMPOSER_CONTACT_BASE64";
-
-  private static final String ENTRANCE_ANIMATION_KEY = "entrance_animation_key";
-  private static final String SEND_AND_CALL_READY_KEY = "send_and_call_ready_key";
-  private static final String CURRENT_INDEX_KEY = "current_index_key";
-  private static final String VIEW_PAGER_STATE_KEY = "view_pager_state_key";
-  private static final String SESSION_ID_KEY = "session_id_key";
-
-  private final Handler timeoutHandler = ThreadUtil.getUiThreadHandler();
-  private final Runnable sessionStartedTimedOut =
-      () -> {
-        LogUtil.i("CallComposerActivity.sessionStartedTimedOutRunnable", "session never started");
-        setFailedResultAndFinish();
-      };
-  private final Runnable placeTelecomCallRunnable =
-      () -> {
-        LogUtil.i("CallComposerActivity.placeTelecomCallRunnable", "upload timed out.");
-        placeTelecomCall();
-      };
-  // Counter for the number of message sent updates received from EnrichedCallManager
-  private int messageSentCounter;
-  private boolean pendingCallStarted;
-
-  private DialerContact contact;
-  private Long sessionId = Session.NO_SESSION_ID;
-
-  private TextView nameView;
-  private BidiTextView numberView;
-  private QuickContactBadge contactPhoto;
-  private RelativeLayout contactContainer;
-  private DialerToolbar toolbar;
-  private View sendAndCall;
-  private TextView sendAndCallText;
-
-  private ProgressBar loading;
-  private ImageView cameraIcon;
-  private ImageView galleryIcon;
-  private ImageView messageIcon;
-  private LockableViewPager pager;
-  private CallComposerPagerAdapter adapter;
-
-  private FrameLayout background;
-  private LinearLayout windowContainer;
-
-  private DialerExecutor<Uri> copyAndResizeExecutor;
-  private FastOutSlowInInterpolator interpolator;
-  private boolean shouldAnimateEntrance = true;
-  private boolean inFullscreenMode;
-  private boolean isSendAndCallHidingOrHidden = true;
-  private boolean sendAndCallReady;
-  private boolean runningExitAnimation;
-  private int currentIndex;
-
-  public static Intent newIntent(Context context, DialerContact contact) {
-    Intent intent = new Intent(context, CallComposerActivity.class);
-    ProtoParsers.put(intent, ARG_CALL_COMPOSER_CONTACT, contact);
-    return intent;
-  }
-
-  @Override
-  protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.call_composer_activity);
-
-    nameView = findViewById(R.id.contact_name);
-    numberView = findViewById(R.id.phone_number);
-    contactPhoto = findViewById(R.id.contact_photo);
-    cameraIcon = findViewById(R.id.call_composer_camera);
-    galleryIcon = findViewById(R.id.call_composer_photo);
-    messageIcon = findViewById(R.id.call_composer_message);
-    contactContainer = findViewById(R.id.contact_bar);
-    pager = findViewById(R.id.call_composer_view_pager);
-    background = findViewById(R.id.background);
-    windowContainer = findViewById(R.id.call_composer_container);
-    toolbar = findViewById(R.id.toolbar);
-    sendAndCall = findViewById(R.id.send_and_call_button);
-    sendAndCallText = findViewById(R.id.send_and_call_text);
-    loading = findViewById(R.id.call_composer_loading);
-
-    interpolator = new FastOutSlowInInterpolator();
-    adapter =
-        new CallComposerPagerAdapter(
-            getSupportFragmentManager(),
-            getResources().getInteger(R.integer.call_composer_message_limit));
-    pager.setAdapter(adapter);
-    pager.addOnPageChangeListener(this);
-
-    cameraIcon.setOnClickListener(this);
-    galleryIcon.setOnClickListener(this);
-    messageIcon.setOnClickListener(this);
-    sendAndCall.setOnClickListener(this);
-
-    onHandleIntent(getIntent());
-
-    if (savedInstanceState != null) {
-      shouldAnimateEntrance = savedInstanceState.getBoolean(ENTRANCE_ANIMATION_KEY);
-      sendAndCallReady = savedInstanceState.getBoolean(SEND_AND_CALL_READY_KEY);
-      pager.onRestoreInstanceState(savedInstanceState.getParcelable(VIEW_PAGER_STATE_KEY));
-      currentIndex = savedInstanceState.getInt(CURRENT_INDEX_KEY);
-      sessionId = savedInstanceState.getLong(SESSION_ID_KEY, Session.NO_SESSION_ID);
-      onPageSelected(currentIndex);
-    }
-
-    // Since we can't animate the views until they are ready to be drawn, we use this listener to
-    // track that and animate the call compose UI as soon as it's ready.
-    ViewUtil.doOnPreDraw(
-        windowContainer,
-        false,
-        () -> {
-          showFullscreen(inFullscreenMode);
-          runEntranceAnimation();
-        });
-
-    setMediaIconSelected(currentIndex);
-
-    copyAndResizeExecutor =
-        DialerExecutorComponent.get(getApplicationContext())
-            .dialerExecutorFactory()
-            .createUiTaskBuilder(
-                getFragmentManager(),
-                "copyAndResizeImageToSend",
-                new CopyAndResizeImageWorker(this.getApplicationContext()))
-            .onSuccess(this::onCopyAndResizeImageSuccess)
-            .onFailure(this::onCopyAndResizeImageFailure)
-            .build();
-  }
-
-  private void onCopyAndResizeImageSuccess(Pair<File, String> output) {
-    Uri shareableUri =
-        FileProvider.getUriForFile(
-            CallComposerActivity.this, Constants.get().getFileProviderAuthority(), output.first);
-
-    placeRCSCall(
-        MultimediaData.builder().setImage(grantUriPermission(shareableUri), output.second));
-  }
-
-  private void onCopyAndResizeImageFailure(Throwable throwable) {
-    // TODO(a bug) - gracefully handle message failure
-    LogUtil.e("CallComposerActivity.onCopyAndResizeImageFailure", "copy Failed", throwable);
-  }
-
-  @Override
-  protected void onResume() {
-    super.onResume();
-    getEnrichedCallManager().registerStateChangedListener(this);
-    if (pendingCallStarted) {
-      // User went into incall ui and pressed disconnect before the image was done uploading.
-      // Kill the activity and cancel the telecom call.
-      timeoutHandler.removeCallbacks(placeTelecomCallRunnable);
-      setResult(RESULT_OK);
-      finish();
-    } else if (sessionId == Session.NO_SESSION_ID) {
-      LogUtil.i("CallComposerActivity.onResume", "creating new session");
-      sessionId = getEnrichedCallManager().startCallComposerSession(contact.getNumber());
-    } else if (getEnrichedCallManager().getSession(sessionId) == null) {
-      LogUtil.i(
-          "CallComposerActivity.onResume", "session closed while activity paused, creating new");
-      sessionId = getEnrichedCallManager().startCallComposerSession(contact.getNumber());
-    } else {
-      LogUtil.i("CallComposerActivity.onResume", "session still open, using old");
-    }
-    if (sessionId == Session.NO_SESSION_ID) {
-      LogUtil.w("CallComposerActivity.onResume", "failed to create call composer session");
-      setFailedResultAndFinish();
-    }
-    refreshUiForCallComposerState();
-  }
-
-  @Override
-  protected void onDestroy() {
-    super.onDestroy();
-    getEnrichedCallManager().unregisterStateChangedListener(this);
-    timeoutHandler.removeCallbacksAndMessages(null);
-  }
-
-  /**
-   * This listener is registered in onResume and removed in onDestroy, meaning that calls to this
-   * method can come after onStop and updates to UI could cause crashes.
-   */
-  @Override
-  public void onEnrichedCallStateChanged() {
-    refreshUiForCallComposerState();
-  }
-
-  private void refreshUiForCallComposerState() {
-    Session session = getEnrichedCallManager().getSession(sessionId);
-    if (session == null) {
-      return;
-    }
-
-    @State int state = session.getState();
-    LogUtil.i(
-        "CallComposerActivity.refreshUiForCallComposerState",
-        "state: %s",
-        StateExtension.toString(state));
-
-    switch (state) {
-      case Session.STATE_STARTING:
-        timeoutHandler.postDelayed(sessionStartedTimedOut, getSessionStartedTimeoutMillis());
-        if (sendAndCallReady) {
-          showLoadingUi();
-        }
-        break;
-      case Session.STATE_STARTED:
-        timeoutHandler.removeCallbacks(sessionStartedTimedOut);
-        if (sendAndCallReady) {
-          sendAndCall();
-        }
-        break;
-      case Session.STATE_START_FAILED:
-      case Session.STATE_CLOSED:
-        if (pendingCallStarted) {
-          placeTelecomCall();
-        } else {
-          setFailedResultAndFinish();
-        }
-        break;
-      case Session.STATE_MESSAGE_SENT:
-        if (++messageSentCounter == 3) {
-          // When we compose EC with images, there are 3 steps:
-          //  1. Message sent with no data
-          //  2. Image uploaded
-          //  3. url sent
-          // Once we receive 3 message sent updates, we know that we can proceed with the call.
-          timeoutHandler.removeCallbacks(placeTelecomCallRunnable);
-          placeTelecomCall();
-        }
-        break;
-      case Session.STATE_MESSAGE_FAILED:
-      case Session.STATE_NONE:
-      default:
-        break;
-    }
-  }
-
-  @VisibleForTesting
-  public long getSessionStartedTimeoutMillis() {
-    return ConfigProviderComponent.get(this)
-        .getConfigProvider()
-        .getLong("ec_session_started_timeout", 10_000);
-  }
-
-  @Override
-  protected void onNewIntent(Intent intent) {
-    super.onNewIntent(intent);
-    onHandleIntent(intent);
-  }
-
-  @Override
-  public void onClick(View view) {
-    LogUtil.enterBlock("CallComposerActivity.onClick");
-    if (view == cameraIcon) {
-      pager.setCurrentItem(CallComposerPagerAdapter.INDEX_CAMERA, true /* animate */);
-    } else if (view == galleryIcon) {
-      pager.setCurrentItem(CallComposerPagerAdapter.INDEX_GALLERY, true /* animate */);
-    } else if (view == messageIcon) {
-      pager.setCurrentItem(CallComposerPagerAdapter.INDEX_MESSAGE, true /* animate */);
-    } else if (view == sendAndCall) {
-      sendAndCall();
-    } else {
-      throw Assert.createIllegalStateFailException("View on click not implemented: " + view);
-    }
-  }
-
-  @Override
-  public void sendAndCall() {
-    if (!sessionReady()) {
-      sendAndCallReady = true;
-      showLoadingUi();
-      LogUtil.i("CallComposerActivity.onClick", "sendAndCall pressed, but the session isn't ready");
-      Logger.get(this)
-          .logImpression(
-              DialerImpression.Type
-                  .CALL_COMPOSER_ACTIVITY_SEND_AND_CALL_PRESSED_WHEN_SESSION_NOT_READY);
-      return;
-    }
-    sendAndCall.setEnabled(false);
-    CallComposerFragment fragment =
-        (CallComposerFragment) adapter.instantiateItem(pager, currentIndex);
-    MultimediaData.Builder builder = MultimediaData.builder();
-
-    if (fragment instanceof MessageComposerFragment) {
-      MessageComposerFragment messageComposerFragment = (MessageComposerFragment) fragment;
-      builder.setText(messageComposerFragment.getMessage());
-      placeRCSCall(builder);
-    }
-    if (fragment instanceof GalleryComposerFragment) {
-      GalleryComposerFragment galleryComposerFragment = (GalleryComposerFragment) fragment;
-      // If the current data is not a copy, make one.
-      if (!galleryComposerFragment.selectedDataIsCopy()) {
-        copyAndResizeExecutor.executeParallel(
-            galleryComposerFragment.getGalleryData().getFileUri());
-      } else {
-        Uri shareableUri =
-            FileProvider.getUriForFile(
-                this,
-                Constants.get().getFileProviderAuthority(),
-                new File(galleryComposerFragment.getGalleryData().getFilePath()));
-
-        builder.setImage(
-            grantUriPermission(shareableUri),
-            galleryComposerFragment.getGalleryData().getMimeType());
-
-        placeRCSCall(builder);
-      }
-    }
-    if (fragment instanceof CameraComposerFragment) {
-      CameraComposerFragment cameraComposerFragment = (CameraComposerFragment) fragment;
-      cameraComposerFragment.getCameraUriWhenReady(
-          uri -> {
-            builder.setImage(grantUriPermission(uri), cameraComposerFragment.getMimeType());
-            placeRCSCall(builder);
-          });
-    }
-  }
-
-  private void showLoadingUi() {
-    loading.setVisibility(View.VISIBLE);
-    pager.setSwipingLocked(true);
-  }
-
-  private boolean sessionReady() {
-    Session session = getEnrichedCallManager().getSession(sessionId);
-    return session != null && session.getState() == Session.STATE_STARTED;
-  }
-
-  @VisibleForTesting
-  public void placeRCSCall(MultimediaData.Builder builder) {
-    MultimediaData data = builder.build();
-    LogUtil.i("CallComposerActivity.placeRCSCall", "placing enriched call, data: " + data);
-    Logger.get(this).logImpression(DialerImpression.Type.CALL_COMPOSER_ACTIVITY_PLACE_RCS_CALL);
-
-    getEnrichedCallManager().sendCallComposerData(sessionId, data);
-    maybeShowPrivacyToast(data);
-    if (data.hasImageData()
-        && ConfigProviderComponent.get(this)
-            .getConfigProvider()
-            .getBoolean("enable_delayed_ec_images", true)
-        && !TelecomUtil.isInManagedCall(this)) {
-      timeoutHandler.postDelayed(placeTelecomCallRunnable, getRCSTimeoutMillis());
-      startActivity(
-          CallPendingActivity.getIntent(
-              this,
-              contact.getNameOrNumber(),
-              contact.getDisplayNumber(),
-              contact.getNumberLabel(),
-              UriUtils.getLookupKeyFromUri(Uri.parse(contact.getContactUri())),
-              getString(R.string.call_composer_image_uploading),
-              Uri.parse(contact.getPhotoUri()),
-              sessionId));
-      pendingCallStarted = true;
-    } else {
-      placeTelecomCall();
-    }
-  }
-
-  private void maybeShowPrivacyToast(MultimediaData data) {
-    SharedPreferences preferences = StorageComponent.get(this).unencryptedSharedPrefs();
-    // Show a toast for privacy purposes if this is the first time a user uses call composer.
-    if (preferences.getBoolean(KEY_IS_FIRST_CALL_COMPOSE, true)) {
-      int privacyMessage =
-          data.hasImageData() ? R.string.image_sent_messages : R.string.message_sent_messages;
-      Toast toast = Toast.makeText(this, privacyMessage, Toast.LENGTH_LONG);
-      int yOffset = getResources().getDimensionPixelOffset(R.dimen.privacy_toast_y_offset);
-      toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM, 0, yOffset);
-      toast.show();
-      preferences.edit().putBoolean(KEY_IS_FIRST_CALL_COMPOSE, false).apply();
-    }
-  }
-
-  @VisibleForTesting
-  public long getRCSTimeoutMillis() {
-    return ConfigProviderComponent.get(this)
-        .getConfigProvider()
-        .getLong("ec_image_upload_timeout", 15_000);
-  }
-
-  private void placeTelecomCall() {
-    PreCall.start(
-        this,
-        new CallIntentBuilder(contact.getNumber(), CallInitiationType.Type.CALL_COMPOSER)
-            // Call composer is only active if the number is associated with a known contact.
-            .setAllowAssistedDial(true));
-    setResult(RESULT_OK);
-    finish();
-  }
-
-  /** Give permission to Messenger to view our image for RCS purposes. */
-  private Uri grantUriPermission(Uri uri) {
-    // TODO(sail): Move this to the enriched call manager.
-    grantUriPermission(
-        "com.google.android.apps.messaging", uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
-    return uri;
-  }
-
-  /** Animates {@code contactContainer} to align with content inside viewpager. */
-  @Override
-  public void onPageSelected(int position) {
-    if (position == CallComposerPagerAdapter.INDEX_MESSAGE) {
-      sendAndCallText.setText(R.string.send_and_call);
-    } else {
-      sendAndCallText.setText(R.string.share_and_call);
-    }
-    if (currentIndex == CallComposerPagerAdapter.INDEX_MESSAGE) {
-      UiUtil.hideKeyboardFrom(this, windowContainer);
-    }
-    currentIndex = position;
-    CallComposerFragment fragment = (CallComposerFragment) adapter.instantiateItem(pager, position);
-    animateSendAndCall(fragment.shouldHide());
-    setMediaIconSelected(position);
-  }
-
-  @Override
-  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
-
-  @Override
-  public void onPageScrollStateChanged(int state) {}
-
-  @Override
-  protected void onSaveInstanceState(Bundle outState) {
-    super.onSaveInstanceState(outState);
-    outState.putParcelable(VIEW_PAGER_STATE_KEY, pager.onSaveInstanceState());
-    outState.putBoolean(ENTRANCE_ANIMATION_KEY, shouldAnimateEntrance);
-    outState.putBoolean(SEND_AND_CALL_READY_KEY, sendAndCallReady);
-    outState.putInt(CURRENT_INDEX_KEY, currentIndex);
-    outState.putLong(SESSION_ID_KEY, sessionId);
-  }
-
-  @Override
-  public void onBackPressed() {
-    LogUtil.enterBlock("CallComposerActivity.onBackPressed");
-    if (!isSendAndCallHidingOrHidden) {
-      ((CallComposerFragment) adapter.instantiateItem(pager, currentIndex)).clearComposer();
-    } else if (!runningExitAnimation) {
-      // Unregister first to avoid receiving a callback when the session closes
-      getEnrichedCallManager().unregisterStateChangedListener(this);
-
-      // If the user presses the back button when the session fails, there's a race condition here
-      // since we clean up failed sessions.
-      if (getEnrichedCallManager().getSession(sessionId) != null) {
-        getEnrichedCallManager().endCallComposerSession(sessionId);
-      }
-      runExitAnimation();
-    }
-  }
-
-  @Override
-  public void composeCall(CallComposerFragment fragment) {
-    // Since our ViewPager restores state to our fragments, it's possible that they could call
-    // #composeCall, so we have to check if the calling fragment is the current fragment.
-    if (adapter.instantiateItem(pager, currentIndex) != fragment) {
-      return;
-    }
-    animateSendAndCall(fragment.shouldHide());
-  }
-
-  /**
-   * Reads arguments from the fragment arguments and populates the necessary instance variables.
-   * Copied from {@link com.android.contacts.common.dialog.CallSubjectDialog}.
-   */
-  private void onHandleIntent(Intent intent) {
-    if (intent.getExtras().containsKey(ARG_CALL_COMPOSER_CONTACT_BASE64)) {
-      // Invoked from launch_call_composer.py. The proto is provided as a base64 encoded string.
-      byte[] bytes =
-          Base64.decode(intent.getStringExtra(ARG_CALL_COMPOSER_CONTACT_BASE64), Base64.DEFAULT);
-      try {
-        contact = DialerContact.parseFrom(bytes);
-      } catch (InvalidProtocolBufferException e) {
-        throw Assert.createAssertionFailException(e.toString());
-      }
-    } else {
-      contact =
-          ProtoParsers.getTrusted(
-              intent, ARG_CALL_COMPOSER_CONTACT, DialerContact.getDefaultInstance());
-    }
-    updateContactInfo();
-  }
-
-  @Override
-  public boolean isLandscapeLayout() {
-    return getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
-  }
-
-  /** Populates the contact info fields based on the current contact information. */
-  private void updateContactInfo() {
-    ContactPhotoManager.getInstance(this)
-        .loadDialerThumbnailOrPhoto(
-            contactPhoto,
-            contact.hasContactUri() ? Uri.parse(contact.getContactUri()) : null,
-            contact.getPhotoId(),
-            contact.hasPhotoUri() ? Uri.parse(contact.getPhotoUri()) : null,
-            contact.getNameOrNumber(),
-            contact.getContactType());
-
-    nameView.setText(contact.getNameOrNumber());
-    toolbar.setTitle(contact.getNameOrNumber());
-    if (!TextUtils.isEmpty(contact.getDisplayNumber())) {
-      numberView.setVisibility(View.VISIBLE);
-      String secondaryInfo =
-          TextUtils.isEmpty(contact.getNumberLabel())
-              ? contact.getDisplayNumber()
-              : getString(
-                  com.android.dialer.contacts.resources.R.string.call_subject_type_and_number,
-                  contact.getNumberLabel(),
-                  contact.getDisplayNumber());
-      numberView.setText(secondaryInfo);
-      toolbar.setSubtitle(secondaryInfo);
-    } else {
-      numberView.setVisibility(View.GONE);
-      numberView.setText(null);
-    }
-  }
-
-  /** Animates compose UI into view */
-  private void runEntranceAnimation() {
-    if (!shouldAnimateEntrance) {
-      return;
-    }
-    shouldAnimateEntrance = false;
-
-    int value = isLandscapeLayout() ? windowContainer.getWidth() : windowContainer.getHeight();
-    ValueAnimator contentAnimation = ValueAnimator.ofFloat(value, 0);
-    contentAnimation.setInterpolator(interpolator);
-    contentAnimation.setDuration(ENTRANCE_ANIMATION_DURATION_MILLIS);
-    contentAnimation.addUpdateListener(
-        animation -> {
-          if (isLandscapeLayout()) {
-            windowContainer.setX((Float) animation.getAnimatedValue());
-          } else {
-            windowContainer.setY((Float) animation.getAnimatedValue());
-          }
-        });
-
-    if (!isLandscapeLayout()) {
-      int colorFrom = ContextCompat.getColor(this, android.R.color.transparent);
-      int colorTo = ContextCompat.getColor(this, R.color.call_composer_background_color);
-      ValueAnimator backgroundAnimation =
-          ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo);
-      backgroundAnimation.setInterpolator(interpolator);
-      backgroundAnimation.setDuration(ENTRANCE_ANIMATION_DURATION_MILLIS); // milliseconds
-      backgroundAnimation.addUpdateListener(
-          animator -> background.setBackgroundColor((int) animator.getAnimatedValue()));
-
-      AnimatorSet set = new AnimatorSet();
-      set.play(contentAnimation).with(backgroundAnimation);
-      set.start();
-    } else {
-      contentAnimation.start();
-    }
-  }
-
-  /** Animates compose UI out of view and ends the activity. */
-  private void runExitAnimation() {
-    int value = isLandscapeLayout() ? windowContainer.getWidth() : windowContainer.getHeight();
-    ValueAnimator contentAnimation = ValueAnimator.ofFloat(0, value);
-    contentAnimation.setInterpolator(interpolator);
-    contentAnimation.setDuration(EXIT_ANIMATION_DURATION_MILLIS);
-    contentAnimation.addUpdateListener(
-        animation -> {
-          if (isLandscapeLayout()) {
-            windowContainer.setX((Float) animation.getAnimatedValue());
-          } else {
-            windowContainer.setY((Float) animation.getAnimatedValue());
-          }
-          if (animation.getAnimatedFraction() > .95) {
-            finish();
-          }
-        });
-
-    if (!isLandscapeLayout()) {
-      int colorTo = ContextCompat.getColor(this, android.R.color.transparent);
-      int colorFrom = ContextCompat.getColor(this, R.color.call_composer_background_color);
-      ValueAnimator backgroundAnimation =
-          ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo);
-      backgroundAnimation.setInterpolator(interpolator);
-      backgroundAnimation.setDuration(EXIT_ANIMATION_DURATION_MILLIS);
-      backgroundAnimation.addUpdateListener(
-          animator -> background.setBackgroundColor((int) animator.getAnimatedValue()));
-
-      AnimatorSet set = new AnimatorSet();
-      set.play(contentAnimation).with(backgroundAnimation);
-      set.start();
-    } else {
-      contentAnimation.start();
-    }
-    runningExitAnimation = true;
-  }
-
-  @Override
-  public void showFullscreen(boolean fullscreen) {
-    inFullscreenMode = fullscreen;
-    ViewGroup.LayoutParams layoutParams = pager.getLayoutParams();
-    if (isLandscapeLayout()) {
-      layoutParams.height = background.getHeight();
-      toolbar.setVisibility(View.INVISIBLE);
-      contactContainer.setVisibility(View.GONE);
-    } else if (fullscreen || getResources().getBoolean(R.bool.show_toolbar)) {
-      layoutParams.height = background.getHeight() - toolbar.getHeight();
-      toolbar.setVisibility(View.VISIBLE);
-      contactContainer.setVisibility(View.GONE);
-    } else {
-      layoutParams.height =
-          getResources().getDimensionPixelSize(R.dimen.call_composer_view_pager_height);
-      toolbar.setVisibility(View.INVISIBLE);
-      contactContainer.setVisibility(View.VISIBLE);
-    }
-    pager.setLayoutParams(layoutParams);
-  }
-
-  @Override
-  public boolean isFullscreen() {
-    return inFullscreenMode;
-  }
-
-  private void animateSendAndCall(final boolean shouldHide) {
-    // createCircularReveal doesn't respect animations being disabled, handle it here.
-    if (ViewUtil.areAnimationsDisabled(this)) {
-      isSendAndCallHidingOrHidden = shouldHide;
-      sendAndCall.setVisibility(shouldHide ? View.INVISIBLE : View.VISIBLE);
-      return;
-    }
-
-    // If the animation is changing directions, start it again. Else do nothing.
-    if (isSendAndCallHidingOrHidden != shouldHide) {
-      int centerX = sendAndCall.getWidth() / 2;
-      int centerY = sendAndCall.getHeight() / 2;
-      int startRadius = shouldHide ? centerX : 0;
-      int endRadius = shouldHide ? 0 : centerX;
-
-      // When the device rotates and state is restored, the send and call button may not be attached
-      // yet and this causes a crash when we attempt to to reveal it. To prevent this, we wait until
-      // {@code sendAndCall} is ready, then animate and reveal it.
-      ViewUtil.doOnPreDraw(
-          sendAndCall,
-          true,
-          () -> {
-            Animator animator =
-                ViewAnimationUtils.createCircularReveal(
-                    sendAndCall, centerX, centerY, startRadius, endRadius);
-            animator.addListener(
-                new AnimatorListener() {
-                  @Override
-                  public void onAnimationStart(Animator animation) {
-                    isSendAndCallHidingOrHidden = shouldHide;
-                    sendAndCall.setVisibility(View.VISIBLE);
-                    cameraIcon.setVisibility(View.VISIBLE);
-                    galleryIcon.setVisibility(View.VISIBLE);
-                    messageIcon.setVisibility(View.VISIBLE);
-                  }
-
-                  @Override
-                  public void onAnimationEnd(Animator animation) {
-                    if (isSendAndCallHidingOrHidden) {
-                      sendAndCall.setVisibility(View.INVISIBLE);
-                    } else {
-                      // hide buttons to prevent overdrawing and talkback discoverability
-                      cameraIcon.setVisibility(View.GONE);
-                      galleryIcon.setVisibility(View.GONE);
-                      messageIcon.setVisibility(View.GONE);
-                    }
-                  }
-
-                  @Override
-                  public void onAnimationCancel(Animator animation) {}
-
-                  @Override
-                  public void onAnimationRepeat(Animator animation) {}
-                });
-            animator.start();
-          });
-    }
-  }
-
-  private void setMediaIconSelected(int position) {
-    float alpha = 0.7f;
-    cameraIcon.setAlpha(position == CallComposerPagerAdapter.INDEX_CAMERA ? 1 : alpha);
-    galleryIcon.setAlpha(position == CallComposerPagerAdapter.INDEX_GALLERY ? 1 : alpha);
-    messageIcon.setAlpha(position == CallComposerPagerAdapter.INDEX_MESSAGE ? 1 : alpha);
-  }
-
-  private void setFailedResultAndFinish() {
-    setResult(
-        RESULT_FIRST_USER, new Intent().putExtra(KEY_CONTACT_NAME, contact.getNameOrNumber()));
-    finish();
-  }
-
-  @NonNull
-  private EnrichedCallManager getEnrichedCallManager() {
-    return EnrichedCallComponent.get(this).getEnrichedCallManager();
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/CallComposerFragment.java b/java/com/android/dialer/callcomposer/CallComposerFragment.java
deleted file mode 100644
index b606571..0000000
--- a/java/com/android/dialer/callcomposer/CallComposerFragment.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer;
-
-import android.content.Context;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.FragmentUtils;
-import com.android.dialer.common.LogUtil;
-
-/** Base fragment with fields and methods needed for all fragments in the call compose UI. */
-public abstract class CallComposerFragment extends Fragment {
-
-  protected static final int CAMERA_PERMISSION = 1;
-  protected static final int STORAGE_PERMISSION = 2;
-
-  @Override
-  public void onAttach(Context context) {
-    super.onAttach(context);
-    if (FragmentUtils.getParent(this, CallComposerListener.class) == null) {
-      LogUtil.e(
-          "CallComposerFragment.onAttach",
-          "Container activity must implement CallComposerListener.");
-      Assert.fail();
-    }
-  }
-
-  @Nullable
-  public CallComposerListener getListener() {
-    return FragmentUtils.getParent(this, CallComposerListener.class);
-  }
-
-  public abstract boolean shouldHide();
-
-  public abstract void clearComposer();
-
-  /** Interface used to listen to CallComposeFragments */
-  public interface CallComposerListener {
-    /** Let the listener know when a call is ready to be composed. */
-    void composeCall(CallComposerFragment fragment);
-
-    /** Let the listener know when the layout has changed to full screen */
-    void showFullscreen(boolean show);
-
-    /** True is the listener is in fullscreen. */
-    boolean isFullscreen();
-
-    /** True if the layout is in landscape mode. */
-    boolean isLandscapeLayout();
-
-    /** Tell the listener that call composition is done and we should start the call. */
-    void sendAndCall();
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/CallComposerPagerAdapter.java b/java/com/android/dialer/callcomposer/CallComposerPagerAdapter.java
deleted file mode 100644
index edf980e..0000000
--- a/java/com/android/dialer/callcomposer/CallComposerPagerAdapter.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer;
-
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-import com.android.dialer.common.Assert;
-
-/** ViewPager adapter for call compose UI. */
-public class CallComposerPagerAdapter extends FragmentPagerAdapter {
-
-  public static final int INDEX_CAMERA = 0;
-  public static final int INDEX_GALLERY = 1;
-  public static final int INDEX_MESSAGE = 2;
-
-  private final int messageComposerCharLimit;
-
-  public CallComposerPagerAdapter(FragmentManager fragmentManager, int messageComposerCharLimit) {
-    super(fragmentManager);
-    this.messageComposerCharLimit = messageComposerCharLimit;
-  }
-
-  @Override
-  public Fragment getItem(int position) {
-    switch (position) {
-      case INDEX_MESSAGE:
-        return MessageComposerFragment.newInstance(messageComposerCharLimit);
-      case INDEX_GALLERY:
-        return GalleryComposerFragment.newInstance();
-      case INDEX_CAMERA:
-        return new CameraComposerFragment();
-      default:
-        Assert.fail();
-        return null;
-    }
-  }
-
-  @Override
-  public int getCount() {
-    return 3;
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/CameraComposerFragment.java b/java/com/android/dialer/callcomposer/CameraComposerFragment.java
deleted file mode 100644
index 4881220..0000000
--- a/java/com/android/dialer/callcomposer/CameraComposerFragment.java
+++ /dev/null
@@ -1,420 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer;
-
-import android.Manifest;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.graphics.drawable.Animatable;
-import android.hardware.Camera.CameraInfo;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.view.animation.AlphaAnimation;
-import android.view.animation.Animation;
-import android.view.animation.AnimationSet;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-import android.widget.Toast;
-import com.android.dialer.callcomposer.camera.CameraManager;
-import com.android.dialer.callcomposer.camera.CameraManager.CameraManagerListener;
-import com.android.dialer.callcomposer.camera.CameraManager.MediaCallback;
-import com.android.dialer.callcomposer.camera.CameraPreview.CameraPreviewHost;
-import com.android.dialer.callcomposer.camera.camerafocus.RenderOverlay;
-import com.android.dialer.callcomposer.cameraui.CameraMediaChooserView;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.theme.base.ThemeComponent;
-import com.android.dialer.util.PermissionsUtil;
-
-/** Fragment used to compose call with image from the user's camera. */
-public class CameraComposerFragment extends CallComposerFragment
-    implements CameraManagerListener, OnClickListener, CameraManager.MediaCallback {
-
-  private static final String CAMERA_DIRECTION_KEY = "camera_direction";
-  private static final String CAMERA_URI_KEY = "camera_key";
-
-  private View permissionView;
-  private ImageButton exitFullscreen;
-  private ImageButton fullscreen;
-  private ImageButton swapCamera;
-  private ImageButton capture;
-  private ImageButton cancel;
-  private CameraMediaChooserView cameraView;
-  private RenderOverlay focus;
-  private View shutter;
-  private View allowPermission;
-  private CameraPreviewHost preview;
-  private ProgressBar loading;
-  private ImageView previewImageView;
-
-  private Uri cameraUri;
-  private boolean processingUri;
-  private String[] permissions = new String[] {Manifest.permission.CAMERA};
-  private CameraUriCallback uriCallback;
-  private int cameraDirection = CameraInfo.CAMERA_FACING_BACK;
-
-  public static CameraComposerFragment newInstance() {
-    return new CameraComposerFragment();
-  }
-
-  @Nullable
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle bundle) {
-    View root = inflater.inflate(R.layout.fragment_camera_composer, container, false);
-    permissionView = root.findViewById(R.id.permission_view);
-    loading = root.findViewById(R.id.loading);
-    cameraView = root.findViewById(R.id.camera_view);
-    shutter = cameraView.findViewById(R.id.camera_shutter_visual);
-    exitFullscreen = cameraView.findViewById(R.id.camera_exit_fullscreen);
-    fullscreen = cameraView.findViewById(R.id.camera_fullscreen);
-    swapCamera = cameraView.findViewById(R.id.swap_camera_button);
-    capture = cameraView.findViewById(R.id.camera_capture_button);
-    cancel = cameraView.findViewById(R.id.camera_cancel_button);
-    focus = cameraView.findViewById(R.id.focus_visual);
-    preview = cameraView.findViewById(R.id.camera_preview);
-    previewImageView = root.findViewById(R.id.preview_image_view);
-
-    exitFullscreen.setOnClickListener(this);
-    fullscreen.setOnClickListener(this);
-    swapCamera.setOnClickListener(this);
-    capture.setOnClickListener(this);
-    cancel.setOnClickListener(this);
-
-
-    if (!PermissionsUtil.hasCameraPermissions(getContext())) {
-      LogUtil.i("CameraComposerFragment.onCreateView", "Permission view shown.");
-      Logger.get(getContext()).logImpression(DialerImpression.Type.CAMERA_PERMISSION_DISPLAYED);
-      ImageView permissionImage = permissionView.findViewById(R.id.permission_icon);
-      TextView permissionText = permissionView.findViewById(R.id.permission_text);
-      allowPermission = permissionView.findViewById(R.id.allow);
-
-      allowPermission.setOnClickListener(this);
-      permissionText.setText(R.string.camera_permission_text);
-      permissionImage.setImageResource(R.drawable.quantum_ic_camera_alt_white_48);
-      permissionImage.setColorFilter(ThemeComponent.get(getContext()).theme().getColorPrimary());
-      permissionView.setVisibility(View.VISIBLE);
-    } else {
-      if (bundle != null) {
-        cameraDirection = bundle.getInt(CAMERA_DIRECTION_KEY);
-        cameraUri = bundle.getParcelable(CAMERA_URI_KEY);
-      }
-      setupCamera();
-    }
-    return root;
-  }
-
-  private void setupCamera() {
-    if (!PermissionsUtil.hasCameraPrivacyToastShown(getContext())) {
-      PermissionsUtil.showCameraPermissionToast(getContext());
-    }
-    CameraManager.get().setListener(this);
-    preview.setShown();
-    CameraManager.get().setRenderOverlay(focus);
-    CameraManager.get().selectCamera(cameraDirection);
-    setCameraUri(cameraUri);
-  }
-
-  @Override
-  public void onCameraError(int errorCode, Exception exception) {
-    LogUtil.e("CameraComposerFragment.onCameraError", "errorCode: ", errorCode, exception);
-  }
-
-  @Override
-  public void onCameraChanged() {
-    updateViewState();
-  }
-
-  @Override
-  public boolean shouldHide() {
-    return !processingUri && cameraUri == null;
-  }
-
-  @Override
-  public void clearComposer() {
-    processingUri = false;
-    setCameraUri(null);
-  }
-
-  @Override
-  public void onClick(View view) {
-    if (view == capture) {
-      float heightPercent = 1;
-      if (!getListener().isFullscreen() && !getListener().isLandscapeLayout()) {
-        heightPercent = Math.min((float) cameraView.getHeight() / preview.getView().getHeight(), 1);
-      }
-
-      showShutterEffect(shutter);
-      processingUri = true;
-      setCameraUri(null);
-      focus.getPieRenderer().clear();
-      CameraManager.get().takePicture(heightPercent, this);
-    } else if (view == swapCamera) {
-      ((Animatable) swapCamera.getDrawable()).start();
-      CameraManager.get().swapCamera();
-      cameraDirection = CameraManager.get().getCameraInfo().facing;
-    } else if (view == cancel) {
-      clearComposer();
-    } else if (view == exitFullscreen) {
-      getListener().showFullscreen(false);
-      fullscreen.setVisibility(View.VISIBLE);
-      exitFullscreen.setVisibility(View.GONE);
-    } else if (view == fullscreen) {
-      getListener().showFullscreen(true);
-      fullscreen.setVisibility(View.GONE);
-      exitFullscreen.setVisibility(View.VISIBLE);
-    } else if (view == allowPermission) {
-      // Checks to see if the user has permanently denied this permission. If this is the first
-      // time seeing this permission or they only pressed deny previously, they will see the
-      // permission request. If they permanently denied the permission, they will be sent to Dialer
-      // settings in order enable the permission.
-      if (PermissionsUtil.isFirstRequest(getContext(), permissions[0])
-          || shouldShowRequestPermissionRationale(permissions[0])) {
-        Logger.get(getContext()).logImpression(DialerImpression.Type.CAMERA_PERMISSION_REQUESTED);
-        LogUtil.i("CameraComposerFragment.onClick", "Camera permission requested.");
-        requestPermissions(permissions, CAMERA_PERMISSION);
-      } else {
-        Logger.get(getContext()).logImpression(DialerImpression.Type.CAMERA_PERMISSION_SETTINGS);
-        LogUtil.i("CameraComposerFragment.onClick", "Settings opened to enable permission.");
-        Intent intent = new Intent(Intent.ACTION_VIEW);
-        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        intent.setData(Uri.parse("package:" + getContext().getPackageName()));
-        startActivity(intent);
-      }
-    }
-  }
-
-  /**
-   * Called by {@link com.android.dialer.callcomposer.camera.ImagePersistTask} when the image is
-   * finished being cropped and stored on the device.
-   */
-  @Override
-  public void onMediaReady(Uri uri, String contentType, int width, int height) {
-    if (processingUri) {
-      processingUri = false;
-      setCameraUri(uri);
-      // If the user needed the URI before it was ready, uriCallback will be set and we should
-      // send the URI to them ASAP.
-      if (uriCallback != null) {
-        uriCallback.uriReady(uri);
-        uriCallback = null;
-      }
-    } else {
-      updateViewState();
-    }
-  }
-
-  /**
-   * Called by {@link com.android.dialer.callcomposer.camera.ImagePersistTask} when the image failed
-   * to crop or be stored on the device.
-   */
-  @Override
-  public void onMediaFailed(Exception exception) {
-    LogUtil.e("CallComposerFragment.onMediaFailed", null, exception);
-    Toast.makeText(getContext(), R.string.camera_media_failure, Toast.LENGTH_LONG).show();
-    setCameraUri(null);
-    processingUri = false;
-    if (uriCallback != null) {
-      loading.setVisibility(View.GONE);
-      uriCallback = null;
-    }
-  }
-
-  /**
-   * Usually called by {@link CameraManager} if the user does something to interrupt the picture
-   * while it's being taken (like switching the camera).
-   */
-  @Override
-  public void onMediaInfo(int what) {
-    if (what == MediaCallback.MEDIA_NO_DATA) {
-      Toast.makeText(getContext(), R.string.camera_media_failure, Toast.LENGTH_LONG).show();
-    }
-    setCameraUri(null);
-    processingUri = false;
-  }
-
-  @Override
-  public void onDestroy() {
-    super.onDestroy();
-    CameraManager.get().setListener(null);
-  }
-
-  private void showShutterEffect(final View shutterVisual) {
-    float maxAlpha = .7f;
-    int animationDurationMillis = 100;
-
-    AnimationSet animation = new AnimationSet(false /* shareInterpolator */);
-    Animation alphaInAnimation = new AlphaAnimation(0.0f, maxAlpha);
-    alphaInAnimation.setDuration(animationDurationMillis);
-    animation.addAnimation(alphaInAnimation);
-
-    Animation alphaOutAnimation = new AlphaAnimation(maxAlpha, 0.0f);
-    alphaOutAnimation.setStartOffset(animationDurationMillis);
-    alphaOutAnimation.setDuration(animationDurationMillis);
-    animation.addAnimation(alphaOutAnimation);
-
-    animation.setAnimationListener(
-        new Animation.AnimationListener() {
-          @Override
-          public void onAnimationStart(Animation animation) {
-            shutterVisual.setVisibility(View.VISIBLE);
-          }
-
-          @Override
-          public void onAnimationEnd(Animation animation) {
-            shutterVisual.setVisibility(View.GONE);
-          }
-
-          @Override
-          public void onAnimationRepeat(Animation animation) {}
-        });
-    shutterVisual.startAnimation(animation);
-  }
-
-  @NonNull
-  public String getMimeType() {
-    return "image/jpeg";
-  }
-
-  private void setCameraUri(Uri uri) {
-    cameraUri = uri;
-    // It's possible that if the user takes a picture and press back very quickly, the activity will
-    // no longer be alive and when the image cropping process completes, so we need to check that
-    // activity is still alive before trying to invoke it.
-    if (getListener() != null) {
-      updateViewState();
-      getListener().composeCall(this);
-    }
-  }
-
-  @Override
-  public void onResume() {
-    super.onResume();
-    if (PermissionsUtil.hasCameraPermissions(getContext())) {
-      permissionView.setVisibility(View.GONE);
-      setupCamera();
-    }
-  }
-
-  /** Updates the state of the buttons and overlays based on the current state of the view */
-  private void updateViewState() {
-    Assert.isNotNull(cameraView);
-    if (isDetached() || getContext() == null) {
-      LogUtil.i(
-          "CameraComposerFragment.updateViewState", "Fragment detached, cannot update view state");
-      return;
-    }
-
-    boolean isCameraAvailable = CameraManager.get().isCameraAvailable();
-    boolean uriReadyOrProcessing = cameraUri != null || processingUri;
-
-    if (cameraUri != null) {
-      previewImageView.setImageURI(cameraUri);
-      previewImageView.setVisibility(View.VISIBLE);
-      previewImageView.setScaleX(cameraDirection == CameraInfo.CAMERA_FACING_FRONT ? -1 : 1);
-    } else {
-      previewImageView.setVisibility(View.GONE);
-    }
-
-    if (cameraDirection == CameraInfo.CAMERA_FACING_FRONT) {
-      swapCamera.setContentDescription(getString(R.string.description_camera_switch_camera_rear));
-    } else {
-      swapCamera.setContentDescription(getString(R.string.description_camera_switch_camera_facing));
-    }
-
-    if (cameraUri == null && isCameraAvailable) {
-      CameraManager.get().resetPreview();
-      cancel.setVisibility(View.GONE);
-    }
-
-    if (!CameraManager.get().hasFrontAndBackCamera()) {
-      swapCamera.setVisibility(View.GONE);
-    } else {
-      swapCamera.setVisibility(uriReadyOrProcessing ? View.GONE : View.VISIBLE);
-    }
-
-    capture.setVisibility(uriReadyOrProcessing ? View.GONE : View.VISIBLE);
-    cancel.setVisibility(uriReadyOrProcessing ? View.VISIBLE : View.GONE);
-
-    if (uriReadyOrProcessing || getListener().isLandscapeLayout()) {
-      fullscreen.setVisibility(View.GONE);
-      exitFullscreen.setVisibility(View.GONE);
-    } else if (getListener().isFullscreen()) {
-      exitFullscreen.setVisibility(View.VISIBLE);
-      fullscreen.setVisibility(View.GONE);
-    } else {
-      exitFullscreen.setVisibility(View.GONE);
-      fullscreen.setVisibility(View.VISIBLE);
-    }
-
-    swapCamera.setEnabled(isCameraAvailable);
-    capture.setEnabled(isCameraAvailable);
-  }
-
-  @Override
-  public void onSaveInstanceState(Bundle outState) {
-    super.onSaveInstanceState(outState);
-    outState.putInt(CAMERA_DIRECTION_KEY, cameraDirection);
-    outState.putParcelable(CAMERA_URI_KEY, cameraUri);
-  }
-
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
-    if (permissions.length > 0 && permissions[0].equals(this.permissions[0])) {
-      PermissionsUtil.permissionRequested(getContext(), permissions[0]);
-    }
-    if (requestCode == CAMERA_PERMISSION
-        && grantResults.length > 0
-        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-      Logger.get(getContext()).logImpression(DialerImpression.Type.CAMERA_PERMISSION_GRANTED);
-      LogUtil.i("CameraComposerFragment.onRequestPermissionsResult", "Permission granted.");
-      permissionView.setVisibility(View.GONE);
-      PermissionsUtil.setCameraPrivacyToastShown(getContext());
-      setupCamera();
-    } else if (requestCode == CAMERA_PERMISSION) {
-      Logger.get(getContext()).logImpression(DialerImpression.Type.CAMERA_PERMISSION_DENIED);
-      LogUtil.i("CameraComposerFragment.onRequestPermissionsResult", "Permission denied.");
-    }
-  }
-
-  public void getCameraUriWhenReady(CameraUriCallback callback) {
-    if (processingUri) {
-      loading.setVisibility(View.VISIBLE);
-      uriCallback = callback;
-    } else {
-      callback.uriReady(cameraUri);
-    }
-  }
-
-  /** Callback to let the caller know when the URI is ready. */
-  public interface CameraUriCallback {
-    void uriReady(Uri uri);
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/CopyAndResizeImageWorker.java b/java/com/android/dialer/callcomposer/CopyAndResizeImageWorker.java
deleted file mode 100644
index 540ef0f..0000000
--- a/java/com/android/dialer/callcomposer/CopyAndResizeImageWorker.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.CompressFormat;
-import android.graphics.BitmapFactory;
-import android.media.ExifInterface;
-import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.util.Pair;
-import com.android.dialer.callcomposer.util.BitmapResizer;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.concurrent.DialerExecutor.Worker;
-import com.android.dialer.util.DialerUtils;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/** Task for copying and resizing images to be shared with RCS process. */
-class CopyAndResizeImageWorker implements Worker<Uri, Pair<File, String>> {
-  private static final String MIME_TYPE = "image/jpeg";
-
-  private final Context context;
-
-  CopyAndResizeImageWorker(@NonNull Context context) {
-    this.context = Assert.isNotNull(context);
-  }
-
-  /**
-   * @param input The filepath where the image is located.
-   * @return a Pair where the File contains the resized image, and the String is the result File's
-   *     MIME type.
-   */
-  @Nullable
-  @Override
-  public Pair<File, String> doInBackground(@Nullable Uri input) throws Throwable {
-    // BitmapFactory.decodeStream strips exif data, so we need to save it here and apply it later.
-    int rotation = 0;
-    try {
-      rotation =
-          new ExifInterface(input.getPath())
-              .getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
-    } catch (Exception ignored) {
-      // Couldn't get exif tags, not the end of the world
-    }
-
-    try (InputStream inputStream = context.getContentResolver().openInputStream(input)) {
-      Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
-      bitmap = BitmapResizer.resizeForEnrichedCalling(bitmap, exifToDegrees(rotation));
-
-      File outputFile = DialerUtils.createShareableFile(context);
-      try (OutputStream outputStream = new FileOutputStream(outputFile)) {
-        // Encode images to jpeg as it is better for camera pictures which we expect to be sending
-        bitmap.compress(CompressFormat.JPEG, 80, outputStream);
-        return new Pair<>(outputFile, MIME_TYPE);
-      }
-    }
-  }
-
-  private static int exifToDegrees(int exifOrientation) {
-    switch (exifOrientation) {
-      case ExifInterface.ORIENTATION_ROTATE_90:
-        return 90;
-      case ExifInterface.ORIENTATION_ROTATE_180:
-        return 180;
-      case ExifInterface.ORIENTATION_ROTATE_270:
-        return 270;
-      default:
-        return 0;
-    }
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/GalleryComposerFragment.java b/java/com/android/dialer/callcomposer/GalleryComposerFragment.java
deleted file mode 100644
index 6265308..0000000
--- a/java/com/android/dialer/callcomposer/GalleryComposerFragment.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer;
-
-import static android.app.Activity.RESULT_OK;
-
-import android.Manifest.permission;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.LoaderManager.LoaderCallbacks;
-import android.support.v4.content.CursorLoader;
-import android.support.v4.content.Loader;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.GridView;
-import android.widget.ImageView;
-import android.widget.TextView;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutor;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.theme.base.ThemeComponent;
-import com.android.dialer.util.PermissionsUtil;
-import java.util.ArrayList;
-import java.util.List;
-
-/** Fragment used to compose call with image from the user's gallery. */
-public class GalleryComposerFragment extends CallComposerFragment
-    implements LoaderCallbacks<Cursor>, OnClickListener {
-
-  private static final String SELECTED_DATA_KEY = "selected_data";
-  private static final String IS_COPY_KEY = "is_copy";
-  private static final String INSERTED_IMAGES_KEY = "inserted_images";
-
-  private static final int RESULT_LOAD_IMAGE = 1;
-  private static final int RESULT_OPEN_SETTINGS = 2;
-
-  private GalleryGridAdapter adapter;
-  private GridView galleryGridView;
-  private View permissionView;
-  private View allowPermission;
-
-  private String[] permissions = new String[] {permission.READ_EXTERNAL_STORAGE};
-  private CursorLoader cursorLoader;
-  private GalleryGridItemData selectedData = null;
-  private boolean selectedDataIsCopy;
-  private List<GalleryGridItemData> insertedImages = new ArrayList<>();
-
-  private DialerExecutor<Uri> copyAndResizeImage;
-
-  public static GalleryComposerFragment newInstance() {
-    return new GalleryComposerFragment();
-  }
-
-  @Nullable
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle bundle) {
-    View view = inflater.inflate(R.layout.fragment_gallery_composer, container, false);
-    galleryGridView = (GridView) view.findViewById(R.id.gallery_grid_view);
-    permissionView = view.findViewById(R.id.permission_view);
-
-    if (!PermissionsUtil.hasPermission(getContext(), permission.READ_EXTERNAL_STORAGE)) {
-      Logger.get(getContext()).logImpression(DialerImpression.Type.STORAGE_PERMISSION_DISPLAYED);
-      LogUtil.i("GalleryComposerFragment.onCreateView", "Permission view shown.");
-      ImageView permissionImage = (ImageView) permissionView.findViewById(R.id.permission_icon);
-      TextView permissionText = (TextView) permissionView.findViewById(R.id.permission_text);
-      allowPermission = permissionView.findViewById(R.id.allow);
-
-      allowPermission.setOnClickListener(this);
-      permissionText.setText(R.string.gallery_permission_text);
-      permissionImage.setImageResource(R.drawable.quantum_ic_photo_white_48);
-      permissionImage.setColorFilter(ThemeComponent.get(getContext()).theme().getColorPrimary());
-      permissionView.setVisibility(View.VISIBLE);
-    } else {
-      if (bundle != null) {
-        selectedData = bundle.getParcelable(SELECTED_DATA_KEY);
-        selectedDataIsCopy = bundle.getBoolean(IS_COPY_KEY);
-        insertedImages = bundle.getParcelableArrayList(INSERTED_IMAGES_KEY);
-      }
-      setupGallery();
-    }
-    return view;
-  }
-
-  @Override
-  public void onActivityCreated(@Nullable Bundle bundle) {
-    super.onActivityCreated(bundle);
-
-    copyAndResizeImage =
-        DialerExecutorComponent.get(getContext())
-            .dialerExecutorFactory()
-            .createUiTaskBuilder(
-                getActivity().getFragmentManager(),
-                "copyAndResizeImage",
-                new CopyAndResizeImageWorker(getActivity().getApplicationContext()))
-            .onSuccess(
-                output -> {
-                  GalleryGridItemData data1 =
-                      adapter.insertEntry(output.first.getAbsolutePath(), output.second);
-                  insertedImages.add(0, data1);
-                  setSelected(data1, true);
-                })
-            .onFailure(
-                throwable -> {
-                  // TODO(a bug) - gracefully handle message failure
-                  LogUtil.e(
-                      "GalleryComposerFragment.onFailure", "data preparation failed", throwable);
-                })
-            .build();
-  }
-
-  private void setupGallery() {
-    adapter = new GalleryGridAdapter(getContext(), null, this);
-    galleryGridView.setAdapter(adapter);
-    getLoaderManager().initLoader(0 /* id */, null /* args */, this /* loaderCallbacks */);
-  }
-
-  @Override
-  public Loader<Cursor> onCreateLoader(int id, Bundle args) {
-    return cursorLoader = new GalleryCursorLoader(getContext());
-  }
-
-  @Override
-  public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
-    adapter.swapCursor(cursor);
-    if (insertedImages != null && !insertedImages.isEmpty()) {
-      adapter.insertEntries(insertedImages);
-    }
-    setSelected(selectedData, selectedDataIsCopy);
-  }
-
-  @Override
-  public void onLoaderReset(Loader<Cursor> loader) {
-    adapter.swapCursor(null);
-  }
-
-  @Override
-  public void onClick(View view) {
-    if (view == allowPermission) {
-      // Checks to see if the user has permanently denied this permission. If this is their first
-      // time seeing this permission or they've only pressed deny previously, they will see the
-      // permission request. If they've permanently denied the permission, they will be sent to
-      // Dialer settings in order to enable the permission.
-      if (PermissionsUtil.isFirstRequest(getContext(), permissions[0])
-          || shouldShowRequestPermissionRationale(permissions[0])) {
-        LogUtil.i("GalleryComposerFragment.onClick", "Storage permission requested.");
-        Logger.get(getContext()).logImpression(DialerImpression.Type.STORAGE_PERMISSION_REQUESTED);
-        requestPermissions(permissions, STORAGE_PERMISSION);
-      } else {
-        LogUtil.i("GalleryComposerFragment.onClick", "Settings opened to enable permission.");
-        Logger.get(getContext()).logImpression(DialerImpression.Type.STORAGE_PERMISSION_SETTINGS);
-        Intent intent = new Intent(Intent.ACTION_VIEW);
-        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
-        intent.setData(Uri.parse("package:" + getContext().getPackageName()));
-        startActivityForResult(intent, RESULT_OPEN_SETTINGS);
-      }
-      return;
-    } else {
-      GalleryGridItemView itemView = ((GalleryGridItemView) view);
-      if (itemView.isGallery()) {
-        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
-        intent.setType("image/*");
-        intent.putExtra(Intent.EXTRA_MIME_TYPES, GalleryCursorLoader.ACCEPTABLE_IMAGE_TYPES);
-        intent.addCategory(Intent.CATEGORY_OPENABLE);
-        startActivityForResult(intent, RESULT_LOAD_IMAGE);
-      } else if (itemView.getData().equals(selectedData)) {
-        clearComposer();
-      } else {
-        setSelected(new GalleryGridItemData(itemView.getData()), false);
-      }
-    }
-  }
-
-  @Nullable
-  public GalleryGridItemData getGalleryData() {
-    return selectedData;
-  }
-
-  public GridView getGalleryGridView() {
-    return galleryGridView;
-  }
-
-  @Override
-  public void onActivityResult(int requestCode, int resultCode, Intent data) {
-    super.onActivityResult(requestCode, resultCode, data);
-    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null) {
-      prepareDataForAttachment(data);
-    } else if (requestCode == RESULT_OPEN_SETTINGS
-        && PermissionsUtil.hasPermission(getContext(), permission.READ_EXTERNAL_STORAGE)) {
-      permissionView.setVisibility(View.GONE);
-      setupGallery();
-    }
-  }
-
-  private void setSelected(GalleryGridItemData data, boolean isCopy) {
-    selectedData = data;
-    selectedDataIsCopy = isCopy;
-    adapter.setSelected(selectedData);
-    CallComposerListener listener = getListener();
-    if (listener != null) {
-      getListener().composeCall(this);
-    }
-  }
-
-  @Override
-  public boolean shouldHide() {
-    return selectedData == null
-        || selectedData.getFilePath() == null
-        || selectedData.getMimeType() == null;
-  }
-
-  @Override
-  public void clearComposer() {
-    setSelected(null, false);
-  }
-
-  @Override
-  public void onSaveInstanceState(Bundle outState) {
-    super.onSaveInstanceState(outState);
-    outState.putParcelable(SELECTED_DATA_KEY, selectedData);
-    outState.putBoolean(IS_COPY_KEY, selectedDataIsCopy);
-    outState.putParcelableArrayList(
-        INSERTED_IMAGES_KEY, (ArrayList<? extends Parcelable>) insertedImages);
-  }
-
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
-    if (permissions.length > 0 && permissions[0].equals(this.permissions[0])) {
-      PermissionsUtil.permissionRequested(getContext(), permissions[0]);
-    }
-    if (requestCode == STORAGE_PERMISSION
-        && grantResults.length > 0
-        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-      Logger.get(getContext()).logImpression(DialerImpression.Type.STORAGE_PERMISSION_GRANTED);
-      LogUtil.i("GalleryComposerFragment.onRequestPermissionsResult", "Permission granted.");
-      permissionView.setVisibility(View.GONE);
-      setupGallery();
-    } else if (requestCode == STORAGE_PERMISSION) {
-      Logger.get(getContext()).logImpression(DialerImpression.Type.STORAGE_PERMISSION_DENIED);
-      LogUtil.i("GalleryComposerFragment.onRequestPermissionsResult", "Permission denied.");
-    }
-  }
-
-  public CursorLoader getCursorLoader() {
-    return cursorLoader;
-  }
-
-  public boolean selectedDataIsCopy() {
-    return selectedDataIsCopy;
-  }
-
-  private void prepareDataForAttachment(Intent data) {
-    // We're using the builtin photo picker which supplies the return url as it's "data".
-    String url = data.getDataString();
-    if (url == null) {
-      final Bundle extras = data.getExtras();
-      if (extras != null) {
-        final Uri uri = extras.getParcelable(Intent.EXTRA_STREAM);
-        if (uri != null) {
-          url = uri.toString();
-        }
-      }
-    }
-
-    // This should never happen, but just in case..
-    // Guard against null uri cases for when the activity returns a null/invalid intent.
-    if (url != null) {
-      copyAndResizeImage.executeParallel(Uri.parse(url));
-    } else {
-      // TODO(a bug) - gracefully handle message failure
-    }
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/GalleryCursorLoader.java b/java/com/android/dialer/callcomposer/GalleryCursorLoader.java
deleted file mode 100644
index d33bfb3..0000000
--- a/java/com/android/dialer/callcomposer/GalleryCursorLoader.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer;
-
-import android.content.Context;
-import android.net.Uri;
-import android.provider.MediaStore.Files;
-import android.provider.MediaStore.Files.FileColumns;
-import android.provider.MediaStore.Images.Media;
-import android.support.v4.content.CursorLoader;
-
-/** A BoundCursorLoader that reads local media on the device. */
-public class GalleryCursorLoader extends CursorLoader {
-  public static final String MEDIA_SCANNER_VOLUME_EXTERNAL = "external";
-  public static final String[] ACCEPTABLE_IMAGE_TYPES =
-      new String[] {"image/jpeg", "image/jpg", "image/png", "image/webp"};
-
-  private static final Uri STORAGE_URI = Files.getContentUri(MEDIA_SCANNER_VOLUME_EXTERNAL);
-  private static final String SORT_ORDER = Media.DATE_MODIFIED + " DESC";
-  private static final String IMAGE_SELECTION = createSelection();
-
-  public GalleryCursorLoader(Context context) {
-    super(
-        context,
-        STORAGE_URI,
-        GalleryGridItemData.IMAGE_PROJECTION,
-        IMAGE_SELECTION,
-        null,
-        SORT_ORDER);
-  }
-
-  private static String createSelection() {
-    return "mime_type IN ('image/jpeg', 'image/jpg', 'image/png', 'image/webp')"
-        + " AND media_type in ("
-        + FileColumns.MEDIA_TYPE_IMAGE
-        + ")";
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/GalleryGridAdapter.java b/java/com/android/dialer/callcomposer/GalleryGridAdapter.java
deleted file mode 100644
index 84257b2..0000000
--- a/java/com/android/dialer/callcomposer/GalleryGridAdapter.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.database.MatrixCursor;
-import android.database.MergeCursor;
-import android.support.annotation.NonNull;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.CursorAdapter;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import java.util.ArrayList;
-import java.util.List;
-
-/** Bridges between the image cursor loaded by GalleryBoundCursorLoader and the GalleryGridView. */
-public class GalleryGridAdapter extends CursorAdapter {
-
-  @NonNull private final OnClickListener onClickListener;
-  @NonNull private final List<GalleryGridItemView> views = new ArrayList<>();
-  @NonNull private final Context context;
-
-  private GalleryGridItemData selectedData;
-
-  public GalleryGridAdapter(
-      @NonNull Context context, Cursor cursor, @NonNull OnClickListener onClickListener) {
-    super(context, cursor, 0);
-    this.onClickListener = Assert.isNotNull(onClickListener);
-    this.context = Assert.isNotNull(context);
-  }
-
-  @Override
-  public int getCount() {
-    // Add one for the header.
-    return super.getCount() + 1;
-  }
-
-  @Override
-  public View getView(int position, View convertView, ViewGroup parent) {
-    // At position 0, we want to insert a header. If position == 0, we don't need the cursor.
-    // If position != 0, then we need to move the cursor to position - 1 to account for the offset
-    // of the header.
-    if (position != 0 && !getCursor().moveToPosition(position - 1)) {
-      Assert.fail("couldn't move cursor to position " + (position - 1));
-    }
-    View view;
-    if (convertView == null) {
-      view = newView(context, getCursor(), parent);
-    } else {
-      view = convertView;
-    }
-    bindView(view, context, getCursor(), position);
-    return view;
-  }
-
-  private void bindView(View view, Context context, Cursor cursor, int position) {
-    if (position == 0) {
-      GalleryGridItemView gridView = (GalleryGridItemView) view;
-      gridView.showGallery(true);
-    } else {
-      bindView(view, context, cursor);
-    }
-  }
-
-  @Override
-  public void bindView(View view, Context context, Cursor cursor) {
-    GalleryGridItemView gridView = (GalleryGridItemView) view;
-    gridView.bind(cursor);
-    gridView.setSelected(gridView.getData().equals(selectedData));
-  }
-
-  @Override
-  public View newView(Context context, Cursor cursor, ViewGroup parent) {
-    GalleryGridItemView view =
-        (GalleryGridItemView)
-            LayoutInflater.from(context).inflate(R.layout.gallery_grid_item_view, parent, false);
-    view.setOnClickListener(onClickListener);
-    views.add(view);
-    return view;
-  }
-
-  public void setSelected(GalleryGridItemData selectedData) {
-    this.selectedData = selectedData;
-    for (GalleryGridItemView view : views) {
-      view.setSelected(view.getData().equals(selectedData));
-    }
-  }
-
-  public void insertEntries(@NonNull List<GalleryGridItemData> entries) {
-    Assert.checkArgument(entries.size() != 0);
-    LogUtil.i("GalleryGridAdapter.insertRows", "inserting %d rows", entries.size());
-    MatrixCursor extraRow = new MatrixCursor(GalleryGridItemData.IMAGE_PROJECTION);
-    for (GalleryGridItemData entry : entries) {
-      extraRow.addRow(new Object[] {0L, entry.getFilePath(), entry.getMimeType(), ""});
-    }
-    extraRow.moveToFirst();
-    Cursor extendedCursor = new MergeCursor(new Cursor[] {extraRow, getCursor()});
-    swapCursor(extendedCursor);
-  }
-
-  public GalleryGridItemData insertEntry(String filePath, String mimeType) {
-    LogUtil.i("GalleryGridAdapter.insertRow", mimeType + " " + filePath);
-
-    MatrixCursor extraRow = new MatrixCursor(GalleryGridItemData.IMAGE_PROJECTION);
-    extraRow.addRow(new Object[] {0L, filePath, mimeType, ""});
-    extraRow.moveToFirst();
-    Cursor extendedCursor = new MergeCursor(new Cursor[] {extraRow, getCursor()});
-    swapCursor(extendedCursor);
-
-    return new GalleryGridItemData(extraRow);
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/GalleryGridItemData.java b/java/com/android/dialer/callcomposer/GalleryGridItemData.java
deleted file mode 100644
index 43db96d..0000000
--- a/java/com/android/dialer/callcomposer/GalleryGridItemData.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer;
-
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.provider.MediaStore.Images.Media;
-import android.support.annotation.Nullable;
-import android.text.TextUtils;
-import com.android.dialer.common.Assert;
-import java.io.File;
-import java.util.Objects;
-
-/** Provides data for GalleryGridItemView */
-public final class GalleryGridItemData implements Parcelable {
-  public static final String[] IMAGE_PROJECTION =
-      new String[] {Media._ID, Media.DATA, Media.MIME_TYPE, Media.DATE_MODIFIED};
-
-  private static final int INDEX_DATA_PATH = 1;
-  private static final int INDEX_MIME_TYPE = 2;
-  private static final int INDEX_DATE_MODIFIED = 3;
-
-  private String filePath;
-  private String mimeType;
-  private long dateModifiedSeconds;
-
-  public GalleryGridItemData() {}
-
-  public GalleryGridItemData(GalleryGridItemData copyData) {
-    filePath = Assert.isNotNull(copyData.getFilePath());
-    mimeType = Assert.isNotNull(copyData.getMimeType());
-    dateModifiedSeconds = Assert.isNotNull(copyData.getDateModifiedSeconds());
-  }
-
-  public GalleryGridItemData(Cursor cursor) {
-    bind(cursor);
-  }
-
-  public void bind(Cursor cursor) {
-    mimeType = Assert.isNotNull(cursor.getString(INDEX_MIME_TYPE));
-    String dateModified = Assert.isNotNull(cursor.getString(INDEX_DATE_MODIFIED));
-    dateModifiedSeconds = !TextUtils.isEmpty(dateModified) ? Long.parseLong(dateModified) : -1;
-    filePath = Assert.isNotNull(cursor.getString(INDEX_DATA_PATH));
-  }
-
-  @Nullable
-  public String getFilePath() {
-    return filePath;
-  }
-
-  @Nullable
-  public Uri getFileUri() {
-    return TextUtils.isEmpty(filePath) ? null : Uri.fromFile(new File(filePath));
-  }
-
-  /** @return The date in seconds. This can be negative if we could not retrieve date info */
-  public long getDateModifiedSeconds() {
-    return dateModifiedSeconds;
-  }
-
-  public String getMimeType() {
-    return mimeType;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    return obj instanceof GalleryGridItemData
-        && Objects.equals(mimeType, ((GalleryGridItemData) obj).mimeType)
-        && Objects.equals(filePath, ((GalleryGridItemData) obj).filePath)
-        && ((GalleryGridItemData) obj).dateModifiedSeconds == dateModifiedSeconds;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(filePath, mimeType, dateModifiedSeconds);
-  }
-
-  @Override
-  public int describeContents() {
-    return 0;
-  }
-
-  @Override
-  public void writeToParcel(Parcel dest, int flags) {
-    dest.writeString(filePath);
-    dest.writeString(mimeType);
-    dest.writeLong(dateModifiedSeconds);
-  }
-
-  public static final Creator<GalleryGridItemData> CREATOR =
-      new Creator<GalleryGridItemData>() {
-        @Override
-        public GalleryGridItemData createFromParcel(Parcel in) {
-          return new GalleryGridItemData(in);
-        }
-
-        @Override
-        public GalleryGridItemData[] newArray(int size) {
-          return new GalleryGridItemData[size];
-        }
-      };
-
-  private GalleryGridItemData(Parcel in) {
-    filePath = in.readString();
-    mimeType = in.readString();
-    dateModifiedSeconds = in.readLong();
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/GalleryGridItemView.java b/java/com/android/dialer/callcomposer/GalleryGridItemView.java
deleted file mode 100644
index d70fd57..0000000
--- a/java/com/android/dialer/callcomposer/GalleryGridItemView.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.ImageView.ScaleType;
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.load.resource.bitmap.DownsampleStrategy;
-import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
-import com.bumptech.glide.request.RequestOptions;
-import java.util.concurrent.TimeUnit;
-
-/** Shows an item in the gallery picker grid view. Hosts an FileImageView with a checkbox. */
-public class GalleryGridItemView extends FrameLayout {
-
-  private final GalleryGridItemData data = new GalleryGridItemData();
-
-  private ImageView image;
-  private View checkbox;
-  private View gallery;
-  private String currentFilePath;
-  private boolean isGallery;
-
-  public GalleryGridItemView(Context context, AttributeSet attrs) {
-    super(context, attrs);
-  }
-
-  @Override
-  protected void onFinishInflate() {
-    super.onFinishInflate();
-    image = (ImageView) findViewById(R.id.image);
-    checkbox = findViewById(R.id.checkbox);
-    gallery = findViewById(R.id.gallery);
-
-    image.setClipToOutline(true);
-    checkbox.setClipToOutline(true);
-    gallery.setClipToOutline(true);
-  }
-
-  @Override
-  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-    // The grid view auto-fit the columns, so we want to let the height match the width
-    // to make the image square.
-    super.onMeasure(widthMeasureSpec, widthMeasureSpec);
-  }
-
-  public GalleryGridItemData getData() {
-    return data;
-  }
-
-  @Override
-  public void setSelected(boolean selected) {
-    if (selected) {
-      checkbox.setVisibility(VISIBLE);
-      int paddingPx = getResources().getDimensionPixelSize(R.dimen.gallery_item_selected_padding);
-      setPadding(paddingPx, paddingPx, paddingPx, paddingPx);
-    } else {
-      checkbox.setVisibility(GONE);
-      int paddingPx = getResources().getDimensionPixelOffset(R.dimen.gallery_item_padding);
-      setPadding(paddingPx, paddingPx, paddingPx, paddingPx);
-    }
-  }
-
-  public boolean isGallery() {
-    return isGallery;
-  }
-
-  public void showGallery(boolean show) {
-    isGallery = show;
-    gallery.setVisibility(show ? VISIBLE : INVISIBLE);
-  }
-
-  public void bind(Cursor cursor) {
-    data.bind(cursor);
-    showGallery(false);
-    updateImageView();
-  }
-
-  private void updateImageView() {
-    image.setScaleType(ScaleType.CENTER_CROP);
-
-    if (currentFilePath == null || !currentFilePath.equals(data.getFilePath())) {
-      currentFilePath = data.getFilePath();
-
-      // Downloads/loads an image from the given URI so that the image's largest dimension is
-      // between 1/2 the given dimensions and the given dimensions, with no restrictions on the
-      // image's smallest dimension. We skip the memory cache, but glide still applies it's disk
-      // cache to optimize loads.
-      Glide.with(getContext())
-          .load(data.getFileUri())
-          .apply(RequestOptions.downsampleOf(DownsampleStrategy.AT_MOST).skipMemoryCache(true))
-          .transition(DrawableTransitionOptions.withCrossFade())
-          .into(image);
-    }
-    long dateModifiedSeconds = data.getDateModifiedSeconds();
-    if (dateModifiedSeconds > 0) {
-      image.setContentDescription(
-          getResources()
-              .getString(
-                  R.string.gallery_item_description,
-                  TimeUnit.SECONDS.toMillis(dateModifiedSeconds)));
-    } else {
-      image.setContentDescription(
-          getResources().getString(R.string.gallery_item_description_no_date));
-    }
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/MessageComposerFragment.java b/java/com/android/dialer/callcomposer/MessageComposerFragment.java
deleted file mode 100644
index 392f6e7..0000000
--- a/java/com/android/dialer/callcomposer/MessageComposerFragment.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.text.Editable;
-import android.text.InputFilter;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.EditText;
-import android.widget.TextView;
-import android.widget.TextView.OnEditorActionListener;
-
-/** Fragment used to compose call with message fragment. */
-public class MessageComposerFragment extends CallComposerFragment
-    implements OnClickListener, TextWatcher, OnEditorActionListener {
-  private static final String CHAR_LIMIT_KEY = "char_limit";
-
-  public static final int NO_CHAR_LIMIT = -1;
-
-  private EditText customMessage;
-  private int charLimit;
-
-  public static MessageComposerFragment newInstance(int charLimit) {
-    MessageComposerFragment fragment = new MessageComposerFragment();
-    Bundle args = new Bundle();
-    args.putInt(CHAR_LIMIT_KEY, charLimit);
-    fragment.setArguments(args);
-    return fragment;
-  }
-
-  @Nullable
-  public String getMessage() {
-    return customMessage == null ? null : customMessage.getText().toString();
-  }
-
-  @Nullable
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-    charLimit = getArguments().getInt(CHAR_LIMIT_KEY, NO_CHAR_LIMIT);
-
-    View view = inflater.inflate(R.layout.fragment_message_composer, container, false);
-    TextView urgent = (TextView) view.findViewById(R.id.message_urgent);
-    customMessage = (EditText) view.findViewById(R.id.custom_message);
-
-    urgent.setOnClickListener(this);
-    customMessage.addTextChangedListener(this);
-    customMessage.setOnEditorActionListener(this);
-    if (charLimit != NO_CHAR_LIMIT) {
-      TextView remainingChar = (TextView) view.findViewById(R.id.remaining_characters);
-      remainingChar.setText("" + charLimit);
-      customMessage.setFilters(new InputFilter[] {new InputFilter.LengthFilter(charLimit)});
-      customMessage.addTextChangedListener(
-          new TextWatcher() {
-            @Override
-
-            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
-
-            @Override
-            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
-
-            @Override
-            public void afterTextChanged(Editable editable) {
-              remainingChar.setText("" + (charLimit - editable.length()));
-            }
-          });
-    }
-    view.findViewById(R.id.message_chat).setOnClickListener(this);
-    view.findViewById(R.id.message_question).setOnClickListener(this);
-    return view;
-  }
-
-  @Override
-  public void onClick(View view) {
-    customMessage.setText(((TextView) view).getText());
-    customMessage.setSelection(customMessage.getText().length());
-  }
-
-  @Override
-  public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
-
-  @Override
-  public void onTextChanged(CharSequence s, int start, int before, int count) {}
-
-  @Override
-  public void afterTextChanged(Editable s) {
-    getListener().composeCall(this);
-  }
-
-  @Override
-  public boolean shouldHide() {
-    return TextUtils.isEmpty(getMessage());
-  }
-
-  @Override
-  public void clearComposer() {
-    customMessage.getText().clear();
-  }
-
-  @Override
-  public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-    if (getMessage() == null) {
-      return false;
-    }
-    getListener().sendAndCall();
-    return true;
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/AndroidManifest.xml b/java/com/android/dialer/callcomposer/camera/AndroidManifest.xml
deleted file mode 100644
index 82f1412..0000000
--- a/java/com/android/dialer/callcomposer/camera/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.callcomposer.camera"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/camera/CameraManager.java b/java/com/android/dialer/callcomposer/camera/CameraManager.java
deleted file mode 100644
index e802cc2..0000000
--- a/java/com/android/dialer/callcomposer/camera/CameraManager.java
+++ /dev/null
@@ -1,862 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera;
-
-import android.content.Context;
-import android.hardware.Camera;
-import android.hardware.Camera.CameraInfo;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Looper;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
-import android.view.MotionEvent;
-import android.view.OrientationEventListener;
-import android.view.Surface;
-import android.view.View;
-import android.view.WindowManager;
-import com.android.dialer.callcomposer.camera.camerafocus.FocusOverlayManager;
-import com.android.dialer.callcomposer.camera.camerafocus.RenderOverlay;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-/**
- * Class which manages interactions with the camera, but does not do any UI. This class is designed
- * to be a singleton to ensure there is one component managing the camera and releasing the native
- * resources. In order to acquire a camera, a caller must:
- *
- * <ul>
- *   <li>Call selectCamera to select front or back camera
- *   <li>Call setSurface to control where the preview is shown
- *   <li>Call openCamera to request the camera start preview
- * </ul>
- *
- * Callers should call onPause and onResume to ensure that the camera is release while the activity
- * is not active. This class is not thread safe. It should only be called from one thread (the UI
- * thread or test thread)
- */
-public class CameraManager implements FocusOverlayManager.Listener {
-  /** Callbacks for the camera manager listener */
-  public interface CameraManagerListener {
-    void onCameraError(int errorCode, Exception e);
-
-    void onCameraChanged();
-  }
-
-  /** Callback when taking image or video */
-  public interface MediaCallback {
-    int MEDIA_CAMERA_CHANGED = 1;
-    int MEDIA_NO_DATA = 2;
-
-    void onMediaReady(Uri uriToMedia, String contentType, int width, int height);
-
-    void onMediaFailed(Exception exception);
-
-    void onMediaInfo(int what);
-  }
-
-  // Error codes
-  private static final int ERROR_OPENING_CAMERA = 1;
-  private static final int ERROR_SHOWING_PREVIEW = 2;
-  private static final int ERROR_HARDWARE_ACCELERATION_DISABLED = 3;
-  private static final int ERROR_TAKING_PICTURE = 4;
-
-  private static final int NO_CAMERA_SELECTED = -1;
-
-  private static final Camera.ShutterCallback NOOP_SHUTTER_CALLBACK =
-      new Camera.ShutterCallback() {
-        @Override
-        public void onShutter() {
-          // Do nothing
-        }
-      };
-
-  private static CameraManager instance;
-
-  /** The CameraInfo for the currently selected camera */
-  private final CameraInfo cameraInfo;
-
-  /** The index of the selected camera or NO_CAMERA_SELECTED if a camera hasn't been selected yet */
-  private int cameraIndex;
-
-  /** True if the device has front and back cameras */
-  private final boolean hasFrontAndBackCamera;
-
-  /** True if the camera should be open (may not yet be actually open) */
-  private boolean openRequested;
-
-  /** The preview view to show the preview on */
-  private CameraPreview cameraPreview;
-
-  /** The helper classs to handle orientation changes */
-  private OrientationHandler orientationHandler;
-
-  /** Tracks whether the preview has hardware acceleration */
-  private boolean isHardwareAccelerationSupported;
-
-  /**
-   * The task for opening the camera, so it doesn't block the UI thread Using AsyncTask rather than
-   * SafeAsyncTask because the tasks need to be serialized, but don't need to be on the UI thread
-   * TODO(blemmon): If we have other AyncTasks (not SafeAsyncTasks) this may contend and we may need
-   * to create a dedicated thread, or synchronize the threads in the thread pool
-   */
-  private AsyncTask<Integer, Void, Camera> openCameraTask;
-
-  /**
-   * The camera index that is queued to be opened, but not completed yet, or NO_CAMERA_SELECTED if
-   * no open task is pending
-   */
-  private int pendingOpenCameraIndex = NO_CAMERA_SELECTED;
-
-  /** The instance of the currently opened camera */
-  private Camera camera;
-
-  /** The rotation of the screen relative to the camera's natural orientation */
-  private int rotation;
-
-  /** The callback to notify when errors or other events occur */
-  private CameraManagerListener listener;
-
-  /** True if the camera is currently in the process of taking an image */
-  private boolean takingPicture;
-
-  /** Manages auto focus visual and behavior */
-  private final FocusOverlayManager focusOverlayManager;
-
-  private CameraManager() {
-    this.cameraInfo = new CameraInfo();
-    cameraIndex = NO_CAMERA_SELECTED;
-
-    // Check to see if a front and back camera exist
-    boolean hasFrontCamera = false;
-    boolean hasBackCamera = false;
-    final CameraInfo cameraInfo = new CameraInfo();
-    final int cameraCount = Camera.getNumberOfCameras();
-    try {
-      for (int i = 0; i < cameraCount; i++) {
-        Camera.getCameraInfo(i, cameraInfo);
-        if (cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT) {
-          hasFrontCamera = true;
-        } else if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
-          hasBackCamera = true;
-        }
-        if (hasFrontCamera && hasBackCamera) {
-          break;
-        }
-      }
-    } catch (final RuntimeException e) {
-      LogUtil.e("CameraManager.CameraManager", "Unable to load camera info", e);
-    }
-    hasFrontAndBackCamera = hasFrontCamera && hasBackCamera;
-    focusOverlayManager = new FocusOverlayManager(this, Looper.getMainLooper());
-
-    // Assume the best until we are proven otherwise
-    isHardwareAccelerationSupported = true;
-  }
-
-  /** Gets the singleton instance */
-  public static CameraManager get() {
-    if (instance == null) {
-      instance = new CameraManager();
-    }
-    return instance;
-  }
-
-  /**
-   * Sets the surface to use to display the preview This must only be called AFTER the CameraPreview
-   * has a texture ready
-   *
-   * @param preview The preview surface view
-   */
-  void setSurface(final CameraPreview preview) {
-    if (preview == cameraPreview) {
-      return;
-    }
-
-    if (preview != null) {
-      Assert.checkArgument(preview.isValid());
-      preview.setOnTouchListener(
-          new View.OnTouchListener() {
-            @Override
-            public boolean onTouch(final View view, final MotionEvent motionEvent) {
-              if ((motionEvent.getActionMasked() & MotionEvent.ACTION_UP)
-                  == MotionEvent.ACTION_UP) {
-                focusOverlayManager.setPreviewSize(view.getWidth(), view.getHeight());
-                focusOverlayManager.onSingleTapUp(
-                    (int) motionEvent.getX() + view.getLeft(),
-                    (int) motionEvent.getY() + view.getTop());
-              }
-              view.performClick();
-              return true;
-            }
-          });
-    }
-    cameraPreview = preview;
-    tryShowPreview();
-  }
-
-  public void setRenderOverlay(final RenderOverlay renderOverlay) {
-    focusOverlayManager.setFocusRenderer(
-        renderOverlay != null ? renderOverlay.getPieRenderer() : null);
-  }
-
-  /** Convenience function to swap between front and back facing cameras */
-  public void swapCamera() {
-    Assert.checkState(cameraIndex >= 0);
-    selectCamera(
-        cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT
-            ? CameraInfo.CAMERA_FACING_BACK
-            : CameraInfo.CAMERA_FACING_FRONT);
-  }
-
-  /**
-   * Selects the first camera facing the desired direction, or the first camera if there is no
-   * camera in the desired direction
-   *
-   * @param desiredFacing One of the CameraInfo.CAMERA_FACING_* constants
-   * @return True if a camera was selected, or false if selecting a camera failed
-   */
-  public boolean selectCamera(final int desiredFacing) {
-    try {
-      // We already selected a camera facing that direction
-      if (cameraIndex >= 0 && this.cameraInfo.facing == desiredFacing) {
-        return true;
-      }
-
-      final int cameraCount = Camera.getNumberOfCameras();
-      Assert.checkState(cameraCount > 0);
-
-      cameraIndex = NO_CAMERA_SELECTED;
-      setCamera(null);
-      final CameraInfo cameraInfo = new CameraInfo();
-      for (int i = 0; i < cameraCount; i++) {
-        Camera.getCameraInfo(i, cameraInfo);
-        if (cameraInfo.facing == desiredFacing) {
-          cameraIndex = i;
-          Camera.getCameraInfo(i, this.cameraInfo);
-          break;
-        }
-      }
-
-      // There's no camera in the desired facing direction, just select the first camera
-      // regardless of direction
-      if (cameraIndex < 0) {
-        cameraIndex = 0;
-        Camera.getCameraInfo(0, this.cameraInfo);
-      }
-
-      if (openRequested) {
-        // The camera is open, so reopen with the newly selected camera
-        openCamera();
-      }
-      return true;
-    } catch (final RuntimeException e) {
-      LogUtil.e("CameraManager.selectCamera", "RuntimeException in CameraManager.selectCamera", e);
-      if (listener != null) {
-        listener.onCameraError(ERROR_OPENING_CAMERA, e);
-      }
-      return false;
-    }
-  }
-
-  public int getCameraIndex() {
-    return cameraIndex;
-  }
-
-  public void selectCameraByIndex(final int cameraIndex) {
-    if (this.cameraIndex == cameraIndex) {
-      return;
-    }
-
-    try {
-      this.cameraIndex = cameraIndex;
-      Camera.getCameraInfo(this.cameraIndex, cameraInfo);
-      if (openRequested) {
-        openCamera();
-      }
-    } catch (final RuntimeException e) {
-      LogUtil.e(
-          "CameraManager.selectCameraByIndex",
-          "RuntimeException in CameraManager.selectCameraByIndex",
-          e);
-      if (listener != null) {
-        listener.onCameraError(ERROR_OPENING_CAMERA, e);
-      }
-    }
-  }
-
-  @Nullable
-  @VisibleForTesting
-  public CameraInfo getCameraInfo() {
-    if (cameraIndex == NO_CAMERA_SELECTED) {
-      return null;
-    }
-    return cameraInfo;
-  }
-
-  /** @return True if the device has both a front and back camera */
-  public boolean hasFrontAndBackCamera() {
-    return hasFrontAndBackCamera;
-  }
-
-  /** Opens the camera on a separate thread and initiates the preview if one is available */
-  void openCamera() {
-    if (this.cameraIndex == NO_CAMERA_SELECTED) {
-      // Ensure a selected camera if none is currently selected. This may happen if the
-      // camera chooser is not the default media chooser.
-      selectCamera(CameraInfo.CAMERA_FACING_BACK);
-    }
-    openRequested = true;
-    // We're already opening the camera or already have the camera handle, nothing more to do
-    if (pendingOpenCameraIndex == this.cameraIndex || this.camera != null) {
-      return;
-    }
-
-    // True if the task to open the camera has to be delayed until the current one completes
-    boolean delayTask = false;
-
-    // Cancel any previous open camera tasks
-    if (openCameraTask != null) {
-      pendingOpenCameraIndex = NO_CAMERA_SELECTED;
-      delayTask = true;
-    }
-
-    pendingOpenCameraIndex = this.cameraIndex;
-    openCameraTask =
-        new AsyncTask<Integer, Void, Camera>() {
-          private Exception exception;
-
-          @Override
-          protected Camera doInBackground(final Integer... params) {
-            try {
-              final int cameraIndex = params[0];
-              LogUtil.v(
-                  "CameraManager.doInBackground",
-                  "Opening camera " + CameraManager.this.cameraIndex);
-              return Camera.open(cameraIndex);
-            } catch (final Exception e) {
-              LogUtil.e("CameraManager.doInBackground", "Exception while opening camera", e);
-              exception = e;
-              return null;
-            }
-          }
-
-          @Override
-          protected void onPostExecute(final Camera camera) {
-            // If we completed, but no longer want this camera, then release the camera
-            if (openCameraTask != this || !openRequested) {
-              releaseCamera(camera);
-              cleanup();
-              return;
-            }
-
-            cleanup();
-
-            LogUtil.v(
-                "CameraManager.onPostExecute",
-                "Opened camera " + CameraManager.this.cameraIndex + " " + (camera != null));
-            setCamera(camera);
-            if (camera == null) {
-              if (listener != null) {
-                listener.onCameraError(ERROR_OPENING_CAMERA, exception);
-              }
-              LogUtil.e("CameraManager.onPostExecute", "Error opening camera");
-            }
-          }
-
-          @Override
-          protected void onCancelled() {
-            super.onCancelled();
-            cleanup();
-          }
-
-          private void cleanup() {
-            pendingOpenCameraIndex = NO_CAMERA_SELECTED;
-            if (openCameraTask != null && openCameraTask.getStatus() == Status.PENDING) {
-              // If there's another task waiting on this one to complete, start it now
-              openCameraTask.execute(CameraManager.this.cameraIndex);
-            } else {
-              openCameraTask = null;
-            }
-          }
-        };
-    LogUtil.v("CameraManager.openCamera", "Start opening camera " + this.cameraIndex);
-    if (!delayTask) {
-      openCameraTask.execute(this.cameraIndex);
-    }
-  }
-
-  /** Closes the camera releasing the resources it uses */
-  void closeCamera() {
-    openRequested = false;
-    setCamera(null);
-  }
-
-  /**
-   * Sets the listener which will be notified of errors or other events in the camera
-   *
-   * @param listener The listener to notify
-   */
-  public void setListener(final CameraManagerListener listener) {
-    Assert.isMainThread();
-    this.listener = listener;
-    if (!isHardwareAccelerationSupported && this.listener != null) {
-      this.listener.onCameraError(ERROR_HARDWARE_ACCELERATION_DISABLED, null);
-    }
-  }
-
-  public void takePicture(final float heightPercent, @NonNull final MediaCallback callback) {
-    Assert.checkState(!takingPicture);
-    Assert.isNotNull(callback);
-    cameraPreview.setFocusable(false);
-    focusOverlayManager.cancelAutoFocus();
-    if (this.camera == null) {
-      // The caller should have checked isCameraAvailable first, but just in case, protect
-      // against a null camera by notifying the callback that taking the picture didn't work
-      callback.onMediaFailed(null);
-      return;
-    }
-    final Camera.PictureCallback jpegCallback =
-        new Camera.PictureCallback() {
-          @Override
-          public void onPictureTaken(final byte[] bytes, final Camera camera) {
-            takingPicture = false;
-            if (CameraManager.this.camera != camera) {
-              // This may happen if the camera was changed between front/back while the
-              // picture is being taken.
-              callback.onMediaInfo(MediaCallback.MEDIA_CAMERA_CHANGED);
-              return;
-            }
-
-            if (bytes == null) {
-              callback.onMediaInfo(MediaCallback.MEDIA_NO_DATA);
-              return;
-            }
-
-            final Camera.Size size = camera.getParameters().getPictureSize();
-            int width;
-            int height;
-            if (rotation == 90 || rotation == 270) {
-              // Is rotated, so swapping dimensions is desired
-              // noinspection SuspiciousNameCombination
-              width = size.height;
-              // noinspection SuspiciousNameCombination
-              height = size.width;
-            } else {
-              width = size.width;
-              height = size.height;
-            }
-            LogUtil.i(
-                "CameraManager.onPictureTaken", "taken picture size: " + bytes.length + " bytes");
-            DialerExecutorComponent.get(cameraPreview.getContext())
-                .dialerExecutorFactory()
-                .createNonUiTaskBuilder(
-                    new ImagePersistWorker(
-                        width, height, heightPercent, bytes, cameraPreview.getContext()))
-                .onSuccess(
-                    (result) -> {
-                      callback.onMediaReady(
-                          result.getUri(), "image/jpeg", result.getWidth(), result.getHeight());
-                    })
-                .onFailure(
-                    (throwable) -> {
-                      callback.onMediaFailed(new Exception("Persisting image failed", throwable));
-                    })
-                .build()
-                .executeSerial(null);
-          }
-        };
-
-    takingPicture = true;
-    try {
-      this.camera.takePicture(
-          // A shutter callback is required to enable shutter sound
-              NOOP_SHUTTER_CALLBACK, null /* raw */, null /* postView */, jpegCallback);
-    } catch (final RuntimeException e) {
-      LogUtil.e("CameraManager.takePicture", "RuntimeException in CameraManager.takePicture", e);
-      takingPicture = false;
-      if (listener != null) {
-        listener.onCameraError(ERROR_TAKING_PICTURE, e);
-      }
-    }
-  }
-
-  /**
-   * Asynchronously releases a camera
-   *
-   * @param camera The camera to release
-   */
-  private void releaseCamera(final Camera camera) {
-    if (camera == null) {
-      return;
-    }
-
-    focusOverlayManager.onCameraReleased();
-
-    new AsyncTask<Void, Void, Void>() {
-      @Override
-      protected Void doInBackground(final Void... params) {
-        LogUtil.v("CameraManager.doInBackground", "Releasing camera " + cameraIndex);
-        camera.release();
-        return null;
-      }
-    }.execute();
-  }
-
-  /**
-   * Updates the orientation of the {@link Camera} w.r.t. the orientation of the device and the
-   * orientation that the physical camera is mounted on the device.
-   *
-   * @param camera that needs to be reorientated
-   * @param screenRotation rotation of the physical device
-   * @param cameraOrientation {@link CameraInfo#orientation}
-   * @param cameraIsFrontFacing {@link CameraInfo#CAMERA_FACING_FRONT}
-   * @return rotation that images returned from {@link
-   *     android.hardware.Camera.PictureCallback#onPictureTaken(byte[], Camera)} will be rotated.
-   */
-  @VisibleForTesting
-  static int updateCameraRotation(
-      @NonNull Camera camera,
-      int screenRotation,
-      int cameraOrientation,
-      boolean cameraIsFrontFacing) {
-    Assert.isNotNull(camera);
-    Assert.checkArgument(cameraOrientation % 90 == 0);
-
-    int rotation = screenRotationToDegress(screenRotation);
-    boolean portrait = rotation == 0 || rotation == 180;
-
-    if (!portrait && !cameraIsFrontFacing) {
-      rotation += 180;
-    }
-    rotation += cameraOrientation;
-    rotation %= 360;
-
-    // Rotate the camera
-    if (portrait && cameraIsFrontFacing) {
-      camera.setDisplayOrientation((rotation + 180) % 360);
-    } else {
-      camera.setDisplayOrientation(rotation);
-    }
-
-    // Rotate the images returned when a picture is taken
-    Camera.Parameters params = camera.getParameters();
-    params.setRotation(rotation);
-    camera.setParameters(params);
-    return rotation;
-  }
-
-  private static int screenRotationToDegress(int screenRotation) {
-    switch (screenRotation) {
-      case Surface.ROTATION_0:
-        return 0;
-      case Surface.ROTATION_90:
-        return 90;
-      case Surface.ROTATION_180:
-        return 180;
-      case Surface.ROTATION_270:
-        return 270;
-      default:
-        throw Assert.createIllegalStateFailException("Invalid surface rotation.");
-    }
-  }
-
-  /** Sets the current camera, releasing any previously opened camera */
-  private void setCamera(final Camera camera) {
-    if (this.camera == camera) {
-      return;
-    }
-
-    releaseCamera(this.camera);
-    this.camera = camera;
-    tryShowPreview();
-    if (listener != null) {
-      listener.onCameraChanged();
-    }
-  }
-
-  /** Shows the preview if the camera is open and the preview is loaded */
-  private void tryShowPreview() {
-    if (cameraPreview == null || this.camera == null) {
-      if (orientationHandler != null) {
-        orientationHandler.disable();
-        orientationHandler = null;
-      }
-      focusOverlayManager.onPreviewStopped();
-      return;
-    }
-    try {
-      this.camera.stopPreview();
-      if (!takingPicture) {
-        rotation =
-            updateCameraRotation(
-                this.camera,
-                getScreenRotation(),
-                cameraInfo.orientation,
-                cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT);
-      }
-
-      final Camera.Parameters params = this.camera.getParameters();
-      final Camera.Size pictureSize = chooseBestPictureSize();
-      final Camera.Size previewSize = chooseBestPreviewSize(pictureSize);
-      params.setPreviewSize(previewSize.width, previewSize.height);
-      params.setPictureSize(pictureSize.width, pictureSize.height);
-      logCameraSize("Setting preview size: ", previewSize);
-      logCameraSize("Setting picture size: ", pictureSize);
-      cameraPreview.setSize(previewSize, cameraInfo.orientation);
-      for (final String focusMode : params.getSupportedFocusModes()) {
-        if (TextUtils.equals(focusMode, Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
-          // Use continuous focus if available
-          params.setFocusMode(focusMode);
-          break;
-        }
-      }
-
-      this.camera.setParameters(params);
-      cameraPreview.startPreview(this.camera);
-      this.camera.startPreview();
-      this.camera.setAutoFocusMoveCallback(
-          new Camera.AutoFocusMoveCallback() {
-            @Override
-            public void onAutoFocusMoving(final boolean start, final Camera camera) {
-              focusOverlayManager.onAutoFocusMoving(start);
-            }
-          });
-      focusOverlayManager.setParameters(this.camera.getParameters());
-      focusOverlayManager.setMirror(cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK);
-      focusOverlayManager.onPreviewStarted();
-      if (orientationHandler == null) {
-        orientationHandler = new OrientationHandler(cameraPreview.getContext());
-        orientationHandler.enable();
-      }
-    } catch (final IOException e) {
-      LogUtil.e("CameraManager.tryShowPreview", "IOException in CameraManager.tryShowPreview", e);
-      if (listener != null) {
-        listener.onCameraError(ERROR_SHOWING_PREVIEW, e);
-      }
-    } catch (final RuntimeException e) {
-      LogUtil.e(
-          "CameraManager.tryShowPreview", "RuntimeException in CameraManager.tryShowPreview", e);
-      if (listener != null) {
-        listener.onCameraError(ERROR_SHOWING_PREVIEW, e);
-      }
-    }
-  }
-
-  private int getScreenRotation() {
-    return cameraPreview
-        .getContext()
-        .getSystemService(WindowManager.class)
-        .getDefaultDisplay()
-        .getRotation();
-  }
-
-  public boolean isCameraAvailable() {
-    return camera != null && !takingPicture && isHardwareAccelerationSupported;
-  }
-
-  /**
-   * Choose the best picture size by trying to find a size close to the MmsConfig's max size, which
-   * is closest to the screen aspect ratio. In case of RCS conversation returns default size.
-   */
-  private Camera.Size chooseBestPictureSize() {
-    return camera.getParameters().getPictureSize();
-  }
-
-  /**
-   * Chose the best preview size based on the picture size. Try to find a size with the same aspect
-   * ratio and size as the picture if possible
-   */
-  private Camera.Size chooseBestPreviewSize(final Camera.Size pictureSize) {
-    final List<Camera.Size> sizes =
-        new ArrayList<Camera.Size>(camera.getParameters().getSupportedPreviewSizes());
-    final float aspectRatio = pictureSize.width / (float) pictureSize.height;
-    final int capturePixels = pictureSize.width * pictureSize.height;
-
-    // Sort the sizes so the best size is first
-    Collections.sort(
-        sizes,
-        new SizeComparator(Integer.MAX_VALUE, Integer.MAX_VALUE, aspectRatio, capturePixels));
-
-    return sizes.get(0);
-  }
-
-  private class OrientationHandler extends OrientationEventListener {
-    OrientationHandler(final Context context) {
-      super(context);
-    }
-
-    @Override
-    public void onOrientationChanged(final int orientation) {
-      if (!takingPicture) {
-        rotation =
-            updateCameraRotation(
-                camera,
-                getScreenRotation(),
-                cameraInfo.orientation,
-                cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT);
-      }
-    }
-  }
-
-  private static class SizeComparator implements Comparator<Camera.Size> {
-    private static final int PREFER_LEFT = -1;
-    private static final int PREFER_RIGHT = 1;
-
-    // The max width/height for the preferred size. Integer.MAX_VALUE if no size limit
-    private final int maxWidth;
-    private final int maxHeight;
-
-    // The desired aspect ratio
-    private final float targetAspectRatio;
-
-    // The desired size (width x height) to try to match
-    private final int targetPixels;
-
-    public SizeComparator(
-        final int maxWidth,
-        final int maxHeight,
-        final float targetAspectRatio,
-        final int targetPixels) {
-      this.maxWidth = maxWidth;
-      this.maxHeight = maxHeight;
-      this.targetAspectRatio = targetAspectRatio;
-      this.targetPixels = targetPixels;
-    }
-
-    /**
-     * Returns a negative value if left is a better choice than right, or a positive value if right
-     * is a better choice is better than left. 0 if they are equal
-     */
-    @Override
-    public int compare(final Camera.Size left, final Camera.Size right) {
-      // If one size is less than the max size prefer it over the other
-      if ((left.width <= maxWidth && left.height <= maxHeight)
-          != (right.width <= maxWidth && right.height <= maxHeight)) {
-        return left.width <= maxWidth ? PREFER_LEFT : PREFER_RIGHT;
-      }
-
-      // If one is closer to the target aspect ratio, prefer it.
-      final float leftAspectRatio = left.width / (float) left.height;
-      final float rightAspectRatio = right.width / (float) right.height;
-      final float leftAspectRatioDiff = Math.abs(leftAspectRatio - targetAspectRatio);
-      final float rightAspectRatioDiff = Math.abs(rightAspectRatio - targetAspectRatio);
-      if (leftAspectRatioDiff != rightAspectRatioDiff) {
-        return (leftAspectRatioDiff - rightAspectRatioDiff) < 0 ? PREFER_LEFT : PREFER_RIGHT;
-      }
-
-      // At this point they have the same aspect ratio diff and are either both bigger
-      // than the max size or both smaller than the max size, so prefer the one closest
-      // to target size
-      final int leftDiff = Math.abs((left.width * left.height) - targetPixels);
-      final int rightDiff = Math.abs((right.width * right.height) - targetPixels);
-      return leftDiff - rightDiff;
-    }
-  }
-
-  @Override // From FocusOverlayManager.Listener
-  public void autoFocus() {
-    if (this.camera == null) {
-      return;
-    }
-
-    try {
-      this.camera.autoFocus(
-          new Camera.AutoFocusCallback() {
-            @Override
-            public void onAutoFocus(final boolean success, final Camera camera) {
-              focusOverlayManager.onAutoFocus(success, false /* shutterDown */);
-            }
-          });
-    } catch (final RuntimeException e) {
-      LogUtil.e("CameraManager.autoFocus", "RuntimeException in CameraManager.autoFocus", e);
-      // If autofocus fails, the camera should have called the callback with success=false,
-      // but some throw an exception here
-      focusOverlayManager.onAutoFocus(false /*success*/, false /*shutterDown*/);
-    }
-  }
-
-  @Override // From FocusOverlayManager.Listener
-  public void cancelAutoFocus() {
-    if (camera == null) {
-      return;
-    }
-    try {
-      camera.cancelAutoFocus();
-    } catch (final RuntimeException e) {
-      // Ignore
-      LogUtil.e(
-          "CameraManager.cancelAutoFocus", "RuntimeException in CameraManager.cancelAutoFocus", e);
-    }
-  }
-
-  @Override // From FocusOverlayManager.Listener
-  public boolean capture() {
-    return false;
-  }
-
-  @Override // From FocusOverlayManager.Listener
-  public void setFocusParameters() {
-    if (camera == null) {
-      return;
-    }
-    try {
-      final Camera.Parameters parameters = camera.getParameters();
-      parameters.setFocusMode(focusOverlayManager.getFocusMode());
-      if (parameters.getMaxNumFocusAreas() > 0) {
-        // Don't set focus areas (even to null) if focus areas aren't supported, camera may
-        // crash
-        parameters.setFocusAreas(focusOverlayManager.getFocusAreas());
-      }
-      parameters.setMeteringAreas(focusOverlayManager.getMeteringAreas());
-      camera.setParameters(parameters);
-    } catch (final RuntimeException e) {
-      // This occurs when the device is out of space or when the camera is locked
-      LogUtil.e(
-          "CameraManager.setFocusParameters",
-          "RuntimeException in CameraManager setFocusParameters");
-    }
-  }
-
-  public void resetPreview() {
-    camera.startPreview();
-    if (cameraPreview != null) {
-      cameraPreview.setFocusable(true);
-    }
-  }
-
-  private void logCameraSize(final String prefix, final Camera.Size size) {
-    // Log the camera size and aspect ratio for help when examining bug reports for camera
-    // failures
-    LogUtil.i(
-        "CameraManager.logCameraSize",
-        prefix + size.width + "x" + size.height + " (" + (size.width / (float) size.height) + ")");
-  }
-
-  @VisibleForTesting
-  public void resetCameraManager() {
-    instance = null;
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/CameraPreview.java b/java/com/android/dialer/callcomposer/camera/CameraPreview.java
deleted file mode 100644
index 901833b..0000000
--- a/java/com/android/dialer/callcomposer/camera/CameraPreview.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera;
-
-import android.content.Context;
-import android.content.res.Configuration;
-import android.hardware.Camera;
-import android.view.View;
-import android.view.View.MeasureSpec;
-import android.view.View.OnTouchListener;
-import com.android.dialer.common.Assert;
-import com.android.dialer.util.PermissionsUtil;
-import java.io.IOException;
-
-/**
- * Contains shared code for SoftwareCameraPreview and HardwareCameraPreview, cannot use inheritance
- * because those classes must inherit from separate Views, so those classes delegate calls to this
- * helper class. Specifics for each implementation are in CameraPreviewHost
- */
-public class CameraPreview {
-  /** Implemented by the camera for rendering. */
-  public interface CameraPreviewHost {
-    View getView();
-
-    boolean isValid();
-
-    void startPreview(final Camera camera) throws IOException;
-
-    void onCameraPermissionGranted();
-
-    void setShown();
-  }
-
-  private int cameraWidth = -1;
-  private int cameraHeight = -1;
-  private boolean tabHasBeenShown = false;
-  private OnTouchListener listener;
-
-  private final CameraPreviewHost host;
-
-  public CameraPreview(final CameraPreviewHost host) {
-    Assert.isNotNull(host);
-    Assert.isNotNull(host.getView());
-    this.host = host;
-  }
-
-  // This is set when the tab is actually selected.
-  public void setShown() {
-    tabHasBeenShown = true;
-    maybeOpenCamera();
-  }
-
-  // Opening camera is very expensive. Most of the ANR reports seem to be related to the camera.
-  // So we delay until the camera is actually needed.  See a bug
-  private void maybeOpenCamera() {
-    boolean visible = host.getView().getVisibility() == View.VISIBLE;
-    if (tabHasBeenShown && visible && PermissionsUtil.hasCameraPermissions(getContext())) {
-      CameraManager.get().openCamera();
-    }
-  }
-
-  public void setSize(final Camera.Size size, final int orientation) {
-    switch (orientation) {
-      case 0:
-      case 180:
-        cameraWidth = size.width;
-        cameraHeight = size.height;
-        break;
-      case 90:
-      case 270:
-      default:
-        cameraWidth = size.height;
-        cameraHeight = size.width;
-    }
-    host.getView().requestLayout();
-  }
-
-  public int getWidthMeasureSpec(final int widthMeasureSpec, final int heightMeasureSpec) {
-    if (cameraHeight >= 0) {
-      final int width = View.MeasureSpec.getSize(widthMeasureSpec);
-      return MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY);
-    } else {
-      return widthMeasureSpec;
-    }
-  }
-
-  public int getHeightMeasureSpec(final int widthMeasureSpec, final int heightMeasureSpec) {
-    if (cameraHeight >= 0) {
-      final int orientation = getContext().getResources().getConfiguration().orientation;
-      final int width = View.MeasureSpec.getSize(widthMeasureSpec);
-      final float aspectRatio = (float) cameraWidth / (float) cameraHeight;
-      int height;
-      if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
-        height = (int) (width * aspectRatio);
-      } else {
-        height = (int) (width / aspectRatio);
-      }
-      return View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY);
-    } else {
-      return heightMeasureSpec;
-    }
-  }
-
-  // onVisibilityChanged is set to Visible when the tab is _created_,
-  //   which may be when the user is viewing a different tab.
-  public void onVisibilityChanged(final int visibility) {
-    if (PermissionsUtil.hasCameraPermissions(getContext())) {
-      if (visibility == View.VISIBLE) {
-        maybeOpenCamera();
-      } else {
-        CameraManager.get().closeCamera();
-      }
-    }
-  }
-
-  public Context getContext() {
-    return host.getView().getContext();
-  }
-
-  public void setOnTouchListener(final View.OnTouchListener listener) {
-    this.listener = listener;
-    host.getView().setOnTouchListener(listener);
-  }
-
-  public void setFocusable(boolean focusable) {
-    host.getView().setOnTouchListener(focusable ? listener : null);
-  }
-
-  public int getHeight() {
-    return host.getView().getHeight();
-  }
-
-  public void onAttachedToWindow() {
-    maybeOpenCamera();
-  }
-
-  public void onDetachedFromWindow() {
-    CameraManager.get().closeCamera();
-  }
-
-  public void onRestoreInstanceState() {
-    maybeOpenCamera();
-  }
-
-  public void onCameraPermissionGranted() {
-    maybeOpenCamera();
-  }
-
-  /** @return True if the view is valid and prepared for the camera to start showing the preview */
-  public boolean isValid() {
-    return host.isValid();
-  }
-
-  /**
-   * Starts the camera preview on the current surface. Abstracts out the differences in API from the
-   * CameraManager
-   *
-   * @throws IOException Which is caught by the CameraManager to display an error
-   */
-  public void startPreview(final Camera camera) throws IOException {
-    host.startPreview(camera);
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/HardwareCameraPreview.java b/java/com/android/dialer/callcomposer/camera/HardwareCameraPreview.java
deleted file mode 100644
index 3373f1a..0000000
--- a/java/com/android/dialer/callcomposer/camera/HardwareCameraPreview.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera;
-
-import android.content.Context;
-import android.graphics.SurfaceTexture;
-import android.hardware.Camera;
-import android.os.Parcelable;
-import android.util.AttributeSet;
-import android.view.TextureView;
-import android.view.View;
-import java.io.IOException;
-
-/**
- * A hardware accelerated preview texture for the camera. This is the preferred CameraPreview
- * because it animates smoother. When hardware acceleration isn't available, SoftwareCameraPreview
- * is used.
- *
- * <p>There is a significant amount of duplication between HardwareCameraPreview and
- * SoftwareCameraPreview which we can't easily share due to a lack of multiple inheritance, The
- * implementations of the shared methods are delegated to CameraPreview
- */
-public class HardwareCameraPreview extends TextureView implements CameraPreview.CameraPreviewHost {
-  private CameraPreview preview;
-
-  public HardwareCameraPreview(final Context context, final AttributeSet attrs) {
-    super(context, attrs);
-    preview = new CameraPreview(this);
-    setSurfaceTextureListener(
-        new SurfaceTextureListener() {
-          @Override
-          public void onSurfaceTextureAvailable(
-              final SurfaceTexture surfaceTexture, final int i, final int i2) {
-            CameraManager.get().setSurface(preview);
-          }
-
-          @Override
-          public void onSurfaceTextureSizeChanged(
-              final SurfaceTexture surfaceTexture, final int i, final int i2) {
-            CameraManager.get().setSurface(preview);
-          }
-
-          @Override
-          public boolean onSurfaceTextureDestroyed(final SurfaceTexture surfaceTexture) {
-            CameraManager.get().setSurface(null);
-            return true;
-          }
-
-          @Override
-          public void onSurfaceTextureUpdated(final SurfaceTexture surfaceTexture) {
-            CameraManager.get().setSurface(preview);
-          }
-        });
-  }
-
-  @Override
-  public void setShown() {
-    preview.setShown();
-  }
-
-  @Override
-  protected void onVisibilityChanged(final View changedView, final int visibility) {
-    super.onVisibilityChanged(changedView, visibility);
-    preview.onVisibilityChanged(visibility);
-  }
-
-  @Override
-  protected void onDetachedFromWindow() {
-    super.onDetachedFromWindow();
-    preview.onDetachedFromWindow();
-  }
-
-  @Override
-  protected void onAttachedToWindow() {
-    super.onAttachedToWindow();
-    preview.onAttachedToWindow();
-  }
-
-  @Override
-  protected void onRestoreInstanceState(final Parcelable state) {
-    super.onRestoreInstanceState(state);
-    preview.onRestoreInstanceState();
-  }
-
-  @Override
-  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-    widthMeasureSpec = preview.getWidthMeasureSpec(widthMeasureSpec, heightMeasureSpec);
-    heightMeasureSpec = preview.getHeightMeasureSpec(widthMeasureSpec, heightMeasureSpec);
-    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-  }
-
-  @Override
-  public View getView() {
-    return this;
-  }
-
-  @Override
-  public boolean isValid() {
-    return getSurfaceTexture() != null;
-  }
-
-  @Override
-  public void startPreview(final Camera camera) throws IOException {
-    camera.setPreviewTexture(getSurfaceTexture());
-  }
-
-  @Override
-  public void onCameraPermissionGranted() {
-    preview.onCameraPermissionGranted();
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java b/java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java
deleted file mode 100644
index 27ad068..0000000
--- a/java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.v4.content.FileProvider;
-import com.android.dialer.callcomposer.camera.ImagePersistWorker.Result;
-import com.android.dialer.callcomposer.camera.exif.ExifInterface;
-import com.android.dialer.callcomposer.util.BitmapResizer;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.concurrent.DialerExecutor.Worker;
-import com.android.dialer.constants.Constants;
-import com.android.dialer.util.DialerUtils;
-import com.google.auto.value.AutoValue;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-/** Persisting image routine. */
-public class ImagePersistWorker implements Worker<Void, Result> {
-  private int width;
-  private int height;
-  private final float heightPercent;
-  private final byte[] bytes;
-  private final Context context;
-
-  @AutoValue
-  abstract static class Result {
-
-    public static Builder builder() {
-      return new AutoValue_ImagePersistWorker_Result.Builder();
-    }
-
-    @NonNull
-    abstract Uri getUri();
-
-    abstract int getWidth();
-
-    abstract int getHeight();
-
-    @AutoValue.Builder
-    abstract static class Builder {
-      abstract Builder setUri(@NonNull Uri uri);
-
-      abstract Builder setWidth(int width);
-
-      abstract Builder setHeight(int height);
-
-      abstract Result build();
-    }
-  }
-
-  ImagePersistWorker(
-      final int width,
-      final int height,
-      final float heightPercent,
-      final byte[] bytes,
-      final Context context) {
-    Assert.checkArgument(heightPercent >= 0 && heightPercent <= 1);
-    Assert.isNotNull(bytes);
-    Assert.isNotNull(context);
-    this.width = width;
-    this.height = height;
-    this.heightPercent = heightPercent;
-    this.bytes = bytes;
-    this.context = context;
-  }
-
-  @Override
-  public Result doInBackground(Void unused) throws Exception {
-    File outputFile = DialerUtils.createShareableFile(context);
-
-    try (OutputStream outputStream = new FileOutputStream(outputFile)) {
-      writeClippedBitmap(outputStream);
-    }
-
-    return Result.builder()
-        .setUri(
-            FileProvider.getUriForFile(
-                context, Constants.get().getFileProviderAuthority(), outputFile))
-        .setWidth(width)
-        .setHeight(height)
-        .build();
-  }
-
-  private void writeClippedBitmap(OutputStream outputStream) throws IOException {
-    int orientation = android.media.ExifInterface.ORIENTATION_UNDEFINED;
-    final ExifInterface exifInterface = new ExifInterface();
-    try {
-      exifInterface.readExif(bytes);
-      final Integer orientationValue = exifInterface.getTagIntValue(ExifInterface.TAG_ORIENTATION);
-      if (orientationValue != null) {
-        orientation = orientationValue.intValue();
-      }
-    } catch (final IOException e) {
-      // Couldn't get exif tags, not the end of the world
-    }
-
-    ExifInterface.OrientationParams params = ExifInterface.getOrientationParams(orientation);
-    Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
-    final int clippedWidth;
-    final int clippedHeight;
-    if (params.invertDimensions) {
-      Assert.checkState(width == bitmap.getHeight());
-      Assert.checkState(height == bitmap.getWidth());
-      clippedWidth = (int) (height * heightPercent);
-      clippedHeight = width;
-    } else {
-      Assert.checkState(width == bitmap.getWidth());
-      Assert.checkState(height == bitmap.getHeight());
-      clippedWidth = width;
-      clippedHeight = (int) (height * heightPercent);
-    }
-
-    int offsetTop = (bitmap.getHeight() - clippedHeight) / 2;
-    int offsetLeft = (bitmap.getWidth() - clippedWidth) / 2;
-    width = clippedWidth;
-    height = clippedHeight;
-
-    Bitmap clippedBitmap =
-        Bitmap.createBitmap(bitmap, offsetLeft, offsetTop, clippedWidth, clippedHeight);
-    clippedBitmap = BitmapResizer.resizeForEnrichedCalling(clippedBitmap, params.rotation);
-    // EXIF data can take a big chunk of the file size and we've already manually rotated our image,
-    // so remove all of the exif data.
-    exifInterface.clearExif();
-    exifInterface.writeExif(clippedBitmap, outputStream);
-
-    clippedBitmap.recycle();
-    bitmap.recycle();
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/SoftwareCameraPreview.java b/java/com/android/dialer/callcomposer/camera/SoftwareCameraPreview.java
deleted file mode 100644
index 58458a8..0000000
--- a/java/com/android/dialer/callcomposer/camera/SoftwareCameraPreview.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera;
-
-import android.content.Context;
-import android.hardware.Camera;
-import android.os.Parcelable;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.View;
-import java.io.IOException;
-
-/**
- * A software rendered preview surface for the camera. This renders slower and causes more jank, so
- * HardwareCameraPreview is preferred if possible.
- *
- * <p>There is a significant amount of duplication between HardwareCameraPreview and
- * SoftwareCameraPreview which we can't easily share due to a lack of multiple inheritance, The
- * implementations of the shared methods are delegated to CameraPreview
- */
-public class SoftwareCameraPreview extends SurfaceView implements CameraPreview.CameraPreviewHost {
-  private final CameraPreview preview;
-
-  public SoftwareCameraPreview(final Context context) {
-    super(context);
-    preview = new CameraPreview(this);
-    getHolder()
-        .addCallback(
-            new SurfaceHolder.Callback() {
-              @Override
-              public void surfaceCreated(final SurfaceHolder surfaceHolder) {
-                CameraManager.get().setSurface(preview);
-              }
-
-              @Override
-              public void surfaceChanged(
-                  final SurfaceHolder surfaceHolder,
-                  final int format,
-                  final int width,
-                  final int height) {
-                CameraManager.get().setSurface(preview);
-              }
-
-              @Override
-              public void surfaceDestroyed(final SurfaceHolder surfaceHolder) {
-                CameraManager.get().setSurface(null);
-              }
-            });
-  }
-
-  @Override
-  public void setShown() {
-    preview.setShown();
-  }
-
-  @Override
-  protected void onVisibilityChanged(final View changedView, final int visibility) {
-    super.onVisibilityChanged(changedView, visibility);
-    preview.onVisibilityChanged(visibility);
-  }
-
-  @Override
-  protected void onDetachedFromWindow() {
-    super.onDetachedFromWindow();
-    preview.onDetachedFromWindow();
-  }
-
-  @Override
-  protected void onAttachedToWindow() {
-    super.onAttachedToWindow();
-    preview.onAttachedToWindow();
-  }
-
-  @Override
-  protected void onRestoreInstanceState(final Parcelable state) {
-    super.onRestoreInstanceState(state);
-    preview.onRestoreInstanceState();
-  }
-
-  @Override
-  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-    widthMeasureSpec = preview.getWidthMeasureSpec(widthMeasureSpec, heightMeasureSpec);
-    heightMeasureSpec = preview.getHeightMeasureSpec(widthMeasureSpec, heightMeasureSpec);
-    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-  }
-
-  @Override
-  public View getView() {
-    return this;
-  }
-
-  @Override
-  public boolean isValid() {
-    return getHolder() != null;
-  }
-
-  @Override
-  public void startPreview(final Camera camera) throws IOException {
-    camera.setPreviewDisplay(getHolder());
-  }
-
-  @Override
-  public void onCameraPermissionGranted() {
-    preview.onCameraPermissionGranted();
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/camerafocus/AndroidManifest.xml b/java/com/android/dialer/callcomposer/camera/camerafocus/AndroidManifest.xml
deleted file mode 100644
index 77ef222..0000000
--- a/java/com/android/dialer/callcomposer/camera/camerafocus/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.callcomposer.camera.camerafocus"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/camera/camerafocus/FocusIndicator.java b/java/com/android/dialer/callcomposer/camera/camerafocus/FocusIndicator.java
deleted file mode 100644
index 234cf53..0000000
--- a/java/com/android/dialer/callcomposer/camera/camerafocus/FocusIndicator.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.camerafocus;
-
-/** Methods needed by the CameraPreview in order communicate camera events. */
-public interface FocusIndicator {
-  void showStart();
-
-  void showSuccess(boolean timeout);
-
-  void showFail(boolean timeout);
-
-  void clear();
-}
diff --git a/java/com/android/dialer/callcomposer/camera/camerafocus/FocusOverlayManager.java b/java/com/android/dialer/callcomposer/camera/camerafocus/FocusOverlayManager.java
deleted file mode 100644
index c3f1a5d..0000000
--- a/java/com/android/dialer/callcomposer/camera/camerafocus/FocusOverlayManager.java
+++ /dev/null
@@ -1,476 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.camerafocus;
-
-import android.graphics.Matrix;
-import android.graphics.Rect;
-import android.graphics.RectF;
-import android.hardware.Camera.Area;
-import android.hardware.Camera.Parameters;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A class that handles everything about focus in still picture mode. This also handles the metering
- * area because it is the same as focus area.
- *
- * <p>The test cases: (1) The camera has continuous autofocus. Move the camera. Take a picture when
- * CAF is not in progress. (2) The camera has continuous autofocus. Move the camera. Take a picture
- * when CAF is in progress. (3) The camera has face detection. Point the camera at some faces. Hold
- * the shutter. Release to take a picture. (4) The camera has face detection. Point the camera at
- * some faces. Single tap the shutter to take a picture. (5) The camera has autofocus. Single tap
- * the shutter to take a picture. (6) The camera has autofocus. Hold the shutter. Release to take a
- * picture. (7) The camera has no autofocus. Single tap the shutter and take a picture. (8) The
- * camera has autofocus and supports focus area. Touch the screen to trigger autofocus. Take a
- * picture. (9) The camera has autofocus and supports focus area. Touch the screen to trigger
- * autofocus. Wait until it times out. (10) The camera has no autofocus and supports metering area.
- * Touch the screen to change metering area.
- */
-public class FocusOverlayManager {
-  private static final String TRUE = "true";
-  private static final String AUTO_EXPOSURE_LOCK_SUPPORTED = "auto-exposure-lock-supported";
-  private static final String AUTO_WHITE_BALANCE_LOCK_SUPPORTED =
-      "auto-whitebalance-lock-supported";
-
-  private static final int RESET_TOUCH_FOCUS = 0;
-  private static final int RESET_TOUCH_FOCUS_DELAY = 3000;
-
-  private int state = STATE_IDLE;
-  private static final int STATE_IDLE = 0; // Focus is not active.
-  private static final int STATE_FOCUSING = 1; // Focus is in progress.
-  // Focus is in progress and the camera should take a picture after focus finishes.
-  private static final int STATE_FOCUSING_SNAP_ON_FINISH = 2;
-  private static final int STATE_SUCCESS = 3; // Focus finishes and succeeds.
-  private static final int STATE_FAIL = 4; // Focus finishes and fails.
-
-  private boolean initialized;
-  private boolean focusAreaSupported;
-  private boolean meteringAreaSupported;
-  private boolean lockAeAwbNeeded;
-  private boolean aeAwbLock;
-  private Matrix matrix;
-
-  private PieRenderer pieRenderer;
-
-  private int previewWidth; // The width of the preview frame layout.
-  private int previewHeight; // The height of the preview frame layout.
-  private boolean mirror; // true if the camera is front-facing.
-  private List<Area> focusArea; // focus area in driver format
-  private List<Area> meteringArea; // metering area in driver format
-  private String focusMode;
-  private Parameters parameters;
-  private Handler handler;
-  private Listener listener;
-
-  /** Listener used for the focus indicator to communicate back to the camera. */
-  public interface Listener {
-    void autoFocus();
-
-    void cancelAutoFocus();
-
-    boolean capture();
-
-    void setFocusParameters();
-  }
-
-  private class MainHandler extends Handler {
-    public MainHandler(Looper looper) {
-      super(looper);
-    }
-
-    @Override
-    public void handleMessage(Message msg) {
-      switch (msg.what) {
-        case RESET_TOUCH_FOCUS:
-          {
-            cancelAutoFocus();
-            break;
-          }
-      }
-    }
-  }
-
-  public FocusOverlayManager(Listener listener, Looper looper) {
-    handler = new MainHandler(looper);
-    matrix = new Matrix();
-    this.listener = listener;
-  }
-
-  public void setFocusRenderer(PieRenderer renderer) {
-    pieRenderer = renderer;
-    initialized = (matrix != null);
-  }
-
-  public void setParameters(Parameters parameters) {
-    // parameters can only be null when onConfigurationChanged is called
-    // before camera is open. We will just return in this case, because
-    // parameters will be set again later with the right parameters after
-    // camera is open.
-    if (parameters == null) {
-      return;
-    }
-    this.parameters = parameters;
-    focusAreaSupported = isFocusAreaSupported(parameters);
-    meteringAreaSupported = isMeteringAreaSupported(parameters);
-    lockAeAwbNeeded =
-        (isAutoExposureLockSupported(this.parameters)
-            || isAutoWhiteBalanceLockSupported(this.parameters));
-  }
-
-  public void setPreviewSize(int previewWidth, int previewHeight) {
-    if (this.previewWidth != previewWidth || this.previewHeight != previewHeight) {
-      this.previewWidth = previewWidth;
-      this.previewHeight = previewHeight;
-      setMatrix();
-    }
-  }
-
-  public void setMirror(boolean mirror) {
-    this.mirror = mirror;
-    setMatrix();
-  }
-
-  private void setMatrix() {
-    if (previewWidth != 0 && previewHeight != 0) {
-      Matrix matrix = new Matrix();
-      prepareMatrix(matrix, mirror, previewWidth, previewHeight);
-      // In face detection, the matrix converts the driver coordinates to UI
-      // coordinates. In tap focus, the inverted matrix converts the UI
-      // coordinates to driver coordinates.
-      matrix.invert(this.matrix);
-      initialized = (pieRenderer != null);
-    }
-  }
-
-  private void lockAeAwbIfNeeded() {
-    if (lockAeAwbNeeded && !aeAwbLock) {
-      aeAwbLock = true;
-      listener.setFocusParameters();
-    }
-  }
-
-  public void onAutoFocus(boolean focused, boolean shutterButtonPressed) {
-    if (state == STATE_FOCUSING_SNAP_ON_FINISH) {
-      // Take the picture no matter focus succeeds or fails. No need
-      // to play the AF sound if we're about to play the shutter
-      // sound.
-      if (focused) {
-        state = STATE_SUCCESS;
-      } else {
-        state = STATE_FAIL;
-      }
-      updateFocusUI();
-      capture();
-    } else if (state == STATE_FOCUSING) {
-      // This happens when (1) user is half-pressing the focus key or
-      // (2) touch focus is triggered. Play the focus tone. Do not
-      // take the picture now.
-      if (focused) {
-        state = STATE_SUCCESS;
-      } else {
-        state = STATE_FAIL;
-      }
-      updateFocusUI();
-      // If this is triggered by touch focus, cancel focus after a
-      // while.
-      if (focusArea != null) {
-        handler.sendEmptyMessageDelayed(RESET_TOUCH_FOCUS, RESET_TOUCH_FOCUS_DELAY);
-      }
-      if (shutterButtonPressed) {
-        // Lock AE & AWB so users can half-press shutter and recompose.
-        lockAeAwbIfNeeded();
-      }
-    } else if (state == STATE_IDLE) {
-      // User has released the focus key before focus completes.
-      // Do nothing.
-    }
-  }
-
-  public void onAutoFocusMoving(boolean moving) {
-    if (!initialized) {
-      return;
-    }
-
-    // Ignore if we have requested autofocus. This method only handles
-    // continuous autofocus.
-    if (state != STATE_IDLE) {
-      return;
-    }
-
-    if (moving) {
-      pieRenderer.showStart();
-    } else {
-      pieRenderer.showSuccess(true);
-    }
-  }
-
-  private void initializeFocusAreas(
-      int focusWidth, int focusHeight, int x, int y, int previewWidth, int previewHeight) {
-    if (focusArea == null) {
-      focusArea = new ArrayList<>();
-      focusArea.add(new Area(new Rect(), 1));
-    }
-
-    // Convert the coordinates to driver format.
-    calculateTapArea(
-        focusWidth, focusHeight, 1f, x, y, previewWidth, previewHeight, focusArea.get(0).rect);
-  }
-
-  private void initializeMeteringAreas(
-      int focusWidth, int focusHeight, int x, int y, int previewWidth, int previewHeight) {
-    if (meteringArea == null) {
-      meteringArea = new ArrayList<>();
-      meteringArea.add(new Area(new Rect(), 1));
-    }
-
-    // Convert the coordinates to driver format.
-    // AE area is bigger because exposure is sensitive and
-    // easy to over- or underexposure if area is too small.
-    calculateTapArea(
-        focusWidth, focusHeight, 1.5f, x, y, previewWidth, previewHeight, meteringArea.get(0).rect);
-  }
-
-  public void onSingleTapUp(int x, int y) {
-    if (!initialized || state == STATE_FOCUSING_SNAP_ON_FINISH) {
-      return;
-    }
-
-    // Let users be able to cancel previous touch focus.
-    if ((focusArea != null)
-        && (state == STATE_FOCUSING || state == STATE_SUCCESS || state == STATE_FAIL)) {
-      cancelAutoFocus();
-    }
-    // Initialize variables.
-    int focusWidth = pieRenderer.getSize();
-    int focusHeight = pieRenderer.getSize();
-    if (focusWidth == 0 || pieRenderer.getWidth() == 0 || pieRenderer.getHeight() == 0) {
-      return;
-    }
-    int previewWidth = this.previewWidth;
-    int previewHeight = this.previewHeight;
-    // Initialize mFocusArea.
-    if (focusAreaSupported) {
-      initializeFocusAreas(focusWidth, focusHeight, x, y, previewWidth, previewHeight);
-    }
-    // Initialize mMeteringArea.
-    if (meteringAreaSupported) {
-      initializeMeteringAreas(focusWidth, focusHeight, x, y, previewWidth, previewHeight);
-    }
-
-    // Use margin to set the focus indicator to the touched area.
-    pieRenderer.setFocus(x, y);
-
-    // Set the focus area and metering area.
-    listener.setFocusParameters();
-    if (focusAreaSupported) {
-      autoFocus();
-    } else { // Just show the indicator in all other cases.
-      updateFocusUI();
-      // Reset the metering area in 3 seconds.
-      handler.removeMessages(RESET_TOUCH_FOCUS);
-      handler.sendEmptyMessageDelayed(RESET_TOUCH_FOCUS, RESET_TOUCH_FOCUS_DELAY);
-    }
-  }
-
-  public void onPreviewStarted() {
-    state = STATE_IDLE;
-  }
-
-  public void onPreviewStopped() {
-    // If auto focus was in progress, it would have been stopped.
-    state = STATE_IDLE;
-    resetTouchFocus();
-    updateFocusUI();
-  }
-
-  public void onCameraReleased() {
-    onPreviewStopped();
-  }
-
-  private void autoFocus() {
-    LogUtil.v("FocusOverlayManager.autoFocus", "Start autofocus.");
-    listener.autoFocus();
-    state = STATE_FOCUSING;
-    updateFocusUI();
-    handler.removeMessages(RESET_TOUCH_FOCUS);
-  }
-
-  public void cancelAutoFocus() {
-    LogUtil.v("FocusOverlayManager.cancelAutoFocus", "Cancel autofocus.");
-
-    // Reset the tap area before calling mListener.cancelAutofocus.
-    // Otherwise, focus mode stays at auto and the tap area passed to the
-    // driver is not reset.
-    resetTouchFocus();
-    listener.cancelAutoFocus();
-    state = STATE_IDLE;
-    updateFocusUI();
-    handler.removeMessages(RESET_TOUCH_FOCUS);
-  }
-
-  private void capture() {
-    if (listener.capture()) {
-      state = STATE_IDLE;
-      handler.removeMessages(RESET_TOUCH_FOCUS);
-    }
-  }
-
-  public String getFocusMode() {
-    List<String> supportedFocusModes = parameters.getSupportedFocusModes();
-
-    if (focusAreaSupported && focusArea != null) {
-      // Always use autofocus in tap-to-focus.
-      focusMode = Parameters.FOCUS_MODE_AUTO;
-    } else {
-      focusMode = Parameters.FOCUS_MODE_CONTINUOUS_PICTURE;
-    }
-
-    if (!isSupported(focusMode, supportedFocusModes)) {
-      // For some reasons, the driver does not support the current
-      // focus mode. Fall back to auto.
-      if (isSupported(Parameters.FOCUS_MODE_AUTO, parameters.getSupportedFocusModes())) {
-        focusMode = Parameters.FOCUS_MODE_AUTO;
-      } else {
-        focusMode = parameters.getFocusMode();
-      }
-    }
-    return focusMode;
-  }
-
-  public List<Area> getFocusAreas() {
-    return focusArea;
-  }
-
-  public List<Area> getMeteringAreas() {
-    return meteringArea;
-  }
-
-  private void updateFocusUI() {
-    if (!initialized) {
-      return;
-    }
-    FocusIndicator focusIndicator = pieRenderer;
-
-    if (state == STATE_IDLE) {
-      if (focusArea == null) {
-        focusIndicator.clear();
-      } else {
-        // Users touch on the preview and the indicator represents the
-        // metering area. Either focus area is not supported or
-        // autoFocus call is not required.
-        focusIndicator.showStart();
-      }
-    } else if (state == STATE_FOCUSING || state == STATE_FOCUSING_SNAP_ON_FINISH) {
-      focusIndicator.showStart();
-    } else {
-      if (Parameters.FOCUS_MODE_CONTINUOUS_PICTURE.equals(focusMode)) {
-        // TODO(blemmon): check HAL behavior and decide if this can be removed.
-        focusIndicator.showSuccess(false);
-      } else if (state == STATE_SUCCESS) {
-        focusIndicator.showSuccess(false);
-      } else if (state == STATE_FAIL) {
-        focusIndicator.showFail(false);
-      }
-    }
-  }
-
-  private void resetTouchFocus() {
-    if (!initialized) {
-      return;
-    }
-
-    // Put focus indicator to the center. clear reset position
-    pieRenderer.clear();
-
-    focusArea = null;
-    meteringArea = null;
-  }
-
-  private void calculateTapArea(
-      int focusWidth,
-      int focusHeight,
-      float areaMultiple,
-      int x,
-      int y,
-      int previewWidth,
-      int previewHeight,
-      Rect rect) {
-    int areaWidth = (int) (focusWidth * areaMultiple);
-    int areaHeight = (int) (focusHeight * areaMultiple);
-    final int maxW = previewWidth - areaWidth;
-    int left = maxW > 0 ? clamp(x - areaWidth / 2, 0, maxW) : 0;
-    final int maxH = previewHeight - areaHeight;
-    int top = maxH > 0 ? clamp(y - areaHeight / 2, 0, maxH) : 0;
-
-    RectF rectF = new RectF(left, top, left + areaWidth, top + areaHeight);
-    matrix.mapRect(rectF);
-    rectFToRect(rectF, rect);
-  }
-
-  private int clamp(int x, int min, int max) {
-    Assert.checkArgument(max >= min);
-    if (x > max) {
-      return max;
-    }
-    if (x < min) {
-      return min;
-    }
-    return x;
-  }
-
-  private boolean isAutoExposureLockSupported(Parameters params) {
-    return TRUE.equals(params.get(AUTO_EXPOSURE_LOCK_SUPPORTED));
-  }
-
-  private boolean isAutoWhiteBalanceLockSupported(Parameters params) {
-    return TRUE.equals(params.get(AUTO_WHITE_BALANCE_LOCK_SUPPORTED));
-  }
-
-  private boolean isSupported(String value, List<String> supported) {
-    return supported != null && supported.indexOf(value) >= 0;
-  }
-
-  private boolean isMeteringAreaSupported(Parameters params) {
-    return params.getMaxNumMeteringAreas() > 0;
-  }
-
-  private boolean isFocusAreaSupported(Parameters params) {
-    return (params.getMaxNumFocusAreas() > 0
-        && isSupported(Parameters.FOCUS_MODE_AUTO, params.getSupportedFocusModes()));
-  }
-
-  private void prepareMatrix(Matrix matrix, boolean mirror, int viewWidth, int viewHeight) {
-    // Need mirror for front camera.
-    matrix.setScale(mirror ? -1 : 1, 1);
-    // Camera driver coordinates range from (-1000, -1000) to (1000, 1000).
-    // UI coordinates range from (0, 0) to (width, height).
-    matrix.postScale(viewWidth / 2000f, viewHeight / 2000f);
-    matrix.postTranslate(viewWidth / 2f, viewHeight / 2f);
-  }
-
-  private void rectFToRect(RectF rectF, Rect rect) {
-    rect.left = Math.round(rectF.left);
-    rect.top = Math.round(rectF.top);
-    rect.right = Math.round(rectF.right);
-    rect.bottom = Math.round(rectF.bottom);
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/camerafocus/OverlayRenderer.java b/java/com/android/dialer/callcomposer/camera/camerafocus/OverlayRenderer.java
deleted file mode 100644
index ac9512e..0000000
--- a/java/com/android/dialer/callcomposer/camera/camerafocus/OverlayRenderer.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.camerafocus;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.view.MotionEvent;
-
-/** Abstract class that all Camera overlays should implement. */
-public abstract class OverlayRenderer implements RenderOverlay.Renderer {
-
-  protected RenderOverlay overlay;
-
-  private int left;
-  private int top;
-  private int right;
-  private int bottom;
-  private boolean visible;
-
-  public void setVisible(boolean vis) {
-    visible = vis;
-    update();
-  }
-
-  public boolean isVisible() {
-    return visible;
-  }
-
-  // default does not handle touch
-  @Override
-  public boolean handlesTouch() {
-    return false;
-  }
-
-  @Override
-  public boolean onTouchEvent(MotionEvent evt) {
-    return false;
-  }
-
-  public abstract void onDraw(Canvas canvas);
-
-  @Override
-  public void draw(Canvas canvas) {
-    if (visible) {
-      onDraw(canvas);
-    }
-  }
-
-  @Override
-  public void setOverlay(RenderOverlay overlay) {
-    this.overlay = overlay;
-  }
-
-  @Override
-  public void layout(int left, int top, int right, int bottom) {
-    this.left = left;
-    this.right = right;
-    this.top = top;
-    this.bottom = bottom;
-  }
-
-  protected Context getContext() {
-    if (overlay != null) {
-      return overlay.getContext();
-    } else {
-      return null;
-    }
-  }
-
-  public int getWidth() {
-    return right - left;
-  }
-
-  public int getHeight() {
-    return bottom - top;
-  }
-
-  protected void update() {
-    if (overlay != null) {
-      overlay.update();
-    }
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/camerafocus/PieItem.java b/java/com/android/dialer/callcomposer/camera/camerafocus/PieItem.java
deleted file mode 100644
index 1c44295..0000000
--- a/java/com/android/dialer/callcomposer/camera/camerafocus/PieItem.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.camerafocus;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Path;
-import android.graphics.drawable.Drawable;
-import java.util.List;
-
-/** Pie menu item. */
-public class PieItem {
-
-  /** Listener to detect pie item clicks. */
-  public interface OnClickListener {
-    void onClick(PieItem item);
-  }
-
-  private Drawable drawable;
-  private int level;
-  private float center;
-  private float start;
-  private float sweep;
-  private float animate;
-  private int inner;
-  private int outer;
-  private boolean selected;
-  private boolean enabled;
-  private List<PieItem> items;
-  private Path path;
-  private OnClickListener onClickListener;
-  private float alpha;
-
-  // Gray out the view when disabled
-  private static final float ENABLED_ALPHA = 1;
-  private static final float DISABLED_ALPHA = (float) 0.3;
-
-  public PieItem(Drawable drawable, int level) {
-    this.drawable = drawable;
-    this.level = level;
-    setAlpha(1f);
-    enabled = true;
-    setAnimationAngle(getAnimationAngle());
-    start = -1;
-    center = -1;
-  }
-
-  public boolean hasItems() {
-    return items != null;
-  }
-
-  public List<PieItem> getItems() {
-    return items;
-  }
-
-  public void setPath(Path p) {
-    path = p;
-  }
-
-  public Path getPath() {
-    return path;
-  }
-
-  public void setAlpha(float alpha) {
-    this.alpha = alpha;
-    drawable.setAlpha((int) (255 * alpha));
-  }
-
-  public void setAnimationAngle(float a) {
-    animate = a;
-  }
-
-  private float getAnimationAngle() {
-    return animate;
-  }
-
-  public void setEnabled(boolean enabled) {
-    this.enabled = enabled;
-    if (this.enabled) {
-      setAlpha(ENABLED_ALPHA);
-    } else {
-      setAlpha(DISABLED_ALPHA);
-    }
-  }
-
-  public boolean isEnabled() {
-    return enabled;
-  }
-
-  public void setSelected(boolean s) {
-    selected = s;
-  }
-
-  public boolean isSelected() {
-    return selected;
-  }
-
-  public int getLevel() {
-    return level;
-  }
-
-  public void setGeometry(float st, float sw, int inside, int outside) {
-    start = st;
-    sweep = sw;
-    inner = inside;
-    outer = outside;
-  }
-
-  public float getCenter() {
-    return center;
-  }
-
-  public float getStart() {
-    return start;
-  }
-
-  public float getStartAngle() {
-    return start + animate;
-  }
-
-  public float getSweep() {
-    return sweep;
-  }
-
-  public int getInnerRadius() {
-    return inner;
-  }
-
-  public int getOuterRadius() {
-    return outer;
-  }
-
-  public void setOnClickListener(OnClickListener listener) {
-    onClickListener = listener;
-  }
-
-  public void performClick() {
-    if (onClickListener != null) {
-      onClickListener.onClick(this);
-    }
-  }
-
-  public int getIntrinsicWidth() {
-    return drawable.getIntrinsicWidth();
-  }
-
-  public int getIntrinsicHeight() {
-    return drawable.getIntrinsicHeight();
-  }
-
-  public void setBounds(int left, int top, int right, int bottom) {
-    drawable.setBounds(left, top, right, bottom);
-  }
-
-  public void draw(Canvas canvas) {
-    drawable.draw(canvas);
-  }
-
-  public void setImageResource(Context context, int resId) {
-    Drawable d = context.getResources().getDrawable(resId).mutate();
-    d.setBounds(drawable.getBounds());
-    drawable = d;
-    setAlpha(alpha);
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/camerafocus/PieRenderer.java b/java/com/android/dialer/callcomposer/camera/camerafocus/PieRenderer.java
deleted file mode 100644
index 7629252..0000000
--- a/java/com/android/dialer/callcomposer/camera/camerafocus/PieRenderer.java
+++ /dev/null
@@ -1,815 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.camerafocus;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.Path;
-import android.graphics.Point;
-import android.graphics.PointF;
-import android.graphics.RectF;
-import android.os.Handler;
-import android.os.Message;
-import android.view.MotionEvent;
-import android.view.ViewConfiguration;
-import android.view.animation.Animation;
-import android.view.animation.Animation.AnimationListener;
-import android.view.animation.LinearInterpolator;
-import android.view.animation.Transformation;
-import java.util.ArrayList;
-import java.util.List;
-
-/** Used to draw and render the pie item focus indicator. */
-public class PieRenderer extends OverlayRenderer implements FocusIndicator {
-  // Sometimes continuous autofocus starts and stops several times quickly.
-  // These states are used to make sure the animation is run for at least some
-  // time.
-  private volatile int state;
-  private ScaleAnimation animation = new ScaleAnimation();
-  private static final int STATE_IDLE = 0;
-  private static final int STATE_FOCUSING = 1;
-  private static final int STATE_FINISHING = 2;
-  private static final int STATE_PIE = 8;
-
-  private Runnable disappear = new Disappear();
-  private Animation.AnimationListener endAction = new EndAction();
-  private static final int SCALING_UP_TIME = 600;
-  private static final int SCALING_DOWN_TIME = 100;
-  private static final int DISAPPEAR_TIMEOUT = 200;
-  private static final int DIAL_HORIZONTAL = 157;
-
-  private static final long PIE_FADE_IN_DURATION = 200;
-  private static final long PIE_XFADE_DURATION = 200;
-  private static final long PIE_SELECT_FADE_DURATION = 300;
-
-  private static final int MSG_OPEN = 0;
-  private static final int MSG_CLOSE = 1;
-  private static final float PIE_SWEEP = (float) (Math.PI * 2 / 3);
-  // geometry
-  private Point center;
-  private int radius;
-  private int radiusInc;
-
-  // the detection if touch is inside a slice is offset
-  // inbounds by this amount to allow the selection to show before the
-  // finger covers it
-  private int touchOffset;
-
-  private List<PieItem> items;
-
-  private PieItem openItem;
-
-  private Paint selectedPaint;
-  private Paint subPaint;
-
-  // touch handling
-  private PieItem currentItem;
-
-  private Paint focusPaint;
-  private int successColor;
-  private int failColor;
-  private int circleSize;
-  private int focusX;
-  private int focusY;
-  private int centerX;
-  private int centerY;
-
-  private int dialAngle;
-  private RectF circle;
-  private RectF dial;
-  private Point point1;
-  private Point point2;
-  private int startAnimationAngle;
-  private boolean focused;
-  private int innerOffset;
-  private int outerStroke;
-  private int innerStroke;
-  private boolean tapMode;
-  private boolean blockFocus;
-  private int touchSlopSquared;
-  private Point down;
-  private boolean opening;
-  private LinearAnimation xFade;
-  private LinearAnimation fadeIn;
-  private volatile boolean focusCancelled;
-
-  private Handler handler =
-      new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-          switch (msg.what) {
-            case MSG_OPEN:
-              if (listener != null) {
-                listener.onPieOpened(center.x, center.y);
-              }
-              break;
-            case MSG_CLOSE:
-              if (listener != null) {
-                listener.onPieClosed();
-              }
-              break;
-          }
-        }
-      };
-
-  private PieListener listener;
-
-  /** Listener for the pie item to communicate back to the renderer. */
-  public interface PieListener {
-    void onPieOpened(int centerX, int centerY);
-
-    void onPieClosed();
-  }
-
-  public void setPieListener(PieListener pl) {
-    listener = pl;
-  }
-
-  public PieRenderer(Context context) {
-    init(context);
-  }
-
-  private void init(Context ctx) {
-    setVisible(false);
-    items = new ArrayList<PieItem>();
-    Resources res = ctx.getResources();
-    radius = res.getDimensionPixelSize(R.dimen.pie_radius_start);
-    circleSize = radius - res.getDimensionPixelSize(R.dimen.focus_radius_offset);
-    radiusInc = res.getDimensionPixelSize(R.dimen.pie_radius_increment);
-    touchOffset = res.getDimensionPixelSize(R.dimen.pie_touch_offset);
-    center = new Point(0, 0);
-    selectedPaint = new Paint();
-    selectedPaint.setColor(Color.argb(255, 51, 181, 229));
-    selectedPaint.setAntiAlias(true);
-    subPaint = new Paint();
-    subPaint.setAntiAlias(true);
-    subPaint.setColor(Color.argb(200, 250, 230, 128));
-    focusPaint = new Paint();
-    focusPaint.setAntiAlias(true);
-    focusPaint.setColor(Color.WHITE);
-    focusPaint.setStyle(Paint.Style.STROKE);
-    successColor = Color.GREEN;
-    failColor = Color.RED;
-    circle = new RectF();
-    dial = new RectF();
-    point1 = new Point();
-    point2 = new Point();
-    innerOffset = res.getDimensionPixelSize(R.dimen.focus_inner_offset);
-    outerStroke = res.getDimensionPixelSize(R.dimen.focus_outer_stroke);
-    innerStroke = res.getDimensionPixelSize(R.dimen.focus_inner_stroke);
-    state = STATE_IDLE;
-    blockFocus = false;
-    touchSlopSquared = ViewConfiguration.get(ctx).getScaledTouchSlop();
-    touchSlopSquared = touchSlopSquared * touchSlopSquared;
-    down = new Point();
-  }
-
-  public boolean showsItems() {
-    return tapMode;
-  }
-
-  public void addItem(PieItem item) {
-    // add the item to the pie itself
-    items.add(item);
-  }
-
-  public void removeItem(PieItem item) {
-    items.remove(item);
-  }
-
-  public void clearItems() {
-    items.clear();
-  }
-
-  public void showInCenter() {
-    if ((state == STATE_PIE) && isVisible()) {
-      tapMode = false;
-      show(false);
-    } else {
-      if (state != STATE_IDLE) {
-        cancelFocus();
-      }
-      state = STATE_PIE;
-      setCenter(centerX, centerY);
-      tapMode = true;
-      show(true);
-    }
-  }
-
-  public void hide() {
-    show(false);
-  }
-
-  /**
-   * guaranteed has center set
-   *
-   * @param show
-   */
-  private void show(boolean show) {
-    if (show) {
-      state = STATE_PIE;
-      // ensure clean state
-      currentItem = null;
-      openItem = null;
-      for (PieItem item : items) {
-        item.setSelected(false);
-      }
-      layoutPie();
-      fadeIn();
-    } else {
-      state = STATE_IDLE;
-      tapMode = false;
-      if (xFade != null) {
-        xFade.cancel();
-      }
-    }
-    setVisible(show);
-    handler.sendEmptyMessage(show ? MSG_OPEN : MSG_CLOSE);
-  }
-
-  private void fadeIn() {
-    fadeIn = new LinearAnimation(0, 1);
-    fadeIn.setDuration(PIE_FADE_IN_DURATION);
-    fadeIn.setAnimationListener(
-        new AnimationListener() {
-          @Override
-          public void onAnimationStart(Animation animation) {}
-
-          @Override
-          public void onAnimationEnd(Animation animation) {
-            fadeIn = null;
-          }
-
-          @Override
-          public void onAnimationRepeat(Animation animation) {}
-        });
-    fadeIn.startNow();
-    overlay.startAnimation(fadeIn);
-  }
-
-  public void setCenter(int x, int y) {
-    center.x = x;
-    center.y = y;
-    // when using the pie menu, align the focus ring
-    alignFocus(x, y);
-  }
-
-  private void layoutPie() {
-    int rgap = 2;
-    int inner = radius + rgap;
-    int outer = radius + radiusInc - rgap;
-    int gap = 1;
-    layoutItems(items, (float) (Math.PI / 2), inner, outer, gap);
-  }
-
-  private void layoutItems(List<PieItem> items, float centerAngle, int inner, int outer, int gap) {
-    float emptyangle = PIE_SWEEP / 16;
-    float sweep = (PIE_SWEEP - 2 * emptyangle) / items.size();
-    float angle = centerAngle - PIE_SWEEP / 2 + emptyangle + sweep / 2;
-    // check if we have custom geometry
-    // first item we find triggers custom sweep for all
-    // this allows us to re-use the path
-    for (PieItem item : items) {
-      if (item.getCenter() >= 0) {
-        sweep = item.getSweep();
-        break;
-      }
-    }
-    Path path = makeSlice(getDegrees(0) - gap, getDegrees(sweep) + gap, outer, inner, center);
-    for (PieItem item : items) {
-      // shared between items
-      item.setPath(path);
-      if (item.getCenter() >= 0) {
-        angle = item.getCenter();
-      }
-      int w = item.getIntrinsicWidth();
-      int h = item.getIntrinsicHeight();
-      // move views to outer border
-      int r = inner + (outer - inner) * 2 / 3;
-      int x = (int) (r * Math.cos(angle));
-      int y = center.y - (int) (r * Math.sin(angle)) - h / 2;
-      x = center.x + x - w / 2;
-      item.setBounds(x, y, x + w, y + h);
-      float itemstart = angle - sweep / 2;
-      item.setGeometry(itemstart, sweep, inner, outer);
-      if (item.hasItems()) {
-        layoutItems(item.getItems(), angle, inner, outer + radiusInc / 2, gap);
-      }
-      angle += sweep;
-    }
-  }
-
-  private Path makeSlice(float start, float end, int outer, int inner, Point center) {
-    RectF bb = new RectF(center.x - outer, center.y - outer, center.x + outer, center.y + outer);
-    RectF bbi = new RectF(center.x - inner, center.y - inner, center.x + inner, center.y + inner);
-    Path path = new Path();
-    path.arcTo(bb, start, end - start, true);
-    path.arcTo(bbi, end, start - end);
-    path.close();
-    return path;
-  }
-
-  /**
-   * converts a
-   *
-   * @param angle from 0..PI to Android degrees (clockwise starting at 3 o'clock)
-   * @return skia angle
-   */
-  private float getDegrees(double angle) {
-    return (float) (360 - 180 * angle / Math.PI);
-  }
-
-  private void startFadeOut() {
-    overlay
-        .animate()
-        .alpha(0)
-        .setListener(
-            new AnimatorListenerAdapter() {
-              @Override
-              public void onAnimationEnd(Animator animation) {
-                deselect();
-                show(false);
-                overlay.setAlpha(1);
-                super.onAnimationEnd(animation);
-              }
-            })
-        .setDuration(PIE_SELECT_FADE_DURATION);
-  }
-
-  @Override
-  public void onDraw(Canvas canvas) {
-    float alpha = 1;
-    if (xFade != null) {
-      alpha = xFade.getValue();
-    } else if (fadeIn != null) {
-      alpha = fadeIn.getValue();
-    }
-    int state = canvas.save();
-    if (fadeIn != null) {
-      float sf = 0.9f + alpha * 0.1f;
-      canvas.scale(sf, sf, center.x, center.y);
-    }
-    drawFocus(canvas);
-    if (this.state == STATE_FINISHING) {
-      canvas.restoreToCount(state);
-      return;
-    }
-    if ((openItem == null) || (xFade != null)) {
-      // draw base menu
-      for (PieItem item : items) {
-        drawItem(canvas, item, alpha);
-      }
-    }
-    if (openItem != null) {
-      for (PieItem inner : openItem.getItems()) {
-        drawItem(canvas, inner, (xFade != null) ? (1 - 0.5f * alpha) : 1);
-      }
-    }
-    canvas.restoreToCount(state);
-  }
-
-  private void drawItem(Canvas canvas, PieItem item, float alpha) {
-    if (this.state == STATE_PIE) {
-      if (item.getPath() != null) {
-        if (item.isSelected()) {
-          Paint p = selectedPaint;
-          int state = canvas.save();
-          float r = getDegrees(item.getStartAngle());
-          canvas.rotate(r, center.x, center.y);
-          canvas.drawPath(item.getPath(), p);
-          canvas.restoreToCount(state);
-        }
-        alpha = alpha * (item.isEnabled() ? 1 : 0.3f);
-        // draw the item view
-        item.setAlpha(alpha);
-        item.draw(canvas);
-      }
-    }
-  }
-
-  @Override
-  public boolean onTouchEvent(MotionEvent evt) {
-    float x = evt.getX();
-    float y = evt.getY();
-    int action = evt.getActionMasked();
-    PointF polar = getPolar(x, y, !(tapMode));
-    if (MotionEvent.ACTION_DOWN == action) {
-      down.x = (int) evt.getX();
-      down.y = (int) evt.getY();
-      opening = false;
-      if (tapMode) {
-        PieItem item = findItem(polar);
-        if ((item != null) && (currentItem != item)) {
-          state = STATE_PIE;
-          onEnter(item);
-        }
-      } else {
-        setCenter((int) x, (int) y);
-        show(true);
-      }
-      return true;
-    } else if (MotionEvent.ACTION_UP == action) {
-      if (isVisible()) {
-        PieItem item = currentItem;
-        if (tapMode) {
-          item = findItem(polar);
-          if (item != null && opening) {
-            opening = false;
-            return true;
-          }
-        }
-        if (item == null) {
-          tapMode = false;
-          show(false);
-        } else if (!opening && !item.hasItems()) {
-          item.performClick();
-          startFadeOut();
-          tapMode = false;
-        }
-        return true;
-      }
-    } else if (MotionEvent.ACTION_CANCEL == action) {
-      if (isVisible() || tapMode) {
-        show(false);
-      }
-      deselect();
-      return false;
-    } else if (MotionEvent.ACTION_MOVE == action) {
-      if (polar.y < radius) {
-        if (openItem != null) {
-          openItem = null;
-        } else {
-          deselect();
-        }
-        return false;
-      }
-      PieItem item = findItem(polar);
-      boolean moved = hasMoved(evt);
-      if ((item != null) && (currentItem != item) && (!opening || moved)) {
-        // only select if we didn't just open or have moved past slop
-        opening = false;
-        if (moved) {
-          // switch back to swipe mode
-          tapMode = false;
-        }
-        onEnter(item);
-      }
-    }
-    return false;
-  }
-
-  private boolean hasMoved(MotionEvent e) {
-    return touchSlopSquared
-        < (e.getX() - down.x) * (e.getX() - down.x) + (e.getY() - down.y) * (e.getY() - down.y);
-  }
-
-  /**
-   * enter a slice for a view updates model only
-   *
-   * @param item
-   */
-  private void onEnter(PieItem item) {
-    if (currentItem != null) {
-      currentItem.setSelected(false);
-    }
-    if (item != null && item.isEnabled()) {
-      item.setSelected(true);
-      currentItem = item;
-      if ((currentItem != openItem) && currentItem.hasItems()) {
-        openCurrentItem();
-      }
-    } else {
-      currentItem = null;
-    }
-  }
-
-  private void deselect() {
-    if (currentItem != null) {
-      currentItem.setSelected(false);
-    }
-    if (openItem != null) {
-      openItem = null;
-    }
-    currentItem = null;
-  }
-
-  private void openCurrentItem() {
-    if ((currentItem != null) && currentItem.hasItems()) {
-      currentItem.setSelected(false);
-      openItem = currentItem;
-      opening = true;
-      xFade = new LinearAnimation(1, 0);
-      xFade.setDuration(PIE_XFADE_DURATION);
-      xFade.setAnimationListener(
-          new AnimationListener() {
-            @Override
-            public void onAnimationStart(Animation animation) {}
-
-            @Override
-            public void onAnimationEnd(Animation animation) {
-              xFade = null;
-            }
-
-            @Override
-            public void onAnimationRepeat(Animation animation) {}
-          });
-      xFade.startNow();
-      overlay.startAnimation(xFade);
-    }
-  }
-
-  private PointF getPolar(float x, float y, boolean useOffset) {
-    PointF res = new PointF();
-    // get angle and radius from x/y
-    res.x = (float) Math.PI / 2;
-    x = x - center.x;
-    y = center.y - y;
-    res.y = (float) Math.sqrt(x * x + y * y);
-    if (x != 0) {
-      res.x = (float) Math.atan2(y, x);
-      if (res.x < 0) {
-        res.x = (float) (2 * Math.PI + res.x);
-      }
-    }
-    res.y = res.y + (useOffset ? touchOffset : 0);
-    return res;
-  }
-
-  /**
-   * @param polar x: angle, y: dist
-   * @return the item at angle/dist or null
-   */
-  private PieItem findItem(PointF polar) {
-    // find the matching item:
-    List<PieItem> items = (openItem != null) ? openItem.getItems() : this.items;
-    for (PieItem item : items) {
-      if (inside(polar, item)) {
-        return item;
-      }
-    }
-    return null;
-  }
-
-  private boolean inside(PointF polar, PieItem item) {
-    return (item.getInnerRadius() < polar.y)
-        && (item.getStartAngle() < polar.x)
-        && (item.getStartAngle() + item.getSweep() > polar.x)
-        && (!tapMode || (item.getOuterRadius() > polar.y));
-  }
-
-  @Override
-  public boolean handlesTouch() {
-    return true;
-  }
-
-  // focus specific code
-
-  public void setBlockFocus(boolean blocked) {
-    blockFocus = blocked;
-    if (blocked) {
-      clear();
-    }
-  }
-
-  public void setFocus(int x, int y) {
-    focusX = x;
-    focusY = y;
-    setCircle(focusX, focusY);
-  }
-
-  public void alignFocus(int x, int y) {
-    overlay.removeCallbacks(disappear);
-    animation.cancel();
-    animation.reset();
-    focusX = x;
-    focusY = y;
-    dialAngle = DIAL_HORIZONTAL;
-    setCircle(x, y);
-    focused = false;
-  }
-
-  public int getSize() {
-    return 2 * circleSize;
-  }
-
-  private int getRandomRange() {
-    return (int) (-60 + 120 * Math.random());
-  }
-
-  @Override
-  public void layout(int l, int t, int r, int b) {
-    super.layout(l, t, r, b);
-    centerX = (r - l) / 2;
-    centerY = (b - t) / 2;
-    focusX = centerX;
-    focusY = centerY;
-    setCircle(focusX, focusY);
-    if (isVisible() && state == STATE_PIE) {
-      setCenter(centerX, centerY);
-      layoutPie();
-    }
-  }
-
-  private void setCircle(int cx, int cy) {
-    circle.set(cx - circleSize, cy - circleSize, cx + circleSize, cy + circleSize);
-    dial.set(
-        cx - circleSize + innerOffset,
-        cy - circleSize + innerOffset,
-        cx + circleSize - innerOffset,
-        cy + circleSize - innerOffset);
-  }
-
-  public void drawFocus(Canvas canvas) {
-    if (blockFocus) {
-      return;
-    }
-    focusPaint.setStrokeWidth(outerStroke);
-    canvas.drawCircle((float) focusX, (float) focusY, (float) circleSize, focusPaint);
-    if (state == STATE_PIE) {
-      return;
-    }
-    int color = focusPaint.getColor();
-    if (state == STATE_FINISHING) {
-      focusPaint.setColor(focused ? successColor : failColor);
-    }
-    focusPaint.setStrokeWidth(innerStroke);
-    drawLine(canvas, dialAngle, focusPaint);
-    drawLine(canvas, dialAngle + 45, focusPaint);
-    drawLine(canvas, dialAngle + 180, focusPaint);
-    drawLine(canvas, dialAngle + 225, focusPaint);
-    canvas.save();
-    // rotate the arc instead of its offset to better use framework's shape caching
-    canvas.rotate(dialAngle, focusX, focusY);
-    canvas.drawArc(dial, 0, 45, false, focusPaint);
-    canvas.drawArc(dial, 180, 45, false, focusPaint);
-    canvas.restore();
-    focusPaint.setColor(color);
-  }
-
-  private void drawLine(Canvas canvas, int angle, Paint p) {
-    convertCart(angle, circleSize - innerOffset, point1);
-    convertCart(angle, circleSize - innerOffset + innerOffset / 3, point2);
-    canvas.drawLine(point1.x + focusX, point1.y + focusY, point2.x + focusX, point2.y + focusY, p);
-  }
-
-  private static void convertCart(int angle, int radius, Point out) {
-    double a = 2 * Math.PI * (angle % 360) / 360;
-    out.x = (int) (radius * Math.cos(a) + 0.5);
-    out.y = (int) (radius * Math.sin(a) + 0.5);
-  }
-
-  @Override
-  public void showStart() {
-    if (state == STATE_PIE) {
-      return;
-    }
-    cancelFocus();
-    startAnimationAngle = 67;
-    int range = getRandomRange();
-    startAnimation(SCALING_UP_TIME, false, startAnimationAngle, startAnimationAngle + range);
-    state = STATE_FOCUSING;
-  }
-
-  @Override
-  public void showSuccess(boolean timeout) {
-    if (state == STATE_FOCUSING) {
-      startAnimation(SCALING_DOWN_TIME, timeout, startAnimationAngle);
-      state = STATE_FINISHING;
-      focused = true;
-    }
-  }
-
-  @Override
-  public void showFail(boolean timeout) {
-    if (state == STATE_FOCUSING) {
-      startAnimation(SCALING_DOWN_TIME, timeout, startAnimationAngle);
-      state = STATE_FINISHING;
-      focused = false;
-    }
-  }
-
-  private void cancelFocus() {
-    focusCancelled = true;
-    overlay.removeCallbacks(disappear);
-    if (animation != null) {
-      animation.cancel();
-    }
-    focusCancelled = false;
-    focused = false;
-    state = STATE_IDLE;
-  }
-
-  @Override
-  public void clear() {
-    if (state == STATE_PIE) {
-      return;
-    }
-    cancelFocus();
-    overlay.post(disappear);
-  }
-
-  private void startAnimation(long duration, boolean timeout, float toScale) {
-    startAnimation(duration, timeout, dialAngle, toScale);
-  }
-
-  private void startAnimation(long duration, boolean timeout, float fromScale, float toScale) {
-    setVisible(true);
-    animation.reset();
-    animation.setDuration(duration);
-    animation.setScale(fromScale, toScale);
-    animation.setAnimationListener(timeout ? endAction : null);
-    overlay.startAnimation(animation);
-    update();
-  }
-
-  private class EndAction implements Animation.AnimationListener {
-    @Override
-    public void onAnimationEnd(Animation animation) {
-      // Keep the focus indicator for some time.
-      if (!focusCancelled) {
-        overlay.postDelayed(disappear, DISAPPEAR_TIMEOUT);
-      }
-    }
-
-    @Override
-    public void onAnimationRepeat(Animation animation) {}
-
-    @Override
-    public void onAnimationStart(Animation animation) {}
-  }
-
-  private class Disappear implements Runnable {
-    @Override
-    public void run() {
-      if (state == STATE_PIE) {
-        return;
-      }
-      setVisible(false);
-      focusX = centerX;
-      focusY = centerY;
-      state = STATE_IDLE;
-      setCircle(focusX, focusY);
-      focused = false;
-    }
-  }
-
-  private class ScaleAnimation extends Animation {
-    private float from = 1f;
-    private float to = 1f;
-
-    public ScaleAnimation() {
-      setFillAfter(true);
-    }
-
-    public void setScale(float from, float to) {
-      this.from = from;
-      this.to = to;
-    }
-
-    @Override
-    protected void applyTransformation(float interpolatedTime, Transformation t) {
-      dialAngle = (int) (from + (to - from) * interpolatedTime);
-    }
-  }
-
-  private static class LinearAnimation extends Animation {
-    private float from;
-    private float to;
-    private float value;
-
-    public LinearAnimation(float from, float to) {
-      setFillAfter(true);
-      setInterpolator(new LinearInterpolator());
-      this.from = from;
-      this.to = to;
-    }
-
-    public float getValue() {
-      return value;
-    }
-
-    @Override
-    protected void applyTransformation(float interpolatedTime, Transformation t) {
-      value = (from + (to - from) * interpolatedTime);
-    }
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/camerafocus/RenderOverlay.java b/java/com/android/dialer/callcomposer/camera/camerafocus/RenderOverlay.java
deleted file mode 100644
index 458e852..0000000
--- a/java/com/android/dialer/callcomposer/camera/camerafocus/RenderOverlay.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.camerafocus;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.graphics.Canvas;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.FrameLayout;
-import java.util.ArrayList;
-import java.util.List;
-
-/** Focusing overlay. */
-public class RenderOverlay extends FrameLayout {
-
-  /** Render interface. */
-  interface Renderer {
-    boolean handlesTouch();
-
-    boolean onTouchEvent(MotionEvent evt);
-
-    void setOverlay(RenderOverlay overlay);
-
-    void layout(int left, int top, int right, int bottom);
-
-    void draw(Canvas canvas);
-  }
-
-  private RenderView renderView;
-  private List<Renderer> clients;
-
-  // reverse list of touch clients
-  private List<Renderer> touchClients;
-  private int[] position = new int[2];
-
-  public RenderOverlay(Context context, AttributeSet attrs) {
-    super(context, attrs);
-    renderView = new RenderView(context);
-    addView(renderView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
-    clients = new ArrayList<>(10);
-    touchClients = new ArrayList<>(10);
-    setWillNotDraw(false);
-
-    addRenderer(new PieRenderer(context));
-  }
-
-  public PieRenderer getPieRenderer() {
-    for (Renderer renderer : clients) {
-      if (renderer instanceof PieRenderer) {
-        return (PieRenderer) renderer;
-      }
-    }
-    return null;
-  }
-
-  public void addRenderer(Renderer renderer) {
-    clients.add(renderer);
-    renderer.setOverlay(this);
-    if (renderer.handlesTouch()) {
-      touchClients.add(0, renderer);
-    }
-    renderer.layout(getLeft(), getTop(), getRight(), getBottom());
-  }
-
-  public void addRenderer(int pos, Renderer renderer) {
-    clients.add(pos, renderer);
-    renderer.setOverlay(this);
-    renderer.layout(getLeft(), getTop(), getRight(), getBottom());
-  }
-
-  public void remove(Renderer renderer) {
-    clients.remove(renderer);
-    renderer.setOverlay(null);
-  }
-
-  @Override
-  public boolean dispatchTouchEvent(MotionEvent m) {
-    return false;
-  }
-
-  private void adjustPosition() {
-    getLocationInWindow(position);
-  }
-
-  public void update() {
-    renderView.invalidate();
-  }
-
-  @SuppressLint("ClickableViewAccessibility")
-  private class RenderView extends View {
-
-    public RenderView(Context context) {
-      super(context);
-      setWillNotDraw(false);
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent evt) {
-      if (touchClients != null) {
-        boolean res = false;
-        for (Renderer client : touchClients) {
-          res |= client.onTouchEvent(evt);
-        }
-        return res;
-      }
-      return false;
-    }
-
-    @Override
-    public void onLayout(boolean changed, int left, int top, int right, int bottom) {
-      adjustPosition();
-      super.onLayout(changed, left, top, right, bottom);
-      if (clients == null) {
-        return;
-      }
-      for (Renderer renderer : clients) {
-        renderer.layout(left, top, right, bottom);
-      }
-    }
-
-    @Override
-    public void draw(Canvas canvas) {
-      super.draw(canvas);
-      if (clients == null) {
-        return;
-      }
-      boolean redraw = false;
-      for (Renderer renderer : clients) {
-        renderer.draw(canvas);
-        redraw = redraw || ((OverlayRenderer) renderer).isVisible();
-      }
-      if (redraw) {
-        invalidate();
-      }
-    }
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/camerafocus/res/values/dimens.xml b/java/com/android/dialer/callcomposer/camera/camerafocus/res/values/dimens.xml
deleted file mode 100644
index fba631b..0000000
--- a/java/com/android/dialer/callcomposer/camera/camerafocus/res/values/dimens.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<resources>
-  <!-- Camera focus indicator values -->
-  <dimen name="pie_radius_start">40dp</dimen>
-  <dimen name="pie_radius_increment">30dp</dimen>
-  <dimen name="pie_touch_offset">20dp</dimen>
-  <dimen name="focus_radius_offset">8dp</dimen>
-  <dimen name="focus_inner_offset">12dp</dimen>
-  <dimen name="focus_outer_stroke">3dp</dimen>
-  <dimen name="focus_inner_stroke">2dp</dimen>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/camera/exif/CountedDataInputStream.java b/java/com/android/dialer/callcomposer/camera/exif/CountedDataInputStream.java
deleted file mode 100644
index cb5143a..0000000
--- a/java/com/android/dialer/callcomposer/camera/exif/CountedDataInputStream.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.exif;
-
-import com.android.dialer.common.Assert;
-import java.io.EOFException;
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.charset.Charset;
-
-class CountedDataInputStream extends FilterInputStream {
-
-  private int count = 0;
-
-  // allocate a byte buffer for a long value;
-  private final byte[] byteArray = new byte[8];
-  private final ByteBuffer byteBuffer = ByteBuffer.wrap(byteArray);
-
-  CountedDataInputStream(InputStream in) {
-    super(in);
-  }
-
-  int getReadByteCount() {
-    return count;
-  }
-
-  @Override
-  public int read(byte[] b) throws IOException {
-    int r = in.read(b);
-    count += (r >= 0) ? r : 0;
-    return r;
-  }
-
-  @Override
-  public int read(byte[] b, int off, int len) throws IOException {
-    int r = in.read(b, off, len);
-    count += (r >= 0) ? r : 0;
-    return r;
-  }
-
-  @Override
-  public int read() throws IOException {
-    int r = in.read();
-    count += (r >= 0) ? 1 : 0;
-    return r;
-  }
-
-  @Override
-  public long skip(long length) throws IOException {
-    long skip = in.skip(length);
-    count += skip;
-    return skip;
-  }
-
-  private void skipOrThrow(long length) throws IOException {
-    if (skip(length) != length) {
-      throw new EOFException();
-    }
-  }
-
-  void skipTo(long target) throws IOException {
-    long cur = count;
-    long diff = target - cur;
-    Assert.checkArgument(diff >= 0);
-    skipOrThrow(diff);
-  }
-
-  private void readOrThrow(byte[] b, int off, int len) throws IOException {
-    int r = read(b, off, len);
-    if (r != len) {
-      throw new EOFException();
-    }
-  }
-
-  private void readOrThrow(byte[] b) throws IOException {
-    readOrThrow(b, 0, b.length);
-  }
-
-  void setByteOrder(ByteOrder order) {
-    byteBuffer.order(order);
-  }
-
-  ByteOrder getByteOrder() {
-    return byteBuffer.order();
-  }
-
-  short readShort() throws IOException {
-    readOrThrow(byteArray, 0, 2);
-    byteBuffer.rewind();
-    return byteBuffer.getShort();
-  }
-
-  int readUnsignedShort() throws IOException {
-    return readShort() & 0xffff;
-  }
-
-  int readInt() throws IOException {
-    readOrThrow(byteArray, 0, 4);
-    byteBuffer.rewind();
-    return byteBuffer.getInt();
-  }
-
-  long readUnsignedInt() throws IOException {
-    return readInt() & 0xffffffffL;
-  }
-
-  String readString(int n, Charset charset) throws IOException {
-    byte[] buf = new byte[n];
-    readOrThrow(buf);
-    return new String(buf, charset);
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/exif/ExifData.java b/java/com/android/dialer/callcomposer/camera/exif/ExifData.java
deleted file mode 100644
index fef9d87..0000000
--- a/java/com/android/dialer/callcomposer/camera/exif/ExifData.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.exif;
-
-/**
- * This class stores the EXIF header in IFDs according to the JPEG specification. It is the result
- * produced by {@link ExifReader}.
- *
- * @see ExifReader
- * @see IfdData
- */
-public class ExifData {
-
-  private final IfdData[] ifdDatas = new IfdData[IfdId.TYPE_IFD_COUNT];
-
-  /**
-   * Adds IFD data. If IFD data of the same type already exists, it will be replaced by the new
-   * data.
-   */
-  void addIfdData(IfdData data) {
-    ifdDatas[data.getId()] = data;
-  }
-
-  /** Returns the {@link IfdData} object corresponding to a given IFD if it exists or null. */
-  IfdData getIfdData(int ifdId) {
-    if (ExifTag.isValidIfd(ifdId)) {
-      return ifdDatas[ifdId];
-    }
-    return null;
-  }
-
-  /**
-   * Returns the tag with a given TID in the given IFD if the tag exists. Otherwise returns null.
-   */
-  protected ExifTag getTag(short tag, int ifd) {
-    IfdData ifdData = ifdDatas[ifd];
-    return (ifdData == null) ? null : ifdData.getTag(tag);
-  }
-
-  /**
-   * Adds the given ExifTag to its default IFD and returns an existing ExifTag with the same TID or
-   * null if none exist.
-   */
-  ExifTag addTag(ExifTag tag) {
-    if (tag != null) {
-      int ifd = tag.getIfd();
-      return addTag(tag, ifd);
-    }
-    return null;
-  }
-
-  /**
-   * Adds the given ExifTag to the given IFD and returns an existing ExifTag with the same TID or
-   * null if none exist.
-   */
-  private ExifTag addTag(ExifTag tag, int ifdId) {
-    if (tag != null && ExifTag.isValidIfd(ifdId)) {
-      IfdData ifdData = getOrCreateIfdData(ifdId);
-      return ifdData.setTag(tag);
-    }
-    return null;
-  }
-
-  /**
-   * Returns the {@link IfdData} object corresponding to a given IFD or generates one if none exist.
-   */
-  private IfdData getOrCreateIfdData(int ifdId) {
-    IfdData ifdData = ifdDatas[ifdId];
-    if (ifdData == null) {
-      ifdData = new IfdData(ifdId);
-      ifdDatas[ifdId] = ifdData;
-    }
-    return ifdData;
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/exif/ExifInterface.java b/java/com/android/dialer/callcomposer/camera/exif/ExifInterface.java
deleted file mode 100644
index 737401f..0000000
--- a/java/com/android/dialer/callcomposer/camera/exif/ExifInterface.java
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.exif;
-
-import android.annotation.SuppressLint;
-import android.graphics.Bitmap;
-import android.util.SparseIntArray;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.HashSet;
-import java.util.TimeZone;
-
-/**
- * This class provides methods and constants for reading and writing jpeg file metadata. It contains
- * a collection of ExifTags, and a collection of definitions for creating valid ExifTags. The
- * collection of ExifTags can be updated by: reading new ones from a file, deleting or adding
- * existing ones, or building new ExifTags from a tag definition. These ExifTags can be written to a
- * valid jpeg image as exif metadata.
- *
- * <p>Each ExifTag has a tag ID (TID) and is stored in a specific image file directory (IFD) as
- * specified by the exif standard. A tag definition can be looked up with a constant that is a
- * combination of TID and IFD. This definition has information about the type, number of components,
- * and valid IFDs for a tag.
- *
- * @see ExifTag
- */
-public class ExifInterface {
-  private static final int IFD_NULL = -1;
-  static final int DEFINITION_NULL = 0;
-
-  /** Tag constants for Jeita EXIF 2.2 */
-  // IFD 0
-  public static final int TAG_ORIENTATION = defineTag(IfdId.TYPE_IFD_0, (short) 0x0112);
-
-  static final int TAG_EXIF_IFD = defineTag(IfdId.TYPE_IFD_0, (short) 0x8769);
-  static final int TAG_GPS_IFD = defineTag(IfdId.TYPE_IFD_0, (short) 0x8825);
-  static final int TAG_STRIP_OFFSETS = defineTag(IfdId.TYPE_IFD_0, (short) 0x0111);
-  static final int TAG_STRIP_BYTE_COUNTS = defineTag(IfdId.TYPE_IFD_0, (short) 0x0117);
-  // IFD 1
-  static final int TAG_JPEG_INTERCHANGE_FORMAT = defineTag(IfdId.TYPE_IFD_1, (short) 0x0201);
-  static final int TAG_JPEG_INTERCHANGE_FORMAT_LENGTH = defineTag(IfdId.TYPE_IFD_1, (short) 0x0202);
-  // IFD Exif Tags
-  static final int TAG_INTEROPERABILITY_IFD = defineTag(IfdId.TYPE_IFD_EXIF, (short) 0xA005);
-
-  /** Tags that contain offset markers. These are included in the banned defines. */
-  private static HashSet<Short> offsetTags = new HashSet<>();
-
-  static {
-    offsetTags.add(getTrueTagKey(TAG_GPS_IFD));
-    offsetTags.add(getTrueTagKey(TAG_EXIF_IFD));
-    offsetTags.add(getTrueTagKey(TAG_JPEG_INTERCHANGE_FORMAT));
-    offsetTags.add(getTrueTagKey(TAG_INTEROPERABILITY_IFD));
-    offsetTags.add(getTrueTagKey(TAG_STRIP_OFFSETS));
-  }
-
-  private static final String NULL_ARGUMENT_STRING = "Argument is null";
-
-  private static final String GPS_DATE_FORMAT_STR = "yyyy:MM:dd";
-
-  private ExifData data = new ExifData();
-
-  @SuppressLint("SimpleDateFormat")
-  public ExifInterface() {
-    DateFormat mGPSDateStampFormat = new SimpleDateFormat(GPS_DATE_FORMAT_STR);
-    mGPSDateStampFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
-  }
-
-  /**
-   * Reads the exif tags from a byte array, clearing this ExifInterface object's existing exif tags.
-   *
-   * @param jpeg a byte array containing a jpeg compressed image.
-   * @throws java.io.IOException
-   */
-  public void readExif(byte[] jpeg) throws IOException {
-    readExif(new ByteArrayInputStream(jpeg));
-  }
-
-  /**
-   * Reads the exif tags from an InputStream, clearing this ExifInterface object's existing exif
-   * tags.
-   *
-   * @param inStream an InputStream containing a jpeg compressed image.
-   * @throws java.io.IOException
-   */
-  private void readExif(InputStream inStream) throws IOException {
-    if (inStream == null) {
-      throw new IllegalArgumentException(NULL_ARGUMENT_STRING);
-    }
-    ExifData d;
-    try {
-      d = new ExifReader(this).read(inStream);
-    } catch (ExifInvalidFormatException e) {
-      throw new IOException("Invalid exif format : " + e);
-    }
-    data = d;
-  }
-
-  /** Returns the TID for a tag constant. */
-  static short getTrueTagKey(int tag) {
-    // Truncate
-    return (short) tag;
-  }
-
-  /** Returns the constant representing a tag with a given TID and default IFD. */
-  private static int defineTag(int ifdId, short tagId) {
-    return (tagId & 0x0000ffff) | (ifdId << 16);
-  }
-
-  static boolean isIfdAllowed(int info, int ifd) {
-    int[] ifds = IfdData.getIfds();
-    int ifdFlags = getAllowedIfdFlagsFromInfo(info);
-    for (int i = 0; i < ifds.length; i++) {
-      if (ifd == ifds[i] && ((ifdFlags >> i) & 1) == 1) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  private static int getAllowedIfdFlagsFromInfo(int info) {
-    return info >>> 24;
-  }
-
-  /**
-   * Returns true if tag TID is one of the following: {@code TAG_EXIF_IFD}, {@code TAG_GPS_IFD},
-   * {@code TAG_JPEG_INTERCHANGE_FORMAT}, {@code TAG_STRIP_OFFSETS}, {@code
-   * TAG_INTEROPERABILITY_IFD}
-   *
-   * <p>Note: defining tags with these TID's is disallowed.
-   *
-   * @param tag a tag's TID (can be obtained from a defined tag constant with {@link
-   *     #getTrueTagKey}).
-   * @return true if the TID is that of an offset tag.
-   */
-  static boolean isOffsetTag(short tag) {
-    return offsetTags.contains(tag);
-  }
-
-  private SparseIntArray tagInfo = null;
-
-  SparseIntArray getTagInfo() {
-    if (tagInfo == null) {
-      tagInfo = new SparseIntArray();
-      initTagInfo();
-    }
-    return tagInfo;
-  }
-
-  private void initTagInfo() {
-    /**
-     * We put tag information in a 4-bytes integer. The first byte a bitmask representing the
-     * allowed IFDs of the tag, the second byte is the data type, and the last two byte are a short
-     * value indicating the default component count of this tag.
-     */
-    // IFD0 tags
-    int[] ifdAllowedIfds = {IfdId.TYPE_IFD_0, IfdId.TYPE_IFD_1};
-    int ifdFlags = getFlagsFromAllowedIfds(ifdAllowedIfds) << 24;
-    tagInfo.put(ExifInterface.TAG_STRIP_OFFSETS, ifdFlags | ExifTag.TYPE_UNSIGNED_LONG << 16);
-    tagInfo.put(ExifInterface.TAG_EXIF_IFD, ifdFlags | ExifTag.TYPE_UNSIGNED_LONG << 16 | 1);
-    tagInfo.put(ExifInterface.TAG_GPS_IFD, ifdFlags | ExifTag.TYPE_UNSIGNED_LONG << 16 | 1);
-    tagInfo.put(ExifInterface.TAG_ORIENTATION, ifdFlags | ExifTag.TYPE_UNSIGNED_SHORT << 16 | 1);
-    tagInfo.put(ExifInterface.TAG_STRIP_BYTE_COUNTS, ifdFlags | ExifTag.TYPE_UNSIGNED_LONG << 16);
-    // IFD1 tags
-    int[] ifd1AllowedIfds = {IfdId.TYPE_IFD_1};
-    int ifdFlags1 = getFlagsFromAllowedIfds(ifd1AllowedIfds) << 24;
-    tagInfo.put(
-        ExifInterface.TAG_JPEG_INTERCHANGE_FORMAT,
-        ifdFlags1 | ExifTag.TYPE_UNSIGNED_LONG << 16 | 1);
-    tagInfo.put(
-        ExifInterface.TAG_JPEG_INTERCHANGE_FORMAT_LENGTH,
-        ifdFlags1 | ExifTag.TYPE_UNSIGNED_LONG << 16 | 1);
-    // Exif tags
-    int[] exifAllowedIfds = {IfdId.TYPE_IFD_EXIF};
-    int exifFlags = getFlagsFromAllowedIfds(exifAllowedIfds) << 24;
-    tagInfo.put(
-        ExifInterface.TAG_INTEROPERABILITY_IFD, exifFlags | ExifTag.TYPE_UNSIGNED_LONG << 16 | 1);
-  }
-
-  private static int getFlagsFromAllowedIfds(int[] allowedIfds) {
-    if (allowedIfds == null || allowedIfds.length == 0) {
-      return 0;
-    }
-    int flags = 0;
-    int[] ifds = IfdData.getIfds();
-    for (int i = 0; i < IfdId.TYPE_IFD_COUNT; i++) {
-      for (int j : allowedIfds) {
-        if (ifds[i] == j) {
-          flags |= 1 << i;
-          break;
-        }
-      }
-    }
-    return flags;
-  }
-
-  private Integer getTagIntValue(int tagId, int ifdId) {
-    int[] l = getTagIntValues(tagId, ifdId);
-    if (l == null || l.length <= 0) {
-      return null;
-    }
-    return l[0];
-  }
-
-  private int[] getTagIntValues(int tagId, int ifdId) {
-    ExifTag t = getTag(tagId, ifdId);
-    if (t == null) {
-      return null;
-    }
-    return t.getValueAsInts();
-  }
-
-  /** Gets an ExifTag for an IFD other than the tag's default. */
-  public ExifTag getTag(int tagId, int ifdId) {
-    if (!ExifTag.isValidIfd(ifdId)) {
-      return null;
-    }
-    return data.getTag(getTrueTagKey(tagId), ifdId);
-  }
-
-  public Integer getTagIntValue(int tagId) {
-    int ifdId = getDefinedTagDefaultIfd(tagId);
-    return getTagIntValue(tagId, ifdId);
-  }
-
-  /**
-   * Gets the default IFD for a tag.
-   *
-   * @param tagId a defined tag constant, e.g. {@link #TAG_EXIF_IFD}.
-   * @return the default IFD for a tag definition or {@link #IFD_NULL} if no definition exists.
-   */
-  private int getDefinedTagDefaultIfd(int tagId) {
-    int info = getTagInfo().get(tagId);
-    if (info == DEFINITION_NULL) {
-      return IFD_NULL;
-    }
-    return getTrueIfd(tagId);
-  }
-
-  /** Returns the default IFD for a tag constant. */
-  private static int getTrueIfd(int tag) {
-    return tag >>> 16;
-  }
-
-  /**
-   * Constants for {@code TAG_ORIENTATION}. They can be interpreted as follows:
-   *
-   * <ul>
-   *   <li>TOP_LEFT is the normal orientation.
-   *   <li>TOP_RIGHT is a left-right mirror.
-   *   <li>BOTTOM_LEFT is a 180 degree rotation.
-   *   <li>BOTTOM_RIGHT is a top-bottom mirror.
-   *   <li>LEFT_TOP is mirrored about the top-left<->bottom-right axis.
-   *   <li>RIGHT_TOP is a 90 degree clockwise rotation.
-   *   <li>LEFT_BOTTOM is mirrored about the top-right<->bottom-left axis.
-   *   <li>RIGHT_BOTTOM is a 270 degree clockwise rotation.
-   * </ul>
-   */
-  interface Orientation {
-    short TOP_LEFT = 1;
-    short TOP_RIGHT = 2;
-    short BOTTOM_LEFT = 3;
-    short BOTTOM_RIGHT = 4;
-    short LEFT_TOP = 5;
-    short RIGHT_TOP = 6;
-    short LEFT_BOTTOM = 7;
-    short RIGHT_BOTTOM = 8;
-  }
-
-  /** Wrapper class to define some orientation parameters. */
-  public static class OrientationParams {
-    public int rotation = 0;
-    int scaleX = 1;
-    int scaleY = 1;
-    public boolean invertDimensions = false;
-  }
-
-  public static OrientationParams getOrientationParams(int orientation) {
-    OrientationParams params = new OrientationParams();
-    switch (orientation) {
-      case Orientation.TOP_RIGHT: // Flip horizontal
-        params.scaleX = -1;
-        break;
-      case Orientation.BOTTOM_RIGHT: // Flip vertical
-        params.scaleY = -1;
-        break;
-      case Orientation.BOTTOM_LEFT: // Rotate 180
-        params.rotation = 180;
-        break;
-      case Orientation.RIGHT_BOTTOM: // Rotate 270
-        params.rotation = 270;
-        params.invertDimensions = true;
-        break;
-      case Orientation.RIGHT_TOP: // Rotate 90
-        params.rotation = 90;
-        params.invertDimensions = true;
-        break;
-      case Orientation.LEFT_TOP: // Transpose
-        params.rotation = 90;
-        params.scaleX = -1;
-        params.invertDimensions = true;
-        break;
-      case Orientation.LEFT_BOTTOM: // Transverse
-        params.rotation = 270;
-        params.scaleX = -1;
-        params.invertDimensions = true;
-        break;
-    }
-    return params;
-  }
-
-  /** Clears this ExifInterface object's existing exif tags. */
-  public void clearExif() {
-    data = new ExifData();
-  }
-
-  /**
-   * Puts an ExifTag into this ExifInterface object's tags, removing a previous ExifTag with the
-   * same TID and IFD. The IFD it is put into will be the one the tag was created with in {@link
-   * #buildTag}.
-   *
-   * @param tag an ExifTag to put into this ExifInterface's tags.
-   * @return the previous ExifTag with the same TID and IFD or null if none exists.
-   */
-  public ExifTag setTag(ExifTag tag) {
-    return data.addTag(tag);
-  }
-
-  /**
-   * Returns the ExifTag in that tag's default IFD for a defined tag constant or null if none
-   * exists.
-   *
-   * @param tagId a defined tag constant, e.g. {@link #TAG_EXIF_IFD}.
-   * @return an {@link ExifTag} or null if none exists.
-   */
-  public ExifTag getTag(int tagId) {
-    int ifdId = getDefinedTagDefaultIfd(tagId);
-    return getTag(tagId, ifdId);
-  }
-
-  /**
-   * Writes the tags from this ExifInterface object into a jpeg compressed bitmap, removing prior
-   * exif tags.
-   *
-   * @param bmap a bitmap to compress and write exif into.
-   * @param exifOutStream the OutputStream to which the jpeg image with added exif tags will be
-   *     written.
-   * @throws java.io.IOException
-   */
-  public void writeExif(Bitmap bmap, OutputStream exifOutStream) throws IOException {
-    if (bmap == null || exifOutStream == null) {
-      throw new IllegalArgumentException(NULL_ARGUMENT_STRING);
-    }
-    bmap.compress(Bitmap.CompressFormat.JPEG, 90, exifOutStream);
-    exifOutStream.flush();
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/exif/ExifInvalidFormatException.java b/java/com/android/dialer/callcomposer/camera/exif/ExifInvalidFormatException.java
deleted file mode 100644
index 92449d7..0000000
--- a/java/com/android/dialer/callcomposer/camera/exif/ExifInvalidFormatException.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.exif;
-
-/** Exception for invalid exif formats. */
-public class ExifInvalidFormatException extends Exception {
-  ExifInvalidFormatException(String meg) {
-    super(meg);
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/exif/ExifParser.java b/java/com/android/dialer/callcomposer/camera/exif/ExifParser.java
deleted file mode 100644
index 1aec4ab..0000000
--- a/java/com/android/dialer/callcomposer/camera/exif/ExifParser.java
+++ /dev/null
@@ -1,846 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.exif;
-
-import android.annotation.SuppressLint;
-import com.android.dialer.common.LogUtil;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.ByteOrder;
-import java.nio.charset.Charset;
-import java.util.Map.Entry;
-import java.util.TreeMap;
-
-/**
- * This class provides a low-level EXIF parsing API. Given a JPEG format InputStream, the caller can
- * request which IFD's to read via {@link #parse(java.io.InputStream, int)} with given options.
- *
- * <p>Below is an example of getting EXIF data from IFD 0 and EXIF IFD using the parser.
- *
- * <pre>
- * void parse() {
- *     ExifParser parser = ExifParser.parse(mImageInputStream,
- *             ExifParser.OPTION_IFD_0 | ExifParser.OPTIONS_IFD_EXIF);
- *     int event = parser.next();
- *     while (event != ExifParser.EVENT_END) {
- *         switch (event) {
- *             case ExifParser.EVENT_START_OF_IFD:
- *                 break;
- *             case ExifParser.EVENT_NEW_TAG:
- *                 ExifTag tag = parser.getTag();
- *                 if (!tag.hasValue()) {
- *                     parser.registerForTagValue(tag);
- *                 } else {
- *                     processTag(tag);
- *                 }
- *                 break;
- *             case ExifParser.EVENT_VALUE_OF_REGISTERED_TAG:
- *                 tag = parser.getTag();
- *                 if (tag.getDataType() != ExifTag.TYPE_UNDEFINED) {
- *                     processTag(tag);
- *                 }
- *                 break;
- *         }
- *         event = parser.next();
- *     }
- * }
- *
- * void processTag(ExifTag tag) {
- *     // process the tag as you like.
- * }
- * </pre>
- */
-public class ExifParser {
-  private static final boolean LOGV = false;
-  /**
-   * When the parser reaches a new IFD area. Call {@link #getCurrentIfd()} to know which IFD we are
-   * in.
-   */
-  static final int EVENT_START_OF_IFD = 0;
-  /** When the parser reaches a new tag. Call {@link #getTag()}to get the corresponding tag. */
-  static final int EVENT_NEW_TAG = 1;
-  /**
-   * When the parser reaches the value area of tag that is registered by {@link
-   * #registerForTagValue(ExifTag)} previously. Call {@link #getTag()} to get the corresponding tag.
-   */
-  static final int EVENT_VALUE_OF_REGISTERED_TAG = 2;
-
-  /** When the parser reaches the compressed image area. */
-  static final int EVENT_COMPRESSED_IMAGE = 3;
-  /**
-   * When the parser reaches the uncompressed image strip. Call {@link #getStripIndex()} to get the
-   * index of the strip.
-   *
-   * @see #getStripIndex()
-   */
-  static final int EVENT_UNCOMPRESSED_STRIP = 4;
-  /** When there is nothing more to parse. */
-  static final int EVENT_END = 5;
-
-  /** Option bit to request to parse IFD0. */
-  private static final int OPTION_IFD_0 = 1;
-  /** Option bit to request to parse IFD1. */
-  private static final int OPTION_IFD_1 = 1 << 1;
-  /** Option bit to request to parse Exif-IFD. */
-  private static final int OPTION_IFD_EXIF = 1 << 2;
-  /** Option bit to request to parse GPS-IFD. */
-  private static final int OPTION_IFD_GPS = 1 << 3;
-  /** Option bit to request to parse Interoperability-IFD. */
-  private static final int OPTION_IFD_INTEROPERABILITY = 1 << 4;
-  /** Option bit to request to parse thumbnail. */
-  private static final int OPTION_THUMBNAIL = 1 << 5;
-
-  private static final int EXIF_HEADER = 0x45786966; // EXIF header "Exif"
-  private static final short EXIF_HEADER_TAIL = (short) 0x0000; // EXIF header in APP1
-
-  // TIFF header
-  private static final short LITTLE_ENDIAN_TAG = (short) 0x4949; // "II"
-  private static final short BIG_ENDIAN_TAG = (short) 0x4d4d; // "MM"
-  private static final short TIFF_HEADER_TAIL = 0x002A;
-
-  private static final int TAG_SIZE = 12;
-  private static final int OFFSET_SIZE = 2;
-
-  private static final Charset US_ASCII = Charset.forName("US-ASCII");
-
-  private static final int DEFAULT_IFD0_OFFSET = 8;
-
-  private final CountedDataInputStream tiffStream;
-  private final int options;
-  private int ifdStartOffset = 0;
-  private int numOfTagInIfd = 0;
-  private int ifdType;
-  private ExifTag tag;
-  private ImageEvent imageEvent;
-  private ExifTag stripSizeTag;
-  private ExifTag jpegSizeTag;
-  private boolean needToParseOffsetsInCurrentIfd;
-  private boolean containExifData = false;
-  private int app1End;
-  private byte[] dataAboveIfd0;
-  private int ifd0Position;
-  private final ExifInterface mInterface;
-
-  private static final short TAG_EXIF_IFD = ExifInterface.getTrueTagKey(ExifInterface.TAG_EXIF_IFD);
-  private static final short TAG_GPS_IFD = ExifInterface.getTrueTagKey(ExifInterface.TAG_GPS_IFD);
-  private static final short TAG_INTEROPERABILITY_IFD =
-      ExifInterface.getTrueTagKey(ExifInterface.TAG_INTEROPERABILITY_IFD);
-  private static final short TAG_JPEG_INTERCHANGE_FORMAT =
-      ExifInterface.getTrueTagKey(ExifInterface.TAG_JPEG_INTERCHANGE_FORMAT);
-  private static final short TAG_JPEG_INTERCHANGE_FORMAT_LENGTH =
-      ExifInterface.getTrueTagKey(ExifInterface.TAG_JPEG_INTERCHANGE_FORMAT_LENGTH);
-  private static final short TAG_STRIP_OFFSETS =
-      ExifInterface.getTrueTagKey(ExifInterface.TAG_STRIP_OFFSETS);
-  private static final short TAG_STRIP_BYTE_COUNTS =
-      ExifInterface.getTrueTagKey(ExifInterface.TAG_STRIP_BYTE_COUNTS);
-
-  private final TreeMap<Integer, Object> correspondingEvent = new TreeMap<>();
-
-  private boolean isIfdRequested(int ifdType) {
-    switch (ifdType) {
-      case IfdId.TYPE_IFD_0:
-        return (options & OPTION_IFD_0) != 0;
-      case IfdId.TYPE_IFD_1:
-        return (options & OPTION_IFD_1) != 0;
-      case IfdId.TYPE_IFD_EXIF:
-        return (options & OPTION_IFD_EXIF) != 0;
-      case IfdId.TYPE_IFD_GPS:
-        return (options & OPTION_IFD_GPS) != 0;
-      case IfdId.TYPE_IFD_INTEROPERABILITY:
-        return (options & OPTION_IFD_INTEROPERABILITY) != 0;
-    }
-    return false;
-  }
-
-  private boolean isThumbnailRequested() {
-    return (options & OPTION_THUMBNAIL) != 0;
-  }
-
-  private ExifParser(InputStream inputStream, int options, ExifInterface iRef)
-      throws IOException, ExifInvalidFormatException {
-    if (inputStream == null) {
-      throw new IOException("Null argument inputStream to ExifParser");
-    }
-    if (LOGV) {
-      LogUtil.v("ExifParser.ExifParser", "Reading exif...");
-    }
-    mInterface = iRef;
-    containExifData = seekTiffData(inputStream);
-    tiffStream = new CountedDataInputStream(inputStream);
-    this.options = options;
-    if (!containExifData) {
-      return;
-    }
-
-    parseTiffHeader();
-    long offset = tiffStream.readUnsignedInt();
-    if (offset > Integer.MAX_VALUE) {
-      throw new ExifInvalidFormatException("Invalid offset " + offset);
-    }
-    ifd0Position = (int) offset;
-    ifdType = IfdId.TYPE_IFD_0;
-    if (isIfdRequested(IfdId.TYPE_IFD_0) || needToParseOffsetsInCurrentIfd()) {
-      registerIfd(IfdId.TYPE_IFD_0, offset);
-      if (offset != DEFAULT_IFD0_OFFSET) {
-        dataAboveIfd0 = new byte[(int) offset - DEFAULT_IFD0_OFFSET];
-        read(dataAboveIfd0);
-      }
-    }
-  }
-
-  /**
-   * Parses the the given InputStream with the given options
-   *
-   * @exception java.io.IOException
-   * @exception ExifInvalidFormatException
-   */
-  protected static ExifParser parse(InputStream inputStream, int options, ExifInterface iRef)
-      throws IOException, ExifInvalidFormatException {
-    return new ExifParser(inputStream, options, iRef);
-  }
-
-  /**
-   * Parses the the given InputStream with default options; that is, every IFD and thumbnaill will
-   * be parsed.
-   *
-   * @exception java.io.IOException
-   * @exception ExifInvalidFormatException
-   * @see #parse(java.io.InputStream, int, ExifInterface)
-   */
-  protected static ExifParser parse(InputStream inputStream, ExifInterface iRef)
-      throws IOException, ExifInvalidFormatException {
-    return new ExifParser(
-        inputStream,
-        OPTION_IFD_0
-            | OPTION_IFD_1
-            | OPTION_IFD_EXIF
-            | OPTION_IFD_GPS
-            | OPTION_IFD_INTEROPERABILITY
-            | OPTION_THUMBNAIL,
-        iRef);
-  }
-
-  /**
-   * Moves the parser forward and returns the next parsing event
-   *
-   * @exception java.io.IOException
-   * @exception ExifInvalidFormatException
-   * @see #EVENT_START_OF_IFD
-   * @see #EVENT_NEW_TAG
-   * @see #EVENT_VALUE_OF_REGISTERED_TAG
-   * @see #EVENT_COMPRESSED_IMAGE
-   * @see #EVENT_UNCOMPRESSED_STRIP
-   * @see #EVENT_END
-   */
-  protected int next() throws IOException, ExifInvalidFormatException {
-    if (!containExifData) {
-      return EVENT_END;
-    }
-    int offset = tiffStream.getReadByteCount();
-    int endOfTags = ifdStartOffset + OFFSET_SIZE + TAG_SIZE * numOfTagInIfd;
-    if (offset < endOfTags) {
-      tag = readTag();
-      if (tag == null) {
-        return next();
-      }
-      if (needToParseOffsetsInCurrentIfd) {
-        checkOffsetOrImageTag(tag);
-      }
-      return EVENT_NEW_TAG;
-    } else if (offset == endOfTags) {
-      // There is a link to ifd1 at the end of ifd0
-      if (ifdType == IfdId.TYPE_IFD_0) {
-        long ifdOffset = readUnsignedLong();
-        if (isIfdRequested(IfdId.TYPE_IFD_1) || isThumbnailRequested()) {
-          if (ifdOffset != 0) {
-            registerIfd(IfdId.TYPE_IFD_1, ifdOffset);
-          }
-        }
-      } else {
-        int offsetSize = 4;
-        // Some camera models use invalid length of the offset
-        if (correspondingEvent.size() > 0) {
-          offsetSize = correspondingEvent.firstEntry().getKey() - tiffStream.getReadByteCount();
-        }
-        if (offsetSize < 4) {
-          LogUtil.i("ExifParser.next", "Invalid size of link to next IFD: " + offsetSize);
-        } else {
-          long ifdOffset = readUnsignedLong();
-          if (ifdOffset != 0) {
-            LogUtil.i("ExifParser.next", "Invalid link to next IFD: " + ifdOffset);
-          }
-        }
-      }
-    }
-    while (correspondingEvent.size() != 0) {
-      Entry<Integer, Object> entry = correspondingEvent.pollFirstEntry();
-      Object event = entry.getValue();
-      try {
-        skipTo(entry.getKey());
-      } catch (IOException e) {
-        LogUtil.i(
-            "ExifParser.next",
-            "Failed to skip to data at: "
-                + entry.getKey()
-                + " for "
-                + event.getClass().getName()
-                + ", the file may be broken.");
-        continue;
-      }
-      if (event instanceof IfdEvent) {
-        ifdType = ((IfdEvent) event).ifd;
-        numOfTagInIfd = tiffStream.readUnsignedShort();
-        ifdStartOffset = entry.getKey();
-
-        if (numOfTagInIfd * TAG_SIZE + ifdStartOffset + OFFSET_SIZE > app1End) {
-          LogUtil.i("ExifParser.next", "Invalid size of IFD " + ifdType);
-          return EVENT_END;
-        }
-
-        needToParseOffsetsInCurrentIfd = needToParseOffsetsInCurrentIfd();
-        if (((IfdEvent) event).isRequested) {
-          return EVENT_START_OF_IFD;
-        } else {
-          skipRemainingTagsInCurrentIfd();
-        }
-      } else if (event instanceof ImageEvent) {
-        imageEvent = (ImageEvent) event;
-        return imageEvent.type;
-      } else {
-        ExifTagEvent tagEvent = (ExifTagEvent) event;
-        tag = tagEvent.tag;
-        if (tag.getDataType() != ExifTag.TYPE_UNDEFINED) {
-          readFullTagValue(tag);
-          checkOffsetOrImageTag(tag);
-        }
-        if (tagEvent.isRequested) {
-          return EVENT_VALUE_OF_REGISTERED_TAG;
-        }
-      }
-    }
-    return EVENT_END;
-  }
-
-  /**
-   * Skips the tags area of current IFD, if the parser is not in the tag area, nothing will happen.
-   *
-   * @throws java.io.IOException
-   * @throws ExifInvalidFormatException
-   */
-  private void skipRemainingTagsInCurrentIfd() throws IOException, ExifInvalidFormatException {
-    int endOfTags = ifdStartOffset + OFFSET_SIZE + TAG_SIZE * numOfTagInIfd;
-    int offset = tiffStream.getReadByteCount();
-    if (offset > endOfTags) {
-      return;
-    }
-    if (needToParseOffsetsInCurrentIfd) {
-      while (offset < endOfTags) {
-        tag = readTag();
-        offset += TAG_SIZE;
-        if (tag == null) {
-          continue;
-        }
-        checkOffsetOrImageTag(tag);
-      }
-    } else {
-      skipTo(endOfTags);
-    }
-    long ifdOffset = readUnsignedLong();
-    // For ifd0, there is a link to ifd1 in the end of all tags
-    if (ifdType == IfdId.TYPE_IFD_0
-        && (isIfdRequested(IfdId.TYPE_IFD_1) || isThumbnailRequested())) {
-      if (ifdOffset > 0) {
-        registerIfd(IfdId.TYPE_IFD_1, ifdOffset);
-      }
-    }
-  }
-
-  private boolean needToParseOffsetsInCurrentIfd() {
-    switch (ifdType) {
-      case IfdId.TYPE_IFD_0:
-        return isIfdRequested(IfdId.TYPE_IFD_EXIF)
-            || isIfdRequested(IfdId.TYPE_IFD_GPS)
-            || isIfdRequested(IfdId.TYPE_IFD_INTEROPERABILITY)
-            || isIfdRequested(IfdId.TYPE_IFD_1);
-      case IfdId.TYPE_IFD_1:
-        return isThumbnailRequested();
-      case IfdId.TYPE_IFD_EXIF:
-        // The offset to interoperability IFD is located in Exif IFD
-        return isIfdRequested(IfdId.TYPE_IFD_INTEROPERABILITY);
-      default:
-        return false;
-    }
-  }
-
-  /**
-   * If {@link #next()} return {@link #EVENT_NEW_TAG} or {@link #EVENT_VALUE_OF_REGISTERED_TAG},
-   * call this function to get the corresponding tag.
-   *
-   * <p>For {@link #EVENT_NEW_TAG}, the tag may not contain the value if the size of the value is
-   * greater than 4 bytes. One should call {@link ExifTag#hasValue()} to check if the tag contains
-   * value. If there is no value,call {@link #registerForTagValue(ExifTag)} to have the parser emit
-   * {@link #EVENT_VALUE_OF_REGISTERED_TAG} when it reaches the area pointed by the offset.
-   *
-   * <p>When {@link #EVENT_VALUE_OF_REGISTERED_TAG} is emitted, the value of the tag will have
-   * already been read except for tags of undefined type. For tags of undefined type, call one of
-   * the read methods to get the value.
-   *
-   * @see #registerForTagValue(ExifTag)
-   * @see #read(byte[])
-   * @see #read(byte[], int, int)
-   * @see #readLong()
-   * @see #readRational()
-   * @see #readString(int)
-   * @see #readString(int, java.nio.charset.Charset)
-   */
-  protected ExifTag getTag() {
-    return tag;
-  }
-
-  /**
-   * Gets the ID of current IFD.
-   *
-   * @see IfdId#TYPE_IFD_0
-   * @see IfdId#TYPE_IFD_1
-   * @see IfdId#TYPE_IFD_GPS
-   * @see IfdId#TYPE_IFD_INTEROPERABILITY
-   * @see IfdId#TYPE_IFD_EXIF
-   */
-  int getCurrentIfd() {
-    return ifdType;
-  }
-
-  /**
-   * When receiving {@link #EVENT_UNCOMPRESSED_STRIP}, call this function to get the index of this
-   * strip.
-   */
-  int getStripIndex() {
-    return imageEvent.stripIndex;
-  }
-
-  /** When receiving {@link #EVENT_UNCOMPRESSED_STRIP}, call this function to get the strip size. */
-  int getStripSize() {
-    if (stripSizeTag == null) {
-      return 0;
-    }
-    return (int) stripSizeTag.getValueAt(0);
-  }
-
-  /**
-   * When receiving {@link #EVENT_COMPRESSED_IMAGE}, call this function to get the image data size.
-   */
-  int getCompressedImageSize() {
-    if (jpegSizeTag == null) {
-      return 0;
-    }
-    return (int) jpegSizeTag.getValueAt(0);
-  }
-
-  private void skipTo(int offset) throws IOException {
-    tiffStream.skipTo(offset);
-    while (!correspondingEvent.isEmpty() && correspondingEvent.firstKey() < offset) {
-      correspondingEvent.pollFirstEntry();
-    }
-  }
-
-  /**
-   * When getting {@link #EVENT_NEW_TAG} in the tag area of IFD, the tag may not contain the value
-   * if the size of the value is greater than 4 bytes. When the value is not available here, call
-   * this method so that the parser will emit {@link #EVENT_VALUE_OF_REGISTERED_TAG} when it reaches
-   * the area where the value is located.
-   *
-   * @see #EVENT_VALUE_OF_REGISTERED_TAG
-   */
-  void registerForTagValue(ExifTag tag) {
-    if (tag.getOffset() >= tiffStream.getReadByteCount()) {
-      correspondingEvent.put(tag.getOffset(), new ExifTagEvent(tag, true));
-    }
-  }
-
-  private void registerIfd(int ifdType, long offset) {
-    // Cast unsigned int to int since the offset is always smaller
-    // than the size of APP1 (65536)
-    correspondingEvent.put((int) offset, new IfdEvent(ifdType, isIfdRequested(ifdType)));
-  }
-
-  private void registerCompressedImage(long offset) {
-    correspondingEvent.put((int) offset, new ImageEvent(EVENT_COMPRESSED_IMAGE));
-  }
-
-  private void registerUncompressedStrip(int stripIndex, long offset) {
-    correspondingEvent.put((int) offset, new ImageEvent(EVENT_UNCOMPRESSED_STRIP, stripIndex));
-  }
-
-  @SuppressLint("DefaultLocale")
-  private ExifTag readTag() throws IOException, ExifInvalidFormatException {
-    short tagId = tiffStream.readShort();
-    short dataFormat = tiffStream.readShort();
-    long numOfComp = tiffStream.readUnsignedInt();
-    if (numOfComp > Integer.MAX_VALUE) {
-      throw new ExifInvalidFormatException("Number of component is larger then Integer.MAX_VALUE");
-    }
-    // Some invalid image file contains invalid data type. Ignore those tags
-    if (!ExifTag.isValidType(dataFormat)) {
-      LogUtil.i("ExifParser.readTag", "Tag %04x: Invalid data type %d", tagId, dataFormat);
-      tiffStream.skip(4);
-      return null;
-    }
-    // TODO(blemmon): handle numOfComp overflow
-    ExifTag tag =
-        new ExifTag(
-            tagId,
-            dataFormat,
-            (int) numOfComp,
-            ifdType,
-            ((int) numOfComp) != ExifTag.SIZE_UNDEFINED);
-    int dataSize = tag.getDataSize();
-    if (dataSize > 4) {
-      long offset = tiffStream.readUnsignedInt();
-      if (offset > Integer.MAX_VALUE) {
-        throw new ExifInvalidFormatException("offset is larger then Integer.MAX_VALUE");
-      }
-      // Some invalid images put some undefined data before IFD0.
-      // Read the data here.
-      if ((offset < ifd0Position) && (dataFormat == ExifTag.TYPE_UNDEFINED)) {
-        byte[] buf = new byte[(int) numOfComp];
-        System.arraycopy(
-            dataAboveIfd0, (int) offset - DEFAULT_IFD0_OFFSET, buf, 0, (int) numOfComp);
-        tag.setValue(buf);
-      } else {
-        tag.setOffset((int) offset);
-      }
-    } else {
-      boolean defCount = tag.hasDefinedCount();
-      // Set defined count to 0 so we can add \0 to non-terminated strings
-      tag.setHasDefinedCount(false);
-      // Read value
-      readFullTagValue(tag);
-      tag.setHasDefinedCount(defCount);
-      tiffStream.skip(4 - dataSize);
-      // Set the offset to the position of value.
-      tag.setOffset(tiffStream.getReadByteCount() - 4);
-    }
-    return tag;
-  }
-
-  /**
-   * Check the if the tag is one of the offset tag that points to the IFD or image the caller is
-   * interested in, register the IFD or image.
-   */
-  private void checkOffsetOrImageTag(ExifTag tag) {
-    // Some invalid formattd image contains tag with 0 size.
-    if (tag.getComponentCount() == 0) {
-      return;
-    }
-    short tid = tag.getTagId();
-    int ifd = tag.getIfd();
-    if (tid == TAG_EXIF_IFD && checkAllowed(ifd, ExifInterface.TAG_EXIF_IFD)) {
-      if (isIfdRequested(IfdId.TYPE_IFD_EXIF) || isIfdRequested(IfdId.TYPE_IFD_INTEROPERABILITY)) {
-        registerIfd(IfdId.TYPE_IFD_EXIF, tag.getValueAt(0));
-      }
-    } else if (tid == TAG_GPS_IFD && checkAllowed(ifd, ExifInterface.TAG_GPS_IFD)) {
-      if (isIfdRequested(IfdId.TYPE_IFD_GPS)) {
-        registerIfd(IfdId.TYPE_IFD_GPS, tag.getValueAt(0));
-      }
-    } else if (tid == TAG_INTEROPERABILITY_IFD
-        && checkAllowed(ifd, ExifInterface.TAG_INTEROPERABILITY_IFD)) {
-      if (isIfdRequested(IfdId.TYPE_IFD_INTEROPERABILITY)) {
-        registerIfd(IfdId.TYPE_IFD_INTEROPERABILITY, tag.getValueAt(0));
-      }
-    } else if (tid == TAG_JPEG_INTERCHANGE_FORMAT
-        && checkAllowed(ifd, ExifInterface.TAG_JPEG_INTERCHANGE_FORMAT)) {
-      if (isThumbnailRequested()) {
-        registerCompressedImage(tag.getValueAt(0));
-      }
-    } else if (tid == TAG_JPEG_INTERCHANGE_FORMAT_LENGTH
-        && checkAllowed(ifd, ExifInterface.TAG_JPEG_INTERCHANGE_FORMAT_LENGTH)) {
-      if (isThumbnailRequested()) {
-        jpegSizeTag = tag;
-      }
-    } else if (tid == TAG_STRIP_OFFSETS && checkAllowed(ifd, ExifInterface.TAG_STRIP_OFFSETS)) {
-      if (isThumbnailRequested()) {
-        if (tag.hasValue()) {
-          for (int i = 0; i < tag.getComponentCount(); i++) {
-            if (tag.getDataType() == ExifTag.TYPE_UNSIGNED_SHORT) {
-              registerUncompressedStrip(i, tag.getValueAt(i));
-            } else {
-              registerUncompressedStrip(i, tag.getValueAt(i));
-            }
-          }
-        } else {
-          correspondingEvent.put(tag.getOffset(), new ExifTagEvent(tag, false));
-        }
-      }
-    } else if (tid == TAG_STRIP_BYTE_COUNTS
-        && checkAllowed(ifd, ExifInterface.TAG_STRIP_BYTE_COUNTS)
-        && isThumbnailRequested()
-        && tag.hasValue()) {
-      stripSizeTag = tag;
-    }
-  }
-
-  private boolean checkAllowed(int ifd, int tagId) {
-    int info = mInterface.getTagInfo().get(tagId);
-    return info != ExifInterface.DEFINITION_NULL && ExifInterface.isIfdAllowed(info, ifd);
-  }
-
-  void readFullTagValue(ExifTag tag) throws IOException {
-    // Some invalid images contains tags with wrong size, check it here
-    short type = tag.getDataType();
-    if (type == ExifTag.TYPE_ASCII
-        || type == ExifTag.TYPE_UNDEFINED
-        || type == ExifTag.TYPE_UNSIGNED_BYTE) {
-      int size = tag.getComponentCount();
-      if (correspondingEvent.size() > 0) {
-        if (correspondingEvent.firstEntry().getKey() < tiffStream.getReadByteCount() + size) {
-          Object event = correspondingEvent.firstEntry().getValue();
-          if (event instanceof ImageEvent) {
-            // Tag value overlaps thumbnail, ignore thumbnail.
-            LogUtil.i(
-                "ExifParser.readFullTagValue",
-                "Thumbnail overlaps value for tag: \n" + tag.toString());
-            Entry<Integer, Object> entry = correspondingEvent.pollFirstEntry();
-            LogUtil.i("ExifParser.readFullTagValue", "Invalid thumbnail offset: " + entry.getKey());
-          } else {
-            // Tag value overlaps another shorten count
-            if (event instanceof IfdEvent) {
-              LogUtil.i(
-                  "ExifParser.readFullTagValue",
-                  "Ifd " + ((IfdEvent) event).ifd + " overlaps value for tag: \n" + tag.toString());
-            } else if (event instanceof ExifTagEvent) {
-              LogUtil.i(
-                  "ExifParser.readFullTagValue",
-                  "Tag value for tag: \n"
-                      + ((ExifTagEvent) event).tag.toString()
-                      + " overlaps value for tag: \n"
-                      + tag.toString());
-            }
-            size = correspondingEvent.firstEntry().getKey() - tiffStream.getReadByteCount();
-            LogUtil.i(
-                "ExifParser.readFullTagValue",
-                "Invalid size of tag: \n" + tag.toString() + " setting count to: " + size);
-            tag.forceSetComponentCount(size);
-          }
-        }
-      }
-    }
-    switch (tag.getDataType()) {
-      case ExifTag.TYPE_UNSIGNED_BYTE:
-      case ExifTag.TYPE_UNDEFINED:
-        {
-          byte[] buf = new byte[tag.getComponentCount()];
-          read(buf);
-          tag.setValue(buf);
-        }
-        break;
-      case ExifTag.TYPE_ASCII:
-        tag.setValue(readString(tag.getComponentCount()));
-        break;
-      case ExifTag.TYPE_UNSIGNED_LONG:
-        {
-          long[] value = new long[tag.getComponentCount()];
-          for (int i = 0, n = value.length; i < n; i++) {
-            value[i] = readUnsignedLong();
-          }
-          tag.setValue(value);
-        }
-        break;
-      case ExifTag.TYPE_UNSIGNED_RATIONAL:
-        {
-          Rational[] value = new Rational[tag.getComponentCount()];
-          for (int i = 0, n = value.length; i < n; i++) {
-            value[i] = readUnsignedRational();
-          }
-          tag.setValue(value);
-        }
-        break;
-      case ExifTag.TYPE_UNSIGNED_SHORT:
-        {
-          int[] value = new int[tag.getComponentCount()];
-          for (int i = 0, n = value.length; i < n; i++) {
-            value[i] = readUnsignedShort();
-          }
-          tag.setValue(value);
-        }
-        break;
-      case ExifTag.TYPE_LONG:
-        {
-          int[] value = new int[tag.getComponentCount()];
-          for (int i = 0, n = value.length; i < n; i++) {
-            value[i] = readLong();
-          }
-          tag.setValue(value);
-        }
-        break;
-      case ExifTag.TYPE_RATIONAL:
-        {
-          Rational[] value = new Rational[tag.getComponentCount()];
-          for (int i = 0, n = value.length; i < n; i++) {
-            value[i] = readRational();
-          }
-          tag.setValue(value);
-        }
-        break;
-    }
-    if (LOGV) {
-      LogUtil.v("ExifParser.readFullTagValue", "\n" + tag.toString());
-    }
-  }
-
-  private void parseTiffHeader() throws IOException, ExifInvalidFormatException {
-    short byteOrder = tiffStream.readShort();
-    if (LITTLE_ENDIAN_TAG == byteOrder) {
-      tiffStream.setByteOrder(ByteOrder.LITTLE_ENDIAN);
-    } else if (BIG_ENDIAN_TAG == byteOrder) {
-      tiffStream.setByteOrder(ByteOrder.BIG_ENDIAN);
-    } else {
-      throw new ExifInvalidFormatException("Invalid TIFF header");
-    }
-
-    if (tiffStream.readShort() != TIFF_HEADER_TAIL) {
-      throw new ExifInvalidFormatException("Invalid TIFF header");
-    }
-  }
-
-  private boolean seekTiffData(InputStream inputStream)
-      throws IOException, ExifInvalidFormatException {
-    CountedDataInputStream dataStream = new CountedDataInputStream(inputStream);
-    if (dataStream.readShort() != JpegHeader.SOI) {
-      throw new ExifInvalidFormatException("Invalid JPEG format");
-    }
-
-    short marker = dataStream.readShort();
-    while (marker != JpegHeader.EOI && !JpegHeader.isSofMarker(marker)) {
-      int length = dataStream.readUnsignedShort();
-      // Some invalid formatted image contains multiple APP1,
-      // try to find the one with Exif data.
-      if (marker == JpegHeader.APP1) {
-        int header;
-        short headerTail;
-        if (length >= 8) {
-          header = dataStream.readInt();
-          headerTail = dataStream.readShort();
-          length -= 6;
-          if (header == EXIF_HEADER && headerTail == EXIF_HEADER_TAIL) {
-            app1End = length;
-            return true;
-          }
-        }
-      }
-      if (length < 2 || (length - 2) != dataStream.skip(length - 2)) {
-        LogUtil.i("ExifParser.seekTiffData", "Invalid JPEG format.");
-        return false;
-      }
-      marker = dataStream.readShort();
-    }
-    return false;
-  }
-
-  /** Reads bytes from the InputStream. */
-  protected int read(byte[] buffer, int offset, int length) throws IOException {
-    return tiffStream.read(buffer, offset, length);
-  }
-
-  /** Equivalent to read(buffer, 0, buffer.length). */
-  protected int read(byte[] buffer) throws IOException {
-    return tiffStream.read(buffer);
-  }
-
-  /**
-   * Reads a String from the InputStream with US-ASCII charset. The parser will read n bytes and
-   * convert it to ascii string. This is used for reading values of type {@link ExifTag#TYPE_ASCII}.
-   */
-  private String readString(int n) throws IOException {
-    return readString(n, US_ASCII);
-  }
-
-  /**
-   * Reads a String from the InputStream with the given charset. The parser will read n bytes and
-   * convert it to string. This is used for reading values of type {@link ExifTag#TYPE_ASCII}.
-   */
-  private String readString(int n, Charset charset) throws IOException {
-    if (n > 0) {
-      return tiffStream.readString(n, charset);
-    } else {
-      return "";
-    }
-  }
-
-  /** Reads value of type {@link ExifTag#TYPE_UNSIGNED_SHORT} from the InputStream. */
-  private int readUnsignedShort() throws IOException {
-    return tiffStream.readShort() & 0xffff;
-  }
-
-  /** Reads value of type {@link ExifTag#TYPE_UNSIGNED_LONG} from the InputStream. */
-  private long readUnsignedLong() throws IOException {
-    return readLong() & 0xffffffffL;
-  }
-
-  /** Reads value of type {@link ExifTag#TYPE_UNSIGNED_RATIONAL} from the InputStream. */
-  private Rational readUnsignedRational() throws IOException {
-    long nomi = readUnsignedLong();
-    long denomi = readUnsignedLong();
-    return new Rational(nomi, denomi);
-  }
-
-  /** Reads value of type {@link ExifTag#TYPE_LONG} from the InputStream. */
-  private int readLong() throws IOException {
-    return tiffStream.readInt();
-  }
-
-  /** Reads value of type {@link ExifTag#TYPE_RATIONAL} from the InputStream. */
-  private Rational readRational() throws IOException {
-    int nomi = readLong();
-    int denomi = readLong();
-    return new Rational(nomi, denomi);
-  }
-
-  private static class ImageEvent {
-    int stripIndex;
-    int type;
-
-    ImageEvent(int type) {
-      this.stripIndex = 0;
-      this.type = type;
-    }
-
-    ImageEvent(int type, int stripIndex) {
-      this.type = type;
-      this.stripIndex = stripIndex;
-    }
-  }
-
-  private static class IfdEvent {
-    int ifd;
-    boolean isRequested;
-
-    IfdEvent(int ifd, boolean isInterestedIfd) {
-      this.ifd = ifd;
-      this.isRequested = isInterestedIfd;
-    }
-  }
-
-  private static class ExifTagEvent {
-    ExifTag tag;
-    boolean isRequested;
-
-    ExifTagEvent(ExifTag tag, boolean isRequireByUser) {
-      this.tag = tag;
-      this.isRequested = isRequireByUser;
-    }
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/exif/ExifReader.java b/java/com/android/dialer/callcomposer/camera/exif/ExifReader.java
deleted file mode 100644
index 89d2126..0000000
--- a/java/com/android/dialer/callcomposer/camera/exif/ExifReader.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.exif;
-
-import com.android.dialer.common.LogUtil;
-import java.io.IOException;
-import java.io.InputStream;
-
-/** This class reads the EXIF header of a JPEG file and stores it in {@link ExifData}. */
-class ExifReader {
-
-  private final ExifInterface mInterface;
-
-  ExifReader(ExifInterface iRef) {
-    mInterface = iRef;
-  }
-
-  /**
-   * Parses the inputStream and and returns the EXIF data in an {@link ExifData}.
-   *
-   * @throws ExifInvalidFormatException
-   * @throws java.io.IOException
-   */
-  protected ExifData read(InputStream inputStream) throws ExifInvalidFormatException, IOException {
-    ExifParser parser = ExifParser.parse(inputStream, mInterface);
-    ExifData exifData = new ExifData();
-    ExifTag tag;
-
-    int event = parser.next();
-    while (event != ExifParser.EVENT_END) {
-      switch (event) {
-        case ExifParser.EVENT_START_OF_IFD:
-          exifData.addIfdData(new IfdData(parser.getCurrentIfd()));
-          break;
-        case ExifParser.EVENT_NEW_TAG:
-          tag = parser.getTag();
-          if (!tag.hasValue()) {
-            parser.registerForTagValue(tag);
-          } else {
-            exifData.getIfdData(tag.getIfd()).setTag(tag);
-          }
-          break;
-        case ExifParser.EVENT_VALUE_OF_REGISTERED_TAG:
-          tag = parser.getTag();
-          if (tag.getDataType() == ExifTag.TYPE_UNDEFINED) {
-            parser.readFullTagValue(tag);
-          }
-          exifData.getIfdData(tag.getIfd()).setTag(tag);
-          break;
-        case ExifParser.EVENT_COMPRESSED_IMAGE:
-          byte[] buf = new byte[parser.getCompressedImageSize()];
-          if (buf.length != parser.read(buf)) {
-            LogUtil.i("ExifReader.read", "Failed to read the compressed thumbnail");
-          }
-          break;
-        case ExifParser.EVENT_UNCOMPRESSED_STRIP:
-          buf = new byte[parser.getStripSize()];
-          if (buf.length != parser.read(buf)) {
-            LogUtil.i("ExifReader.read", "Failed to read the strip bytes");
-          }
-          break;
-      }
-      event = parser.next();
-    }
-    return exifData;
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/exif/ExifTag.java b/java/com/android/dialer/callcomposer/camera/exif/ExifTag.java
deleted file mode 100644
index 23948ed..0000000
--- a/java/com/android/dialer/callcomposer/camera/exif/ExifTag.java
+++ /dev/null
@@ -1,613 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.exif;
-
-import java.nio.charset.Charset;
-import java.util.Arrays;
-import java.util.Objects;
-
-/**
- * This class stores information of an EXIF tag. For more information about defined EXIF tags,
- * please read the Jeita EXIF 2.2 standard. Tags should be instantiated using {@link
- * ExifInterface#buildTag}.
- *
- * @see ExifInterface
- */
-public class ExifTag {
-  /** The BYTE type in the EXIF standard. An 8-bit unsigned integer. */
-  static final short TYPE_UNSIGNED_BYTE = 1;
-  /**
-   * The ASCII type in the EXIF standard. An 8-bit byte containing one 7-bit ASCII code. The final
-   * byte is terminated with NULL.
-   */
-  static final short TYPE_ASCII = 2;
-  /** The SHORT type in the EXIF standard. A 16-bit (2-byte) unsigned integer */
-  static final short TYPE_UNSIGNED_SHORT = 3;
-  /** The LONG type in the EXIF standard. A 32-bit (4-byte) unsigned integer */
-  static final short TYPE_UNSIGNED_LONG = 4;
-  /**
-   * The RATIONAL type of EXIF standard. It consists of two LONGs. The first one is the numerator
-   * and the second one expresses the denominator.
-   */
-  static final short TYPE_UNSIGNED_RATIONAL = 5;
-  /**
-   * The UNDEFINED type in the EXIF standard. An 8-bit byte that can take any value depending on the
-   * field definition.
-   */
-  static final short TYPE_UNDEFINED = 7;
-  /**
-   * The SLONG type in the EXIF standard. A 32-bit (4-byte) signed integer (2's complement
-   * notation).
-   */
-  static final short TYPE_LONG = 9;
-  /**
-   * The SRATIONAL type of EXIF standard. It consists of two SLONGs. The first one is the numerator
-   * and the second one is the denominator.
-   */
-  static final short TYPE_RATIONAL = 10;
-
-  private static final Charset US_ASCII = Charset.forName("US-ASCII");
-  private static final int[] TYPE_TO_SIZE_MAP = new int[11];
-  private static final int UNSIGNED_SHORT_MAX = 65535;
-  private static final long UNSIGNED_LONG_MAX = 4294967295L;
-  private static final long LONG_MAX = Integer.MAX_VALUE;
-  private static final long LONG_MIN = Integer.MIN_VALUE;
-
-  static {
-    TYPE_TO_SIZE_MAP[TYPE_UNSIGNED_BYTE] = 1;
-    TYPE_TO_SIZE_MAP[TYPE_ASCII] = 1;
-    TYPE_TO_SIZE_MAP[TYPE_UNSIGNED_SHORT] = 2;
-    TYPE_TO_SIZE_MAP[TYPE_UNSIGNED_LONG] = 4;
-    TYPE_TO_SIZE_MAP[TYPE_UNSIGNED_RATIONAL] = 8;
-    TYPE_TO_SIZE_MAP[TYPE_UNDEFINED] = 1;
-    TYPE_TO_SIZE_MAP[TYPE_LONG] = 4;
-    TYPE_TO_SIZE_MAP[TYPE_RATIONAL] = 8;
-  }
-
-  static final int SIZE_UNDEFINED = 0;
-
-  // Exif TagId
-  private final short tagId;
-  // Exif Tag Type
-  private final short dataType;
-  // If tag has defined count
-  private boolean hasDefinedDefaultComponentCount;
-  // Actual data count in tag (should be number of elements in value array)
-  private int componentCountActual;
-  // The ifd that this tag should be put in
-  private int ifd;
-  // The value (array of elements of type Tag Type)
-  private Object value;
-  // Value offset in exif header.
-  private int offset;
-
-  /** Returns true if the given IFD is a valid IFD. */
-  static boolean isValidIfd(int ifdId) {
-    return ifdId == IfdId.TYPE_IFD_0
-        || ifdId == IfdId.TYPE_IFD_1
-        || ifdId == IfdId.TYPE_IFD_EXIF
-        || ifdId == IfdId.TYPE_IFD_INTEROPERABILITY
-        || ifdId == IfdId.TYPE_IFD_GPS;
-  }
-
-  /** Returns true if a given type is a valid tag type. */
-  static boolean isValidType(short type) {
-    return type == TYPE_UNSIGNED_BYTE
-        || type == TYPE_ASCII
-        || type == TYPE_UNSIGNED_SHORT
-        || type == TYPE_UNSIGNED_LONG
-        || type == TYPE_UNSIGNED_RATIONAL
-        || type == TYPE_UNDEFINED
-        || type == TYPE_LONG
-        || type == TYPE_RATIONAL;
-  }
-
-  // Use builtTag in ExifInterface instead of constructor.
-  ExifTag(short tagId, short type, int componentCount, int ifd, boolean hasDefinedComponentCount) {
-    this.tagId = tagId;
-    dataType = type;
-    componentCountActual = componentCount;
-    hasDefinedDefaultComponentCount = hasDefinedComponentCount;
-    this.ifd = ifd;
-    value = null;
-  }
-
-  /**
-   * Gets the element size of the given data type in bytes.
-   *
-   * @see #TYPE_ASCII
-   * @see #TYPE_LONG
-   * @see #TYPE_RATIONAL
-   * @see #TYPE_UNDEFINED
-   * @see #TYPE_UNSIGNED_BYTE
-   * @see #TYPE_UNSIGNED_LONG
-   * @see #TYPE_UNSIGNED_RATIONAL
-   * @see #TYPE_UNSIGNED_SHORT
-   */
-  private static int getElementSize(short type) {
-    return TYPE_TO_SIZE_MAP[type];
-  }
-
-  /**
-   * Returns the ID of the IFD this tag belongs to.
-   *
-   * @see IfdId#TYPE_IFD_0
-   * @see IfdId#TYPE_IFD_1
-   * @see IfdId#TYPE_IFD_EXIF
-   * @see IfdId#TYPE_IFD_GPS
-   * @see IfdId#TYPE_IFD_INTEROPERABILITY
-   */
-  int getIfd() {
-    return ifd;
-  }
-
-  void setIfd(int ifdId) {
-    ifd = ifdId;
-  }
-
-  /** Gets the TID of this tag. */
-  short getTagId() {
-    return tagId;
-  }
-
-  /**
-   * Gets the data type of this tag
-   *
-   * @see #TYPE_ASCII
-   * @see #TYPE_LONG
-   * @see #TYPE_RATIONAL
-   * @see #TYPE_UNDEFINED
-   * @see #TYPE_UNSIGNED_BYTE
-   * @see #TYPE_UNSIGNED_LONG
-   * @see #TYPE_UNSIGNED_RATIONAL
-   * @see #TYPE_UNSIGNED_SHORT
-   */
-  short getDataType() {
-    return dataType;
-  }
-
-  /** Gets the total data size in bytes of the value of this tag. */
-  int getDataSize() {
-    return getComponentCount() * getElementSize(getDataType());
-  }
-
-  /** Gets the component count of this tag. */
-
-  // TODO(blemmon): fix integer overflows with this
-  int getComponentCount() {
-    return componentCountActual;
-  }
-
-  /**
-   * Sets the component count of this tag. Call this function before setValue() if the length of
-   * value does not match the component count.
-   */
-  void forceSetComponentCount(int count) {
-    componentCountActual = count;
-  }
-
-  /**
-   * Returns true if this ExifTag contains value; otherwise, this tag will contain an offset value
-   * that is determined when the tag is written.
-   */
-  boolean hasValue() {
-    return value != null;
-  }
-
-  /**
-   * Sets integer values into this tag. This method should be used for tags of type {@link
-   * #TYPE_UNSIGNED_SHORT}. This method will fail if:
-   *
-   * <ul>
-   *   <li>The component type of this tag is not {@link #TYPE_UNSIGNED_SHORT}, {@link
-   *       #TYPE_UNSIGNED_LONG}, or {@link #TYPE_LONG}.
-   *   <li>The value overflows.
-   *   <li>The value.length does NOT match the component count in the definition for this tag.
-   * </ul>
-   */
-  boolean setValue(int[] value) {
-    if (checkBadComponentCount(value.length)) {
-      return false;
-    }
-    if (dataType != TYPE_UNSIGNED_SHORT
-        && dataType != TYPE_LONG
-        && dataType != TYPE_UNSIGNED_LONG) {
-      return false;
-    }
-    if (dataType == TYPE_UNSIGNED_SHORT && checkOverflowForUnsignedShort(value)) {
-      return false;
-    } else if (dataType == TYPE_UNSIGNED_LONG && checkOverflowForUnsignedLong(value)) {
-      return false;
-    }
-
-    long[] data = new long[value.length];
-    for (int i = 0; i < value.length; i++) {
-      data[i] = value[i];
-    }
-    this.value = data;
-    componentCountActual = value.length;
-    return true;
-  }
-
-  /**
-   * Sets long values into this tag. This method should be used for tags of type {@link
-   * #TYPE_UNSIGNED_LONG}. This method will fail if:
-   *
-   * <ul>
-   *   <li>The component type of this tag is not {@link #TYPE_UNSIGNED_LONG}.
-   *   <li>The value overflows.
-   *   <li>The value.length does NOT match the component count in the definition for this tag.
-   * </ul>
-   */
-  boolean setValue(long[] value) {
-    if (checkBadComponentCount(value.length) || dataType != TYPE_UNSIGNED_LONG) {
-      return false;
-    }
-    if (checkOverflowForUnsignedLong(value)) {
-      return false;
-    }
-    this.value = value;
-    componentCountActual = value.length;
-    return true;
-  }
-
-  /**
-   * Sets a string value into this tag. This method should be used for tags of type {@link
-   * #TYPE_ASCII}. The string is converted to an ASCII string. Characters that cannot be converted
-   * are replaced with '?'. The length of the string must be equal to either (component count -1) or
-   * (component count). The final byte will be set to the string null terminator '\0', overwriting
-   * the last character in the string if the value.length is equal to the component count. This
-   * method will fail if:
-   *
-   * <ul>
-   *   <li>The data type is not {@link #TYPE_ASCII} or {@link #TYPE_UNDEFINED}.
-   *   <li>The length of the string is not equal to (component count -1) or (component count) in the
-   *       definition for this tag.
-   * </ul>
-   */
-  boolean setValue(String value) {
-    if (dataType != TYPE_ASCII && dataType != TYPE_UNDEFINED) {
-      return false;
-    }
-
-    byte[] buf = value.getBytes(US_ASCII);
-    byte[] finalBuf = buf;
-    if (buf.length > 0) {
-      finalBuf =
-          (buf[buf.length - 1] == 0 || dataType == TYPE_UNDEFINED)
-              ? buf
-              : Arrays.copyOf(buf, buf.length + 1);
-    } else if (dataType == TYPE_ASCII && componentCountActual == 1) {
-      finalBuf = new byte[] {0};
-    }
-    int count = finalBuf.length;
-    if (checkBadComponentCount(count)) {
-      return false;
-    }
-    componentCountActual = count;
-    this.value = finalBuf;
-    return true;
-  }
-
-  /**
-   * Sets Rational values into this tag. This method should be used for tags of type {@link
-   * #TYPE_UNSIGNED_RATIONAL}, or {@link #TYPE_RATIONAL}. This method will fail if:
-   *
-   * <ul>
-   *   <li>The component type of this tag is not {@link #TYPE_UNSIGNED_RATIONAL} or {@link
-   *       #TYPE_RATIONAL}.
-   *   <li>The value overflows.
-   *   <li>The value.length does NOT match the component count in the definition for this tag.
-   * </ul>
-   *
-   * @see Rational
-   */
-  boolean setValue(Rational[] value) {
-    if (checkBadComponentCount(value.length)) {
-      return false;
-    }
-    if (dataType != TYPE_UNSIGNED_RATIONAL && dataType != TYPE_RATIONAL) {
-      return false;
-    }
-    if (dataType == TYPE_UNSIGNED_RATIONAL && checkOverflowForUnsignedRational(value)) {
-      return false;
-    } else if (dataType == TYPE_RATIONAL && checkOverflowForRational(value)) {
-      return false;
-    }
-
-    this.value = value;
-    componentCountActual = value.length;
-    return true;
-  }
-
-  /**
-   * Sets byte values into this tag. This method should be used for tags of type {@link
-   * #TYPE_UNSIGNED_BYTE} or {@link #TYPE_UNDEFINED}. This method will fail if:
-   *
-   * <ul>
-   *   <li>The component type of this tag is not {@link #TYPE_UNSIGNED_BYTE} or {@link
-   *       #TYPE_UNDEFINED} .
-   *   <li>The length does NOT match the component count in the definition for this tag.
-   * </ul>
-   */
-  private boolean setValue(byte[] value, int offset, int length) {
-    if (checkBadComponentCount(length)) {
-      return false;
-    }
-    if (dataType != TYPE_UNSIGNED_BYTE && dataType != TYPE_UNDEFINED) {
-      return false;
-    }
-    this.value = new byte[length];
-    System.arraycopy(value, offset, this.value, 0, length);
-    componentCountActual = length;
-    return true;
-  }
-
-  /** Equivalent to setValue(value, 0, value.length). */
-  boolean setValue(byte[] value) {
-    return setValue(value, 0, value.length);
-  }
-
-  /**
-   * Gets the value as an array of ints. This method should be used for tags of type {@link
-   * #TYPE_UNSIGNED_SHORT}, {@link #TYPE_UNSIGNED_LONG}.
-   *
-   * @return the value as as an array of ints, or null if the tag's value does not exist or cannot
-   *     be converted to an array of ints.
-   */
-  int[] getValueAsInts() {
-    if (value == null) {
-      return null;
-    } else if (value instanceof long[]) {
-      long[] val = (long[]) value;
-      int[] arr = new int[val.length];
-      for (int i = 0; i < val.length; i++) {
-        arr[i] = (int) val[i]; // Truncates
-      }
-      return arr;
-    }
-    return null;
-  }
-
-  /** Gets the tag's value or null if none exists. */
-  public Object getValue() {
-    return value;
-  }
-
-  /** Gets a string representation of the value. */
-  private String forceGetValueAsString() {
-    if (value == null) {
-      return "";
-    } else if (value instanceof byte[]) {
-      if (dataType == TYPE_ASCII) {
-        return new String((byte[]) value, US_ASCII);
-      } else {
-        return Arrays.toString((byte[]) value);
-      }
-    } else if (value instanceof long[]) {
-      if (((long[]) value).length == 1) {
-        return String.valueOf(((long[]) value)[0]);
-      } else {
-        return Arrays.toString((long[]) value);
-      }
-    } else if (value instanceof Object[]) {
-      if (((Object[]) value).length == 1) {
-        Object val = ((Object[]) value)[0];
-        if (val == null) {
-          return "";
-        } else {
-          return val.toString();
-        }
-      } else {
-        return Arrays.toString((Object[]) value);
-      }
-    } else {
-      return value.toString();
-    }
-  }
-
-  /**
-   * Gets the value for type {@link #TYPE_ASCII}, {@link #TYPE_LONG}, {@link #TYPE_UNDEFINED},
-   * {@link #TYPE_UNSIGNED_BYTE}, {@link #TYPE_UNSIGNED_LONG}, or {@link #TYPE_UNSIGNED_SHORT}.
-   *
-   * @exception IllegalArgumentException if the data type is {@link #TYPE_RATIONAL} or {@link
-   *     #TYPE_UNSIGNED_RATIONAL}.
-   */
-  long getValueAt(int index) {
-    if (value instanceof long[]) {
-      return ((long[]) value)[index];
-    } else if (value instanceof byte[]) {
-      return ((byte[]) value)[index];
-    }
-    throw new IllegalArgumentException(
-        "Cannot get integer value from " + convertTypeToString(dataType));
-  }
-
-  /**
-   * Gets the {@link #TYPE_ASCII} data.
-   *
-   * @exception IllegalArgumentException If the type is NOT {@link #TYPE_ASCII}.
-   */
-  protected String getString() {
-    if (dataType != TYPE_ASCII) {
-      throw new IllegalArgumentException(
-          "Cannot get ASCII value from " + convertTypeToString(dataType));
-    }
-    return new String((byte[]) value, US_ASCII);
-  }
-
-  /**
-   * Gets the offset of this tag. This is only valid if this data size > 4 and contains an offset to
-   * the location of the actual value.
-   */
-  protected int getOffset() {
-    return offset;
-  }
-
-  /** Sets the offset of this tag. */
-  protected void setOffset(int offset) {
-    this.offset = offset;
-  }
-
-  void setHasDefinedCount(boolean d) {
-    hasDefinedDefaultComponentCount = d;
-  }
-
-  boolean hasDefinedCount() {
-    return hasDefinedDefaultComponentCount;
-  }
-
-  private boolean checkBadComponentCount(int count) {
-    return hasDefinedDefaultComponentCount && (componentCountActual != count);
-  }
-
-  private static String convertTypeToString(short type) {
-    switch (type) {
-      case TYPE_UNSIGNED_BYTE:
-        return "UNSIGNED_BYTE";
-      case TYPE_ASCII:
-        return "ASCII";
-      case TYPE_UNSIGNED_SHORT:
-        return "UNSIGNED_SHORT";
-      case TYPE_UNSIGNED_LONG:
-        return "UNSIGNED_LONG";
-      case TYPE_UNSIGNED_RATIONAL:
-        return "UNSIGNED_RATIONAL";
-      case TYPE_UNDEFINED:
-        return "UNDEFINED";
-      case TYPE_LONG:
-        return "LONG";
-      case TYPE_RATIONAL:
-        return "RATIONAL";
-      default:
-        return "";
-    }
-  }
-
-  private boolean checkOverflowForUnsignedShort(int[] value) {
-    for (int v : value) {
-      if (v > UNSIGNED_SHORT_MAX || v < 0) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  private boolean checkOverflowForUnsignedLong(long[] value) {
-    for (long v : value) {
-      if (v < 0 || v > UNSIGNED_LONG_MAX) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  private boolean checkOverflowForUnsignedLong(int[] value) {
-    for (int v : value) {
-      if (v < 0) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  private boolean checkOverflowForUnsignedRational(Rational[] value) {
-    for (Rational v : value) {
-      if (v.getNumerator() < 0
-          || v.getDenominator() < 0
-          || v.getNumerator() > UNSIGNED_LONG_MAX
-          || v.getDenominator() > UNSIGNED_LONG_MAX) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  private boolean checkOverflowForRational(Rational[] value) {
-    for (Rational v : value) {
-      if (v.getNumerator() < LONG_MIN
-          || v.getDenominator() < LONG_MIN
-          || v.getNumerator() > LONG_MAX
-          || v.getDenominator() > LONG_MAX) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (obj == null) {
-      return false;
-    }
-    if (obj instanceof ExifTag) {
-      ExifTag tag = (ExifTag) obj;
-      if (tag.tagId != this.tagId
-          || tag.componentCountActual != this.componentCountActual
-          || tag.dataType != this.dataType) {
-        return false;
-      }
-      if (value != null) {
-        if (tag.value == null) {
-          return false;
-        } else if (value instanceof long[]) {
-          if (!(tag.value instanceof long[])) {
-            return false;
-          }
-          return Arrays.equals((long[]) value, (long[]) tag.value);
-        } else if (value instanceof Rational[]) {
-          if (!(tag.value instanceof Rational[])) {
-            return false;
-          }
-          return Arrays.equals((Rational[]) value, (Rational[]) tag.value);
-        } else if (value instanceof byte[]) {
-          if (!(tag.value instanceof byte[])) {
-            return false;
-          }
-          return Arrays.equals((byte[]) value, (byte[]) tag.value);
-        } else {
-          return value.equals(tag.value);
-        }
-      } else {
-        return tag.value == null;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(
-        tagId, dataType, hasDefinedDefaultComponentCount, componentCountActual, ifd, value, offset);
-  }
-
-  @Override
-  public String toString() {
-    return String.format("tag id: %04X\n", tagId)
-        + "ifd id: "
-        + ifd
-        + "\ntype: "
-        + convertTypeToString(dataType)
-        + "\ncount: "
-        + componentCountActual
-        + "\noffset: "
-        + offset
-        + "\nvalue: "
-        + forceGetValueAsString()
-        + "\n";
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/exif/IfdData.java b/java/com/android/dialer/callcomposer/camera/exif/IfdData.java
deleted file mode 100644
index e85919e..0000000
--- a/java/com/android/dialer/callcomposer/camera/exif/IfdData.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.exif;
-
-import android.support.v4.util.ArrayMap;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * This class stores all the tags in an IFD.
- *
- * @see ExifData
- * @see ExifTag
- */
-class IfdData {
-
-  private final int ifdId;
-  private final Map<Short, ExifTag> exifTags = new ArrayMap<>();
-  private static final int[] ifds = {
-    IfdId.TYPE_IFD_0,
-    IfdId.TYPE_IFD_1,
-    IfdId.TYPE_IFD_EXIF,
-    IfdId.TYPE_IFD_INTEROPERABILITY,
-    IfdId.TYPE_IFD_GPS
-  };
-  /**
-   * Creates an IfdData with given IFD ID.
-   *
-   * @see IfdId#TYPE_IFD_0
-   * @see IfdId#TYPE_IFD_1
-   * @see IfdId#TYPE_IFD_EXIF
-   * @see IfdId#TYPE_IFD_GPS
-   * @see IfdId#TYPE_IFD_INTEROPERABILITY
-   */
-  IfdData(int ifdId) {
-    this.ifdId = ifdId;
-  }
-
-  static int[] getIfds() {
-    return ifds;
-  }
-
-  /** Get a array the contains all {@link ExifTag} in this IFD. */
-  private ExifTag[] getAllTags() {
-    return exifTags.values().toArray(new ExifTag[exifTags.size()]);
-  }
-
-  /**
-   * Gets the ID of this IFD.
-   *
-   * @see IfdId#TYPE_IFD_0
-   * @see IfdId#TYPE_IFD_1
-   * @see IfdId#TYPE_IFD_EXIF
-   * @see IfdId#TYPE_IFD_GPS
-   * @see IfdId#TYPE_IFD_INTEROPERABILITY
-   */
-  protected int getId() {
-    return ifdId;
-  }
-
-  /** Gets the {@link ExifTag} with given tag id. Return null if there is no such tag. */
-  protected ExifTag getTag(short tagId) {
-    return exifTags.get(tagId);
-  }
-
-  /** Adds or replaces a {@link ExifTag}. */
-  protected ExifTag setTag(ExifTag tag) {
-    tag.setIfd(ifdId);
-    return exifTags.put(tag.getTagId(), tag);
-  }
-
-  /** Gets the tags count in the IFD. */
-  private int getTagCount() {
-    return exifTags.size();
-  }
-
-  /**
-   * Returns true if all tags in this two IFDs are equal. Note that tags of IFDs offset or thumbnail
-   * offset will be ignored.
-   */
-  @Override
-  public boolean equals(Object obj) {
-    if (this == obj) {
-      return true;
-    }
-    if (obj == null) {
-      return false;
-    }
-    if (obj instanceof IfdData) {
-      IfdData data = (IfdData) obj;
-      if (data.getId() == ifdId && data.getTagCount() == getTagCount()) {
-        ExifTag[] tags = data.getAllTags();
-        for (ExifTag tag : tags) {
-          if (ExifInterface.isOffsetTag(tag.getTagId())) {
-            continue;
-          }
-          ExifTag tag2 = exifTags.get(tag.getTagId());
-          if (!tag.equals(tag2)) {
-            return false;
-          }
-        }
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(ifdId, exifTags);
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/exif/IfdId.java b/java/com/android/dialer/callcomposer/camera/exif/IfdId.java
deleted file mode 100644
index c615457..0000000
--- a/java/com/android/dialer/callcomposer/camera/exif/IfdId.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.exif;
-
-/** The constants of the IFD ID defined in EXIF spec. */
-public interface IfdId {
-  int TYPE_IFD_0 = 0;
-  int TYPE_IFD_1 = 1;
-  int TYPE_IFD_EXIF = 2;
-  int TYPE_IFD_INTEROPERABILITY = 3;
-  int TYPE_IFD_GPS = 4;
-  /* This is used in ExifData to allocate enough IfdData */
-  int TYPE_IFD_COUNT = 5;
-}
diff --git a/java/com/android/dialer/callcomposer/camera/exif/JpegHeader.java b/java/com/android/dialer/callcomposer/camera/exif/JpegHeader.java
deleted file mode 100644
index 3d98fcc..0000000
--- a/java/com/android/dialer/callcomposer/camera/exif/JpegHeader.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.exif;
-
-class JpegHeader {
-  static final short SOI = (short) 0xFFD8;
-  static final short APP1 = (short) 0xFFE1;
-  static final short EOI = (short) 0xFFD9;
-
-  /**
-   * SOF (start of frame). All value between SOF0 and SOF15 is SOF marker except for DHT, JPG, and
-   * DAC marker.
-   */
-  private static final short SOF0 = (short) 0xFFC0;
-
-  private static final short SOF15 = (short) 0xFFCF;
-  private static final short DHT = (short) 0xFFC4;
-  private static final short JPG = (short) 0xFFC8;
-  private static final short DAC = (short) 0xFFCC;
-
-  static boolean isSofMarker(short marker) {
-    return marker >= SOF0 && marker <= SOF15 && marker != DHT && marker != JPG && marker != DAC;
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/camera/exif/Rational.java b/java/com/android/dialer/callcomposer/camera/exif/Rational.java
deleted file mode 100644
index d07778c..0000000
--- a/java/com/android/dialer/callcomposer/camera/exif/Rational.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.camera.exif;
-
-import java.util.Objects;
-
-/**
- * The rational data type of EXIF tag. Contains a pair of longs representing the numerator and
- * denominator of a Rational number.
- */
-public class Rational {
-
-  private final long numerator;
-  private final long denominator;
-
-  /** Create a Rational with a given numerator and denominator. */
-  Rational(long nominator, long denominator) {
-    numerator = nominator;
-    this.denominator = denominator;
-  }
-
-  /** Gets the numerator of the rational. */
-  long getNumerator() {
-    return numerator;
-  }
-
-  /** Gets the denominator of the rational */
-  long getDenominator() {
-    return denominator;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (obj == null) {
-      return false;
-    }
-    if (this == obj) {
-      return true;
-    }
-    if (obj instanceof Rational) {
-      Rational data = (Rational) obj;
-      return numerator == data.numerator && denominator == data.denominator;
-    }
-    return false;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(numerator, denominator);
-  }
-
-  @Override
-  public String toString() {
-    return numerator + "/" + denominator;
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/cameraui/AndroidManifest.xml b/java/com/android/dialer/callcomposer/cameraui/AndroidManifest.xml
deleted file mode 100644
index 12694ee..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.callcomposer.cameraui"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/cameraui/CameraMediaChooserView.java b/java/com/android/dialer/callcomposer/cameraui/CameraMediaChooserView.java
deleted file mode 100644
index df0e7ad..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/CameraMediaChooserView.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.cameraui;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.hardware.Camera;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.util.AttributeSet;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import com.android.dialer.callcomposer.camera.CameraManager;
-import com.android.dialer.callcomposer.camera.HardwareCameraPreview;
-import com.android.dialer.callcomposer.camera.SoftwareCameraPreview;
-import com.android.dialer.common.LogUtil;
-
-/** Used to display the view of the camera. */
-public class CameraMediaChooserView extends FrameLayout {
-  private static final String STATE_CAMERA_INDEX = "camera_index";
-  private static final String STATE_SUPER = "super";
-
-  // True if we have at least queued an update to the view tree to support software rendering
-  // fallback
-  private boolean isSoftwareFallbackActive;
-
-  public CameraMediaChooserView(final Context context, final AttributeSet attrs) {
-    super(context, attrs);
-  }
-
-  @Override
-  protected Parcelable onSaveInstanceState() {
-    final Bundle bundle = new Bundle();
-    bundle.putParcelable(STATE_SUPER, super.onSaveInstanceState());
-    final int cameraIndex = CameraManager.get().getCameraIndex();
-    LogUtil.i("CameraMediaChooserView.onSaveInstanceState", "saving camera index:" + cameraIndex);
-    bundle.putInt(STATE_CAMERA_INDEX, cameraIndex);
-    return bundle;
-  }
-
-  @Override
-  protected void onRestoreInstanceState(final Parcelable state) {
-    if (!(state instanceof Bundle)) {
-      return;
-    }
-
-    final Bundle bundle = (Bundle) state;
-    final int cameraIndex = bundle.getInt(STATE_CAMERA_INDEX);
-    super.onRestoreInstanceState(bundle.getParcelable(STATE_SUPER));
-
-    LogUtil.i(
-        "CameraMediaChooserView.onRestoreInstanceState", "restoring camera index:" + cameraIndex);
-    if (cameraIndex != -1) {
-      CameraManager.get().selectCameraByIndex(cameraIndex);
-    } else {
-      resetState();
-    }
-  }
-
-  public void resetState() {
-    CameraManager.get().selectCamera(Camera.CameraInfo.CAMERA_FACING_BACK);
-  }
-
-  @Override
-  protected void onDraw(final Canvas canvas) {
-    super.onDraw(canvas);
-    // If the canvas isn't hardware accelerated, we have to replace the HardwareCameraPreview
-    // with a SoftwareCameraPreview which supports software rendering
-    if (!canvas.isHardwareAccelerated() && !isSoftwareFallbackActive) {
-      isSoftwareFallbackActive = true;
-      // Post modifying the tree since we can't modify the view tree during a draw pass
-      post(
-          new Runnable() {
-            @Override
-            public void run() {
-              final HardwareCameraPreview cameraPreview =
-                  (HardwareCameraPreview) findViewById(R.id.camera_preview);
-              if (cameraPreview == null) {
-                return;
-              }
-              final ViewGroup parent = ((ViewGroup) cameraPreview.getParent());
-              final int index = parent.indexOfChild(cameraPreview);
-              final SoftwareCameraPreview softwareCameraPreview =
-                  new SoftwareCameraPreview(getContext());
-              // Be sure to remove the hardware view before adding the software view to
-              // prevent having 2 camera previews active at the same time
-              parent.removeView(cameraPreview);
-              parent.addView(softwareCameraPreview, index);
-            }
-          });
-    }
-  }
-}
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/drawable-hdpi/ic_capture.png b/java/com/android/dialer/callcomposer/cameraui/res/drawable-hdpi/ic_capture.png
deleted file mode 100644
index b974c9f..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/drawable-hdpi/ic_capture.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/drawable-mdpi/ic_capture.png b/java/com/android/dialer/callcomposer/cameraui/res/drawable-mdpi/ic_capture.png
deleted file mode 100644
index 9842758..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/drawable-mdpi/ic_capture.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/drawable-xhdpi/ic_capture.png b/java/com/android/dialer/callcomposer/cameraui/res/drawable-xhdpi/ic_capture.png
deleted file mode 100644
index 66f9f05..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/drawable-xhdpi/ic_capture.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/drawable-xxhdpi/ic_capture.png b/java/com/android/dialer/callcomposer/cameraui/res/drawable-xxhdpi/ic_capture.png
deleted file mode 100644
index 4308def..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/drawable-xxhdpi/ic_capture.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/drawable-xxxhdpi/ic_capture.png b/java/com/android/dialer/callcomposer/cameraui/res/drawable-xxxhdpi/ic_capture.png
deleted file mode 100644
index 53a2f11..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/drawable-xxxhdpi/ic_capture.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/drawable/transparent_button_background.xml b/java/com/android/dialer/callcomposer/cameraui/res/drawable/transparent_button_background.xml
deleted file mode 100644
index fda52c9..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/drawable/transparent_button_background.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item
-    android:drawable="@color/background_item_grey_pressed"
-    android:state_pressed="true"/>
-  <item
-    android:drawable="@color/background_item_grey_pressed"
-    android:state_activated="true"/>
-  <item
-    android:drawable="@android:color/transparent"/>
-</selector>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/layout/camera_view.xml b/java/com/android/dialer/callcomposer/cameraui/res/layout/camera_view.xml
deleted file mode 100644
index d588511..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/layout/camera_view.xml
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<com.android.dialer.callcomposer.cameraui.CameraMediaChooserView
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/camera_view"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:background="@android:color/black">
-
-  <FrameLayout
-    android:id="@+id/mediapicker_enabled"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <!-- Default to using the hardware rendered camera preview, we will fall back to
-    SoftwareCameraPreview in CameraMediaChooserView if needed -->
-    <com.android.dialer.callcomposer.camera.HardwareCameraPreview
-      android:id="@+id/camera_preview"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:layout_gravity="center" />
-
-    <com.android.dialer.callcomposer.camera.camerafocus.RenderOverlay
-      android:id="@+id/focus_visual"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"/>
-
-    <View
-      android:id="@+id/camera_shutter_visual"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:background="@android:color/white"
-      android:visibility="gone"/>
-
-    <ImageView
-      android:id="@+id/preview_image_view"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:scaleType="centerCrop"
-      android:background="#000000"
-      android:visibility="gone"/>
-
-    <!-- Need a background on this view in order for the ripple effect to have a place to draw -->
-    <FrameLayout
-      android:id="@+id/camera_button_container"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:background="@android:color/transparent"
-      android:padding="16dp"
-      android:layout_gravity="bottom">
-
-      <ImageButton
-        android:id="@+id/camera_fullscreen"
-        android:layout_width="@dimen/camera_view_button_size"
-        android:layout_height="@dimen/camera_view_button_size"
-        android:layout_gravity="bottom|end"
-        android:layout_marginEnd="@dimen/camera_view_button_margin"
-        android:layout_marginBottom="@dimen/camera_view_button_margin"
-        android:src="@drawable/quantum_ic_fullscreen_white_48"
-        android:background="?android:attr/selectableItemBackgroundBorderless"
-        android:contentDescription="@string/description_camera_switch_full_screen"/>
-
-      <ImageButton
-        android:id="@+id/camera_exit_fullscreen"
-        android:layout_width="@dimen/camera_view_button_size"
-        android:layout_height="@dimen/camera_view_button_size"
-        android:layout_gravity="bottom|end"
-        android:layout_marginEnd="@dimen/camera_view_button_margin"
-        android:layout_marginBottom="@dimen/camera_view_button_margin"
-        android:src="@drawable/quantum_ic_fullscreen_exit_white_48"
-        android:visibility="gone"
-        android:background="?android:attr/selectableItemBackgroundBorderless"
-        android:contentDescription="@string/description_camera_switch_preview_screen"/>
-
-      <ImageButton
-        android:id="@+id/camera_capture_button"
-        android:layout_width="@dimen/capture_button_size"
-        android:layout_height="@dimen/capture_button_size"
-        android:layout_gravity="bottom|center_horizontal"
-        android:layout_marginBottom="@dimen/capture_button_bottom_margin"
-        android:background="?android:attr/selectableItemBackgroundBorderless"
-        android:src="@drawable/ic_capture"
-        android:scaleType="fitXY"
-        android:contentDescription="@string/description_camera_take_picture"/>
-
-      <ImageButton
-        android:id="@+id/swap_camera_button"
-        android:layout_width="@dimen/camera_view_button_size"
-        android:layout_height="@dimen/camera_view_button_size"
-        android:layout_gravity="start|bottom"
-        android:layout_marginStart="@dimen/camera_view_button_margin"
-        android:layout_marginBottom="@dimen/camera_view_button_margin"
-        android:src="@drawable/front_back_switch_button_animation"
-        android:background="@drawable/transparent_button_background"/>
-
-      <ImageButton
-        android:id="@+id/camera_cancel_button"
-        android:layout_width="@dimen/camera_view_button_size"
-        android:layout_height="@dimen/camera_view_button_size"
-        android:layout_gravity="start|bottom"
-        android:layout_marginStart="@dimen/camera_view_button_margin"
-        android:layout_marginBottom="@dimen/camera_view_button_margin"
-        android:visibility="gone"
-        android:background="@drawable/transparent_button_background"
-        android:src="@drawable/quantum_ic_undo_white_48"
-        android:contentDescription="@string/description_camera_cancel_photo" />
-    </FrameLayout>
-  </FrameLayout>
-
-  <ProgressBar
-    android:id="@+id/loading"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:layout_gravity="center"
-    android:visibility="gone"/>
-</com.android.dialer.callcomposer.cameraui.CameraMediaChooserView>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-af/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-af/strings.xml
deleted file mode 100644
index baca0b9..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-af/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Skakel oor na volskerm-kamera</string>
-  <string name="description_camera_switch_preview_screen">Skakel oor na kameravoorskou</string>
-  <string name="description_camera_switch_camera_facing">Skakel oor na voorste kamera</string>
-  <string name="description_camera_switch_camera_rear">Skakel oor na agterste kamera</string>
-  <string name="description_camera_take_picture">Neem foto</string>
-  <string name="description_camera_cancel_photo">Neem foto weer</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-am/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-am/strings.xml
deleted file mode 100644
index f862cd9..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-am/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">ወደ ሙሉ ማያ ገጽ ካሜራ ይቀይሩ</string>
-  <string name="description_camera_switch_preview_screen">ወደ ካሜራ ቅድመ ዕይታ ይቀይሩ</string>
-  <string name="description_camera_switch_camera_facing">ወደ የፊት ካሜራ ይቀይሩ</string>
-  <string name="description_camera_switch_camera_rear">ወደ የኋላ ካሜራ ይቀይሩ</string>
-  <string name="description_camera_take_picture">ፎቶ ያንሱ</string>
-  <string name="description_camera_cancel_photo">ፎቶ በድጋሚ ያንሱ</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ar/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ar/strings.xml
deleted file mode 100644
index f0e6d89..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ar/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">التبديل إلى الكاميرا بملء الشاشة</string>
-  <string name="description_camera_switch_preview_screen">التبديل إلى معاينة الكاميرا</string>
-  <string name="description_camera_switch_camera_facing">تبديل إلى الكاميرا الأمامية</string>
-  <string name="description_camera_switch_camera_rear">تبديل مرة أخرى إلى الكاميرا الأمامية</string>
-  <string name="description_camera_take_picture">التقاط صورة</string>
-  <string name="description_camera_cancel_photo">إعادة التقاط الصورة</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-az/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-az/strings.xml
deleted file mode 100644
index 36f52cf..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-az/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Tam ekranlı kameraya keçin</string>
-  <string name="description_camera_switch_preview_screen">Kamera önizləməsinə keçin</string>
-  <string name="description_camera_switch_camera_facing">Ön kameraya keçin</string>
-  <string name="description_camera_switch_camera_rear">Arxa kameraya keçin</string>
-  <string name="description_camera_take_picture">Foto çəkin</string>
-  <string name="description_camera_cancel_photo">Fotonu yenidən çəkin</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 3d96e0c..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Prebacite na prikaz kamere preko celog ekrana</string>
-  <string name="description_camera_switch_preview_screen">Prebacite na pregled kamere</string>
-  <string name="description_camera_switch_camera_facing">Prebacite na prednju kameru</string>
-  <string name="description_camera_switch_camera_rear">Prebacite na zadnju kameru</string>
-  <string name="description_camera_take_picture">Snimite sliku</string>
-  <string name="description_camera_cancel_photo">Ponovo snimite sliku</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-be/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-be/strings.xml
deleted file mode 100644
index d42f095..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-be/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Пераключыцца на поўнаэкранную камеру</string>
-  <string name="description_camera_switch_preview_screen">Пераключыцца ў рэжым перадпрагляду камеры</string>
-  <string name="description_camera_switch_camera_facing">Пераключыцца на пярэднюю камеру</string>
-  <string name="description_camera_switch_camera_rear">Пераключыцца на заднюю камеру</string>
-  <string name="description_camera_take_picture">Зрабіць фота</string>
-  <string name="description_camera_cancel_photo">Зрабіць фота яшчэ раз</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-bg/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-bg/strings.xml
deleted file mode 100644
index 4f2b601..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-bg/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Превключване към камера на цял екран</string>
-  <string name="description_camera_switch_preview_screen">Превключване към визуализация на камерата</string>
-  <string name="description_camera_switch_camera_facing">Превключване към предната камера</string>
-  <string name="description_camera_switch_camera_rear">Превключване към задната камера.</string>
-  <string name="description_camera_take_picture">Снимане</string>
-  <string name="description_camera_cancel_photo">Повторно снимане</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-bn/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-bn/strings.xml
deleted file mode 100644
index e7ac59e..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-bn/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">সম্পূর্ণ স্ক্রিন জুড়ে ক্যামেরা খুলুন</string>
-  <string name="description_camera_switch_preview_screen">ক্যামেরার পূর্বরূপ মোডে পাল্টান</string>
-  <string name="description_camera_switch_camera_facing">সামনের ক্যামেরাতে পাল্টান</string>
-  <string name="description_camera_switch_camera_rear">পিছনের ক্যামেরাতে পাল্টান</string>
-  <string name="description_camera_take_picture">ফটো তুলুন</string>
-  <string name="description_camera_cancel_photo">আবার ফটো তুলুন</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-bs/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-bs/strings.xml
deleted file mode 100644
index 896cad1..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-bs/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Prebaci na kameru preko cijelog ekrana</string>
-  <string name="description_camera_switch_preview_screen">Prebaci na pregled kamere</string>
-  <string name="description_camera_switch_camera_facing">Prebaci na prednju kameru</string>
-  <string name="description_camera_switch_camera_rear">Prebaci na zadnju kameru</string>
-  <string name="description_camera_take_picture">Snimi fotografiju</string>
-  <string name="description_camera_cancel_photo">Ponovo snimi fotografiju</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ca/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ca/strings.xml
deleted file mode 100644
index acef5a8..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ca/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Canvia a la càmera en pantalla completa</string>
-  <string name="description_camera_switch_preview_screen">Canvia a la previsualització de la càmera</string>
-  <string name="description_camera_switch_camera_facing">Canvia a la càmera frontal</string>
-  <string name="description_camera_switch_camera_rear">Canvia a la càmera posterior</string>
-  <string name="description_camera_take_picture">Fes una foto</string>
-  <string name="description_camera_cancel_photo">Torna a fer la foto</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-cs/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-cs/strings.xml
deleted file mode 100644
index e29825c..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-cs/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Přepnout na fotoaparát na celou obrazovku</string>
-  <string name="description_camera_switch_preview_screen">Přepnout na náhled fotoaparátu</string>
-  <string name="description_camera_switch_camera_facing">Přepnout na přední fotoaparát</string>
-  <string name="description_camera_switch_camera_rear">Přepnout na zadní fotoaparát</string>
-  <string name="description_camera_take_picture">Vyfotit</string>
-  <string name="description_camera_cancel_photo">Znovu vyfotit</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-da/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-da/strings.xml
deleted file mode 100644
index 0f1dda4..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-da/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Skift til kamera i fuld skærm</string>
-  <string name="description_camera_switch_preview_screen">Skift til forhåndsvisning af kamera</string>
-  <string name="description_camera_switch_camera_facing">Skift til kamera på forsiden</string>
-  <string name="description_camera_switch_camera_rear">Skift til kamera på bagsiden</string>
-  <string name="description_camera_take_picture">Tag billede</string>
-  <string name="description_camera_cancel_photo">Tag billedet om</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-de/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-de/strings.xml
deleted file mode 100644
index 576b963..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-de/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Zur Vollbildkamera wechseln</string>
-  <string name="description_camera_switch_preview_screen">Zur Kameravorschau wechseln</string>
-  <string name="description_camera_switch_camera_facing">Zur Frontkamera wechseln</string>
-  <string name="description_camera_switch_camera_rear">Zur Rückkamera wechseln</string>
-  <string name="description_camera_take_picture">Foto aufnehmen</string>
-  <string name="description_camera_cancel_photo">Foto neu aufnehmen</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-el/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-el/strings.xml
deleted file mode 100644
index aadf7ce..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-el/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Εναλλαγή σε κάμερα πλήρους οθόνης</string>
-  <string name="description_camera_switch_preview_screen">Εναλλαγή σε προεπισκόπηση κάμερας</string>
-  <string name="description_camera_switch_camera_facing">Εναλλαγή σε κάμερα πρόσοψης</string>
-  <string name="description_camera_switch_camera_rear">Εναλλαγή σε πίσω κάμερα</string>
-  <string name="description_camera_take_picture">Λήψη φωτογραφίας</string>
-  <string name="description_camera_cancel_photo">Επανάληψη λήψης φωτογραφίας</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-en-rAU/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-en-rAU/strings.xml
deleted file mode 100644
index 0447b9b..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Switch to full-screen camera</string>
-  <string name="description_camera_switch_preview_screen">Switch to camera preview</string>
-  <string name="description_camera_switch_camera_facing">Switch to front-facing camera</string>
-  <string name="description_camera_switch_camera_rear">Switch to rear-facing camera</string>
-  <string name="description_camera_take_picture">Take photo</string>
-  <string name="description_camera_cancel_photo">Retake photo</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-en-rGB/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-en-rGB/strings.xml
deleted file mode 100644
index 0447b9b..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Switch to full-screen camera</string>
-  <string name="description_camera_switch_preview_screen">Switch to camera preview</string>
-  <string name="description_camera_switch_camera_facing">Switch to front-facing camera</string>
-  <string name="description_camera_switch_camera_rear">Switch to rear-facing camera</string>
-  <string name="description_camera_take_picture">Take photo</string>
-  <string name="description_camera_cancel_photo">Retake photo</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-en-rIN/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-en-rIN/strings.xml
deleted file mode 100644
index 0447b9b..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Switch to full-screen camera</string>
-  <string name="description_camera_switch_preview_screen">Switch to camera preview</string>
-  <string name="description_camera_switch_camera_facing">Switch to front-facing camera</string>
-  <string name="description_camera_switch_camera_rear">Switch to rear-facing camera</string>
-  <string name="description_camera_take_picture">Take photo</string>
-  <string name="description_camera_cancel_photo">Retake photo</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-es-rUS/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-es-rUS/strings.xml
deleted file mode 100644
index 8076261..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Cambiar a cámara en pantalla completa</string>
-  <string name="description_camera_switch_preview_screen">Cambiar a vista previa de la cámara</string>
-  <string name="description_camera_switch_camera_facing">Cambiar a cámara frontal</string>
-  <string name="description_camera_switch_camera_rear">Cambiar a cámara trasera</string>
-  <string name="description_camera_take_picture">Tomar foto</string>
-  <string name="description_camera_cancel_photo">Volver a tomar foto</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-es/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-es/strings.xml
deleted file mode 100644
index 1911b55..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-es/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Cambiar a la cámara en pantalla completa</string>
-  <string name="description_camera_switch_preview_screen">Cambiar a la vista previa de la cámara</string>
-  <string name="description_camera_switch_camera_facing">Cambiar a la cámara frontal</string>
-  <string name="description_camera_switch_camera_rear">Cambiar a la cámara trasera</string>
-  <string name="description_camera_take_picture">Hacer una foto</string>
-  <string name="description_camera_cancel_photo">Repetir la foto</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-et/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-et/strings.xml
deleted file mode 100644
index e85de24..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-et/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Täisekraaniga kaamerale lülitumine</string>
-  <string name="description_camera_switch_preview_screen">Kaamera eelvaatele lülitumine</string>
-  <string name="description_camera_switch_camera_facing">Esikaamerale lülitumine</string>
-  <string name="description_camera_switch_camera_rear">Tagakaamerale lülitumine</string>
-  <string name="description_camera_take_picture">Foto jäädvustamine</string>
-  <string name="description_camera_cancel_photo">Foto uuesti jäädvustamine</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-eu/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-eu/strings.xml
deleted file mode 100644
index 1ce1d8c..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-eu/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Erabili pantaila osoko kamera</string>
-  <string name="description_camera_switch_preview_screen">Erabili kameraren aurrebista</string>
-  <string name="description_camera_switch_camera_facing">Erabili aurreko kamera</string>
-  <string name="description_camera_switch_camera_rear">Erabili atzeko kamera</string>
-  <string name="description_camera_take_picture">Atera argazkia</string>
-  <string name="description_camera_cancel_photo">Atera berriro argazkia</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-fa/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-fa/strings.xml
deleted file mode 100644
index 157beef..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-fa/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">رفتن به دوربین تمام صفحه</string>
-  <string name="description_camera_switch_preview_screen">رفتن به پیش‌نمایش دوربین</string>
-  <string name="description_camera_switch_camera_facing">رفتن به دوربین جلو</string>
-  <string name="description_camera_switch_camera_rear">رفتن به دوربین عقب</string>
-  <string name="description_camera_take_picture">عکس گرفتن</string>
-  <string name="description_camera_cancel_photo">عکس گرفتن مجدد</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-fi/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-fi/strings.xml
deleted file mode 100644
index 9469524..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-fi/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Siirry koko näytön kameraan</string>
-  <string name="description_camera_switch_preview_screen">Siirry kameran esikatseluun</string>
-  <string name="description_camera_switch_camera_facing">Vaihda etukameraan</string>
-  <string name="description_camera_switch_camera_rear">Vaihda takakameraan</string>
-  <string name="description_camera_take_picture">Ota kuva</string>
-  <string name="description_camera_cancel_photo">Ota kuva uudelleen</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-fr-rCA/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-fr-rCA/strings.xml
deleted file mode 100644
index a2f10bc..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Passer au mode Plein écran de l\'appareil photo</string>
-  <string name="description_camera_switch_preview_screen">Passer au mode Aperçu de l\'appareil photo</string>
-  <string name="description_camera_switch_camera_facing">Passer à l\'appareil photo avant</string>
-  <string name="description_camera_switch_camera_rear">Passer à l\'appareil photo arrière</string>
-  <string name="description_camera_take_picture">Prendre une photo</string>
-  <string name="description_camera_cancel_photo">Reprendre la photo</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-fr/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-fr/strings.xml
deleted file mode 100644
index 50df31b..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-fr/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Passer en mode plein écran</string>
-  <string name="description_camera_switch_preview_screen">Passer en mode aperçu</string>
-  <string name="description_camera_switch_camera_facing">Utiliser la caméra avant</string>
-  <string name="description_camera_switch_camera_rear">Utiliser la caméra arrière</string>
-  <string name="description_camera_take_picture">Prendre une photo</string>
-  <string name="description_camera_cancel_photo">Reprendre la photo</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-gl/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-gl/strings.xml
deleted file mode 100644
index b9be419..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-gl/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Cambia á cámara de pantalla completa</string>
-  <string name="description_camera_switch_preview_screen">Cambia á vista previa da cámara</string>
-  <string name="description_camera_switch_camera_facing">Cambia á cámara frontal</string>
-  <string name="description_camera_switch_camera_rear">Cambia á cámara traseira</string>
-  <string name="description_camera_take_picture">Tira unha foto</string>
-  <string name="description_camera_cancel_photo">Repite a foto</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-gu/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-gu/strings.xml
deleted file mode 100644
index 6e752d9..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-gu/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">પૂર્ણ સ્ક્રીન કૅમેરા પર સ્વિચ કરો</string>
-  <string name="description_camera_switch_preview_screen">કૅમેરા પૂર્વાવલોકન પર સ્વીચ કરો</string>
-  <string name="description_camera_switch_camera_facing">ફ્ર્ન્ટ ફેસિંગ કૅમેરા પર સ્વિચ કરો</string>
-  <string name="description_camera_switch_camera_rear">પાછળના કૅમેરા પર સ્વિચ કરો</string>
-  <string name="description_camera_take_picture">ફોટો લો</string>
-  <string name="description_camera_cancel_photo">ફોટો ફરીથી લો</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-hi/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-hi/strings.xml
deleted file mode 100644
index 52973b6..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-hi/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">पूर्ण स्क्रीन कैमरे में बदलें</string>
-  <string name="description_camera_switch_preview_screen">कैमरा पूर्वावलोकन में बदलें</string>
-  <string name="description_camera_switch_camera_facing">सामने वाले कैमरे में बदलें</string>
-  <string name="description_camera_switch_camera_rear">पीछे वाले कैमरे में बदलें</string>
-  <string name="description_camera_take_picture">फ़ोटो लें</string>
-  <string name="description_camera_cancel_photo">फि‍र से फ़ोटो लें</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-hr/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-hr/strings.xml
deleted file mode 100644
index 3db2875..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-hr/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Prebaci na prikaz fotoaparata preko cijelog zaslona</string>
-  <string name="description_camera_switch_preview_screen">Prebaci na pregled fotoaparata</string>
-  <string name="description_camera_switch_camera_facing">Prebaci na prednji fotoaparat</string>
-  <string name="description_camera_switch_camera_rear">Prebaci na stražnji fotoaparat</string>
-  <string name="description_camera_take_picture">Snimi fotografiju</string>
-  <string name="description_camera_cancel_photo">Ponovno snimi fotografiju</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-hu/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-hu/strings.xml
deleted file mode 100644
index a32d4ee..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-hu/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Váltás teljes képernyős kameranézetre</string>
-  <string name="description_camera_switch_preview_screen">Váltás kamera-előnézetre</string>
-  <string name="description_camera_switch_camera_facing">Váltás az első kamerára</string>
-  <string name="description_camera_switch_camera_rear">Váltás a hátsó kamerára</string>
-  <string name="description_camera_take_picture">Fotó készítése</string>
-  <string name="description_camera_cancel_photo">Új felvétel</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-hy/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-hy/strings.xml
deleted file mode 100644
index ef133c2..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-hy/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Միացնել լիաէկրան ռեժիմը</string>
-  <string name="description_camera_switch_preview_screen">Միացնել նախադիտման ռեժիմը</string>
-  <string name="description_camera_switch_camera_facing">Միացնել առջևի տեսախցիկը</string>
-  <string name="description_camera_switch_camera_rear">Միացնել հետևի տեսախցիկը</string>
-  <string name="description_camera_take_picture">Լուսանկարել</string>
-  <string name="description_camera_cancel_photo">Նորից լուսանկարել</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-in/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-in/strings.xml
deleted file mode 100644
index d238778..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-in/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Beralih ke kamera layar penuh</string>
-  <string name="description_camera_switch_preview_screen">Beralih ke pratinjau kamera</string>
-  <string name="description_camera_switch_camera_facing">Beralih ke kamera depan</string>
-  <string name="description_camera_switch_camera_rear">Beralih ke kamera belakang</string>
-  <string name="description_camera_take_picture">Ambil foto</string>
-  <string name="description_camera_cancel_photo">Ambil ulang foto</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-is/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-is/strings.xml
deleted file mode 100644
index b01e643..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-is/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Skipta yfir í myndavél á öllum skjánum</string>
-  <string name="description_camera_switch_preview_screen">Skipta yfir í forskoðun á myndavél</string>
-  <string name="description_camera_switch_camera_facing">Skipta yfir í fremri myndavél</string>
-  <string name="description_camera_switch_camera_rear">Skipta yfir í aftari myndavél</string>
-  <string name="description_camera_take_picture">Taka mynd</string>
-  <string name="description_camera_cancel_photo">Taka mynd aftur</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-it/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-it/strings.xml
deleted file mode 100644
index 0c4a56e..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-it/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Passa alla fotocamera a schermo intero</string>
-  <string name="description_camera_switch_preview_screen">Passa all\'anteprima della fotocamera</string>
-  <string name="description_camera_switch_camera_facing">Passa alla fotocamera anteriore</string>
-  <string name="description_camera_switch_camera_rear">Passa alla fotocamera posteriore</string>
-  <string name="description_camera_take_picture">Scatta foto</string>
-  <string name="description_camera_cancel_photo">Scatta foto di nuovo</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-iw/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-iw/strings.xml
deleted file mode 100644
index 67bc889..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-iw/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">מעבר למצלמה במסך מלא</string>
-  <string name="description_camera_switch_preview_screen">מעבר לתצוגה מקדימה של המצלמה</string>
-  <string name="description_camera_switch_camera_facing">מעבר למצלמה הקדמית</string>
-  <string name="description_camera_switch_camera_rear">מעבר למצלמה האחורית</string>
-  <string name="description_camera_take_picture">צילום תמונה</string>
-  <string name="description_camera_cancel_photo">צילום מחדש של התמונה</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ja/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ja/strings.xml
deleted file mode 100644
index d903388..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ja/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">全画面カメラに切り替えます</string>
-  <string name="description_camera_switch_preview_screen">カメラのプレビューに切り替えます</string>
-  <string name="description_camera_switch_camera_facing">前面カメラに切り替えます</string>
-  <string name="description_camera_switch_camera_rear">背面カメラに切り替えます</string>
-  <string name="description_camera_take_picture">写真を撮影します</string>
-  <string name="description_camera_cancel_photo">写真を撮り直します</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ka/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ka/strings.xml
deleted file mode 100644
index ccb6484..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ka/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">სრულეკრანიან კამერაზე გადართვა</string>
-  <string name="description_camera_switch_preview_screen">კამერის წინასწარ ხედზე გადართვა</string>
-  <string name="description_camera_switch_camera_facing">წინა კამერაზე გადართვა</string>
-  <string name="description_camera_switch_camera_rear">უკანა კამერაზე გადართვა</string>
-  <string name="description_camera_take_picture">ფოტოს გადაღება</string>
-  <string name="description_camera_cancel_photo">ფოტოს ხელახლა გადაღება</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-kk/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-kk/strings.xml
deleted file mode 100644
index 11c91c6..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-kk/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Толық экранды камераға ауысу</string>
-  <string name="description_camera_switch_preview_screen">Камераның алдын ала көру режиміне ауысу</string>
-  <string name="description_camera_switch_camera_facing">Камераның анфас режиміне ауысу</string>
-  <string name="description_camera_switch_camera_rear">Камераның қалыпты режиміне ауысу</string>
-  <string name="description_camera_take_picture">Суретке түсіру</string>
-  <string name="description_camera_cancel_photo">Суретке қайта түсіру</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-km/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-km/strings.xml
deleted file mode 100644
index dfb2781..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-km/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">ប្ដូរ​ទៅ​កាមេរ៉ា​ពេញ​អេក្រង់</string>
-  <string name="description_camera_switch_preview_screen">ប្ដូរ​ទៅ​ការមើល​កាមេរ៉ា​សាកល្បង</string>
-  <string name="description_camera_switch_camera_facing">ប្ដូរ​ទៅ​កាមេរ៉ា​ខាង​មុខ</string>
-  <string name="description_camera_switch_camera_rear">ប្តូរទៅកាមេរ៉ាខាងក្រោយ</string>
-  <string name="description_camera_take_picture">ថតរូប</string>
-  <string name="description_camera_cancel_photo">ថតរូប​ឡើងវិញ</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-kn/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-kn/strings.xml
deleted file mode 100644
index b95e118..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-kn/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">ಪೂರ್ಣ ಪರದೆ ಕ್ಯಾಮರಾಗೆ ಬದಲಿಸಿ</string>
-  <string name="description_camera_switch_preview_screen">ಕ್ಯಾಮರಾ ಪೂರ್ವವೀಕ್ಷಣೆಗೆ ಬದಲಾಯಿಸಿ</string>
-  <string name="description_camera_switch_camera_facing">ಮುಂಬದಿಯ ಕ್ಯಾಮರಾಗೆ ಬದಲಾಯಿಸಿ</string>
-  <string name="description_camera_switch_camera_rear">ಹಿಂಬದಿಯ ಕ್ಯಾಮರಾಗೆ ಬದಲಾಯಿಸಿ</string>
-  <string name="description_camera_take_picture">ಫೋಟೋ ತೆಗೆಯಿರಿ</string>
-  <string name="description_camera_cancel_photo">ಫೋಟೋವನ್ನು ಮರುಸೆರೆಹಿಡಿಯಿರಿ</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ko/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ko/strings.xml
deleted file mode 100644
index d296950..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ko/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">전체화면 카메라로 전환</string>
-  <string name="description_camera_switch_preview_screen">카메라 미리보기로 전환</string>
-  <string name="description_camera_switch_camera_facing">전면 카메라로 전환</string>
-  <string name="description_camera_switch_camera_rear">후면 카메라로 전환</string>
-  <string name="description_camera_take_picture">사진 찍기</string>
-  <string name="description_camera_cancel_photo">사진 다시 찍기</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ky/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ky/strings.xml
deleted file mode 100644
index f471412..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ky/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Камераны толук экранга которуу</string>
-  <string name="description_camera_switch_preview_screen">Камераны алдын ала көрүү режимине которуу</string>
-  <string name="description_camera_switch_camera_facing">Маңдайкы камерага которуу</string>
-  <string name="description_camera_switch_camera_rear">Арткы камерага которуу</string>
-  <string name="description_camera_take_picture">Сүрөткө тартуу</string>
-  <string name="description_camera_cancel_photo">Кайра сүрөткө тартуу</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-lo/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-lo/strings.xml
deleted file mode 100644
index fa8261c..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-lo/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">ສະຫຼັບໄປໃຊ້ກ້ອງແບບເຕັມຈໍ</string>
-  <string name="description_camera_switch_preview_screen">ສະຫຼັບໄປໃຊ້ຕົວຢ່າງກ້ອງ</string>
-  <string name="description_camera_switch_camera_facing">ສະຫຼັບໄປໃຊ້ກ້ອງໜ້າ</string>
-  <string name="description_camera_switch_camera_rear">ສະຫຼັບໄປໃຊ້ກ້ອງຫຼັງ</string>
-  <string name="description_camera_take_picture">ຖ່າຍຮູບ</string>
-  <string name="description_camera_cancel_photo">ຖ່າຍຮູບໃໝ່</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-lt/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-lt/strings.xml
deleted file mode 100644
index 783878f..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-lt/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Perjungti į viso ekrano režimu veikiantį fotoaparatą</string>
-  <string name="description_camera_switch_preview_screen">Perjungti į fotoaparato peržiūrą</string>
-  <string name="description_camera_switch_camera_facing">Perjungti į priekinį fotoaparatą</string>
-  <string name="description_camera_switch_camera_rear">Perjungti į užpakalinį fotoaparatą</string>
-  <string name="description_camera_take_picture">Fotografuoti</string>
-  <string name="description_camera_cancel_photo">Fotografuoti iš naujo</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-lv/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-lv/strings.xml
deleted file mode 100644
index bca0cdd..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-lv/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Pārslēgt uz pilnekrāna kameru</string>
-  <string name="description_camera_switch_preview_screen">Pārslēgt uz kameras priekšskatījumu</string>
-  <string name="description_camera_switch_camera_facing">Pārslēgt uz priekšējo kameru</string>
-  <string name="description_camera_switch_camera_rear">Pārslēgt uz aizmugurējo kameru</string>
-  <string name="description_camera_take_picture">Uzņemt fotoattēlu</string>
-  <string name="description_camera_cancel_photo">Atkārtoti uzņemt fotoattēlu</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-mk/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-mk/strings.xml
deleted file mode 100644
index c620fb9..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-mk/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Префрлете на камера на цел екран</string>
-  <string name="description_camera_switch_preview_screen">Префрлете на преглед на камера</string>
-  <string name="description_camera_switch_camera_facing">Префрлете на предна камера</string>
-  <string name="description_camera_switch_camera_rear">Префрлете на задна камера</string>
-  <string name="description_camera_take_picture">Фотографирај</string>
-  <string name="description_camera_cancel_photo">Фотографирај пак</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ml/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ml/strings.xml
deleted file mode 100644
index b666f51..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ml/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">പൂർണ്ണസ്ക്രീൻ ക്യാമറയിലേക്ക് മാറുക</string>
-  <string name="description_camera_switch_preview_screen">ക്യാമറ പ്രിവ്യൂവിലേക്ക് മാറുക</string>
-  <string name="description_camera_switch_camera_facing">മുൻ ക്യാമറയിലേക്ക് മാറുക</string>
-  <string name="description_camera_switch_camera_rear">പിൻ ക്യാമറയിലേക്ക് മാറുക</string>
-  <string name="description_camera_take_picture">ഫോട്ടോ എടുക്കുക</string>
-  <string name="description_camera_cancel_photo">ഫോട്ടോ വീണ്ടുമെടുക്കുക</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-mn/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-mn/strings.xml
deleted file mode 100644
index d31d155..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-mn/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Бүтэн дэлгэцийн камер руу сэлгэх</string>
-  <string name="description_camera_switch_preview_screen">Камерын урьдчилан үзэх рүү сэлгэх</string>
-  <string name="description_camera_switch_camera_facing">Урд талын камер руу сэлгэх</string>
-  <string name="description_camera_switch_camera_rear">Ар талын камер руу сэлгэх</string>
-  <string name="description_camera_take_picture">Зураг авах</string>
-  <string name="description_camera_cancel_photo">Зураг дахин авах</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-mr/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-mr/strings.xml
deleted file mode 100644
index 24861da..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-mr/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">पूर्ण स्क्रीन कॅमेर्‍यावर स्विच करा</string>
-  <string name="description_camera_switch_preview_screen">कॅमेरा पूर्वावलोकनावर स्विच करा</string>
-  <string name="description_camera_switch_camera_facing">समोरील कॅमऱ्यावर स्विच करा</string>
-  <string name="description_camera_switch_camera_rear">मागील कॅमेर्‍यावर स्‍विच करा</string>
-  <string name="description_camera_take_picture">फोटो घ्‍या</string>
-  <string name="description_camera_cancel_photo">फोटो पुन्हा घ्या</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ms/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ms/strings.xml
deleted file mode 100644
index 8e20330..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ms/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Beralih ke kamera skrin penuh</string>
-  <string name="description_camera_switch_preview_screen">Beralih ke pratonton kamera</string>
-  <string name="description_camera_switch_camera_facing">Beralih ke kamera menghadap depan</string>
-  <string name="description_camera_switch_camera_rear">Beralih ke kamera menghadap belakang</string>
-  <string name="description_camera_take_picture">Ambil foto</string>
-  <string name="description_camera_cancel_photo">Ambil semula foto</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-my/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-my/strings.xml
deleted file mode 100644
index 8ea803e..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-my/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">မျက်နှာပြင်အပြည့်ကင်မရာသို့ ပြောင်းရန်</string>
-  <string name="description_camera_switch_preview_screen">ကင်မရာအစမ်းကြည့်ရှုမှုသို့ ပြောင်းရန်</string>
-  <string name="description_camera_switch_camera_facing">အရှေ့ကင်မရာသို့ ပြောင်းရန်</string>
-  <string name="description_camera_switch_camera_rear">အနောက်ကင်မရာသို့ ပြောင်းရန်</string>
-  <string name="description_camera_take_picture">ဓာတ်ပုံရိုက်ရန်</string>
-  <string name="description_camera_cancel_photo">ဓာတ်ပုံပြန်ရိုက်ရန်</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-nb/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-nb/strings.xml
deleted file mode 100644
index 3292345..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-nb/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Bytt til fullskjermkamera</string>
-  <string name="description_camera_switch_preview_screen">Bytt til forhåndsvisning for kamera</string>
-  <string name="description_camera_switch_camera_facing">Bytt til frontkamera</string>
-  <string name="description_camera_switch_camera_rear">Bytt til bakovervendt kamera</string>
-  <string name="description_camera_take_picture">Ta bilde</string>
-  <string name="description_camera_cancel_photo">Ta bilde på nytt</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ne/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ne/strings.xml
deleted file mode 100644
index f124b4d..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ne/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">पूर्ण स्क्रिन क्यामेरामा बदल्नुहोस्</string>
-  <string name="description_camera_switch_preview_screen">क्यामेराको पूर्वावलोकन मोडमा बदल्नुहोस्</string>
-  <string name="description_camera_switch_camera_facing">अगाडिपट्टिको क्यामेरामा बदल्नुहोस्</string>
-  <string name="description_camera_switch_camera_rear">पछाडिपट्टिको क्यामेरामा बदल्नुहोस्</string>
-  <string name="description_camera_take_picture">तस्बिर खिच्नुहोस्</string>
-  <string name="description_camera_cancel_photo">पुन: तस्बिर खिच्नुहोस्</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-nl/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-nl/strings.xml
deleted file mode 100644
index 69d9a73..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-nl/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Overschakelen naar camera op volledig scherm</string>
-  <string name="description_camera_switch_preview_screen">Overschakelen naar cameravoorbeeld</string>
-  <string name="description_camera_switch_camera_facing">Overschakelen naar camera aan voorzijde</string>
-  <string name="description_camera_switch_camera_rear">Overschakelen naar camera aan achterzijde</string>
-  <string name="description_camera_take_picture">Foto maken</string>
-  <string name="description_camera_cancel_photo">Foto opnieuw maken</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-no/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-no/strings.xml
deleted file mode 100644
index 3292345..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-no/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Bytt til fullskjermkamera</string>
-  <string name="description_camera_switch_preview_screen">Bytt til forhåndsvisning for kamera</string>
-  <string name="description_camera_switch_camera_facing">Bytt til frontkamera</string>
-  <string name="description_camera_switch_camera_rear">Bytt til bakovervendt kamera</string>
-  <string name="description_camera_take_picture">Ta bilde</string>
-  <string name="description_camera_cancel_photo">Ta bilde på nytt</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-pa/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-pa/strings.xml
deleted file mode 100644
index 6ed0529..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-pa/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">ਬਦਲੀ ਕਰਕੇ ਸੰਪੂਰਨ ਸਕ੍ਰੀਨ ਕੈਮਰੇ \'ਤੇ ਜਾਓ</string>
-  <string name="description_camera_switch_preview_screen">ਬਦਲੀ ਕਰਕੇ ਕੈਮਰਾ ਪੂਰਵ-ਝਲਕ \'ਤੇ ਜਾਓ</string>
-  <string name="description_camera_switch_camera_facing">ਬਦਲੀ ਕਰਕੇ ਮੂਹਰਲੇ ਕੈਮਰੇ \'ਤੇ ਜਾਓ</string>
-  <string name="description_camera_switch_camera_rear">ਬਦਲੀ ਕਰਕੇ ਪਿਛਲੇ ਕੈਮਰੇ \'ਤੇ ਜਾਓ</string>
-  <string name="description_camera_take_picture">ਫ਼ੋਟੋ ਖਿੱਚੋ</string>
-  <string name="description_camera_cancel_photo">ਫ਼ੋਟੋ ਮੁੜ-ਖਿੱਚੋ</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-pl/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-pl/strings.xml
deleted file mode 100644
index f9922a3..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-pl/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Przełącz na aparat pełnoekranowy</string>
-  <string name="description_camera_switch_preview_screen">Przełącz na podgląd aparatu</string>
-  <string name="description_camera_switch_camera_facing">Przełącz na przedni aparat</string>
-  <string name="description_camera_switch_camera_rear">Przełącz na tylny aparat</string>
-  <string name="description_camera_take_picture">Zrób zdjęcie</string>
-  <string name="description_camera_cancel_photo">Zrób nowe zdjęcie</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-pt-rBR/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 6f26785..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Alternar para câmera em tela cheia</string>
-  <string name="description_camera_switch_preview_screen">Alternar para visualização da câmera</string>
-  <string name="description_camera_switch_camera_facing">Alternar para câmera frontal</string>
-  <string name="description_camera_switch_camera_rear">Alternar para câmera traseira</string>
-  <string name="description_camera_take_picture">Tirar foto</string>
-  <string name="description_camera_cancel_photo">Tirar foto novamente</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-pt-rPT/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 252d0c0..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Mudar para a câmara de ecrã completo</string>
-  <string name="description_camera_switch_preview_screen">Mudar para a pré-visualização da câmara</string>
-  <string name="description_camera_switch_camera_facing">Mudar para a câmara frontal</string>
-  <string name="description_camera_switch_camera_rear">Mudar para a câmara traseira</string>
-  <string name="description_camera_take_picture">Tirar foto</string>
-  <string name="description_camera_cancel_photo">Tirar nova foto</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-pt/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-pt/strings.xml
deleted file mode 100644
index 6f26785..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-pt/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Alternar para câmera em tela cheia</string>
-  <string name="description_camera_switch_preview_screen">Alternar para visualização da câmera</string>
-  <string name="description_camera_switch_camera_facing">Alternar para câmera frontal</string>
-  <string name="description_camera_switch_camera_rear">Alternar para câmera traseira</string>
-  <string name="description_camera_take_picture">Tirar foto</string>
-  <string name="description_camera_cancel_photo">Tirar foto novamente</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ro/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ro/strings.xml
deleted file mode 100644
index 31f7f39..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ro/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Comutați la camera pe ecran complet</string>
-  <string name="description_camera_switch_preview_screen">Comutați la previzualizarea camerei</string>
-  <string name="description_camera_switch_camera_facing">Comutați la camera frontală</string>
-  <string name="description_camera_switch_camera_rear">Comutați la camera posterioară</string>
-  <string name="description_camera_take_picture">Fotografiați</string>
-  <string name="description_camera_cancel_photo">Refaceți fotografia</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ru/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ru/strings.xml
deleted file mode 100644
index a165b72..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ru/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Переключиться в полноэкранный режим</string>
-  <string name="description_camera_switch_preview_screen">Переключиться в режим предварительного просмотра</string>
-  <string name="description_camera_switch_camera_facing">Переключиться на фронтальную камеру</string>
-  <string name="description_camera_switch_camera_rear">Переключиться на основную камеру</string>
-  <string name="description_camera_take_picture">Сделать снимок</string>
-  <string name="description_camera_cancel_photo">Новый снимок</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-si/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-si/strings.xml
deleted file mode 100644
index 9df3f72..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-si/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">පූර්ණ තිර කැමරාව වෙත මාරුවීම</string>
-  <string name="description_camera_switch_preview_screen">කැමරා පෙරදසුන වෙත මාරුවීම</string>
-  <string name="description_camera_switch_camera_facing">ඉදිරිපසට මුහුණලා ඇති කැමරාව වෙත මාරුවීම</string>
-  <string name="description_camera_switch_camera_rear">පසුපසට මුහුණලා ඇති කැමරාව වෙත මාරුවීම</string>
-  <string name="description_camera_take_picture">ඡායාරූපය ගැනීම</string>
-  <string name="description_camera_cancel_photo">ඡායාරූපය නැවත ගැනීම</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-sk/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-sk/strings.xml
deleted file mode 100644
index f22e973..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-sk/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Prepnúť na fotoaparát na celej obrazovke</string>
-  <string name="description_camera_switch_preview_screen">Prepnúť na ukážku z fotoaparátu</string>
-  <string name="description_camera_switch_camera_facing">Prepnúť na predný fotoaparát</string>
-  <string name="description_camera_switch_camera_rear">Prepnúť na zadný fotoaparát</string>
-  <string name="description_camera_take_picture">Odfotiť</string>
-  <string name="description_camera_cancel_photo">Znova odfotiť</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-sl/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-sl/strings.xml
deleted file mode 100644
index 8c48877..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-sl/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Preklopi v celozaslonski način fotoaparata</string>
-  <string name="description_camera_switch_preview_screen">Preklopi v predogled fotoaparata</string>
-  <string name="description_camera_switch_camera_facing">Preklopi na fotoaparat na sprednji strani</string>
-  <string name="description_camera_switch_camera_rear">Preklopi na fotoaparat na zadnji strani</string>
-  <string name="description_camera_take_picture">Posnemi fotografijo</string>
-  <string name="description_camera_cancel_photo">Znova posnemi fotografijo</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-sq/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-sq/strings.xml
deleted file mode 100644
index e5c7e84..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-sq/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Kalo në kamerën me ekran të plotë</string>
-  <string name="description_camera_switch_preview_screen">Kalo te pamja paraprake e kamerës</string>
-  <string name="description_camera_switch_camera_facing">Kalo te kamera e përparme</string>
-  <string name="description_camera_switch_camera_rear">Kalo te kamera e pasme</string>
-  <string name="description_camera_take_picture">Bëj një fotografi</string>
-  <string name="description_camera_cancel_photo">Bëje përsëri fotografinë</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-sr/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-sr/strings.xml
deleted file mode 100644
index d592070..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-sr/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Пребаците на приказ камере преко целог екрана</string>
-  <string name="description_camera_switch_preview_screen">Пребаците на преглед камере</string>
-  <string name="description_camera_switch_camera_facing">Пребаците на предњу камеру</string>
-  <string name="description_camera_switch_camera_rear">Пребаците на задњу камеру</string>
-  <string name="description_camera_take_picture">Снимите слику</string>
-  <string name="description_camera_cancel_photo">Поново снимите слику</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-sv/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-sv/strings.xml
deleted file mode 100644
index b65d9f7..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-sv/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Växla till helskärmskamera</string>
-  <string name="description_camera_switch_preview_screen">Växla till förhandsgranskning i kameran</string>
-  <string name="description_camera_switch_camera_facing">Växla till den framåtvända kameran</string>
-  <string name="description_camera_switch_camera_rear">Växla till den bakåtvända kameran</string>
-  <string name="description_camera_take_picture">Ta en bild</string>
-  <string name="description_camera_cancel_photo">Ta en ny bild</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-sw/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-sw/strings.xml
deleted file mode 100644
index cb2a3f7..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-sw/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Badili utumie kamera ya skrini nzima</string>
-  <string name="description_camera_switch_preview_screen">Badili utumie onyesha la kuchungulia la kamera</string>
-  <string name="description_camera_switch_camera_facing">Badili utumie kamera ya mbele</string>
-  <string name="description_camera_switch_camera_rear">Badili utumie kamera ya nyuma</string>
-  <string name="description_camera_take_picture">Piga picha</string>
-  <string name="description_camera_cancel_photo">Piga picha tena</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ta/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ta/strings.xml
deleted file mode 100644
index 84b281d..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ta/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">முழுத் திரை கேமராவிற்கு மாறும் பொத்தான்</string>
-  <string name="description_camera_switch_preview_screen">கேமரா மாதிரிக்காட்சிக்கு மாறும் பொத்தான்</string>
-  <string name="description_camera_switch_camera_facing">முன்பக்க கேமராவிற்கு மாறும் பொத்தான்</string>
-  <string name="description_camera_switch_camera_rear">பின்பக்க கேமராவிற்கு மாறும் பொத்தான்</string>
-  <string name="description_camera_take_picture">படமெடுக்கும் பொத்தான்</string>
-  <string name="description_camera_cancel_photo">மீண்டும் படமெடுக்கும் பொத்தான்</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-te/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-te/strings.xml
deleted file mode 100644
index 0890b16..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-te/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">పూర్తి స్క్రీన్ కెమెరాకు మారుస్తుంది</string>
-  <string name="description_camera_switch_preview_screen">కెమెరా పరిదృశ్యానికి మారుస్తుంది</string>
-  <string name="description_camera_switch_camera_facing">ముందువైపు కెమెరాకు మారుస్తుంది</string>
-  <string name="description_camera_switch_camera_rear">వెనుకవైపు కెమెరాకు మారుస్తుంది</string>
-  <string name="description_camera_take_picture">ఫోటో తీస్తుంది</string>
-  <string name="description_camera_cancel_photo">ఫోటోను మళ్లీ తీస్తుంది</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-th/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-th/strings.xml
deleted file mode 100644
index f86dc9e..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-th/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">เปลี่ยนเป็นกล้องแบบเต็มหน้าจอ</string>
-  <string name="description_camera_switch_preview_screen">เปลี่ยนเป็นการแสดงตัวอย่างจากกล้อง</string>
-  <string name="description_camera_switch_camera_facing">เปลี่ยนเป็นกล้องหน้า</string>
-  <string name="description_camera_switch_camera_rear">เปลี่ยนเป็นกล้องหลัง</string>
-  <string name="description_camera_take_picture">ถ่ายภาพ</string>
-  <string name="description_camera_cancel_photo">ถ่ายภาพอีกครั้ง</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-tl/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-tl/strings.xml
deleted file mode 100644
index bce0d0a..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-tl/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Lumipat sa camera na full screen</string>
-  <string name="description_camera_switch_preview_screen">Lumipat sa preview ng camera</string>
-  <string name="description_camera_switch_camera_facing">Lumipat sa camera na nasa harap</string>
-  <string name="description_camera_switch_camera_rear">Lumipat sa camera na nasa likod</string>
-  <string name="description_camera_take_picture">Kumuha ng larawan</string>
-  <string name="description_camera_cancel_photo">Kunang muli</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-tr/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-tr/strings.xml
deleted file mode 100644
index 80aee30..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-tr/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Tam ekran kameraya geçer</string>
-  <string name="description_camera_switch_preview_screen">Kamera önizlemesine geçer</string>
-  <string name="description_camera_switch_camera_facing">Ön kameraya geçer</string>
-  <string name="description_camera_switch_camera_rear">Arka kameraya geçer</string>
-  <string name="description_camera_take_picture">Fotoğraf çeker</string>
-  <string name="description_camera_cancel_photo">Fotoğrafı yeniden çeker</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-uk/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-uk/strings.xml
deleted file mode 100644
index 2c22eac..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-uk/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Показ зображення з камери на весь екран</string>
-  <string name="description_camera_switch_preview_screen">Попередній перегляд зображення з камери</string>
-  <string name="description_camera_switch_camera_facing">Перейти до фронтальної камери</string>
-  <string name="description_camera_switch_camera_rear">Перейти до задньої камери</string>
-  <string name="description_camera_take_picture">Зробити фото</string>
-  <string name="description_camera_cancel_photo">Зробити фото ще раз</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-ur/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-ur/strings.xml
deleted file mode 100644
index 5c96d6a..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-ur/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">پوری اسکرین کے کیمرہ پر سوئچ کریں</string>
-  <string name="description_camera_switch_preview_screen">کیمرہ پیش منظر پر سوئچ کریں</string>
-  <string name="description_camera_switch_camera_facing">فرنٹ والے کیمرے پر سوئچ کریں</string>
-  <string name="description_camera_switch_camera_rear">عقب والے کیمرے پر سوئچ کریں</string>
-  <string name="description_camera_take_picture">تصویر لیں</string>
-  <string name="description_camera_cancel_photo">دوبارہ تصویر لیں</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-uz/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-uz/strings.xml
deleted file mode 100644
index 4341ae5..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-uz/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">To‘liq ekranli rejimga o‘tish</string>
-  <string name="description_camera_switch_preview_screen">Razm solish rejimiga o‘tish</string>
-  <string name="description_camera_switch_camera_facing">Old kamerani yoqish</string>
-  <string name="description_camera_switch_camera_rear">Orqa kamerani yoqish</string>
-  <string name="description_camera_take_picture">Rasmga olish</string>
-  <string name="description_camera_cancel_photo">Yangi rasmga olish</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-vi/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-vi/strings.xml
deleted file mode 100644
index 9c89d8b..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-vi/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Chuyển sang máy ảnh toàn màn hình</string>
-  <string name="description_camera_switch_preview_screen">Chuyển sang chế độ xem trước máy ảnh</string>
-  <string name="description_camera_switch_camera_facing">Chuyển sang máy ảnh mặt trước</string>
-  <string name="description_camera_switch_camera_rear">Chuyển sang máy ảnh mặt sau</string>
-  <string name="description_camera_take_picture">Chụp ảnh</string>
-  <string name="description_camera_cancel_photo">Chụp lại ảnh</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-zh-rCN/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-zh-rCN/strings.xml
deleted file mode 100644
index b44f430..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">切换到全屏相机模式</string>
-  <string name="description_camera_switch_preview_screen">切换到相机预览模式</string>
-  <string name="description_camera_switch_camera_facing">切换到前置摄像头</string>
-  <string name="description_camera_switch_camera_rear">切换到后置摄像头</string>
-  <string name="description_camera_take_picture">拍照</string>
-  <string name="description_camera_cancel_photo">重拍照片</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-zh-rHK/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 393c45f..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">切換至全螢幕相機</string>
-  <string name="description_camera_switch_preview_screen">切換至相機預覽</string>
-  <string name="description_camera_switch_camera_facing">切換至前置鏡頭</string>
-  <string name="description_camera_switch_camera_rear">切換至後置鏡頭</string>
-  <string name="description_camera_take_picture">拍照</string>
-  <string name="description_camera_cancel_photo">重新拍照</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-zh-rTW/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 5cd51ee..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">切換至全螢幕相機</string>
-  <string name="description_camera_switch_preview_screen">切換至相機預覽畫面</string>
-  <string name="description_camera_switch_camera_facing">切換至前置鏡頭</string>
-  <string name="description_camera_switch_camera_rear">切換至後置鏡頭</string>
-  <string name="description_camera_take_picture">拍照</string>
-  <string name="description_camera_cancel_photo">重新拍照</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values-zu/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values-zu/strings.xml
deleted file mode 100644
index 0c6dafc..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values-zu/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="description_camera_switch_full_screen">Shintshela kukhamera yesikrini esigcwele</string>
-  <string name="description_camera_switch_preview_screen">Shintshela ekuhloleni kuqala kwekhamera</string>
-  <string name="description_camera_switch_camera_facing">Shintshela kwikhamera yangaphambili</string>
-  <string name="description_camera_switch_camera_rear">Shintshela kwikhamera ebheke emuva</string>
-  <string name="description_camera_take_picture">Thatha isithombe</string>
-  <string name="description_camera_cancel_photo">Thatha kabusha isithombe</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values/colors.xml b/java/com/android/dialer/callcomposer/cameraui/res/values/colors.xml
deleted file mode 100644
index d5a839a..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values/colors.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <color name="background_item_grey_pressed">#E0E0E0</color>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values/dimens.xml b/java/com/android/dialer/callcomposer/cameraui/res/values/dimens.xml
deleted file mode 100644
index e3d5c24..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values/dimens.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <dimen name="camera_view_button_margin">22dp</dimen>
-  <dimen name="camera_view_button_size">48dp</dimen>
-  <dimen name="capture_button_size">84dp</dimen>
-  <dimen name="capture_button_bottom_margin">4dp</dimen>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/cameraui/res/values/strings.xml b/java/com/android/dialer/callcomposer/cameraui/res/values/strings.xml
deleted file mode 100644
index 4db7968..0000000
--- a/java/com/android/dialer/callcomposer/cameraui/res/values/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<resources>
-  <!-- Content description of button to switch to full screen camera -->
-  <string name="description_camera_switch_full_screen">Switch to full screen camera</string>
-  <!-- Content description of button to resize camera from fullscreen to only a preview -->
-  <string name="description_camera_switch_preview_screen">Switch to camera preview</string>
-  <!-- Content description of button when after swapped to front -->
-  <string name="description_camera_switch_camera_facing">Switch to front facing camera</string>
-  <!-- Content description of button when after swapped to back -->
-  <string name="description_camera_switch_camera_rear">Switch to back facing camera</string>
-  <!-- Content description of button to take a photo -->
-  <string name="description_camera_take_picture">Take photo</string>
-  <!-- Content description of button to cancel a photo -->
-  <string name="description_camera_cancel_photo">Retake photo</string>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/drawable/call_composer_contact_border.xml b/java/com/android/dialer/callcomposer/res/drawable/call_composer_contact_border.xml
deleted file mode 100644
index 16afed4..0000000
--- a/java/com/android/dialer/callcomposer/res/drawable/call_composer_contact_border.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<shape
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:shape="oval">
-
-  <stroke
-    android:width="@dimen/call_composer_contact_photo_border_thickness"
-    android:color="?android:attr/colorBackground"/>
-
-  <padding
-    android:bottom="@dimen/call_composer_contact_photo_border_thickness"
-    android:left="@dimen/call_composer_contact_photo_border_thickness"
-    android:right="@dimen/call_composer_contact_photo_border_thickness"
-    android:top="@dimen/call_composer_contact_photo_border_thickness"/>
-</shape>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/drawable/gallery_background.xml b/java/com/android/dialer/callcomposer/res/drawable/gallery_background.xml
deleted file mode 100644
index 57dce97..0000000
--- a/java/com/android/dialer/callcomposer/res/drawable/gallery_background.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-  android:shape="rectangle">
-  <corners android:radius="@dimen/gallery_item_corner_radius"/>
-  <solid android:color="@color/gallery_item_image_color"/>
-</shape>
diff --git a/java/com/android/dialer/callcomposer/res/drawable/gallery_grid_checkbox_background.xml b/java/com/android/dialer/callcomposer/res/drawable/gallery_grid_checkbox_background.xml
deleted file mode 100644
index b6b91b5..0000000
--- a/java/com/android/dialer/callcomposer/res/drawable/gallery_grid_checkbox_background.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-  android:shape="rectangle">
-  <corners android:radius="@dimen/gallery_item_corner_radius"/>
-  <solid android:color="#80000000"/>
-</shape>
diff --git a/java/com/android/dialer/callcomposer/res/drawable/gallery_grid_item_view_background.xml b/java/com/android/dialer/callcomposer/res/drawable/gallery_grid_item_view_background.xml
deleted file mode 100644
index f571608..0000000
--- a/java/com/android/dialer/callcomposer/res/drawable/gallery_grid_item_view_background.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-  android:shape="rectangle">
-  <corners android:radius="@dimen/gallery_item_corner_radius"/>
-  <solid android:color="?android:attr/colorBackground"/>
-</shape>
diff --git a/java/com/android/dialer/callcomposer/res/drawable/gallery_item_selected_drawable.xml b/java/com/android/dialer/callcomposer/res/drawable/gallery_item_selected_drawable.xml
deleted file mode 100644
index 6e726c8..0000000
--- a/java/com/android/dialer/callcomposer/res/drawable/gallery_item_selected_drawable.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-  <item>
-    <shape
-      android:shape="oval">
-      <stroke
-        android:width="1dp"
-        android:color="?android:attr/colorPrimary"/>
-      <solid
-        android:color="?android:attr/colorBackground"/>
-      <size
-        android:height="@dimen/gallery_check_size"
-        android:width="@dimen/gallery_check_size"/>
-    </shape>
-  </item>
-  <item>
-    <bitmap
-      android:gravity="center"
-      android:src="@drawable/quantum_ic_check_black_24"
-      android:tint="?android:attr/colorPrimary"/>
-  </item>
-</layer-list>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml b/java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml
deleted file mode 100644
index 8b982b9..0000000
--- a/java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/background"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/call_composer_background_color">
-
-  <LinearLayout
-    android:id="@+id/call_composer_container"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:gravity="bottom"
-    android:background="@android:color/transparent">
-
-    <RelativeLayout
-      android:id="@+id/contact_bar"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:elevation="@dimen/call_composer_contact_container_elevation"
-      android:background="?android:attr/selectableItemBackground">
-
-      <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        android:layout_marginTop="@dimen/call_composer_contact_container_margin_top"
-        android:paddingTop="@dimen/call_composer_contact_container_padding_top"
-        android:paddingBottom="@dimen/call_composer_contact_container_padding_bottom"
-        android:paddingStart="16dp"
-        android:paddingEnd="16dp"
-        android:background="?android:attr/colorPrimary">
-
-        <TextView
-          android:id="@+id/contact_name"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:gravity="center"
-          android:maxLines="1"
-          android:ellipsize="end"
-          android:textColor="?android:attr/textColorPrimaryInverse"
-          android:textSize="@dimen/call_composer_name_text_size"/>
-
-        <com.android.dialer.widget.BidiTextView
-          android:id="@+id/phone_number"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:gravity="center"
-          android:textColor="?android:attr/textColorPrimaryInverse"
-          style="@style/Dialer.TextAppearance.Primary"/>
-      </LinearLayout>
-
-      <QuickContactBadge
-        android:id="@+id/contact_photo"
-        android:layout_width="@dimen/call_composer_contact_photo_size"
-        android:layout_height="@dimen/call_composer_contact_photo_size"
-        android:layout_centerHorizontal="true"
-        android:background="@drawable/call_composer_contact_border"/>
-    </RelativeLayout>
-
-    <FrameLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content">
-
-      <com.android.dialer.widget.LockableViewPager
-          android:id="@+id/call_composer_view_pager"
-          android:layout_width="match_parent"
-          android:layout_height="@dimen/call_composer_view_pager_height"/>
-
-      <ProgressBar
-          android:id="@+id/call_composer_loading"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_gravity="center"
-          android:visibility="gone"/>
-    </FrameLayout>
-  </LinearLayout>
-
-  <FrameLayout
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:layout_gravity="bottom">
-
-    <LinearLayout
-        android:id="@+id/media_actions"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/call_composer_media_bar_height"
-        android:orientation="horizontal"
-        android:gravity="center_horizontal"
-        android:background="?android:attr/colorPrimaryDark"
-        android:clickable="true">
-
-      <ImageView
-          android:id="@+id/call_composer_camera"
-          android:layout_width="@dimen/call_composer_media_actions_width"
-          android:layout_height="match_parent"
-          android:scaleType="center"
-          android:src="@drawable/quantum_ic_camera_alt_white_24"
-          android:background="?android:attr/selectableItemBackgroundBorderless"
-          android:contentDescription="@string/description_call_composer_camera"/>
-
-      <ImageView
-          android:id="@+id/call_composer_photo"
-          android:layout_width="@dimen/call_composer_media_actions_width"
-          android:layout_height="match_parent"
-          android:scaleType="center"
-          android:src="@drawable/quantum_ic_photo_white_24"
-          android:background="?android:attr/selectableItemBackgroundBorderless"
-          android:contentDescription="@string/description_call_composer_photo"/>
-
-      <ImageView
-          android:id="@+id/call_composer_message"
-          android:layout_width="@dimen/call_composer_media_actions_width"
-          android:layout_height="match_parent"
-          android:scaleType="center"
-          android:src="@drawable/quantum_ic_message_white_24"
-          android:background="?android:attr/selectableItemBackgroundBorderless"
-          android:contentDescription="@string/description_call_composer_message"/>
-    </LinearLayout>
-
-    <FrameLayout
-        android:id="@+id/send_and_call_button"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/call_composer_media_bar_height"
-        android:visibility="invisible"
-        android:background="@color/compose_and_call_background">
-      <TextView
-          android:id="@+id/send_and_call_text"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_gravity="center"
-          android:drawableStart="@drawable/quantum_ic_call_white_18"
-          android:drawablePadding="@dimen/send_and_call_drawable_padding"
-          android:textAllCaps="true"
-          android:text="@string/share_and_call"
-          style="@style/Dialer.TextAppearance.Header2"
-          android:textColor="?android:attr/textColorPrimaryInverse"/>
-    </FrameLayout>
-  </FrameLayout>
-
-  <com.android.dialer.widget.DialerToolbar
-      android:id="@+id/toolbar"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"/>
-</FrameLayout>
diff --git a/java/com/android/dialer/callcomposer/res/layout/fragment_camera_composer.xml b/java/com/android/dialer/callcomposer/res/layout/fragment_camera_composer.xml
deleted file mode 100644
index f1db48e..0000000
--- a/java/com/android/dialer/callcomposer/res/layout/fragment_camera_composer.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<FrameLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_height="match_parent"
-  android:layout_width="match_parent"
-  android:paddingBottom="@dimen/call_composer_media_bar_height">
-
-  <include
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    layout="@layout/camera_view"/>
-
-  <include
-    android:id="@+id/permission_view"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:visibility="gone"
-    layout="@layout/permission_view"/>
-</FrameLayout>
diff --git a/java/com/android/dialer/callcomposer/res/layout/fragment_gallery_composer.xml b/java/com/android/dialer/callcomposer/res/layout/fragment_gallery_composer.xml
deleted file mode 100644
index 72b9fa6..0000000
--- a/java/com/android/dialer/callcomposer/res/layout/fragment_gallery_composer.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<FrameLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:background="?android:attr/colorBackground"
-  android:paddingBottom="@dimen/call_composer_media_bar_height">
-
-  <GridView
-    android:id="@+id/gallery_grid_view"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingLeft="@dimen/gallery_item_padding"
-    android:paddingRight="@dimen/gallery_item_padding"
-    android:paddingTop="@dimen/gallery_item_padding"
-    android:numColumns="@integer/gallery_composer_grid_view_rows"/>
-
-  <include
-    android:id="@+id/permission_view"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:visibility="gone"
-    layout="@layout/permission_view"/>
-</FrameLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml b/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
deleted file mode 100644
index 6255e72..0000000
--- a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/call_composer_view_pager_height"
-    android:orientation="vertical"
-    android:gravity="bottom"
-    android:background="?android:attr/colorBackground">
-
-  <TextView
-      android:id="@+id/message_urgent"
-      android:layout_width="match_parent"
-      android:layout_height="56dp"
-      android:layout_marginTop="8dp"
-      android:text="@string/urgent"
-      style="@style/message_composer_textview"/>
-
-  <TextView
-      android:id="@+id/message_chat"
-      android:layout_width="match_parent"
-      android:layout_height="56dp"
-      android:text="@string/want_to_chat"
-      style="@style/message_composer_textview"/>
-
-  <TextView
-      android:id="@+id/message_question"
-      android:layout_width="match_parent"
-      android:layout_height="56dp"
-      android:layout_marginBottom="8dp"
-      android:text="@string/quick_question"
-      style="@style/message_composer_textview"/>
-
-  <View
-      android:layout_width="match_parent"
-      android:layout_height="@dimen/message_composer_divider_height"
-      android:background="@color/call_composer_divider"/>
-
-  <RelativeLayout
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content">
-
-    <EditText
-      android:id="@+id/custom_message"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:paddingTop="@dimen/message_composer_item_padding"
-      android:paddingStart="@dimen/message_composer_item_padding"
-      android:paddingEnd="@dimen/message_composer_item_padding"
-      android:paddingBottom="64dp"
-      android:textSize="@dimen/message_compose_item_text_size"
-      android:hint="@string/message_composer_custom_message_hint"
-      android:textColor="?android:attr/textColorPrimary"
-      android:textColorHint="?android:attr/textColorHint"
-      android:background="?android:attr/colorBackground"
-      android:textCursorDrawable="@drawable/searchedittext_custom_cursor"
-      android:layout_toStartOf="@+id/remaining_characters"
-      android:inputType="textShortMessage|textCapSentences"
-      android:imeOptions="flagNoExtractUi|actionSend"/>
-
-    <TextView
-        android:id="@+id/remaining_characters"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="@dimen/message_composer_item_padding"
-        android:paddingBottom="@dimen/call_composer_media_bar_height"
-        android:layout_alignParentEnd="true"
-        android:layout_centerVertical="true"
-        android:textSize="@dimen/message_compose_remaining_char_text_size"
-        android:textColor="?android:attr/textColorHint"/>
-  </RelativeLayout>
-</LinearLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/layout/gallery_grid_item_view.xml b/java/com/android/dialer/callcomposer/res/layout/gallery_grid_item_view.xml
deleted file mode 100644
index 6c68517..0000000
--- a/java/com/android/dialer/callcomposer/res/layout/gallery_grid_item_view.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<com.android.dialer.callcomposer.GalleryGridItemView
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:padding="@dimen/gallery_item_padding"
-  android:clickable="true">
-
-  <ImageView
-    android:id="@+id/image"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@drawable/gallery_grid_item_view_background"
-    android:outlineProvider="background"
-    android:scaleType="centerCrop"/>
-
-  <FrameLayout
-    android:id="@+id/checkbox"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@drawable/gallery_grid_checkbox_background"
-    android:outlineProvider="background"
-    android:visibility="gone">
-
-    <ImageView
-      android:layout_width="@dimen/gallery_check_size"
-      android:layout_height="@dimen/gallery_check_size"
-      android:layout_gravity="center"
-      android:src="@drawable/gallery_item_selected_drawable"/>
-  </FrameLayout>
-
-  <ImageView
-    android:id="@+id/gallery"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_gravity="center"
-    android:src="@drawable/quantum_ic_photo_library_white_24"
-    android:scaleType="center"
-    android:background="@drawable/gallery_background"
-    android:outlineProvider="background"
-    android:visibility="gone"/>
-</com.android.dialer.callcomposer.GalleryGridItemView>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/layout/permission_view.xml b/java/com/android/dialer/callcomposer/res/layout/permission_view.xml
deleted file mode 100644
index 4248046..0000000
--- a/java/com/android/dialer/callcomposer/res/layout/permission_view.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:orientation="vertical"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:gravity="center"
-  android:clickable="true"
-  android:background="?android:attr/colorBackground">
-
-  <ImageView
-    android:id="@+id/permission_icon"
-    android:layout_width="@dimen/permission_image_size"
-    android:layout_height="@dimen/permission_image_size"
-    android:layout_margin="@dimen/permission_item_margin"/>
-
-  <TextView
-    android:id="@+id/permission_text"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:layout_marginTop="@dimen/permission_item_margin"
-    style="@style/Dialer.TextAppearance.Header2"/>
-
-  <TextView
-    android:id="@+id/allow"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:minHeight="@dimen/min_touch_target_size"
-    android:minWidth="@dimen/min_touch_target_size"
-    android:gravity="center"
-    android:text="@string/allow"
-    android:textAllCaps="true"
-    android:textSize="@dimen/allow_permission_text_size"
-    android:textColor="?android:attr/colorPrimary"
-    android:background="?android:attr/selectableItemBackground"
-    android:padding="@dimen/permission_allow_padding"
-    android:theme="@style/Theme.AppCompat.Light"/>
-</LinearLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/values-af/strings.xml b/java/com/android/dialer/callcomposer/res/values-af/strings.xml
deleted file mode 100644
index ad84a0b..0000000
--- a/java/com/android/dialer/callcomposer/res/values-af/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Dringend! Antwoord asseblief!</string>
-  <string name="want_to_chat">Wil jy klets?</string>
-  <string name="quick_question">Vinnige vragie …</string>
-  <string name="message_composer_custom_message_hint">Skryf \'n gepasmaakte boodskap</string>
-  <string name="send_and_call">Stuur en bel</string>
-  <string name="share_and_call">Deel en bel</string>
-  <string name="gallery_item_description">prent %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">prent</string>
-  <string name="camera_media_failure">Kon nie kameraprent laai nie</string>
-  <string name="allow">Laat toe</string>
-  <string name="camera_permission_text">Verleen toegang tot kamera om \'n foto te neem</string>
-  <string name="gallery_permission_text">Verleen toegang tot media om \'n prent te deel</string>
-  <string name="description_call_composer_camera">Neem \'n foto</string>
-  <string name="description_call_composer_photo">Kies \'n foto</string>
-  <string name="description_call_composer_message">Stuur \'n boodskap</string>
-  <string name="image_sent_messages">Foto is via Boodskappe gestuur</string>
-  <string name="message_sent_messages">Boodskap is via Boodskappe gestuur</string>
-  <string name="call_composer_image_uploading">Stuur tans prent …</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-am/strings.xml b/java/com/android/dialer/callcomposer/res/values-am/strings.xml
deleted file mode 100644
index 2e76b6e..0000000
--- a/java/com/android/dialer/callcomposer/res/values-am/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">አስቸኳይ! እባክዎ ያንሱ!</string>
-  <string name="want_to_chat">ለመወያየት ይፈልጋሉ?</string>
-  <string name="quick_question">ፈጣን ጥያቄ…</string>
-  <string name="message_composer_custom_message_hint">ብጁ መልዕክት ይጻፉ</string>
-  <string name="send_and_call">ይላኩ እንዲሁም ይደውሉ</string>
-  <string name="share_and_call">ያጋሩ እና ይደውሉ</string>
-  <string name="gallery_item_description">ምስል %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">ምስል</string>
-  <string name="camera_media_failure">የካሜራ ምስልን መጫን አልተቻለም</string>
-  <string name="allow">ፍቀድ</string>
-  <string name="camera_permission_text">ፎቶ ያንሱ፣ ለካሜራ መዳረሻ ይስጡ</string>
-  <string name="gallery_permission_text">አንድ ምስል ለማጋራት ለማህደረ መረጃ መዳረሻ ይስጡ</string>
-  <string name="description_call_composer_camera">ፎቶ ያንሱ</string>
-  <string name="description_call_composer_photo">ፎቶ ይምረጡ</string>
-  <string name="description_call_composer_message">መልዕክት ይላኩ</string>
-  <string name="image_sent_messages">ፎቶ በመልዕክቶች በኩል ተልኳል</string>
-  <string name="message_sent_messages">መልዕክት በመልዕክቶች በኩል ተልኳል</string>
-  <string name="call_composer_image_uploading">ምስል በመላክ ላይ…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ar/strings.xml b/java/com/android/dialer/callcomposer/res/values-ar/strings.xml
deleted file mode 100644
index bff15c5..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ar/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">عاجل! يُرجى الرد!</string>
-  <string name="want_to_chat">هل تريد المحادثة؟</string>
-  <string name="quick_question">سؤال سريع…</string>
-  <string name="message_composer_custom_message_hint">كتابة رسالة مخصصة</string>
-  <string name="send_and_call">الإرسال والاتصال</string>
-  <string name="share_and_call">المشاركة والاتصال</string>
-  <string name="gallery_item_description">الصورة %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">صورة</string>
-  <string name="camera_media_failure">يتعذر تحميل صورة الكاميرا</string>
-  <string name="allow">سماح</string>
-  <string name="camera_permission_text">لالتقاط صورة، يجب منح إذن بالدخول إلى الكاميرا</string>
-  <string name="gallery_permission_text">لمشاركة صورة، يجب منح إذن بالدخول إلى الوسائط</string>
-  <string name="description_call_composer_camera">التقاط صورة</string>
-  <string name="description_call_composer_photo">اختيار صورة</string>
-  <string name="description_call_composer_message">إرسال رسالة</string>
-  <string name="image_sent_messages">‏صورة مرسلة عبر Messages</string>
-  <string name="message_sent_messages">‏رسالة مرسلة عبر Messages</string>
-  <string name="call_composer_image_uploading">جارٍ إرسال الصورة...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-az/strings.xml b/java/com/android/dialer/callcomposer/res/values-az/strings.xml
deleted file mode 100644
index d1629a4..0000000
--- a/java/com/android/dialer/callcomposer/res/values-az/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Təcili! Lütfən, götürün!</string>
-  <string name="want_to_chat">Söhbət etmək istəyirsiniz?</string>
-  <string name="quick_question">Tez sual...</string>
-  <string name="message_composer_custom_message_hint">Fərdi mesaj yazın</string>
-  <string name="send_and_call">Göndərin və zəng edin</string>
-  <string name="share_and_call">Paylaşın və zəng edin</string>
-  <string name="gallery_item_description">şəkil %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">şəkil</string>
-  <string name="camera_media_failure">Kamera şəklini yükləmək olmur</string>
-  <string name="allow">İcazə verin</string>
-  <string name="camera_permission_text">Şəkil çəkmək üçün kameraya giriş icazəsi verin</string>
-  <string name="gallery_permission_text">Şəkli paylaşmaq üçün Mediaya giriş icazəsi verin</string>
-  <string name="description_call_composer_camera">Şəkil çəkin</string>
-  <string name="description_call_composer_photo">Foto seçin</string>
-  <string name="description_call_composer_message">Mesaj göndərin</string>
-  <string name="image_sent_messages">Foto Mesajlaşma tətbiqi vasitəsilə göndərildi</string>
-  <string name="message_sent_messages">Mesaj Mesajlaşma tətbiqi vasitəsilə göndərildi</string>
-  <string name="call_composer_image_uploading">Şəkil göndərilir...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index cb251602..0000000
--- a/java/com/android/dialer/callcomposer/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Hitno je! Javi se!</string>
-  <string name="want_to_chat">Želiš da ćaskaš?</string>
-  <string name="quick_question">Kratko pitanje…</string>
-  <string name="message_composer_custom_message_hint">Napišite prilagođenu poruku</string>
-  <string name="send_and_call">Pošalji i pozovi</string>
-  <string name="share_and_call">Deli i pozovi</string>
-  <string name="gallery_item_description">slika, %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">slika</string>
-  <string name="camera_media_failure">Učitavanje slike sa kamere nije uspelo</string>
-  <string name="allow">Dozvoli</string>
-  <string name="camera_permission_text">Odobrite pristup Kameri da biste snimili sliku</string>
-  <string name="gallery_permission_text">Odobrite pristup Medijima da biste delili sliku</string>
-  <string name="description_call_composer_camera">Slikajte</string>
-  <string name="description_call_composer_photo">Izaberite sliku</string>
-  <string name="description_call_composer_message">Pošaljite poruku</string>
-  <string name="image_sent_messages">Slika je poslata preko Messages-a</string>
-  <string name="message_sent_messages">Poruka je poslata preko Messages-a</string>
-  <string name="call_composer_image_uploading">Šalje se slika…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-be/strings.xml b/java/com/android/dialer/callcomposer/res/values-be/strings.xml
deleted file mode 100644
index 2abe02b..0000000
--- a/java/com/android/dialer/callcomposer/res/values-be/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Тэрмінова! Падніміце слухаўку!</string>
-  <string name="want_to_chat">Хочаце паразмаўляць у чаце?</string>
-  <string name="quick_question">Хуткае пытанне…</string>
-  <string name="message_composer_custom_message_hint">Напісаць карыстальніцкае паведамленне</string>
-  <string name="send_and_call">Адправіць і пазваніць</string>
-  <string name="share_and_call">Абагуліць і выклікаць</string>
-  <string name="gallery_item_description">відарыс %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">відарыс</string>
-  <string name="camera_media_failure">Не ўдалося загрузіць відарыс з камеры</string>
-  <string name="allow">Дазволіць</string>
-  <string name="camera_permission_text">Каб зрабіць фота, адкрыйце доступ да Камеры</string>
-  <string name="gallery_permission_text">Каб абагуліць відарыс, адкрыйце доступ да медыяфайлаў</string>
-  <string name="description_call_composer_camera">Зрабіць фота</string>
-  <string name="description_call_composer_photo">Выбраць фота</string>
-  <string name="description_call_composer_message">Адправіць паведамленне</string>
-  <string name="image_sent_messages">Фота адпраўлена праз праграму \"Паведамленні\"</string>
-  <string name="message_sent_messages">Паведамленне адпраўлена праз праграму \"Паведамленні\"</string>
-  <string name="call_composer_image_uploading">Адпраўка відарыса...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-bg/strings.xml b/java/com/android/dialer/callcomposer/res/values-bg/strings.xml
deleted file mode 100644
index c79e534..0000000
--- a/java/com/android/dialer/callcomposer/res/values-bg/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Спешно! Моля, вдигнете!</string>
-  <string name="want_to_chat">Искате да разговаряте?</string>
-  <string name="quick_question">Кратък въпрос…</string>
-  <string name="message_composer_custom_message_hint">Напишете свое съобщение</string>
-  <string name="send_and_call">Изпращане и обаждане</string>
-  <string name="share_and_call">Споделяне и обаждане</string>
-  <string name="gallery_item_description">изображение от %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">изображение</string>
-  <string name="camera_media_failure">Изображението от камерата не можа да се зареди</string>
-  <string name="allow">Разрешаване</string>
-  <string name="camera_permission_text">За да направите снимка, разрешете достъп до Камера</string>
-  <string name="gallery_permission_text">За да споделите изображение, разрешете достъп до Медии</string>
-  <string name="description_call_composer_camera">Правене на снимка</string>
-  <string name="description_call_composer_photo">Избиране на снимка</string>
-  <string name="description_call_composer_message">Изпращане на съобщение</string>
-  <string name="image_sent_messages">Снимката е изпратена чрез Messages</string>
-  <string name="message_sent_messages">Съобщението е изпратено чрез Messages</string>
-  <string name="call_composer_image_uploading">Изображението се изпраща…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-bn/strings.xml b/java/com/android/dialer/callcomposer/res/values-bn/strings.xml
deleted file mode 100644
index 5855304..0000000
--- a/java/com/android/dialer/callcomposer/res/values-bn/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">জরুরী! অনুগ্রহ করে কলটি ধরুন!</string>
-  <string name="want_to_chat">চ্যাট করতে চান?</string>
-  <string name="quick_question">দ্রুত প্রশ্ন…</string>
-  <string name="message_composer_custom_message_hint">একটি কাস্টম বার্তা লিখুন</string>
-  <string name="send_and_call">পাঠান এবং কল করুন</string>
-  <string name="share_and_call">শেয়ার এবং কল করুন</string>
-  <string name="gallery_item_description">ছবি %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">ছবি</string>
-  <string name="camera_media_failure">ক্যামেরার ছবি লোড করা গেল না</string>
-  <string name="allow">অনুমতি দিন</string>
-  <string name="camera_permission_text">একটি ফটো নিতে, ক্যামেরাতে অ্যাক্সেস দিন</string>
-  <string name="gallery_permission_text">কোনো ছবি শেয়ার করতে, মিডিয়াতে অ্যাক্সেস দিন</string>
-  <string name="description_call_composer_camera">একটি ছবি তুলুন</string>
-  <string name="description_call_composer_photo">একটি ফটো বেছে নিন</string>
-  <string name="description_call_composer_message">একটি বার্তা পাঠান</string>
-  <string name="image_sent_messages">Messages এর সাহায্যে ফটো পাঠানো হয়েছে</string>
-  <string name="message_sent_messages">Messages-এর সাহায্যে বার্তা পাঠানো হয়েছে</string>
-  <string name="call_composer_image_uploading">ফটো পাঠানো হচ্ছে…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-bs/strings.xml b/java/com/android/dialer/callcomposer/res/values-bs/strings.xml
deleted file mode 100644
index bb8d1d7..0000000
--- a/java/com/android/dialer/callcomposer/res/values-bs/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Hitno! Javite se!</string>
-  <string name="want_to_chat">Želite li razgovarati?</string>
-  <string name="quick_question">Kratko pitanje…</string>
-  <string name="message_composer_custom_message_hint">Napišite prilagođenu poruku</string>
-  <string name="send_and_call">Pošalji i pozovi</string>
-  <string name="share_and_call">Dijeli i pozovi</string>
-  <string name="gallery_item_description">slika %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">slika</string>
-  <string name="camera_media_failure">Nije moguće učitati sliku s kamere</string>
-  <string name="allow">Dozvoli</string>
-  <string name="camera_permission_text">Da snimite fotografiju, dajte pristup Kameri</string>
-  <string name="gallery_permission_text">Da podijelite sliku, dozvolite pristup Medijima</string>
-  <string name="description_call_composer_camera">Snimi fotografiju</string>
-  <string name="description_call_composer_photo">Odaberi fotografiju</string>
-  <string name="description_call_composer_message">Pošalji poruku</string>
-  <string name="image_sent_messages">Fotografija je poslana putem aplikacije Messages</string>
-  <string name="message_sent_messages">Poruka je poslana putem aplikacije Messages</string>
-  <string name="call_composer_image_uploading">Slanje slike…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ca/strings.xml b/java/com/android/dialer/callcomposer/res/values-ca/strings.xml
deleted file mode 100644
index 7ee0b86..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ca/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">És urgent! Respon!</string>
-  <string name="want_to_chat">Vols xatejar?</string>
-  <string name="quick_question">Una pregunta ràpida…</string>
-  <string name="message_composer_custom_message_hint">Escriu un miss. personalitzat</string>
-  <string name="send_and_call">Envia i truca</string>
-  <string name="share_and_call">Comparteix i truca</string>
-  <string name="gallery_item_description">imatge del dia %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">imatge</string>
-  <string name="camera_media_failure">No s\'ha pogut carregar la imatge de la càmera</string>
-  <string name="allow">Permet</string>
-  <string name="camera_permission_text">Per fer una foto, dona accés a la càmera</string>
-  <string name="gallery_permission_text">Per compartir una imatge, dona accés al contingut multimèdia</string>
-  <string name="description_call_composer_camera">Fes una foto</string>
-  <string name="description_call_composer_photo">Tria una foto</string>
-  <string name="description_call_composer_message">Envia un missatge</string>
-  <string name="image_sent_messages">Foto enviada mitjançant Missatges</string>
-  <string name="message_sent_messages">Missatge enviat mitjançant Missatges</string>
-  <string name="call_composer_image_uploading">S\'està enviant la imatge…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-cs/strings.xml b/java/com/android/dialer/callcomposer/res/values-cs/strings.xml
deleted file mode 100644
index 77ecb08..0000000
--- a/java/com/android/dialer/callcomposer/res/values-cs/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Zvedni to prosím, je to naléhavé!</string>
-  <string name="want_to_chat">Nechceš si popovídat?</string>
-  <string name="quick_question">Chci se jen na něco rychle zeptat…</string>
-  <string name="message_composer_custom_message_hint">Napište vlastní zprávu</string>
-  <string name="send_and_call">Poslat a zavolat</string>
-  <string name="share_and_call">Sdílet a zavolat</string>
-  <string name="gallery_item_description">obrázek %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">obrázek</string>
-  <string name="camera_media_failure">Obrázek z fotoaparátu se nepodařilo načíst</string>
-  <string name="allow">Povolit</string>
-  <string name="camera_permission_text">Chcete-li pořídit fotku, povolte přístup k fotoaparátu</string>
-  <string name="gallery_permission_text">Pokud chcete sdílet fotku, povolte přístup k mediálním souborům</string>
-  <string name="description_call_composer_camera">Vyfotit</string>
-  <string name="description_call_composer_photo">Vybrat fotku</string>
-  <string name="description_call_composer_message">Poslat zprávu</string>
-  <string name="image_sent_messages">Fotka poslaná v aplikaci Zprávy</string>
-  <string name="message_sent_messages">Zpráva poslaná v aplikaci Zprávy</string>
-  <string name="call_composer_image_uploading">Odesílání obrázku…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-da/strings.xml b/java/com/android/dialer/callcomposer/res/values-da/strings.xml
deleted file mode 100644
index 3299ee8..0000000
--- a/java/com/android/dialer/callcomposer/res/values-da/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Det haster. Besvar opkaldet!</string>
-  <string name="want_to_chat">Har du lyst til at chatte?</string>
-  <string name="quick_question">Et hurtigt spørgsmål…</string>
-  <string name="message_composer_custom_message_hint">Skriv en tilpasset besked</string>
-  <string name="send_and_call">Send og ring</string>
-  <string name="share_and_call">Del og ring</string>
-  <string name="gallery_item_description">billede %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">billede</string>
-  <string name="camera_media_failure">Kamerabilledet kan ikke indlæses</string>
-  <string name="allow">Tillad</string>
-  <string name="camera_permission_text">Du skal give adgang til kameraet for at tage et billede</string>
-  <string name="gallery_permission_text">Du skal give adgang til medier for at dele et billede</string>
-  <string name="description_call_composer_camera">Tag et billede</string>
-  <string name="description_call_composer_photo">Vælg et billede</string>
-  <string name="description_call_composer_message">Send en sms</string>
-  <string name="image_sent_messages">Fotoet blev sendt via Beskeder</string>
-  <string name="message_sent_messages">Beskeden blev sendt via Beskeder</string>
-  <string name="call_composer_image_uploading">Billedet sendes…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-de/strings.xml b/java/com/android/dialer/callcomposer/res/values-de/strings.xml
deleted file mode 100644
index 16f7f5b..0000000
--- a/java/com/android/dialer/callcomposer/res/values-de/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Dringend! Bitte annehmen!</string>
-  <string name="want_to_chat">Möchtest du chatten?</string>
-  <string name="quick_question">Kurze Frage…</string>
-  <string name="message_composer_custom_message_hint">Eigene Nachricht schreiben</string>
-  <string name="send_and_call">Senden und anrufen</string>
-  <string name="share_and_call">Teilen und anrufen</string>
-  <string name="gallery_item_description">Bild: %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">Bild</string>
-  <string name="camera_media_failure">Kamerabild konnte nicht geladen werden</string>
-  <string name="allow">Zulassen</string>
-  <string name="camera_permission_text">Um ein Foto aufzunehmen, musst du den Zugriff auf die Kamera erlauben.</string>
-  <string name="gallery_permission_text">Um ein Bild zu teilen, musst du den Zugriff auf deine Medien erlauben.</string>
-  <string name="description_call_composer_camera">Bild aufnehmen</string>
-  <string name="description_call_composer_photo">Foto auswählen</string>
-  <string name="description_call_composer_message">Nachricht senden</string>
-  <string name="image_sent_messages">Foto über Messages gesendet</string>
-  <string name="message_sent_messages">Nachricht über Messages gesendet.</string>
-  <string name="call_composer_image_uploading">Bild wird gesendet…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-el/strings.xml b/java/com/android/dialer/callcomposer/res/values-el/strings.xml
deleted file mode 100644
index fcd658e..0000000
--- a/java/com/android/dialer/callcomposer/res/values-el/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Επείγον! Παρακαλώ απαντήστε!</string>
-  <string name="want_to_chat">Θέλετε να συζητήσετε;</string>
-  <string name="quick_question">Γρήγορη ερώτηση…</string>
-  <string name="message_composer_custom_message_hint">Γράψτε ένα προσαρμ. μήνυμα</string>
-  <string name="send_and_call">Αποστολή και κλήση</string>
-  <string name="share_and_call">Κοινοποίηση και κλήση</string>
-  <string name="gallery_item_description">εικόνα %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">εικόνα</string>
-  <string name="camera_media_failure">Δεν ήταν δυνατή η φόρτωση της εικόνας φωτογραφικής μηχανής</string>
-  <string name="allow">Να επιτρέπεται</string>
-  <string name="camera_permission_text">Για να τραβήξετε μια φωτογραφία, παραχωρήστε πρόσβαση στην κάμερα</string>
-  <string name="gallery_permission_text">Για να μοιραστείτε μια εικόνα, παραχωρήστε πρόσβαση στα πολυμέσα</string>
-  <string name="description_call_composer_camera">Λήψη φωτογραφίας</string>
-  <string name="description_call_composer_photo">Επιλογή φωτογραφίας</string>
-  <string name="description_call_composer_message">Αποστολή μηνύματος</string>
-  <string name="image_sent_messages">Η φωτογραφία στάλθηκε μέσω του Messages</string>
-  <string name="message_sent_messages">Το μήνυμα στάλθηκε μέσω του Messages</string>
-  <string name="call_composer_image_uploading">Αποστολή εικόνας…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-en-rAU/strings.xml b/java/com/android/dialer/callcomposer/res/values-en-rAU/strings.xml
deleted file mode 100644
index d800742..0000000
--- a/java/com/android/dialer/callcomposer/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Urgent! Please answer!</string>
-  <string name="want_to_chat">Want to chat?</string>
-  <string name="quick_question">Quick question…</string>
-  <string name="message_composer_custom_message_hint">Write a custom message</string>
-  <string name="send_and_call">Send and call</string>
-  <string name="share_and_call">Share and call</string>
-  <string name="gallery_item_description">image %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">image</string>
-  <string name="camera_media_failure">Couldn\'t load camera image</string>
-  <string name="allow">Allow</string>
-  <string name="camera_permission_text">To take a photo, give access to Camera</string>
-  <string name="gallery_permission_text">To share an image, give access to Media</string>
-  <string name="description_call_composer_camera">Take a picture</string>
-  <string name="description_call_composer_photo">Choose a photo</string>
-  <string name="description_call_composer_message">Sending a message</string>
-  <string name="image_sent_messages">Photo sent via Messages</string>
-  <string name="message_sent_messages">Message sent via Messages</string>
-  <string name="call_composer_image_uploading">Sending image…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-en-rGB/strings.xml b/java/com/android/dialer/callcomposer/res/values-en-rGB/strings.xml
deleted file mode 100644
index d800742..0000000
--- a/java/com/android/dialer/callcomposer/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Urgent! Please answer!</string>
-  <string name="want_to_chat">Want to chat?</string>
-  <string name="quick_question">Quick question…</string>
-  <string name="message_composer_custom_message_hint">Write a custom message</string>
-  <string name="send_and_call">Send and call</string>
-  <string name="share_and_call">Share and call</string>
-  <string name="gallery_item_description">image %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">image</string>
-  <string name="camera_media_failure">Couldn\'t load camera image</string>
-  <string name="allow">Allow</string>
-  <string name="camera_permission_text">To take a photo, give access to Camera</string>
-  <string name="gallery_permission_text">To share an image, give access to Media</string>
-  <string name="description_call_composer_camera">Take a picture</string>
-  <string name="description_call_composer_photo">Choose a photo</string>
-  <string name="description_call_composer_message">Sending a message</string>
-  <string name="image_sent_messages">Photo sent via Messages</string>
-  <string name="message_sent_messages">Message sent via Messages</string>
-  <string name="call_composer_image_uploading">Sending image…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-en-rIN/strings.xml b/java/com/android/dialer/callcomposer/res/values-en-rIN/strings.xml
deleted file mode 100644
index d800742..0000000
--- a/java/com/android/dialer/callcomposer/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Urgent! Please answer!</string>
-  <string name="want_to_chat">Want to chat?</string>
-  <string name="quick_question">Quick question…</string>
-  <string name="message_composer_custom_message_hint">Write a custom message</string>
-  <string name="send_and_call">Send and call</string>
-  <string name="share_and_call">Share and call</string>
-  <string name="gallery_item_description">image %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">image</string>
-  <string name="camera_media_failure">Couldn\'t load camera image</string>
-  <string name="allow">Allow</string>
-  <string name="camera_permission_text">To take a photo, give access to Camera</string>
-  <string name="gallery_permission_text">To share an image, give access to Media</string>
-  <string name="description_call_composer_camera">Take a picture</string>
-  <string name="description_call_composer_photo">Choose a photo</string>
-  <string name="description_call_composer_message">Sending a message</string>
-  <string name="image_sent_messages">Photo sent via Messages</string>
-  <string name="message_sent_messages">Message sent via Messages</string>
-  <string name="call_composer_image_uploading">Sending image…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-es-rUS/strings.xml b/java/com/android/dialer/callcomposer/res/values-es-rUS/strings.xml
deleted file mode 100644
index 9918be8..0000000
--- a/java/com/android/dialer/callcomposer/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">¡Es urgente! ¡Contesta!</string>
-  <string name="want_to_chat">¿Quieres chatear?</string>
-  <string name="quick_question">Pregunta rápida…</string>
-  <string name="message_composer_custom_message_hint">Escribe tu propio mensaje</string>
-  <string name="send_and_call">Enviar y llamar</string>
-  <string name="share_and_call">Compartir y llamar</string>
-  <string name="gallery_item_description">imagen del %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">imagen</string>
-  <string name="camera_media_failure">No se pudo cargar la imagen de la cámara</string>
-  <string name="allow">Permitir</string>
-  <string name="camera_permission_text">Para tomar una foto, permite el acceso a la cámara</string>
-  <string name="gallery_permission_text">Para compartir una imagen, permite el acceso al contenido multimedia</string>
-  <string name="description_call_composer_camera">Tomar una foto</string>
-  <string name="description_call_composer_photo">Elegir una foto</string>
-  <string name="description_call_composer_message">Enviar un mensaje</string>
-  <string name="image_sent_messages">Foto enviada por Mensajes</string>
-  <string name="message_sent_messages">Mensaje de texto enviado por Mensajes</string>
-  <string name="call_composer_image_uploading">Enviando imagen…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-es/strings.xml b/java/com/android/dialer/callcomposer/res/values-es/strings.xml
deleted file mode 100644
index d9f2444..0000000
--- a/java/com/android/dialer/callcomposer/res/values-es/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Por favor, contesta. ¡Es urgente!</string>
-  <string name="want_to_chat">¿Quieres chatear?</string>
-  <string name="quick_question">Una pregunta rápida…</string>
-  <string name="message_composer_custom_message_hint">Mensaje personalizado</string>
-  <string name="send_and_call">Enviar y llamar</string>
-  <string name="share_and_call">Compartir y llamar</string>
-  <string name="gallery_item_description">imagen del %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">imagen</string>
-  <string name="camera_media_failure">No se ha podido cargar la imagen de la cámara</string>
-  <string name="allow">Permitir</string>
-  <string name="camera_permission_text">Para hacer una foto, permite el acceso a la cámara</string>
-  <string name="gallery_permission_text">Para compartir una imagen, permite el acceso al contenido multimedia</string>
-  <string name="description_call_composer_camera">Hacer una foto</string>
-  <string name="description_call_composer_photo">Elegir una foto</string>
-  <string name="description_call_composer_message">Enviar un mensaje</string>
-  <string name="image_sent_messages">Foto enviada a través de Mensajes</string>
-  <string name="message_sent_messages">Mensaje enviado a través de Mensajes</string>
-  <string name="call_composer_image_uploading">Enviando la imagen…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-et/strings.xml b/java/com/android/dialer/callcomposer/res/values-et/strings.xml
deleted file mode 100644
index 29c908e..0000000
--- a/java/com/android/dialer/callcomposer/res/values-et/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Kiire! Võtke vastu!</string>
-  <string name="want_to_chat">Kas soovite vestelda?</string>
-  <string name="quick_question">Kiire küsimus …</string>
-  <string name="message_composer_custom_message_hint">Kirjutage kohandatud sõnum</string>
-  <string name="send_and_call">Saatmine ja helistamine</string>
-  <string name="share_and_call">Jaga ja helista</string>
-  <string name="gallery_item_description">pilt: %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">pilt</string>
-  <string name="camera_media_failure">Kaamera kujutist ei õnnestunud laadida</string>
-  <string name="allow">Luba</string>
-  <string name="camera_permission_text">Foto jäädvustamiseks lubage juurdepääs kaamerale</string>
-  <string name="gallery_permission_text">Pildi jagamiseks lubage juurdepääs meediale</string>
-  <string name="description_call_composer_camera">Pildistamine</string>
-  <string name="description_call_composer_photo">Foto valimine</string>
-  <string name="description_call_composer_message">Sõnumi saatmine</string>
-  <string name="image_sent_messages">Foto saadeti rakenduse Messages kaudu</string>
-  <string name="message_sent_messages">Sõnum saadeti rakenduse Messages kaudu</string>
-  <string name="call_composer_image_uploading">Kujutise saatmine …</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-eu/strings.xml b/java/com/android/dialer/callcomposer/res/values-eu/strings.xml
deleted file mode 100644
index 7ff937c..0000000
--- a/java/com/android/dialer/callcomposer/res/values-eu/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Premiazkoa! Erantzun ezazu!</string>
-  <string name="want_to_chat">Txateatu nahi duzu?</string>
-  <string name="quick_question">Galdera bizkorra…</string>
-  <string name="message_composer_custom_message_hint">Idatzi mezu bat</string>
-  <string name="send_and_call">Bidali eta deitu</string>
-  <string name="share_and_call">Partekatu eta deitu</string>
-  <string name="gallery_item_description">irudiaren data: %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">irudia</string>
-  <string name="camera_media_failure">Ezin izan da kargatu kamerako irudia</string>
-  <string name="allow">Baimendu</string>
-  <string name="camera_permission_text">Argazkiak ateratzeko, eman kamera atzitzeko baimena</string>
-  <string name="gallery_permission_text">Irudiak partekatzeko, eman multimedia-edukirako sarbidea</string>
-  <string name="description_call_composer_camera">Atera argazki bat</string>
-  <string name="description_call_composer_photo">Aukeratu argazki bat</string>
-  <string name="description_call_composer_message">Bidali mezu bat</string>
-  <string name="image_sent_messages">Mezuak aplikazioaren bidez bidali da argazkia</string>
-  <string name="message_sent_messages">Mezuak aplikazioaren bidez bidali da mezua</string>
-  <string name="call_composer_image_uploading">Irudia bidaltzen…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fa/strings.xml b/java/com/android/dialer/callcomposer/res/values-fa/strings.xml
deleted file mode 100644
index a7d74f4..0000000
--- a/java/com/android/dialer/callcomposer/res/values-fa/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">فوری! لطفاً بردارید!</string>
-  <string name="want_to_chat">می‌خواهید گپ بزنید؟</string>
-  <string name="quick_question">سؤال سریع...</string>
-  <string name="message_composer_custom_message_hint">پیام سفارشی بنویسید</string>
-  <string name="send_and_call">ارسال و تماس</string>
-  <string name="share_and_call">اشتراک‌گذاری و تماس</string>
-  <string name="gallery_item_description">تصویر %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">تصویر</string>
-  <string name="camera_media_failure">تصویر دوربین بار نشد</string>
-  <string name="allow">مجاز است</string>
-  <string name="camera_permission_text">برای عکس گرفتن، به دوربین اجازه دسترسی بدهید</string>
-  <string name="gallery_permission_text">برای اشتراک‌گذاری تصویر، به رسانه اجازه دسترسی بدهید</string>
-  <string name="description_call_composer_camera">عکس گرفتن</string>
-  <string name="description_call_composer_photo">انتخاب عکس</string>
-  <string name="description_call_composer_message">ارسال پیام</string>
-  <string name="image_sent_messages">عکس ارسال‌شده ازطریق «پیام‌ها»</string>
-  <string name="message_sent_messages">پیام ارسال‌شده ازطریق «پیام‌ها»</string>
-  <string name="call_composer_image_uploading">درحال ارسال تصویر…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fi/strings.xml b/java/com/android/dialer/callcomposer/res/values-fi/strings.xml
deleted file mode 100644
index 5dbe619..0000000
--- a/java/com/android/dialer/callcomposer/res/values-fi/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Tärkeää, vastaa!</string>
-  <string name="want_to_chat">Haluatko jutella?</string>
-  <string name="quick_question">Nopea kysymys…</string>
-  <string name="message_composer_custom_message_hint">Kirjoita oma viesti</string>
-  <string name="send_and_call">Lähetä ja soita</string>
-  <string name="share_and_call">Jaa ja soita</string>
-  <string name="gallery_item_description">kuva (%1$tB %1$te %1$tY %1$tl %1$tM %1$tp)</string>
-  <string name="gallery_item_description_no_date">kuva</string>
-  <string name="camera_media_failure">Kamerakuvan lataus epäonnistui.</string>
-  <string name="allow">Salli</string>
-  <string name="camera_permission_text">Jos haluat ottaa valokuvan, salli kameran käyttö.</string>
-  <string name="gallery_permission_text">Jos haluat jakaa kuvan, salli kuvien käyttö.</string>
-  <string name="description_call_composer_camera">Ota kuva</string>
-  <string name="description_call_composer_photo">Valitse kuva</string>
-  <string name="description_call_composer_message">Lähetä viesti</string>
-  <string name="image_sent_messages">Kuva lähetettiin Messages-sovelluksen kautta</string>
-  <string name="message_sent_messages">Viesti lähetettiin Messages-sovelluksen kautta</string>
-  <string name="call_composer_image_uploading">Lähetetään kuvaa…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fr-rCA/strings.xml b/java/com/android/dialer/callcomposer/res/values-fr-rCA/strings.xml
deleted file mode 100644
index cc1adb1..0000000
--- a/java/com/android/dialer/callcomposer/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Urgent! Veuillez répondre à l\'appel!</string>
-  <string name="want_to_chat">Vous voulez clavarder?</string>
-  <string name="quick_question">Petite question…</string>
-  <string name="message_composer_custom_message_hint">Rédiger message personnalisé</string>
-  <string name="send_and_call">Envoyer et appeler</string>
-  <string name="share_and_call">Partager et appeler</string>
-  <string name="gallery_item_description">image : %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">image</string>
-  <string name="camera_media_failure">Impossible de charger l\'image de l\'appareil photo</string>
-  <string name="allow">Autoriser</string>
-  <string name="camera_permission_text">Pour prendre une photo, autorisez l\'accès à l\'appareil photo</string>
-  <string name="gallery_permission_text">Pour partager une image, autorisez l\'accès au contenu multimédia</string>
-  <string name="description_call_composer_camera">Prendre une photo</string>
-  <string name="description_call_composer_photo">Choisir une photo</string>
-  <string name="description_call_composer_message">Envoyer un message</string>
-  <string name="image_sent_messages">Photo envoyée au moyen de l\'application Messages</string>
-  <string name="message_sent_messages">Message envoyé au moyen de l\'application Messages</string>
-  <string name="call_composer_image_uploading">Envoi de l\'image en cours…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-fr/strings.xml b/java/com/android/dialer/callcomposer/res/values-fr/strings.xml
deleted file mode 100644
index 1e6093c..0000000
--- a/java/com/android/dialer/callcomposer/res/values-fr/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Urgent ! Veuillez décrocher, s\'il vous plaît !</string>
-  <string name="want_to_chat">Vous souhaitez participer au chat ?</string>
-  <string name="quick_question">Petite question…</string>
-  <string name="message_composer_custom_message_hint">Écrire mon propre message</string>
-  <string name="send_and_call">Envoyer et appeler</string>
-  <string name="share_and_call">Partager et appeler</string>
-  <string name="gallery_item_description">image %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">image</string>
-  <string name="camera_media_failure">Impossible de charger l\'image de la caméra</string>
-  <string name="allow">Autoriser</string>
-  <string name="camera_permission_text">Pour prendre une photo, accordez l\'accès à l\'appareil photo.</string>
-  <string name="gallery_permission_text">Pour partager une image, accordez l\'accès aux fichiers multimédia.</string>
-  <string name="description_call_composer_camera">Prendre une photo</string>
-  <string name="description_call_composer_photo">Choisir une photo</string>
-  <string name="description_call_composer_message">Envoyer un message</string>
-  <string name="image_sent_messages">Photo envoyée via l\'application Messages</string>
-  <string name="message_sent_messages">Message envoyé via l\'application Messages</string>
-  <string name="call_composer_image_uploading">Envoi de l\'image…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-gl/strings.xml b/java/com/android/dialer/callcomposer/res/values-gl/strings.xml
deleted file mode 100644
index dc034f2..0000000
--- a/java/com/android/dialer/callcomposer/res/values-gl/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">É urxente! Responde!</string>
-  <string name="want_to_chat">Queres chatear?</string>
-  <string name="quick_question">Unha pregunta rápida…</string>
-  <string name="message_composer_custom_message_hint">Escribe unha mensaxe personalizada</string>
-  <string name="send_and_call">Enviar e chamar</string>
-  <string name="share_and_call">Compartir e chamar</string>
-  <string name="gallery_item_description">Imaxe do %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">Imaxe</string>
-  <string name="camera_media_failure">Non se puido cargar a imaxe da cámara</string>
-  <string name="allow">Permitir</string>
-  <string name="camera_permission_text">Para sacar unha foto, concede permiso de acceso á cámara</string>
-  <string name="gallery_permission_text">Para compartir unha imaxe, concede permiso de acceso aos ficheiros multimedia</string>
-  <string name="description_call_composer_camera">Tira unha foto</string>
-  <string name="description_call_composer_photo">Escolle unha foto</string>
-  <string name="description_call_composer_message">Envía unha mensaxe</string>
-  <string name="image_sent_messages">Foto enviada a través de Mensaxes</string>
-  <string name="message_sent_messages">Mensaxe enviada a través de Mensaxes</string>
-  <string name="call_composer_image_uploading">Enviando imaxe…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-gu/strings.xml b/java/com/android/dialer/callcomposer/res/values-gu/strings.xml
deleted file mode 100644
index 0855cd9..0000000
--- a/java/com/android/dialer/callcomposer/res/values-gu/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">તાત્કાલિક! કૃપા કરીને ફોન ઉપાડો!</string>
-  <string name="want_to_chat">ચૅટ કરવી છે?</string>
-  <string name="quick_question">ઝડપી પ્રશ્ન…</string>
-  <string name="message_composer_custom_message_hint">એક કસ્ટમ સંદેશ લખો</string>
-  <string name="send_and_call">મોકલો અને કૉલ કરો</string>
-  <string name="share_and_call">શેર કરો અને કૉલ કરો</string>
-  <string name="gallery_item_description">છબી %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">છબી</string>
-  <string name="camera_media_failure">કૅમેરા છબી લોડ કરી શકાઈ નથી</string>
-  <string name="allow">મંજૂરી આપો</string>
-  <string name="camera_permission_text">ફોટો લેવા માટે, કૅમેરાની ઍક્સેસ આપો</string>
-  <string name="gallery_permission_text">છબી શેર કરવા, મીડિયાની ઍક્સેસ આપો</string>
-  <string name="description_call_composer_camera">એક ચિત્ર લો</string>
-  <string name="description_call_composer_photo">ફોટો પસંદ કરો</string>
-  <string name="description_call_composer_message">એક સંદેશ મોકલો</string>
-  <string name="image_sent_messages">Messages મારફતે ફોટો મોકલ્યો</string>
-  <string name="message_sent_messages">Messages મારફતે સંદેશ મોકલ્યો</string>
-  <string name="call_composer_image_uploading">છબી મોકલી રહ્યાં છીએ...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-h260dp/values.xml b/java/com/android/dialer/callcomposer/res/values-h260dp/values.xml
deleted file mode 100644
index c31f3b0..0000000
--- a/java/com/android/dialer/callcomposer/res/values-h260dp/values.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <bool name="show_toolbar">true</bool>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/values-h480dp/values.xml b/java/com/android/dialer/callcomposer/res/values-h480dp/values.xml
deleted file mode 100644
index 77b77a5..0000000
--- a/java/com/android/dialer/callcomposer/res/values-h480dp/values.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <bool name="show_toolbar">false</bool>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/values-hi/strings.xml b/java/com/android/dialer/callcomposer/res/values-hi/strings.xml
deleted file mode 100644
index 9da5df9..0000000
--- a/java/com/android/dialer/callcomposer/res/values-hi/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">अत्यावश्यक! कृपया जवाब दें!</string>
-  <string name="want_to_chat">क्या आप चैट करना चाहते हैं?</string>
-  <string name="quick_question">झटपट प्रश्न…</string>
-  <string name="message_composer_custom_message_hint">कोई कस्टम संदेश लिखें</string>
-  <string name="send_and_call">भेजें और कॉल करें</string>
-  <string name="share_and_call">शेयर करें और कॉल करें</string>
-  <string name="gallery_item_description">चित्र %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">चित्र</string>
-  <string name="camera_media_failure">कैमरे का चित्र लोड नहीं किया जा सका</string>
-  <string name="allow">अनुमति दें</string>
-  <string name="camera_permission_text">फ़ोटो लेने के लिए, कैमरे की ऐक्सेस दें</string>
-  <string name="gallery_permission_text">चित्र शेयर करने के लिए, मीडिया की ऐक्सेस दें</string>
-  <string name="description_call_composer_camera">चित्र लें</string>
-  <string name="description_call_composer_photo">एक फ़ोटो चुनें</string>
-  <string name="description_call_composer_message">संदेश भेजें</string>
-  <string name="image_sent_messages">संदेश ऐप्लिकेशन के ज़रिए फ़ोटो भेजा गया</string>
-  <string name="message_sent_messages">संदेश ऐप्लिकेशन के ज़रिए संदेश भेजा गया</string>
-  <string name="call_composer_image_uploading">चित्र भेजा जा रहा है…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-hr/strings.xml b/java/com/android/dialer/callcomposer/res/values-hr/strings.xml
deleted file mode 100644
index 4247244..0000000
--- a/java/com/android/dialer/callcomposer/res/values-hr/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Hitno! Javite se!</string>
-  <string name="want_to_chat">Želite li se uključiti u chat?</string>
-  <string name="quick_question">Brzo pitanje…</string>
-  <string name="message_composer_custom_message_hint">Napišite prilagođenu poruku</string>
-  <string name="send_and_call">Slanje i pozivanje</string>
-  <string name="share_and_call">Dijeli i pozovi</string>
-  <string name="gallery_item_description">slika %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">slika</string>
-  <string name="camera_media_failure">Slika se ne može učitati</string>
-  <string name="allow">Omogući</string>
-  <string name="camera_permission_text">Da biste snimili fotografiju, dopustite pristup Fotoaparatu</string>
-  <string name="gallery_permission_text">Za dijeljenje slike dopustite pristup Medijima</string>
-  <string name="description_call_composer_camera">Snimi fotografiju</string>
-  <string name="description_call_composer_photo">Odaberi fotografiju</string>
-  <string name="description_call_composer_message">Pošalji poruku</string>
-  <string name="image_sent_messages">Fotografija poslana putem Poruka</string>
-  <string name="message_sent_messages">Poruka poslana putem Poruka</string>
-  <string name="call_composer_image_uploading">Slanje slike...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-hu/strings.xml b/java/com/android/dialer/callcomposer/res/values-hu/strings.xml
deleted file mode 100644
index 503795b..0000000
--- a/java/com/android/dialer/callcomposer/res/values-hu/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Sürgős! Kérlek, vedd fel!</string>
-  <string name="want_to_chat">Szeretnél beszélgetni?</string>
-  <string name="quick_question">Gyors kérdés…</string>
-  <string name="message_composer_custom_message_hint">Egyéni üzenet írása</string>
-  <string name="send_and_call">Küldés és hívás</string>
-  <string name="share_and_call">Megosztás és hívás</string>
-  <string name="gallery_item_description">kép: %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">kép</string>
-  <string name="camera_media_failure">Nem lehetett betölteni a kamera képét</string>
-  <string name="allow">Engedélyezés</string>
-  <string name="camera_permission_text">Fotó készítéséhez adjon hozzáférést a fényképezőgéphez</string>
-  <string name="gallery_permission_text">Kép megosztásához adjon hozzáférést a médiafájlokhoz</string>
-  <string name="description_call_composer_camera">Kép készítése</string>
-  <string name="description_call_composer_photo">Fotó kiválasztása</string>
-  <string name="description_call_composer_message">Üzenet küldése</string>
-  <string name="image_sent_messages">Fotó elküldve a Messages alkalmazásban</string>
-  <string name="message_sent_messages">Üzenet elküldve a Messages alkalmazásban</string>
-  <string name="call_composer_image_uploading">Kép küldése…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-hy/strings.xml b/java/com/android/dialer/callcomposer/res/values-hy/strings.xml
deleted file mode 100644
index 5dc7015..0000000
--- a/java/com/android/dialer/callcomposer/res/values-hy/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Շտա՛պ է: Խնդրում եմ պատասխանել:</string>
-  <string name="want_to_chat">Ուզո՞ւմ եք զրուցել:</string>
-  <string name="quick_question">Արագ հարց…</string>
-  <string name="message_composer_custom_message_hint">Գրել տեքստն ինքնուրույն</string>
-  <string name="send_and_call">Ուղարկել և զանգել</string>
-  <string name="share_and_call">Կիսվել և զանգել</string>
-  <string name="gallery_item_description">պատկեր %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">պատկեր</string>
-  <string name="camera_media_failure">Չհաջողվեց բեռնել տեսախցիկի պատկերը</string>
-  <string name="allow">Թույլատրել</string>
-  <string name="camera_permission_text">Լուսանկարելու համար տրամադրեք Խցիկն օգտագործելու հնարավորություն</string>
-  <string name="gallery_permission_text">Որևէ պատկերով կիսվելու համար տրամադրեք մեդիանյութերն օգտագործելու հնարավորություն</string>
-  <string name="description_call_composer_camera">Լուսանկարել</string>
-  <string name="description_call_composer_photo">Ընտրել լուսանկար</string>
-  <string name="description_call_composer_message">Ուղարկել հաղորդագրություն</string>
-  <string name="image_sent_messages">Լուսանկարն ուղարկվել է Messages-ի միջոցով</string>
-  <string name="message_sent_messages">Հաղորդագրությունն ուղարկվել է Messages-ի միջոցով</string>
-  <string name="call_composer_image_uploading">Պատկերի ուղարկում…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-in/strings.xml b/java/com/android/dialer/callcomposer/res/values-in/strings.xml
deleted file mode 100644
index c59c2e6..0000000
--- a/java/com/android/dialer/callcomposer/res/values-in/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Penting! Angkat teleponnya!</string>
-  <string name="want_to_chat">Ingin chat?</string>
-  <string name="quick_question">Pertanyaan cepat…</string>
-  <string name="message_composer_custom_message_hint">Tulis pesan khusus</string>
-  <string name="send_and_call">Kirim dan telepon</string>
-  <string name="share_and_call">Bagikan dan telepon</string>
-  <string name="gallery_item_description">gambar %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">gambar</string>
-  <string name="camera_media_failure">Tidak dapat memuat gambar kamera</string>
-  <string name="allow">Izinkan</string>
-  <string name="camera_permission_text">Untuk mengambil foto, berikan akses ke Kamera</string>
-  <string name="gallery_permission_text">Untuk membagikan gambar, berikan akses ke Media</string>
-  <string name="description_call_composer_camera">Jepret</string>
-  <string name="description_call_composer_photo">Pilih foto</string>
-  <string name="description_call_composer_message">Mengirim pesan</string>
-  <string name="image_sent_messages">Foto dikirim lewat Message</string>
-  <string name="message_sent_messages">Pesan dikirim lewat Message</string>
-  <string name="call_composer_image_uploading">Mengirim gambar…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-is/strings.xml b/java/com/android/dialer/callcomposer/res/values-is/strings.xml
deleted file mode 100644
index be63f0c..0000000
--- a/java/com/android/dialer/callcomposer/res/values-is/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Áríðandi! Svaraðu endilega!</string>
-  <string name="want_to_chat">Viltu spjalla?</string>
-  <string name="quick_question">Snögg spurning...</string>
-  <string name="message_composer_custom_message_hint">Skrifa sérsniðin skilaboð</string>
-  <string name="send_and_call">Senda og hringja</string>
-  <string name="share_and_call">Deila og hringja</string>
-  <string name="gallery_item_description">mynd %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">mynd</string>
-  <string name="camera_media_failure">Ekki var hægt að hlaða mynd frá myndavél</string>
-  <string name="allow">Leyfa</string>
-  <string name="camera_permission_text">Til að taka mynd skaltu veita myndavélinni aðgang</string>
-  <string name="gallery_permission_text">Til að deila mynd skaltu veita margmiðlunarefni aðgang</string>
-  <string name="description_call_composer_camera">Taka mynd</string>
-  <string name="description_call_composer_photo">Velja mynd</string>
-  <string name="description_call_composer_message">Senda skilaboð</string>
-  <string name="image_sent_messages">Mynd send með Messages</string>
-  <string name="message_sent_messages">Skilaboð send með Messages</string>
-  <string name="call_composer_image_uploading">Sendir mynd…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-it/strings.xml b/java/com/android/dialer/callcomposer/res/values-it/strings.xml
deleted file mode 100644
index 5607038..0000000
--- a/java/com/android/dialer/callcomposer/res/values-it/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">È urgente, per favore rispondi!</string>
-  <string name="want_to_chat">Vuoi chattare?</string>
-  <string name="quick_question">Domanda rapida…</string>
-  <string name="message_composer_custom_message_hint">Scrivi un messaggio personalizzato</string>
-  <string name="send_and_call">Invia e chiama</string>
-  <string name="share_and_call">Condividi e chiama</string>
-  <string name="gallery_item_description">immagine: %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">immagine</string>
-  <string name="camera_media_failure">Impossibile caricare l\'immagine della fotocamera</string>
-  <string name="allow">Consenti</string>
-  <string name="camera_permission_text">Per poter scattare una foto devi concedere l\'accesso alla fotocamera</string>
-  <string name="gallery_permission_text">Per condividere un\'immagine, devi concedere l\'accesso ai contenuti multimediali</string>
-  <string name="description_call_composer_camera">Scatta una foto</string>
-  <string name="description_call_composer_photo">Scegli una foto</string>
-  <string name="description_call_composer_message">Invia un messaggio</string>
-  <string name="image_sent_messages">Foto inviata tramite Messaggi</string>
-  <string name="message_sent_messages">Messaggio inviato tramite Messaggi</string>
-  <string name="call_composer_image_uploading">Invio dell\'immagine…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-iw/strings.xml b/java/com/android/dialer/callcomposer/res/values-iw/strings.xml
deleted file mode 100644
index fa1f873..0000000
--- a/java/com/android/dialer/callcomposer/res/values-iw/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">זה דחוף! ענה בבקשה!</string>
-  <string name="want_to_chat">רוצה לשוחח בצ\'אט?</string>
-  <string name="quick_question">שאלה קצרה…</string>
-  <string name="message_composer_custom_message_hint">כתוב הודעה מותאמת אישית</string>
-  <string name="send_and_call">שלח והתקשר</string>
-  <string name="share_and_call">שתף והתקשר</string>
-  <string name="gallery_item_description">תמונה %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">תמונה</string>
-  <string name="camera_media_failure">לא ניתן לטעון את התמונה מהמצלמה</string>
-  <string name="allow">אפשר</string>
-  <string name="camera_permission_text">כדי שתוכל לצלם תמונות עליך להעניק לאפליקציה גישה למצלמה</string>
-  <string name="gallery_permission_text">כדי שתוכל לשתף תמונות עליך להעניק לאפליקציה גישה למדיה</string>
-  <string name="description_call_composer_camera">צילום תמונה</string>
-  <string name="description_call_composer_photo">בחירת תמונה</string>
-  <string name="description_call_composer_message">שליחת הודעה</string>
-  <string name="image_sent_messages">‏התמונה נשלחה דרך אפליקציית Messages</string>
-  <string name="message_sent_messages">‏ההודעה נשלחה דרך אפליקציית Messages</string>
-  <string name="call_composer_image_uploading">התמונה נשלחת…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ja/strings.xml b/java/com/android/dialer/callcomposer/res/values-ja/strings.xml
deleted file mode 100644
index 265ca84..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ja/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">至急応答してください。</string>
-  <string name="want_to_chat">チャットしましょうか？</string>
-  <string name="quick_question">聞きたいことがあります…</string>
-  <string name="message_composer_custom_message_hint">カスタム メッセージを入力</string>
-  <string name="send_and_call">送信して発信</string>
-  <string name="share_and_call">共有して発信</string>
-  <string name="gallery_item_description">画像（%1$tB %1$te %1$tY %1$tl %1$tM %1$tp）</string>
-  <string name="gallery_item_description_no_date">画像</string>
-  <string name="camera_media_failure">カメラ内の画像を読み込めませんでした</string>
-  <string name="allow">許可</string>
-  <string name="camera_permission_text">写真を撮るには、まずカメラへのアクセスを許可してください</string>
-  <string name="gallery_permission_text">画像を共有するには、まずメディアへのアクセスを許可してください</string>
-  <string name="description_call_composer_camera">画像を撮影します</string>
-  <string name="description_call_composer_photo">写真を選択します</string>
-  <string name="description_call_composer_message">メッセージを送信します</string>
-  <string name="image_sent_messages">Android メッセージで写真が送信されました</string>
-  <string name="message_sent_messages">Android メッセージでメッセージが送信されました</string>
-  <string name="call_composer_image_uploading">画像を送信しています…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ka/strings.xml b/java/com/android/dialer/callcomposer/res/values-ka/strings.xml
deleted file mode 100644
index cacdf0e..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ka/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">სასწრაფოა! გთხოვთ, აიღოთ ყურმილი!</string>
-  <string name="want_to_chat">გსურთ ჩეთი?</string>
-  <string name="quick_question">სწრაფი შეკითხვა…</string>
-  <string name="message_composer_custom_message_hint">დაწერეთ მორგებ. შეტყობინება</string>
-  <string name="send_and_call">გაგზავნა და დარეკვა</string>
-  <string name="share_and_call">გაზიარება და დარეკვა</string>
-  <string name="gallery_item_description">სურათი, %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">სურათი</string>
-  <string name="camera_media_failure">კამერის სურათი ვერ ჩაიტვირთა</string>
-  <string name="allow">ნების დართვა</string>
-  <string name="camera_permission_text">ფოტოს გადასაღებად მიეცით კამერაზე წვდომა</string>
-  <string name="gallery_permission_text">სურათის გასაზიარებლად მიეცით მედიაზე წვდომა</string>
-  <string name="description_call_composer_camera">სურათის გადაღება</string>
-  <string name="description_call_composer_photo">ფოტოს არჩევა</string>
-  <string name="description_call_composer_message">შეტყობინების გაგზავნა</string>
-  <string name="image_sent_messages">ფოტო გაიგზავნა Messages აპიდან</string>
-  <string name="message_sent_messages">შეტყობინება გაიგზავნა Messages აპიდან</string>
-  <string name="call_composer_image_uploading">მიმდინარეობს სურათის გაგზავნა…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-kk/strings.xml b/java/com/android/dialer/callcomposer/res/values-kk/strings.xml
deleted file mode 100644
index 40de609..0000000
--- a/java/com/android/dialer/callcomposer/res/values-kk/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Шұғыл! Телефонды алыңыз!</string>
-  <string name="want_to_chat">Чаттасқыңыз келе ме?</string>
-  <string name="quick_question">Жылдам сұрақ...</string>
-  <string name="message_composer_custom_message_hint">Арнаулы хабар жазу</string>
-  <string name="send_and_call">Жіберу және қоңырау шалу</string>
-  <string name="share_and_call">Бөлісу және қоңырау шалу</string>
-  <string name="gallery_item_description">сурет, %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">сурет</string>
-  <string name="camera_media_failure">Камера суреті жүктелмеді</string>
-  <string name="allow">Рұқсат беру</string>
-  <string name="camera_permission_text">Суретке түсіру үшін камераға кіруге рұқсат беріңіз</string>
-  <string name="gallery_permission_text">Суретті жіберу үшін медиафайлға кіруге рұқсат беріңіз</string>
-  <string name="description_call_composer_camera">Суретке түсіру</string>
-  <string name="description_call_composer_photo">Суретті таңдау</string>
-  <string name="description_call_composer_message">Хабар жіберу</string>
-  <string name="image_sent_messages">Сурет Messages арқылы жіберілді</string>
-  <string name="message_sent_messages">Хабар Messages арқылы жіберілді</string>
-  <string name="call_composer_image_uploading">Сурет жіберілуде...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-km/strings.xml b/java/com/android/dialer/callcomposer/res/values-km/strings.xml
deleted file mode 100644
index 68383e7..0000000
--- a/java/com/android/dialer/callcomposer/res/values-km/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">បន្ទាន់! សូម​ជ្រើសយក!</string>
-  <string name="want_to_chat">តើ​ចង់​ជជែក?</string>
-  <string name="quick_question">សំណួរ​រហ័ស…</string>
-  <string name="message_composer_custom_message_hint">សរសេរ​សារ​ផ្ទាល់ខ្លួន</string>
-  <string name="send_and_call">ផ្ញើ និង​ហៅ</string>
-  <string name="share_and_call">ចែករំលែក និង​ហៅ​ទូរសព្ទ</string>
-  <string name="gallery_item_description">រូបភាព %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">រូបភាព</string>
-  <string name="camera_media_failure">មិន​អាច​ផ្ទុក​រូបភាព​​​ពី​កាមេរ៉ា​បាន​ទេ</string>
-  <string name="allow">អនុញ្ញាត</string>
-  <string name="camera_permission_text">ដើម្បីថតរូប សូមអនុញ្ញាត​ឲ្យចូលប្រើប្រាស់​កាមេរ៉ា</string>
-  <string name="gallery_permission_text">ដើម្បីចែករំលែករូបភាព សូមអនុញ្ញាត​ឲ្យចូលប្រើប្រាស់​មេឌៀ</string>
-  <string name="description_call_composer_camera">ថតរូប</string>
-  <string name="description_call_composer_photo">ជ្រើសរើស​រូបថត</string>
-  <string name="description_call_composer_message">ផ្ញើសារ</string>
-  <string name="image_sent_messages">រូបថត​ដែល​បាន​ផ្ញើ​តាមរយៈ Messages</string>
-  <string name="message_sent_messages">សារ​ដែល​បាន​ផ្ញើ​តាមរយៈ Messages</string>
-  <string name="call_composer_image_uploading">កំពុង​ផ្ញើ​រូបភាព...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-kn/strings.xml b/java/com/android/dialer/callcomposer/res/values-kn/strings.xml
deleted file mode 100644
index ca69d3c..0000000
--- a/java/com/android/dialer/callcomposer/res/values-kn/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">ತುರ್ತು! ದಯವಿಟ್ಟು ಆಯ್ಕೆಮಾಡಿ!</string>
-  <string name="want_to_chat">ಚಾಟ್ ಮಾಡಲು ಬಯಸುವಿರಾ?</string>
-  <string name="quick_question">ತ್ವರಿತ ಪ್ರಶ್ನೆ…</string>
-  <string name="message_composer_custom_message_hint">ಕಸ್ಟಮ್ ಸಂದೇಶವನ್ನು ಬರೆಯಿರಿ</string>
-  <string name="send_and_call">ಕಳುಹಿಸಿ ಮತ್ತು ಕರೆ ಮಾಡಿ</string>
-  <string name="share_and_call">ಹಂಚಿಕೊಳ್ಳಿ ಮತ್ತು ಕರೆ ಮಾಡಿ</string>
-  <string name="gallery_item_description">ಚಿತ್ರ %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">ಚಿತ್ರ</string>
-  <string name="camera_media_failure">ಕ್ಯಾಮರಾ ಚಿತ್ರವನ್ನು ಲೋಡ್ ಮಾಡಲಾಗಲಿಲ್ಲ</string>
-  <string name="allow">ಅನುಮತಿಸಿ</string>
-  <string name="camera_permission_text">ಫೋಟೋ ತೆಗೆಯಲು, ಕ್ಯಾಮರಾಗೆ ಪ್ರವೇಶ ನೀಡಿ</string>
-  <string name="gallery_permission_text">ಚಿತ್ರವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು, ಮಾಧ್ಯಮಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ನೀಡಿ</string>
-  <string name="description_call_composer_camera">ಚಿತ್ರ ತೆಗೆದುಕೊಳ್ಳಿ</string>
-  <string name="description_call_composer_photo">ಒಂದು ಫೋಟೋ ಆಯ್ಕೆಮಾಡಿ</string>
-  <string name="description_call_composer_message">ಸಂದೇಶ ಕಳುಹಿಸಿ</string>
-  <string name="image_sent_messages">ಸಂದೇಶಗಳ ಮೂಲಕ ಕಳುಹಿಸಲಾದ ಫೋಟೋ</string>
-  <string name="message_sent_messages">ಸಂದೇಶಗಳ ಮೂಲಕ ಕಳುಹಿಸಲಾದ ಸಂದೇಶ</string>
-  <string name="call_composer_image_uploading">ಚಿತ್ರ ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ko/strings.xml b/java/com/android/dialer/callcomposer/res/values-ko/strings.xml
deleted file mode 100644
index 5261805..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ko/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">긴급! 선택해 주세요.</string>
-  <string name="want_to_chat">채팅에 참여하고 싶으신가요?</string>
-  <string name="quick_question">빠른 질문…</string>
-  <string name="message_composer_custom_message_hint">맞춤 메시지를 작성하세요.</string>
-  <string name="send_and_call">보내기 및 전화 걸기</string>
-  <string name="share_and_call">공유 및 전화 걸기</string>
-  <string name="gallery_item_description">이미지 %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">이미지</string>
-  <string name="camera_media_failure">카메라 이미지를 로드할 수 없습니다.</string>
-  <string name="allow">허용</string>
-  <string name="camera_permission_text">사진을 찍으려면 카메라에 액세스할 수 있도록 허용하세요.</string>
-  <string name="gallery_permission_text">이미지를 공유하려면 미디어에 액세스할 수 있도록 허용하세요.</string>
-  <string name="description_call_composer_camera">사진 촬영</string>
-  <string name="description_call_composer_photo">사진 선택</string>
-  <string name="description_call_composer_message">메시지 보내기</string>
-  <string name="image_sent_messages">메시지를 통해 전송된 사진</string>
-  <string name="message_sent_messages">메시지를 통해 전송된 메시지</string>
-  <string name="call_composer_image_uploading">이미지 전송 중…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ky/strings.xml b/java/com/android/dialer/callcomposer/res/values-ky/strings.xml
deleted file mode 100644
index b11a058..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ky/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Шашылыш! Телефонду алыңыз!</string>
-  <string name="want_to_chat">Маектешесизби?</string>
-  <string name="quick_question">Тез суроо…</string>
-  <string name="message_composer_custom_message_hint">Башка билдирүүнү жазыңыз</string>
-  <string name="send_and_call">Жөнөтүп, анан чалуу</string>
-  <string name="share_and_call">Бөлүшүү жана чалуу</string>
-  <string name="gallery_item_description">сүрөт, %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">сүрөт</string>
-  <string name="camera_media_failure">Камерадан сүрөт жүктөлгөн жок</string>
-  <string name="allow">Уруксат берүү</string>
-  <string name="camera_permission_text">Сүрөткө тартуу үчүн, колдонмого камераны пайдаланууга уруксат бериңиз</string>
-  <string name="gallery_permission_text">Сүрөттү бөлүшүү үчүн мультимедиага кирүүгө уруксат бериңиз</string>
-  <string name="description_call_composer_camera">Сүрөткө тартуу</string>
-  <string name="description_call_composer_photo">Сүрөттү тандоо</string>
-  <string name="description_call_composer_message">Билдирүү жөнөтүү</string>
-  <string name="image_sent_messages">Сүрөт Android жазышуулары колдонмосу аркылуу жөнөтүлдү</string>
-  <string name="message_sent_messages">Билдирүү Android жазышуулары колдонмосу аркылуу жөнөтүлдү</string>
-  <string name="call_composer_image_uploading">Сүрөт жөнөтүлүүдө...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-lo/strings.xml b/java/com/android/dialer/callcomposer/res/values-lo/strings.xml
deleted file mode 100644
index b4f0473..0000000
--- a/java/com/android/dialer/callcomposer/res/values-lo/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">ດ່ວນ! ຮັບສາຍແດ່!</string>
-  <string name="want_to_chat">ຢາກລົມບໍ?</string>
-  <string name="quick_question">ມີເລື່ອງຖາມໜ້ອຍໜຶ່ງ…</string>
-  <string name="message_composer_custom_message_hint">ຂຽນຂໍ້ຄວາມດ້ວຍຕົນເອງ</string>
-  <string name="send_and_call">ສົ່ງ ແລະ ໂທ</string>
-  <string name="share_and_call">ແບ່ງປັນ ແລະ ໂທ</string>
-  <string name="gallery_item_description">ຮູບ %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">ຮູບ</string>
-  <string name="camera_media_failure">ບໍ່ສາມາດໂຫລດຮູບຈາກກ້ອງໄດ້</string>
-  <string name="allow">ອະນຸຍາດ</string>
-  <string name="camera_permission_text">ເພື່ອຖ່າຍຮູບ, ໃຫ້ອະນຸຍາດການເຂົ້າຫາກ້ອງຖ່າຍຮູບກ່ອນ</string>
-  <string name="gallery_permission_text">ເພື່ອແບ່ງປັນຮູບພາບໃດໜຶ່ງ, ໃຫ້ອະນຸຍາດການເຂົ້າຫາມີເດຍກ່ອນ</string>
-  <string name="description_call_composer_camera">ຖ່າຍຮູບ</string>
-  <string name="description_call_composer_photo">ເລືອກຮູບພາບ...</string>
-  <string name="description_call_composer_message">ສົ່ງຂໍ້ຄວາມ</string>
-  <string name="image_sent_messages">ສົ່ງຮູບຜ່ານ Messages ແລ້ວ</string>
-  <string name="message_sent_messages">ສົ່ງຮູບຜ່ານ Messages ແລ້ວ</string>
-  <string name="call_composer_image_uploading">ກຳລັງສົ່ງຮູບພາບ...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-lt/strings.xml b/java/com/android/dialer/callcomposer/res/values-lt/strings.xml
deleted file mode 100644
index 20506fa..0000000
--- a/java/com/android/dialer/callcomposer/res/values-lt/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Skubu! Atsiliepkite!</string>
-  <string name="want_to_chat">Norite kalbėtis?</string>
-  <string name="quick_question">Trumpas klausimas…</string>
-  <string name="message_composer_custom_message_hint">Parašykite tinkintą praneš.</string>
-  <string name="send_and_call">Siųsti ir skambinti</string>
-  <string name="share_and_call">Bendrinti ir skambinti</string>
-  <string name="gallery_item_description">vaizdas (%1$tB %1$te %1$tY %1$tl %1$tM %1$tp)</string>
-  <string name="gallery_item_description_no_date">vaizdas</string>
-  <string name="camera_media_failure">Nepavyko įkelti fotoaparato vaizdo</string>
-  <string name="allow">Leisti</string>
-  <string name="camera_permission_text">Kad galėtumėte fotografuoti, leiskite pasiekti fotoaparatą</string>
-  <string name="gallery_permission_text">Kad galėtumėte bendrinti vaizdą, leiskite pasiekti mediją</string>
-  <string name="description_call_composer_camera">Fotografuoti</string>
-  <string name="description_call_composer_photo">Pasirinkti nuotrauką</string>
-  <string name="description_call_composer_message">Siųsti pranešimą</string>
-  <string name="image_sent_messages">Nuotrauka išsiųsta naudojant „Messages“</string>
-  <string name="message_sent_messages">Pranešimas išsiųstas naudojant „Messages“</string>
-  <string name="call_composer_image_uploading">Siunčiamas vaizdas...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-lv/strings.xml b/java/com/android/dialer/callcomposer/res/values-lv/strings.xml
deleted file mode 100644
index af5fb2e..0000000
--- a/java/com/android/dialer/callcomposer/res/values-lv/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Tas ir svarīgi. Lūdzu, atbildiet!</string>
-  <string name="want_to_chat">Vai vēlaties tērzēt?</string>
-  <string name="quick_question">Ātrs jautājums…</string>
-  <string name="message_composer_custom_message_hint">Rakstīt pielāgotu ziņojumu</string>
-  <string name="send_and_call">Sūtīt un zvanīt</string>
-  <string name="share_and_call">Kopīgot un zvanīt</string>
-  <string name="gallery_item_description">attēls, %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">attēls</string>
-  <string name="camera_media_failure">Nevarēja ielādēt kameras attēlu.</string>
-  <string name="allow">Atļaut</string>
-  <string name="camera_permission_text">Lai uzņemtu fotoattēlu, piešķiriet piekļuvi kamerai.</string>
-  <string name="gallery_permission_text">Lai kopīgotu attēlu, piešķiriet piekļuvi multivides saturam.</string>
-  <string name="description_call_composer_camera">Uzņemt attēlu</string>
-  <string name="description_call_composer_photo">Izvēlēties fotoattēlu</string>
-  <string name="description_call_composer_message">Sūtīt ziņojumu</string>
-  <string name="image_sent_messages">Fotoattēls nosūtīts, izmantojot lietotni Ziņojumi</string>
-  <string name="message_sent_messages">Ziņojums nosūtīts, izmantojot lietotni Ziņojumi</string>
-  <string name="call_composer_image_uploading">Tiek sūtīts attēls…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-mk/strings.xml b/java/com/android/dialer/callcomposer/res/values-mk/strings.xml
deleted file mode 100644
index 4aed43a..0000000
--- a/java/com/android/dialer/callcomposer/res/values-mk/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Итно! Јавете се!</string>
-  <string name="want_to_chat">Сакате да разговарате?</string>
-  <string name="quick_question">Кратко прашање…</string>
-  <string name="message_composer_custom_message_hint">Напиши приспособена порака</string>
-  <string name="send_and_call">Испратете и повикајте</string>
-  <string name="share_and_call">Сподели и повикај</string>
-  <string name="gallery_item_description">слика од %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">слика</string>
-  <string name="camera_media_failure">Не можеше да се вчита слика од камерата</string>
-  <string name="allow">Дозволете</string>
-  <string name="camera_permission_text">За да фотографирате, дозволете пристап до „Камера“</string>
-  <string name="gallery_permission_text">За да споделите слика, дозволете пристап до Media</string>
-  <string name="description_call_composer_camera">Фотографирајте</string>
-  <string name="description_call_composer_photo">Изберете фотографија</string>
-  <string name="description_call_composer_message">Испратете порака</string>
-  <string name="image_sent_messages">Фотографијата е испратена преку Messages</string>
-  <string name="message_sent_messages">Пораката е испратена преку Messages</string>
-  <string name="call_composer_image_uploading">Се испраќа слика…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ml/strings.xml b/java/com/android/dialer/callcomposer/res/values-ml/strings.xml
deleted file mode 100644
index 332442a..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ml/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">അടിയന്തരാവശ്യം! കോളെടുക്കൂ!</string>
-  <string name="want_to_chat">ചാറ്റ് ചെയ്യണോ?</string>
-  <string name="quick_question">അടിയന്തര ചോദ്യം…</string>
-  <string name="message_composer_custom_message_hint">ഒരു ഇ‌ഷ്‌ടാനുസൃത സന്ദേശം രചിക്കൂ</string>
-  <string name="send_and_call">അയച്ചശേഷം കോൾ ചെയ്യുക</string>
-  <string name="share_and_call">പങ്കിടുക, കോൾ ചെയ്യുക</string>
-  <string name="gallery_item_description">ചിത്രം %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">ചിത്രം</string>
-  <string name="camera_media_failure">ക്യാമറ ചിത്രം ലോഡുചെയ്യാനായില്ല</string>
-  <string name="allow">അനുവദിക്കുക</string>
-  <string name="camera_permission_text">ഫോട്ടോ എടുക്കുന്നതിന്, ക്യാമറയ്ക്ക് ആക്സസ് നൽകുക</string>
-  <string name="gallery_permission_text">ഫോട്ടോ പങ്കിടുന്നതിന്, മീഡിയയ്ക്ക് ആക്സസ് നൽകുക</string>
-  <string name="description_call_composer_camera">ഒരു ചിത്രമെടുക്കുക</string>
-  <string name="description_call_composer_photo">ഒരു ഫോട്ടോ തിരഞ്ഞെടുക്കുക</string>
-  <string name="description_call_composer_message">ഒരു സന്ദേശം അയയ്‌ക്കുക</string>
-  <string name="image_sent_messages">മെസേജ് വഴി ഫോട്ടോ അയച്ചു</string>
-  <string name="message_sent_messages">മെസേജ് വഴി സന്ദേശം അയച്ചു</string>
-  <string name="call_composer_image_uploading">ചിത്രം അയയ്‌ക്കുന്നു...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-mn/strings.xml b/java/com/android/dialer/callcomposer/res/values-mn/strings.xml
deleted file mode 100644
index 1387a7c..0000000
--- a/java/com/android/dialer/callcomposer/res/values-mn/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Яаралтай! Утсаа авна уу!</string>
-  <string name="want_to_chat">Чатлахыг хүсэж байна уу?</string>
-  <string name="quick_question">Шуурхай асуулт…</string>
-  <string name="message_composer_custom_message_hint">Тусгай зурвас бичих</string>
-  <string name="send_and_call">Илгээгээд залгах</string>
-  <string name="share_and_call">Хуваалцаад залгах</string>
-  <string name="gallery_item_description">зураг %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">зураг</string>
-  <string name="camera_media_failure">Камерын дүрсийг ачаалж чадсангүй</string>
-  <string name="allow">Зөвшөөрөх</string>
-  <string name="camera_permission_text">Зураг авахын тулд камерт хандах зөвшөөрөл олгох шаардлагатай</string>
-  <string name="gallery_permission_text">Зураг хуваалцахын тулд медиад хандах зөвшөөрөл олгох шаардлагатай</string>
-  <string name="description_call_composer_camera">Зураг авах</string>
-  <string name="description_call_composer_photo">Зураг сонгоно уу</string>
-  <string name="description_call_composer_message">Зурвас илгээх</string>
-  <string name="image_sent_messages">Зургийг Зурвасаар дамжуулан илгээсэн</string>
-  <string name="message_sent_messages">Зурвасыг Зурвасаар дамжуулан илгээсэн</string>
-  <string name="call_composer_image_uploading">Зураг илгээж байна...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-mr/strings.xml b/java/com/android/dialer/callcomposer/res/values-mr/strings.xml
deleted file mode 100644
index d624624..0000000
--- a/java/com/android/dialer/callcomposer/res/values-mr/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">तातडीचे! कृपया घ्या!</string>
-  <string name="want_to_chat">चॅट करू इच्छिता?</string>
-  <string name="quick_question">द्रुत प्रश्न…</string>
-  <string name="message_composer_custom_message_hint">एक सानुकूल मेसेज लिहा</string>
-  <string name="send_and_call">पाठवा आणि कॉल करा</string>
-  <string name="share_and_call">शेअर करा आणि कॉल करा</string>
-  <string name="gallery_item_description">इमेज %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">इमेज</string>
-  <string name="camera_media_failure">कॅमेरा इमेज लोड करणे शक्य झाले नाही</string>
-  <string name="allow">अनुमती द्या</string>
-  <string name="camera_permission_text">एक फोटो घेण्यासाठी, कॅमेर्‍यामध्ये प्रवेश द्या</string>
-  <string name="gallery_permission_text">एखादी इमेज सामायिक करण्यासाठी मीडियामध्ये प्रवेश द्या</string>
-  <string name="description_call_composer_camera">एक फोटो घ्या</string>
-  <string name="description_call_composer_photo">फोटो निवडा</string>
-  <string name="description_call_composer_message">एक मेसेज पाठवा</string>
-  <string name="image_sent_messages">Messages द्वारे फोटो पाठविला</string>
-  <string name="message_sent_messages">Messages द्वारे मेसेज पाठविला</string>
-  <string name="call_composer_image_uploading">इमेज पाठवत आहे…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ms/strings.xml b/java/com/android/dialer/callcomposer/res/values-ms/strings.xml
deleted file mode 100644
index 56445e6..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ms/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Penting! Sila jawab!</string>
-  <string name="want_to_chat">Ingin bersembang?</string>
-  <string name="quick_question">Soalan pantas…</string>
-  <string name="message_composer_custom_message_hint">Tulis mesej tersuai</string>
-  <string name="send_and_call">Hantar dan panggil</string>
-  <string name="share_and_call">Kongsi dan hubungi</string>
-  <string name="gallery_item_description">imej %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">imej</string>
-  <string name="camera_media_failure">Tidak dapat memuatkan imej kamera</string>
-  <string name="allow">Benarkan</string>
-  <string name="camera_permission_text">Untuk mengambil foto, berikan akses kepada Kamera</string>
-  <string name="gallery_permission_text">Untuk berkongsi imej, berikan akses kepada Media</string>
-  <string name="description_call_composer_camera">Ambil gambar</string>
-  <string name="description_call_composer_photo">Pilih foto</string>
-  <string name="description_call_composer_message">Hantar mesej</string>
-  <string name="image_sent_messages">Photo dihantar melalui Mesej</string>
-  <string name="message_sent_messages">Mesej dihantar melalui Mesej</string>
-  <string name="call_composer_image_uploading">Menghantar imej…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-my/strings.xml b/java/com/android/dialer/callcomposer/res/values-my/strings.xml
deleted file mode 100644
index b86d029..0000000
--- a/java/com/android/dialer/callcomposer/res/values-my/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">အရေးကြီးသည်။ ဖုန်းကိုင်ပါ။</string>
-  <string name="want_to_chat">ချတ်လုပ်လိုပါသလား။</string>
-  <string name="quick_question">အမြန်မေးခွန်း…</string>
-  <string name="message_composer_custom_message_hint">စိတ်ကြိုက် မက်ဆေ့ဂျ်တစ်ခု ရေးပါ</string>
-  <string name="send_and_call">ပို့ပြီး ဖုန်းခေါ်ရန်</string>
-  <string name="share_and_call">မျှဝေပြီး ခေါ်ဆိုရန်</string>
-  <string name="gallery_item_description">ပုံ %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">ပုံ</string>
-  <string name="camera_media_failure">ကင်မရာမှပုံကို မရယူနိုင်ပါ</string>
-  <string name="allow">ခွင့်ပြုရန်</string>
-  <string name="camera_permission_text">ဓာတ်ပုံရိုက်ရန် ကင်မရာသို့ ဝင်သုံးခွင့်ပေးပါ</string>
-  <string name="gallery_permission_text">ပုံမျှဝေရန် မီဒီယာသို့ ဝင်သုံးခွင့်ပေးပါ</string>
-  <string name="description_call_composer_camera">ဓာတ်ပုံတစ်ပုံ ရိုက်ရန်</string>
-  <string name="description_call_composer_photo">ဓာတ်ပုံတစ်ပုံ ရွေးရန်</string>
-  <string name="description_call_composer_message">မက်ဆေ့ဂျ်ပို့ရန်</string>
-  <string name="image_sent_messages">မက်ဆေ့ဂျ်များမှတစ်ဆင့် ဓာတ်ပုံပို့ပြီးပါပြီ</string>
-  <string name="message_sent_messages">မက်ဆေ့ဂျ်များမှတစ်ဆင့် မက်ဆေ့ဂျ်ပို့ပြီးပါပြီ</string>
-  <string name="call_composer_image_uploading">ပုံပို့နေသည်…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-nb/strings.xml b/java/com/android/dialer/callcomposer/res/values-nb/strings.xml
deleted file mode 100644
index 134969b..0000000
--- a/java/com/android/dialer/callcomposer/res/values-nb/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Haster! Vennligst svar.</string>
-  <string name="want_to_chat">Vil du chatte?</string>
-  <string name="quick_question">Et kjapt spørsmål …</string>
-  <string name="message_composer_custom_message_hint">Skriv egendefinert melding</string>
-  <string name="send_and_call">Sende og ringe</string>
-  <string name="share_and_call">Del og ring</string>
-  <string name="gallery_item_description">bilde %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">bilde</string>
-  <string name="camera_media_failure">Kunne ikke laste inn kamerabilde</string>
-  <string name="allow">Tillat</string>
-  <string name="camera_permission_text">Gi tilgang til kameraet for å ta bilder</string>
-  <string name="gallery_permission_text">Gi Media tilgang for å dele bilder</string>
-  <string name="description_call_composer_camera">Ta et bilde</string>
-  <string name="description_call_composer_photo">Velg et bilde</string>
-  <string name="description_call_composer_message">Send en melding</string>
-  <string name="image_sent_messages">Bildet er sendt via Messages</string>
-  <string name="message_sent_messages">Meldingen er sendt via Messages</string>
-  <string name="call_composer_image_uploading">Sender bildet …</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ne/strings.xml b/java/com/android/dialer/callcomposer/res/values-ne/strings.xml
deleted file mode 100644
index f89e8c2..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ne/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">अत्यन्त जरुरी! कृपया उठाउनुहोस्!</string>
-  <string name="want_to_chat">कुराकानी गर्न चाहनुहुन्छ?</string>
-  <string name="quick_question">द्रुत प्रश्नहरू…</string>
-  <string name="message_composer_custom_message_hint">आफू अनुकूल सन्देश लेख्‍ने</string>
-  <string name="send_and_call">कल पठाउनुहोस्</string>
-  <string name="share_and_call">आदान प्रदान र कल गर्नुहोस्</string>
-  <string name="gallery_item_description">छवि %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">छवि</string>
-  <string name="camera_media_failure">क्यामेराको छवि लोड गर्न सकिएन</string>
-  <string name="allow">अनुमति दिनुहोस्</string>
-  <string name="camera_permission_text">तस्बिर खिच्न, क्यामेरामाथि पहुँच दिनुहोस्</string>
-  <string name="gallery_permission_text">छवि आदान प्रदान गर्न, मिडियामाथि पहुँच दिनुहोस्</string>
-  <string name="description_call_composer_camera">तस्बिर खिच्नुहोस्</string>
-  <string name="description_call_composer_photo">तस्बिर छनौट गर्नुहोस्</string>
-  <string name="description_call_composer_message">सन्देश पठाउनुहोस्</string>
-  <string name="image_sent_messages">Messages मार्फत पठाइएको तस्बिर</string>
-  <string name="message_sent_messages">Messages मार्फत पठाइएको सन्देश</string>
-  <string name="call_composer_image_uploading">छवि पठाइँदै…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-nl/strings.xml b/java/com/android/dialer/callcomposer/res/values-nl/strings.xml
deleted file mode 100644
index e4b3444..0000000
--- a/java/com/android/dialer/callcomposer/res/values-nl/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Dit is dringend! Neem alsjeblieft op.</string>
-  <string name="want_to_chat">Wil je chatten?</string>
-  <string name="quick_question">Snelle vraag…</string>
-  <string name="message_composer_custom_message_hint">Schrijf zelf een bericht</string>
-  <string name="send_and_call">Verzenden en bellen</string>
-  <string name="share_and_call">Delen en bellen</string>
-  <string name="gallery_item_description">afbeelding van %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">afbeelding</string>
-  <string name="camera_media_failure">Kan camera-afbeelding niet laden</string>
-  <string name="allow">Toestaan</string>
-  <string name="camera_permission_text">Verleen toegang tot Camera om een foto te maken</string>
-  <string name="gallery_permission_text">Verleen toegang tot Media om een afbeelding te delen</string>
-  <string name="description_call_composer_camera">Een foto nemen</string>
-  <string name="description_call_composer_photo">Een foto kiezen</string>
-  <string name="description_call_composer_message">Een bericht verzenden</string>
-  <string name="image_sent_messages">Foto verzonden via Berichten</string>
-  <string name="message_sent_messages">Bericht verzonden via Berichten</string>
-  <string name="call_composer_image_uploading">Afbeelding verzenden…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-no/strings.xml b/java/com/android/dialer/callcomposer/res/values-no/strings.xml
deleted file mode 100644
index 134969b..0000000
--- a/java/com/android/dialer/callcomposer/res/values-no/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Haster! Vennligst svar.</string>
-  <string name="want_to_chat">Vil du chatte?</string>
-  <string name="quick_question">Et kjapt spørsmål …</string>
-  <string name="message_composer_custom_message_hint">Skriv egendefinert melding</string>
-  <string name="send_and_call">Sende og ringe</string>
-  <string name="share_and_call">Del og ring</string>
-  <string name="gallery_item_description">bilde %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">bilde</string>
-  <string name="camera_media_failure">Kunne ikke laste inn kamerabilde</string>
-  <string name="allow">Tillat</string>
-  <string name="camera_permission_text">Gi tilgang til kameraet for å ta bilder</string>
-  <string name="gallery_permission_text">Gi Media tilgang for å dele bilder</string>
-  <string name="description_call_composer_camera">Ta et bilde</string>
-  <string name="description_call_composer_photo">Velg et bilde</string>
-  <string name="description_call_composer_message">Send en melding</string>
-  <string name="image_sent_messages">Bildet er sendt via Messages</string>
-  <string name="message_sent_messages">Meldingen er sendt via Messages</string>
-  <string name="call_composer_image_uploading">Sender bildet …</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pa/strings.xml b/java/com/android/dialer/callcomposer/res/values-pa/strings.xml
deleted file mode 100644
index 0173ffa..0000000
--- a/java/com/android/dialer/callcomposer/res/values-pa/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ! ਕਿਰਪਾ ਕਰਕੇ ਚੁੱਕੋ!</string>
-  <string name="want_to_chat">ਕੀ ਚੈਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?</string>
-  <string name="quick_question">ਤਤਕਾਲ ਸਵਾਲ…</string>
-  <string name="message_composer_custom_message_hint">ਵਿਸ਼ੇਸ਼-ਵਿਉਂਤਬੱਧ ਸੁਨੇਹਾ ਲਿਖੋ</string>
-  <string name="send_and_call">ਭੇਜੋ ਅਤੇ ਕਾਲ ਕਰੋ</string>
-  <string name="share_and_call">ਸਾਂਝਾ ਕਰੋ ਅਤੇ ਕਾਲ ਕਰੋ</string>
-  <string name="gallery_item_description">ਚਿੱਤਰ %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">ਚਿੱਤਰ</string>
-  <string name="camera_media_failure">ਕੈਮਰਾ ਚਿੱਤਰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</string>
-  <string name="allow">ਇਜਾਜ਼ਤ ਦਿਓ</string>
-  <string name="camera_permission_text">ਫ਼ੋਟੋ ਖਿੱਚਣ ਲਈ, ਕੈਮਰੇ ਤੱਕ ਪਹੁੰਚ ਦਿਓ</string>
-  <string name="gallery_permission_text">ਚਿੱਤਰ ਸਾਂਝਾ ਕਰਨ ਲਈ, ਮੀਡੀਆ ਤੱਕ ਪਹੁੰਚ ਦਿਓ</string>
-  <string name="description_call_composer_camera">ਇੱਕ ਤਸਵੀਰ ਖਿੱਚੋ</string>
-  <string name="description_call_composer_photo">ਇੱਕ ਫ਼ੋਟੋ ਚੁਣੋ</string>
-  <string name="description_call_composer_message">ਇੱਕ ਸੁਨੇਹਾ ਭੇਜੋ</string>
-  <string name="image_sent_messages">ਫ਼ੋਟੋ &quot;ਸੁਨੇਹੇ&quot; ਐਪ ਰਾਹੀਂ ਭੇਜੀ ਗਈ</string>
-  <string name="message_sent_messages">ਸੁਨੇਹਾ &quot;ਸੁਨੇਹੇ&quot; ਐਪ ਰਾਹੀਂ ਭੇਜਿਆ ਗਿਆ</string>
-  <string name="call_composer_image_uploading">ਚਿੱਤਰ ਭੇਜਿਆ ਜਾ ਰਿਹਾ ਹੈ…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pl/strings.xml b/java/com/android/dialer/callcomposer/res/values-pl/strings.xml
deleted file mode 100644
index 64b2135..0000000
--- a/java/com/android/dialer/callcomposer/res/values-pl/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">To ważne! Odbierz!</string>
-  <string name="want_to_chat">Chcesz porozmawiać na czacie?</string>
-  <string name="quick_question">Szybkie pytanie…</string>
-  <string name="message_composer_custom_message_hint">Wpisz wiadomość</string>
-  <string name="send_and_call">Wyślij i zadzwoń</string>
-  <string name="share_and_call">Udostępnij i zadzwoń</string>
-  <string name="gallery_item_description">zdjęcie – %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">zdjęcie</string>
-  <string name="camera_media_failure">Nie udało się wczytać zdjęcia z aparatu</string>
-  <string name="allow">Zezwól</string>
-  <string name="camera_permission_text">Aby zrobić zdjęcie, zezwól na dostęp do aparatu</string>
-  <string name="gallery_permission_text">Aby udostępnić zdjęcie, zezwól na dostęp do multimediów</string>
-  <string name="description_call_composer_camera">Zrób zdjęcie</string>
-  <string name="description_call_composer_photo">Wybierz zdjęcie</string>
-  <string name="description_call_composer_message">Wyślij wiadomość</string>
-  <string name="image_sent_messages">Zdjęcie zostało wysłane przez Wiadomości</string>
-  <string name="message_sent_messages">Tekst został wysłany przez Wiadomości</string>
-  <string name="call_composer_image_uploading">Wysyłam obraz…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pt-rBR/strings.xml b/java/com/android/dialer/callcomposer/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 1fea485..0000000
--- a/java/com/android/dialer/callcomposer/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">É urgente, atenda!</string>
-  <string name="want_to_chat">Quer bater papo?</string>
-  <string name="quick_question">Pergunta rápida…</string>
-  <string name="message_composer_custom_message_hint">Escreva sua mensagem</string>
-  <string name="send_and_call">Enviar e ligar</string>
-  <string name="share_and_call">Compartilhar e ligar</string>
-  <string name="gallery_item_description">imagem de %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">imagem</string>
-  <string name="camera_media_failure">Falha ao carregar a imagem da câmera</string>
-  <string name="allow">Permitir</string>
-  <string name="camera_permission_text">Para tirar uma foto, permita o acesso à câmera</string>
-  <string name="gallery_permission_text">Para compartilhar uma imagem, permita o acesso à mídia</string>
-  <string name="description_call_composer_camera">Tirar uma foto</string>
-  <string name="description_call_composer_photo">Escolher uma foto</string>
-  <string name="description_call_composer_message">Enviar uma mensagem</string>
-  <string name="image_sent_messages">Foto enviada pelo Mensagens</string>
-  <string name="message_sent_messages">Mensagem enviada pelo Mensagens</string>
-  <string name="call_composer_image_uploading">Enviando imagem...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pt-rPT/strings.xml b/java/com/android/dialer/callcomposer/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 44a8c5b..0000000
--- a/java/com/android/dialer/callcomposer/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Urgente! Atenda!</string>
-  <string name="want_to_chat">Quer conversar no chat?</string>
-  <string name="quick_question">Uma pergunta rápida…</string>
-  <string name="message_composer_custom_message_hint">Escreva uma mensagem personalizada</string>
-  <string name="send_and_call">Enviar e ligar</string>
-  <string name="share_and_call">Partilhar e ligar</string>
-  <string name="gallery_item_description">imagem de %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">imagem</string>
-  <string name="camera_media_failure">Não foi possível carregar a imagem da câmara</string>
-  <string name="allow">Permitir</string>
-  <string name="camera_permission_text">Para tirar uma foto, conceda acesso à Câmara</string>
-  <string name="gallery_permission_text">Para partilhar uma imagem, conceda acesso a Multimédia</string>
-  <string name="description_call_composer_camera">Tirar uma foto</string>
-  <string name="description_call_composer_photo">Selecionar foto</string>
-  <string name="description_call_composer_message">Enviar uma mensagem</string>
-  <string name="image_sent_messages">Foto enviada através da aplicação Mensagens</string>
-  <string name="message_sent_messages">Mensagem enviada através da aplicação Mensagens</string>
-  <string name="call_composer_image_uploading">A enviar imagem…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-pt/strings.xml b/java/com/android/dialer/callcomposer/res/values-pt/strings.xml
deleted file mode 100644
index 1fea485..0000000
--- a/java/com/android/dialer/callcomposer/res/values-pt/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">É urgente, atenda!</string>
-  <string name="want_to_chat">Quer bater papo?</string>
-  <string name="quick_question">Pergunta rápida…</string>
-  <string name="message_composer_custom_message_hint">Escreva sua mensagem</string>
-  <string name="send_and_call">Enviar e ligar</string>
-  <string name="share_and_call">Compartilhar e ligar</string>
-  <string name="gallery_item_description">imagem de %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">imagem</string>
-  <string name="camera_media_failure">Falha ao carregar a imagem da câmera</string>
-  <string name="allow">Permitir</string>
-  <string name="camera_permission_text">Para tirar uma foto, permita o acesso à câmera</string>
-  <string name="gallery_permission_text">Para compartilhar uma imagem, permita o acesso à mídia</string>
-  <string name="description_call_composer_camera">Tirar uma foto</string>
-  <string name="description_call_composer_photo">Escolher uma foto</string>
-  <string name="description_call_composer_message">Enviar uma mensagem</string>
-  <string name="image_sent_messages">Foto enviada pelo Mensagens</string>
-  <string name="message_sent_messages">Mensagem enviada pelo Mensagens</string>
-  <string name="call_composer_image_uploading">Enviando imagem...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ro/strings.xml b/java/com/android/dialer/callcomposer/res/values-ro/strings.xml
deleted file mode 100644
index f1a6598..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ro/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">E urgent! Te rog să răspunzi!</string>
-  <string name="want_to_chat">Vrei să conversezi prin chat?</string>
-  <string name="quick_question">Întrebare rapidă…</string>
-  <string name="message_composer_custom_message_hint">Scrieți mesaj personalizat</string>
-  <string name="send_and_call">Trimiteți și apelați</string>
-  <string name="share_and_call">Trimiteți și apelați</string>
-  <string name="gallery_item_description">imagine din %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">imagine</string>
-  <string name="camera_media_failure">Nu s-a putut încărca imaginea de la camera foto</string>
-  <string name="allow">Permiteți</string>
-  <string name="camera_permission_text">Pentru a fotografia, permiteți accesul la Camera foto</string>
-  <string name="gallery_permission_text">Pentru a trimite o imagine, permiteți accesul la Conținutul media</string>
-  <string name="description_call_composer_camera">Fotografiați</string>
-  <string name="description_call_composer_photo">Alegeți o fotografie</string>
-  <string name="description_call_composer_message">Trimiteți un mesaj</string>
-  <string name="image_sent_messages">Fotografie trimisă prin Messages</string>
-  <string name="message_sent_messages">Mesaj trimis prin Messages</string>
-  <string name="call_composer_image_uploading">Se trimite imaginea…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ru/strings.xml b/java/com/android/dialer/callcomposer/res/values-ru/strings.xml
deleted file mode 100644
index 1dffce2..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ru/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Срочно! Пожалуйста, возьмите трубку!</string>
-  <string name="want_to_chat">Хотите пообщаться в чате?</string>
-  <string name="quick_question">Небольшой вопрос…</string>
-  <string name="message_composer_custom_message_hint">Добавьте свой текст</string>
-  <string name="send_and_call">Отправить и позвонить</string>
-  <string name="share_and_call">Поделиться и позвонить</string>
-  <string name="gallery_item_description">изображение, %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">изображение</string>
-  <string name="camera_media_failure">Не удалось загрузить изображение с камеры</string>
-  <string name="allow">Разрешить</string>
-  <string name="camera_permission_text">Чтобы сделать снимок, предоставьте доступ к камере</string>
-  <string name="gallery_permission_text">Чтобы поделиться изображением, предоставьте доступ к мультимедиа</string>
-  <string name="description_call_composer_camera">Сделать фото</string>
-  <string name="description_call_composer_photo">Выбрать фото</string>
-  <string name="description_call_composer_message">Отправить сообщение</string>
-  <string name="image_sent_messages">Фото отправлено через Android Сообщения</string>
-  <string name="message_sent_messages">Сообщение отправлено через Android Сообщения</string>
-  <string name="call_composer_image_uploading">Отправка изображения…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-si/strings.xml b/java/com/android/dialer/callcomposer/res/values-si/strings.xml
deleted file mode 100644
index 2d7ce24..0000000
--- a/java/com/android/dialer/callcomposer/res/values-si/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">හදිසියි! කරුණාකර ගන්න!</string>
-  <string name="want_to_chat">කතාබස් කිරීමට අවශ්‍යද?</string>
-  <string name="quick_question">ඉක්මන් ප්‍රශ්නය…</string>
-  <string name="message_composer_custom_message_hint">අභිරුචි පණිවිඩයක් ලියන්න</string>
-  <string name="send_and_call">යවන්න සහ අමතන්න</string>
-  <string name="share_and_call">බෙදා ගෙන අමතන්න</string>
-  <string name="gallery_item_description">රූපය %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">රූපය</string>
-  <string name="camera_media_failure">කැමරා රූපය පූරණය කළ නොහැකි විය</string>
-  <string name="allow">ඉඩ දෙන්න</string>
-  <string name="camera_permission_text">ඡායාරූපයක් ගැනීමට, කැමරාවට ප්‍රවේශය දෙන්න</string>
-  <string name="gallery_permission_text">රූපයක් බෙදා ගැනීමට, මාධ්‍යයට ප්‍රවේශය දෙන්න</string>
-  <string name="description_call_composer_camera">පින්තුරයක් ගැනීම</string>
-  <string name="description_call_composer_photo">ඡායාරූපයක් තේරීම</string>
-  <string name="description_call_composer_message">පණිවිඩයක් යැවීම</string>
-  <string name="image_sent_messages">Messages හරහා ඡායාරූපය යවන ලදී</string>
-  <string name="message_sent_messages">Messages හරහා පණිවිඩය යවන ලදී</string>
-  <string name="call_composer_image_uploading">රූපය යවමින්...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sk/strings.xml b/java/com/android/dialer/callcomposer/res/values-sk/strings.xml
deleted file mode 100644
index f6675f1..0000000
--- a/java/com/android/dialer/callcomposer/res/values-sk/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Súrne! Zodvihnite, prosím.</string>
-  <string name="want_to_chat">Chcete četovať?</string>
-  <string name="quick_question">Rýchla otázka…</string>
-  <string name="message_composer_custom_message_hint">Napíšte vlastnú správu</string>
-  <string name="send_and_call">Odoslať a zavolať</string>
-  <string name="share_and_call">Zdieľať a volať</string>
-  <string name="gallery_item_description">obrázok – %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">obrázok</string>
-  <string name="camera_media_failure">Obrázok z fotoaparátu sa nepodarilo načítať</string>
-  <string name="allow">Povoliť</string>
-  <string name="camera_permission_text">Ak chcete fotiť, povoľte prístup k fotoaparátu</string>
-  <string name="gallery_permission_text">Ak chcete zdieľať obrázok, povoľte prístup k médiám</string>
-  <string name="description_call_composer_camera">Odfotiť</string>
-  <string name="description_call_composer_photo">Vybrať fotku</string>
-  <string name="description_call_composer_message">Odoslať správu</string>
-  <string name="image_sent_messages">Fotka bola odoslaná prostredníctvom Správ</string>
-  <string name="message_sent_messages">Správa bola odoslaná prostredníctvom Správ</string>
-  <string name="call_composer_image_uploading">Odosiela sa obrázok…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sl/strings.xml b/java/com/android/dialer/callcomposer/res/values-sl/strings.xml
deleted file mode 100644
index 86d734d..0000000
--- a/java/com/android/dialer/callcomposer/res/values-sl/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Nujno. Prosim, sprejmi.</string>
-  <string name="want_to_chat">Želite klepetati?</string>
-  <string name="quick_question">Kratko vprašanje …</string>
-  <string name="message_composer_custom_message_hint">Napišite sporočilo po meri</string>
-  <string name="send_and_call">Pošlji in pokliči</string>
-  <string name="share_and_call">Klic s skupno rabo</string>
-  <string name="gallery_item_description">slika %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">slika</string>
-  <string name="camera_media_failure">Slike fotoaparata ni bilo mogoče naložiti</string>
-  <string name="allow">Dovoli</string>
-  <string name="camera_permission_text">Če želite posneti fotografijo, omogočite dostop do fotoaparata</string>
-  <string name="gallery_permission_text">Če želite deliti sliko z drugimi, omogočite dostop do predstavnosti</string>
-  <string name="description_call_composer_camera">Posnemi fotografijo</string>
-  <string name="description_call_composer_photo">Izberi fotografijo</string>
-  <string name="description_call_composer_message">Pošlji sporočilo</string>
-  <string name="image_sent_messages">Fotografija je bila poslana prek aplikacije Messages</string>
-  <string name="message_sent_messages">Sporočilo je bila poslano prek aplikacije Messages</string>
-  <string name="call_composer_image_uploading">Pošiljanje slike …</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sq/strings.xml b/java/com/android/dialer/callcomposer/res/values-sq/strings.xml
deleted file mode 100644
index d82a440..0000000
--- a/java/com/android/dialer/callcomposer/res/values-sq/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Urgjente! Përgjigju!</string>
-  <string name="want_to_chat">Dëshiron të bisedosh?</string>
-  <string name="quick_question">Një pyetje e shpejtë…</string>
-  <string name="message_composer_custom_message_hint">Shkruaj mesazh të person.</string>
-  <string name="send_and_call">Dërgo dhe telefono</string>
-  <string name="share_and_call">Ndaj dhe telefono</string>
-  <string name="gallery_item_description">imazh %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">imazh</string>
-  <string name="camera_media_failure">Imazhi i kamerës nuk mund të ngarkohej</string>
-  <string name="allow">Lejo</string>
-  <string name="camera_permission_text">Për të shkrepur një fotografi, jep qasjen te Kamera</string>
-  <string name="gallery_permission_text">Për të ndarë një imazh, jep qasjen te Media</string>
-  <string name="description_call_composer_camera">Bëj një fotografi</string>
-  <string name="description_call_composer_photo">Zgjidh një fotografi</string>
-  <string name="description_call_composer_message">Dërgo një mesazh</string>
-  <string name="image_sent_messages">Fotografia u dërgua nëpërmjet \"Mesazheve\"</string>
-  <string name="message_sent_messages">Mesazhi u dërgua nëpërmjet \"Mesazheve\"</string>
-  <string name="call_composer_image_uploading">Imazhi po dërgohet...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sr/strings.xml b/java/com/android/dialer/callcomposer/res/values-sr/strings.xml
deleted file mode 100644
index 1280859..0000000
--- a/java/com/android/dialer/callcomposer/res/values-sr/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Хитно је! Јави се!</string>
-  <string name="want_to_chat">Желиш да ћаскаш?</string>
-  <string name="quick_question">Кратко питање…</string>
-  <string name="message_composer_custom_message_hint">Напишите прилагођену поруку</string>
-  <string name="send_and_call">Пошаљи и позови</string>
-  <string name="share_and_call">Дели и позови</string>
-  <string name="gallery_item_description">слика, %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">слика</string>
-  <string name="camera_media_failure">Учитавање слике са камере није успело</string>
-  <string name="allow">Дозволи</string>
-  <string name="camera_permission_text">Одобрите приступ Камери да бисте снимили слику</string>
-  <string name="gallery_permission_text">Одобрите приступ Медијима да бисте делили слику</string>
-  <string name="description_call_composer_camera">Сликајте</string>
-  <string name="description_call_composer_photo">Изаберите слику</string>
-  <string name="description_call_composer_message">Пошаљите поруку</string>
-  <string name="image_sent_messages">Слика је послата преко Messages-а</string>
-  <string name="message_sent_messages">Порука је послата преко Messages-а</string>
-  <string name="call_composer_image_uploading">Шаље се слика…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sv/strings.xml b/java/com/android/dialer/callcomposer/res/values-sv/strings.xml
deleted file mode 100644
index 14f3c4b..0000000
--- a/java/com/android/dialer/callcomposer/res/values-sv/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Viktig! Svara!</string>
-  <string name="want_to_chat">Vill du chatta?</string>
-  <string name="quick_question">Snabb fråga …</string>
-  <string name="message_composer_custom_message_hint">Skriv anpassat meddelande</string>
-  <string name="send_and_call">Skicka och ring</string>
-  <string name="share_and_call">Dela och ring</string>
-  <string name="gallery_item_description">bild den %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">bild</string>
-  <string name="camera_media_failure">Det gick inte att läsa in kamerabild</string>
-  <string name="allow">Tillåt</string>
-  <string name="camera_permission_text">Bevilja åtkomst till Kamera om du vill ta ett foto</string>
-  <string name="gallery_permission_text">Bevilja åtkomst till Media om du vill dela en bild</string>
-  <string name="description_call_composer_camera">Ta en bild</string>
-  <string name="description_call_composer_photo">Välj ett foto</string>
-  <string name="description_call_composer_message">Skicka ett meddelande</string>
-  <string name="image_sent_messages">Fotot har skickats via Messages</string>
-  <string name="message_sent_messages">Meddelandet har skickats via Messages</string>
-  <string name="call_composer_image_uploading">Skickar bild …</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-sw/strings.xml b/java/com/android/dialer/callcomposer/res/values-sw/strings.xml
deleted file mode 100644
index fe7d336..0000000
--- a/java/com/android/dialer/callcomposer/res/values-sw/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Ni muhimu! Chukua simu tafadhali!</string>
-  <string name="want_to_chat">Unataka kupiga gumzo?</string>
-  <string name="quick_question">Hebu nikuulize…</string>
-  <string name="message_composer_custom_message_hint">Andika ujumbe maalum</string>
-  <string name="send_and_call">Tuma na umpigie</string>
-  <string name="share_and_call">Shiriki na upige simu</string>
-  <string name="gallery_item_description">picha %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">picha</string>
-  <string name="camera_media_failure">Imeshindwa kupakia picha ya kamera</string>
-  <string name="allow">Ruhusu</string>
-  <string name="camera_permission_text">Ruhusu programu ifikie Kamera ili uweze kupiga picha</string>
-  <string name="gallery_permission_text">Ruhusu programu ifikie hifadhi ili uweze kushiriki picha</string>
-  <string name="description_call_composer_camera">Piga picha</string>
-  <string name="description_call_composer_photo">Chagua picha</string>
-  <string name="description_call_composer_message">Tuma ujumbe</string>
-  <string name="image_sent_messages">Picha imetumwa kupitia Programu ya Messages</string>
-  <string name="message_sent_messages">Ujumbe umetumwa kupitia Programu ya Messages</string>
-  <string name="call_composer_image_uploading">Inatuma picha…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ta/strings.xml b/java/com/android/dialer/callcomposer/res/values-ta/strings.xml
deleted file mode 100644
index ae90e45..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ta/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">அவசரம்! அழைப்பை எடுக்கவும்!</string>
-  <string name="want_to_chat">அரட்டை அடிக்க வேண்டுமா?</string>
-  <string name="quick_question">விரைவுக் கேள்வி…</string>
-  <string name="message_composer_custom_message_hint">தனிப்பயன் செய்தியை எழுதவும்</string>
-  <string name="send_and_call">அனுப்பி, அழை</string>
-  <string name="share_and_call">பகிர்ந்து அழை</string>
-  <string name="gallery_item_description">படம், %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">படம்</string>
-  <string name="camera_media_failure">கேமரா படத்தை ஏற்ற முடியவில்லை</string>
-  <string name="allow">அனுமதி</string>
-  <string name="camera_permission_text">படமெடுக்க, கேமராவிற்கு அணுகல் வழங்கவும்</string>
-  <string name="gallery_permission_text">படத்தைப் பகிர, மீடியாவிற்கு அணுகல் வழங்கவும்</string>
-  <string name="description_call_composer_camera">படமெடுக்கவும்</string>
-  <string name="description_call_composer_photo">புகைப்படத்தைத் தேர்வு செய்யும்</string>
-  <string name="description_call_composer_message">செய்தியை அனுப்பும்</string>
-  <string name="image_sent_messages">மெசேஜஸ் மூலம் படம் அனுப்பப்பட்டது</string>
-  <string name="message_sent_messages">மெசேஜஸ் மூலம் செய்தி அனுப்பப்பட்டது</string>
-  <string name="call_composer_image_uploading">படத்தை அனுப்புகிறது…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-te/strings.xml b/java/com/android/dialer/callcomposer/res/values-te/strings.xml
deleted file mode 100644
index 22282bc..0000000
--- a/java/com/android/dialer/callcomposer/res/values-te/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">అత్యవసరం! దయచేసి కాల్ ఎత్తండి!</string>
-  <string name="want_to_chat">చాట్ చేయాలనుకుంటున్నారా?</string>
-  <string name="quick_question">త్వరిత ప్రశ్న…</string>
-  <string name="message_composer_custom_message_hint">అనుకూల సందేశాన్ని వ్రాయండి</string>
-  <string name="send_and_call">పంపి, కాల్ చేయి</string>
-  <string name="share_and_call">భాగస్వా. చేసి, కాల్ చేయి</string>
-  <string name="gallery_item_description">చిత్రం %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">చిత్రం</string>
-  <string name="camera_media_failure">కెమెరా చిత్రాన్ని లోడ్ చేయడం సాధ్యపడలేదు</string>
-  <string name="allow">అనుమతించు</string>
-  <string name="camera_permission_text">ఫోటోను తీయడానికి, కెమెరాకు ప్రాప్యతను అందించండి</string>
-  <string name="gallery_permission_text">చిత్రాన్ని భాగస్వామ్యం చేయడానికి, మీడియాకు ప్రాప్యతను అందించండి</string>
-  <string name="description_call_composer_camera">చిత్రాన్ని తీస్తుంది</string>
-  <string name="description_call_composer_photo">ఫోటోను ఎంచుకోండి</string>
-  <string name="description_call_composer_message">సందేశాన్ని పంపుతుంది</string>
-  <string name="image_sent_messages">సందేశాల అనువర్తనం ద్వారా ఫోటోను పంపాము</string>
-  <string name="message_sent_messages">సందేశాల అనువర్తనం ద్వారా సందేశాన్ని పంపాము</string>
-  <string name="call_composer_image_uploading">చిత్రాన్ని పంపుతోంది…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-th/strings.xml b/java/com/android/dialer/callcomposer/res/values-th/strings.xml
deleted file mode 100644
index 180a7a7..0000000
--- a/java/com/android/dialer/callcomposer/res/values-th/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">โปรดรับสายด่วน!</string>
-  <string name="want_to_chat">ต้องการแชทใช่ไหม</string>
-  <string name="quick_question">ขอถามอะไรหน่อย…</string>
-  <string name="message_composer_custom_message_hint">เขียนข้อความที่กำหนดเอง</string>
-  <string name="send_and_call">ส่งและโทร</string>
-  <string name="share_and_call">แชร์และโทร</string>
-  <string name="gallery_item_description">รูปภาพเมื่อวันที่ %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">รูปภาพ</string>
-  <string name="camera_media_failure">ไม่สามารถโหลดภาพจากกล้องได้</string>
-  <string name="allow">อนุญาต</string>
-  <string name="camera_permission_text">หากต้องการถ่ายภาพ โปรดให้สิทธิ์การเข้าถึงกล้อง</string>
-  <string name="gallery_permission_text">หากต้องการแชร์รูปภาพ โปรดให้สิทธิ์การเข้าถึงสื่อ</string>
-  <string name="description_call_composer_camera">ถ่ายภาพ</string>
-  <string name="description_call_composer_photo">เลือกรูปภาพ</string>
-  <string name="description_call_composer_message">ส่งข้อความ</string>
-  <string name="image_sent_messages">ส่งรูปภาพผ่าน Messages แล้ว</string>
-  <string name="message_sent_messages">ส่งข้อความผ่าน Messages แล้ว</string>
-  <string name="call_composer_image_uploading">กำลังส่งรูปภาพ...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-tl/strings.xml b/java/com/android/dialer/callcomposer/res/values-tl/strings.xml
deleted file mode 100644
index b96f93c..0000000
--- a/java/com/android/dialer/callcomposer/res/values-tl/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Apurahan! Pakisagot!</string>
-  <string name="want_to_chat">Gusto mo bang makipag-chat?</string>
-  <string name="quick_question">Maikling tanong…</string>
-  <string name="message_composer_custom_message_hint">Sumulat ng custom na mensahe</string>
-  <string name="send_and_call">Ipadala at tumawag</string>
-  <string name="share_and_call">Ibahagi at tumawag</string>
-  <string name="gallery_item_description">larawan %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">larawan</string>
-  <string name="camera_media_failure">Hindi mai-load ang larawan ng camera</string>
-  <string name="allow">Payagan</string>
-  <string name="camera_permission_text">Upang kumuha ng larawan, magbigay ng access sa Camera</string>
-  <string name="gallery_permission_text">Upang magbahagi ng imahe, magbigay ng access sa Media</string>
-  <string name="description_call_composer_camera">Kumuha ng larawan</string>
-  <string name="description_call_composer_photo">Pumili ng larawan</string>
-  <string name="description_call_composer_message">Magpadala ng mensahe</string>
-  <string name="image_sent_messages">Larawang ipinadala sa pamamagitan ng Messages</string>
-  <string name="message_sent_messages">Mensaheng ipinadala sa pamamagitan ng Messages</string>
-  <string name="call_composer_image_uploading">Ipinapadala ang larawan…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-tr/strings.xml b/java/com/android/dialer/callcomposer/res/values-tr/strings.xml
deleted file mode 100644
index aabd2ef..0000000
--- a/java/com/android/dialer/callcomposer/res/values-tr/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Acil! Lütfen telefona cevap verin!</string>
-  <string name="want_to_chat">Sohbet etmek mi istiyorsunuz?</string>
-  <string name="quick_question">Kısa soru…</string>
-  <string name="message_composer_custom_message_hint">Özel bir mesaj yazın</string>
-  <string name="send_and_call">Gönder ve telefon et</string>
-  <string name="share_and_call">Paylaş ve telefon et</string>
-  <string name="gallery_item_description">resim %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">resim</string>
-  <string name="camera_media_failure">Kamera görüntüsü yüklenemedi</string>
-  <string name="allow">İzin ver</string>
-  <string name="camera_permission_text">Fotoğraf çekmek için Kamera\'ya erişim izni verin</string>
-  <string name="gallery_permission_text">Resim paylaşmak için Medya\'ya erişim izni verin</string>
-  <string name="description_call_composer_camera">Resim çeker</string>
-  <string name="description_call_composer_photo">Fotoğraf seçilmesini sağlar</string>
-  <string name="description_call_composer_message">Mesaj gönderir</string>
-  <string name="image_sent_messages">Fotoğraf, Mesajlar uygulaması üzerinden gönderildi</string>
-  <string name="message_sent_messages">Mesaj, Mesajlar uygulaması üzerinden gönderildi</string>
-  <string name="call_composer_image_uploading">Resim gönderiliyor…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-uk/strings.xml b/java/com/android/dialer/callcomposer/res/values-uk/strings.xml
deleted file mode 100644
index 9ec82a6..0000000
--- a/java/com/android/dialer/callcomposer/res/values-uk/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Терміново! Візьміть слухавку!</string>
-  <string name="want_to_chat">Хочете поспілкуватися?</string>
-  <string name="quick_question">Швидке запитання…</string>
-  <string name="message_composer_custom_message_hint">Ваше власне повідомлення</string>
-  <string name="send_and_call">Надіслати й зателефонувати</string>
-  <string name="share_and_call">Надіслати й зателефонувати</string>
-  <string name="gallery_item_description">зображення %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">зображення</string>
-  <string name="camera_media_failure">Не вдалося завантажити зображення з камери</string>
-  <string name="allow">Дозволити</string>
-  <string name="camera_permission_text">Щоб сфотографувати, надайте доступ до камери</string>
-  <string name="gallery_permission_text">Щоб поділитися зображенням, надайте доступ до медіа-вмісту</string>
-  <string name="description_call_composer_camera">Зробити знімок</string>
-  <string name="description_call_composer_photo">Вибрати фотографію</string>
-  <string name="description_call_composer_message">Надіслати повідомлення</string>
-  <string name="image_sent_messages">Фотографію надіслано через додаток Повідомлення</string>
-  <string name="message_sent_messages">Текст надіслано через додаток Повідомлення</string>
-  <string name="call_composer_image_uploading">Надсилання зображення…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-ur/strings.xml b/java/com/android/dialer/callcomposer/res/values-ur/strings.xml
deleted file mode 100644
index e075a2d..0000000
--- a/java/com/android/dialer/callcomposer/res/values-ur/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">ارجنٹ! براہ کرم فون اٹھائیں!</string>
-  <string name="want_to_chat">چیٹ کرنا چاہتے ہیں؟</string>
-  <string name="quick_question">فوری سوال…</string>
-  <string name="message_composer_custom_message_hint">ایک حسب ضرورت پیغام لکھیں</string>
-  <string name="send_and_call">بھیجیں اور کال کریں</string>
-  <string name="share_and_call">اشتراک کریں اور کال کریں</string>
-  <string name="gallery_item_description">تصویر %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">تصویر</string>
-  <string name="camera_media_failure">کیمرے کی تصویر لوڈ نہیں ہو سکی</string>
-  <string name="allow">اجازت دیں</string>
-  <string name="camera_permission_text">تصویر لینے کیلئے کیمرا کو رسائی دیں</string>
-  <string name="gallery_permission_text">تصویر کا اشتراک کرنے کیلئے میڈیا تک رسائی دیں</string>
-  <string name="description_call_composer_camera">تصویر لیں</string>
-  <string name="description_call_composer_photo">ایک تصویر چنیں</string>
-  <string name="description_call_composer_message">پیغام بھیجیں</string>
-  <string name="image_sent_messages">تصویر پیغامات کے ذریعے بھیجی گئی</string>
-  <string name="message_sent_messages">پیغام پیغامات کے ذریعے بھیجا گیا</string>
-  <string name="call_composer_image_uploading">تصویر بھیجی جا رہی ہے…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-uz/strings.xml b/java/com/android/dialer/callcomposer/res/values-uz/strings.xml
deleted file mode 100644
index abe2f4f..0000000
--- a/java/com/android/dialer/callcomposer/res/values-uz/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Juda shoshilinch! Iltimos, go‘shakni ko‘taring!</string>
-  <string name="want_to_chat">Chatda suhbatlashasizmi?</string>
-  <string name="quick_question">Bir kichik savol…</string>
-  <string name="message_composer_custom_message_hint">Boshqa xabar yozing</string>
-  <string name="send_and_call">Yuborish va qo‘ng‘iroq qilish</string>
-  <string name="share_and_call">Ulashish va chaqirish</string>
-  <string name="gallery_item_description">tasvir, %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">tasvir</string>
-  <string name="camera_media_failure">Kamera orqali olingan suratni yuklab bo‘lmadi</string>
-  <string name="allow">Ruxsat berish</string>
-  <string name="camera_permission_text">Suratga olish uchun kameraga kirshga ruxsat bering</string>
-  <string name="gallery_permission_text">Rasmni baham ko‘rish uchun media fayllarga kirishga ruxsat bering</string>
-  <string name="description_call_composer_camera">Rasmga olish</string>
-  <string name="description_call_composer_photo">Rasm tanlash</string>
-  <string name="description_call_composer_message">Xabar yuborish</string>
-  <string name="image_sent_messages">Rasm Android Xabarlar orqali yuborildi</string>
-  <string name="message_sent_messages">Xabar Android Xabarlar orqali yuborildi</string>
-  <string name="call_composer_image_uploading">Tasvir yuborilmoqda…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-vi/strings.xml b/java/com/android/dialer/callcomposer/res/values-vi/strings.xml
deleted file mode 100644
index 56e9736..0000000
--- a/java/com/android/dialer/callcomposer/res/values-vi/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Khẩn cấp! Vui lòng chọn!</string>
-  <string name="want_to_chat">Bạn muốn trò chuyện?</string>
-  <string name="quick_question">Câu hỏi nhanh…</string>
-  <string name="message_composer_custom_message_hint">Viết tin nhắn tùy chỉnh</string>
-  <string name="send_and_call">Gửi và gọi</string>
-  <string name="share_and_call">Chia sẻ và gọi</string>
-  <string name="gallery_item_description">hình ảnh %1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">hình ảnh</string>
-  <string name="camera_media_failure">Không thể tải hình ảnh trong máy ảnh</string>
-  <string name="allow">Cho phép</string>
-  <string name="camera_permission_text">Để chụp ảnh, hãy cấp quyền truy cập vào Máy ảnh</string>
-  <string name="gallery_permission_text">Để chia sẻ ảnh, hãy cấp quyền truy cập vào Phương tiện</string>
-  <string name="description_call_composer_camera">Chụp ảnh</string>
-  <string name="description_call_composer_photo">Chọn ảnh</string>
-  <string name="description_call_composer_message">Gửi tin nhắn</string>
-  <string name="image_sent_messages">Đã gửi ảnh qua Messages</string>
-  <string name="message_sent_messages">Đã gửi tin nhắn qua Messages</string>
-  <string name="call_composer_image_uploading">Đang gửi hình ảnh...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-w360dp/values.xml b/java/com/android/dialer/callcomposer/res/values-w360dp/values.xml
deleted file mode 100644
index adff635..0000000
--- a/java/com/android/dialer/callcomposer/res/values-w360dp/values.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <integer name="gallery_composer_grid_view_rows">3</integer>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/values-w500dp/values.xml b/java/com/android/dialer/callcomposer/res/values-w500dp/values.xml
deleted file mode 100644
index 3ec2b35..0000000
--- a/java/com/android/dialer/callcomposer/res/values-w500dp/values.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <integer name="gallery_composer_grid_view_rows">4</integer>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/values-zh-rCN/strings.xml b/java/com/android/dialer/callcomposer/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 09b9597..0000000
--- a/java/com/android/dialer/callcomposer/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">紧急！请接听！</string>
-  <string name="want_to_chat">想要聊天？</string>
-  <string name="quick_question">快速提问…</string>
-  <string name="message_composer_custom_message_hint">自行撰写信息</string>
-  <string name="send_and_call">发送信息并拨打电话</string>
-  <string name="share_and_call">分享并拨打电话</string>
-  <string name="gallery_item_description">图片（%1$tB %1$te %1$tY %1$tl %1$tM %1$tp）</string>
-  <string name="gallery_item_description_no_date">图片</string>
-  <string name="camera_media_failure">无法加载相机图片</string>
-  <string name="allow">允许</string>
-  <string name="camera_permission_text">要拍摄照片，请授予相机使用权限</string>
-  <string name="gallery_permission_text">要分享图片，请授予媒体访问权限</string>
-  <string name="description_call_composer_camera">拍照</string>
-  <string name="description_call_composer_photo">选择一张照片</string>
-  <string name="description_call_composer_message">发送信息</string>
-  <string name="image_sent_messages">已通过“信息”应用发送照片</string>
-  <string name="message_sent_messages">已通过“信息”应用发送短信</string>
-  <string name="call_composer_image_uploading">正在发送图片…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-zh-rHK/strings.xml b/java/com/android/dialer/callcomposer/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 9f88ab0..0000000
--- a/java/com/android/dialer/callcomposer/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">緊急來電，請接起！</string>
-  <string name="want_to_chat">想使用即時通訊？</string>
-  <string name="quick_question">簡短問題…</string>
-  <string name="message_composer_custom_message_hint">撰寫自訂訊息</string>
-  <string name="send_and_call">傳送並致電</string>
-  <string name="share_and_call">分享並通話</string>
-  <string name="gallery_item_description">圖片：%1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">圖片</string>
-  <string name="camera_media_failure">無法載入相機圖片</string>
-  <string name="allow">允許</string>
-  <string name="camera_permission_text">如要拍照，請授予「相機」存取權</string>
-  <string name="gallery_permission_text">如要分享圖片，請授予「媒體」存取權</string>
-  <string name="description_call_composer_camera">拍照</string>
-  <string name="description_call_composer_photo">選擇相片</string>
-  <string name="description_call_composer_message">傳送訊息</string>
-  <string name="image_sent_messages">已透過「訊息」傳送相片</string>
-  <string name="message_sent_messages">已透過「訊息」傳送訊息</string>
-  <string name="call_composer_image_uploading">正在傳送圖片…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-zh-rTW/strings.xml b/java/com/android/dialer/callcomposer/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 9e13aee..0000000
--- a/java/com/android/dialer/callcomposer/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">緊急！請接聽來電！</string>
-  <string name="want_to_chat">想聊聊天嗎？</string>
-  <string name="quick_question">簡單的問題…</string>
-  <string name="message_composer_custom_message_hint">撰寫自訂訊息</string>
-  <string name="send_and_call">傳送並撥號</string>
-  <string name="share_and_call">分享及撥號</string>
-  <string name="gallery_item_description">圖片：%1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">圖片</string>
-  <string name="camera_media_failure">無法載入相機圖片</string>
-  <string name="allow">允許</string>
-  <string name="camera_permission_text">如要拍照，請授予相機存取權</string>
-  <string name="gallery_permission_text">如要分享圖片，請授予媒體存取權</string>
-  <string name="description_call_composer_camera">拍攝相片</string>
-  <string name="description_call_composer_photo">選擇相片</string>
-  <string name="description_call_composer_message">傳送訊息</string>
-  <string name="image_sent_messages">透過訊息應用程式傳送的相片</string>
-  <string name="message_sent_messages">透過訊息應用程式傳送的訊息</string>
-  <string name="call_composer_image_uploading">正在傳送圖片…</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values-zu/strings.xml b/java/com/android/dialer/callcomposer/res/values-zu/strings.xml
deleted file mode 100644
index b4df24f..0000000
--- a/java/com/android/dialer/callcomposer/res/values-zu/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="urgent">Kuyashesha! Sicela ukhethe!</string>
-  <string name="want_to_chat">Ufuna ukuxoxa?</string>
-  <string name="quick_question">Umbuzo osheshayo…</string>
-  <string name="message_composer_custom_message_hint">Bhala umlayezo wangokwezifiso</string>
-  <string name="send_and_call">Thumela ushayele</string>
-  <string name="share_and_call">Yabelana uphinde ushaye</string>
-  <string name="gallery_item_description">isithombe sangomhla ka-%1$tB %1$te %1$tY %1$tl %1$tM %1$tp</string>
-  <string name="gallery_item_description_no_date">isithombe</string>
-  <string name="camera_media_failure">Ayikwazanga ukulayisha isithombe sekhamera</string>
-  <string name="allow">Vumela</string>
-  <string name="camera_permission_text">Ukuze uthathe isithombe, nika ukufinyelela kukhamera</string>
-  <string name="gallery_permission_text">Ukuze wabelane ngesithombe, nika ukufinyelela kumidiya</string>
-  <string name="description_call_composer_camera">Thatha isithombe</string>
-  <string name="description_call_composer_photo">Khetha isithombe</string>
-  <string name="description_call_composer_message">Thumela umlayezo</string>
-  <string name="image_sent_messages">Isithombe sithunyelwe ngemilayezo</string>
-  <string name="message_sent_messages">Umlayezo uthunyelwe ngemilayezo</string>
-  <string name="call_composer_image_uploading">Ithumela isithombe...</string>
-</resources>
diff --git a/java/com/android/dialer/callcomposer/res/values/colors.xml b/java/com/android/dialer/callcomposer/res/values/colors.xml
deleted file mode 100644
index 8393c55..0000000
--- a/java/com/android/dialer/callcomposer/res/values/colors.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <!-- 50% black -->
-  <color name="call_composer_background_color">#7F000000</color>
-  <color name="call_composer_divider">#12000000</color>
-  <color name="compose_and_call_background">#00BC35</color>
-  <color name="gallery_item_image_color">#607D8B</color>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/values/dimens.xml b/java/com/android/dialer/callcomposer/res/values/dimens.xml
deleted file mode 100644
index f4c2c3b..0000000
--- a/java/com/android/dialer/callcomposer/res/values/dimens.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <dimen name="call_composer_view_pager_height">292dp</dimen>
-
-  <!-- Contact bar -->
-  <dimen name="call_composer_contact_photo_border_thickness">2dp</dimen>
-  <dimen name="call_composer_contact_photo_size">112dp</dimen>
-  <dimen name="call_composer_contact_container_margin_top">56dp</dimen>
-  <dimen name="call_composer_contact_container_padding_top">56dp</dimen>
-  <dimen name="call_composer_contact_container_padding_bottom">16dp</dimen>
-  <dimen name="call_composer_name_text_size">28sp</dimen>
-  <dimen name="call_composer_number_text_size">16sp</dimen>
-  <dimen name="call_composer_contact_container_elevation">2dp</dimen>
-
-  <!-- Media bar -->
-  <dimen name="call_composer_media_actions_width">80dp</dimen>
-  <dimen name="call_composer_media_bar_height">48dp</dimen>
-
-  <!-- Send and Call button -->
-  <dimen name="send_and_call_text_size">16sp</dimen>
-  <dimen name="send_and_call_drawable_padding">4dp</dimen>
-
-  <!-- Message Composer -->
-  <dimen name="message_composer_item_padding">16dp</dimen>
-  <dimen name="message_compose_item_text_size">16sp</dimen>
-  <dimen name="message_compose_remaining_char_text_size">12sp</dimen>
-  <dimen name="message_composer_divider_height">1dp</dimen>
-  <integer name="call_composer_message_limit">60</integer>
-
-  <!-- Gallery Composer -->
-  <dimen name="gallery_item_selected_padding">6dp</dimen>
-  <dimen name="gallery_item_padding">3dp</dimen>
-  <dimen name="gallery_check_size">48dp</dimen>
-  <dimen name="gallery_item_corner_radius">2dp</dimen>
-
-  <!-- Permissions view -->
-  <dimen name="permission_image_size">72dp</dimen>
-  <dimen name="allow_permission_text_size">16sp</dimen>
-  <dimen name="permission_item_margin">8dp</dimen>
-  <dimen name="permission_allow_padding">16dp</dimen>
-  <dimen name="min_touch_target_size">48dp</dimen>
-
-  <dimen name="privacy_toast_y_offset">108dp</dimen>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/values/strings.xml b/java/com/android/dialer/callcomposer/res/values/strings.xml
deleted file mode 100644
index f01e908..0000000
--- a/java/com/android/dialer/callcomposer/res/values/strings.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <!-- A default message to send with a phone call. [CHAR LIMIT=27] -->
-  <string name="urgent">Urgent! Please pick up!</string>
-  <!-- A default message to send with a phone call. [CHAR LIMIT=27] -->
-  <string name="want_to_chat">Want to chat?</string>
-  <!-- A default message to send with a phone call. [CHAR LIMIT=27] -->
-  <string name="quick_question">Quick question…</string>
-  <!-- Hint in a text field to compose a custom message to send with a phone call [CHAR LIMIT=27] -->
-  <string name="message_composer_custom_message_hint">Write a custom message</string>
-  <!-- Text for a button to make a phone call combined with a text message [CHAR LIMIT=26] -->
-  <string name="send_and_call">Send and call</string>
-  <!-- Text for a button to make a phone call combined with a picture or other media [CHAR LIMIT=26] -->
-  <string name="share_and_call">Share and call</string>
-  <!-- Accessibility description for each image in the gallery. For example, "image January 17 2015 1 59 pm". -->
-  <string name="gallery_item_description">image <xliff:g id="date">%1$tB %1$te %1$tY %1$tl %1$tM %1$tp</xliff:g></string>
-  <!-- Accessibility description for each image in the gallery when no date is present. -->
-  <string name="gallery_item_description_no_date">image</string>
-  <!-- Error toast message shown when a camera image failed to attach to the message -->
-  <string name="camera_media_failure">Couldn\'t load camera image</string>
-  <!-- Text for a button to ask for device permissions -->
-  <string name="allow">Allow</string>
-  <!-- Text presented to the user explaining that we need Camera permission to take photos -->
-  <string name="camera_permission_text">To take a photo, give access to Camera</string>
-  <!-- Text presented to the user explaining that we need device storage permission to view photos -->
-  <string name="gallery_permission_text">To share an image, give access to Media</string>
-  <!-- Content description of button to show ui for taking a photo -->
-  <string name="description_call_composer_camera">Take a picture</string>
-  <!-- Content description of button to show ui for selecting a photo from the user's gallery -->
-  <string name="description_call_composer_photo">Choose a photo</string>
-  <!-- Content description of button to show ui for sending a message -->
-  <string name="description_call_composer_message">Send a message</string>
-  <!-- When a user makes a call with a photo attached, we send the photo through the app "Messages".
-    This string is shown in a toast for privacy reasons. -->
-  <string name="image_sent_messages">Photo sent via Messages</string>
-  <!-- When a user makes a call with text attached, we send the text through the app "Messages".
-    This string is shown in a toast for privacy reasons. -->
-  <string name="message_sent_messages">Message sent via Messages</string>
-  <!-- When a user places a call with an image attached, we show them the in call screen and
-      display this string "Image uploading..." to let them know why the call hasn't started. -->
-  <string name="call_composer_image_uploading">Sending image\u2026</string>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/values/styles.xml b/java/com/android/dialer/callcomposer/res/values/styles.xml
deleted file mode 100644
index cc0cc90..0000000
--- a/java/com/android/dialer/callcomposer/res/values/styles.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <style name="Theme.AppCompat.CallComposer" parent="Dialer.ThemeBase.NoActionBar">
-    <item name="android:windowBackground">@android:color/transparent</item>
-    <item name="android:colorBackgroundCacheHint">@null</item>
-    <item name="android:windowFrame">@null</item>
-    <item name="android:windowContentOverlay">@null</item>
-    <item name="android:windowAnimationStyle">@null</item>
-    <item name="android:windowIsFloating">false</item>
-    <item name="android:windowIsTranslucent">true</item>
-    <item name="android:windowNoTitle">true</item>
-    <item name="android:listViewStyle">@style/ListViewStyle</item>
-    <!-- We need to use a light ripple behind ActionBar items in order for them to
-         be visible when using some of the darker ActionBar tints -->
-    <item name="android:actionBarItemBackground">@drawable/item_background_material_borderless_dark</item>
-  </style>
-
-  <style name="message_composer_textview" parent="Dialer.TextAppearance.Primary">
-    <item name="android:paddingStart">@dimen/message_composer_item_padding</item>
-    <item name="android:paddingEnd">@dimen/message_composer_item_padding</item>
-    <item name="android:background">?android:attr/selectableItemBackground</item>
-    <item name="android:gravity">center_vertical</item>
-  </style>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/res/values/values.xml b/java/com/android/dialer/callcomposer/res/values/values.xml
deleted file mode 100644
index 39b8e40..0000000
--- a/java/com/android/dialer/callcomposer/res/values/values.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <integer name="gallery_composer_grid_view_rows">2</integer>
-  <bool name="show_toolbar">false</bool>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/callcomposer/util/BitmapResizer.java b/java/com/android/dialer/callcomposer/util/BitmapResizer.java
deleted file mode 100644
index 84ada51..0000000
--- a/java/com/android/dialer/callcomposer/util/BitmapResizer.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.callcomposer.util;
-
-import android.graphics.Bitmap;
-import android.graphics.Matrix;
-import android.support.annotation.VisibleForTesting;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-
-/** Utility class for resizing images before sending them as enriched call attachments. */
-public final class BitmapResizer {
-  @VisibleForTesting static final int MAX_OUTPUT_RESOLUTION = 640;
-
-  /**
-   * Returns a bitmap that is a resized version of the parameter image. The image will only be
-   * resized down and sized to be appropriate for an enriched call.
-   *
-   * @param image to be resized
-   * @param rotation degrees to rotate the image clockwise
-   * @return resized image
-   */
-  public static Bitmap resizeForEnrichedCalling(Bitmap image, int rotation) {
-    Assert.isWorkerThread();
-
-    int width = image.getWidth();
-    int height = image.getHeight();
-
-    Matrix matrix = new Matrix();
-    matrix.postRotate(rotation);
-
-    LogUtil.i(
-        "BitmapResizer.resizeForEnrichedCalling", "starting height: %d, width: %d", height, width);
-
-    if (width <= MAX_OUTPUT_RESOLUTION && height <= MAX_OUTPUT_RESOLUTION) {
-      LogUtil.i("BitmapResizer.resizeForEnrichedCalling", "no resizing needed");
-      return Bitmap.createBitmap(image, 0, 0, width, height, matrix, true);
-    }
-
-    float ratio = 1;
-    if (width > height) {
-      // landscape
-      ratio = MAX_OUTPUT_RESOLUTION / (float) width;
-    } else {
-      // portrait & square
-      ratio = MAX_OUTPUT_RESOLUTION / (float) height;
-    }
-
-    LogUtil.i(
-        "BitmapResizer.resizeForEnrichedCalling",
-        "ending height: %f, width: %f",
-        height * ratio,
-        width * ratio);
-
-    matrix.postScale(ratio, ratio);
-    return Bitmap.createBitmap(image, 0, 0, width, height, matrix, true);
-  }
-}
diff --git a/java/com/android/dialer/calldetails/AndroidManifest.xml b/java/com/android/dialer/calldetails/AndroidManifest.xml
deleted file mode 100644
index cea106a..0000000
--- a/java/com/android/dialer/calldetails/AndroidManifest.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.calldetails">
-  <application>
-    <activity
-      android:label="@string/call_details"
-      android:exported="false"
-      android:name="com.android.dialer.calldetails.OldCallDetailsActivity">
-    </activity>
-    <activity
-        android:label="@string/call_details"
-        android:exported="false"
-        android:name="com.android.dialer.calldetails.CallDetailsActivity">
-    </activity>
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/calldetails/CallDetailsActivity.java b/java/com/android/dialer/calldetails/CallDetailsActivity.java
index 36b8308..5225e9a 100644
--- a/java/com/android/dialer/calldetails/CallDetailsActivity.java
+++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,20 +17,22 @@
 
 package com.android.dialer.calldetails;
 
-import android.app.LoaderManager.LoaderCallbacks;
 import android.content.Context;
 import android.content.Intent;
-import android.content.Loader;
 import android.database.Cursor;
 import android.os.Bundle;
+
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+
 import com.android.dialer.CoalescedIds;
 import com.android.dialer.calldetails.CallDetailsEntryViewHolder.CallDetailsEntryListener;
 import com.android.dialer.calldetails.CallDetailsFooterViewHolder.DeleteCallDetailsListener;
 import com.android.dialer.calldetails.CallDetailsFooterViewHolder.ReportCallIdListener;
 import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener;
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
+import com.android.dialer.callrecord.CallRecordingDataStore;
 import com.android.dialer.common.Assert;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.protos.ProtoParsers;
 
 /**
@@ -83,8 +86,7 @@
         ProtoParsers.getTrusted(
             intent, EXTRA_HEADER_INFO, CallDetailsHeaderInfo.getDefaultInstance());
 
-    getLoaderManager()
-        .initLoader(
+    LoaderManager.getInstance(this).initLoader(
             CALL_DETAILS_LOADER_ID, /* args = */ null, new CallDetailsLoaderCallbacks(this));
   }
 
@@ -93,7 +95,8 @@
       CallDetailsEntryListener callDetailsEntryListener,
       CallDetailsHeaderListener callDetailsHeaderListener,
       ReportCallIdListener reportCallIdListener,
-      DeleteCallDetailsListener deleteCallDetailsListener) {
+      DeleteCallDetailsListener deleteCallDetailsListener,
+      CallRecordingDataStore callRecordingDataStore) {
     return new CallDetailsAdapter(
         this,
         headerInfo,
@@ -101,7 +104,8 @@
         callDetailsEntryListener,
         callDetailsHeaderListener,
         reportCallIdListener,
-        deleteCallDetailsListener);
+        deleteCallDetailsListener,
+        callRecordingDataStore);
   }
 
   @Override
@@ -110,10 +114,11 @@
   }
 
   /**
-   * {@link LoaderCallbacks} for {@link CallDetailsCursorLoader}, which loads call detail entries
-   * from {@link AnnotatedCallLog}.
+   * {@link LoaderManager.LoaderCallbacks} for {@link CallDetailsCursorLoader}, which loads call
+   * detail entries from {@link AnnotatedCallLog}.
    */
-  private static final class CallDetailsLoaderCallbacks implements LoaderCallbacks<Cursor> {
+  private static final class CallDetailsLoaderCallbacks implements
+          LoaderManager.LoaderCallbacks<Cursor> {
     private final CallDetailsActivity activity;
 
     CallDetailsLoaderCallbacks(CallDetailsActivity callDetailsActivity) {
@@ -138,9 +143,6 @@
 
     private void updateCallDetailsEntries(CallDetailsEntries newEntries) {
       activity.setCallDetailsEntries(newEntries);
-      EnrichedCallComponent.get(activity)
-          .getEnrichedCallManager()
-          .requestAllHistoricalData(activity.getNumber(), newEntries);
     }
   }
 }
diff --git a/java/com/android/dialer/calldetails/CallDetailsActivityCommon.java b/java/com/android/dialer/calldetails/CallDetailsActivityCommon.java
index a26f322..da5f9ff 100644
--- a/java/com/android/dialer/calldetails/CallDetailsActivityCommon.java
+++ b/java/com/android/dialer/calldetails/CallDetailsActivityCommon.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,42 +19,37 @@
 
 import android.Manifest.permission;
 import android.annotation.SuppressLint;
-import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
-import android.support.annotation.CallSuper;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresPermission;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
 import android.view.View;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresPermission;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.assisteddialing.ui.AssistedDialingSettingActivity;
 import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.callrecord.CallRecordingDataStore;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.FailureListener;
 import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.UiListener;
+import com.android.dialer.common.concurrent.SupportUiListener;
 import com.android.dialer.common.database.Selection;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
 import com.android.dialer.glidephotomanager.PhotoInfo;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.UiAction;
-import com.android.dialer.performancereport.PerformanceReport;
 import com.android.dialer.postcall.PostCall;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.rtt.RttTranscriptActivity;
@@ -64,11 +60,10 @@
 import com.google.i18n.phonenumbers.NumberParseException;
 import com.google.i18n.phonenumbers.PhoneNumberUtil;
 import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Contains common logic shared between {@link OldCallDetailsActivity} and {@link
@@ -77,7 +72,6 @@
 abstract class CallDetailsActivityCommon extends AppCompatActivity {
 
   public static final String EXTRA_PHONE_NUMBER = "phone_number";
-  public static final String EXTRA_HAS_ENRICHED_CALL_DATA = "has_enriched_call_data";
   public static final String EXTRA_CAN_REPORT_CALLER_ID = "can_report_caller_id";
   public static final String EXTRA_CAN_SUPPORT_ASSISTED_DIALING = "can_support_assisted_dialing";
 
@@ -89,13 +83,11 @@
       new DeleteCallDetailsListener(this);
   private final CallDetailsFooterViewHolder.ReportCallIdListener reportCallIdListener =
       new ReportCallIdListener(this);
-  private final EnrichedCallManager.HistoricalDataChangedListener
-      enrichedCallHistoricalDataChangedListener =
-          new EnrichedCallHistoricalDataChangedListener(this);
 
   private CallDetailsAdapterCommon adapter;
   private CallDetailsEntries callDetailsEntries;
-  private UiListener<ImmutableSet<String>> checkRttTranscriptAvailabilityListener;
+  private SupportUiListener<ImmutableSet<String>> checkRttTranscriptAvailabilityListener;
+  private CallRecordingDataStore callRecordingDataStore;
 
   /**
    * Handles the intent that launches {@link OldCallDetailsActivity} or {@link CallDetailsActivity},
@@ -108,7 +100,8 @@
       CallDetailsEntryViewHolder.CallDetailsEntryListener callDetailsEntryListener,
       CallDetailsHeaderViewHolder.CallDetailsHeaderListener callDetailsHeaderListener,
       CallDetailsFooterViewHolder.ReportCallIdListener reportCallIdListener,
-      CallDetailsFooterViewHolder.DeleteCallDetailsListener deleteCallDetailsListener);
+      CallDetailsFooterViewHolder.DeleteCallDetailsListener deleteCallDetailsListener,
+      CallRecordingDataStore callRecordingDataStore);
 
   /** Returns the phone number of the call details. */
   protected abstract String getNumber();
@@ -121,38 +114,27 @@
     setContentView(R.layout.call_details_activity);
     Toolbar toolbar = findViewById(R.id.toolbar);
     toolbar.setTitle(R.string.call_details);
-    toolbar.setNavigationOnClickListener(
-        v -> {
-          PerformanceReport.recordClick(UiAction.Type.CLOSE_CALL_DETAIL_WITH_CANCEL_BUTTON);
-          finish();
-        });
+    toolbar.setNavigationOnClickListener(v -> finish());
     checkRttTranscriptAvailabilityListener =
         DialerExecutorComponent.get(this)
-            .createUiListener(getFragmentManager(), "Query RTT transcript availability");
+            .createUiListener(getSupportFragmentManager(), "Query RTT transcript availability");
+    callRecordingDataStore = new CallRecordingDataStore();
     handleIntent(getIntent());
     setupRecyclerViewForEntries();
   }
 
   @Override
   @CallSuper
+  protected void onDestroy() {
+    super.onDestroy();
+    callRecordingDataStore.close();
+  }
+
+  @Override
+  @CallSuper
   protected void onResume() {
     super.onResume();
-
-    // Some calls may not be recorded (eg. from quick contact),
-    // so we should restart recording after these calls. (Recorded call is stopped)
-    PostCall.restartPerformanceRecordingIfARecentCallExist(this);
-    if (!PerformanceReport.isRecording()) {
-      PerformanceReport.startRecording();
-    }
-
     PostCall.promptUserForMessageIfNecessary(this, findViewById(R.id.recycler_view));
-
-    EnrichedCallComponent.get(this)
-        .getEnrichedCallManager()
-        .registerHistoricalDataChangedListener(enrichedCallHistoricalDataChangedListener);
-    EnrichedCallComponent.get(this)
-        .getEnrichedCallManager()
-        .requestAllHistoricalData(getNumber(), callDetailsEntries);
   }
 
   protected void loadRttTranscriptAvailability() {
@@ -184,10 +166,6 @@
   @CallSuper
   protected void onPause() {
     super.onPause();
-
-    EnrichedCallComponent.get(this)
-        .getEnrichedCallManager()
-        .unregisterHistoricalDataChangedListener(enrichedCallHistoricalDataChangedListener);
   }
 
   @Override
@@ -205,25 +183,18 @@
             callDetailsEntryListener,
             callDetailsHeaderListener,
             reportCallIdListener,
-            deleteCallDetailsListener);
+            deleteCallDetailsListener,
+            callRecordingDataStore);
 
     RecyclerView recyclerView = findViewById(R.id.recycler_view);
     recyclerView.setLayoutManager(new LinearLayoutManager(this));
     recyclerView.setAdapter(adapter);
-    PerformanceReport.logOnScrollStateChange(recyclerView);
   }
 
   final CallDetailsAdapterCommon getAdapter() {
     return adapter;
   }
 
-  @Override
-  @CallSuper
-  public void onBackPressed() {
-    PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON);
-    super.onBackPressed();
-  }
-
   @MainThread
   protected final void setCallDetailsEntries(CallDetailsEntries entries) {
     Assert.isMainThread();
@@ -265,6 +236,9 @@
       context
           .getContentResolver()
           .delete(Calls.CONTENT_URI, selection.getSelection(), selection.getSelectionArgs());
+      context
+          .getContentResolver()
+          .notifyChange(Calls.CONTENT_URI, null);
       return null;
     }
 
@@ -311,8 +285,6 @@
 
     @Override
     public void placeImsVideoCall(String phoneNumber) {
-      Logger.get(getActivity())
-          .logImpression(DialerImpression.Type.CALL_DETAILS_IMS_VIDEO_CALL_BACK);
       PreCall.start(
           getActivity(),
           new CallIntentBuilder(phoneNumber, CallInitiationType.Type.CALL_DETAILS)
@@ -320,20 +292,7 @@
     }
 
     @Override
-    public void placeDuoVideoCall(String phoneNumber) {
-      Logger.get(getActivity())
-          .logImpression(DialerImpression.Type.CALL_DETAILS_LIGHTBRINGER_CALL_BACK);
-      PreCall.start(
-          getActivity(),
-          new CallIntentBuilder(phoneNumber, CallInitiationType.Type.CALL_DETAILS)
-              .setIsDuoCall(true)
-              .setIsVideoCall(true));
-    }
-
-    @Override
     public void placeVoiceCall(String phoneNumber, String postDialDigits) {
-      Logger.get(getActivity()).logImpression(DialerImpression.Type.CALL_DETAILS_VOICE_CALL_BACK);
-
       boolean canSupportedAssistedDialing =
           getActivity()
               .getIntent()
@@ -366,7 +325,7 @@
       DialerExecutorComponent.get(getActivity().getApplicationContext())
           .dialerExecutorFactory()
           .createUiTaskBuilder(
-              getActivity().getFragmentManager(),
+              getActivity().getSupportFragmentManager(),
               "CallDetailsActivityCommon.createAssistedDialerNumberParserTask",
               new AssistedDialingNumberParseWorker())
           .onSuccess(successListener)
@@ -406,7 +365,6 @@
     @Override
     public void delete() {
       CallDetailsActivityCommon activity = getActivity();
-      Logger.get(activity).logImpression(DialerImpression.Type.USER_DELETED_CALL_LOG_ITEM);
       DialerExecutorComponent.get(activity)
           .dialerExecutorFactory()
           .createNonUiTaskBuilder(new DeleteCallsWorker(activity))
@@ -414,13 +372,6 @@
               unused -> {
                 Intent data = new Intent();
                 data.putExtra(EXTRA_PHONE_NUMBER, activity.getNumber());
-                for (CallDetailsEntry entry : activity.getCallDetailsEntries().getEntriesList()) {
-                  if (entry.getHistoryResultsCount() > 0) {
-                    data.putExtra(EXTRA_HAS_ENRICHED_CALL_DATA, true);
-                    break;
-                  }
-                }
-
                 activity.setResult(RESULT_OK, data);
                 activity.finish();
               })
@@ -435,16 +386,16 @@
 
   private static final class ReportCallIdListener
       implements CallDetailsFooterViewHolder.ReportCallIdListener {
-    private final WeakReference<Activity> activityWeakReference;
+    private final WeakReference<AppCompatActivity> activityWeakReference;
 
-    ReportCallIdListener(Activity activity) {
+    ReportCallIdListener(AppCompatActivity activity) {
       this.activityWeakReference = new WeakReference<>(activity);
     }
 
     @Override
     public void reportCallId(String number) {
       ReportDialogFragment.newInstance(number)
-          .show(getActivity().getFragmentManager(), null /* tag */);
+          .show(getActivity().getSupportFragmentManager(), null /* tag */);
     }
 
     @Override
@@ -452,72 +403,8 @@
       return getActivity().getIntent().getExtras().getBoolean(EXTRA_CAN_REPORT_CALLER_ID, false);
     }
 
-    private Activity getActivity() {
+    private AppCompatActivity getActivity() {
       return Preconditions.checkNotNull(activityWeakReference.get());
     }
   }
-
-  private static final class EnrichedCallHistoricalDataChangedListener
-      implements EnrichedCallManager.HistoricalDataChangedListener {
-    private final WeakReference<CallDetailsActivityCommon> activityWeakReference;
-
-    EnrichedCallHistoricalDataChangedListener(CallDetailsActivityCommon activity) {
-      this.activityWeakReference = new WeakReference<>(activity);
-    }
-
-    @Override
-    public void onHistoricalDataChanged() {
-      CallDetailsActivityCommon activity = getActivity();
-      Map<CallDetailsEntry, List<HistoryResult>> mappedResults =
-          getAllHistoricalData(activity.getNumber(), activity.callDetailsEntries);
-
-      activity.setCallDetailsEntries(
-          generateAndMapNewCallDetailsEntriesHistoryResults(
-              activity.getNumber(), activity.callDetailsEntries, mappedResults));
-    }
-
-    private CallDetailsActivityCommon getActivity() {
-      return Preconditions.checkNotNull(activityWeakReference.get());
-    }
-
-    @NonNull
-    private Map<CallDetailsEntry, List<HistoryResult>> getAllHistoricalData(
-        @Nullable String number, @NonNull CallDetailsEntries entries) {
-      if (number == null) {
-        return Collections.emptyMap();
-      }
-
-      Map<CallDetailsEntry, List<HistoryResult>> historicalData =
-          EnrichedCallComponent.get(getActivity())
-              .getEnrichedCallManager()
-              .getAllHistoricalData(number, entries);
-      if (historicalData == null) {
-        return Collections.emptyMap();
-      }
-      return historicalData;
-    }
-
-    private static CallDetailsEntries generateAndMapNewCallDetailsEntriesHistoryResults(
-        @Nullable String number,
-        @NonNull CallDetailsEntries callDetailsEntries,
-        @NonNull Map<CallDetailsEntry, List<HistoryResult>> mappedResults) {
-      if (number == null) {
-        return callDetailsEntries;
-      }
-      CallDetailsEntries.Builder mutableCallDetailsEntries = CallDetailsEntries.newBuilder();
-      for (CallDetailsEntry entry : callDetailsEntries.getEntriesList()) {
-        CallDetailsEntry.Builder newEntry = CallDetailsEntry.newBuilder().mergeFrom(entry);
-        List<HistoryResult> results = mappedResults.get(entry);
-        if (results != null) {
-          newEntry.addAllHistoryResults(mappedResults.get(entry));
-          LogUtil.v(
-              "CallDetailsActivityCommon.generateAndMapNewCallDetailsEntriesHistoryResults",
-              "mapped %d results",
-              newEntry.getHistoryResultsList().size());
-        }
-        mutableCallDetailsEntries.addEntries(newEntry.build());
-      }
-      return mutableCallDetailsEntries.build();
-    }
-  }
 }
diff --git a/java/com/android/dialer/calldetails/CallDetailsAdapter.java b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
index 40d856f..2e40e26 100644
--- a/java/com/android/dialer/calldetails/CallDetailsAdapter.java
+++ b/java/com/android/dialer/calldetails/CallDetailsAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,13 +17,15 @@
 
 package com.android.dialer.calldetails;
 
-
 import android.content.Context;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
+
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.dialer.calldetails.CallDetailsEntryViewHolder.CallDetailsEntryListener;
 import com.android.dialer.calldetails.CallDetailsFooterViewHolder.DeleteCallDetailsListener;
 import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener;
+import com.android.dialer.callrecord.CallRecordingDataStore;
 import com.android.dialer.glidephotomanager.PhotoInfo;
 
 /**
@@ -43,14 +46,16 @@
       CallDetailsEntryListener callDetailsEntryListener,
       CallDetailsHeaderListener callDetailsHeaderListener,
       CallDetailsFooterViewHolder.ReportCallIdListener reportCallIdListener,
-      DeleteCallDetailsListener deleteCallDetailsListener) {
+      DeleteCallDetailsListener deleteCallDetailsListener,
+      CallRecordingDataStore callRecordingDataStore) {
     super(
         context,
         callDetailsEntries,
         callDetailsEntryListener,
         callDetailsHeaderListener,
         reportCallIdListener,
-        deleteCallDetailsListener);
+        deleteCallDetailsListener,
+        callRecordingDataStore);
     this.headerInfo = calldetailsHeaderInfo;
   }
 
diff --git a/java/com/android/dialer/calldetails/CallDetailsAdapterCommon.java b/java/com/android/dialer/calldetails/CallDetailsAdapterCommon.java
index ec9263f..7777595 100644
--- a/java/com/android/dialer/calldetails/CallDetailsAdapterCommon.java
+++ b/java/com/android/dialer/calldetails/CallDetailsAdapterCommon.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,13 +18,16 @@
 package com.android.dialer.calldetails;
 
 import android.content.Context;
-import android.support.annotation.CallSuper;
-import android.support.annotation.MainThread;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.MainThread;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
+import com.android.dialer.R;
 import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
 import com.android.dialer.calldetails.CallDetailsEntryViewHolder.CallDetailsEntryListener;
 import com.android.dialer.calldetails.CallDetailsFooterViewHolder.DeleteCallDetailsListener;
@@ -32,8 +36,8 @@
 import com.android.dialer.calllogutils.CallTypeHelper;
 import com.android.dialer.calllogutils.CallbackActionHelper;
 import com.android.dialer.calllogutils.CallbackActionHelper.CallbackAction;
+import com.android.dialer.callrecord.CallRecordingDataStore;
 import com.android.dialer.common.Assert;
-import com.android.dialer.duo.DuoComponent;
 import com.android.dialer.glidephotomanager.PhotoInfo;
 
 /**
@@ -51,6 +55,7 @@
   private final ReportCallIdListener reportCallIdListener;
   private final DeleteCallDetailsListener deleteCallDetailsListener;
   private final CallTypeHelper callTypeHelper;
+  private final CallRecordingDataStore callRecordingDataStore;
 
   private CallDetailsEntries callDetailsEntries;
 
@@ -75,14 +80,15 @@
       CallDetailsEntryListener callDetailsEntryListener,
       CallDetailsHeaderListener callDetailsHeaderListener,
       ReportCallIdListener reportCallIdListener,
-      DeleteCallDetailsListener deleteCallDetailsListener) {
+      DeleteCallDetailsListener deleteCallDetailsListener,
+      CallRecordingDataStore callRecordingDataStore) {
     this.callDetailsEntries = callDetailsEntries;
     this.callDetailsEntryListener = callDetailsEntryListener;
     this.callDetailsHeaderListener = callDetailsHeaderListener;
     this.reportCallIdListener = reportCallIdListener;
     this.deleteCallDetailsListener = deleteCallDetailsListener;
-    this.callTypeHelper =
-        new CallTypeHelper(context.getResources(), DuoComponent.get(context).getDuo());
+    this.callRecordingDataStore = callRecordingDataStore;
+    this.callTypeHelper = new CallTypeHelper(context.getResources());
   }
 
   @Override
@@ -123,7 +129,7 @@
           getPhotoInfo(),
           entry,
           callTypeHelper,
-          !entry.getHistoryResultsList().isEmpty() && position != getItemCount() - 2);
+          callRecordingDataStore);
     }
   }
 
@@ -162,7 +168,6 @@
     Assert.checkState(!callDetailsEntries.getEntriesList().isEmpty());
 
     CallDetailsEntry entry = callDetailsEntries.getEntries(0);
-    return CallbackActionHelper.getCallbackAction(
-        getNumber(), entry.getFeatures(), entry.getIsDuoCall());
+    return CallbackActionHelper.getCallbackAction(getNumber(), entry.getFeatures());
   }
 }
diff --git a/java/com/android/dialer/calldetails/CallDetailsCursorLoader.java b/java/com/android/dialer/calldetails/CallDetailsCursorLoader.java
index 9d55b9f..1ebd90a 100644
--- a/java/com/android/dialer/calldetails/CallDetailsCursorLoader.java
+++ b/java/com/android/dialer/calldetails/CallDetailsCursorLoader.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,13 +18,14 @@
 package com.android.dialer.calldetails;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.database.Cursor;
+
+import androidx.loader.content.CursorLoader;
+
 import com.android.dialer.CoalescedIds;
 import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
 import com.android.dialer.common.Assert;
-import com.android.dialer.duo.DuoComponent;
 
 /**
  * A {@link CursorLoader} that loads call detail entries from {@link AnnotatedCallLog} for {@link
@@ -145,7 +147,6 @@
         .setCallMappingId(cursor.getString(CALL_MAPPING_ID));
 
     String phoneAccountComponentName = cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME);
-    entry.setIsDuoCall(DuoComponent.get(context).getDuo().isDuoAccount(phoneAccountComponentName));
 
     return entry.build();
   }
diff --git a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
index 05957ae..3d11178 100644
--- a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,33 +17,45 @@
 
 package com.android.dialer.calldetails;
 
+import android.content.ActivityNotFoundException;
+import android.content.ContentUris;
 import android.content.Context;
+import android.content.Intent;
 import android.net.Uri;
 import android.provider.CallLog.Calls;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.os.BuildCompat;
-import android.support.v7.widget.RecyclerView.ViewHolder;
+import android.provider.MediaStore;
 import android.text.TextUtils;
+import android.text.format.DateFormat;
+import android.view.Menu;
 import android.view.View;
-import android.widget.ImageView;
+import android.webkit.MimeTypeMap;
+import android.widget.PopupMenu;
 import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.ColorInt;
+import androidx.core.content.ContextCompat;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
 import com.android.dialer.calllogutils.CallLogDates;
 import com.android.dialer.calllogutils.CallLogDurations;
 import com.android.dialer.calllogutils.CallTypeHelper;
 import com.android.dialer.calllogutils.CallTypeIconsView;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
-import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult.Type;
+import com.android.dialer.callrecord.CallRecording;
+import com.android.dialer.callrecord.CallRecordingDataStore;
+import com.android.dialer.callrecord.impl.CallRecorderService;
 import com.android.dialer.glidephotomanager.PhotoInfo;
 import com.android.dialer.oem.MotorolaUtils;
-import com.android.dialer.util.DialerUtils;
-import com.android.dialer.util.IntentUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
 
 /** ViewHolder for call entries in {@link OldCallDetailsActivity} or {@link CallDetailsActivity}. */
-public class CallDetailsEntryViewHolder extends ViewHolder {
+public class CallDetailsEntryViewHolder extends RecyclerView.ViewHolder {
 
   /** Listener for the call details header */
   interface CallDetailsEntryListener {
@@ -56,20 +69,8 @@
   private final TextView callTypeText;
   private final TextView callTime;
   private final TextView callDuration;
-
-  private final View multimediaImageContainer;
-  private final View multimediaDetailsContainer;
-  private final View multimediaDivider;
-
-  private final TextView multimediaDetails;
-  private final TextView postCallNote;
   private final TextView rttTranscript;
-
-  private final ImageView multimediaImage;
-
-  // TODO(maxwelb): Display this when location is stored - a bug
-  @SuppressWarnings("unused")
-  private final TextView multimediaAttachmentsNumber;
+  private final TextView playbackButton;
 
   private final Context context;
 
@@ -83,14 +84,7 @@
     callTime = (TextView) container.findViewById(R.id.call_time);
     callDuration = (TextView) container.findViewById(R.id.call_duration);
 
-    multimediaImageContainer = container.findViewById(R.id.multimedia_image_container);
-    multimediaDetailsContainer = container.findViewById(R.id.ec_container);
-    multimediaDivider = container.findViewById(R.id.divider);
-    multimediaDetails = (TextView) container.findViewById(R.id.multimedia_details);
-    postCallNote = (TextView) container.findViewById(R.id.post_call_note);
-    multimediaImage = (ImageView) container.findViewById(R.id.multimedia_image);
-    multimediaAttachmentsNumber =
-        (TextView) container.findViewById(R.id.multimedia_attachments_number);
+    playbackButton = (TextView) container.findViewById(R.id.play_recordings);
     rttTranscript = container.findViewById(R.id.rtt_transcript);
     this.callDetailsEntryListener = callDetailsEntryListener;
   }
@@ -101,16 +95,13 @@
       PhotoInfo photoInfo,
       CallDetailsEntry entry,
       CallTypeHelper callTypeHelper,
-      boolean showMultimediaDivider) {
+      CallRecordingDataStore callRecordingDataStore) {
     int callType = entry.getCallType();
     boolean isVideoCall = (entry.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO;
     boolean isPulledCall =
         (entry.getFeatures() & Calls.FEATURES_PULLED_EXTERNALLY)
             == Calls.FEATURES_PULLED_EXTERNALLY;
-    boolean isDuoCall = entry.getIsDuoCall();
-    boolean isRttCall =
-        BuildCompat.isAtLeastP()
-            && (entry.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT;
+    boolean isRttCall = (entry.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT;
 
     callTime.setTextColor(getColorForCallType(context, callType));
     callTypeIcon.clear();
@@ -120,12 +111,10 @@
         (entry.getFeatures() & Calls.FEATURES_HD_CALL) == Calls.FEATURES_HD_CALL);
     callTypeIcon.setShowWifi(
         MotorolaUtils.shouldShowWifiIconInCallLog(context, entry.getFeatures()));
-    if (BuildCompat.isAtLeastP()) {
-      callTypeIcon.setShowRtt((entry.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT);
-    }
+    callTypeIcon.setShowRtt((entry.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT);
 
     callTypeText.setText(
-        callTypeHelper.getCallTypeText(callType, isVideoCall, isPulledCall, isDuoCall));
+        callTypeHelper.getCallTypeText(callType, isVideoCall, isPulledCall));
     callTime.setText(CallLogDates.formatDate(context, entry.getDate()));
 
     if (CallTypeHelper.isMissedCallType(callType)) {
@@ -139,7 +128,22 @@
           CallLogDurations.formatDurationAndDataUsageA11y(
               context, entry.getDuration(), entry.getDataUsage()));
     }
-    setMultimediaDetails(number, entry, showMultimediaDivider);
+
+    // do this synchronously to prevent recordings from "popping in" after detail item is displayed
+    final List<CallRecording> recordings;
+    if (CallRecorderService.isEnabled(context)) {
+      callRecordingDataStore.open(context); // opens unless already open
+      recordings = callRecordingDataStore.getRecordings(number, entry.getDate());
+    } else {
+      recordings = null;
+    }
+
+    int count = recordings != null ? recordings.size() : 0;
+    playbackButton.setOnClickListener(v -> handleRecordingClick(v, recordings));
+    playbackButton.setText(
+        context.getResources().getQuantityString(R.plurals.play_recordings, count, count));
+    playbackButton.setVisibility(count > 0 ? View.VISIBLE : View.GONE);
+
     if (isRttCall) {
       if (entry.getHasRttTranscript()) {
         rttTranscript.setText(R.string.rtt_transcript_link);
@@ -160,58 +164,44 @@
     }
   }
 
-  private void setMultimediaDetails(String number, CallDetailsEntry entry, boolean showDivider) {
-    multimediaDivider.setVisibility(showDivider ? View.VISIBLE : View.GONE);
-    if (entry.getHistoryResultsList().isEmpty()) {
-      LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "no data, hiding UI");
-      multimediaDetailsContainer.setVisibility(View.GONE);
+  private void handleRecordingClick(View v, List<CallRecording> recordings) {
+    final Context context = v.getContext();
+    if (recordings.size() == 1) {
+      playRecording(context, recordings.get(0));
     } else {
+      PopupMenu menu = new PopupMenu(context, v);
+      String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(),
+          DateFormat.is24HourFormat(context) ? "Hmss" : "hmssa");
+      SimpleDateFormat format = new SimpleDateFormat(pattern);
 
-      HistoryResult historyResult = entry.getHistoryResults(0);
-      multimediaDetailsContainer.setVisibility(View.VISIBLE);
-      multimediaDetailsContainer.setOnClickListener((v) -> startSmsIntent(context, number));
-      multimediaImageContainer.setOnClickListener((v) -> startSmsIntent(context, number));
-      multimediaImageContainer.setClipToOutline(true);
-
-      if (!TextUtils.isEmpty(historyResult.getImageUri())) {
-        LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "setting image");
-        multimediaImageContainer.setVisibility(View.VISIBLE);
-        multimediaImage.setImageURI(Uri.parse(historyResult.getImageUri()));
-        multimediaDetails.setText(
-            isIncoming(historyResult) ? R.string.received_a_photo : R.string.sent_a_photo);
-      } else {
-        LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "no image");
+      for (int i = 0; i < recordings.size(); i++) {
+        final long startTime = recordings.get(i).startRecordingTime;
+        final String formattedDate = format.format(new Date(startTime));
+        menu.getMenu().add(Menu.NONE, i, i, formattedDate);
       }
-
-      // Set text after image to overwrite the received/sent a photo text
-      if (!TextUtils.isEmpty(historyResult.getText())) {
-        LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "showing text");
-        multimediaDetails.setText(
-            context.getString(R.string.message_in_quotes, historyResult.getText()));
-      } else {
-        LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "no text");
-      }
-
-      if (entry.getHistoryResultsList().size() > 1
-          && !TextUtils.isEmpty(entry.getHistoryResults(1).getText())) {
-        LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "showing post call note");
-        postCallNote.setVisibility(View.VISIBLE);
-        postCallNote.setText(
-            context.getString(R.string.message_in_quotes, entry.getHistoryResults(1).getText()));
-        postCallNote.setOnClickListener((v) -> startSmsIntent(context, number));
-      } else {
-        LogUtil.i("CallDetailsEntryViewHolder.setMultimediaDetails", "no post call note");
-      }
+      menu.setOnMenuItemClickListener(item -> {
+        playRecording(context, recordings.get(item.getItemId()));
+        return true;
+      });
+      menu.show();
     }
-  }
+ }
 
-  private void startSmsIntent(Context context, String number) {
-    DialerUtils.startActivityWithErrorToast(context, IntentUtil.getSendSmsIntent(number));
-  }
-
-  private static boolean isIncoming(@NonNull HistoryResult historyResult) {
-    return historyResult.getType() == Type.INCOMING_POST_CALL
-        || historyResult.getType() == Type.INCOMING_CALL_COMPOSER;
+  private void playRecording(Context context, CallRecording recording) {
+    Uri uri = ContentUris.withAppendedId(
+        MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, recording.mediaId);
+    String extension = MimeTypeMap.getFileExtensionFromUrl(recording.fileName);
+    String mime = !TextUtils.isEmpty(extension)
+        ? MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension) : "audio/*";
+    try {
+      Intent intent = new Intent(Intent.ACTION_VIEW)
+          .setDataAndType(uri, mime)
+          .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+      context.startActivity(intent);
+    } catch (ActivityNotFoundException e) {
+      Toast.makeText(context, R.string.call_playback_no_app_found_toast, Toast.LENGTH_LONG)
+          .show();
+    }
   }
 
   private static @ColorInt int getColorForCallType(Context context, int callType) {
diff --git a/java/com/android/dialer/calldetails/CallDetailsFooterViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsFooterViewHolder.java
index d6e6dbe..80e050e 100644
--- a/java/com/android/dialer/calldetails/CallDetailsFooterViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsFooterViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,16 +19,15 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.View.OnClickListener;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.clipboard.ClipboardUtils;
 import com.android.dialer.common.Assert;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.UiAction;
-import com.android.dialer.performancereport.PerformanceReport;
 import com.android.dialer.util.CallUtil;
 import com.android.dialer.util.DialerUtils;
 
@@ -74,16 +74,8 @@
   public void onClick(View view) {
     Context context = view.getContext();
     if (view == copy) {
-      PerformanceReport.recordClick(UiAction.Type.COPY_NUMBER_IN_CALL_DETAIL);
-
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_DETAILS_COPY_NUMBER);
       ClipboardUtils.copyText(context, null, number, true);
     } else if (view == edit) {
-      PerformanceReport.recordClick(UiAction.Type.EDIT_NUMBER_BEFORE_CALL_IN_CALL_DETAIL);
-      // Dialpad will be filled with this number, but we don't want to record it as user action
-      PerformanceReport.setIgnoreActionOnce(UiAction.Type.TEXT_CHANGE_WITH_INPUT);
-
-      Logger.get(context).logImpression(DialerImpression.Type.CALL_DETAILS_EDIT_BEFORE_CALL);
       Intent dialIntent = new Intent(Intent.ACTION_DIAL, CallUtil.getCallUri(number));
       DialerUtils.startActivityWithErrorToast(context, dialIntent);
     } else if (view == reportCallerId) {
diff --git a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
index f678061..d150be4 100644
--- a/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsHeaderViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,18 +18,25 @@
 package com.android.dialer.calldetails;
 
 import android.content.Context;
+import android.content.Intent;
 import android.net.Uri;
-import android.support.v7.widget.RecyclerView;
 import android.telecom.PhoneAccount;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.View.OnClickListener;
+import android.view.View.OnLongClickListener;
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
+import com.android.dialer.app.AccountSelectionActivity;
 import com.android.dialer.calldetails.CallDetailsActivityCommon.AssistedDialingNumberParseWorker;
 import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
+import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.calllogutils.CallbackActionHelper.CallbackAction;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
@@ -38,9 +46,8 @@
 import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.dialercontact.DialerContact;
 import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+import com.android.dialer.util.DialerUtils;
 import com.android.dialer.widget.BidiTextView;
 
 /**
@@ -49,7 +56,7 @@
  * <p>The header contains contact info and the primary callback button.
  */
 public class CallDetailsHeaderViewHolder extends RecyclerView.ViewHolder
-    implements OnClickListener, FailureListener {
+    implements OnClickListener, OnLongClickListener, FailureListener {
 
   private final CallDetailsHeaderListener callDetailsHeaderListener;
   private final ImageView callbackButton;
@@ -86,14 +93,11 @@
         callDetailsHeaderListener::openAssistedDialingSettings);
 
     callbackButton.setOnClickListener(this);
+    callbackButton.setOnLongClickListener(this);
 
     this.number = number;
     this.postDialDigits = postDialDigits;
     this.callDetailsHeaderListener = callDetailsHeaderListener;
-
-    Logger.get(context)
-        .logQuickContactOnTouch(
-            contactPhoto, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CALL_DETAILS, true);
   }
 
   private boolean hasAssistedDialingFeature(Integer features) {
@@ -163,7 +167,7 @@
     numberView.setVisibility(View.GONE);
     numberView.setText(null);
 
-    if (PhoneNumberHelper.isLocalEmergencyNumber(context, contact.getNumber())) {
+    if (PhoneNumberHelper.isEmergencyNumber(context, contact.getNumber())) {
       nameView.setText(context.getResources().getString(R.string.emergency_number));
     } else {
       nameView.setText(contact.getNameOrNumber());
@@ -211,7 +215,6 @@
   private void setCallbackAction(@CallbackAction int callbackAction) {
     this.callbackAction = callbackAction;
     switch (callbackAction) {
-      case CallbackAction.DUO:
       case CallbackAction.IMS_VIDEO:
         callbackButton.setVisibility(View.VISIBLE);
         callbackButton.setImageResource(R.drawable.quantum_ic_videocam_vd_theme_24);
@@ -235,9 +238,6 @@
         case CallbackAction.IMS_VIDEO:
           callDetailsHeaderListener.placeImsVideoCall(number);
           break;
-        case CallbackAction.DUO:
-          callDetailsHeaderListener.placeDuoVideoCall(number);
-          break;
         case CallbackAction.VOICE:
           callDetailsHeaderListener.placeVoiceCall(number, postDialDigits);
           break;
@@ -250,15 +250,25 @@
     }
   }
 
+  @Override
+  public boolean onLongClick(View view) {
+    if (view == callbackButton) {
+      Intent intent = AccountSelectionActivity.createIntent(view.getContext(),
+          number, CallInitiationType.Type.CALL_DETAILS);
+      if (intent != null) {
+        DialerUtils.startActivityWithErrorToast(view.getContext(), intent);
+        return true;
+      }
+    }
+    return false;
+  }
+
   /** Listener for the call details header */
   interface CallDetailsHeaderListener {
 
     /** Places an IMS video call. */
     void placeImsVideoCall(String phoneNumber);
 
-    /** Places a Duo video call. */
-    void placeDuoVideoCall(String phoneNumber);
-
     /** Place a traditional voice call. */
     void placeVoiceCall(String phoneNumber, String postDialDigits);
 
diff --git a/java/com/android/dialer/calldetails/OldCallDetailsActivity.java b/java/com/android/dialer/calldetails/OldCallDetailsActivity.java
index 26217ab..8f5ade1 100644
--- a/java/com/android/dialer/calldetails/OldCallDetailsActivity.java
+++ b/java/com/android/dialer/calldetails/OldCallDetailsActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,10 +19,12 @@
 
 import android.content.Context;
 import android.content.Intent;
+
 import com.android.dialer.calldetails.CallDetailsEntryViewHolder.CallDetailsEntryListener;
 import com.android.dialer.calldetails.CallDetailsFooterViewHolder.DeleteCallDetailsListener;
 import com.android.dialer.calldetails.CallDetailsFooterViewHolder.ReportCallIdListener;
 import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener;
+import com.android.dialer.callrecord.CallRecordingDataStore;
 import com.android.dialer.common.Assert;
 import com.android.dialer.dialercontact.DialerContact;
 import com.android.dialer.protos.ProtoParsers;
@@ -80,7 +83,8 @@
       CallDetailsEntryListener callDetailsEntryListener,
       CallDetailsHeaderListener callDetailsHeaderListener,
       ReportCallIdListener reportCallIdListener,
-      DeleteCallDetailsListener deleteCallDetailsListener) {
+      DeleteCallDetailsListener deleteCallDetailsListener,
+      CallRecordingDataStore callRecordingDataStore) {
     return new OldCallDetailsAdapter(
         /* context = */ this,
         contact,
@@ -88,7 +92,8 @@
         callDetailsEntryListener,
         callDetailsHeaderListener,
         reportCallIdListener,
-        deleteCallDetailsListener);
+        deleteCallDetailsListener,
+        callRecordingDataStore);
   }
 
   @Override
diff --git a/java/com/android/dialer/calldetails/OldCallDetailsAdapter.java b/java/com/android/dialer/calldetails/OldCallDetailsAdapter.java
index 878803c..7fbf502 100644
--- a/java/com/android/dialer/calldetails/OldCallDetailsAdapter.java
+++ b/java/com/android/dialer/calldetails/OldCallDetailsAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,13 +17,15 @@
 
 package com.android.dialer.calldetails;
 
-
 import android.content.Context;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
+
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.dialer.calldetails.CallDetailsEntryViewHolder.CallDetailsEntryListener;
 import com.android.dialer.calldetails.CallDetailsFooterViewHolder.DeleteCallDetailsListener;
 import com.android.dialer.calldetails.CallDetailsHeaderViewHolder.CallDetailsHeaderListener;
+import com.android.dialer.callrecord.CallRecordingDataStore;
 import com.android.dialer.dialercontact.DialerContact;
 import com.android.dialer.glidephotomanager.PhotoInfo;
 import com.android.dialer.lettertile.LetterTileDrawable;
@@ -45,14 +48,16 @@
       CallDetailsEntryListener callDetailsEntryListener,
       CallDetailsHeaderListener callDetailsHeaderListener,
       CallDetailsFooterViewHolder.ReportCallIdListener reportCallIdListener,
-      DeleteCallDetailsListener deleteCallDetailsListener) {
+      DeleteCallDetailsListener deleteCallDetailsListener,
+      CallRecordingDataStore callRecordingDataStore) {
     super(
         context,
         callDetailsEntries,
         callDetailsEntryListener,
         callDetailsHeaderListener,
         reportCallIdListener,
-        deleteCallDetailsListener);
+        deleteCallDetailsListener,
+        callRecordingDataStore);
     this.contact = contact;
   }
 
diff --git a/java/com/android/dialer/calldetails/ReportDialogFragment.java b/java/com/android/dialer/calldetails/ReportDialogFragment.java
index e1c0e9d..1f4bd29 100644
--- a/java/com/android/dialer/calldetails/ReportDialogFragment.java
+++ b/java/com/android/dialer/calldetails/ReportDialogFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,24 +17,25 @@
 
 package com.android.dialer.calldetails;
 
-import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.util.Pair;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.TextView;
 import android.widget.Toast;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.core.util.Pair;
+import androidx.fragment.app.DialogFragment;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService.CachedContactInfo;
 import com.android.dialer.phonenumbercache.PhoneNumberCache;
@@ -93,7 +95,7 @@
   }
 
   private static void onShow(Context context, AlertDialog dialog) {
-    int buttonTextColor = ThemeComponent.get(context).theme().getColorPrimary();
+    int buttonTextColor = ThemeComponent.get(context).theme().getColorAccent();
     dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(buttonTextColor);
     dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(buttonTextColor);
   }
@@ -104,7 +106,7 @@
     SuccessListener<CachedContactInfo> successListener = this::setCachedContactInfo;
     DialerExecutorComponent.get(getContext())
         .dialerExecutorFactory()
-        .createUiTaskBuilder(getFragmentManager(), "lookup_contact_info", worker)
+        .createUiTaskBuilder(getParentFragmentManager(), "lookup_contact_info", worker)
         .onSuccess(successListener)
         .build()
         .executeParallel(number);
@@ -126,7 +128,7 @@
     SuccessListener<Pair<Context, Boolean>> successListener = this::onReportCallerId;
     DialerExecutorComponent.get(getContext())
         .dialerExecutorFactory()
-        .createUiTaskBuilder(getFragmentManager(), "report_caller_id", worker)
+        .createUiTaskBuilder(getParentFragmentManager(), "report_caller_id", worker)
         .onSuccess(successListener)
         .build()
         .executeParallel(getActivity());
@@ -147,10 +149,8 @@
     Context context = output.first;
     boolean wasReport = output.second;
     if (wasReport) {
-      Logger.get(context).logImpression(DialerImpression.Type.CALLER_ID_REPORTED);
       Toast.makeText(context, R.string.report_caller_id_toast, Toast.LENGTH_SHORT).show();
     } else {
-      Logger.get(context).logImpression(DialerImpression.Type.CALLER_ID_REPORT_FAILED);
       Toast.makeText(context, R.string.report_caller_id_failed, Toast.LENGTH_SHORT).show();
     }
   }
diff --git a/java/com/android/dialer/calldetails/proto/call_details_entries.proto b/java/com/android/dialer/calldetails/proto/call_details_entries.proto
index 1ab3af6..bd12b3b 100644
--- a/java/com/android/dialer/calldetails/proto/call_details_entries.proto
+++ b/java/com/android/dialer/calldetails/proto/call_details_entries.proto
@@ -4,8 +4,6 @@
 option java_multiple_files = true;
 
 
-import "java/com/android/dialer/enrichedcall/historyquery/proto/history_result.proto";
-
 package com.android.dialer.calldetails;
 
 message CallDetailsEntries {
@@ -16,9 +14,7 @@
     optional int64 date = 4;
     optional int64 duration = 5;
     optional int64 data_usage = 6;
-    repeated enrichedcall.historyquery.proto.HistoryResult history_results = 7;
-    optional bool is_duo_call = 8;
-    optional bool has_rtt_transcript = 9;
+    optional bool has_rtt_transcript = 7;
     // A unique ID that could be used to map a call log entry to a {@link
     // android.telecom.Call}. This is different from call_id which is id of call
     // log entry.
@@ -26,7 +22,7 @@
     // is same as {@link com.android.telecom.Call#getCreationTimeMillis()}.
     // Starting from Q this will be a call UUID generated by system to associate
     // a call log to a telecom call.
-    optional string call_mapping_id = 10;
+    optional string call_mapping_id = 8;
   }
 
   repeated CallDetailsEntry entries = 1;
diff --git a/java/com/android/dialer/calldetails/res/drawable/multimedia_image_background.xml b/java/com/android/dialer/calldetails/res/drawable/multimedia_image_background.xml
deleted file mode 100644
index 8182e24..0000000
--- a/java/com/android/dialer/calldetails/res/drawable/multimedia_image_background.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-  android:shape="rectangle">
-  <corners android:radius="8dp"/>
-</shape>
diff --git a/java/com/android/dialer/calldetails/res/drawable/recording_playback_button.xml b/java/com/android/dialer/calldetails/res/drawable/recording_playback_button.xml
new file mode 100644
index 0000000..c6fb87f
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/drawable/recording_playback_button.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="48"
+    android:viewportHeight="48">
+
+    <path
+        android:fillColor="@color/call_record_playback_icon_color"
+        android:pathData="M 21,30.75 L 30,24 21,17.25 21,30.75 Z M 24,9 C 15.7125,9 9,15.7125 9,24 9,32.2875 15.7125,39 24,39 32.2875,39 39,32.2875 39,24 39,15.7125 32.2875,9 24,9 Z m 0,27 c -6.615,0 -12,-5.385 -12,-12 0,-6.615 5.385,-12 12,-12 6.615,0 12,5.385 12,12 0,6.615 -5.385,12 -12,12 z" />
+</vector>
+
diff --git a/java/com/android/dialer/calldetails/res/layout/call_details_activity.xml b/java/com/android/dialer/calldetails/res/layout/call_details_activity.xml
index 950867d..bfb818e 100644
--- a/java/com/android/dialer/calldetails/res/layout/call_details_activity.xml
+++ b/java/com/android/dialer/calldetails/res/layout/call_details_activity.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -25,9 +26,9 @@
       android:layout_width="match_parent"
       android:layout_height="wrap_content"/>
 
-  <android.support.v7.widget.RecyclerView
+  <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/recycler_view"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:background="?android:attr/colorBackground"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/java/com/android/dialer/calldetails/res/layout/call_details_entry.xml b/java/com/android/dialer/calldetails/res/layout/call_details_entry.xml
index bfbb4f8..2f8ec9c 100644
--- a/java/com/android/dialer/calldetails/res/layout/call_details_entry.xml
+++ b/java/com/android/dialer/calldetails/res/layout/call_details_entry.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -19,7 +20,8 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:paddingTop="@dimen/call_entry_padding">
+    android:paddingTop="@dimen/call_entry_padding"
+    android:paddingBottom="@dimen/call_entry_bottom_padding">
 
   <com.android.dialer.calllogutils.CallTypeIconsView
       android:id="@+id/call_direction"
@@ -43,7 +45,6 @@
       style="@style/Dialer.TextAppearance.Secondary"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
-      android:layout_marginBottom="@dimen/call_entry_bottom_padding"
       android:layout_marginStart="@dimen/call_entry_text_left_margin"
       android:layout_marginEnd="16dp"
       android:layout_below="@+id/call_type"/>
@@ -56,25 +57,21 @@
       android:layout_marginEnd="@dimen/call_entry_padding"
       android:layout_alignParentEnd="true"/>
 
-  <include
-      android:id="@+id/ec_container"
-      layout="@layout/ec_data_container"
-      android:layout_width="match_parent"
-      android:layout_height="@dimen/ec_container_height"
-      android:layout_below="@+id/call_time"
-      android:visibility="gone"/>
-
   <TextView
-      android:id="@+id/post_call_note"
-      style="@style/Dialer.TextAppearance.Secondary.Ellipsize"
+      android:id="@+id/play_recordings"
       android:layout_width="match_parent"
-      android:layout_height="@dimen/ec_container_height"
-      android:layout_below="@+id/ec_container"
+      android:layout_height="wrap_content"
+      android:layout_below="@id/call_time"
       android:paddingStart="@dimen/call_entry_text_left_margin"
-      android:background="?attr/selectableItemBackground"
+      android:paddingTop="8dp"
+      android:paddingBottom="8dp"
       android:gravity="center_vertical"
-      android:maxLines="2"
-      android:visibility="gone"/>
+      android:drawablePadding="4dp"
+      android:background="?attr/selectableItemBackground"
+      android:visibility="gone"
+      style="@style/Dialer.TextAppearance.Secondary"
+      app:drawableStartCompat="@drawable/recording_playback_button" />
+
   <TextView
       android:id="@+id/rtt_transcript"
       style="@style/Dialer.TextAppearance.Secondary.Ellipsize"
@@ -83,18 +80,7 @@
       android:layout_marginBottom="@dimen/call_entry_bottom_padding"
       android:layout_marginStart="@dimen/call_entry_text_left_margin"
       android:layout_marginEnd="@dimen/call_entry_padding"
-      android:layout_below="@id/post_call_note"
+      android:layout_below="@id/play_recordings"
       android:maxLines="2"
       android:visibility="gone"/>
-
-  <View
-      android:id="@+id/divider"
-      android:layout_width="match_parent"
-      android:layout_height="1dp"
-      android:layout_marginTop="@dimen/ec_divider_top_bottom_margin"
-      android:layout_marginBottom="@dimen/ec_divider_top_bottom_margin"
-      android:layout_marginStart="@dimen/call_entry_text_left_margin"
-      android:layout_below="@id/rtt_transcript"
-      android:background="@color/dialer_divider_line_color"
-      android:visibility="gone"/>
-</RelativeLayout>
\ No newline at end of file
+</RelativeLayout>
diff --git a/java/com/android/dialer/calldetails/res/layout/call_details_footer.xml b/java/com/android/dialer/calldetails/res/layout/call_details_footer.xml
index 0029038..a299a0d 100644
--- a/java/com/android/dialer/calldetails/res/layout/call_details_footer.xml
+++ b/java/com/android/dialer/calldetails/res/layout/call_details_footer.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2015 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,6 +15,7 @@
      limitations under the License.
 -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
   android:id="@+id/footer_container"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
@@ -31,35 +33,37 @@
       style="@style/CallDetailsActionItemStyle"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
-      android:drawableStart="@drawable/quantum_ic_content_copy_grey600_24"
       android:tint="?colorIcon"
-      android:text="@string/call_details_copy_number"/>
+      android:text="@string/call_details_copy_number"
+      app:drawableStartCompat="@drawable/quantum_ic_content_copy_vd_theme_24" />
 
   <TextView
       android:id="@+id/call_detail_action_edit_before_call"
       style="@style/CallDetailsActionItemStyle"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
-      android:drawableStart="@drawable/quantum_ic_edit_grey600_24"
       android:tint="?colorIcon"
-      android:text="@string/call_details_edit_number"/>
+      android:text="@string/call_details_edit_number"
+      app:drawableStartCompat="@drawable/quantum_ic_edit_vd_theme_24"
+      app:drawableTint="?colorIcon" />
 
   <TextView
       android:id="@+id/call_detail_action_report_caller_id"
       style="@style/CallDetailsActionItemStyle"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
-      android:drawableStart="@drawable/quantum_ic_report_grey600_24"
       android:text="@string/call_details_report_call_id"
       android:tint="?colorIcon"
-      android:visibility="gone"/>
+      android:visibility="gone"
+      app:drawableStartCompat="@drawable/quantum_ic_report_vd_theme_24" />
 
   <TextView
       android:id="@+id/call_detail_action_delete"
       style="@style/CallDetailsActionItemStyle"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
-      android:drawableStart="@drawable/quantum_ic_delete_vd_theme_24"
       android:tint="?colorIcon"
-      android:text="@string/delete"/>
+      android:text="@string/delete"
+      app:drawableTint="?colorIcon"
+      app:drawableStartCompat="@drawable/quantum_ic_delete_vd_theme_24" />
 </LinearLayout>
diff --git a/java/com/android/dialer/calldetails/res/layout/contact_container.xml b/java/com/android/dialer/calldetails/res/layout/contact_container.xml
index 4df81f1..787ae70 100755
--- a/java/com/android/dialer/calldetails/res/layout/contact_container.xml
+++ b/java/com/android/dialer/calldetails/res/layout/contact_container.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
   -->
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginTop="@dimen/call_details_top_margin"
@@ -77,8 +79,8 @@
       android:background="?android:attr/selectableItemBackgroundBorderless"
       android:contentDescription="@string/call"
       android:scaleType="center"
-      android:src="@drawable/quantum_ic_call_white_24"
-      android:tint="?colorIcon"/>
+      android:src="@drawable/quantum_ic_call_vd_theme_24"
+      app:tint="?colorIcon" />
 
 
   <RelativeLayout
@@ -97,7 +99,7 @@
         android:layout_marginStart="@dimen/ad_icon_margin_start_offset"
         android:scaleType="fitCenter"
         android:src="@drawable/quantum_ic_language_vd_theme_24"
-        android:tint="?colorIcon"/>
+        app:tint="?colorIcon" />
 
     <TextView
         android:id="@+id/assisted_dialing_text"
@@ -106,8 +108,8 @@
         android:layout_height="wrap_content"
         android:layout_marginStart="@dimen/ad_text_margin_start"
         android:layout_marginEnd="@dimen/ad_end_margin"
-        android:layout_toRightOf="@id/assisted_dialing_globe"/>
+        android:layout_toEndOf="@id/assisted_dialing_globe"/>
 
   </RelativeLayout>
 
-</RelativeLayout>
\ No newline at end of file
+</RelativeLayout>
diff --git a/java/com/android/dialer/calldetails/res/layout/ec_data_container.xml b/java/com/android/dialer/calldetails/res/layout/ec_data_container.xml
deleted file mode 100644
index 18a7c28..0000000
--- a/java/com/android/dialer/calldetails/res/layout/ec_data_container.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/ec_container_height"
-    android:paddingStart="@dimen/call_entry_text_left_margin"
-    android:clickable="true"
-    android:background="?attr/selectableItemBackground">
-
-  <TextView
-      android:id="@+id/multimedia_details"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_centerVertical="true"
-      android:layout_marginStart="1dp"
-      android:maxLines="2"
-      style="@style/Dialer.TextAppearance.Secondary.Ellipsize"/>
-
-  <FrameLayout
-      android:id="@+id/multimedia_image_container"
-      android:layout_width="@dimen/ec_photo_size"
-      android:layout_height="@dimen/ec_photo_size"
-      android:layout_alignParentEnd="true"
-      android:layout_marginEnd="@dimen/call_entry_padding"
-      android:layout_centerVertical="true"
-      android:background="@drawable/multimedia_image_background"
-      android:clickable="true"
-      android:foreground="?attr/selectableItemBackground"
-      android:outlineProvider="background"
-      android:visibility="gone">
-
-  <ImageView
-      android:id="@+id/multimedia_image"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:scaleType="centerCrop"/>
-
-  <TextView
-      android:id="@+id/multimedia_attachments_number"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:textColor="?android:attr/textColorPrimaryInverse"
-      android:textSize="20sp"
-      style="@style/Dialer.TextAppearance.Header2"
-      android:gravity="center"
-      android:visibility="gone"/>
-  </FrameLayout>
-</RelativeLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/calldetails/res/values-af/strings.xml b/java/com/android/dialer/calldetails/res/values-af/strings.xml
index e7d3a1e..8690f28 100644
--- a/java/com/android/dialer/calldetails/res/values-af/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-af/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopieer nommer</string>
   <string name="call_details_edit_number">Wysig nommer voordat jy bel</string>
   <string name="call_details_report_call_id">Gee foutiewe nommer aan</string>
-  <string name="sent_a_photo">Het \'n foto gestuur</string>
-  <string name="received_a_photo">Het \'n foto ontvang</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Gee verkeerde nommer aan</string>
   <string name="report_caller_id_failed">Kon nie nommer aangee nie</string>
   <string name="report_caller_id_toast">Nommer is aangegee</string>
diff --git a/java/com/android/dialer/calldetails/res/values-am/strings.xml b/java/com/android/dialer/calldetails/res/values-am/strings.xml
index 0d26119..acc9da2 100644
--- a/java/com/android/dialer/calldetails/res/values-am/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-am/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">ቁጥር ቅዳ</string>
   <string name="call_details_edit_number">ከመደወል በፊት ቁጥር አርትዕ ያድርጉ</string>
   <string name="call_details_report_call_id">ትክክለኛ ያልሆነ ቁጥርን ሪፓርት አድርግ</string>
-  <string name="sent_a_photo">አንድ ፎቶ ተልኳል</string>
-  <string name="received_a_photo">አንድ ፎቶ ደርሷል</string>
-  <string name="message_in_quotes">«%1$s»</string>
   <string name="report_caller_id_dialog_title">የተሳሳተ ቁጥርን ሪፖርት ያድርጉ</string>
   <string name="report_caller_id_failed">ቁጥሩን ሪፖርት ማድረግ አልተቻለም</string>
   <string name="report_caller_id_toast">ቁጥሩ ሪፖርት ተደርጓል</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ar/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-ar/cm_strings.xml
new file mode 100644
index 0000000..9677181
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-ar/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="zero">تشغيل التسجيلات</item>
+        <item quantity="one">تشغيل التسجيل</item>
+        <item quantity="two">تشغيل التسجيلات</item>
+        <item quantity="few">تشغيل التسجيلات</item>
+        <item quantity="many">تشغيل التسجيلات</item>
+        <item quantity="other">تشغيل التسجيلات</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">تعذر العثور على أي تطبيق لتشغيل التسجيل المحدد.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ar/strings.xml b/java/com/android/dialer/calldetails/res/values-ar/strings.xml
index 03ff6eb..de601df 100644
--- a/java/com/android/dialer/calldetails/res/values-ar/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ar/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">نسخ الرقم</string>
   <string name="call_details_edit_number">تعديل الرقم قبل الاتصال</string>
   <string name="call_details_report_call_id">الإبلاغ عن رقم غير دقيق</string>
-  <string name="sent_a_photo">تم إرسال صورة</string>
-  <string name="received_a_photo">تم تلقي صورة</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">الإبلاغ عن رقم غير صحيح</string>
   <string name="report_caller_id_failed">تعذر الإبلاغ عن الرقم</string>
   <string name="report_caller_id_toast">تم الإبلاغ عن الرقم</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ast-rES/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-ast-rES/cm_strings.xml
new file mode 100644
index 0000000..7edc3be
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-ast-rES/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Reproducir la grabación</item>
+        <item quantity="other">Reproducir les grabaciones</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Nun se pudo atopar nenguna aplicación pa reproducir la grabación seleicionada.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-az/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-az/cm_strings.xml
new file mode 100644
index 0000000..5446387
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-az/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Səsyazmanı oxut</item>
+        <item quantity="other">Səsyazmaları oxut</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Seçilmiş səsyazmanı oxutmaq üçün heç bir tətbiq tapılmadı.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-az/strings.xml b/java/com/android/dialer/calldetails/res/values-az/strings.xml
index 0a6d35c..d02e5b1 100644
--- a/java/com/android/dialer/calldetails/res/values-az/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-az/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Nömrəni kopyalayın</string>
   <string name="call_details_edit_number">Zəng etmədən öncə nömrəyə düzəliş edin</string>
   <string name="call_details_report_call_id">Qeyri-dəqiq nömrəni bildirin</string>
-  <string name="sent_a_photo">Foto göndərildi</string>
-  <string name="received_a_photo">Foto alındı</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Yanlış nömrəni bildirin</string>
   <string name="report_caller_id_failed">Nömrəni bildirmək mümkün olmadı</string>
   <string name="report_caller_id_toast">Nömrə bildirildi</string>
diff --git a/java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml
index ccc1170..7e3fab1 100644
--- a/java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-b+sr+Latn/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopiraj broj</string>
   <string name="call_details_edit_number">Izmenite broj pre poziva</string>
   <string name="call_details_report_call_id">Prijavi netačan broj</string>
-  <string name="sent_a_photo">Slika je poslata</string>
-  <string name="received_a_photo">Slika je primljena</string>
-  <string name="message_in_quotes">„%1$s“</string>
   <string name="report_caller_id_dialog_title">Prijavite netačan broj</string>
   <string name="report_caller_id_failed">Prijavljivanje broja nije uspelo</string>
   <string name="report_caller_id_toast">Broj je prijavljen</string>
diff --git a/java/com/android/dialer/calldetails/res/values-be/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-be/cm_strings.xml
new file mode 100644
index 0000000..cb4027b
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-be/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Прайграць запіс</item>
+        <item quantity="few">Прайграць запісы</item>
+        <item quantity="many">Прайграць запісы</item>
+        <item quantity="other">Прайграць запісы</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Не атрымалася знайсці праграму для прайгравання выбранага запісу.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-be/strings.xml b/java/com/android/dialer/calldetails/res/values-be/strings.xml
index fa11b02..a84ee0f 100644
--- a/java/com/android/dialer/calldetails/res/values-be/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-be/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Скапіраваць нумар</string>
   <string name="call_details_edit_number">Рэдагаваць нумар перад выклікам</string>
   <string name="call_details_report_call_id">Падаць заяву аб недакладным нумары</string>
-  <string name="sent_a_photo">Адпраўлена фота</string>
-  <string name="received_a_photo">Атрымана фота</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Падаць заяву аб няправільным нумары</string>
   <string name="report_caller_id_failed">Не ўдалося падаць заяву аб нумары</string>
   <string name="report_caller_id_toast">Аб нумары пададзена заява</string>
diff --git a/java/com/android/dialer/calldetails/res/values-bg/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-bg/cm_strings.xml
new file mode 100644
index 0000000..8d50137
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-bg/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Възпроизвеждане на запис</item>
+        <item quantity="other">Възпроизвеждане на записи</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Не е намерено приложение за възпроизвеждане.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-bg/strings.xml b/java/com/android/dialer/calldetails/res/values-bg/strings.xml
index 9dfb62e..682ddff 100644
--- a/java/com/android/dialer/calldetails/res/values-bg/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-bg/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Копиране на номера</string>
   <string name="call_details_edit_number">Редактиране на номера преди обаждане</string>
   <string name="call_details_report_call_id">Подаване на сигнал за неточен номер</string>
-  <string name="sent_a_photo">Изпратена бе снимка</string>
-  <string name="received_a_photo">Получена бе снимка</string>
-  <string name="message_in_quotes">„%1$s“</string>
   <string name="report_caller_id_dialog_title">Подаване на сигнал за неправилен номер</string>
   <string name="report_caller_id_failed">Сигналът за номера не можа да бъде подаден</string>
   <string name="report_caller_id_toast">За номера бе подаден сигнал</string>
diff --git a/java/com/android/dialer/calldetails/res/values-bn/strings.xml b/java/com/android/dialer/calldetails/res/values-bn/strings.xml
index 3702238..63fde71 100644
--- a/java/com/android/dialer/calldetails/res/values-bn/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-bn/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">নম্বর কপি করুন</string>
   <string name="call_details_edit_number">কল করার আগে নম্বর সম্পাদন করুন</string>
   <string name="call_details_report_call_id">ভুল নম্বর প্রতিবেদন করুন</string>
-  <string name="sent_a_photo">একটি ফটো পাঠিয়েছেন</string>
-  <string name="received_a_photo">একটি ফটো পেয়েছেন</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">ভুল নম্বর প্রতিবেদন করুন</string>
   <string name="report_caller_id_failed">নম্বরটির প্রতিবেদন করা যায়নি</string>
   <string name="report_caller_id_toast">নম্বরটির প্রতিবেদন করা হয়েছে</string>
diff --git a/java/com/android/dialer/calldetails/res/values-bs/strings.xml b/java/com/android/dialer/calldetails/res/values-bs/strings.xml
index e44ccae..64df9fb 100644
--- a/java/com/android/dialer/calldetails/res/values-bs/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-bs/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopiraj broj</string>
   <string name="call_details_edit_number">Uredi broj prije poziva</string>
   <string name="call_details_report_call_id">Prijavite nevažeći broj</string>
-  <string name="sent_a_photo">Fotografija poslana</string>
-  <string name="received_a_photo">Fotografija primljena</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Prijava pogrešnog broja</string>
   <string name="report_caller_id_failed">Prijava broja nije moguća</string>
   <string name="report_caller_id_toast">Broj je prijavljen</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ca/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-ca/cm_strings.xml
new file mode 100644
index 0000000..2eebf27
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-ca/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Reprodueix l\'enregistrament</item>
+        <item quantity="other">Reprodueix els enregistraments</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">No s\'ha pogut trobar cap aplicació per a la reproducció de l\'enregistrament seleccionat.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ca/strings.xml b/java/com/android/dialer/calldetails/res/values-ca/strings.xml
index d62bff9..c430aa8 100644
--- a/java/com/android/dialer/calldetails/res/values-ca/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ca/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copia el número</string>
   <string name="call_details_edit_number">Edita el número abans de trucar</string>
   <string name="call_details_report_call_id">Informa d\'un número incorrecte</string>
-  <string name="sent_a_photo">S\'ha enviat una foto</string>
-  <string name="received_a_photo">S\'ha rebut una foto</string>
-  <string name="message_in_quotes">%1$s</string>
   <string name="report_caller_id_dialog_title">Informa d\'un número incorrecte</string>
   <string name="report_caller_id_failed">No s\'ha pogut informar del número</string>
   <string name="report_caller_id_toast">S\'ha informat del número</string>
diff --git a/java/com/android/dialer/calldetails/res/values-cs/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-cs/cm_strings.xml
new file mode 100644
index 0000000..3b6b3ea
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-cs/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Přehrát záznam</item>
+        <item quantity="few">Přehrát záznamy</item>
+        <item quantity="many">Přehrát záznamů</item>
+        <item quantity="other">Přehrát záznamů</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Nenalezena žádná aplikace pro přehrávání vybraného záznamu.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-cs/strings.xml b/java/com/android/dialer/calldetails/res/values-cs/strings.xml
index e2e63f4..6958c98 100644
--- a/java/com/android/dialer/calldetails/res/values-cs/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-cs/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopírovat číslo</string>
   <string name="call_details_edit_number">Před voláním upravit číslo</string>
   <string name="call_details_report_call_id">Nahlásit nesprávné číslo</string>
-  <string name="sent_a_photo">Byla poslána fotka</string>
-  <string name="received_a_photo">Byla přijata fotka</string>
-  <string name="message_in_quotes">„%1$s“</string>
   <string name="report_caller_id_dialog_title">Nahlásit nesprávné číslo</string>
   <string name="report_caller_id_failed">Číslo se nepodařilo nahlásit</string>
   <string name="report_caller_id_toast">Číslo bylo nahlášeno</string>
diff --git a/java/com/android/dialer/calldetails/res/values-cy/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-cy/cm_strings.xml
new file mode 100644
index 0000000..813b234
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-cy/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="zero">Chwarae recordiadau</item>
+        <item quantity="one">Chwarae recordiad</item>
+        <item quantity="two">Chwarae recordiadau</item>
+        <item quantity="few">Chwarae recordiadau</item>
+        <item quantity="many">Chwarae recordiadau</item>
+        <item quantity="other">Chwarae recordiadau</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Ni chanfuwyd ap ar gyfer chwarae\'r recordiad dan sylw.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-da/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-da/cm_strings.xml
new file mode 100644
index 0000000..0b1aa9c
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-da/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Afspil optagelse</item>
+        <item quantity="other">Afspil optagelser</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Ingen app kunne findes til afspilning af den valgte optagelse.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-da/strings.xml b/java/com/android/dialer/calldetails/res/values-da/strings.xml
index 86db8cc..387cd22 100644
--- a/java/com/android/dialer/calldetails/res/values-da/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-da/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopiér nummer</string>
   <string name="call_details_edit_number">Rediger nummer før opkald</string>
   <string name="call_details_report_call_id">Rapportér et forkert nummer</string>
-  <string name="sent_a_photo">Der blev sendt et billede</string>
-  <string name="received_a_photo">Der blev modtaget et billede</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Rapportér forkert nummer</string>
   <string name="report_caller_id_failed">Det forkerte nummer kunne ikke rapporteres</string>
   <string name="report_caller_id_toast">Nummeret blev rapporteret</string>
diff --git a/java/com/android/dialer/calldetails/res/values-de/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-de/cm_strings.xml
new file mode 100644
index 0000000..18ffa94
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-de/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Aufzeichnung wiedergeben</item>
+        <item quantity="other">Aufzeichnungen wiedergeben</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Für die Wiedergabe der ausgewählten Aufnahme konnte keine App gefunden werden.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-de/strings.xml b/java/com/android/dialer/calldetails/res/values-de/strings.xml
index 6d667d8..9b531fa 100644
--- a/java/com/android/dialer/calldetails/res/values-de/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-de/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Nummer kopieren</string>
   <string name="call_details_edit_number">Nummer vor Anruf bearbeiten</string>
   <string name="call_details_report_call_id">Falsche Nummer melden</string>
-  <string name="sent_a_photo">Hat ein Foto gesendet</string>
-  <string name="received_a_photo">Hat ein Foto empfangen</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Falsche Nummer melden</string>
   <string name="report_caller_id_failed">Nummer konnte nicht gemeldet werden</string>
   <string name="report_caller_id_toast">Nummer gemeldet</string>
diff --git a/java/com/android/dialer/calldetails/res/values-el/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-el/cm_strings.xml
new file mode 100644
index 0000000..484404b
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-el/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Αναπαραγωγή καταγραφής</item>
+        <item quantity="other">Αναπαραγωγή καταγραφών</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Δεν βρέθηκε εφαρμογή για αναπαραγωγή της επιλεγμένης καταγραφής.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-el/strings.xml b/java/com/android/dialer/calldetails/res/values-el/strings.xml
index c1703b4..f5390c5 100644
--- a/java/com/android/dialer/calldetails/res/values-el/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-el/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Αντιγραφή αριθμού</string>
   <string name="call_details_edit_number">Επεξεργασία αριθμού πριν από την κλήση</string>
   <string name="call_details_report_call_id">Αναφορά ανακριβούς αριθμού</string>
-  <string name="sent_a_photo">Έγινε αποστολή φωτογραφίας</string>
-  <string name="received_a_photo">Έγινε λήψη φωτογραφίας</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Αναφορά λανθασμένου αριθμού</string>
   <string name="report_caller_id_failed">Δεν ήταν δυνατή η αναφορά του αριθμού</string>
   <string name="report_caller_id_toast">Υποβλήθηκε αναφορά για τον αριθμό</string>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rAU/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-en-rAU/cm_strings.xml
new file mode 100644
index 0000000..076a494
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-en-rAU/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Play recording</item>
+        <item quantity="other">Play recordings</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">No app could be found for playback of the selected recording.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml b/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml
index 2d7c8d9..3b27cb6 100644
--- a/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-en-rAU/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copy number</string>
   <string name="call_details_edit_number">Edit number before call</string>
   <string name="call_details_report_call_id">Report inaccurate number</string>
-  <string name="sent_a_photo">Sent a photo</string>
-  <string name="received_a_photo">Received a photo</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Report incorrect number</string>
   <string name="report_caller_id_failed">Couldn\'t report number</string>
   <string name="report_caller_id_toast">Number reported</string>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rCA/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-en-rCA/cm_strings.xml
new file mode 100644
index 0000000..076a494
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-en-rCA/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Play recording</item>
+        <item quantity="other">Play recordings</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">No app could be found for playback of the selected recording.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rGB/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-en-rGB/cm_strings.xml
new file mode 100644
index 0000000..076a494
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-en-rGB/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Play recording</item>
+        <item quantity="other">Play recordings</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">No app could be found for playback of the selected recording.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml b/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml
index 2d7c8d9..3b27cb6 100644
--- a/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-en-rGB/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copy number</string>
   <string name="call_details_edit_number">Edit number before call</string>
   <string name="call_details_report_call_id">Report inaccurate number</string>
-  <string name="sent_a_photo">Sent a photo</string>
-  <string name="received_a_photo">Received a photo</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Report incorrect number</string>
   <string name="report_caller_id_failed">Couldn\'t report number</string>
   <string name="report_caller_id_toast">Number reported</string>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rIN/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-en-rIN/cm_strings.xml
new file mode 100644
index 0000000..076a494
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-en-rIN/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Play recording</item>
+        <item quantity="other">Play recordings</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">No app could be found for playback of the selected recording.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml b/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml
index 2d7c8d9..3b27cb6 100644
--- a/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-en-rIN/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copy number</string>
   <string name="call_details_edit_number">Edit number before call</string>
   <string name="call_details_report_call_id">Report inaccurate number</string>
-  <string name="sent_a_photo">Sent a photo</string>
-  <string name="received_a_photo">Received a photo</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Report incorrect number</string>
   <string name="report_caller_id_failed">Couldn\'t report number</string>
   <string name="report_caller_id_toast">Number reported</string>
diff --git a/java/com/android/dialer/calldetails/res/values-es-rUS/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-es-rUS/cm_strings.xml
new file mode 100644
index 0000000..2c6f9ef
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-es-rUS/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Reproducir grabación</item>
+        <item quantity="other">Reproducir grabaciones</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Sin aplicación que pueda reproducir la grabación seleccionada.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml b/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml
index 33be5dc..a0223ea 100644
--- a/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-es-rUS/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copiar número</string>
   <string name="call_details_edit_number">Editar número antes de llamar</string>
   <string name="call_details_report_call_id">Informar número incorrecto</string>
-  <string name="sent_a_photo">Enviaste una foto</string>
-  <string name="received_a_photo">Recibiste una foto</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Informar número incorrecto</string>
   <string name="report_caller_id_failed">No se pudo informar el número.</string>
   <string name="report_caller_id_toast">Número informado</string>
diff --git a/java/com/android/dialer/calldetails/res/values-es/strings.xml b/java/com/android/dialer/calldetails/res/values-es/strings.xml
index 3476a6a..ba26506 100644
--- a/java/com/android/dialer/calldetails/res/values-es/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-es/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copiar número</string>
   <string name="call_details_edit_number">Editar número antes de llamar</string>
   <string name="call_details_report_call_id">Notificar un número incorrecto</string>
-  <string name="sent_a_photo">Se ha enviado una foto</string>
-  <string name="received_a_photo">Se ha recibido una foto</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Notificar un número incorrecto</string>
   <string name="report_caller_id_failed">No se ha podido notificar el número</string>
   <string name="report_caller_id_toast">Número notificado</string>
diff --git a/java/com/android/dialer/calldetails/res/values-et/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-et/cm_strings.xml
new file mode 100644
index 0000000..04441ea
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-et/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Esita salvestus</item>
+        <item quantity="other">Esita salvestused</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Valitud salvestuse taasesitamiseks ei leitud ühtegi rakendust.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-et/strings.xml b/java/com/android/dialer/calldetails/res/values-et/strings.xml
index 96578a6..0bdc950 100644
--- a/java/com/android/dialer/calldetails/res/values-et/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-et/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopeeri number</string>
   <string name="call_details_edit_number">Muuda numbrit enne helistamist</string>
   <string name="call_details_report_call_id">Valest numbrist teavitamine</string>
-  <string name="sent_a_photo">Saatis foto</string>
-  <string name="received_a_photo">Sai foto</string>
-  <string name="message_in_quotes">„%1$s”</string>
   <string name="report_caller_id_dialog_title">Valest numbrist teavitamine</string>
   <string name="report_caller_id_failed">Numbrist ei õnnestunud teavitada</string>
   <string name="report_caller_id_toast">Numbrist teavitati</string>
diff --git a/java/com/android/dialer/calldetails/res/values-eu/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-eu/cm_strings.xml
new file mode 100644
index 0000000..83b3d5b
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-eu/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Jo grabaketa</item>
+        <item quantity="other">Jo grabaketak</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Ezin izan da hautatutako grabaketa erreproduzitzeko aplikaziorik aurkitu.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-eu/strings.xml b/java/com/android/dialer/calldetails/res/values-eu/strings.xml
index 9bb776f..24f5efb 100644
--- a/java/com/android/dialer/calldetails/res/values-eu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-eu/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopiatu zenbakia</string>
   <string name="call_details_edit_number">Editatu zenbakia deitu aurretik</string>
   <string name="call_details_report_call_id">Jakinarazi zenbakiaren informazioa okerra dela</string>
-  <string name="sent_a_photo">Argazki bat bidali duzu</string>
-  <string name="received_a_photo">Argazki bat jaso duzu</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Jakinarazi zenbakia okerra dela</string>
   <string name="report_caller_id_failed">Ezin izan da bidali jakinarazpena</string>
   <string name="report_caller_id_toast">Bidali da jakinarazpena</string>
diff --git a/java/com/android/dialer/calldetails/res/values-fa/strings.xml b/java/com/android/dialer/calldetails/res/values-fa/strings.xml
index 88a9da0..0e37225 100644
--- a/java/com/android/dialer/calldetails/res/values-fa/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fa/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">کپی کردن شماره</string>
   <string name="call_details_edit_number">ویرایش شماره قبل از تماس</string>
   <string name="call_details_report_call_id">گزارش شماره نادرست</string>
-  <string name="sent_a_photo">عکسی ارسال کرد</string>
-  <string name="received_a_photo">عکسی دریافت کرد</string>
-  <string name="message_in_quotes">«%1$s»</string>
   <string name="report_caller_id_dialog_title">گزارش شماره نادرست</string>
   <string name="report_caller_id_failed">شماره گزارش نشد</string>
   <string name="report_caller_id_toast">شماره گزارش شد</string>
diff --git a/java/com/android/dialer/calldetails/res/values-fi/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-fi/cm_strings.xml
new file mode 100644
index 0000000..210cc44
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-fi/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Toista nauhoitus</item>
+        <item quantity="other">Toista nauhoitukset</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Sovellusta jolla voi toistaa valitun tallenteen ei ole asennettu.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-fi/strings.xml b/java/com/android/dialer/calldetails/res/values-fi/strings.xml
index 1342e33..0a2df4e 100644
--- a/java/com/android/dialer/calldetails/res/values-fi/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fi/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopioi numero</string>
   <string name="call_details_edit_number">Muokkaa numeroa ennen puhelua</string>
   <string name="call_details_report_call_id">Ilmoita epätarkasta numerosta</string>
-  <string name="sent_a_photo">Lähetetty kuva</string>
-  <string name="received_a_photo">Vastaanotettu kuva</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Ilmoita väärästä numerosta</string>
   <string name="report_caller_id_failed">Numerosta ilmoittaminen epäonnistui.</string>
   <string name="report_caller_id_toast">Numeroa koskeva ilmoitus lähetettiin.</string>
diff --git a/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml b/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml
index b2d69fe..1788214 100644
--- a/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fr-rCA/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copier le numéro</string>
   <string name="call_details_edit_number">Modifier le numéro avant de passer l\'appel</string>
   <string name="call_details_report_call_id">Signaler un numéro inexact</string>
-  <string name="sent_a_photo">Photo envoyée</string>
-  <string name="received_a_photo">Photo reçue</string>
-  <string name="message_in_quotes">« %1$s »</string>
   <string name="report_caller_id_dialog_title">Signaler un numéro incorrect</string>
   <string name="report_caller_id_failed">Impossible de signaler le numéro</string>
   <string name="report_caller_id_toast">Numéro signalé</string>
diff --git a/java/com/android/dialer/calldetails/res/values-fr/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-fr/cm_strings.xml
new file mode 100644
index 0000000..f40c597
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-fr/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Lire l\'enregistrement</item>
+        <item quantity="other">Lire les enregistrements</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Aucune application n\'a été trouvée pour la lecture de l\'enregistrement sélectionné.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-fr/strings.xml b/java/com/android/dialer/calldetails/res/values-fr/strings.xml
index 53f3ec0..b16dcde 100644
--- a/java/com/android/dialer/calldetails/res/values-fr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-fr/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copier le numéro</string>
   <string name="call_details_edit_number">Modifier le numéro avant d\'appeler</string>
   <string name="call_details_report_call_id">Signaler un numéro incorrect</string>
-  <string name="sent_a_photo">Envoi d\'une photo</string>
-  <string name="received_a_photo">Réception d\'une photo</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Signaler un numéro incorrect</string>
   <string name="report_caller_id_failed">Impossible de signaler le numéro</string>
   <string name="report_caller_id_toast">Signalement du numéro effectué</string>
diff --git a/java/com/android/dialer/calldetails/res/values-fur-rIT/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-fur-rIT/cm_strings.xml
new file mode 100644
index 0000000..587bef3
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-fur-rIT/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Riprodûs regjistrazion</item>
+        <item quantity="other">Riprodûs regjistrazions</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Nissune aplicazion cjatade par scoltâ la regjistrazion selezionade.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-fy-rNL/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-fy-rNL/cm_strings.xml
new file mode 100644
index 0000000..4843bd9
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-fy-rNL/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Opname ôfspylje</item>
+        <item quantity="other">Opnamen ôfspylje</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Kin gjin app fine om de selektearre opname ôf te spyljen.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-gd/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-gd/cm_strings.xml
new file mode 100644
index 0000000..cf54815
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-gd/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Cluich an clàradh</item>
+        <item quantity="two">Cluich na clàraidhean</item>
+        <item quantity="few">Cluich na clàraidhean</item>
+        <item quantity="other">Cluich na clàraidhean</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Cha deach aplacaid a lorg airson an clàradh a thagh thu a chluich.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-gl/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-gl/cm_strings.xml
new file mode 100644
index 0000000..ca1bce6
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-gl/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Reproducir gravación</item>
+        <item quantity="other">Reproducir gravacións</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Non se puido atopar ningunha aplicación para reproducir a gravación seleccionada.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-gl/strings.xml b/java/com/android/dialer/calldetails/res/values-gl/strings.xml
index 6ce21f7..bde4158 100644
--- a/java/com/android/dialer/calldetails/res/values-gl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-gl/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copiar número</string>
   <string name="call_details_edit_number">Editar número antes de chamar</string>
   <string name="call_details_report_call_id">Informar dun número impreciso</string>
-  <string name="sent_a_photo">Enviouse unha foto</string>
-  <string name="received_a_photo">Recibiuse unha foto</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Informar dun número incorrecto</string>
   <string name="report_caller_id_failed">Non se puido marcar o número como inadecuado</string>
   <string name="report_caller_id_toast">Marcouse o número como inadecuado</string>
diff --git a/java/com/android/dialer/calldetails/res/values-gu/strings.xml b/java/com/android/dialer/calldetails/res/values-gu/strings.xml
index 160c848..0fb3eb8 100644
--- a/java/com/android/dialer/calldetails/res/values-gu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-gu/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">નંબર કૉપિ કરો</string>
   <string name="call_details_edit_number">કૉલ કરતાં પહેલાં નંબર સંપાદિત કરો</string>
   <string name="call_details_report_call_id">અચોક્કસ નંબરની જાણ કરો</string>
-  <string name="sent_a_photo">એક ફોટો મોકલ્યો</string>
-  <string name="received_a_photo">એક ફોટો પ્રાપ્ત કર્યો</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">ખોટા નંબરની જાણ કરો</string>
   <string name="report_caller_id_failed">નંબરની જાણ કરી શકાઈ નથી</string>
   <string name="report_caller_id_toast">નંબરની જાણ કરી</string>
diff --git a/java/com/android/dialer/calldetails/res/values-hi/strings.xml b/java/com/android/dialer/calldetails/res/values-hi/strings.xml
index 87f6fd5..d686037 100644
--- a/java/com/android/dialer/calldetails/res/values-hi/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hi/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">नंबर कॉपी करें</string>
   <string name="call_details_edit_number">कॉल करने से पहले नंबर संपादित करें</string>
   <string name="call_details_report_call_id">गलत जानकारी देने वाले नंबर की रिपोर्ट करें</string>
-  <string name="sent_a_photo">फ़ोटो भेजी गई</string>
-  <string name="received_a_photo">फ़ोटो मिली</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">गलत नंबर की रिपोर्ट करें</string>
   <string name="report_caller_id_failed">नंबर की रिपोर्ट नहीं की जा सकी</string>
   <string name="report_caller_id_toast">नंबर की रिपोर्ट की गई</string>
diff --git a/java/com/android/dialer/calldetails/res/values-hr/strings.xml b/java/com/android/dialer/calldetails/res/values-hr/strings.xml
index 3c12d28..87a5812 100644
--- a/java/com/android/dialer/calldetails/res/values-hr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hr/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopiranje broja</string>
   <string name="call_details_edit_number">Uređivanje broja prije poziva</string>
   <string name="call_details_report_call_id">Prijava netočnog broja</string>
-  <string name="sent_a_photo">Šalje fotografiju</string>
-  <string name="received_a_photo">Prima fotografiju</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Prijava netočnog broja</string>
   <string name="report_caller_id_failed">Prijava broja nije moguća</string>
   <string name="report_caller_id_toast">Broj je prijavljen</string>
diff --git a/java/com/android/dialer/calldetails/res/values-hu/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-hu/cm_strings.xml
new file mode 100644
index 0000000..c82aaa5
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-hu/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Felvétel lejátszása</item>
+        <item quantity="other">Felvételek lejátszása</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Nem található alkalmazás a kiválasztott felvétel lejátszásához.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-hu/strings.xml b/java/com/android/dialer/calldetails/res/values-hu/strings.xml
index 94a50b9..a31d182 100644
--- a/java/com/android/dialer/calldetails/res/values-hu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hu/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Szám másolása</string>
   <string name="call_details_edit_number">Szám szerkesztése hívás előtt</string>
   <string name="call_details_report_call_id">Pontatlan szám bejelentése</string>
-  <string name="sent_a_photo">Küldött egy fotót</string>
-  <string name="received_a_photo">Kapott egy fotót</string>
-  <string name="message_in_quotes">„%1$s”</string>
   <string name="report_caller_id_dialog_title">Helytelen szám bejelentése</string>
   <string name="report_caller_id_failed">Nem sikerült bejelenteni a számot</string>
   <string name="report_caller_id_toast">Szám bejelentve</string>
diff --git a/java/com/android/dialer/calldetails/res/values-hy/strings.xml b/java/com/android/dialer/calldetails/res/values-hy/strings.xml
index 1b1a3f2..8546cab 100644
--- a/java/com/android/dialer/calldetails/res/values-hy/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-hy/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Պատճենել համարը</string>
   <string name="call_details_edit_number">Փոփոխել համարը զանգելուց առաջ</string>
   <string name="call_details_report_call_id">Հաղորդել սխալ համարի մասին</string>
-  <string name="sent_a_photo">Ուղարկվել է լուսանկար</string>
-  <string name="received_a_photo">Ստացվել է լուսանկար</string>
-  <string name="message_in_quotes">«%1$s»</string>
   <string name="report_caller_id_dialog_title">Հաղորդում սխալ համարի մասին</string>
   <string name="report_caller_id_failed">Չհաջողվեց ուղարկել հաղորդումը</string>
   <string name="report_caller_id_toast">Հաղորդումն ուղարկվեց</string>
diff --git a/java/com/android/dialer/calldetails/res/values-in/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-in/cm_strings.xml
new file mode 100644
index 0000000..63e20d2
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-in/cm_strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="other">Putar rekaman</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Tidak ada aplikasi ditemukan untuk memutar kembali rekaman yang terpilih.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-in/strings.xml b/java/com/android/dialer/calldetails/res/values-in/strings.xml
index 3f236dd..4e07ffb 100644
--- a/java/com/android/dialer/calldetails/res/values-in/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-in/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Salin nomor</string>
   <string name="call_details_edit_number">Edit nomor sebelum menelepon</string>
   <string name="call_details_report_call_id">Laporkan nomor yang tidak akurat</string>
-  <string name="sent_a_photo">Mengirim foto</string>
-  <string name="received_a_photo">Menerima foto</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Laporkan nomor yang salah</string>
   <string name="report_caller_id_failed">Tidak dapat melaporkan nomor</string>
   <string name="report_caller_id_toast">Nomor dilaporkan</string>
diff --git a/java/com/android/dialer/calldetails/res/values-is/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-is/cm_strings.xml
new file mode 100644
index 0000000..93549d1
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-is/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Spila upptöku</item>
+        <item quantity="other">Spila upptökur</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Ekkert forrit fannst sem getur spilað valda upptöku.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-is/strings.xml b/java/com/android/dialer/calldetails/res/values-is/strings.xml
index b11984e..e709ade 100644
--- a/java/com/android/dialer/calldetails/res/values-is/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-is/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Afrita númer</string>
   <string name="call_details_edit_number">Breyta númeri áður en hringt er</string>
   <string name="call_details_report_call_id">Tilkynna rangt númer</string>
-  <string name="sent_a_photo">Sendi mynd</string>
-  <string name="received_a_photo">Tók á móti mynd</string>
-  <string name="message_in_quotes">„%1$s“</string>
   <string name="report_caller_id_dialog_title">Tilkynna rangt númer</string>
   <string name="report_caller_id_failed">Ekki tókst að tilkynna númerið</string>
   <string name="report_caller_id_toast">Númer tilkynnt</string>
diff --git a/java/com/android/dialer/calldetails/res/values-it/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-it/cm_strings.xml
new file mode 100644
index 0000000..0ee9002
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-it/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Riproduci registrazione</item>
+        <item quantity="other">Riproduci registrazioni</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Nessun\'app trovata per ascoltare la registrazione selezionata.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-it/strings.xml b/java/com/android/dialer/calldetails/res/values-it/strings.xml
index 51954de..42f23b2 100644
--- a/java/com/android/dialer/calldetails/res/values-it/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-it/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copia numero</string>
   <string name="call_details_edit_number">Modifica numero prima di chiamare</string>
   <string name="call_details_report_call_id">Segnala numero sbagliato</string>
-  <string name="sent_a_photo">Foto inviata</string>
-  <string name="received_a_photo">Foto ricevuta</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Segnala numero errato</string>
   <string name="report_caller_id_failed">Impossibile segnalare il numero</string>
   <string name="report_caller_id_toast">Numero segnalato</string>
diff --git a/java/com/android/dialer/calldetails/res/values-iw/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-iw/cm_strings.xml
new file mode 100644
index 0000000..e9b6cbf
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-iw/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">נגן הקלטה</item>
+        <item quantity="two">נגן הקלטות</item>
+        <item quantity="many">נגן הקלטות</item>
+        <item quantity="other">נגן הקלטות</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">לא נמצא יישום לניגון ההקלטה שנבחרה.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-iw/strings.xml b/java/com/android/dialer/calldetails/res/values-iw/strings.xml
index bac2bd1..b58d5ea 100644
--- a/java/com/android/dialer/calldetails/res/values-iw/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-iw/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">העתק את המספר</string>
   <string name="call_details_edit_number">ערוך את המספר לפני השיחה</string>
   <string name="call_details_report_call_id">דיווח על מספר לא מדויק</string>
-  <string name="sent_a_photo">נשלחה תמונה</string>
-  <string name="received_a_photo">התקבלה תמונה</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">דיווח על מספר שגוי</string>
   <string name="report_caller_id_failed">לא ניתן היה לדווח על המספר</string>
   <string name="report_caller_id_toast">המספר דיווח</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ja/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-ja/cm_strings.xml
new file mode 100644
index 0000000..6567de7
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-ja/cm_strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="other">録音を再生</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">選択した録音を再生するアプリが見つかりませんでした。</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ja/strings.xml b/java/com/android/dialer/calldetails/res/values-ja/strings.xml
index 7efcd4f..68d1d8a 100644
--- a/java/com/android/dialer/calldetails/res/values-ja/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ja/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">電話番号をコピー</string>
   <string name="call_details_edit_number">発信前に電話番号を編集</string>
   <string name="call_details_report_call_id">情報が間違っている番号を報告</string>
-  <string name="sent_a_photo">写真を送信しました</string>
-  <string name="received_a_photo">写真を受信しました</string>
-  <string name="message_in_quotes">「%1$s」</string>
   <string name="report_caller_id_dialog_title">間違った番号の報告</string>
   <string name="report_caller_id_failed">番号を報告できませんでした</string>
   <string name="report_caller_id_toast">番号を報告しました</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ka/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-ka/cm_strings.xml
new file mode 100644
index 0000000..22fae4c
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-ka/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">ჩანაწერის მოსმენა</item>
+        <item quantity="other">ჩანაწერების მოსმენა</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">პროგრამა ვერ მოიძებნა შერჩეული ჩანაწერის გასაშვებად.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ka/strings.xml b/java/com/android/dialer/calldetails/res/values-ka/strings.xml
index a58e7e6..1bac5f9 100644
--- a/java/com/android/dialer/calldetails/res/values-ka/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ka/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">ნომრის კოპირება</string>
   <string name="call_details_edit_number">ნომრის რედაქტირება დარეკვამდე</string>
   <string name="call_details_report_call_id">არაზუსტი ნომრის შეტყობინება</string>
-  <string name="sent_a_photo">ფოტო გაიგზავნა</string>
-  <string name="received_a_photo">მიღებულია ფოტო</string>
-  <string name="message_in_quotes">„%1$s“</string>
   <string name="report_caller_id_dialog_title">არასწორი ნომრის შეტყობინება</string>
   <string name="report_caller_id_failed">ნომრის შეტყობინება ვერ მოხერხდა</string>
   <string name="report_caller_id_toast">ნომერი შეტყობინებულია</string>
diff --git a/java/com/android/dialer/calldetails/res/values-kab-rDZ/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-kab-rDZ/cm_strings.xml
new file mode 100644
index 0000000..d7fbc6d
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-kab-rDZ/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Ɣeṛ asekles</item>
+        <item quantity="other">Ɣeṛ iseklasen</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Ulac asnas i tɣuri n usekles yettwafernen.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-kk/strings.xml b/java/com/android/dialer/calldetails/res/values-kk/strings.xml
index b6c12af..928c4ef 100644
--- a/java/com/android/dialer/calldetails/res/values-kk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-kk/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Нөмірді көшіру</string>
   <string name="call_details_edit_number">Нөмірді қоңырау шалуға дейін өзгерту</string>
   <string name="call_details_report_call_id">Қате нөмір туралы хабарлау</string>
-  <string name="sent_a_photo">Сурет жіберілді</string>
-  <string name="received_a_photo">Сурет қабылданды</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Қате нөмір туралы хабарлау</string>
   <string name="report_caller_id_failed">Нөмір туралы хабар жіберілмеді</string>
   <string name="report_caller_id_toast">Нөмір туралы хабар жіберілді</string>
diff --git a/java/com/android/dialer/calldetails/res/values-km/strings.xml b/java/com/android/dialer/calldetails/res/values-km/strings.xml
index 0ca70bf..322af74 100644
--- a/java/com/android/dialer/calldetails/res/values-km/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-km/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">ថតចម្លងលេខទូរសព្ទ</string>
   <string name="call_details_edit_number">កែ​លេខ​ មុន​ពេល​ហៅទូរសព្ទ</string>
   <string name="call_details_report_call_id">រាយការណ៍លេខមិនត្រឹមត្រូវ</string>
-  <string name="sent_a_photo">បានផ្ញើរូបថត</string>
-  <string name="received_a_photo">បាន​ទទួល​រូបថត</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">រាយការណ៍​លេខ​មិន​ត្រឹមត្រូវ</string>
   <string name="report_caller_id_failed">មិន​អាច​រាយការណ៍​លេខ​បាន​ទេ</string>
   <string name="report_caller_id_toast">បាន​រាយការណ៍​លេខ</string>
diff --git a/java/com/android/dialer/calldetails/res/values-kn/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-kn/cm_strings.xml
new file mode 100644
index 0000000..1777ebf
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-kn/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">ದಾಖಲೆಯನ್ನು ಆಡಿಸು</item>
+        <item quantity="other">ದಾಖಲೆಗಳನ್ನು ಆಡಿಸು</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">ಆಯ್ಕೆ ಮಾಡಿದ ಧ್ವನಿಮುದ್ರಣವನ್ನು ಪುನರಾಡಿಸಲು ಯಾವುದೇ ಆಪ್ ಕಂಡುಬಂದಿಲ್ಲ.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-kn/strings.xml b/java/com/android/dialer/calldetails/res/values-kn/strings.xml
index b37a4ec..8702b07 100644
--- a/java/com/android/dialer/calldetails/res/values-kn/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-kn/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">ಸಂಖ್ಯೆಯನ್ನು ನಕಲಿಸಿ</string>
   <string name="call_details_edit_number">ಕರೆ ಮಾಡುವ ಮೊದಲು ಸಂಖ್ಯೆಯನ್ನು ಎಡಿಟ್ ಮಾಡಿ</string>
   <string name="call_details_report_call_id">ನಿಖರವಾಗಿಲ್ಲದ ಸಂಖ್ಯೆಯನ್ನು ವರದಿಮಾಡಿ</string>
-  <string name="sent_a_photo">ಫೋಟೋ ಕಳುಹಿಸಲಾಗಿದೆ</string>
-  <string name="received_a_photo">ಫೋಟೋ ಸ್ವೀಕರಿಸಲಾಗಿದೆ</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">ತಪ್ಪಾದ ಸಂಖ್ಯೆಯನ್ನು ವರದಿಮಾಡಿ</string>
   <string name="report_caller_id_failed">ಸಂಖ್ಯೆಯನ್ನು ವರದಿ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</string>
   <string name="report_caller_id_toast">ವರದಿ ಮಾಡಲಾದ ಸಂಖ್ಯೆ</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ko/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-ko/cm_strings.xml
new file mode 100644
index 0000000..f4e1ea4
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-ko/cm_strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="other">녹음 재생</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">선택된 녹음 파일을 재생할 수 있는 앱이 없습니다.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ko/strings.xml b/java/com/android/dialer/calldetails/res/values-ko/strings.xml
index 62fc453..e0ea935 100644
--- a/java/com/android/dialer/calldetails/res/values-ko/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ko/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">전화번호 복사</string>
   <string name="call_details_edit_number">통화하기 전에 번호 수정</string>
   <string name="call_details_report_call_id">잘못된 번호 신고하기</string>
-  <string name="sent_a_photo">사진 전송됨</string>
-  <string name="received_a_photo">사진 수신됨</string>
-  <string name="message_in_quotes">\'%1$s\'</string>
   <string name="report_caller_id_dialog_title">잘못된 번호 신고</string>
   <string name="report_caller_id_failed">번호를 신고할 수 없습니다.</string>
   <string name="report_caller_id_toast">번호가 신고되었습니다.</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ky/strings.xml b/java/com/android/dialer/calldetails/res/values-ky/strings.xml
index a403961..7d84015 100644
--- a/java/com/android/dialer/calldetails/res/values-ky/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ky/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Номерди көчүрүү</string>
   <string name="call_details_edit_number">Чалуудан мурун номерди түзөтүү</string>
   <string name="call_details_report_call_id">Номердеги ката жөнүндө кабар берүү</string>
-  <string name="sent_a_photo">Сүрөт жөнөтүлдү</string>
-  <string name="received_a_photo">Сүрөт алынды</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Туура эмес номер жөнүндө кабарлоо</string>
   <string name="report_caller_id_failed">Туура эмес номер жөнүндө кабар жөнөтүлбөй койду</string>
   <string name="report_caller_id_toast">Туура эмес номер жөнүндө кабар берүү</string>
diff --git a/java/com/android/dialer/calldetails/res/values-lo/strings.xml b/java/com/android/dialer/calldetails/res/values-lo/strings.xml
index f7c856e..19aed68 100644
--- a/java/com/android/dialer/calldetails/res/values-lo/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-lo/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">ສຳເນົາເບີໂທ</string>
   <string name="call_details_edit_number">ແກ້ໄຂເບີກ່ອນໂທ</string>
   <string name="call_details_report_call_id">ລາຍງານເບີໂທທີ່ບໍ່ຖືກຕ້ອງ</string>
-  <string name="sent_a_photo">ສົ່ງຮູບພາບ</string>
-  <string name="received_a_photo">ໄດ້ຮັບຮູບພາບແລ້ວ</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">​ລາຍ​ງານ​ເບີ​ໂທບໍ່​ຖືກ​ຕ້ອງ</string>
   <string name="report_caller_id_failed">ບໍ່ສາມາດລາຍງານເບີໂທໄດ້</string>
   <string name="report_caller_id_toast">ລາຍງານເບີໂທແລ້ວ</string>
diff --git a/java/com/android/dialer/calldetails/res/values-lt/strings.xml b/java/com/android/dialer/calldetails/res/values-lt/strings.xml
index a3c169d..415560d 100644
--- a/java/com/android/dialer/calldetails/res/values-lt/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-lt/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopijuoti numerį</string>
   <string name="call_details_edit_number">Redaguoti numerį prieš skambinant</string>
   <string name="call_details_report_call_id">Pranešti apie netikslų numerį</string>
-  <string name="sent_a_photo">Išsiuntė nuotrauką</string>
-  <string name="received_a_photo">Gavo nuotrauką</string>
-  <string name="message_in_quotes">„%1$s“</string>
   <string name="report_caller_id_dialog_title">Pranešimas apie netinkamą numerį</string>
   <string name="report_caller_id_failed">Nepavyko pranešti apie numerį</string>
   <string name="report_caller_id_toast">Apie numerį pranešta</string>
diff --git a/java/com/android/dialer/calldetails/res/values-lv/strings.xml b/java/com/android/dialer/calldetails/res/values-lv/strings.xml
index c174f04..514ed07 100644
--- a/java/com/android/dialer/calldetails/res/values-lv/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-lv/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopēt numuru</string>
   <string name="call_details_edit_number">Rediģēt numuru pirms zvanīšanas</string>
   <string name="call_details_report_call_id">Ziņot par neprecīzu numuru</string>
-  <string name="sent_a_photo">Nosūtīja fotoattēlu</string>
-  <string name="received_a_photo">Saņēma fotoattēlu</string>
-  <string name="message_in_quotes">“%1$s”</string>
   <string name="report_caller_id_dialog_title">Ziņošana par nepareizu numuru</string>
   <string name="report_caller_id_failed">Nevarēja nosūtīt ziņojumu par numuru</string>
   <string name="report_caller_id_toast">Ziņojums par numuru nosūtīts</string>
diff --git a/java/com/android/dialer/calldetails/res/values-mk/strings.xml b/java/com/android/dialer/calldetails/res/values-mk/strings.xml
index 7ac74e8..b311ab1 100644
--- a/java/com/android/dialer/calldetails/res/values-mk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-mk/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Копирај го бројот</string>
   <string name="call_details_edit_number">Измени го бројот пред повикот</string>
   <string name="call_details_report_call_id">Пријавете погрешен број</string>
-  <string name="sent_a_photo">Испрати фотографија</string>
-  <string name="received_a_photo">Прими фотографија</string>
-  <string name="message_in_quotes">„%1$s“</string>
   <string name="report_caller_id_dialog_title">Пријавете неточен број</string>
   <string name="report_caller_id_failed">Не можеше да пријави бројот</string>
   <string name="report_caller_id_toast">Бројот е пријавен</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ml/strings.xml b/java/com/android/dialer/calldetails/res/values-ml/strings.xml
index 40291d5..e38229b 100644
--- a/java/com/android/dialer/calldetails/res/values-ml/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ml/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">നമ്പർ പകർത്തുക</string>
   <string name="call_details_edit_number">കോൾ ചെയ്യുന്നതിന് മുമ്പായി നമ്പർ എഡിറ്റുചെയ്യുക</string>
   <string name="call_details_report_call_id">കൃത്യമല്ലാത്ത നമ്പർ റിപ്പോർട്ടുചെയ്യുക</string>
-  <string name="sent_a_photo">ഒരു ഫോട്ടോ അയച്ചു</string>
-  <string name="received_a_photo">ഒരു ഫോട്ടോ ലഭിച്ചു</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">തെറ്റായ നമ്പർ റിപ്പോർട്ടുചെയ്യുക</string>
   <string name="report_caller_id_failed">നമ്പർ റിപ്പോർട്ടുചെയ്യാനായില്ല</string>
   <string name="report_caller_id_toast">നമ്പർ റിപ്പോർട്ടുചെയ്‌തു</string>
diff --git a/java/com/android/dialer/calldetails/res/values-mn/strings.xml b/java/com/android/dialer/calldetails/res/values-mn/strings.xml
index 5ced0ff..10552da 100644
--- a/java/com/android/dialer/calldetails/res/values-mn/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-mn/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Дугаар хуулах</string>
   <string name="call_details_edit_number">Залгахын өмнө дугаар засах</string>
   <string name="call_details_report_call_id">Тодорхой бус дугаарыг мэдээлэх</string>
-  <string name="sent_a_photo">Зураг илгээсэн</string>
-  <string name="received_a_photo">Зураг хүлээн авсан</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Буруу дугаарыг мэдээлэх</string>
   <string name="report_caller_id_failed">Дугаарыг мэдээлж чадсангүй</string>
   <string name="report_caller_id_toast">Дугаарыг мэдээлсэн</string>
diff --git a/java/com/android/dialer/calldetails/res/values-mr/strings.xml b/java/com/android/dialer/calldetails/res/values-mr/strings.xml
index cc03788..a0236d4 100644
--- a/java/com/android/dialer/calldetails/res/values-mr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-mr/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">नंबर कॉपी करा</string>
   <string name="call_details_edit_number">कॉल करण्यापूर्वी नंबर संपादित करा</string>
   <string name="call_details_report_call_id">चुकीच्या नंबरचा अहवाल द्या</string>
-  <string name="sent_a_photo">एक फोटो पाठविला</string>
-  <string name="received_a_photo">एक फोटो प्राप्त झाला</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">चुकीच्या नंबरचा अहवाल द्या</string>
   <string name="report_caller_id_failed">नंबरचा अहवाल देऊ शकलो नाही</string>
   <string name="report_caller_id_toast">नंबरचा अहवाल दिला</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ms/strings.xml b/java/com/android/dialer/calldetails/res/values-ms/strings.xml
index 5e4f93a..1359915 100644
--- a/java/com/android/dialer/calldetails/res/values-ms/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ms/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Salin nombor</string>
   <string name="call_details_edit_number">Edit nombor sebelum panggilan</string>
   <string name="call_details_report_call_id">Laporkan nombor yang tidak tepat</string>
-  <string name="sent_a_photo">Menghantar foto</string>
-  <string name="received_a_photo">Foto diterima</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Laporkan nombor yang tidak betul</string>
   <string name="report_caller_id_failed">Tidak dapat melaporkan nombor</string>
   <string name="report_caller_id_toast">Nombor dilaporkan</string>
diff --git a/java/com/android/dialer/calldetails/res/values-my/strings.xml b/java/com/android/dialer/calldetails/res/values-my/strings.xml
index 94d91a1..afa7aef 100644
--- a/java/com/android/dialer/calldetails/res/values-my/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-my/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">နံပါတ်ကိုကူးယူရန်</string>
   <string name="call_details_edit_number">မခေါ်ဆိုမီ နံပါတ်ကိုပြင်ဆင်ရန်</string>
   <string name="call_details_report_call_id">မတိကျသော နံပါတ်ကို တိုင်ကြားရန်</string>
-  <string name="sent_a_photo">ဓာတ်ပုံ ပို့လိုက်သည်</string>
-  <string name="received_a_photo">ဓာတ်ပုံ လက်ခံရရှိသည်</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">မမှန်ကန်သည့် နံပါတ်ကို တိုင်ကြားရန်</string>
   <string name="report_caller_id_failed">နံပါတ်ကို မတိုင်ကြားနိုင်ပါ</string>
   <string name="report_caller_id_toast">နံပါတ်ကို တိုင်ကြားပြီးပါပြီ</string>
diff --git a/java/com/android/dialer/calldetails/res/values-nb/strings.xml b/java/com/android/dialer/calldetails/res/values-nb/strings.xml
index 44001b7..44eca13 100644
--- a/java/com/android/dialer/calldetails/res/values-nb/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-nb/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopiér nummeret</string>
   <string name="call_details_edit_number">Rediger nummeret før du ringer</string>
   <string name="call_details_report_call_id">Rapportér feil nummer</string>
-  <string name="sent_a_photo">Et bilde ble sendt</string>
-  <string name="received_a_photo">Et bilde ble mottatt</string>
-  <string name="message_in_quotes">«%1$s»</string>
   <string name="report_caller_id_dialog_title">Rapportér feil nummer</string>
   <string name="report_caller_id_failed">Kunne ikke rapportere nummeret</string>
   <string name="report_caller_id_toast">Nummeret er rapportert</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ne/strings.xml b/java/com/android/dialer/calldetails/res/values-ne/strings.xml
index 35889bd..9380100 100644
--- a/java/com/android/dialer/calldetails/res/values-ne/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ne/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">नम्बर प्रतिलिपि गर्नुहोस्</string>
   <string name="call_details_edit_number">कल गर्नु अघि नम्बर सम्पादन गर्नुहोस्</string>
   <string name="call_details_report_call_id">गलत नम्बरको रिपोर्ट गर्नुहोस्</string>
-  <string name="sent_a_photo">एउटा तस्बिर पठाइयो</string>
-  <string name="received_a_photo">एउटा तस्बिर प्राप्त भयो</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">गलत नम्बरको रिपोर्ट गर्नुहोस्</string>
   <string name="report_caller_id_failed">नम्बरको रिपोर्ट गर्न सकिएन</string>
   <string name="report_caller_id_toast">नम्बरको रिपोर्ट गरियो</string>
diff --git a/java/com/android/dialer/calldetails/res/values-nl/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-nl/cm_strings.xml
new file mode 100644
index 0000000..bc2ac23
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-nl/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Opname afspelen</item>
+        <item quantity="other">Opnames afspelen</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Er kon geen app worden gevonden voor het afspelen van de geselecteerde opname.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-nl/strings.xml b/java/com/android/dialer/calldetails/res/values-nl/strings.xml
index e284b31..aeda320 100644
--- a/java/com/android/dialer/calldetails/res/values-nl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-nl/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Nummer kopiëren</string>
   <string name="call_details_edit_number">Nummer bewerken vóór bellen</string>
   <string name="call_details_report_call_id">Onjuist nummer melden</string>
-  <string name="sent_a_photo">Foto verzonden</string>
-  <string name="received_a_photo">Foto ontvangen</string>
-  <string name="message_in_quotes">\'%1$s\'</string>
   <string name="report_caller_id_dialog_title">Incorrect nummer melden</string>
   <string name="report_caller_id_failed">Kan nummer niet melden</string>
   <string name="report_caller_id_toast">Nummer gemeld</string>
diff --git a/java/com/android/dialer/calldetails/res/values-no/strings.xml b/java/com/android/dialer/calldetails/res/values-no/strings.xml
index 44001b7..44eca13 100644
--- a/java/com/android/dialer/calldetails/res/values-no/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-no/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopiér nummeret</string>
   <string name="call_details_edit_number">Rediger nummeret før du ringer</string>
   <string name="call_details_report_call_id">Rapportér feil nummer</string>
-  <string name="sent_a_photo">Et bilde ble sendt</string>
-  <string name="received_a_photo">Et bilde ble mottatt</string>
-  <string name="message_in_quotes">«%1$s»</string>
   <string name="report_caller_id_dialog_title">Rapportér feil nummer</string>
   <string name="report_caller_id_failed">Kunne ikke rapportere nummeret</string>
   <string name="report_caller_id_toast">Nummeret er rapportert</string>
diff --git a/java/com/android/dialer/calldetails/res/values-pa/strings.xml b/java/com/android/dialer/calldetails/res/values-pa/strings.xml
index 8c59293..49f3567 100644
--- a/java/com/android/dialer/calldetails/res/values-pa/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pa/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">ਨੰਬਰ ਕਾਪੀ ਕਰੋ</string>
   <string name="call_details_edit_number">ਕਾਲ ਤੋਂ ਪਹਿਲਾਂ ਨੰਬਰ ਸੰਪਾਦਿਤ ਕਰੋ</string>
   <string name="call_details_report_call_id">ਗਲਤ ਨੰਬਰ ਦੀ ਰਿਪੋਰਟ ਕਰੋ</string>
-  <string name="sent_a_photo">ਇੱਕ ਫ਼ੋਟੋ ਭੇਜੀ ਗਈ</string>
-  <string name="received_a_photo">ਇੱਕ ਫ਼ੋਟੋ ਪ੍ਰਾਪਤ ਹੋਈ</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">ਗਲਤ ਨੰਬਰ ਦੀ ਰਿਪੋਰਟ ਕਰੋ</string>
   <string name="report_caller_id_failed">ਨੰਬਰ ਦੀ ਰਿਪੋਰਟ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ</string>
   <string name="report_caller_id_toast">ਨੰਬਰ ਦੀ ਰਿਪੋਰਟ ਕੀਤੀ ਗਈ</string>
diff --git a/java/com/android/dialer/calldetails/res/values-pl/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-pl/cm_strings.xml
new file mode 100644
index 0000000..4b55016
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-pl/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Odtwórz nagranie</item>
+        <item quantity="few">Odtwórz nagrania</item>
+        <item quantity="many">Odtwórz nagrania</item>
+        <item quantity="other">Odtwórz nagrania</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Brak aplikacji, do odtworzenia wybranej rozmowy.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-pl/strings.xml b/java/com/android/dialer/calldetails/res/values-pl/strings.xml
index a9b1ae4..22dde2f 100644
--- a/java/com/android/dialer/calldetails/res/values-pl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pl/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopiuj numer</string>
   <string name="call_details_edit_number">Edytuj numer, zanim zadzwonisz</string>
   <string name="call_details_report_call_id">Zgłoś niedokładny numer</string>
-  <string name="sent_a_photo">Wysłano zdjęcie</string>
-  <string name="received_a_photo">Odebrano zdjęcie</string>
-  <string name="message_in_quotes">„%1$s”</string>
   <string name="report_caller_id_dialog_title">Zgłoś nieprawidłowy numer</string>
   <string name="report_caller_id_failed">Nie udało się zgłosić numeru</string>
   <string name="report_caller_id_toast">Numer został zgłoszony</string>
diff --git a/java/com/android/dialer/calldetails/res/values-pt-rBR/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-pt-rBR/cm_strings.xml
new file mode 100644
index 0000000..e791737
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-pt-rBR/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Reproduzir a gravação</item>
+        <item quantity="other">Reproduzir as gravações</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Não foi encontrado nenhum aplicativo para reproduzir a gravação selecionada.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml b/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml
index 5668789..609654b 100644
--- a/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pt-rBR/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copiar número</string>
   <string name="call_details_edit_number">Editar número antes de ligar</string>
   <string name="call_details_report_call_id">Informar número inválido</string>
-  <string name="sent_a_photo">Enviou uma foto</string>
-  <string name="received_a_photo">Recebeu uma foto</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Informar número incorreto</string>
   <string name="report_caller_id_failed">Não foi possível informar o número</string>
   <string name="report_caller_id_toast">Número informado</string>
diff --git a/java/com/android/dialer/calldetails/res/values-pt-rPT/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-pt-rPT/cm_strings.xml
new file mode 100644
index 0000000..8b09af3
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-pt-rPT/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Reproduzir a gravação</item>
+        <item quantity="other">Reproduzir as gravações</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Não foi encontrada nenhuma aplicação para reproduzir a gravação selecionada.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml b/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml
index 12b7263d..89c47c1 100644
--- a/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pt-rPT/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copiar número</string>
   <string name="call_details_edit_number">Editar o número antes de efetuar a chamada</string>
   <string name="call_details_report_call_id">Denunciar número incorreto</string>
-  <string name="sent_a_photo">Enviou uma foto</string>
-  <string name="received_a_photo">Recebeu uma foto</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Denunciar número incorreto</string>
   <string name="report_caller_id_failed">Não foi possível denunciar o número.</string>
   <string name="report_caller_id_toast">Número denunciado</string>
diff --git a/java/com/android/dialer/calldetails/res/values-pt/strings.xml b/java/com/android/dialer/calldetails/res/values-pt/strings.xml
index 5668789..609654b 100644
--- a/java/com/android/dialer/calldetails/res/values-pt/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-pt/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copiar número</string>
   <string name="call_details_edit_number">Editar número antes de ligar</string>
   <string name="call_details_report_call_id">Informar número inválido</string>
-  <string name="sent_a_photo">Enviou uma foto</string>
-  <string name="received_a_photo">Recebeu uma foto</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Informar número incorreto</string>
   <string name="report_caller_id_failed">Não foi possível informar o número</string>
   <string name="report_caller_id_toast">Número informado</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ro/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-ro/cm_strings.xml
new file mode 100644
index 0000000..3cafa12
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-ro/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Redă înregistrarea</item>
+        <item quantity="few">Redă înregistrările</item>
+        <item quantity="other">Redă înregistrările</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Nu s-a putut găsi nicio aplicație pentru redarea înregistrării selectate.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ro/strings.xml b/java/com/android/dialer/calldetails/res/values-ro/strings.xml
index 3c45c62..d1d6e4d 100644
--- a/java/com/android/dialer/calldetails/res/values-ro/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ro/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Copiați numărul</string>
   <string name="call_details_edit_number">Modificați numărul înainte de apelare</string>
   <string name="call_details_report_call_id">Raportați numărul ca incorect</string>
-  <string name="sent_a_photo">A fost trimisă o fotografie.</string>
-  <string name="received_a_photo">A fost primită o fotografie.</string>
-  <string name="message_in_quotes">„%1$s”</string>
   <string name="report_caller_id_dialog_title">Raportați un număr incorect</string>
   <string name="report_caller_id_failed">Numărul nu a putut fi raportat.</string>
   <string name="report_caller_id_toast">Numărul a fost raportat.</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ru/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-ru/cm_strings.xml
new file mode 100644
index 0000000..ff65211
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-ru/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Воспроизвести запись</item>
+        <item quantity="few">Воспроизвести записи</item>
+        <item quantity="many">Воспроизвести записи</item>
+        <item quantity="other">Воспроизвести записи</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Не найдено приложение для воспроизведения выбранной записи.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-ru/strings.xml b/java/com/android/dialer/calldetails/res/values-ru/strings.xml
index 6226631..cec13fd 100644
--- a/java/com/android/dialer/calldetails/res/values-ru/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ru/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Скопировать номер</string>
   <string name="call_details_edit_number">Изменить номер перед вызовом</string>
   <string name="call_details_report_call_id">Сообщить об ошибке в номере</string>
-  <string name="sent_a_photo">Отправлена фотография</string>
-  <string name="received_a_photo">Получена фотография</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Неверный номер</string>
   <string name="report_caller_id_failed">Не удалось отправить отчет о неверном номере</string>
   <string name="report_caller_id_toast">Отчет о неверном номере отправлен</string>
diff --git a/java/com/android/dialer/calldetails/res/values-si/strings.xml b/java/com/android/dialer/calldetails/res/values-si/strings.xml
index 6154950..8ee38ea 100644
--- a/java/com/android/dialer/calldetails/res/values-si/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-si/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">අංකය පිටපත් කරන්න</string>
   <string name="call_details_edit_number">ඇමතුමට පෙර අංකය සංස්කරණය කරන්න</string>
   <string name="call_details_report_call_id">වැරදි අංකය වාර්තා කරන්න</string>
-  <string name="sent_a_photo">ඡායාරූපයක් යැවිණි</string>
-  <string name="received_a_photo">ඡායාරූපයක් ලැබිණි</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">වැරදි අංකය වාර්තා කරන්න</string>
   <string name="report_caller_id_failed">අංකය වාර්තා කිරීමට නොහැකි විය</string>
   <string name="report_caller_id_toast">අංකය වාර්තා කරන ලදී</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sk/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-sk/cm_strings.xml
new file mode 100644
index 0000000..7ee024d
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-sk/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Prehrať nahrávku</item>
+        <item quantity="few">Prehrať nahrávky</item>
+        <item quantity="many">Prehrať nahrávok</item>
+        <item quantity="other">Prehrať nahrávok</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Nenašla sa žiadna aplikácia pre prehrávanie záznamu.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-sk/strings.xml b/java/com/android/dialer/calldetails/res/values-sk/strings.xml
index e70a59f..35a90fe 100644
--- a/java/com/android/dialer/calldetails/res/values-sk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sk/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopírovať číslo</string>
   <string name="call_details_edit_number">Pred volaním upraviť číslo</string>
   <string name="call_details_report_call_id">Nahlásiť nesprávne číslo</string>
-  <string name="sent_a_photo">Bola odoslaná fotka</string>
-  <string name="received_a_photo">Bola prijatá fotka</string>
-  <string name="message_in_quotes">„%1$s“</string>
   <string name="report_caller_id_dialog_title">Nahlásenie nesprávneho čísla</string>
   <string name="report_caller_id_failed">Číslo sa nepodarilo nahlásiť</string>
   <string name="report_caller_id_toast">Číslo bolo nahlásené</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sl/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-sl/cm_strings.xml
new file mode 100644
index 0000000..965557d
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-sl/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Predvajaj posnetek</item>
+        <item quantity="two">Predvajaj posnetka</item>
+        <item quantity="few">Predvajaj posnetke</item>
+        <item quantity="other">Predvajaj posnetke</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Za predvajanje izbranega posnetka ni bila najdena nobena aplikacija.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-sl/strings.xml b/java/com/android/dialer/calldetails/res/values-sl/strings.xml
index 5a2bd1e..b8badb5 100644
--- a/java/com/android/dialer/calldetails/res/values-sl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sl/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopiraj številko</string>
   <string name="call_details_edit_number">Pred klicanjem uredi številko</string>
   <string name="call_details_report_call_id">Prijavi netočno številko</string>
-  <string name="sent_a_photo">Poslana fotografija</string>
-  <string name="received_a_photo">Prejeta fotografija</string>
-  <string name="message_in_quotes">»%1$s«</string>
   <string name="report_caller_id_dialog_title">Prijava napačne številke</string>
   <string name="report_caller_id_failed">Številke ni bilo mogoče prijaviti</string>
   <string name="report_caller_id_toast">Številka je prijavljena</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sq/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-sq/cm_strings.xml
new file mode 100644
index 0000000..1556499
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-sq/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Luaj inçizimin</item>
+        <item quantity="other">Luaj inçizimet</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Nuk u gjet asnjë aplikacion për të luajtur inçizimin e zgjedhur.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-sq/strings.xml b/java/com/android/dialer/calldetails/res/values-sq/strings.xml
index 607710c..664451f 100644
--- a/java/com/android/dialer/calldetails/res/values-sq/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sq/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopjo numrin</string>
   <string name="call_details_edit_number">Redakto numrin para telefonatës</string>
   <string name="call_details_report_call_id">Raporto numrin e pasaktë</string>
-  <string name="sent_a_photo">U dërgua një fotografi</string>
-  <string name="received_a_photo">U mor një fotografi</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Raporto numrin e pasaktë</string>
   <string name="report_caller_id_failed">Numri nuk mund të raportohej</string>
   <string name="report_caller_id_toast">Numri u raportua</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sr/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-sr/cm_strings.xml
new file mode 100644
index 0000000..d729982
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-sr/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Пусти снимак</item>
+        <item quantity="few">Пусти снимке</item>
+        <item quantity="other">Пусти снимке</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Нема апликација које могу да пусте изабрани снимак.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-sr/strings.xml b/java/com/android/dialer/calldetails/res/values-sr/strings.xml
index 8940871..9412592 100644
--- a/java/com/android/dialer/calldetails/res/values-sr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sr/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Копирај број</string>
   <string name="call_details_edit_number">Измените број пре позива</string>
   <string name="call_details_report_call_id">Пријави нетачан број</string>
-  <string name="sent_a_photo">Слика је послата</string>
-  <string name="received_a_photo">Слика је примљена</string>
-  <string name="message_in_quotes">„%1$s“</string>
   <string name="report_caller_id_dialog_title">Пријавите нетачан број</string>
   <string name="report_caller_id_failed">Пријављивање броја није успело</string>
   <string name="report_caller_id_toast">Број је пријављен</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sv/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-sv/cm_strings.xml
new file mode 100644
index 0000000..f0fd8bd
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-sv/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Spela upp inspelning</item>
+        <item quantity="other">Spela upp inspelningar</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Ingen app kunde hittas för uppspelning av den valda inspelningen.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-sv/strings.xml b/java/com/android/dialer/calldetails/res/values-sv/strings.xml
index 1b2cfbe..ab38ee8 100644
--- a/java/com/android/dialer/calldetails/res/values-sv/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sv/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopiera nummer</string>
   <string name="call_details_edit_number">Redigera nummer före samtal</string>
   <string name="call_details_report_call_id">Rapportera felaktigt nummer</string>
-  <string name="sent_a_photo">Skickade ett foto</string>
-  <string name="received_a_photo">Tog emot ett foto</string>
-  <string name="message_in_quotes">%1$s</string>
   <string name="report_caller_id_dialog_title">Rapportera felaktigt nummer</string>
   <string name="report_caller_id_failed">Det gick inte att rapportera nummer</string>
   <string name="report_caller_id_toast">Nummer rapporterat</string>
diff --git a/java/com/android/dialer/calldetails/res/values-sw/strings.xml b/java/com/android/dialer/calldetails/res/values-sw/strings.xml
index e2c6cb5..8cdba48 100644
--- a/java/com/android/dialer/calldetails/res/values-sw/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-sw/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Nakili nambari</string>
   <string name="call_details_edit_number">Hariri nambari kabla ya kupiga</string>
   <string name="call_details_report_call_id">Ripoti nambari isiyo sahihi</string>
-  <string name="sent_a_photo">Picha imetumwa</string>
-  <string name="received_a_photo">Picha imepokelewa</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Ripoti nambari isiyosahihi</string>
   <string name="report_caller_id_failed">Imeshindwa kuripoti nambari</string>
   <string name="report_caller_id_toast">Nambari imeripotiwa</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ta/strings.xml b/java/com/android/dialer/calldetails/res/values-ta/strings.xml
index 3603db1..bd9800c 100644
--- a/java/com/android/dialer/calldetails/res/values-ta/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ta/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">எண்ணை நகலெடு</string>
   <string name="call_details_edit_number">அழைப்பதற்கு முன் எண்ணைத் திருத்து</string>
   <string name="call_details_report_call_id">துல்லியமற்ற எண் எனப் புகாரளி</string>
-  <string name="sent_a_photo">படம் அனுப்பப்பட்டது</string>
-  <string name="received_a_photo">படம் பெறப்பட்டது</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">தவறான எண் எனப் புகாரளி</string>
   <string name="report_caller_id_failed">எண்ணைப் புகாரளிக்க முடியவில்லை</string>
   <string name="report_caller_id_toast">எண் புகாரளிக்கப்பட்டது</string>
diff --git a/java/com/android/dialer/calldetails/res/values-te/strings.xml b/java/com/android/dialer/calldetails/res/values-te/strings.xml
index 49c08d9..5eb00c0 100644
--- a/java/com/android/dialer/calldetails/res/values-te/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-te/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">నంబర్‌ను కాపీ చేయి</string>
   <string name="call_details_edit_number">కాల్ చేసే ముందు నంబర్‌ను సవరించు</string>
   <string name="call_details_report_call_id">అనిర్దిష్టంగా ఉండే నంబర్‌ను నివేదించు</string>
-  <string name="sent_a_photo">ఫోటో పంపబడింది</string>
-  <string name="received_a_photo">ఫోటో స్వీకరించబడింది</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">చెల్లని నంబర్‌ను నివేదించండి</string>
   <string name="report_caller_id_failed">నంబర్‌ను నివేదించడం సాధ్యపడలేదు</string>
   <string name="report_caller_id_toast">నంబర్ నివేదించబడింది</string>
diff --git a/java/com/android/dialer/calldetails/res/values-th/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-th/cm_strings.xml
new file mode 100644
index 0000000..dead95d
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-th/cm_strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="other">เล่นการบันทึก</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">ไม่พบแอปที่สามารถเล่นไฟล์บันทึกที่เลือกไว้ได้</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-th/strings.xml b/java/com/android/dialer/calldetails/res/values-th/strings.xml
index 6a43143..bc83a79 100644
--- a/java/com/android/dialer/calldetails/res/values-th/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-th/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">คัดลอกหมายเลข</string>
   <string name="call_details_edit_number">แก้ไขหมายเลขก่อนโทร</string>
   <string name="call_details_report_call_id">รายงานหมายเลขที่ผิดพลาด</string>
-  <string name="sent_a_photo">ส่งรูปภาพแล้ว</string>
-  <string name="received_a_photo">ได้รับรูปภาพแล้ว</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">รายงานหมายเลขที่ไม่ถูกต้อง</string>
   <string name="report_caller_id_failed">ไม่สามารถรายงานหมายเลข</string>
   <string name="report_caller_id_toast">รายงานหมายเลขแล้ว</string>
diff --git a/java/com/android/dialer/calldetails/res/values-tl/strings.xml b/java/com/android/dialer/calldetails/res/values-tl/strings.xml
index cac5d06..a0d8730 100644
--- a/java/com/android/dialer/calldetails/res/values-tl/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-tl/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopyahin ang numero</string>
   <string name="call_details_edit_number">I-edit ang numero bago tumawag</string>
   <string name="call_details_report_call_id">Iulat ang hindi wastong numero</string>
-  <string name="sent_a_photo">Nagpadala ng larawan</string>
-  <string name="received_a_photo">Nakatanggap ng larawan</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Iulat ang hindi tamang numero</string>
   <string name="report_caller_id_failed">Hindi maiulat ang numero</string>
   <string name="report_caller_id_toast">Inulat ang numero</string>
diff --git a/java/com/android/dialer/calldetails/res/values-tr/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-tr/cm_strings.xml
new file mode 100644
index 0000000..07516d4
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-tr/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Kaydı oynat</item>
+        <item quantity="other">Kayıtları oynat</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Seçili kaydı yürütmek için hiçbir uygulama bulunamadı.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-tr/strings.xml b/java/com/android/dialer/calldetails/res/values-tr/strings.xml
index 8a1b54d..b09180e 100644
--- a/java/com/android/dialer/calldetails/res/values-tr/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-tr/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Numarayı kopyala</string>
   <string name="call_details_edit_number">Telefon etmeden önce numarayı düzenleyin</string>
   <string name="call_details_report_call_id">Hatalı numarayı bildir</string>
-  <string name="sent_a_photo">Bir fotoğraf gönderildi</string>
-  <string name="received_a_photo">Bir fotoğraf alındı</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Yanlış numarayı bildir</string>
   <string name="report_caller_id_failed">Numara bildirilemedi</string>
   <string name="report_caller_id_toast">Numara bildirildi</string>
diff --git a/java/com/android/dialer/calldetails/res/values-uk/strings.xml b/java/com/android/dialer/calldetails/res/values-uk/strings.xml
index 7489201..50a31fa 100644
--- a/java/com/android/dialer/calldetails/res/values-uk/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-uk/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Копіювати номер</string>
   <string name="call_details_edit_number">Редагувати номер перед дзвінком</string>
   <string name="call_details_report_call_id">Повідомити про неправильний номер</string>
-  <string name="sent_a_photo">Надіслано фотографію</string>
-  <string name="received_a_photo">Отримано фотографію</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Повідомити про неправильний номер</string>
   <string name="report_caller_id_failed">Не вдалося повідомити про неправильний номер</string>
   <string name="report_caller_id_toast">Ви повідомили про неправильний номер</string>
diff --git a/java/com/android/dialer/calldetails/res/values-ur/strings.xml b/java/com/android/dialer/calldetails/res/values-ur/strings.xml
index cfda536..1ac99c2 100644
--- a/java/com/android/dialer/calldetails/res/values-ur/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-ur/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">نمبر کاپی کریں</string>
   <string name="call_details_edit_number">کال کرنے سے پہلے نمبر میں ترمیم کریں</string>
   <string name="call_details_report_call_id">غلط نمبر کی رپورٹ کریں</string>
-  <string name="sent_a_photo">ایک تصویر بھیجی</string>
-  <string name="received_a_photo">ایک تصویر موصول ہوئی</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">غلط نمبر کی اطلاع دیں</string>
   <string name="report_caller_id_failed">نمبر کی اطلاع نہیں دی جا سکی</string>
   <string name="report_caller_id_toast">نمبر کی اطلاع دے دی گئی</string>
diff --git a/java/com/android/dialer/calldetails/res/values-uz/strings.xml b/java/com/android/dialer/calldetails/res/values-uz/strings.xml
index 22850de..82db3ea 100644
--- a/java/com/android/dialer/calldetails/res/values-uz/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-uz/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Raqamni nusxalash</string>
   <string name="call_details_edit_number">Chaqiruvdan oldin raqamni tahrirlash</string>
   <string name="call_details_report_call_id">Raqamdagi xatolik haqida xabar berish</string>
-  <string name="sent_a_photo">Rasm yuborildi</string>
-  <string name="received_a_photo">Rasm qabul qilindi</string>
-  <string name="message_in_quotes">“%1$s”</string>
   <string name="report_caller_id_dialog_title">Noto‘g‘ri raqam</string>
   <string name="report_caller_id_failed">Raqamdagi xatolik haqida xabar yuborib bo‘lmadi</string>
   <string name="report_caller_id_toast">Raqamdagi xatolik haqida xabar yuborildi</string>
diff --git a/java/com/android/dialer/calldetails/res/values-vi/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-vi/cm_strings.xml
new file mode 100644
index 0000000..f87c078
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-vi/cm_strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="other">Phát bản ghi</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">Không tìm thấy ứng dụng để phát lại bản ghi đã chọn.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-vi/strings.xml b/java/com/android/dialer/calldetails/res/values-vi/strings.xml
index e9bd002..a9b6f69 100644
--- a/java/com/android/dialer/calldetails/res/values-vi/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-vi/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Sao chép số</string>
   <string name="call_details_edit_number">Chỉnh sửa số trước khi gọi</string>
   <string name="call_details_report_call_id">Báo cáo số không chính xác</string>
-  <string name="sent_a_photo">Đã gửi một ảnh</string>
-  <string name="received_a_photo">Đã nhận một ảnh</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Báo cáo số không chính xác</string>
   <string name="report_caller_id_failed">Không thể báo cáo số</string>
   <string name="report_caller_id_toast">Đã báo cáo số</string>
diff --git a/java/com/android/dialer/calldetails/res/values-zh-rCN/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-zh-rCN/cm_strings.xml
new file mode 100644
index 0000000..be3ff69
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-zh-rCN/cm_strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="other">播放录音</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">没有找到可以回放所选录音的应用。</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml b/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml
index da52b45..f4f3e2d 100644
--- a/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zh-rCN/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">复制号码</string>
   <string name="call_details_edit_number">拨打电话之前修改号码</string>
   <string name="call_details_report_call_id">报告错误的号码</string>
-  <string name="sent_a_photo">发送了一张照片</string>
-  <string name="received_a_photo">收到了一张照片</string>
-  <string name="message_in_quotes">“%1$s”</string>
   <string name="report_caller_id_dialog_title">报告错误号码</string>
   <string name="report_caller_id_failed">无法报告错误的号码</string>
   <string name="report_caller_id_toast">已报告错误的号码</string>
diff --git a/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml b/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml
index 08c9a36..77c9e00 100644
--- a/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zh-rHK/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">複製號碼</string>
   <string name="call_details_edit_number">在撥打前編輯號碼</string>
   <string name="call_details_report_call_id">報告錯誤號碼</string>
-  <string name="sent_a_photo">已傳送相片</string>
-  <string name="received_a_photo">已收到相片</string>
-  <string name="message_in_quotes">「%1$s」</string>
   <string name="report_caller_id_dialog_title">報告不正確的號碼</string>
   <string name="report_caller_id_failed">無法報告號碼</string>
   <string name="report_caller_id_toast">已報告號碼</string>
diff --git a/java/com/android/dialer/calldetails/res/values-zh-rTW/cm_strings.xml b/java/com/android/dialer/calldetails/res/values-zh-rTW/cm_strings.xml
new file mode 100644
index 0000000..4e20080
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values-zh-rTW/cm_strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="other">播放錄音</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">沒有應用程式可以撥放已選擇的錄音。</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml b/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml
index 71825bc..a30474c 100644
--- a/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zh-rTW/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">複製號碼</string>
   <string name="call_details_edit_number">撥打電話前編輯號碼</string>
   <string name="call_details_report_call_id">回報號碼錯誤</string>
-  <string name="sent_a_photo">傳送了 1 張相片</string>
-  <string name="received_a_photo">收到了 1 張相片</string>
-  <string name="message_in_quotes">「%1$s」</string>
   <string name="report_caller_id_dialog_title">回報不正確的號碼</string>
   <string name="report_caller_id_failed">無法回報號碼</string>
   <string name="report_caller_id_toast">已回報號碼</string>
diff --git a/java/com/android/dialer/calldetails/res/values-zu/strings.xml b/java/com/android/dialer/calldetails/res/values-zu/strings.xml
index 13ecc25..84f5165 100644
--- a/java/com/android/dialer/calldetails/res/values-zu/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values-zu/strings.xml
@@ -5,9 +5,6 @@
   <string name="call_details_copy_number">Kopisha inombolo</string>
   <string name="call_details_edit_number">Hlela inombolo ngaphambi kokushaya ucingo</string>
   <string name="call_details_report_call_id">Bika inombolo engalungile</string>
-  <string name="sent_a_photo">Uthumele isithombe</string>
-  <string name="received_a_photo">Uthole isithombe</string>
-  <string name="message_in_quotes">\"%1$s\"</string>
   <string name="report_caller_id_dialog_title">Bika inombolo engalungile</string>
   <string name="report_caller_id_failed">Ayikwazanga ukubika inombolo</string>
   <string name="report_caller_id_toast">Inombolo ibikiwe</string>
diff --git a/java/com/android/dialer/calldetails/res/values/cm_strings.xml b/java/com/android/dialer/calldetails/res/values/cm_strings.xml
new file mode 100644
index 0000000..076a494
--- /dev/null
+++ b/java/com/android/dialer/calldetails/res/values/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="play_recordings">
+        <item quantity="one">Play recording</item>
+        <item quantity="other">Play recordings</item>
+    </plurals>
+    <string name="call_playback_no_app_found_toast">No app could be found for playback of the selected recording.</string>
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values/dimens.xml b/java/com/android/dialer/calldetails/res/values/dimens.xml
index 8c84b1b..895ef6d 100644
--- a/java/com/android/dialer/calldetails/res/values/dimens.xml
+++ b/java/com/android/dialer/calldetails/res/values/dimens.xml
@@ -31,8 +31,6 @@
   <dimen name="call_entry_text_left_margin">72dp</dimen>
 
   <!-- EC container -->
-  <dimen name="ec_container_height">48dp</dimen>
-  <dimen name="ec_photo_size">40dp</dimen>
   <dimen name="ec_divider_top_bottom_margin">8dp</dimen>
 
   <!-- Assisted Dialing -->
@@ -44,4 +42,4 @@
   <dimen name="ad_icon_margin_top_offset">2dp</dimen>
   <dimen name="ad_icon_margin_start_offset">60dp</dimen>
 
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/calldetails/res/values/strings.xml b/java/com/android/dialer/calldetails/res/values/strings.xml
index c3fff20..6f4fa8b 100644
--- a/java/com/android/dialer/calldetails/res/values/strings.xml
+++ b/java/com/android/dialer/calldetails/res/values/strings.xml
@@ -30,15 +30,6 @@
   <!-- Label for action to report a number with inaccurate caller id information. [CHAR LIMIT=48] -->
   <string name="call_details_report_call_id">Report inaccurate number</string>
 
-  <!-- String shown when the call details show a image that was sent -->
-  <string name="sent_a_photo">Sent a photo</string>
-
-  <!-- String shown when the call details show a image that was received -->
-  <string name="received_a_photo">Received a photo</string>
-
-  <!-- Messages shown to the user are wrapped in quotes, e.g. the user would see "Some text" -->
-  <string name="message_in_quotes">\"<xliff:g id="message">%1$s</xliff:g>\"</string>
-
   <!-- Title of dialog that confirms whether a user wants to report an incorrect number.
        [CHAR LIMIT=NONE] -->
   <string name="report_caller_id_dialog_title">Report incorrect number</string>
diff --git a/java/com/android/dialer/calldetails/res/values/styles.xml b/java/com/android/dialer/calldetails/res/values/styles.xml
index 4b861f5..b0b16d2 100644
--- a/java/com/android/dialer/calldetails/res/values/styles.xml
+++ b/java/com/android/dialer/calldetails/res/values/styles.xml
@@ -16,7 +16,6 @@
   -->
 <resources>
   <style name="CallDetailsActionItemStyle" parent="Dialer.TextAppearance.Secondary.Ellipsize">
-    <item name="android:foreground">?android:attr/selectableItemBackground</item>
     <item name="android:clickable">true</item>
     <item name="android:drawablePadding">28dp</item>
     <item name="android:gravity">center_vertical</item>
@@ -24,6 +23,7 @@
     <item name="android:paddingEnd">28dp</item>
     <item name="android:paddingTop">16dp</item>
     <item name="android:paddingBottom">16dp</item>
+    <item name="android:background">?android:attr/selectableItemBackground</item>
   </style>
 
   <style name="RttTranscriptLink">
@@ -38,4 +38,4 @@
     <item name="android:textAllCaps">false</item>
     <item name="textAllCaps">false</item>
   </style>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/callintent/CallIntent.java b/java/com/android/dialer/callintent/CallIntent.java
index 183eb16..dc875cc 100644
--- a/java/com/android/dialer/callintent/CallIntent.java
+++ b/java/com/android/dialer/callintent/CallIntent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,16 +23,16 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.SystemClock;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telecom.VideoProfile;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
-import com.android.dialer.performancereport.PerformanceReport;
 import com.android.dialer.util.CallUtil;
 import com.google.auto.value.AutoValue;
 import com.google.common.collect.ImmutableMap;
@@ -40,9 +41,6 @@
 /** Creates an intent to start a new outgoing call. */
 @AutoValue
 public abstract class CallIntent implements Parcelable {
-  private static int lightbringerButtonAppearInExpandedCallLogItemCount = 0;
-  private static int lightbringerButtonAppearInCollapsedCallLogItemCount = 0;
-  private static int lightbringerButtonAppearInSearchCount = 0;
 
   abstract Uri number();
 
@@ -122,39 +120,10 @@
 
     abstract ImmutableMap.Builder<String, Long> longPlaceCallExtrasBuilder();
 
-    public Builder addPlaceCallExtra(String key, String value) {
-      stringPlaceCallExtrasBuilder().put(key, value);
-      return this;
-    }
-
-    public Builder addPlaceCallExtra(String key, Long value) {
-      longPlaceCallExtrasBuilder().put(key, value);
-      return this;
-    }
-
     abstract CallIntent autoBuild();
 
     public Intent build() {
-      CallSpecificAppData.Builder builder =
-          CallSpecificAppData.newBuilder(callSpecificAppData())
-              .setLightbringerButtonAppearInExpandedCallLogItemCount(
-                  lightbringerButtonAppearInExpandedCallLogItemCount)
-              .setLightbringerButtonAppearInCollapsedCallLogItemCount(
-                  lightbringerButtonAppearInCollapsedCallLogItemCount)
-              .setLightbringerButtonAppearInSearchCount(lightbringerButtonAppearInSearchCount);
-      lightbringerButtonAppearInExpandedCallLogItemCount = 0;
-      lightbringerButtonAppearInCollapsedCallLogItemCount = 0;
-      lightbringerButtonAppearInSearchCount = 0;
-
-      if (PerformanceReport.isRecording()) {
-        builder
-            .setTimeSinceAppLaunch(PerformanceReport.getTimeSinceAppLaunch())
-            .setTimeSinceFirstClick(PerformanceReport.getTimeSinceFirstClick())
-            .addAllUiActionsSinceAppLaunch(PerformanceReport.getActions())
-            .addAllUiActionTimestampsSinceAppLaunch(PerformanceReport.getActionTimestamps())
-            .setStartingTabIndex(PerformanceReport.getStartingTabIndex());
-        PerformanceReport.stopRecording();
-      }
+      CallSpecificAppData.Builder builder = CallSpecificAppData.newBuilder(callSpecificAppData());
 
       setCallSpecificAppData(builder.build());
 
@@ -213,40 +182,6 @@
     return bundle;
   }
 
-  public static void increaseLightbringerCallButtonAppearInExpandedCallLogItemCount() {
-    CallIntent.lightbringerButtonAppearInExpandedCallLogItemCount++;
-  }
-
-  public static void increaseLightbringerCallButtonAppearInCollapsedCallLogItemCount() {
-    CallIntent.lightbringerButtonAppearInCollapsedCallLogItemCount++;
-  }
-
-  public static void increaseLightbringerCallButtonAppearInSearchCount() {
-    CallIntent.lightbringerButtonAppearInSearchCount++;
-  }
-
-  @VisibleForTesting
-  public static int getLightbringerButtonAppearInExpandedCallLogItemCount() {
-    return lightbringerButtonAppearInExpandedCallLogItemCount;
-  }
-
-  @VisibleForTesting
-  public static int getLightbringerButtonAppearInCollapsedCallLogItemCount() {
-    return lightbringerButtonAppearInCollapsedCallLogItemCount;
-  }
-
-  @VisibleForTesting
-  public static int getLightbringerButtonAppearInSearchCount() {
-    return lightbringerButtonAppearInSearchCount;
-  }
-
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public static void clearLightbringerCounts() {
-    lightbringerButtonAppearInCollapsedCallLogItemCount = 0;
-    lightbringerButtonAppearInExpandedCallLogItemCount = 0;
-    lightbringerButtonAppearInSearchCount = 0;
-  }
-
   @Override
   public int describeContents() {
     return 0;
@@ -276,7 +211,7 @@
         public CallIntent createFromParcel(Parcel source) {
           CallIntent.Builder callIntentBuilder = builder();
           ClassLoader classLoader = CallIntent.class.getClassLoader();
-          callIntentBuilder.setNumber(source.readParcelable(classLoader));
+          callIntentBuilder.setNumber(source.readParcelable(classLoader, Uri.class));
           CallSpecificAppData data;
           try {
             data = CallSpecificAppData.parseFrom(source.createByteArray());
@@ -285,7 +220,7 @@
           }
           callIntentBuilder
               .setCallSpecificAppData(data)
-              .setPhoneAccountHandle(source.readParcelable(classLoader))
+              .setPhoneAccountHandle(source.readParcelable(classLoader, PhoneAccountHandle.class))
               .setIsVideoCall(source.readInt() != 0)
               .setCallSubject(source.readString())
               .setAllowAssistedDial(source.readInt() != 0);
diff --git a/java/com/android/dialer/callintent/CallIntentBuilder.java b/java/com/android/dialer/callintent/CallIntentBuilder.java
index b7f7d76..8567cc3 100644
--- a/java/com/android/dialer/callintent/CallIntentBuilder.java
+++ b/java/com/android/dialer/callintent/CallIntentBuilder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,18 +23,18 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.SystemClock;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.Call.Details;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telecom.VideoProfile;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.callintent.CallInitiationType.Type;
 import com.android.dialer.common.Assert;
-import com.android.dialer.performancereport.PerformanceReport;
 import com.android.dialer.util.CallUtil;
 import com.google.protobuf.InvalidProtocolBufferException;
 
@@ -41,46 +42,22 @@
 public class CallIntentBuilder implements Parcelable {
   private Uri uri;
   private final CallSpecificAppData callSpecificAppData;
-  @Nullable private PhoneAccountHandle phoneAccountHandle;
+  @Nullable
+  private PhoneAccountHandle phoneAccountHandle;
   private boolean isVideoCall;
-  private boolean isDuoCall;
   private String callSubject;
   private boolean allowAssistedDial;
 
   private final Bundle inCallUiIntentExtras = new Bundle();
   private final Bundle placeCallExtras = new Bundle();
 
-  private static int lightbringerButtonAppearInExpandedCallLogItemCount = 0;
-  private static int lightbringerButtonAppearInCollapsedCallLogItemCount = 0;
-  private static int lightbringerButtonAppearInSearchCount = 0;
-
   public CallIntentBuilder(@NonNull Uri uri, @NonNull CallSpecificAppData callSpecificAppData) {
     this.uri = Assert.isNotNull(uri);
     Assert.isNotNull(callSpecificAppData);
     Assert.checkArgument(
         callSpecificAppData.getCallInitiationType() != CallInitiationType.Type.UNKNOWN_INITIATION);
 
-    CallSpecificAppData.Builder builder =
-        CallSpecificAppData.newBuilder(callSpecificAppData)
-            .setLightbringerButtonAppearInExpandedCallLogItemCount(
-                lightbringerButtonAppearInExpandedCallLogItemCount)
-            .setLightbringerButtonAppearInCollapsedCallLogItemCount(
-                lightbringerButtonAppearInCollapsedCallLogItemCount)
-            .setLightbringerButtonAppearInSearchCount(lightbringerButtonAppearInSearchCount);
-    lightbringerButtonAppearInExpandedCallLogItemCount = 0;
-    lightbringerButtonAppearInCollapsedCallLogItemCount = 0;
-    lightbringerButtonAppearInSearchCount = 0;
-
-    if (PerformanceReport.isRecording()) {
-      builder
-          .setTimeSinceAppLaunch(PerformanceReport.getTimeSinceAppLaunch())
-          .setTimeSinceFirstClick(PerformanceReport.getTimeSinceFirstClick())
-          .addAllUiActionsSinceAppLaunch(PerformanceReport.getActions())
-          .addAllUiActionTimestampsSinceAppLaunch(PerformanceReport.getActionTimestamps())
-          .setStartingTabIndex(PerformanceReport.getStartingTabIndex());
-      PerformanceReport.stopRecording();
-    }
-
+    CallSpecificAppData.Builder builder = CallSpecificAppData.newBuilder(callSpecificAppData);
     this.callSpecificAppData = builder.build();
   }
 
@@ -99,7 +76,7 @@
 
   public CallIntentBuilder(@NonNull Parcel parcel) {
     ClassLoader classLoader = CallIntentBuilder.class.getClassLoader();
-    uri = parcel.readParcelable(classLoader);
+    uri = parcel.readParcelable(classLoader, Uri.class);
     CallSpecificAppData data;
     try {
       data = CallSpecificAppData.parseFrom(parcel.createByteArray());
@@ -107,9 +84,8 @@
       data = createCallSpecificAppData(Type.UNKNOWN_INITIATION);
     }
     callSpecificAppData = data;
-    phoneAccountHandle = parcel.readParcelable(classLoader);
+    phoneAccountHandle = parcel.readParcelable(classLoader, PhoneAccountHandle.class);
     isVideoCall = parcel.readInt() != 0;
-    isDuoCall = parcel.readInt() != 0;
     callSubject = parcel.readString();
     allowAssistedDial = parcel.readInt() != 0;
     inCallUiIntentExtras.putAll(parcel.readBundle(classLoader));
@@ -153,15 +129,6 @@
     return isVideoCall;
   }
 
-  public CallIntentBuilder setIsDuoCall(boolean isDuoCall) {
-    this.isDuoCall = isDuoCall;
-    return this;
-  }
-
-  public boolean isDuoCall() {
-    return isDuoCall;
-  }
-
   /** Default false. Should only be set to true if the number has a lookup URI. */
   public CallIntentBuilder setAllowAssistedDial(boolean allowAssistedDial) {
     this.allowAssistedDial = allowAssistedDial;
@@ -177,10 +144,6 @@
     return this;
   }
 
-  public String getCallSubject() {
-    return callSubject;
-  }
-
   /** Additional data the in call UI can read with {@link Details#getIntentExtras()} */
   public Bundle getInCallUiIntentExtras() {
     return inCallUiIntentExtras;
@@ -232,40 +195,6 @@
     return callSpecificAppData;
   }
 
-  public static void increaseLightbringerCallButtonAppearInExpandedCallLogItemCount() {
-    CallIntentBuilder.lightbringerButtonAppearInExpandedCallLogItemCount++;
-  }
-
-  public static void increaseLightbringerCallButtonAppearInCollapsedCallLogItemCount() {
-    CallIntentBuilder.lightbringerButtonAppearInCollapsedCallLogItemCount++;
-  }
-
-  public static void increaseLightbringerCallButtonAppearInSearchCount() {
-    CallIntentBuilder.lightbringerButtonAppearInSearchCount++;
-  }
-
-  @VisibleForTesting
-  public static int getLightbringerButtonAppearInExpandedCallLogItemCount() {
-    return lightbringerButtonAppearInExpandedCallLogItemCount;
-  }
-
-  @VisibleForTesting
-  public static int getLightbringerButtonAppearInCollapsedCallLogItemCount() {
-    return lightbringerButtonAppearInCollapsedCallLogItemCount;
-  }
-
-  @VisibleForTesting
-  public static int getLightbringerButtonAppearInSearchCount() {
-    return lightbringerButtonAppearInSearchCount;
-  }
-
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public static void clearLightbringerCounts() {
-    lightbringerButtonAppearInCollapsedCallLogItemCount = 0;
-    lightbringerButtonAppearInExpandedCallLogItemCount = 0;
-    lightbringerButtonAppearInSearchCount = 0;
-  }
-
   @Override
   public int describeContents() {
     return 0;
@@ -277,7 +206,6 @@
     dest.writeByteArray(callSpecificAppData.toByteArray());
     dest.writeParcelable(phoneAccountHandle, flags);
     dest.writeInt(isVideoCall ? 1 : 0);
-    dest.writeInt(isDuoCall ? 1 : 0);
     dest.writeString(callSubject);
     dest.writeInt(allowAssistedDial ? 1 : 0);
     dest.writeBundle(inCallUiIntentExtras);
diff --git a/java/com/android/dialer/callintent/CallIntentParser.java b/java/com/android/dialer/callintent/CallIntentParser.java
index 336adb6..0802331 100644
--- a/java/com/android/dialer/callintent/CallIntentParser.java
+++ b/java/com/android/dialer/callintent/CallIntentParser.java
@@ -17,8 +17,10 @@
 package com.android.dialer.callintent;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.protos.ProtoParsers;
 
@@ -48,7 +50,7 @@
   }
 
   public static void putCallSpecificAppData(
-      @NonNull Bundle extras, @NonNull CallSpecificAppData callSpecificAppData) {
+          @NonNull Bundle extras, @NonNull CallSpecificAppData callSpecificAppData) {
     ProtoParsers.put(extras, Constants.EXTRA_CALL_SPECIFIC_APP_DATA, callSpecificAppData);
   }
 
diff --git a/java/com/android/dialer/callintent/call_specific_app_data.proto b/java/com/android/dialer/callintent/call_specific_app_data.proto
index 2ec9030..094f891 100644
--- a/java/com/android/dialer/callintent/call_specific_app_data.proto
+++ b/java/com/android/dialer/callintent/call_specific_app_data.proto
@@ -7,8 +7,6 @@
 package com.android.dialer.callintent;
 
 import "java/com/android/dialer/callintent/call_initiation_type.proto";
-import "java/com/android/dialer/callintent/speed_dial_contact_type.proto";
-import "java/com/android/dialer/logging/ui_action.proto";
 
 // Miscellaneous data that's included in a new outgoing call initiated by
 // Dialer. The system will pass this data to the InCallUi which can use it
@@ -17,30 +15,6 @@
 message CallSpecificAppData {
   optional CallInitiationType.Type call_initiation_type = 1;
 
-  optional int32 position_of_selected_search_result = 2;
-
-  optional int32 characters_in_search_string = 3;
-
-  repeated SpeedDialContactType.Type speed_dial_contact_type = 4;
-  optional int32 speed_dial_contact_position = 5;
-
-  optional int64 time_since_app_launch = 6;
-  optional int64 time_since_first_click = 7;
-  // The following two list should be of the same length
-  // (adding another message is not allowed here)
-  repeated com.android.dialer.logging.UiAction.Type
-      ui_actions_since_app_launch = 8;
-  repeated int64 ui_action_timestamps_since_app_launch = 9;
-
-  optional int32 starting_tab_index = 10;
-
-  // For recording the appearance of video call button
-  optional int32 lightbringer_button_appear_in_expanded_call_log_item_count =
-      11;
-  optional int32 lightbringer_button_appear_in_collapsed_call_log_item_count =
-      12;
-  optional int32 lightbringer_button_appear_in_search_count = 13;
-
   // Indicates that the call is open to modification from assisted dialing.
-  optional bool allow_assisted_dialing = 14;
+  optional bool allow_assisted_dialing = 2;
 }
diff --git a/java/com/android/dialer/callintent/speed_dial_contact_type.proto b/java/com/android/dialer/callintent/speed_dial_contact_type.proto
deleted file mode 100644
index df14f41..0000000
--- a/java/com/android/dialer/callintent/speed_dial_contact_type.proto
+++ /dev/null
@@ -1,20 +0,0 @@
-syntax = "proto2";
-
-option java_package = "com.android.dialer.callintent";
-option java_multiple_files = true;
-
-
-package com.android.dialer.callintent;
-
-
-
-// The type of speed call contact (favorites). Applies to initiation type
-// SPEED_DIAL only.
-message SpeedDialContactType {
-  enum Type {
-    UNDEFINED = 0;
-    PINNED_CONTACT = 1;
-    STARRED_CONTACT = 2;
-    FREQUENT_CONTACT = 3;
-  }
-}
diff --git a/java/com/android/dialer/calllog/AndroidManifest.xml b/java/com/android/dialer/calllog/AndroidManifest.xml
deleted file mode 100644
index 35a798e..0000000
--- a/java/com/android/dialer/calllog/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.calllog">
-
-  <uses-sdk
-      android:minSdkVersion="24"
-      android:targetSdkVersion="30"/>
-
-  <application>
-
-    <service
-        android:exported="false"
-        android:name=".CallLogConfig$PollingJob"
-        android:permission="android.permission.BIND_JOB_SERVICE"/>
-
-  </application>
-
-</manifest>
diff --git a/java/com/android/dialer/calllog/AnnotatedCallLogMigrator.java b/java/com/android/dialer/calllog/AnnotatedCallLogMigrator.java
index 71bfb75..5edf217 100644
--- a/java/com/android/dialer/calllog/AnnotatedCallLogMigrator.java
+++ b/java/com/android/dialer/calllog/AnnotatedCallLogMigrator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.dialer.calllog;
 
 import android.content.SharedPreferences;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.storage.Unencrypted;
@@ -24,6 +26,7 @@
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
+
 import javax.inject.Inject;
 
 /**
diff --git a/java/com/android/dialer/calllog/CallLogCacheUpdater.java b/java/com/android/dialer/calllog/CallLogCacheUpdater.java
index 008e2cc..cdf52a9 100644
--- a/java/com/android/dialer/calllog/CallLogCacheUpdater.java
+++ b/java/com/android/dialer/calllog/CallLogCacheUpdater.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,7 +26,7 @@
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.annotation.VisibleForTesting;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.NumberAttributes;
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
@@ -37,9 +38,11 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.stream.Stream;
+
 import javax.inject.Inject;
 
 /**
@@ -57,7 +60,7 @@
    * trigger a call log refresh, so the updater can only do a single batch. If there are more
    * operations it will be truncated. Under normal circumstances there will only be 1 operation
    */
-  @VisibleForTesting static final int CACHE_UPDATE_LIMIT = 100;
+  private static final int CACHE_UPDATE_LIMIT = 100;
 
   @Inject
   CallLogCacheUpdater(
diff --git a/java/com/android/dialer/calllog/CallLogComponent.java b/java/com/android/dialer/calllog/CallLogComponent.java
index 4f147f1..824b4d6 100644
--- a/java/com/android/dialer/calllog/CallLogComponent.java
+++ b/java/com/android/dialer/calllog/CallLogComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,10 @@
 package com.android.dialer.calllog;
 
 import android.content.Context;
+
 import com.android.dialer.calllog.notifier.RefreshAnnotatedCallLogNotifier;
 import com.android.dialer.inject.HasRootComponent;
+
 import dagger.Subcomponent;
 
 /** Dagger component for the call log package. */
diff --git a/java/com/android/dialer/calllog/CallLogFramework.java b/java/com/android/dialer/calllog/CallLogFramework.java
index be4db06..d447eb1 100644
--- a/java/com/android/dialer/calllog/CallLogFramework.java
+++ b/java/com/android/dialer/calllog/CallLogFramework.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,20 +17,18 @@
 
 package com.android.dialer.calllog;
 
-import android.content.Context;
-import android.content.Intent;
-import android.support.v4.content.LocalBroadcastManager;
 import com.android.dialer.calllog.datasources.CallLogDataSource;
 import com.android.dialer.calllog.datasources.DataSources;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.Ui;
-import com.android.dialer.inject.ApplicationContext;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.ArrayList;
 import java.util.List;
+
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
@@ -41,7 +40,6 @@
 @Singleton
 public final class CallLogFramework {
 
-  private final Context appContext;
   private final DataSources dataSources;
   private final AnnotatedCallLogMigrator annotatedCallLogMigrator;
   private final ListeningExecutorService uiExecutor;
@@ -49,12 +47,10 @@
 
   @Inject
   CallLogFramework(
-      @ApplicationContext Context appContext,
       DataSources dataSources,
       AnnotatedCallLogMigrator annotatedCallLogMigrator,
       @Ui ListeningExecutorService uiExecutor,
       CallLogState callLogState) {
-    this.appContext = appContext;
     this.dataSources = dataSources;
     this.annotatedCallLogMigrator = annotatedCallLogMigrator;
     this.uiExecutor = uiExecutor;
@@ -100,16 +96,7 @@
 
     return Futures.transform(
         Futures.allAsList(allFutures),
-        unused -> {
-          // Send a broadcast to the OldMainActivityPeer to remove the NewCallLogFragment and
-          // NewVoicemailFragment if it is currently attached. If this is not done, user interaction
-          // with the fragment could cause call log framework state to be unexpectedly written. For
-          // example scrolling could cause the AnnotatedCallLog to be read (which would trigger
-          // database creation).
-          LocalBroadcastManager.getInstance(appContext)
-              .sendBroadcastSync(new Intent("disableCallLogFramework"));
-          return null;
-        },
+        unused -> null,
         uiExecutor);
   }
 }
diff --git a/java/com/android/dialer/calllog/CallLogModule.java b/java/com/android/dialer/calllog/CallLogModule.java
index 0e3a3be..48a4c90 100644
--- a/java/com/android/dialer/calllog/CallLogModule.java
+++ b/java/com/android/dialer/calllog/CallLogModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,14 +23,12 @@
 import com.android.dialer.calllog.datasources.phonelookup.PhoneLookupDataSource;
 import com.android.dialer.calllog.datasources.systemcalllog.SystemCallLogDataSource;
 import com.android.dialer.calllog.datasources.voicemail.VoicemailDataSource;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
 import com.google.common.collect.ImmutableList;
+
 import dagger.Module;
 import dagger.Provides;
 
 /** Dagger module which satisfies call log dependencies. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module(includes = CallLogDatabaseModule.class)
 public abstract class CallLogModule {
 
diff --git a/java/com/android/dialer/calllog/CallLogState.java b/java/com/android/dialer/calllog/CallLogState.java
index 6d2ec1e..e1a1d36 100644
--- a/java/com/android/dialer/calllog/CallLogState.java
+++ b/java/com/android/dialer/calllog/CallLogState.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,12 +18,14 @@
 package com.android.dialer.calllog;
 
 import android.content.SharedPreferences;
-import android.support.annotation.AnyThread;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.AnyThread;
+
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.storage.Unencrypted;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import javax.annotation.concurrent.ThreadSafe;
 import javax.inject.Inject;
 
@@ -35,7 +38,6 @@
   private final SharedPreferences sharedPreferences;
   private final ListeningExecutorService backgroundExecutor;
 
-  @VisibleForTesting
   @Inject
   public CallLogState(
       @Unencrypted SharedPreferences sharedPreferences,
diff --git a/java/com/android/dialer/calllog/ClearMissedCalls.java b/java/com/android/dialer/calllog/ClearMissedCalls.java
index 56c8e57..545cd6e 100644
--- a/java/com/android/dialer/calllog/ClearMissedCalls.java
+++ b/java/com/android/dialer/calllog/ClearMissedCalls.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,7 +22,9 @@
 import android.content.Context;
 import android.net.Uri;
 import android.provider.CallLog.Calls;
-import android.support.v4.os.UserManagerCompat;
+
+import androidx.core.os.UserManagerCompat;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.common.concurrent.Annotations.Ui;
@@ -34,7 +37,9 @@
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.Collection;
+
 import javax.inject.Inject;
 
 /**
diff --git a/java/com/android/dialer/calllog/RefreshAnnotatedCallLogReceiver.java b/java/com/android/dialer/calllog/RefreshAnnotatedCallLogReceiver.java
deleted file mode 100644
index 4a7ce0b..0000000
--- a/java/com/android/dialer/calllog/RefreshAnnotatedCallLogReceiver.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.calllog;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.support.annotation.Nullable;
-import com.android.dialer.calllog.RefreshAnnotatedCallLogWorker.RefreshResult;
-import com.android.dialer.calllog.constants.IntentNames;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.LoggingBindings;
-import com.android.dialer.metrics.FutureTimer;
-import com.android.dialer.metrics.Metrics;
-import com.android.dialer.metrics.MetricsComponent;
-import com.google.common.base.Function;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.MoreExecutors;
-
-/**
- * A {@link BroadcastReceiver} that starts/cancels refreshing the annotated call log when notified.
- */
-public final class RefreshAnnotatedCallLogReceiver extends BroadcastReceiver {
-
-  /**
-   * This is a reasonable time that it might take between related call log writes, that also
-   * shouldn't slow down single-writes too much. For example, when populating the database using the
-   * simulator, using this value results in ~6 refresh cycles (on a release build) to write 120 call
-   * log entries.
-   */
-  private static final long REFRESH_ANNOTATED_CALL_LOG_WAIT_MILLIS = 100L;
-
-  private final RefreshAnnotatedCallLogWorker refreshAnnotatedCallLogWorker;
-  private final FutureTimer futureTimer;
-  private final LoggingBindings logger;
-
-  @Nullable private Runnable refreshAnnotatedCallLogRunnable;
-
-  /** Returns an {@link IntentFilter} containing all actions accepted by this broadcast receiver. */
-  public static IntentFilter getIntentFilter() {
-    IntentFilter intentFilter = new IntentFilter();
-    intentFilter.addAction(IntentNames.ACTION_REFRESH_ANNOTATED_CALL_LOG);
-    intentFilter.addAction(IntentNames.ACTION_CANCEL_REFRESHING_ANNOTATED_CALL_LOG);
-    return intentFilter;
-  }
-
-  public RefreshAnnotatedCallLogReceiver(Context context) {
-    refreshAnnotatedCallLogWorker =
-        CallLogComponent.get(context).getRefreshAnnotatedCallLogWorker();
-    futureTimer = MetricsComponent.get(context).futureTimer();
-    logger = Logger.get(context);
-  }
-
-  @Override
-  public void onReceive(Context context, Intent intent) {
-    LogUtil.enterBlock("RefreshAnnotatedCallLogReceiver.onReceive");
-
-    String action = intent.getAction();
-
-    if (IntentNames.ACTION_REFRESH_ANNOTATED_CALL_LOG.equals(action)) {
-      boolean checkDirty = intent.getBooleanExtra(IntentNames.EXTRA_CHECK_DIRTY, false);
-      refreshAnnotatedCallLog(checkDirty);
-    } else if (IntentNames.ACTION_CANCEL_REFRESHING_ANNOTATED_CALL_LOG.equals(action)) {
-      cancelRefreshingAnnotatedCallLog();
-    }
-  }
-
-  /**
-   * Request a refresh of the annotated call log.
-   *
-   * <p>Note that the execution will be delayed by {@link #REFRESH_ANNOTATED_CALL_LOG_WAIT_MILLIS}.
-   * Once the work begins, it can't be cancelled.
-   *
-   * @see #cancelRefreshingAnnotatedCallLog()
-   */
-  private void refreshAnnotatedCallLog(boolean checkDirty) {
-    LogUtil.enterBlock("RefreshAnnotatedCallLogReceiver.refreshAnnotatedCallLog");
-
-    // If we already scheduled a refresh, cancel it and schedule a new one so that repeated requests
-    // in quick succession don't result in too much work. For example, if we get 10 requests in
-    // 10ms, and a complete refresh takes a constant 200ms, the refresh will take 300ms (100ms wait
-    // and 1 iteration @200ms) instead of 2 seconds (10 iterations @ 200ms) since the work requests
-    // are serialized in RefreshAnnotatedCallLogWorker.
-    //
-    // We might get many requests in quick succession, for example, when the simulator inserts
-    // hundreds of rows into the system call log, or when the data for a new call is incrementally
-    // written to different columns as it becomes available.
-    ThreadUtil.getUiThreadHandler().removeCallbacks(refreshAnnotatedCallLogRunnable);
-
-    refreshAnnotatedCallLogRunnable =
-        () -> {
-          ListenableFuture<RefreshResult> future =
-              checkDirty
-                  ? refreshAnnotatedCallLogWorker.refreshWithDirtyCheck()
-                  : refreshAnnotatedCallLogWorker.refreshWithoutDirtyCheck();
-          Futures.addCallback(
-              future,
-              new FutureCallback<RefreshResult>() {
-                @Override
-                public void onSuccess(RefreshResult refreshResult) {
-                  logger.logImpression(getImpressionType(checkDirty, refreshResult));
-                }
-
-                @Override
-                public void onFailure(Throwable throwable) {
-                  ThreadUtil.getUiThreadHandler()
-                      .post(
-                          () -> {
-                            throw new RuntimeException(throwable);
-                          });
-                }
-              },
-              MoreExecutors.directExecutor());
-          futureTimer.applyTiming(future, new EventNameFromResultFunction(checkDirty));
-        };
-
-    ThreadUtil.getUiThreadHandler()
-        .postDelayed(refreshAnnotatedCallLogRunnable, REFRESH_ANNOTATED_CALL_LOG_WAIT_MILLIS);
-  }
-
-  /**
-   * When a refresh is requested, its execution is delayed (see {@link
-   * #refreshAnnotatedCallLog(boolean)}). This method only cancels the refresh if it hasn't started.
-   */
-  private void cancelRefreshingAnnotatedCallLog() {
-    LogUtil.enterBlock("RefreshAnnotatedCallLogReceiver.cancelRefreshingAnnotatedCallLog");
-
-    ThreadUtil.getUiThreadHandler().removeCallbacks(refreshAnnotatedCallLogRunnable);
-  }
-
-  private static class EventNameFromResultFunction implements Function<RefreshResult, String> {
-
-    private final boolean checkDirty;
-
-    private EventNameFromResultFunction(boolean checkDirty) {
-      this.checkDirty = checkDirty;
-    }
-
-    @Override
-    public String apply(RefreshResult refreshResult) {
-      switch (refreshResult) {
-        case NOT_DIRTY:
-          return Metrics.ANNOTATED_CALL_LOG_NOT_DIRTY; // NOT_DIRTY implies forceRefresh is false
-        case REBUILT_BUT_NO_CHANGES_NEEDED:
-          return checkDirty
-              ? Metrics.ANNOTATED_LOG_NO_CHANGES_NEEDED
-              : Metrics.NEW_CALL_LOG_FORCE_REFRESH_NO_CHANGES_NEEDED;
-        case REBUILT_AND_CHANGES_NEEDED:
-          return checkDirty
-              ? Metrics.ANNOTATED_CALL_LOG_CHANGES_NEEDED
-              : Metrics.ANNOTATED_CALL_LOG_FORCE_REFRESH_CHANGES_NEEDED;
-        default:
-          throw new IllegalStateException("Unsupported result: " + refreshResult);
-      }
-    }
-  }
-
-  private static DialerImpression.Type getImpressionType(
-      boolean checkDirty, RefreshResult refreshResult) {
-    switch (refreshResult) {
-      case NOT_DIRTY:
-        return DialerImpression.Type.ANNOTATED_CALL_LOG_NOT_DIRTY;
-      case REBUILT_BUT_NO_CHANGES_NEEDED:
-        return checkDirty
-            ? DialerImpression.Type.ANNOTATED_CALL_LOG_NO_CHANGES_NEEDED
-            : DialerImpression.Type.ANNOTATED_CALL_LOG_FORCE_REFRESH_NO_CHANGES_NEEDED;
-      case REBUILT_AND_CHANGES_NEEDED:
-        return checkDirty
-            ? DialerImpression.Type.ANNOTATED_CALL_LOG_CHANGES_NEEDED
-            : DialerImpression.Type.ANNOTATED_CALL_LOG_FORCE_REFRESH_CHANGES_NEEDED;
-      default:
-        throw new IllegalStateException("Unsupported result: " + refreshResult);
-    }
-  }
-}
diff --git a/java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java b/java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java
index 7d6a000..8031bc7 100644
--- a/java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java
+++ b/java/com/android/dialer/calllog/RefreshAnnotatedCallLogWorker.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
+
 import com.android.dialer.calllog.constants.SharedPrefKeys;
 import com.android.dialer.calllog.database.MutationApplier;
 import com.android.dialer.calllog.datasources.CallLogDataSource;
@@ -39,8 +41,10 @@
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.ArrayList;
 import java.util.List;
+
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
diff --git a/java/com/android/dialer/calllog/config/AndroidManifest.xml b/java/com/android/dialer/calllog/config/AndroidManifest.xml
deleted file mode 100644
index 80ba1d5..0000000
--- a/java/com/android/dialer/calllog/config/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.calllog.config">
-
-  <uses-sdk
-      android:minSdkVersion="24"
-      android:targetSdkVersion="30"/>
-
-  <application>
-
-    <service
-        android:exported="false"
-        android:name=".CallLogConfigImpl$PollingJob"
-        android:permission="android.permission.BIND_JOB_SERVICE"/>
-
-  </application>
-
-</manifest>
diff --git a/java/com/android/dialer/calllog/config/CallLogConfig.java b/java/com/android/dialer/calllog/config/CallLogConfig.java
deleted file mode 100644
index 15fd5c1..0000000
--- a/java/com/android/dialer/calllog/config/CallLogConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.calllog.config;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/** Determines if new call log components are enabled. */
-public interface CallLogConfig {
-
-  /**
-   * Updates the config values. This may kick off a lot of work so should be done infrequently, for
-   * example by a scheduled job or broadcast receiver which rarely fires.
-   */
-  ListenableFuture<Void> update();
-
-  boolean isNewCallLogFragmentEnabled();
-
-  boolean isNewVoicemailFragmentEnabled();
-
-  boolean isNewPeerEnabled();
-
-  boolean isCallLogFrameworkEnabled();
-
-  /** Schedules a job to periodically update the config. */
-  void schedulePollingJob();
-}
diff --git a/java/com/android/dialer/calllog/config/CallLogConfigComponent.java b/java/com/android/dialer/calllog/config/CallLogConfigComponent.java
deleted file mode 100644
index 7aaf638..0000000
--- a/java/com/android/dialer/calllog/config/CallLogConfigComponent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.dialer.calllog.config;
-
-import android.content.Context;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-
-/** Dagger component for the call log config. */
-@Subcomponent
-public abstract class CallLogConfigComponent {
-
-  public abstract CallLogConfig callLogConfig();
-
-  public static CallLogConfigComponent get(Context context) {
-    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
-        .callLogConfigComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  @IncludeInDialerRoot
-  public interface HasComponent {
-    CallLogConfigComponent callLogConfigComponent();
-  }
-}
diff --git a/java/com/android/dialer/calllog/config/CallLogConfigImpl.java b/java/com/android/dialer/calllog/config/CallLogConfigImpl.java
deleted file mode 100644
index 9c7f472..0000000
--- a/java/com/android/dialer/calllog/config/CallLogConfigImpl.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.calllog.config;
-
-import android.annotation.SuppressLint;
-import android.app.job.JobInfo;
-import android.app.job.JobParameters;
-import android.app.job.JobScheduler;
-import android.app.job.JobService;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.support.v4.os.UserManagerCompat;
-import com.android.dialer.calllog.CallLogFramework;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.configprovider.ConfigProvider;
-import com.android.dialer.constants.ScheduledJobIds;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.storage.Unencrypted;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import java.util.concurrent.TimeUnit;
-import javax.inject.Inject;
-
-/**
- * Determines if new call log components are enabled.
- *
- * <p>When the underlying flag values from the {@link ConfigProvider} changes, it is necessary to do
- * work such as registering/unregistering content observers, and this class is responsible for
- * coordinating that work.
- *
- * <p>New UI application components should use this class instead of reading flags directly from the
- * {@link ConfigProvider}.
- */
-public final class CallLogConfigImpl implements CallLogConfig {
-
-  private static final String NEW_CALL_LOG_FRAGMENT_ENABLED_PREF_KEY = "newCallLogFragmentEnabled";
-  private static final String NEW_VOICEMAIL_FRAGMENT_ENABLED_PREF_KEY =
-      "newVoicemailFragmentEnabled";
-  private static final String NEW_PEER_ENABLED_PREF_KEY = "newPeerEnabled";
-  private static final String NEW_CALL_LOG_FRAMEWORK_ENABLED_PREF_KEY =
-      "newCallLogFrameworkEnabled";
-
-  private final Context appContext;
-  private final CallLogFramework callLogFramework;
-  private final SharedPreferences sharedPreferences;
-  private final ConfigProvider configProvider;
-  private final ListeningExecutorService backgroundExecutor;
-
-  @Inject
-  public CallLogConfigImpl(
-      @ApplicationContext Context appContext,
-      CallLogFramework callLogFramework,
-      @Unencrypted SharedPreferences sharedPreferences,
-      ConfigProvider configProvider,
-      @BackgroundExecutor ListeningExecutorService backgroundExecutor) {
-    this.appContext = appContext;
-    this.callLogFramework = callLogFramework;
-    this.sharedPreferences = sharedPreferences;
-    this.configProvider = configProvider;
-    this.backgroundExecutor = backgroundExecutor;
-  }
-
-  @Override
-  public ListenableFuture<Void> update() {
-    boolean newCallLogFragmentEnabledInConfigProvider =
-        configProvider.getBoolean("new_call_log_fragment_enabled", false);
-    boolean newVoicemailFragmentEnabledInConfigProvider =
-        configProvider.getBoolean("new_voicemail_fragment_enabled", false);
-    boolean newPeerEnabledInConfigProvider = configProvider.getBoolean("nui_peer_enabled", false);
-
-    boolean isCallLogFrameworkEnabled = isCallLogFrameworkEnabled();
-    boolean callLogFrameworkShouldBeEnabled =
-        newCallLogFragmentEnabledInConfigProvider
-            || newVoicemailFragmentEnabledInConfigProvider
-            || newPeerEnabledInConfigProvider;
-
-    if (callLogFrameworkShouldBeEnabled && !isCallLogFrameworkEnabled) {
-      return Futures.transform(
-          callLogFramework.enable(),
-          unused -> {
-            // Reflect the flag changes only after the framework is enabled.
-            sharedPreferences
-                .edit()
-                .putBoolean(
-                    NEW_CALL_LOG_FRAGMENT_ENABLED_PREF_KEY,
-                    newCallLogFragmentEnabledInConfigProvider)
-                .putBoolean(
-                    NEW_VOICEMAIL_FRAGMENT_ENABLED_PREF_KEY,
-                    newVoicemailFragmentEnabledInConfigProvider)
-                .putBoolean(NEW_PEER_ENABLED_PREF_KEY, newPeerEnabledInConfigProvider)
-                .putBoolean(NEW_CALL_LOG_FRAMEWORK_ENABLED_PREF_KEY, true)
-                .apply();
-            return null;
-          },
-          backgroundExecutor);
-    } else if (!callLogFrameworkShouldBeEnabled && isCallLogFrameworkEnabled) {
-      // Reflect the flag changes before disabling the framework.
-      ListenableFuture<Void> writeSharedPrefsFuture =
-          backgroundExecutor.submit(
-              () -> {
-                sharedPreferences
-                    .edit()
-                    .putBoolean(NEW_CALL_LOG_FRAGMENT_ENABLED_PREF_KEY, false)
-                    .putBoolean(NEW_VOICEMAIL_FRAGMENT_ENABLED_PREF_KEY, false)
-                    .putBoolean(NEW_PEER_ENABLED_PREF_KEY, false)
-                    .putBoolean(NEW_CALL_LOG_FRAMEWORK_ENABLED_PREF_KEY, false)
-                    .apply();
-                return null;
-              });
-      return Futures.transformAsync(
-          writeSharedPrefsFuture,
-          unused -> callLogFramework.disable(),
-          MoreExecutors.directExecutor());
-    } else {
-      // We didn't need to enable/disable the framework, but we still need to update the
-      // individual flags.
-      return backgroundExecutor.submit(
-          () -> {
-            sharedPreferences
-                .edit()
-                .putBoolean(
-                    NEW_CALL_LOG_FRAGMENT_ENABLED_PREF_KEY,
-                    newCallLogFragmentEnabledInConfigProvider)
-                .putBoolean(
-                    NEW_VOICEMAIL_FRAGMENT_ENABLED_PREF_KEY,
-                    newVoicemailFragmentEnabledInConfigProvider)
-                .putBoolean(NEW_PEER_ENABLED_PREF_KEY, newPeerEnabledInConfigProvider)
-                .apply();
-            return null;
-          });
-    }
-  }
-
-  @Override
-  public boolean isNewCallLogFragmentEnabled() {
-    return sharedPreferences.getBoolean(NEW_CALL_LOG_FRAGMENT_ENABLED_PREF_KEY, false);
-  }
-
-  @Override
-  public boolean isNewVoicemailFragmentEnabled() {
-    return sharedPreferences.getBoolean(NEW_VOICEMAIL_FRAGMENT_ENABLED_PREF_KEY, false);
-  }
-
-  @Override
-  public boolean isNewPeerEnabled() {
-    return sharedPreferences.getBoolean(NEW_PEER_ENABLED_PREF_KEY, false);
-  }
-
-  /**
-   * Returns true if the new call log framework is enabled, meaning that content observers are
-   * firing and PhoneLookupHistory is being populated, etc.
-   */
-  @Override
-  public boolean isCallLogFrameworkEnabled() {
-    return sharedPreferences.getBoolean(NEW_CALL_LOG_FRAMEWORK_ENABLED_PREF_KEY, false);
-  }
-
-  @Override
-  public void schedulePollingJob() {
-    if (UserManagerCompat.isUserUnlocked(appContext)) {
-      JobScheduler jobScheduler = Assert.isNotNull(appContext.getSystemService(JobScheduler.class));
-      @SuppressLint("MissingPermission") // Dialer has RECEIVE_BOOT permission
-      JobInfo jobInfo =
-          new JobInfo.Builder(
-                  ScheduledJobIds.CALL_LOG_CONFIG_POLLING_JOB,
-                  new ComponentName(appContext, PollingJob.class))
-              .setPeriodic(TimeUnit.HOURS.toMillis(24))
-              .setPersisted(true)
-              .setRequiresCharging(true)
-              .setRequiresDeviceIdle(true)
-              .build();
-      LogUtil.i("CallLogConfigImpl.schedulePollingJob", "scheduling");
-      jobScheduler.schedule(jobInfo);
-    }
-  }
-
-  /**
-   * Job which periodically force updates the {@link CallLogConfig}. This job is necessary to
-   * support {@link ConfigProvider ConfigProviders} which do not provide a reliable mechanism for
-   * listening to changes and calling {@link CallLogConfig#update()} directly, such as the {@link
-   * com.android.dialer.configprovider.SharedPrefConfigProvider}.
-   */
-  public static final class PollingJob extends JobService {
-
-    @Override
-    public boolean onStartJob(JobParameters params) {
-      LogUtil.enterBlock("PollingJob.onStartJob");
-      Futures.addCallback(
-          CallLogConfigComponent.get(getApplicationContext()).callLogConfig().update(),
-          new FutureCallback<Void>() {
-            @Override
-            public void onSuccess(Void unused) {
-              jobFinished(params, false /* needsReschedule */);
-            }
-
-            @Override
-            public void onFailure(Throwable throwable) {
-              ThreadUtil.getUiThreadHandler()
-                  .post(
-                      () -> {
-                        throw new RuntimeException(throwable);
-                      });
-              jobFinished(params, false /* needsReschedule */);
-            }
-          },
-          MoreExecutors.directExecutor());
-      return true;
-    }
-
-    @Override
-    public boolean onStopJob(JobParameters params) {
-      return false;
-    }
-  }
-}
diff --git a/java/com/android/dialer/calllog/config/CallLogConfigModule.java b/java/com/android/dialer/calllog/config/CallLogConfigModule.java
deleted file mode 100644
index d982e2b..0000000
--- a/java/com/android/dialer/calllog/config/CallLogConfigModule.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.calllog.config;
-
-import dagger.Binds;
-import dagger.Module;
-
-/** Binds {@link CallLogConfigImpl}. */
-@Module
-public abstract class CallLogConfigModule {
-  @Binds
-  abstract CallLogConfig to(CallLogConfigImpl impl);
-}
diff --git a/java/com/android/dialer/calllog/database/AndroidManifest.xml b/java/com/android/dialer/calllog/database/AndroidManifest.xml
deleted file mode 100644
index 396a6d9..0000000
--- a/java/com/android/dialer/calllog/database/AndroidManifest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.calllog.database">
-
-  <application>
-
-    <provider
-        android:authorities="com.android.dialer.annotatedcalllog"
-        android:exported="false"
-        android:multiprocess="false"
-        android:name=".AnnotatedCallLogContentProvider"/>
-
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogConstraints.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogConstraints.java
index 3dc8514..1e2a5e4 100644
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLogConstraints.java
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogConstraints.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,9 +19,12 @@
 
 import android.content.ContentValues;
 import android.provider.CallLog.Calls;
-import android.support.annotation.IntDef;
+
+import androidx.annotation.IntDef;
+
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
 import com.android.dialer.common.Assert;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.function.Predicate;
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java
index ce41a2a..1b2836b 100644
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,13 +28,16 @@
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteQueryBuilder;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.calllog.database.AnnotatedCallLogConstraints.Operation;
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract;
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 
diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
index 0693c79..4ae1dd9 100644
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,14 +21,16 @@
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.provider.CallLog.Calls;
-import android.support.annotation.VisibleForTesting;
+
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.inject.ApplicationContext;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import java.util.Locale;
+
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
@@ -35,7 +38,7 @@
 @Singleton
 public class AnnotatedCallLogDatabaseHelper extends SQLiteOpenHelper {
 
-  @VisibleForTesting static final int VERSION = 4;
+  private static final int VERSION = 4;
 
   private static final String FILENAME = "annotated_call_log.db";
 
@@ -84,13 +87,11 @@
           + (AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME + " text, ")
           + (AnnotatedCallLog.PHONE_ACCOUNT_ID + " text, ")
           + (AnnotatedCallLog.FEATURES + " integer, ")
-          + (AnnotatedCallLog.TRANSCRIPTION + " integer, ")
           + (AnnotatedCallLog.VOICEMAIL_URI + " text, ")
           + (AnnotatedCallLog.CALL_TYPE + " integer, ")
           + (AnnotatedCallLog.NUMBER_ATTRIBUTES + " blob, ")
           + (AnnotatedCallLog.IS_VOICEMAIL_CALL + " integer, ")
           + (AnnotatedCallLog.VOICEMAIL_CALL_TAG + " text, ")
-          + (AnnotatedCallLog.TRANSCRIPTION_STATE + " integer, ")
           + (AnnotatedCallLog.CALL_MAPPING_ID + " text")
           + ");";
 
diff --git a/java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java b/java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java
index 09e291e..b971e80 100644
--- a/java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java
+++ b/java/com/android/dialer/calllog/database/CallLogDatabaseComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,15 +17,15 @@
 package com.android.dialer.calllog.database;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
+
 import dagger.Subcomponent;
 
 /** Dagger component for database package. */
 @Subcomponent
 public abstract class CallLogDatabaseComponent {
 
-  public abstract Coalescer coalescer();
-
   public abstract AnnotatedCallLogDatabaseHelper annotatedCallLogDatabaseHelper();
 
   public static CallLogDatabaseComponent get(Context context) {
diff --git a/java/com/android/dialer/calllog/database/Coalescer.java b/java/com/android/dialer/calllog/database/Coalescer.java
deleted file mode 100644
index fd751e7..0000000
--- a/java/com/android/dialer/calllog/database/Coalescer.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.dialer.calllog.database;
-
-import android.database.Cursor;
-import android.database.StaleDataException;
-import android.provider.CallLog.Calls;
-import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
-import android.telecom.PhoneAccountHandle;
-import android.text.TextUtils;
-import com.android.dialer.CoalescedIds;
-import com.android.dialer.DialerPhoneNumber;
-import com.android.dialer.NumberAttributes;
-import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
-import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.metrics.FutureTimer;
-import com.android.dialer.metrics.Metrics;
-import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
-import com.android.dialer.telecom.TelecomUtil;
-import com.google.common.collect.ImmutableList;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.protobuf.InvalidProtocolBufferException;
-import java.util.Objects;
-import javax.inject.Inject;
-
-/** Combines adjacent rows in {@link AnnotatedCallLog}. */
-public class Coalescer {
-
-  private final FutureTimer futureTimer;
-  private final ListeningExecutorService backgroundExecutorService;
-
-  @Inject
-  Coalescer(
-      @BackgroundExecutor ListeningExecutorService backgroundExecutorService,
-      FutureTimer futureTimer) {
-    this.backgroundExecutorService = backgroundExecutorService;
-    this.futureTimer = futureTimer;
-  }
-
-  /**
-   * Given rows from {@link AnnotatedCallLog}, combine adjacent ones which should be collapsed for
-   * display purposes.
-   *
-   * @param allAnnotatedCallLogRowsSortedByTimestampDesc {@link AnnotatedCallLog} rows sorted in
-   *     descending order of timestamp.
-   * @return a future of a list of {@link CoalescedRow coalesced rows}, which will be used to
-   *     display call log entries.
-   */
-  public ListenableFuture<ImmutableList<CoalescedRow>> coalesce(
-      @NonNull Cursor allAnnotatedCallLogRowsSortedByTimestampDesc) {
-    ListenableFuture<ImmutableList<CoalescedRow>> coalescingFuture =
-        backgroundExecutorService.submit(
-            () -> coalesceInternal(Assert.isNotNull(allAnnotatedCallLogRowsSortedByTimestampDesc)));
-    futureTimer.applyTiming(coalescingFuture, Metrics.NEW_CALL_LOG_COALESCE);
-    return coalescingFuture;
-  }
-
-  /**
-   * Reads the entire {@link AnnotatedCallLog} into memory from the provided cursor and then builds
-   * and returns a list of {@link CoalescedRow coalesced rows}, which is the result of combining
-   * adjacent rows which should be collapsed for display purposes.
-   *
-   * @param allAnnotatedCallLogRowsSortedByTimestampDesc {@link AnnotatedCallLog} rows sorted in
-   *     descending order of timestamp.
-   * @return a list of {@link CoalescedRow coalesced rows}, which will be used to display call log
-   *     entries.
-   */
-  @WorkerThread
-  @NonNull
-  private ImmutableList<CoalescedRow> coalesceInternal(
-      Cursor allAnnotatedCallLogRowsSortedByTimestampDesc) throws ExpectedCoalescerException {
-    Assert.isWorkerThread();
-
-    ImmutableList.Builder<CoalescedRow> coalescedRowListBuilder = new ImmutableList.Builder<>();
-
-    try {
-      if (!allAnnotatedCallLogRowsSortedByTimestampDesc.moveToFirst()) {
-        return ImmutableList.of();
-      }
-
-      RowCombiner rowCombiner = new RowCombiner(allAnnotatedCallLogRowsSortedByTimestampDesc);
-      rowCombiner.startNewGroup();
-
-      long coalescedRowId = 0;
-      do {
-        boolean isRowMerged = rowCombiner.mergeRow(allAnnotatedCallLogRowsSortedByTimestampDesc);
-
-        if (isRowMerged) {
-          allAnnotatedCallLogRowsSortedByTimestampDesc.moveToNext();
-        }
-
-        if (!isRowMerged || allAnnotatedCallLogRowsSortedByTimestampDesc.isAfterLast()) {
-          coalescedRowListBuilder.add(
-              rowCombiner.combine().toBuilder().setId(coalescedRowId++).build());
-          rowCombiner.startNewGroup();
-        }
-      } while (!allAnnotatedCallLogRowsSortedByTimestampDesc.isAfterLast());
-
-      return coalescedRowListBuilder.build();
-
-    } catch (Exception exception) {
-      // Coalescing can fail if cursor "allAnnotatedCallLogRowsSortedByTimestampDesc" is closed by
-      // its loader while the work is still in progress.
-      //
-      // This can happen when the loader restarts and finishes loading data before the coalescing
-      // work is completed.
-      //
-      // This kind of failure doesn't have to crash the app as coalescing will be restarted on the
-      // latest data obtained by the loader. Therefore, we inspect the exception here and throw an
-      // ExpectedCoalescerException if it is the case described above.
-      //
-      // The type of expected exception depends on whether AbstractWindowedCursor#checkPosition() is
-      // called when the cursor is closed.
-      //   (1) If it is called before the cursor is closed, we will get IllegalStateException thrown
-      //       by SQLiteClosable when it attempts to acquire a reference to the database.
-      //   (2) Otherwise, we will get StaleDataException thrown by AbstractWindowedCursor's
-      //       checkPosition() method.
-      //
-      // Note that it would be more accurate to inspect the stack trace to locate the origin of the
-      // exception. However, according to the documentation on Throwable#getStackTrace, "some
-      // virtual machines may, under some circumstances, omit one or more stack frames from the
-      // stack trace". "In the extreme case, a virtual machine that has no stack trace information
-      // concerning this throwable is permitted to return a zero-length array from this method."
-      // Therefore, the best we can do is to inspect the message in the exception.
-      // TODO(linyuh): try to avoid the expected failure.
-      String message = exception.getMessage();
-      if (message != null
-          && ((exception instanceof StaleDataException
-                  && message.startsWith("Attempting to access a closed CursorWindow"))
-              || (exception instanceof IllegalStateException
-                  && message.startsWith("attempt to re-open an already-closed object")))) {
-        throw new ExpectedCoalescerException(exception);
-      }
-
-      throw exception;
-    }
-  }
-
-  /** Combines rows from {@link AnnotatedCallLog} into a {@link CoalescedRow}. */
-  private static final class RowCombiner {
-    private final CoalescedRow.Builder coalescedRowBuilder = CoalescedRow.newBuilder();
-    private final CoalescedIds.Builder coalescedIdsBuilder = CoalescedIds.newBuilder();
-
-    // Indexes for columns in AnnotatedCallLog
-    private final int idColumn;
-    private final int timestampColumn;
-    private final int numberColumn;
-    private final int formattedNumberColumn;
-    private final int numberPresentationColumn;
-    private final int isReadColumn;
-    private final int isNewColumn;
-    private final int geocodedLocationColumn;
-    private final int phoneAccountComponentNameColumn;
-    private final int phoneAccountIdColumn;
-    private final int featuresColumn;
-    private final int numberAttributesColumn;
-    private final int isVoicemailCallColumn;
-    private final int voicemailCallTagColumn;
-    private final int callTypeColumn;
-
-    // DialerPhoneNumberUtil will be created lazily as its instantiation is expensive.
-    private DialerPhoneNumberUtil dialerPhoneNumberUtil = null;
-
-    RowCombiner(Cursor annotatedCallLogRow) {
-      idColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog._ID);
-      timestampColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.TIMESTAMP);
-      numberColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.NUMBER);
-      formattedNumberColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.FORMATTED_NUMBER);
-      numberPresentationColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.NUMBER_PRESENTATION);
-      isReadColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.IS_READ);
-      isNewColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.NEW);
-      geocodedLocationColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.GEOCODED_LOCATION);
-      phoneAccountComponentNameColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME);
-      phoneAccountIdColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.PHONE_ACCOUNT_ID);
-      featuresColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.FEATURES);
-      numberAttributesColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.NUMBER_ATTRIBUTES);
-      isVoicemailCallColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.IS_VOICEMAIL_CALL);
-      voicemailCallTagColumn =
-          annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.VOICEMAIL_CALL_TAG);
-      callTypeColumn = annotatedCallLogRow.getColumnIndexOrThrow(AnnotatedCallLog.CALL_TYPE);
-    }
-
-    /**
-     * Prepares {@link RowCombiner} for building a new group of rows by clearing information on all
-     * previously merged rows.
-     */
-    void startNewGroup() {
-      coalescedRowBuilder.clear();
-      coalescedIdsBuilder.clear();
-    }
-
-    /**
-     * Merge the given {@link AnnotatedCallLog} row into the current group.
-     *
-     * @return true if the given row is merged.
-     */
-    boolean mergeRow(Cursor annotatedCallLogRow) {
-      Assert.checkArgument(annotatedCallLogRow.getInt(callTypeColumn) != Calls.VOICEMAIL_TYPE);
-
-      if (!canMergeRow(annotatedCallLogRow)) {
-        return false;
-      }
-
-      // Set fields that don't use the most recent value.
-      //
-      // Currently there is only one such field: "features".
-      // If any call in a group includes a feature (like Wifi/HD), consider the group to have
-      // the feature.
-      coalescedRowBuilder.setFeatures(
-          coalescedRowBuilder.getFeatures() | annotatedCallLogRow.getInt(featuresColumn));
-
-      // Set fields that use the most recent value.
-      // Rows passed to Coalescer are already sorted in descending order of timestamp. If the
-      // coalesced ID list is not empty, it means RowCombiner has merged the most recent row in a
-      // group and there is no need to continue as we only set fields that use the most recent value
-      // from this point forward.
-      if (!coalescedIdsBuilder.getCoalescedIdList().isEmpty()) {
-        coalescedIdsBuilder.addCoalescedId(annotatedCallLogRow.getInt(idColumn));
-        return true;
-      }
-
-      coalescedRowBuilder
-          .setTimestamp(annotatedCallLogRow.getLong(timestampColumn))
-          .setNumberPresentation(annotatedCallLogRow.getInt(numberPresentationColumn))
-          .setIsRead(annotatedCallLogRow.getInt(isReadColumn) == 1)
-          .setIsNew(annotatedCallLogRow.getInt(isNewColumn) == 1)
-          .setIsVoicemailCall(annotatedCallLogRow.getInt(isVoicemailCallColumn) == 1)
-          .setCallType(annotatedCallLogRow.getInt(callTypeColumn));
-
-      // Two different DialerPhoneNumbers could be combined if they are different but considered
-      // to be a match by libphonenumber; in this case we arbitrarily select the most recent one.
-      try {
-        coalescedRowBuilder.setNumber(
-            DialerPhoneNumber.parseFrom(annotatedCallLogRow.getBlob(numberColumn)));
-      } catch (InvalidProtocolBufferException e) {
-        throw Assert.createAssertionFailException("Unable to parse DialerPhoneNumber bytes", e);
-      }
-
-      String formattedNumber = annotatedCallLogRow.getString(formattedNumberColumn);
-      if (!TextUtils.isEmpty(formattedNumber)) {
-        coalescedRowBuilder.setFormattedNumber(formattedNumber);
-      }
-
-      String geocodedLocation = annotatedCallLogRow.getString(geocodedLocationColumn);
-      if (!TextUtils.isEmpty(geocodedLocation)) {
-        coalescedRowBuilder.setGeocodedLocation(geocodedLocation);
-      }
-
-      String phoneAccountComponentName =
-          annotatedCallLogRow.getString(phoneAccountComponentNameColumn);
-      if (!TextUtils.isEmpty(phoneAccountComponentName)) {
-        coalescedRowBuilder.setPhoneAccountComponentName(phoneAccountComponentName);
-      }
-
-      String phoneAccountId = annotatedCallLogRow.getString(phoneAccountIdColumn);
-      if (!TextUtils.isEmpty(phoneAccountId)) {
-        coalescedRowBuilder.setPhoneAccountId(phoneAccountId);
-      }
-
-      try {
-        coalescedRowBuilder.setNumberAttributes(
-            NumberAttributes.parseFrom(annotatedCallLogRow.getBlob(numberAttributesColumn)));
-      } catch (InvalidProtocolBufferException e) {
-        throw Assert.createAssertionFailException("Unable to parse NumberAttributes bytes", e);
-      }
-
-      String voicemailCallTag = annotatedCallLogRow.getString(voicemailCallTagColumn);
-      if (!TextUtils.isEmpty(voicemailCallTag)) {
-        coalescedRowBuilder.setVoicemailCallTag(voicemailCallTag);
-      }
-
-      coalescedIdsBuilder.addCoalescedId(annotatedCallLogRow.getInt(idColumn));
-      return true;
-    }
-
-    /** Builds a {@link CoalescedRow} based on all rows merged into the current group. */
-    CoalescedRow combine() {
-      return coalescedRowBuilder.setCoalescedIds(coalescedIdsBuilder.build()).build();
-    }
-
-    /**
-     * Returns true if the given {@link AnnotatedCallLog} row can be merged into the current group.
-     */
-    private boolean canMergeRow(Cursor annotatedCallLogRow) {
-      return coalescedIdsBuilder.getCoalescedIdList().isEmpty()
-          || (samePhoneAccount(annotatedCallLogRow)
-              && sameNumberPresentation(annotatedCallLogRow)
-              && meetsCallFeatureCriteria(annotatedCallLogRow)
-              && meetsDialerPhoneNumberCriteria(annotatedCallLogRow));
-    }
-
-    private boolean samePhoneAccount(Cursor annotatedCallLogRow) {
-      PhoneAccountHandle groupPhoneAccountHandle =
-          TelecomUtil.composePhoneAccountHandle(
-              coalescedRowBuilder.getPhoneAccountComponentName(),
-              coalescedRowBuilder.getPhoneAccountId());
-      PhoneAccountHandle rowPhoneAccountHandle =
-          TelecomUtil.composePhoneAccountHandle(
-              annotatedCallLogRow.getString(phoneAccountComponentNameColumn),
-              annotatedCallLogRow.getString(phoneAccountIdColumn));
-
-      return Objects.equals(groupPhoneAccountHandle, rowPhoneAccountHandle);
-    }
-
-    private boolean sameNumberPresentation(Cursor annotatedCallLogRow) {
-      return coalescedRowBuilder.getNumberPresentation()
-          == annotatedCallLogRow.getInt(numberPresentationColumn);
-    }
-
-    private boolean meetsCallFeatureCriteria(Cursor annotatedCallLogRow) {
-      int groupFeatures = coalescedRowBuilder.getFeatures();
-      int rowFeatures = annotatedCallLogRow.getInt(featuresColumn);
-
-      // A row with FEATURES_ASSISTED_DIALING should not be combined with one without it.
-      if ((groupFeatures & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING)
-          != (rowFeatures & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING)) {
-        return false;
-      }
-
-      // A video call should not be combined with one that is not a video call.
-      if ((groupFeatures & Calls.FEATURES_VIDEO) != (rowFeatures & Calls.FEATURES_VIDEO)) {
-        return false;
-      }
-
-      // A RTT call should not be combined with one that is not a RTT call.
-      if ((groupFeatures & Calls.FEATURES_RTT) != (rowFeatures & Calls.FEATURES_RTT)) {
-        return false;
-      }
-
-      return true;
-    }
-
-    private boolean meetsDialerPhoneNumberCriteria(Cursor annotatedCallLogRow) {
-      DialerPhoneNumber groupPhoneNumber = coalescedRowBuilder.getNumber();
-
-      DialerPhoneNumber rowPhoneNumber;
-      try {
-        byte[] rowPhoneNumberBytes = annotatedCallLogRow.getBlob(numberColumn);
-        if (rowPhoneNumberBytes == null) {
-          return false; // Empty numbers should not be combined.
-        }
-        rowPhoneNumber = DialerPhoneNumber.parseFrom(rowPhoneNumberBytes);
-      } catch (InvalidProtocolBufferException e) {
-        throw Assert.createAssertionFailException("Unable to parse DialerPhoneNumber bytes", e);
-      }
-
-      if (dialerPhoneNumberUtil == null) {
-        dialerPhoneNumberUtil = new DialerPhoneNumberUtil();
-      }
-
-      return dialerPhoneNumberUtil.isMatch(groupPhoneNumber, rowPhoneNumber);
-    }
-  }
-
-  /** A checked exception thrown when expected failure happens when coalescing is in progress. */
-  public static final class ExpectedCoalescerException extends Exception {
-    ExpectedCoalescerException(Throwable throwable) {
-      super("Expected coalescing exception", throwable);
-    }
-  }
-}
diff --git a/java/com/android/dialer/calllog/database/MutationApplier.java b/java/com/android/dialer/calllog/database/MutationApplier.java
index 8610934..c6f7aaa 100644
--- a/java/com/android/dialer/calllog/database/MutationApplier.java
+++ b/java/com/android/dialer/calllog/database/MutationApplier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,8 +22,10 @@
 import android.content.Context;
 import android.content.OperationApplicationException;
 import android.os.RemoteException;
-import android.support.annotation.WorkerThread;
 import android.text.TextUtils;
+
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract;
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
 import com.android.dialer.calllog.datasources.CallLogMutations;
@@ -33,10 +36,12 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map.Entry;
+
 import javax.inject.Inject;
 
 /** Applies {@link CallLogMutations} to the annotated call log. */
diff --git a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
index 1fdf38a..2639ac5 100644
--- a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
+++ b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,14 +18,13 @@
 package com.android.dialer.calllog.database.contract;
 
 import android.net.Uri;
-import android.os.Build;
 import android.provider.BaseColumns;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
+
 import com.android.dialer.constants.Constants;
 
 /** Contract for the AnnotatedCallLog content provider. */
 public class AnnotatedCallLogContract {
-  public static final String AUTHORITY = Constants.get().getAnnotatedCallLogProviderAuthority();
+  public static final String AUTHORITY = Constants.ANNOTATED_CALL_LOG_PROVIDER_AUTHORITY;
 
   public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY);
 
@@ -168,22 +168,6 @@
     public static final String DURATION = "duration";
 
     /**
-     * See {@link android.provider.CallLog.Calls#TRANSCRIPTION}.
-     *
-     * <p>TYPE: TEXT
-     */
-    public static final String TRANSCRIPTION = "transcription";
-
-    /**
-     * See {@link VoicemailCompat#TRANSCRIPTION_STATE}
-     *
-     * <p>Only populated in {@link Build.VERSION_CODES#O} and above
-     *
-     * <p>TYPE: INTEGER
-     */
-    public static final String TRANSCRIPTION_STATE = "transcription_state";
-
-    /**
      * See {@link android.provider.CallLog.Calls#VOICEMAIL_URI}.
      *
      * <p>TYPE: TEXT
diff --git a/java/com/android/dialer/calllog/datasources/CallLogDataSource.java b/java/com/android/dialer/calllog/datasources/CallLogDataSource.java
index 72676a2..152d6e3 100644
--- a/java/com/android/dialer/calllog/datasources/CallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/CallLogDataSource.java
@@ -16,7 +16,8 @@
 
 package com.android.dialer.calllog.datasources;
 
-import android.support.annotation.MainThread;
+import androidx.annotation.MainThread;
+
 import com.google.common.util.concurrent.ListenableFuture;
 
 /**
diff --git a/java/com/android/dialer/calllog/datasources/CallLogMutations.java b/java/com/android/dialer/calllog/datasources/CallLogMutations.java
index 148601d..62e4f18 100644
--- a/java/com/android/dialer/calllog/datasources/CallLogMutations.java
+++ b/java/com/android/dialer/calllog/datasources/CallLogMutations.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.content.ContentValues;
 import android.util.ArrayMap;
 import android.util.ArraySet;
+
 import com.android.dialer.common.Assert;
 
 /** A collection of mutations to the annotated call log. */
diff --git a/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java b/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java
index a805212..cdf14fd 100644
--- a/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,11 +23,13 @@
 import android.content.OperationApplicationException;
 import android.database.Cursor;
 import android.os.RemoteException;
-import android.support.annotation.MainThread;
-import android.support.annotation.WorkerThread;
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.ArraySet;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
 import com.android.dialer.calllog.datasources.CallLogDataSource;
@@ -51,12 +54,14 @@
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.protobuf.InvalidProtocolBufferException;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.Callable;
+
 import javax.inject.Inject;
 
 /**
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
index 3e123c9..fa2f9df 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,19 +22,17 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.database.Cursor;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
 import android.provider.VoicemailContract;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.util.ArraySet;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.calllog.database.AnnotatedCallLogDatabaseHelper;
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
@@ -43,8 +42,6 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.duo.Duo;
 import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
 import com.android.dialer.storage.Unencrypted;
@@ -54,10 +51,11 @@
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
-import java.util.ArrayList;
+
 import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
+
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
@@ -69,17 +67,16 @@
 @SuppressWarnings("MissingPermission")
 public class SystemCallLogDataSource implements CallLogDataSource {
 
-  @VisibleForTesting
-  static final String PREF_LAST_TIMESTAMP_PROCESSED = "systemCallLogLastTimestampProcessed";
+  private static final String PREF_LAST_TIMESTAMP_PROCESSED = "systemCallLogLastTimestampProcessed";
 
   private final Context appContext;
   private final ListeningExecutorService backgroundExecutorService;
   private final MarkDirtyObserver markDirtyObserver;
   private final SharedPreferences sharedPreferences;
   private final AnnotatedCallLogDatabaseHelper annotatedCallLogDatabaseHelper;
-  private final Duo duo;
 
-  @Nullable private Long lastTimestampProcessed;
+  @Nullable
+  private Long lastTimestampProcessed;
   private boolean isCallLogContentObserverRegistered = false;
 
   @Inject
@@ -88,14 +85,12 @@
       @BackgroundExecutor ListeningExecutorService backgroundExecutorService,
       MarkDirtyObserver markDirtyObserver,
       @Unencrypted SharedPreferences sharedPreferences,
-      AnnotatedCallLogDatabaseHelper annotatedCallLogDatabaseHelper,
-      Duo duo) {
+      AnnotatedCallLogDatabaseHelper annotatedCallLogDatabaseHelper) {
     this.appContext = appContext;
     this.backgroundExecutorService = backgroundExecutorService;
     this.markDirtyObserver = markDirtyObserver;
     this.sharedPreferences = sharedPreferences;
     this.annotatedCallLogDatabaseHelper = annotatedCallLogDatabaseHelper;
-    this.duo = duo;
   }
 
   @Override
@@ -269,7 +264,6 @@
       int countryIsoColumn = cursor.getColumnIndexOrThrow(Calls.COUNTRY_ISO);
       int durationsColumn = cursor.getColumnIndexOrThrow(Calls.DURATION);
       int dataUsageColumn = cursor.getColumnIndexOrThrow(Calls.DATA_USAGE);
-      int transcriptionColumn = cursor.getColumnIndexOrThrow(Calls.TRANSCRIPTION);
       int voicemailUriColumn = cursor.getColumnIndexOrThrow(Calls.VOICEMAIL_URI);
       int isReadColumn = cursor.getColumnIndexOrThrow(Calls.IS_READ);
       int newColumn = cursor.getColumnIndexOrThrow(Calls.NEW);
@@ -302,7 +296,6 @@
         String countryIso = cursor.getString(countryIsoColumn);
         int duration = cursor.getInt(durationsColumn);
         int dataUsage = cursor.getInt(dataUsageColumn);
-        String transcription = cursor.getString(transcriptionColumn);
         String voicemailUri = cursor.getString(voicemailUriColumn);
         int isRead = cursor.getInt(isReadColumn);
         int isNew = cursor.getInt(newColumn);
@@ -312,11 +305,6 @@
         int features = cursor.getInt(featuresColumn);
         String postDialDigits = cursor.getString(postDialDigitsColumn);
 
-        // Exclude Duo audio calls.
-        if (isDuoAudioCall(phoneAccountComponentName, features)) {
-          continue;
-        }
-
         ContentValues contentValues = new ContentValues();
         contentValues.put(AnnotatedCallLog.TIMESTAMP, date);
 
@@ -347,13 +335,10 @@
         contentValues.put(AnnotatedCallLog.FEATURES, features);
         contentValues.put(AnnotatedCallLog.DURATION, duration);
         contentValues.put(AnnotatedCallLog.DATA_USAGE, dataUsage);
-        contentValues.put(AnnotatedCallLog.TRANSCRIPTION, transcription);
         contentValues.put(AnnotatedCallLog.VOICEMAIL_URI, voicemailUri);
 
         contentValues.put(AnnotatedCallLog.CALL_MAPPING_ID, String.valueOf(date));
 
-        setTranscriptionState(cursor, contentValues);
-
         if (existingAnnotatedCallLogIds.contains(id)) {
           mutations.update(id, contentValues);
         } else {
@@ -363,34 +348,7 @@
     }
   }
 
-  /**
-   * Returns true if the phone account component name and the features belong to a Duo audio call.
-   *
-   * <p>Characteristics of a Duo audio call are as follows.
-   *
-   * <ul>
-   *   <li>The phone account is {@link Duo#isDuoAccount(String)}; and
-   *   <li>The features don't include {@link Calls#FEATURES_VIDEO}.
-   * </ul>
-   *
-   * <p>It is the caller's responsibility to ensure the phone account component name and the
-   * features come from the same call log entry.
-   */
-  private boolean isDuoAudioCall(@Nullable String phoneAccountComponentName, int features) {
-    return duo.isDuoAccount(phoneAccountComponentName)
-        && ((features & Calls.FEATURES_VIDEO) != Calls.FEATURES_VIDEO);
-  }
-
-  private void setTranscriptionState(Cursor cursor, ContentValues contentValues) {
-    if (VERSION.SDK_INT >= VERSION_CODES.O) {
-      int transcriptionStateColumn =
-          cursor.getColumnIndexOrThrow(VoicemailCompat.TRANSCRIPTION_STATE);
-      int transcriptionState = cursor.getInt(transcriptionStateColumn);
-      contentValues.put(VoicemailCompat.TRANSCRIPTION_STATE, transcriptionState);
-    }
-  }
-
-  private static final String[] PROJECTION_PRE_O =
+  private static final String[] PROJECTION =
       new String[] {
         Calls._ID,
         Calls.DATE,
@@ -401,7 +359,6 @@
         Calls.COUNTRY_ISO,
         Calls.DURATION,
         Calls.DATA_USAGE,
-        Calls.TRANSCRIPTION,
         Calls.VOICEMAIL_URI,
         Calls.IS_READ,
         Calls.NEW,
@@ -412,20 +369,8 @@
         Calls.POST_DIAL_DIGITS
       };
 
-  @RequiresApi(VERSION_CODES.O)
-  private static final String[] PROJECTION_O_AND_LATER;
-
-  static {
-    List<String> projectionList = new ArrayList<>(Arrays.asList(PROJECTION_PRE_O));
-    projectionList.add(VoicemailCompat.TRANSCRIPTION_STATE);
-    PROJECTION_O_AND_LATER = projectionList.toArray(new String[projectionList.size()]);
-  }
-
   private String[] getProjection() {
-    if (VERSION.SDK_INT >= VERSION_CODES.O) {
-      return PROJECTION_O_AND_LATER;
-    }
-    return PROJECTION_PRE_O;
+      return PROJECTION;
   }
 
   private static void handleDeletes(
diff --git a/java/com/android/dialer/calllog/datasources/voicemail/VoicemailDataSource.java b/java/com/android/dialer/calllog/datasources/voicemail/VoicemailDataSource.java
index 8d9cae2..0831550 100644
--- a/java/com/android/dialer/calllog/datasources/voicemail/VoicemailDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/voicemail/VoicemailDataSource.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,6 +22,7 @@
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
 import com.android.dialer.calllog.datasources.CallLogDataSource;
@@ -34,7 +36,9 @@
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.protobuf.InvalidProtocolBufferException;
+
 import java.util.Map.Entry;
+
 import javax.inject.Inject;
 
 /** Provide information for whether the call is a call to the voicemail inbox. */
diff --git a/java/com/android/dialer/calllog/notifier/RefreshAnnotatedCallLogNotifier.java b/java/com/android/dialer/calllog/notifier/RefreshAnnotatedCallLogNotifier.java
index 5b73ad7..74ee22a 100644
--- a/java/com/android/dialer/calllog/notifier/RefreshAnnotatedCallLogNotifier.java
+++ b/java/com/android/dialer/calllog/notifier/RefreshAnnotatedCallLogNotifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,12 +20,15 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.support.v4.content.LocalBroadcastManager;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
 import com.android.dialer.calllog.constants.IntentNames;
 import com.android.dialer.calllog.constants.SharedPrefKeys;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.storage.Unencrypted;
+
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
diff --git a/java/com/android/dialer/calllog/observer/MarkDirtyObserver.java b/java/com/android/dialer/calllog/observer/MarkDirtyObserver.java
index 8ab1974..209e3ce 100644
--- a/java/com/android/dialer/calllog/observer/MarkDirtyObserver.java
+++ b/java/com/android/dialer/calllog/observer/MarkDirtyObserver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,12 +19,14 @@
 
 import android.database.ContentObserver;
 import android.net.Uri;
-import android.support.annotation.MainThread;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.MainThread;
+
 import com.android.dialer.calllog.notifier.RefreshAnnotatedCallLogNotifier;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.ThreadUtil;
+
 import javax.inject.Inject;
 
 /**
@@ -34,7 +37,6 @@
 
   private final RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier;
 
-  @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
   @Inject
   public MarkDirtyObserver(RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier) {
     super(ThreadUtil.getUiThreadHandler());
diff --git a/java/com/android/dialer/calllog/ui/AndroidManifest.xml b/java/com/android/dialer/calllog/ui/AndroidManifest.xml
deleted file mode 100644
index eaf71ab..0000000
--- a/java/com/android/dialer/calllog/ui/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.calllog.ui"/>
diff --git a/java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java b/java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java
index 6111cd8..cabbbe0 100644
--- a/java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java
+++ b/java/com/android/dialer/calllog/ui/AnnotatedCallLogCursorLoader.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,9 @@
 
 import android.content.Context;
 import android.provider.CallLog.Calls;
-import android.support.v4.content.CursorLoader;
+
+import androidx.loader.content.CursorLoader;
+
 import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
 
 /** Cursor loader for {@link AnnotatedCallLog}. */
diff --git a/java/com/android/dialer/calllog/ui/CallLogUiComponent.java b/java/com/android/dialer/calllog/ui/CallLogUiComponent.java
index a8e3b22..a9dbb9a 100644
--- a/java/com/android/dialer/calllog/ui/CallLogUiComponent.java
+++ b/java/com/android/dialer/calllog/ui/CallLogUiComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +17,9 @@
 package com.android.dialer.calllog.ui;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
+
 import dagger.Subcomponent;
 
 /** Dagger component for the call log UI package. */
diff --git a/java/com/android/dialer/calllog/ui/HeaderViewHolder.java b/java/com/android/dialer/calllog/ui/HeaderViewHolder.java
deleted file mode 100644
index e4fe029..0000000
--- a/java/com/android/dialer/calllog/ui/HeaderViewHolder.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.calllog.ui;
-
-import android.support.annotation.StringRes;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.view.View;
-import android.widget.TextView;
-
-/** ViewHolder for {@link NewCallLogAdapter} to display "Today" or "Older" divider row. */
-final class HeaderViewHolder extends ViewHolder {
-
-  private TextView headerTextView;
-
-  HeaderViewHolder(View view) {
-    super(view);
-    headerTextView = view.findViewById(R.id.new_call_log_header_text);
-  }
-
-  void setHeader(@StringRes int header) {
-    headerTextView.setText(header);
-  }
-}
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java b/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java
deleted file mode 100644
index 185a93e..0000000
--- a/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.dialer.calllog.ui;
-
-import android.app.Activity;
-import android.content.Context;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.view.LayoutInflater;
-import android.view.ViewGroup;
-import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.calllogutils.CallLogDates;
-import com.android.dialer.common.Assert;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.promotion.Promotion;
-import com.android.dialer.time.Clock;
-import com.google.common.collect.ImmutableList;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/** {@link RecyclerView.Adapter} for the new call log fragment. */
-final class NewCallLogAdapter extends RecyclerView.Adapter<ViewHolder> {
-
-  /** IntDef for the different types of rows that can be shown in the call log. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({
-    RowType.PROMOTION_CARD,
-    RowType.HEADER_TODAY,
-    RowType.HEADER_YESTERDAY,
-    RowType.HEADER_OLDER,
-    RowType.CALL_LOG_ENTRY
-  })
-  @interface RowType {
-    /** The promotion card. */
-    int PROMOTION_CARD = 1;
-
-    /** Header that displays "Today". */
-    int HEADER_TODAY = 2;
-
-    /** Header that displays "Yesterday". */
-    int HEADER_YESTERDAY = 3;
-
-    /** Header that displays "Older". */
-    int HEADER_OLDER = 4;
-
-    /** A row representing a call log entry (which could represent one or more calls). */
-    int CALL_LOG_ENTRY = 5;
-  }
-
-  private final Clock clock;
-  private final Activity activity;
-  private final RealtimeRowProcessor realtimeRowProcessor;
-  private final PopCounts popCounts = new PopCounts();
-  @Nullable private final Promotion promotion;
-
-  private ImmutableList<CoalescedRow> coalescedRows;
-
-  /** Position of the promotion card. Null when it should not be displayed. */
-  @Nullable private Integer promotionCardPosition;
-
-  /** Position of the "Today" header. Null when it should not be displayed. */
-  @Nullable private Integer todayHeaderPosition;
-
-  /** Position of the "Yesterday" header. Null when it should not be displayed. */
-  @Nullable private Integer yesterdayHeaderPosition;
-
-  /** Position of the "Older" header. Null when it should not be displayed. */
-  @Nullable private Integer olderHeaderPosition;
-
-  NewCallLogAdapter(
-      Activity activity,
-      ImmutableList<CoalescedRow> coalescedRows,
-      Clock clock,
-      @Nullable Promotion promotion) {
-    this.activity = activity;
-    this.coalescedRows = coalescedRows;
-    this.clock = clock;
-    this.realtimeRowProcessor = CallLogUiComponent.get(activity).realtimeRowProcessor();
-    this.promotion = promotion;
-
-    setCardAndHeaderPositions();
-  }
-
-  void updateRows(ImmutableList<CoalescedRow> coalescedRows) {
-    this.coalescedRows = coalescedRows;
-    this.realtimeRowProcessor.clearCache();
-    this.popCounts.reset();
-
-    setCardAndHeaderPositions();
-    notifyDataSetChanged();
-  }
-
-  void clearCache() {
-    this.realtimeRowProcessor.clearCache();
-  }
-
-  void logMetrics(Context context) {
-    Logger.get(context).logAnnotatedCallLogMetrics(popCounts.popped, popCounts.didNotPop);
-  }
-
-  private void setCardAndHeaderPositions() {
-    // Set the position for the promotion card if it should be shown.
-    promotionCardPosition = null;
-    int numCards = 0;
-    if (promotion != null && promotion.isEligibleToBeShown()) {
-      promotionCardPosition = 0;
-      numCards++;
-    }
-
-    // If there are no rows to display, set all header positions to null.
-    if (coalescedRows.isEmpty()) {
-      todayHeaderPosition = null;
-      yesterdayHeaderPosition = null;
-      olderHeaderPosition = null;
-      return;
-    }
-
-    // Calculate positions for headers.
-    long currentTimeMillis = clock.currentTimeMillis();
-
-    int numItemsInToday = 0;
-    int numItemsInYesterday = 0;
-    int numItemsInOlder = 0;
-    for (CoalescedRow coalescedRow : coalescedRows) {
-      long timestamp = coalescedRow.getTimestamp();
-      long dayDifference = CallLogDates.getDayDifference(currentTimeMillis, timestamp);
-      if (dayDifference == 0) {
-        numItemsInToday++;
-      } else if (dayDifference == 1) {
-        numItemsInYesterday++;
-      } else {
-        numItemsInOlder = coalescedRows.size() - numItemsInToday - numItemsInYesterday;
-        break;
-      }
-    }
-
-    if (numItemsInToday > 0) {
-      numItemsInToday++; // including the "Today" header;
-    }
-    if (numItemsInYesterday > 0) {
-      numItemsInYesterday++; // including the "Yesterday" header;
-    }
-    if (numItemsInOlder > 0) {
-      numItemsInOlder++; // include the "Older" header;
-    }
-
-    // Set all header positions.
-    // A header position will be null if there is no item to be displayed under that header.
-    todayHeaderPosition = numItemsInToday > 0 ? numCards : null;
-    yesterdayHeaderPosition = numItemsInYesterday > 0 ? numItemsInToday + numCards : null;
-    olderHeaderPosition =
-        numItemsInOlder > 0 ? numItemsInToday + numItemsInYesterday + numCards : null;
-  }
-
-  @Override
-  public void onAttachedToRecyclerView(RecyclerView recyclerView) {
-    super.onAttachedToRecyclerView(recyclerView);
-
-    // Register a OnScrollListener that records when the promotion is viewed.
-    if (promotion != null && promotion.isEligibleToBeShown()) {
-      recyclerView.addOnScrollListener(
-          new OnScrollListenerForRecordingPromotionCardFirstViewTime(promotion));
-    }
-  }
-
-  @Override
-  public ViewHolder onCreateViewHolder(ViewGroup viewGroup, @RowType int viewType) {
-    switch (viewType) {
-      case RowType.PROMOTION_CARD:
-        return new PromotionCardViewHolder(
-            LayoutInflater.from(activity)
-                .inflate(
-                    R.layout.new_call_log_promotion_card, viewGroup, /* attachToRoot = */ false),
-            promotion);
-      case RowType.HEADER_TODAY:
-      case RowType.HEADER_YESTERDAY:
-      case RowType.HEADER_OLDER:
-        return new HeaderViewHolder(
-            LayoutInflater.from(activity)
-                .inflate(R.layout.new_call_log_header, viewGroup, /* attachToRoot = */ false));
-      case RowType.CALL_LOG_ENTRY:
-        return new NewCallLogViewHolder(
-            activity,
-            LayoutInflater.from(activity)
-                .inflate(R.layout.new_call_log_entry, viewGroup, /* attachToRoot = */ false),
-            clock,
-            realtimeRowProcessor,
-            popCounts);
-      default:
-        throw Assert.createUnsupportedOperationFailException("Unsupported view type: " + viewType);
-    }
-  }
-
-  @Override
-  public void onBindViewHolder(ViewHolder viewHolder, int position) {
-    @RowType int viewType = getItemViewType(position);
-    switch (viewType) {
-      case RowType.PROMOTION_CARD:
-        ((PromotionCardViewHolder) viewHolder)
-            .setDismissListener(
-                () -> {
-                  notifyItemRemoved(promotionCardPosition);
-                  setCardAndHeaderPositions();
-                });
-        break;
-      case RowType.HEADER_TODAY:
-        ((HeaderViewHolder) viewHolder).setHeader(R.string.new_call_log_header_today);
-        break;
-      case RowType.HEADER_YESTERDAY:
-        ((HeaderViewHolder) viewHolder).setHeader(R.string.new_call_log_header_yesterday);
-        break;
-      case RowType.HEADER_OLDER:
-        ((HeaderViewHolder) viewHolder).setHeader(R.string.new_call_log_header_older);
-        break;
-      case RowType.CALL_LOG_ENTRY:
-        NewCallLogViewHolder newCallLogViewHolder = (NewCallLogViewHolder) viewHolder;
-        int previousCardAndHeaders = 0;
-        if (promotionCardPosition != null && position > promotionCardPosition) {
-          previousCardAndHeaders++;
-        }
-        if (todayHeaderPosition != null && position > todayHeaderPosition) {
-          previousCardAndHeaders++;
-        }
-        if (yesterdayHeaderPosition != null && position > yesterdayHeaderPosition) {
-          previousCardAndHeaders++;
-        }
-        if (olderHeaderPosition != null && position > olderHeaderPosition) {
-          previousCardAndHeaders++;
-        }
-        newCallLogViewHolder.bind(coalescedRows.get(position - previousCardAndHeaders));
-        break;
-      default:
-        throw Assert.createIllegalStateFailException(
-            "Unexpected view type " + viewType + " at position: " + position);
-    }
-  }
-
-  @Override
-  @RowType
-  public int getItemViewType(int position) {
-    if (promotionCardPosition != null && position == promotionCardPosition) {
-      return RowType.PROMOTION_CARD;
-    }
-    if (todayHeaderPosition != null && position == todayHeaderPosition) {
-      return RowType.HEADER_TODAY;
-    }
-    if (yesterdayHeaderPosition != null && position == yesterdayHeaderPosition) {
-      return RowType.HEADER_YESTERDAY;
-    }
-    if (olderHeaderPosition != null && position == olderHeaderPosition) {
-      return RowType.HEADER_OLDER;
-    }
-    return RowType.CALL_LOG_ENTRY;
-  }
-
-  @Override
-  public int getItemCount() {
-    int numberOfCards = 0;
-    int numberOfHeaders = 0;
-
-    if (promotionCardPosition != null) {
-      numberOfCards++;
-    }
-    if (todayHeaderPosition != null) {
-      numberOfHeaders++;
-    }
-    if (yesterdayHeaderPosition != null) {
-      numberOfHeaders++;
-    }
-    if (olderHeaderPosition != null) {
-      numberOfHeaders++;
-    }
-    return coalescedRows.size() + numberOfHeaders + numberOfCards;
-  }
-
-  /**
-   * A {@link RecyclerView.OnScrollListener} that records the timestamp at which the promotion card
-   * is first viewed.
-   *
-   * <p>We consider the card as viewed if the user scrolls the containing RecyclerView since such
-   * action is a strong proof.
-   */
-  private static final class OnScrollListenerForRecordingPromotionCardFirstViewTime
-      extends RecyclerView.OnScrollListener {
-
-    private final Promotion promotion;
-
-    OnScrollListenerForRecordingPromotionCardFirstViewTime(Promotion promotion) {
-      this.promotion = promotion;
-    }
-
-    @Override
-    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
-      if (newState == RecyclerView.SCROLL_STATE_SETTLING) {
-        promotion.onViewed();
-
-        // Recording promotion is viewed is this listener's sole responsibility.
-        // We can remove it from the containing RecyclerView after the job is done.
-        recyclerView.removeOnScrollListener(this);
-      }
-
-      super.onScrollStateChanged(recyclerView, newState);
-    }
-  }
-
-  static class PopCounts {
-    int popped;
-    int didNotPop;
-
-    private void reset() {
-      popped = 0;
-      didNotPop = 0;
-    }
-  }
-}
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java b/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
deleted file mode 100644
index 62f99b6..0000000
--- a/java/com/android/dialer/calllog/ui/NewCallLogFragment.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.dialer.calllog.ui;
-
-import android.app.Activity;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.LoaderManager;
-import android.support.v4.app.LoaderManager.LoaderCallbacks;
-import android.support.v4.content.Loader;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import com.android.dialer.calllog.CallLogComponent;
-import com.android.dialer.calllog.RefreshAnnotatedCallLogReceiver;
-import com.android.dialer.calllog.database.CallLogDatabaseComponent;
-import com.android.dialer.calllog.database.Coalescer;
-import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DefaultFutureCallback;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.SupportUiListener;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.metrics.Metrics;
-import com.android.dialer.metrics.MetricsComponent;
-import com.android.dialer.metrics.jank.RecyclerViewJankLogger;
-import com.android.dialer.promotion.Promotion.PromotionType;
-import com.android.dialer.promotion.PromotionComponent;
-import com.android.dialer.util.PermissionsUtil;
-import com.android.dialer.widget.EmptyContentView;
-import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
-import com.google.common.collect.ImmutableList;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.MoreExecutors;
-import java.util.Arrays;
-import java.util.concurrent.TimeUnit;
-
-/** The "new" call log fragment implementation, which is built on top of the annotated call log. */
-public final class NewCallLogFragment extends Fragment implements LoaderCallbacks<Cursor> {
-
-  private static final int PHONE_PERMISSIONS_REQUEST_CODE = 1;
-  private static final int LOADER_ID = 0;
-
-  @VisibleForTesting
-  static final long MARK_ALL_CALLS_READ_WAIT_MILLIS = TimeUnit.SECONDS.toMillis(3);
-
-  private RecyclerView recyclerView;
-  private EmptyContentView emptyContentView;
-  private RefreshAnnotatedCallLogReceiver refreshAnnotatedCallLogReceiver;
-  private SupportUiListener<ImmutableList<CoalescedRow>> coalesingAnnotatedCallLogListener;
-
-  private boolean shouldMarkCallsRead = false;
-  private final Runnable setShouldMarkCallsReadTrue = () -> shouldMarkCallsRead = true;
-
-  public NewCallLogFragment() {
-    LogUtil.enterBlock("NewCallLogFragment.NewCallLogFragment");
-  }
-
-  @Override
-  public void onActivityCreated(@Nullable Bundle savedInstanceState) {
-    super.onActivityCreated(savedInstanceState);
-
-    LogUtil.enterBlock("NewCallLogFragment.onActivityCreated");
-
-    refreshAnnotatedCallLogReceiver = new RefreshAnnotatedCallLogReceiver(getContext());
-  }
-
-  @Override
-  public void onStart() {
-    super.onStart();
-
-    LogUtil.enterBlock("NewCallLogFragment.onStart");
-  }
-
-  @Override
-  public void onResume() {
-    super.onResume();
-
-    boolean isHidden = isHidden();
-    LogUtil.i("NewCallLogFragment.onResume", "isHidden = %s", isHidden);
-
-    // As a fragment's onResume() is tied to the containing Activity's onResume(), being resumed is
-    // not equivalent to becoming visible.
-    // For example, when an activity with a hidden fragment is resumed, the fragment's onResume()
-    // will be called but it is not visible.
-    if (!isHidden) {
-      onFragmentShown();
-    }
-  }
-
-  @Override
-  public void onStop() {
-    super.onStop();
-
-    if (recyclerView.getAdapter() != null) {
-      ((NewCallLogAdapter) recyclerView.getAdapter()).logMetrics(getContext());
-    }
-  }
-
-  @Override
-  public void onPause() {
-    super.onPause();
-    LogUtil.enterBlock("NewCallLogFragment.onPause");
-
-    onFragmentHidden();
-  }
-
-  @Override
-  public void onHiddenChanged(boolean hidden) {
-    super.onHiddenChanged(hidden);
-    LogUtil.i("NewCallLogFragment.onHiddenChanged", "hidden = %s", hidden);
-
-    if (hidden) {
-      onFragmentHidden();
-    } else {
-      onFragmentShown();
-    }
-  }
-
-  /**
-   * To be called when the fragment becomes visible.
-   *
-   * <p>Note that for a fragment, being resumed is not equivalent to becoming visible.
-   *
-   * <p>For example, when an activity with a hidden fragment is resumed, the fragment's onResume()
-   * will be called but it is not visible.
-   */
-  private void onFragmentShown() {
-    LoaderManager loaderManager = getLoaderManager();
-    if (!PermissionsUtil.hasCallLogReadPermissions(getContext())) {
-      recyclerView.setVisibility(View.GONE);
-      emptyContentView.setVisibility(View.VISIBLE);
-      loaderManager.destroyLoader(LOADER_ID);
-      return;
-    }
-
-    recyclerView.setVisibility(View.VISIBLE);
-    emptyContentView.setVisibility(View.GONE);
-
-    // This can happen if permissions were not enabled when the fragment was created.
-    if (loaderManager.getLoader(LOADER_ID) == null) {
-      loaderManager.restartLoader(LOADER_ID, null, this);
-    }
-
-    registerRefreshAnnotatedCallLogReceiver();
-
-    CallLogComponent.get(getContext())
-        .getRefreshAnnotatedCallLogNotifier()
-        .notify(/* checkDirty = */ true);
-
-    // There are some types of data that we show in the call log that are not represented in the
-    // AnnotatedCallLog. For example, CP2 information for invalid numbers can sometimes only be
-    // fetched at display time. Because of this, we need to clear the adapter's cache and update it
-    // whenever the user arrives at the call log (rather than relying on changes to the CursorLoader
-    // alone).
-    if (recyclerView.getAdapter() != null) {
-      ((NewCallLogAdapter) recyclerView.getAdapter()).clearCache();
-      recyclerView.getAdapter().notifyDataSetChanged();
-    }
-
-    // We shouldn't mark the calls as read immediately when the 3 second timer expires because we
-    // don't want to disrupt the UI; instead we set a bit indicating to mark them read when the user
-    // leaves the fragment (in onPause).
-    shouldMarkCallsRead = false;
-    ThreadUtil.getUiThreadHandler()
-        .postDelayed(setShouldMarkCallsReadTrue, MARK_ALL_CALLS_READ_WAIT_MILLIS);
-  }
-
-  /**
-   * To be called when the fragment becomes hidden.
-   *
-   * <p>This can happen in the following two cases:
-   *
-   * <ul>
-   *   <li>hide the fragment but keep the parent activity visible (e.g., calling {@link
-   *       android.support.v4.app.FragmentTransaction#hide(Fragment)} in an activity, or
-   *   <li>the parent activity is paused.
-   * </ul>
-   */
-  private void onFragmentHidden() {
-    // This is pending work that we don't actually need to follow through with.
-    ThreadUtil.getUiThreadHandler().removeCallbacks(setShouldMarkCallsReadTrue);
-
-    unregisterRefreshAnnotatedCallLogReceiver();
-
-    if (shouldMarkCallsRead) {
-      Futures.addCallback(
-          CallLogComponent.get(getContext()).getClearMissedCalls().clearAll(),
-          new DefaultFutureCallback<>(),
-          MoreExecutors.directExecutor());
-    }
-  }
-
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-    LogUtil.enterBlock("NewCallLogFragment.onCreateView");
-
-    View view = inflater.inflate(R.layout.new_call_log_fragment, container, false);
-    recyclerView = view.findViewById(R.id.new_call_log_recycler_view);
-    recyclerView.addOnScrollListener(
-        new RecyclerViewJankLogger(
-            MetricsComponent.get(getContext()).metrics(), Metrics.NEW_CALL_LOG_JANK_EVENT_NAME));
-
-    emptyContentView = view.findViewById(R.id.new_call_log_empty_content_view);
-    configureEmptyContentView();
-
-    coalesingAnnotatedCallLogListener =
-        DialerExecutorComponent.get(getContext())
-            .createUiListener(
-                getChildFragmentManager(),
-                /* taskId = */ "NewCallLogFragment.coalescingAnnotatedCallLog");
-
-    if (PermissionsUtil.hasCallLogReadPermissions(getContext())) {
-      getLoaderManager().restartLoader(LOADER_ID, null, this);
-    }
-
-    return view;
-  }
-
-  private void configureEmptyContentView() {
-    emptyContentView.setImage(R.drawable.quantum_ic_query_builder_vd_theme_24);
-    emptyContentView.setDescription(R.string.new_call_log_permission_no_calllog);
-    emptyContentView.setActionLabel(com.android.dialer.widget.R.string.permission_single_turn_on);
-    emptyContentView.setActionClickedListener(new TurnOnPhonePermissions());
-  }
-
-  private class TurnOnPhonePermissions implements OnEmptyViewActionButtonClickedListener {
-
-    @Override
-    public void onEmptyViewActionButtonClicked() {
-      if (getContext() == null) {
-        LogUtil.w("TurnOnPhonePermissions.onEmptyViewActionButtonClicked", "no context");
-        return;
-      }
-      String[] deniedPermissions =
-          PermissionsUtil.getPermissionsCurrentlyDenied(
-              getContext(), PermissionsUtil.allPhoneGroupPermissionsUsedInDialer);
-      if (deniedPermissions.length > 0) {
-        LogUtil.i(
-            "TurnOnPhonePermissions.onEmptyViewActionButtonClicked",
-            "requesting permissions: %s",
-            Arrays.toString(deniedPermissions));
-        // Don't implement onRequestPermissionsResult; instead rely on views being updated in
-        // #onFragmentShown.
-        requestPermissions(deniedPermissions, PHONE_PERMISSIONS_REQUEST_CODE);
-      }
-    }
-  }
-
-  private void registerRefreshAnnotatedCallLogReceiver() {
-    LogUtil.enterBlock("NewCallLogFragment.registerRefreshAnnotatedCallLogReceiver");
-
-    LocalBroadcastManager.getInstance(getContext())
-        .registerReceiver(
-            refreshAnnotatedCallLogReceiver, RefreshAnnotatedCallLogReceiver.getIntentFilter());
-  }
-
-  private void unregisterRefreshAnnotatedCallLogReceiver() {
-    LogUtil.enterBlock("NewCallLogFragment.unregisterRefreshAnnotatedCallLogReceiver");
-
-    // Cancel pending work as we don't need it any more.
-    CallLogComponent.get(getContext()).getRefreshAnnotatedCallLogNotifier().cancel();
-
-    LocalBroadcastManager.getInstance(getContext())
-        .unregisterReceiver(refreshAnnotatedCallLogReceiver);
-  }
-
-  @Override
-  public Loader<Cursor> onCreateLoader(int id, Bundle args) {
-    LogUtil.enterBlock("NewCallLogFragment.onCreateLoader");
-    return new AnnotatedCallLogCursorLoader(Assert.isNotNull(getContext()));
-  }
-
-  @Override
-  public void onLoadFinished(Loader<Cursor> loader, Cursor newCursor) {
-    LogUtil.enterBlock("NewCallLogFragment.onLoadFinished");
-
-    if (newCursor == null) {
-      // This might be possible when the annotated call log hasn't been created but we're trying
-      // to show the call log.
-      LogUtil.w("NewCallLogFragment.onLoadFinished", "null cursor");
-      return;
-    }
-
-    // Start combining adjacent rows which should be collapsed for display purposes.
-    // This is a time-consuming process so we will do it in the background.
-    ListenableFuture<ImmutableList<CoalescedRow>> coalescedRowsFuture =
-        CallLogDatabaseComponent.get(getContext()).coalescer().coalesce(newCursor);
-
-    coalesingAnnotatedCallLogListener.listen(
-        getContext(),
-        coalescedRowsFuture,
-        coalescedRows -> {
-          LogUtil.i("NewCallLogFragment.onLoadFinished", "coalescing succeeded");
-
-          // TODO(zachh): Handle empty cursor by showing empty view.
-          if (recyclerView.getAdapter() == null) {
-            recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
-            // Note: It's not clear if this callback can be invoked when there's no associated
-            // activity, but if crashes are observed here it may be possible to use getContext()
-            // instead.
-            Activity activity = Assert.isNotNull(getActivity());
-            recyclerView.setAdapter(
-                new NewCallLogAdapter(
-                    activity,
-                    coalescedRows,
-                    System::currentTimeMillis,
-                    PromotionComponent.get(getContext())
-                        .promotionManager()
-                        .getHighestPriorityPromotion(PromotionType.CARD)
-                        .orElse(null)));
-          } else {
-            ((NewCallLogAdapter) recyclerView.getAdapter()).updateRows(coalescedRows);
-          }
-        },
-        throwable -> {
-          // Coalescing can fail if the cursor passed to Coalescer is closed by the loader while
-          // the work is still in progress.
-          // This can happen when the loader restarts and finishes loading data before the
-          // coalescing work is completed.
-          // This failure is identified by ExpectedCoalescerException and doesn't need to be
-          // thrown as coalescing will be restarted on the latest data obtained by the loader.
-          if (!(throwable instanceof Coalescer.ExpectedCoalescerException)) {
-            throw new AssertionError(throwable);
-          }
-        });
-  }
-
-  @Override
-  public void onLoaderReset(Loader<Cursor> loader) {
-    LogUtil.enterBlock("NewCallLogFragment.onLoaderReset");
-    recyclerView.setAdapter(null);
-  }
-}
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
deleted file mode 100644
index a6e3c99..0000000
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.dialer.calllog.ui;
-
-import android.app.Activity;
-import android.content.res.ColorStateList;
-import android.provider.CallLog.Calls;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.v7.widget.RecyclerView;
-import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
-import android.text.TextUtils;
-import android.view.View;
-import android.view.View.AccessibilityDelegate;
-import android.view.accessibility.AccessibilityNodeInfo;
-import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
-import android.widget.ImageView;
-import android.widget.TextView;
-import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.calllog.ui.NewCallLogAdapter.PopCounts;
-import com.android.dialer.calllog.ui.menu.NewCallLogMenu;
-import com.android.dialer.calllogutils.CallLogEntryDescriptions;
-import com.android.dialer.calllogutils.CallLogEntryText;
-import com.android.dialer.calllogutils.CallLogRowActions;
-import com.android.dialer.calllogutils.PhoneAccountUtils;
-import com.android.dialer.calllogutils.PhotoInfoBuilder;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.oem.MotorolaUtils;
-import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.time.Clock;
-import com.android.dialer.widget.ContactPhotoView;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import java.util.Locale;
-import java.util.concurrent.ExecutorService;
-
-/** {@link RecyclerView.ViewHolder} for the new call log. */
-final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
-
-  private final Activity activity;
-  private final ContactPhotoView contactPhotoView;
-  private final TextView primaryTextView;
-  private final TextView callCountTextView;
-  private final TextView secondaryTextView;
-  private final ImageView callTypeIcon;
-  private final ImageView hdIcon;
-  private final ImageView wifiIcon;
-  private final ImageView assistedDialIcon;
-  private final TextView phoneAccountView;
-  private final ImageView callButton;
-  private final View callLogEntryRootView;
-
-  private final Clock clock;
-  private final RealtimeRowProcessor realtimeRowProcessor;
-  private final ExecutorService uiExecutorService;
-  private final PopCounts popCounts;
-
-  private long currentRowId;
-
-  NewCallLogViewHolder(
-      Activity activity,
-      View view,
-      Clock clock,
-      RealtimeRowProcessor realtimeRowProcessor,
-      PopCounts popCounts) {
-    super(view);
-    this.activity = activity;
-    callLogEntryRootView = view;
-    contactPhotoView = view.findViewById(R.id.contact_photo_view);
-    primaryTextView = view.findViewById(R.id.primary_text);
-    callCountTextView = view.findViewById(R.id.call_count);
-    secondaryTextView = view.findViewById(R.id.secondary_text);
-    callTypeIcon = view.findViewById(R.id.call_type_icon);
-    hdIcon = view.findViewById(R.id.hd_icon);
-    wifiIcon = view.findViewById(R.id.wifi_icon);
-    assistedDialIcon = view.findViewById(R.id.assisted_dial_icon);
-    phoneAccountView = view.findViewById(R.id.phone_account);
-    callButton = view.findViewById(R.id.call_button);
-
-    this.clock = clock;
-    this.realtimeRowProcessor = realtimeRowProcessor;
-    this.popCounts = popCounts;
-    uiExecutorService = DialerExecutorComponent.get(activity).uiExecutor();
-  }
-
-  void bind(CoalescedRow coalescedRow) {
-    // The row ID is used to make sure async updates are applied to the correct views.
-    currentRowId = coalescedRow.getId();
-
-    // Even if there is additional real time processing necessary, we still want to immediately show
-    // what information we have, rather than an empty card. For example, if CP2 information needs to
-    // be queried on the fly, we can still show the phone number until the contact name loads.
-    displayRow(coalescedRow);
-    configA11yForRow(coalescedRow);
-
-    // Note: This leaks the view holder via the callback (which is an inner class), but this is OK
-    // because we only create ~10 of them (and they'll be collected assuming all jobs finish).
-    Futures.addCallback(
-        realtimeRowProcessor.applyRealtimeProcessing(coalescedRow),
-        new RealtimeRowFutureCallback(coalescedRow),
-        uiExecutorService);
-  }
-
-  private void displayRow(CoalescedRow row) {
-    // TODO(zachh): Handle RTL properly.
-    primaryTextView.setText(CallLogEntryText.buildPrimaryText(activity, row));
-    secondaryTextView.setText(CallLogEntryText.buildSecondaryTextForEntries(activity, clock, row));
-
-    if (isUnreadMissedCall(row)) {
-      primaryTextView.setTextAppearance(R.style.primary_textview_unread_call);
-      callCountTextView.setTextAppearance(R.style.primary_textview_unread_call);
-      secondaryTextView.setTextAppearance(R.style.secondary_textview_unread_call);
-      phoneAccountView.setTextAppearance(R.style.phoneaccount_textview_unread_call);
-    } else {
-      primaryTextView.setTextAppearance(R.style.primary_textview);
-      callCountTextView.setTextAppearance(R.style.primary_textview);
-      secondaryTextView.setTextAppearance(R.style.secondary_textview);
-      phoneAccountView.setTextAppearance(R.style.phoneaccount_textview);
-    }
-
-    setNumberCalls(row);
-    setPhoto(row);
-    setFeatureIcons(row);
-    setCallTypeIcon(row);
-    setPhoneAccounts(row);
-    setCallButon(row);
-
-    itemView.setOnClickListener(NewCallLogMenu.createOnClickListener(activity, row));
-  }
-
-  private void configA11yForRow(CoalescedRow row) {
-    callLogEntryRootView.setContentDescription(
-        CallLogEntryDescriptions.buildDescriptionForEntry(activity, clock, row));
-
-    // Inform a11y users that double tapping an entry now makes a call.
-    // This will instruct TalkBack to say "double tap to call" instead of
-    // "double tap to activate".
-    callLogEntryRootView.setAccessibilityDelegate(
-        new AccessibilityDelegate() {
-          @Override
-          public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
-            super.onInitializeAccessibilityNodeInfo(host, info);
-            info.addAction(
-                new AccessibilityAction(
-                    AccessibilityNodeInfo.ACTION_CLICK,
-                    activity
-                        .getResources()
-                        .getString(R.string.a11y_new_call_log_entry_tap_action)));
-          }
-        });
-  }
-
-  private void setNumberCalls(CoalescedRow row) {
-    int numberCalls = row.getCoalescedIds().getCoalescedIdCount();
-    if (numberCalls > 1) {
-      callCountTextView.setText(String.format(Locale.getDefault(), "(%d)", numberCalls));
-      callCountTextView.setVisibility(View.VISIBLE);
-    } else {
-      callCountTextView.setVisibility(View.GONE);
-    }
-  }
-
-  private boolean isUnreadMissedCall(CoalescedRow row) {
-    // Show missed call styling if the most recent call in the group was missed and it is still
-    // marked as not read. The "NEW" column is presumably used for notifications and voicemails
-    // only.
-    return row.getCallType() == Calls.MISSED_TYPE && !row.getIsRead();
-  }
-
-  private void setPhoto(CoalescedRow row) {
-    contactPhotoView.setPhoto(PhotoInfoBuilder.fromCoalescedRow(activity, row).build());
-  }
-
-  private void setFeatureIcons(CoalescedRow row) {
-    ColorStateList colorStateList =
-        ColorStateList.valueOf(
-            activity.getColor(
-                isUnreadMissedCall(row)
-                    ? R.color.feature_icon_unread_color
-                    : R.color.feature_icon_read_color));
-
-    // Handle HD Icon
-    if ((row.getFeatures() & Calls.FEATURES_HD_CALL) == Calls.FEATURES_HD_CALL) {
-      hdIcon.setVisibility(View.VISIBLE);
-      hdIcon.setImageTintList(colorStateList);
-    } else {
-      hdIcon.setVisibility(View.GONE);
-    }
-
-    // Handle Wifi Icon
-    if (MotorolaUtils.shouldShowWifiIconInCallLog(activity, row.getFeatures())) {
-      wifiIcon.setVisibility(View.VISIBLE);
-      wifiIcon.setImageTintList(colorStateList);
-    } else {
-      wifiIcon.setVisibility(View.GONE);
-    }
-
-    // Handle Assisted Dialing Icon
-    if ((row.getFeatures() & TelephonyManagerCompat.FEATURES_ASSISTED_DIALING)
-        == TelephonyManagerCompat.FEATURES_ASSISTED_DIALING) {
-      assistedDialIcon.setVisibility(View.VISIBLE);
-      assistedDialIcon.setImageTintList(colorStateList);
-    } else {
-      assistedDialIcon.setVisibility(View.GONE);
-    }
-  }
-
-  private void setCallTypeIcon(CoalescedRow row) {
-    @DrawableRes int resId;
-    switch (row.getCallType()) {
-      case Calls.INCOMING_TYPE:
-      case Calls.ANSWERED_EXTERNALLY_TYPE:
-        resId = R.drawable.quantum_ic_call_received_vd_theme_24;
-        break;
-      case Calls.OUTGOING_TYPE:
-        resId = R.drawable.quantum_ic_call_made_vd_theme_24;
-        break;
-      case Calls.MISSED_TYPE:
-        resId = R.drawable.quantum_ic_call_missed_vd_theme_24;
-        break;
-      case Calls.VOICEMAIL_TYPE:
-        throw new IllegalStateException("Voicemails not expected in call log");
-      case Calls.BLOCKED_TYPE:
-        resId = R.drawable.quantum_ic_block_vd_theme_24;
-        break;
-      default:
-        // It is possible for users to end up with calls with unknown call types in their
-        // call history, possibly due to 3rd party call log implementations (e.g. to
-        // distinguish between rejected and missed calls). Instead of crashing, just
-        // assume that all unknown call types are missed calls.
-        resId = R.drawable.quantum_ic_call_missed_vd_theme_24;
-        break;
-    }
-    callTypeIcon.setImageResource(resId);
-
-    if (isUnreadMissedCall(row)) {
-      callTypeIcon.setImageTintList(
-          ColorStateList.valueOf(activity.getColor(R.color.call_type_icon_unread_color)));
-    } else {
-      callTypeIcon.setImageTintList(
-          ColorStateList.valueOf(activity.getColor(R.color.call_type_icon_read_color)));
-    }
-  }
-
-  private void setPhoneAccounts(CoalescedRow row) {
-    PhoneAccountHandle phoneAccountHandle =
-        TelecomUtil.composePhoneAccountHandle(
-            row.getPhoneAccountComponentName(), row.getPhoneAccountId());
-    if (phoneAccountHandle == null) {
-      phoneAccountView.setVisibility(View.GONE);
-      return;
-    }
-
-    String phoneAccountLabel = PhoneAccountUtils.getAccountLabel(activity, phoneAccountHandle);
-    if (TextUtils.isEmpty(phoneAccountLabel)) {
-      phoneAccountView.setVisibility(View.GONE);
-      return;
-    }
-
-    @ColorInt
-    int phoneAccountColor = PhoneAccountUtils.getAccountColor(activity, phoneAccountHandle);
-    if (phoneAccountColor == PhoneAccount.NO_HIGHLIGHT_COLOR) {
-      phoneAccountColor =
-          activity
-              .getResources()
-              .getColor(R.color.dialer_secondary_text_color, activity.getTheme());
-    }
-
-    phoneAccountView.setText(phoneAccountLabel);
-    phoneAccountView.setTextColor(phoneAccountColor);
-    phoneAccountView.setVisibility(View.VISIBLE);
-  }
-
-  private void setCallButon(CoalescedRow row) {
-    if (!PhoneNumberHelper.canPlaceCallsTo(
-        row.getNumber().getNormalizedNumber(), row.getNumberPresentation())) {
-      callButton.setVisibility(View.GONE);
-      return;
-    }
-
-    callButton.setVisibility(View.VISIBLE);
-    if ((row.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO) {
-      callButton.setImageResource(R.drawable.quantum_ic_videocam_vd_theme_24);
-      callButton.setContentDescription(
-          TextUtils.expandTemplate(
-              activity.getResources().getText(R.string.a11y_new_call_log_entry_video_call),
-              CallLogEntryText.buildPrimaryText(activity, row)));
-    } else {
-      callButton.setImageResource(R.drawable.quantum_ic_call_vd_theme_24);
-      callButton.setContentDescription(
-          TextUtils.expandTemplate(
-              activity.getResources().getText(R.string.a11y_new_call_log_entry_voice_call),
-              CallLogEntryText.buildPrimaryText(activity, row)));
-    }
-
-    callButton.setOnClickListener(view -> CallLogRowActions.startCallForRow(activity, row));
-  }
-
-  private class RealtimeRowFutureCallback implements FutureCallback<CoalescedRow> {
-    private final CoalescedRow originalRow;
-
-    RealtimeRowFutureCallback(CoalescedRow originalRow) {
-      this.originalRow = originalRow;
-    }
-
-    @Override
-    public void onSuccess(CoalescedRow updatedRow) {
-      // If the user scrolled then this ViewHolder may not correspond to the completed task and
-      // there's nothing to do.
-      if (originalRow.getId() != currentRowId) {
-        popCounts.didNotPop++;
-        return;
-      }
-      // Only update the UI if the updated row differs from the original row (which has already
-      // been displayed).
-      if (!updatedRow.equals(originalRow)) {
-        displayRow(updatedRow);
-        popCounts.popped++;
-        return;
-      }
-      popCounts.didNotPop++;
-    }
-
-    @Override
-    public void onFailure(Throwable throwable) {
-      throw new RuntimeException("realtime processing failed", throwable);
-    }
-  }
-}
diff --git a/java/com/android/dialer/calllog/ui/PromotionCardViewHolder.java b/java/com/android/dialer/calllog/ui/PromotionCardViewHolder.java
deleted file mode 100644
index c7d62ba..0000000
--- a/java/com/android/dialer/calllog/ui/PromotionCardViewHolder.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.calllog.ui;
-
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.text.method.LinkMovementMethod;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.TextView;
-import com.android.dialer.promotion.Promotion;
-
-/** ViewHolder for {@link NewCallLogAdapter} to display the Duo disclosure card. */
-public class PromotionCardViewHolder extends ViewHolder {
-
-  /** Listener to be called when promotion card is dismissed. */
-  interface DismissListener {
-    void onDismiss();
-  }
-
-  private final Button okButton;
-  private final Promotion promotion;
-
-  PromotionCardViewHolder(View itemView, Promotion promotion) {
-    super(itemView);
-    this.promotion = promotion;
-
-    ImageView iconView = itemView.findViewById(R.id.new_call_log_promotion_card_icon);
-    iconView.setImageResource(promotion.getIconRes());
-
-    TextView cardTitleView = itemView.findViewById(R.id.new_call_log_promotion_card_title);
-    cardTitleView.setText(promotion.getTitle());
-
-    TextView cardDetailsView = itemView.findViewById(R.id.new_call_log_promotion_card_details);
-    cardDetailsView.setText(promotion.getDetails());
-    cardDetailsView.setMovementMethod(LinkMovementMethod.getInstance()); // make the link clickable
-
-    // Obtain a reference to the "OK, got it" button.
-    okButton = itemView.findViewById(R.id.new_call_log_promotion_card_ok);
-  }
-
-  void setDismissListener(DismissListener listener) {
-    okButton.setOnClickListener(
-        v -> {
-          promotion.dismiss();
-          listener.onDismiss();
-        });
-  }
-}
diff --git a/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java b/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
index df5270d..4093f5b 100644
--- a/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
+++ b/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,9 +20,10 @@
 import android.content.ContentProviderOperation;
 import android.content.ContentValues;
 import android.content.Context;
-import android.support.annotation.MainThread;
-import android.support.annotation.VisibleForTesting;
 import android.util.ArrayMap;
+
+import androidx.annotation.MainThread;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.calllog.model.CoalescedRow;
 import com.android.dialer.calllogutils.NumberAttributesBuilder;
@@ -40,11 +42,13 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.TimeUnit;
+
 import javax.inject.Inject;
 
 /**
@@ -65,7 +69,7 @@
   /*
    * The time to wait between writing batches of records to PhoneLookupHistory.
    */
-  @VisibleForTesting static final long BATCH_WAIT_MILLIS = TimeUnit.SECONDS.toMillis(3);
+  private static final long BATCH_WAIT_MILLIS = TimeUnit.SECONDS.toMillis(3);
 
   private final Context appContext;
   private final CompositePhoneLookup compositePhoneLookup;
diff --git a/java/com/android/dialer/calllog/ui/menu/AndroidManifest.xml b/java/com/android/dialer/calllog/ui/menu/AndroidManifest.xml
deleted file mode 100644
index 0d8274d..0000000
--- a/java/com/android/dialer/calllog/ui/menu/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.calllog.ui.menu"/>
diff --git a/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java b/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java
index 6d0b795..5eb3dac 100644
--- a/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java
+++ b/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.dialer.calllog.ui.menu;
 
 import android.content.Context;
+
 import com.android.dialer.calllog.model.CoalescedRow;
 import com.android.dialer.calllogutils.CallLogEntryText;
 import com.android.dialer.calllogutils.PhotoInfoBuilder;
diff --git a/java/com/android/dialer/calllog/ui/menu/DeleteCallLogItemModule.java b/java/com/android/dialer/calllog/ui/menu/DeleteCallLogItemModule.java
index a929961..986a751 100644
--- a/java/com/android/dialer/calllog/ui/menu/DeleteCallLogItemModule.java
+++ b/java/com/android/dialer/calllog/ui/menu/DeleteCallLogItemModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,17 +21,19 @@
 import android.content.Context;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresPermission;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresPermission;
+
 import com.android.dialer.CoalescedIds;
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.database.Selection;
 import com.android.dialer.historyitemactions.HistoryItemActionModule;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
+
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.List;
@@ -64,8 +67,6 @@
         .createNonUiTaskBuilder(new CallLogItemDeletionWorker(context))
         .build()
         .executeSerial(coalescedIds);
-
-    Logger.get(context).logImpression(DialerImpression.Type.USER_DELETED_CALL_LOG_ITEM);
     return true;
   }
 
@@ -100,6 +101,9 @@
           context
               .getContentResolver()
               .delete(Calls.CONTENT_URI, selection.getSelection(), selection.getSelectionArgs());
+      context
+          .getContentResolver()
+          .notifyChange(Calls.CONTENT_URI, null);
 
       if (numRowsDeleted != coalescedIds.getCoalescedIdCount()) {
         LogUtil.e(
diff --git a/java/com/android/dialer/calllog/ui/menu/Modules.java b/java/com/android/dialer/calllog/ui/menu/Modules.java
index 7c6c65c..37c8aaf 100644
--- a/java/com/android/dialer/calllog/ui/menu/Modules.java
+++ b/java/com/android/dialer/calllog/ui/menu/Modules.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,8 @@
 
 import android.content.Context;
 import android.text.TextUtils;
+
+import com.android.dialer.R;
 import com.android.dialer.calldetails.CallDetailsActivity;
 import com.android.dialer.calldetails.CallDetailsHeaderInfo;
 import com.android.dialer.calllog.model.CoalescedRow;
@@ -28,6 +31,7 @@
 import com.android.dialer.historyitemactions.HistoryItemActionModulesBuilder;
 import com.android.dialer.historyitemactions.IntentModule;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+
 import java.util.List;
 
 /**
@@ -44,9 +48,6 @@
     HistoryItemActionModulesBuilder modulesBuilder =
         new HistoryItemActionModulesBuilder(context, buildModuleInfo(row));
 
-
-    // TODO(zachh): Module for CallComposer.
-
     if (PhoneNumberHelper.canPlaceCallsTo(
         row.getNumber().getNormalizedNumber(), row.getNumberPresentation())) {
       modulesBuilder
diff --git a/java/com/android/dialer/calllog/ui/menu/NewCallLogMenu.java b/java/com/android/dialer/calllog/ui/menu/NewCallLogMenu.java
index 3869e78..dc35508 100644
--- a/java/com/android/dialer/calllog/ui/menu/NewCallLogMenu.java
+++ b/java/com/android/dialer/calllog/ui/menu/NewCallLogMenu.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.content.Context;
 import android.provider.CallLog.Calls;
 import android.view.View;
+
 import com.android.dialer.calllog.CallLogComponent;
 import com.android.dialer.calllog.model.CoalescedRow;
 import com.android.dialer.common.concurrent.DefaultFutureCallback;
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
deleted file mode 100644
index dba859f..0000000
--- a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/new_call_log_entry_root"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="72dp"
-    android:background="?android:attr/selectableItemBackground">
-
-  <com.android.dialer.widget.ContactPhotoView
-      android:id="@+id/contact_photo_view"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_marginStart="8dp"
-      android:layout_marginEnd="8dp"
-      android:layout_centerVertical="true"/>
-
-  <!--
-    A vertical linear layout of three rows: primary info, secondary info, and phone account info.
-    It is marked as not important for a11y as we will set a more user-friendly content description
-    for the entire entry view in Java code.
-  -->
-  <LinearLayout
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_centerVertical="true"
-      android:layout_toEndOf="@+id/contact_photo_view"
-      android:layout_toStartOf="@+id/call_button"
-      android:orientation="vertical"
-      android:importantForAccessibility="noHideDescendants">
-
-    <!-- 1st row: primary info -->
-    <LinearLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal">
-
-      <!--
-          Important note:
-
-          The following BidiTextView is the only widget that defines a weight in the containing
-          LinearLayout, of which the purpose is to avoid pushing the widgets after it out of the
-          boundary when the text is too long.
-
-          Generally it is more efficient to assign a width/height of 0dp so that the BidiTextView
-          does not have to measure its own size since it will absorb all the remaining space anyway.
-
-          However, as the BidiTextView is part of an entry in the call log's RecyclerView, we must
-          set layout_width to "wrap_content" so that the TextView can adjust its size when recycled
-          for text of different lengths.
-      -->
-      <com.android.dialer.widget.BidiTextView
-          android:id="@+id/primary_text"
-          style="@style/Dialer.TextAppearance.Primary.Ellipsize"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_weight="1"
-          android:layout_marginEnd="6dp"
-          android:lineSpacingMultiplier="1.5"
-          tools:ignore="InefficientWeight"/>
-
-      <ImageView
-          android:id="@+id/hd_icon"
-          android:layout_width="wrap_content"
-          android:layout_height="18dp"
-          android:layout_gravity="center_vertical"
-          android:importantForAccessibility="no"
-          android:src="@drawable/quantum_ic_hd_vd_theme_24"/>
-
-      <ImageView
-          android:id="@+id/wifi_icon"
-          android:layout_width="wrap_content"
-          android:layout_height="18dp"
-          android:layout_gravity="center_vertical"
-          android:importantForAccessibility="no"
-          android:src="@drawable/quantum_ic_signal_wifi_4_bar_vd_theme_24"/>
-
-      <ImageView
-          android:id="@+id/assisted_dial_icon"
-          android:layout_width="wrap_content"
-          android:layout_height="18dp"
-          android:layout_gravity="center_vertical"
-          android:importantForAccessibility="no"
-          android:src="@drawable/quantum_ic_language_vd_theme_24"/>
-
-      <TextView
-          android:id="@+id/call_count"
-          style="@style/Dialer.TextAppearance.Primary"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_marginEnd="6dp"
-          android:lineSpacingMultiplier="1.5"/>
-
-    </LinearLayout>
-
-    <!-- 2nd row: secondary info -->
-    <LinearLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        tools:ignore="UseCompoundDrawables">
-
-      <ImageView
-          android:id="@+id/call_type_icon"
-          android:layout_width="wrap_content"
-          android:layout_height="18dp"
-          android:layout_gravity="center_vertical"
-          android:importantForAccessibility="no"/>
-
-      <TextView
-          android:id="@+id/secondary_text"
-          style="@style/Dialer.TextAppearance.Secondary.Ellipsize"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:lineSpacingMultiplier="1.4"/>
-
-    </LinearLayout>
-
-    <!-- 3rd row: phone account info -->
-    <TextView
-        android:id="@+id/phone_account"
-        style="@style/Dialer.TextAppearance.Secondary.Ellipsize"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"/>
-
-  </LinearLayout>
-
-  <!--
-    The button to make a call.
-    Its content description is set in Java code.
-  -->
-  <ImageView
-      android:id="@+id/call_button"
-      android:layout_width="56dp"
-      android:layout_height="72dp"
-      android:layout_alignParentEnd="true"
-      android:layout_centerVertical="true"
-      android:background="?android:attr/selectableItemBackgroundBorderless"
-      android:scaleType="center"
-      android:tint="?colorIcon"
-      tools:ignore="ContentDescription"/>
-</RelativeLayout>
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml
deleted file mode 100644
index 3275cc0..0000000
--- a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_fragment.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_height="match_parent"
-    android:layout_width="match_parent">
-
-  <android.support.v7.widget.RecyclerView
-      android:id="@+id/new_call_log_recycler_view"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:paddingBottom="@dimen/floating_action_button_list_bottom_padding"
-      android:background="?android:attr/colorBackground"
-      android:clipToPadding="false"/>
-
-  <com.android.dialer.widget.EmptyContentView
-      android:gravity="center_vertical"
-      android:id="@+id/new_call_log_empty_content_view"
-      android:background="?android:attr/colorBackground"
-      android:layout_gravity="center"
-      android:layout_height="match_parent"
-      android:layout_width="match_parent"
-      android:visibility="gone"/>
-
-</FrameLayout>
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_header.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_header.xml
deleted file mode 100644
index a6d1f61..0000000
--- a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_header.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:minHeight="48dp"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-  <TextView
-      android:id="@+id/new_call_log_header_text"
-      style="@style/Dialer.TextAppearance.Secondary"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_marginStart="16dp"
-      android:layout_marginTop="8dp"
-      android:layout_centerVertical="true"
-      android:layout_gravity="center_vertical"/>
-</RelativeLayout>
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_promotion_card.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_promotion_card.xml
deleted file mode 100644
index fade6c7..0000000
--- a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_promotion_card.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?android:attr/colorBackground"
-    android:orientation="vertical">
-
-  <LinearLayout
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:paddingTop="16dp"
-      android:paddingStart="16dp"
-      android:paddingEnd="24dp"
-      android:clipChildren="false"
-      android:clipToPadding="false"
-      android:orientation="horizontal">
-
-    <ImageView
-        android:id="@+id/new_call_log_promotion_card_icon"
-        android:layout_width="40dp"
-        android:layout_height="40dp"
-        android:layout_marginEnd="16dp"
-        android:importantForAccessibility="no"/>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="8dp"
-        android:orientation="vertical">
-
-      <TextView
-          android:id="@+id/new_call_log_promotion_card_title"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:layout_marginBottom="12dp"
-          style="@style/Dialer.TextAppearance.Header2"/>
-      <TextView
-          android:id="@+id/new_call_log_promotion_card_details"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:layout_marginBottom="16dp"
-          android:lineSpacingExtra="8dp"
-          style="@style/Dialer.TextAppearance.Secondary"/>
-      <Button
-          android:id="@+id/new_call_log_promotion_card_ok"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_marginTop="6dp"
-          android:layout_marginBottom="2dp"
-          android:layout_gravity="end"
-          android:paddingLeft="14dp"
-          android:paddingRight="14dp"
-          android:text="@string/ok_got_it"
-          android:textSize="14sp"/>
-    </LinearLayout>
-  </LinearLayout>
-
-  <!-- The boundary line at the bottom -->
-  <View
-      android:layout_width="match_parent"
-      android:layout_height="1dp"
-      android:layout_marginTop="8dp"
-      android:background="#DBDBDB"/>
-</LinearLayout>
diff --git a/java/com/android/dialer/calllog/ui/res/values-af/strings.xml b/java/com/android/dialer/calllog/ui/res/values-af/strings.xml
deleted file mode 100644
index a5c88e3..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-af/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Vandag</string>
-  <string name="new_call_log_header_yesterday">Gister</string>
-  <string name="new_call_log_header_older">Ouer</string>
-  <string name="new_call_log_permission_no_calllog">Skakel die foontoestemming aan om jou oproeprekord te sien.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-am/strings.xml b/java/com/android/dialer/calllog/ui/res/values-am/strings.xml
deleted file mode 100644
index ca21cf4..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-am/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">ዛሬ</string>
-  <string name="new_call_log_header_yesterday">ትላንት</string>
-  <string name="new_call_log_header_older">የቆዩ</string>
-  <string name="new_call_log_permission_no_calllog">የጥሪ ምዝግብ ማስታወሻዎን ለማየት የስልክ ፍቃዱን ያብሩ።</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ar/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ar/strings.xml
deleted file mode 100644
index 75906d0..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ar/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">اليوم</string>
-  <string name="new_call_log_header_yesterday">أمس</string>
-  <string name="new_call_log_header_older">أقدم</string>
-  <string name="new_call_log_permission_no_calllog">للاطلاع على سجل المكالمات، شغِّل إذن الهاتف.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-az/strings.xml b/java/com/android/dialer/calllog/ui/res/values-az/strings.xml
deleted file mode 100644
index ba9723a..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-az/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Bu gün</string>
-  <string name="new_call_log_header_yesterday">Dünən</string>
-  <string name="new_call_log_header_older">Keçmiş</string>
-  <string name="new_call_log_permission_no_calllog">Zəng jurnalınızı görmək üçün Telefon icazəsini aktiv edin.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/calllog/ui/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 9f0c8ac..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Danas</string>
-  <string name="new_call_log_header_yesterday">Juče</string>
-  <string name="new_call_log_header_older">Ranije</string>
-  <string name="new_call_log_permission_no_calllog">Da biste videli evidenciju poziva, uključite dozvolu za Telefon.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-be/strings.xml b/java/com/android/dialer/calllog/ui/res/values-be/strings.xml
deleted file mode 100644
index b473805..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-be/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Сёння</string>
-  <string name="new_call_log_header_yesterday">Учора</string>
-  <string name="new_call_log_header_older">Больш старыя</string>
-  <string name="new_call_log_permission_no_calllog">Каб прагледзець журнал выклікаў, дазвольце доступ да Тэлефона.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-bg/strings.xml b/java/com/android/dialer/calllog/ui/res/values-bg/strings.xml
deleted file mode 100644
index a855bb1..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-bg/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Днес</string>
-  <string name="new_call_log_header_yesterday">Вчера</string>
-  <string name="new_call_log_header_older">По-стари</string>
-  <string name="new_call_log_permission_no_calllog">За да видите списъка с обажданията си, включете разрешението за Телефон.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-bn/strings.xml b/java/com/android/dialer/calllog/ui/res/values-bn/strings.xml
deleted file mode 100644
index e34c1e8..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-bn/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">আজ</string>
-  <string name="new_call_log_header_yesterday">গতকাল</string>
-  <string name="new_call_log_header_older">পুরনো</string>
-  <string name="new_call_log_permission_no_calllog">কল লগ দেখতে ফোনের অনুমতি চালু করুন।</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-bs/strings.xml b/java/com/android/dialer/calllog/ui/res/values-bs/strings.xml
deleted file mode 100644
index c4e47fd..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-bs/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Danas</string>
-  <string name="new_call_log_header_yesterday">Jučer</string>
-  <string name="new_call_log_header_older">Starije</string>
-  <string name="new_call_log_permission_no_calllog">Da vidite popis poziva, uključite odobrenje za Telefon.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ca/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ca/strings.xml
deleted file mode 100644
index 52030a2..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ca/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Avui</string>
-  <string name="new_call_log_header_yesterday">Ahir</string>
-  <string name="new_call_log_header_older">Anteriors</string>
-  <string name="new_call_log_permission_no_calllog">Activa el permís Telèfon per veure el teu registre de trucades.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-cs/strings.xml b/java/com/android/dialer/calllog/ui/res/values-cs/strings.xml
deleted file mode 100644
index 57e82f8..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-cs/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Dnes</string>
-  <string name="new_call_log_header_yesterday">Včera</string>
-  <string name="new_call_log_header_older">Starší</string>
-  <string name="new_call_log_permission_no_calllog">Pokud chcete zobrazit seznam hovorů, zapněte oprávnění Telefon.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-da/strings.xml b/java/com/android/dialer/calllog/ui/res/values-da/strings.xml
deleted file mode 100644
index aab0f16..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-da/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">I dag</string>
-  <string name="new_call_log_header_yesterday">I går</string>
-  <string name="new_call_log_header_older">Ældre</string>
-  <string name="new_call_log_permission_no_calllog">Slå tilladelsen Telefon til for at se din opkaldsliste.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-de/strings.xml b/java/com/android/dialer/calllog/ui/res/values-de/strings.xml
deleted file mode 100644
index 5367161..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-de/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Heute</string>
-  <string name="new_call_log_header_yesterday">Gestern</string>
-  <string name="new_call_log_header_older">Ältere</string>
-  <string name="new_call_log_permission_no_calllog">Aktiviere die Berechtigung \"Telefon\", um dein Anrufprotokoll abzurufen.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-el/strings.xml b/java/com/android/dialer/calllog/ui/res/values-el/strings.xml
deleted file mode 100644
index 3063ce9..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-el/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Σήμερα</string>
-  <string name="new_call_log_header_yesterday">Χθες</string>
-  <string name="new_call_log_header_older">Παλαιότερες</string>
-  <string name="new_call_log_permission_no_calllog">Για να δείτε το αρχείο καταγραφής κλήσεών σας, ενεργοποιήστε την άδεια τηλεφώνου.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-en-rAU/strings.xml b/java/com/android/dialer/calllog/ui/res/values-en-rAU/strings.xml
deleted file mode 100644
index 6789a06..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Today</string>
-  <string name="new_call_log_header_yesterday">Yesterday</string>
-  <string name="new_call_log_header_older">Older</string>
-  <string name="new_call_log_permission_no_calllog">To see your call log, turn on the Phone permission.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-en-rGB/strings.xml b/java/com/android/dialer/calllog/ui/res/values-en-rGB/strings.xml
deleted file mode 100644
index 6789a06..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Today</string>
-  <string name="new_call_log_header_yesterday">Yesterday</string>
-  <string name="new_call_log_header_older">Older</string>
-  <string name="new_call_log_permission_no_calllog">To see your call log, turn on the Phone permission.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-en-rIN/strings.xml b/java/com/android/dialer/calllog/ui/res/values-en-rIN/strings.xml
deleted file mode 100644
index 6789a06..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Today</string>
-  <string name="new_call_log_header_yesterday">Yesterday</string>
-  <string name="new_call_log_header_older">Older</string>
-  <string name="new_call_log_permission_no_calllog">To see your call log, turn on the Phone permission.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-es-rUS/strings.xml b/java/com/android/dialer/calllog/ui/res/values-es-rUS/strings.xml
deleted file mode 100644
index 370874c..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Hoy</string>
-  <string name="new_call_log_header_yesterday">Ayer</string>
-  <string name="new_call_log_header_older">Anterior</string>
-  <string name="new_call_log_permission_no_calllog">Para ver el registro de llamadas, activa el permiso Teléfono.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-es/strings.xml b/java/com/android/dialer/calllog/ui/res/values-es/strings.xml
deleted file mode 100644
index 7560e00..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-es/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Hoy</string>
-  <string name="new_call_log_header_yesterday">Ayer</string>
-  <string name="new_call_log_header_older">Anteriores</string>
-  <string name="new_call_log_permission_no_calllog">Para ver el registro de llamadas, habilita el permiso de teléfono.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-et/strings.xml b/java/com/android/dialer/calllog/ui/res/values-et/strings.xml
deleted file mode 100644
index b885b34..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-et/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Täna</string>
-  <string name="new_call_log_header_yesterday">Eile</string>
-  <string name="new_call_log_header_older">Vanem</string>
-  <string name="new_call_log_permission_no_calllog">Kõnelogi vaatamiseks lülitage sisse telefoniluba.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-eu/strings.xml b/java/com/android/dialer/calllog/ui/res/values-eu/strings.xml
deleted file mode 100644
index f91d180..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-eu/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Gaurkoak</string>
-  <string name="new_call_log_header_yesterday">Atzo</string>
-  <string name="new_call_log_header_older">Zaharragoak</string>
-  <string name="new_call_log_permission_no_calllog">Deien erregistroa ikusteko, aktibatu telefonoa erabiltzeko baimena.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-fa/strings.xml b/java/com/android/dialer/calllog/ui/res/values-fa/strings.xml
deleted file mode 100644
index 1e14791..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-fa/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">امروز</string>
-  <string name="new_call_log_header_yesterday">دیروز</string>
-  <string name="new_call_log_header_older">قدیمی‌تر</string>
-  <string name="new_call_log_permission_no_calllog">برای دیدن گزارش تماستان، مجوز «تلفن» را روشن کنید.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-fi/strings.xml b/java/com/android/dialer/calllog/ui/res/values-fi/strings.xml
deleted file mode 100644
index 634c456..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-fi/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Tänään</string>
-  <string name="new_call_log_header_yesterday">Eilen</string>
-  <string name="new_call_log_header_older">Vanhemmat</string>
-  <string name="new_call_log_permission_no_calllog">Jos haluat katsella puhelulokiasi, ota Puhelin-käyttöoikeus käyttöön.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-fr-rCA/strings.xml b/java/com/android/dialer/calllog/ui/res/values-fr-rCA/strings.xml
deleted file mode 100644
index a49f60c..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Aujourd\'hui</string>
-  <string name="new_call_log_header_yesterday">Hier</string>
-  <string name="new_call_log_header_older">Plus anciens</string>
-  <string name="new_call_log_permission_no_calllog">Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-fr/strings.xml b/java/com/android/dialer/calllog/ui/res/values-fr/strings.xml
deleted file mode 100644
index a49f60c..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-fr/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Aujourd\'hui</string>
-  <string name="new_call_log_header_yesterday">Hier</string>
-  <string name="new_call_log_header_older">Plus anciens</string>
-  <string name="new_call_log_permission_no_calllog">Pour consulter votre journal d\'appels, activez l\'autorisation Téléphone.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-gl/strings.xml b/java/com/android/dialer/calllog/ui/res/values-gl/strings.xml
deleted file mode 100644
index 3f1673e..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-gl/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Hoxe</string>
-  <string name="new_call_log_header_yesterday">Onte</string>
-  <string name="new_call_log_header_older">Anteriores</string>
-  <string name="new_call_log_permission_no_calllog">Para ver o teu rexistro de chamadas, activa o permiso de Teléfono.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-gu/strings.xml b/java/com/android/dialer/calllog/ui/res/values-gu/strings.xml
deleted file mode 100644
index 5cd519a..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-gu/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">આજે</string>
-  <string name="new_call_log_header_yesterday">ગઈકાલે</string>
-  <string name="new_call_log_header_older">જૂનું</string>
-  <string name="new_call_log_permission_no_calllog">તમારો કૉલ લૉગ જોવા માટે, ફોનની પરવાનગી ચાલુ કરો.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-hi/strings.xml b/java/com/android/dialer/calllog/ui/res/values-hi/strings.xml
deleted file mode 100644
index 1a85103..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-hi/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">आज</string>
-  <string name="new_call_log_header_yesterday">बीता हुआ कल</string>
-  <string name="new_call_log_header_older">पुराना</string>
-  <string name="new_call_log_permission_no_calllog">अपना कॉल लॉग देखने के लिए, फ़ोन अनुमति चालू करें.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-hr/strings.xml b/java/com/android/dialer/calllog/ui/res/values-hr/strings.xml
deleted file mode 100644
index 4c63413..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-hr/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Danas</string>
-  <string name="new_call_log_header_yesterday">Jučer</string>
-  <string name="new_call_log_header_older">Stariji</string>
-  <string name="new_call_log_permission_no_calllog">Da biste vidjeli zapisnik poziva, uključite dopuštenje za telefon.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-hu/strings.xml b/java/com/android/dialer/calllog/ui/res/values-hu/strings.xml
deleted file mode 100644
index 2ee5b26..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-hu/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Ma</string>
-  <string name="new_call_log_header_yesterday">Tegnap</string>
-  <string name="new_call_log_header_older">Korábbi</string>
-  <string name="new_call_log_permission_no_calllog">A hívásnapló megtekintéséhez kapcsolja be a Telefon engedélyt.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-hy/strings.xml b/java/com/android/dialer/calllog/ui/res/values-hy/strings.xml
deleted file mode 100644
index 0f69ee7..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-hy/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Այսօր</string>
-  <string name="new_call_log_header_yesterday">Երեկ</string>
-  <string name="new_call_log_header_older">Ավելի հին</string>
-  <string name="new_call_log_permission_no_calllog">Ձեր զանգերի մատյանը տեսնելու համար միացրեք Հեռախոսի թույլտվությունը:</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-in/strings.xml b/java/com/android/dialer/calllog/ui/res/values-in/strings.xml
deleted file mode 100644
index 3c4b1b5..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-in/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Hari ini</string>
-  <string name="new_call_log_header_yesterday">Kemarin</string>
-  <string name="new_call_log_header_older">Lebih lama</string>
-  <string name="new_call_log_permission_no_calllog">Untuk melihat log panggilan, aktifkan izin Telepon.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-is/strings.xml b/java/com/android/dialer/calllog/ui/res/values-is/strings.xml
deleted file mode 100644
index 640c9d5..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-is/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Í dag</string>
-  <string name="new_call_log_header_yesterday">Í gær</string>
-  <string name="new_call_log_header_older">Eldra</string>
-  <string name="new_call_log_permission_no_calllog">Kveiktu á heimild símaforritsins til að sjá símtalaskrána þína.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-it/strings.xml b/java/com/android/dialer/calllog/ui/res/values-it/strings.xml
deleted file mode 100644
index b663ce5..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-it/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Oggi</string>
-  <string name="new_call_log_header_yesterday">Ieri</string>
-  <string name="new_call_log_header_older">Meno recenti</string>
-  <string name="new_call_log_permission_no_calllog">Per accedere al registro chiamate, attiva l\'autorizzazione sul telefono.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-iw/strings.xml b/java/com/android/dialer/calllog/ui/res/values-iw/strings.xml
deleted file mode 100644
index 9979e60..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-iw/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">היום</string>
-  <string name="new_call_log_header_yesterday">אתמול</string>
-  <string name="new_call_log_header_older">ישנות יותר</string>
-  <string name="new_call_log_permission_no_calllog">כדי להציג את יומן השיחות, צריך להפעיל את ההרשאה \'טלפון\'.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ja/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ja/strings.xml
deleted file mode 100644
index 520a25d..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ja/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">今日</string>
-  <string name="new_call_log_header_yesterday">昨日</string>
-  <string name="new_call_log_header_older">昨日以前</string>
-  <string name="new_call_log_permission_no_calllog">通話履歴を表示するには、電話権限をONにしてください。</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ka/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ka/strings.xml
deleted file mode 100644
index 2848f00..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ka/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">დღეს</string>
-  <string name="new_call_log_header_yesterday">გუშინ</string>
-  <string name="new_call_log_header_older">უფრო ძველი</string>
-  <string name="new_call_log_permission_no_calllog">ზარების ჟურნალის სანახავად ჩართეთ ტელეფონის ნებართვა.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-kk/strings.xml b/java/com/android/dialer/calllog/ui/res/values-kk/strings.xml
deleted file mode 100644
index f6411d8..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-kk/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Бүгін</string>
-  <string name="new_call_log_header_yesterday">Кеше</string>
-  <string name="new_call_log_header_older">Ескілеу</string>
-  <string name="new_call_log_permission_no_calllog">Тіркелген қоңырауларды көру үшін \"Телефон\" рұқсатын қосыңыз.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-km/strings.xml b/java/com/android/dialer/calllog/ui/res/values-km/strings.xml
deleted file mode 100644
index ebf85ad..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-km/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">ថ្ងៃនេះ</string>
-  <string name="new_call_log_header_yesterday">ម្សិលមិញ</string>
-  <string name="new_call_log_header_older">ចាស់ៗ</string>
-  <string name="new_call_log_permission_no_calllog">ដើម្បីមើលកំណត់ហេតុហៅទូរសព្ទរបស់អ្នក សូមបើកការអនុញ្ញាតទូរសព្ទ។</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-kn/strings.xml b/java/com/android/dialer/calllog/ui/res/values-kn/strings.xml
deleted file mode 100644
index 81d6b9e..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-kn/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">ಇಂದು</string>
-  <string name="new_call_log_header_yesterday">ನಿನ್ನೆ</string>
-  <string name="new_call_log_header_older">ಹಳೆಯದು</string>
-  <string name="new_call_log_permission_no_calllog">ನಿಮ್ಮ ಕರೆಯ ಲಾಗ್ ಅನ್ನು ವೀಕ್ಷಿಸಲು, ಫೋನ್ ಅನುಮತಿಯನ್ನು ಆನ್ ಮಾಡಿ.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ko/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ko/strings.xml
deleted file mode 100644
index 8d87d05..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ko/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">오늘</string>
-  <string name="new_call_log_header_yesterday">어제</string>
-  <string name="new_call_log_header_older">이전</string>
-  <string name="new_call_log_permission_no_calllog">통화 기록을 보려면 전화 권한을 사용 설정하세요.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ky/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ky/strings.xml
deleted file mode 100644
index 0eca0d8..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ky/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Бүгүн</string>
-  <string name="new_call_log_header_yesterday">Кечээ</string>
-  <string name="new_call_log_header_older">Мурункураак</string>
-  <string name="new_call_log_permission_no_calllog">Чалуулар таржымалыңызды көрүү үчүн, \"Телефон\" колдонмосуна уруксат бериңиз.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-lo/strings.xml b/java/com/android/dialer/calllog/ui/res/values-lo/strings.xml
deleted file mode 100644
index 61972af..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-lo/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">ມື້ນີ້</string>
-  <string name="new_call_log_header_yesterday">ມື້ວານນີ້</string>
-  <string name="new_call_log_header_older">ເກົ່າກວ່າ</string>
-  <string name="new_call_log_permission_no_calllog">ເພື່ອເບິ່ງບັນທຶກການໂທຂອງທ່ານ, ກະລຸນາເປີດການອະນຸຍາດໂທລະສັບກ່ອນ.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-lt/strings.xml b/java/com/android/dialer/calllog/ui/res/values-lt/strings.xml
deleted file mode 100644
index d58b228..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-lt/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Šiandien</string>
-  <string name="new_call_log_header_yesterday">Vakar</string>
-  <string name="new_call_log_header_older">Senesni</string>
-  <string name="new_call_log_permission_no_calllog">Jei norite peržiūrėti skambučių žurnalą, įjunkite Telefono programos leidimą.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-lv/strings.xml b/java/com/android/dialer/calllog/ui/res/values-lv/strings.xml
deleted file mode 100644
index a14f771..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-lv/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Šodien</string>
-  <string name="new_call_log_header_yesterday">Vakar</string>
-  <string name="new_call_log_header_older">Vecāki zvani</string>
-  <string name="new_call_log_permission_no_calllog">Lai skatītu savu zvanu žurnālu, ieslēdziet atļauju Tālrunis.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-mk/strings.xml b/java/com/android/dialer/calllog/ui/res/values-mk/strings.xml
deleted file mode 100644
index 6e79429..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-mk/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Денес</string>
-  <string name="new_call_log_header_yesterday">Вчера</string>
-  <string name="new_call_log_header_older">Постари</string>
-  <string name="new_call_log_permission_no_calllog">За да ја видите евиденцијата на повици, вклучете ја дозволата за телефон.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ml/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ml/strings.xml
deleted file mode 100644
index e864159..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ml/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">ഇന്ന്</string>
-  <string name="new_call_log_header_yesterday">ഇന്നലെ</string>
-  <string name="new_call_log_header_older">പഴയത്</string>
-  <string name="new_call_log_permission_no_calllog">നിങ്ങളുടെ കോൾ ലോഗ് കാണുന്നതിന്, \'ഫോൺ\' അനുമതി ഓണാക്കുക.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-mn/strings.xml b/java/com/android/dialer/calllog/ui/res/values-mn/strings.xml
deleted file mode 100644
index dae63f3..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-mn/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Өнөөдөр</string>
-  <string name="new_call_log_header_yesterday">Өчигдөр</string>
-  <string name="new_call_log_header_older">Хуучин</string>
-  <string name="new_call_log_permission_no_calllog">Дуудлагын жагсаалтаа харахын тулд Утасны зөвшөөрлийг идэвхжүүлнэ үү.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-mr/strings.xml b/java/com/android/dialer/calllog/ui/res/values-mr/strings.xml
deleted file mode 100644
index 784e973..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-mr/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">आज</string>
-  <string name="new_call_log_header_yesterday">काल</string>
-  <string name="new_call_log_header_older">अधिक जुने</string>
-  <string name="new_call_log_permission_no_calllog">तुमचा कॉल लॉग पाहण्‍यासाठी, फोन परवानगी सुरू करा.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ms/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ms/strings.xml
deleted file mode 100644
index 278a945..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ms/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Hari ini</string>
-  <string name="new_call_log_header_yesterday">Semalam</string>
-  <string name="new_call_log_header_older">Lebih lama</string>
-  <string name="new_call_log_permission_no_calllog">Untuk melihat log panggilan anda, hidupkan kebenaran Telefon.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-my/strings.xml b/java/com/android/dialer/calllog/ui/res/values-my/strings.xml
deleted file mode 100644
index 1e0fb4d..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-my/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">ယနေ့</string>
-  <string name="new_call_log_header_yesterday">မနေ့က</string>
-  <string name="new_call_log_header_older">ယခင်နေ့များက</string>
-  <string name="new_call_log_permission_no_calllog">ခေါ်ဆိုမှုမှတ်တမ်းကို ကြည့်ရန်၊ ဖုန်းခွင့်ပြုချက်ကို ဖွင့်ပါ။</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-nb/strings.xml b/java/com/android/dialer/calllog/ui/res/values-nb/strings.xml
deleted file mode 100644
index 01642a5..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-nb/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">I dag</string>
-  <string name="new_call_log_header_yesterday">I går</string>
-  <string name="new_call_log_header_older">Eldre</string>
-  <string name="new_call_log_permission_no_calllog">Slå på Telefon-tillatelsen for å se anropsloggen din.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ne/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ne/strings.xml
deleted file mode 100644
index 5c51a91..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ne/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">आज</string>
-  <string name="new_call_log_header_yesterday">हिजो</string>
-  <string name="new_call_log_header_older">अझ पुरानो</string>
-  <string name="new_call_log_permission_no_calllog">आफ्नो कल लग हेर्न, फोन अनुमति सक्रिय गर्नुहोस्।</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-nl/strings.xml b/java/com/android/dialer/calllog/ui/res/values-nl/strings.xml
deleted file mode 100644
index c0e7857..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-nl/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Vandaag</string>
-  <string name="new_call_log_header_yesterday">Gisteren</string>
-  <string name="new_call_log_header_older">Ouder</string>
-  <string name="new_call_log_permission_no_calllog">Als je je gesprekkenlijst wilt bekijken, schakel je de machtiging voor Telefoon in.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-no/strings.xml b/java/com/android/dialer/calllog/ui/res/values-no/strings.xml
deleted file mode 100644
index 01642a5..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-no/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">I dag</string>
-  <string name="new_call_log_header_yesterday">I går</string>
-  <string name="new_call_log_header_older">Eldre</string>
-  <string name="new_call_log_permission_no_calllog">Slå på Telefon-tillatelsen for å se anropsloggen din.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-pa/strings.xml b/java/com/android/dialer/calllog/ui/res/values-pa/strings.xml
deleted file mode 100644
index 3c62996..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-pa/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">ਅੱਜ</string>
-  <string name="new_call_log_header_yesterday">ਕੱਲ੍ਹ</string>
-  <string name="new_call_log_header_older">ਵਧੇਰੇ ਪੁਰਾਣਾ</string>
-  <string name="new_call_log_permission_no_calllog">ਆਪਣਾ ਕਾਲ ਲੌਗ ਦੇਖਣ ਲਈ, ਫ਼ੋਨ ਇਜਾਜ਼ਤ ਚਾਲੂ ਕਰੋ।</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-pl/strings.xml b/java/com/android/dialer/calllog/ui/res/values-pl/strings.xml
deleted file mode 100644
index df6cc5a..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-pl/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Dzisiaj</string>
-  <string name="new_call_log_header_yesterday">Wczoraj</string>
-  <string name="new_call_log_header_older">Starsze</string>
-  <string name="new_call_log_permission_no_calllog">Aby zobaczyć swój rejestr połączeń, włącz uprawnienia Telefon.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-pt-rBR/strings.xml b/java/com/android/dialer/calllog/ui/res/values-pt-rBR/strings.xml
deleted file mode 100644
index f91e3e5..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Hoje</string>
-  <string name="new_call_log_header_yesterday">Ontem</string>
-  <string name="new_call_log_header_older">Mais antigas</string>
-  <string name="new_call_log_permission_no_calllog">Para ver seu registro de chamadas, ative a permissão para o app Telefone.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-pt-rPT/strings.xml b/java/com/android/dialer/calllog/ui/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 7906a53..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Hoje</string>
-  <string name="new_call_log_header_yesterday">Ontem</string>
-  <string name="new_call_log_header_older">Mais antigas</string>
-  <string name="new_call_log_permission_no_calllog">Para ver o registo de chamadas, ative a autorização Telemóvel.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-pt/strings.xml b/java/com/android/dialer/calllog/ui/res/values-pt/strings.xml
deleted file mode 100644
index f91e3e5..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-pt/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Hoje</string>
-  <string name="new_call_log_header_yesterday">Ontem</string>
-  <string name="new_call_log_header_older">Mais antigas</string>
-  <string name="new_call_log_permission_no_calllog">Para ver seu registro de chamadas, ative a permissão para o app Telefone.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ro/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ro/strings.xml
deleted file mode 100644
index 5d7c566..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ro/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Astăzi</string>
-  <string name="new_call_log_header_yesterday">Ieri</string>
-  <string name="new_call_log_header_older">Mai vechi</string>
-  <string name="new_call_log_permission_no_calllog">Pentru a vedea jurnalul de apeluri, activați permisiunea pentru Telefon.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ru/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ru/strings.xml
deleted file mode 100644
index 2281707..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ru/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Сегодня</string>
-  <string name="new_call_log_header_yesterday">Вчера</string>
-  <string name="new_call_log_header_older">Раньше</string>
-  <string name="new_call_log_permission_no_calllog">Чтобы открыть журнал вызовов, предоставьте приложению разрешение \"Телефон\".</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-si/strings.xml b/java/com/android/dialer/calllog/ui/res/values-si/strings.xml
deleted file mode 100644
index 385ef35..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-si/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">අද</string>
-  <string name="new_call_log_header_yesterday">ඊයේ</string>
-  <string name="new_call_log_header_older">වඩා පරණ</string>
-  <string name="new_call_log_permission_no_calllog">ඔබේ ඇමතුම් ලොගය බැලීමට, දුරකථන අවසරය ක්‍රියාත්මක කරන්න.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-sk/strings.xml b/java/com/android/dialer/calllog/ui/res/values-sk/strings.xml
deleted file mode 100644
index 837aed8..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-sk/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Dnes</string>
-  <string name="new_call_log_header_yesterday">Včera</string>
-  <string name="new_call_log_header_older">Staršie</string>
-  <string name="new_call_log_permission_no_calllog">Ak si chcete zobraziť denník hovorov, zapnite povolenie Telefón.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-sl/strings.xml b/java/com/android/dialer/calllog/ui/res/values-sl/strings.xml
deleted file mode 100644
index 17c3b74..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-sl/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Danes</string>
-  <string name="new_call_log_header_yesterday">Včeraj</string>
-  <string name="new_call_log_header_older">Starejše</string>
-  <string name="new_call_log_permission_no_calllog">Če si želite ogledati dnevnik klicev, vklopite dovoljenje za telefon.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-sq/strings.xml b/java/com/android/dialer/calllog/ui/res/values-sq/strings.xml
deleted file mode 100644
index 2321219..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-sq/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Sot</string>
-  <string name="new_call_log_header_yesterday">Dje</string>
-  <string name="new_call_log_header_older">Më të vjetra</string>
-  <string name="new_call_log_permission_no_calllog">Për të parë evidencën e telefonatave, aktivizo lejen e \"Telefonit\".</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-sr/strings.xml b/java/com/android/dialer/calllog/ui/res/values-sr/strings.xml
deleted file mode 100644
index 0353257..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-sr/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Данас</string>
-  <string name="new_call_log_header_yesterday">Јуче</string>
-  <string name="new_call_log_header_older">Раније</string>
-  <string name="new_call_log_permission_no_calllog">Да бисте видели евиденцију позива, укључите дозволу за Телефон.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-sv/strings.xml b/java/com/android/dialer/calllog/ui/res/values-sv/strings.xml
deleted file mode 100644
index 8ed4830..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-sv/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">I dag</string>
-  <string name="new_call_log_header_yesterday">Igår</string>
-  <string name="new_call_log_header_older">Äldre</string>
-  <string name="new_call_log_permission_no_calllog">Du måste aktivera behörigheten Telefon för att kunna visa samtalsloggen.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-sw/strings.xml b/java/com/android/dialer/calllog/ui/res/values-sw/strings.xml
deleted file mode 100644
index 869a5de..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-sw/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Leo</string>
-  <string name="new_call_log_header_yesterday">Jana</string>
-  <string name="new_call_log_header_older">Za zamani</string>
-  <string name="new_call_log_permission_no_calllog">Ili uone rekodi yako ya nambari za simu, washa ruhusa ya Simu.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ta/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ta/strings.xml
deleted file mode 100644
index 5a4ee26..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ta/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">இன்று</string>
-  <string name="new_call_log_header_yesterday">நேற்று</string>
-  <string name="new_call_log_header_older">பழையவை</string>
-  <string name="new_call_log_permission_no_calllog">அழைப்புப் பதிவைப் பார்க்க, மொபைலுக்கான அனுமதியை இயக்கவும்.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-te/strings.xml b/java/com/android/dialer/calllog/ui/res/values-te/strings.xml
deleted file mode 100644
index 8662197..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-te/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">ఈ రోజు</string>
-  <string name="new_call_log_header_yesterday">నిన్న</string>
-  <string name="new_call_log_header_older">పాతది</string>
-  <string name="new_call_log_permission_no_calllog">మీ కాల్ లాగ్‌ను చూడటానికి, ఫోన్ అనుమతిని ఆన్ చేయండి.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-th/strings.xml b/java/com/android/dialer/calllog/ui/res/values-th/strings.xml
deleted file mode 100644
index d8a3fe2..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-th/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">วันนี้</string>
-  <string name="new_call_log_header_yesterday">เมื่อวานนี้</string>
-  <string name="new_call_log_header_older">เก่ากว่า</string>
-  <string name="new_call_log_permission_no_calllog">หากต้องการดูประวัติการโทร ให้เปิดสิทธิ์เข้าถึงโทรศัพท์</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-tl/strings.xml b/java/com/android/dialer/calllog/ui/res/values-tl/strings.xml
deleted file mode 100644
index c36cb4c..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-tl/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Ngayong araw</string>
-  <string name="new_call_log_header_yesterday">Kahapon</string>
-  <string name="new_call_log_header_older">Mas Luma</string>
-  <string name="new_call_log_permission_no_calllog">Para makita ang iyong log ng tawag, i-on ang pahintulot ng Telepono.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-tr/strings.xml b/java/com/android/dialer/calllog/ui/res/values-tr/strings.xml
deleted file mode 100644
index 2938cc6..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-tr/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Bugün</string>
-  <string name="new_call_log_header_yesterday">Dün</string>
-  <string name="new_call_log_header_older">Eski</string>
-  <string name="new_call_log_permission_no_calllog">Çağrı kaydınızı görmek için Telefon iznini etkinleştirin.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-uk/strings.xml b/java/com/android/dialer/calllog/ui/res/values-uk/strings.xml
deleted file mode 100644
index 5667a37..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-uk/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Сьогодні</string>
-  <string name="new_call_log_header_yesterday">Учора</string>
-  <string name="new_call_log_header_older">Старіші</string>
-  <string name="new_call_log_permission_no_calllog">Щоб переглянути журнал викликів, увімкніть дозвіл \"Телефон\".</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-ur/strings.xml b/java/com/android/dialer/calllog/ui/res/values-ur/strings.xml
deleted file mode 100644
index a0653af..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-ur/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">آج</string>
-  <string name="new_call_log_header_yesterday">گزشتہ کل</string>
-  <string name="new_call_log_header_older">قدیم تر</string>
-  <string name="new_call_log_permission_no_calllog">اپنا کال لاگ دیکھنے کیلئے فون کی اجازت آن کریں۔</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-uz/strings.xml b/java/com/android/dialer/calllog/ui/res/values-uz/strings.xml
deleted file mode 100644
index 14ceca4..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-uz/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Bugun</string>
-  <string name="new_call_log_header_yesterday">Kecha</string>
-  <string name="new_call_log_header_older">Eskiroq</string>
-  <string name="new_call_log_permission_no_calllog">Chaqiruvlar jurnalini ko‘rish uchun ilovaga Telefon ruxsatnomasini bering.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-vi/strings.xml b/java/com/android/dialer/calllog/ui/res/values-vi/strings.xml
deleted file mode 100644
index d7d5f67..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-vi/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Hôm nay</string>
-  <string name="new_call_log_header_yesterday">Hôm qua</string>
-  <string name="new_call_log_header_older">Cũ hơn</string>
-  <string name="new_call_log_permission_no_calllog">Để xem nhật ký cuộc gọi, hãy bật quyền truy cập vào Điện thoại.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-zh-rCN/strings.xml b/java/com/android/dialer/calllog/ui/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 2f3cb5a..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">今天</string>
-  <string name="new_call_log_header_yesterday">昨天</string>
-  <string name="new_call_log_header_older">更早</string>
-  <string name="new_call_log_permission_no_calllog">要查看您的通话记录，请开启“电话”权限。</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-zh-rHK/strings.xml b/java/com/android/dialer/calllog/ui/res/values-zh-rHK/strings.xml
deleted file mode 100644
index c17d039..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">今天</string>
-  <string name="new_call_log_header_yesterday">昨天</string>
-  <string name="new_call_log_header_older">較舊</string>
-  <string name="new_call_log_permission_no_calllog">如要查看通話記錄，請開放「手機」權限。</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-zh-rTW/strings.xml b/java/com/android/dialer/calllog/ui/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 602c203..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">今天</string>
-  <string name="new_call_log_header_yesterday">昨天</string>
-  <string name="new_call_log_header_older">較舊</string>
-  <string name="new_call_log_permission_no_calllog">如要查看你的通話記錄，請開啟「電話」存取權限。</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values-zu/strings.xml b/java/com/android/dialer/calllog/ui/res/values-zu/strings.xml
deleted file mode 100644
index 07dbb83..0000000
--- a/java/com/android/dialer/calllog/ui/res/values-zu/strings.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-  <string name="a11y_new_call_log_entry_voice_call">call ^1</string>
-  <string name="a11y_new_call_log_entry_video_call">make a video call to ^1</string>
-  <string name="new_call_log_header_today">Namhlanje</string>
-  <string name="new_call_log_header_yesterday">Izolo</string>
-  <string name="new_call_log_header_older">Okudala</string>
-  <string name="new_call_log_permission_no_calllog">Ukuze ubone irekhodi lakho lamakholi, vuma imvume yefoni.</string>
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values/colors.xml b/java/com/android/dialer/calllog/ui/res/values/colors.xml
deleted file mode 100644
index 27a821e..0000000
--- a/java/com/android/dialer/calllog/ui/res/values/colors.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<resources>
-  <!-- TODO(a bug): remove these? -->
-  <color name="feature_icon_read_color">#9E9E9E</color>
-  <color name="feature_icon_unread_color">#474747</color>
-
-  <color name="call_type_icon_read_color">#757575</color>
-  <color name="call_type_icon_unread_color">#D32F2F</color>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/calllog/ui/res/values/strings.xml b/java/com/android/dialer/calllog/ui/res/values/strings.xml
deleted file mode 100644
index 87d6a19..0000000
--- a/java/com/android/dialer/calllog/ui/res/values/strings.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-
-  <!--
-    A string informing a11y users that activating a call log entry will expand the menu
-    (a bottom sheet) for it.
-    [CHAR LIMIT=NONE]
-  -->
-  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
-
-  <!--
-    A string describing the call button of a call log entry for a11y users.
-    An example will be read as "call Jane Smith".
-    [CHAR LIMIT=NONE]
-  -->
-  <string name="a11y_new_call_log_entry_voice_call">
-    call <xliff:g example="Jane Smith" id="primaryTextForEntry">^1</xliff:g>
-  </string>
-
-  <!--
-    A string describing the call button of a call log entry for a11y users.
-    An example will be read as "make a video call to Jane Smith".
-    [CHAR LIMIT=NONE]
-  -->
-  <string name="a11y_new_call_log_entry_video_call">
-    make a video call to <xliff:g example="Jane Smith" id="primaryTextForEntry">^1</xliff:g>
-  </string>
-
-  <!-- Header in call log to group calls from the current day.  [CHAR LIMIT=30] -->
-  <string name="new_call_log_header_today">Today</string>
-
-  <!-- Header in call log to group calls from the previous day.  [CHAR LIMIT=30] -->
-  <string name="new_call_log_header_yesterday">Yesterday</string>
-
-  <!-- Header in call log to group calls from before yesterday.  [CHAR LIMIT=30] -->
-  <string name="new_call_log_header_older">Older</string>
-
-  <!-- Shown as a prompt to turn on the phone permission to enable the call log [CHAR LIMIT=NONE]-->
-  <string name="new_call_log_permission_no_calllog">To see your call log, turn on the Phone permission.</string>
-
-</resources>
diff --git a/java/com/android/dialer/calllog/ui/res/values/styles.xml b/java/com/android/dialer/calllog/ui/res/values/styles.xml
deleted file mode 100644
index 3a02eb2..0000000
--- a/java/com/android/dialer/calllog/ui/res/values/styles.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-
-  <style name="primary_textview" parent="Dialer.TextAppearance.Primary"/>
-
-  <style name="primary_textview_unread_call" parent="Dialer.TextAppearance.Header2"/>
-
-  <style name="secondary_textview" parent="Dialer.TextAppearance.Secondary"/>
-
-  <style name="phoneaccount_textview"/>
-
-  <style name="secondary_textview_unread_call" parent="Dialer.TextAppearance.Header2">
-    <item name="android:textColor">@color/dialer_red</item>
-  </style>
-
-  <style name="phoneaccount_textview_unread_call">
-    <item name="android:fontFamily">sans-serif-medium</item>
-  </style>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/calllogutils/AndroidManifest.xml b/java/com/android/dialer/calllogutils/AndroidManifest.xml
deleted file mode 100644
index 228865a..0000000
--- a/java/com/android/dialer/calllogutils/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.calllogutils"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/calllogutils/CallLogDates.java b/java/com/android/dialer/calllogutils/CallLogDates.java
index 9c04c05..8e33c4b 100644
--- a/java/com/android/dialer/calllogutils/CallLogDates.java
+++ b/java/com/android/dialer/calllogutils/CallLogDates.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
 import android.icu.lang.UCharacter;
 import android.icu.text.BreakIterator;
 import android.text.format.DateUtils;
+
 import java.util.Calendar;
 import java.util.Locale;
 import java.util.concurrent.TimeUnit;
diff --git a/java/com/android/dialer/calllogutils/CallLogDurations.java b/java/com/android/dialer/calllogutils/CallLogDurations.java
index 9ed8a93..d3e4646 100644
--- a/java/com/android/dialer/calllogutils/CallLogDurations.java
+++ b/java/com/android/dialer/calllogutils/CallLogDurations.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,7 +20,9 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.text.format.Formatter;
+
 import com.android.dialer.util.DialerUtils;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
diff --git a/java/com/android/dialer/calllogutils/CallLogEntryDescriptions.java b/java/com/android/dialer/calllogutils/CallLogEntryDescriptions.java
deleted file mode 100644
index 52f0cfd..0000000
--- a/java/com/android/dialer/calllogutils/CallLogEntryDescriptions.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.calllogutils;
-
-import android.content.Context;
-import android.provider.CallLog.Calls;
-import android.support.annotation.PluralsRes;
-import android.telecom.PhoneAccountHandle;
-import android.telephony.PhoneNumberUtils;
-import android.text.TextUtils;
-import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.time.Clock;
-import com.google.common.collect.Collections2;
-import java.util.List;
-
-/** Builds descriptions of call log entries for accessibility users. */
-public final class CallLogEntryDescriptions {
-
-  private CallLogEntryDescriptions() {}
-
-  /**
-   * Builds the content description for a call log entry.
-   *
-   * <p>The description is of format<br>
-   * {primary description}, {secondary description}, {phone account description}.
-   *
-   * <ul>
-   *   <li>The primary description depends on the number of calls in the entry. For example:<br>
-   *       "1 answered call from Jane Smith", or<br>
-   *       "2 calls, the latest is an answered call from Jane Smith".
-   *   <li>The secondary description is the same as the secondary text for the call log entry,
-   *       except that date/time is not abbreviated. For example:<br>
-   *       "mobile, 11 minutes ago".
-   *   <li>The phone account description is of format "on {phone_account_label}, via {number}". For
-   *       example:<br>
-   *       "on SIM 1, via 6502531234".<br>
-   *       Note that the phone account description will be empty if the device has only one SIM.
-   * </ul>
-   *
-   * <p>An example of the full description can be:<br>
-   * "2 calls, the latest is an answered call from Jane Smith, mobile, 11 minutes ago, on SIM 1, via
-   * 6502531234".
-   */
-  public static CharSequence buildDescriptionForEntry(
-      Context context, Clock clock, CoalescedRow row) {
-
-    // Build the primary description.
-    // Examples:
-    //   (1) For an entry containing only 1 call:
-    //         "1 missed call from James Smith".
-    //   (2) For entries containing multiple calls:
-    //         "2 calls, the latest is a missed call from Jame Smith".
-    CharSequence primaryDescription =
-        TextUtils.expandTemplate(
-            context
-                .getResources()
-                .getQuantityString(
-                    getPrimaryDescriptionResIdForCallType(row),
-                    row.getCoalescedIds().getCoalescedIdCount()),
-            String.valueOf(row.getCoalescedIds().getCoalescedIdCount()),
-            CallLogEntryText.buildPrimaryText(context, row));
-
-    // Build the secondary description.
-    // An example: "mobile, 11 minutes ago".
-    CharSequence secondaryDescription =
-        joinSecondaryTextComponents(
-            CallLogEntryText.buildSecondaryTextListForEntries(
-                context, clock, row, /* abbreviateDateTime = */ false));
-
-    // Build the phone account description.
-    // Note that this description can be an empty string.
-    CharSequence phoneAccountDescription = buildPhoneAccountDescription(context, row);
-
-    return TextUtils.isEmpty(phoneAccountDescription)
-        ? TextUtils.expandTemplate(
-            context
-                .getResources()
-                .getText(
-                    R.string.a11y_new_call_log_entry_full_description_without_phone_account_info),
-            primaryDescription,
-            secondaryDescription)
-        : TextUtils.expandTemplate(
-            context
-                .getResources()
-                .getText(R.string.a11y_new_call_log_entry_full_description_with_phone_account_info),
-            primaryDescription,
-            secondaryDescription,
-            phoneAccountDescription);
-  }
-
-  private static @PluralsRes int getPrimaryDescriptionResIdForCallType(CoalescedRow row) {
-    switch (row.getCallType()) {
-      case Calls.INCOMING_TYPE:
-      case Calls.ANSWERED_EXTERNALLY_TYPE:
-        return R.plurals.a11y_new_call_log_entry_answered_call;
-      case Calls.OUTGOING_TYPE:
-        return R.plurals.a11y_new_call_log_entry_outgoing_call;
-      case Calls.MISSED_TYPE:
-        return R.plurals.a11y_new_call_log_entry_missed_call;
-      case Calls.VOICEMAIL_TYPE:
-        throw new IllegalStateException("Voicemails not expected in call log");
-      case Calls.BLOCKED_TYPE:
-        return R.plurals.a11y_new_call_log_entry_blocked_call;
-      default:
-        // It is possible for users to end up with calls with unknown call types in their
-        // call history, possibly due to 3rd party call log implementations (e.g. to
-        // distinguish between rejected and missed calls). Instead of crashing, just
-        // assume that all unknown call types are missed calls.
-        return R.plurals.a11y_new_call_log_entry_missed_call;
-    }
-  }
-
-  private static CharSequence buildPhoneAccountDescription(Context context, CoalescedRow row) {
-    PhoneAccountHandle phoneAccountHandle =
-        TelecomUtil.composePhoneAccountHandle(
-            row.getPhoneAccountComponentName(), row.getPhoneAccountId());
-    if (phoneAccountHandle == null) {
-      return "";
-    }
-
-    String phoneAccountLabel = PhoneAccountUtils.getAccountLabel(context, phoneAccountHandle);
-    if (TextUtils.isEmpty(phoneAccountLabel)) {
-      return "";
-    }
-
-    if (TextUtils.isEmpty(row.getNumber().getNormalizedNumber())) {
-      return "";
-    }
-
-    return TextUtils.expandTemplate(
-        context.getResources().getText(R.string.a11y_new_call_log_entry_phone_account),
-        phoneAccountLabel,
-        PhoneNumberUtils.createTtsSpannable(row.getNumber().getNormalizedNumber()));
-  }
-
-  private static CharSequence joinSecondaryTextComponents(List<CharSequence> components) {
-    return TextUtils.join(
-        ", ", Collections2.filter(components, (text) -> !TextUtils.isEmpty(text)));
-  }
-}
diff --git a/java/com/android/dialer/calllogutils/CallLogEntryText.java b/java/com/android/dialer/calllogutils/CallLogEntryText.java
index 1ec172f..54ce680 100644
--- a/java/com/android/dialer/calllogutils/CallLogEntryText.java
+++ b/java/com/android/dialer/calllogutils/CallLogEntryText.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,15 +21,15 @@
 import android.provider.CallLog.Calls;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
+
+import com.android.dialer.R;
 import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.duo.DuoComponent;
 import com.android.dialer.spam.Spam;
-import com.android.dialer.time.Clock;
-import com.google.common.base.Optional;
 import com.google.common.collect.Collections2;
+
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * Computes the primary text and secondary text for call log entries.
@@ -78,94 +79,7 @@
   }
 
   /**
-   * The secondary text to be shown in the main call log entry list.
-   *
-   * <p>This method first obtains a list of strings to be shown in order and then concatenates them
-   * with " • ".
-   *
-   * <p>Examples:
-   *
-   * <ul>
-   *   <li>Mobile, Duo video • 10 min ago
-   *   <li>Spam • Mobile • Now
-   *   <li>Blocked • Spam • Mobile • Now
-   * </ul>
-   *
-   * @see #buildSecondaryTextListForEntries(Context, Clock, CoalescedRow, boolean) for details.
-   */
-  public static CharSequence buildSecondaryTextForEntries(
-      Context context, Clock clock, CoalescedRow row) {
-    return joinSecondaryTextComponents(
-        buildSecondaryTextListForEntries(context, clock, row, /* abbreviateDateTime = */ true));
-  }
-
-  /**
-   * Returns a list of strings to be shown in order as the main call log entry's secondary text.
-   *
-   * <p>Rules:
-   *
-   * <ul>
-   *   <li>An emergency number: [{Date}]
-   *   <li>Number - not blocked, call - not spam:
-   *       <p>[{$Label(, Duo video|Carrier video)?|$Location}, {Date}]
-   *   <li>Number - blocked, call - not spam:
-   *       <p>["Blocked", {$Label(, Duo video|Carrier video)?|$Location}, {Date}]
-   *   <li>Number - not blocked, call - spam:
-   *       <p>["Spam", {$Label(, Duo video|Carrier video)?}, {Date}]
-   *   <li>Number - blocked, call - spam:
-   *       <p>["Blocked, Spam", {$Label(, Duo video|Carrier video)?}, {Date}]
-   * </ul>
-   *
-   * <p>Examples:
-   *
-   * <ul>
-   *   <li>["Mobile, Duo video", "Now"]
-   *   <li>["Duo video", "10 min ago"]
-   *   <li>["Mobile", "11:45 PM"]
-   *   <li>["Mobile", "Sun"]
-   *   <li>["Blocked", "Mobile, Duo video", "Now"]
-   *   <li>["Blocked", "Brooklyn, NJ", "10 min ago"]
-   *   <li>["Spam", "Mobile", "Now"]
-   *   <li>["Spam", "Now"]
-   *   <li>["Blocked", "Spam", "Mobile", "Now"]
-   *   <li>["Brooklyn, NJ", "Jan 15"]
-   * </ul>
-   *
-   * <p>See {@link CallLogDates#newCallLogTimestampLabel(Context, long, long, boolean)} for date
-   * rules.
-   */
-  static List<CharSequence> buildSecondaryTextListForEntries(
-      Context context, Clock clock, CoalescedRow row, boolean abbreviateDateTime) {
-    // For emergency numbers, the secondary text should contain only the timestamp.
-    if (row.getNumberAttributes().getIsEmergencyNumber()) {
-      return Collections.singletonList(
-          CallLogDates.newCallLogTimestampLabel(
-              context, clock.currentTimeMillis(), row.getTimestamp(), abbreviateDateTime));
-    }
-
-    List<CharSequence> components = new ArrayList<>();
-
-    if (row.getNumberAttributes().getIsBlocked()) {
-      components.add(context.getText(R.string.new_call_log_secondary_blocked));
-    }
-    if (Spam.shouldShowAsSpam(row.getNumberAttributes().getIsSpam(), row.getCallType())) {
-      components.add(context.getText(R.string.new_call_log_secondary_spam));
-    }
-
-    components.add(getNumberTypeLabel(context, row));
-
-    components.add(
-        CallLogDates.newCallLogTimestampLabel(
-            context, clock.currentTimeMillis(), row.getTimestamp(), abbreviateDateTime));
-    return components;
-  }
-
-  /**
    * The secondary text to show in the top item of the bottom sheet.
-   *
-   * <p>This is basically the same as {@link #buildSecondaryTextForEntries(Context, Clock,
-   * CoalescedRow)} except that instead of suffixing with the time of the call, we suffix with the
-   * formatted number.
    */
   public static CharSequence buildSecondaryTextForBottomSheet(Context context, CoalescedRow row) {
     /*
@@ -254,11 +168,8 @@
         secondaryText.append(", ");
       }
 
-      boolean isDuoCall =
-          DuoComponent.get(context).getDuo().isDuoAccount(row.getPhoneAccountComponentName());
       secondaryText.append(
-          context.getText(
-              isDuoCall ? R.string.new_call_log_duo_video : R.string.new_call_log_carrier_video));
+          context.getText(R.string.new_call_log_carrier_video));
     }
 
     // Show the location if
diff --git a/java/com/android/dialer/calllogutils/CallLogRowActions.java b/java/com/android/dialer/calllogutils/CallLogRowActions.java
index 65f3c5f..10b6164 100644
--- a/java/com/android/dialer/calllogutils/CallLogRowActions.java
+++ b/java/com/android/dialer/calllogutils/CallLogRowActions.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,10 @@
 
 import android.app.Activity;
 import android.provider.CallLog.Calls;
+
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.calllog.model.CoalescedRow;
-import com.android.dialer.duo.DuoComponent;
 import com.android.dialer.precall.PreCall;
 
 /** Actions which can be performed on a call log row. */
@@ -38,10 +39,6 @@
         activity,
         new CallIntentBuilder(
                 row.getNumber().getNormalizedNumber(), CallInitiationType.Type.CALL_LOG)
-            .setIsVideoCall((row.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO)
-            .setIsDuoCall(
-                DuoComponent.get(activity)
-                    .getDuo()
-                    .isDuoAccount(row.getPhoneAccountComponentName())));
+            .setIsVideoCall((row.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO));
   }
 }
diff --git a/java/com/android/dialer/calllogutils/CallTypeHelper.java b/java/com/android/dialer/calllogutils/CallTypeHelper.java
index 1bcaa31..71a27d5 100644
--- a/java/com/android/dialer/calllogutils/CallTypeHelper.java
+++ b/java/com/android/dialer/calllogutils/CallTypeHelper.java
@@ -18,7 +18,6 @@
 
 import android.content.res.Resources;
 import android.provider.CallLog.Calls;
-import com.android.dialer.duo.Duo;
 
 /** Helper class to perform operations related to call types. */
 public class CallTypeHelper {
@@ -52,11 +51,8 @@
   /** Name used to identify calls which were answered on another device. */
   private final CharSequence answeredElsewhereName;
   /** Name used to identify incoming Duo calls. */
-  private final CharSequence incomingDuoCall;
-  /** Name used to identify outgoing Duo calls. */
-  private final CharSequence outgoingDuoCall;
 
-  public CallTypeHelper(Resources resources, Duo duo) {
+  public CallTypeHelper(Resources resources) {
     // Cache these values so that we do not need to look them up each time.
     incomingName = resources.getString(R.string.type_incoming);
     incomingPulledName = resources.getString(R.string.type_incoming_pulled);
@@ -72,18 +68,6 @@
     rejectedName = resources.getString(R.string.type_rejected);
     blockedName = resources.getString(R.string.type_blocked);
     answeredElsewhereName = resources.getString(R.string.type_answered_elsewhere);
-
-    if (duo.getIncomingCallTypeText() != -1) {
-      incomingDuoCall = resources.getString(duo.getIncomingCallTypeText());
-    } else {
-      incomingDuoCall = incomingVideoName;
-    }
-
-    if (duo.getOutgoingCallTypeText() != -1) {
-      outgoingDuoCall = resources.getString(duo.getOutgoingCallTypeText());
-    } else {
-      outgoingDuoCall = outgoingVideoName;
-    }
   }
 
   public static boolean isMissedCallType(int callType) {
@@ -95,16 +79,13 @@
 
   /** Returns the text used to represent the given call type. */
   public CharSequence getCallTypeText(
-      int callType, boolean isVideoCall, boolean isPulledCall, boolean isDuoCall) {
+      int callType, boolean isVideoCall, boolean isPulledCall) {
     switch (callType) {
       case Calls.INCOMING_TYPE:
         if (isVideoCall) {
           if (isPulledCall) {
             return incomingVideoPulledName;
           } else {
-            if (isDuoCall) {
-              return incomingDuoCall;
-            }
             return incomingVideoName;
           }
         } else {
@@ -120,9 +101,6 @@
           if (isPulledCall) {
             return outgoingVideoPulledName;
           } else {
-            if (isDuoCall) {
-              return outgoingDuoCall;
-            }
             return outgoingVideoName;
           }
         } else {
diff --git a/java/com/android/dialer/calllogutils/CallTypeIconsView.java b/java/com/android/dialer/calllogutils/CallTypeIconsView.java
index 19c30c5..51bbcf8 100644
--- a/java/com/android/dialer/calllogutils/CallTypeIconsView.java
+++ b/java/com/android/dialer/calllogutils/CallTypeIconsView.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,14 +22,22 @@
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.PorterDuff;
+import android.graphics.PorterDuffColorFilter;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.provider.CallLog.Calls;
-import android.support.annotation.VisibleForTesting;
 import android.util.AttributeSet;
 import android.view.View;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.appcompat.content.res.AppCompatResources;
+import androidx.core.content.res.ResourcesCompat;
+
+import com.android.dialer.R;
 import com.android.dialer.theme.base.Theme;
 import com.android.dialer.theme.base.ThemeComponent;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -45,8 +54,8 @@
   private final boolean useLargeIcons;
 
   private static Resources resources;
-  private static Resources largeResouces;
-  private List<Integer> callTypes = new ArrayList<>(3);
+  private static Resources largeResources;
+  private final List<Integer> callTypes = new ArrayList<>(3);
   private boolean showVideo;
   private boolean showHd;
   private boolean showWifi;
@@ -68,8 +77,8 @@
     if (resources == null) {
       resources = new Resources(context, false);
     }
-    if (largeResouces == null && useLargeIcons) {
-      largeResouces = new Resources(context, true);
+    if (largeResources == null && useLargeIcons) {
+      largeResources = new Resources(context, true);
     }
   }
 
@@ -121,11 +130,6 @@
     }
   }
 
-  @VisibleForTesting
-  public boolean isHdShown() {
-    return showHd;
-  }
-
   public void setShowWifi(boolean showWifi) {
     this.showWifi = showWifi;
     if (showWifi) {
@@ -135,10 +139,6 @@
     }
   }
 
-  public boolean isAssistedDialedShown() {
-    return showAssistedDialed;
-  }
-
   public void setShowAssistedDialed(boolean showAssistedDialed) {
     this.showAssistedDialed = showAssistedDialed;
     if (showAssistedDialed) {
@@ -161,24 +161,19 @@
     return callTypes.size();
   }
 
-  public int getCallType(int index) {
-    return callTypes.get(index);
-  }
-
   private Drawable getCallTypeDrawable(int callType) {
-    Resources resources = useLargeIcons ? largeResouces : CallTypeIconsView.resources;
+    Resources resources = useLargeIcons ? largeResources : CallTypeIconsView.resources;
     switch (callType) {
       case Calls.INCOMING_TYPE:
       case Calls.ANSWERED_EXTERNALLY_TYPE:
         return resources.incoming;
       case Calls.OUTGOING_TYPE:
         return resources.outgoing;
-      case Calls.MISSED_TYPE:
-        return resources.missed;
       case Calls.VOICEMAIL_TYPE:
         return resources.voicemail;
       case Calls.BLOCKED_TYPE:
         return resources.blocked;
+      case Calls.MISSED_TYPE:
       default:
         // It is possible for users to end up with calls with unknown call types in their
         // call history, possibly due to 3rd party call log implementations (e.g. to
@@ -195,7 +190,7 @@
 
   @Override
   protected void onDraw(Canvas canvas) {
-    Resources resources = useLargeIcons ? largeResouces : CallTypeIconsView.resources;
+    Resources resources = useLargeIcons ? largeResources : CallTypeIconsView.resources;
     int left = 0;
     // If we are using large icons, we should only show one icon (video, hd or call type) with
     // priority give to HD or Video. So we skip the call type icon if we plan to show them.
@@ -244,7 +239,7 @@
     // Drawable representing an incoming answered call.
     public final Drawable incoming;
 
-    // Drawable respresenting an outgoing call.
+    // Drawable representing an outgoing call.
     public final Drawable outgoing;
 
     // Drawable representing an incoming missed call.
@@ -256,10 +251,10 @@
     // Drawable representing a blocked call.
     public final Drawable blocked;
 
-    // Drawable repesenting a video call.
+    // Drawable representing a video call.
     final Drawable videoCall;
 
-    // Drawable represeting a hd call.
+    // Drawable representing a hd call.
     final Drawable hdCall;
 
     // Drawable representing a WiFi call.
@@ -286,74 +281,59 @@
      */
     public Resources(Context context, boolean largeIcons) {
       final android.content.res.Resources r = context.getResources();
+      android.content.res.Resources.Theme contextTheme = context.getTheme();
 
-      int iconId = R.drawable.quantum_ic_call_received_white_24;
-      Drawable drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
-      incoming = drawable.mutate();
-      incoming.setColorFilter(r.getColor(R.color.dialer_call_green), PorterDuff.Mode.MULTIPLY);
+      incoming = getBitmap(context, R.drawable.quantum_ic_call_received_vd_theme_24,
+              r.getColor(R.color.answered_incoming_call, contextTheme), largeIcons);
 
       // Create a rotated instance of the call arrow for outgoing calls.
-      iconId = R.drawable.quantum_ic_call_made_white_24;
-      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
-      outgoing = drawable.mutate();
-      outgoing.setColorFilter(r.getColor(R.color.dialer_call_green), PorterDuff.Mode.MULTIPLY);
+      outgoing = getBitmap(context, R.drawable.quantum_ic_call_made_vd_theme_24,
+              r.getColor(R.color.answered_outgoing_call, contextTheme), largeIcons);
 
       // Need to make a copy of the arrow drawable, otherwise the same instance colored
       // above will be recolored here.
-      iconId = R.drawable.quantum_ic_call_missed_white_24;
-      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
-      missed = drawable.mutate();
-      missed.setColorFilter(r.getColor(R.color.dialer_red), PorterDuff.Mode.MULTIPLY);
+      missed = getBitmap(context, R.drawable.quantum_ic_call_missed_vd_theme_24,
+              r.getColor(R.color.dialer_red, contextTheme), largeIcons);
 
       Theme theme = ThemeComponent.get(context).theme();
-      iconId = R.drawable.quantum_ic_voicemail_white_24;
-      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
-      voicemail = drawable.mutate();
-      voicemail.setColorFilter(theme.getColorIcon(), PorterDuff.Mode.MULTIPLY);
+      int iconColor = theme.getColorIcon();
 
-      iconId = R.drawable.quantum_ic_block_white_24;
-      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
-      blocked = drawable.mutate();
-      blocked.setColorFilter(theme.getColorIcon(), PorterDuff.Mode.MULTIPLY);
-
-      iconId = R.drawable.quantum_ic_videocam_vd_white_24;
-      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
-      videoCall = drawable.mutate();
-      videoCall.setColorFilter(theme.getColorIcon(), PorterDuff.Mode.MULTIPLY);
-
-      iconId = R.drawable.quantum_ic_hd_white_24;
-      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
-      hdCall = drawable.mutate();
-      hdCall.setColorFilter(theme.getColorIcon(), PorterDuff.Mode.MULTIPLY);
-
-      iconId = R.drawable.quantum_ic_signal_wifi_4_bar_white_24;
-      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
-      wifiCall = drawable.mutate();
-      wifiCall.setColorFilter(theme.getColorIcon(), PorterDuff.Mode.MULTIPLY);
-
-      iconId = R.drawable.quantum_ic_language_white_24;
-      drawable = largeIcons ? r.getDrawable(iconId) : getScaledBitmap(context, iconId);
-      assistedDialedCall = drawable.mutate();
-      assistedDialedCall.setColorFilter(theme.getColorIcon(), PorterDuff.Mode.MULTIPLY);
-
-      iconId = R.drawable.quantum_ic_rtt_vd_theme_24;
-      drawable = largeIcons ? r.getDrawable(iconId, null) : getScaledBitmap(context, iconId);
-      rttCall = drawable.mutate();
-      rttCall.setColorFilter(theme.getColorIcon(), PorterDuff.Mode.MULTIPLY);
+      voicemail = getBitmap(context, R.drawable.quantum_ic_voicemail_vd_theme_24, iconColor,
+              largeIcons);
+      blocked = getBitmap(context, R.drawable.quantum_ic_block_vd_theme_24, iconColor,
+              largeIcons);
+      videoCall = getBitmap(context, R.drawable.quantum_ic_videocam_vd_white_24, iconColor,
+              largeIcons);
+      hdCall = getBitmap(context, R.drawable.quantum_ic_hd_vd_theme_24, iconColor,
+              largeIcons);
+      wifiCall = getBitmap(context, R.drawable.quantum_ic_signal_wifi_4_bar_vd_theme_24,
+              iconColor, largeIcons);
+      assistedDialedCall = getBitmap(context, R.drawable.quantum_ic_language_vd_theme_24,
+              iconColor, largeIcons);
+      rttCall = getBitmap(context, R.drawable.quantum_ic_rtt_vd_theme_24, iconColor,
+              largeIcons);
 
       iconMargin = largeIcons ? 0 : r.getDimensionPixelSize(R.dimen.call_log_icon_margin);
     }
 
+    private Drawable getBitmap(Context context, @DrawableRes int iconId, @ColorInt int color,
+                               boolean largeIcons) {
+      final android.content.res.Resources r = context.getResources();
+      Drawable drawable = largeIcons
+              ? ResourcesCompat.getDrawable(r, iconId, context.getTheme())
+              : getScaledBitmap(context, iconId);
+      drawable.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.MULTIPLY));
+      return drawable;
+    }
+
     // Gets the icon, scaled to the height of the call type icons. This helps display all the
     // icons to be the same height, while preserving their width aspect ratio.
     private Drawable getScaledBitmap(Context context, int resourceId) {
-      Drawable drawable = context.getDrawable(resourceId);
+      Drawable drawable = AppCompatResources.getDrawable(context, resourceId);
 
       int scaledHeight = context.getResources().getDimensionPixelSize(R.dimen.call_type_icon_size);
-      int scaledWidth =
-          (int)
-              ((float) drawable.getIntrinsicWidth()
-                  * ((float) scaledHeight / (float) drawable.getIntrinsicHeight()));
+      int scaledWidth = (int) ((float) drawable.getIntrinsicWidth()
+              * ((float) scaledHeight / (float) drawable.getIntrinsicHeight()));
 
       Bitmap icon = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);
       Canvas canvas = new Canvas(icon);
diff --git a/java/com/android/dialer/calllogutils/CallbackActionHelper.java b/java/com/android/dialer/calllogutils/CallbackActionHelper.java
index 838bc4f..9f32114 100644
--- a/java/com/android/dialer/calllogutils/CallbackActionHelper.java
+++ b/java/com/android/dialer/calllogutils/CallbackActionHelper.java
@@ -16,11 +16,11 @@
 
 package com.android.dialer.calllogutils;
 
-import android.content.Context;
 import android.provider.CallLog.Calls;
-import android.support.annotation.IntDef;
 import android.text.TextUtils;
-import com.android.dialer.duo.DuoComponent;
+
+import androidx.annotation.IntDef;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -29,11 +29,10 @@
 
   /** Specifies the action a user can take to make a callback. */
   @Retention(RetentionPolicy.SOURCE)
-  @IntDef({CallbackAction.NONE, CallbackAction.IMS_VIDEO, CallbackAction.DUO, CallbackAction.VOICE})
+  @IntDef({CallbackAction.NONE, CallbackAction.IMS_VIDEO, CallbackAction.VOICE})
   public @interface CallbackAction {
     int NONE = 0;
     int IMS_VIDEO = 1;
-    int DUO = 2;
     int VOICE = 3;
   }
 
@@ -42,31 +41,13 @@
    *
    * @param number The phone number in column {@link android.provider.CallLog.Calls#NUMBER}.
    * @param features Value of features in column {@link android.provider.CallLog.Calls#FEATURES}.
-   * @param phoneAccountComponentName Account name in column {@link
-   *     android.provider.CallLog.Calls#PHONE_ACCOUNT_COMPONENT_NAME}.
    * @return One of the values in {@link CallbackAction}
    */
   public static @CallbackAction int getCallbackAction(
-      Context context, String number, int features, String phoneAccountComponentName) {
-    return getCallbackAction(number, features, isDuoCall(context, phoneAccountComponentName));
-  }
-
-  /**
-   * Returns the {@link CallbackAction} that can be associated with a call.
-   *
-   * @param number The phone number in column {@link android.provider.CallLog.Calls#NUMBER}.
-   * @param features Value of features in column {@link android.provider.CallLog.Calls#FEATURES}.
-   * @param isDuoCall Whether the call is a Duo call.
-   * @return One of the values in {@link CallbackAction}
-   */
-  public static @CallbackAction int getCallbackAction(
-      String number, int features, boolean isDuoCall) {
+      String number, int features) {
     if (TextUtils.isEmpty(number)) {
       return CallbackAction.NONE;
     }
-    if (isDuoCall) {
-      return CallbackAction.DUO;
-    }
 
     boolean isVideoCall = (features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO;
     if (isVideoCall) {
@@ -75,8 +56,4 @@
 
     return CallbackAction.VOICE;
   }
-
-  private static boolean isDuoCall(Context context, String phoneAccountComponentName) {
-    return DuoComponent.get(context).getDuo().isDuoAccount(phoneAccountComponentName);
-  }
 }
diff --git a/java/com/android/dialer/calllogutils/FilterSpinnerHelper.java b/java/com/android/dialer/calllogutils/FilterSpinnerHelper.java
new file mode 100644
index 0000000..831b64b
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/FilterSpinnerHelper.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.dialer.calllogutils;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.provider.CallLog;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Spinner;
+
+import com.android.dialer.R;
+import com.android.dialer.util.PermissionsUtil;
+
+import java.util.ArrayList;
+
+public class FilterSpinnerHelper implements AdapterView.OnItemSelectedListener {
+  private static final String TAG = FilterSpinnerHelper.class.getSimpleName();
+
+  public interface OnFilterChangedListener {
+    void onFilterChanged(PhoneAccountHandle account, int callType);
+  }
+
+  private final OnFilterChangedListener mListener;
+  private final Spinner mAccountSpinner;
+  private final ArrayAdapter<AccountItem> mAccountAdapter;
+  private final Spinner mTypeSpinner;
+  private final ArrayAdapter<TypeItem> mTypeAdapter;
+
+  public FilterSpinnerHelper(View rootView, boolean includeVoicemailType,
+      OnFilterChangedListener listener) {
+    mListener = listener;
+
+    mAccountAdapter = createAccountAdapter(rootView.getContext());
+    mAccountSpinner = initSpinner(rootView, R.id.filter_account_spinner, mAccountAdapter);
+
+    mTypeAdapter = createTypeAdapter(rootView.getContext(), includeVoicemailType);
+    mTypeSpinner = initSpinner(rootView, R.id.filter_status_spinner, mTypeAdapter);
+  }
+
+  @Override
+  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
+    int selectedAccountPos = Math.max(mAccountSpinner.getSelectedItemPosition(), 0);
+    int selectedTypePos = Math.max(mTypeSpinner.getSelectedItemPosition(), 0);
+    PhoneAccountHandle selectedAccount = mAccountAdapter.getItem(selectedAccountPos).account;
+    int selectedType = mTypeAdapter.getItem(selectedTypePos).value;
+    mListener.onFilterChanged(selectedAccount, selectedType);
+  }
+
+  @Override
+  public void onNothingSelected(AdapterView<?> parent) {
+  }
+
+  private Spinner initSpinner(View rootView, int spinnerResId, ArrayAdapter<?> adapter) {
+    Spinner spinner = rootView.findViewById(spinnerResId);
+    if (spinner == null) {
+      throw new IllegalArgumentException("Could not find spinner "
+          + rootView.getContext().getResources().getResourceName(spinnerResId));
+    }
+    spinner.setAdapter(adapter);
+    spinner.setOnItemSelectedListener(this);
+    if (adapter.getCount() <= 1) {
+      spinner.setVisibility(View.GONE);
+    }
+    return spinner;
+  }
+
+  @SuppressLint("MissingPermission")
+  private ArrayAdapter<AccountItem> createAccountAdapter(Context context) {
+    ArrayList<AccountItem> items = new ArrayList<>();
+    items.add(new AccountItem(null, context.getString(R.string.call_log_show_all_accounts)));
+    if (PermissionsUtil.hasPermission(context, android.Manifest.permission.READ_PHONE_STATE)) {
+      TelecomManager tm = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
+      for (PhoneAccountHandle account : tm.getCallCapablePhoneAccounts()) {
+        String displayName = PhoneAccountUtils.getAccountLabel(context, account);
+        if (!TextUtils.isEmpty(displayName)) {
+          items.add(new AccountItem(account, displayName));
+        }
+      }
+    }
+
+    return new ArrayAdapter<>(context, R.layout.call_log_filter_spinner_item, items);
+  }
+
+  private ArrayAdapter<TypeItem> createTypeAdapter(Context context, boolean includeVoicemail) {
+    ArrayList<TypeItem> items = new ArrayList<>();
+    items.add(new TypeItem(-1, context.getString(R.string.call_log_all_calls_header)));
+    items.add(new TypeItem(CallLog.Calls.INCOMING_TYPE,
+        context.getString(R.string.call_log_incoming_header)));
+    items.add(new TypeItem(CallLog.Calls.OUTGOING_TYPE,
+        context.getString(R.string.call_log_outgoing_header)));
+    items.add(new TypeItem(CallLog.Calls.MISSED_TYPE,
+        context.getString(R.string.call_log_missed_header)));
+    items.add(new TypeItem(CallLog.Calls.BLOCKED_TYPE,
+        context.getString(R.string.call_log_blacklist_header)));
+    if (includeVoicemail) {
+      items.add(new TypeItem(CallLog.Calls.VOICEMAIL_TYPE,
+          context.getString(R.string.call_log_voicemail_header)));
+    }
+
+    return new ArrayAdapter<>(context, R.layout.call_log_filter_spinner_item, items);
+  }
+
+  private static final class AccountItem {
+    public final PhoneAccountHandle account;
+    public final String label;
+
+    private AccountItem(PhoneAccountHandle account, String label) {
+      this.account = account;
+      this.label = label;
+    }
+
+    @Override
+    public String toString() {
+      return label;
+    }
+  }
+
+  private static final class TypeItem {
+    public final int value;
+    public final String label;
+
+    private TypeItem(int value, String label) {
+      this.value = value;
+      this.label = label;
+    }
+
+    @Override
+    public String toString() {
+      return label;
+    }
+  }
+}
diff --git a/java/com/android/dialer/calllogutils/NumberAttributesBuilder.java b/java/com/android/dialer/calllogutils/NumberAttributesBuilder.java
index 015d59f..66c424c 100644
--- a/java/com/android/dialer/calllogutils/NumberAttributesBuilder.java
+++ b/java/com/android/dialer/calllogutils/NumberAttributesBuilder.java
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
- *
+ * Copyright (C) 2023 The LineageOS Project
+ * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -17,6 +18,7 @@
 package com.android.dialer.calllogutils;
 
 import android.text.TextUtils;
+
 import com.android.dialer.NumberAttributes;
 import com.android.dialer.phonelookup.PhoneLookupInfo;
 import com.android.dialer.phonelookup.consolidator.PhoneLookupInfoConsolidator;
diff --git a/java/com/android/dialer/calllogutils/PhoneAccountUtils.java b/java/com/android/dialer/calllogutils/PhoneAccountUtils.java
index 2ee50a1..4fbff2b 100644
--- a/java/com/android/dialer/calllogutils/PhoneAccountUtils.java
+++ b/java/com/android/dialer/calllogutils/PhoneAccountUtils.java
@@ -17,9 +17,11 @@
 package com.android.dialer.calllogutils;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.telecom.TelecomUtil;
 
 /** Methods to help extract {@code PhoneAccount} information from database and Telecomm sources. */
diff --git a/java/com/android/dialer/calllogutils/PhoneCallDetails.java b/java/com/android/dialer/calllogutils/PhoneCallDetails.java
index 7212fa9..e321f04 100644
--- a/java/com/android/dialer/calllogutils/PhoneCallDetails.java
+++ b/java/com/android/dialer/calllogutils/PhoneCallDetails.java
@@ -21,11 +21,15 @@
 import android.net.Uri;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
-import android.support.annotation.Nullable;
+import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+
 import com.android.contacts.common.ContactsUtils.UserType;
 import com.android.contacts.common.util.ContactDisplayUtils;
+import com.android.dialer.R;
 import com.android.dialer.contacts.displaypreference.ContactDisplayPreferences.DisplayOrder;
 import com.android.dialer.logging.ContactSource;
 import com.android.dialer.phonenumbercache.ContactInfo;
@@ -156,7 +160,7 @@
    * @return The description of the account that this call has been placed on.
    */
   public static CharSequence createAccountLabelDescription(
-      Resources resources, @Nullable String viaNumber, @Nullable CharSequence accountLabel) {
+          Resources resources, @Nullable String viaNumber, @Nullable CharSequence accountLabel) {
 
     if ((!TextUtils.isEmpty(viaNumber)) && !TextUtils.isEmpty(accountLabel)) {
       String msg =
diff --git a/java/com/android/dialer/calllogutils/PhoneNumberDisplayUtil.java b/java/com/android/dialer/calllogutils/PhoneNumberDisplayUtil.java
index 6fe3a82..54c6987 100644
--- a/java/com/android/dialer/calllogutils/PhoneNumberDisplayUtil.java
+++ b/java/com/android/dialer/calllogutils/PhoneNumberDisplayUtil.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,8 +23,10 @@
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
+
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /** Helper for formatting and managing the display of phone numbers. */
 public class PhoneNumberDisplayUtil {
@@ -50,12 +53,12 @@
       return Optional.of(appContext.getResources().getString(R.string.unknown));
     }
     if (presentation == Calls.PRESENTATION_RESTRICTED) {
-      return Optional.of(PhoneNumberHelper.getDisplayNameForRestrictedNumber(appContext));
+      return Optional.of(appContext.getResources().getString(R.string.private_num_non_verizon));
     }
     if (presentation == Calls.PRESENTATION_PAYPHONE) {
       return Optional.of(appContext.getResources().getString(R.string.payphone));
     }
-    return Optional.absent();
+    return Optional.empty();
   }
 
   /**
@@ -64,7 +67,7 @@
    * @param number the number to display
    * @param formattedNumber the formatted number if available, may be null
    */
-  static CharSequence getDisplayNumber(
+  public static CharSequence getDisplayNumber(
       Context context,
       CharSequence number,
       int presentation,
diff --git a/java/com/android/dialer/calllogutils/PhotoInfoBuilder.java b/java/com/android/dialer/calllogutils/PhotoInfoBuilder.java
index 2e2e4ab..119e681 100644
--- a/java/com/android/dialer/calllogutils/PhotoInfoBuilder.java
+++ b/java/com/android/dialer/calllogutils/PhotoInfoBuilder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@
 
 import android.content.Context;
 import android.provider.CallLog.Calls;
-import android.support.v4.os.BuildCompat;
+
 import com.android.dialer.NumberAttributes;
 import com.android.dialer.calllog.model.CoalescedRow;
 import com.android.dialer.glidephotomanager.PhotoInfo;
@@ -38,9 +39,7 @@
             Spam.shouldShowAsSpam(
                 coalescedRow.getNumberAttributes().getIsSpam(), coalescedRow.getCallType()))
         .setIsVideo((coalescedRow.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO)
-        .setIsRtt(
-            BuildCompat.isAtLeastP()
-                && (coalescedRow.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT);
+        .setIsRtt((coalescedRow.getFeatures() & Calls.FEATURES_RTT) == Calls.FEATURES_RTT);
   }
 
   /** Returns a {@link PhotoInfo.Builder} with info from {@link VoicemailEntry}. */
diff --git a/java/com/android/dialer/calllogutils/res/layout/call_log_filter_spinner_item.xml b/java/com/android/dialer/calllogutils/res/layout/call_log_filter_spinner_item.xml
new file mode 100644
index 0000000..4e794e5
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/layout/call_log_filter_spinner_item.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+    * Neither the name of The Linux Foundation, Inc. nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+  style="@style/Dialer.TextAppearance.Primary"
+  android:layout_width="match_parent"
+  android:layout_height="?android:attr/listPreferredItemHeightSmall"
+  android:paddingLeft="8dip"
+  android:paddingRight="8dip"
+  android:textSize="14sp"
+  android:textStyle="bold"
+  android:gravity="center_vertical"
+  android:singleLine="true"
+  android:textAllCaps="false" />
diff --git a/java/com/android/dialer/calllogutils/res/layout/call_log_filter_spinners.xml b/java/com/android/dialer/calllogutils/res/layout/call_log_filter_spinners.xml
new file mode 100644
index 0000000..61ef745
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/layout/call_log_filter_spinners.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content"
+  android:orientation="horizontal"
+  android:paddingStart="@dimen/call_log_outer_margin"
+  android:paddingEnd="@dimen/call_log_outer_margin">
+  <Spinner
+    android:id="@+id/filter_account_spinner"
+    android:layout_width="0dip"
+    android:layout_height="?android:attr/listPreferredItemHeightSmall"
+    android:layout_weight="1.2" />
+  <Spinner
+    android:id="@+id/filter_status_spinner"
+    android:layout_width="0dip"
+    android:layout_height="?android:attr/listPreferredItemHeightSmall"
+    android:layout_weight="1.8" />
+</LinearLayout>
diff --git a/java/com/android/dialer/calllogutils/res/values-af/strings.xml b/java/com/android/dialer/calllogutils/res/values-af/strings.xml
index c4ed362..b7a2f80 100644
--- a/java/com/android/dialer/calllogutils/res/values-af/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-af/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Stemboodskap</string>
   <string name="just_now">Sopas</string>
   <string name="new_call_log_carrier_video">Diensverskaffervideo</string>
-  <string name="new_call_log_duo_video">Duo-video</string>
   <string name="new_call_log_unknown">Onbekend</string>
   <string name="new_call_log_secondary_blocked">Geblokkeer</string>
   <string name="new_call_log_secondary_spam">Strooipos</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 gemiste oproep van ^2</item>
-    <item quantity="other">^1 oproepe, die nuutste is ’n gemiste oproep van ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 het oproep van ^2 geantwoord</item>
-    <item quantity="other">^1 oproepe, die nuutste is ’n geantwoorde oproep van ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 uitgaande oproep aan ^2</item>
-    <item quantity="other">^1 oproepe, die nuutste is ’n uitgaande oproep aan ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 geblokkeerde oproep van ^2</item>
-    <item quantity="other">^1 oproepe, die nuutste is ’n geblokkeerde oproep van ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">op ^1,
-    via ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-am/strings.xml b/java/com/android/dialer/calllogutils/res/values-am/strings.xml
index 1eb0be2..08f5e2d 100644
--- a/java/com/android/dialer/calllogutils/res/values-am/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-am/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">የድምፅ መልዕክት</string>
   <string name="just_now">ልክ አሁን</string>
   <string name="new_call_log_carrier_video">የአገልግሎት አቅራቢ ቪዲዮ</string>
-  <string name="new_call_log_duo_video">Duo ቪዲዮ</string>
   <string name="new_call_log_unknown">ያልታወቀ</string>
   <string name="new_call_log_secondary_blocked">የታገደ</string>
   <string name="new_call_log_secondary_spam">አይፈለጌ መልዕክት</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 ጥሪዎች፣ የቅርብ ጊዜው ከ ^2 ያመለጠ ጥሪ ነው</item>
-    <item quantity="other">^1 ጥሪዎች፣ የቅርብ ጊዜ ከ^2 ያመለጠ ጥሪ ነው</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 ጥሪዎች፣ የቅርብ ጊዜው ከ ^2 የተመለሰ ጥሪ ነው</item>
-    <item quantity="other">^1 ጥሪዎች፣ የቅርብ ጊዜው ከ ^2 የተመለሰ ጥሪ ነው</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 ጥሪዎች፣ የቅርብ ጊዜው ወጪ ጥሪ ወደ ^2 ነው</item>
-    <item quantity="other">^1 ጥሪዎች፣ የቅርብ ጊዜው ወጪ ጥሪ ወደ ^2 ነው</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 ጥሪዎች፣ የቅርብ ጊዜው የታገደ ጥሪ ከ ^2 ነው</item>
-    <item quantity="other">^1 ጥሪዎች፣ የቅርብ ጊዜው የታገደ ጥሪ ከ ^2 ነው</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">በ ^1 ላይ፣ በ ^2 በኩል</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1፣ ^2።</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1፣ ^2፣ ^3።</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ar/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-ar/cm_strings.xml
new file mode 100644
index 0000000..6ac38f5
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-ar/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">كل الحسابات</string>
+    <string name="call_log_all_calls_header">جميع المكالمات</string>
+    <string name="call_log_incoming_header">المكالمات الواردة فقط</string>
+    <string name="call_log_outgoing_header">المكالمات الصادرة فقط</string>
+    <string name="call_log_missed_header">المكالمات الفائتة فقط</string>
+    <string name="call_log_voicemail_header">مكالمات البريد الصوتي فقط</string>
+    <string name="call_log_blacklist_header">المكالمات المحظورة فقط</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ar/strings.xml b/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
index ab2a749..25ba30c 100644
--- a/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ar/strings.xml
@@ -42,44 +42,7 @@
   <string name="voicemail_string">البريد الصوتي</string>
   <string name="just_now">للتو</string>
   <string name="new_call_log_carrier_video">فيديو عن طريق مشغل شبكة الجوال</string>
-  <string name="new_call_log_duo_video">‏فيديو Duo</string>
   <string name="new_call_log_unknown">غير معروف</string>
   <string name="new_call_log_secondary_blocked">محظورة</string>
   <string name="new_call_log_secondary_spam">المحتوى غير المرغوب فيه</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="zero">^1 مكالمات، الأخيرة هي مكالمة فائتة من ^2</item>
-    <item quantity="one">^1 مكالمة فائتة من ^2</item>
-    <item quantity="two">مكالمتان ^1، الأخيرة هي مكالمة فائتة من ^2</item>
-    <item quantity="few">^1 مكالمات، الأخيرة هي مكالمة فائتة من ^2</item>
-    <item quantity="many">^1 مكالمة، الأخيرة هي مكالمة فائتة من ^2</item>
-    <item quantity="other">^1 مكالمة، الأخيرة هي مكالمة فائتة من ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="zero">^1 مكالمات، الأخيرة هي مكالمة تم الرد عليها من قِبل ^2</item>
-    <item quantity="one">^1 مكالمة تم الرد عليها من قِبل ^2</item>
-    <item quantity="two">مكالمتان ^1، الأخيرة هي مكالمة تم الرد عليها من قِبل ^2</item>
-    <item quantity="few">^1 مكالمات، الأخيرة هي مكالمة تم الرد عليها من قِبل ^2</item>
-    <item quantity="many">^1 مكالمة، الأخيرة هي مكالمة تم الرد عليها من قِبل ^2</item>
-    <item quantity="other">^1 مكالمة، الأخيرة هي مكالمة تم الرد عليها من قِبل ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="zero">^1 مكالمات، الأخيرة هي مكالمة صادرة إلى ^2</item>
-    <item quantity="one">^1 مكالمة صادرة إلى ^2</item>
-    <item quantity="two">مكالمتان ^1، الأخيرة هي مكالمة صادرة إلى ^2</item>
-    <item quantity="few">^1 مكالمات، الأخيرة هي مكالمة صادرة إلى ^2</item>
-    <item quantity="many">^1 مكالمة، الأخيرة هي مكالمة صادرة إلى ^2</item>
-    <item quantity="other">^1 مكالمة، الأخيرة هي مكالمة صادرة إلى ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="zero">^1 مكالمات، الأخيرة هي مكالمة محظورة من ^2</item>
-    <item quantity="one">^1 مكالمة محظورة من ^2</item>
-    <item quantity="two">مكالمتان ^1، الأخيرة هي مكالمة محظورة من ^2</item>
-    <item quantity="few">^1 مكالمات، الأخيرة هي مكالمة محظورة من ^2</item>
-    <item quantity="many">^1 مكالمة، الأخيرة هي مكالمة محظورة من ^2</item>
-    <item quantity="other">^1 مكالمة، الأخيرة هي مكالمة محظورة من ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">على ^1،
-    من خلال ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1، ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1، ^2، ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ast-rES/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-ast-rES/cm_strings.xml
new file mode 100644
index 0000000..f7a7bc2
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-ast-rES/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Toles cuentes</string>
+    <string name="call_log_all_calls_header">Toles llamaes</string>
+    <string name="call_log_incoming_header">Namás llamaes entrantes</string>
+    <string name="call_log_outgoing_header">Namás llamaes salientes</string>
+    <string name="call_log_missed_header">Namás llamaes perdíes</string>
+    <string name="call_log_voicemail_header">Namás llamaes con buzón de voz</string>
+    <string name="call_log_blacklist_header">Namás llamaes bloquiaes</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-az/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-az/cm_strings.xml
new file mode 100644
index 0000000..88ed25d
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-az/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Bütün hesablar</string>
+    <string name="call_log_all_calls_header">Bütün zənglər</string>
+    <string name="call_log_incoming_header">Yalnız gələn zənglər</string>
+    <string name="call_log_outgoing_header">Yalnız gedən zənglər</string>
+    <string name="call_log_missed_header">Yalnız cavabsız zənglər</string>
+    <string name="call_log_voicemail_header">Yalnız səsli mesajı olan zənglər</string>
+    <string name="call_log_blacklist_header">Yalnız əngəllənən zənglər</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-az/strings.xml b/java/com/android/dialer/calllogutils/res/values-az/strings.xml
index 20e1448..681b04a 100644
--- a/java/com/android/dialer/calllogutils/res/values-az/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-az/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Səsli e-məktub</string>
   <string name="just_now">İndicə</string>
   <string name="new_call_log_carrier_video">Operator video</string>
-  <string name="new_call_log_duo_video">Duo video</string>
   <string name="new_call_log_unknown">Naməlum</string>
   <string name="new_call_log_secondary_blocked">Blok edilib</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 buraxılmış zəng: ^2</item>
-    <item quantity="other">Sonuncu, ^2 adlı istifadəçidən buraxılmış zəng olmaqla, ^1 zəng</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2 tərəfindən ^1 cavab verilmiş zəng</item>
-    <item quantity="other">Sonuncu, ^2 tərəfindən cavab verilmiş zəng olmaqla, ^1 zəng</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 ^2 adlı istifadəçiyə gedən zəng</item>
-    <item quantity="other">Sonuncu, ^2 adlı istifadəçiyə gedən zəng olmaqla, ^1 zəng</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2 tərəfindən ^1 blok edilmiş zəng</item>
-    <item quantity="other">Sonuncu, ^2 tərəfindən blok edilmiş zəng olmaqla, ^1 zəng</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^2 vasitəsilə ^1 hesabında</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/calllogutils/res/values-b+sr+Latn/strings.xml
index 3e451b6..b0f3afe 100644
--- a/java/com/android/dialer/calllogutils/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-b+sr+Latn/strings.xml
@@ -36,32 +36,7 @@
   <string name="voicemail_string">Govorna pošta</string>
   <string name="just_now">Malopre</string>
   <string name="new_call_log_carrier_video">Video poziv preko operatera</string>
-  <string name="new_call_log_duo_video">Duo video poziv</string>
   <string name="new_call_log_unknown">Nepoznati brojevi</string>
   <string name="new_call_log_secondary_blocked">Blokirani</string>
   <string name="new_call_log_secondary_spam">Nepoželjno</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 poziv, poslednji je propušteni poziv od: ^2</item>
-    <item quantity="few">^1 poziva, poslednji je propušteni poziv od: ^2</item>
-    <item quantity="other">^1 poziva, poslednji je propušteni poziv od: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 poziv, poslednji je prihvaćeni poziv od: ^2</item>
-    <item quantity="few">^1 poziva, poslednji je prihvaćeni poziv od: ^2</item>
-    <item quantity="other">^1 poziva, poslednji je prihvaćeni poziv od: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 poziv, poslednji je odlazni poziv za: ^2</item>
-    <item quantity="few">^1 poziva, poslednji je odlazni poziv za: ^2</item>
-    <item quantity="other">^1 poziva, poslednji je odlazni poziv za: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 poziv, poslednji je blokirani poziv od: ^2</item>
-    <item quantity="few">^1 poziva, poslednji je blokirani poziv od: ^2</item>
-    <item quantity="other">^1 poziva, poslednji je blokirani poziv od: ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">na ^1,
-    preko ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-be/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-be/cm_strings.xml
new file mode 100644
index 0000000..1407f5a
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-be/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Усе ўліковыя запісы</string>
+    <string name="call_log_all_calls_header">Усе выклікі</string>
+    <string name="call_log_incoming_header">Толькі ўваходныя выклікі</string>
+    <string name="call_log_outgoing_header">Толькі выходныя званкі</string>
+    <string name="call_log_missed_header">Толькі прапушчаныя выклікі</string>
+    <string name="call_log_voicemail_header">Толькі выклікі з галасавой пошты</string>
+    <string name="call_log_blacklist_header">Толькі заблакіраваныя выклікі</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-be/strings.xml b/java/com/android/dialer/calllogutils/res/values-be/strings.xml
index 4c77043..e2d8806 100644
--- a/java/com/android/dialer/calllogutils/res/values-be/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-be/strings.xml
@@ -38,36 +38,7 @@
   <string name="voicemail_string">Галасавая пошта</string>
   <string name="just_now">Зараз</string>
   <string name="new_call_log_carrier_video">Відэавыклік праз аператара</string>
-  <string name="new_call_log_duo_video">Відэавыклік Duo</string>
   <string name="new_call_log_unknown">Невядома</string>
   <string name="new_call_log_secondary_blocked">Заблакіравана</string>
   <string name="new_call_log_secondary_spam">Спам</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 выклік, апошні – прапушчаны выклік ад абанента ^2</item>
-    <item quantity="few">^1 выклікі, апошні – прапушчаны выклік ад абанента ^2</item>
-    <item quantity="many">^1 выклікаў, апошні – прапушчаны выклік ад абанента ^2</item>
-    <item quantity="other">^1 выкліку, апошні – прапушчаны выклік ад абанента ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 выклік, апошні – прыняты выклік ад абанента ^2</item>
-    <item quantity="few">^1 выклікі, апошні – прыняты выклік ад абанента ^2</item>
-    <item quantity="many">^1 выклікаў, апошні – прыняты выклік ад абанента ^2</item>
-    <item quantity="other">^1 выкліку, апошні – прыняты выклік ад абанента ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 выклік, апошні – выходны выклік абаненту ^2</item>
-    <item quantity="few">^1 выклікі, апошні – выходны выклік абаненту ^2</item>
-    <item quantity="many">^1 выклікаў, апошні – выходны выклік абаненту ^2</item>
-    <item quantity="other">^1 выкліку, апошні – выходны выклік абаненту ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 выклік, апошні – заблакіраваны выклік ад абанента ^2</item>
-    <item quantity="few">^1 выклікі, апошні – заблакіраваны выклік ад абанента ^2</item>
-    <item quantity="many">^1 выклікаў, апошні – заблакіраваны выклік ад абанента ^2</item>
-    <item quantity="other">^1 выкліку, апошні – заблакіраваны выклік ад абанента ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1,
-    нумар ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-bg/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-bg/cm_strings.xml
new file mode 100644
index 0000000..b244bed
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-bg/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Всички сметки</string>
+    <string name="call_log_all_calls_header">Всички обаждания</string>
+    <string name="call_log_incoming_header">Само входящи повиквания</string>
+    <string name="call_log_outgoing_header">Само изходящи повиквания</string>
+    <string name="call_log_missed_header">Само пропуснати повиквания</string>
+    <string name="call_log_voicemail_header">Само повиквания с гласова поща</string>
+    <string name="call_log_blacklist_header">Само блокирани обаждания</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-bg/strings.xml b/java/com/android/dialer/calllogutils/res/values-bg/strings.xml
index e1e363c..338cb96 100644
--- a/java/com/android/dialer/calllogutils/res/values-bg/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-bg/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Гласова поща</string>
   <string name="just_now">Току-що</string>
   <string name="new_call_log_carrier_video">Видеообаждане през оператора</string>
-  <string name="new_call_log_duo_video">Видеообаждане през Duo</string>
   <string name="new_call_log_unknown">Неизвестно</string>
   <string name="new_call_log_secondary_blocked">Блокиран</string>
   <string name="new_call_log_secondary_spam">Спам</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 пропуснато обаждане от ^2</item>
-    <item quantity="other">^1 обаждания, последното е пропуснато обаждане от ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 отговорено обаждане от ^2</item>
-    <item quantity="other">^1 обаждания, последното е отговорено обаждане от ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 изходящо обаждане до ^2</item>
-    <item quantity="other">^1 обаждания, последното е изходящо обаждане до ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 блокирано обаждане от ^2</item>
-    <item quantity="other">^1 обаждания, последното е блокирано обаждане от ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">в/ъв ^1 през ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-bn/strings.xml b/java/com/android/dialer/calllogutils/res/values-bn/strings.xml
index 3e050ae..3ce52f6 100644
--- a/java/com/android/dialer/calllogutils/res/values-bn/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-bn/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">ভয়েসমেল</string>
   <string name="just_now">এখনই</string>
   <string name="new_call_log_carrier_video">পরিষেবা প্রদানকারীতে ভিডিও</string>
-  <string name="new_call_log_duo_video">Duo ভিডিও</string>
   <string name="new_call_log_unknown">অজানা</string>
   <string name="new_call_log_secondary_blocked">ব্লক করা নম্বর</string>
   <string name="new_call_log_secondary_spam">স্প্যাম</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1টি কল, শেষ কলটি ^2-এর, যেটি মিস করেছেন</item>
-    <item quantity="other">^1টি কল, শেষ কলটি ^2-এর, যেটি মিস করেছেন</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1টি কল, শেষ কলটি ^2-এর, যেটির উত্তর দিয়েছেন</item>
-    <item quantity="other">^1টি কল, শেষ কলটি ^2-এর, যেটির উত্তর দিয়েছেন</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1টি কল করেছেন, শেষ কলটি ^2-কে</item>
-    <item quantity="other">^1টি কল করেছেন, শেষ কলটি ^2-কে</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1টি কল, শেষ কলটি ^2-এর, যেটি আপনি ব্লক করেছেন</item>
-    <item quantity="other">^1টি কল, শেষ কলটি ^2-এর, যেটি আপনি ব্লক করেছেন</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1-এ,
-    ^2-এর মাধ্যমে</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2।</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3।</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-bs/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-bs/cm_strings.xml
new file mode 100644
index 0000000..bcc6ff3
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-bs/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_incoming_header">Samo dolazni pozivi</string>
+    <string name="call_log_outgoing_header">Samo odlazni pozivi</string>
+    <string name="call_log_missed_header">Samo propušteni pozivi</string>
+    <string name="call_log_voicemail_header">Samo pozivi sa govornom porukom</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-bs/strings.xml b/java/com/android/dialer/calllogutils/res/values-bs/strings.xml
index 84be2ba..060c81e 100644
--- a/java/com/android/dialer/calllogutils/res/values-bs/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-bs/strings.xml
@@ -36,32 +36,7 @@
   <string name="voicemail_string">Govorna pošta</string>
   <string name="just_now">Upravo</string>
   <string name="new_call_log_carrier_video">Video poziv putem operatera</string>
-  <string name="new_call_log_duo_video">Duo video poziv</string>
   <string name="new_call_log_unknown">Nepoznato</string>
   <string name="new_call_log_secondary_blocked">Blokirano</string>
   <string name="new_call_log_secondary_spam">Neželjena pošta</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 poziv. Posljednji poziv je propušteni poziv od osobe ^2</item>
-    <item quantity="few">^1 poziva. Posljednji poziv je propušteni poziv od osobe ^2</item>
-    <item quantity="other">^1 poziva. Posljednji poziv je propušteni poziv od osobe ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 poziv. Posljednji poziv je prihvaćeni poziv od osobe ^2</item>
-    <item quantity="few">^1 poziva. Posljednji poziv je prihvaćeni poziv od osobe ^2</item>
-    <item quantity="other">^1 poziva. Posljednji poziv je prihvaćeni poziv od osobe ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 poziv. Posljednji poziv je odlazni poziv upućen osobi ^2</item>
-    <item quantity="few">^1 poziva. Posljednji poziv je odlazni poziv upućen osobi ^2</item>
-    <item quantity="other">^1 poziva. Posljednji poziv je odlazni poziv upućen osobi ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 poziv. Posljednji poziv je blokirani poziv od osobe ^2</item>
-    <item quantity="few">^1 poziva. Posljednji poziv je blokirani poziv od osobe ^2</item>
-    <item quantity="other">^1 poziva. Posljednji poziv je blokirani poziv od osobe ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">na računu ^1,
-    putem broja ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ca/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-ca/cm_strings.xml
new file mode 100644
index 0000000..93546ac
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-ca/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Tots els comptes</string>
+    <string name="call_log_all_calls_header">Totes les trucades</string>
+    <string name="call_log_incoming_header">Només trucades entrants</string>
+    <string name="call_log_outgoing_header">Només trucades sortints</string>
+    <string name="call_log_missed_header">Només trucades perdudes</string>
+    <string name="call_log_voicemail_header">Només trucades amb bústia de veu</string>
+    <string name="call_log_blacklist_header">Només trucades bloquejades</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ca/strings.xml b/java/com/android/dialer/calllogutils/res/values-ca/strings.xml
index 56f6ada..c83d43f 100644
--- a/java/com/android/dialer/calllogutils/res/values-ca/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ca/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Bústia de veu</string>
   <string name="just_now">Ara mateix</string>
   <string name="new_call_log_carrier_video">Videotruc. operador tel. mòbil</string>
-  <string name="new_call_log_duo_video">Videotrucada de Duo</string>
   <string name="new_call_log_unknown">Desconegut</string>
   <string name="new_call_log_secondary_blocked">Bloquejats</string>
   <string name="new_call_log_secondary_spam">Trucades brossa</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 trucada perduda de: ^2</item>
-    <item quantity="other">^1 trucades; l\'última és una trucada perduda de: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 trucada resposta de: ^2</item>
-    <item quantity="other">^1 trucades; l\'última és una trucada resposta de: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 trucada sortint feta a ^2</item>
-    <item quantity="other">^1 trucades; l\'última és una trucada sortint feta a ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 trucada bloquejada de: ^2</item>
-    <item quantity="other">^1 trucades; l\'última és una trucada bloquejada de: ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">a ^1,
-    al número ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-cs/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-cs/cm_strings.xml
new file mode 100644
index 0000000..dc895d6
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-cs/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Všechny účty</string>
+    <string name="call_log_all_calls_header">Všechny hovory</string>
+    <string name="call_log_incoming_header">Pouze příchozí hovory</string>
+    <string name="call_log_outgoing_header">Pouze odchozí hovory</string>
+    <string name="call_log_missed_header">Pouze zmeškané hovory</string>
+    <string name="call_log_voicemail_header">Pouze hovory s hlasovou schránkou</string>
+    <string name="call_log_blacklist_header">Pouze blokované hovory</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-cs/strings.xml b/java/com/android/dialer/calllogutils/res/values-cs/strings.xml
index c5a3a9a..316a3df 100644
--- a/java/com/android/dialer/calllogutils/res/values-cs/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-cs/strings.xml
@@ -38,36 +38,7 @@
   <string name="voicemail_string">Hlasová schránka</string>
   <string name="just_now">Právě teď</string>
   <string name="new_call_log_carrier_video">Videohovor přes operátora</string>
-  <string name="new_call_log_duo_video">Videohovor Duo</string>
   <string name="new_call_log_unknown">Neznámé</string>
   <string name="new_call_log_secondary_blocked">Blokované</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 zmeškaný hovor od kontaktu ^2</item>
-    <item quantity="few">^1 hovory, poslední je zmeškaný hovor od kontaktu ^2</item>
-    <item quantity="many">^1 hovoru, poslední je zmeškaný hovor od kontaktu ^2</item>
-    <item quantity="other">^1 hovorů, poslední je zmeškaný hovor od kontaktu ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 přijatý hovor od kontaktu ^2</item>
-    <item quantity="few">^1 hovory, poslední je přijatý hovor od kontaktu ^2</item>
-    <item quantity="many">^1 hovoru, poslední je přijatý hovor od kontaktu ^2</item>
-    <item quantity="other">^1 hovorů, poslední je přijatý hovor od kontaktu ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 odchozí hovor s kontaktem ^2</item>
-    <item quantity="few">^1 hovory, poslední je odchozí hovor s kontaktem ^2</item>
-    <item quantity="many">^1 hovoru, poslední je odchozí hovor s kontaktem ^2</item>
-    <item quantity="other">^1 hovorů, poslední je odchozí hovor s kontaktem ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 zablokovaný hovor od kontaktu ^2</item>
-    <item quantity="few">^1 hovory, poslední je zablokovaný hovor od kontaktu ^2</item>
-    <item quantity="many">^1 hovoru, poslední je zablokovaný hovor od kontaktu ^2</item>
-    <item quantity="other">^1 hovorů, poslední je zablokovaný hovor od kontaktu ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">na účet ^1,
-    z čísla ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-cy/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-cy/cm_strings.xml
new file mode 100644
index 0000000..95a81ec
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-cy/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Pob cyfrif</string>
+    <string name="call_log_all_calls_header">Pob galwad</string>
+    <string name="call_log_incoming_header">Galwadau i mewn yn unig</string>
+    <string name="call_log_outgoing_header">Galwadau allan yn unig</string>
+    <string name="call_log_missed_header">Galwadau wedi\'u methu yn unig</string>
+    <string name="call_log_voicemail_header">Galwadau i\'r lleisbost yn unig</string>
+    <string name="call_log_blacklist_header">Galwadau wedi\'u rhwystro yn unig</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-da/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-da/cm_strings.xml
new file mode 100644
index 0000000..8ea8a8f
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-da/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Alle konti</string>
+    <string name="call_log_all_calls_header">Alle opkald</string>
+    <string name="call_log_incoming_header">Kun indgående opkald</string>
+    <string name="call_log_outgoing_header">Kun udgående opkald</string>
+    <string name="call_log_missed_header">Kun ubesvarede opkald</string>
+    <string name="call_log_voicemail_header">Kun opkald med telefonsvarer</string>
+    <string name="call_log_blacklist_header">Kun blokerede opkald</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-da/strings.xml b/java/com/android/dialer/calllogutils/res/values-da/strings.xml
index 472c931..714033c 100644
--- a/java/com/android/dialer/calllogutils/res/values-da/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-da/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Telefonsvarer</string>
   <string name="just_now">Lige nu</string>
   <string name="new_call_log_carrier_video">Video via mobilselskab</string>
-  <string name="new_call_log_duo_video">Video via Duo</string>
   <string name="new_call_log_unknown">Ukendt</string>
   <string name="new_call_log_secondary_blocked">Blokeret</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 opkald, og det seneste er et ubesvaret opkald fra ^2</item>
-    <item quantity="other">^1 opkald, og det seneste er et ubesvaret opkald fra ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 opkald, og det seneste er et besvaret opkald fra ^2</item>
-    <item quantity="other">^1 opkald, og det seneste er et besvaret opkald fra ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 opkald, og det seneste er et udgået opkald til ^2</item>
-    <item quantity="other">^1 opkald, og det seneste er et udgået opkald til ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 opkald, og det seneste er et blokeret opkald fra ^2</item>
-    <item quantity="other">^1 opkald, og det seneste er et blokeret opkald fra ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">på ^1,
-    via ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-de/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-de/cm_strings.xml
new file mode 100644
index 0000000..6736ea9
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-de/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Alle Konten</string>
+    <string name="call_log_all_calls_header">Alle Anrufe</string>
+    <string name="call_log_incoming_header">Nur eingehende Anrufe</string>
+    <string name="call_log_outgoing_header">Nur ausgehende Anrufe</string>
+    <string name="call_log_missed_header">Nur entgangene Anrufe</string>
+    <string name="call_log_voicemail_header">Nur Anrufe mit Sprachnachricht</string>
+    <string name="call_log_blacklist_header">Nur blockierte Anrufe</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-de/strings.xml b/java/com/android/dialer/calllogutils/res/values-de/strings.xml
index 4f11b80..aa48383 100644
--- a/java/com/android/dialer/calllogutils/res/values-de/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-de/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Mailbox</string>
   <string name="just_now">Gerade eben</string>
   <string name="new_call_log_carrier_video">Video über Mobilfunkanbieter</string>
-  <string name="new_call_log_duo_video">Duo-Video</string>
   <string name="new_call_log_unknown">Unbekannt</string>
   <string name="new_call_log_secondary_blocked">Gesperrt</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 verpasster Anruf von ^2</item>
-    <item quantity="other">^1 Anrufe, der letzte ist ein verpasster Anruf von ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 angenommener Anruf von ^2</item>
-    <item quantity="other">^1 Anrufe, der letzte ist ein verpasster Anruf von ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 ausgehender Anruf an ^2</item>
-    <item quantity="other">^1 Anrufe, der letzte ist ein ausgehender Anruf an ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 blockierter Anruf von ^2</item>
-    <item quantity="other">^1 Anrufe, der letzte ist ein blockierter Anruf von ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">mit ^1,
-    über ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-el/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-el/cm_strings.xml
new file mode 100644
index 0000000..921e65a
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-el/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Όλοι οι λογαριασμοί</string>
+    <string name="call_log_all_calls_header">Όλες οι κλήσεις</string>
+    <string name="call_log_incoming_header">Μόνο εισερχόμενες κλήσεις</string>
+    <string name="call_log_outgoing_header">Μόνο εξερχόμενες κλήσεις</string>
+    <string name="call_log_missed_header">Μόνο αναπάντητες κλήσεις</string>
+    <string name="call_log_voicemail_header">Μόνο κλήσεις με ηχητικά μηνύματα</string>
+    <string name="call_log_blacklist_header">Μόνο αποκλεισμένες κλήσεις</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-el/strings.xml b/java/com/android/dialer/calllogutils/res/values-el/strings.xml
index 9fad893..9dc7b7e 100644
--- a/java/com/android/dialer/calllogutils/res/values-el/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-el/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Αυτόματος τηλεφωνητής</string>
   <string name="just_now">Μόλις τώρα</string>
   <string name="new_call_log_carrier_video">Βιντεοκλ. μέσω εταιρ. κινητής</string>
-  <string name="new_call_log_duo_video">Βιντεοκλήση Duo</string>
   <string name="new_call_log_unknown">Άγνωστος</string>
   <string name="new_call_log_secondary_blocked">Αποκλεισμένοι</string>
   <string name="new_call_log_secondary_spam">Ανεπιθύμητα μηνύματα</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 αναπάντητη κλήση από ^2</item>
-    <item quantity="other">^1 κλήσεις, η πιο πρόσφατη είναι αναπάντητη από ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 απαντημένη κλήση από ^2</item>
-    <item quantity="other">^1 κλήσεις, η πιο πρόσφατη είναι απαντημένη που έγινε από ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 εξερχόμενη κλήση προς ^2</item>
-    <item quantity="other">^1 κλήση, η πιο πρόσφατη είναι εξερχόμενη προς ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 αποκλεισμένη κλήση από ^2</item>
-    <item quantity="other">^1 κλήσεις, η πιο πρόσφατη είναι αποκλεισμένη που έγινε από ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">στον λογαριασμό ^1,
-    μέσω ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-en-rAU/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-en-rAU/cm_strings.xml
new file mode 100644
index 0000000..d30aa17
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-en-rAU/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">All accounts</string>
+    <string name="call_log_all_calls_header">All calls</string>
+    <string name="call_log_incoming_header">Incoming calls only</string>
+    <string name="call_log_outgoing_header">Outgoing calls only</string>
+    <string name="call_log_missed_header">Missed calls only</string>
+    <string name="call_log_voicemail_header">Calls with voicemail only</string>
+    <string name="call_log_blacklist_header">Blocked calls only</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-en-rAU/strings.xml b/java/com/android/dialer/calllogutils/res/values-en-rAU/strings.xml
index 42e8923..7acf3f5 100644
--- a/java/com/android/dialer/calllogutils/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-en-rAU/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Voicemail</string>
   <string name="just_now">Just now</string>
   <string name="new_call_log_carrier_video">Operator video</string>
-  <string name="new_call_log_duo_video">Duo video</string>
   <string name="new_call_log_unknown">Unknown</string>
   <string name="new_call_log_secondary_blocked">Blocked</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 missed call from ^2</item>
-    <item quantity="other">^1 calls, the latest of which is a missed call from ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 answered call from ^2</item>
-    <item quantity="other">^1 calls, the latest of which is an answered call from ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 outgoing call to ^2</item>
-    <item quantity="other">^1 calls, the latest of which is an outgoing call to ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 blocked call from ^2</item>
-    <item quantity="other">^1 calls, the latest of which is a blocked call from ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">on ^1,
-    via ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-en-rCA/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-en-rCA/cm_strings.xml
new file mode 100644
index 0000000..d30aa17
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-en-rCA/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">All accounts</string>
+    <string name="call_log_all_calls_header">All calls</string>
+    <string name="call_log_incoming_header">Incoming calls only</string>
+    <string name="call_log_outgoing_header">Outgoing calls only</string>
+    <string name="call_log_missed_header">Missed calls only</string>
+    <string name="call_log_voicemail_header">Calls with voicemail only</string>
+    <string name="call_log_blacklist_header">Blocked calls only</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-en-rGB/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-en-rGB/cm_strings.xml
new file mode 100644
index 0000000..d30aa17
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-en-rGB/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">All accounts</string>
+    <string name="call_log_all_calls_header">All calls</string>
+    <string name="call_log_incoming_header">Incoming calls only</string>
+    <string name="call_log_outgoing_header">Outgoing calls only</string>
+    <string name="call_log_missed_header">Missed calls only</string>
+    <string name="call_log_voicemail_header">Calls with voicemail only</string>
+    <string name="call_log_blacklist_header">Blocked calls only</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-en-rGB/strings.xml b/java/com/android/dialer/calllogutils/res/values-en-rGB/strings.xml
index 42e8923..7acf3f5 100644
--- a/java/com/android/dialer/calllogutils/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-en-rGB/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Voicemail</string>
   <string name="just_now">Just now</string>
   <string name="new_call_log_carrier_video">Operator video</string>
-  <string name="new_call_log_duo_video">Duo video</string>
   <string name="new_call_log_unknown">Unknown</string>
   <string name="new_call_log_secondary_blocked">Blocked</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 missed call from ^2</item>
-    <item quantity="other">^1 calls, the latest of which is a missed call from ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 answered call from ^2</item>
-    <item quantity="other">^1 calls, the latest of which is an answered call from ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 outgoing call to ^2</item>
-    <item quantity="other">^1 calls, the latest of which is an outgoing call to ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 blocked call from ^2</item>
-    <item quantity="other">^1 calls, the latest of which is a blocked call from ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">on ^1,
-    via ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-en-rIN/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-en-rIN/cm_strings.xml
new file mode 100644
index 0000000..d30aa17
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-en-rIN/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">All accounts</string>
+    <string name="call_log_all_calls_header">All calls</string>
+    <string name="call_log_incoming_header">Incoming calls only</string>
+    <string name="call_log_outgoing_header">Outgoing calls only</string>
+    <string name="call_log_missed_header">Missed calls only</string>
+    <string name="call_log_voicemail_header">Calls with voicemail only</string>
+    <string name="call_log_blacklist_header">Blocked calls only</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-en-rIN/strings.xml b/java/com/android/dialer/calllogutils/res/values-en-rIN/strings.xml
index 42e8923..7acf3f5 100644
--- a/java/com/android/dialer/calllogutils/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-en-rIN/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Voicemail</string>
   <string name="just_now">Just now</string>
   <string name="new_call_log_carrier_video">Operator video</string>
-  <string name="new_call_log_duo_video">Duo video</string>
   <string name="new_call_log_unknown">Unknown</string>
   <string name="new_call_log_secondary_blocked">Blocked</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 missed call from ^2</item>
-    <item quantity="other">^1 calls, the latest of which is a missed call from ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 answered call from ^2</item>
-    <item quantity="other">^1 calls, the latest of which is an answered call from ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 outgoing call to ^2</item>
-    <item quantity="other">^1 calls, the latest of which is an outgoing call to ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 blocked call from ^2</item>
-    <item quantity="other">^1 calls, the latest of which is a blocked call from ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">on ^1,
-    via ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-es-rMX/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-es-rMX/cm_strings.xml
new file mode 100644
index 0000000..a7964ab
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-es-rMX/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_incoming_header">Solo llamadas entrantes</string>
+    <string name="call_log_outgoing_header">Solo llamadas salientes</string>
+    <string name="call_log_missed_header">Solo llamadas perdidas</string>
+    <string name="call_log_voicemail_header">Solo llamadas con buzón de voz</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-es-rUS/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-es-rUS/cm_strings.xml
new file mode 100644
index 0000000..a40eece
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-es-rUS/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Todas las cuentas</string>
+    <string name="call_log_all_calls_header">Todas las llamadas</string>
+    <string name="call_log_incoming_header">Solo llamadas entrantes</string>
+    <string name="call_log_outgoing_header">Solo llamadas salientes</string>
+    <string name="call_log_missed_header">Solo llamadas perdidas</string>
+    <string name="call_log_voicemail_header">Solo llamadas con mensajes de voz</string>
+    <string name="call_log_blacklist_header">Sólo llamadas bloqueadas</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-es-rUS/strings.xml b/java/com/android/dialer/calllogutils/res/values-es-rUS/strings.xml
index 933e72f..04b71d7 100644
--- a/java/com/android/dialer/calllogutils/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-es-rUS/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Correo de voz</string>
   <string name="just_now">Recién</string>
   <string name="new_call_log_carrier_video">Video del proveedor</string>
-  <string name="new_call_log_duo_video">Video de Duo</string>
   <string name="new_call_log_unknown">Desconocido</string>
   <string name="new_call_log_secondary_blocked">Bloqueada</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 llamada perdida de ^2</item>
-    <item quantity="other">^1 llamadas. La última es una llamada perdida de ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 llamada respondida de ^2</item>
-    <item quantity="other">^1 llamadas. La última es una llamada respondida de ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 llamada saliente a ^2</item>
-    <item quantity="other">^1 llamadas. La última es una llamada saliente a ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 llamada bloqueada de ^2</item>
-    <item quantity="other">^1 llamadas. La última es una llamada bloqueada de ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">en ^1,
-    por medio de ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-es/strings.xml b/java/com/android/dialer/calllogutils/res/values-es/strings.xml
index c3b67e0..781e8ea 100644
--- a/java/com/android/dialer/calllogutils/res/values-es/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-es/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Buzón de voz</string>
   <string name="just_now">Ahora mismo</string>
   <string name="new_call_log_carrier_video">Vídeo a través del operador</string>
-  <string name="new_call_log_duo_video">Vídeo a través de Duo</string>
   <string name="new_call_log_unknown">Desconocido</string>
   <string name="new_call_log_secondary_blocked">Bloqueado</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 llamada perdida de ^2</item>
-    <item quantity="other">^1 llamadas; la última es una llamada perdida de ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 llamada respondida de ^2</item>
-    <item quantity="other">^1 llamadas; la última es una llamada respondida de ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 llamada realizada a ^2</item>
-    <item quantity="other">^1 llamadas; la última es una llamada realizada a ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 llamada bloqueada de ^2</item>
-    <item quantity="other">^1 llamadas; la última es una llamada bloqueada de ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">en ^1,
-    a través del ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-et/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-et/cm_strings.xml
new file mode 100644
index 0000000..9df6d8b
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-et/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Kõik kontod</string>
+    <string name="call_log_all_calls_header">Kõik kõned</string>
+    <string name="call_log_incoming_header">Ainult sissetulevad kõned</string>
+    <string name="call_log_outgoing_header">Ainult väljuvad kõned</string>
+    <string name="call_log_missed_header">Ainult vastamata kõned</string>
+    <string name="call_log_voicemail_header">Ainult kõnepostiga kõned</string>
+    <string name="call_log_blacklist_header">Ainult blokeeritud kõned</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-et/strings.xml b/java/com/android/dialer/calllogutils/res/values-et/strings.xml
index 81b325e..1e81ce2 100644
--- a/java/com/android/dialer/calllogutils/res/values-et/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-et/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Kõnepost</string>
   <string name="just_now">Äsja</string>
   <string name="new_call_log_carrier_video">Operaatori video</string>
-  <string name="new_call_log_duo_video">Duo video</string>
   <string name="new_call_log_unknown">Tundmatu</string>
   <string name="new_call_log_secondary_blocked">Blokeeritud</string>
   <string name="new_call_log_secondary_spam">Rämpskõned</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 vastamata kõne kasutajalt ^2</item>
-    <item quantity="other">^1 kõnet, viimane on vastamata kõne kasutajalt ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 vastatud kõne kasutajalt ^2</item>
-    <item quantity="other">^1 kõnet, viimane on vastatud kõne kasutajalt ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 väljuv kõne kasutajale ^2</item>
-    <item quantity="other">^1 kõnet, viimane on väljuv kõne kasutajale ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 blokeeritud kõne kasutajalt ^2</item>
-    <item quantity="other">^1 kõnet, viimane on blokeeritud kõne kasutajalt ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">kontol ^1,
-    numbri ^2 kaudu</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-eu/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-eu/cm_strings.xml
new file mode 100644
index 0000000..7671d07
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-eu/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Kontu guztiak</string>
+    <string name="call_log_all_calls_header">Dei guztiak</string>
+    <string name="call_log_incoming_header">Jasotako deiak besterik ez</string>
+    <string name="call_log_outgoing_header">Egindako deiak besterik ez</string>
+    <string name="call_log_missed_header">Galdutako deiak besterik ez</string>
+    <string name="call_log_voicemail_header">Erantzungailua duten deiak besterik ez</string>
+    <string name="call_log_blacklist_header">Blokeatutako deiak besterik ez</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-eu/strings.xml b/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
index e535914..e4e43e6 100644
--- a/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-eu/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Erantzungailua</string>
   <string name="just_now">Oraintxe</string>
   <string name="new_call_log_carrier_video">Operadorearen bideo-deia</string>
-  <string name="new_call_log_duo_video">Duo bideo-deia</string>
   <string name="new_call_log_unknown">Ezezaguna</string>
   <string name="new_call_log_secondary_blocked">Blokeatutakoak</string>
   <string name="new_call_log_secondary_spam">Spama</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 dei galdu (^2)</item>
-    <item quantity="other">^1 dei (azken deia ^2 erabiltzailearen dei galdua da)</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">Erantzundako ^1 dei (^2)</item>
-    <item quantity="other">^1 dei (azken deia ^2 erabiltzaileari erantzundako deia da)</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">Egindako ^1 dei (^2)</item>
-    <item quantity="other">^1 dei (azken deia ^2 erabiltzaileari egindako deia da)</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">Blokeatutako ^1 dei (^2)</item>
-    <item quantity="other">^1 dei (azken deia ^2 erabiltzailearen blokeatutako deia da)</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 txartela,
-    ^2 zenbakiaren bidez</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fa/strings.xml b/java/com/android/dialer/calllogutils/res/values-fa/strings.xml
index 4f8b794..647176f 100644
--- a/java/com/android/dialer/calllogutils/res/values-fa/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-fa/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">پست صوتی</string>
   <string name="just_now">لحظاتی پیش</string>
   <string name="new_call_log_carrier_video">تماس ویدیویی با شرکت مخابراتی</string>
-  <string name="new_call_log_duo_video">‏تماس ویدیویی Duo</string>
   <string name="new_call_log_unknown">نامشخص</string>
   <string name="new_call_log_secondary_blocked">مسدودشده</string>
   <string name="new_call_log_secondary_spam">هرزنامه</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 تماس، آخرین مورد تماس بی‌پاسخی از ^2 است</item>
-    <item quantity="other">^1 تماس، آخرین مورد تماس بی‌پاسخی از ^2 است</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 تماس، آخرین مورد تماس پاسخ داده شده‌ای از ^2 است</item>
-    <item quantity="other">^1 تماس، آخرین مورد تماس پاسخ داده شده‌ای از ^2 است</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 تماس، آخرین مورد تماسی خروجی با ^2 است</item>
-    <item quantity="other">^1 تماس، آخرین مورد تماسی خروجی با ^2 است</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 تماس، آخرین مورد تماس مسدودشده‌ای از ^2 است</item>
-    <item quantity="other">^1 تماس، آخرین مورد تماس مسدودشده‌ای از ^2 است</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">در ^1،
-    ازطریق ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1، ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1، ^2، ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fi/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-fi/cm_strings.xml
new file mode 100644
index 0000000..a6baab9
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-fi/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Kaikki tilit</string>
+    <string name="call_log_all_calls_header">Kaikki puhelut</string>
+    <string name="call_log_incoming_header">Vain saapuvat puhelut</string>
+    <string name="call_log_outgoing_header">Vain soitetut puhelut</string>
+    <string name="call_log_missed_header">Vain vastaamattomat puhelut</string>
+    <string name="call_log_voicemail_header">Vain vastaajaan menneet puhelut</string>
+    <string name="call_log_blacklist_header">Vain estetyt soittajat</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fi/strings.xml b/java/com/android/dialer/calllogutils/res/values-fi/strings.xml
index 9c6bd71..888b088 100644
--- a/java/com/android/dialer/calllogutils/res/values-fi/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-fi/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Vastaaja</string>
   <string name="just_now">Juuri äsken</string>
   <string name="new_call_log_carrier_video">Videopuhelu (puhelinliittymä)</string>
-  <string name="new_call_log_duo_video">Duo-videopuhelu</string>
   <string name="new_call_log_unknown">Tuntematon</string>
   <string name="new_call_log_secondary_blocked">Estetyt</string>
   <string name="new_call_log_secondary_spam">Häirikköpuhelut</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 vastaamaton puhelu, jonka soitti ^2</item>
-    <item quantity="other">^1 vastaamatonta puhelua, joista viimeisimmän soitti ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 vastattu puhelu, jonka soitti ^2</item>
-    <item quantity="other">^1 vastattua puhelua, joista viimeisimmän soitti ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 lähtevä puhelu, jonka vastaanottaja oli ^2</item>
-    <item quantity="other">^1 lähtevää puhelua, joista viimeisimmän vastaanottaja oli ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 estetty puhelu, jonka soitti ^2</item>
-    <item quantity="other">^1 estettyä puhelua, joista viimeisimmän soitti ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">tililtä ^1,
-numerosta ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fr-rCA/strings.xml b/java/com/android/dialer/calllogutils/res/values-fr-rCA/strings.xml
index bf96dec..1656500 100644
--- a/java/com/android/dialer/calllogutils/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-fr-rCA/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Messagerie vocale</string>
   <string name="just_now">À l\'instant</string>
   <string name="new_call_log_carrier_video">Appel vidéo par le fournisseur</string>
-  <string name="new_call_log_duo_video">Appel vidéo Duo</string>
   <string name="new_call_log_unknown">Inconnu</string>
   <string name="new_call_log_secondary_blocked">Appels bloqués</string>
   <string name="new_call_log_secondary_spam">Appels importuns</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 appel manqué de ^2</item>
-    <item quantity="other">^1 appels, dont le dernier est un appel manqué de ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 appel accepté de ^2</item>
-    <item quantity="other">^1 appels, dont le dernier est un appel accepté de ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 appel sortant à ^2</item>
-    <item quantity="other">^1 appels, dont le dernier est un appel sortant à ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 appel bloqué de ^2</item>
-    <item quantity="other">^1 appels, dont le dernier est un appel bloqué de ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">sur le compte ^1,
-    au numéro ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fr/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-fr/cm_strings.xml
new file mode 100644
index 0000000..fed778a
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-fr/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Tous les comptes</string>
+    <string name="call_log_all_calls_header">Tous les appels</string>
+    <string name="call_log_incoming_header">Appels entrants uniquement</string>
+    <string name="call_log_outgoing_header">Appels sortants uniquement</string>
+    <string name="call_log_missed_header">Appels manqués uniquement</string>
+    <string name="call_log_voicemail_header">Appels avec message vocal uniquement</string>
+    <string name="call_log_blacklist_header">Appels bloqués uniquement</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fr/strings.xml b/java/com/android/dialer/calllogutils/res/values-fr/strings.xml
index adb816c..d7ca2fd 100644
--- a/java/com/android/dialer/calllogutils/res/values-fr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-fr/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Messagerie vocale</string>
   <string name="just_now">À l\'instant</string>
   <string name="new_call_log_carrier_video">Vidéo via l\'opérateur</string>
-  <string name="new_call_log_duo_video">Vidéo Duo</string>
   <string name="new_call_log_unknown">Numéro inconnu</string>
   <string name="new_call_log_secondary_blocked">Appels bloqués</string>
   <string name="new_call_log_secondary_spam">Indésirables</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 appel manqué de ^2</item>
-    <item quantity="other">^1 appels manqués de ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 appel, le dernier provenait de ^2 et a bien été reçu</item>
-    <item quantity="other">^1 appels, le dernier provenait de ^2 et a bien été reçu</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 appel, le dernier est un appel sortant vers ^2</item>
-    <item quantity="other">^1 appels, le dernier est un appel sortant vers ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 appel, le dernier est un appel bloqué de ^2</item>
-    <item quantity="other">^1 appels, le dernier est un appel bloqué de ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">dans le compte ^1,
-    avec le numéro ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fur-rIT/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-fur-rIT/cm_strings.xml
new file mode 100644
index 0000000..5844320
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-fur-rIT/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Ducj i accounts</string>
+    <string name="call_log_all_calls_header">Dutis lis clamadis</string>
+    <string name="call_log_incoming_header">Dome clamadis in jentrade</string>
+    <string name="call_log_outgoing_header">Dome clamadis in jessude</string>
+    <string name="call_log_missed_header">Dome clamadis pierdudis</string>
+    <string name="call_log_voicemail_header">Dome clamadis cun segreterie</string>
+    <string name="call_log_blacklist_header">Dome clamadis blocadis</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-fy-rNL/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-fy-rNL/cm_strings.xml
new file mode 100644
index 0000000..9d14d3d
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-fy-rNL/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Alle accounts</string>
+    <string name="call_log_all_calls_header">Alle oproppen</string>
+    <string name="call_log_incoming_header">Allinnich ynkommende oproppen</string>
+    <string name="call_log_outgoing_header">Allinnich útgeande oproppen</string>
+    <string name="call_log_missed_header">Allinnich miste oproppen</string>
+    <string name="call_log_voicemail_header">Allinnich oproppen mei voicemail</string>
+    <string name="call_log_blacklist_header">Allinnich blokkearre oproppen</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-gd/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-gd/cm_strings.xml
new file mode 100644
index 0000000..f97d73e
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-gd/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">A h-uile cunntas</string>
+    <string name="call_log_all_calls_header">A h-uile gairm</string>
+    <string name="call_log_incoming_header">Gairmean a-steach a-mhàin</string>
+    <string name="call_log_outgoing_header">Gairmean a-mach a-mhàin</string>
+    <string name="call_log_missed_header">Gairmean a dh’fhalbh ort a-mhàin</string>
+    <string name="call_log_voicemail_header">Gairmean le post-gutha a-mhàin</string>
+    <string name="call_log_blacklist_header">Gairmean bacte a-mhàin</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-gl/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-gl/cm_strings.xml
new file mode 100644
index 0000000..e10105a
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-gl/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Todaslas contas</string>
+    <string name="call_log_all_calls_header">Todaslas chamadas</string>
+    <string name="call_log_incoming_header">Só chamadas recibidas</string>
+    <string name="call_log_outgoing_header">Só chamadas realizadas</string>
+    <string name="call_log_missed_header">Só chamadas perdidas</string>
+    <string name="call_log_voicemail_header">Só chamadas con correo de voz</string>
+    <string name="call_log_blacklist_header">Só chamadas bloqueadas</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-gl/strings.xml b/java/com/android/dialer/calllogutils/res/values-gl/strings.xml
index 7a6839f..bf1cd9d 100644
--- a/java/com/android/dialer/calllogutils/res/values-gl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-gl/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Correo de voz</string>
   <string name="just_now">Agora mesmo</string>
   <string name="new_call_log_carrier_video">Vídeo do operador</string>
-  <string name="new_call_log_duo_video">Vídeo de Duo</string>
   <string name="new_call_log_unknown">Descoñecidos</string>
   <string name="new_call_log_secondary_blocked">Bloqueada</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 chamada perdida de ^2</item>
-    <item quantity="other">^1 chamadas. A última é unha chamada perdida de ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 chamada respondida de ^2</item>
-    <item quantity="other">^1 chamadas. A última é unha chamada respondida de ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 chamada saínte a ^2</item>
-    <item quantity="other">^1 chamadas. A última é unha chamada saínte a ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 chamada bloqueada de ^2</item>
-    <item quantity="other">^1 chamadas. A última é unha chamada bloqueada de ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">en ^1,
-    a través do ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-gu/strings.xml b/java/com/android/dialer/calllogutils/res/values-gu/strings.xml
index f378de1..30427f6 100644
--- a/java/com/android/dialer/calllogutils/res/values-gu/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-gu/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">વૉઇસમેઇલ</string>
   <string name="just_now">હમણાં જ</string>
   <string name="new_call_log_carrier_video">કૅરિઅર વીડિઓ કૉલ</string>
-  <string name="new_call_log_duo_video">Duo વીડિઓ</string>
   <string name="new_call_log_unknown">અજ્ઞાત</string>
   <string name="new_call_log_secondary_blocked">બ્લૉક કરેલ</string>
   <string name="new_call_log_secondary_spam">સ્પામ</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 કૉલ, હાલમાં ^2નો ચૂકી ગયેલ કૉલ છે</item>
-    <item quantity="other">^1 કૉલ, હાલમાં ^2નો ચૂકી ગયેલ કૉલ છે</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 કૉલ, હાલમાં ^2નો જવાબી કૉલ છે</item>
-    <item quantity="other">^1 કૉલ, હાલમાં ^2નો જવાબી કૉલ છે</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 કૉલ, હાલમાં ^2 માટે આઉટગોઇંગ કૉલ છે</item>
-    <item quantity="other">^1 કૉલ, હાલમાં ^2 માટે આઉટગોઇંગ કૉલ છે</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 કૉલ, હાલમાં ^2નો બ્લૉક કરેલ કૉલ</item>
-    <item quantity="other">^1 કૉલ, હાલમાં ^2નો બ્લૉક કરેલ કૉલ</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 પર,
-    ^2 મારફતે</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-hi/strings.xml b/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
index 518c45a..77b8d21 100644
--- a/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-hi/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">वॉइसमेल</string>
   <string name="just_now">अभी-अभी</string>
   <string name="new_call_log_carrier_video">वाहक वीडियो</string>
-  <string name="new_call_log_duo_video">Duo वीडियो</string>
   <string name="new_call_log_unknown">अज्ञात</string>
   <string name="new_call_log_secondary_blocked">ब्लॉक किए गए</string>
   <string name="new_call_log_secondary_spam">स्पैम</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 कॉल, सबसे नया वाला ^2 का छूटा कॉल है</item>
-    <item quantity="other">^1 कॉल, सबसे नया वाला ^2 का छूटा कॉल है</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 कॉल, सबसे नया वाला ^2 का कॉल है, जिसका जवाब दिया गया था.</item>
-    <item quantity="other">^1 कॉल, सबसे नया वाला ^2 का कॉल है, जिसका जवाब दिया गया था.</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 कॉल, सबसे नया वाला ^2 को किया गया आउटगोइंग कॉल है</item>
-    <item quantity="other">^1 कॉल, सबसे नया वाला ^2 को किया गया आउटगोइंग कॉल है</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 कॉल, सबसे नया वाला ^2 का कॉल है, जिसे रोक दिया गया था</item>
-    <item quantity="other">^1 कॉल, सबसे नया वाला ^2 का कॉल है, जिसे रोक दिया गया था</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 पर,
-    ^2 के ज़रिए</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-hr/strings.xml b/java/com/android/dialer/calllogutils/res/values-hr/strings.xml
index 6e1b458..cade157 100644
--- a/java/com/android/dialer/calllogutils/res/values-hr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-hr/strings.xml
@@ -36,32 +36,7 @@
   <string name="voicemail_string">Govorna pošta</string>
   <string name="just_now">Upravo sad</string>
   <string name="new_call_log_carrier_video">Videopoziv putem operatera</string>
-  <string name="new_call_log_duo_video">Videopoziv u aplikaciji Duo</string>
   <string name="new_call_log_unknown">Nepoznato</string>
   <string name="new_call_log_secondary_blocked">Blokirano</string>
   <string name="new_call_log_secondary_spam">Neželjeni sadržaj</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 poziv, posljednji je propušteni poziv od kontakta ^2</item>
-    <item quantity="few">^1 poziva, posljednji je propušteni poziv od kontakta ^2</item>
-    <item quantity="other">^1 poziva, posljednji je propušteni poziv od kontakta ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 poziv, posljednji je odgovoreni poziv od kontakta ^2</item>
-    <item quantity="few">^1 poziva, posljednji je odgovoreni poziv od kontakta ^2</item>
-    <item quantity="other">^1 poziva, posljednji je odgovoreni poziv od kontakta ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 poziv, posljednji je odlazni poziv upućen kontaktu ^2</item>
-    <item quantity="few">^1 poziva, posljednji je odlazni poziv upućen kontaktu ^2</item>
-    <item quantity="other">^1 poziva, posljednji je odlazni poziv upućen kontaktu ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 poziv, posljednji je blokirani poziv od kontakta ^2</item>
-    <item quantity="few">^1 poziva, posljednji je blokirani poziv od kontakta ^2</item>
-    <item quantity="other">^1 poziva, posljednji je blokirani poziv od kontakta ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">na računu ^1,
-    putem broja ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-hu/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-hu/cm_strings.xml
new file mode 100644
index 0000000..1f15871
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-hu/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Az összes fiókhoz</string>
+    <string name="call_log_all_calls_header">Az összes híváshoz</string>
+    <string name="call_log_incoming_header">Csak bejövő hívások</string>
+    <string name="call_log_outgoing_header">Csak kimenő hívások</string>
+    <string name="call_log_missed_header">Csak nem fogadott hívások</string>
+    <string name="call_log_voicemail_header">Csak hangpostahívások</string>
+    <string name="call_log_blacklist_header">Csak a blokkolt hívásokhoz</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-hu/strings.xml b/java/com/android/dialer/calllogutils/res/values-hu/strings.xml
index 064ac78..561d84f 100644
--- a/java/com/android/dialer/calllogutils/res/values-hu/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-hu/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Hangposta</string>
   <string name="just_now">Éppen most</string>
   <string name="new_call_log_carrier_video">Szolgáltatói videohívás</string>
-  <string name="new_call_log_duo_video">Duo-videohívás</string>
   <string name="new_call_log_unknown">Ismeretlen</string>
   <string name="new_call_log_secondary_blocked">Letiltva</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 nem fogadott hívás a következőtől: ^2</item>
-    <item quantity="other">^1 hívás, a legutóbbi egy nem fogadott hívás a következőtől: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 fogadott hívás a következőtől: ^2</item>
-    <item quantity="other">^1 hívás, a legutóbbi egy fogadott hívás a következőtől: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 kimenő hívás a következőnek: ^2</item>
-    <item quantity="other">^1 hívás, a legutóbbi egy kimenő hívás a következőnek: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 letiltott hívás a következőtől: ^2</item>
-    <item quantity="other">^1 hívás, a legutóbbi egy letiltott hívás a következőtől: ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">fiók: ^1,
-    szám: ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-hy/strings.xml b/java/com/android/dialer/calllogutils/res/values-hy/strings.xml
index 3ad4d33..65a3995 100644
--- a/java/com/android/dialer/calllogutils/res/values-hy/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-hy/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Ձայնային փոստ</string>
   <string name="just_now">Հենց նոր</string>
   <string name="new_call_log_carrier_video">Տեսազանգ բջջային ցանցով</string>
-  <string name="new_call_log_duo_video">Duo տեսազանգ</string>
   <string name="new_call_log_unknown">Անհայտ</string>
   <string name="new_call_log_secondary_blocked">Արգելափակված</string>
   <string name="new_call_log_secondary_spam">Սպամ</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 բաց թողնված զանգ ^2-ից</item>
-    <item quantity="other">^1 զանգ, որոնցից վերջինը բաց թողնված զանգ է ^2-ից</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 ընդունված զանգ ^2-ից</item>
-    <item quantity="other">^1 զանգ, որոնցից վերջինը ընդունված զանգ է ^2-ից</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 ելքային զանգ ^2-ին</item>
-    <item quantity="other">^1 զանգ, որոնցից վերջինը ելքային զանգ է ^2-ին</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 արգելափակված զանգ ^2-ից</item>
-    <item quantity="other">^1 զանգ, որոնցից վերջինը արգելափակված զանգ է ^2-ից</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1, համարը՝ ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2:</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3:</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-in/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-in/cm_strings.xml
new file mode 100644
index 0000000..928816d
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-in/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Semua akun</string>
+    <string name="call_log_all_calls_header">Semua panggilan</string>
+    <string name="call_log_incoming_header">Hanya panggilan masuk</string>
+    <string name="call_log_outgoing_header">Hanya panggilan keluar</string>
+    <string name="call_log_missed_header">Hanya panggilan tidak terjawab</string>
+    <string name="call_log_voicemail_header">Hanya panggilan dengan pesan suara</string>
+    <string name="call_log_blacklist_header">Panggilan yang diblokir saja</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-in/strings.xml b/java/com/android/dialer/calllogutils/res/values-in/strings.xml
index 0bbc61a..d094f82 100644
--- a/java/com/android/dialer/calllogutils/res/values-in/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-in/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Pesan suara</string>
   <string name="just_now">Baru saja</string>
   <string name="new_call_log_carrier_video">Video operator</string>
-  <string name="new_call_log_duo_video">Video duo</string>
   <string name="new_call_log_unknown">Tidak dikenal</string>
   <string name="new_call_log_secondary_blocked">Diblokir</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 panggilan tak terjawab dari ^2</item>
-    <item quantity="other">^1 panggilan, yang terakhir panggilan tak terjawab dari ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 panggilan terjawab dari ^2</item>
-    <item quantity="other">^1 panggilan, yang terakhir panggilan terjawab dari ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 panggilan keluar ke ^2</item>
-    <item quantity="other">^1 panggilan, yang terakhir panggilan keluar ke ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 panggilan yang diblokir dari ^2</item>
-    <item quantity="other">^1 panggilan, yang terakhir panggilan diblokir dari ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">di ^1,
-    melalui ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-is/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-is/cm_strings.xml
new file mode 100644
index 0000000..c2239b7
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-is/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Allir aðgangar</string>
+    <string name="call_log_all_calls_header">Öll símtöl</string>
+    <string name="call_log_incoming_header">Aðeins innhringingar</string>
+    <string name="call_log_outgoing_header">Aðeins úthringingar</string>
+    <string name="call_log_missed_header">Aðeins símtöl sem misst var af</string>
+    <string name="call_log_voicemail_header">Aðeins hringingar með raddskilaboðum</string>
+    <string name="call_log_blacklist_header">Aðeins útilokuð símtöl</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-is/strings.xml b/java/com/android/dialer/calllogutils/res/values-is/strings.xml
index c1edcc9..54e65ab 100644
--- a/java/com/android/dialer/calllogutils/res/values-is/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-is/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Talhólf</string>
   <string name="just_now">Rétt í þessu</string>
   <string name="new_call_log_carrier_video">Myndsímtal símafyrirtækis</string>
-  <string name="new_call_log_duo_video">Myndsímtal Duo</string>
   <string name="new_call_log_unknown">Óþekkt</string>
   <string name="new_call_log_secondary_blocked">Á bannlista</string>
   <string name="new_call_log_secondary_spam">Ruslefni</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 símtal, það nýjasta er ósvarað símtal frá ^2</item>
-    <item quantity="other">^1 símtöl, það nýjasta er ósvarað símtal frá ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 símtal, það nýjasta er ósvarað símtal frá ^2</item>
-    <item quantity="other">^1 símtöl, það nýjasta er svarað símtal frá ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 símtal, það nýjasta er hringt símtal til ^2</item>
-    <item quantity="other">^1 símtöl, það nýjasta er hringt símtal til ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 símtal, það nýjasta er símtal frá ^2 sem lokað var á</item>
-    <item quantity="other">^1 símtöl, það nýjasta er símtal frá ^2 sem lokað var á</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">í ^1,
-    með ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-it/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-it/cm_strings.xml
new file mode 100644
index 0000000..eb3ad09
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-it/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Tutti gli account</string>
+    <string name="call_log_all_calls_header">Tutte le chiamate</string>
+    <string name="call_log_incoming_header">Solo chiamate in arrivo</string>
+    <string name="call_log_outgoing_header">Solo chiamate in uscita</string>
+    <string name="call_log_missed_header">Solo chiamate perse</string>
+    <string name="call_log_voicemail_header">Solo chiamate con segreteria</string>
+    <string name="call_log_blacklist_header">Solo chiamate bloccate</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-it/strings.xml b/java/com/android/dialer/calllogutils/res/values-it/strings.xml
index 1377c4e..e4a0ac3 100644
--- a/java/com/android/dialer/calllogutils/res/values-it/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-it/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Messaggi vocali</string>
   <string name="just_now">Adesso</string>
   <string name="new_call_log_carrier_video">Videochiamata operatore</string>
-  <string name="new_call_log_duo_video">Videochiamata Duo</string>
   <string name="new_call_log_unknown">Sconosciuto</string>
   <string name="new_call_log_secondary_blocked">Bloccate</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 chiamata senza risposta da ^2</item>
-    <item quantity="other">^1 chiamate, l\'ultima è una chiamata senza risposta da ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 risposta a una chiamata di ^2</item>
-    <item quantity="other">^1 chiamate, l\'ultima è una risposta a una chiamata di ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 chiamata in uscita a ^2</item>
-    <item quantity="other">^1 chiamate, l\'ultima è una chiamata in uscita a ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 chiamata bloccata da ^2</item>
-    <item quantity="other">^1 chiamate, l\'ultima è una chiamata bloccata da ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">su ^1,
-    tramite ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-iw/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-iw/cm_strings.xml
new file mode 100644
index 0000000..10e9311
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-iw/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">כל החשבונות</string>
+    <string name="call_log_all_calls_header">כל השיחות</string>
+    <string name="call_log_incoming_header">שיחות נכנסות בלבד</string>
+    <string name="call_log_outgoing_header">שיחות יוצאות בלבד</string>
+    <string name="call_log_missed_header">שיחות שלא נענו בלבד</string>
+    <string name="call_log_voicemail_header">שיחות עם דואר קולי בלבד</string>
+    <string name="call_log_blacklist_header">שיחות שנחסמו בלבד</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-iw/strings.xml b/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
index a827f69..7184024 100644
--- a/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-iw/strings.xml
@@ -38,36 +38,7 @@
   <string name="voicemail_string">דואר קולי</string>
   <string name="just_now">הרגע</string>
   <string name="new_call_log_carrier_video">שיחות וידאו דרך הספק הסלולרי</string>
-  <string name="new_call_log_duo_video">‏שיחות וידאו דרך Duo</string>
   <string name="new_call_log_unknown">לא ידוע</string>
   <string name="new_call_log_secondary_blocked">חסום</string>
   <string name="new_call_log_secondary_spam">ספאם</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">שיחה אחת (^1) לא נענתה. מקור השיחה: ^2</item>
-    <item quantity="two">^1 שיחות. השיחה האחרונה לא נענתה. מקור השיחה: ^2</item>
-    <item quantity="many">^1 שיחות. השיחה האחרונה לא נענתה. מקור השיחה: ^2</item>
-    <item quantity="other">^1 שיחות. השיחה האחרונה לא נענתה. מקור השיחה: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">שיחה אחת (^1) נענתה. מקור השיחה: ^2</item>
-    <item quantity="two">^1 שיחות. השיחה האחרונה נענתה. מקור השיחה: ^2</item>
-    <item quantity="many">^1 שיחות. השיחה האחרונה נענתה. מקור השיחה: ^2</item>
-    <item quantity="other">^1 שיחות. השיחה האחרונה נענתה. מקור השיחה: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">שיחה יוצאת אחת (^1). יעד השיחה: ^2</item>
-    <item quantity="two">^1 שיחות. השיחה האחרונה הייתה שיחה יוצאת. יעד השיחה: ^2</item>
-    <item quantity="many">^1 שיחות. השיחה האחרונה הייתה שיחה יוצאת. יעד השיחה: ^2</item>
-    <item quantity="other">^1 שיחות. השיחה האחרונה הייתה שיחה יוצאת. יעד השיחה: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">שיחה אחת (^1) נחסמה. מקור השיחה: ^2</item>
-    <item quantity="two">^1 שיחות. השיחה האחרונה נחסמה. מקור השיחה: ^2</item>
-    <item quantity="many">^1 שיחות. השיחה האחרונה נחסמה. מקור השיחה: ^2</item>
-    <item quantity="other">^1 שיחות. השיחה האחרונה נחסמה. מקור השיחה: ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">בחשבון ^1,
-    דרך ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ja/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-ja/cm_strings.xml
new file mode 100644
index 0000000..52eb94b
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-ja/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">すべてのアカウント</string>
+    <string name="call_log_all_calls_header">すべての通話</string>
+    <string name="call_log_incoming_header">着信のみ</string>
+    <string name="call_log_outgoing_header">発信のみ</string>
+    <string name="call_log_missed_header">不在着信のみ</string>
+    <string name="call_log_voicemail_header">ボイスメールのある着信のみ</string>
+    <string name="call_log_blacklist_header">着信拒否した通話のみ</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ja/strings.xml b/java/com/android/dialer/calllogutils/res/values-ja/strings.xml
index 6f4eb84..26f7ed7 100644
--- a/java/com/android/dialer/calllogutils/res/values-ja/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ja/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">ボイスメール</string>
   <string name="just_now">たった今</string>
   <string name="new_call_log_carrier_video">携帯通信会社経由のビデオ通話</string>
-  <string name="new_call_log_duo_video">Duo のビデオ通話</string>
   <string name="new_call_log_unknown">不明</string>
   <string name="new_call_log_secondary_blocked">ブロック中</string>
   <string name="new_call_log_secondary_spam">迷惑電話</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2 さんからの ^1 件の不在着信</item>
-    <item quantity="other">^1 件の通話、最後の通話は ^2 さんからの不在着信</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2 さんからの ^1 件の着信</item>
-    <item quantity="other">^1 件の通話、最後の通話は ^2 さんからの着信</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^2 さん宛の ^1 件の発信</item>
-    <item quantity="other">^1 件の通話、最後の通話は ^2 さん宛の発信</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2 さんから発信されてブロックされた ^1 件の着信</item>
-    <item quantity="other">^1 件の通話、最後の通話は ^2 さんから発信されてブロックされた着信</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 を使用、
-    ^2 経由</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1、^2。</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1、^2、^3。</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ka/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-ka/cm_strings.xml
new file mode 100644
index 0000000..b7cbc95
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-ka/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">ყველა ანგარიში</string>
+    <string name="call_log_all_calls_header">ყველა ზარი</string>
+    <string name="call_log_incoming_header">შემომავალი ზარები მხოლოდ</string>
+    <string name="call_log_outgoing_header">გამავალი ზარები მხოლოდ</string>
+    <string name="call_log_missed_header">გამოტოვებული ზარები მხოლოდ</string>
+    <string name="call_log_voicemail_header">ხმოვანი ფოსტით ზარები მხოლოდ</string>
+    <string name="call_log_blacklist_header">მხოლოდ შეზღუდული ზარები</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ka/strings.xml b/java/com/android/dialer/calllogutils/res/values-ka/strings.xml
index ce60cdc..8c5e7b4 100644
--- a/java/com/android/dialer/calllogutils/res/values-ka/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ka/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">ხმოვანი ფოსტა</string>
   <string name="just_now">ახლახან</string>
   <string name="new_call_log_carrier_video">ოპერატორის ვიდეო</string>
-  <string name="new_call_log_duo_video">Duo-ს ვიდეო</string>
   <string name="new_call_log_unknown">უცნობი</string>
   <string name="new_call_log_secondary_blocked">დაბლოკილი</string>
   <string name="new_call_log_secondary_spam">სპამი</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 გამოტოვებული ზარი ^2-ისგან</item>
-    <item quantity="other">^1 ზარი, ბოლო არის გამოტოვებული ზარი ^2-ისგან</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 პასუხგაცემული ზარი ^2-ისგან</item>
-    <item quantity="other">^1 ზარი, ბოლო არის პასუხგაცემული ზარი ^2-ისგან</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 გამავალი ზარი ^2-თან</item>
-    <item quantity="other">^1 ზარი, ბოლო არის გამავალი ზარი ^2-თან</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 დაბლოკილი ზარი ^2-ისგან</item>
-    <item quantity="other">^1 ზარი, ბოლო არის დაბლოკილი ზარი ^2-ისგან</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1-ზე,
-   ^2-ით</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-kab-rDZ/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-kab-rDZ/cm_strings.xml
new file mode 100644
index 0000000..0d9a449
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-kab-rDZ/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Akk imiḍanen</string>
+    <string name="call_log_all_calls_header">Akk isawalen</string>
+    <string name="call_log_incoming_header">Isawalen i d-ikecmen kan</string>
+    <string name="call_log_outgoing_header">Isawalen ufiɣen kan</string>
+    <string name="call_log_missed_header">Isawalen ittwazeglen kan</string>
+    <string name="call_log_voicemail_header">Isawalen s imesli kan</string>
+    <string name="call_log_blacklist_header">Isawalen iweḥlen kan</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-kk/strings.xml b/java/com/android/dialer/calllogutils/res/values-kk/strings.xml
index 7f16788..28c777e 100644
--- a/java/com/android/dialer/calllogutils/res/values-kk/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-kk/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Дауыстық хабар</string>
   <string name="just_now">Қазір ғана</string>
   <string name="new_call_log_carrier_video">Оператор бейне қоңырауы</string>
-  <string name="new_call_log_duo_video">Duo бейне қоңырауы</string>
   <string name="new_call_log_unknown">Белгісіз</string>
   <string name="new_call_log_secondary_blocked">Бөгелді</string>
   <string name="new_call_log_secondary_spam">Спам</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2 шалған ^1 қоңырау</item>
-    <item quantity="other">^1 қоңырау, соңғы ^2 шалған қоңырау қабылданбаған</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2 шалған ^1 қоңырауға жауап берілген</item>
-    <item quantity="other">^1 қоңырау, соңғы ^2 шалған қоңырауға жауап берілген</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 шығыс қоңырауын қабылдаушы: ^2</item>
-    <item quantity="other">^1 қоңырау, соңғы шығыс қоңырауын қабылдаушы: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2 шалған ^1 қоңырау бөгелген</item>
-    <item quantity="other">^1 қоңырау, соңғы ^2 шалған қоңырау бөгелген</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1,
-    нөмірі: ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-km/strings.xml b/java/com/android/dialer/calllogutils/res/values-km/strings.xml
index 9b0d08f..fe1719b 100644
--- a/java/com/android/dialer/calllogutils/res/values-km/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-km/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">សារ​ជា​សំឡេង</string>
   <string name="just_now">អម្បាញ់មិញ</string>
   <string name="new_call_log_carrier_video">វីដេអូ​តាម​ក្រុមហ៊ុន​សេវា​ទូរសព្ទ</string>
-  <string name="new_call_log_duo_video">វីដេអូ​តាម Duo</string>
   <string name="new_call_log_unknown">មិន​ស្គាល់</string>
   <string name="new_call_log_secondary_blocked">បាន​ទប់ស្កាត់</string>
   <string name="new_call_log_secondary_spam">សារ​ឥត​បាន​ការ</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">ខកខាន​ទទួលការហៅទូរសព្ទ ^1 ដងពី ^2</item>
-    <item quantity="other">ការហៅ​ទូរសព្ទ ^1 ដង ចុងក្រោយ​បំផុត គឺ​ការហៅ​ដែល​ខកខាន​ពី ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">ការហៅ​​បាន​ឆ្លើយ ^1 ដងពី ^2</item>
-    <item quantity="other">ការហៅ​ទូរសព្ទ ^1 ដង ចុងក្រោយ​បំផុត គឺ​ការហៅ​ដែល​បាន​ឆ្លើយ​ពី ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">ការហៅ​ចេញ ^1 ទៅ​កាន់ ^2</item>
-    <item quantity="other">ការហៅ​ទូរសព្ទ ^1 ដង ចុងក្រោយ​បំផុត គឺ​ជា​ការហៅ​ចេញ​ទៅ​កាន់ ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">ការហៅ​បាន​ទប់ស្កាត់ ^1 ដងពី ^2</item>
-    <item quantity="other">ការហៅ​ទូរសព្ទ ^1 ដង ចុងក្រោយ​បំផុត គឺ​ជា​ការហៅ​ដែល​បាន​ទប់ស្កាត់​ពី ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">នៅ​លើ ^1
-    តាមរយៈ ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2 ។</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3 ។</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-kn/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-kn/cm_strings.xml
new file mode 100644
index 0000000..527b4a0
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-kn/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">ಎಲ್ಲಾ ಖಾತೆಗಳು</string>
+    <string name="call_log_all_calls_header">ಎಲ್ಲಾ ಕರೆಗಳು</string>
+    <string name="call_log_incoming_header">ಆಗಮಿತ ಕರೆಗಳು ಮಾತ್ರ</string>
+    <string name="call_log_outgoing_header">ನಿರ್ಗಮಿತ ಕರೆಗಳು ಮಾತ್ರ</string>
+    <string name="call_log_missed_header">ತಪ್ಪಿದ ಕರೆಗಳು ಮಾತ್ರ</string>
+    <string name="call_log_voicemail_header">ಧ್ವನಿ ಅಂಚೆ ಕರೆಗಳು ಮಾತ್ರ</string>
+    <string name="call_log_blacklist_header">ನಿರ್ಬಂಧಿತ ಕರೆಗಳು ಮಾತ್ರ</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-kn/strings.xml b/java/com/android/dialer/calllogutils/res/values-kn/strings.xml
index 6202957..e1800a6 100644
--- a/java/com/android/dialer/calllogutils/res/values-kn/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-kn/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">ಧ್ವನಿಮೇಲ್</string>
   <string name="just_now">ಇದೀಗ</string>
   <string name="new_call_log_carrier_video">ವಾಹಕ ವೀಡಿಯೊ</string>
-  <string name="new_call_log_duo_video">Duo ವೀಡಿಯೊ</string>
   <string name="new_call_log_unknown">ಅಪರಿಚಿತ</string>
   <string name="new_call_log_secondary_blocked">ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</string>
   <string name="new_call_log_secondary_spam">ಸ್ಪ್ಯಾಮ್</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 ಕರೆಗಳು, ^2 ಅವರಿಂದ ಇತ್ತೀಚಿನ ಮಿಸ್ಡ್‌ ಕಾಲ್‌</item>
-    <item quantity="other">^1 ಕರೆಗಳು, ^2 ಅವರಿಂದ ಇತ್ತೀಚಿನ ಮಿಸ್ಡ್‌ ಕಾಲ್‌</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 ಕರೆಗಳು, ^2 ಅವರಿಂದ ಇತ್ತೀಚೆಗೆ ಉತ್ತರಿಸಲಾಗಿದೆ</item>
-    <item quantity="other">^1 ಕರೆಗಳು, ^2 ಅವರಿಂದ ಇತ್ತೀಚೆಗೆ ಉತ್ತರಿಸಲಾಗಿದೆ</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 ಕರೆಗಳು, ^2 ಅವರಿಗೆ ಇತ್ತೀಚೆಗೆ ಹೋರಹೋಗುವ ಕರೆಯಾಗಿವೆ</item>
-    <item quantity="other">^1 ಕರೆಗಳು, ^2 ಅವರಿಗೆ ಇತ್ತೀಚೆಗೆ ಹೋರಹೋಗುವ ಕರೆಯಾಗಿವೆ</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 ಕರೆಗಳು, ^2 ಅವರಿಂದ ಇತ್ತೀಚೆಗೆ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</item>
-    <item quantity="other">^1 ಕರೆಗಳು, ^2 ಅವರಿಂದ ಇತ್ತೀಚೆಗೆ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 ರಲ್ಲಿ, ^2 ಮೂಲಕ</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ko/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-ko/cm_strings.xml
new file mode 100644
index 0000000..840d945
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-ko/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">모든 계정</string>
+    <string name="call_log_all_calls_header">모든 통화</string>
+    <string name="call_log_incoming_header">수신 전화만</string>
+    <string name="call_log_outgoing_header">발신 전화만</string>
+    <string name="call_log_missed_header">부재중 전화만</string>
+    <string name="call_log_voicemail_header">음성사서함 메시지만</string>
+    <string name="call_log_blacklist_header">차단된 통화만</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ko/strings.xml b/java/com/android/dialer/calllogutils/res/values-ko/strings.xml
index df4f0c4..2ceda2b 100644
--- a/java/com/android/dialer/calllogutils/res/values-ko/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ko/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">음성사서함</string>
   <string name="just_now">조금 전</string>
   <string name="new_call_log_carrier_video">이동통신사 동영상</string>
-  <string name="new_call_log_duo_video">Duo 동영상</string>
   <string name="new_call_log_unknown">알 수 없음</string>
   <string name="new_call_log_secondary_blocked">차단됨</string>
   <string name="new_call_log_secondary_spam">스팸</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2님의 부재중 전화가 ^1건 있습니다</item>
-    <item quantity="other">전화 ^1건 중 최근 전화는 ^2님의 부재중 전화입니다</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2님이 걸어서 받은 전화가 ^1건 있습니다</item>
-    <item quantity="other">전화 ^1건 중 최근 전화는 ^2님이 걸어서 받은 전화입니다</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^2님에게 건 전화가 ^1건 있습니다</item>
-    <item quantity="other">전화 ^1건 중 최근 전화는 ^2님에게 건 전화입니다</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2님이 걸었지만 차단된 전화가 ^1건 있습니다</item>
-    <item quantity="other">전화 ^1건 중 최근 전화는 ^2님이 걸었지만 차단된 전화입니다</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">전화 계정: ^1,
-    전화번호: ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ky/strings.xml b/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
index 9b9b7c5..40e180d 100644
--- a/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ky/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Үн почтасы</string>
   <string name="just_now">Азыр эле</string>
   <string name="new_call_log_carrier_video">Видео чалуу</string>
-  <string name="new_call_log_duo_video">Duo видео чалуусу</string>
   <string name="new_call_log_unknown">Белгисиз</string>
   <string name="new_call_log_secondary_blocked">Бөгөттөлдү</string>
   <string name="new_call_log_secondary_spam">Спам</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2 абонентинен ^1 чалууга жооп берилген жок</item>
-    <item quantity="other">^1 чалуу, акыркы жолу ^2 чалганда жооп берилген жок</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2 абонентинен ^1 чалууга жооп берилди</item>
-    <item quantity="other">^1 чалуу, акыркы жооп берилген чалуу: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 чыгуучу чалуу: ^2</item>
-    <item quantity="other">^1 чалуу, акыркы чыгуучу чалуу: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 бөгөттөлгөн чалуу: ^2</item>
-    <item quantity="other">^1 чалуу, акыркы бөгөттөлгөн чалуу: ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 боюнча,
-    ^2 аркылуу</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-lo/strings.xml b/java/com/android/dialer/calllogutils/res/values-lo/strings.xml
index 7bba2e7..cb52346 100644
--- a/java/com/android/dialer/calllogutils/res/values-lo/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-lo/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">ຂໍ້ຄວາມສຽງ</string>
   <string name="just_now">ຕອນນີ້</string>
   <string name="new_call_log_carrier_video">ວິດີໂອຜູ້ໃຫ້ບໍລິການ</string>
-  <string name="new_call_log_duo_video">ວິດີໂອ Duo</string>
   <string name="new_call_log_unknown">ບໍ່ຮູ້ຈັກ</string>
   <string name="new_call_log_secondary_blocked">ບລັອກແລ້ວ</string>
   <string name="new_call_log_secondary_spam">ສະແປມ</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 ສາຍບໍ່ໄດ້ຮັບຈາກ ^2</item>
-    <item quantity="other">^1 ສາຍ, ສາຍຫຼ້າສຸດແມ່ນສາຍບໍ່ໄດ້ຮັບຈາກ ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 ສາຍທີ່ຮັບຈາກ ^2</item>
-    <item quantity="other">^1 ສາຍ, ສາຍຫຼ້າສຸດແມ່ນສາຍທີ່ຮັບຈາກ ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 ສາຍໂທອອກຫາ ^2</item>
-    <item quantity="other">^1 ສາຍ, ສາຍຫຼ້າສຸດແມ່ນສາຍທີ່ໂທອອກຫາ ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 ສາຍທີ່ບລັອກຈາກ ^2</item>
-    <item quantity="other">^1 ສາຍ, ສາຍຫຼ້າສຸດແມ່ນສາຍທີ່ບລັອກຈາກ ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">ຢູ່ ^1,
-    ຜ່ານ ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-lt/strings.xml b/java/com/android/dialer/calllogutils/res/values-lt/strings.xml
index 2dd55cc..7389232 100644
--- a/java/com/android/dialer/calllogutils/res/values-lt/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-lt/strings.xml
@@ -38,36 +38,7 @@
   <string name="voicemail_string">Balso paštas</string>
   <string name="just_now">Ką tik</string>
   <string name="new_call_log_carrier_video">Operatoriaus vaizdo skambučiai</string>
-  <string name="new_call_log_duo_video">„Duo“ vaizdo skambučiai</string>
   <string name="new_call_log_unknown">Nežinoma</string>
   <string name="new_call_log_secondary_blocked">Užblokuota</string>
   <string name="new_call_log_secondary_spam">Šlamštas</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 skambutis, paskutinis yra praleistas skambutis nuo ^2</item>
-    <item quantity="few">^1 skambučiai, paskutinis yra praleistas skambutis nuo ^2</item>
-    <item quantity="many">^1 skambučio, paskutinis yra praleistas skambutis nuo ^2</item>
-    <item quantity="other">^1 skambučių, paskutinis yra praleistas skambutis nuo ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 skambutis, paskutinis yra atsakytas skambutis nuo ^2</item>
-    <item quantity="few">^1 skambučiai, paskutinis yra atsakytas skambutis nuo ^2</item>
-    <item quantity="many">^1 skambučio, paskutinis yra atsakytas skambutis nuo ^2</item>
-    <item quantity="other">^1 skambučių, paskutinis yra atsakytas skambutis nuo ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 skambutis, paskutinis yra siunčiamasis skambutis, skirtas ^2</item>
-    <item quantity="few">^1 skambučiai, paskutinis yra siunčiamasis skambutis, skirtas ^2</item>
-    <item quantity="many">^1 skambučio, paskutinis yra siunčiamasis skambutis, skirtas ^2</item>
-    <item quantity="other">^1 skambučių, paskutinis yra siunčiamasis skambutis, skirtas ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 skambutis, paskutinis yra užblokuotas skambutis nuo ^2</item>
-    <item quantity="few">^1 skambučiai, paskutinis yra užblokuotas skambutis nuo ^2</item>
-    <item quantity="many">^1 skambučio, paskutinis yra užblokuotas skambutis nuo ^2</item>
-    <item quantity="other">^1 skambučių, paskutinis yra užblokuotas skambutis nuo ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1,
-    numeriu ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-lv/strings.xml b/java/com/android/dialer/calllogutils/res/values-lv/strings.xml
index 0c32f9b..197332a 100644
--- a/java/com/android/dialer/calllogutils/res/values-lv/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-lv/strings.xml
@@ -36,32 +36,7 @@
   <string name="voicemail_string">Balss pasts</string>
   <string name="just_now">Tikko</string>
   <string name="new_call_log_carrier_video">Mobilo sakaru operatora video</string>
-  <string name="new_call_log_duo_video">Duo video</string>
   <string name="new_call_log_unknown">Nezināms</string>
   <string name="new_call_log_secondary_blocked">Bloķēti</string>
   <string name="new_call_log_secondary_spam">Nevēlami zvani</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="zero">^1 zvanu; pēdējais zvans ir neatbildēts zvans no lietotāja ^2</item>
-    <item quantity="one">^1 zvans; pēdējais zvans ir neatbildēts zvans no lietotāja ^2</item>
-    <item quantity="other">^1 zvani; pēdējais zvans ir neatbildēts zvans no lietotāja ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="zero">^1 zvanu; pēdējais zvans ir atbildēts zvans no lietotāja ^2</item>
-    <item quantity="one">^1 zvans; pēdējais zvans ir atbildēts zvans no lietotāja ^2</item>
-    <item quantity="other">^1 zvani; pēdējais zvans ir atbildēts zvans no lietotāja ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="zero">^1 zvanu; pēdējais zvans ir izejošs zvans lietotājam ^2</item>
-    <item quantity="one">^1 zvans; pēdējais zvans ir izejošs zvans lietotājam ^2</item>
-    <item quantity="other">^1 zvani; pēdējais zvans ir izejošs zvans lietotājam ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="zero">^1 zvanu; pēdējais zvans ir bloķēts zvans no lietotāja ^2</item>
-    <item quantity="one">^1 zvans; pēdējais zvans ir bloķēts zvans no lietotāja ^2</item>
-    <item quantity="other">^1 zvani; pēdējais zvans ir bloķēts zvans no lietotāja ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">kontā ^1,
-    izmantojot numuru ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-mk/strings.xml b/java/com/android/dialer/calllogutils/res/values-mk/strings.xml
index bce7164..d8eca21 100644
--- a/java/com/android/dialer/calllogutils/res/values-mk/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-mk/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Говорна пошта</string>
   <string name="just_now">Пред малку</string>
   <string name="new_call_log_carrier_video">Видеоповик преку оператор</string>
-  <string name="new_call_log_duo_video">Видеоповик на Duo</string>
   <string name="new_call_log_unknown">Непознато</string>
   <string name="new_call_log_secondary_blocked">Блокирано</string>
   <string name="new_call_log_secondary_spam">Спам</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 повик. Последниот е пропуштен повик од ^2</item>
-    <item quantity="other">^1 повици. Последниот е пропуштен повик од ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 повик. Последниот е одговорен повик од ^2</item>
-    <item quantity="other">^1 повици. Последниот е одговорен повик од ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 повик. Последниот е појдовен повик до ^2</item>
-    <item quantity="other">^1 повици. Последниот е појдовен повик до ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 повик. Последниот е блокиран повик од ^2</item>
-    <item quantity="other">^1 повици. Последниот е блокиран повик од ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">на ^1,
-    на ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ml/strings.xml b/java/com/android/dialer/calllogutils/res/values-ml/strings.xml
index 4131c11..6d19b8d 100644
--- a/java/com/android/dialer/calllogutils/res/values-ml/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ml/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">വോയ്‌സ്‌മെയിൽ</string>
   <string name="just_now">ഇപ്പോൾ</string>
   <string name="new_call_log_carrier_video">കാരിയർ വീഡിയോ</string>
-  <string name="new_call_log_duo_video">Duo വീഡിയോ</string>
   <string name="new_call_log_unknown">അജ്ഞാതം</string>
   <string name="new_call_log_secondary_blocked">ബ്ലോക്ക് ചെയ്‌തു</string>
   <string name="new_call_log_secondary_spam">സ്‌പാം</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2-ൽ നിന്ന് ^1 മിസ്‌ഡ് കോൾ</item>
-    <item quantity="other">^1 കോളുകൾ, ഏറ്റവും പുതിയത് ^2-ൽ നിന്നുള്ള മിസ്‌ഡ് കോളാണ്</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2-ൽ നിന്ന് ^1 മറുപടി നൽകിയ കോൾ</item>
-    <item quantity="other">^1 കോളുകൾ, ഏറ്റവും പുതിയത് ^2-ൽ നിന്ന് മറുപടി നൽകിയ കോളാണ്</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^2-ലേക്ക് ^1 ഔട്ട്‌ഗോയിംഗ് കോൾ</item>
-    <item quantity="other">^1 കോളുകൾ, ഏറ്റവും പുതിയത് ^2-ലേക്കുള്ള ഔട്ട്‌ഗോയിംഗ് കോളാണ്</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2-ൽ നിന്നുള്ള ^1 ബ്ലോക്ക് ചെയ്‌ത കോൾ</item>
-    <item quantity="other">^1 കോളുകൾ, ഏറ്റവും പുതിയത് ^2-ൽ നിന്നുള്ള ബ്ലോക്ക് ചെയ്‌ത കോൾ</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 നമ്പർ വഴി,
-    ^2 അക്കൗണ്ടിൽ</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-mn/strings.xml b/java/com/android/dialer/calllogutils/res/values-mn/strings.xml
index b725550..0073be2 100644
--- a/java/com/android/dialer/calllogutils/res/values-mn/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-mn/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Дуут шуудан</string>
   <string name="just_now">Дөнгөж сая</string>
   <string name="new_call_log_carrier_video">Үүрэн холбооны компанийн видео</string>
-  <string name="new_call_log_duo_video">Duo видео</string>
   <string name="new_call_log_unknown">Тодорхойгүй</string>
   <string name="new_call_log_secondary_blocked">Хориглосон</string>
   <string name="new_call_log_secondary_spam">Спам</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2-с ирсэн аваагүй ^1 дуудлага</item>
-    <item quantity="other">^1 дуудлага, хамгийн сүүлийнх нь ^2-с ирсэн аваагүй дуудлага</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2-с ирсэн авсан ^1 дуудлага</item>
-    <item quantity="other">^1 дуудлага, хамгийн сүүлийнх нь ^2-с ирсэн авсан дуудлага</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^2 руу залгасан ^1 дуудлага</item>
-    <item quantity="other">^1 дуудлага, хамгийн сүүлийнх нь ^2 руу залгасан дуудлага</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2-с ирсэн блоклосон ^1 дуудлага</item>
-    <item quantity="other">^1 дуудлага, хамгийн сүүлийнх нь ^2-с ирсэн блоклосон дуудлага</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 дээр ^2-р</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-mr/strings.xml b/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
index caad700..1d9c2c9 100644
--- a/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-mr/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">व्हॉइसमेल</string>
   <string name="just_now">आत्ताच</string>
   <string name="new_call_log_carrier_video">वाहक व्हिडिओ</string>
-  <string name="new_call_log_duo_video">Duo व्हिडिओ</string>
   <string name="new_call_log_unknown">अज्ञात</string>
   <string name="new_call_log_secondary_blocked">ब्लॉक केला</string>
   <string name="new_call_log_secondary_spam">स्पॅम</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 कॉल, सर्वात नवीन ^2 चा सुटलेला कॉल आहे</item>
-    <item quantity="other">^1 कॉल, सर्वात नवीन ^2 चा सुटलेला कॉल आहे</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 कॉल, सर्वात नवीन ^2 चा उत्तर दिलेला कॉल</item>
-    <item quantity="other">^1 कॉल, सर्वात नवीन ^2 चा उत्तर दिलेला कॉल</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 कॉल, सर्वात नवीन ^2 ला केलेला आउटगोइंग कॉल</item>
-    <item quantity="other">^1 कॉल, सर्वात नवीन ^2 ला केलेला आउटगोइंग कॉल</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 कॉल, सर्वात नवीन ^2 चा ब्लॉक केलेला कॉल</item>
-    <item quantity="other">^1 कॉल, आत्ता ^2 चे ब्लॉक केलेले कॉल</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 वर, ^2 द्वारे</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ms/strings.xml b/java/com/android/dialer/calllogutils/res/values-ms/strings.xml
index c56cfe6..0c274be 100644
--- a/java/com/android/dialer/calllogutils/res/values-ms/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ms/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Mel suara</string>
   <string name="just_now">Sebentar tadi</string>
   <string name="new_call_log_carrier_video">Video pembawa</string>
-  <string name="new_call_log_duo_video">Video Duo</string>
   <string name="new_call_log_unknown">Tidak diketahui</string>
   <string name="new_call_log_secondary_blocked">Disekat</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 panggilan terlepas daripada ^2</item>
-    <item quantity="other">^1 panggilan, yang terbaharu ialah panggilan terlepas daripada ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 panggilan dijawab daripada ^2</item>
-    <item quantity="other">^1 panggilan, yang terbaharu ialah panggilan dijawab daripada ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 panggilan keluar kepada ^2</item>
-    <item quantity="other">^1 panggilan, yang terbaharu ialah panggilan keluar kepada ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 panggilan disekat daripada ^2</item>
-    <item quantity="other">^1 panggilan, yang terbaharu ialah panggilan disekat daripada ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">pada ^1, melalui ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-my/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-my/cm_strings.xml
new file mode 100644
index 0000000..5b03d63
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-my/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_incoming_header">အဝင်ဖုန်းများသာ</string>
+    <string name="call_log_outgoing_header">အထွက်ဖုန်းများသာ</string>
+    <string name="call_log_missed_header">လွတ်သွား‌သောဖုန်းများသာ</string>
+    <string name="call_log_voicemail_header">အသံဖိုင်ပါသောဖုန်းများသာ</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-my/strings.xml b/java/com/android/dialer/calllogutils/res/values-my/strings.xml
index 700ee23..a5b2219 100644
--- a/java/com/android/dialer/calllogutils/res/values-my/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-my/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">အသံမေးလ်</string>
   <string name="just_now">ယခုလေးတင်</string>
   <string name="new_call_log_carrier_video">ဖုန်းလိုင်း ဗီဒီယို</string>
-  <string name="new_call_log_duo_video">Duo ဗီဒီယို</string>
   <string name="new_call_log_unknown">အမည်မသိ</string>
   <string name="new_call_log_secondary_blocked">ပိတ်ထားသည်များ</string>
   <string name="new_call_log_secondary_spam">စပမ်း</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2 ထံမှ လွတ်သွား ခေါ်ဆိုမှု ^1 ခု</item>
-    <item quantity="other">ခေါ်ဆိုမှု ^1 ခု၊ နောက်ဆုံးတစ်ခုသည် ^2 ထံမှ လွတ်သွားသောခေါ်ဆိုမှုဖြစ်သည်</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2 ၏ ခေါ်ဆိုမှုကို ဖြေကြားမှု ^1 ခု</item>
-    <item quantity="other">ခေါ်ဆိုမှု ^1 ခု၊ နောက်ဆုံးတစ်ခုသည် ^2 ၏ ခေါ်ဆိုချက်ကို ဖြေကြားထားခြင်း ဖြစ်သည်</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^2 သို့ အထွက်ခေါ်ဆိုမှု ^1 ခု</item>
-    <item quantity="other">ခေါ်ဆိုမှု ^1 ခု၊ နောက်ဆုံးတစ်ခုသည် ^2 သို့ အထွက်ခေါ်ဆိုမှုဖြစ်သည်</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2 ထံမှ ပိတ်ထားသော ခေါ်ဆိုမှု ^1 ခု</item>
-    <item quantity="other">ခေါ်ဆိုမှု ^1ခု၊ နောက်ဆုံးတစ်ခုသည် ^2 ထံမှ ပိတ်ထားသောခေါ်ဆိုမှု ဖြစ်သည်</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 တွင်၊ ^2 မှတစ်ဆင့်</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1၊ ^2။</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1၊ ^2၊ ^3။</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-nb/strings.xml b/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
index f5a74f5..0a0df0f 100644
--- a/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-nb/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Talepost</string>
   <string name="just_now">Nå nettopp</string>
   <string name="new_call_log_carrier_video">Video via mobiloperatør</string>
-  <string name="new_call_log_duo_video">Video via Duo</string>
   <string name="new_call_log_unknown">Ukjent</string>
   <string name="new_call_log_secondary_blocked">Blokkert</string>
   <string name="new_call_log_secondary_spam">Nettsøppel</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 tapt anrop fra ^2</item>
-    <item quantity="other">^1 anrop, det nyeste er et tapt anrop fra ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 besvart anrop fra ^2</item>
-    <item quantity="other">^1 anrop, det nyeste er et besvart anrop fra ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 utgående anrop til ^2</item>
-    <item quantity="other">^1 anrop, det nyeste er et utgående anrop til ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 blokkert anrop fra ^2</item>
-    <item quantity="other">^1 anrop, det nyeste er et blokkert anrop fra ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">på ^1 via ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ne/strings.xml b/java/com/android/dialer/calllogutils/res/values-ne/strings.xml
index 29395cb..0b52d2e 100644
--- a/java/com/android/dialer/calllogutils/res/values-ne/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ne/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">भ्वाइस मेल</string>
   <string name="just_now">भर्खरै</string>
   <string name="new_call_log_carrier_video">सेवा प्रदायकको भिडियो कल</string>
-  <string name="new_call_log_duo_video">Duo को भिडियो कल</string>
   <string name="new_call_log_unknown">अज्ञात</string>
   <string name="new_call_log_secondary_blocked">रोक लगाइएको नम्बर</string>
   <string name="new_call_log_secondary_spam">स्प्याम</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2 को ^1 छुटेको कल</item>
-    <item quantity="other">^1 कलहरू, पछिल्लो कल ^2 को छुटेको कल हो</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2 को जवाफस्वरूप दिइएको ^1 कल</item>
-    <item quantity="other">^1 कलहरू, पछिल्लो कल ^2 को जवाफस्वरूप दिइएको कल हो</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one"> ^2 ले गरेको ^1 बहिर्गमन कल</item>
-    <item quantity="other">^1 कलहरू, पछिल्लो कल ^2 ले गरेको बहिर्गमन कल हो</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2 ले रोक लगाएको ^1 कल</item>
-    <item quantity="other">^1 कलहरू, पछिल्लो कल ^2 ले रोक लगाएको कल हो</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 मा, ^2 मार्फत</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2।</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3।</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-nl/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-nl/cm_strings.xml
new file mode 100644
index 0000000..aea6fd6
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-nl/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Alle accounts</string>
+    <string name="call_log_all_calls_header">Alle oproepen</string>
+    <string name="call_log_incoming_header">Alleen inkomende oproepen</string>
+    <string name="call_log_outgoing_header">Alleen uitgaande oproepen</string>
+    <string name="call_log_missed_header">Alleen gemiste oproepen</string>
+    <string name="call_log_voicemail_header">Alleen oproepen met voicemail</string>
+    <string name="call_log_blacklist_header">Alleen geblokkeerde oproepen</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-nl/strings.xml b/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
index 089e611..9dfd23f 100644
--- a/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-nl/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Voicemail</string>
   <string name="just_now">Zojuist</string>
   <string name="new_call_log_carrier_video">Video via provider</string>
-  <string name="new_call_log_duo_video">Duo-video</string>
   <string name="new_call_log_unknown">Onbekend</string>
   <string name="new_call_log_secondary_blocked">Geblokkeerd</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 gemiste oproep van ^2</item>
-    <item quantity="other">^1 oproepen, de laatste is een gemiste oproep van ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 beantwoorde oproep van ^2</item>
-    <item quantity="other">^1 oproepen, de laatste is een beantwoorde oproep van ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 uitgaande oproep naar ^2</item>
-    <item quantity="other">^1 oproepen, de laatste is een uitgaande oproep naar ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 geblokkeerde oproep van ^2</item>
-    <item quantity="other">^1 oproepen, de laatste is een geblokkeerde oproep van ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">op ^1,
-    via ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-no/strings.xml b/java/com/android/dialer/calllogutils/res/values-no/strings.xml
index f5a74f5..0a0df0f 100644
--- a/java/com/android/dialer/calllogutils/res/values-no/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-no/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Talepost</string>
   <string name="just_now">Nå nettopp</string>
   <string name="new_call_log_carrier_video">Video via mobiloperatør</string>
-  <string name="new_call_log_duo_video">Video via Duo</string>
   <string name="new_call_log_unknown">Ukjent</string>
   <string name="new_call_log_secondary_blocked">Blokkert</string>
   <string name="new_call_log_secondary_spam">Nettsøppel</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 tapt anrop fra ^2</item>
-    <item quantity="other">^1 anrop, det nyeste er et tapt anrop fra ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 besvart anrop fra ^2</item>
-    <item quantity="other">^1 anrop, det nyeste er et besvart anrop fra ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 utgående anrop til ^2</item>
-    <item quantity="other">^1 anrop, det nyeste er et utgående anrop til ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 blokkert anrop fra ^2</item>
-    <item quantity="other">^1 anrop, det nyeste er et blokkert anrop fra ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">på ^1 via ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pa/strings.xml b/java/com/android/dialer/calllogutils/res/values-pa/strings.xml
index e7cc5db..8dcf947 100644
--- a/java/com/android/dialer/calllogutils/res/values-pa/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pa/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">ਵੌਇਸਮੇਲ</string>
   <string name="just_now">ਹੁਣੇ ਹੀ</string>
   <string name="new_call_log_carrier_video">ਕੈਰੀਅਰ ਵੀਡੀਓ ਕਾਲ</string>
-  <string name="new_call_log_duo_video">Duo ਵੀਡੀਓ ਕਾਲ</string>
   <string name="new_call_log_unknown">ਅਗਿਆਤ</string>
   <string name="new_call_log_secondary_blocked">ਬਲਾਕ ਕੀਤਾ ਗਿਆ</string>
   <string name="new_call_log_secondary_spam">ਸਪੈਮ</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 ਕਾਲ, ਨਵੀਨਤਮ ਵਾਲੀ ^2 ਦੀ ਇੱਕ ਖੁੰਝੀ ਹੋਈ ਕਾਲ ਹੈ</item>
-    <item quantity="other">^1 ਕਾਲਾਂ, ਨਵੀਨਤਮ ਵਾਲੀ ^2 ਦੀ ਇੱਕ ਖੁੰਝੀ ਹੋਈ ਕਾਲ ਹੈ</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 ਕਾਲ, ਨਵੀਨਤਮ ਵਾਲੀ ^2 ਦੀ ਇੱਕ ਕਾਲ ਦਾ ਜਵਾਬ ਦਿੱਤਾ ਗਿਆ</item>
-    <item quantity="other">^1 ਕਾਲਾਂ, ਨਵੀਨਤਮ ਵਾਲੀ ^2 ਦੀ ਇੱਕ ਕਾਲ ਦਾ ਜਵਾਬ ਦਿੱਤਾ ਗਿਆ</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 ਕਾਲ, ਨਵੀਨਤਮ ਵਾਲੀ ^2 ਨੂੰ ਇੱਕ ਆਊਟਗੋਇੰਗ ਕਾਲ ਕੀਤੀ ਗਈ</item>
-    <item quantity="other">^1 ਕਾਲਾਂ, ਨਵੀਨਤਮ ਵਾਲੀ ^2 ਨੂੰ ਇੱਕ ਆਊਟਗੋਇੰਗ ਕਾਲ ਕੀਤੀ ਗਈ</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 ਕਾਲ, ਨਵੀਨਤਮ ਵਾਲੀ ^2 ਦੀ ਇੱਕ ਕਾਲ ਬਲਾਕ ਕੀਤੀ ਗਈ</item>
-    <item quantity="other">^1 ਕਾਲਾਂ, ਨਵੀਨਤਮ ਵਾਲੀ ^2 ਦੀ ਇੱਕ ਕਾਲ ਬਲਾਕ ਕੀਤੀ ਗਈ</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 \'ਤੇ, ^2 ਰਾਹੀਂ</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2।</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pl/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-pl/cm_strings.xml
new file mode 100644
index 0000000..64bc86f
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-pl/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Wszystkie konta</string>
+    <string name="call_log_all_calls_header">Wszystkie połączenia</string>
+    <string name="call_log_incoming_header">Tylko połączenia przychodzące</string>
+    <string name="call_log_outgoing_header">Tylko połączenia wychodzące</string>
+    <string name="call_log_missed_header">Tylko połączenia nieodebrane</string>
+    <string name="call_log_voicemail_header">Tylko połączenia z pocztą głosową</string>
+    <string name="call_log_blacklist_header">Tylko zablokowani rozmówcy</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pl/strings.xml b/java/com/android/dialer/calllogutils/res/values-pl/strings.xml
index 4f237ec..1b3304b 100644
--- a/java/com/android/dialer/calllogutils/res/values-pl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pl/strings.xml
@@ -38,35 +38,7 @@
   <string name="voicemail_string">Poczta głosowa</string>
   <string name="just_now">Przed chwilą</string>
   <string name="new_call_log_carrier_video">Rozmowa wideo w sieci operatora</string>
-  <string name="new_call_log_duo_video">Rozmowa wideo w Duo</string>
   <string name="new_call_log_unknown">Nieznany</string>
   <string name="new_call_log_secondary_blocked">Zablokowany</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 nieodebrane połączenie od: ^2</item>
-    <item quantity="few">^1 nieodebrane połączenia od: ^2</item>
-    <item quantity="many">^1 nieodebranych połączeń od: ^2</item>
-    <item quantity="other">^1 nieodebranego połączenia od: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 odebrane połączenie od: ^2</item>
-    <item quantity="few">^1 połączenia – ostatnie to odebrane połączenie od: ^2</item>
-    <item quantity="many">^1 połączeń – ostatnie to odebrane połączenie od: ^2</item>
-    <item quantity="other">^1 połączenia – ostatnie to odebrane połączenie od: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 połączenie wychodzące z: ^2</item>
-    <item quantity="few">^1 połączenia – ostatnie to połączenie wychodzące z: ^2</item>
-    <item quantity="many">^1 połączeń – ostatnie to połączenie wychodzące z: ^2</item>
-    <item quantity="other">^1 połączenia – ostatnie to połączenie wychodzące z: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 zablokowane połączenie od: ^2</item>
-    <item quantity="few">^1 połączenia – ostatnie to zablokowane połączenie od: ^2</item>
-    <item quantity="many">^1 połączeń – ostatnie to zablokowane połączenie od: ^2</item>
-    <item quantity="other">^1 połączenia – ostatnie to zablokowane połączenie od: ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">na koncie ^1, przez ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt-rBR/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-pt-rBR/cm_strings.xml
new file mode 100644
index 0000000..293956f
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-pt-rBR/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Todas as contas</string>
+    <string name="call_log_all_calls_header">Todas as chamadas</string>
+    <string name="call_log_incoming_header">Apenas chamadas recebidas</string>
+    <string name="call_log_outgoing_header">Apenas chamadas efetuadas</string>
+    <string name="call_log_missed_header">Apenas chamadas perdidas</string>
+    <string name="call_log_voicemail_header">Apenas chamadas com correio de voz</string>
+    <string name="call_log_blacklist_header">Somente chamadas bloqueadas</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
index a308729..ce7f824 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt-rBR/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Correio de voz</string>
   <string name="just_now">Agora</string>
   <string name="new_call_log_carrier_video">Videochamadas via operadora</string>
-  <string name="new_call_log_duo_video">Videochamadas do Duo</string>
   <string name="new_call_log_unknown">Desconhecidos</string>
   <string name="new_call_log_secondary_blocked">Bloqueados</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 chamada perdida de ^2</item>
-    <item quantity="other">^1 chamadas, 1 perdida de ^2 (a última)</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 chamada atendida de ^2</item>
-    <item quantity="other">^1 chamadas, 1 atendida de ^2 (a última)</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 chamada realizada para ^2</item>
-    <item quantity="other">^1 chamadas, 1 realizada para ^2 (a última)</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 chamada bloqueada de ^2</item>
-    <item quantity="other">^1 chamadas, 1 bloqueada de ^2 (a última)</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">em ^1, pelo número ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt-rPT/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-pt-rPT/cm_strings.xml
new file mode 100644
index 0000000..9133bef
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-pt-rPT/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Todas as contas</string>
+    <string name="call_log_all_calls_header">Todas as chamadas</string>
+    <string name="call_log_incoming_header">Apenas chamadas recebidas</string>
+    <string name="call_log_outgoing_header">Apenas chamadas efetuadas</string>
+    <string name="call_log_missed_header">Apenas chamadas não atendidas</string>
+    <string name="call_log_voicemail_header">Apenas chamadas com correio de voz</string>
+    <string name="call_log_blacklist_header">Apenas chamadas bloqueadas</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
index a5caba3..2e14f0c 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt-rPT/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Correio de voz</string>
   <string name="just_now">Agora mesmo</string>
   <string name="new_call_log_carrier_video">Vídeo do operador</string>
-  <string name="new_call_log_duo_video">Vídeo do Duo</string>
   <string name="new_call_log_unknown">Desconhecido</string>
   <string name="new_call_log_secondary_blocked">Bloqueado</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 chamada não atendida de ^2</item>
-    <item quantity="other">^1 chamadas, a mais recente é uma chamada não atendida de ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 chamada atendida de ^2</item>
-    <item quantity="other">^1 chamadas, a mais recente é uma chamada atendida de ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 chamada efetuada para ^2</item>
-    <item quantity="other">^1 chamadas, a mais recente é uma chamada efetuada para ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 chamada bloqueada de ^2</item>
-    <item quantity="other">^1 chamadas, a mais recente é uma chamada bloqueada de ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">em ^1,
-    através de ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-pt/strings.xml b/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
index a308729..ce7f824 100644
--- a/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-pt/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Correio de voz</string>
   <string name="just_now">Agora</string>
   <string name="new_call_log_carrier_video">Videochamadas via operadora</string>
-  <string name="new_call_log_duo_video">Videochamadas do Duo</string>
   <string name="new_call_log_unknown">Desconhecidos</string>
   <string name="new_call_log_secondary_blocked">Bloqueados</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 chamada perdida de ^2</item>
-    <item quantity="other">^1 chamadas, 1 perdida de ^2 (a última)</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 chamada atendida de ^2</item>
-    <item quantity="other">^1 chamadas, 1 atendida de ^2 (a última)</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 chamada realizada para ^2</item>
-    <item quantity="other">^1 chamadas, 1 realizada para ^2 (a última)</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 chamada bloqueada de ^2</item>
-    <item quantity="other">^1 chamadas, 1 bloqueada de ^2 (a última)</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">em ^1, pelo número ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ro/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-ro/cm_strings.xml
new file mode 100644
index 0000000..5aae232
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-ro/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Toate conturile</string>
+    <string name="call_log_all_calls_header">Toate apelurile</string>
+    <string name="call_log_incoming_header">Numai apelurile primite</string>
+    <string name="call_log_outgoing_header">Numai apelurile efectuate</string>
+    <string name="call_log_missed_header">Numai apelurile nepreluate</string>
+    <string name="call_log_voicemail_header">Numai apelurile cu mesaje vocale</string>
+    <string name="call_log_blacklist_header">Doar apeluri blocate</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ro/strings.xml b/java/com/android/dialer/calllogutils/res/values-ro/strings.xml
index a09a3fb..5d76d02 100644
--- a/java/com/android/dialer/calllogutils/res/values-ro/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ro/strings.xml
@@ -36,32 +36,7 @@
   <string name="voicemail_string">Mesagerie vocală</string>
   <string name="just_now">Adineauri</string>
   <string name="new_call_log_carrier_video">Apel video prin operator</string>
-  <string name="new_call_log_duo_video">Apel video Duo</string>
   <string name="new_call_log_unknown">Necunoscut</string>
   <string name="new_call_log_secondary_blocked">Blocate</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 apel nepreluat de la ^2</item>
-    <item quantity="few">^1 apeluri. Ultimul este un apel nepreluat de la ^2</item>
-    <item quantity="other">^1 de apeluri. Ultimul este un apel nepreluat de la ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 apel preluat de la ^2</item>
-    <item quantity="few">^1 apeluri. Ultimul este un apel preluat de la ^2</item>
-    <item quantity="other">^1 de apeluri. Ultimul este un apel preluat de la ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 apel efectuat către ^2</item>
-    <item quantity="few">^1 apeluri. Ultimul este un apel efectuat către ^2</item>
-    <item quantity="other">^1 de apeluri. Ultimul este un apel efectuat către ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 apel blocat de la ^2</item>
-    <item quantity="few">^1 apeluri. Ultimul este un apel blocat de la ^2</item>
-    <item quantity="other">^1 de apeluri. Ultimul este un apel blocat de la ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">în ^1,
-    prin ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ru/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-ru/cm_strings.xml
new file mode 100644
index 0000000..64a4ff3
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-ru/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Все SIM-карты</string>
+    <string name="call_log_all_calls_header">Все вызовы</string>
+    <string name="call_log_incoming_header">Только входящие вызовы</string>
+    <string name="call_log_outgoing_header">Только исходящие вызовы</string>
+    <string name="call_log_missed_header">Только пропущенные вызовы</string>
+    <string name="call_log_voicemail_header">Только вызовы с голосовой почтой</string>
+    <string name="call_log_blacklist_header">Только заблокированные вызовы</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ru/strings.xml b/java/com/android/dialer/calllogutils/res/values-ru/strings.xml
index f54150f..9b31cb5 100644
--- a/java/com/android/dialer/calllogutils/res/values-ru/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ru/strings.xml
@@ -38,36 +38,7 @@
   <string name="voicemail_string">Голосовая почта</string>
   <string name="just_now">Только что</string>
   <string name="new_call_log_carrier_video">Видеовызов</string>
-  <string name="new_call_log_duo_video">Видеовызов с помощью Duo</string>
   <string name="new_call_log_unknown">Неизвестный номер</string>
   <string name="new_call_log_secondary_blocked">Заблокированные</string>
   <string name="new_call_log_secondary_spam">Спам</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 вызов. Последний пропущенный – от абонента ^2.</item>
-    <item quantity="few">^1 вызова. Последний пропущенный – от абонента ^2.</item>
-    <item quantity="many">^1 вызовов. Последний пропущенный – от абонента ^2.</item>
-    <item quantity="other">^1 вызова. Последний пропущенный – от абонента ^2.</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 вызов. Последний принятый – от абонента ^2.</item>
-    <item quantity="few">^1 вызова. Последний принятый – от абонента ^2.</item>
-    <item quantity="many">^1 вызовов. Последний принятый – от абонента ^2.</item>
-    <item quantity="other">^1 вызова. Последний принятый – от абонента ^2.</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 вызов. Последний исходящий – абоненту ^2.</item>
-    <item quantity="few">^1 вызова. Последний исходящий – абоненту ^2.</item>
-    <item quantity="many">^1 вызовов. Последний исходящий – абоненту ^2.</item>
-    <item quantity="other">^1 вызова. Последний исходящий – абоненту ^2.</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 вызов. Последний заблокированный – от абонента ^2.</item>
-    <item quantity="few">^1 вызова. Последний заблокированный – от абонента ^2.</item>
-    <item quantity="many">^1 вызовов. Последний заблокированный – от абонента ^2.</item>
-    <item quantity="other">^1 вызова. Последний заблокированный – от абонента ^2.</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1,
-    номер ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-si/strings.xml b/java/com/android/dialer/calllogutils/res/values-si/strings.xml
index 7f66477..61801aa 100644
--- a/java/com/android/dialer/calllogutils/res/values-si/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-si/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">හඬ තැපෑල</string>
   <string name="just_now">මේ දැන්</string>
   <string name="new_call_log_carrier_video">වාහක වීඩියෝව</string>
-  <string name="new_call_log_duo_video">Duo වීඩියෝව</string>
   <string name="new_call_log_unknown">නොදන්නා</string>
   <string name="new_call_log_secondary_blocked">අවහිර කරන ලදි</string>
   <string name="new_call_log_secondary_spam">අයාචිත</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">ඇමතුම් ^1කි, නවතම එක වන්නේ ^2 වෙතින් මගහැරුණු ඇමතුමකි</item>
-    <item quantity="other">ඇමතුම් ^1කි, නවතම එක වන්නේ ^2 වෙතින් මගහැරුණු ඇමතුමකි</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">ඇමතුම් ^1කි, නවතම එක වන්නේ ^2 වෙතින් පිළිතුරු දුන් ඇමතුමකි</item>
-    <item quantity="other">ඇමතුම් ^1කි, නවතම එක වන්නේ ^2 වෙතින් පිළිතුරු දුන් ඇමතුමකි</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">ඇමතුම් ^1කි, නවතම එක වන්නේ ^2 වෙත යන ඇමතුමකි</item>
-    <item quantity="other">ඇමතුම් ^1කි, නවතම එක වන්නේ ^2 වෙත යන ඇමතුමකි</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">ඇමතුම් ^1කි, නවතම එක වන්නේ ^2 වෙතින් අවහිර කළ ඇමතුමකි</item>
-    <item quantity="other">ඇමතුම් ^1කි, නවතම එක වන්නේ ^2 වෙතින් අවහිර කළ ඇමතුමකි</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 මත, ^2 හරහා</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sk/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-sk/cm_strings.xml
new file mode 100644
index 0000000..09004eb
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-sk/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Všetky účty</string>
+    <string name="call_log_all_calls_header">Všetky hovory</string>
+    <string name="call_log_incoming_header">Iba prichádzajúce hovory</string>
+    <string name="call_log_outgoing_header">Iba odchádzajúce hovory</string>
+    <string name="call_log_missed_header">Iba zmeškané hovory</string>
+    <string name="call_log_voicemail_header">Iba hovory s odkazovou schránkou</string>
+    <string name="call_log_blacklist_header">Iba blokované hovory</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sk/strings.xml b/java/com/android/dialer/calllogutils/res/values-sk/strings.xml
index 9d24c86..38a59aa 100644
--- a/java/com/android/dialer/calllogutils/res/values-sk/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sk/strings.xml
@@ -38,36 +38,7 @@
   <string name="voicemail_string">Hlasová schránka</string>
   <string name="just_now">Teraz</string>
   <string name="new_call_log_carrier_video">Video operátora</string>
-  <string name="new_call_log_duo_video">Video služby Duo</string>
   <string name="new_call_log_unknown">Neznáme</string>
   <string name="new_call_log_secondary_blocked">Blokované</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 zmeškaný hovor od kontaktu ^2</item>
-    <item quantity="few">^1 hovory, posledný je zmeškaný hovor od kontaktu ^2</item>
-    <item quantity="many">^1 calls, the latest is a missed call from ^2</item>
-    <item quantity="other">^1 hovorov, posledný je zmeškaný hovor od kontaktu ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 prijatý hovor od kontaktu ^2</item>
-    <item quantity="few">^1 hovory, posledný je prijatý hovor od kontaktu ^2</item>
-    <item quantity="many">^1 calls, the latest is an answered call from ^2</item>
-    <item quantity="other">^1 hovorov, posledný je prijatý hovor od kontaktu ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 odchádzajúci hovor s kontaktom ^2</item>
-    <item quantity="few">^1 hovory, posledný je odchádzajúci hovor s kontaktom ^2</item>
-    <item quantity="many">^1 calls, the latest is an outgoing call to ^2</item>
-    <item quantity="other">^1 hovorov, posledný je odchádzajúci hovor s kontaktom ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 blokovaný hovor od kontaktu ^2</item>
-    <item quantity="few">^1 hovory, posledný je blokovaný hovor od kontaktu ^2</item>
-    <item quantity="many">^1 calls, the latest is a blocked call from ^2</item>
-    <item quantity="other">^1 hovorov, posledný je blokovaný hovor od kontaktu ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">v účte ^1,
-    prostredníctvom čísla ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sl/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-sl/cm_strings.xml
new file mode 100644
index 0000000..9650124
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-sl/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Vsi računi</string>
+    <string name="call_log_all_calls_header">Vsi klici</string>
+    <string name="call_log_incoming_header">Samo dohodni klici</string>
+    <string name="call_log_outgoing_header">Samo odhodni klici</string>
+    <string name="call_log_missed_header">Samo zgrešeni klici</string>
+    <string name="call_log_voicemail_header">Samo klici z glasovno pošto</string>
+    <string name="call_log_blacklist_header">Samo blokirani klici</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sl/strings.xml b/java/com/android/dialer/calllogutils/res/values-sl/strings.xml
index d1a22d1..abd3c4f 100644
--- a/java/com/android/dialer/calllogutils/res/values-sl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sl/strings.xml
@@ -38,36 +38,7 @@
   <string name="voicemail_string">Odzivnik</string>
   <string name="just_now">Pravkar</string>
   <string name="new_call_log_carrier_video">Videoklic prek operaterja</string>
-  <string name="new_call_log_duo_video">Videoklic Duo</string>
   <string name="new_call_log_unknown">Neznano</string>
   <string name="new_call_log_secondary_blocked">Blokirano</string>
   <string name="new_call_log_secondary_spam">Neželeno</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 klic, zadnji od njih je neodgovorjen dohodni klic stika ^2</item>
-    <item quantity="two">^1 klica, zadnji od njih je neodgovorjen dohodni klic stika ^2</item>
-    <item quantity="few">^1 klici, zadnji od njih je neodgovorjen dohodni klic stika ^2</item>
-    <item quantity="other">^1 klicev, zadnji od njih je neodgovorjen dohodni klic stika ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 klic, zadnji od njih je sprejet dohodni klic stika ^2</item>
-    <item quantity="two">^1 klica, zadnji od njih je sprejet dohodni klic stika ^2</item>
-    <item quantity="few">^1 klici, zadnji od njih je sprejet dohodni klic stika ^2</item>
-    <item quantity="other">^1 klicev, zadnji od njih je sprejet dohodni klic stika ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 klic, zadnji od njih je odhodni klic stika ^2</item>
-    <item quantity="two">^1 klica, zadnji od njih je odhodni klic stika ^2</item>
-    <item quantity="few">^1 klici, zadnji od njih je odhodni klic stika ^2</item>
-    <item quantity="other">^1 klicev, zadnji od njih je odhodni klic stika ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 klic, zadnji od njih je blokiran dohodni klic stika ^2</item>
-    <item quantity="two">^1 klica, zadnji od njih je blokiran dohodni klic stika ^2</item>
-    <item quantity="few">^1 klici, zadnji od njih je blokiran dohodni klic stika ^2</item>
-    <item quantity="other">^1 klicev, zadnji od njih je blokiran dohodni klic stika ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">v računu ^1,
-    prek številke ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sq/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-sq/cm_strings.xml
new file mode 100644
index 0000000..345fa62
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-sq/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Të gjitha llogaritë</string>
+    <string name="call_log_all_calls_header">Të gjitha thirrjet</string>
+    <string name="call_log_incoming_header">Vetëm thirrjet hyrëse</string>
+    <string name="call_log_outgoing_header">Vetëm thirrjet dalëse</string>
+    <string name="call_log_missed_header">Vetëm thirrjet e humbura</string>
+    <string name="call_log_voicemail_header">Vetëm thirrjet me mesazh zanor</string>
+    <string name="call_log_blacklist_header">Vetëm thirrjet e bllokuara</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sq/strings.xml b/java/com/android/dialer/calllogutils/res/values-sq/strings.xml
index b4dc544..4db7762 100644
--- a/java/com/android/dialer/calllogutils/res/values-sq/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sq/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Posta zanore</string>
   <string name="just_now">Pikërisht tani</string>
   <string name="new_call_log_carrier_video">Video e operatorit celular</string>
-  <string name="new_call_log_duo_video">Video e Duo</string>
   <string name="new_call_log_unknown">I panjohur</string>
   <string name="new_call_log_secondary_blocked">Bllokuar</string>
   <string name="new_call_log_secondary_spam">Postë e bezdisshme</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 telefonatë e humbur nga ^2</item>
-    <item quantity="other">^1 telefonata, e fundit është një telefonatë e humbur nga ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 telefonatë e përgjigjur nga ^2</item>
-    <item quantity="other">^1 telefonata, e fundit është një telefonatë e përgjigjur nga ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 telefonatë dalëse për ^2</item>
-    <item quantity="other">^1 telefonata, e fundit është një telefonatë dalëse për ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 telefonatë e bllokuar nga ^2</item>
-    <item quantity="other">^1 telefonata, e fundit është një telefonatë e bllokuar nga ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">në ^1, nëpërmjet ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sr/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-sr/cm_strings.xml
new file mode 100644
index 0000000..6f000ab
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-sr/cm_strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Сви налози</string>
+    <string name="call_log_all_calls_header">Сви позиви</string>
+    <string name="call_log_blacklist_header">Само блокирани позиви</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sr/strings.xml b/java/com/android/dialer/calllogutils/res/values-sr/strings.xml
index 471deb5..3d9e390 100644
--- a/java/com/android/dialer/calllogutils/res/values-sr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sr/strings.xml
@@ -36,32 +36,7 @@
   <string name="voicemail_string">Говорна пошта</string>
   <string name="just_now">Малопре</string>
   <string name="new_call_log_carrier_video">Видео позив преко оператера</string>
-  <string name="new_call_log_duo_video">Duo видео позив</string>
   <string name="new_call_log_unknown">Непознати бројеви</string>
   <string name="new_call_log_secondary_blocked">Блокирани</string>
   <string name="new_call_log_secondary_spam">Непожељно</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 позив, последњи је пропуштени позив од: ^2</item>
-    <item quantity="few">^1 позива, последњи је пропуштени позив од: ^2</item>
-    <item quantity="other">^1 позива, последњи је пропуштени позив од: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 позив, последњи је прихваћени позив од: ^2</item>
-    <item quantity="few">^1 позива, последњи је прихваћени позив од: ^2</item>
-    <item quantity="other">^1 позива, последњи је прихваћени позив од: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 позив, последњи је одлазни позив за: ^2</item>
-    <item quantity="few">^1 позива, последњи је одлазни позив за: ^2</item>
-    <item quantity="other">^1 позива, последњи је одлазни позив за: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 позив, последњи је блокирани позив од: ^2</item>
-    <item quantity="few">^1 позива, последњи је блокирани позив од: ^2</item>
-    <item quantity="other">^1 позива, последњи је блокирани позив од: ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">на ^1,
-    преко ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sv/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-sv/cm_strings.xml
new file mode 100644
index 0000000..f2f139d
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-sv/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Alla konton</string>
+    <string name="call_log_all_calls_header">Alla samtal</string>
+    <string name="call_log_incoming_header">Endast inkommande samtal</string>
+    <string name="call_log_outgoing_header">Endast utgående samtal</string>
+    <string name="call_log_missed_header">Endast missade samtal</string>
+    <string name="call_log_voicemail_header">Endast samtal med röstmeddelande</string>
+    <string name="call_log_blacklist_header">Endast blockerade samtal</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sv/strings.xml b/java/com/android/dialer/calllogutils/res/values-sv/strings.xml
index a18d008..d095d84 100644
--- a/java/com/android/dialer/calllogutils/res/values-sv/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sv/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Röstbrevlåda</string>
   <string name="just_now">Nyss</string>
   <string name="new_call_log_carrier_video">Operatörsvideo</string>
-  <string name="new_call_log_duo_video">Duo-video</string>
   <string name="new_call_log_unknown">Okänd</string>
   <string name="new_call_log_secondary_blocked">Blockerad</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 missat samtal från ^2</item>
-    <item quantity="other">^1 samtal, det senaste är ett missat samtal från ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 besvarat samtal från ^2</item>
-    <item quantity="other">^1 samtal, det senaste är ett besvarat samtal från ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 utgående samtal till ^2</item>
-    <item quantity="other">^1 samtal, det senaste är ett utgående samtal till ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 blockerat samtal från ^2</item>
-    <item quantity="other">^1 samtal, det senaste är ett blockerat samtal från ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">med ^1,
-    på ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-sw/strings.xml b/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
index 39b7d83..60e8599 100644
--- a/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-sw/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Ujumbe wa sauti</string>
   <string name="just_now">Sasa hivi</string>
   <string name="new_call_log_carrier_video">Video kupitia mtoa huduma</string>
-  <string name="new_call_log_duo_video">Simu ya video ya Duo</string>
   <string name="new_call_log_unknown">Haijulikani</string>
   <string name="new_call_log_secondary_blocked">Zilizozuiwa</string>
   <string name="new_call_log_secondary_spam">Taka</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">Simu ^1 kutoka kwa ^2 haikujibiwa</item>
-    <item quantity="other">Simu ^1, ya hivi punde ni simu kutoka kwa ^2 ambayo haikujibiwa</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">Simu ^1 kutoka kwa ^2 ilijibiwa</item>
-    <item quantity="other">Simu ^1, ya hivi punde ni simu kutoka kwa ^2 ambayo ilijibiwa</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">Simu ^1 aliyopigiwa ^2</item>
-    <item quantity="other">Simu ^1, ya hivi punde ni simu aliyopigiwa ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">Simu ^1 iliyozuiwa kutoka kwa ^2</item>
-    <item quantity="other">Simu ^1, ya hivi punde ni simu kutoka kwa ^2 ambayo imezuiwa</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">kwenye ^1, kupitia ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ta/strings.xml b/java/com/android/dialer/calllogutils/res/values-ta/strings.xml
index ceb5070..d73934c 100644
--- a/java/com/android/dialer/calllogutils/res/values-ta/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ta/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">குரலஞ்சல்</string>
   <string name="just_now">சற்றுமுன்</string>
   <string name="new_call_log_carrier_video">தொலைத்தொடர்பு நிறுவன வீடியோ</string>
-  <string name="new_call_log_duo_video">Duo வீடியோ</string>
   <string name="new_call_log_unknown">தெரியாத எண்கள்</string>
   <string name="new_call_log_secondary_blocked">தடுக்கப்பட்டது</string>
   <string name="new_call_log_secondary_spam">ஸ்பேம்</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2 இடமிருந்து வந்த ^1 தவறிய அழைப்பு</item>
-    <item quantity="other">^1 தவறிய அழைப்புகள், ^2 இடமிருந்து வந்த சமீபத்திய தவறிய அழைப்பு</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2 இடமிருந்து வந்த ^1 பதிலளித்த அழைப்பு</item>
-    <item quantity="other">^1 அழைப்புகள், சமீபத்திய அழைப்பானது ^2 இடமிருந்து வந்த பதிலளித்த அழைப்பு</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^2க்கான ^1 வெளிச்செல்லும் அழைப்பு</item>
-    <item quantity="other">^1 அழைப்புகள், சமீபத்திய அழைப்பானது ^2க்கான வெளிச்செல்லும் அழைப்பு</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2 இடமிருந்து வந்த ^1 தடுக்கப்பட்ட அழைப்பு</item>
-    <item quantity="other">^1 அழைப்புகள், சமீபத்திய அழைப்பானது ^2 இடமிருந்து தடுக்கப்பட்ட அழைப்பு</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 இல்,
-    ^2 மூலம்</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-te/strings.xml b/java/com/android/dialer/calllogutils/res/values-te/strings.xml
index c451432..af50af7 100644
--- a/java/com/android/dialer/calllogutils/res/values-te/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-te/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">వాయిస్ మెయిల్</string>
   <string name="just_now">ఇప్పుడే</string>
   <string name="new_call_log_carrier_video">క్యారియర్ వీడియో</string>
-  <string name="new_call_log_duo_video">Duo వీడియో</string>
   <string name="new_call_log_unknown">తెలియదు</string>
   <string name="new_call_log_secondary_blocked">బ్లాక్ చేయబడింది</string>
   <string name="new_call_log_secondary_spam">స్పామ్</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2 నుండి ^1 మిస్డ్ కాల్</item>
-    <item quantity="other">^2 నుండి ^1 కాల్‌లు, తాజాది మిస్డ్ కాల్</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2 నుండి ^1 సమాధానం ఇచ్చిన కాల్</item>
-    <item quantity="other">^2 నుండి ^1 కాల్‌లు, తాజాది సమాధానం ఇచ్చిన కాల్</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^2కు ^1 అవుట్‌గోయింగ్ కాల్</item>
-    <item quantity="other">^2కు ^1 కాల్‌లు, తాజాది అవుట్‌గోయింగ్ కాల్‌లు</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2 నుండి ^1 బ్లాక్ చేయబడిన కాల్</item>
-    <item quantity="other">^2 నుండి ^1 కాల్‌లు, తాజాది బ్లాక్ చేయబడిన కాల్</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1లో,
-    ^2 ద్వారా</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-th/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-th/cm_strings.xml
new file mode 100644
index 0000000..30a7ae3
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-th/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">บัญชีทั้งหมด</string>
+    <string name="call_log_all_calls_header">การใช้สายทั้งหมด</string>
+    <string name="call_log_incoming_header">สายเรียกเข้าเท่านั้น</string>
+    <string name="call_log_outgoing_header">การโทรออกเท่านั้น</string>
+    <string name="call_log_missed_header">สายที่ไม่ได้รับเท่านั้น</string>
+    <string name="call_log_voicemail_header">การโทรด้วยข้อความเสียงเท่านั้น</string>
+    <string name="call_log_blacklist_header">สายที่บล็อคเท่านั้น</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-th/strings.xml b/java/com/android/dialer/calllogutils/res/values-th/strings.xml
index b44fb87..959bd3f 100644
--- a/java/com/android/dialer/calllogutils/res/values-th/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-th/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">ข้อความเสียง</string>
   <string name="just_now">เมื่อสักครู่</string>
   <string name="new_call_log_carrier_video">การโทรวิดีโอผ่านผู้ให้บริการ</string>
-  <string name="new_call_log_duo_video">วิดีโอคอลผ่าน Duo</string>
   <string name="new_call_log_unknown">ไม่ทราบ</string>
   <string name="new_call_log_secondary_blocked">ถูกบล็อก</string>
   <string name="new_call_log_secondary_spam">สแปม</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 สายที่ไม่ได้รับจาก ^2</item>
-    <item quantity="other">^1 สาย และสายที่ไม่ได้รับล่าสุดคือสายจาก ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 สายที่ได้รับจาก ^2</item>
-    <item quantity="other">^1 สาย และสายที่ได้รับล่าสุดคือสายจาก ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 สายโทรออกไปยัง ^2</item>
-    <item quantity="other">^1 สาย และสายที่โทรออกล่าสุดคือสายจาก ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 สายที่บล็อกจาก ^2</item>
-    <item quantity="other">^1 สาย และสายที่บล็อกล่าสุดคือสายจาก ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">ใน ^1 ผ่าน ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-tl/strings.xml b/java/com/android/dialer/calllogutils/res/values-tl/strings.xml
index e655f1e..6399f97 100644
--- a/java/com/android/dialer/calllogutils/res/values-tl/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-tl/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Voicemail</string>
   <string name="just_now">Ngayon lang</string>
   <string name="new_call_log_carrier_video">Video call sa carrier</string>
-  <string name="new_call_log_duo_video">Video call sa Duo</string>
   <string name="new_call_log_unknown">Hindi alam</string>
   <string name="new_call_log_secondary_blocked">Naka-block</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 tawag, ang pinakabago ay isang hindi nasagot na tawag mula kay ^2</item>
-    <item quantity="other">^1 na tawag, ang pinakabago ay isang hindi nasagot na tawag mula kay ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 tawag, ang pinakabago ay isang nasagot na tawag mula kay ^2</item>
-    <item quantity="other">^1 na tawag, ang pinakabago ay isang nasagot na tawag mula kay ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 tawag, ang pinakabago ay isang papalabas na tawag kay ^2</item>
-    <item quantity="other">^1 na tawag, ang pinakabago ay isang papalabas na tawag kay ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 tawag, ang pinakabago ay isang na-block na tawag mula kay ^2</item>
-    <item quantity="other">^1 na tawag, ang pinakabago ay isang na-block na tawag mula kay ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">sa ^1,
-    sa pamamagitan ng ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-tr/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-tr/cm_strings.xml
new file mode 100644
index 0000000..78499dd
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-tr/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Tüm hesaplar</string>
+    <string name="call_log_all_calls_header">Tüm aramalar</string>
+    <string name="call_log_incoming_header">Sadece gelen çağrılar</string>
+    <string name="call_log_outgoing_header">Sadece giden çağrılar</string>
+    <string name="call_log_missed_header">Sadece cevapsız çağrılar</string>
+    <string name="call_log_voicemail_header">Sadece sesli mesaj içeren çağrılar</string>
+    <string name="call_log_blacklist_header">Sadece engellenen aramalar</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-tr/strings.xml b/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
index 1eea437..88d9b8e 100644
--- a/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-tr/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Sesli mesaj</string>
   <string name="just_now">Az önce</string>
   <string name="new_call_log_carrier_video">Operatör görüntülü görüşmesi</string>
-  <string name="new_call_log_duo_video">Duo görüntülü görüşmesi</string>
   <string name="new_call_log_unknown">Bilinmeyen</string>
   <string name="new_call_log_secondary_blocked">Engellenmiş</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 cevapsız arama, arayan: ^2</item>
-    <item quantity="other">^1 arama, son cevapsız arama: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 cevaplanmış arama, arayan: ^2</item>
-    <item quantity="other">^1 arama, son cevaplanmış arama: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 giden arama, aranan: ^2</item>
-    <item quantity="other">^1 arama, son giden arama: ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 engellenmiş arama, arayan: ^2</item>
-    <item quantity="other">^1 arama, son engellenmiş arama: ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^2 kullanılarak
-    ^1 hesabında</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-uk/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-uk/cm_strings.xml
new file mode 100644
index 0000000..8266db2
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-uk/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Усі облікові записи</string>
+    <string name="call_log_all_calls_header">Усі виклики</string>
+    <string name="call_log_incoming_header">Лише вхідні виклики</string>
+    <string name="call_log_outgoing_header">Лише вихідні виклики</string>
+    <string name="call_log_missed_header">Лише пропущені виклики</string>
+    <string name="call_log_voicemail_header">Лише виклики з голосовою поштою</string>
+    <string name="call_log_blacklist_header">Лише заблоковані виклики</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-uk/strings.xml b/java/com/android/dialer/calllogutils/res/values-uk/strings.xml
index d616c32..e429112 100644
--- a/java/com/android/dialer/calllogutils/res/values-uk/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-uk/strings.xml
@@ -38,36 +38,7 @@
   <string name="voicemail_string">Голосова пошта</string>
   <string name="just_now">Щойно</string>
   <string name="new_call_log_carrier_video">Відеодзвінок через оператора</string>
-  <string name="new_call_log_duo_video">Відеодзвінок Duo</string>
   <string name="new_call_log_unknown">Невідомо</string>
   <string name="new_call_log_secondary_blocked">Заблоковані</string>
   <string name="new_call_log_secondary_spam">Спам</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 виклик, останній – пропущений дзвінок від користувача ^2</item>
-    <item quantity="few">^1 виклики, останній – пропущений дзвінок від користувача ^2</item>
-    <item quantity="many">^1 викликів, останній – пропущений дзвінок від користувача ^2</item>
-    <item quantity="other">^1 виклику, останній – пропущений дзвінок від користувача ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 виклик, останній – прийнятий дзвінок від користувача ^2</item>
-    <item quantity="few">^1 виклики, останній – прийнятий дзвінок від користувача ^2</item>
-    <item quantity="many">^1 викликів, останній – прийнятий дзвінок від користувача ^2</item>
-    <item quantity="other">^1 виклику, останній – прийнятий дзвінок від користувача ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 виклик, останній – вихідний дзвінок користувачу ^2</item>
-    <item quantity="few">^1 виклики, останній – вихідний дзвінок користувачу ^2</item>
-    <item quantity="many">^1 викликів, останній – вихідний дзвінок користувачу ^2</item>
-    <item quantity="other">^1 виклику, останній – вихідний дзвінок користувачу ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 виклик, останній – заблокований дзвінок від користувача ^2</item>
-    <item quantity="few">^1 виклики, останній – заблокований дзвінок від користувача ^2</item>
-    <item quantity="many">^1 викликів, останній – заблокований дзвінок від користувача ^2</item>
-    <item quantity="other">^1 виклику, останній – заблокований дзвінок від користувача ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">обліковий запис: ^1,
-    номер: ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-ur/strings.xml b/java/com/android/dialer/calllogutils/res/values-ur/strings.xml
index 99981b2..9ab3c33 100644
--- a/java/com/android/dialer/calllogutils/res/values-ur/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-ur/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">صوتی میل</string>
   <string name="just_now">ابھی ابھی</string>
   <string name="new_call_log_carrier_video">کیرئیر ویڈیو</string>
-  <string name="new_call_log_duo_video">‏Duo ویڈیو</string>
   <string name="new_call_log_unknown">نامعلوم</string>
   <string name="new_call_log_secondary_blocked">مسدود</string>
   <string name="new_call_log_secondary_spam">اسپام</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2 کی جانب سے ^1 چھوٹی ہوئی کال</item>
-    <item quantity="other">^1 کالز، تازہ ترین ^2 کی جانب سے چھوٹی ہوئی کال ہے</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2 کی جانب سے ^1 جواب دی گئی کالز</item>
-    <item quantity="other">^1 کالز، تازہ ترین ^2 کی جانب سے جواب دی گئی کال ہے</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^2 کو باہر جانے والی ^1 کال</item>
-    <item quantity="other">^1 کالز، تازہ ترین ^2 کو باہر جانے والی کال ہے</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2 کی جانب سے ^1 مسدود کردہ کال</item>
-    <item quantity="other">^1 کالز، تازہ ترین ^2 کی جانب سے مسدود کردہ کال ہے</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1 پر،
-    بذریعہ ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1، ^2۔</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1، ^2، ^3۔</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-uz/strings.xml b/java/com/android/dialer/calllogutils/res/values-uz/strings.xml
index fb5191f..4ae6501 100644
--- a/java/com/android/dialer/calllogutils/res/values-uz/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-uz/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">Ovozli pochta</string>
   <string name="just_now">Hozirgina</string>
   <string name="new_call_log_carrier_video">Operator orqali video chaqiruv</string>
-  <string name="new_call_log_duo_video">Duo orqali video chaqiruv</string>
   <string name="new_call_log_unknown">Noma’lum raqam</string>
   <string name="new_call_log_secondary_blocked">Bloklanganlar</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^2: ^1 ta javobsiz chaqiruv</item>
-    <item quantity="other">^2: ^1 ta chaqiruv. Oxirgisi javobsiz.</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^2: ^1 ta javob berilgan chaqiruv</item>
-    <item quantity="other">^2: ^1 ta chaqiruv. Oxirgisiga javob berildi.</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^2: ^1 ta chiquvchi chaqiruv</item>
-    <item quantity="other">^2: ^1 ta chaqiruv. Oxirigisi chiquvchi.</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^2: ^1 ta bloklangan chaqiruv</item>
-    <item quantity="other">^2: ^1 ta chaqiruv. Oxirgisi bloklandi.</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">^1, ^2 raqami orqali</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-vi/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-vi/cm_strings.xml
new file mode 100644
index 0000000..73e12af
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-vi/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">Tất cả tài khoản</string>
+    <string name="call_log_all_calls_header">Tất cả các cuộc gọi</string>
+    <string name="call_log_incoming_header">Chỉ cuộc gọi đến</string>
+    <string name="call_log_outgoing_header">Chỉ cuộc gọi đi</string>
+    <string name="call_log_missed_header">Chỉ cuộc gọi nhỡ</string>
+    <string name="call_log_voicemail_header">Chỉ cuộc gọi có thư thoại</string>
+    <string name="call_log_blacklist_header">Chỉ các cuộc gọi bị chặn</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-vi/strings.xml b/java/com/android/dialer/calllogutils/res/values-vi/strings.xml
index 5a77c96..d72e1fc 100644
--- a/java/com/android/dialer/calllogutils/res/values-vi/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-vi/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Thư thoại</string>
   <string name="just_now">Vừa xong</string>
   <string name="new_call_log_carrier_video">Cuộc gọi video của nhà mạng</string>
-  <string name="new_call_log_duo_video">Cuộc gọi video Duo</string>
   <string name="new_call_log_unknown">Không xác định</string>
   <string name="new_call_log_secondary_blocked">Bị chặn</string>
   <string name="new_call_log_secondary_spam">Spam</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 cuộc gọi nhỡ từ ^2</item>
-    <item quantity="other">^1 cuộc gọi, cuộc gọi gần đây nhất là cuộc gọi nhỡ từ ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 cuộc gọi đã nhận từ ^2</item>
-    <item quantity="other">^1 cuộc gọi, cuộc gọi gần đây nhất là cuộc gọi đã nhận từ ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 cuộc gọi đi tới ^2</item>
-    <item quantity="other">^1 cuộc gọi, cuộc gọi gần đây nhất là cuộc gọi đi tới ^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 cuộc gọi đã chặn từ ^2</item>
-    <item quantity="other">^1 cuộc gọi, cuộc gọi gần đây nhất là cuộc gọi đã chặn từ ^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">trên ^1,
-    qua số ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-zh-rCN/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-zh-rCN/cm_strings.xml
new file mode 100644
index 0000000..8cf5dca
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-zh-rCN/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">所有帐户</string>
+    <string name="call_log_all_calls_header">所有呼叫</string>
+    <string name="call_log_incoming_header">只显示来电</string>
+    <string name="call_log_outgoing_header">只显示呼出通话</string>
+    <string name="call_log_missed_header">只显示未接来电</string>
+    <string name="call_log_voicemail_header">只显示语音信箱留言</string>
+    <string name="call_log_blacklist_header">仅拦截的呼叫</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-zh-rCN/strings.xml b/java/com/android/dialer/calllogutils/res/values-zh-rCN/strings.xml
index 6629299..4294dea 100644
--- a/java/com/android/dialer/calllogutils/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-zh-rCN/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">语音邮件</string>
   <string name="just_now">刚刚</string>
   <string name="new_call_log_carrier_video">运营商视频通话</string>
-  <string name="new_call_log_duo_video">Duo 视频通话</string>
   <string name="new_call_log_unknown">未知</string>
   <string name="new_call_log_secondary_blocked">已屏蔽</string>
   <string name="new_call_log_secondary_spam">骚扰电话号码</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 通来自^2的未接电话</item>
-    <item quantity="other">^1 通电话，最近一通是来自^2的未接电话</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 通来自^2的已接电话</item>
-    <item quantity="other">^1 通电话，最近一通是来自^2的已接电话</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 通打给^2的电话</item>
-    <item quantity="other">^1 通电话，最近一通是打给^2的</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 通来自^2的已屏蔽电话</item>
-    <item quantity="other">^1 通电话，最近一通是来自^2的已屏蔽电话</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">帐号：^1，通过 ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1，^2。</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1，^2，^3</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-zh-rHK/strings.xml b/java/com/android/dialer/calllogutils/res/values-zh-rHK/strings.xml
index 6146e63..45f5fb2 100644
--- a/java/com/android/dialer/calllogutils/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-zh-rHK/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">留言</string>
   <string name="just_now">剛剛</string>
   <string name="new_call_log_carrier_video">流動網絡供應商視像</string>
-  <string name="new_call_log_duo_video">Duo 視像</string>
   <string name="new_call_log_unknown">不明</string>
   <string name="new_call_log_secondary_blocked">已封鎖</string>
   <string name="new_call_log_secondary_spam">垃圾號碼</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">來自^2的 ^1 通未接來電</item>
-    <item quantity="other">^1 通來電，最新的一通是來自^2的未接來電</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">來自^2 ^1 通已接來電</item>
-    <item quantity="other">^1 通來電，最新的一通是來自^2的已接來電</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">撥給^2的 ^1 通電話</item>
-    <item quantity="other">^1 通電話，最新的一通是撥給^2的電話</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">來自^2的 ^1 通已封鎖來電</item>
-    <item quantity="other">^1 通來電，最新的一通是來自^2的已封鎖來電</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">在 ^1 上
-    透過 ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1，^2。</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1，^2，^3。</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-zh-rTW/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values-zh-rTW/cm_strings.xml
new file mode 100644
index 0000000..18a05ec
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values-zh-rTW/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">所有帳戶</string>
+    <string name="call_log_all_calls_header">所有來電</string>
+    <string name="call_log_incoming_header">僅顯示來電</string>
+    <string name="call_log_outgoing_header">僅顯示已撥來電</string>
+    <string name="call_log_missed_header">僅顯示未接來電</string>
+    <string name="call_log_voicemail_header">僅顯示語音信箱留言</string>
+    <string name="call_log_blacklist_header">僅限已封鎖來電</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-zh-rTW/strings.xml b/java/com/android/dialer/calllogutils/res/values-zh-rTW/strings.xml
index e161e3e..85da7cc 100644
--- a/java/com/android/dialer/calllogutils/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-zh-rTW/strings.xml
@@ -34,27 +34,7 @@
   <string name="voicemail_string">語音留言</string>
   <string name="just_now">剛剛</string>
   <string name="new_call_log_carrier_video">電信業者視訊通話</string>
-  <string name="new_call_log_duo_video">Duo 視訊通話</string>
   <string name="new_call_log_unknown">不明</string>
   <string name="new_call_log_secondary_blocked">已封鎖</string>
   <string name="new_call_log_secondary_spam">騷擾/廣告電話</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 通來自^2的未接來電</item>
-    <item quantity="other">^1 通電話，最近一通是來自^2的未接來電</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 通來自^2的已接來電</item>
-    <item quantity="other">^1 通電話，最近一通是來自^2的已接來電</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 通撥出給^2的電話</item>
-    <item quantity="other">^1 通電話，最近一通是撥出給^2的電話</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 通來自^2的已封鎖來電</item>
-    <item quantity="other">^1 通電話，最近一通是來自^2的已封鎖來電</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">使用 ^1，透過 ^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1，^2。</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1，^2，^3。</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values-zu/strings.xml b/java/com/android/dialer/calllogutils/res/values-zu/strings.xml
index 4872e80..2f42032 100644
--- a/java/com/android/dialer/calllogutils/res/values-zu/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values-zu/strings.xml
@@ -34,28 +34,7 @@
   <string name="voicemail_string">Ivoyisimeyili</string>
   <string name="just_now">Khona manje</string>
   <string name="new_call_log_carrier_video">Ividiyo yenkampani yenethiwekhi</string>
-  <string name="new_call_log_duo_video">Ividiyo ye-Duo</string>
   <string name="new_call_log_unknown">Akwaziwa</string>
   <string name="new_call_log_secondary_blocked">Ivinjiwe</string>
   <string name="new_call_log_secondary_spam">Ugaxekile</string>
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one">^1 amakholi, okwakamuva ikholi ekuphuthile kusukela ku-^2</item>
-    <item quantity="other">^1 amakholi, okwakamuva ikholi ekuphuthile kusukela ku-^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one">^1 amakholi, okwakamuva ikholi ephenduliwe kusukela ku-^2</item>
-    <item quantity="other">^1 amakholi, okwakamuva ikholi ephenduliwe kusukela ku-^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one">^1 amakholi, okwakamuva ikholi ephumayo eya ku-^2</item>
-    <item quantity="other">^1 amakholi, okwakamuva ikholi ephumayo eya ku-^2</item>
-  </plurals>
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one">^1 amakholi, okwakamuva ikholi evinjelwe kusukela ku-^2</item>
-    <item quantity="other">^1 amakholi, okwakamuva ikholi evinjelwe kusukela ku-^2</item>
-  </plurals>
-  <string name="a11y_new_call_log_entry_phone_account">ku-^1,
-    nge-^2</string>
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">^1, ^2.</string>
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">^1, ^2, ^3.</string>
 </resources>
diff --git a/java/com/android/dialer/calllogutils/res/values/cm_strings.xml b/java/com/android/dialer/calllogutils/res/values/cm_strings.xml
new file mode 100644
index 0000000..d30aa17
--- /dev/null
+++ b/java/com/android/dialer/calllogutils/res/values/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_log_show_all_accounts">All accounts</string>
+    <string name="call_log_all_calls_header">All calls</string>
+    <string name="call_log_incoming_header">Incoming calls only</string>
+    <string name="call_log_outgoing_header">Outgoing calls only</string>
+    <string name="call_log_missed_header">Missed calls only</string>
+    <string name="call_log_voicemail_header">Calls with voicemail only</string>
+    <string name="call_log_blacklist_header">Blocked calls only</string>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values/colors.xml b/java/com/android/dialer/calllogutils/res/values/colors.xml
index 3a9e3ae..40a522b 100644
--- a/java/com/android/dialer/calllogutils/res/values/colors.xml
+++ b/java/com/android/dialer/calllogutils/res/values/colors.xml
@@ -15,4 +15,12 @@
  ~ limitations under the License
  -->
 <resources>
-</resources>
\ No newline at end of file
+  <!-- Color for missed call icons. -->
+  <color name="missed_call">#C53929</color>
+  <!-- Color for answered call icons. -->
+  <color name="answered_incoming_call">#00a8ff</color>
+  <!-- Color for outgoing call icons. -->
+  <color name="answered_outgoing_call">#00c853</color>
+  <!-- Color for blocked call icons. -->
+  <color name="blocked_call">@color/dialer_secondary_text_color</color>
+</resources>
diff --git a/java/com/android/dialer/calllogutils/res/values/strings.xml b/java/com/android/dialer/calllogutils/res/values/strings.xml
index 3fbfb44..aeda758 100644
--- a/java/com/android/dialer/calllogutils/res/values/strings.xml
+++ b/java/com/android/dialer/calllogutils/res/values/strings.xml
@@ -134,9 +134,6 @@
   <!-- Text to show in call log for a carrier video call. [CHAR LIMIT=31] -->
   <string name="new_call_log_carrier_video">Carrier video</string>
 
-  <!-- Text to show in call log for a duo video call. [CHAR LIMIT=30] -->
-  <string name="new_call_log_duo_video">Duo video</string>
-
   <!-- String used to display calls from unknown numbers in the call log.  [CHAR LIMIT=30] -->
   <string name="new_call_log_unknown">Unknown</string>
 
@@ -145,67 +142,4 @@
 
   <!-- String used to display calls from spam numbers in the call log.   [CHAR LIMIT=30] -->
   <string name="new_call_log_secondary_spam">Spam</string>
-
-  <!--
-    String introducing to a11y users a call log entry in which the latest call is a missed call.
-    [CHAR LIMIT=NONE]
-  -->
-  <plurals name="a11y_new_call_log_entry_missed_call">
-    <item quantity="one"><xliff:g example="1" id="count">^1</xliff:g> missed call from <xliff:g example="Jane Smith" id="primaryInfoForEntry">^2</xliff:g></item>
-    <item quantity="other"><xliff:g example="2" id="count">^1</xliff:g> calls, the latest is a missed call from <xliff:g example="Jane Smith" id="primaryInfoForEntry">^2</xliff:g></item>
-  </plurals>
-
-  <!--
-    String introducing to a11y users a call log entry in which the latest call is an answered call.
-    [CHAR LIMIT=NONE]
-  -->
-  <plurals name="a11y_new_call_log_entry_answered_call">
-    <item quantity="one"><xliff:g example="1" id="count">^1</xliff:g> answered call from <xliff:g example="Jane Smith" id="primaryInfoForEntry">^2</xliff:g></item>
-    <item quantity="other"><xliff:g example="2" id="count">^1</xliff:g> calls, the latest is an answered call from <xliff:g example="Jane Smith" id="primaryInfoForEntry">^2</xliff:g></item>
-  </plurals>
-
-  <!--
-    String introducing to a11y users a call log entry in which the latest call is an outgoing call.
-    [CHAR LIMIT=NONE]
-  -->
-  <plurals name="a11y_new_call_log_entry_outgoing_call">
-    <item quantity="one"><xliff:g example="1" id="count">^1</xliff:g> outgoing call to <xliff:g example="Jane Smith" id="primaryInfoForEntry">^2</xliff:g></item>
-    <item quantity="other"><xliff:g example="2" id="count">^1</xliff:g> calls, the latest is an outgoing call to <xliff:g example="Jane Smith" id="primaryInfoForEntry">^2</xliff:g></item>
-  </plurals>
-
-  <!--
-    String introducing to a11y users a call log entry in which the latest call is a blocked call.
-    [CHAR LIMIT=NONE]
-  -->
-  <plurals name="a11y_new_call_log_entry_blocked_call">
-    <item quantity="one"><xliff:g example="1" id="count">^1</xliff:g> blocked call from <xliff:g example="Jane Smith" id="primaryInfoForEntry">^2</xliff:g></item>
-    <item quantity="other"><xliff:g example="2" id="count">^1</xliff:g> calls, the latest is a blocked call from <xliff:g example="Jane Smith" id="primaryInfoForEntry">^2</xliff:g></item>
-  </plurals>
-
-
-  <!--
-    String describing to a11y users the phone account used to make/receive the latest call in a call
-    log entry.
-    [CHAR LIMIT=NONE]
-  -->
-  <string name="a11y_new_call_log_entry_phone_account">
-    on <xliff:g example="SIM 1" id="phoneAccount">^1</xliff:g>,
-    via <xliff:g example="(555) 555-5555" id="number">^2</xliff:g>
-  </string>
-
-  <!--
-    String template describing to a11y users a call log entry without phone account info.
-    [CHAR LIMIT=NONE]
-  -->
-  <string name="a11y_new_call_log_entry_full_description_without_phone_account_info">
-    <xliff:g example="A missed call from Jane Smith" id="primaryDescriptionForEntry">^1</xliff:g>, <xliff:g example="mobile, 30 minutes ago" id="secondaryDescriptionForEntry">^2</xliff:g>.
-  </string>
-
-  <!--
-    String template describing to a11y users a call log entry with phone account info.
-    [CHAR LIMIT=NONE]
-  -->
-  <string name="a11y_new_call_log_entry_full_description_with_phone_account_info">
-    <xliff:g example="A missed call from Jane Smith" id="primaryDescriptionForEntry">^1</xliff:g>, <xliff:g example="mobile, 30 minutes ago" id="secondaryDescriptionForEntry">^2</xliff:g>, <xliff:g example="on SIM 1, via (555) 555-5555">^3</xliff:g>.
-  </string>
 </resources>
diff --git a/java/com/android/dialer/callrecord/CallRecording.aidl b/java/com/android/dialer/callrecord/CallRecording.aidl
new file mode 100644
index 0000000..e8d65be
--- /dev/null
+++ b/java/com/android/dialer/callrecord/CallRecording.aidl
@@ -0,0 +1,3 @@
+package com.android.dialer.callrecord;
+
+parcelable CallRecording;
diff --git a/java/com/android/dialer/callrecord/CallRecording.java b/java/com/android/dialer/callrecord/CallRecording.java
new file mode 100644
index 0000000..76b66e8
--- /dev/null
+++ b/java/com/android/dialer/callrecord/CallRecording.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.callrecord;
+
+import android.content.ContentValues;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.provider.MediaStore;
+import android.text.TextUtils;
+import android.webkit.MimeTypeMap;
+
+public final class CallRecording implements Parcelable {
+  public final String phoneNumber;
+  public final long creationTime;
+  public final String fileName;
+  public final long startRecordingTime;
+  public final long mediaId;
+
+  public static final Parcelable.Creator<CallRecording> CREATOR =
+      new Parcelable.Creator<CallRecording>() {
+    @Override
+    public CallRecording createFromParcel(Parcel in) {
+      return new CallRecording(in);
+    }
+
+    @Override
+    public CallRecording[] newArray(int size) {
+      return new CallRecording[size];
+    }
+  };
+
+  public CallRecording(String phoneNumber, long creationTime,
+      String fileName, long startRecordingTime, long mediaId) {
+    this.phoneNumber = phoneNumber;
+    this.creationTime = creationTime;
+    this.fileName = fileName;
+    this.startRecordingTime = startRecordingTime;
+    this.mediaId = mediaId;
+  }
+
+  public CallRecording(Parcel in) {
+    phoneNumber = in.readString();
+    creationTime = in.readLong();
+    fileName = in.readString();
+    startRecordingTime = in.readLong();
+    mediaId = in.readLong();
+  }
+
+  public static ContentValues generateMediaInsertValues(String fileName, long creationTime) {
+    final ContentValues cv = new ContentValues(5);
+
+    cv.put(MediaStore.Audio.Media.RELATIVE_PATH, "Recordings/Call recordings");
+    cv.put(MediaStore.Audio.Media.DISPLAY_NAME, fileName);
+    cv.put(MediaStore.Audio.Media.DATE_TAKEN, creationTime);
+    cv.put(MediaStore.Audio.Media.IS_PENDING, 1);
+
+    final String extension = MimeTypeMap.getFileExtensionFromUrl(fileName);
+    final String mime = !TextUtils.isEmpty(extension)
+        ? MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension) : "audio/*";
+    cv.put(MediaStore.Audio.Media.MIME_TYPE, mime);
+
+    return cv;
+  }
+
+  public static ContentValues generateCompletedValues() {
+    final ContentValues cv = new ContentValues(1);
+    cv.put(MediaStore.Audio.Media.IS_PENDING, 0);
+    return cv;
+  }
+
+  @Override
+  public void writeToParcel(Parcel out, int flags) {
+    out.writeString(phoneNumber);
+    out.writeLong(creationTime);
+    out.writeString(fileName);
+    out.writeLong(startRecordingTime);
+    out.writeLong(mediaId);
+  }
+
+  @Override
+  public int describeContents() {
+    return 0;
+  }
+
+  @Override
+  public String toString() {
+    return "phoneNumber=" + phoneNumber + ", creationTime=" + creationTime +
+        ", fileName=" + fileName + ", startRecordingTime=" + startRecordingTime;
+  }
+}
diff --git a/java/com/android/dialer/callrecord/CallRecordingDataStore.java b/java/com/android/dialer/callrecord/CallRecordingDataStore.java
new file mode 100644
index 0000000..1babb85
--- /dev/null
+++ b/java/com/android/dialer/callrecord/CallRecordingDataStore.java
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.callrecord;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteException;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.database.sqlite.SQLiteStatement;
+import android.provider.BaseColumns;
+import android.util.Log;
+import android.util.SparseArray;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Persistent data store for call recordings.  Usage:
+ * open()
+ * read/write operations
+ * close()
+ */
+public class CallRecordingDataStore {
+  private static final String TAG = "CallRecordingStore";
+  private SQLiteOpenHelper mOpenHelper = null;
+  private SQLiteDatabase mDatabase = null;
+
+  /**
+   * Open before reading/writing.  Will not open handle if one is already open.
+   */
+  public void open(Context context) {
+    if (mDatabase == null) {
+      mOpenHelper = new CallRecordingSQLiteOpenHelper(context);
+      mDatabase = mOpenHelper.getWritableDatabase();
+    }
+  }
+
+  /**
+   * close when finished reading/writing
+   */
+  public void close() {
+    if (mDatabase != null) {
+      mDatabase.close();
+    }
+    if (mOpenHelper != null) {
+      mOpenHelper.close();
+    }
+    mDatabase = null;
+    mOpenHelper = null;
+  }
+
+  /**
+   * Save a recording in the data store
+   *
+   * @param recording the recording to store
+   */
+  public void putRecording(CallRecording recording) {
+    final String insertSql = "INSERT INTO " +
+        CallRecordingsContract.CallRecording.TABLE_NAME + " (" +
+        CallRecordingsContract.CallRecording.COLUMN_NAME_PHONE_NUMBER + ", " +
+        CallRecordingsContract.CallRecording.COLUMN_NAME_CALL_DATE + ", " +
+        CallRecordingsContract.CallRecording.COLUMN_NAME_RECORDING_FILENAME + ", " +
+        CallRecordingsContract.CallRecording.COLUMN_NAME_CREATION_DATE + ", " +
+        CallRecordingsContract.CallRecording.COLUMN_NAME_MEDIA_ID + ") " +
+        " VALUES (?, ?, ?, ?, ?)";
+
+    try {
+      SQLiteStatement stmt = mDatabase.compileStatement(insertSql);
+      int idx = 1;
+      stmt.bindString(idx++, recording.phoneNumber);
+      stmt.bindLong(idx++, recording.creationTime);
+      stmt.bindString(idx++, recording.fileName);
+      stmt.bindLong(idx++, System.currentTimeMillis());
+      stmt.bindLong(idx++, recording.mediaId);
+      long id = stmt.executeInsert();
+      Log.i(TAG, "Saved recording " + recording + " with id " + id);
+    } catch (SQLiteException e) {
+      Log.w(TAG, "Failed to save recording " + recording, e);
+    }
+  }
+
+  /**
+   * Get all recordings associated with a phone call
+   *
+   * @param phoneNumber phone number no spaces
+   * @param callCreationDate time that the call was created
+   * @return list of recordings
+   */
+  public List<CallRecording> getRecordings(String phoneNumber, long callCreationDate) {
+    List<CallRecording> resultList = new ArrayList<>();
+
+    final String query = "SELECT " +
+        CallRecordingsContract.CallRecording.COLUMN_NAME_RECORDING_FILENAME + "," +
+        CallRecordingsContract.CallRecording.COLUMN_NAME_CREATION_DATE + "," +
+        CallRecordingsContract.CallRecording.COLUMN_NAME_MEDIA_ID +
+        " FROM " + CallRecordingsContract.CallRecording.TABLE_NAME +
+        " WHERE " + CallRecordingsContract.CallRecording.COLUMN_NAME_PHONE_NUMBER + " = ?" +
+        " AND " + CallRecordingsContract.CallRecording.COLUMN_NAME_CALL_DATE + " = ?" +
+        " AND " + CallRecordingsContract.CallRecording.COLUMN_NAME_MEDIA_ID + " != 0" +
+        " ORDER BY " + CallRecordingsContract.CallRecording.COLUMN_NAME_CREATION_DATE;
+
+    String[] args = {
+      phoneNumber, String.valueOf(callCreationDate)
+    };
+
+    try {
+      Cursor cursor = mDatabase.rawQuery(query, args);
+      while (cursor.moveToNext()) {
+        String fileName = cursor.getString(0);
+        long creationDate = cursor.getLong(1);
+        long mediaId = cursor.getLong(2);
+        // FIXME: need to check whether media entry still exists?
+        resultList.add(
+            new CallRecording(phoneNumber, callCreationDate, fileName, creationDate, mediaId));
+      }
+      cursor.close();
+    } catch (SQLiteException e) {
+      Log.w(TAG, "Failed to fetch recordings for number " + phoneNumber +
+          ", date " + callCreationDate, e);
+    }
+
+    return resultList;
+  }
+
+  public SparseArray<CallRecording> getUnmigratedRecordingData() {
+    final String query = "SELECT " +
+        CallRecordingsContract.CallRecording._ID + "," +
+        CallRecordingsContract.CallRecording.COLUMN_NAME_PHONE_NUMBER + "," +
+        CallRecordingsContract.CallRecording.COLUMN_NAME_RECORDING_FILENAME + "," +
+        CallRecordingsContract.CallRecording.COLUMN_NAME_CREATION_DATE +
+        " FROM " + CallRecordingsContract.CallRecording.TABLE_NAME +
+        " WHERE " + CallRecordingsContract.CallRecording.COLUMN_NAME_MEDIA_ID + " == 0";
+    final SparseArray<CallRecording> result = new SparseArray<>();
+
+    try {
+      Cursor cursor = mDatabase.rawQuery(query, null);
+      while (cursor.moveToNext()) {
+        int id = cursor.getInt(0);
+        String phoneNumber = cursor.getString(1);
+        String fileName = cursor.getString(2);
+        long creationDate = cursor.getLong(3);
+        CallRecording recording = new CallRecording(
+            phoneNumber, creationDate, fileName, creationDate, 0);
+        result.put(id, recording);
+      }
+      cursor.close();
+    } catch (SQLiteException e) {
+      Log.w(TAG, "Failed to fetch recordings for migration", e);
+    }
+
+    return result;
+  }
+
+  public void updateMigratedRecording(int id, int mediaId) {
+    ContentValues cv = new ContentValues(1);
+    cv.put(CallRecordingsContract.CallRecording.COLUMN_NAME_MEDIA_ID, mediaId);
+    mDatabase.update(CallRecordingsContract.CallRecording.TABLE_NAME, cv,
+        CallRecordingsContract.CallRecording._ID + " = ?", new String[] { String.valueOf(id) });
+  }
+
+  static class CallRecordingsContract {
+    interface CallRecording extends BaseColumns {
+      String TABLE_NAME = "call_recordings";
+      String COLUMN_NAME_PHONE_NUMBER = "phone_number";
+      String COLUMN_NAME_CALL_DATE = "call_date";
+      String COLUMN_NAME_RECORDING_FILENAME = "recording_filename";
+      String COLUMN_NAME_CREATION_DATE = "creation_date";
+      String COLUMN_NAME_MEDIA_ID = "media_id";
+    }
+  }
+
+  static class CallRecordingSQLiteOpenHelper extends SQLiteOpenHelper {
+    private static final int VERSION = 2;
+    private static final String DB_NAME = "callrecordings.db";
+
+    public CallRecordingSQLiteOpenHelper(Context context) {
+      super(context, DB_NAME, null, VERSION);
+    }
+
+    @Override
+    public void onCreate(SQLiteDatabase db) {
+      db.execSQL("CREATE TABLE " + CallRecordingsContract.CallRecording.TABLE_NAME + " (" +
+          CallRecordingsContract.CallRecording._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
+          CallRecordingsContract.CallRecording.COLUMN_NAME_PHONE_NUMBER + " TEXT," +
+          CallRecordingsContract.CallRecording.COLUMN_NAME_CALL_DATE + " LONG," +
+          CallRecordingsContract.CallRecording.COLUMN_NAME_RECORDING_FILENAME + " TEXT, " +
+          CallRecordingsContract.CallRecording.COLUMN_NAME_CREATION_DATE + " LONG," +
+          CallRecordingsContract.CallRecording.COLUMN_NAME_MEDIA_ID + " INTEGER DEFAULT 0" +
+          ");"
+      );
+
+      db.execSQL("CREATE INDEX IF NOT EXISTS phone_number_call_date_index ON " +
+          CallRecordingsContract.CallRecording.TABLE_NAME + " (" +
+          CallRecordingsContract.CallRecording.COLUMN_NAME_PHONE_NUMBER + ", " +
+          CallRecordingsContract.CallRecording.COLUMN_NAME_CALL_DATE + ");"
+      );
+    }
+
+    @Override
+    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+      if (oldVersion < 2) {
+        db.execSQL("ALTER TABLE " + CallRecordingsContract.CallRecording.TABLE_NAME +
+            " ADD COLUMN " + CallRecordingsContract.CallRecording.COLUMN_NAME_MEDIA_ID +
+            " INTEGER DEFAULT 0;");
+      }
+    }
+  }
+}
diff --git a/java/com/android/dialer/callrecord/ICallRecorderService.aidl b/java/com/android/dialer/callrecord/ICallRecorderService.aidl
new file mode 100644
index 0000000..acbd5f8
--- /dev/null
+++ b/java/com/android/dialer/callrecord/ICallRecorderService.aidl
@@ -0,0 +1,37 @@
+package com.android.dialer.callrecord;
+
+import com.android.dialer.callrecord.CallRecording;
+
+/**
+ * Service for recording phone calls.  Only one recording may be active at a time
+ * (i.e. every call to startRecording should be followed by a call to stopRecording).
+ */
+interface ICallRecorderService {
+  /**
+   * Start a recording.
+   *
+   * @return true if recording started successfully
+   */
+  boolean startRecording(String phoneNumber, long creationTime);
+
+  /**
+   * stops the current recording
+   *
+   * @return call recording data including the output filename
+   */
+  CallRecording stopRecording();
+
+  /**
+   * Recording status
+   *
+   * @return true if there is an active recording
+   */
+  boolean isRecording();
+
+  /**
+   * Get recording currently in progress
+   *
+   * @return call recording object
+   */
+  CallRecording getActiveRecording();
+}
diff --git a/java/com/android/dialer/callrecord/impl/CallRecorderService.java b/java/com/android/dialer/callrecord/impl/CallRecorderService.java
new file mode 100644
index 0000000..ac90d02
--- /dev/null
+++ b/java/com/android/dialer/callrecord/impl/CallRecorderService.java
@@ -0,0 +1,221 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.callrecord.impl;
+
+import android.app.Service;
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.media.MediaRecorder;
+import android.net.Uri;
+import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
+import android.provider.MediaStore;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.dialer.R;
+import com.android.dialer.callrecord.CallRecording;
+import com.android.dialer.callrecord.ICallRecorderService;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class CallRecorderService extends Service {
+  private static final String TAG = "CallRecorderService";
+  private static final boolean DBG = false;
+
+  private MediaRecorder mMediaRecorder = null;
+  private CallRecording mCurrentRecording = null;
+
+  private final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyMMdd_HHmmssSSS");
+
+  private final ICallRecorderService.Stub mBinder = new ICallRecorderService.Stub() {
+    @Override
+    public CallRecording stopRecording() {
+      return stopRecordingInternal();
+    }
+
+    @Override
+    public boolean startRecording(String phoneNumber, long creationTime) throws RemoteException {
+      return startRecordingInternal(phoneNumber, creationTime);
+    }
+
+    @Override
+    public boolean isRecording() throws RemoteException {
+      return mMediaRecorder != null;
+    }
+
+    @Override
+    public CallRecording getActiveRecording() throws RemoteException {
+      return mCurrentRecording;
+    }
+  };
+
+  @Override
+  public void onCreate() {
+    if (DBG) Log.d(TAG, "Creating CallRecorderService");
+  }
+
+  @Override
+  public IBinder onBind(Intent intent) {
+    return mBinder;
+  }
+
+  private int getAudioSource() {
+    return getResources().getInteger(R.integer.call_recording_audio_source);
+  }
+
+  private int getAudioFormatChoice() {
+    // This replicates PreferenceManager.getDefaultSharedPreferences, except
+    // that we need multi process preferences, as the pref is written in a separate
+    // process (com.android.dialer vs. com.android.incallui)
+    final String prefName = getPackageName() + "_preferences";
+    final SharedPreferences prefs = createDeviceProtectedStorageContext()
+            .getSharedPreferences(prefName, MODE_MULTI_PROCESS);
+
+    try {
+      String value = prefs.getString(getString(R.string.call_recording_format_key), null);
+      if (value != null) {
+        return Integer.parseInt(value);
+      }
+    } catch (NumberFormatException e) {
+      // ignore and fall through
+    }
+    return 0;
+  }
+
+  private synchronized boolean startRecordingInternal(String phoneNumber, long creationTime) {
+    if (mMediaRecorder != null) {
+      if (DBG) {
+        Log.d(TAG, "Start called with recording in progress, stopping  current recording");
+      }
+      stopRecordingInternal();
+    }
+
+    if (checkSelfPermission(android.Manifest.permission.RECORD_AUDIO)
+        != PackageManager.PERMISSION_GRANTED) {
+      Log.w(TAG, "Record audio permission not granted, can't record call");
+      return false;
+    }
+
+    if (DBG) Log.d(TAG, "Starting recording");
+
+    mMediaRecorder = new MediaRecorder(getApplicationContext());
+    try {
+      int audioSource = getAudioSource();
+      int formatChoice = getAudioFormatChoice();
+      if (DBG) Log.d(TAG, "Creating media recorder with audio source " + audioSource);
+      mMediaRecorder.setAudioSource(audioSource);
+      mMediaRecorder.setOutputFormat(formatChoice == 0
+          ? MediaRecorder.OutputFormat.AMR_WB : MediaRecorder.OutputFormat.MPEG_4);
+      mMediaRecorder.setAudioEncoder(formatChoice == 0
+          ? MediaRecorder.AudioEncoder.AMR_WB : MediaRecorder.AudioEncoder.AAC);
+    } catch (IllegalStateException e) {
+      Log.w(TAG, "Error initializing media recorder", e);
+      mMediaRecorder.reset();
+      mMediaRecorder.release();
+      mMediaRecorder = null;
+      return false;
+    }
+
+    String fileName = generateFilename(phoneNumber);
+    Uri uri = getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
+            CallRecording.generateMediaInsertValues(fileName, creationTime));
+
+    try {
+      ParcelFileDescriptor pfd = getContentResolver().openFileDescriptor(uri, "w");
+      if (pfd == null) {
+        throw new IOException("Opening file for URI " + uri + " failed");
+      }
+      mMediaRecorder.setOutputFile(pfd.getFileDescriptor());
+      mMediaRecorder.prepare();
+      mMediaRecorder.start();
+
+      long mediaId = Long.parseLong(uri.getLastPathSegment());
+      mCurrentRecording = new CallRecording(phoneNumber, creationTime,
+              fileName, System.currentTimeMillis(), mediaId);
+      return true;
+    } catch (IOException | IllegalStateException e) {
+      Log.w(TAG, "Could not start recording", e);
+      getContentResolver().delete(uri, null, null);
+    } catch (RuntimeException e) {
+      getContentResolver().delete(uri, null, null);
+      // only catch exceptions thrown by the MediaRecorder JNI code
+      if (e.getMessage().indexOf("start failed") >= 0) {
+        Log.w(TAG, "Could not start recording", e);
+      } else {
+        throw e;
+      }
+    }
+
+    mMediaRecorder.reset();
+    mMediaRecorder.release();
+    mMediaRecorder = null;
+
+    return false;
+  }
+
+  private synchronized CallRecording stopRecordingInternal() {
+    CallRecording recording = mCurrentRecording;
+    if (DBG) Log.d(TAG, "Stopping current recording");
+    if (mMediaRecorder != null) {
+      try {
+        mMediaRecorder.stop();
+        mMediaRecorder.reset();
+        mMediaRecorder.release();
+      } catch (IllegalStateException e) {
+        Log.e(TAG, "Exception closing media recorder", e);
+      }
+
+      Uri uri = ContentUris.withAppendedId(
+          MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, mCurrentRecording.mediaId);
+      getContentResolver().update(uri, CallRecording.generateCompletedValues(), null, null);
+
+      mMediaRecorder = null;
+      mCurrentRecording = null;
+    }
+    return recording;
+  }
+
+  @Override
+  public void onDestroy() {
+    super.onDestroy();
+    if (DBG) Log.d(TAG, "Destroying CallRecorderService");
+  }
+
+  private String generateFilename(String number) {
+    String timestamp = DATE_FORMAT.format(new Date());
+
+    if (TextUtils.isEmpty(number)) {
+      number = "unknown";
+    }
+
+    int formatChoice = getAudioFormatChoice();
+    String extension = formatChoice == 0 ? ".amr" : ".m4a";
+    return number + "_" + timestamp + extension;
+  }
+
+  public static boolean isEnabled(Context context) {
+    return context.getResources().getBoolean(R.bool.call_recording_enabled);
+  }
+}
diff --git a/java/com/android/dialer/callrecord/res/values/config.xml b/java/com/android/dialer/callrecord/res/values/config.xml
new file mode 100644
index 0000000..7aabd6c
--- /dev/null
+++ b/java/com/android/dialer/callrecord/res/values/config.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+     Copyright (C) 2015 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+    <bool name="call_recording_enabled">false</bool>
+    <!-- 1 (MIC) for microphone audio source (default)
+         4 (VOICE_CALL) if supported by device for voice call uplink + downlink audio source -->
+    <integer name="call_recording_audio_source">1</integer>
+</resources>
diff --git a/java/com/android/dialer/callrecord/res/xml/call_record_states.xml b/java/com/android/dialer/callrecord/res/xml/call_record_states.xml
new file mode 100644
index 0000000..0d31086
--- /dev/null
+++ b/java/com/android/dialer/callrecord/res/xml/call_record_states.xml
@@ -0,0 +1,1353 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2019 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<call-record-allowed-flags>
+    <!-- Disable recording for Andorra:
+         Article 183 of the Andorran Penal Code sets a prison sentence of one to four years as the
+         punishment for attempting or succeeding to infringe on the privacy of another person
+         without his or her consent. This includes intercepting calls or using technical means to
+         listen, transmit, record or reproduce their calls. Article 185 and 188 of the Andorran
+         Penal Code describe the length of imprisonment when sharing recordings with third parties,
+         even if one has not partaken in their creation, unless the party was unaware of their
+         illicit origin. The attempt to do any of the above is also punishable by law.
+
+         Penal Code, as of 2014:
+           https://sherloc.unodc.org/res/cld/document/codi_penal_andorra_as_of_2014_html/Andorra_codi_penal_as_of_2014.pdf
+    -->
+    <country iso="ad" allowed="false" />
+
+    <!-- Enable recording for Albania:
+         Relevant laws and/or legal precedents:
+         Article 121, 122 and 123 of the Albanian Penal Code cover the right to privacy, wiretapping
+         and harming other via dissemination of their secrets. Based on these, it is not a criminal
+         offense to record your own calls, but sharing them with a third party or using them to harm
+         the other party in said calls is a criminal offense.
+
+         Penal Code: (nonencrypted link)
+           http://rai-see.org/wp-content/uploads/2015/08/Criminal-Code-11-06-2015-EN.pdf
+    -->
+    <country iso="al" allowed="true" />
+
+    <!-- Enable recording for Armenia:
+         The Armenian Criminal Code discusses the legality and punishment of call recordings, when
+         recorded by a third party, otherwise known as wiretapping. Since the Criminal Code does not
+         specifically mention call recording done by a person that is a party to the call, with or
+         without consent, then the act of doing so is not a criminal offense, as it carries no
+         punishment whatsoever.
+
+         Criminal Code:
+           https://www.unodc.org/res/cld/document/armenia_criminal_code_html/Armenia_Criminal_Code_of_the_Republic_of_Armenia_2009.pdf
+
+         Two examples of usage of call recordings, without persecution:
+           https://fip.am/803
+           https://fip.am/4500
+    -->
+    <country iso="am" allowed="true" />
+
+    <!-- Enable recording for Argentina:
+         Argentina follows the continental law system. If a law does not exist, which defines
+         something as a crime, it is not a crime. Judges in Argentina make decisions based on their
+         reading of the law, and not on precedents. Call recording is currently not defined as a
+         crime in any law. This is defined in Section 19 of the Constitution of Argentina.
+
+         Constitution: (nonencrypted link)
+           http://www.senadoctes.gov.ar/constitucion-arg/Constitution%20of%20the%20Argentine%20Nation.htm
+
+         Example of usage of call recordings as legal evidence:
+           https://www.scribd.com/document/326647534/H-P-C-F-s-recurso-de-casacion
+    -->
+    <country iso="ar" allowed="true" />
+
+    <!-- Enable recording for American Samoa:
+         Federal Law 18 USC § 2511(2)(d) defines the recording of a call as legal when one party to
+         the call agrees to it, if said call recording is not done with the intention of committing
+         a crime. This territory of the United States conforms with its Federal legislation.
+         For further information, check 'us'.
+
+         U.S. Code: Title 18 - Crimes and Criminal Procedure:
+           https://www.law.cornell.edu/uscode/text/18/2511
+    -->
+    <country iso="as" allowed="true" />
+
+    <!-- Enable recording for Austria
+         According to Article 93 (3) of Austrian Communications Law, known as TKG 2003
+         Kommunikationsgeheimnis, it is illegal to recordor pass on information about a call, unless
+         you are one of the parties in that call. While recording is not illegal, sharing the
+         recording might be a punishable offense, without the consent of both sides.
+
+         Communications Law:
+           https://www.jusline.at/gesetz/tkg/paragraf/93
+           https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=20002849
+    -->
+    <country iso="at" allowed="true" />
+
+    <!-- Disable recording for Australia:
+         Australian Capital Territory:
+           Subsection 4(3)(b) Listening Devices Act 1992 (ACT)
+             https://www8.austlii.edu.au/cgi-bin/viewdoc/au/legis/act/consol_act/lda1992181/s4.html
+           A person must not use a listening device with the intention of recording a private
+           conversation to which the person is a party. This does not apply when said listening
+           device is used by, or on behalf of, a party to a private conversation if a principal
+           party to the conversation consents to the listening device being so used, and the
+           recording of the conversation is considered by that principal party, on reasonable
+           grounds, to be necessary for the protection of that principal party's lawful interests;
+           or the recording is not made for the purpose of communicating or publishing the
+           conversation, or a report of the conversation, to any person who is not a party to the
+           conversation.
+
+         New South Wales:
+           Subsection 7(3)(b) Surveillance Devices Act 2007 (NSW)
+             https://www.austlii.edu.au/cgi-bin/viewdoc/au/legis/nsw/consol_act/sda2007210/s7.html
+           A person must not knowingly use a listening device to record a private conversation to
+           which the person is a party. This does not apply when a principal party to the
+           conversation consents to the listening device being so used and the recording of the
+           conversation is reasonably necessary for the protection of the lawful interests of that
+           principal party, or is not made for the purpose of communicating or publishing the
+           conversation, or a report of the conversation, to persons who are not parties to the
+           conversation.
+
+         Northern Territory:
+           Subsection 11(1)(a) Surveillance Devices Act 2007 (NT)
+             https://www.austlii.edu.au/cgi-bin/viewdoc/au/legis/nt/num_act/sda200719o2007256/s11.html
+           Subsection 43, Emergency use of listening device in public interest
+             https://www.austlii.edu.au/cgi-bin/viewdoc/au/legis/nt/num_act/sda200719o2007256/s43.html
+           It is an offence to use a listening device to record a private conversation to which the
+           person is not a party and the device is used without the express or implied consent of
+           each party to the conversation. Under Section 43, a person may use a listening device to
+           record a private conversation if at the time of use there are reasonable grounds for
+           believing the circumstances are so serious and the matter is of such urgency that the use
+           of the device is in the public interest.
+
+         Queensland:
+           Subsection 43(2)(a) Invasion of Privacy Act 1971 (Qld)
+             https://www.austlii.edu.au/cgi-bin/viewdoc/au/legis/qld/consol_act/iopa1971222/s43.html
+           A person is guilty of an offence, if the person uses a listening device to record a
+           private conversation and is liable to a maximum penalty of 40 penalty units or
+           imprisonment for 2 years. This does not apply when the person using the listening device
+           is a party to the private conversation.
+
+         South Australia:
+           Subsection 4(2)(a)(ii) Surveillance Devices Act 2016 (SA)
+             https://www.austlii.edu.au/cgi-bin/viewdoc/au/legis/sa/consol_act/sda2016210/s4.html
+           A person must not knowingly use a listening device to record a private conversation to
+           which the person is, or is not a party. The maximum penalty is $15 000 or imprisonment
+           for 3 years. This does not apply if the use of a listening device is done by a party to
+           the private conversation if the use of the device is reasonably necessary for the
+           protection of the lawful interests of that person.
+
+         Tasmania:
+           Subsection 5(3)(b) Listening Devices Act 1991 (TAS)
+             https://www.austlii.edu.au/cgi-bin/viewdoc/au/legis/tas/consol_act/lda1991181/s5.html
+           A person shall not use a listening device to record a private conversation to which the
+           person is, or is not, a party. This does not apply when the listening device is used to
+           obtain evidence or information in connection with an imminent threat of serious violence
+           to persons or of substantial damage to property, or a serious narcotics offence, if the
+           person using the listening device believes on reasonable grounds that it was necessary to
+           use the device immediately to obtain that evidence or information. This does not apply if
+           a principal party to the conversation consents to the listening device being so used and
+           the recording of the conversation is reasonably necessary for the protection of the
+           lawful interests of that principal party or the recording of the conversation is not made
+           for the purpose of communicating or publishing the conversation, or a report of the
+           conversation, to persons who are not parties to the conversation.
+
+         Victoria:
+           Subsection 6(1) Surveillance Devices Act 1999 (NSW)
+             https://www.austlii.edu.au/cgi-bin/viewdoc/au/legis/vic/consol_act/sda1999210/s6.html
+           A person must not knowingly use a listening device to record a private conversation to
+           which the person is not a party. The penalty is up to 2 years imprisonment and up to 240
+           penalty units, or both.
+
+         Western Australia:
+           Subsection 5(3)(d) Surveillance Devices Act 1998 (WA)
+             https://www.austlii.edu.au/cgi-bin/viewdoc/au/legis/wa/consol_act/sda1998210/s5.html
+           Subsection 26(1)(2)(3)(b)
+             https://www.austlii.edu.au/cgi-bin/viewdoc/au/legis/wa/consol_act/sda1998210/s26.html
+           A person shall not use a listening device to record a conversation to which that person
+           is, or is not, a party. The penalty is $5 000 or imprisonment for 12 months, or both.
+           This does not apply to the use of a listening device by a party to a private conversation
+           if that principal party consents to its use, as reasonably necessary for the protection
+           of the lawful interests of that principal party. It is also not applicable in cases where
+           a person who is a party to a private conversation, or is acting on behalf of a party to a
+           private conversation, uses a listening device to record said private conversation,
+           believing that the use of the listening device is in the public interest.
+
+         Summary:
+           Most states and territories allow to make a recording of your personal conversations
+           under specific circumstances. The wording of the laws themselves are open to
+           legal interpretation and can be used against users. Until the laws above are presented
+           in a more clear way or enough evidence is shown to substantiate how the courts interpret
+           them when prosecuting private citizens, Australia shall not have call recording enabled.
+    -->
+    <country iso="au" allowed="false" />
+
+    <!-- Enable recording for Bosnia and Herzegovina:
+         Republika Srpska:
+           Article 155 - Unauthorized eavesdropping and tone recording.
+           Paragraph 1 specifically states 'which is not intended for him', which in context means
+           that a person may record anything which is intended for him or her. Paragraph 2 defines
+           the creation of a record with the intent to abuse and/or misuse it, or the act of sharing
+           it with a third party as a criminal offense.
+           Other Articles that might be relevant:
+             Article 153, Privacy of letters, telegrams and others.
+             Article 157, Unauthorized use of Personal Data.
+
+         Federation of Bosnia and Herzegovina:
+           Article 188, Unauthorized Tapping and Sound Recording, defines the recording of any call
+           'which is not intended for public or private knowledge', as a criminal offense.
+
+         Brčko District:
+           Article 185 of the Criminal Code specifically states 'which was not intended for him',
+           which in context means that a party may record any call which is indended for said party.
+           Wiretapping is considered a crime and is criminally punishable.
+
+         Further information:
+           The Criminal Codes of the legal entities of Bosnia and Herzegovina, namely Republika
+           Srpska, the Federation of Bosnia and Herzegovina and the Brčko District, can all be found
+           through the link below. Please note that these three entities currently have separate
+           laws, due to administrative and/or judicial autonomy. It should be noted that these
+           different entities have over 15 police forces, each with its own jurisdiction.
+           https://www.legislationline.org/documents/section/criminal-codes/country/40/Bosnia%20and%20Herzegovina/show
+    -->
+    <country iso="ba" allowed="true" />
+
+    <!-- Enable recording for Bangladesh:
+           Based on the Evidence Act of 1872, audio recordings may be admissible as a form of
+           evidence. In civil cases, call recording may be used, but judges decide on when they are
+           admissable. Recordings are considered admissible evidence when a witness is deposed and
+           testifies to their validity before a court. Parties may rely on recordings during civil
+           cases, in order to support their side's version of events. While the use of audio
+           recordings as a form of evidence is common, the Supreme Court has not stated whether
+           recordings can be used as evidence blindly, thus their use is on a case-to-case basis.
+
+           Legal discussion:
+             https://www.thedailystar.net/news/your-advocate-2
+
+           Evidence Act of 1872:
+             https://acc.portal.gov.bd/sites/default/files/files/acc.portal.gov.bd/law/7e753733_a368_471e_aef9_b4525cb5082c/The_Evidence_Act,_1872_(Act_No._I_of_1872).pdf
+    -->
+    <country iso="bd" allowed="true" />
+
+    <!-- Enable recording for Belgium:
+         As stated in the official response below, Belgian law does not consider the recording of
+         one's personal communications as a punishable offense. Using said recordings in a
+         fraudulent and/or demeaning way does carry the potential for liability and/or prosecution
+         by the state. The recording of one's own calls might be regarded as a form of personal data
+         processing, depending on the specifics of the case. Specific laws and cases are quoted
+         within the official response. The Belgian municipality of Baarle-Hertog, consisting of a
+         number of exclaves, has territory which is within the Dutch province of North Brabant, and
+         as such it may not be within the confines of the Belgian ISO and its inherent laws.
+
+         Official Response by Belgian Minister (QRVA 50 157, pages 20199-20202, 24/02/2003):
+           https://www.lachambre.be/QRVA/pdf/50/50K0157.pdf
+    -->
+    <country iso="be" allowed="true" />
+
+    <!-- Enable recording for Bulgaria:
+         Article 32(2) of the Bulgarian Constitution states that it is an inviolable right for
+         people to not be followed, photographed, recorded (audio and/or video) without being
+         notified and/or despite his or her explicit disagreement to said actions, except where the
+         law allows for said actions. The Code of Criminal Procedure, Part III, Articles 125 and
+         126, page 34, deal with the use of recordings as evidence. No law explicitly tackles the
+         issue of consent when recording one's personal telephone calls. Based on the available
+         documentation and the attached example of lack of state prosecution, recording one's own
+         calls is not legal, nor is it a criminal offense. Personal recordings are unlikely to be
+         a valid form of evidence in a court of law.
+
+         Constitution:
+           https://www.parliament.bg/bg/const
+
+         Code of Criminal Procedure:
+           https://www.mvr.bg/docs/default-source/normativnauredba/3da73fed-npk-pdf.pdf
+
+         Example of lack of state prosecution:
+           https://goo.gl/HQPUup
+    -->
+    <country iso="bg" allowed="true" />
+
+    <!-- Enable recording for Brazil:
+         Call recording is not a criminal offense when it the recording is made by one of the two
+         parties of said call. Interception by a third party is illegal and punishable by law,
+         unless done according to the requirements set out in Law 9296. There may be some debate, as
+         far as the use of a call recording as legitimate evidence. Further information is available
+         in the attached legal discussions below.
+
+         Law 9296 of the 24th of July 1996: (nonencrypted link)
+           http://www.planalto.gov.br/ccivil_03/leis/l9296.htm
+
+         Constitution of Brazil, Art 5º, X and XII:
+           https://www2.camara.leg.br/legin/fed/consti/1988/constituicao-1988-5-outubro-1988-322142-publicacaooriginal-1-pl.html
+
+         Legal discussions:
+           https://direitosbrasil.com/gravar-conversa-e-crime/
+           https://meusitejuridico.com.br/2018/04/02/stj-e-licita-gravacao-de-conversa-feita-pelo-destinatario-de-solicitacao-de-vantagem-indevida
+           https://moisesandrade.jusbrasil.com.br/artigos/121944095/constitucionalidade-do-uso-da-gravacao-clandestina-como-meio-de-prova
+    -->
+    <country iso="br" allowed="true" />
+
+    <!-- Enable recording for Belarus:
+         Article 28 of the Constitution of Belarus covers the right to privacy. Article 179 of the
+         Criminal Code of Belarus covers situations in which a person's privacy is violated by way
+         of any secret being shared without his or her consent, but no specific term of imprisonment
+         or fine is mentioned. The wording of the article is aimed at the collecting and sharing of
+         'a personal or family secret of another person'. Creating a call recording for personal use
+         is not covered by this article, as privacy is not inherently guaranteed. The use of call
+         recordings as evidence in a court of law is dubious. The sharing of a call recording could
+         be considered as punishable by law, depending on the circumstances.
+
+         Belarusian Constitution: (nonencrypted link)
+           http://www.pravo.by/pravovaya-informatsiya/normativnye-dokumenty/konstitutsiya-respubliki-belarus
+
+         Belarusian Criminal Code:
+           https://etalonline.by/?type=text&regnum=HK9900275#load_text_none_1_
+    -->
+    <country iso="by" allowed="true" />
+
+    <!-- Enable recording for Canada:
+         Any intended recipient of a communication is entitled to record it, based on Section 184(2)
+         Subsection (1) of the Criminal Code of Canada. There are numerous legal cases that validate
+         the interception of private communications by parties to the conversation as not illegal.
+         For a more in-depth look, refer to the LegalTree article below.
+
+         Criminal Code:
+           https://laws-lois.justice.gc.ca/eng/acts/C-46/page-1.html
+
+         LegalTree article:
+           https://legaltree.ca/node/908
+
+         Legal articles:
+           https://lambertavocatinc.com/avocat-montreal/enregistrer-conversation-legal/
+           https://www.avocat.qc.ca/affaires/iitelephone.htm
+    -->
+    <country iso="ca" allowed="true" />
+
+    <!-- Disable recording for Switzerland:
+         According to Article 179 of the Swiss Criminal Code of 21 December 1937, it is a criminal
+         offense to store, record, or share the recording of a call, even when one is part of said
+         call. Explicit consent is required by both parties for a recording to be legal.
+
+         Criminal Code:
+           https://www.admin.ch/opc/en/classified-compilation/19370083/index.html#a179ter
+    -->
+    <country iso="ch" allowed="false" />
+
+    <!-- Enable recording for Chile:
+         The Chilean law is considered a type of civil law, hence judges base their decisions on
+         their own reading of the law. The Chilean Supreme Court ruled in favor of accepting
+         one-party consent call recording as a form of legal evidence, hence the act of recording
+         your own calls is not criminally punishable, as can be seen in the Chilean Penal Code.
+
+         Penal Code:
+           https://www.leychile.cl/Navegar?idNorma=1984
+
+         Article on one-party consent:
+           https://radio.uchile.cl/2018/04/22/grabacion-es-aceptada-como-prueba-en-juicio-por-practicas-antisindicales/
+    -->
+    <country iso="cl" allowed="true" />
+
+    <!-- Enable recording for China:
+         No clear definition exists on the matter of call recordings being made by a private
+         citizen within the Criminal Law of the People's Republic of China. Depending on whether
+         said call recording was made and/or published with malicious intent, it may or may not be
+         admissible in court. For further information
+
+         Criminal Law of the People's Republic of China: (nonencrypted link)
+           http://english.court.gov.cn/2015-12/01/content_22595464.htm
+
+         Supreme People's Court Provisions on Evidence in Civil Procedures: (nonencrypted link)
+           http://en.pkulaw.cn/display.aspx?cgid=38083&lib=law
+    -->
+    <country iso="cn" allowed="true" />
+
+    <!-- Enable recording for Costa Rica:
+         One may record one's own calls, as long as they are calls between said person and only one
+         other party, that is two say two sides. Calls between 3 or more people can not be legally
+         recorded without all sides agreeing to one person doing so, as long as said person is a
+         part of the call and not wiretapping or eavesdropping. Recording calls with more than 2
+         participants requires the express consent of all other parties. Article 29 of the
+         Communication Law of 1994 specifies under what circumstances one may or may not do so.
+
+         Communication Law: (nonencrypted link)
+           http://www.pgrweb.go.cr/scij/Busqueda/Normativa/Normas/nrm_texto_completo.aspx?param1=NRM&nValor1=1&nValor2=16466&strTipM=FN
+
+         Article:
+           https://www.laprensalibre.cr/Noticias/detalle/75929/ojo-conversaciones-grabadas-pueden-usarse-como-prueba-en-juicio
+    -->
+    <country iso="cr" allowed="true" />
+
+    <!-- Enable recording for Cyprus:
+         The Cypriot Penal Code does not explicitly cover the act of wiretapping or recording one's
+         own calls. Based on this, it is not a criminal offense to record personal calls. Article
+         369 of the Cypriot Penal Code states that anyone who knows that another is planning to
+         commit a criminal offense, yet fails to use any reasonable means to prevent said crime, is
+         guilty of misconduct, which can be used as a reason for recording one's own calls, should
+         the need arise to quote a legal document.
+
+         Penal Code: (nonencrypted link)
+           http://www.cylaw.org/nomoi/enop/non-ind/0_154/index.html
+    -->
+    <country iso="cy" allowed="true" />
+
+    <!-- Enable recording for Czech Republic:
+         Case Law File Number 21 502/2000 of the Supreme Court specifies that even when evidence is
+         acquired or provided in contravention to legal regulations and/or personal rights, it shall
+         not be deemed as inadmissible. This, as well as other information, is accessible in the
+         Constitutional Court Finding 191/05 of the 13th of September 2006.
+
+         Constitutional Court Finding:
+           https://nalus.usoud.cz/Search/GetText.aspx?sz=1-191-05_2
+    -->
+    <country iso="cz" allowed="true" />
+
+    <!-- Disable recording for Germany:
+         According to Section 201 of the German Criminal Code - Violation of the privacy of the
+         spoken word, making an audio recording of the privately spoken words of another or making
+         such a recording accessible by a third party will result in up to three years of
+         imprisonment. Article 10 of the German Constitution explicitly states that the secrecy of
+         telecommunications is inviolable. There are notable exceptions, such as the use of
+         recordings when in a legitimate self-defense situation. Article 227 of the German Civil
+         Code notes that acting in one's own defense is not unlawful, which is also explained in
+         Article 32 of the German Criminal Code. Article 88 of the Telecommunications Act defines
+         telecommunications secrecy. The German municipality of Büsingen am Hochrhein is an exclave
+         within the territorial confines of Switzerland, and as such it may not be within the
+         confines of the German ISO and its inherent laws.
+
+         Civil Code:
+           https://www.gesetze-im-internet.de/bgb/__227.html
+
+         Criminal Code:
+           https://www.gesetze-im-internet.de/stgb/__32.html
+
+         Constitution:
+           https://www.gesetze-im-internet.de/gg/art_10.html
+
+         Telecommunications Act:
+           https://www.gesetze-im-internet.de/tkg_2004/__88.html
+
+         Wikipedia article on self-defense laws in Germany:
+           https://de.wikipedia.org/wiki/Notwehr_(Deutschland)
+
+         Explanation of lawful use of a recording in a legal dispute:
+           https://www.anwalt.de/rechtstipps/gespraechsmitschnitte-als-beweismittel-ungeeignet_057458.html
+    -->
+    <country iso="de" allowed="false" />
+
+    <!-- Enable recording for Denmark, Faroe Islands and Greeenland:
+         Chapter 27, Article 263(3) of the Criminal Code of Denmark denotes that a person is liable
+         for criminal punishment when he or she intercepts or records telephone conversations to
+         which he or she is not a party. The articles in Chapter 27 cover a lot of different
+         situations, including the dissemination of recordings, which may lead to a fine or prison
+         sentence. The act of recording a conversation that one is a part of is not covered
+         explicitly, hence it is not a criminal offense in the eyes of the law.
+
+         Criminal Code:
+           https://www.retsinformation.dk/Forms/r0710.aspx?id=164192#Kap27
+    -->
+    <country iso="dk,fo,gl" allowed="true" />
+
+    <!-- Enable recording for Estonia:
+         Recording your calls for personal use is not a criminal offense. Sharing said calls with a
+         third party is a criminal offence, hence punishable by law, except in cases where said
+         calls are shared by a journalist.
+
+         Constitution, Paragraph 43:
+           https://www.pohiseadus.ee/index.php?sid=1&p=43
+
+         Instructions for call recording (GDPR equivalent):
+           https://www.aki.ee/sites/www.aki.ee/files/elfinder/article_files/Telefonik%C3%B5nede%20salvestamise%20lubatavuse%20juhend.pdf
+
+         Legal article:
+           https://digi.geenius.ee/rubriik/uudis/millistel-juhtudel-tohib-eestis-telefonikone-salvestada-ja-selle-sisu-avaldada/
+    -->
+    <country iso="ee" allowed="true" />
+
+    <!-- Enable recording for Spain:
+         Based on the decision of the Spanish Constitutional Tribunal of November the 29th, 1984, it
+         is legal for a party to record his or her calls without notifying the other party. Sharing
+         said recording with a third party is not protected and may make the party that has shared
+         the recording liable to a civil suit, to be initiated by the aggrieved party. Unless done
+         so for judicial purposes, it is punishable to disclose or share the recording or the gist
+         of the recording to other parties. The town of Llívia is a Spanish exclave within the
+         territory of the Republic of France, and as such, it may not be within the confines of the
+         Spanish ISO and its inherent laws.
+
+         Decision of the Spanish Constitutional Tribunal:
+           https://hj.tribunalconstitucional.es/eu/Resolucion/Show/367
+
+         Legal articles: (nonencrypted link)
+           http://belegal.com/blog-by-antonio-flores/validity-of-recorded-telephone-conversations-in-spain/
+           https://www.fonvirtual.com/blog/la-grabacion-de-llamadas/
+           https://www.legalisconsultores.es/2014/04/es-legal-realizar-grabaciones-su-aportacion-en-juicios/
+    -->
+    <country iso="es" allowed="true" />
+
+    <!-- Enable recording for Finland:
+         As a private citizen, one may record any call they participate in. There is no requirement
+         to make other parties aware of the recording, but the use of said recordings, depending on
+         their content, may be subject to various laws, such as data protection (privacy)
+         legislation, libel laws, laws governing trade and national secrets, non-disclosure
+         agreements and so on.
+
+         Bureau of Data Ombudsman:
+         https://web.archive.org/web/20180517050133/http://www.tietosuoja.fi/sv/index/useinkysyttya/puheluidennauhoittaminen.html
+    -->
+    <country iso="fi" allowed="true" />
+
+    <!-- Enable recording for France, Saint Barthélemy, French Guayana, Guadeloupe, Saint Martin,
+                              Martinique, New Caledonia, French Polynesia, Saint Pierre & Miquelon,
+                              Réunion, Wallis-et-Futuna and Mayotte:
+         While recording calls without consent, as a third party, is punishable, it depends on
+         whether said recording was created or used with a malicious intent. Judges are free to view
+         said recordings as a form of evidence and base their final decisions with their help.
+         Recording your own calls as a private citizen is not a criminal offense. Sharing said
+         recordings, with the intent to harm the other party in any way, is a criminal offense.
+
+         Penal Code:
+           https://www.legifrance.gouv.fr/affichCode.do;jsessionid=3E84EAC0F63D49FC16A28B8D90EFF1D2.tplgfr44s_2?idSectionTA=LEGISCTA000006165309&cidTexte=LEGITEXT000006070719&dateTexte=20150413
+
+         Civil Code:
+           https://www.legifrance.gouv.fr/affichCode.do;jsessionid=1A7384A63066DBE1E1D8C732E698F844.tplgfr23s_3?idSectionTA=LEGISCTA000006117610&cidTexte=LEGITEXT000006070721&dateTexte=20190606
+
+         Legal article on call recordings as evidence:
+           https://www.annuaireavocats.fr/articles/enregistrer-une-conversation-a-linsu-dune-personne-est-ce-legal
+
+         Legal article on recording in the workplace:
+           https://www.cnil.fr/fr/lecoute-et-lenregistrement-des-appels-sur-le-lieu-de-travail
+    -->
+    <country iso="fr,bl,gf,gp,mf,mq,nc,pf,pm,re,wf,yt" allowed="true" />
+
+    <!-- Enable recording for United Kingdom:
+         Recording one's own calls is not a criminal offence and is not prohibited. As long as the
+         recording is for personal use, consent and/or notification of the other party are not
+         required. Call recordings can be used as evidence, since it is based on a trite law.
+         Sharing said call recordings with a third party, without consent, may be a criminal offence
+         and punishable.
+
+         Use as evidence (p. 3):
+           https://www.bailii.org/uk/cases/UKPC/1954/1954_43.pdf
+
+         Legal articles:
+           https://www.computertel.co.uk/article?ref=Call-Recording-Law-in-the-UK-2018-edition
+           https://www.dma-law.co.uk/is-it-illegal-to-record-conversations/
+    -->
+    <country iso="gb" allowed="true" />
+
+    <!-- Enable recording for Georgia:
+         The Constitution of Georgia, Chapter Two - Fundamental Human Rights, Article 15(2) states
+         that personal communication(s) are inviolable and that said right may only be restricted in
+         accordance with the law, to ensure national security or public safety, or to protect the
+         rights of other parties, insofar as it is necessary in a democratic society, based on a
+         court decision or without a court decision in cases of urgent necessity, as provided by the
+         law. Articles 157, 158 and 159 of the Criminal Code of Georgia deal with the disclosure of
+         private information, personal data, the violation of the secrecy of private communication
+         and the violation of secrecy of personal correspondence, phone conversations or other kinds
+         of communication. The document does not specify a situation in which one side of a
+         conversation records without the other side's knowledge or consent, thus the act of
+         recording one's conversations is in a legally gray area. All of the above articles
+         explicitly note that no criminal liability can be incurred if the gathered information is
+         submitted to investigative authorities.
+
+         Constitution:
+           https://matsne.gov.ge/en/document/view/30346?publication=35
+
+         Criminal Code of Georgia:
+           https://matsne.gov.ge/en/document/view/16426?publication=187&scroll=62067
+    -->
+    <country iso="ge" allowed="true" />
+
+    <!-- Enable recording for Greece:
+         Section 2 of Article 370A of the Greek Penal Code bans it, subarticle 4 offers exceptions
+         when no other evidence is present. Decision 53/2010 of the Supreme Criminal Court limits
+         evidence submitting to third parties that found the recording 'by accident'. Decision
+         277/2014 of the Supreme Criminal Court acquitted a guilty party and deemed the presented
+         recordings admissable. Article 25 of the Penal Code states that, any action is not illegal
+         if it was done so to protect the property or safety of oneself or of another party,
+         provided that the crime of sharing the recording is a lesser one in comparison.
+
+         Legal discussion:
+           https://uk.practicallaw.thomsonreuters.com/w-010-1738
+    -->
+    <country iso="gr" allowed="true" />
+
+    <!-- Enable recording for Croatia:
+         Article 143 of the Croatian Criminal Code, Paragraph 1 notes that the recording of another
+         person's privately uttered words is a criminal offense, when said words are not 'intended
+         for his or her attention' and could lead to imprisonment not exceeding three years.
+         Paragraph 2, which holds the same punishment, indicated that situations in which the
+         recording, its transcription or the 'gist' of said recording being shared as an equal
+         crime. Paragraph 4 states that there is no criminal offence if said acts are committed in
+         'the public interest or another interest prevailing over the interest to protect the
+         privacy of the person being recorded or eavesdropped on'. Prosecution is made per request
+         and the state does not initiate it, which renders the matter to the level of a civil case
+         and not to that of a criminal case.
+
+         Croatian Criminal Code:
+           https://www.legislationline.org/documents/section/criminal-codes/country/37/Croatia/show
+    -->
+    <country iso="hr" allowed="true" />
+
+    <!-- Enable recording for Hungary:
+         Sections 413 and 418 define the Breach of Trade and/or Business Secrecy as a criminal
+         offense. There is no mention of wiretapping and/or eavesdropping as a criminal offense.
+         The Hungarian Data Protection and Freedom of Information Agency (DPA) created a Guidance in
+         2016, for cases concerning situations which include an individual as one side of the
+         conversation, and a data processing entity as the other side. This guidance should not be
+         considered relevant, as it does not deal with the communications of individuals. No
+         pertinent articles or paragraphs were found in the Hungarian Criminal Code, which in effect
+         equates to there being no punishment for the recording of personal calls.
+
+         DPA 2016 Guidance:
+           https://www.naih.hu/files/2016_05_09_tajekoztato_hangfelvetelekrol.pdf
+
+         Hungarian Criminal Code:
+           https://www.legislationline.org/documents/section/criminal-codes/country/25/Hungary/show
+    -->
+    <country iso="hu" allowed="true" />
+
+    <!-- Disable recording for Indonesia:
+         Based on Article 26 of both Law Number 11 of 2008 and its revision, Law Number 19 of 2016,
+         call recording is defined on its own and requires one to obtain consent from the other
+         party when recording calls, although it can be used as a form of evidence. Whether
+         recording another person without his or her consent is a criminal offense that is
+         prosecuted by the country itself is not clear and further information should be gathered by
+         a native speaker.
+
+         Law 11 of 2008 (first file):
+           https://www.hukumonline.com/pusatdata/detail/27912/nprt/1011/uu-no-11-tahun-2008-informasi-dan-transaksi-elektronik
+
+         Law 19 of 2016:
+           https://jdih.kominfo.go.id/produk_hukum/view/id/555/t/undangundang+nomor+19+tahun+2016+tanggal+25+november+2016
+    -->
+    <country iso="id" allowed="false" />
+
+    <!-- Enable recording for Ireland:
+         The Irish Constitution does not specifically state a right to privacy. Subsection (6) of
+         section 98  of the Interception of Postal Packets and Telecommunications Messages
+         (Regulation) Act of 1993 defines interception of a call in such a way, that deems the
+         recording of a call by one party to the call legal. Whether said call recording can be used
+         as evidence or infringes upon a person's privacy is a complicated matter that can only be
+         decided on a case-by-case basis. Subsection (2) of section 98 goes on to elabore on cases
+         in which call recordings are legal, such as in the interests of the security of the State
+         (c), for the prevention or detection of crime or for the purpose of any criminal
+         proceedings (b) and others.
+
+         Telecommunications Messages Act of 1993: (nonencrypted link)
+           http://www.irishstatutebook.ie/eli/1993/act/10/enacted/en/print.html
+
+         Legal discussions:
+           https://www.mhc.ie/latest/insights/big-brother-is-watching-but-is-he-listening-too
+           https://www.irishtimes.com/news/crime-and-law/q-a-what-are-the-legal-implications-1.1740070
+    -->
+    <country iso="ie" allowed="true" />
+
+    <!-- Enable recording for Israel and Palestine:
+         Israeli law specifies that call recording is illegal and punishable when neither party in
+         said conversation is aware of said act of recording. Either party in a conversation can
+         record his or her calls without being legally required to inform the other party.
+         Due to legal ambiguity, it is currently impossible to determine which set of laws should be
+         taken under consideration when recording personal calls within the Palestinian territories.
+         This is relevant as the Occupied Palestinian Territory makes use of the Mobile Country Code
+         registered to Israel. Palestine's ISO is set as disabled, since if it is in use there is no
+         legal way to determine which set of laws are being used, due to the differing laws used
+         in parts of it.
+
+         The Wiretapping Law, 5739-1979:
+           https://www.nevo.co.il/law_html/law01/077_001.htm
+
+         Information on State of Palestine:
+           https://en.wikipedia.org/wiki/Palestinian_law#Statutes_and_legislation
+
+         News articles:
+           https://www.globes.co.il/news/article.aspx?did=1001066185
+           https://www.ynet.co.il/articles/0,7340,L-3043583,00.html
+    -->
+    <country iso="il" allowed="true" />
+    <country iso="ps" allowed="false" />
+
+    <!--Enable recording for India:
+         No clear definition exists on the matter of call recordings being made by one side.
+         Depending on whether said call recording was made and/or published with malicious intent,
+         it may or may not be admissible in court, and/or punishable by law. There are a number of
+         precedents and legal definitions, which are available below.
+
+         Legal discussion:
+           https://copyright.lawmatters.in/2012/02/recording-telephonic-conversations.html
+    -->
+    <country iso="in" allowed="true" />
+
+    <!-- Disable recording for Iceland:
+         According to the Electronic Communications Act, No. 81, recording one's own telephone
+         conversations without notifying the other party can make the recording party liable to
+         fines or imprisonment of up to six months in the case of serious or repeated violations, as
+         explicitly stated in Article 74. Article 48 covers the Recording of telephone calls and
+         states that the party to a telephone conversation that wishes to record said conversation
+         shall, when it commences, notify the opposite party of his or her intent to do so. This is
+         not required when the opposite party can clearly be assumed to be aware of the recording.
+
+         Electronic Communications Act:
+           https://www.government.is/Publications/Legislation/Lex/?newsid=86c9a6a9-fab5-11e7-9423-005056bc4d74
+    -->
+    <country iso="is" allowed="false" />
+
+    <!-- Enable recording for Iran:
+         Based on Article 25 of the Iranian Constitution, recording one's own calls, as a private
+         citizen for archival reasons, is not illegal. The sharing of said recordings with a third
+         party is forbidden based on the aforementioned legal document. According to Article 730 of
+         the Iranian Cybercrime Law, wiretapping a call which can be defined as non-public is a
+         crime and may lead to a punishment in the form of imprisonment for a period of six months
+         to two years, or a fine of ten to forty million rials, or both. There is currently no
+         punishment for the act of recording one's own calls in the Iranian Penal Code, thus the act
+         itself is not criminally punishable. Sharing said recordings in a way that causes injury to
+         the other party might be criminally punishable. Caution is advised, due to the geopolitical
+         situation surrounding the Islamic Republic of Iran.
+
+         Constitution:
+           https://www.wipo.int/edocs/lexdocs/laws/en/ir/ir001en.pdf
+         Penal Code of 2013 (in Persian):
+           https://www.refworld.org/cgi-bin/texis/vtx/rwmain/opendocpdf.pdf?reldoc=y&docid=5447c9274
+         Cybercrime Law (in Persian):
+           https://www.cyberpolice.ir/page/42981
+         Legal article (in Persian):
+           https://www.irna.ir/news/83268974/%D8%B6%D8%A8%D8%B7-%D9%85%D9%83%D8%A7%D9%84%D9%85%D9%87-%D8%AA%D9%84%D9%81%D9%86%DB%8C-%D8%AC%D8%B1%D9%85-%D9%86%DB%8C%D8%B3%D8%AA
+    -->
+    <country iso="ir" allowed="true" />
+
+    <!-- Enable recording for Italy and Vatican City State:
+         It is not illegal to record a conversation, as parties to calls automatically accept the
+         risk that a call may be recorded. Making a recording available to other parties is a
+         criminal offense, when done so for reasons other than protecting either one's own rights or
+         other parties' rights. Articles 23 and 167, in the Privacy Code, deem that the crimes
+         provided for therein are punishable only if said acts result in harm. According to the
+         Supreme Court of Cassation, recorded conversations are legal and can be used as evidence in
+         court, even if the other party is unaware of being recorded, provided that it is not
+         recorded by a third party. The Italian comune of Campione d'Italia features an exclave,
+         situated within the Swiss canton of Ticino, and as such it may not be within the confines
+         of the Italian ISO and its inherent laws.
+
+         Legal articles:
+           https://www.altalex.com/index.php?idnot=53369
+           https://web.archive.org/web/20161011100301/http://notizie.tiscali.it/socialnews/articoli/polimeni/13230/registrare-di-nascosto-per-la-cassazione-e-legale/
+    -->
+    <country iso="it,va" allowed="true" />
+
+    <!-- Enable recording for Japan:
+         Recording one's own calls is neither a criminal offense, nor illegal. Wiretapping and
+         leaking information gained from a recording is illegal and may be criminally punishable.
+         Recording as a third party is a criminal offense, when done so without the consent of at
+         least one party to the conversation. Recordings obtained without consent from both sides
+         will not be admitted as evidence in a criminal case, but are admitted as such in most civil
+         cases, unless it was obtained in a method, which the court deems as unacceptable. If the
+         recording infringes one's personal rights or discloses trade secrets, sharing said
+         recording might lead to civil cases. In work-related instances, one may record and divulge
+         information under the protection of the Whistleblower Protection Act of 2004. The Supreme
+         Court of Japan's Decision of the 12th of July 2000, case number 1999 (A) 96, was in favor
+         of admitting a tape recording as evidence, which was made by one party to a conversation,
+         without the other party's consent.
+
+         Whistleblower Protection Act: (nonencrypted link)
+           http://drasuszodis.lt/userfiles/Japan%20Whistleblower%20Protection%20Act.pdf
+
+         Decision of the Supreme Court of Japan: (nonencrypted link)
+           http://www.courts.go.jp/app/hanrei_en/detail?id=494
+
+         Legal articles: (nonencrypted link)
+           https://www.moneypost.jp/292939
+           https://president.jp/articles/-/15666
+           https://www.hrpro.co.jp/trend_news.php?news_no=636
+           https://kumaben.com/recording-audio-without-consent/
+           https://www.mot-net.com/blog/efficiency-of-operations/6737
+           https://milight-partners-law.hatenablog.com/entry/2015/08/31/152333
+
+         Legal discussion:
+           https://blogs.yahoo.co.jp/unyieldingspirit2007/24529523.html
+    -->
+    <country iso="jp" allowed="true" />
+
+    <!-- Enable recording for South Korea:
+         According to Article 3(1) of the Protection of Communications Secrets Act, it is forbidden
+         to wiretap, record or listen to any conversation between other parties. Article 4 defines
+         recordings obtained by way of illegal recording or wiretapping as inadmissible, hence they
+         can not be used as evidence in a trial or disciplinary procedure. Article 14 goes on to
+         specify that no person shall record a conversation between other parties, that is not
+         public, or listen to said parties' conversation through the use of electronic or mechanical
+         devices. Definitions of recording, wiretapping and other such terms may be found in Article
+         2. The Protection of Communications Secrets Act clearly defines that recording is not legal
+         when done by a third party, but does not specifically discuss whether whether both parties
+         to a conversation need to agree to a recording. Since there is no penalty listed, recording
+         one's own conversations should be in, at worst, a gray area that should still not make the
+         act punishable. Similarly, whether recordings made without consent can be used as evidence
+         is legally unclear.
+
+         Protection of Communications Secrets Act:
+           https://elaw.klri.re.kr/kor_service/lawView.do?hseq=31731&lang=ENG
+    -->
+    <country iso="kr" allowed="true" />
+
+    <!-- Enable recording for Liechtenstein:
+         Recording a call between an organization and an individual is illegal, when done without
+         notification and/or consent. Recording a call between individuals is illegal and punishable
+         when transmitting said recording or information to a third party, and/or when the person
+         that initiates the recording is not part of the conversation. This means that recording a
+         call when you are one of the two parties is legal, even without notifying the other party.
+         Legal action must be initiated by the aggrieved party. The following is defined in Article
+         120 of the Criminal Code of 24 June 1987 (StGB), points 1, 2, 2a and 3. Article 100 of the
+         Constitution may be pertinent to use of call recordings as evidence.
+
+         Criminal Code of 24 June 1987 (StGB):
+           https://www.regierung.li/media/medienarchiv/311_0_11_07_2017_en.pdf.
+
+         Constitution:
+           https://www.regierung.li/media/medienarchiv/101_01_01_2012_en.pdf?t=2.
+    -->
+    <country iso="li" allowed="true" />
+
+    <!-- Enable recording for Sri Lanka:
+         Part IV/59 of the Sri Lankan Telecommunications Act defines the penalty for eavesdropping
+         on a call. The Sri Lankan Penal Code does not cover the act of recording one's own calls,
+         hence the act is not criminally punishable.
+
+         Telecommunications Act:
+           https://www.lawnet.gov.lk/1947/12/31/sri-lanka-telecommunications-2/
+
+         Penal Code:
+           https://www.lawnet.gov.lk/penal-code-consolidated-2/
+
+         Article: (nonencrypted link)
+           http://www.dailymirror.lk/article/PTL-tampered-with-phone-recording-system-ASG-135574.html
+    -->
+    <country iso="lk" allowed="true" />
+
+    <!-- Enable recording for Lithuania:
+         Article 166 of the Lithuanian Criminal Code defines that violations of a person's
+         correspondence, by unlawfully wiretapping a person's conversations as a criminal offense,
+         which could lead to a term of imprisonment of up to two years, a fine or community service.
+         The wording of said article is unclear and only mentions electronic communication networks
+         and recording and/or wiretapping as a third party, and not as one of the two parties.
+         Article 61 of the Law on Electronic Communications defines confidentiality of
+         communications, as far as situations like those covered by GDPR, as in the handling of
+         information between individuals and legal entities, and should therefore not be taken into
+         account.
+
+         Lithuanian Criminal Code:
+           https://e-seimas.lrs.lt/portal/legalActPrint/lt?jfwid=q8i88l10w&documentId=a84fa232877611e5bca4ce385a9b7048&category=TAD
+
+         Lithuanian Law on Electronic Communications:
+            https://e-seimas.lrs.lt/portal/legalActPrint/lt?jfwid=-wd7z7kkgy&documentId=05cd4e020f0a11e7b6c9f69dc4ecf19f&category=TAD
+    -->
+    <country iso="lt" allowed="true" />
+
+    <!-- Enable recording for Luxembourg:
+         The Luxembourgish Penal Code does not specifically cover the right to privacy and its
+         infringement. Based on this, it is not a criminal offense to record one's personal calls,
+         although doing so in a public manner may lead to a civil case from the aggrieved party. One
+         should consult further with a lawyer whether sharing said recording or recordings would
+         constitute a criminal offense.
+
+         Penal Code: (nonencrypted link)
+           http://legilux.public.lu/eli/etat/leg/code/penal/20181101
+    -->
+    <country iso="lu" allowed="true" />
+
+    <!-- Enable recording for Latvia
+         There is no clear definition of call recording by itself within the Criminal Law of Latvia.
+         Article 144 of said law covers breach of information secrecy, when said information is in
+         the form of correspondence or data relayed by way of electronic communications networks.
+         Paragraph (1) defines the punishment for violating the secret of a person's correspondence
+         as a term of imprisonment for up to two years, or a fine, or others. In a 2014
+         e-Consultation, the Deputy Head of the Public Relations Department of the State Police,
+         Tom Sadovsky, defined the recording of calls with the intent to use as evidence as legal.
+         The Personal Data Protection Law does not apply, as it considers the communication between
+         individuals and legal entitites.
+
+         Latvian Criminal Law:
+           https://likumi.lv/doc.php?id=88966
+
+         Latvian Personal Data Protection Law:
+           https://likumi.lv/doc.php?id=4042
+
+         Legal consultation:
+           https://lvportals.lv/e-konsultacijas/4460-sarunas-drikst-ierakstit-2014.
+    -->
+    <country iso="lv" allowed="true" />
+
+    <!-- Enable recording for Morocco:
+         Call recording is not punishable as one side of a two-party conversation. Recordings are
+         not admissible in court, if the other party is not aware of the recording. Article 447 of
+         the Criminal Law of Morocco, states that the premeditated and unconsented publication of
+         video and/or audio files is a punishable offense.
+
+         Personal Data Law 09-08:
+           https://www.afapdp.org/wp-content/uploads/2018/05/Maroc-Loi-09-08-relative-a-la-protection-des-personnes-physiques-a-legard-du-traitement-des-DCP-2009.pdf
+
+         Moroccan Criminal Law:
+           https://www.h24info.ma/maroc/la-loi-sur-la-protection-des-donnees-personnelles-entre-en-vigueur-le-13-septembre/
+    -->
+    <country iso="ma" allowed="true" />
+
+    <!-- Disable recording for Monaco:
+         According to the Penal Code of Monaco, Article 308-2, a person may be punished with a
+         prison sentence of six months to three years, as well as a fine, for infinging or
+         attempting to infringe on a person's rights to privacy. This includes wiretapping,
+         recording or transmitting the words spoken by a person in a private place. Consent will be
+         presumed when such an action is done during a meeting, with the knowledge of the person
+         that is being recorded. Article 344 of the Penal Code mentions the same punishment for
+         purposeful wiretapping.
+
+         Penal Code:
+           https://www.legimonaco.mc/305/legismclois.nsf/ViewCode!OpenView&Start=1&Count=300&RestrictToCategory=CODE%20P%C3%89NAL
+    -->
+    <country iso="mc" allowed="false" />
+
+    <!-- Enable recording for Moldova:
+         Article 30 of the Constitution of Moldova ensures the privacy of correspondence. No
+         specific law has been enacted that defines recording calls, as an individual, as a criminal
+         offense. There are laws which define this for legal entities and for the government. Please
+         read the attached legal discussion for further information on the subject.
+
+         Constitution of Moldova:
+           https://www.presedinte.md/eng/constitution
+
+         Code of Criminal Procedure:
+           https://www.seepag.info/download/rep_moldova/Criminal%20Procedure%20Code%20RM.pdf
+
+         Regulations for legal entities:
+           https://www.anrceti.md/files/filefield/hca%20nr.48%20din%2010.09.2013%20regulam%20priv%20serv%20CE.pdf
+
+         Legal discussion:
+           https://jsa.md/2017/02/06/inregistrarea-convorbirilor-telefonice-cit-de-legala-este/
+    -->
+    <country iso="md" allowed="true" />
+
+    <!-- Enable recording for Montenegro:
+         Article 173 of the Criminal Code of Montenegro marks call recording as legal if the content
+         of the conversation was 'intended for your use'. It is also legal when it concerns the
+         prevention of crimes, which carry a sentence of 5 years minimum. Sharing a conversation to
+         a third party is a criminal offense.
+
+         Criminal Code of Montenegro:
+           https://www.pravda.gov.me/ResourceManager/FileDownload.aspx?rid=256001&rType=2&file=Krivi%C4%8Dni%20zakonik%20Crne%20Gore.pdf
+    -->
+    <country iso="me" allowed="true" />
+
+    <!-- Enable recording for North Macedonia:
+         As stated in the Macedonian Penal Code, if the recording is made available to a third party
+         or is created and/or distributed with a malicious intent, then the other party can sue you.
+         The state does not prosecute in such cases, unless the act is done by an official state
+         representative of any kind, as mentioned in 151.4 and 151.5.
+
+         North Macedonian Penal Code:
+           https://www.wipo.int/edocs/lexdocs/laws/mk/mk/mk018mk.pdf
+    -->
+    <country iso="mk" allowed="true" />
+
+    <!-- Enable recording for Malta:
+         Relevant laws and/or legal precedents:
+         Article 34 (1)(f) of the Maltese Constitution states that a person may be deprived of his
+         rights in the case of there being suspicion of said person having commited, or being in the
+         process of committing a crime. Effectively this means that recording your own calls is
+         legal when done so to report a crime. There is no mention of the act of recording one's own
+         calls in the Maltese Criminal Code, which means that even if it were to be illegal, it is
+         not a criminal offense. The Media and Defamation Act of 2018 handles all cases of
+         defamation, which may or may not include the act of publishing one's call recordings
+         without the knowledge or consent of the other concerned party.
+
+         Constitution: (nonencrypted link)
+           http://www.justiceservices.gov.mt/DownloadDocument.aspx?app=lom&itemid=8566&l=1
+
+         Criminal Code: (nonencrypted link)
+           https://www.justiceservices.gov.mt/DownloadDocument.aspx?app=lom&itemid=8574&l=1
+
+         Media and Defamation Act: (nonencrypted link)
+           http://justiceservices.gov.mt/DownloadDocument.aspx?app=lp&itemid=29045&l=1
+    -->
+    <country iso="mt" allowed="true" />
+
+    <!-- Enable recording for Netherlands, Bonaire, Sint Eustatius, Saba, Sint Maarten, Curaçao,
+                              Aruba:
+         Recording one's own conversations without the consent of the other party or parties is not
+         in itself punishable by law. Sharing recordings made without consent is punishable in the
+         form of a libel case. This in effect means that the government shall not prosecute anyone
+         for the recording of calls. Call recordings may be used as evidence in criminal and civil
+         cases.
+
+         Legal discussion:
+           https://blog.wetrecht.nl/telefoongesprekken-opnemen-als-bewijs-kan-dat
+    -->
+    <country iso="nl,bq,sx,cw,aw" allowed="true" />
+
+    <!-- Enable recording for Norway:
+         As a private citizen, one may record any call that they participate in. There is no
+         requirement to make other parties aware of the recording, but the use of said recording(s),
+         depending on the content, may be subject to various laws, such as data protection (privacy)
+         legislation, libel laws, laws governing trade and national secrets, non-disclosure
+         agreements and so on. It is, however, prohibited to record calls without the permission of
+         the other party or parties, if you are making the call on behalf of a company or
+         organization. All of the above is outlined in Article 205 of the Norwegian Penal Code.
+
+         Penal Code:
+           https://lovdata.no/dokument/NL/lov/2005-05-20-28/KAPITTEL_2-6#§205
+
+         Legal article:
+           https://www.datatilsynet.no/regelverk-og-verktoy/veiledere/lydopptak/
+    -->
+    <country iso="no" allowed="true" />
+
+    <!-- Enable recording for New Zealand:
+         According to the Crimes Act of 1961, Public Act 216B, Articles 1 and 2(a), anyone is liable
+         to imprisonment for a term not exceeding 2 years for intentionally intercepting any private
+         communication, unless he or she is a party to that private communication. Public Act 216C,
+         subsections (1) and (2) define the prohibition on disclosure of unlawfully intercepted
+         private communications. The recording of one's personal conversations and their publishing
+         or use as evidence without the other party's consent is not explicitly forbidden, nor is it
+         defined as a criminal offense.
+
+         Crimes Act of 1961, Part 9A, Crimes against personal privacy: (nonencrypted link)
+           http://www.legislation.govt.nz/act/public/1961/0043/latest/DLM327382.html#DLM329802
+    -->
+    <country iso="nz" allowed="true" />
+
+    <!-- Enable recording for Peru:
+         The Peruvian Constitution states that people own their own voice and images. If said images
+         or recordings are made for archival purposes, it is allowed. While wiretapping is illegal,
+         it has been used as legal evidence in a court of law. As long as one of the persons talking
+         agrees to the recording, said recording can be used in a court of law. There may be
+         exceptions if the communication contains information that may affect third parties, or if
+         it can be considered as information that should be blocked by medical or legal
+         confidentiality.
+
+         Wiretapping:
+           https://diariouno.pe/columna/chuponeo-prueba-prohibida-o-valida/
+
+         Legal article:
+           https://laley.pe/art/2679/una-grabacion-no-consentida-puede-ser-prueba-de-un-delito-
+
+         Legality of voice recordings and images:
+           https://commons.m.wikimedia.org/wiki/Special:MyLanguage/Commons:Country_specific_consent_requirements#Peru
+    -->
+    <country iso="pe" allowed="true" />
+
+    <!-- Enable recording for Poland:
+         Article 267 of the Polish Penal Code defines call recording as legal for private citizens,
+         when the recording is made by a party to the call.
+
+         Penal Code:
+           https://supertrans2014.files.wordpress.com/2014/06/the-criminal-code.pdf
+
+         Legal articles:
+           https://www.alfatronik.com.pl/info/nagrywanie-rozmow-legalne/
+           https://bezprawnik.pl/legalnosc-nagrywania-rozmowy/
+    -->
+    <country iso="pl" allowed="true" />
+
+    <!-- Disable recording for Puerto Rico:
+         Title Thirty-three of the Penal Code of 2004, Subtitle 5, Special Provisions, Part I:
+         Crimes Against the Person, Chapter 301: Crimes Against Civil Rights, Subchapter II: Crimes
+         Against the Right to Privacy, 33 L.P.R.A § 4809 defines the recording of a private personal
+         conversation, without the express authorization of all parties involved in it, as a
+         misdemeanor. This, in effect, means that recording a phone call as one of the two parties
+         is a criminal offense if done so without the explicit notification and consent of the other
+         party. This territory of the United States conforms with its State Laws. For further
+         information, check 'us'.
+
+         33 L.P.R.A. § 4809. Recording of communications by a participant:
+           https://bit.ly/2UqbrRC
+    -->
+    <country iso="pr" allowed="false" />
+
+    <!-- Disable recording for Portugal:
+         Privacy is a fundamental right in Portuguese law, as it is defined in Articles 26(1) and 34
+         of the Portuguese Constitution. Infringing on said rights constitutes a crime, as defined
+         in Articles 192(1), 194(2) and 199(1) of the Portuguese Penal Code. The punishment is
+         imprisonment for a period of up to one year or a fine equaling 240 days of pay, either of
+         which may be increased by a third, based on Article 197. Lower courts and Higher courts
+         have been ruling both for and against recording one's own calls, no matter the reason, and
+         there have been numerous cases of exceptions being made, despite what the law says. A
+         complaint has been lodged with the European Court of Human Rights, which may lead to a
+         reversal in the current laws and prohibitions. It is noteworthy that in one case, the
+         Supreme Court rendered a decision, which can be translated as such: "The protection of
+         speech that embodies criminal practices or the image that portrays them must yield to the
+         interest of protecting the victim and the efficiency of criminal justice: protection ends
+         when what is protected is a crime."
+
+         Constitution:
+           https://www.parlamento.pt/Legislacao/Paginas/ConstituicaoRepublicaPortuguesa.aspx
+
+         Penal Code: (nonencrypted link)
+           http://www.pgdlisboa.pt/leis/lei_mostra_articulado.php?artigo_id=109A0199&nid=109&tabela=leis&pagina=1&ficha=1&nversao=
+
+         Examples of privacy as a fundamental right: (nonencrypted link)
+           http://www.dgsi.pt/jtrg.nsf/86c25a698e4e7cb7802579ec004d3832/ab509203321d898d802579ea00576d95?OpenDocument
+           http://www.dgsi.pt/jtre.nsf/134973db04f39bf2802579bf005f080b/be3732dc1664576d8025836100514c19
+
+         Examples of exceptions: (nonencrypted links)
+           https://portal.oa.pt/comunicacao/imprensa/2017/11/12/tribunais-aprovam-videos-de-telemovel-apesar-da-legislacao/
+           http://www.dgsi.pt/jtrp.nsf/-/CC3190F093E769FC80257F69004D9E7B
+           http://www.dgsi.pt/jtrl.nsf/0/44ed8c6ca2d940d580256f250052bfd8
+
+         Complaint to ECHR:
+           https://hudoc.echr.coe.int/eng#{%22itemid%22:[%22001-184193%22]}
+
+         Quoted Supreme Court Case: (nonencrypted link)
+           http://www.dgsi.pt/jstj.nsf/954f0ce6ad9dd8b980256b5f003fa814/25cd7aa80cc3adb0802579260032dd4a?OpenDocument
+
+         Legal alternatives: (nonencrypted links)
+           http://www.dgsi.pt/jtrc.nsf/c3fb530030ea1c61802568d9005cd5bb/c5bb36d9a0470bdd80257b400048f9f2?OpenDocument
+           http://www.dgsi.pt/jtrg.nsf/86c25a698e4e7cb7802579ec004d3832/ff947b8a3fda778780257c0000478b5a
+    -->
+    <country iso="pt" allowed="false" />
+
+    <!-- Enable recording for Romania:
+         The Telecommunications Act (506/2004) states that the recording of a conversation by a
+         party to that conversation is permitted and not a criminal offense. Nevertheless, while
+         such recordings are legal, making use of them may fall subject to further civil or criminal
+         laws. Admissibility as evidence depends on how the recording was obtained.
+
+         Telecommunications Act: (nonencrypted link)
+           http://legislatie.just.ro/Public/DetaliiDocument/56973#id_artA88_ttl
+
+         Civil Procedure Code:
+           https://www.dreptonline.ro/legislatie/codul_procedura_civila_consolidat.php
+
+         Criminal Procedure Code:
+           https://www.dreptonline.ro/legislatie/codul_procedura_penala_2007.php
+
+         Legal article:
+           https://www.dsclex.ro/coduri/cciv2.htm
+    -->
+    <country iso="ro" allowed="true" />
+
+    <!-- Enable recording for Serbia:
+         Article 143 of the Serbian Penal Code covers unauthorized wiretapping and recordings. While
+         it is criminally punishable to share call recordings or wiretap them, the law specifically
+         states recording is only punishable when said recording is 'not meant for him/her', hence
+         it is legal to record your own calls, but not to share them with third parties.
+
+         Serbian Penal Code:
+           https://www.paragraf.rs/propisi/krivicni_zakonik.html
+    -->
+    <country iso="rs" allowed="true" />
+
+    <!-- Enable recording for Russia:
+         Recording a phone call when not one of the two parties participating in said call is
+         illegal and punishable by law. As a party to a phone call, one may record it without
+         notifying the other side, as is evident in the decision of the Supreme Court of Russia for
+         case 35-KG16-18, which was rendered on the 6th of December 2016. This concerns civil cases
+         between two private citizens. Whether this covers cases involving legal entities or people
+         holding a public position has not been researched. The key laws to consider are the Federal
+         Law of 27th July 2006, N 149-FZ, (amended on 18th March 2019) "Information, Information
+         Technologies and Information Security" - Article 9, Subarticle 8, as well as the Civil
+         Procedure Code of 2002, N 138-FZ (amended on the 27th December 2018), article 55. Citations
+         of other pertinent laws may be found in the linked decision, starting at internal document
+         page number 4.
+
+         Supreme Court of Russia, Decision on case number 35-KG16-18: (nonencrypted link)
+           http://www.supcourt.ru/stor_pdf.php?id=1502686
+
+         Federal Law of 27th July 2006, N 149-FZ:
+           https://www.consultant.ru/document/cons_doc_LAW_61798/35f4fb38534799919febebd589466c9838f571b2/
+
+         Civil Procedure Code of 2002, N 138-FZ:
+           https://www.consultant.ru/document/cons_doc_LAW_39570/b48406042a309ee368f395fb6f3be1d43c7cbfc2/
+    -->
+    <country iso="ru" allowed="true" />
+
+    <!-- Enable recording for Sweden:
+         According to the Swedish Penal Code (Brottsbalken), Chapter 4, 8–9 §§, it is illegal to
+         make unauthorized recordings of telephone conversations as a third party. A court can grant
+         permission for law enforcement agencies to tap telephone lines. Anyone participating in the
+         telephone call may record the conversation. A recording is always admissible as evidence in
+         a court of law, even when obtained in an illegal way.
+
+         Criminal Code: (nonencrypted link)
+           https://lagen.nu/begrepp/Olovlig_avlyssning
+           http://www.riksdagen.se/sv/dokument-lagar/dokument/svensk-forfattningssamling/brottsbalk-1962700_sfs-1962-700
+    -->
+    <country iso="se" allowed="true" />
+
+    <!-- Enable recording for Singapore:
+         Singaporean law does not recognize privacy as a right that can be infringed upon. A party
+         can not be prosecuted or sued for recording a conversation he or she is a part of. The only
+         exception is when said recording contains confidential information, in which case the party
+         may or may not be liable for their actions, if said party makes use of said confidential
+         information in a way that clearly brings him or her gains of any sort, and/or harms the
+         other party in any perceivable way.
+
+         Legal discussion:
+           https://singaporelegaladvice.com/can-i-record-a-conversation-without-consent/
+
+         Personal Data Protection Act 2012:
+           https://sso.agc.gov.sg/Act/PDPA2012
+           https://www.pdpc.gov.sg/Legislation-and-Guidelines/Personal-Data-Protection-Act-Overview
+
+         Copyright Act, Revised Edition 2006:
+           https://sso.agc.gov.sg/Act/CA1987
+    -->
+    <country iso="sg" allowed="true" />
+
+    <!-- Enable recording for Slovenia:
+         Article 148 of the Slovenian Criminal Code covers the unlawful eavesdropping and sound
+         recording. Subarticle 1 defines a maximum punishment of no more than one year for the
+         unlawful eavesdropping or recording of a private conversation by use of special devices,
+         or directly transmitting said conversation to a third person. This also includes passing on
+         the gist of said conversation. Subarticle 2 states that recording another person's
+         statement with the intent to misuse it, without his or her consent, is punishable in the
+         way postulated in Subarticle 1. Prosecution is initiated by the aggrieved party for
+         Subarticle 1, while under Subarticle 2 it is initiated upon a private action. Based on
+         Article 148, it is legal to record one's own calls, when not done so with the intent to
+         misuse said recordings. Sharing said recordings in any way may be deemed a criminal or
+         civil offense.
+
+         Criminal Code:
+           https://www.wipo.int/edocs/lexdocs/laws/en/si/si046en.pdf
+    -->
+    <country iso="si" allowed="true" />
+
+    <!-- Enable recording for Slovakia:
+         Sections 376 and 377 of the Slovakian Criminal Code cover breach of confidentiality of
+         spoken utterance and other forms of personal expression and the breach of secrecy of all
+         types of instruments, recordings and documents. Section 376 states that the breach of
+         secrecy, by way of disclosing or making available to a third party and/or using it to cause
+         serious harm to another party, leads to an imprisonment of up to two years. Section 377
+         defines breach of confidentiality as the making of an unlawful recording accessible to a
+         third person or using it in any way that would hinder the other side's rights. This is
+         punishable with a term of imprisonment of up to two years.
+
+         Slovakian Criminal Code:
+           https://www.legislationline.org/documents/section/criminal-codes/country/4/Slovakia/show
+    -->
+    <country iso="sk" allowed="true" />
+
+    <!-- Enable recording for Turkey:
+         Article 132 of Law 5237, the Turkish Penal Code, sets the punishment for violating the
+         secrecy of communication as six months to two years of imprisonment. If the violation of
+         secrecy is done in the form of a recording, then the punishment is imprisonment of one to
+         three years. The act of unlawfully publishing the contents of a communication is
+         imprisonment of one to three years. Openly disclosing the content of a communication
+         between oneself and others, without the other party or parties' consent, is imprisonment of
+         six months to two years. If disclosure is done by way of the press or broadcast, the
+         punishment is increased by one half. One may listen and record conversations of other
+         parties, with the consent of at least one party. Doing so without consent is punishable
+         with imprisonment of two to six months. Article 135 of the Turkish Penal Code defines
+         punishment in the case of recording personal data and information. It stands to reason that
+         one may record one's own calls without the consent of the other party, but the act of
+         sharing those recordings in any way may result in persecution, either in the form of a
+         criminal or civil case against the party that has recorded his or hew own calls.
+
+         Turkish Penal Code:
+           https://www.wipo.int/edocs/lexdocs/laws/en/tr/tr171en.pdf
+    -->
+    <country iso="tr" allowed="true" />
+
+    <!-- Enable recording for Ukraine:
+         Sharing a call recording without consent is a punishable offense, and can not be used as
+         valid proof in a court of law. Call recordings may be handed over to the authorities, by
+         one of the two parties without the other party's consent, when a crime is mentioned in the
+         recording. In such cases the party that handed over the recording is not liable to fines or
+         punishment, as the authorities will use the recording to initiate an investigation, but not
+         as proof of a crime. The above information is covered in Articles 31 and 32 of the
+         Constitution, as well as Articles 163, 182 and 359 of the Criminal Code.
+
+         Constitution of Ukraine:
+           https://zakon.rada.gov.ua/cgi-bin/laws/main.cgi?nreg=254%EA%2F96%2D%E2%F0
+
+         Ukrainian Criminal Code:
+           https://www.legislationline.org/documents/section/criminal-codes/country/52
+
+         Radio Svoboda legal advice page:
+           https://www.radiosvoboda.org/a/details/28905674.html
+
+         Legal discussion:
+           https://sklaw.com.ua/ua/news/345_pro_naslidki_zapisu_telefonnoi_rozmovi_rozpovila_advokat_ao_spenser
+    -->
+    <country iso="ua" allowed="true" />
+
+    <!-- Disable recording for United States of America, Guam, the Northern Mariana Islands, the
+                               United States Virgin Islands, Puerto Rico:
+         Currently federal laws state that call recording is legal. On the other hand, each state
+         has its own laws which take priority. Most states allow call recording when one sides
+         agrees, but over 10 require both sides to agree. Since there are no ISO country codes per
+         state, there is no way to differentiate whether the state you are currently in allows call
+         recording or not. Due to this, call recording is set as disabled for the United States of
+         America and some of its territories. These include Guam, the Northern Mariana Islands, the
+         United States Virgin Islands and Puerto Rico. Until a method for properly differentiating
+         between states is created, or a law or precedent emerges which would allow call recording
+         to be legal in all of the USA and its territories, all aforementioned countries and
+         territories should be set as false. Even if such a method is to be found, there is still
+         the question of Native American Reservations, territories that have a cumulative size of
+         over 200 000 square kilometers and might enforce their own set of laws for call recording.
+
+         Two-party consent state laws:
+           https://recordinglaw.com/party-two-party-consent-states/
+    -->
+    <country iso="us,vi,gu" allowed="false" />
+
+    <!-- Enable recording in Uruguay.
+
+         Uruguay follows a Civil Law system and law does not explicitly
+         prohibit call recording.
+
+         In a publication on the journal "Derecho Publico" (Public Right),
+         Umpiérrez (2020)[https://doi.org/10.31672/57.14] states that the
+         Supreme Court has not found call recording an illegal act as long
+         as it's performed by one of the involved parties.
+    -->
+    <country iso="uy" allowed="true" />
+
+    <!-- Enable recording for Kosovo:
+         Article 36 of the Constitution of Kosovo defines the Right to Privacy. Article 202 of the
+         Criminal Code of Kosovo covers the infringing of privacy in corresepondence and computer
+         databases, which can be best explained as the act of violating and/or sharing a private
+         document with another person. Article 203 covers the unauthorized disclosure of
+         confidential information, when the person disclosing said information is under legal duty
+         to maintain it as confidential. Said person is not liable when the disclosure of the
+         confidential information is done so in the interest of the public. Paragraph 4 describes
+         public interest as the welfare of the general public outweighing the individual interest.
+         It is also permissible to use this as a defense when the disclosed information involves
+         plans, preparation or the commission of crimes against the constitutional order or
+         territorial integrity of the Republic of Kosovo or other criminal offenses that will cause
+         great bodily injury or death to another person. Article 204 covers the unauthorized
+         interception of a conversation or statement. Article 205 covers the unauthorized
+         photographing or video recording of a person 'in his or her personal premises or in any
+         other place where a person has a reasonable expectation of privacy', with paragraph 4
+         offering an exception for liability when the act is done to discover a criminal offence or
+         the perpetrators of a criminal offence, or to present as evidence to the police,
+         prosecution or court, and if the photos or recordings are submitted to these authorities.
+         It is beyond doubt that none of these articles deal with recording personal conversation
+         between two parties, hence the act of doing so is not explicitly punishable and is not a
+         criminal offense that would warrant a criminal case.
+
+         Constitution of Kosovo:
+           https://kuvendikosoves.org/?cid=2,1058
+         Criminal Code of Kosovo:
+           https://assembly-kosova.org/common/docs/ligjet/Criminal%20Code.pdf
+    -->
+    <country iso="xk" allowed="true" />
+
+    <!-- Enable recording for South Africa:
+         Under the Regulation of Interception of Communications and Provision of
+         Communication-related Information Act of 2003, 4(1)(a)(b) as well as 16(5)(a)(b), it is
+         legal for a party of a conversation to record said conversation, when there are reasonable
+         grounds to believe that said act will prevent a crime, prevent bodily harm, is in the
+         interest of public safety or one of the other reasons stated in the previously noted
+         paragraphs.
+
+         Regulation of Interception of Communications Act of 2003:
+           https://www.gov.za/sites/default/files/gcis_document/201409/a70-02.pdf
+    -->
+    <country iso="za" allowed="true" />
+
+</call-record-allowed-flags>
diff --git a/java/com/android/dialer/callstats/CallStatsAdapter.java b/java/com/android/dialer/callstats/CallStatsAdapter.java
new file mode 100644
index 0000000..7030860
--- /dev/null
+++ b/java/com/android/dialer/callstats/CallStatsAdapter.java
@@ -0,0 +1,247 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2013 Android Open Kang Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.callstats;
+
+import android.content.Context;
+import android.content.Intent;
+import android.text.TextUtils;
+import android.view.ContextMenu;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
+import com.android.dialer.app.contactinfo.ContactInfoCache;
+import com.android.dialer.app.contactinfo.NumberWithCountryIso;
+import com.android.dialer.clipboard.ClipboardUtils;
+import com.android.dialer.contacts.displaypreference.ContactDisplayPreferences;
+import com.android.dialer.location.GeoUtil;
+import com.android.dialer.phonenumbercache.ContactInfo;
+import com.android.dialer.phonenumbercache.ContactInfoHelper;
+import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+import com.android.dialer.util.CallUtil;
+import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.ExpirableCache;
+import com.android.dialer.util.PermissionsUtil;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Adapter class to hold and handle call stat entries
+ */
+class CallStatsAdapter extends RecyclerView.Adapter {
+  private final Context mContext;
+  private final ContactInfoHelper mContactInfoHelper;
+  private final ContactInfoCache mContactInfoCache;
+  private final ContactDisplayPreferences mContactDisplayPreferences;
+
+  private final ArrayList<CallStatsDetails> mAllItems;
+  private final ArrayList<CallStatsDetails> mShownItems;
+  private final CallStatsDetails mTotalItem;
+  private final Map<CallStatsDetails, ContactInfo> mInfoLookup;
+
+  private int mType = -1;
+  private long mFilterFrom;
+  private long mFilterTo;
+  private boolean mSortByDuration;
+
+  /**
+   * Listener that is triggered to populate the context menu with actions to perform on the call's
+   * number, when the call log entry is long pressed.
+   */
+  private final View.OnCreateContextMenuListener mContextMenuListener = (menu, v, menuInfo) -> {
+    final CallStatsListItemViewHolder vh = (CallStatsListItemViewHolder) v.getTag();
+    if (TextUtils.isEmpty(vh.details.number)) {
+      return;
+    }
+
+    menu.setHeaderTitle(vh.details.number);
+
+    final MenuItem copyItem = menu.add(ContextMenu.NONE, R.id.context_menu_copy_to_clipboard,
+        ContextMenu.NONE, R.string.action_copy_number_text);
+
+    copyItem.setOnMenuItemClickListener(item -> {
+      ClipboardUtils.copyText(CallStatsAdapter.this.mContext, null, vh.details.number, true);
+      return true;
+    });
+
+    // The edit number before call does not show up if any of the conditions apply:
+    // 1) Number cannot be called
+    // 2) Number is the voicemail number
+    // 3) Number is a SIP address
+
+    boolean canPlaceCallsTo = PhoneNumberHelper.canPlaceCallsTo(vh.details.number,
+        vh.details.numberPresentation);
+    if (!canPlaceCallsTo || PhoneNumberHelper.isSipNumber(vh.details.number)) {
+      return;
+    }
+
+    final MenuItem editItem = menu.add(ContextMenu.NONE, R.id.context_menu_edit_before_call,
+        ContextMenu.NONE, R.string.action_edit_number_before_call);
+
+    editItem.setOnMenuItemClickListener(item -> {
+      final Intent intent = new Intent(Intent.ACTION_DIAL, CallUtil.getCallUri(vh.details.number));
+      DialerUtils.startActivityWithErrorToast(v.getContext(), intent);
+      return true;
+    });
+  };
+
+  private final Comparator<CallStatsDetails> mDurationComparator = (o1, o2) -> {
+    Long duration1 = o1.getRequestedDuration(mType);
+    Long duration2 = o2.getRequestedDuration(mType);
+    // sort descending
+    return duration2.compareTo(duration1);
+  };
+  private final Comparator<CallStatsDetails> mCountComparator = (o1, o2) -> {
+    Integer count1 = o1.getRequestedCount(mType);
+    Integer count2 = o2.getRequestedCount(mType);
+    // sort descending
+    return count2.compareTo(count1);
+  };
+
+  CallStatsAdapter(Context context, ContactDisplayPreferences prefs,
+      ExpirableCache<NumberWithCountryIso,ContactInfo> cache) {
+    mContext = context;
+    mContactDisplayPreferences = prefs;
+
+    final String currentCountryIso = GeoUtil.getCurrentCountryIso(mContext);
+    mContactInfoHelper = new ContactInfoHelper(mContext, currentCountryIso);
+
+    mAllItems = new ArrayList<>();
+    mShownItems = new ArrayList<>();
+    mTotalItem = new CallStatsDetails(null, 0, null, null, null, null, null, 0);
+    mInfoLookup = new ConcurrentHashMap<>();
+
+    mContactInfoCache = new ContactInfoCache(cache, mContactInfoHelper, this::notifyDataSetChanged);
+    if (!PermissionsUtil.hasContactsReadPermissions(context)) {
+      mContactInfoCache.disableRequestProcessing();
+    }
+  }
+
+  public void updateData(Map<ContactInfo, CallStatsDetails> calls, long from, long to) {
+    mInfoLookup.clear();
+    mFilterFrom = from;
+    mFilterTo = to;
+
+    mAllItems.clear();
+    mTotalItem.reset();
+
+    for (Map.Entry<ContactInfo, CallStatsDetails> entry : calls.entrySet()) {
+      final CallStatsDetails call = entry.getValue();
+      mAllItems.add(call);
+      mTotalItem.mergeWith(call);
+      mInfoLookup.put(call, entry.getKey());
+    }
+  }
+
+  public void updateDisplayedData(int type, boolean sortByDuration) {
+    mType = type;
+    mSortByDuration = sortByDuration;
+
+    mShownItems.clear();
+
+    for (CallStatsDetails call : mAllItems) {
+      if (sortByDuration && call.getRequestedDuration(type) > 0) {
+          mShownItems.add(call);
+      } else if (!sortByDuration && call.getRequestedCount(type) > 0) {
+          mShownItems.add(call);
+      }
+    }
+
+    mShownItems.sort(sortByDuration ? mDurationComparator : mCountComparator);
+    notifyDataSetChanged();
+  }
+
+  public void invalidateCache() {
+    mContactInfoCache.invalidate();
+  }
+
+  public void startCache() {
+    if (PermissionsUtil.hasPermission(mContext, android.Manifest.permission.READ_CONTACTS)) {
+      mContactInfoCache.start();
+    }
+  }
+
+  public void pauseCache() {
+    mContactInfoCache.stop();
+  }
+
+  @Override
+  public int getItemCount() {
+    return mShownItems.size();
+  }
+
+  @Override
+  public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+    LayoutInflater inflater = LayoutInflater.from(mContext);
+    View view = inflater.inflate(R.layout.call_stats_list_item, parent, false);
+    CallStatsListItemViewHolder viewHolder = CallStatsListItemViewHolder.create(view,
+        mContactInfoHelper);
+
+    viewHolder.mPrimaryActionView.setOnCreateContextMenuListener(mContextMenuListener);
+    viewHolder.mPrimaryActionView.setTag(viewHolder);
+
+    return viewHolder;
+  }
+
+  @Override
+  public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
+    CallStatsDetails details = mShownItems.get(position);
+    CallStatsDetails first = mShownItems.get(0);
+    CallStatsListItemViewHolder views = (CallStatsListItemViewHolder) viewHolder;
+
+    if (PhoneNumberHelper.canPlaceCallsTo(details.number, details.numberPresentation)
+        && !details.isVoicemailNumber) {
+      ContactInfo info = mContactInfoCache.getValue(details.number + details.postDialDigits,
+          details.countryIso, mInfoLookup.get(details), false);
+      if (info != null) {
+        details.updateFromInfo(info);
+      }
+    }
+    views.setDetails(details, first, mTotalItem, mType,
+        mSortByDuration, mContactDisplayPreferences.getDisplayOrder());
+    views.clickIntent = getItemClickIntent(details);
+  }
+
+  private Intent getItemClickIntent(CallStatsDetails details) {
+    Intent intent = new Intent(mContext, CallStatsDetailActivity.class);
+    intent.putExtra(CallStatsDetailActivity.EXTRA_DETAILS, details);
+    intent.putExtra(CallStatsDetailActivity.EXTRA_TOTAL, mTotalItem);
+    intent.putExtra(CallStatsDetailActivity.EXTRA_FROM, mFilterFrom);
+    intent.putExtra(CallStatsDetailActivity.EXTRA_TO, mFilterTo);
+    return intent;
+  }
+
+  public String getTotalCallCountString() {
+    return CallStatsListItemViewHolder.getCallCountString(
+        mContext, mTotalItem.getRequestedCount(mType));
+  }
+
+  public String getFullDurationString(boolean withSeconds) {
+    final long duration = mTotalItem.getRequestedDuration(mType);
+    return CallStatsListItemViewHolder.getDurationString(
+        mContext, duration, withSeconds);
+  }
+}
diff --git a/java/com/android/dialer/callstats/CallStatsDetailActivity.java b/java/com/android/dialer/callstats/CallStatsDetailActivity.java
new file mode 100644
index 0000000..db32c70
--- /dev/null
+++ b/java/com/android/dialer/callstats/CallStatsDetailActivity.java
@@ -0,0 +1,370 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2013 Android Open Kang Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.callstats;
+
+import android.content.Intent;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.CallLog.Calls;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.text.TextUtils;
+import android.text.format.DateUtils;
+import android.view.View;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+
+import com.android.dialer.R;
+import com.android.dialer.app.AccountSelectionActivity;
+import com.android.dialer.callintent.CallInitiationType;
+import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.calllogutils.CallTypeIconsView;
+import com.android.dialer.clipboard.ClipboardUtils;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.contacts.ContactsComponent;
+import com.android.dialer.contacts.displaypreference.ContactDisplayPreferences;
+import com.android.dialer.lettertile.LetterTileDrawable;
+import com.android.dialer.location.GeoUtil;
+import com.android.dialer.phonenumbercache.ContactInfo;
+import com.android.dialer.phonenumbercache.ContactInfoHelper;
+import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+import com.android.dialer.util.CallUtil;
+import com.android.dialer.widget.LinearColorBar;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * Activity to display detailed information about a callstat item
+ */
+public class CallStatsDetailActivity extends AppCompatActivity implements
+    View.OnClickListener, View.OnLongClickListener {
+  private static final String TAG = "CallStatsDetailActivity";
+
+  public static final String EXTRA_DETAILS = "details";
+  public static final String EXTRA_TOTAL = "total";
+  public static final String EXTRA_FROM = "from";
+  public static final String EXTRA_TO = "to";
+
+  private ContactInfoHelper mContactInfoHelper;
+  private ContactDisplayPreferences mContactDisplayPreferences;
+  private Resources mResources;
+
+  private QuickContactBadge mQuickContactBadge;
+  private TextView mCallerName;
+  private TextView mCallerNumber;
+  private View mCallButton;
+  private View mSeparator;
+  private View mCopyButton;
+  private View mEditNumberButton;
+
+  private TextView mTotalDuration, mTotalCount;
+  private TextView mTotalTotalDuration, mTotalTotalCount;
+
+  private DetailLine mInDuration, mOutDuration;
+  private DetailLine mInCount, mOutCount;
+  private DetailLine mMissedCount, mBlockedCount;
+  private DetailLine mInAverage, mOutAverage;
+
+  private LinearColorBar mDurationBar, mCountBar;
+  private LinearColorBar mTotalDurationBar, mTotalCountBar;
+
+  private CallStatsDetails mData;
+  private CallStatsDetails mTotalData;
+  private String mNumber = null;
+
+  private class UpdateContactTask {
+
+    private void execute(String number, String countryIso) {
+      ExecutorService executor = Executors.newSingleThreadExecutor();
+      Handler handler = new Handler(Looper.getMainLooper());
+
+      executor.execute(() -> {
+        final ContactInfo info = mContactInfoHelper.lookupNumber(number, countryIso);
+        handler.post(() -> {
+          if (info != null) {
+            mData.updateFromInfo(info);
+            updateData();
+          }
+        });
+      });
+    }
+  }
+
+  @Override
+  protected void onCreate(Bundle icicle) {
+    super.onCreate(icicle);
+
+    setContentView(R.layout.call_stats_detail);
+
+    Toolbar toolbar = findViewById(R.id.toolbar);
+    toolbar.setNavigationOnClickListener(v -> finish());
+    toolbar.setTitle(R.string.call_stats_detail_title);
+
+    mResources = getResources();
+    mContactInfoHelper = new ContactInfoHelper(this, GeoUtil.getCurrentCountryIso(this));
+    mContactDisplayPreferences = ContactsComponent.get(this).contactDisplayPreferences();
+
+    mQuickContactBadge = (QuickContactBadge) findViewById(R.id.quick_contact_photo);
+    mQuickContactBadge.setOverlay(null);
+    mQuickContactBadge.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
+    mCallerName = (TextView) findViewById(R.id.caller_name);
+    mCallerNumber = (TextView) findViewById(R.id.caller_number);
+
+    mCallButton = findViewById(R.id.call_back_button);
+    mCallButton.setOnClickListener(this);
+    mCallButton.setOnLongClickListener(this);
+
+    mSeparator = findViewById(R.id.separator);
+    mEditNumberButton = findViewById(R.id.call_detail_action_edit_before_call);
+    mEditNumberButton.setOnClickListener(this);
+    mCopyButton = findViewById(R.id.call_detail_action_copy);
+    mCopyButton.setOnClickListener(this);
+
+    mDurationBar = (LinearColorBar) findViewById(R.id.duration_number_percent_bar);
+    mTotalDurationBar = (LinearColorBar) findViewById(R.id.duration_total_percent_bar);
+    mTotalDuration = (TextView) findViewById(R.id.total_duration_number);
+    mTotalTotalDuration = (TextView) findViewById(R.id.total_duration_total);
+    mInDuration = new DetailLine(R.id.in_duration,
+        R.string.call_stats_incoming, Calls.INCOMING_TYPE);
+    mOutDuration = new DetailLine(R.id.out_duration,
+        R.string.call_stats_outgoing, Calls.OUTGOING_TYPE);
+
+    mCountBar = (LinearColorBar) findViewById(R.id.count_number_percent_bar);
+    mTotalCountBar = (LinearColorBar) findViewById(R.id.count_total_percent_bar);
+    mTotalCount = (TextView) findViewById(R.id.total_count_number);
+    mTotalTotalCount = (TextView) findViewById(R.id.total_count_total);
+    mInCount = new DetailLine(R.id.in_count, R.string.call_stats_incoming, Calls.INCOMING_TYPE);
+    mOutCount = new DetailLine(R.id.out_count, R.string.call_stats_outgoing, Calls.OUTGOING_TYPE);
+    mMissedCount = new DetailLine(R.id.missed_count,
+        R.string.call_stats_missed, Calls.MISSED_TYPE);
+    mBlockedCount = new DetailLine(R.id.blocked_count,
+        R.string.call_stats_blocked, Calls.BLOCKED_TYPE);
+
+    mInAverage = new DetailLine(R.id.in_average,
+        R.string.call_stats_incoming, Calls.INCOMING_TYPE);
+    mOutAverage = new DetailLine(R.id.out_average,
+        R.string.call_stats_outgoing, Calls.OUTGOING_TYPE);
+
+    Intent launchIntent = getIntent();
+    mData = launchIntent.getParcelableExtra(EXTRA_DETAILS, CallStatsDetails.class);
+    mTotalData = launchIntent.getParcelableExtra(EXTRA_TOTAL, CallStatsDetails.class);
+    updateData();
+
+    TextView dateFilterView = findViewById(R.id.date_filter);
+    long filterFrom = launchIntent.getLongExtra(EXTRA_FROM, -1);
+    if (filterFrom == -1) {
+      dateFilterView.setVisibility(View.GONE);
+    } else {
+      long filterTo = launchIntent.getLongExtra(EXTRA_TO, -1);
+      dateFilterView.setText(DateUtils.formatDateRange(this, filterFrom, filterTo, 0));
+    }
+  }
+
+  @Override
+  public void onResume() {
+    super.onResume();
+    new UpdateContactTask().execute(mData.number, mData.countryIso);
+  }
+
+  private void updateData() {
+    mNumber = mData.number;
+
+    // Cache the details about the phone number.
+    boolean canPlaceCallsTo = PhoneNumberHelper.canPlaceCallsTo(mNumber, mData.numberPresentation);
+    final CharSequence callLocationOrType = !TextUtils.isEmpty(mData.displayName)
+        ? Phone.getTypeLabel(mResources, mData.numberType, mData.numberLabel)
+        : mData.geocode;
+
+    mData.updateDisplayProperties(this, mContactDisplayPreferences.getDisplayOrder());
+
+    final boolean isSipNumber = PhoneNumberHelper.isSipNumber(mNumber);
+    boolean hasEditNumberBeforeCallOption =
+        canPlaceCallsTo && !isSipNumber && !mData.isVoicemailNumber;
+
+    if (!TextUtils.isEmpty(mData.displayName)) {
+      mCallerName.setText(mData.displayName);
+      mCallerNumber.setText(callLocationOrType + " " + mData.displayNumber);
+    } else {
+      mCallerName.setText(mData.displayNumber);
+      if (!TextUtils.isEmpty(callLocationOrType)) {
+        mCallerNumber.setText(callLocationOrType);
+        mCallerNumber.setVisibility(View.VISIBLE);
+      } else {
+        mCallerNumber.setVisibility(View.GONE);
+      }
+    }
+
+    mCallButton.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE);
+    mCopyButton.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE);
+    mEditNumberButton.setVisibility(hasEditNumberBeforeCallOption ? View.VISIBLE : View.GONE);
+    mSeparator.setVisibility(canPlaceCallsTo || hasEditNumberBeforeCallOption
+        ? View.VISIBLE : View.GONE);
+
+    final boolean isBusiness = mContactInfoHelper.isBusiness(mData.sourceType);
+    final int contactType =
+        mData.isVoicemailNumber ? LetterTileDrawable.TYPE_VOICEMAIL :
+        isBusiness ? LetterTileDrawable.TYPE_BUSINESS :
+        LetterTileDrawable.TYPE_DEFAULT;
+    final String nameForDefaultImage = TextUtils.isEmpty(mData.name)
+        ? mData.displayNumber : mData.name;
+
+    ContactPhotoManager.getInstance(this).loadDialerThumbnailOrPhoto(mQuickContactBadge,
+        mData.contactUri, mData.photoId, mData.photoUri, nameForDefaultImage, contactType);
+
+    invalidateOptionsMenu();
+
+    long totalDuration = mData.getFullDuration();
+    mInDuration.updateFromDurations(mData.inDuration, totalDuration);
+    mOutDuration.updateFromDurations(mData.outDuration, totalDuration);
+    if (totalDuration != 0) {
+      mTotalDuration.setText(CallStatsListItemViewHolder.getDurationString(this,
+          totalDuration, true));
+      mTotalTotalDuration.setText(CallStatsListItemViewHolder.getDurationString(this,
+          mTotalData.getFullDuration(), true));
+      updateBar(mDurationBar, mData.inDuration, mData.outDuration, 0, 0, totalDuration);
+      updateBar(mTotalDurationBar, mData.inDuration, mData.outDuration,
+          0, 0, mTotalData.getFullDuration());
+      findViewById(R.id.duration_container).setVisibility(View.VISIBLE);
+    } else {
+      findViewById(R.id.duration_container).setVisibility(View.GONE);
+    }
+
+    mInAverage.updateAsAverage(mData.inDuration, mData.incomingCount);
+    mOutAverage.updateAsAverage(mData.outDuration, mData.outgoingCount);
+
+    int totalCount = mData.getTotalCount();
+    mTotalCount.setText(CallStatsListItemViewHolder.getCallCountString(this, totalCount));
+    mTotalTotalCount.setText(
+        CallStatsListItemViewHolder.getCallCountString(this, mTotalData.getTotalCount()));
+    mInCount.updateFromCounts(mData.incomingCount, totalCount);
+    mOutCount.updateFromCounts(mData.outgoingCount, totalCount);
+    mMissedCount.updateFromCounts(mData.missedCount, totalCount);
+    mBlockedCount.updateFromCounts(mData.blockedCount, totalCount);
+    updateBar(mCountBar, mData.incomingCount, mData.outgoingCount,
+        mData.missedCount, mData.blockedCount, totalCount);
+    updateBar(mTotalCountBar, mData.incomingCount, mData.outgoingCount,
+        mData.missedCount, mData.blockedCount, mTotalData.getTotalCount());
+  }
+
+  private void updateBar(LinearColorBar bar,
+      long value1, long value2, long value3, long value4, long total) {
+    bar.setRatios((float) value1 / total, (float) value2 / total,
+        (float) value3 / total, (float) value4 / total);
+  }
+
+  @Override
+  public void onClick(View view) {
+    if (view == mCallButton) {
+      Intent intent = new CallIntentBuilder(mNumber, CallInitiationType.Type.CALL_LOG).build();
+      startActivity(intent);
+    } else if (view == mCopyButton) {
+      ClipboardUtils.copyText(this, null, mNumber, true);
+    } else if (view == mEditNumberButton) {
+      startActivity(new Intent(Intent.ACTION_DIAL, CallUtil.getCallUri(mNumber)));
+    }
+  }
+
+  @Override
+  public boolean onLongClick(View view) {
+    if (view == mCallButton) {
+      Intent intent = AccountSelectionActivity.createIntent(
+          CallStatsDetailActivity.this, mNumber, CallInitiationType.Type.CALL_LOG);
+      if (intent != null) {
+        startActivity(intent);
+        return true;
+      }
+    }
+    return false;
+  }
+
+  private void onHomeSelected() {
+    Intent intent = new Intent(Intent.ACTION_VIEW, Calls.CONTENT_URI);
+    // This will open the call log even if the detail view has been opened directly.
+    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+    startActivity(intent);
+    finish();
+  }
+
+  private class DetailLine {
+    private final int mValueTemplateResId;
+    private final View mRootView;
+    private final TextView mTextView;
+    private final TextView mPercentView;
+
+    public DetailLine(int rootViewId, int valueTemplateResId, int iconType) {
+      mValueTemplateResId = valueTemplateResId;
+      mRootView = findViewById(rootViewId);
+      mTextView = (TextView) mRootView.findViewById(R.id.value);
+      mPercentView = (TextView) mRootView.findViewById(R.id.percent);
+
+      CallTypeIconsView icon = (CallTypeIconsView) mRootView.findViewById(R.id.icon);
+      icon.add(iconType);
+    }
+
+    public void updateFromCounts(int count, int totalCount) {
+      if (count == 0 && totalCount > 0) {
+        mRootView.setVisibility(View.GONE);
+        return;
+      }
+
+      mRootView.setVisibility(View.VISIBLE);
+      String value = CallStatsListItemViewHolder.getCallCountString(mTextView.getContext(), count);
+      mTextView.setText(getString(mValueTemplateResId, value));
+      updatePercent(count, totalCount);
+    }
+
+    public void updateFromDurations(long duration, long totalDuration) {
+      if (duration == 0 && totalDuration >= 0) {
+        mRootView.setVisibility(View.GONE);
+        return;
+      }
+
+      mRootView.setVisibility(View.VISIBLE);
+      String value = CallStatsListItemViewHolder.getDurationString(
+          mTextView.getContext(), duration, true);
+      mTextView.setText(getString(mValueTemplateResId, value));
+      updatePercent(duration, totalDuration);
+    }
+
+    public void updateAsAverage(long duration, int count) {
+      if (count == 0) {
+        mRootView.setVisibility(View.GONE);
+        return;
+      }
+
+      mRootView.setVisibility(View.VISIBLE);
+      mPercentView.setVisibility(View.GONE);
+
+      long averageDuration = (long) Math.round((float) duration / (float) count);
+      String value = CallStatsListItemViewHolder.getDurationString(
+          mTextView.getContext(), averageDuration, true);
+      mTextView.setText(getString(mValueTemplateResId, value));
+    }
+
+    private void updatePercent(long value, long total) {
+      int percent = (int) Math.round(100F * value / total);
+      mPercentView.setText(getString(R.string.call_stats_percent, percent));
+    }
+  }
+}
diff --git a/java/com/android/dialer/callstats/CallStatsDetails.java b/java/com/android/dialer/callstats/CallStatsDetails.java
new file mode 100644
index 0000000..740284e
--- /dev/null
+++ b/java/com/android/dialer/callstats/CallStatsDetails.java
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2013 Android Open Kang Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.callstats;
+
+import android.content.Context;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.provider.CallLog.Calls;
+import android.telecom.PhoneAccountHandle;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
+import android.text.TextUtils;
+
+import com.android.dialer.calllogutils.PhoneNumberDisplayUtil;
+import com.android.dialer.contacts.displaypreference.ContactDisplayPreferences.DisplayOrder;
+import com.android.dialer.logging.ContactSource;
+import com.android.dialer.phonenumbercache.ContactInfo;
+import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+
+/**
+ * Class to store statistical details for a given contact/number.
+ */
+public class CallStatsDetails implements Parcelable {
+  public final String number;
+  public final String postDialDigits;
+  public final int numberPresentation;
+  public String formattedNumber;
+  public final String countryIso;
+  public final String geocode;
+  public final long date;
+  public String name;
+  public String nameAlternative;
+  public int numberType;
+  public String numberLabel;
+  public Uri contactUri;
+  public Uri photoUri;
+  public long photoId;
+  public long inDuration;
+  public long outDuration;
+  public int incomingCount;
+  public int outgoingCount;
+  public int missedCount;
+  public int blockedCount;
+  public PhoneAccountHandle accountHandle;
+  public ContactSource.Type sourceType = ContactSource.Type.UNKNOWN_SOURCE_TYPE;
+
+  public boolean isVoicemailNumber;
+  public String displayNumber;
+  public String displayName;
+
+  public CallStatsDetails(CharSequence number, int numberPresentation,
+      String postDialDigits, PhoneAccountHandle accountHandle,
+      ContactInfo info, String countryIso, String geocode, long date) {
+    this.number = number != null ? number.toString() : null;
+    this.numberPresentation = numberPresentation;
+    this.postDialDigits = postDialDigits;
+    this.countryIso = countryIso;
+    this.geocode = geocode;
+    this.date = date;
+
+    reset();
+
+    if (info != null) {
+      updateFromInfo(info);
+    }
+  }
+
+  public void updateFromInfo(ContactInfo info) {
+    this.displayName = info.name;
+    this.nameAlternative = info.nameAlternative;
+    this.name = info.name;
+    this.numberType = info.type;
+    this.numberLabel = info.label;
+    this.photoId = info.photoId;
+    this.photoUri = info.photoUri;
+    this.formattedNumber = info.formattedNumber;
+    this.contactUri = info.lookupUri;
+    this.photoUri = info.photoUri;
+    this.photoId = info.photoId;
+    this.sourceType = info.sourceType;
+    this.displayNumber = null;
+  }
+
+
+  public void updateDisplayProperties(Context context, DisplayOrder nameDisplayOrder) {
+    if (nameDisplayOrder == DisplayOrder.PRIMARY || TextUtils.isEmpty(nameAlternative)) {
+      this.displayName = this.name;
+    } else {
+      this.displayName = this.nameAlternative;
+    }
+
+    if (displayNumber == null) {
+      isVoicemailNumber = PhoneNumberHelper.isVoicemailNumber(context, accountHandle, number);
+      final CharSequence displayNumber = PhoneNumberDisplayUtil.getDisplayNumber(context,
+          number, numberPresentation, formattedNumber, postDialDigits, isVoicemailNumber);
+      this.displayNumber = BidiFormatter.getInstance().unicodeWrap(
+          displayNumber.toString(), TextDirectionHeuristics.LTR);
+    }
+  }
+
+  public long getFullDuration() {
+    return inDuration + outDuration;
+  }
+
+  public int getTotalCount() {
+    return incomingCount + outgoingCount + missedCount + blockedCount;
+  }
+
+  public void addTimeOrMissed(int type, long time) {
+    switch (type) {
+      case Calls.INCOMING_TYPE:
+        incomingCount++;
+        inDuration += time;
+        break;
+      case Calls.OUTGOING_TYPE:
+        outgoingCount++;
+        outDuration += time;
+        break;
+      case Calls.MISSED_TYPE:
+        missedCount++;
+        break;
+      case Calls.BLOCKED_TYPE:
+        blockedCount++;
+        break;
+    }
+  }
+
+  public int getDurationPercentage(int type) {
+    long duration = getRequestedDuration(type);
+    return Math.round((float) duration * 100F / getFullDuration());
+  }
+
+  public int getCountPercentage(int type) {
+    int count = getRequestedCount(type);
+    return Math.round((float) count * 100F / getTotalCount());
+  }
+
+  public long getRequestedDuration(int type) {
+    switch (type) {
+      case Calls.INCOMING_TYPE:
+        return inDuration;
+      case Calls.OUTGOING_TYPE:
+        return outDuration;
+      case Calls.MISSED_TYPE:
+        return (long) missedCount;
+      case Calls.BLOCKED_TYPE:
+        return (long) blockedCount;
+      default:
+        return getFullDuration();
+    }
+  }
+
+  public int getRequestedCount(int type) {
+    switch (type) {
+      case Calls.INCOMING_TYPE:
+        return incomingCount;
+      case Calls.OUTGOING_TYPE:
+        return outgoingCount;
+      case Calls.MISSED_TYPE:
+        return missedCount;
+      case Calls.BLOCKED_TYPE:
+        return blockedCount;
+      default:
+        return getTotalCount();
+    }
+  }
+
+  public void mergeWith(CallStatsDetails other) {
+    this.inDuration += other.inDuration;
+    this.outDuration += other.outDuration;
+    this.incomingCount += other.incomingCount;
+    this.outgoingCount += other.outgoingCount;
+    this.missedCount += other.missedCount;
+    this.blockedCount += other.blockedCount;
+  }
+
+  public void reset() {
+    this.inDuration = this.outDuration = 0;
+    this.incomingCount = this.outgoingCount = this.missedCount = this.blockedCount = 0;
+  }
+
+  /* Parcelable interface */
+
+  @Override
+  public int describeContents() {
+    return 0;
+  }
+
+  @Override
+  public void writeToParcel(Parcel out, int flags) {
+    out.writeString(number);
+    out.writeInt(numberPresentation);
+    out.writeString(postDialDigits);
+    out.writeString(formattedNumber);
+    out.writeString(countryIso);
+    out.writeString(geocode);
+    out.writeLong(date);
+    out.writeString(name);
+    out.writeInt(numberType);
+    out.writeString(numberLabel);
+    out.writeParcelable(contactUri, flags);
+    out.writeParcelable(photoUri, flags);
+    out.writeLong(photoId);
+    out.writeLong(inDuration);
+    out.writeLong(outDuration);
+    out.writeInt(incomingCount);
+    out.writeInt(outgoingCount);
+    out.writeInt(missedCount);
+    out.writeInt(blockedCount);
+  }
+
+  public static final Parcelable.Creator<CallStatsDetails> CREATOR =
+      new Parcelable.Creator<CallStatsDetails>() {
+    public CallStatsDetails createFromParcel(Parcel in) {
+      return new CallStatsDetails(in);
+    }
+
+    public CallStatsDetails[] newArray(int size) {
+      return new CallStatsDetails[size];
+    }
+  };
+
+  private CallStatsDetails (Parcel in) {
+    number = in.readString();
+    numberPresentation = in.readInt();
+    postDialDigits = in.readString();
+    formattedNumber = in.readString();
+    countryIso = in.readString();
+    geocode = in.readString();
+    date = in.readLong();
+    name = in.readString();
+    numberType = in.readInt();
+    numberLabel = in.readString();
+    contactUri = in.readParcelable(null, Uri.class);
+    photoUri = in.readParcelable(null, Uri.class);
+    photoId = in.readLong();
+    inDuration = in.readLong();
+    outDuration = in.readLong();
+    incomingCount = in.readInt();
+    outgoingCount = in.readInt();
+    missedCount = in.readInt();
+    blockedCount = in.readInt();
+  }
+}
diff --git a/java/com/android/dialer/callstats/CallStatsFragment.java b/java/com/android/dialer/callstats/CallStatsFragment.java
new file mode 100644
index 0000000..da39d08
--- /dev/null
+++ b/java/com/android/dialer/callstats/CallStatsFragment.java
@@ -0,0 +1,326 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2013 Android Open Kang Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.callstats;
+
+import static android.Manifest.permission.READ_CALL_LOG;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.CallLog;
+import android.provider.ContactsContract;
+import android.telecom.PhoneAccountHandle;
+import android.text.format.DateUtils;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
+import com.android.dialer.app.contactinfo.ExpirableCacheHeadlessFragment;
+import com.android.dialer.calllogutils.FilterSpinnerHelper;
+import com.android.dialer.contacts.ContactsComponent;
+import com.android.dialer.phonenumbercache.ContactInfo;
+import com.android.dialer.util.PermissionsUtil;
+import com.android.dialer.widget.EmptyContentView;
+
+import java.util.Map;
+
+public class CallStatsFragment extends Fragment implements
+    CallStatsQueryHandler.Listener, FilterSpinnerHelper.OnFilterChangedListener,
+    EmptyContentView.OnEmptyViewActionButtonClickedListener,
+    DoubleDatePickerDialog.OnDateSetListener {
+  private static final String TAG = "CallStatsFragment";
+
+  private PhoneAccountHandle mAccountFilter = null;
+  private int mCallTypeFilter = -1;
+  private long mFilterFrom = -1;
+  private long mFilterTo = -1;
+  private boolean mSortByDuration = true;
+  private boolean mDataLoaded = false;
+
+  private RecyclerView mRecyclerView;
+  private EmptyContentView mEmptyListView;
+  private CallStatsAdapter mAdapter;
+  private CallStatsQueryHandler mCallStatsQueryHandler;
+
+  private TextView mSumHeaderView;
+  private TextView mDateFilterView;
+
+  private boolean mHasReadCallLogPermission = false;
+
+  private boolean mRefreshDataRequired = true;
+  private final ContentObserver mObserver = new ContentObserver(
+          new Handler(Looper.getMainLooper())) {
+    @Override
+    public void onChange(boolean selfChange) {
+      mRefreshDataRequired = true;
+    }
+  };
+
+  private final ActivityResultLauncher<String> permissionLauncher = registerForActivityResult(
+          new ActivityResultContracts.RequestPermission(),
+          granted -> {
+            if (granted) {
+              // Force a refresh of the data since we were missing the permission before this.
+              mRefreshDataRequired = true;
+              requireActivity().invalidateOptionsMenu();
+            }
+          });
+
+  @Override
+  public void onCreate(Bundle state) {
+    super.onCreate(state);
+
+    final ContentResolver cr = requireActivity().getContentResolver();
+    mCallStatsQueryHandler = new CallStatsQueryHandler(cr, this);
+    cr.registerContentObserver(CallLog.CONTENT_URI, true, mObserver);
+    cr.registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, mObserver);
+
+    setHasOptionsMenu(true);
+
+    ExpirableCacheHeadlessFragment cacheFragment =
+        ExpirableCacheHeadlessFragment.attach(getChildFragmentManager());
+    mAdapter = new CallStatsAdapter(getActivity(),
+        ContactsComponent.get(requireActivity()).contactDisplayPreferences(),
+        cacheFragment.getRetainedCache());
+  }
+
+  @Override
+  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
+    View view = inflater.inflate(R.layout.call_stats_fragment, container, false);
+
+    mRecyclerView = view.findViewById(R.id.recycler_view);
+    mRecyclerView.setHasFixedSize(true);
+    LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
+    mRecyclerView.setLayoutManager(layoutManager);
+    mEmptyListView = view.findViewById(R.id.empty_list_view);
+    mEmptyListView.setImage(R.drawable.empty_call_log);
+    mEmptyListView.setActionClickedListener(this);
+
+    mSumHeaderView = view.findViewById(R.id.sum_header);
+    mDateFilterView = view.findViewById(R.id.date_filter);
+
+    return view;
+  }
+
+  @Override
+  public void onViewCreated(View view, Bundle savedInstanceState) {
+    super.onViewCreated(view, savedInstanceState);
+    mRecyclerView.setAdapter(mAdapter);
+    updateEmptyVisibilityAndMessage();
+  }
+
+  @Override
+  public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+    if (getUserVisibleHint() && PermissionsUtil.hasPermission(getActivity(), READ_CALL_LOG)) {
+      inflater.inflate(R.menu.call_stats_options, menu);
+
+      final MenuItem resetItem = menu.findItem(R.id.reset_date_filter);
+      final MenuItem sortDurationItem = menu.findItem(R.id.sort_by_duration);
+      final MenuItem sortCountItem = menu.findItem(R.id.sort_by_count);
+
+      resetItem.setVisible(mFilterFrom != -1);
+      sortDurationItem.setVisible(!mSortByDuration);
+      sortCountItem.setVisible(mSortByDuration);
+    }
+
+    super.onCreateOptionsMenu(menu, inflater);
+  }
+
+  @Override
+  public boolean onOptionsItemSelected(MenuItem item) {
+    final int itemId = item.getItemId();
+    if (itemId == R.id.date_filter) {
+      final DoubleDatePickerDialog.Fragment fragment =
+              new DoubleDatePickerDialog.Fragment();
+      fragment.setArguments(
+              DoubleDatePickerDialog.Fragment.createArguments(mFilterFrom, mFilterTo));
+      fragment.show(getParentFragmentManager(), "filter");
+    } else if (itemId == R.id.reset_date_filter) {
+      mFilterFrom = -1;
+      mFilterTo = -1;
+      fetchCalls();
+      updateEmptyVisibilityAndMessage();
+      requireActivity().invalidateOptionsMenu();
+    } else if (itemId == R.id.sort_by_duration || itemId == R.id.sort_by_count) {
+      mSortByDuration = itemId == R.id.sort_by_duration;
+      mAdapter.updateDisplayedData(mCallTypeFilter, mSortByDuration);
+      requireActivity().invalidateOptionsMenu();
+    }
+    return true;
+  }
+
+  @Override
+  public void onFilterChanged(PhoneAccountHandle account, int callType) {
+    if (account != mAccountFilter) {
+      mAccountFilter = account;
+      fetchCalls();
+    }
+    if (callType != mCallTypeFilter) {
+      mCallTypeFilter = callType;
+      mAdapter.updateDisplayedData(mCallTypeFilter, mSortByDuration);
+      if (mDataLoaded) {
+        updateHeader();
+        updateEmptyVisibilityAndMessage();
+      }
+    }
+  }
+
+  @Override
+  public void onEmptyViewActionButtonClicked() {
+    if (!PermissionsUtil.hasPermission(getActivity(), READ_CALL_LOG)) {
+      permissionLauncher.launch(READ_CALL_LOG);
+    }
+  }
+
+  @Override
+  public void onDateSet(long from, long to) {
+    mFilterFrom = from;
+    mFilterTo = to;
+    requireActivity().invalidateOptionsMenu();
+    fetchCalls();
+    updateEmptyVisibilityAndMessage();
+  }
+
+  /**
+   * Called by the CallStatsQueryHandler when the list of calls has been
+   * fetched or updated.
+   */
+  @Override
+  public void onCallsFetched(Map<ContactInfo, CallStatsDetails> calls) {
+    if (getActivity() == null || getActivity().isFinishing()) {
+      return;
+    }
+
+    mDataLoaded = true;
+    mAdapter.updateData(calls, mFilterFrom, mFilterTo);
+    mAdapter.updateDisplayedData(mCallTypeFilter, mSortByDuration);
+    updateHeader();
+    updateEmptyVisibilityAndMessage();
+  }
+
+  @Override
+  public void onResume() {
+    super.onResume();
+    final boolean hasReadCallLogPermission =
+        PermissionsUtil.hasPermission(getActivity(), READ_CALL_LOG);
+    if (!mHasReadCallLogPermission && hasReadCallLogPermission) {
+      // We didn't have the permission before, and now we do. Force a refresh of the call log.
+      // Note that this code path always happens on a fresh start, but mRefreshDataRequired
+      // is already true in that case anyway.
+      mRefreshDataRequired = true;
+      mDataLoaded = false;
+      updateEmptyVisibilityAndMessage();
+      getActivity().invalidateOptionsMenu();
+    }
+    mHasReadCallLogPermission = hasReadCallLogPermission;
+    refreshData();
+    mAdapter.startCache();
+  }
+
+  @Override
+  public void onPause() {
+    super.onPause();
+    mAdapter.pauseCache();
+  }
+
+  @Override
+  public void onDestroy() {
+    super.onDestroy();
+    mAdapter.pauseCache();
+    getActivity().getContentResolver().unregisterContentObserver(mObserver);
+  }
+
+  private void fetchCalls() {
+    mCallStatsQueryHandler.fetchCalls(mFilterFrom, mFilterTo, mAccountFilter);
+  }
+
+  private void updateHeader() {
+    final String callCount = mAdapter.getTotalCallCountString();
+    final String duration = mAdapter.getFullDurationString(false);
+
+    if (duration != null) {
+      mSumHeaderView.setText(getString(R.string.call_stats_header_total, callCount, duration));
+    } else {
+      mSumHeaderView.setText(getString(R.string.call_stats_header_total_callsonly, callCount));
+    }
+    mSumHeaderView.setVisibility(isListEmpty() ? View.GONE : View.VISIBLE);
+
+    if (mFilterFrom == -1) {
+      mDateFilterView.setVisibility(View.GONE);
+    } else {
+      mDateFilterView.setText(
+          DateUtils.formatDateRange(getActivity(), mFilterFrom, mFilterTo, 0));
+      mDateFilterView.setVisibility(View.VISIBLE);
+    }
+  }
+
+  /** Requests updates to the data to be shown. */
+  private void refreshData() {
+    // Prevent unnecessary refresh.
+    if (mRefreshDataRequired) {
+      // Mark all entries in the contact info cache as out of date, so
+      // they will be looked up again once being shown.
+      mAdapter.invalidateCache();
+      fetchCalls();
+      mRefreshDataRequired = false;
+    }
+  }
+
+  private boolean isListEmpty() {
+    return mDataLoaded && mAdapter.getItemCount() == 0;
+  }
+
+  private void updateEmptyVisibilityAndMessage() {
+    final Context context = getActivity();
+    if (context == null) {
+      return;
+    }
+
+    boolean showListView = !isListEmpty();
+
+    if (!PermissionsUtil.hasPermission(context, READ_CALL_LOG)) {
+      mEmptyListView.setDescription(R.string.permission_no_calllog);
+      mEmptyListView.setActionLabel(R.string.permission_single_turn_on);
+      showListView = false;
+    } else if (mFilterFrom > 0 || mFilterTo > 0) {
+      mEmptyListView.setDescription(R.string.recent_calls_no_items_in_range);
+      mEmptyListView.setActionLabel(EmptyContentView.NO_LABEL);
+    } else {
+      mEmptyListView.setDescription(R.string.call_log_all_empty);
+      mEmptyListView.setActionLabel(EmptyContentView.NO_LABEL);
+    }
+
+    mRecyclerView.setVisibility(showListView ? View.VISIBLE : View.GONE);
+    mEmptyListView.setVisibility(!showListView ? View.VISIBLE : View.GONE);
+  }
+}
diff --git a/java/com/android/dialer/callstats/CallStatsListItemViewHolder.java b/java/com/android/dialer/callstats/CallStatsListItemViewHolder.java
new file mode 100644
index 0000000..01d214a
--- /dev/null
+++ b/java/com/android/dialer/callstats/CallStatsListItemViewHolder.java
@@ -0,0 +1,242 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.callstats;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.provider.CallLog.Calls;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
+import com.android.dialer.contactphoto.ContactPhotoManager;
+import com.android.dialer.contacts.displaypreference.ContactDisplayPreferences;
+import com.android.dialer.lettertile.LetterTileDrawable;
+import com.android.dialer.phonenumbercache.ContactInfoHelper;
+import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+import com.android.dialer.util.DialerUtils;
+import com.android.dialer.widget.LinearColorBar;
+
+/**
+ * This is an object containing references to views contained by the call log list item. This
+ * improves performance by reducing the frequency with which we need to find views by IDs.
+ *
+ * This object also contains UI logic pertaining to the view, to isolate it from the CallLogAdapter.
+ */
+public final class CallStatsListItemViewHolder extends RecyclerView.ViewHolder
+    implements View.OnClickListener {
+
+  public CallStatsDetails details;
+  public Intent clickIntent;
+
+  public final View mRootView;
+  public final QuickContactBadge mQuickContactView;
+  public final View mPrimaryActionView;
+  public final TextView mNameView;
+  public final TextView mNumberView;
+  public final TextView mLabelView;
+  public final TextView mPercentView;
+  public final LinearColorBar mBarView;
+
+  private final Context mContext;
+  private final ContactInfoHelper mContactInfoHelper;
+
+  private CallStatsListItemViewHolder(View rootView,
+      QuickContactBadge quickContactView,
+      View primaryActionView,
+      TextView nameView,
+      TextView numberView,
+      TextView labelView,
+      TextView percentView,
+      LinearColorBar barView,
+      ContactInfoHelper contactInfoHelper) {
+    super(rootView);
+
+    mRootView = rootView;
+    mQuickContactView = quickContactView;
+    mPrimaryActionView = primaryActionView;
+    mNameView = nameView;
+    mNumberView = numberView;
+    mLabelView = labelView;
+    mPercentView = percentView;
+    mBarView = barView;
+
+    mPrimaryActionView.setOnClickListener(this);
+
+    quickContactView.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
+
+    mContext = rootView.getContext();
+    mContactInfoHelper = contactInfoHelper;
+  }
+
+  public static CallStatsListItemViewHolder create(View view, ContactInfoHelper contactInfoHelper) {
+    return new CallStatsListItemViewHolder(view,
+        view.findViewById(R.id.quick_contact_photo),
+        view.findViewById(R.id.primary_action_view),
+        view.findViewById(R.id.name),
+        view.findViewById(R.id.number),
+        view.findViewById(R.id.label),
+        view.findViewById(R.id.percent),
+        view.findViewById(R.id.percent_bar),
+        contactInfoHelper);
+  }
+
+  @Override
+  public void onClick(View v) {
+    if (clickIntent != null) {
+      DialerUtils.startActivityWithErrorToast(mContext, clickIntent);
+    }
+  }
+
+  public void setDetails(CallStatsDetails details, CallStatsDetails first,
+      CallStatsDetails total, int type, boolean byDuration,
+      ContactDisplayPreferences.DisplayOrder nameDisplayOrder) {
+    this.details = details;
+    details.updateDisplayProperties(mContext, nameDisplayOrder);
+
+    CharSequence numberFormattedLabel = null;
+    // Only show a label if the number is shown and it is not a SIP address.
+    if (!TextUtils.isEmpty(details.number)
+        && !PhoneNumberHelper.isUriNumber(details.number.toString())) {
+      numberFormattedLabel = Phone.getTypeLabel(mContext.getResources(),
+          details.numberType, details.numberLabel);
+    }
+
+    final CharSequence nameText;
+    final CharSequence numberText;
+    final CharSequence labelText;
+
+    if (TextUtils.isEmpty(details.displayName)) {
+      nameText = details.displayNumber;
+      if (TextUtils.isEmpty(details.geocode) || details.isVoicemailNumber) {
+          numberText = null;
+      } else {
+          numberText = details.geocode;
+      }
+      labelText = null;
+    } else {
+      nameText = details.displayName;
+      numberText = details.displayNumber;
+      labelText = numberFormattedLabel;
+    }
+
+    float in = 0, out = 0, missed = 0, blocked = 0;
+    float ratio = getDetailValue(details, type, byDuration) /
+                  getDetailValue(first, type, byDuration);
+
+    if (type == Calls.INCOMING_TYPE) {
+      in = ratio;
+    } else if (type == Calls.OUTGOING_TYPE) {
+      out = ratio;
+    } else if (type == Calls.MISSED_TYPE) {
+      missed = ratio;
+    } else if (type == Calls.BLOCKED_TYPE) {
+      blocked = ratio;
+    } else {
+      float full = getDetailValue(details, type, byDuration);
+      in = getDetailValue(details, Calls.INCOMING_TYPE, byDuration) * ratio / full;
+      out = getDetailValue(details, Calls.OUTGOING_TYPE, byDuration) * ratio / full;
+      if (!byDuration) {
+          missed = getDetailValue(details, Calls.MISSED_TYPE, byDuration) * ratio / full;
+          blocked = getDetailValue(details, Calls.BLOCKED_TYPE, byDuration) * ratio / full;
+      }
+    }
+
+    mBarView.setRatios(in, out, missed, blocked);
+    mNameView.setText(nameText);
+    mNumberView.setText(numberText);
+    mLabelView.setText(labelText);
+    mLabelView.setVisibility(TextUtils.isEmpty(labelText) ? View.GONE : View.VISIBLE);
+
+    if (byDuration && type == Calls.MISSED_TYPE) {
+      mPercentView.setText(getCallCountString(mContext, details.missedCount));
+    } else if (byDuration && type == Calls.BLOCKED_TYPE) {
+      mPercentView.setText(getCallCountString(mContext, details.blockedCount));
+    } else {
+      float percent = getDetailValue(details, type, byDuration) * 100F /
+                      getDetailValue(total, type, byDuration);
+      mPercentView.setText(String.format("%.1f%%", percent));
+    }
+
+    final String nameForDefaultImage = TextUtils.isEmpty(details.name)
+        ? details.displayNumber : details.name;
+
+    int contactType = LetterTileDrawable.TYPE_DEFAULT;
+    if (details.isVoicemailNumber) {
+      contactType = LetterTileDrawable.TYPE_VOICEMAIL;
+    } else if (mContactInfoHelper.isBusiness(details.sourceType)) {
+      contactType = LetterTileDrawable.TYPE_BUSINESS;
+    }
+
+    ContactPhotoManager.getInstance(mContext).loadDialerThumbnailOrPhoto(mQuickContactView,
+        details.contactUri, details.photoId, details.photoUri, nameForDefaultImage, contactType);
+  }
+
+  private float getDetailValue(CallStatsDetails details, int type, boolean byDuration) {
+    if (byDuration) {
+        return (float) details.getRequestedDuration(type);
+    } else {
+        return (float) details.getRequestedCount(type);
+    }
+  }
+
+  public static String getCallCountString(Context context, long count) {
+    return context.getResources().getQuantityString(R.plurals.call, (int) count, (int) count);
+  }
+
+  public static String getDurationString(Context context, long duration, boolean includeSeconds) {
+    int hours, minutes, seconds;
+
+    hours = (int) (duration / 3600);
+    duration -= (long) hours * 3600;
+    minutes = (int) (duration / 60);
+    duration -= (long) minutes * 60;
+    seconds = (int) duration;
+
+    if (!includeSeconds) {
+      if (seconds >= 30) {
+        minutes++;
+      }
+      if (minutes >= 60) {
+        hours++;
+      }
+    }
+
+    boolean dispHours = hours > 0;
+    boolean dispMinutes = minutes > 0 || (!includeSeconds && hours == 0);
+    boolean dispSeconds = includeSeconds && (seconds > 0 || (hours == 0 && minutes == 0));
+
+    final Resources res = context.getResources();
+    final String hourString = dispHours ?
+        res.getQuantityString(R.plurals.hour, hours, hours) : null;
+    final String minuteString = dispMinutes ?
+        res.getQuantityString(R.plurals.minute, minutes, minutes) : null;
+    final String secondString = dispSeconds ?
+        res.getQuantityString(R.plurals.second, seconds, seconds) : null;
+
+    int index = ((dispHours ? 4 : 0) | (dispMinutes ? 2 : 0) | (dispSeconds ? 1 : 0)) - 1;
+    String[] formats = res.getStringArray(R.array.call_stats_duration);
+    return String.format(formats[index], hourString, minuteString, secondString);
+  }
+}
diff --git a/java/com/android/dialer/callstats/CallStatsQuery.java b/java/com/android/dialer/callstats/CallStatsQuery.java
new file mode 100644
index 0000000..92bd9c7
--- /dev/null
+++ b/java/com/android/dialer/callstats/CallStatsQuery.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2013 Android Open Kang Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.callstats;
+
+import android.provider.CallLog.Calls;
+
+public class CallStatsQuery {
+  public static final String[] _PROJECTION = new String[] {
+    Calls._ID, // 0
+    Calls.NUMBER, // 1
+    Calls.DATE, // 2
+    Calls.DURATION, // 3
+    Calls.TYPE, // 4
+    Calls.COUNTRY_ISO, // 5
+    Calls.GEOCODED_LOCATION, // 6
+    Calls.CACHED_NAME, // 7
+    Calls.CACHED_NUMBER_TYPE, // 8
+    Calls.CACHED_NUMBER_LABEL, // 9
+    Calls.CACHED_LOOKUP_URI, // 10
+    Calls.CACHED_MATCHED_NUMBER, // 11
+    Calls.CACHED_NORMALIZED_NUMBER, // 12
+    Calls.CACHED_PHOTO_ID, // 13
+    Calls.CACHED_FORMATTED_NUMBER, // 14
+    Calls.NUMBER_PRESENTATION, // 15
+    Calls.PHONE_ACCOUNT_COMPONENT_NAME, // 16
+    Calls.PHONE_ACCOUNT_ID,             // 17
+    Calls.POST_DIAL_DIGITS, // 18
+  };
+
+  public static final int ID = 0;
+  public static final int NUMBER = 1;
+  public static final int DATE = 2;
+  public static final int DURATION = 3;
+  public static final int CALL_TYPE = 4;
+  public static final int COUNTRY_ISO = 5;
+  public static final int GEOCODED_LOCATION = 6;
+  public static final int CACHED_NAME = 7;
+  public static final int CACHED_NUMBER_TYPE = 8;
+  public static final int CACHED_NUMBER_LABEL = 9;
+  public static final int CACHED_LOOKUP_URI = 10;
+  public static final int CACHED_MATCHED_NUMBER = 11;
+  public static final int CACHED_NORMALIZED_NUMBER = 12;
+  public static final int CACHED_PHOTO_ID = 13;
+  public static final int CACHED_FORMATTED_NUMBER = 14;
+  public static final int NUMBER_PRESENTATION = 15;
+  public static final int ACCOUNT_COMPONENT_NAME = 16;
+  public static final int ACCOUNT_ID = 17;
+  public static final int POST_DIAL_DIGITS = 18;
+}
diff --git a/java/com/android/dialer/callstats/CallStatsQueryHandler.java b/java/com/android/dialer/callstats/CallStatsQueryHandler.java
new file mode 100644
index 0000000..32f7397
--- /dev/null
+++ b/java/com/android/dialer/callstats/CallStatsQueryHandler.java
@@ -0,0 +1,264 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2013 Android Open Kang Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.callstats;
+
+import android.content.AsyncQueryHandler;
+import android.content.ContentResolver;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabaseCorruptException;
+import android.database.sqlite.SQLiteDiskIOException;
+import android.database.sqlite.SQLiteException;
+import android.database.sqlite.SQLiteFullException;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.provider.CallLog.Calls;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.PhoneNumberUtils;
+import android.util.Log;
+
+import com.android.dialer.phonenumbercache.ContactInfo;
+import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+import com.android.dialer.telecom.TelecomUtil;
+import com.android.dialer.util.UriUtils;
+import com.google.common.collect.Lists;
+
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Class to handle call-log queries, optionally with a date-range filter
+ */
+public class CallStatsQueryHandler extends AsyncQueryHandler {
+  private static final String[] EMPTY_STRING_ARRAY = new String[0];
+
+  private static final int EVENT_PROCESS_DATA = 10;
+
+  private static final int QUERY_CALLS_TOKEN = 100;
+
+  private static final String TAG = "CallStatsQueryHandler";
+
+  private final WeakReference<Listener> mListener;
+  private Handler mWorkerThreadHandler;
+
+  /**
+   * Simple handler that wraps background calls to catch
+   * {@link SQLiteException}, such as when the disk is full.
+   */
+  protected class CatchingWorkerHandler extends AsyncQueryHandler.WorkerHandler {
+    public CatchingWorkerHandler(Looper looper) {
+      super(looper);
+    }
+
+    @Override
+    public void handleMessage(Message msg) {
+      if (msg.arg1 == EVENT_PROCESS_DATA) {
+        Cursor cursor = (Cursor) msg.obj;
+        Message reply = CallStatsQueryHandler.this.obtainMessage(msg.what);
+        reply.obj = processData(cursor);
+        reply.arg1 = msg.arg1;
+        reply.sendToTarget();
+        return;
+      }
+
+      try {
+        // Perform same query while catching any exceptions
+        super.handleMessage(msg);
+      } catch (SQLiteDiskIOException | SQLiteFullException | SQLiteDatabaseCorruptException e) {
+        Log.w(TAG, "Exception on background worker thread", e);
+      }
+    }
+  }
+
+  @Override
+  protected Handler createHandler(Looper looper) {
+    // Provide our special handler that catches exceptions
+    mWorkerThreadHandler = new CatchingWorkerHandler(looper);
+    return mWorkerThreadHandler;
+  }
+
+  public CallStatsQueryHandler(ContentResolver contentResolver, Listener listener) {
+    super(contentResolver);
+    mListener = new WeakReference<>(listener);
+  }
+
+  public void fetchCalls(long from, long to, PhoneAccountHandle account) {
+    cancelOperation(QUERY_CALLS_TOKEN);
+
+    StringBuilder selection = new StringBuilder();
+    List<String> selectionArgs = Lists.newArrayList();
+
+    if (from != -1) {
+      selection.append(String.format("(%s > ?)", Calls.DATE));
+      selectionArgs.add(String.valueOf(from));
+    }
+    if (to != -1) {
+      if (selection.length() > 0) {
+        selection.append(" AND ");
+      }
+      selection.append(String.format("(%s < ?)", Calls.DATE));
+      selectionArgs.add(String.valueOf(to));
+    }
+    if (account != null) {
+      if (selection.length() > 0) {
+        selection.append(" AND ");
+      }
+      selection.append(String.format("(%s = ?)", Calls.PHONE_ACCOUNT_ID));
+      selectionArgs.add(account.getId());
+    }
+
+    startQuery(QUERY_CALLS_TOKEN, null, Calls.CONTENT_URI_WITH_VOICEMAIL,
+        CallStatsQuery._PROJECTION, selection.toString(),
+        selectionArgs.toArray(EMPTY_STRING_ARRAY), Calls.NUMBER + " ASC");
+  }
+
+  @Override
+  protected synchronized void onQueryComplete(int token, Object cookie, Cursor cursor) {
+    if (token == QUERY_CALLS_TOKEN) {
+      Message msg = mWorkerThreadHandler.obtainMessage(token);
+      msg.arg1 = EVENT_PROCESS_DATA;
+      msg.obj = cursor;
+
+      mWorkerThreadHandler.sendMessage(msg);
+    }
+  }
+
+  @Override
+  public void handleMessage(Message msg) {
+    if (msg.arg1 == EVENT_PROCESS_DATA) {
+      final Map<ContactInfo, CallStatsDetails> calls =
+          (Map<ContactInfo, CallStatsDetails>) msg.obj;
+      final Listener listener = mListener.get();
+      if (listener != null) {
+        listener.onCallsFetched(calls);
+      }
+    } else {
+      super.handleMessage(msg);
+    }
+  }
+
+  private Map<ContactInfo, CallStatsDetails> processData(Cursor cursor) {
+    final Map<ContactInfo, CallStatsDetails> result = new HashMap<>();
+    final ArrayList<ContactInfo> infos = new ArrayList<>();
+    final ArrayList<CallStatsDetails> calls = new ArrayList<>();
+    CallStatsDetails pending = null;
+
+    cursor.moveToFirst();
+
+    while (!cursor.isAfterLast()) {
+      final String number = cursor.getString(CallStatsQuery.NUMBER);
+      final long duration = cursor.getLong(CallStatsQuery.DURATION);
+      final int callType = cursor.getInt(CallStatsQuery.CALL_TYPE);
+
+      if (pending == null || !phoneNumbersEqual(pending.number.toString(), number)) {
+        final long date = cursor.getLong(CallStatsQuery.DATE);
+        final int numberPresentation = cursor.getInt(CallStatsQuery.NUMBER_PRESENTATION);
+        final String countryIso = cursor.getString(CallStatsQuery.COUNTRY_ISO);
+        final String geocode = cursor.getString(CallStatsQuery.GEOCODED_LOCATION);
+        final String postDialDigits = cursor.getString(CallStatsQuery.POST_DIAL_DIGITS);
+        final ContactInfo info = getContactInfoFromCallStats(cursor);
+        final PhoneAccountHandle accountHandle = TelecomUtil.composePhoneAccountHandle(
+            cursor.getString(CallStatsQuery.ACCOUNT_COMPONENT_NAME),
+            cursor.getString(CallStatsQuery.ACCOUNT_ID));
+
+        pending = new CallStatsDetails(number, numberPresentation, postDialDigits,
+            accountHandle, info, countryIso, geocode, date);
+        infos.add(info);
+        calls.add(pending);
+      }
+
+      pending.addTimeOrMissed(callType, duration);
+      cursor.moveToNext();
+    }
+
+    cursor.close();
+    mergeItemsByNumber(calls, infos);
+
+    for (int i = 0; i < calls.size(); i++) {
+      result.put(infos.get(i), calls.get(i));
+    }
+
+    return result;
+  }
+
+  private void mergeItemsByNumber(List<CallStatsDetails> calls, List<ContactInfo> infos) {
+    // temporarily store items marked for removal
+    final ArrayList<CallStatsDetails> callsToRemove = new ArrayList<>();
+    final ArrayList<ContactInfo> infosToRemove = new ArrayList<>();
+
+    for (int i = 0; i < calls.size(); i++) {
+      final CallStatsDetails outerItem = calls.get(i);
+      final String currentFormattedNumber = outerItem.number.toString();
+
+      for (int j = calls.size() - 1; j > i; j--) {
+        final CallStatsDetails innerItem = calls.get(j);
+        final String innerNumber = innerItem.number.toString();
+
+        if (phoneNumbersEqual(currentFormattedNumber, innerNumber)) {
+          outerItem.mergeWith(innerItem);
+          //make sure we're not counting twice in case we're dealing with
+          //multiple different formats
+          innerItem.reset();
+          callsToRemove.add(innerItem);
+          infosToRemove.add(infos.get(j));
+        }
+      }
+    }
+
+    for (CallStatsDetails call : callsToRemove) {
+      calls.remove(call);
+    }
+    for (ContactInfo info : infosToRemove) {
+      infos.remove(info);
+    }
+  }
+
+  private ContactInfo getContactInfoFromCallStats(Cursor c) {
+    ContactInfo info = new ContactInfo();
+    info.lookupUri = UriUtils.parseUriOrNull(c.getString(CallStatsQuery.CACHED_LOOKUP_URI));
+    info.name = c.getString(CallStatsQuery.CACHED_NAME);
+    info.type = c.getInt(CallStatsQuery.CACHED_NUMBER_TYPE);
+    info.label = c.getString(CallStatsQuery.CACHED_NUMBER_LABEL);
+
+    final String matchedNumber = c.getString(CallStatsQuery.CACHED_MATCHED_NUMBER);
+    info.number = matchedNumber == null ? c.getString(CallStatsQuery.NUMBER) : matchedNumber;
+    info.normalizedNumber = c.getString(CallStatsQuery.CACHED_NORMALIZED_NUMBER);
+    info.formattedNumber = c.getString(CallStatsQuery.CACHED_FORMATTED_NUMBER);
+
+    info.photoId = c.getLong(CallStatsQuery.CACHED_PHOTO_ID);
+    info.photoUri = null; // We do not cache the photo URI.
+
+    return info;
+  }
+
+  private static boolean phoneNumbersEqual(String number1, String number2) {
+    if (PhoneNumberHelper.isUriNumber(number1) || PhoneNumberHelper.isUriNumber(number2)) {
+      return PhoneNumberHelper.compareSipAddresses(number1, number2);
+    } else {
+      return PhoneNumberUtils.compare(number1, number2);
+    }
+  }
+
+  public interface Listener {
+    void onCallsFetched(Map<ContactInfo, CallStatsDetails> calls);
+  }
+}
diff --git a/java/com/android/dialer/callstats/DoubleDatePickerDialog.java b/java/com/android/dialer/callstats/DoubleDatePickerDialog.java
new file mode 100644
index 0000000..1e9e072
--- /dev/null
+++ b/java/com/android/dialer/callstats/DoubleDatePickerDialog.java
@@ -0,0 +1,303 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2013 Android Open Kang Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.callstats;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.DatePicker;
+import android.widget.DatePicker.OnDateChangedListener;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+
+import com.android.dialer.R;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+
+/**
+ * Alertdialog with two date pickers - one for a start and one for an end date.
+ * Used to filter the callstats query.
+ */
+public class DoubleDatePickerDialog extends AlertDialog
+    implements OnClickListener, OnDateChangedListener, OnItemSelectedListener {
+
+  private static final String TAG = "DoubleDatePickerDialog";
+
+  public interface OnDateSetListener {
+    void onDateSet(long from, long to);
+  }
+
+  public static class Fragment extends DialogFragment implements OnDateSetListener {
+    private DoubleDatePickerDialog mDialog;
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+      mDialog = new DoubleDatePickerDialog(getActivity(), this);
+      return mDialog;
+    }
+
+    @Override
+    public void onStart() {
+      final Bundle args = getArguments();
+      final long from = args.getLong("from", -1);
+      final long to = args.getLong("to", -1);
+
+      if (from != -1) {
+          mDialog.setValues(from, to);
+      } else {
+          mDialog.resetPickers();
+      }
+      super.onStart();
+    }
+
+    @Override
+    public void onDateSet(long from, long to) {
+      ((DoubleDatePickerDialog.OnDateSetListener) getActivity()).onDateSet(from, to);
+    }
+
+    public static Bundle createArguments(long from, long to) {
+      final Bundle args = new Bundle();
+      args.putLong("from", from);
+      args.putLong("to", to);
+      return args;
+    }
+  }
+
+  private interface QuickSelection {
+    void adjustStartDate(Calendar date);
+  }
+
+  private static final int[] QUICKSELECTION_ENTRIES = new int[] {
+    R.string.date_qs_currentmonth,
+    R.string.date_qs_currentquarter,
+    R.string.date_qs_currentyear,
+    R.string.date_qs_lastweek,
+    R.string.date_qs_lastmonth,
+    R.string.date_qs_lastquarter,
+    R.string.date_qs_lastyear
+  };
+
+  private static final QuickSelection[] QUICKSELECTIONS = new QuickSelection[] {
+          date -> date.set(Calendar.DAY_OF_MONTH, 1),
+          date -> {
+            final int currentMonth = date.get(Calendar.MONTH);
+            date.set(Calendar.MONTH, currentMonth - (currentMonth % 3));
+            date.set(Calendar.DAY_OF_MONTH, 1);
+          },
+          date -> {
+            date.set(Calendar.MONTH, 0);
+            date.set(Calendar.DAY_OF_MONTH, 1);
+          },
+          date -> date.add(Calendar.WEEK_OF_YEAR, -1),
+          date -> date.add(Calendar.MONTH, -1),
+          date -> date.add(Calendar.MONTH, -3),
+          date -> date.add(Calendar.YEAR, -1),
+  };
+
+  private static final String YEAR = "year";
+  private static final String MONTH = "month";
+  private static final String DAY = "day";
+
+  private final Spinner mQuickSelSpinner;
+  private final DatePicker mDatePickerFrom;
+  private final DatePicker mDatePickerTo;
+  private final OnDateSetListener mCallBack;
+  private Button mOkButton;
+  private int mQuickSelSelection = -1;
+
+  public DoubleDatePickerDialog(final Context context, OnDateSetListener callBack) {
+    super(context);
+
+    mCallBack = callBack;
+
+    setTitle(R.string.call_stats_filter_picker_title);
+    setButton(BUTTON_NEGATIVE, context.getString(android.R.string.cancel), this);
+    setButton(BUTTON_POSITIVE, context.getString(android.R.string.ok), this);
+    setIcon(0);
+
+    LayoutInflater inflater =
+        (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+    View view = inflater.inflate(R.layout.double_date_picker_dialog, null);
+    setView(view);
+
+    mDatePickerFrom = view.findViewById(R.id.date_picker_from);
+    mDatePickerTo = view.findViewById(R.id.date_picker_to);
+
+    ArrayList<CharSequence> quickSelEntries = new ArrayList<>();
+    for (int entryId : QUICKSELECTION_ENTRIES) {
+      quickSelEntries.add(context.getString(entryId));
+    }
+    ArrayAdapter<CharSequence> quickSelAdapter = new ArrayAdapter<CharSequence>(
+        context, android.R.layout.simple_spinner_item, android.R.id.text1, quickSelEntries) {
+      @Override
+      public View getView(int position, View convertView, android.view.ViewGroup parent) {
+        final TextView v = (TextView) super.getView(position, convertView, parent);
+        v.setText(context.getString(R.string.date_quick_selection));
+        return v;
+      }
+    };
+    quickSelAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+
+    mQuickSelSpinner = view.findViewById(R.id.date_quick_selection);
+    mQuickSelSpinner.setOnItemSelectedListener(this);
+    mQuickSelSpinner.setAdapter(quickSelAdapter);
+
+    resetPickers();
+  }
+
+  @Override
+  protected void onStart() {
+    super.onStart();
+    mOkButton = getButton(DialogInterface.BUTTON_POSITIVE);
+    updateOkButtonState();
+  }
+
+  @Override
+  public void onClick(DialogInterface dialog, int which) {
+    switch (which) {
+      case BUTTON_POSITIVE:
+        tryNotifyDateSet();
+        break;
+      case BUTTON_NEGATIVE:
+        break;
+    }
+  }
+
+  @Override
+  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
+    if (mQuickSelSelection >= 0) {
+      QuickSelection sel = QUICKSELECTIONS[pos];
+      Calendar from = Calendar.getInstance();
+      long millisTo = from.getTimeInMillis();
+      sel.adjustStartDate(from);
+      long millisFrom = from.getTimeInMillis();
+
+      setValues(millisFrom, millisTo);
+    }
+    mQuickSelSelection = pos;
+  }
+
+  @Override
+  public void onNothingSelected(AdapterView<?> parent) {
+  }
+
+  public void onDateChanged(DatePicker view, int year, int month, int day) {
+    view.init(year, month, day, this);
+    updateOkButtonState();
+  }
+
+  public void setValues(long millisFrom, long millisTo) {
+    setPicker(mDatePickerFrom, millisFrom);
+    setPicker(mDatePickerTo, millisTo);
+    updateOkButtonState();
+  }
+
+  public void resetPickers() {
+    long millis = System.currentTimeMillis();
+    setPicker(mDatePickerFrom, millis);
+    setPicker(mDatePickerTo, millis);
+    updateOkButtonState();
+  }
+
+  private void setPicker(DatePicker picker, long millis) {
+    Calendar c = Calendar.getInstance();
+    c.setTimeInMillis(millis);
+
+    int year = c.get(Calendar.YEAR);
+    int month = c.get(Calendar.MONTH);
+    int day = c.get(Calendar.DAY_OF_MONTH);
+
+    picker.init(year, month, day, this);
+  }
+
+  private long getMillisForPicker(DatePicker picker, boolean endOfDay) {
+    Calendar c = Calendar.getInstance();
+    c.set(Calendar.YEAR, picker.getYear());
+    c.set(Calendar.MONTH, picker.getMonth());
+    c.set(Calendar.DAY_OF_MONTH, picker.getDayOfMonth());
+    c.set(Calendar.HOUR_OF_DAY, 0);
+    c.set(Calendar.MINUTE, 0);
+    c.set(Calendar.SECOND, 0);
+
+    long millis = c.getTimeInMillis();
+    if (endOfDay) {
+      millis += 24L * 60L * 60L * 1000L - 1L;
+    }
+
+    return millis;
+  }
+
+  private void updateOkButtonState() {
+    if (mOkButton != null) {
+      long millisFrom = getMillisForPicker(mDatePickerFrom, false);
+      long millisTo = getMillisForPicker(mDatePickerTo, true);
+      mOkButton.setEnabled(millisFrom < millisTo);
+    }
+  }
+
+  private void tryNotifyDateSet() {
+    if (mCallBack != null) {
+      mDatePickerFrom.clearFocus();
+      mDatePickerTo.clearFocus();
+
+      long millisFrom = getMillisForPicker(mDatePickerFrom, false);
+      long millisTo = getMillisForPicker(mDatePickerTo, true);
+
+      mCallBack.onDateSet(millisFrom, millisTo);
+    }
+  }
+
+  // users like to play with it, so save the state and don't reset each time
+  @Override
+  public Bundle onSaveInstanceState() {
+    Bundle state = super.onSaveInstanceState();
+    state.putInt("F_" + YEAR, mDatePickerFrom.getYear());
+    state.putInt("F_" + MONTH, mDatePickerFrom.getMonth());
+    state.putInt("F_" + DAY, mDatePickerFrom.getDayOfMonth());
+    state.putInt("T_" + YEAR, mDatePickerTo.getYear());
+    state.putInt("T_" + MONTH, mDatePickerTo.getMonth());
+    state.putInt("T_" + DAY, mDatePickerTo.getDayOfMonth());
+    return state;
+  }
+
+  @Override
+  public void onRestoreInstanceState(Bundle savedInstanceState) {
+    super.onRestoreInstanceState(savedInstanceState);
+    int fyear = savedInstanceState.getInt("F_" + YEAR);
+    int fmonth = savedInstanceState.getInt("F_" + MONTH);
+    int fday = savedInstanceState.getInt("F_" + DAY);
+    int tyear = savedInstanceState.getInt("T_" + YEAR);
+    int tmonth = savedInstanceState.getInt("T_" + MONTH);
+    int tday = savedInstanceState.getInt("T_" + DAY);
+    mDatePickerFrom.init(fyear, fmonth, fday, this);
+    mDatePickerTo.init(tyear, tmonth, tday, this);
+  }
+}
diff --git a/java/com/android/dialer/callstats/res/layout/call_stats_detail.xml b/java/com/android/dialer/callstats/res/layout/call_stats_detail.xml
new file mode 100644
index 0000000..fe53c4d
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/layout/call_stats_detail.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2009 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
+  android:id="@+id/call_stats_detail"
+  android:layout_width="match_parent"
+  android:layout_height="match_parent"
+  android:orientation="vertical"
+  android:layout_alignParentStart="true"
+  android:layout_alignParentTop="true"
+  android:background="?android:attr/colorBackground">
+
+  <com.android.dialer.widget.DialerToolbar
+    android:id="@+id/toolbar"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"/>
+
+  <!-- Caller information "card" -->
+  <LinearLayout
+    android:id="@+id/caller_information"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginTop="@dimen/call_details_top_margin"
+    android:paddingStart="@dimen/contact_container_padding_top_start"
+    android:paddingEnd="@dimen/contact_container_padding_bottom_end"
+    android:paddingTop="@dimen/contact_container_padding_top_start"
+    android:paddingBottom="@dimen/contact_container_padding_bottom_end"
+    android:baselineAligned="false"
+    android:orientation="horizontal"
+    android:focusable="true">
+
+    <QuickContactBadge
+      android:id="@+id/quick_contact_photo"
+      android:layout_width="@dimen/contact_photo_size"
+      android:layout_height="@dimen/contact_photo_size"
+      android:layout_gravity="center_vertical"
+      android:focusable="true" />
+
+    <LinearLayout
+      android:layout_width="0dp"
+      android:layout_height="wrap_content"
+      android:layout_weight="1"
+      android:layout_gravity="center_vertical"
+      android:orientation="vertical"
+      android:layout_marginStart="@dimen/photo_text_margin">
+
+      <TextView
+        android:id="@+id/caller_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="@style/Dialer.TextAppearance.Primary" />
+
+      <TextView
+        android:id="@+id/caller_number"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="@style/Dialer.TextAppearance.Secondary" />
+
+    </LinearLayout>
+
+    <ImageView
+      android:id="@+id/call_back_button"
+      android:layout_width="@dimen/call_back_button_size"
+      android:layout_height="@dimen/call_back_button_size"
+      android:background="?android:attr/selectableItemBackgroundBorderless"
+      android:src="@drawable/quantum_ic_call_vd_theme_24"
+      android:scaleType="center"
+      android:contentDescription="@string/call"
+      android:visibility="gone"
+      app:tint="?android:attr/textColorSecondary" />
+
+  </LinearLayout>
+
+  <ScrollView
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:orientation="vertical">
+
+      <!-- The actual details -->
+      <include layout="@layout/call_stats_detail_info" />
+
+      <View
+        android:id="@+id/separator"
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginTop="@dimen/ec_divider_top_bottom_margin"
+        android:layout_marginBottom="@dimen/ec_divider_top_bottom_margin"
+        android:background="#12000000" />
+
+      <TextView
+        android:id="@+id/call_detail_action_copy"
+        style="@style/CallDetailsActionItemStyle"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/call_details_copy_number"
+        app:drawableStartCompat="@drawable/quantum_ic_content_copy_vd_theme_24"
+        app:drawableTint="?colorIcon" />
+
+      <TextView
+        android:id="@+id/call_detail_action_edit_before_call"
+        style="@style/CallDetailsActionItemStyle"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/call_details_edit_number"
+        app:drawableStartCompat="@drawable/quantum_ic_edit_vd_theme_24"
+        app:drawableTint="?colorIcon" />
+
+    </LinearLayout>
+
+  </ScrollView>
+
+</LinearLayout>
diff --git a/java/com/android/dialer/callstats/res/layout/call_stats_detail_info.xml b/java/com/android/dialer/callstats/res/layout/call_stats_detail_info.xml
new file mode 100644
index 0000000..fc9c3b1
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/layout/call_stats_detail_info.xml
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2011 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  android:id="@+id/call_stats_info"
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content"
+  android:orientation="vertical"
+  android:paddingStart="@dimen/call_log_list_item_info_margin_start"
+  android:paddingEnd="@dimen/call_log_list_item_info_margin_start"
+  android:paddingTop="@dimen/call_log_outer_margin"
+  android:paddingBottom="@dimen/call_log_outer_margin">
+
+  <TextView
+    android:id="@+id/date_filter"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    style="@style/Dialer.TextAppearance.Secondary" />
+
+  <androidx.cardview.widget.CardView
+    android:id="@+id/duration_card"
+    style="@style/CallStatsCardStyle">
+
+    <RelativeLayout
+      android:id="@+id/duration_container"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:padding="16dp">
+
+      <TextView
+        android:id="@+id/durations_header"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="16dp"
+        android:text="@string/call_stats_title_durations"
+        style="@style/TextAppearance.CallStatsCategoryTitle" />
+
+      <TextView
+        android:id="@+id/total_duration_total"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_below="@id/durations_header"
+        style="@style/Dialer.TextAppearance.Primary" />
+
+      <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentStart="true"
+        android:layout_toStartOf="@id/total_duration_total"
+        android:layout_alignBaseline="@id/total_duration_total"
+        android:text="@string/call_stats_title_of_total"
+        style="@style/Dialer.TextAppearance.Primary" />
+
+      <com.android.dialer.widget.LinearColorBar
+        android:id="@+id/duration_total_percent_bar"
+        android:layout_width="match_parent"
+        android:layout_below="@id/total_duration_total"
+        style="@style/CallStatsDetailBarStyle" />
+
+      <TextView
+        android:id="@+id/total_duration_number"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_below="@id/duration_total_percent_bar"
+        style="@style/Dialer.TextAppearance.Primary" />
+
+      <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentStart="true"
+        android:layout_toStartOf="@id/total_duration_number"
+        android:layout_alignBaseline="@id/total_duration_number"
+        android:text="@string/call_stats_title_for_number"
+        style="@style/Dialer.TextAppearance.Primary" />
+
+      <com.android.dialer.widget.LinearColorBar
+        android:id="@+id/duration_number_percent_bar"
+        android:layout_width="match_parent"
+        android:layout_below="@id/total_duration_number"
+        style="@style/CallStatsDetailBarStyle" />
+
+      <include
+        android:id="@+id/in_duration"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/duration_number_percent_bar"
+        android:layout_marginTop="8dp"
+        android:layout_marginBottom="@dimen/call_log_icon_margin"
+        layout="@layout/call_stats_detail_line" />
+
+      <include
+        android:id="@+id/out_duration"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/in_duration"
+        android:layout_marginBottom="@dimen/call_log_icon_margin"
+        layout="@layout/call_stats_detail_line" />
+
+    </RelativeLayout>
+
+  </androidx.cardview.widget.CardView>
+
+  <Space
+      android:layout_width="match_parent"
+      android:layout_height="16dp"/>
+
+  <androidx.cardview.widget.CardView
+    android:id="@+id/count_card"
+    style="@style/CallStatsCardStyle">
+
+    <RelativeLayout
+      android:id="@+id/count_container"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:padding="16dp">
+
+      <TextView
+        android:id="@+id/count_header"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="16dp"
+        android:text="@string/call_stats_title_count"
+        style="@style/TextAppearance.CallStatsCategoryTitle" />
+
+      <TextView
+        android:id="@+id/total_count_total"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_below="@id/count_header"
+        style="@style/Dialer.TextAppearance.Primary" />
+
+      <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentStart="true"
+        android:layout_toStartOf="@id/total_count_total"
+        android:layout_alignBaseline="@id/total_count_total"
+        android:text="@string/call_stats_title_of_total"
+        style="@style/Dialer.TextAppearance.Primary" />
+
+      <com.android.dialer.widget.LinearColorBar
+        android:id="@+id/count_total_percent_bar"
+        android:layout_width="match_parent"
+        android:layout_below="@id/total_count_total"
+        style="@style/CallStatsDetailBarStyle" />
+
+      <TextView
+        android:id="@+id/total_count_number"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_below="@id/count_total_percent_bar"
+        style="@style/Dialer.TextAppearance.Primary" />
+
+      <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentStart="true"
+        android:layout_toStartOf="@id/total_count_number"
+        android:layout_alignBaseline="@id/total_count_number"
+        android:text="@string/call_stats_title_for_number"
+        style="@style/Dialer.TextAppearance.Primary" />
+
+      <com.android.dialer.widget.LinearColorBar
+        android:id="@+id/count_number_percent_bar"
+        android:layout_width="match_parent"
+        android:layout_below="@id/total_count_number"
+        style="@style/CallStatsDetailBarStyle" />
+
+      <include
+        android:id="@+id/in_count"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/count_number_percent_bar"
+        android:layout_marginTop="8dp"
+        android:layout_marginBottom="@dimen/call_log_icon_margin"
+        layout="@layout/call_stats_detail_line" />
+
+      <include
+        android:id="@+id/out_count"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/in_count"
+        android:layout_marginBottom="@dimen/call_log_icon_margin"
+        layout="@layout/call_stats_detail_line" />
+
+      <include
+        android:id="@+id/missed_count"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/out_count"
+        android:layout_marginBottom="@dimen/call_log_icon_margin"
+        layout="@layout/call_stats_detail_line" />
+
+      <include
+        android:id="@+id/blocked_count"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/missed_count"
+        android:layout_marginBottom="@dimen/call_log_icon_margin"
+        layout="@layout/call_stats_detail_line" />
+
+    </RelativeLayout>
+
+  </androidx.cardview.widget.CardView>
+
+  <Space
+      android:layout_width="match_parent"
+      android:layout_height="16dp"/>
+
+  <androidx.cardview.widget.CardView
+    android:id="@+id/average_card"
+    style="@style/CallStatsCardStyle">
+
+    <LinearLayout
+      android:id="@+id/average_container"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:padding="16dp"
+      android:orientation="vertical">
+
+      <TextView
+        android:id="@+id/average_header"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="16dp"
+        android:text="@string/call_stats_title_average_duration"
+        style="@style/TextAppearance.CallStatsCategoryTitle" />
+
+      <include
+        android:id="@+id/in_average"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/call_log_icon_margin"
+        layout="@layout/call_stats_detail_line" />
+
+      <include
+        android:id="@+id/out_average"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/call_log_icon_margin"
+        layout="@layout/call_stats_detail_line" />
+
+    </LinearLayout>
+
+  </androidx.cardview.widget.CardView>
+
+</LinearLayout>
diff --git a/java/com/android/dialer/callstats/res/layout/call_stats_detail_line.xml b/java/com/android/dialer/callstats/res/layout/call_stats_detail_line.xml
new file mode 100644
index 0000000..5219f07
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/layout/call_stats_detail_line.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content">
+
+  <com.android.dialer.calllogutils.CallTypeIconsView
+    android:id="@+id/icon"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center_vertical" />
+
+  <TextView
+    android:id="@+id/value"
+    android:layout_width="0dp"
+    android:layout_height="wrap_content"
+    android:layout_weight="1"
+    android:layout_marginStart="@dimen/call_log_icon_margin"
+    style="@style/Dialer.TextAppearance.Primary" />
+
+  <TextView
+    android:id="@+id/percent"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginStart="@dimen/call_log_icon_margin"
+    style="@style/Dialer.TextAppearance.Secondary" />
+
+</LinearLayout>
diff --git a/java/com/android/dialer/callstats/res/layout/call_stats_fragment.xml b/java/com/android/dialer/callstats/res/layout/call_stats_fragment.xml
new file mode 100644
index 0000000..1d2bcdc
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/layout/call_stats_fragment.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2011 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- Layout parameters are set programmatically. -->
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+  xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:design="http://schemas.android.com/apk/res-auto"
+  android:layout_width="match_parent"
+  android:layout_height="match_parent"
+  design:statusBarBackground="@null" >
+
+  <com.google.android.material.appbar.AppBarLayout
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:stateListAnimator="@null"
+    android:background="?android:attr/colorBackground"
+    android:elevation="0dp">
+
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:orientation="vertical"
+      design:layout_scrollFlags="scroll|enterAlways">
+
+      <include layout="@layout/call_log_filter_spinners" />
+
+      <TextView
+        android:id="@+id/date_filter"
+        style="@style/ContactListSeparatorTextViewStyle"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/call_log_outer_margin"
+        android:layout_marginEnd="@dimen/call_log_outer_margin"
+        android:visibility="gone" />
+
+      <TextView
+        android:id="@+id/sum_header"
+        style="@style/ContactListSeparatorTextViewStyle"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/call_log_outer_margin"
+        android:layout_marginEnd="@dimen/call_log_outer_margin"
+        android:paddingTop="@dimen/call_log_outer_margin"
+        android:paddingBottom="@dimen/call_log_outer_margin"
+        android:visibility="gone" />
+    </LinearLayout>
+
+  </com.google.android.material.appbar.AppBarLayout>
+
+  <androidx.recyclerview.widget.RecyclerView
+    android:id="@+id/recycler_view"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingStart="@dimen/call_log_horizontal_margin"
+    android:paddingEnd="@dimen/call_log_horizontal_margin"
+    android:background="?android:attr/colorBackground"
+    design:layout_behavior="@string/appbar_scrolling_view_behavior" />
+
+  <com.android.dialer.widget.EmptyContentView
+    android:id="@+id/empty_list_view"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center_vertical"
+    android:background="?android:attr/colorBackground"
+    android:visibility="gone" />
+
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/java/com/android/dialer/callstats/res/layout/call_stats_list_item.xml b/java/com/android/dialer/callstats/res/layout/call_stats_list_item.xml
new file mode 100644
index 0000000..2918d23
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/layout/call_stats_list_item.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<RelativeLayout
+  xmlns:android="http://schemas.android.com/apk/res/android"
+  android:id="@+id/primary_action_view"
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content"
+  android:padding="12dp"
+  android:background="?android:attr/selectableItemBackground">
+
+  <QuickContactBadge
+    android:id="@+id/quick_contact_photo"
+    android:layout_width="@dimen/contact_photo_size"
+    android:layout_height="@dimen/contact_photo_size"
+    android:layout_marginEnd="@dimen/call_log_list_item_info_margin_start"
+    android:paddingTop="2dp" />
+
+  <TextView
+    android:id="@+id/name"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_toEndOf="@id/quick_contact_photo"
+    android:ellipsize="marquee"
+    android:singleLine="true"
+    style="@style/Dialer.TextAppearance.Primary" />
+
+  <TextView
+    android:id="@+id/percent"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_toEndOf="@id/name"
+    android:layout_alignBaseline="@id/name"
+    android:layout_alignParentEnd="true"
+    android:gravity="end"
+      style="@style/Dialer.TextAppearance.Secondary" />
+
+  <com.android.dialer.widget.LinearColorBar
+    android:id="@+id/percent_bar"
+    android:layout_width="wrap_content"
+    android:layout_below="@id/name"
+    android:layout_toEndOf="@id/quick_contact_photo"
+    android:layout_alignParentEnd="true"
+    style="@style/CallStatsBarStyle" />
+
+  <TextView
+    android:id="@+id/label"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_below="@id/percent_bar"
+    android:layout_toEndOf="@id/quick_contact_photo"
+    android:layout_marginEnd="8dp"
+    android:singleLine="true"
+    style="@style/Dialer.TextAppearance.Secondary" />
+
+  <TextView
+    android:id="@+id/number"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_below="@id/percent_bar"
+    android:layout_toEndOf="@id/label"
+    android:layout_alignBaseline="@id/label"
+    android:singleLine="true"
+    android:textSize="12sp"
+    style="@style/Dialer.TextAppearance.Secondary" />
+
+</RelativeLayout>
diff --git a/java/com/android/dialer/callstats/res/layout/double_date_picker_dialog.xml b/java/com/android/dialer/callstats/res/layout/double_date_picker_dialog.xml
new file mode 100644
index 0000000..565c348
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/layout/double_date_picker_dialog.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2007, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:gravity="center"
+    android:orientation="vertical" >
+
+    <Spinner
+        android:id="@+id/date_quick_selection"
+        android:layout_marginTop="3dp"
+        android:layout_marginBottom="3dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="-12dp"
+        android:layout_marginEnd="3dp"
+        android:layout_marginTop="3dp"
+        android:text="@string/call_stats_filter_from"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+
+    <DatePicker
+        android:id="@+id/date_picker_from"
+        android:datePickerMode="spinner"
+        android:layout_width="wrap_content"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:calendarViewShown="false"
+        android:spinnersShown="true" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="-12dp"
+        android:layout_marginEnd="4dp"
+        android:text="@string/call_stats_filter_to"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+
+    <DatePicker
+        android:id="@+id/date_picker_to"
+        android:datePickerMode="spinner"
+        android:layout_width="wrap_content"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:calendarViewShown="false"
+        android:spinnersShown="true" />
+
+</LinearLayout>
diff --git a/java/com/android/dialer/callstats/res/menu/call_stats_options.xml b/java/com/android/dialer/callstats/res/menu/call_stats_options.xml
new file mode 100644
index 0000000..83cdeb8
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/menu/call_stats_options.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2011 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto">
+  <item
+    android:id="@+id/date_filter"
+    android:title="@string/call_stats_date_filter"
+    app:showAsAction="never" />
+
+  <item
+    android:id="@+id/reset_date_filter"
+    android:title="@string/call_stats_reset_filter"
+    android:visible="false"
+    app:showAsAction="never" />
+
+  <item
+    android:id="@+id/sort_by_duration"
+    android:title="@string/call_stats_sort_by_duration"
+    android:visible="false"
+    app:showAsAction="never" />
+
+  <item
+    android:id="@+id/sort_by_count"
+    android:title="@string/call_stats_sort_by_count"
+    app:showAsAction="never" />
+
+</menu>
diff --git a/java/com/android/dialer/callstats/res/values-ar/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-ar/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ar/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ar/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-ar/cm_plurals.xml
new file mode 100644
index 0000000..66454f8
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ar/cm_plurals.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="zero">%d ساعات</item>
+        <item quantity="one">%d ساعة</item>
+        <item quantity="two">%d ساعات</item>
+        <item quantity="few">%d ساعات</item>
+        <item quantity="many">%d ساعات</item>
+        <item quantity="other">%d ساعات</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="zero">%d دقائق</item>
+        <item quantity="one">%d دقيقة</item>
+        <item quantity="two">%d دقائق</item>
+        <item quantity="few">%d دقائق</item>
+        <item quantity="many">%d دقائق</item>
+        <item quantity="other">%d دقائق</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="zero">%d ثواني</item>
+        <item quantity="one">%d ثانية</item>
+        <item quantity="two">%d ثواني</item>
+        <item quantity="few">%d ثواني</item>
+        <item quantity="many">%d ثواني</item>
+        <item quantity="other">%d ثواني</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="zero">%d مكالمات</item>
+        <item quantity="one">%d مكالمة</item>
+        <item quantity="two">%d مكالمات</item>
+        <item quantity="few">%d مكالمات</item>
+        <item quantity="many">%d مكالمات</item>
+        <item quantity="other">%d مكالمات</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ar/cm_strings.xml b/java/com/android/dialer/callstats/res/values-ar/cm_strings.xml
new file mode 100644
index 0000000..d07fb82
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ar/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">إحصائيات تفاصيل جهة الاتصال</string>
+    <string name="call_stats_incoming">الواردة: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">الصادرة: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">لم يتم الرد عليها: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">المحظورة: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">الإجمالي: <xliff:g id="call_count">%1$s</xliff:g> ، <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">الإجمالي: <xliff:g id="call_count"> %s </xliff:g></string>
+    <string name="call_stats_filter_from">تاريخ البدء</string>
+    <string name="call_stats_filter_to">تاريخ الانتهاء</string>
+    <string name="call_stats_filter_picker_title">نطاق التصفية</string>
+    <string name="date_quick_selection">التحديد السريع</string>
+    <string name="date_qs_currentmonth">الشهر الحالي</string>
+    <string name="date_qs_currentquarter">ربع السنة الحالي</string>
+    <string name="date_qs_currentyear">السنة الحالية</string>
+    <string name="date_qs_lastweek">الأسبوع الماضي</string>
+    <string name="date_qs_lastmonth">الشهر الماضي</string>
+    <string name="date_qs_lastquarter">ربع السنة الأخير</string>
+    <string name="date_qs_lastyear">العام الماضي</string>
+    <string name="call_stats_date_filter">ضبط النطاق الزمني</string>
+    <string name="call_stats_reset_filter">إعادة تعيين النطاق الزمني</string>
+    <string name="call_stats_sort_by_duration">ترتيب حسب مدة المكالمة</string>
+    <string name="call_stats_sort_by_count">ترتيب حسب عدد المكالمات</string>
+    <string name="call_stats_title_for_number">هذا الرقم</string>
+    <string name="call_stats_title_of_total">من الإجمالي</string>
+    <string name="call_stats_title_durations">مدد المكالمات</string>
+    <string name="call_stats_title_count">عدد المكالمات</string>
+    <string name="call_stats_title_average_duration">متوسط مدة المكالمة</string>
+    <string name="recent_calls_no_items_in_range">سجل مكالماتك لا يحتوي على أي مكالمات في نطاق الوقت المحدد.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ast-rES/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-ast-rES/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ast-rES/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ast-rES/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-ast-rES/cm_plurals.xml
new file mode 100644
index 0000000..37b33a5
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ast-rES/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 h</item>
+        <item quantity="other">%d h</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 m</item>
+        <item quantity="other">%d m</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 s</item>
+        <item quantity="other">%d s</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 llamada</item>
+        <item quantity="other">%d llamaes</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ast-rES/cm_strings.xml b/java/com/android/dialer/callstats/res/values-ast-rES/cm_strings.xml
new file mode 100644
index 0000000..82538a7
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ast-rES/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Detalles de les estadístiques del contautu</string>
+    <string name="call_stats_incoming">D\'entrada: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">De salida: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Ensin contestar: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Con bloquéu: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">En total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Data de comienzu</string>
+    <string name="call_stats_filter_to">Data de fin</string>
+    <string name="call_stats_filter_picker_title">Intervalu de peñera</string>
+    <string name="date_quick_selection">Seleición rápida</string>
+    <string name="date_qs_currentmonth">El mes actual</string>
+    <string name="date_qs_currentquarter">El trimestre actual</string>
+    <string name="date_qs_currentyear">L\'añu actual</string>
+    <string name="date_qs_lastweek">La selmana pasada</string>
+    <string name="date_qs_lastmonth">El mes pasáu</string>
+    <string name="date_qs_lastquarter">El trimestre pasáu</string>
+    <string name="date_qs_lastyear">L\'añu pasáu</string>
+    <string name="call_stats_date_filter">Axustar l\'intervalu de tiempu</string>
+    <string name="call_stats_reset_filter">Reafitar l\'intervalu de tiempu</string>
+    <string name="call_stats_sort_by_duration">Ordenar pola duración de les llamaes</string>
+    <string name="call_stats_sort_by_count">Ordenar pol númberu de les llamaes</string>
+    <string name="call_stats_title_for_number">Esti númberu</string>
+    <string name="call_stats_title_of_total">Del total</string>
+    <string name="call_stats_title_durations">Duración de les llamaes</string>
+    <string name="call_stats_title_count">Númberu de llamaes</string>
+    <string name="call_stats_title_average_duration">Duración media de les llamaes</string>
+    <string name="recent_calls_no_items_in_range">El rexistru de llamaes nun contién nenguna llamada nel intervalu de tiempu seleicionáu.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-az/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-az/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-az/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-az/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-az/cm_plurals.xml
new file mode 100644
index 0000000..223ebe5
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-az/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 saat</item>
+        <item quantity="other">%d saat</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 dəq</item>
+        <item quantity="other">%d dəq</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 san</item>
+        <item quantity="other">%d san</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 zəng</item>
+        <item quantity="other">%d zəng</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-az/cm_strings.xml b/java/com/android/dialer/callstats/res/values-az/cm_strings.xml
new file mode 100644
index 0000000..1801c3c
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-az/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Kontakt statistika detalları</string>
+    <string name="call_stats_incoming">Gələn: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Gedən: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Cavabsız: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Əngəllənən: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Cəmi: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Cəmi: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Başlama tarixi</string>
+    <string name="call_stats_filter_to">Bitmə tarixi</string>
+    <string name="call_stats_filter_picker_title">Filtr aralığı</string>
+    <string name="date_quick_selection">Cəld seçim</string>
+    <string name="date_qs_currentmonth">Hazırki ay</string>
+    <string name="date_qs_currentquarter">Hazırki rüb</string>
+    <string name="date_qs_currentyear">Hazırki il</string>
+    <string name="date_qs_lastweek">Keçən həftə</string>
+    <string name="date_qs_lastmonth">Keçən ay</string>
+    <string name="date_qs_lastquarter">Keçən rüb</string>
+    <string name="date_qs_lastyear">Keçən il</string>
+    <string name="call_stats_date_filter">Vaxt aralığını nizamla</string>
+    <string name="call_stats_reset_filter">Vaxt aralığını sıfırla</string>
+    <string name="call_stats_sort_by_duration">Zəng müddətinə görə sırala</string>
+    <string name="call_stats_sort_by_count">Zəng sayına görə sırala</string>
+    <string name="call_stats_title_for_number">Bu nömrə</string>
+    <string name="call_stats_title_of_total">Cəmi</string>
+    <string name="call_stats_title_durations">Zəng müddətləri</string>
+    <string name="call_stats_title_count">Zəng sayı</string>
+    <string name="call_stats_title_average_duration">Ortalama zəng müddəti</string>
+    <string name="recent_calls_no_items_in_range">Seçilmiş vaxt aralığında zəng jurnalınız heç bir zəng ehtiva etmir.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-be/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-be/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-be/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-be/cm_strings.xml b/java/com/android/dialer/callstats/res/values-be/cm_strings.xml
new file mode 100644
index 0000000..220ebea
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-be/cm_strings.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Падрабязная статыстыка кантакту</string>
+    <string name="call_stats_incoming">Уваходных: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Выходных: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Прапушчаных: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Заблакіраваных: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Усяго: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Усяго: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Дата пачатку</string>
+    <string name="call_stats_filter_to">Дата завяршэння</string>
+    <string name="call_stats_filter_picker_title">Дыяпазон выбару</string>
+    <string name="date_quick_selection">Хуткі выбар</string>
+    <string name="date_qs_currentmonth">Бягучы месяц</string>
+    <string name="date_qs_currentquarter">Бягучы квартал</string>
+    <string name="date_qs_currentyear">Бягучы год</string>
+    <string name="date_qs_lastweek">Апошні тыдзень</string>
+    <string name="date_qs_lastmonth">Апошні месяц</string>
+    <string name="date_qs_lastquarter">Апошні квартал</string>
+    <string name="date_qs_lastyear">Апошні год</string>
+    <string name="call_stats_date_filter">Карэкціраваць дыяпазон часу</string>
+    <string name="call_stats_reset_filter">Скінуць дыяпазон часу</string>
+    <string name="call_stats_sort_by_count">Сартаваць па колькасці выклікаў</string>
+    <string name="call_stats_title_for_number">Гэты нумар</string>
+    <string name="call_stats_title_of_total">З усіх</string>
+    <string name="call_stats_title_durations">Працягласць выклікаў</string>
+    <string name="call_stats_title_count">Колькасць выклікаў</string>
+    <string name="call_stats_title_average_duration">Сярэдняя працягласць выклікаў</string>
+    <string name="recent_calls_no_items_in_range">Журнал выклікаў не змяшчае запісаў за азначаны перыяд.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-bg/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-bg/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-bg/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-bg/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-bg/cm_plurals.xml
new file mode 100644
index 0000000..c6ae00e
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-bg/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 час</item>
+        <item quantity="other">%d часа</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 минута</item>
+        <item quantity="other">%d минути</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 секунда</item>
+        <item quantity="other">%d секунди</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 обаждане</item>
+        <item quantity="other">%d обаждания</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-bg/cm_strings.xml b/java/com/android/dialer/callstats/res/values-bg/cm_strings.xml
new file mode 100644
index 0000000..636503f
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-bg/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Статистически данни за контакт</string>
+    <string name="call_stats_incoming">Входящи: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_outgoing">Изходящи: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_missed">Пропуснати: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_blocked">Блокирани: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Общо: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Общо: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Начална дата</string>
+    <string name="call_stats_filter_to">Крайна дата</string>
+    <string name="call_stats_filter_picker_title">Филтриращ диапазон</string>
+    <string name="date_quick_selection">Бърз избор</string>
+    <string name="date_qs_currentmonth">Текущ месец</string>
+    <string name="date_qs_currentquarter">Текущото тримесечие</string>
+    <string name="date_qs_currentyear">Текущата година</string>
+    <string name="date_qs_lastweek">Миналата седмица</string>
+    <string name="date_qs_lastmonth">Миналия месец</string>
+    <string name="date_qs_lastquarter">Миналото тримесечие</string>
+    <string name="date_qs_lastyear">Миналата година</string>
+    <string name="call_stats_date_filter">Филтър за период от време</string>
+    <string name="call_stats_reset_filter">Възстанови по подраздиране периода от време</string>
+    <string name="call_stats_sort_by_duration">Сортирай по продължителност на разговори</string>
+    <string name="call_stats_sort_by_count">Сортирай по брой на обаждания</string>
+    <string name="call_stats_title_for_number">Този номер</string>
+    <string name="call_stats_title_of_total">От общо</string>
+    <string name="call_stats_title_durations">Продължителност на разговора</string>
+    <string name="call_stats_title_count">Брой обаждания</string>
+    <string name="call_stats_title_average_duration">Средна продължителност на повикванията</string>
+    <string name="recent_calls_no_items_in_range">Няма регистрирани повиквания през зададения период.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-bs/cm_strings.xml b/java/com/android/dialer/callstats/res/values-bs/cm_strings.xml
new file mode 100644
index 0000000..112684c
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-bs/cm_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_header_total">Ukupno: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ca/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-ca/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ca/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ca/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-ca/cm_plurals.xml
new file mode 100644
index 0000000..6d5c377
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ca/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 h</item>
+        <item quantity="other">%d h</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d min</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 s</item>
+        <item quantity="other">%d s</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 trucada</item>
+        <item quantity="other">%d trucades</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ca/cm_strings.xml b/java/com/android/dialer/callstats/res/values-ca/cm_strings.xml
new file mode 100644
index 0000000..89849d0
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ca/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Detalls de les estadístiques de contacte</string>
+    <string name="call_stats_incoming">Entrants: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Sortints: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Perdudes: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Bloquejades: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Data d\'inici</string>
+    <string name="call_stats_filter_to">Data final</string>
+    <string name="call_stats_filter_picker_title">Rang de filtre</string>
+    <string name="date_quick_selection">Selecció ràpida</string>
+    <string name="date_qs_currentmonth">Mes actual</string>
+    <string name="date_qs_currentquarter">Trimestre actual</string>
+    <string name="date_qs_currentyear">Any actual</string>
+    <string name="date_qs_lastweek">Darrera setmana</string>
+    <string name="date_qs_lastmonth">Darrer mes</string>
+    <string name="date_qs_lastquarter">Darrer trimestre</string>
+    <string name="date_qs_lastyear">Darrer any</string>
+    <string name="call_stats_date_filter">Ajusta el període</string>
+    <string name="call_stats_reset_filter">Restableix el període</string>
+    <string name="call_stats_sort_by_duration">Ordena per duració de trucada</string>
+    <string name="call_stats_sort_by_count">Ordena per número de trucades</string>
+    <string name="call_stats_title_for_number">Aquest número</string>
+    <string name="call_stats_title_of_total">Del total</string>
+    <string name="call_stats_title_durations">Durada de les trucades</string>
+    <string name="call_stats_title_count">Comptador de trucades</string>
+    <string name="call_stats_title_average_duration">Durada mitjana de les trucades</string>
+    <string name="recent_calls_no_items_in_range">El registre de trucades no conté cap trucada en el període seleccionat.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-cs/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-cs/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-cs/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-cs/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-cs/cm_plurals.xml
new file mode 100644
index 0000000..4117af3
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-cs/cm_plurals.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 hodina</item>
+        <item quantity="few">%d hodiny</item>
+        <item quantity="many">%d hodin</item>
+        <item quantity="other">%d hodin</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 minuta</item>
+        <item quantity="few">%d minuty</item>
+        <item quantity="many">%d minut</item>
+        <item quantity="other">%d minut</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sekunda</item>
+        <item quantity="few">%d sekundy</item>
+        <item quantity="many">%d sekund</item>
+        <item quantity="other">%d sekund</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 hovor</item>
+        <item quantity="few">%d hovory</item>
+        <item quantity="many">%d hovorů</item>
+        <item quantity="other">%d hovorů</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-cs/cm_strings.xml b/java/com/android/dialer/callstats/res/values-cs/cm_strings.xml
new file mode 100644
index 0000000..1aef598
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-cs/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Podrobné statistiky kontaktu</string>
+    <string name="call_stats_incoming">Příchozí: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Odchozí: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Zmeškané: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blokované: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Celkem: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Celkem: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Datum zahájení</string>
+    <string name="call_stats_filter_to">Datum ukončení</string>
+    <string name="call_stats_filter_picker_title">Rozsah hodnot filtru</string>
+    <string name="date_quick_selection">Rychlý výběr</string>
+    <string name="date_qs_currentmonth">Aktuální měsíc</string>
+    <string name="date_qs_currentquarter">Aktuální čtvrtletí</string>
+    <string name="date_qs_currentyear">Aktuální rok</string>
+    <string name="date_qs_lastweek">Poslední týden</string>
+    <string name="date_qs_lastmonth">Poslední měsíc</string>
+    <string name="date_qs_lastquarter">Poslední čtvrtletí</string>
+    <string name="date_qs_lastyear">Poslední rok</string>
+    <string name="call_stats_date_filter">Změnit časový rozsah</string>
+    <string name="call_stats_reset_filter">Obnovit časový rozsah</string>
+    <string name="call_stats_sort_by_duration">Řadit podle délky hovoru</string>
+    <string name="call_stats_sort_by_count">Řadit podle počtu hovorů</string>
+    <string name="call_stats_title_for_number">Toto číslo</string>
+    <string name="call_stats_title_of_total">Z celkových</string>
+    <string name="call_stats_title_durations">Délky hovorů</string>
+    <string name="call_stats_title_count">Počet hovorů</string>
+    <string name="call_stats_title_average_duration">Průměrná délka hovoru</string>
+    <string name="recent_calls_no_items_in_range">Seznam hovorů neobsahuje v daném časovém úseku žádná data.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-cy/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-cy/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-cy/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-cy/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-cy/cm_plurals.xml
new file mode 100644
index 0000000..b32f2f2
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-cy/cm_plurals.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="zero">%d awr</item>
+        <item quantity="one">1 awr</item>
+        <item quantity="two">%d awr</item>
+        <item quantity="few">%d awr</item>
+        <item quantity="many">%d awr</item>
+        <item quantity="other">%d awr</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="zero">%d mun</item>
+        <item quantity="one">1 mun</item>
+        <item quantity="two">%d fun</item>
+        <item quantity="few">%d mun</item>
+        <item quantity="many">%d mun</item>
+        <item quantity="other">%d mun</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="zero">%d eil</item>
+        <item quantity="one">1 eil</item>
+        <item quantity="two">%d eil</item>
+        <item quantity="few">%d eil</item>
+        <item quantity="many">%d eil</item>
+        <item quantity="other">%d eil</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="zero">%d galwadau</item>
+        <item quantity="one">1 galwad</item>
+        <item quantity="two">%d alwad</item>
+        <item quantity="few">%d galwad</item>
+        <item quantity="many">%d galwad</item>
+        <item quantity="other">%d galwad</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-cy/cm_strings.xml b/java/com/android/dialer/callstats/res/values-cy/cm_strings.xml
new file mode 100644
index 0000000..84b18a9
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-cy/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Manylion ystadegau cyswllt</string>
+    <string name="call_stats_incoming">I mewn: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Allan: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Wedi\'u methu: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Wedi\'u rhwystro: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Cyfanswm: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Cyfanswm: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Dyddiad dechrau</string>
+    <string name="call_stats_filter_to">Dyddiad gorffen</string>
+    <string name="call_stats_filter_picker_title">Ystod hidlydd</string>
+    <string name="date_quick_selection">Dewis cyflym</string>
+    <string name="date_qs_currentmonth">Mis presennol</string>
+    <string name="date_qs_currentquarter">Chwarter presennol</string>
+    <string name="date_qs_currentyear">Blwyddyn bresennol</string>
+    <string name="date_qs_lastweek">Wythnos diwethaf</string>
+    <string name="date_qs_lastmonth">Mis diwethaf</string>
+    <string name="date_qs_lastquarter">Chwarter diwethaf</string>
+    <string name="date_qs_lastyear">Blwyddyn ddiwethaf</string>
+    <string name="call_stats_date_filter">Addasu ystod amser</string>
+    <string name="call_stats_reset_filter">Ailosod y cyfnod amser</string>
+    <string name="call_stats_sort_by_duration">Trefnu yn ôl hyd alwadau</string>
+    <string name="call_stats_sort_by_count">Trefnu yn ôl nifer galwadau</string>
+    <string name="call_stats_title_for_number">Y rhif hwn</string>
+    <string name="call_stats_title_of_total">O\'r cyfanswm</string>
+    <string name="call_stats_title_durations">Hyd alwadau</string>
+    <string name="call_stats_title_count">Nifer galwadau</string>
+    <string name="call_stats_title_average_duration">Hyd galwadau ar gyfartaledd</string>
+    <string name="recent_calls_no_items_in_range">Nid yw dy log galwadau yn cynnwys unrhyw alwadau yn y cyfnod dan sylw.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-da/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-da/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-da/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-da/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-da/cm_plurals.xml
new file mode 100644
index 0000000..3743e4a
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-da/cm_plurals.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 time</item>
+        <item quantity="other">%d timer</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d min</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 opkald</item>
+        <item quantity="other">%d opkald</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-da/cm_strings.xml b/java/com/android/dialer/callstats/res/values-da/cm_strings.xml
new file mode 100644
index 0000000..e5881a7
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-da/cm_strings.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Kantaktstatistik-detaljer</string>
+    <string name="call_stats_incoming">Indgående: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Udgående: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Ubesvarede: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blokerede: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total_callsonly">Samlet: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Start-dato</string>
+    <string name="call_stats_filter_to">Slut-dato</string>
+    <string name="call_stats_filter_picker_title">Filter-rækkevidde</string>
+    <string name="date_quick_selection">Hurtigt valg</string>
+    <string name="date_qs_currentmonth">Denne måned</string>
+    <string name="date_qs_currentquarter">Dette kvartal</string>
+    <string name="date_qs_currentyear">Dette år</string>
+    <string name="date_qs_lastweek">Sidste uge</string>
+    <string name="date_qs_lastmonth">Sidste måned</string>
+    <string name="date_qs_lastquarter">Sidste kvartal</string>
+    <string name="date_qs_lastyear">Sidste år</string>
+    <string name="call_stats_date_filter">Justér tidsinterval</string>
+    <string name="call_stats_reset_filter">Nulstil tidsinterval</string>
+    <string name="call_stats_sort_by_duration">Sortér efter opkalds varighed</string>
+    <string name="call_stats_sort_by_count">Sortér efter antal opkald</string>
+    <string name="call_stats_title_for_number">Dette nummer</string>
+    <string name="call_stats_title_of_total">Af samlet</string>
+    <string name="call_stats_title_durations">Opkalds varighed</string>
+    <string name="call_stats_title_count">Antal opkald</string>
+    <string name="call_stats_title_average_duration">Gennemsnitlige opkalds varighed</string>
+    <string name="recent_calls_no_items_in_range">Din opkaldshistorik indeholder ikke nogen opkald i den valgte tids-rækkevidde.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-de/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-de/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-de/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-de/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-de/cm_plurals.xml
new file mode 100644
index 0000000..6eee2eb
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-de/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 Std.</item>
+        <item quantity="other">%d Std.</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 Min.</item>
+        <item quantity="other">%d  Min.</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 Sek.</item>
+        <item quantity="other">%d  Sek.</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 Anruf</item>
+        <item quantity="other">%d  Anrufe</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-de/cm_strings.xml b/java/com/android/dialer/callstats/res/values-de/cm_strings.xml
new file mode 100644
index 0000000..0c12464
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-de/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Details zur Kontaktstatistik</string>
+    <string name="call_stats_incoming">Eingehend: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Ausgehend: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Verpasst: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blockiert: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g> %%</string>
+    <string name="call_stats_header_total">Gesamt: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Gesamt: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Startdatum</string>
+    <string name="call_stats_filter_to">Enddatum</string>
+    <string name="call_stats_filter_picker_title">Filterbereich</string>
+    <string name="date_quick_selection">Schnellauswahl</string>
+    <string name="date_qs_currentmonth">Aktueller Monat</string>
+    <string name="date_qs_currentquarter">Aktuelles Quartal</string>
+    <string name="date_qs_currentyear">Aktuelles Jahr</string>
+    <string name="date_qs_lastweek">Letzte Woche</string>
+    <string name="date_qs_lastmonth">Letzter Monat</string>
+    <string name="date_qs_lastquarter">Letztes Quartal</string>
+    <string name="date_qs_lastyear">Letztes Jahr</string>
+    <string name="call_stats_date_filter">Zeitraum anpassen</string>
+    <string name="call_stats_reset_filter">Zeitraum zurücksetzen</string>
+    <string name="call_stats_sort_by_duration">Nach Anrufdauer sortieren</string>
+    <string name="call_stats_sort_by_count">Nach Anrufanzahl sortieren</string>
+    <string name="call_stats_title_for_number">Diese Nummer</string>
+    <string name="call_stats_title_of_total">Von insgesamt</string>
+    <string name="call_stats_title_durations">Gesprächsdauer</string>
+    <string name="call_stats_title_count">Gesprächsanzahl</string>
+    <string name="call_stats_title_average_duration">Durchschnittliche Gesprächsdauer</string>
+    <string name="recent_calls_no_items_in_range">Das Anrufprotokoll enthält keine Anrufe im ausgewählten Zeitraum.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-el/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-el/cm_arrays.xml
new file mode 100644
index 0000000..66fd8eb
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-el/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 δ">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 λ">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 λ">%2$s</xliff:g> <xliff:g id="seconds" example="2 δ">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 ω">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 ω">%1$s</xliff:g> <xliff:g id="seconds" example="2 δ">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 ω">%1$s</xliff:g> <xliff:g id="minutes" example="2 λ">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 ω">%1$s</xliff:g> <xliff:g id="minutes" example="2 λ">%2$s</xliff:g> <xliff:g id="seconds" example="2 δ">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-el/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-el/cm_plurals.xml
new file mode 100644
index 0000000..c48c348
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-el/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 ω</item>
+        <item quantity="other">%d ω</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 λ</item>
+        <item quantity="other">%d λ</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 δ</item>
+        <item quantity="other">%d δ</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 κλήση</item>
+        <item quantity="other">%d κλήσεις</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-el/cm_strings.xml b/java/com/android/dialer/callstats/res/values-el/cm_strings.xml
new file mode 100644
index 0000000..6c1753f
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-el/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Στατιστικά στοιχεία επαφών</string>
+    <string name="call_stats_incoming">Εισερχόμενες: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Εξερχόμενες: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Αναπάντητες: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Αποκλεισμένες: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Σύνολο: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Σύνολο: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Ημερομηνία έναρξης</string>
+    <string name="call_stats_filter_to">Ημερομηνία λήξης</string>
+    <string name="call_stats_filter_picker_title">Εύρος φίλτρου</string>
+    <string name="date_quick_selection">Γρήγορη επιλογή</string>
+    <string name="date_qs_currentmonth">Τρέχων μήνας</string>
+    <string name="date_qs_currentquarter">Τρέχον τρίμηνο</string>
+    <string name="date_qs_currentyear">Τρέχων χρόνος</string>
+    <string name="date_qs_lastweek">Προηγούμενη εβδομάδα</string>
+    <string name="date_qs_lastmonth">Προηγούμενος μήνας</string>
+    <string name="date_qs_lastquarter">Προηγούμενο τρίμηνο</string>
+    <string name="date_qs_lastyear">Προηγούμενος χρόνος</string>
+    <string name="call_stats_date_filter">Ρύθμιση χρονικού εύρους</string>
+    <string name="call_stats_reset_filter">Επαναφορά χρονικού εύρους</string>
+    <string name="call_stats_sort_by_duration">Ταξινόμηση ανά διάρκεια κλήσεων</string>
+    <string name="call_stats_sort_by_count">Ταξινόμηση ανά αριθμό κλήσεων</string>
+    <string name="call_stats_title_for_number">Αυτός ο αριθμός</string>
+    <string name="call_stats_title_of_total">Από το σύνολο</string>
+    <string name="call_stats_title_durations">Διάρκεια κλήσεων</string>
+    <string name="call_stats_title_count">Αριθμός κλήσεων</string>
+    <string name="call_stats_title_average_duration">Μέση διάρκεια κλήσεων</string>
+    <string name="recent_calls_no_items_in_range">Το αρχείο καταγραφής κλήσεων δεν περιέχει καμία κλήση στο επιλεγμένο χρονικό εύρος.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rAU/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-en-rAU/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rAU/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rAU/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-en-rAU/cm_plurals.xml
new file mode 100644
index 0000000..5798251
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rAU/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 hr</item>
+        <item quantity="other">%d hrs</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d mins</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sec</item>
+        <item quantity="other">%d secs</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 call</item>
+        <item quantity="other">%d calls</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rAU/cm_strings.xml b/java/com/android/dialer/callstats/res/values-en-rAU/cm_strings.xml
new file mode 100644
index 0000000..c47d928
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rAU/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Contact statistics details</string>
+    <string name="call_stats_incoming">Incoming: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Outgoing: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Missed: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blocked: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Start date</string>
+    <string name="call_stats_filter_to">End date</string>
+    <string name="call_stats_filter_picker_title">Filter range</string>
+    <string name="date_quick_selection">Quick selection</string>
+    <string name="date_qs_currentmonth">Current month</string>
+    <string name="date_qs_currentquarter">Current quarter</string>
+    <string name="date_qs_currentyear">Current year</string>
+    <string name="date_qs_lastweek">Last week</string>
+    <string name="date_qs_lastmonth">Last month</string>
+    <string name="date_qs_lastquarter">Last quarter</string>
+    <string name="date_qs_lastyear">Last year</string>
+    <string name="call_stats_date_filter">Adjust time range</string>
+    <string name="call_stats_reset_filter">Reset time range</string>
+    <string name="call_stats_sort_by_duration">Sort by call duration</string>
+    <string name="call_stats_sort_by_count">Sort by call count</string>
+    <string name="call_stats_title_for_number">This number</string>
+    <string name="call_stats_title_of_total">Of total</string>
+    <string name="call_stats_title_durations">Call durations</string>
+    <string name="call_stats_title_count">Call count</string>
+    <string name="call_stats_title_average_duration">Average call duration</string>
+    <string name="recent_calls_no_items_in_range">Your call log does not contain any calls in the selected time range.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rCA/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-en-rCA/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rCA/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rCA/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-en-rCA/cm_plurals.xml
new file mode 100644
index 0000000..5798251
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rCA/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 hr</item>
+        <item quantity="other">%d hrs</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d mins</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sec</item>
+        <item quantity="other">%d secs</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 call</item>
+        <item quantity="other">%d calls</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rCA/cm_strings.xml b/java/com/android/dialer/callstats/res/values-en-rCA/cm_strings.xml
new file mode 100644
index 0000000..c47d928
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rCA/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Contact statistics details</string>
+    <string name="call_stats_incoming">Incoming: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Outgoing: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Missed: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blocked: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Start date</string>
+    <string name="call_stats_filter_to">End date</string>
+    <string name="call_stats_filter_picker_title">Filter range</string>
+    <string name="date_quick_selection">Quick selection</string>
+    <string name="date_qs_currentmonth">Current month</string>
+    <string name="date_qs_currentquarter">Current quarter</string>
+    <string name="date_qs_currentyear">Current year</string>
+    <string name="date_qs_lastweek">Last week</string>
+    <string name="date_qs_lastmonth">Last month</string>
+    <string name="date_qs_lastquarter">Last quarter</string>
+    <string name="date_qs_lastyear">Last year</string>
+    <string name="call_stats_date_filter">Adjust time range</string>
+    <string name="call_stats_reset_filter">Reset time range</string>
+    <string name="call_stats_sort_by_duration">Sort by call duration</string>
+    <string name="call_stats_sort_by_count">Sort by call count</string>
+    <string name="call_stats_title_for_number">This number</string>
+    <string name="call_stats_title_of_total">Of total</string>
+    <string name="call_stats_title_durations">Call durations</string>
+    <string name="call_stats_title_count">Call count</string>
+    <string name="call_stats_title_average_duration">Average call duration</string>
+    <string name="recent_calls_no_items_in_range">Your call log does not contain any calls in the selected time range.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rGB/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-en-rGB/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rGB/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rGB/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-en-rGB/cm_plurals.xml
new file mode 100644
index 0000000..5798251
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rGB/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 hr</item>
+        <item quantity="other">%d hrs</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d mins</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sec</item>
+        <item quantity="other">%d secs</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 call</item>
+        <item quantity="other">%d calls</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rGB/cm_strings.xml b/java/com/android/dialer/callstats/res/values-en-rGB/cm_strings.xml
new file mode 100644
index 0000000..c47d928
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rGB/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Contact statistics details</string>
+    <string name="call_stats_incoming">Incoming: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Outgoing: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Missed: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blocked: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Start date</string>
+    <string name="call_stats_filter_to">End date</string>
+    <string name="call_stats_filter_picker_title">Filter range</string>
+    <string name="date_quick_selection">Quick selection</string>
+    <string name="date_qs_currentmonth">Current month</string>
+    <string name="date_qs_currentquarter">Current quarter</string>
+    <string name="date_qs_currentyear">Current year</string>
+    <string name="date_qs_lastweek">Last week</string>
+    <string name="date_qs_lastmonth">Last month</string>
+    <string name="date_qs_lastquarter">Last quarter</string>
+    <string name="date_qs_lastyear">Last year</string>
+    <string name="call_stats_date_filter">Adjust time range</string>
+    <string name="call_stats_reset_filter">Reset time range</string>
+    <string name="call_stats_sort_by_duration">Sort by call duration</string>
+    <string name="call_stats_sort_by_count">Sort by call count</string>
+    <string name="call_stats_title_for_number">This number</string>
+    <string name="call_stats_title_of_total">Of total</string>
+    <string name="call_stats_title_durations">Call durations</string>
+    <string name="call_stats_title_count">Call count</string>
+    <string name="call_stats_title_average_duration">Average call duration</string>
+    <string name="recent_calls_no_items_in_range">Your call log does not contain any calls in the selected time range.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rIN/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-en-rIN/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rIN/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rIN/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-en-rIN/cm_plurals.xml
new file mode 100644
index 0000000..5798251
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rIN/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 hr</item>
+        <item quantity="other">%d hrs</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d mins</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sec</item>
+        <item quantity="other">%d secs</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 call</item>
+        <item quantity="other">%d calls</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-en-rIN/cm_strings.xml b/java/com/android/dialer/callstats/res/values-en-rIN/cm_strings.xml
new file mode 100644
index 0000000..c47d928
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-en-rIN/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Contact statistics details</string>
+    <string name="call_stats_incoming">Incoming: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Outgoing: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Missed: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blocked: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Start date</string>
+    <string name="call_stats_filter_to">End date</string>
+    <string name="call_stats_filter_picker_title">Filter range</string>
+    <string name="date_quick_selection">Quick selection</string>
+    <string name="date_qs_currentmonth">Current month</string>
+    <string name="date_qs_currentquarter">Current quarter</string>
+    <string name="date_qs_currentyear">Current year</string>
+    <string name="date_qs_lastweek">Last week</string>
+    <string name="date_qs_lastmonth">Last month</string>
+    <string name="date_qs_lastquarter">Last quarter</string>
+    <string name="date_qs_lastyear">Last year</string>
+    <string name="call_stats_date_filter">Adjust time range</string>
+    <string name="call_stats_reset_filter">Reset time range</string>
+    <string name="call_stats_sort_by_duration">Sort by call duration</string>
+    <string name="call_stats_sort_by_count">Sort by call count</string>
+    <string name="call_stats_title_for_number">This number</string>
+    <string name="call_stats_title_of_total">Of total</string>
+    <string name="call_stats_title_durations">Call durations</string>
+    <string name="call_stats_title_count">Call count</string>
+    <string name="call_stats_title_average_duration">Average call duration</string>
+    <string name="recent_calls_no_items_in_range">Your call log does not contain any calls in the selected time range.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-es-rUS/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-es-rUS/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-es-rUS/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-es-rUS/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-es-rUS/cm_plurals.xml
new file mode 100644
index 0000000..46d4b72
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-es-rUS/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 h</item>
+        <item quantity="other">%d h</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 m</item>
+        <item quantity="other">%d m</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 s</item>
+        <item quantity="other">%d s</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 llamada</item>
+        <item quantity="other">%d llamadas</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-es-rUS/cm_strings.xml b/java/com/android/dialer/callstats/res/values-es-rUS/cm_strings.xml
new file mode 100644
index 0000000..8961b62
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-es-rUS/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Estadísticas de contacto</string>
+    <string name="call_stats_incoming">Entrantes: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Salientes: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Perdidas: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Bloqueadas: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Fecha de inicio</string>
+    <string name="call_stats_filter_to">Fecha de finalización</string>
+    <string name="call_stats_filter_picker_title">Rango de filtro</string>
+    <string name="date_quick_selection">Selección rápida</string>
+    <string name="date_qs_currentmonth">Mes actual</string>
+    <string name="date_qs_currentquarter">Trimestre actual</string>
+    <string name="date_qs_currentyear">Año actual</string>
+    <string name="date_qs_lastweek">Última semana</string>
+    <string name="date_qs_lastmonth">Último mes</string>
+    <string name="date_qs_lastquarter">Último trimestre</string>
+    <string name="date_qs_lastyear">Último año</string>
+    <string name="call_stats_date_filter">Ajustar rango de fechas</string>
+    <string name="call_stats_reset_filter">Restablecer rango de fechas</string>
+    <string name="call_stats_sort_by_duration">Ordenar por duración de llamada</string>
+    <string name="call_stats_sort_by_count">Ordenar por número de llamada</string>
+    <string name="call_stats_title_for_number">Este número</string>
+    <string name="call_stats_title_of_total">Del total</string>
+    <string name="call_stats_title_durations">Duración de llamada</string>
+    <string name="call_stats_title_count">Contador de llamada</string>
+    <string name="call_stats_title_average_duration">Duración promedio</string>
+    <string name="recent_calls_no_items_in_range">Sin registro de llamadas en el rango de tiempo seleccionado.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-es/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-es/cm_plurals.xml
new file mode 100644
index 0000000..9e9c562
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-es/cm_plurals.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 h</item>
+        <item quantity="other">%d h</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-es/cm_strings.xml b/java/com/android/dialer/callstats/res/values-es/cm_strings.xml
new file mode 100644
index 0000000..5af87a3
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-es/cm_strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-et/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-et/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-et/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-et/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-et/cm_plurals.xml
new file mode 100644
index 0000000..249324e
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-et/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 tund</item>
+        <item quantity="other">%d tundi</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d min</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 s</item>
+        <item quantity="other">%d s</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 kõne</item>
+        <item quantity="other">%d kõnet</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-et/cm_strings.xml b/java/com/android/dialer/callstats/res/values-et/cm_strings.xml
new file mode 100644
index 0000000..5644e82
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-et/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Kontaktide statistika andmed</string>
+    <string name="call_stats_incoming">Sissetulev: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Väljuv: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Vastamata: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blokeeritud: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Kokku: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Kokku: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Alguskuupäev</string>
+    <string name="call_stats_filter_to">Lõppkuupäev</string>
+    <string name="call_stats_filter_picker_title">Filtri vahemik</string>
+    <string name="date_quick_selection">Kiirvalik</string>
+    <string name="date_qs_currentmonth">Käesolev kuu</string>
+    <string name="date_qs_currentquarter">Käesolev kvartal</string>
+    <string name="date_qs_currentyear">Käesolev aasta</string>
+    <string name="date_qs_lastweek">Eelmine nädal</string>
+    <string name="date_qs_lastmonth">Eelmine kuu</string>
+    <string name="date_qs_lastquarter">Eelmine kvartal</string>
+    <string name="date_qs_lastyear">Eelmine aasta</string>
+    <string name="call_stats_date_filter">Muuda ajavahemikku</string>
+    <string name="call_stats_reset_filter">Lähtesta ajavahemik</string>
+    <string name="call_stats_sort_by_duration">Sorteeri kõne kestvuse järgi</string>
+    <string name="call_stats_sort_by_count">Sorteeri kõnede arvu järgi</string>
+    <string name="call_stats_title_for_number">See number</string>
+    <string name="call_stats_title_of_total">Koguarvust</string>
+    <string name="call_stats_title_durations">Kõnede kestus</string>
+    <string name="call_stats_title_count">Kõnede arv</string>
+    <string name="call_stats_title_average_duration">Keskmine kõne kestus</string>
+    <string name="recent_calls_no_items_in_range">Sinu kõnelogi ei sisalda valitud ajavahemikus ühtegi kõnet.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-eu/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-eu/cm_plurals.xml
new file mode 100644
index 0000000..68d79cf
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-eu/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">Ordu 1</item>
+        <item quantity="other">%d ordu</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">minutu 1</item>
+        <item quantity="other">%d minutu</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">Segundo 1</item>
+        <item quantity="other">%d segundo</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">Dei 1</item>
+        <item quantity="other">%d dei</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-eu/cm_strings.xml b/java/com/android/dialer/callstats/res/values-eu/cm_strings.xml
new file mode 100644
index 0000000..e330792
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-eu/cm_strings.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Kontaktuaren estatistiken xehetasunak</string>
+    <string name="call_stats_incoming">Jasoak: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Eginak: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Galduak: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blokeatuak: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent">%% <xliff:g id="percent">%d</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Guztira: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Hasiera data</string>
+    <string name="call_stats_filter_to">Amaiera data</string>
+    <string name="call_stats_filter_picker_title">Iragazkiaren barrutia</string>
+    <string name="date_quick_selection">Hautapen azkarra</string>
+    <string name="date_qs_currentmonth">Uneko hilabetea</string>
+    <string name="date_qs_currentquarter">Uneko hiruhilabetea</string>
+    <string name="date_qs_currentyear">Uneko urtea</string>
+    <string name="date_qs_lastweek">Azken astea</string>
+    <string name="date_qs_lastmonth">Azken hilabetea</string>
+    <string name="date_qs_lastquarter">Azken hiruhilabetea</string>
+    <string name="date_qs_lastyear">Azken urtea</string>
+    <string name="call_stats_date_filter">Doitu denbora barrutia</string>
+    <string name="call_stats_reset_filter">Leheneratu denbora barrutia</string>
+    <string name="call_stats_sort_by_duration">Ordenatu deiaren iraupenaren arabera</string>
+    <string name="call_stats_sort_by_count">Ordenatu dei kopuruaren arabera</string>
+    <string name="call_stats_title_for_number">Zenbaki hau</string>
+    <string name="call_stats_title_of_total">Guztira</string>
+    <string name="call_stats_title_durations">Deien iraupenak</string>
+    <string name="call_stats_title_count">Dei kopurua</string>
+    <string name="call_stats_title_average_duration">Batezbesteko dei iraupena</string>
+    <string name="recent_calls_no_items_in_range">Zure deien egunkariak ez du deirik aukeratutako denbora tartean.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-fi/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-fi/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-fi/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-fi/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-fi/cm_plurals.xml
new file mode 100644
index 0000000..d0957c3
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-fi/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 t</item>
+        <item quantity="other">%d t</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d min</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 s</item>
+        <item quantity="other">%d s</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 puhelu</item>
+        <item quantity="other">%d puhelua</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-fi/cm_strings.xml b/java/com/android/dialer/callstats/res/values-fi/cm_strings.xml
new file mode 100644
index 0000000..2e2343f
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-fi/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Yhteystiedon tilastot</string>
+    <string name="call_stats_incoming">Saapuvat: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Lähtevät: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Vastaamattomat: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Estetyt: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Yhteensä: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Yhteensä: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Aloituspäivä</string>
+    <string name="call_stats_filter_to">Viimeinen päivä</string>
+    <string name="call_stats_filter_picker_title">Suodata aikaväli</string>
+    <string name="date_quick_selection">Nopea valinta</string>
+    <string name="date_qs_currentmonth">Nykyinen kuukausi</string>
+    <string name="date_qs_currentquarter">Nykyinen kvartaali</string>
+    <string name="date_qs_currentyear">Nykyinen vuosi</string>
+    <string name="date_qs_lastweek">Edellinen viikko</string>
+    <string name="date_qs_lastmonth">Edellinen kuukausi</string>
+    <string name="date_qs_lastquarter">Edellinen kvartaali</string>
+    <string name="date_qs_lastyear">Edellinen vuosi</string>
+    <string name="call_stats_date_filter">Muokkaa aikaväliä</string>
+    <string name="call_stats_reset_filter">Nollaa aikaväli</string>
+    <string name="call_stats_sort_by_duration">Järjestä puhelun keston mukaan</string>
+    <string name="call_stats_sort_by_count">Järjestä puheluiden määrän mukaan</string>
+    <string name="call_stats_title_for_number">Tämä numero</string>
+    <string name="call_stats_title_of_total">Yhteensä</string>
+    <string name="call_stats_title_durations">Puheluiden kestot</string>
+    <string name="call_stats_title_count">Puheluiden määrä</string>
+    <string name="call_stats_title_average_duration">Puhelun keskimääräinen kesto</string>
+    <string name="recent_calls_no_items_in_range">Puhelulokissasi ei ole puheluita valitulta ajanjaksolta.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-fr/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-fr/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-fr/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-fr/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-fr/cm_plurals.xml
new file mode 100644
index 0000000..0215f39
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-fr/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 h</item>
+        <item quantity="other">%d h</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d min</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 s</item>
+        <item quantity="other">%d s</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 appel</item>
+        <item quantity="other">%d appels</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-fr/cm_strings.xml b/java/com/android/dialer/callstats/res/values-fr/cm_strings.xml
new file mode 100644
index 0000000..3bd86b3
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-fr/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Statistiques détaillées sur les appels</string>
+    <string name="call_stats_incoming">Appels entrants : <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Appels sortants : <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Appels manqués : <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Appels bloqués : <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g> %%</string>
+    <string name="call_stats_header_total">Total : <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total : <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Date de début</string>
+    <string name="call_stats_filter_to">Date de fin</string>
+    <string name="call_stats_filter_picker_title">Plage de filtrage</string>
+    <string name="date_quick_selection">Sélection rapide</string>
+    <string name="date_qs_currentmonth">Mois en cours</string>
+    <string name="date_qs_currentquarter">Trimestre en cours</string>
+    <string name="date_qs_currentyear">Année en cours</string>
+    <string name="date_qs_lastweek">Semaine dernière</string>
+    <string name="date_qs_lastmonth">Mois dernier</string>
+    <string name="date_qs_lastquarter">Trimestre dernier</string>
+    <string name="date_qs_lastyear">Année dernière</string>
+    <string name="call_stats_date_filter">Régler la période</string>
+    <string name="call_stats_reset_filter">Réinitialiser la période</string>
+    <string name="call_stats_sort_by_duration">Trier par durée d\'appel</string>
+    <string name="call_stats_sort_by_count">Trier par nombre d\'appels</string>
+    <string name="call_stats_title_for_number">Ce numéro</string>
+    <string name="call_stats_title_of_total">Du total</string>
+    <string name="call_stats_title_durations">Durées d’appel</string>
+    <string name="call_stats_title_count">Nombre d\'appels</string>
+    <string name="call_stats_title_average_duration">Durée moyenne des appels</string>
+    <string name="recent_calls_no_items_in_range">Votre journal ne contient aucun appel sur la période sélectionnée.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-fur-rIT/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-fur-rIT/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-fur-rIT/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-fur-rIT/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-fur-rIT/cm_plurals.xml
new file mode 100644
index 0000000..bb41694
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-fur-rIT/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 ore</item>
+        <item quantity="other">%d oris</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d min</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sec</item>
+        <item quantity="other">%d sec</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 clamade</item>
+        <item quantity="other">%d clamadis</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-fur-rIT/cm_strings.xml b/java/com/android/dialer/callstats/res/values-fur-rIT/cm_strings.xml
new file mode 100644
index 0000000..8f36fcb
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-fur-rIT/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Detais des statistichis dal contat</string>
+    <string name="call_stats_incoming">In jentrade: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">In jessude: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Pierdudis: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blocadis: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Totâl: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Totâl: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Date di inizi</string>
+    <string name="call_stats_filter_to">Date di fin</string>
+    <string name="call_stats_filter_picker_title">Dade di filtrâ</string>
+    <string name="date_quick_selection">Selezion rapide</string>
+    <string name="date_qs_currentmonth">Chest mês</string>
+    <string name="date_qs_currentquarter">Chest trimestri</string>
+    <string name="date_qs_currentyear">Chest an</string>
+    <string name="date_qs_lastweek">Ultime setemane</string>
+    <string name="date_qs_lastmonth">Ultin mês</string>
+    <string name="date_qs_lastquarter">Ultin trimestri</string>
+    <string name="date_qs_lastyear">Ultin an</string>
+    <string name="call_stats_date_filter">Juste la dade temporâl</string>
+    <string name="call_stats_reset_filter">Azere dade temporâl</string>
+    <string name="call_stats_sort_by_duration">Ordene par durade</string>
+    <string name="call_stats_sort_by_count">Ordene par numar di clamadis</string>
+    <string name="call_stats_title_for_number">Chest numar</string>
+    <string name="call_stats_title_of_total">In totâl</string>
+    <string name="call_stats_title_durations">Duradis des clamadis</string>
+    <string name="call_stats_title_count">Conte des clamadis</string>
+    <string name="call_stats_title_average_duration">Durdade medie des clamadis</string>
+    <string name="recent_calls_no_items_in_range">Il regjistri des clamadis nol conten nissune clamade te dade temporâl indicade.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-fy-rNL/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-fy-rNL/cm_plurals.xml
new file mode 100644
index 0000000..7df7f16
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-fy-rNL/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 oer</item>
+        <item quantity="other">%d oer</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d min</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sek</item>
+        <item quantity="other">%d sek</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 oprop</item>
+        <item quantity="other">%d oproppen</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-fy-rNL/cm_strings.xml b/java/com/android/dialer/callstats/res/values-fy-rNL/cm_strings.xml
new file mode 100644
index 0000000..9af3cef
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-fy-rNL/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Detaillearre kontaktstatistiken</string>
+    <string name="call_stats_incoming">Ynkommend: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Utgeand: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Mist: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blokkearre: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Totaal: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Totaal: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Startdatum</string>
+    <string name="call_stats_filter_to">Eindatum</string>
+    <string name="call_stats_filter_picker_title">Filterberik</string>
+    <string name="date_quick_selection">Flugge seleksje</string>
+    <string name="date_qs_currentmonth">Aktuele moanne</string>
+    <string name="date_qs_currentquarter">Aktuele fearnsjier</string>
+    <string name="date_qs_currentyear">Aktuele jier</string>
+    <string name="date_qs_lastweek">Foarige wike</string>
+    <string name="date_qs_lastmonth">Foarige moanne</string>
+    <string name="date_qs_lastquarter">Foarich fearnsjier</string>
+    <string name="date_qs_lastyear">Foarich jier</string>
+    <string name="call_stats_date_filter">Tiidrek oanpasse</string>
+    <string name="call_stats_reset_filter">Tiidrek opnij ynstelle</string>
+    <string name="call_stats_sort_by_duration">Sortearje op peteardoer</string>
+    <string name="call_stats_sort_by_count">Sortearje op oantal petearen</string>
+    <string name="call_stats_title_for_number">Dit nûmer</string>
+    <string name="call_stats_title_of_total">Fan yn totaal</string>
+    <string name="call_stats_title_durations">Peteardoer</string>
+    <string name="call_stats_title_count">Oantal petearen</string>
+    <string name="call_stats_title_average_duration">Gemiddelde peteardoer</string>
+    <string name="recent_calls_no_items_in_range">Jo opropskiednis befettet gjin oproppen yn it selektearre tiidrek.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-gd/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-gd/cm_arrays.xml
new file mode 100644
index 0000000..1c4e27c
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-gd/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 dhiog">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mhion">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mhion">%2$s</xliff:g> <xliff:g id="seconds" example="2 dhiog">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 uair">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 uair">%1$s</xliff:g> <xliff:g id="seconds" example="2 dhiog">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 uair">%1$s</xliff:g> <xliff:g id="minutes" example="2 mhion">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 uair">%1$s</xliff:g> <xliff:g id="minutes" example="2 mhion">%2$s</xliff:g> <xliff:g id="seconds" example="2 dhiog">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-gd/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-gd/cm_plurals.xml
new file mode 100644
index 0000000..eb69c96
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-gd/cm_plurals.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">%d uair</item>
+        <item quantity="two">%d uair</item>
+        <item quantity="few">%d uairean</item>
+        <item quantity="other">%d uair</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">%d mhion</item>
+        <item quantity="two">%d mhion</item>
+        <item quantity="few">%d mion.</item>
+        <item quantity="other">%d mion</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">%d diog</item>
+        <item quantity="two">%d dhiog</item>
+        <item quantity="few">%d diogan</item>
+        <item quantity="other">%d diog</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">%d ghairm</item>
+        <item quantity="two">%d ghairm</item>
+        <item quantity="few">%d gairmean</item>
+        <item quantity="other">%d gairm</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-gd/cm_strings.xml b/java/com/android/dialer/callstats/res/values-gd/cm_strings.xml
new file mode 100644
index 0000000..f96479a
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-gd/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Mion-fhiosrachadh air stadastaireachd an neach-aithne</string>
+    <string name="call_stats_incoming">A-steach: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">A-mach: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Air an call: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Air am bacadh: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Iomlan: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Iomlan: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Ceann-là tòiseachaidh</string>
+    <string name="call_stats_filter_to">Ceann-là crìochnachaidh</string>
+    <string name="call_stats_filter_picker_title">Rainse na criathraige</string>
+    <string name="date_quick_selection">Grad-thaghadh</string>
+    <string name="date_qs_currentmonth">Am mìos</string>
+    <string name="date_qs_currentquarter">An cairteal seo</string>
+    <string name="date_qs_currentyear">Am bliadhna</string>
+    <string name="date_qs_lastweek">An t-seachdain seo chaidh</string>
+    <string name="date_qs_lastmonth">Am mìos seo chaidh</string>
+    <string name="date_qs_lastquarter">An cairteal seo chaidh</string>
+    <string name="date_qs_lastyear">An-uiridh</string>
+    <string name="call_stats_date_filter">Cuir air gleus rainse na h-ama</string>
+    <string name="call_stats_reset_filter">Ath-shuidhich rainse na h-ama</string>
+    <string name="call_stats_sort_by_duration">Seòrsaich a-rèir faide na gairme</string>
+    <string name="call_stats_sort_by_count">Seòrsaich a-rèir cunntas nan gairmea</string>
+    <string name="call_stats_title_for_number">An àireamh seo</string>
+    <string name="call_stats_title_of_total">Dhen iomlan</string>
+    <string name="call_stats_title_durations">Faidean nan gairmean</string>
+    <string name="call_stats_title_count">Cunntas nan gairmean</string>
+    <string name="call_stats_title_average_duration">Faide cuibheasach nan gairmean</string>
+    <string name="recent_calls_no_items_in_range">Chan eil gairm sam bith ann an loga nan gairmean agad am broinn rainse na h-ama a thagh thu.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-gl/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-gl/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-gl/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-gl/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-gl/cm_plurals.xml
new file mode 100644
index 0000000..60ea506
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-gl/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 h</item>
+        <item quantity="other">%d horas</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d mins</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 seg</item>
+        <item quantity="other">%d seg</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 chamada</item>
+        <item quantity="other">%d chamadas</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-gl/cm_strings.xml b/java/com/android/dialer/callstats/res/values-gl/cm_strings.xml
new file mode 100644
index 0000000..76b269b
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-gl/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Detalles das estatísticas dos contactos</string>
+    <string name="call_stats_incoming">Recibidas: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_outgoing">Feitas: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_missed">Perdidas: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_blocked">Bloqueadas: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Data de inicio</string>
+    <string name="call_stats_filter_to">Data de finalización</string>
+    <string name="call_stats_filter_picker_title">Filtrar intervalo</string>
+    <string name="date_quick_selection">Selección rápida</string>
+    <string name="date_qs_currentmonth">Este mes</string>
+    <string name="date_qs_currentquarter">Trimestre actual</string>
+    <string name="date_qs_currentyear">Este ano</string>
+    <string name="date_qs_lastweek">A semana pasada</string>
+    <string name="date_qs_lastmonth">Último mes</string>
+    <string name="date_qs_lastquarter">Último trimestre</string>
+    <string name="date_qs_lastyear">O ano pasado</string>
+    <string name="call_stats_date_filter">Axustar o intervalo temporal</string>
+    <string name="call_stats_reset_filter">Restabelecer o intervalo temporal</string>
+    <string name="call_stats_sort_by_duration">Ordenar por duración da chamada</string>
+    <string name="call_stats_sort_by_count">Ordenar por número de chamadas</string>
+    <string name="call_stats_title_for_number">Este número</string>
+    <string name="call_stats_title_of_total">Dun total de</string>
+    <string name="call_stats_title_durations">Duración das chamadas</string>
+    <string name="call_stats_title_count">Contador de chamadas</string>
+    <string name="call_stats_title_average_duration">Duración media das chamadas</string>
+    <string name="recent_calls_no_items_in_range">O rexistro de chamadas non contén ningunha chamada no período seleccionado.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-hu/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-hu/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-hu/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-hu/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-hu/cm_plurals.xml
new file mode 100644
index 0000000..0331de2
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-hu/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 óra</item>
+        <item quantity="other">%d óra</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 perc</item>
+        <item quantity="other">%d perc</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 mp</item>
+        <item quantity="other">%d mp</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 hívás</item>
+        <item quantity="other">%d hívás</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-hu/cm_strings.xml b/java/com/android/dialer/callstats/res/values-hu/cm_strings.xml
new file mode 100644
index 0000000..5d3a177
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-hu/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">A névjegy-statisztikák részletei</string>
+    <string name="call_stats_incoming">Bejövő: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Kimenő: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Nem fogadott: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blokkolt: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Összesen <xliff:g id="call_count">%1$s</xliff:g> db, <xliff:g id="duration">%2$s</xliff:g> hosszban</string>
+    <string name="call_stats_header_total_callsonly">Összesen: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Kezdődátum</string>
+    <string name="call_stats_filter_to">Záródátum</string>
+    <string name="call_stats_filter_picker_title">Szűrési tartomány</string>
+    <string name="date_quick_selection">Gyorskiválasztás</string>
+    <string name="date_qs_currentmonth">Jelenlegi hónap</string>
+    <string name="date_qs_currentquarter">Jelenlegi negyedév</string>
+    <string name="date_qs_currentyear">Jelenlegi év</string>
+    <string name="date_qs_lastweek">Előző hét</string>
+    <string name="date_qs_lastmonth">Előző hónap</string>
+    <string name="date_qs_lastquarter">Előző negyedév</string>
+    <string name="date_qs_lastyear">Előző év</string>
+    <string name="call_stats_date_filter">Időszakbeállítás</string>
+    <string name="call_stats_reset_filter">Időszaktörlés</string>
+    <string name="call_stats_sort_by_duration">Rendezés hívásidőtartam szerint</string>
+    <string name="call_stats_sort_by_count">Rendezés hívások száma szerint</string>
+    <string name="call_stats_title_for_number">Ez a szám</string>
+    <string name="call_stats_title_of_total">Az összesből</string>
+    <string name="call_stats_title_durations">Hívásidőtartam</string>
+    <string name="call_stats_title_count">Hívásszám</string>
+    <string name="call_stats_title_average_duration">Átlagos hívásidőtartam</string>
+    <string name="recent_calls_no_items_in_range">Az Ön hívásnaplója nem tartalmaz semmilyen hívást a kijelölt időtartományban.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-in/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-in/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-in/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-in/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-in/cm_plurals.xml
new file mode 100644
index 0000000..4326c2d
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-in/cm_plurals.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="other">%d jam</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="other">%d menit</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="other">%d detik</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="other">%d panggilan</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-in/cm_strings.xml b/java/com/android/dialer/callstats/res/values-in/cm_strings.xml
new file mode 100644
index 0000000..e80a3be
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-in/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Detail statistik kontak</string>
+    <string name="call_stats_incoming">Masuk: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Keluar: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Tak terjawab: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Diblokir: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Tanggal mulai</string>
+    <string name="call_stats_filter_to">Tanggal berakhir</string>
+    <string name="call_stats_filter_picker_title">Jarak filter</string>
+    <string name="date_quick_selection">Pilihan cepat</string>
+    <string name="date_qs_currentmonth">Bulan ini</string>
+    <string name="date_qs_currentquarter">Triwulan ini</string>
+    <string name="date_qs_currentyear">Tahun ini</string>
+    <string name="date_qs_lastweek">Minggu lalu</string>
+    <string name="date_qs_lastmonth">Bulan lalu</string>
+    <string name="date_qs_lastquarter">Triwulan lalu</string>
+    <string name="date_qs_lastyear">Tahun lalu</string>
+    <string name="call_stats_date_filter">Sesuaikan rentang waktu</string>
+    <string name="call_stats_reset_filter">Atur kembali rentang waktu</string>
+    <string name="call_stats_sort_by_duration">Urutkan menurut durasi panggilan</string>
+    <string name="call_stats_sort_by_count">Urutkan menurut jumlah panggilan</string>
+    <string name="call_stats_title_for_number">Nomor ini</string>
+    <string name="call_stats_title_of_total">Total</string>
+    <string name="call_stats_title_durations">Durasi panggilan</string>
+    <string name="call_stats_title_count">Jumlah panggilan</string>
+    <string name="call_stats_title_average_duration">Rata-rata durasi panggilan</string>
+    <string name="recent_calls_no_items_in_range">Log panggilan Anda tidak terdapat penggilan dalam rentang waktu yang dipilih.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-is/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-is/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-is/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-is/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-is/cm_plurals.xml
new file mode 100644
index 0000000..9dd6f7e
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-is/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 klst</item>
+        <item quantity="other">%d klst</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 mín</item>
+        <item quantity="other">%d mín</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sek</item>
+        <item quantity="other">%d sek</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 símtal</item>
+        <item quantity="other">%d símtöl</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-is/cm_strings.xml b/java/com/android/dialer/callstats/res/values-is/cm_strings.xml
new file mode 100644
index 0000000..6f1baf0
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-is/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Nánari tölfræði tengiliðar</string>
+    <string name="call_stats_incoming">Innhringingar: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Úthringingar: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Ósvarað: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Útilokuð: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Alls: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Alls: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Upphafsdagsetning</string>
+    <string name="call_stats_filter_to">Lokadagsetning</string>
+    <string name="call_stats_filter_picker_title">Sía tímabil</string>
+    <string name="date_quick_selection">Flýtival</string>
+    <string name="date_qs_currentmonth">Núverandi mánuður</string>
+    <string name="date_qs_currentquarter">Núverandi ársfjórðungur</string>
+    <string name="date_qs_currentyear">Núverandi ár</string>
+    <string name="date_qs_lastweek">Í síðustu viku</string>
+    <string name="date_qs_lastmonth">Í síðasta mánuði</string>
+    <string name="date_qs_lastquarter">Síðasti ársfjórðungur</string>
+    <string name="date_qs_lastyear">Á síðasta ári</string>
+    <string name="call_stats_date_filter">Aðlaga tímabil</string>
+    <string name="call_stats_reset_filter">Endurstilla tímabil</string>
+    <string name="call_stats_sort_by_duration">Raða eftir lengd símtals</string>
+    <string name="call_stats_sort_by_count">Raða eftir fjölda símtala</string>
+    <string name="call_stats_title_for_number">Þetta númer</string>
+    <string name="call_stats_title_of_total">Af alls</string>
+    <string name="call_stats_title_durations">Tímalengdir símtala</string>
+    <string name="call_stats_title_count">Fjöldi símtala</string>
+    <string name="call_stats_title_average_duration">Meðallengd símtala</string>
+    <string name="recent_calls_no_items_in_range">Símtalaskráin inniheldur engin símtöl á völdu tímabili.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-it/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-it/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-it/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-it/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-it/cm_plurals.xml
new file mode 100644
index 0000000..0e39367
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-it/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 ora</item>
+        <item quantity="other">%d ore</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d min</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sec</item>
+        <item quantity="other">%d sec</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 chiamata</item>
+        <item quantity="other">%d chiamate</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-it/cm_strings.xml b/java/com/android/dialer/callstats/res/values-it/cm_strings.xml
new file mode 100644
index 0000000..3767c6d
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-it/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Dettagli statistiche del contatto</string>
+    <string name="call_stats_incoming">In entrata: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">In uscita: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Perse: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Bloccate: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Totale: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Totale: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Da data</string>
+    <string name="call_stats_filter_to">A data</string>
+    <string name="call_stats_filter_picker_title">Intervallo</string>
+    <string name="date_quick_selection">Selezione rapida</string>
+    <string name="date_qs_currentmonth">Mese corrente</string>
+    <string name="date_qs_currentquarter">Trimestre corrente</string>
+    <string name="date_qs_currentyear">Anno corrente</string>
+    <string name="date_qs_lastweek">Ultima settimana</string>
+    <string name="date_qs_lastmonth">Ultimo mese</string>
+    <string name="date_qs_lastquarter">Ultimo trimestre</string>
+    <string name="date_qs_lastyear">Ultimo anno</string>
+    <string name="call_stats_date_filter">Regola intervallo</string>
+    <string name="call_stats_reset_filter">Reimposta intervallo</string>
+    <string name="call_stats_sort_by_duration">Ordina per durata</string>
+    <string name="call_stats_sort_by_count">Ordina per numero</string>
+    <string name="call_stats_title_for_number">Questo numero</string>
+    <string name="call_stats_title_of_total">In totale</string>
+    <string name="call_stats_title_durations">Durata chiamate</string>
+    <string name="call_stats_title_count">Conteggio chiamate</string>
+    <string name="call_stats_title_average_duration">Durata media chiamata</string>
+    <string name="recent_calls_no_items_in_range">Il registro chiamate non contiene nessuna chiamata nel periodo di tempo selezionato.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-iw/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-iw/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-iw/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-iw/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-iw/cm_plurals.xml
new file mode 100644
index 0000000..f7bd937
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-iw/cm_plurals.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">שעה</item>
+        <item quantity="two">שעתיים</item>
+        <item quantity="many">%d שעות</item>
+        <item quantity="other">%d שעות</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">דקה</item>
+        <item quantity="two">%d דקות</item>
+        <item quantity="many">%d דקות</item>
+        <item quantity="other">%d דקות</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">שנייה</item>
+        <item quantity="two">%d שניות</item>
+        <item quantity="many">%d שניות</item>
+        <item quantity="other">%d שניות</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">שיחה אחת</item>
+        <item quantity="two">%d שיחות</item>
+        <item quantity="many">%d שיחות</item>
+        <item quantity="other">%d שיחות</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-iw/cm_strings.xml b/java/com/android/dialer/callstats/res/values-iw/cm_strings.xml
new file mode 100644
index 0000000..cfa78e2
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-iw/cm_strings.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">פרטי סטטיסטיקות אנשי קשר</string>
+    <string name="call_stats_incoming">נכנסות: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_outgoing">יוצאות: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">לא נענו: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">נחסמו: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">סך הכל: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">סך הכול: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">תאריך התחלה</string>
+    <string name="call_stats_filter_to">תאריך סיום</string>
+    <string name="call_stats_filter_picker_title">טווח סינון</string>
+    <string name="date_quick_selection">בחירה מהירה</string>
+    <string name="date_qs_currentmonth">חודש נוכחי</string>
+    <string name="date_qs_currentquarter">רבעון נוכחי</string>
+    <string name="date_qs_currentyear">שנה נוכחית</string>
+    <string name="date_qs_lastweek">שבוע שעבר</string>
+    <string name="date_qs_lastmonth">חודש שעבר</string>
+    <string name="date_qs_lastquarter">רבעון שעבר</string>
+    <string name="date_qs_lastyear">שנה שעברה</string>
+    <string name="call_stats_date_filter">שינוי טווח זמנים</string>
+    <string name="call_stats_reset_filter">איפוס טווח זמן</string>
+    <string name="call_stats_sort_by_duration">מיון לפי משך שיחה</string>
+    <string name="call_stats_sort_by_count">מיון לפי מספר שיחות</string>
+    <string name="call_stats_title_for_number">מספר זה</string>
+    <string name="call_stats_title_of_total">מתוך</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ja/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-ja/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ja/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ja/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-ja/cm_plurals.xml
new file mode 100644
index 0000000..bfc3920
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ja/cm_plurals.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="other">%d 時間</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="other">%d 分</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="other">%d 秒</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="other">%d 件</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ja/cm_strings.xml b/java/com/android/dialer/callstats/res/values-ja/cm_strings.xml
new file mode 100644
index 0000000..4e312b8
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ja/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">連絡先の統計情報</string>
+    <string name="call_stats_incoming">着信: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">発信: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">不在: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">着信拒否: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">合計: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">合計: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">開始日</string>
+    <string name="call_stats_filter_to">終了日</string>
+    <string name="call_stats_filter_picker_title">フィルターの範囲</string>
+    <string name="date_quick_selection">クイック選択</string>
+    <string name="date_qs_currentmonth">今月</string>
+    <string name="date_qs_currentquarter">今四半期</string>
+    <string name="date_qs_currentyear">今年</string>
+    <string name="date_qs_lastweek">先週</string>
+    <string name="date_qs_lastmonth">先月</string>
+    <string name="date_qs_lastquarter">前四半期</string>
+    <string name="date_qs_lastyear">前年</string>
+    <string name="call_stats_date_filter">期間を調整</string>
+    <string name="call_stats_reset_filter">期間をリセット</string>
+    <string name="call_stats_sort_by_duration">通話時間で並べ替え</string>
+    <string name="call_stats_sort_by_count">通話回数で並べ替え</string>
+    <string name="call_stats_title_for_number">この番号</string>
+    <string name="call_stats_title_of_total">合計のうち</string>
+    <string name="call_stats_title_durations">通話時間</string>
+    <string name="call_stats_title_count">通話回数</string>
+    <string name="call_stats_title_average_duration">平均通話時間</string>
+    <string name="recent_calls_no_items_in_range">指定した期間には通話履歴がありません。</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ka/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-ka/cm_arrays.xml
new file mode 100644
index 0000000..6a9af63
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ka/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 Sek.">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g>, <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g>, <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g>, <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ka/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-ka/cm_plurals.xml
new file mode 100644
index 0000000..46e7ecb
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ka/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 სთ</item>
+        <item quantity="other">%d სთ</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 წთ</item>
+        <item quantity="other">%d წთ</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 წმ</item>
+        <item quantity="other">%d წმ</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 ზარი</item>
+        <item quantity="other">%d ზარი</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ka/cm_strings.xml b/java/com/android/dialer/callstats/res/values-ka/cm_strings.xml
new file mode 100644
index 0000000..aa70ea3
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ka/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">პირის სტატისტიკა ვრცლად</string>
+    <string name="call_stats_incoming">შემოსული: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">გასული: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">გამოტოვებული: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">შეზღუდული: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">სულ: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">სულ: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">დაწყების თარიღი</string>
+    <string name="call_stats_filter_to">დასრულების თარიღი</string>
+    <string name="call_stats_filter_picker_title">შუალედის გამორჩევა</string>
+    <string name="date_quick_selection">სწრაფი შერჩევა</string>
+    <string name="date_qs_currentmonth">მიმდინარე თვე</string>
+    <string name="date_qs_currentquarter">მიმდინარე კვარტალი</string>
+    <string name="date_qs_currentyear">მიმდინარე წელი</string>
+    <string name="date_qs_lastweek">წინა კვირა</string>
+    <string name="date_qs_lastmonth">წინა თვე</string>
+    <string name="date_qs_lastquarter">წინა კვარტალი</string>
+    <string name="date_qs_lastyear">წინა წელი</string>
+    <string name="call_stats_date_filter">დროის შუალედის შერჩევა</string>
+    <string name="call_stats_reset_filter">დროის შუალედის ჩამოყრა</string>
+    <string name="call_stats_sort_by_duration">ზარების ხანგრძლივობით დალაგება</string>
+    <string name="call_stats_sort_by_count">ზარების რაოდენობით დალაგება</string>
+    <string name="call_stats_title_for_number">ამ ნომრის</string>
+    <string name="call_stats_title_of_total">სულ</string>
+    <string name="call_stats_title_durations">ზარების ხანგრძლივობა</string>
+    <string name="call_stats_title_count">ზარების რაოდენობა</string>
+    <string name="call_stats_title_average_duration">ზარის საშუალო ხანგრძლივობა</string>
+    <string name="recent_calls_no_items_in_range">ჩანაწერებში ვერ მოიძებნა ზარები, დროის შერჩეული შუალედისთვის.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-kab-rDZ/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-kab-rDZ/cm_plurals.xml
new file mode 100644
index 0000000..5a71ca1
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-kab-rDZ/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 asrag</item>
+        <item quantity="other">%d srgn</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 n tesdat</item>
+        <item quantity="other">%d n tisdatin</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 n tasint</item>
+        <item quantity="other">%d n tasinin</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 usiwel</item>
+        <item quantity="other">%d n yisawalen</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-kab-rDZ/cm_strings.xml b/java/com/android/dialer/callstats/res/values-kab-rDZ/cm_strings.xml
new file mode 100644
index 0000000..bb54740
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-kab-rDZ/cm_strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_incoming">Ukcimen: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Ufiɣen: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Yettwazeglen: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Iweḥlen: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_header_total">Asemday: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Aɣrud: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Azemz n tazwara</string>
+    <string name="call_stats_filter_to">Azemz n tagara</string>
+    <string name="call_stats_filter_picker_title">Tagrumma n testayt</string>
+    <string name="date_quick_selection">Afran arurad</string>
+    <string name="date_qs_currentmonth">Aggur amiran</string>
+    <string name="date_qs_currentquarter">Tasemhuyt tamirant</string>
+    <string name="date_qs_currentyear">Assegas amiran</string>
+    <string name="date_qs_lastweek">Imalas yezrin</string>
+    <string name="date_qs_lastmonth">Aggur yezrin</string>
+    <string name="date_qs_lastquarter">Tasemhuyt taneggarut</string>
+    <string name="date_qs_lastyear">Assegas yezrin</string>
+    <string name="call_stats_sort_by_duration">Smizzwer s tnzagt talemmast n isawalen</string>
+    <string name="call_stats_sort_by_count">Smizzwer s umessḍan n isawalan</string>
+    <string name="call_stats_title_for_number">Uṭṭun-agi</string>
+    <string name="call_stats_title_of_total">G uɣrud</string>
+    <string name="call_stats_title_durations">Tinzagin n usiwel</string>
+    <string name="call_stats_title_count">Amessḍan n isawalan</string>
+    <string name="call_stats_title_average_duration">Tanzagt talemmast n isawalen</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-kn/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-kn/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-kn/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-kn/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-kn/cm_plurals.xml
new file mode 100644
index 0000000..b017d66
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-kn/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">೧ ಗ</item>
+        <item quantity="other">%d ಗ</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">೧ ನಿ</item>
+        <item quantity="other">%d ನಿ</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">೧ ಕ್ಷ</item>
+        <item quantity="other">%d ಕ್ಷ</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">೧ ಕರೆ</item>
+        <item quantity="other">%d ಕರೆಗಳು</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-kn/cm_strings.xml b/java/com/android/dialer/callstats/res/values-kn/cm_strings.xml
new file mode 100644
index 0000000..a7dbfba
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-kn/cm_strings.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">ಕರೆಗಳ ಅಂಕ್ಯಾಂಶಗಳು</string>
+    <string name="call_stats_incoming">ಆಗಮಿತ: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">ನಿರ್ಗಮಿತ: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">ತಪ್ಪಿದ: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">ನಿರ್ಬಂಧಿತ: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total_callsonly">ಒಟ್ಟು: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">ಪ್ರಾರಂಭ ದಿನಾಂಕ</string>
+    <string name="call_stats_filter_to">ಮುಕ್ತಾಯ ದಿನಾಂಕ</string>
+    <string name="call_stats_filter_picker_title">ವ್ಯಾಪ್ತಿ ಸೋಸು</string>
+    <string name="date_quick_selection">ತ್ವರಿತ ಆಯ್ಕೆ</string>
+    <string name="date_qs_currentmonth">ಪ್ರಸ್ತುತ ತಿಂಗಳು</string>
+    <string name="date_qs_currentquarter">ಪ್ರಸ್ತುತ ತ್ರೈಮಾಸ</string>
+    <string name="date_qs_currentyear">ಪ್ರಸ್ತುತ ವರ್ಷ</string>
+    <string name="date_qs_lastweek">ಕಳೆದ ವಾರ</string>
+    <string name="date_qs_lastmonth">ಕಳೆದ ತಿಂಗಳು</string>
+    <string name="date_qs_lastquarter">ಕಳೆದ ತ್ರೈಮಾಸ</string>
+    <string name="date_qs_lastyear">ಕಳೆದ ವರ್ಷ</string>
+    <string name="call_stats_date_filter">ಸಮಯ ವ್ಯಾಪ್ತಿ ಸರಿಪಡಿಸು</string>
+    <string name="call_stats_reset_filter">ಕಾಲವಧಿ ಮರುಹೊಂದಿಸು</string>
+    <string name="call_stats_sort_by_duration">ಕರೆ ಅವಧಿ ಪ್ರಕಾರ ವಿಂಗಡಿಸು</string>
+    <string name="call_stats_sort_by_count">ಕರೆ ಎಣಿಕೆ ಪ್ರಕಾರ ವಿಂಗಡಿಸು</string>
+    <string name="call_stats_title_for_number">ಈ ಸಂಖ್ಯೆ</string>
+    <string name="call_stats_title_of_total">ಒಟ್ಟಿನ</string>
+    <string name="call_stats_title_durations">ಕರೆ ಅವಧಿಗಳು</string>
+    <string name="call_stats_title_count">ಕರೆ ಎಣಿಕೆ</string>
+    <string name="call_stats_title_average_duration">ಸರಾಸರಿ ಕರೆ ಅವಧಿ</string>
+    <string name="recent_calls_no_items_in_range">ನಿಮ್ಮ ಕರೆ ದಾಖಲೆಗಳಲ್ಲಿ ಆಯ್ಕೆಮಾಡಿದ ಸಮಯ ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಯಾವುದೇ ಕರೆಗಳು ಇಲ್ಲ.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ko/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-ko/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ko/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ko/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-ko/cm_plurals.xml
new file mode 100644
index 0000000..dd575c7
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ko/cm_plurals.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="other">%d시간</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="other">%d분</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="other">%d초</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="other">%d건</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ko/cm_strings.xml b/java/com/android/dialer/callstats/res/values-ko/cm_strings.xml
new file mode 100644
index 0000000..da7f776
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ko/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">연락처 통계 세부 정보</string>
+    <string name="call_stats_incoming">수신: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">발신: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">부재중: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">차단됨: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">합계 : <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">합계: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">시작 날짜</string>
+    <string name="call_stats_filter_to">끝 날짜</string>
+    <string name="call_stats_filter_picker_title">필터 범위</string>
+    <string name="date_quick_selection">빠른 선택</string>
+    <string name="date_qs_currentmonth">이번 달</string>
+    <string name="date_qs_currentquarter">이번 분기</string>
+    <string name="date_qs_currentyear">올해</string>
+    <string name="date_qs_lastweek">지난 주</string>
+    <string name="date_qs_lastmonth">지난 달</string>
+    <string name="date_qs_lastquarter">지난 분기</string>
+    <string name="date_qs_lastyear">지난 해</string>
+    <string name="call_stats_date_filter">시간 범위 조정</string>
+    <string name="call_stats_reset_filter">시간 범위 초기화</string>
+    <string name="call_stats_sort_by_duration">통화 시간으로 정렬</string>
+    <string name="call_stats_sort_by_count">통화 횟수로 정렬</string>
+    <string name="call_stats_title_for_number">이 번호는</string>
+    <string name="call_stats_title_of_total">총</string>
+    <string name="call_stats_title_durations">통화 시간</string>
+    <string name="call_stats_title_count">통화 횟수</string>
+    <string name="call_stats_title_average_duration">평균 통화 시간</string>
+    <string name="recent_calls_no_items_in_range">선택된 시간 범위에 존재하는 통화 내역이 없습니다.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-nl/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-nl/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-nl/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-nl/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-nl/cm_plurals.xml
new file mode 100644
index 0000000..65d3c47
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-nl/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 uur</item>
+        <item quantity="other">%d uur</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d min</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sec</item>
+        <item quantity="other">%d sec</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 oproep</item>
+        <item quantity="other">%d oproepen</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-nl/cm_strings.xml b/java/com/android/dialer/callstats/res/values-nl/cm_strings.xml
new file mode 100644
index 0000000..ec3a62d
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-nl/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Gedetailleerde contactstatistieken</string>
+    <string name="call_stats_incoming">Inkomend: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Uitgaand: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Gemist: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Geblokkeerd: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Totaal: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Totaal: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Begindatum</string>
+    <string name="call_stats_filter_to">Einddatum</string>
+    <string name="call_stats_filter_picker_title">Filterbereik</string>
+    <string name="date_quick_selection">Snelle selectie</string>
+    <string name="date_qs_currentmonth">Huidige maand</string>
+    <string name="date_qs_currentquarter">Huidig kwartaal</string>
+    <string name="date_qs_currentyear">Huidig jaar</string>
+    <string name="date_qs_lastweek">Vorige week</string>
+    <string name="date_qs_lastmonth">Vorige maand</string>
+    <string name="date_qs_lastquarter">Vorig kwartaal</string>
+    <string name="date_qs_lastyear">Vorig jaar</string>
+    <string name="call_stats_date_filter">Tijdsbestek aanpassen</string>
+    <string name="call_stats_reset_filter">Tijdsbestek herstellen</string>
+    <string name="call_stats_sort_by_duration">Sorteren op gespreksduur</string>
+    <string name="call_stats_sort_by_count">Sorteren op gespreksaantal</string>
+    <string name="call_stats_title_for_number">Dit nummer</string>
+    <string name="call_stats_title_of_total">Van in totaal</string>
+    <string name="call_stats_title_durations">Gespreksduur</string>
+    <string name="call_stats_title_count">Aantal gesprekken</string>
+    <string name="call_stats_title_average_duration">Gemiddelde gespreksduur</string>
+    <string name="recent_calls_no_items_in_range">Uw oproepgeschiedenis bevat geen oproepen in het geselecteerde tijdsbereik.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-pl/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-pl/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-pl/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-pl/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-pl/cm_plurals.xml
new file mode 100644
index 0000000..11f750e
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-pl/cm_plurals.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 godzina</item>
+        <item quantity="few">%d godziny</item>
+        <item quantity="many">%d godzin</item>
+        <item quantity="other">%d godzin</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 minuta</item>
+        <item quantity="few">%d minuty</item>
+        <item quantity="many">%d minut</item>
+        <item quantity="other">%d minut</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sekunda</item>
+        <item quantity="few">%d sekundy</item>
+        <item quantity="many">%d sekund</item>
+        <item quantity="other">%d sekund</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 połączenie</item>
+        <item quantity="few">%d połączenia</item>
+        <item quantity="many">%d połączeń</item>
+        <item quantity="other">%d połączeń</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-pl/cm_strings.xml b/java/com/android/dialer/callstats/res/values-pl/cm_strings.xml
new file mode 100644
index 0000000..f5a3c14
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-pl/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Szczegółowe statystyki kontaktu</string>
+    <string name="call_stats_incoming">Przychodzące: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_outgoing">Wychodzące: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_missed">Nieodebrane: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_blocked">Zablokowane: <xliff:g id="value">%s </xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d </xliff:g>%%</string>
+    <string name="call_stats_header_total">Łącznie: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Łącznie: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Data początkowa</string>
+    <string name="call_stats_filter_to">Data końcowa</string>
+    <string name="call_stats_filter_picker_title">Filtruj zakres</string>
+    <string name="date_quick_selection">Szybki wybór</string>
+    <string name="date_qs_currentmonth">Bieżący miesiąc</string>
+    <string name="date_qs_currentquarter">Bieżący kwartał</string>
+    <string name="date_qs_currentyear">Bieżący rok</string>
+    <string name="date_qs_lastweek">Ostatni tydzień</string>
+    <string name="date_qs_lastmonth">Ostatni miesiąc</string>
+    <string name="date_qs_lastquarter">Ostatni kwartał</string>
+    <string name="date_qs_lastyear">Ostatni rok</string>
+    <string name="call_stats_date_filter">Dostosuj zakres czasu</string>
+    <string name="call_stats_reset_filter">Zresetuj zakres czasu</string>
+    <string name="call_stats_sort_by_duration">Sortuj po długości połączenia</string>
+    <string name="call_stats_sort_by_count">Sortuj po liczbie połączeń</string>
+    <string name="call_stats_title_for_number">Ten numer</string>
+    <string name="call_stats_title_of_total">Wszystkich</string>
+    <string name="call_stats_title_durations">Czasy połączeń</string>
+    <string name="call_stats_title_count">Liczba połączeń</string>
+    <string name="call_stats_title_average_duration">Średni czas połączenia</string>
+    <string name="recent_calls_no_items_in_range">Twój dziennik połączeń nie zawiera żadnego połączenia w wybranym przedziale czasu.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-pt-rBR/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-pt-rBR/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-pt-rBR/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-pt-rBR/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-pt-rBR/cm_plurals.xml
new file mode 100644
index 0000000..b384364
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-pt-rBR/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 hr</item>
+        <item quantity="other">%d hrs</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d mins</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 seg</item>
+        <item quantity="other">%d segs</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 chamada</item>
+        <item quantity="other">%d chamadas</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-pt-rBR/cm_strings.xml b/java/com/android/dialer/callstats/res/values-pt-rBR/cm_strings.xml
new file mode 100644
index 0000000..0b0fbfa
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-pt-rBR/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Estatísticas detalhadas do contato</string>
+    <string name="call_stats_incoming">Recebidas: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Discadas: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Perdidas: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Bloqueadas: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Data inicial</string>
+    <string name="call_stats_filter_to">Data final</string>
+    <string name="call_stats_filter_picker_title">Intervalo do filtro</string>
+    <string name="date_quick_selection">Seleção rápida</string>
+    <string name="date_qs_currentmonth">Mês atual</string>
+    <string name="date_qs_currentquarter">Trimestre atual</string>
+    <string name="date_qs_currentyear">Ano atual</string>
+    <string name="date_qs_lastweek">Semana passada</string>
+    <string name="date_qs_lastmonth">Mês passado</string>
+    <string name="date_qs_lastquarter">Trimestre passado</string>
+    <string name="date_qs_lastyear">Ano passado</string>
+    <string name="call_stats_date_filter">Ajustar intervalo de tempo</string>
+    <string name="call_stats_reset_filter">Redefinir intervalo de tempo</string>
+    <string name="call_stats_sort_by_duration">Ordenar por duração de chamada</string>
+    <string name="call_stats_sort_by_count">Ordenar por quantidade de chamadas</string>
+    <string name="call_stats_title_for_number">Este número</string>
+    <string name="call_stats_title_of_total">Do total</string>
+    <string name="call_stats_title_durations">Duração das chamadas</string>
+    <string name="call_stats_title_count">Quantidade de chamadas</string>
+    <string name="call_stats_title_average_duration">Duração média de chamada</string>
+    <string name="recent_calls_no_items_in_range">Não há registro de chamadas no intervalo de tempo selecionado.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-pt-rPT/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-pt-rPT/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-pt-rPT/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-pt-rPT/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-pt-rPT/cm_plurals.xml
new file mode 100644
index 0000000..6f32c8e
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-pt-rPT/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 hora</item>
+        <item quantity="other">%d horas</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 minuto</item>
+        <item quantity="other">%d minutos</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 segundo</item>
+        <item quantity="other">%d segundos</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 chamada</item>
+        <item quantity="other">%d chamadas</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-pt-rPT/cm_strings.xml b/java/com/android/dialer/callstats/res/values-pt-rPT/cm_strings.xml
new file mode 100644
index 0000000..3011d05
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-pt-rPT/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Detalhes das estatísticas dos contactos</string>
+    <string name="call_stats_incoming">Recebidas: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Efetuadas: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Perdidas: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Bloqueadas: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Data inicial</string>
+    <string name="call_stats_filter_to">Data final</string>
+    <string name="call_stats_filter_picker_title">Filtrar intervalo</string>
+    <string name="date_quick_selection">Seleção rápida</string>
+    <string name="date_qs_currentmonth">Mês atual</string>
+    <string name="date_qs_currentquarter">Trimestre atual</string>
+    <string name="date_qs_currentyear">Ano atual</string>
+    <string name="date_qs_lastweek">Última semana</string>
+    <string name="date_qs_lastmonth">Último mês</string>
+    <string name="date_qs_lastquarter">Último trimestre</string>
+    <string name="date_qs_lastyear">Último ano</string>
+    <string name="call_stats_date_filter">Ajustar intervalo de tempo</string>
+    <string name="call_stats_reset_filter">Repor intervalo de tempo</string>
+    <string name="call_stats_sort_by_duration">Ordenar pela duração da chamada</string>
+    <string name="call_stats_sort_by_count">Ordenar pelo número de chamadas</string>
+    <string name="call_stats_title_for_number">Este número</string>
+    <string name="call_stats_title_of_total">Num total de</string>
+    <string name="call_stats_title_durations">Duração das chamadas</string>
+    <string name="call_stats_title_count">Contagem de chamadas</string>
+    <string name="call_stats_title_average_duration">Duração média das chamadas</string>
+    <string name="recent_calls_no_items_in_range">O seu registo de chamadas não contém qualquer chamada no período selecionado.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ro/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-ro/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ro/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ro/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-ro/cm_plurals.xml
new file mode 100644
index 0000000..e45a49b
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ro/cm_plurals.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 oră</item>
+        <item quantity="few">%d (de) ore</item>
+        <item quantity="other">%d (de) ore</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 minut</item>
+        <item quantity="few">%d (de) minute</item>
+        <item quantity="other">%d (de) minute</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 secundă</item>
+        <item quantity="few">%d (de) secunde</item>
+        <item quantity="other">%d (de) secunde</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 apel</item>
+        <item quantity="few">%d (de) apeluri</item>
+        <item quantity="other">%d (de) apeluri</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ro/cm_strings.xml b/java/com/android/dialer/callstats/res/values-ro/cm_strings.xml
new file mode 100644
index 0000000..f284392
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ro/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Detalii statistici contact</string>
+    <string name="call_stats_incoming">Primit: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Efectuat: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Pierdut: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blocat: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Data de început</string>
+    <string name="call_stats_filter_to">Data de sfârșit</string>
+    <string name="call_stats_filter_picker_title">Interval filtru</string>
+    <string name="date_quick_selection">Selecție rapidă</string>
+    <string name="date_qs_currentmonth">Luna curentă</string>
+    <string name="date_qs_currentquarter">Trimestrul curent</string>
+    <string name="date_qs_currentyear">Anul curent</string>
+    <string name="date_qs_lastweek">Săptămâna trecută</string>
+    <string name="date_qs_lastmonth">Luna trecută</string>
+    <string name="date_qs_lastquarter">Trimestrul trecut</string>
+    <string name="date_qs_lastyear">Anul trecut</string>
+    <string name="call_stats_date_filter">Ajustare interval de timp</string>
+    <string name="call_stats_reset_filter">Resetare interval de timp</string>
+    <string name="call_stats_sort_by_duration">Sortare după durata apelului</string>
+    <string name="call_stats_sort_by_count">Sortare după numărul de apeluri</string>
+    <string name="call_stats_title_for_number">Acest număr</string>
+    <string name="call_stats_title_of_total">Din total</string>
+    <string name="call_stats_title_durations">Durate apeluri</string>
+    <string name="call_stats_title_count">Număr apeluri</string>
+    <string name="call_stats_title_average_duration">Durata medie a apelului</string>
+    <string name="recent_calls_no_items_in_range">Istoricul apelurilor nu conține apeluri în intervalul de timp selectat.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ru/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-ru/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ru/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ru/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-ru/cm_plurals.xml
new file mode 100644
index 0000000..eac3b4e
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ru/cm_plurals.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 ч.</item>
+        <item quantity="few">%d ч.</item>
+        <item quantity="many">%d ч.</item>
+        <item quantity="other">%d ч.</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 мин.</item>
+        <item quantity="few">%d мин.</item>
+        <item quantity="many">%d мин.</item>
+        <item quantity="other">%d мин.</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 сек.</item>
+        <item quantity="few">%d сек.</item>
+        <item quantity="many">%d сек.</item>
+        <item quantity="other">%d сек.</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 вызов</item>
+        <item quantity="few">%d вызова</item>
+        <item quantity="many">%d вызовов</item>
+        <item quantity="other">%d вызовов</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-ru/cm_strings.xml b/java/com/android/dialer/callstats/res/values-ru/cm_strings.xml
new file mode 100644
index 0000000..badef7e
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-ru/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Подробности статистики контакта</string>
+    <string name="call_stats_incoming">Входящих: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Исходящих: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Пропущенных: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Заблокированных: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Всего: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Всего: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Дата начала</string>
+    <string name="call_stats_filter_to">Дата окончания</string>
+    <string name="call_stats_filter_picker_title">Диапазон выбора</string>
+    <string name="date_quick_selection">Быстрый выбор</string>
+    <string name="date_qs_currentmonth">Текущий месяц</string>
+    <string name="date_qs_currentquarter">Текущий квартал</string>
+    <string name="date_qs_currentyear">Текущий год</string>
+    <string name="date_qs_lastweek">Прошлая неделя</string>
+    <string name="date_qs_lastmonth">Прошлый месяц</string>
+    <string name="date_qs_lastquarter">Прошлый квартал</string>
+    <string name="date_qs_lastyear">Прошлый год</string>
+    <string name="call_stats_date_filter">Диапазон времени</string>
+    <string name="call_stats_reset_filter">Сбросить фильтр</string>
+    <string name="call_stats_sort_by_duration">Сорт. по длительности</string>
+    <string name="call_stats_sort_by_count">Сорт. по количеству</string>
+    <string name="call_stats_title_for_number">Этот номер</string>
+    <string name="call_stats_title_of_total">От общего числа</string>
+    <string name="call_stats_title_durations">Длительность вызовов</string>
+    <string name="call_stats_title_count">Количество вызовов</string>
+    <string name="call_stats_title_average_duration">Средняя продолж. разговора</string>
+    <string name="recent_calls_no_items_in_range">В журнале вызовов нет записей за указанный период времени.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sk/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-sk/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sk/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sk/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-sk/cm_plurals.xml
new file mode 100644
index 0000000..a62a960
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sk/cm_plurals.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 hodina</item>
+        <item quantity="few">%d hodiny</item>
+        <item quantity="many">%d hodín</item>
+        <item quantity="other">%d hodín</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 minúta</item>
+        <item quantity="few">%d minúty</item>
+        <item quantity="many">%d minút</item>
+        <item quantity="other">%d minút</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sekunda</item>
+        <item quantity="few">%d sekundy</item>
+        <item quantity="many">%d sekúnd</item>
+        <item quantity="other">%d sekúnd</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 hovor</item>
+        <item quantity="few">%d hovory</item>
+        <item quantity="many">%d hovorov</item>
+        <item quantity="other">%d hovorov</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sk/cm_strings.xml b/java/com/android/dialer/callstats/res/values-sk/cm_strings.xml
new file mode 100644
index 0000000..c64636e
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sk/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Podrobné štatistiky kontaktu</string>
+    <string name="call_stats_incoming">Prichádzajúce: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Odchádzajúce: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Zmeškané: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blokované: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Celkovo:  <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Celkovo: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Dátum začiatku</string>
+    <string name="call_stats_filter_to">Dátum konca</string>
+    <string name="call_stats_filter_picker_title">Rozsah filtra</string>
+    <string name="date_quick_selection">Rýchly výber</string>
+    <string name="date_qs_currentmonth">Aktuálny mesiac</string>
+    <string name="date_qs_currentquarter">Aktuálny štvrťrok</string>
+    <string name="date_qs_currentyear">Aktuálny rok</string>
+    <string name="date_qs_lastweek">Posledný týždeň</string>
+    <string name="date_qs_lastmonth">Posledný mesiac</string>
+    <string name="date_qs_lastquarter">Posledný štvrťrok</string>
+    <string name="date_qs_lastyear">Posledný rok</string>
+    <string name="call_stats_date_filter">Nastaviť časový rozsah</string>
+    <string name="call_stats_reset_filter">Resetovať časový rozsah</string>
+    <string name="call_stats_sort_by_duration">Zoradiť podľa dĺžky hovoru</string>
+    <string name="call_stats_sort_by_count">Zoradiť podľa počtu hovorov</string>
+    <string name="call_stats_title_for_number">Toto číslo</string>
+    <string name="call_stats_title_of_total">Z celkových</string>
+    <string name="call_stats_title_durations">Dĺžka hovorov</string>
+    <string name="call_stats_title_count">Počet hovorov</string>
+    <string name="call_stats_title_average_duration">Priemerné trvanie hovoru</string>
+    <string name="recent_calls_no_items_in_range">Váš denník hovorov neobsahuje žiadne hovory vo vybranom časovom rozsahu.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sl/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-sl/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sl/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sl/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-sl/cm_plurals.xml
new file mode 100644
index 0000000..2211f0b
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sl/cm_plurals.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 ura</item>
+        <item quantity="two">%d uri</item>
+        <item quantity="few">%d ure</item>
+        <item quantity="other">%d ur</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min.</item>
+        <item quantity="two">%d min.</item>
+        <item quantity="few">%d min.</item>
+        <item quantity="other">%d min.</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sek.</item>
+        <item quantity="two">%d sek.</item>
+        <item quantity="few">%d sek.</item>
+        <item quantity="other">%d sek.</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 klic</item>
+        <item quantity="two">%d klica</item>
+        <item quantity="few">%d klici</item>
+        <item quantity="other">%d klicev</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sl/cm_strings.xml b/java/com/android/dialer/callstats/res/values-sl/cm_strings.xml
new file mode 100644
index 0000000..087a543
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sl/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Podrobna statistika stika</string>
+    <string name="call_stats_incoming">Dohodni: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Odhodni: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Neodgovorjeni: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blokirani: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Skupaj: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Skupaj: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Začetni datum</string>
+    <string name="call_stats_filter_to">Končni datum</string>
+    <string name="call_stats_filter_picker_title">Obseg filtriranja</string>
+    <string name="date_quick_selection">Hitra izbira</string>
+    <string name="date_qs_currentmonth">Tekoči mesec</string>
+    <string name="date_qs_currentquarter">Tekoče četrtletje</string>
+    <string name="date_qs_currentyear">Tekoče leto</string>
+    <string name="date_qs_lastweek">Prejšnji teden</string>
+    <string name="date_qs_lastmonth">Prejšnji mesec</string>
+    <string name="date_qs_lastquarter">Prejšnje četrtletje</string>
+    <string name="date_qs_lastyear">Prejšnje leto</string>
+    <string name="call_stats_date_filter">Prilagodi časovni obseg</string>
+    <string name="call_stats_reset_filter">Ponastavi časovni obseg</string>
+    <string name="call_stats_sort_by_duration">Razvrsti po trajanju klica</string>
+    <string name="call_stats_sort_by_count">Razvrsti po številu klicev</string>
+    <string name="call_stats_title_for_number">Ta številka</string>
+    <string name="call_stats_title_of_total">Od skupno</string>
+    <string name="call_stats_title_durations">Trajanje klicev</string>
+    <string name="call_stats_title_count">Število klicev</string>
+    <string name="call_stats_title_average_duration">Povprečna dolžina klica</string>
+    <string name="recent_calls_no_items_in_range">Vaš dnevnik klicev ne vsebuje nobenih klicev v izbranem časovnem obsegu.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sq/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-sq/cm_arrays.xml
new file mode 100644
index 0000000..e7dc067
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sq/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 sekonda">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 minuta">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 minuta">%2$s</xliff:g> <xliff:g id="seconds" example="2 sekonda">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 orë">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 orë">%1$s</xliff:g> <xliff:g id="seconds" example="2 sekonda">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 orë">%1$s</xliff:g> <xliff:g id="minutes" example="2 minuta">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 orë">%1$s</xliff:g> <xliff:g id="minutes" example="2 minuta">%2$s</xliff:g> <xliff:g id="seconds" example="2 sekonda">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sq/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-sq/cm_plurals.xml
new file mode 100644
index 0000000..3e9d6ce
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sq/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 orë</item>
+        <item quantity="other">%d orë</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d minuta</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sek</item>
+        <item quantity="other">%d sek</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 thirrje</item>
+        <item quantity="other">%d thirrje</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sq/cm_strings.xml b/java/com/android/dialer/callstats/res/values-sq/cm_strings.xml
new file mode 100644
index 0000000..564ed5b
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sq/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Detajet statistikore të kontaktit</string>
+    <string name="call_stats_incoming">Hyrëse:<xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Dalëse: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Të humbura: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Të bllokuara: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Totali: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Totali: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Data e fillimit</string>
+    <string name="call_stats_filter_to">Data e mbarimit</string>
+    <string name="call_stats_filter_picker_title">Vargu i filtrimit</string>
+    <string name="date_quick_selection">Përzgjedhje e shpejtë</string>
+    <string name="date_qs_currentmonth">Muaji aktual</string>
+    <string name="date_qs_currentquarter">Simestri aktual</string>
+    <string name="date_qs_currentyear">Viti aktual</string>
+    <string name="date_qs_lastweek">Java e kaluar</string>
+    <string name="date_qs_lastmonth">Muaji i kaluar</string>
+    <string name="date_qs_lastquarter">Simestri i kaluar</string>
+    <string name="date_qs_lastyear">Viti i kaluar</string>
+    <string name="call_stats_date_filter">Rregullo intervalin kohor</string>
+    <string name="call_stats_reset_filter">Rivendos intervalin kohor</string>
+    <string name="call_stats_sort_by_duration">Rendit sipas kohëzgjatjes</string>
+    <string name="call_stats_sort_by_count">Rendit sipas numërimit</string>
+    <string name="call_stats_title_for_number">Ky numër</string>
+    <string name="call_stats_title_of_total">I totalit</string>
+    <string name="call_stats_title_durations">Kohëzgjatjet e telefonatave</string>
+    <string name="call_stats_title_count">Numërimi i thirrjeve</string>
+    <string name="call_stats_title_average_duration">Kohëzgjatja mesatare e telefonatave</string>
+    <string name="recent_calls_no_items_in_range">Lista e thirrjeve nuk përmban asnjë thirrje gjatë periudhës kohore të zgjedhur.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sr/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-sr/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sr/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sr/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-sr/cm_plurals.xml
new file mode 100644
index 0000000..985ec76
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sr/cm_plurals.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 сат</item>
+        <item quantity="few">%d сата</item>
+        <item quantity="other">%d сати</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 мин</item>
+        <item quantity="few">%d минута</item>
+        <item quantity="other">%d минута</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 секунда</item>
+        <item quantity="few">%d секунде</item>
+        <item quantity="other">%d секунди</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 позив</item>
+        <item quantity="few">%d позива</item>
+        <item quantity="other">%d позива</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sr/cm_strings.xml b/java/com/android/dialer/callstats/res/values-sr/cm_strings.xml
new file mode 100644
index 0000000..6dac6ff
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sr/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Детаљи статистике контакта</string>
+    <string name="call_stats_incoming">Долазних: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Одлазних: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Пропуштених: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Блокираних: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Укупно: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Укупно: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Почетни датум</string>
+    <string name="call_stats_filter_to">Крајњи датум</string>
+    <string name="call_stats_filter_picker_title">Опсег филтера</string>
+    <string name="date_quick_selection">Брзи одабир</string>
+    <string name="date_qs_currentmonth">Тренутни месец</string>
+    <string name="date_qs_currentquarter">Текући квартал</string>
+    <string name="date_qs_currentyear">Текућа година</string>
+    <string name="date_qs_lastweek">Прошла недеља</string>
+    <string name="date_qs_lastmonth">Прошли месец</string>
+    <string name="date_qs_lastquarter">Прошли квартал</string>
+    <string name="date_qs_lastyear">Прошла година</string>
+    <string name="call_stats_date_filter">Подеси временски опсег</string>
+    <string name="call_stats_reset_filter">Ресетуј временски опсег</string>
+    <string name="call_stats_sort_by_duration">Сортирај по трајању позива</string>
+    <string name="call_stats_sort_by_count">Сортирај по броју позива</string>
+    <string name="call_stats_title_for_number">Овај број</string>
+    <string name="call_stats_title_of_total">Од укупно</string>
+    <string name="call_stats_title_durations">Трајања позива</string>
+    <string name="call_stats_title_count">Број позива</string>
+    <string name="call_stats_title_average_duration">Просечно трајање позива</string>
+    <string name="recent_calls_no_items_in_range">Дневник позива не садржи ниједан позив у датим опсегу.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sv/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-sv/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sv/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sv/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-sv/cm_plurals.xml
new file mode 100644
index 0000000..55045ef
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sv/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 timme</item>
+        <item quantity="other">%d timmar</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d min</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sek</item>
+        <item quantity="other">%d sek</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 samtal</item>
+        <item quantity="other">%d samtal</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-sv/cm_strings.xml b/java/com/android/dialer/callstats/res/values-sv/cm_strings.xml
new file mode 100644
index 0000000..7742e86
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-sv/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Detaljer för kontaktstatistik</string>
+    <string name="call_stats_incoming">Inkommande: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Utgående: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Missade: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blockerade: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Totalt: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Totalt: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Startdatum</string>
+    <string name="call_stats_filter_to">Slutdatum</string>
+    <string name="call_stats_filter_picker_title">Filterintervall</string>
+    <string name="date_quick_selection">Snabbval</string>
+    <string name="date_qs_currentmonth">Nuvarande månad</string>
+    <string name="date_qs_currentquarter">Nuvarande kvartal</string>
+    <string name="date_qs_currentyear">Nuvarande år</string>
+    <string name="date_qs_lastweek">Förra veckan</string>
+    <string name="date_qs_lastmonth">Förra månaden</string>
+    <string name="date_qs_lastquarter">Förra kvartalet</string>
+    <string name="date_qs_lastyear">Förra året</string>
+    <string name="call_stats_date_filter">Justera tidsintervall</string>
+    <string name="call_stats_reset_filter">Återställ tidsintervall</string>
+    <string name="call_stats_sort_by_duration">Sortera efter samtalstid</string>
+    <string name="call_stats_sort_by_count">Sortera efter antal samtal</string>
+    <string name="call_stats_title_for_number">Det här numret</string>
+    <string name="call_stats_title_of_total">Av totalt</string>
+    <string name="call_stats_title_durations">Samtalslängder</string>
+    <string name="call_stats_title_count">Antal samtal</string>
+    <string name="call_stats_title_average_duration">Genomsnittlig samtalslängd</string>
+    <string name="recent_calls_no_items_in_range">Samtalsloggen innehåller inte några samtal i det valda tidsintervallet.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-th/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-th/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-th/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-th/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-th/cm_plurals.xml
new file mode 100644
index 0000000..9a5a62d
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-th/cm_plurals.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="other">%d ชั่วโมง</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="other">%d นาที</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="other">%d วินาที</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="other">%d สาย</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-th/cm_strings.xml b/java/com/android/dialer/callstats/res/values-th/cm_strings.xml
new file mode 100644
index 0000000..1e3f65c
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-th/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">รายละเอียดสถิติการติดต่อ</string>
+    <string name="call_stats_incoming">สายเข้า: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">โทรออก: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">ไม่ได้รับ: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">บล็อค: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">ทั้งหมด: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">ทั้งหมด: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">วันที่เริ่มต้น</string>
+    <string name="call_stats_filter_to">วันที่สิ้นสุด</string>
+    <string name="call_stats_filter_picker_title">ขอบเขตตัวกรอง</string>
+    <string name="date_quick_selection">เลือกแบบรวดเร็ว</string>
+    <string name="date_qs_currentmonth">เดือนนี้</string>
+    <string name="date_qs_currentquarter">ไตรมาสปัจจุบัน</string>
+    <string name="date_qs_currentyear">ปีนี้</string>
+    <string name="date_qs_lastweek">สัปดาห์ที่แล้ว</string>
+    <string name="date_qs_lastmonth">เดือนที่แล้ว</string>
+    <string name="date_qs_lastquarter">ไตรมาสล่าสุด</string>
+    <string name="date_qs_lastyear">ปีที่แล้ว</string>
+    <string name="call_stats_date_filter">ปรับขอบเขตเวลา</string>
+    <string name="call_stats_reset_filter">รีเซ็ตขอบเขตเวลา</string>
+    <string name="call_stats_sort_by_duration">เรียงตามระยะเวลาการโทร</string>
+    <string name="call_stats_sort_by_count">เรียงตามจำนวนครั้งการโทร</string>
+    <string name="call_stats_title_for_number">หมายเลขนี้</string>
+    <string name="call_stats_title_of_total">จากทั้งหมด</string>
+    <string name="call_stats_title_durations">ระยะเวลาการโทร</string>
+    <string name="call_stats_title_count">จำนวนการโทร</string>
+    <string name="call_stats_title_average_duration">เวลาโทรเฉลี่ย</string>
+    <string name="recent_calls_no_items_in_range">ประวัติการโทรของคุณจะไม่นับการโทรในช่วงเวลาที่กำหนด</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-tr/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-tr/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-tr/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-tr/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-tr/cm_plurals.xml
new file mode 100644
index 0000000..80a9fc4
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-tr/cm_plurals.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 sa</item>
+        <item quantity="other">%d sa</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 dk</item>
+        <item quantity="other">%d dk</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sn</item>
+        <item quantity="other">%d sn</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 arama</item>
+        <item quantity="other">%d arama</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-tr/cm_strings.xml b/java/com/android/dialer/callstats/res/values-tr/cm_strings.xml
new file mode 100644
index 0000000..c8a80b4
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-tr/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Kişi istatistikleri detayları</string>
+    <string name="call_stats_incoming">Gelen: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Giden: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Cevapsız: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Engellenen: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Toplam: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Toplam: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Başlangıç tarihi</string>
+    <string name="call_stats_filter_to">Bitiş tarihi</string>
+    <string name="call_stats_filter_picker_title">Filtreleme aralığı</string>
+    <string name="date_quick_selection">Hızlı seçim</string>
+    <string name="date_qs_currentmonth">Bu ay</string>
+    <string name="date_qs_currentquarter">Şu anki çeyrek</string>
+    <string name="date_qs_currentyear">Bu yıl</string>
+    <string name="date_qs_lastweek">Geçen hafta</string>
+    <string name="date_qs_lastmonth">Geçen ay</string>
+    <string name="date_qs_lastquarter">Geçen çeyrek</string>
+    <string name="date_qs_lastyear">Geçen yıl</string>
+    <string name="call_stats_date_filter">Zaman aralığını ayarla</string>
+    <string name="call_stats_reset_filter">Zaman aralığını sıfırla</string>
+    <string name="call_stats_sort_by_duration">Arama süresine göre sırala</string>
+    <string name="call_stats_sort_by_count">Arama sayısına göre sırala</string>
+    <string name="call_stats_title_for_number">Bu numara</string>
+    <string name="call_stats_title_of_total">Toplam</string>
+    <string name="call_stats_title_durations">Arama süreleri</string>
+    <string name="call_stats_title_count">Arama sayısı</string>
+    <string name="call_stats_title_average_duration">Ortalama arama süresi</string>
+    <string name="recent_calls_no_items_in_range">Arama kaydı seçilen zaman aralığında herhangi bir arama içermiyor.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-uk/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-uk/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-uk/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-uk/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-uk/cm_plurals.xml
new file mode 100644
index 0000000..66e3008
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-uk/cm_plurals.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="minute">
+        <item quantity="one">хвилина</item>
+        <item quantity="few">%d хвилини</item>
+        <item quantity="many">%d хвилин</item>
+        <item quantity="other">%d хвилин</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">секунда</item>
+        <item quantity="few">%d секунди</item>
+        <item quantity="many">%d секунд</item>
+        <item quantity="other">%d секунд</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="one">1 виклик</item>
+        <item quantity="few">%d виклики</item>
+        <item quantity="many">%d викликів</item>
+        <item quantity="other">%d викликів</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-uk/cm_strings.xml b/java/com/android/dialer/callstats/res/values-uk/cm_strings.xml
new file mode 100644
index 0000000..eff07f2
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-uk/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Докладна статистика викликів</string>
+    <string name="call_stats_incoming">Вхідних: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Вихідних: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Пропущених: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Заблокованих: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Всього: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Загалом: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Початкова дата</string>
+    <string name="call_stats_filter_to">Кінцева дата</string>
+    <string name="call_stats_filter_picker_title">Діапазон вибору</string>
+    <string name="date_quick_selection">Швидкий вибір</string>
+    <string name="date_qs_currentmonth">Поточний місяць</string>
+    <string name="date_qs_currentquarter">Поточний квартал</string>
+    <string name="date_qs_currentyear">Поточний рік</string>
+    <string name="date_qs_lastweek">Минулий тиждень</string>
+    <string name="date_qs_lastmonth">Минулий місяць</string>
+    <string name="date_qs_lastquarter">Минулий квартал</string>
+    <string name="date_qs_lastyear">Минулий рік</string>
+    <string name="call_stats_date_filter">Обрати проміжок часу</string>
+    <string name="call_stats_reset_filter">Скинути проміжок часу</string>
+    <string name="call_stats_sort_by_duration">Впорядкувати за тривалістю викликів</string>
+    <string name="call_stats_sort_by_count">Впорядкувати за кількістю викликів</string>
+    <string name="call_stats_title_for_number">Цей номер</string>
+    <string name="call_stats_title_of_total">Від загалу</string>
+    <string name="call_stats_title_durations">Тривалість викликів</string>
+    <string name="call_stats_title_count">Кількість викликів</string>
+    <string name="call_stats_title_average_duration">Середня тривалість виклику</string>
+    <string name="recent_calls_no_items_in_range">Журнал викликів не містить записів за вказаний період.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-vi/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-vi/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-vi/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-vi/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-vi/cm_plurals.xml
new file mode 100644
index 0000000..f7146d6
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-vi/cm_plurals.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="other">%d giờ</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="other">%d phút</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="other">%d giây</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="other">%d cuộc gọi</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-vi/cm_strings.xml b/java/com/android/dialer/callstats/res/values-vi/cm_strings.xml
new file mode 100644
index 0000000..3e73e50
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-vi/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Thống kê chi tiết liên hệ</string>
+    <string name="call_stats_incoming">Cuộc gọi đến: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Cuộc gọi đi: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Cuộc gọi bị nhỡ: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Cuộc gọi bị chặn: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Tổng cộng: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Tổng: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Ngày bắt đầu</string>
+    <string name="call_stats_filter_to">Ngày kết thúc</string>
+    <string name="call_stats_filter_picker_title">Phạm vi lọc</string>
+    <string name="date_quick_selection">Chọn nhanh</string>
+    <string name="date_qs_currentmonth">Tháng hiện tại</string>
+    <string name="date_qs_currentquarter">Quý hiện tại</string>
+    <string name="date_qs_currentyear">Năm hiện tại</string>
+    <string name="date_qs_lastweek">Tuần trước</string>
+    <string name="date_qs_lastmonth">Tháng trước</string>
+    <string name="date_qs_lastquarter">Quý trước</string>
+    <string name="date_qs_lastyear">Năm trước</string>
+    <string name="call_stats_date_filter">Điều chỉnh khoảng thời gian</string>
+    <string name="call_stats_reset_filter">Đặt lại khoảng thời gian</string>
+    <string name="call_stats_sort_by_duration">Sắp xếp theo thời lượng cuộc gọi</string>
+    <string name="call_stats_sort_by_count">Sắp xếp theo số lượng cuộc gọi</string>
+    <string name="call_stats_title_for_number">Số này</string>
+    <string name="call_stats_title_of_total">Trong tổng số</string>
+    <string name="call_stats_title_durations">Thời gian gọi</string>
+    <string name="call_stats_title_count">Số cuộc gọi</string>
+    <string name="call_stats_title_average_duration">Thời gian gọi trung bình</string>
+    <string name="recent_calls_no_items_in_range">Nhật ký cuộc gọi của bạn không chứa bất kỳ cuộc gọi nào trong khoảng thời gian đã chọn.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-zh-rCN/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-zh-rCN/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-zh-rCN/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-zh-rCN/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-zh-rCN/cm_plurals.xml
new file mode 100644
index 0000000..c954343
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-zh-rCN/cm_plurals.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="other">%d 小时</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="other">%d 分钟</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="other">%d 秒</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="other">%d 次呼叫</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-zh-rCN/cm_strings.xml b/java/com/android/dialer/callstats/res/values-zh-rCN/cm_strings.xml
new file mode 100644
index 0000000..895b498
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-zh-rCN/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">联系人统计信息</string>
+    <string name="call_stats_incoming">来电：<xliff:g id="value">%s</xliff:g> 次</string>
+    <string name="call_stats_outgoing">去电：<xliff:g id="value">%s</xliff:g> 次</string>
+    <string name="call_stats_missed">未接：<xliff:g id="value">%s</xliff:g> 次</string>
+    <string name="call_stats_blocked">拦截：<xliff:g id="value">%s</xliff:g> 次</string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">总计: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">总计：<xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">开始日期</string>
+    <string name="call_stats_filter_to">结束日期</string>
+    <string name="call_stats_filter_picker_title">范围过滤</string>
+    <string name="date_quick_selection">快速选择</string>
+    <string name="date_qs_currentmonth">本月</string>
+    <string name="date_qs_currentquarter">本季</string>
+    <string name="date_qs_currentyear">本年</string>
+    <string name="date_qs_lastweek">上周</string>
+    <string name="date_qs_lastmonth">上月</string>
+    <string name="date_qs_lastquarter">上季</string>
+    <string name="date_qs_lastyear">去年</string>
+    <string name="call_stats_date_filter">调整时间范围</string>
+    <string name="call_stats_reset_filter">重置时间范围</string>
+    <string name="call_stats_sort_by_duration">以通话时间排序</string>
+    <string name="call_stats_sort_by_count">以通话次数排序</string>
+    <string name="call_stats_title_for_number">此号码</string>
+    <string name="call_stats_title_of_total">总计</string>
+    <string name="call_stats_title_durations">通话时长</string>
+    <string name="call_stats_title_count">通话次数</string>
+    <string name="call_stats_title_average_duration">平均通话时长</string>
+    <string name="recent_calls_no_items_in_range">您所选择的时间范围内不包含任何通话记录。</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-zh-rTW/cm_arrays.xml b/java/com/android/dialer/callstats/res/values-zh-rTW/cm_arrays.xml
new file mode 100644
index 0000000..1821a12
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-zh-rTW/cm_arrays.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-zh-rTW/cm_plurals.xml b/java/com/android/dialer/callstats/res/values-zh-rTW/cm_plurals.xml
new file mode 100644
index 0000000..c6e6a33
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-zh-rTW/cm_plurals.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="other">%d 小時</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="other">%d 分</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="other">%d 秒</item>
+    </plurals>
+    <plurals name="call">
+        <item quantity="other">%d 個通話</item>
+    </plurals>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values-zh-rTW/cm_strings.xml b/java/com/android/dialer/callstats/res/values-zh-rTW/cm_strings.xml
new file mode 100644
index 0000000..fc268fb
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values-zh-rTW/cm_strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">聯絡人統計資訊</string>
+    <string name="call_stats_incoming">來電：<xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">撥出：<xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">未接：<xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">已封鎖：<xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d </xliff:g>%%</string>
+    <string name="call_stats_header_total">總計：<xliff:g id="call_count">%1$s</xliff:g>，<xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">總計：<xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">開始日期</string>
+    <string name="call_stats_filter_to">結束日期</string>
+    <string name="call_stats_filter_picker_title">篩選範圍</string>
+    <string name="date_quick_selection">快速選擇</string>
+    <string name="date_qs_currentmonth">本月</string>
+    <string name="date_qs_currentquarter">本季</string>
+    <string name="date_qs_currentyear">今年</string>
+    <string name="date_qs_lastweek">上週</string>
+    <string name="date_qs_lastmonth">上月</string>
+    <string name="date_qs_lastquarter">上季</string>
+    <string name="date_qs_lastyear">去年</string>
+    <string name="call_stats_date_filter">調整時間範圍</string>
+    <string name="call_stats_reset_filter">重設時間範圍</string>
+    <string name="call_stats_sort_by_duration">按通話時間排列</string>
+    <string name="call_stats_sort_by_count">按通話次數排列</string>
+    <string name="call_stats_title_for_number">此號碼</string>
+    <string name="call_stats_title_of_total">共</string>
+    <string name="call_stats_title_durations">通話時間</string>
+    <string name="call_stats_title_count">通話總數</string>
+    <string name="call_stats_title_average_duration">平均通話時間</string>
+    <string name="recent_calls_no_items_in_range">在所選擇的時間範圍內沒有任何通話記錄。</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values/cm_arrays.xml b/java/com/android/dialer/callstats/res/values/cm_arrays.xml
new file mode 100644
index 0000000..ee49865
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values/cm_arrays.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- 0:           sec
+         1:      min
+         2:      min  sec
+         3: hour
+         4: hour      sec
+         5: hour min
+         6: hour min  sec -->
+
+    <string-array name="call_stats_duration">
+        <item><xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g></item>
+        <item><xliff:g id="hours" example="2 hrs">%1$s</xliff:g> <xliff:g id="minutes" example="2 mins">%2$s</xliff:g> <xliff:g id="seconds" example="2 secs">%3$s</xliff:g></item>
+    </string-array>
+
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values/cm_plurals.xml b/java/com/android/dialer/callstats/res/values/cm_plurals.xml
new file mode 100644
index 0000000..536e3f8
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values/cm_plurals.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <plurals name="hour">
+        <item quantity="one">1 hr</item>
+        <item quantity="other">%d hrs</item>
+    </plurals>
+    <plurals name="minute">
+        <item quantity="one">1 min</item>
+        <item quantity="other">%d mins</item>
+    </plurals>
+    <plurals name="second">
+        <item quantity="one">1 sec</item>
+        <item quantity="other">%d secs</item>
+    </plurals>
+
+    <plurals name="call">
+        <item quantity="one">1 call</item>
+        <item quantity="other">%d calls</item>
+    </plurals>
+</resources>
+
diff --git a/java/com/android/dialer/callstats/res/values/cm_strings.xml b/java/com/android/dialer/callstats/res/values/cm_strings.xml
new file mode 100644
index 0000000..0e3fd91
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values/cm_strings.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_stats_detail_title">Contact statistics details</string>
+
+    <string name="call_stats_incoming">Incoming: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_outgoing">Outgoing: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_missed">Missed: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_blocked">Blocked: <xliff:g id="value">%s</xliff:g></string>
+    <string name="call_stats_percent"><xliff:g id="percent">%d</xliff:g>%%</string>
+    <string name="call_stats_header_total">Total: <xliff:g id="call_count">%1$s</xliff:g>, <xliff:g id="duration">%2$s</xliff:g></string>
+    <string name="call_stats_header_total_callsonly">Total: <xliff:g id="call_count">%s</xliff:g></string>
+    <string name="call_stats_filter_from">Start date</string>
+    <string name="call_stats_filter_to">End date</string>
+    <string name="call_stats_filter_picker_title">Filter range</string>
+
+    <string name="date_quick_selection">Quick selection</string>
+    <string name="date_qs_currentmonth">Current month</string>
+    <string name="date_qs_currentquarter">Current quarter</string>
+    <string name="date_qs_currentyear">Current year</string>
+    <string name="date_qs_lastweek">Last week</string>
+    <string name="date_qs_lastmonth">Last month</string>
+    <string name="date_qs_lastquarter">Last quarter</string>
+    <string name="date_qs_lastyear">Last year</string>
+
+    <string name="call_stats_date_filter">Adjust time range</string>
+    <string name="call_stats_reset_filter">Reset time range</string>
+    <string name="call_stats_sort_by_duration">Sort by call duration</string>
+    <string name="call_stats_sort_by_count">Sort by call count</string>
+
+    <string name="call_stats_title_for_number">This number</string>
+    <string name="call_stats_title_of_total">Of total</string>
+    <string name="call_stats_title_durations">Call durations</string>
+    <string name="call_stats_title_count">Call count</string>
+    <string name="call_stats_title_average_duration">Average call duration</string>
+
+    <!-- Text displayed when there are no call log entries in the selected time range. -->
+    <string name="recent_calls_no_items_in_range">Your call log does not contain any calls in the selected time range.</string>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values/colors.xml b/java/com/android/dialer/callstats/res/values/colors.xml
new file mode 100644
index 0000000..40472cf
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values/colors.xml
@@ -0,0 +1,20 @@
+<!--
+  ~ Copyright (C) 2018 The LineageOS Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+-->
+
+<resources>
+  <!-- Colors for incoming and outgoing calls in the call statistics -->
+  <color name="call_stats_bar_background">#88888888</color>
+</resources>
diff --git a/java/com/android/dialer/callstats/res/values/styles.xml b/java/com/android/dialer/callstats/res/values/styles.xml
new file mode 100644
index 0000000..8a22520
--- /dev/null
+++ b/java/com/android/dialer/callstats/res/values/styles.xml
@@ -0,0 +1,44 @@
+<!--
+  ~ Copyright (C) 2018 The LineageOS Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<resources>
+  <style name="CallStatsBarStyle">
+    <item name="android:layout_height">4dp</item>
+    <item name="android:layout_marginTop">6dp</item>
+    <item name="android:layout_marginBottom">6dp</item>
+    <item name="android:orientation">horizontal</item>
+    <item name="backgroundColor">@color/call_stats_bar_background</item>
+    <item name="blueColor">@color/answered_incoming_call</item>
+    <item name="greenColor">@color/answered_outgoing_call</item>
+    <item name="redColor">@color/missed_call</item>
+    <item name="orangeColor">@color/blocked_call</item>
+  </style>
+
+  <style name="CallStatsDetailBarStyle" parent="CallStatsBarStyle">
+    <item name="android:layout_height">6dp</item>
+    <item name="android:layout_marginTop">8dp</item>
+    <item name="android:layout_marginBottom">8dp</item>
+  </style>
+
+  <!-- equals MD3 TitleMedium style -->
+  <style name="TextAppearance.CallStatsCategoryTitle" parent="TextAppearance.AppCompat.Subhead">
+    <item name="android:textSize">16sp</item>
+    <item name="android:letterSpacing">0.009375</item>
+    <item name="android:textColor">?android:attr/textColorPrimary</item>
+    <item name="android:textStyle">bold</item>
+    <item name="android:fontFamily">sans-serif-medium</item>
+  </style>
+</resources>
diff --git a/java/com/android/dialer/clipboard/AndroidManifest.xml b/java/com/android/dialer/clipboard/AndroidManifest.xml
deleted file mode 100644
index d6da6ef..0000000
--- a/java/com/android/dialer/clipboard/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.clipboard"/>
diff --git a/java/com/android/dialer/commandline/Arguments.java b/java/com/android/dialer/commandline/Arguments.java
deleted file mode 100644
index 84ed0e4..0000000
--- a/java/com/android/dialer/commandline/Arguments.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline;
-
-import android.support.annotation.Nullable;
-import com.android.dialer.commandline.Command.IllegalCommandLineArgumentException;
-import com.google.auto.value.AutoValue;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterators;
-import com.google.common.collect.PeekingIterator;
-import com.google.common.collect.UnmodifiableIterator;
-
-/**
- * Parses command line arguments into optional flags (--foo, --key=value, --key value) and required
- * positionals (which must be passed in order). Flags must start with "--" and are always before
- * positionals. If flags are used "--" must be placed before positionals.
- *
- * <p>--flag will be interpreted as --flag=true, and --noflag as --flag=false
- *
- * <p>Grammar:<br>
- * dialer-cmd.py <cmd> <args><br>
- * <args> = (<flags> -- <positionals>) | <positionals><br>
- * <flags> = "no"?<name>(<separator><value>)?<br>
- * <separator> = " " | "="
- */
-@AutoValue
-public abstract class Arguments {
-
-  public static final Arguments EMPTY =
-      new AutoValue_Arguments(ImmutableMap.of(), ImmutableList.of());
-
-  public abstract ImmutableMap<String, String> getFlags();
-
-  public abstract ImmutableList<String> getPositionals();
-
-  /**
-   * Return the positional at {@code position}. Throw {@link IllegalCommandLineArgumentException} if
-   * it is absent and reports to the user {@code name} is expected.
-   */
-  public String expectPositional(int position, String name)
-      throws IllegalCommandLineArgumentException {
-    if (getPositionals().size() <= position) {
-      throw new IllegalCommandLineArgumentException(name + " expected");
-    }
-    return getPositionals().get(position);
-  }
-
-  public Boolean getBoolean(String flag, boolean defaultValue)
-      throws IllegalCommandLineArgumentException {
-    if (!getFlags().containsKey(flag)) {
-      return defaultValue;
-    }
-    switch (getFlags().get(flag)) {
-      case "true":
-        return true;
-      case "false":
-        return false;
-      default:
-        throw new IllegalCommandLineArgumentException("boolean value expected for " + flag);
-    }
-  }
-
-  public static Arguments parse(@Nullable String[] rawArguments)
-      throws IllegalCommandLineArgumentException {
-    if (rawArguments == null) {
-      return EMPTY;
-    }
-    return parse(Iterators.forArray(rawArguments));
-  }
-
-  public static Arguments parse(Iterable<String> rawArguments)
-      throws IllegalCommandLineArgumentException {
-    return parse(Iterators.unmodifiableIterator(rawArguments.iterator()));
-  }
-
-  public static Arguments parse(UnmodifiableIterator<String> iterator)
-      throws IllegalCommandLineArgumentException {
-    PeekingIterator<String> peekingIterator = Iterators.peekingIterator(iterator);
-    ImmutableMap<String, String> flags = parseFlags(peekingIterator);
-    ImmutableList<String> positionals = parsePositionals(peekingIterator);
-
-    return new AutoValue_Arguments(flags, positionals);
-  }
-
-  private static ImmutableMap<String, String> parseFlags(PeekingIterator<String> iterator)
-      throws IllegalCommandLineArgumentException {
-    ImmutableMap.Builder<String, String> flags = ImmutableMap.builder();
-    if (!iterator.hasNext()) {
-      return flags.build();
-    }
-    if (!iterator.peek().startsWith("--")) {
-      return flags.build();
-    }
-
-    while (iterator.hasNext()) {
-      String peek = iterator.peek();
-      if (peek.equals("--")) {
-        iterator.next();
-        return flags.build();
-      }
-      if (peek.startsWith("--")) {
-        String key = iterator.next().substring(2);
-        String value;
-        if (iterator.hasNext() && !iterator.peek().startsWith("--")) {
-          value = iterator.next();
-        } else if (key.contains("=")) {
-          String[] entry = key.split("=", 2);
-          key = entry[0];
-          value = entry[1];
-        } else if (key.startsWith("no")) {
-          key = key.substring(2);
-          value = "false";
-        } else {
-          value = "true";
-        }
-        flags.put(key, value);
-      } else {
-        throw new IllegalCommandLineArgumentException("flag or '--' expected");
-      }
-    }
-    return flags.build();
-  }
-
-  private static ImmutableList<String> parsePositionals(PeekingIterator<String> iterator) {
-    ImmutableList.Builder<String> positionals = ImmutableList.builder();
-    positionals.addAll(iterator);
-    return positionals.build();
-  }
-}
diff --git a/java/com/android/dialer/commandline/Command.java b/java/com/android/dialer/commandline/Command.java
deleted file mode 100644
index 83618a2..0000000
--- a/java/com/android/dialer/commandline/Command.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline;
-
-import android.support.annotation.NonNull;
-import com.google.common.util.concurrent.ListenableFuture;
-
-/** Handles a Command from {@link CommandLineReceiver}. */
-public interface Command {
-
-  /**
-   * Thrown when {@code args} in {@link #run(Arguments)} does not match the expected format. The
-   * commandline will print {@code message} and {@link #getUsage()}.
-   */
-  class IllegalCommandLineArgumentException extends Exception {
-    public IllegalCommandLineArgumentException(String message) {
-      super(message);
-    }
-  }
-
-  /** Describe the command when "help" is listing available commands. */
-  @NonNull
-  String getShortDescription();
-
-  /**
-   * Call when 'command --help' is called or when {@link IllegalCommandLineArgumentException} is
-   * thrown to inform the user how should the command be used.
-   */
-  @NonNull
-  String getUsage();
-
-  ListenableFuture<String> run(Arguments args) throws IllegalCommandLineArgumentException;
-}
diff --git a/java/com/android/dialer/commandline/CommandLineComponent.java b/java/com/android/dialer/commandline/CommandLineComponent.java
deleted file mode 100644
index 50a1ff2..0000000
--- a/java/com/android/dialer/commandline/CommandLineComponent.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline;
-
-import android.content.Context;
-import com.android.dialer.function.Supplier;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import com.google.common.collect.ImmutableMap;
-import dagger.Subcomponent;
-
-/** Component to get all available commands. */
-@Subcomponent
-public abstract class CommandLineComponent {
-
-  public abstract Supplier<ImmutableMap<String, Command>> commandSupplier();
-
-  public static CommandLineComponent get(Context context) {
-    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
-        .commandLineComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  @IncludeInDialerRoot
-  public interface HasComponent {
-    CommandLineComponent commandLineComponent();
-  }
-}
diff --git a/java/com/android/dialer/commandline/CommandLineModule.java b/java/com/android/dialer/commandline/CommandLineModule.java
deleted file mode 100644
index c3b58d1..0000000
--- a/java/com/android/dialer/commandline/CommandLineModule.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline;
-
-import com.android.dialer.commandline.impl.ActiveCallsCommand;
-import com.android.dialer.commandline.impl.BlockingCommand;
-import com.android.dialer.commandline.impl.CallCommand;
-import com.android.dialer.commandline.impl.Echo;
-import com.android.dialer.commandline.impl.Help;
-import com.android.dialer.commandline.impl.Version;
-import com.android.dialer.function.Supplier;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.google.common.collect.ImmutableMap;
-import dagger.Module;
-import dagger.Provides;
-import javax.inject.Inject;
-
-/** Provides {@link Command} */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public abstract class CommandLineModule {
-
-  @Provides
-  static Supplier<ImmutableMap<String, Command>> provideCommandSupplier(
-      AospCommandInjector aospCommandInjector) {
-
-    return aospCommandInjector.inject(CommandSupplier.builder()).build();
-  }
-
-  /** Injects standard commands to the builder */
-  public static class AospCommandInjector {
-    private final Help help;
-    private final Version version;
-    private final Echo echo;
-    private final BlockingCommand blockingCommand;
-    private final CallCommand callCommand;
-    private final ActiveCallsCommand activeCallsCommand;
-
-    @Inject
-    AospCommandInjector(
-        Help help,
-        Version version,
-        Echo echo,
-        BlockingCommand blockingCommand,
-        CallCommand callCommand,
-        ActiveCallsCommand activeCallsCommand) {
-      this.help = help;
-      this.version = version;
-      this.echo = echo;
-      this.blockingCommand = blockingCommand;
-      this.callCommand = callCommand;
-      this.activeCallsCommand = activeCallsCommand;
-    }
-
-    public CommandSupplier.Builder inject(CommandSupplier.Builder builder) {
-      builder.addCommand("help", help);
-      builder.addCommand("version", version);
-      builder.addCommand("echo", echo);
-      builder.addCommand("blocking", blockingCommand);
-      builder.addCommand("call", callCommand);
-      builder.addCommand("activecalls", activeCallsCommand);
-      return builder;
-    }
-  }
-}
diff --git a/java/com/android/dialer/commandline/CommandLineReceiver.java b/java/com/android/dialer/commandline/CommandLineReceiver.java
deleted file mode 100644
index effca2e..0000000
--- a/java/com/android/dialer/commandline/CommandLineReceiver.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.text.TextUtils;
-import com.android.dialer.buildtype.BuildType;
-import com.android.dialer.buildtype.BuildType.Type;
-import com.android.dialer.commandline.Command.IllegalCommandLineArgumentException;
-import com.android.dialer.common.LogUtil;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.MoreExecutors;
-
-/**
- * Receives broadcasts to the component from adb shell. Must be on bugfood or have debug logging
- * enabled.
- */
-public class CommandLineReceiver extends BroadcastReceiver {
-
-  public static final String COMMAND = "command";
-  public static final String ARGS = "args";
-  public static final String TAG = "tag";
-
-  @Override
-  public void onReceive(Context context, Intent intent) {
-    String outputTag = intent.getStringExtra(TAG);
-    if (outputTag == null) {
-      LogUtil.e("CommandLineReceiver", "missing tag");
-      return;
-    }
-    if (!LogUtil.isDebugEnabled() && BuildType.get() != Type.BUGFOOD) {
-      LogUtil.i(outputTag, "DISABLED");
-      return;
-    }
-    Command command =
-        CommandLineComponent.get(context)
-            .commandSupplier()
-            .get()
-            .get(intent.getStringExtra(COMMAND));
-    try {
-      if (command == null) {
-        LogUtil.i(outputTag, "unknown command " + intent.getStringExtra(COMMAND));
-        return;
-      }
-
-      Arguments args = Arguments.parse(intent.getStringArrayExtra(ARGS));
-
-      if (args.getBoolean("help", false)) {
-        LogUtil.i(outputTag, "usage:\n" + command.getUsage());
-        return;
-      }
-      Futures.addCallback(
-          command.run(args),
-          new FutureCallback<String>() {
-            @Override
-            public void onSuccess(String response) {
-              if (TextUtils.isEmpty(response)) {
-                LogUtil.i(outputTag, "EMPTY");
-              } else {
-                LogUtil.i(outputTag, response);
-              }
-            }
-
-            @Override
-            public void onFailure(Throwable throwable) {
-              if (throwable instanceof IllegalCommandLineArgumentException) {
-                LogUtil.e(outputTag, throwable.getMessage() + "\n\nusage:\n" + command.getUsage());
-              }
-              LogUtil.e(outputTag, "error running command future", throwable);
-            }
-          },
-          MoreExecutors.directExecutor());
-    } catch (IllegalCommandLineArgumentException e) {
-      LogUtil.e(outputTag, e.getMessage() + "\n\nusage:\n" + command.getUsage());
-    } catch (Throwable throwable) {
-      LogUtil.e(outputTag, "error running command", throwable);
-    }
-  }
-}
diff --git a/java/com/android/dialer/commandline/CommandSupplier.java b/java/com/android/dialer/commandline/CommandSupplier.java
deleted file mode 100644
index 7789258..0000000
--- a/java/com/android/dialer/commandline/CommandSupplier.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline;
-
-import com.android.dialer.function.Supplier;
-import com.google.auto.value.AutoValue;
-import com.google.common.collect.ImmutableMap;
-
-/** Supplies commands */
-@AutoValue
-public abstract class CommandSupplier implements Supplier<ImmutableMap<String, Command>> {
-
-  public static Builder builder() {
-    return new AutoValue_CommandSupplier.Builder();
-  }
-
-  public abstract ImmutableMap<String, Command> commands();
-
-  @Override
-  public ImmutableMap<String, Command> get() {
-    return commands();
-  }
-
-  /** builder for the supplier */
-  @AutoValue.Builder
-  public abstract static class Builder {
-
-    abstract ImmutableMap.Builder<String, Command> commandsBuilder();
-
-    public Builder addCommand(String key, Command command) {
-      commandsBuilder().put(key, command);
-      return this;
-    }
-
-    public abstract CommandSupplier build();
-  }
-}
diff --git a/java/com/android/dialer/commandline/impl/ActiveCallsCommand.java b/java/com/android/dialer/commandline/impl/ActiveCallsCommand.java
deleted file mode 100644
index 81641ed..0000000
--- a/java/com/android/dialer/commandline/impl/ActiveCallsCommand.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.activecalls.ActiveCallsComponent;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.android.dialer.inject.ApplicationContext;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import javax.inject.Inject;
-
-/** Manipulates {@link com.android.dialer.activecalls.ActiveCalls} */
-public class ActiveCallsCommand implements Command {
-
-  private final Context appContext;
-
-  @Inject
-  ActiveCallsCommand(@ApplicationContext Context appContext) {
-    this.appContext = appContext;
-  }
-
-  @NonNull
-  @Override
-  public String getShortDescription() {
-    return "manipulate active calls";
-  }
-
-  @NonNull
-  @Override
-  public String getUsage() {
-    return "activecalls list";
-  }
-
-  @Override
-  public ListenableFuture<String> run(Arguments args) throws IllegalCommandLineArgumentException {
-    if (args.getPositionals().isEmpty()) {
-      return Futures.immediateFuture(getUsage());
-    }
-
-    String command = args.getPositionals().get(0);
-
-    switch (command) {
-      case "list":
-        return Futures.immediateFuture(
-            ActiveCallsComponent.get(appContext).activeCalls().getActiveCalls().toString());
-      default:
-        throw new IllegalCommandLineArgumentException("unknown command " + command);
-    }
-  }
-}
diff --git a/java/com/android/dialer/commandline/impl/BlockingCommand.java b/java/com/android/dialer/commandline/impl/BlockingCommand.java
deleted file mode 100644
index d064505..0000000
--- a/java/com/android/dialer/commandline/impl/BlockingCommand.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.DialerPhoneNumber;
-import com.android.dialer.blocking.Blocking;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.phonelookup.PhoneLookupComponent;
-import com.android.dialer.phonelookup.PhoneLookupInfo;
-import com.android.dialer.phonelookup.consolidator.PhoneLookupInfoConsolidator;
-import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
-import com.google.common.collect.ImmutableList;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import javax.inject.Inject;
-
-/** Block or unblock a number. */
-public class BlockingCommand implements Command {
-
-  @NonNull
-  @Override
-  public String getShortDescription() {
-    return "block or unblock numbers";
-  }
-
-  @NonNull
-  @Override
-  public String getUsage() {
-    return "blocking block|unblock|isblocked number\n\n" + "number should be e.164 formatted";
-  }
-
-  private final Context appContext;
-  private final ListeningExecutorService executorService;
-
-  @Inject
-  BlockingCommand(
-      @ApplicationContext Context context,
-      @BackgroundExecutor ListeningExecutorService executorService) {
-    this.appContext = context;
-    this.executorService = executorService;
-  }
-
-  @Override
-  public ListenableFuture<String> run(Arguments args) throws IllegalCommandLineArgumentException {
-    if (args.getPositionals().isEmpty()) {
-      return Futures.immediateFuture(getUsage());
-    }
-
-    String command = args.getPositionals().get(0);
-
-    if ("block".equals(command)) {
-      String number = args.getPositionals().get(1);
-      return Futures.transform(
-          Blocking.block(appContext, ImmutableList.of(number), null),
-          (unused) -> "blocked " + number,
-          MoreExecutors.directExecutor());
-    }
-
-    if ("unblock".equals(command)) {
-      String number = args.getPositionals().get(1);
-      return Futures.transform(
-          Blocking.unblock(appContext, ImmutableList.of(number), null),
-          (unused) -> "unblocked " + number,
-          MoreExecutors.directExecutor());
-    }
-
-    if ("isblocked".equals(command)) {
-      String number = args.getPositionals().get(1);
-      ListenableFuture<DialerPhoneNumber> dialerPhoneNumberFuture =
-          executorService.submit(() -> new DialerPhoneNumberUtil().parse(number, null));
-
-      ListenableFuture<PhoneLookupInfo> lookupFuture =
-          Futures.transformAsync(
-              dialerPhoneNumberFuture,
-              (dialerPhoneNumber) ->
-                  PhoneLookupComponent.get(appContext)
-                      .compositePhoneLookup()
-                      .lookup(dialerPhoneNumber),
-              executorService);
-
-      return Futures.transform(
-          lookupFuture,
-          (info) -> new PhoneLookupInfoConsolidator(info).isBlocked() ? "true" : "false",
-          MoreExecutors.directExecutor());
-    }
-
-    return Futures.immediateFuture(getUsage());
-  }
-}
diff --git a/java/com/android/dialer/commandline/impl/CallCommand.java b/java/com/android/dialer/commandline/impl/CallCommand.java
deleted file mode 100644
index d0008a3..0000000
--- a/java/com/android/dialer/commandline/impl/CallCommand.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.content.Context;
-import android.content.Intent;
-import android.support.annotation.NonNull;
-import android.telecom.TelecomManager;
-import com.android.dialer.buildtype.BuildType;
-import com.android.dialer.buildtype.BuildType.Type;
-import com.android.dialer.callintent.CallInitiationType;
-import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.precall.PreCall;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import javax.inject.Inject;
-
-/** Make calls. Requires bugfood build. */
-public class CallCommand implements Command {
-
-  private final Context appContext;
-
-  @Inject
-  CallCommand(@ApplicationContext Context appContext) {
-    this.appContext = appContext;
-  }
-
-  @NonNull
-  @Override
-  public String getShortDescription() {
-    return "make a call";
-  }
-
-  @NonNull
-  @Override
-  public String getUsage() {
-    return "call [flags --] number\n"
-        + "\nuse 'voicemail' to call voicemail"
-        + "\n\nflags:"
-        + "\n--direct send intent to telecom instead of pre call";
-  }
-
-  @Override
-  @SuppressWarnings("missingPermission")
-  public ListenableFuture<String> run(Arguments args) throws IllegalCommandLineArgumentException {
-    if (BuildType.get() != Type.BUGFOOD) {
-      throw new SecurityException("Bugfood only command");
-    }
-    String number = args.expectPositional(0, "number");
-    TelecomManager telecomManager = appContext.getSystemService(TelecomManager.class);
-    CallIntentBuilder callIntentBuilder;
-    if ("voicemail".equals(number)) {
-      callIntentBuilder =
-          CallIntentBuilder.forVoicemail(CallInitiationType.Type.DIALPAD);
-    } else {
-      callIntentBuilder = new CallIntentBuilder(number, CallInitiationType.Type.DIALPAD);
-    }
-    if (args.getBoolean("direct", false)) {
-      Intent intent = callIntentBuilder.build();
-      appContext
-          .getSystemService(TelecomManager.class)
-          .placeCall(intent.getData(), intent.getExtras());
-    } else {
-      Intent intent = PreCall.getIntent(appContext, callIntentBuilder);
-      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-      appContext.startActivity(intent);
-    }
-    return Futures.immediateFuture("Calling " + number);
-  }
-}
diff --git a/java/com/android/dialer/commandline/impl/Echo.java b/java/com/android/dialer/commandline/impl/Echo.java
deleted file mode 100644
index 2741a40..0000000
--- a/java/com/android/dialer/commandline/impl/Echo.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import javax.inject.Inject;
-
-/** Print arguments. */
-public class Echo implements Command {
-
-  @NonNull
-  @Override
-  public String getShortDescription() {
-    return "@hide Print all arguments.";
-  }
-
-  @NonNull
-  @Override
-  public String getUsage() {
-    return "echo [arguments...]";
-  }
-
-  @VisibleForTesting
-  @Inject
-  public Echo() {}
-
-  @Override
-  public ListenableFuture<String> run(Arguments args) throws IllegalCommandLineArgumentException {
-    return Futures.immediateFuture(TextUtils.join(" ", args.getPositionals()));
-  }
-}
diff --git a/java/com/android/dialer/commandline/impl/Help.java b/java/com/android/dialer/commandline/impl/Help.java
deleted file mode 100644
index 357b107..0000000
--- a/java/com/android/dialer/commandline/impl/Help.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.android.dialer.commandline.CommandLineComponent;
-import com.android.dialer.inject.ApplicationContext;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.Locale;
-import java.util.Map.Entry;
-import java.util.concurrent.ExecutionException;
-import javax.inject.Inject;
-
-/** List available commands */
-public class Help implements Command {
-
-  @NonNull
-  @Override
-  public String getShortDescription() {
-    return "Print this message";
-  }
-
-  @NonNull
-  @Override
-  public String getUsage() {
-    return "help";
-  }
-
-  private final Context context;
-
-  @Inject
-  Help(@ApplicationContext Context context) {
-    this.context = context;
-  }
-
-  @Override
-  public ListenableFuture<String> run(Arguments args) throws IllegalCommandLineArgumentException {
-    boolean showHidden = args.getFlags().containsKey("showHidden");
-
-    StringBuilder stringBuilder = new StringBuilder();
-    ImmutableMap<String, Command> commands =
-        CommandLineComponent.get(context).commandSupplier().get();
-    stringBuilder
-        .append(runOrThrow(commands.get("version")))
-        .append("\n")
-        .append("\n")
-        .append("usage: <command> [args...]\n")
-        .append("\n")
-        .append("<command>\n");
-
-    for (Entry<String, Command> entry : commands.entrySet()) {
-      String description = entry.getValue().getShortDescription();
-      if (!showHidden && description.startsWith("@hide ")) {
-        continue;
-      }
-      stringBuilder.append(String.format(Locale.US, "  %20s  %s\n", entry.getKey(), description));
-    }
-
-    return Futures.immediateFuture(stringBuilder.toString());
-  }
-
-  private static String runOrThrow(Command command) throws IllegalCommandLineArgumentException {
-    try {
-      return command.run(Arguments.EMPTY).get();
-    } catch (InterruptedException e) {
-      Thread.interrupted();
-      throw new RuntimeException(e);
-    } catch (ExecutionException e) {
-      throw new RuntimeException(e);
-    }
-  }
-}
diff --git a/java/com/android/dialer/commandline/impl/Version.java b/java/com/android/dialer/commandline/impl/Version.java
deleted file mode 100644
index 70476ea..0000000
--- a/java/com/android/dialer/commandline/impl/Version.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.commandline.impl;
-
-import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.support.annotation.NonNull;
-import com.android.dialer.commandline.Arguments;
-import com.android.dialer.commandline.Command;
-import com.android.dialer.inject.ApplicationContext;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.Locale;
-import javax.inject.Inject;
-
-/** Print the version name and code. */
-public class Version implements Command {
-
-  @NonNull
-  @Override
-  public String getShortDescription() {
-    return "Print dialer version";
-  }
-
-  @NonNull
-  @Override
-  public String getUsage() {
-    return "version";
-  }
-
-  private final Context appContext;
-
-  @Inject
-  Version(@ApplicationContext Context context) {
-    this.appContext = context;
-  }
-
-  @Override
-  public ListenableFuture<String> run(Arguments args) throws IllegalCommandLineArgumentException {
-    try {
-      PackageInfo info =
-          appContext.getPackageManager().getPackageInfo(appContext.getPackageName(), 0);
-      return Futures.immediateFuture(
-          String.format(Locale.US, "%s(%d)", info.versionName, info.versionCode));
-    } catch (NameNotFoundException e) {
-      throw new RuntimeException(e);
-    }
-  }
-}
diff --git a/java/com/android/dialer/common/AndroidManifest.xml b/java/com/android/dialer/common/AndroidManifest.xml
deleted file mode 100644
index 8892b58..0000000
--- a/java/com/android/dialer/common/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest
-  package="com.android.dialer.common">
-</manifest>
diff --git a/java/com/android/dialer/common/Assert.java b/java/com/android/dialer/common/Assert.java
index 2d7f199..5c3f385 100644
--- a/java/com/android/dialer/common/Assert.java
+++ b/java/com/android/dialer/common/Assert.java
@@ -17,19 +17,15 @@
 package com.android.dialer.common;
 
 import android.os.Looper;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import javax.annotation.CheckReturnValue;
 
 /** Assertions which will result in program termination unless disabled by flags. */
 public class Assert {
 
-  private static boolean areThreadAssertsEnabled = true;
-
-  public static void setAreThreadAssertsEnabled(boolean areThreadAssertsEnabled) {
-    Assert.areThreadAssertsEnabled = areThreadAssertsEnabled;
-  }
-
   /**
    * Called when a truly exceptional case occurs.
    *
@@ -102,7 +98,7 @@
    * @throws IllegalArgumentException if {@code expression} is false
    */
   public static void checkArgument(
-      boolean expression, @Nullable String messageTemplate, Object... args) {
+          boolean expression, @Nullable String messageTemplate, Object... args) {
     if (!expression) {
       throw new IllegalArgumentException(format(messageTemplate, args));
     }
@@ -182,9 +178,6 @@
    * @throws IllegalStateException if called on a background thread
    */
   public static void isMainThread(@Nullable String messageTemplate, Object... args) {
-    if (!areThreadAssertsEnabled) {
-      return;
-    }
     checkState(Looper.getMainLooper().equals(Looper.myLooper()), messageTemplate, args);
   }
 
@@ -205,9 +198,6 @@
    * @throws IllegalStateException if called on the main thread
    */
   public static void isWorkerThread(@Nullable String messageTemplate, Object... args) {
-    if (!areThreadAssertsEnabled) {
-      return;
-    }
     checkState(!Looper.getMainLooper().equals(Looper.myLooper()), messageTemplate, args);
   }
 
diff --git a/java/com/android/dialer/common/FragmentUtils.java b/java/com/android/dialer/common/FragmentUtils.java
index aa4441e..df1e475 100644
--- a/java/com/android/dialer/common/FragmentUtils.java
+++ b/java/com/android/dialer/common/FragmentUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,23 +17,16 @@
 
 package com.android.dialer.common;
 
-import android.support.annotation.CheckResult;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.Fragment;
+import androidx.annotation.CheckResult;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.android.dialer.main.MainActivityPeer;
 
 /** Utility methods for working with Fragments */
 public class FragmentUtils {
 
-  private static Object parentForTesting;
-
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public static void setParentForTesting(Object parentForTesting) {
-    FragmentUtils.parentForTesting = parentForTesting;
-  }
-
   /**
    * Returns an instance of the {@code callbackInterface} that is defined in the parent of the
    * {@code fragment}, or null if no such call back can be found.
@@ -40,12 +34,6 @@
   @CheckResult(suggest = "#checkParent(Fragment, Class)}")
   @Nullable
   public static <T> T getParent(@NonNull Fragment fragment, @NonNull Class<T> callbackInterface) {
-    if (callbackInterface.isInstance(parentForTesting)) {
-      @SuppressWarnings("unchecked") // Casts are checked using runtime methods
-      T parent = (T) parentForTesting;
-      return parent;
-    }
-
     Fragment parentFragment = fragment.getParentFragment();
     if (callbackInterface.isInstance(parentFragment)) {
       @SuppressWarnings("unchecked") // Casts are checked using runtime methods
@@ -68,42 +56,6 @@
     return null;
   }
 
-  /**
-   * Returns an instance of the {@code callbackInterface} that is defined in the parent of the
-   * {@code fragment}, or null if no such call back can be found.
-   */
-  @CheckResult(suggest = "#checkParent(Fragment, Class)}")
-  @Nullable
-  public static <T> T getParent(
-      @NonNull android.app.Fragment fragment, @NonNull Class<T> callbackInterface) {
-    if (callbackInterface.isInstance(parentForTesting)) {
-      @SuppressWarnings("unchecked") // Casts are checked using runtime methods
-      T parent = (T) parentForTesting;
-      return parent;
-    }
-
-    android.app.Fragment parentFragment = fragment.getParentFragment();
-    if (callbackInterface.isInstance(parentFragment)) {
-      @SuppressWarnings("unchecked") // Casts are checked using runtime methods
-      T parent = (T) parentFragment;
-      return parent;
-    } else if (callbackInterface.isInstance(fragment.getActivity())) {
-      @SuppressWarnings("unchecked") // Casts are checked using runtime methods
-      T parent = (T) fragment.getActivity();
-      return parent;
-    } else if (fragment.getActivity() instanceof FragmentUtilListener) {
-      @SuppressWarnings("unchecked") // Casts are checked using runtime methods
-      T parent = ((FragmentUtilListener) fragment.getActivity()).getImpl(callbackInterface);
-      return parent;
-    } else if (fragment.getActivity() instanceof MainActivityPeer.PeerSupplier) {
-      MainActivityPeer peer = ((MainActivityPeer.PeerSupplier) fragment.getActivity()).getPeer();
-      if (peer instanceof FragmentUtilListener) {
-        return ((FragmentUtilListener) peer).getImpl(callbackInterface);
-      }
-    }
-    return null;
-  }
-
   /** Returns the parent or throws. Should perform check elsewhere(e.g. onAttach, newInstance). */
   @NonNull
   public static <T> T getParentUnsafe(
@@ -112,16 +64,6 @@
   }
 
   /**
-   * Version of {@link #getParentUnsafe(Fragment, Class)} which supports {@link
-   * android.app.Fragment}.
-   */
-  @NonNull
-  public static <T> T getParentUnsafe(
-      @NonNull android.app.Fragment fragment, @NonNull Class<T> callbackInterface) {
-    return Assert.isNotNull(getParent(fragment, callbackInterface));
-  }
-
-  /**
    * Ensures fragment has a parent that implements the corresponding interface
    *
    * @param frag The Fragment whose parents are to be checked
@@ -130,9 +72,6 @@
    */
   public static void checkParent(@NonNull Fragment frag, @NonNull Class<?> callbackInterface)
       throws IllegalStateException {
-    if (parentForTesting != null) {
-      return;
-    }
     if (FragmentUtils.getParent(frag, callbackInterface) == null) {
       String parent =
           frag.getParentFragment() == null
diff --git a/java/com/android/dialer/common/LogUtil.java b/java/com/android/dialer/common/LogUtil.java
index 126ebf2..92dfe24 100644
--- a/java/com/android/dialer/common/LogUtil.java
+++ b/java/com/android/dialer/common/LogUtil.java
@@ -16,11 +16,12 @@
 
 package com.android.dialer.common;
 
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 /** Provides logging functions. */
 public class LogUtil {
 
diff --git a/java/com/android/dialer/common/NetworkUtil.java b/java/com/android/dialer/common/NetworkUtil.java
deleted file mode 100644
index 47d8424..0000000
--- a/java/com/android/dialer/common/NetworkUtil.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.common;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresPermission;
-import android.support.annotation.StringDef;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.Objects;
-
-/** Utility class for dealing with network */
-public class NetworkUtil {
-
-  /* Returns the current network type. */
-  @RequiresPermission("android.permission.ACCESS_NETWORK_STATE")
-  @NetworkType
-  public static String getCurrentNetworkType(@Nullable Context context) {
-    if (context == null) {
-      return NetworkType.NONE;
-    }
-    ConnectivityManager connectivityManager =
-        (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
-    return getNetworkType(connectivityManager.getActiveNetworkInfo());
-  }
-
-  /* Returns the current network info. */
-  @Nullable
-  @RequiresPermission("android.permission.ACCESS_NETWORK_STATE")
-  public static NetworkInfo getCurrentNetworkInfo(@Nullable Context context) {
-    if (context == null) {
-      return null;
-    }
-    ConnectivityManager connectivityManager =
-        (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
-    return connectivityManager.getActiveNetworkInfo();
-  }
-
-  /**
-   * Returns the current network type as a string. For mobile network types the subtype name of the
-   * network is appended.
-   */
-  @RequiresPermission("android.permission.ACCESS_NETWORK_STATE")
-  public static String getCurrentNetworkTypeName(@Nullable Context context) {
-    if (context == null) {
-      return NetworkType.NONE;
-    }
-    ConnectivityManager connectivityManager =
-        (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
-    NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo();
-    @NetworkType String networkType = getNetworkType(netInfo);
-    if (isNetworkTypeMobile(networkType)) {
-      return networkType + " (" + netInfo.getSubtypeName() + ")";
-    }
-    return networkType;
-  }
-
-  @NetworkType
-  public static String getNetworkType(@Nullable NetworkInfo netInfo) {
-    if (netInfo == null || !netInfo.isConnected()) {
-      return NetworkType.NONE;
-    }
-    switch (netInfo.getType()) {
-      case ConnectivityManager.TYPE_WIFI:
-        return NetworkType.WIFI;
-      case ConnectivityManager.TYPE_MOBILE:
-        return getMobileNetworkType(netInfo.getSubtype());
-      default:
-        return NetworkType.UNKNOWN;
-    }
-  }
-
-  public static boolean isNetworkTypeMobile(@NetworkType String networkType) {
-    return Objects.equals(networkType, NetworkType.MOBILE_2G)
-        || Objects.equals(networkType, NetworkType.MOBILE_3G)
-        || Objects.equals(networkType, NetworkType.MOBILE_4G);
-  }
-
-  @RequiresPermission("android.permission.ACCESS_NETWORK_STATE")
-  public static String getCurrentNetworkName(Context context) {
-    @NetworkType String networkType = getCurrentNetworkType(context);
-    switch (networkType) {
-      case NetworkType.WIFI:
-        return getWifiNetworkName(context);
-      case NetworkType.MOBILE_2G:
-      case NetworkType.MOBILE_3G:
-      case NetworkType.MOBILE_4G:
-      case NetworkType.MOBILE_UNKNOWN:
-        return getMobileNetworkName(context);
-      default:
-        return "";
-    }
-  }
-
-  private static String getWifiNetworkName(Context context) {
-    WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
-    String name = null;
-    if (context.checkSelfPermission("android.permission.ACCESS_WIFI_STATE")
-        == PackageManager.PERMISSION_GRANTED) {
-      //noinspection MissingPermission
-      WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
-      if (wifiInfo == null) {
-        return "";
-      }
-      name = wifiInfo.getSSID();
-    }
-    return TextUtils.isEmpty(name)
-        ? context.getString(R.string.network_name_wifi)
-        : name.replaceAll("\"", "");
-  }
-
-  private static String getMobileNetworkName(Context context) {
-    TelephonyManager telephonyMgr =
-        (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
-    String name = telephonyMgr.getNetworkOperatorName();
-    return TextUtils.isEmpty(name)
-        ? context.getString(R.string.network_name_mobile)
-        : name.replaceAll("\"", "");
-  }
-
-  @NetworkType
-  private static String getMobileNetworkType(int networkSubtype) {
-    switch (networkSubtype) {
-      case TelephonyManager.NETWORK_TYPE_1xRTT:
-      case TelephonyManager.NETWORK_TYPE_CDMA:
-      case TelephonyManager.NETWORK_TYPE_EDGE:
-      case TelephonyManager.NETWORK_TYPE_GPRS:
-      case TelephonyManager.NETWORK_TYPE_IDEN:
-        return NetworkType.MOBILE_2G;
-      case TelephonyManager.NETWORK_TYPE_EHRPD:
-      case TelephonyManager.NETWORK_TYPE_EVDO_0:
-      case TelephonyManager.NETWORK_TYPE_EVDO_A:
-      case TelephonyManager.NETWORK_TYPE_EVDO_B:
-      case TelephonyManager.NETWORK_TYPE_HSDPA:
-      case TelephonyManager.NETWORK_TYPE_HSPA:
-      case TelephonyManager.NETWORK_TYPE_HSPAP:
-      case TelephonyManager.NETWORK_TYPE_HSUPA:
-      case TelephonyManager.NETWORK_TYPE_UMTS:
-        return NetworkType.MOBILE_3G;
-      case TelephonyManager.NETWORK_TYPE_LTE:
-        return NetworkType.MOBILE_4G;
-      default:
-        return NetworkType.MOBILE_UNKNOWN;
-    }
-  }
-
-  /** Network types. */
-  @Retention(RetentionPolicy.SOURCE)
-  @StringDef(
-    value = {
-      NetworkType.NONE,
-      NetworkType.WIFI,
-      NetworkType.MOBILE_2G,
-      NetworkType.MOBILE_3G,
-      NetworkType.MOBILE_4G,
-      NetworkType.MOBILE_UNKNOWN,
-      NetworkType.UNKNOWN
-    }
-  )
-  public @interface NetworkType {
-
-    String NONE = "NONE";
-    String WIFI = "WIFI";
-    String MOBILE_2G = "MOBILE_2G";
-    String MOBILE_3G = "MOBILE_3G";
-    String MOBILE_4G = "MOBILE_4G";
-    String MOBILE_UNKNOWN = "MOBILE_UNKNOWN";
-    String UNKNOWN = "UNKNOWN";
-  }
-}
diff --git a/java/com/android/dialer/common/PackageUtils.java b/java/com/android/dialer/common/PackageUtils.java
index ccef38f..fe32d36 100644
--- a/java/com/android/dialer/common/PackageUtils.java
+++ b/java/com/android/dialer/common/PackageUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,7 +20,8 @@
 import android.content.Context;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
 
 /** Utility class for package management. */
 public class PackageUtils {
@@ -28,8 +30,9 @@
     Assert.isNotNull(packageName);
     Assert.isNotNull(context);
     try {
-      PackageInfo info = context.getPackageManager().getPackageInfo(packageName, 0);
-      if (info != null && info.packageName != null) {
+      PackageInfo info = context.getPackageManager().getPackageInfo(packageName,
+              PackageManager.PackageInfoFlags.of(0));
+      if (info.packageName != null) {
         LogUtil.d("PackageUtils.isPackageInstalled", packageName + " is found");
         return true;
       }
diff --git a/java/com/android/dialer/common/PerAccountSharedPreferences.java b/java/com/android/dialer/common/PerAccountSharedPreferences.java
index 0ed1b03..a04a33b 100644
--- a/java/com/android/dialer/common/PerAccountSharedPreferences.java
+++ b/java/com/android/dialer/common/PerAccountSharedPreferences.java
@@ -17,8 +17,10 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.Nullable;
+
 import java.util.Set;
 
 /**
diff --git a/java/com/android/dialer/common/backoff/ExponentialBackoff.java b/java/com/android/dialer/common/backoff/ExponentialBackoff.java
deleted file mode 100644
index 67727d8..0000000
--- a/java/com/android/dialer/common/backoff/ExponentialBackoff.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.common.backoff;
-
-import com.android.dialer.common.Assert;
-
-/**
- * Given an initial backoff delay, D, a base multiplier, B, and a total number of backoffs, N, this
- * class returns values in the exponential sequence, D, D*B, D*B^2, ... D*B^(N-1), ...
- *
- * <p>Example usage:
- *
- * <pre>
- *   long initialDelayMillis = 1000;
- *   double multiplier = 1.2;
- *   int backoffs = 10;
- *   ExponentialBackoff backoff = new ExponentialBackoff(initialDelayMillis, multiplier, backoffs);
- *   while (backoff.isInRange()) {
- *     ...
- *     sleep(backoff.getNextBackoff());
- *   }
- * </pre>
- *
- * <p>Note: the base multiplier can be calculated using {@code ExponentialBaseCalculator}
- */
-public final class ExponentialBackoff {
-  public final long initialDelayMillis;
-  public final double baseMultiplier;
-  public final int maximumBackoffs;
-  private double nextBackoff;
-  private int backoffCount;
-
-  /**
-   * Setup an exponential backoff with an initial delay, a base multiplier and a maximum number of
-   * backoff steps.
-   *
-   * @throws IllegalArgumentException for negative argument values
-   */
-  public ExponentialBackoff(long initialDelayMillis, double baseMultiplier, int maximumBackoffs) {
-    Assert.checkArgument(initialDelayMillis > 0);
-    Assert.checkArgument(baseMultiplier > 0);
-    Assert.checkArgument(maximumBackoffs > 0);
-    this.initialDelayMillis = initialDelayMillis;
-    this.baseMultiplier = baseMultiplier;
-    this.maximumBackoffs = maximumBackoffs;
-    reset();
-  }
-
-  /**
-   * @return the next backoff time in the exponential sequence. Specifically, if D is the initial
-   *     delay, B is the base multiplier and N is the total number of backoffs, then the return
-   *     values will be: D, D*B, D*B^2, ... D*B^(N-1), ...
-   */
-  public long getNextBackoff() {
-    long backoff = Math.round(nextBackoff);
-    backoffCount++;
-    nextBackoff *= baseMultiplier;
-    return backoff;
-  }
-
-  /** @return the number of times getNextBackoff() has been called */
-  public int getBackoffCount() {
-    return backoffCount;
-  }
-
-  /**
-   * @return {@code true} if getNextBackoff() has been called less than the maximumBackoffs value
-   *     specified in the constructor.
-   */
-  public boolean isInRange() {
-    return backoffCount < maximumBackoffs;
-  }
-
-  /**
-   * Reset the sequence of backoff values so the next call to getNextBackoff() will return the
-   * initial delay and getBackoffCount() will return 0
-   */
-  public void reset() {
-    nextBackoff = initialDelayMillis;
-    backoffCount = 0;
-  }
-}
diff --git a/java/com/android/dialer/common/backoff/ExponentialBaseCalculator.java b/java/com/android/dialer/common/backoff/ExponentialBaseCalculator.java
deleted file mode 100644
index a1ae8a0..0000000
--- a/java/com/android/dialer/common/backoff/ExponentialBaseCalculator.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.common.backoff;
-
-import com.android.dialer.common.Assert;
-
-/**
- * Given an initial delay, D, a maximum total backoff time, T, and a maximum number of backoffs, N,
- * this class calculates a base multiplier, b, and a scaling factor, g, such that the initial
- * backoff is g*b = D and the sum of the scaled backoffs is T = g*b + g*b^2 + g*b^3 + ... g*b^N
- *
- * <p>T/D = (1 - b^N)/(1 - b) but this cannot be written as a simple equation for b in terms of T, N
- * and D so instead use Newton's method (https://en.wikipedia.org/wiki/Newton%27s_method) to find an
- * approximate value for b.
- *
- * <p>Example usage using the {@code ExponentialBackoff} would be:
- *
- * <pre>
- *   // Retry with exponential backoff for up to 2 minutes, with an initial delay of 100 millis
- *   // and a maximum of 10 retries
- *   long initialDelayMillis = 100;
- *   int maxTries = 10;
- *   double base = ExponentialBaseCalculator.findBase(
- *       initialDelayMillis,
- *       TimeUnit.MINUTES.toMillis(2),
- *       maxTries);
- *   ExponentialBackoff backoff = new ExponentialBackoff(initialDelayMillis, base, maxTries);
- *   while (backoff.isInRange()) {
- *     ...
- *     long delay = backoff.getNextBackoff();
- *     // Wait for the indicated time...
- *   }
- * </pre>
- */
-public final class ExponentialBaseCalculator {
-  private static final int MAX_STEPS = 1000;
-  private static final double DEFAULT_TOLERANCE_MILLIS = 1;
-
-  /**
-   * Calculate an exponential backoff base multiplier such that the first backoff delay will be as
-   * specified and the sum of the delays after doing the indicated maximum number of backoffs will
-   * be as specified.
-   *
-   * @throws IllegalArgumentException if the initial delay is greater than the total backoff time
-   * @throws IllegalArgumentException if the maximum number of backoffs is not greater than 1
-   * @throws IllegalStateException if it fails to find an acceptable base multiplier
-   */
-  public static double findBase(
-      long initialDelayMillis, long totalBackoffTimeMillis, int maximumBackoffs) {
-    Assert.checkArgument(initialDelayMillis < totalBackoffTimeMillis);
-    Assert.checkArgument(maximumBackoffs > 1);
-    long scaledTotalTime = Math.round(((double) totalBackoffTimeMillis) / initialDelayMillis);
-    double scaledTolerance = DEFAULT_TOLERANCE_MILLIS / initialDelayMillis;
-    return getBaseImpl(scaledTotalTime, maximumBackoffs, scaledTolerance);
-  }
-
-  /**
-   * T/D = (1 - b^N)/(1 - b) but this cannot be written as a simple equation for b in terms of T, D
-   * and N so instead we use Newtons method to find an approximate value for b.
-   *
-   * <p>Let f(b) = (1 - b^N)/(1 - b) - T/D then we want to find b* such that f(b*) = 0, or more
-   * precisely |f(b*)| < tolerance
-   *
-   * <p>Using Newton's method we can interatively find b* as follows: b1 = b0 - f(b0)/f'(b0), where
-   * b0 is the current best guess for b* and b1 is the next best guess.
-   *
-   * <p>f'(b) = (f(b) + T/D - N*b^(N - 1))/(1 - b)
-   *
-   * <p>so
-   *
-   * <p>b1 = b0 - f(b0)(1 - b0)/(f(b0) + T/D - N*b0^(N - 1))
-   */
-  private static double getBaseImpl(long t, int n, double tolerance) {
-    double b0 = 2; // Initial guess for b*
-    double b0n = Math.pow(b0, n);
-    double fb0 = f(b0, t, b0n);
-    if (Math.abs(fb0) < tolerance) {
-      // Initial guess was pretty good
-      return b0;
-    }
-
-    for (int i = 0; i < MAX_STEPS; i++) {
-      double fpb0 = fp(b0, t, n, fb0, b0n);
-      double b1 = b0 - fb0 / fpb0;
-      double b1n = Math.pow(b1, n);
-      double fb1 = f(b1, t, b1n);
-
-      if (Math.abs(fb1) < tolerance) {
-        // Found an acceptable value
-        return b1;
-      }
-
-      b0 = b1;
-      b0n = b1n;
-      fb0 = fb1;
-    }
-
-    throw new IllegalStateException("Failed to find base. Too many iterations.");
-  }
-
-  // Evaluate f(b), the function we are trying to find the zero for.
-  // Note: passing b^N as a parameter so it only has to be calculated once
-  private static double f(double b, long t, double bn) {
-    return (1 - bn) / (1 - b) - t;
-  }
-
-  // Evaluate f'(b), the derivative of the function we are trying to find the zero for.
-  // Note: passing f(b) and b^N as parameters for efficiency
-  private static double fp(double b, long t, int n, double fb, double bn) {
-    return (fb + t - n * bn / b) / (1 - b);
-  }
-}
diff --git a/java/com/android/dialer/common/concurrent/AsyncTaskExecutor.java b/java/com/android/dialer/common/concurrent/AsyncTaskExecutor.java
index 3bdcd03..32ff8b5 100644
--- a/java/com/android/dialer/common/concurrent/AsyncTaskExecutor.java
+++ b/java/com/android/dialer/common/concurrent/AsyncTaskExecutor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,12 +17,12 @@
 
 package com.android.dialer.common.concurrent;
 
-import android.os.AsyncTask;
-import android.support.annotation.MainThread;
+import androidx.annotation.MainThread;
+
 import java.util.concurrent.Executor;
 
 /**
- * Interface used to submit {@link AsyncTask} objects to run in the background.
+ * Interface used to submit objects to run in the background.
  *
  * <p>This interface has a direct parallel with the {@link Executor} interface. It exists to
  * decouple the mechanics of AsyncTask submission from the description of how that AsyncTask will
@@ -37,15 +38,9 @@
  */
 public interface AsyncTaskExecutor {
 
-  /**
-   * Executes the given AsyncTask with the default Executor.
-   *
-   * <p>This method <b>must only be called from the ui thread</b>.
-   *
-   * <p>The identifier supplied is any Object that can be used to identify the task later. Most
-   * commonly this will be an enum which the tests can also refer to. {@code null} is also accepted,
-   * though of course this won't help in identifying the task later.
-   */
   @MainThread
-  <T> AsyncTask<T, ?, ?> submit(Object identifier, AsyncTask<T, ?, ?> task, T... params);
+  void submit(Object identifier, Runnable runnable);
+
+  @MainThread
+  void submit(Object identifier, Runnable runnable, Runnable postExecuteRunnable);
 }
diff --git a/java/com/android/dialer/common/concurrent/AsyncTaskExecutors.java b/java/com/android/dialer/common/concurrent/AsyncTaskExecutors.java
index 5beae4d..ed4faa0 100644
--- a/java/com/android/dialer/common/concurrent/AsyncTaskExecutors.java
+++ b/java/com/android/dialer/common/concurrent/AsyncTaskExecutors.java
@@ -17,34 +17,25 @@
 package com.android.dialer.common.concurrent;
 
 import android.os.AsyncTask;
-import android.support.annotation.MainThread;
+import android.os.Handler;
+import android.os.Looper;
+
+import androidx.annotation.MainThread;
+
 import com.android.dialer.common.Assert;
+
 import java.util.concurrent.Executor;
 
 /**
  * Factory methods for creating AsyncTaskExecutors.
- *
- * <p>All of the factory methods on this class check first to see if you have set a static {@link
- * AsyncTaskExecutorFactory} set through the {@link #setFactoryForTest(AsyncTaskExecutorFactory)}
- * method, and if so delegate to that instead, which is one way of injecting dependencies for
- * testing classes whose construction cannot be controlled such as {@link android.app.Activity}.
  */
 public final class AsyncTaskExecutors {
 
   /**
-   * A single instance of the {@link AsyncTaskExecutorFactory}, to which we delegate if it is
-   * non-null, for injecting when testing.
-   */
-  private static AsyncTaskExecutorFactory injectedAsyncTaskExecutorFactory = null;
-
-  /**
    * Creates an AsyncTaskExecutor that submits tasks to run with {@link AsyncTask#SERIAL_EXECUTOR}.
    */
   public static AsyncTaskExecutor createAsyncTaskExecutor() {
     synchronized (AsyncTaskExecutors.class) {
-      if (injectedAsyncTaskExecutorFactory != null) {
-        return injectedAsyncTaskExecutorFactory.createAsyncTaskExeuctor();
-      }
       return new SimpleAsyncTaskExecutor(AsyncTask.SERIAL_EXECUTOR);
     }
   }
@@ -55,38 +46,32 @@
    */
   public static AsyncTaskExecutor createThreadPoolExecutor() {
     synchronized (AsyncTaskExecutors.class) {
-      if (injectedAsyncTaskExecutorFactory != null) {
-        return injectedAsyncTaskExecutorFactory.createAsyncTaskExeuctor();
-      }
       return new SimpleAsyncTaskExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
     }
   }
 
-  public static void setFactoryForTest(AsyncTaskExecutorFactory factory) {
-    synchronized (AsyncTaskExecutors.class) {
-      injectedAsyncTaskExecutorFactory = factory;
-    }
-  }
-
-  /** Interface for creating AsyncTaskExecutor objects. */
-  public interface AsyncTaskExecutorFactory {
-
-    AsyncTaskExecutor createAsyncTaskExeuctor();
-  }
-
   static class SimpleAsyncTaskExecutor implements AsyncTaskExecutor {
 
     private final Executor executor;
+    private final Handler handler;
 
     public SimpleAsyncTaskExecutor(Executor executor) {
       this.executor = executor;
+      this.handler = new Handler(Looper.getMainLooper());
     }
 
     @Override
     @MainThread
-    public <T> AsyncTask<T, ?, ?> submit(Object identifer, AsyncTask<T, ?, ?> task, T... params) {
+    public void submit(Object identifer, Runnable runnable) {
       Assert.isMainThread();
-      return task.executeOnExecutor(executor, params);
+      executor.execute(runnable);
+    }
+
+    @Override
+    public void submit(Object identifier, Runnable runnable, Runnable postExecuteRunnable) {
+      Assert.isMainThread();
+      executor.execute(runnable);
+      handler.post(postExecuteRunnable);
     }
   }
 }
diff --git a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
index 317807b..dcb4dca 100644
--- a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
+++ b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,9 +17,10 @@
 
 package com.android.dialer.common.concurrent;
 
-import android.app.FragmentManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentManager;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.NonUiParallel;
@@ -29,11 +31,13 @@
 import com.android.dialer.common.concurrent.DialerExecutor.FailureListener;
 import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+
 import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
+
 import javax.inject.Inject;
 
 /** The production {@link DialerExecutorFactory}. */
@@ -85,7 +89,8 @@
         throwable -> {
           throw new RuntimeException(throwable);
         };
-    @Nullable final ScheduledExecutorService serialExecutorService;
+    @Nullable
+    final ScheduledExecutorService serialExecutorService;
     @Nullable final Executor parallelExecutor;
 
     BaseTaskBuilder(
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutor.java b/java/com/android/dialer/common/concurrent/DialerExecutor.java
index 3ee0644..bd08ccc 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutor.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,11 @@
 
 package com.android.dialer.common.concurrent;
 
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import java.util.concurrent.ExecutorService;
 
 /**
@@ -52,7 +54,7 @@
  *
  * <pre><code>
  *
- * public class MyActivity extends Activity {
+ * public class MyActivity extends AppCompatActivity {
  *
  *   private final DialerExecutor&lt;MyInputType&gt; myExecutor;
  *
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutorComponent.java b/java/com/android/dialer/common/concurrent/DialerExecutorComponent.java
index 6a22174..97e7b26 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutorComponent.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutorComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,10 @@
 
 package com.android.dialer.common.concurrent;
 
-import android.app.FragmentManager;
 import android.content.Context;
+
+import androidx.fragment.app.FragmentManager;
+
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.common.concurrent.Annotations.LightweightExecutor;
 import com.android.dialer.common.concurrent.Annotations.NonUiParallel;
@@ -25,9 +28,11 @@
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.inject.IncludeInDialerRoot;
 import com.google.common.util.concurrent.ListeningExecutorService;
-import dagger.Subcomponent;
+
 import java.util.concurrent.ExecutorService;
 
+import dagger.Subcomponent;
+
 /** Dagger component which provides a {@link DialerExecutorFactory}. */
 @Subcomponent
 public abstract class DialerExecutorComponent {
@@ -46,17 +51,12 @@
   @LightweightExecutor
   public abstract ListeningExecutorService lightweightExecutor();
 
-  public <OutputT> UiListener<OutputT> createUiListener(
-      FragmentManager fragmentManager, String taskId) {
-    return UiListener.create(fragmentManager, taskId);
-  }
-
   /**
    * Version of {@link #createUiListener(FragmentManager, String)} that accepts support fragment
    * manager.
    */
   public <OutputT> SupportUiListener<OutputT> createUiListener(
-      android.support.v4.app.FragmentManager fragmentManager, String taskId) {
+          FragmentManager fragmentManager, String taskId) {
     return SupportUiListener.create(fragmentManager, taskId);
   }
 
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java b/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java
index 82f8c7c..7ff8862 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutorFactory.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,9 @@
 
 package com.android.dialer.common.concurrent;
 
-import android.app.FragmentManager;
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
+import androidx.fragment.app.FragmentManager;
+
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 
 /**
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutorModule.java b/java/com/android/dialer/common/concurrent/DialerExecutorModule.java
index 98738ed..7503407 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutorModule.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutorModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
 package com.android.dialer.common.concurrent;
 
 import android.os.AsyncTask;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.common.concurrent.Annotations.LightweightExecutor;
@@ -26,15 +28,17 @@
 import com.android.dialer.common.concurrent.Annotations.UiSerial;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
-import dagger.Binds;
-import dagger.Module;
-import dagger.Provides;
+
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
+
 import javax.inject.Singleton;
 
+import dagger.Binds;
+import dagger.Module;
+import dagger.Provides;
+
 /** Module which provides concurrency bindings. */
 @Module
 public abstract class DialerExecutorModule {
@@ -56,16 +60,13 @@
   static ExecutorService provideNonUiThreadPool() {
     return Executors.newFixedThreadPool(
         5,
-        new ThreadFactory() {
-          @Override
-          public Thread newThread(Runnable runnable) {
-            LogUtil.i("DialerExecutorModule.newThread", "creating low priority thread");
-            Thread thread = new Thread(runnable, "DialerExecutors-LowPriority");
-            // Java thread priority 4 corresponds to Process.THREAD_PRIORITY_BACKGROUND (10)
-            thread.setPriority(4);
-            return thread;
-          }
-        });
+            runnable -> {
+              LogUtil.i("DialerExecutorModule.newThread", "creating low priority thread");
+              Thread thread = new Thread(runnable, "DialerExecutors-LowPriority");
+              // Java thread priority 4 corresponds to Process.THREAD_PRIORITY_BACKGROUND (10)
+              thread.setPriority(4);
+              return thread;
+            });
   }
 
   @Provides
@@ -73,16 +74,13 @@
   @NonUiSerial
   static ScheduledExecutorService provideNonUiSerialExecutorService() {
     return Executors.newSingleThreadScheduledExecutor(
-        new ThreadFactory() {
-          @Override
-          public Thread newThread(Runnable runnable) {
-            LogUtil.i("NonUiTaskBuilder.newThread", "creating serial thread");
-            Thread thread = new Thread(runnable, "DialerExecutors-LowPriority-Serial");
-            // Java thread priority 4 corresponds to Process.THREAD_PRIORITY_BACKGROUND (10)
-            thread.setPriority(4);
-            return thread;
-          }
-        });
+            runnable -> {
+              LogUtil.i("NonUiTaskBuilder.newThread", "creating serial thread");
+              Thread thread = new Thread(runnable, "DialerExecutors-LowPriority-Serial");
+              // Java thread priority 4 corresponds to Process.THREAD_PRIORITY_BACKGROUND (10)
+              thread.setPriority(4);
+              return thread;
+            });
   }
 
   @Provides
@@ -96,16 +94,13 @@
   @UiSerial
   static ScheduledExecutorService provideUiSerialExecutorService() {
     return Executors.newSingleThreadScheduledExecutor(
-        new ThreadFactory() {
-          @Override
-          public Thread newThread(Runnable runnable) {
-            LogUtil.i("DialerExecutorModule.newThread", "creating serial thread");
-            Thread thread = new Thread(runnable, "DialerExecutors-HighPriority-Serial");
-            // Java thread priority 5 corresponds to Process.THREAD_PRIORITY_DEFAULT (0)
-            thread.setPriority(5);
-            return thread;
-          }
-        });
+            runnable -> {
+              LogUtil.i("DialerExecutorModule.newThread", "creating serial thread");
+              Thread thread = new Thread(runnable, "DialerExecutors-HighPriority-Serial");
+              // Java thread priority 5 corresponds to Process.THREAD_PRIORITY_DEFAULT (0)
+              thread.setPriority(5);
+              return thread;
+            });
   }
 
   @Provides
diff --git a/java/com/android/dialer/common/concurrent/DialerExecutors.java b/java/com/android/dialer/common/concurrent/DialerExecutors.java
index b29bf5d..b9ed480 100644
--- a/java/com/android/dialer/common/concurrent/DialerExecutors.java
+++ b/java/com/android/dialer/common/concurrent/DialerExecutors.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,8 +18,11 @@
 package com.android.dialer.common.concurrent;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
+
 import java.util.concurrent.ExecutorService;
 
 /** Shared application executors. */
diff --git a/java/com/android/dialer/common/concurrent/DialerFutureSerializer.java b/java/com/android/dialer/common/concurrent/DialerFutureSerializer.java
index 2629abb..ef36ae6 100644
--- a/java/com/android/dialer/common/concurrent/DialerFutureSerializer.java
+++ b/java/com/android/dialer/common/concurrent/DialerFutureSerializer.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -24,6 +25,7 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+
 import java.util.concurrent.Callable;
 import java.util.concurrent.Executor;
 import java.util.concurrent.atomic.AtomicBoolean;
diff --git a/java/com/android/dialer/common/concurrent/DialerFutures.java b/java/com/android/dialer/common/concurrent/DialerFutures.java
index ac88e6a..45d2106 100644
--- a/java/com/android/dialer/common/concurrent/DialerFutures.java
+++ b/java/com/android/dialer/common/concurrent/DialerFutures.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +24,7 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
@@ -57,34 +59,31 @@
     final AtomicInteger pending = new AtomicInteger(output.futures.size());
     for (final ListenableFuture<? extends T> future : output.futures) {
       future.addListener(
-          new Runnable() {
-            @Override
-            public void run() {
-              // Call get() and then set() instead of getAndSet() because a volatile read/write is
-              // cheaper than a CAS and atomicity is guaranteed by setFuture.
-              AggregateFuture<T> output = ref.get();
-              if (output != null) {
-                T value = null;
-                try {
-                  value = Futures.getDone(future);
-                } catch (ExecutionException e) {
-                  ref.set(null); // unpin
-                  output.setException(e);
-                  return;
-                }
-                if (!predicate.apply(value)) {
-                  if (pending.decrementAndGet() == 0) {
-                    // we are the last future (and every other future hasn't matched or failed).
-                    output.set(defaultValue);
-                    // no point in clearing the ref, every other listener has already run
+              () -> {
+                // Call get() and then set() instead of getAndSet() because a volatile read/write is
+                // cheaper than a CAS and atomicity is guaranteed by setFuture.
+                AggregateFuture<T> output1 = ref.get();
+                if (output1 != null) {
+                  T value = null;
+                  try {
+                    value = Futures.getDone(future);
+                  } catch (ExecutionException e) {
+                    ref.set(null); // unpin
+                    output1.setException(e);
+                    return;
                   }
-                } else {
-                  ref.set(null); // unpin
-                  output.set(value);
+                  if (!predicate.apply(value)) {
+                    if (pending.decrementAndGet() == 0) {
+                      // we are the last future (and every other future hasn't matched or failed).
+                      output1.set(defaultValue);
+                      // no point in clearing the ref, every other listener has already run
+                    }
+                  } else {
+                    ref.set(null); // unpin
+                    output1.set(value);
+                  }
                 }
-              }
-            }
-          },
+              },
           MoreExecutors.directExecutor());
     }
     return output;
diff --git a/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java b/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java
index f0b7537..4148306 100644
--- a/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java
+++ b/java/com/android/dialer/common/concurrent/DialerUiTaskFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,18 +17,21 @@
 
 package com.android.dialer.common.concurrent;
 
-import android.app.Fragment;
-import android.app.FragmentManager;
 import android.os.Bundle;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.FailureListener;
 import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+
 import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ScheduledExecutorService;
diff --git a/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java b/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java
deleted file mode 100644
index c7a7f36..0000000
--- a/java/com/android/dialer/common/concurrent/FallibleAsyncTask.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.common.concurrent;
-
-import android.os.AsyncTask;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.concurrent.FallibleAsyncTask.FallibleTaskResult;
-import com.google.auto.value.AutoValue;
-
-/**
- * A task that runs work in the background, passing Throwables from {@link
- * #doInBackground(Object[])} to {@link #onPostExecute(Object)} through a {@link
- * FallibleTaskResult}.
- *
- * @param <ParamsT> the type of the parameters sent to the task upon execution
- * @param <ProgressT> the type of the progress units published during the background computation
- * @param <ResultT> the type of the result of the background computation
- * @deprecated Please use {@link DialerExecutors}.
- */
-@Deprecated
-public abstract class FallibleAsyncTask<ParamsT, ProgressT, ResultT>
-    extends AsyncTask<ParamsT, ProgressT, FallibleTaskResult<ResultT>> {
-
-  @Override
-  protected final FallibleTaskResult<ResultT> doInBackground(ParamsT... params) {
-    try {
-      return FallibleTaskResult.createSuccessResult(doInBackgroundFallible(params));
-    } catch (Throwable t) {
-      return FallibleTaskResult.createFailureResult(t);
-    }
-  }
-
-  /** Performs background work that may result in a Throwable. */
-  @Nullable
-  protected abstract ResultT doInBackgroundFallible(ParamsT... params) throws Throwable;
-
-  /**
-   * Holds the result of processing from {@link #doInBackground(Object[])}.
-   *
-   * @param <ResultT> the type of the result of the background computation
-   */
-  @AutoValue
-  public abstract static class FallibleTaskResult<ResultT> {
-
-    /** Creates an instance of FallibleTaskResult for the given throwable. */
-    private static <ResultT> FallibleTaskResult<ResultT> createFailureResult(@NonNull Throwable t) {
-      return new AutoValue_FallibleAsyncTask_FallibleTaskResult<>(t, null);
-    }
-
-    /** Creates an instance of FallibleTaskResult for the given result. */
-    private static <ResultT> FallibleTaskResult<ResultT> createSuccessResult(
-        @Nullable ResultT result) {
-      return new AutoValue_FallibleAsyncTask_FallibleTaskResult<>(null, result);
-    }
-
-    /**
-     * Returns the Throwable thrown in {@link #doInBackground(Object[])}, or {@code null} if
-     * background work completed without throwing.
-     */
-    @Nullable
-    public abstract Throwable getThrowable();
-
-    /**
-     * Returns the result of {@link #doInBackground(Object[])}, which may be {@code null}, or {@code
-     * null} if the background work threw a Throwable.
-     *
-     * <p>Use {@link #isFailure()} to determine if a {@code null} return is the result of a
-     * Throwable from the background work.
-     */
-    @Nullable
-    public abstract ResultT getResult();
-
-    /**
-     * Returns {@code true} if this object is the result of background work that threw a Throwable.
-     */
-    public boolean isFailure() {
-      //noinspection ThrowableResultOfMethodCallIgnored
-      return getThrowable() != null;
-    }
-  }
-}
diff --git a/java/com/android/dialer/common/concurrent/SupportUiListener.java b/java/com/android/dialer/common/concurrent/SupportUiListener.java
index 5e39586..08ceeac 100644
--- a/java/com/android/dialer/common/concurrent/SupportUiListener.java
+++ b/java/com/android/dialer/common/concurrent/SupportUiListener.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,11 +19,13 @@
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.FailureListener;
@@ -65,7 +68,7 @@
 
   @MainThread
   static <OutputT> SupportUiListener<OutputT> create(
-      FragmentManager fragmentManager, String taskId) {
+          FragmentManager fragmentManager, String taskId) {
     @SuppressWarnings("unchecked")
     SupportUiListener<OutputT> uiListener =
         (SupportUiListener<OutputT>) fragmentManager.findFragmentByTag(taskId);
diff --git a/java/com/android/dialer/common/concurrent/UiListener.java b/java/com/android/dialer/common/concurrent/UiListener.java
index a2d976f..78aa370 100644
--- a/java/com/android/dialer/common/concurrent/UiListener.java
+++ b/java/com/android/dialer/common/concurrent/UiListener.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,13 +17,15 @@
 
 package com.android.dialer.common.concurrent;
 
-import android.app.Fragment;
-import android.app.FragmentManager;
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.FailureListener;
@@ -38,7 +41,7 @@
  * <p>Callbacks are only executed if the UI component is still alive.
  *
  * <p>Example usage: <code><pre>
- * public class MyActivity extends Activity {
+ * public class MyActivity extends AppCompatActivity {
  *
  *   private UiListener&lt;MyOutputType&gt uiListener;
  *
diff --git a/java/com/android/dialer/common/concurrent/UiThreadExecutor.java b/java/com/android/dialer/common/concurrent/UiThreadExecutor.java
index 8378d69..b112dbc 100644
--- a/java/com/android/dialer/common/concurrent/UiThreadExecutor.java
+++ b/java/com/android/dialer/common/concurrent/UiThreadExecutor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,9 +19,11 @@
 import com.google.common.util.concurrent.AbstractListeningExecutorService;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
+
 import java.util.List;
 import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
+
 import javax.inject.Inject;
 
 /**
diff --git a/java/com/android/dialer/common/database/Selection.java b/java/com/android/dialer/common/database/Selection.java
index e449fd9..a4af033 100644
--- a/java/com/android/dialer/common/database/Selection.java
+++ b/java/com/android/dialer/common/database/Selection.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,13 @@
 
 package com.android.dialer.common.database;
 
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -109,7 +113,6 @@
    *     enclosed in a parenthesis.
    */
   @NonNull
-  @SuppressWarnings("rawtypes")
   public static Selection fromString(@Nullable String selection, @Nullable String... args) {
     return new Builder(selection, args == null ? Collections.emptyList() : Arrays.asList(args))
         .build();
@@ -202,7 +205,7 @@
       }
       return new Selection(
           parenthesized(selection.toString()),
-          selectionArgs.toArray(new String[selectionArgs.size()]));
+          selectionArgs.toArray(new String[0]));
     }
 
     @NonNull
diff --git a/java/com/android/dialer/common/preference/AndroidManifest.xml b/java/com/android/dialer/common/preference/AndroidManifest.xml
deleted file mode 100644
index 3e80622..0000000
--- a/java/com/android/dialer/common/preference/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest
-  package="com.android.dialer.common.preference">
-</manifest>
diff --git a/java/com/android/dialer/common/preference/SwitchPreferenceWithClickableSummary.java b/java/com/android/dialer/common/preference/SwitchPreferenceWithClickableSummary.java
deleted file mode 100644
index 7b3564d..0000000
--- a/java/com/android/dialer/common/preference/SwitchPreferenceWithClickableSummary.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.common.preference;
-
-import static android.support.v4.content.ContextCompat.startActivity;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.TypedArray;
-import android.net.Uri;
-import android.preference.SwitchPreference;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import com.android.dialer.common.Assert;
-
-/**
- * Utility to allow the summary of a {@link SwitchPreference} to be clicked and opened via a browser
- * to the specified {@link urlToOpen} attribute while maintaining all other aspects of a {@link
- * SwitchPreference}.
- *
- * <p>Example usage:
- *
- * <pre>
- *   <com.android.dialer.common.preference.SwitchPreferenceWithClickableSummary
- *          android:dependency="...."
- *          android:key="...."
- *          android:title="...."
- *          app:urlToOpen="...."/>
- * </pre>
- */
-public class SwitchPreferenceWithClickableSummary extends SwitchPreference {
-  private final String urlToOpen;
-
-  public SwitchPreferenceWithClickableSummary(
-      Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-    super(context, attrs, defStyleAttr, defStyleRes);
-    TypedArray typedArray =
-        context.obtainStyledAttributes(attrs, R.styleable.SwitchPreferenceWithClickableSummary);
-    urlToOpen =
-        String.valueOf(
-            typedArray.getText(R.styleable.SwitchPreferenceWithClickableSummary_urlToOpen));
-  }
-
-  public SwitchPreferenceWithClickableSummary(
-      Context context, AttributeSet attrs, int defStyleAttr) {
-    super(context, attrs, defStyleAttr, defStyleAttr);
-    TypedArray typedArray =
-        context.obtainStyledAttributes(attrs, R.styleable.SwitchPreferenceWithClickableSummary);
-    urlToOpen =
-        String.valueOf(
-            typedArray.getText(R.styleable.SwitchPreferenceWithClickableSummary_urlToOpen));
-  }
-
-  public SwitchPreferenceWithClickableSummary(Context context, AttributeSet attrs) {
-    super(context, attrs);
-    TypedArray typedArray =
-        context.obtainStyledAttributes(attrs, R.styleable.SwitchPreferenceWithClickableSummary);
-    urlToOpen =
-        String.valueOf(
-            typedArray.getText(R.styleable.SwitchPreferenceWithClickableSummary_urlToOpen));
-  }
-
-  public SwitchPreferenceWithClickableSummary(Context context) {
-    this(context, null);
-  }
-
-  @Override
-  protected View onCreateView(ViewGroup parent) {
-    return super.onCreateView(parent);
-  }
-
-  @Override
-  protected void onBindView(View view) {
-    super.onBindView(view);
-    Assert.checkArgument(
-        urlToOpen != null,
-        "must have a urlToOpen attribute when using SwitchPreferenceWithClickableSummary");
-    view.findViewById(android.R.id.summary)
-        .setOnClickListener(
-            new OnClickListener() {
-              @Override
-              public void onClick(View v) {
-                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlToOpen));
-                startActivity(view.getContext(), intent, null);
-              }
-            });
-  }
-}
diff --git a/java/com/android/dialer/common/preference/res/values/attrs.xml b/java/com/android/dialer/common/preference/res/values/attrs.xml
deleted file mode 100644
index c1d1de0..0000000
--- a/java/com/android/dialer/common/preference/res/values/attrs.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <declare-styleable name="SwitchPreferenceWithClickableSummary">
-    <attr name="urlToOpen" format="string"/>
-  </declare-styleable>
-</resources>
-
diff --git a/java/com/android/dialer/common/res/values-af/strings.xml b/java/com/android/dialer/common/res/values-af/strings.xml
index f960d61..0b5059d 100644
--- a/java/com/android/dialer/common/res/values-af/strings.xml
+++ b/java/com/android/dialer/common/res/values-af/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobiel</string>
   <string name="content_description_overflow">Nog opsies</string>
   <string name="snackbar_undo">ONTDOEN</string>
   <string name="ok_got_it">OK, het dit</string>
diff --git a/java/com/android/dialer/common/res/values-am/strings.xml b/java/com/android/dialer/common/res/values-am/strings.xml
index 225ba8d..20e9d37 100644
--- a/java/com/android/dialer/common/res/values-am/strings.xml
+++ b/java/com/android/dialer/common/res/values-am/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">ዋይፋይ</string>
-  <string name="network_name_mobile">ሞባይል</string>
   <string name="content_description_overflow">ተጨማሪ አማራጮች</string>
   <string name="snackbar_undo">ቀልብስ</string>
   <string name="ok_got_it">እሺ፣ ገብቶኛል</string>
diff --git a/java/com/android/dialer/common/res/values-ar/strings.xml b/java/com/android/dialer/common/res/values-ar/strings.xml
index f5f32c3..0f97578 100644
--- a/java/com/android/dialer/common/res/values-ar/strings.xml
+++ b/java/com/android/dialer/common/res/values-ar/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">الجوّال</string>
   <string name="content_description_overflow">خيارات أكثر</string>
   <string name="snackbar_undo">تراجع</string>
   <string name="ok_got_it">موافق، حسنًا</string>
diff --git a/java/com/android/dialer/common/res/values-az/strings.xml b/java/com/android/dialer/common/res/values-az/strings.xml
index 2400f9c..bafbf80 100644
--- a/java/com/android/dialer/common/res/values-az/strings.xml
+++ b/java/com/android/dialer/common/res/values-az/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">Mobil</string>
   <string name="content_description_overflow">Əlavə seçimlər</string>
   <string name="snackbar_undo">LƏĞV EDİN</string>
   <string name="ok_got_it">Ok, anladım</string>
diff --git a/java/com/android/dialer/common/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/common/res/values-b+sr+Latn/strings.xml
index 938c4ce..68c0120 100644
--- a/java/com/android/dialer/common/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/common/res/values-b+sr+Latn/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobilni uređaji</string>
   <string name="content_description_overflow">Još opcija</string>
   <string name="snackbar_undo">OPOZOVI</string>
   <string name="ok_got_it">Važi</string>
diff --git a/java/com/android/dialer/common/res/values-be/strings.xml b/java/com/android/dialer/common/res/values-be/strings.xml
index 6b3cf3b..78286da 100644
--- a/java/com/android/dialer/common/res/values-be/strings.xml
+++ b/java/com/android/dialer/common/res/values-be/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Мабільны тэлефон</string>
   <string name="content_description_overflow">Дадатковыя параметры</string>
   <string name="snackbar_undo">АДРАБІЦЬ</string>
   <string name="ok_got_it">Добра, зразумела</string>
diff --git a/java/com/android/dialer/common/res/values-bg/strings.xml b/java/com/android/dialer/common/res/values-bg/strings.xml
index bcdaa4b..f880af3 100644
--- a/java/com/android/dialer/common/res/values-bg/strings.xml
+++ b/java/com/android/dialer/common/res/values-bg/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Мобилна</string>
   <string name="content_description_overflow">Още опции</string>
   <string name="snackbar_undo">ОТМЯНА</string>
   <string name="ok_got_it">Добре, разбрах</string>
diff --git a/java/com/android/dialer/common/res/values-bn/strings.xml b/java/com/android/dialer/common/res/values-bn/strings.xml
index 6fc46fb..ee17eb7 100644
--- a/java/com/android/dialer/common/res/values-bn/strings.xml
+++ b/java/com/android/dialer/common/res/values-bn/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">ওয়াই ফাই</string>
-  <string name="network_name_mobile">মোবাইল</string>
   <string name="content_description_overflow">আরও বিকল্প</string>
   <string name="snackbar_undo">পূর্বাবস্থায় ফিরুন</string>
   <string name="ok_got_it">ঠিক আছে, বুঝেছি</string>
diff --git a/java/com/android/dialer/common/res/values-bs/strings.xml b/java/com/android/dialer/common/res/values-bs/strings.xml
index 63a6366..5525f7e 100644
--- a/java/com/android/dialer/common/res/values-bs/strings.xml
+++ b/java/com/android/dialer/common/res/values-bs/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">Mobilni</string>
   <string name="content_description_overflow">Više opcija</string>
   <string name="snackbar_undo">OPOZOVI</string>
   <string name="ok_got_it">Uredu, razumijem</string>
diff --git a/java/com/android/dialer/common/res/values-ca/strings.xml b/java/com/android/dialer/common/res/values-ca/strings.xml
index de2dc85..9650c35 100644
--- a/java/com/android/dialer/common/res/values-ca/strings.xml
+++ b/java/com/android/dialer/common/res/values-ca/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mòbil</string>
   <string name="content_description_overflow">Més opcions</string>
   <string name="snackbar_undo">DESFÉS</string>
   <string name="ok_got_it">D\'acord</string>
diff --git a/java/com/android/dialer/common/res/values-cs/strings.xml b/java/com/android/dialer/common/res/values-cs/strings.xml
index 68babdd..cbb4ed8 100644
--- a/java/com/android/dialer/common/res/values-cs/strings.xml
+++ b/java/com/android/dialer/common/res/values-cs/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobilní</string>
   <string name="content_description_overflow">Další možnosti</string>
   <string name="snackbar_undo">VRÁTIT</string>
   <string name="ok_got_it">OK, rozumím</string>
diff --git a/java/com/android/dialer/common/res/values-da/strings.xml b/java/com/android/dialer/common/res/values-da/strings.xml
index 324205c..96cb91e 100644
--- a/java/com/android/dialer/common/res/values-da/strings.xml
+++ b/java/com/android/dialer/common/res/values-da/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobil</string>
   <string name="content_description_overflow">Flere valgmuligheder</string>
   <string name="snackbar_undo">FORTRYD</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-de/strings.xml b/java/com/android/dialer/common/res/values-de/strings.xml
index 748ca2e..a57127d 100644
--- a/java/com/android/dialer/common/res/values-de/strings.xml
+++ b/java/com/android/dialer/common/res/values-de/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">WLAN</string>
-  <string name="network_name_mobile">Mobil</string>
   <string name="content_description_overflow">Weitere Optionen</string>
   <string name="snackbar_undo">RÜCKGÄNGIG</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-el/strings.xml b/java/com/android/dialer/common/res/values-el/strings.xml
index 2f29684..c1640ae 100644
--- a/java/com/android/dialer/common/res/values-el/strings.xml
+++ b/java/com/android/dialer/common/res/values-el/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">Κινητής τηλεφωνίας</string>
   <string name="content_description_overflow">Περισσότερες επιλογές</string>
   <string name="snackbar_undo">ΑΝΑΙΡΕΣΗ</string>
   <string name="ok_got_it">OK, το κατάλαβα.</string>
diff --git a/java/com/android/dialer/common/res/values-en-rAU/strings.xml b/java/com/android/dialer/common/res/values-en-rAU/strings.xml
index b4c9fd1..50ba320 100644
--- a/java/com/android/dialer/common/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/common/res/values-en-rAU/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobile</string>
   <string name="content_description_overflow">More options</string>
   <string name="snackbar_undo">UNDO</string>
   <string name="ok_got_it">OK, got it</string>
diff --git a/java/com/android/dialer/common/res/values-en-rGB/strings.xml b/java/com/android/dialer/common/res/values-en-rGB/strings.xml
index b4c9fd1..50ba320 100644
--- a/java/com/android/dialer/common/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/common/res/values-en-rGB/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobile</string>
   <string name="content_description_overflow">More options</string>
   <string name="snackbar_undo">UNDO</string>
   <string name="ok_got_it">OK, got it</string>
diff --git a/java/com/android/dialer/common/res/values-en-rIN/strings.xml b/java/com/android/dialer/common/res/values-en-rIN/strings.xml
index b4c9fd1..50ba320 100644
--- a/java/com/android/dialer/common/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/common/res/values-en-rIN/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobile</string>
   <string name="content_description_overflow">More options</string>
   <string name="snackbar_undo">UNDO</string>
   <string name="ok_got_it">OK, got it</string>
diff --git a/java/com/android/dialer/common/res/values-es-rUS/strings.xml b/java/com/android/dialer/common/res/values-es-rUS/strings.xml
index b7a3af5..1a6fba8 100644
--- a/java/com/android/dialer/common/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/common/res/values-es-rUS/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Celular</string>
   <string name="content_description_overflow">Más opciones</string>
   <string name="snackbar_undo">DESHACER</string>
   <string name="ok_got_it">Entendido</string>
diff --git a/java/com/android/dialer/common/res/values-es/strings.xml b/java/com/android/dialer/common/res/values-es/strings.xml
index 1240cb7..1a6fba8 100644
--- a/java/com/android/dialer/common/res/values-es/strings.xml
+++ b/java/com/android/dialer/common/res/values-es/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Móvil</string>
   <string name="content_description_overflow">Más opciones</string>
   <string name="snackbar_undo">DESHACER</string>
   <string name="ok_got_it">Entendido</string>
diff --git a/java/com/android/dialer/common/res/values-et/strings.xml b/java/com/android/dialer/common/res/values-et/strings.xml
index 7d6f24b..410777b 100644
--- a/java/com/android/dialer/common/res/values-et/strings.xml
+++ b/java/com/android/dialer/common/res/values-et/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">WiFi</string>
-  <string name="network_name_mobile">Mobiil</string>
   <string name="content_description_overflow">Rohkem valikuid</string>
   <string name="snackbar_undo">VÕTA TAG.</string>
   <string name="ok_got_it">OK, selge</string>
diff --git a/java/com/android/dialer/common/res/values-eu/strings.xml b/java/com/android/dialer/common/res/values-eu/strings.xml
index 018165b..b0cc140 100644
--- a/java/com/android/dialer/common/res/values-eu/strings.xml
+++ b/java/com/android/dialer/common/res/values-eu/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mugikorra</string>
   <string name="content_description_overflow">Aukera gehiago</string>
   <string name="snackbar_undo">DESEGIN</string>
   <string name="ok_got_it">Ados</string>
diff --git a/java/com/android/dialer/common/res/values-fa/strings.xml b/java/com/android/dialer/common/res/values-fa/strings.xml
index 27fe4fc..1d0a537 100644
--- a/java/com/android/dialer/common/res/values-fa/strings.xml
+++ b/java/com/android/dialer/common/res/values-fa/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">دستگاه همراه</string>
   <string name="content_description_overflow">گزینه‌های بیشتر</string>
   <string name="snackbar_undo">واگرد</string>
   <string name="ok_got_it">بله، متوجه شدم</string>
diff --git a/java/com/android/dialer/common/res/values-fi/strings.xml b/java/com/android/dialer/common/res/values-fi/strings.xml
index 550434b..76a7de8 100644
--- a/java/com/android/dialer/common/res/values-fi/strings.xml
+++ b/java/com/android/dialer/common/res/values-fi/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi‑Fi</string>
-  <string name="network_name_mobile">Mobiililaite</string>
   <string name="content_description_overflow">Lisäasetukset</string>
   <string name="snackbar_undo">KUMOA</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-fr-rCA/strings.xml b/java/com/android/dialer/common/res/values-fr-rCA/strings.xml
index 9aa08e3..dea3e7a 100644
--- a/java/com/android/dialer/common/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/common/res/values-fr-rCA/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Appareil mobile</string>
   <string name="content_description_overflow">Plus d\'options</string>
   <string name="snackbar_undo">ANNULER</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-fr/strings.xml b/java/com/android/dialer/common/res/values-fr/strings.xml
index a9bc43e..dea3e7a 100644
--- a/java/com/android/dialer/common/res/values-fr/strings.xml
+++ b/java/com/android/dialer/common/res/values-fr/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobile</string>
   <string name="content_description_overflow">Plus d\'options</string>
   <string name="snackbar_undo">ANNULER</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-gl/strings.xml b/java/com/android/dialer/common/res/values-gl/strings.xml
index 5293611..b891366 100644
--- a/java/com/android/dialer/common/res/values-gl/strings.xml
+++ b/java/com/android/dialer/common/res/values-gl/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">Móbil</string>
   <string name="content_description_overflow">Máis opcións</string>
   <string name="snackbar_undo">DESFACER</string>
   <string name="ok_got_it">Entendido</string>
diff --git a/java/com/android/dialer/common/res/values-gu/strings.xml b/java/com/android/dialer/common/res/values-gu/strings.xml
index 3a123da..bf512fd 100644
--- a/java/com/android/dialer/common/res/values-gu/strings.xml
+++ b/java/com/android/dialer/common/res/values-gu/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">મોબાઇલ</string>
   <string name="content_description_overflow">વધુ વિકલ્પો</string>
   <string name="snackbar_undo">રદ કરો</string>
   <string name="ok_got_it">બરાબર, સમજાઈ ગયું</string>
diff --git a/java/com/android/dialer/common/res/values-hi/strings.xml b/java/com/android/dialer/common/res/values-hi/strings.xml
index a7bb578..b203607 100644
--- a/java/com/android/dialer/common/res/values-hi/strings.xml
+++ b/java/com/android/dialer/common/res/values-hi/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">वाई-फ़ाई</string>
-  <string name="network_name_mobile">मोबाइल</string>
   <string name="content_description_overflow">ज़्यादा विकल्प</string>
   <string name="snackbar_undo">पहले जैसा</string>
   <string name="ok_got_it">ठीक है</string>
diff --git a/java/com/android/dialer/common/res/values-hr/strings.xml b/java/com/android/dialer/common/res/values-hr/strings.xml
index 5ee64f5..f5a7582 100644
--- a/java/com/android/dialer/common/res/values-hr/strings.xml
+++ b/java/com/android/dialer/common/res/values-hr/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobilni</string>
   <string name="content_description_overflow">Više opcija</string>
   <string name="snackbar_undo">PONIŠTI</string>
   <string name="ok_got_it">U redu, shvaćam</string>
diff --git a/java/com/android/dialer/common/res/values-hu/strings.xml b/java/com/android/dialer/common/res/values-hu/strings.xml
index 1b44e68..72e2338 100644
--- a/java/com/android/dialer/common/res/values-hu/strings.xml
+++ b/java/com/android/dialer/common/res/values-hu/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobil</string>
   <string name="content_description_overflow">További opciók</string>
   <string name="snackbar_undo">VISSZAVON.</string>
   <string name="ok_got_it">Rendben, értem</string>
diff --git a/java/com/android/dialer/common/res/values-hy/strings.xml b/java/com/android/dialer/common/res/values-hy/strings.xml
index 2faa7de..9acb587 100644
--- a/java/com/android/dialer/common/res/values-hy/strings.xml
+++ b/java/com/android/dialer/common/res/values-hy/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">Բջջային</string>
   <string name="content_description_overflow">Այլ ընտրանքներ</string>
   <string name="snackbar_undo">ՀԵՏԱՐԿԵԼ</string>
   <string name="ok_got_it">Պարզ է</string>
diff --git a/java/com/android/dialer/common/res/values-in/strings.xml b/java/com/android/dialer/common/res/values-in/strings.xml
index 4c5aa65..15082c6 100644
--- a/java/com/android/dialer/common/res/values-in/strings.xml
+++ b/java/com/android/dialer/common/res/values-in/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Ponsel</string>
   <string name="content_description_overflow">Opsi lain</string>
   <string name="snackbar_undo">URUNGKAN</string>
   <string name="ok_got_it">Oke, paham</string>
diff --git a/java/com/android/dialer/common/res/values-is/strings.xml b/java/com/android/dialer/common/res/values-is/strings.xml
index 12987fe..e6f0588 100644
--- a/java/com/android/dialer/common/res/values-is/strings.xml
+++ b/java/com/android/dialer/common/res/values-is/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">WiFi</string>
-  <string name="network_name_mobile">Farsími</string>
   <string name="content_description_overflow">Fleiri valkostir</string>
   <string name="snackbar_undo">AFTURKALLA</string>
   <string name="ok_got_it">Ég skil</string>
diff --git a/java/com/android/dialer/common/res/values-it/strings.xml b/java/com/android/dialer/common/res/values-it/strings.xml
index aa16fb0..8c5ce71 100644
--- a/java/com/android/dialer/common/res/values-it/strings.xml
+++ b/java/com/android/dialer/common/res/values-it/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Cellulare</string>
   <string name="content_description_overflow">Altre opzioni</string>
   <string name="snackbar_undo">ANNULLA</string>
   <string name="ok_got_it">Ok</string>
diff --git a/java/com/android/dialer/common/res/values-iw/strings.xml b/java/com/android/dialer/common/res/values-iw/strings.xml
index 6a3d5c6..295249d 100644
--- a/java/com/android/dialer/common/res/values-iw/strings.xml
+++ b/java/com/android/dialer/common/res/values-iw/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">נייד</string>
   <string name="content_description_overflow">אפשרויות נוספות</string>
   <string name="snackbar_undo">ביטול</string>
   <string name="ok_got_it">הבנתי</string>
diff --git a/java/com/android/dialer/common/res/values-ja/strings.xml b/java/com/android/dialer/common/res/values-ja/strings.xml
index e6cd11a..33a45f7 100644
--- a/java/com/android/dialer/common/res/values-ja/strings.xml
+++ b/java/com/android/dialer/common/res/values-ja/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">モバイル</string>
   <string name="content_description_overflow">その他のオプション</string>
   <string name="snackbar_undo">元に戻す</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-ka/strings.xml b/java/com/android/dialer/common/res/values-ka/strings.xml
index 9e2221f..18e35b7 100644
--- a/java/com/android/dialer/common/res/values-ka/strings.xml
+++ b/java/com/android/dialer/common/res/values-ka/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">მობილური</string>
   <string name="content_description_overflow">სხვა ვარიანტები</string>
   <string name="snackbar_undo">მოქმედების გაუქმება</string>
   <string name="ok_got_it">კარგი, გასაგებია</string>
diff --git a/java/com/android/dialer/common/res/values-kk/strings.xml b/java/com/android/dialer/common/res/values-kk/strings.xml
index 86523fd..eb8ed46 100644
--- a/java/com/android/dialer/common/res/values-kk/strings.xml
+++ b/java/com/android/dialer/common/res/values-kk/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">Ұялы телефон</string>
   <string name="content_description_overflow">Қосымша опциялар</string>
   <string name="snackbar_undo">ҚАЙТАРУ</string>
   <string name="ok_got_it">Жарайды, түсіндім</string>
diff --git a/java/com/android/dialer/common/res/values-km/strings.xml b/java/com/android/dialer/common/res/values-km/strings.xml
index 87b36b6..6da8807 100644
--- a/java/com/android/dialer/common/res/values-km/strings.xml
+++ b/java/com/android/dialer/common/res/values-km/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">វ៉ាយហ្វាយ</string>
-  <string name="network_name_mobile">ចល័ត</string>
   <string name="content_description_overflow">ជម្រើស​ច្រើនទៀត</string>
   <string name="snackbar_undo">ត្រឡប់​វិញ</string>
   <string name="ok_got_it">យល់ព្រម យល់ហើយ</string>
diff --git a/java/com/android/dialer/common/res/values-kn/strings.xml b/java/com/android/dialer/common/res/values-kn/strings.xml
index 9659619..6d63186 100644
--- a/java/com/android/dialer/common/res/values-kn/strings.xml
+++ b/java/com/android/dialer/common/res/values-kn/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">ವೈಫೈ</string>
-  <string name="network_name_mobile">ಮೊಬೈಲ್</string>
   <string name="content_description_overflow">ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು</string>
   <string name="snackbar_undo">ರದ್ದುಮಾಡಿ</string>
   <string name="ok_got_it">ಸರಿ, ಅರ್ಥವಾಯಿತು</string>
diff --git a/java/com/android/dialer/common/res/values-ko/strings.xml b/java/com/android/dialer/common/res/values-ko/strings.xml
index 3f6ed44..3ab3c09 100644
--- a/java/com/android/dialer/common/res/values-ko/strings.xml
+++ b/java/com/android/dialer/common/res/values-ko/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">모바일</string>
   <string name="content_description_overflow">추가 옵션</string>
   <string name="snackbar_undo">실행취소</string>
   <string name="ok_got_it">확인</string>
diff --git a/java/com/android/dialer/common/res/values-ky/strings.xml b/java/com/android/dialer/common/res/values-ky/strings.xml
index aae8901..3f5df7c 100644
--- a/java/com/android/dialer/common/res/values-ky/strings.xml
+++ b/java/com/android/dialer/common/res/values-ky/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi‑Fi</string>
-  <string name="network_name_mobile">Мобилдик</string>
   <string name="content_description_overflow">Дагы параметрлер</string>
   <string name="snackbar_undo">КАЙТАРУУ</string>
   <string name="ok_got_it">Жарайт, түшүндүм</string>
diff --git a/java/com/android/dialer/common/res/values-lo/strings.xml b/java/com/android/dialer/common/res/values-lo/strings.xml
index 051ef1e..4197471 100644
--- a/java/com/android/dialer/common/res/values-lo/strings.xml
+++ b/java/com/android/dialer/common/res/values-lo/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">ມືຖື</string>
   <string name="content_description_overflow">ຕົວເລືອກເພີ່ມເຕີມ</string>
   <string name="snackbar_undo">ຍົກເລີກ</string>
   <string name="ok_got_it">ຕົກລົງ, ເຂົ້າໃຈແລ້ວ</string>
diff --git a/java/com/android/dialer/common/res/values-lt/strings.xml b/java/com/android/dialer/common/res/values-lt/strings.xml
index c85b7b1..19c83c0 100644
--- a/java/com/android/dialer/common/res/values-lt/strings.xml
+++ b/java/com/android/dialer/common/res/values-lt/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobilusis</string>
   <string name="content_description_overflow">Daugiau parinkčių</string>
   <string name="snackbar_undo">ANULIUOTI</string>
   <string name="ok_got_it">Gerai, supratau</string>
diff --git a/java/com/android/dialer/common/res/values-lv/strings.xml b/java/com/android/dialer/common/res/values-lv/strings.xml
index 73ca39d..7657b57 100644
--- a/java/com/android/dialer/common/res/values-lv/strings.xml
+++ b/java/com/android/dialer/common/res/values-lv/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobilais tīkls</string>
   <string name="content_description_overflow">Citas opcijas</string>
   <string name="snackbar_undo">ATSAUKT</string>
   <string name="ok_got_it">Labi</string>
diff --git a/java/com/android/dialer/common/res/values-mk/strings.xml b/java/com/android/dialer/common/res/values-mk/strings.xml
index 6d84b99..7e84367 100644
--- a/java/com/android/dialer/common/res/values-mk/strings.xml
+++ b/java/com/android/dialer/common/res/values-mk/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Мобилен</string>
   <string name="content_description_overflow">Повеќе опции</string>
   <string name="snackbar_undo">ВРАТИ</string>
   <string name="ok_got_it">Во ред, сфатив</string>
diff --git a/java/com/android/dialer/common/res/values-ml/strings.xml b/java/com/android/dialer/common/res/values-ml/strings.xml
index 4f4de21..78001cf 100644
--- a/java/com/android/dialer/common/res/values-ml/strings.xml
+++ b/java/com/android/dialer/common/res/values-ml/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">മൊബൈല്‍</string>
   <string name="content_description_overflow">കൂടുതൽ ഓപ്‌ഷനുകൾ</string>
   <string name="snackbar_undo">പഴയപടിയാക്കുക</string>
   <string name="ok_got_it">മനസിലായി</string>
diff --git a/java/com/android/dialer/common/res/values-mn/strings.xml b/java/com/android/dialer/common/res/values-mn/strings.xml
index b92dd5d..6037c84 100644
--- a/java/com/android/dialer/common/res/values-mn/strings.xml
+++ b/java/com/android/dialer/common/res/values-mn/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">WiFi</string>
-  <string name="network_name_mobile">Мобайл</string>
   <string name="content_description_overflow">Бусад сонголт</string>
   <string name="snackbar_undo">БУЦААХ</string>
   <string name="ok_got_it">За, ойлголоо</string>
diff --git a/java/com/android/dialer/common/res/values-mr/strings.xml b/java/com/android/dialer/common/res/values-mr/strings.xml
index 30aa451..3a80d33 100644
--- a/java/com/android/dialer/common/res/values-mr/strings.xml
+++ b/java/com/android/dialer/common/res/values-mr/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">वायफाय</string>
-  <string name="network_name_mobile">मोबाईल</string>
   <string name="content_description_overflow">आणखी पर्याय</string>
   <string name="snackbar_undo">पहिल्यासारखे करा</string>
   <string name="ok_got_it">ओके, समजले</string>
diff --git a/java/com/android/dialer/common/res/values-ms/strings.xml b/java/com/android/dialer/common/res/values-ms/strings.xml
index 496f980..6a1d343 100644
--- a/java/com/android/dialer/common/res/values-ms/strings.xml
+++ b/java/com/android/dialer/common/res/values-ms/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mudah Alih</string>
   <string name="content_description_overflow">Lagi pilihan</string>
   <string name="snackbar_undo">BUAT ASAL</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-my/strings.xml b/java/com/android/dialer/common/res/values-my/strings.xml
index 1f9bc2a..dde2df8 100644
--- a/java/com/android/dialer/common/res/values-my/strings.xml
+++ b/java/com/android/dialer/common/res/values-my/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">မိုဘိုင်း</string>
   <string name="content_description_overflow">နောက်ထပ် ရွေးစရာများ</string>
   <string name="snackbar_undo">မလုပ်တော့</string>
   <string name="ok_got_it">ရပါပြီ</string>
diff --git a/java/com/android/dialer/common/res/values-nb/strings.xml b/java/com/android/dialer/common/res/values-nb/strings.xml
index ac8eb81..3fdbb07 100644
--- a/java/com/android/dialer/common/res/values-nb/strings.xml
+++ b/java/com/android/dialer/common/res/values-nb/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobil</string>
   <string name="content_description_overflow">Flere alternativer</string>
   <string name="snackbar_undo">ANGRE</string>
   <string name="ok_got_it">Greit</string>
diff --git a/java/com/android/dialer/common/res/values-ne/strings.xml b/java/com/android/dialer/common/res/values-ne/strings.xml
index f60ebf6..e1b1d27 100644
--- a/java/com/android/dialer/common/res/values-ne/strings.xml
+++ b/java/com/android/dialer/common/res/values-ne/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">मोबाइल</string>
   <string name="content_description_overflow">थप विकल्पहरू</string>
   <string name="snackbar_undo">अन्डू गर्नुहोस्</string>
   <string name="ok_got_it">ठिक छ, बुझेँ</string>
diff --git a/java/com/android/dialer/common/res/values-nl/strings.xml b/java/com/android/dialer/common/res/values-nl/strings.xml
index 2ff76c3..be125a1 100644
--- a/java/com/android/dialer/common/res/values-nl/strings.xml
+++ b/java/com/android/dialer/common/res/values-nl/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">Mobiel</string>
   <string name="content_description_overflow">Meer opties</string>
   <string name="snackbar_undo">HERSTELLEN</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-no/strings.xml b/java/com/android/dialer/common/res/values-no/strings.xml
index ac8eb81..3fdbb07 100644
--- a/java/com/android/dialer/common/res/values-no/strings.xml
+++ b/java/com/android/dialer/common/res/values-no/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobil</string>
   <string name="content_description_overflow">Flere alternativer</string>
   <string name="snackbar_undo">ANGRE</string>
   <string name="ok_got_it">Greit</string>
diff --git a/java/com/android/dialer/common/res/values-pa/strings.xml b/java/com/android/dialer/common/res/values-pa/strings.xml
index 71fd869..3628a7b 100644
--- a/java/com/android/dialer/common/res/values-pa/strings.xml
+++ b/java/com/android/dialer/common/res/values-pa/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">ਮੋਬਾਈਲ</string>
   <string name="content_description_overflow">ਹੋਰ ਵਿਕਲਪ</string>
   <string name="snackbar_undo">ਅਣਕੀਤਾ ਕਰੋ</string>
   <string name="ok_got_it">ਠੀਕ ਹੈ, ਸਮਝ ਲਿਆ</string>
diff --git a/java/com/android/dialer/common/res/values-pl/strings.xml b/java/com/android/dialer/common/res/values-pl/strings.xml
index c79ba09..ccd92b6 100644
--- a/java/com/android/dialer/common/res/values-pl/strings.xml
+++ b/java/com/android/dialer/common/res/values-pl/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Komórka</string>
   <string name="content_description_overflow">Więcej opcji</string>
   <string name="snackbar_undo">COFNIJ</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-pt-rBR/strings.xml b/java/com/android/dialer/common/res/values-pt-rBR/strings.xml
index be8e551..490db16 100644
--- a/java/com/android/dialer/common/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/common/res/values-pt-rBR/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Dispositivo móvel</string>
   <string name="content_description_overflow">Mais opções</string>
   <string name="snackbar_undo">DESFAZER</string>
   <string name="ok_got_it">Ok</string>
diff --git a/java/com/android/dialer/common/res/values-pt-rPT/strings.xml b/java/com/android/dialer/common/res/values-pt-rPT/strings.xml
index 4ad8980..ca41a3b 100644
--- a/java/com/android/dialer/common/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/common/res/values-pt-rPT/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Telemóvel</string>
   <string name="content_description_overflow">Mais opções</string>
   <string name="snackbar_undo">ANULAR</string>
   <string name="ok_got_it">OK, compreendi</string>
diff --git a/java/com/android/dialer/common/res/values-pt/strings.xml b/java/com/android/dialer/common/res/values-pt/strings.xml
index be8e551..490db16 100644
--- a/java/com/android/dialer/common/res/values-pt/strings.xml
+++ b/java/com/android/dialer/common/res/values-pt/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Dispositivo móvel</string>
   <string name="content_description_overflow">Mais opções</string>
   <string name="snackbar_undo">DESFAZER</string>
   <string name="ok_got_it">Ok</string>
diff --git a/java/com/android/dialer/common/res/values-ro/strings.xml b/java/com/android/dialer/common/res/values-ro/strings.xml
index a777cbc..c86b759 100644
--- a/java/com/android/dialer/common/res/values-ro/strings.xml
+++ b/java/com/android/dialer/common/res/values-ro/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobil</string>
   <string name="content_description_overflow">Mai multe opțiuni</string>
   <string name="snackbar_undo">ANULAȚI</string>
   <string name="ok_got_it">OK, am înțeles</string>
diff --git a/java/com/android/dialer/common/res/values-ru/strings.xml b/java/com/android/dialer/common/res/values-ru/strings.xml
index f2cc59b..70b6c06 100644
--- a/java/com/android/dialer/common/res/values-ru/strings.xml
+++ b/java/com/android/dialer/common/res/values-ru/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Моб.</string>
   <string name="content_description_overflow">Ещё</string>
   <string name="snackbar_undo">ОТМЕНИТЬ</string>
   <string name="ok_got_it">ОК</string>
diff --git a/java/com/android/dialer/common/res/values-si/strings.xml b/java/com/android/dialer/common/res/values-si/strings.xml
index f40d1a5..c5d3475 100644
--- a/java/com/android/dialer/common/res/values-si/strings.xml
+++ b/java/com/android/dialer/common/res/values-si/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">WiFi</string>
-  <string name="network_name_mobile">ජංගම</string>
   <string name="content_description_overflow">තව විකල්ප</string>
   <string name="snackbar_undo">පසුගමනය ක.</string>
   <string name="ok_got_it">හරි, තේරුණා</string>
diff --git a/java/com/android/dialer/common/res/values-sk/strings.xml b/java/com/android/dialer/common/res/values-sk/strings.xml
index 3514d41..4b361f2 100644
--- a/java/com/android/dialer/common/res/values-sk/strings.xml
+++ b/java/com/android/dialer/common/res/values-sk/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi‑Fi</string>
-  <string name="network_name_mobile">Mobil</string>
   <string name="content_description_overflow">Ďalšie možnosti</string>
   <string name="snackbar_undo">SPÄŤ</string>
   <string name="ok_got_it">Dobre</string>
diff --git a/java/com/android/dialer/common/res/values-sl/strings.xml b/java/com/android/dialer/common/res/values-sl/strings.xml
index 4832a25..435b5fa 100644
--- a/java/com/android/dialer/common/res/values-sl/strings.xml
+++ b/java/com/android/dialer/common/res/values-sl/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobilni telefon</string>
   <string name="content_description_overflow">Več možnosti</string>
   <string name="snackbar_undo">RAZVELJAVI</string>
   <string name="ok_got_it">V redu, razumem</string>
diff --git a/java/com/android/dialer/common/res/values-sq/strings.xml b/java/com/android/dialer/common/res/values-sq/strings.xml
index 8133c95..0d9fbad 100644
--- a/java/com/android/dialer/common/res/values-sq/strings.xml
+++ b/java/com/android/dialer/common/res/values-sq/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">Celulari</string>
   <string name="content_description_overflow">Më shumë opsione</string>
   <string name="snackbar_undo">ZHBËJ</string>
   <string name="ok_got_it">Në rregull, e kuptova</string>
diff --git a/java/com/android/dialer/common/res/values-sr/strings.xml b/java/com/android/dialer/common/res/values-sr/strings.xml
index 7af444d..77cb763 100644
--- a/java/com/android/dialer/common/res/values-sr/strings.xml
+++ b/java/com/android/dialer/common/res/values-sr/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Мобилни уређаји</string>
   <string name="content_description_overflow">Још опција</string>
   <string name="snackbar_undo">ОПОЗОВИ</string>
   <string name="ok_got_it">Важи</string>
diff --git a/java/com/android/dialer/common/res/values-sv/strings.xml b/java/com/android/dialer/common/res/values-sv/strings.xml
index 5b71634..aa54dd4 100644
--- a/java/com/android/dialer/common/res/values-sv/strings.xml
+++ b/java/com/android/dialer/common/res/values-sv/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Mobil</string>
   <string name="content_description_overflow">Fler alternativ</string>
   <string name="snackbar_undo">ÅNGRA</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-sw/strings.xml b/java/com/android/dialer/common/res/values-sw/strings.xml
index e615c73..1608901 100644
--- a/java/com/android/dialer/common/res/values-sw/strings.xml
+++ b/java/com/android/dialer/common/res/values-sw/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Simu ya mkononi</string>
   <string name="content_description_overflow">Chaguo zaidi</string>
   <string name="snackbar_undo">TENDUA</string>
   <string name="ok_got_it">Sawa, nimeelewa</string>
diff --git a/java/com/android/dialer/common/res/values-ta/strings.xml b/java/com/android/dialer/common/res/values-ta/strings.xml
index c97f233..a739bb1 100644
--- a/java/com/android/dialer/common/res/values-ta/strings.xml
+++ b/java/com/android/dialer/common/res/values-ta/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">வைஃபை</string>
-  <string name="network_name_mobile">மொபைல்</string>
   <string name="content_description_overflow">மேலும் விருப்பங்கள்</string>
   <string name="snackbar_undo">செயல்தவிர்</string>
   <string name="ok_got_it">சரி</string>
diff --git a/java/com/android/dialer/common/res/values-te/strings.xml b/java/com/android/dialer/common/res/values-te/strings.xml
index 066601f..fd29d0f 100644
--- a/java/com/android/dialer/common/res/values-te/strings.xml
+++ b/java/com/android/dialer/common/res/values-te/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">మొబైల్</string>
   <string name="content_description_overflow">మరిన్ని ఎంపికలు</string>
   <string name="snackbar_undo">చర్యరద్దు</string>
   <string name="ok_got_it">సరే, అర్థమైంది</string>
diff --git a/java/com/android/dialer/common/res/values-th/strings.xml b/java/com/android/dialer/common/res/values-th/strings.xml
index 29b5571..e905f94 100644
--- a/java/com/android/dialer/common/res/values-th/strings.xml
+++ b/java/com/android/dialer/common/res/values-th/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">อุปกรณ์เคลื่อนที่</string>
   <string name="content_description_overflow">ตัวเลือกเพิ่มเติม</string>
   <string name="snackbar_undo">เลิกทำ</string>
   <string name="ok_got_it">รับทราบ</string>
diff --git a/java/com/android/dialer/common/res/values-tl/strings.xml b/java/com/android/dialer/common/res/values-tl/strings.xml
index 252f7b5..8d9e452 100644
--- a/java/com/android/dialer/common/res/values-tl/strings.xml
+++ b/java/com/android/dialer/common/res/values-tl/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">Mobile</string>
   <string name="content_description_overflow">Higit pang opsyon</string>
   <string name="snackbar_undo">I-UNDO</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-tr/strings.xml b/java/com/android/dialer/common/res/values-tr/strings.xml
index 68e194c..9febcfc 100644
--- a/java/com/android/dialer/common/res/values-tr/strings.xml
+++ b/java/com/android/dialer/common/res/values-tr/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Kablosuz</string>
-  <string name="network_name_mobile">Mobil</string>
   <string name="content_description_overflow">Diğer seçenekler</string>
   <string name="snackbar_undo">GERİ AL</string>
   <string name="ok_got_it">Tamam, anladım</string>
diff --git a/java/com/android/dialer/common/res/values-uk/strings.xml b/java/com/android/dialer/common/res/values-uk/strings.xml
index fee1e37..59af2ce 100644
--- a/java/com/android/dialer/common/res/values-uk/strings.xml
+++ b/java/com/android/dialer/common/res/values-uk/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Мобільний</string>
   <string name="content_description_overflow">Інші опції</string>
   <string name="snackbar_undo">ВІДМІНИТИ</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-ur/strings.xml b/java/com/android/dialer/common/res/values-ur/strings.xml
index 41e3e86..b70330b 100644
--- a/java/com/android/dialer/common/res/values-ur/strings.xml
+++ b/java/com/android/dialer/common/res/values-ur/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">موبائل</string>
   <string name="content_description_overflow">مزید اختیارات</string>
   <string name="snackbar_undo">کالعدم کریں</string>
   <string name="ok_got_it">ٹھیک ہے، سمجھ آگئی</string>
diff --git a/java/com/android/dialer/common/res/values-uz/strings.xml b/java/com/android/dialer/common/res/values-uz/strings.xml
index 5538188..06e6955 100644
--- a/java/com/android/dialer/common/res/values-uz/strings.xml
+++ b/java/com/android/dialer/common/res/values-uz/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">WI-FI</string>
-  <string name="network_name_mobile">Mobil</string>
   <string name="content_description_overflow">Boshqa parametrlar</string>
   <string name="snackbar_undo">BEKOR QILISH</string>
   <string name="ok_got_it">OK</string>
diff --git a/java/com/android/dialer/common/res/values-vi/strings.xml b/java/com/android/dialer/common/res/values-vi/strings.xml
index f997293..57a6c7a 100644
--- a/java/com/android/dialer/common/res/values-vi/strings.xml
+++ b/java/com/android/dialer/common/res/values-vi/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">Thiết bị di động</string>
   <string name="content_description_overflow">Tùy chọn khác</string>
   <string name="snackbar_undo">HOÀN TÁC</string>
   <string name="ok_got_it">Ok, đã hiểu</string>
diff --git a/java/com/android/dialer/common/res/values-zh-rCN/strings.xml b/java/com/android/dialer/common/res/values-zh-rCN/strings.xml
index 288d52f..fb7f252 100644
--- a/java/com/android/dialer/common/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/common/res/values-zh-rCN/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">WLAN</string>
-  <string name="network_name_mobile">移动网络</string>
   <string name="content_description_overflow">更多选项</string>
   <string name="snackbar_undo">撤消</string>
   <string name="ok_got_it">知道了</string>
diff --git a/java/com/android/dialer/common/res/values-zh-rHK/strings.xml b/java/com/android/dialer/common/res/values-zh-rHK/strings.xml
index 902a698..69a8719 100644
--- a/java/com/android/dialer/common/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/common/res/values-zh-rHK/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">流動</string>
   <string name="content_description_overflow">更多選項</string>
   <string name="snackbar_undo">復原</string>
   <string name="ok_got_it">好，知道了</string>
diff --git a/java/com/android/dialer/common/res/values-zh-rTW/strings.xml b/java/com/android/dialer/common/res/values-zh-rTW/strings.xml
index d0fcf87..90f4729 100644
--- a/java/com/android/dialer/common/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/common/res/values-zh-rTW/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">Wi-Fi</string>
-  <string name="network_name_mobile">行動網路</string>
   <string name="content_description_overflow">更多選項</string>
   <string name="snackbar_undo">復原</string>
   <string name="ok_got_it">好，我知道了</string>
diff --git a/java/com/android/dialer/common/res/values-zu/strings.xml b/java/com/android/dialer/common/res/values-zu/strings.xml
index a015501..3b52b64 100644
--- a/java/com/android/dialer/common/res/values-zu/strings.xml
+++ b/java/com/android/dialer/common/res/values-zu/strings.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-  <string name="network_name_wifi">I-Wi-Fi</string>
-  <string name="network_name_mobile">Iselula</string>
   <string name="content_description_overflow">Ezinye izinketho</string>
   <string name="snackbar_undo">HLEHLISA</string>
   <string name="ok_got_it">KULUNGILE, ngiyezwa</string>
diff --git a/java/com/android/dialer/common/res/values/strings.xml b/java/com/android/dialer/common/res/values/strings.xml
index 3bd21d5..265b60b 100644
--- a/java/com/android/dialer/common/res/values/strings.xml
+++ b/java/com/android/dialer/common/res/values/strings.xml
@@ -15,8 +15,6 @@
   ~ limitations under the License
   -->
 <resources>
-  <string name="network_name_wifi">Wifi</string>
-  <string name="network_name_mobile">Mobile</string>
   <!-- Content description for the overflow menu button. [CHAR LIMIT=NONE] -->
   <string name="content_description_overflow">More options</string>
   <!-- Text for undo button in snackbar for voicemail deletion/blocking/unblocking number. [CHAR LIMIT=10] -->
diff --git a/java/com/android/dialer/compat/android/provider/VoicemailCompat.java b/java/com/android/dialer/compat/android/provider/VoicemailCompat.java
deleted file mode 100644
index 35e0ea5..0000000
--- a/java/com/android/dialer/compat/android/provider/VoicemailCompat.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.dialer.compat.android.provider;
-
-/**
- * Provide access to Voicemail Transcription API constants as they won't be publicly available.
- *
- * <p>Copied from android.provider.VoicemailContract.Voicemails. These do not plan to become public
- * in O-MR1 or in the near future.
- */
-public class VoicemailCompat {
-
-  /**
-   * The state of the voicemail transcription.
-   *
-   * <p>Possible values: {@link #TRANSCRIPTION_NOT_STARTED}, {@link #TRANSCRIPTION_IN_PROGRESS},
-   * {@link #TRANSCRIPTION_FAILED}, {@link #TRANSCRIPTION_AVAILABLE}.
-   *
-   * <p>Type: INTEGER
-   */
-  public static final String TRANSCRIPTION_STATE = "transcription_state";
-
-  /**
-   * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has not yet been
-   * attempted.
-   */
-  public static final int TRANSCRIPTION_NOT_STARTED = 0;
-
-  /**
-   * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has begun but is not yet
-   * complete.
-   */
-  public static final int TRANSCRIPTION_IN_PROGRESS = 1;
-
-  /**
-   * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has been attempted and
-   * failed for an unspecified reason.
-   */
-  public static final int TRANSCRIPTION_FAILED = 2;
-
-  /**
-   * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has completed and the
-   * result has been stored in the {@link #TRANSCRIPTION} column.
-   */
-  public static final int TRANSCRIPTION_AVAILABLE = 3;
-
-  /**
-   * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has been attempted and
-   * failed because no speech was detected.
-   *
-   * <p>Internal dialer use only, not part of the public SDK.
-   */
-  public static final int TRANSCRIPTION_FAILED_NO_SPEECH_DETECTED = -1;
-
-  /**
-   * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has been attempted and
-   * failed because the language was not supported.
-   *
-   * <p>Internal dialer use only, not part of the public SDK.
-   */
-  public static final int TRANSCRIPTION_FAILED_LANGUAGE_NOT_SUPPORTED = -2;
-
-  /**
-   * Value of {@link #TRANSCRIPTION_STATE} when the voicemail transcription has completed and the
-   * result has been stored in the {@link #TRANSCRIPTION} column of the database, and the user has
-   * provided a quality rating for the transcription.
-   */
-  public static final int TRANSCRIPTION_AVAILABLE_AND_RATED = -3;
-
-  /**
-   * Voicemail transcription quality rating value sent to the server indicating a good transcription
-   */
-  public static final int TRANSCRIPTION_QUALITY_RATING_GOOD = 1;
-
-  /**
-   * Voicemail transcription quality rating value sent to the server indicating a bad transcription
-   */
-  public static final int TRANSCRIPTION_QUALITY_RATING_BAD = 2;
-}
diff --git a/java/com/android/dialer/compat/android/support/design/bottomsheet/BottomSheetStateCompat.java b/java/com/android/dialer/compat/android/support/design/bottomsheet/BottomSheetStateCompat.java
index d7079d4..4e5932c 100644
--- a/java/com/android/dialer/compat/android/support/design/bottomsheet/BottomSheetStateCompat.java
+++ b/java/com/android/dialer/compat/android/support/design/bottomsheet/BottomSheetStateCompat.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +17,7 @@
 
 package com.android.dialer.compat.android.support.design.bottomsheet;
 
-import android.support.design.widget.BottomSheetBehavior;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
 
 /** Provides access to bottom sheet states. */
 public final class BottomSheetStateCompat {
diff --git a/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
index 41e5be2..f160fd2 100644
--- a/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
+++ b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,17 +17,17 @@
 
 package com.android.dialer.compat.telephony;
 
+import android.annotation.SuppressLint;
 import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
-import android.support.v4.os.BuildCompat;
 import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.telecom.TelecomUtil;
+
 import java.lang.reflect.InvocationTargetException;
 
 /** Hidden APIs in {@link android.telephony.TelephonyManager}. */
@@ -49,10 +50,6 @@
       "android.telephony.event.EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC";
   public static final String EVENT_CALL_FORWARDED = "android.telephony.event.EVENT_CALL_FORWARDED";
 
-  public static final String TELEPHONY_MANAGER_CLASS = "android.telephony.TelephonyManager";
-
-  private static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
-
   // TODO(erfanian): a bug Replace with the platform/telecom constant when available.
   /**
    * Indicates that the call being placed originated from a known contact.
@@ -66,11 +63,7 @@
   public static final String ASSISTED_DIALING_EXTRAS =
       "android.telecom.extra.ASSISTED_DIALING_EXTRAS";
 
-  /** Indicates the Connection/Call used assisted dialing. */
-  public static final int PROPERTY_ASSISTED_DIALING_USED = 1 << 9;
-
-  public static final String EXTRA_IS_REFRESH =
-      BuildCompat.isAtLeastOMR1() ? "android.telephony.extra.IS_REFRESH" : "is_refresh";
+  public static final String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH";
 
   /**
    * Indicates the call underwent Assisted Dialing; typically set as a feature available from the
@@ -97,17 +90,18 @@
     if (telephonyManager == null) {
       return 1;
     }
-    return telephonyManager.getPhoneCount();
+    return telephonyManager.getActiveModemCount();
   }
 
   /**
    * Whether the phone supports TTY mode.
    *
-   * @param telephonyManager The telephony manager instance to use for method calls.
+   * @param telecomManager The TelecomManager manager instance to use for method calls.
    * @return {@code true} if the device supports TTY mode, and {@code false} otherwise.
    */
-  public static boolean isTtyModeSupported(@Nullable TelephonyManager telephonyManager) {
-    return telephonyManager != null && telephonyManager.isTtyModeSupported();
+  @SuppressLint("MissingPermission")
+  public static boolean isTtyModeSupported(@Nullable TelecomManager telecomManager) {
+    return telecomManager != null && telecomManager.isTtySupported();
   }
 
   /**
@@ -123,34 +117,6 @@
   }
 
   /**
-   * Returns the URI for the per-account voicemail ringtone set in Phone settings.
-   *
-   * @param telephonyManager The telephony manager instance to use for method calls.
-   * @param accountHandle The handle for the {@link android.telecom.PhoneAccount} for which to
-   *     retrieve the voicemail ringtone.
-   * @return The URI for the ringtone to play when receiving a voicemail from a specific
-   *     PhoneAccount.
-   */
-  @Nullable
-  public static Uri getVoicemailRingtoneUri(
-      TelephonyManager telephonyManager, PhoneAccountHandle accountHandle) {
-    return telephonyManager.getVoicemailRingtoneUri(accountHandle);
-  }
-
-  /**
-   * Returns whether vibration is set for voicemail notification in Phone settings.
-   *
-   * @param telephonyManager The telephony manager instance to use for method calls.
-   * @param accountHandle The handle for the {@link android.telecom.PhoneAccount} for which to
-   *     retrieve the voicemail vibration setting.
-   * @return {@code true} if the vibration is set for this PhoneAccount, {@code false} otherwise.
-   */
-  public static boolean isVoicemailVibrationEnabled(
-      TelephonyManager telephonyManager, PhoneAccountHandle accountHandle) {
-    return telephonyManager.isVoicemailVibrationEnabled(accountHandle);
-  }
-
-  /**
    * This method uses a new system API to enable or disable visual voicemail. TODO(twyen): restrict
    * to N MR1, not needed in future SDK.
    */
@@ -166,44 +132,19 @@
   }
 
   /**
-   * This method uses a new system API to check if visual voicemail is enabled TODO(twyen): restrict
-   * to N MR1, not needed in future SDK.
-   */
-  public static boolean isVisualVoicemailEnabled(
-      TelephonyManager telephonyManager, PhoneAccountHandle handle) {
-    try {
-      return (boolean)
-          TelephonyManager.class
-              .getMethod("isVisualVoicemailEnabled", PhoneAccountHandle.class)
-              .invoke(telephonyManager, handle);
-    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
-      LogUtil.e("TelephonyManagerCompat.setVisualVoicemailEnabled", "failed", e);
-    }
-    return false;
-  }
-
-  /**
    * Handles secret codes to launch arbitrary activities.
    *
    * @param context the context to use
    * @param secretCode the secret code without the "*#*#" prefix and "#*#*" suffix
    */
   public static void handleSecretCode(Context context, String secretCode) {
-    // Must use system service on O+ to avoid using broadcasts, which are not allowed on O+.
-    if (BuildCompat.isAtLeastO()) {
-      if (!TelecomUtil.isDefaultDialer(context)) {
-        LogUtil.e(
-            "TelephonyManagerCompat.handleSecretCode",
-            "not default dialer, cannot send special code");
-        return;
-      }
-      context.getSystemService(TelephonyManager.class).sendDialerSpecialCode(secretCode);
-    } else {
-      // System service call is not supported pre-O, so must use a broadcast for N-.
-      Intent intent =
-          new Intent(SECRET_CODE_ACTION, Uri.parse("android_secret_code://" + secretCode));
-      context.sendBroadcast(intent);
+    if (!TelecomUtil.isDefaultDialer(context)) {
+      LogUtil.e(
+          "TelephonyManagerCompat.handleSecretCode",
+          "not default dialer, cannot send special code");
+      return;
     }
+    context.getSystemService(TelephonyManager.class).sendDialerSpecialCode(secretCode);
   }
 
   /**
@@ -226,12 +167,10 @@
     if (phoneAccountHandle == null) {
       return telephonyManager;
     }
-    if (VERSION.SDK_INT >= VERSION_CODES.O) {
-      TelephonyManager telephonyManagerForPhoneAccount =
-          telephonyManager.createForPhoneAccountHandle(phoneAccountHandle);
-      if (telephonyManagerForPhoneAccount != null) {
-        return telephonyManagerForPhoneAccount;
-      }
+    TelephonyManager telephonyManagerForPhoneAccount =
+        telephonyManager.createForPhoneAccountHandle(phoneAccountHandle);
+    if (telephonyManagerForPhoneAccount != null) {
+      return telephonyManagerForPhoneAccount;
     }
     return telephonyManager;
   }
diff --git a/java/com/android/dialer/configprovider/AndroidManifest.xml b/java/com/android/dialer/configprovider/AndroidManifest.xml
deleted file mode 100644
index 7729971..0000000
--- a/java/com/android/dialer/configprovider/AndroidManifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.configprovider">
-
-  <application>
-    <service android:name=".SharedPrefConfigProvider$Service"/>
-  </application>
-
-</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/configprovider/ConfigProvider.java b/java/com/android/dialer/configprovider/ConfigProvider.java
deleted file mode 100644
index 886a69e..0000000
--- a/java/com/android/dialer/configprovider/ConfigProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.configprovider;
-
-/** Gets config values from the container application. */
-public interface ConfigProvider {
-
-  String getString(String key, String defaultValue);
-
-  long getLong(String key, long defaultValue);
-
-  boolean getBoolean(String key, boolean defaultValue);
-}
diff --git a/java/com/android/dialer/configprovider/ConfigProviderComponent.java b/java/com/android/dialer/configprovider/ConfigProviderComponent.java
deleted file mode 100644
index 5b5afd7..0000000
--- a/java/com/android/dialer/configprovider/ConfigProviderComponent.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.configprovider;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-
-/** Dagger component to provide a {@link ConfigProvider}. */
-@Subcomponent
-public abstract class ConfigProviderComponent {
-
-  @NonNull
-  public abstract ConfigProvider getConfigProvider();
-
-  public static ConfigProviderComponent get(Context context) {
-    return ((ConfigProviderComponent.HasComponent)
-            ((HasRootComponent) context.getApplicationContext()).component())
-        .configProviderComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  @IncludeInDialerRoot
-  public interface HasComponent {
-    ConfigProviderComponent configProviderComponent();
-  }
-}
diff --git a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java b/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
deleted file mode 100644
index c68312f..0000000
--- a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.dialer.configprovider;
-
-import android.app.IntentService;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.storage.StorageComponent;
-import com.android.dialer.storage.Unencrypted;
-import com.android.dialer.strictmode.StrictModeUtils;
-import javax.inject.Inject;
-
-/**
- * {@link ConfigProvider} which uses a shared preferences file.
- *
- * <p>Config flags can be written using adb (with root access), for example:
- *
- * <pre>
- *   adb root
- *   adb shell am startservice -n \
- *     'com.android.dialer/.configprovider.SharedPrefConfigProvider\$Service' \
- *     --ez boolean_flag_name flag_value
- * </pre>
- *
- * <p>(For longs use --el and for strings use --es.)
- *
- * <p>Flags can be viewed with:
- *
- * <pre>
- *   adb shell cat \
- *     /data/user_de/0/com.android.dialer/shared_prefs/com.android.dialer_preferences.xml
- * </pre>
- */
-public class SharedPrefConfigProvider implements ConfigProvider {
-  private static final String PREF_PREFIX = "config_provider_prefs_";
-
-  private final SharedPreferences sharedPreferences;
-
-  @Inject
-  SharedPrefConfigProvider(@Unencrypted SharedPreferences sharedPreferences) {
-    this.sharedPreferences = sharedPreferences;
-  }
-
-  /** Service to write values into {@link SharedPrefConfigProvider} using adb. */
-  public static class Service extends IntentService {
-
-    public Service() {
-      super("SharedPrefConfigProvider.Service");
-    }
-
-    @Override
-    protected void onHandleIntent(@Nullable Intent intent) {
-      if (intent == null || intent.getExtras() == null || intent.getExtras().size() != 1) {
-        LogUtil.w("SharedPrefConfigProvider.Service.onHandleIntent", "must set exactly one extra");
-        return;
-      }
-      String key = intent.getExtras().keySet().iterator().next();
-      Object value = intent.getExtras().get(key);
-      put(key, value);
-    }
-
-    private void put(String key, Object value) {
-      Editor editor = getSharedPrefs(getApplicationContext()).edit();
-      String prefixedKey = PREF_PREFIX + key;
-      if (value instanceof Boolean) {
-        editor.putBoolean(prefixedKey, (Boolean) value);
-      } else if (value instanceof Long) {
-        editor.putLong(prefixedKey, (Long) value);
-      } else if (value instanceof String) {
-        editor.putString(prefixedKey, (String) value);
-      } else {
-        throw Assert.createAssertionFailException("unsupported extra type: " + value.getClass());
-      }
-      editor.apply();
-    }
-  }
-
-  /** Set a boolean config value. */
-  public void putBoolean(String key, boolean value) {
-    sharedPreferences.edit().putBoolean(PREF_PREFIX + key, value).apply();
-  }
-
-  public void putLong(String key, long value) {
-    sharedPreferences.edit().putLong(PREF_PREFIX + key, value).apply();
-  }
-
-  public void putString(String key, String value) {
-    sharedPreferences.edit().putString(PREF_PREFIX + key, value).apply();
-  }
-
-  @Override
-  public String getString(String key, String defaultValue) {
-    // Reading shared prefs on the main thread is generally safe since a single instance is cached.
-    return StrictModeUtils.bypass(
-        () -> sharedPreferences.getString(PREF_PREFIX + key, defaultValue));
-  }
-
-  @Override
-  public long getLong(String key, long defaultValue) {
-    // Reading shared prefs on the main thread is generally safe since a single instance is cached.
-    return StrictModeUtils.bypass(() -> sharedPreferences.getLong(PREF_PREFIX + key, defaultValue));
-  }
-
-  @Override
-  public boolean getBoolean(String key, boolean defaultValue) {
-    // Reading shared prefs on the main thread is generally safe since a single instance is cached.
-    return StrictModeUtils.bypass(
-        () -> sharedPreferences.getBoolean(PREF_PREFIX + key, defaultValue));
-  }
-
-  private static SharedPreferences getSharedPrefs(Context appContext) {
-    return StorageComponent.get(appContext).unencryptedSharedPrefs();
-  }
-}
diff --git a/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java b/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java
deleted file mode 100644
index 81bed19..0000000
--- a/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.configprovider;
-
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.dialer.storage.StorageModule;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-/** Dagger module providing {@link ConfigProvider} based on shared preferences. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module(includes = StorageModule.class)
-public abstract class SharedPrefConfigProviderModule {
-
-  private SharedPrefConfigProviderModule() {}
-
-  @Binds
-  @Singleton
-  abstract ConfigProvider to(SharedPrefConfigProvider impl);
-}
diff --git a/java/com/android/dialer/constants/ActivityRequestCodes.java b/java/com/android/dialer/constants/ActivityRequestCodes.java
deleted file mode 100644
index 9945080..0000000
--- a/java/com/android/dialer/constants/ActivityRequestCodes.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.constants;
-
-/**
- * Class containing {@link android.app.Activity#onActivityResult(int, int, android.content.Intent)}
- * request codes.
- */
-public final class ActivityRequestCodes {
-
-  private ActivityRequestCodes() {}
-
-  /** Request code for {@link android.speech.RecognizerIntent#ACTION_RECOGNIZE_SPEECH} intent. */
-  public static final int DIALTACTS_VOICE_SEARCH = 1;
-
-  /** Request code for {@link com.android.dialer.callcomposer.CallComposerActivity} intent. */
-  public static final int DIALTACTS_CALL_COMPOSER = 2;
-
-  /** Request code for {@link com.android.dialer.duo.Duo#getCallIntent(String)}. */
-  public static final int DIALTACTS_DUO = 3;
-
-  /** Request code for {@link com.android.dialer.calldetails.OldCallDetailsActivity} intent. */
-  public static final int DIALTACTS_CALL_DETAILS = 4;
-
-  /**
-   * Request code for {@link com.android.dialer.speeddial.SpeedDialFragment} contact picker intent.
-   */
-  public static final int SPEED_DIAL_ADD_FAVORITE = 5;
-}
diff --git a/java/com/android/dialer/constants/Constants.java b/java/com/android/dialer/constants/Constants.java
index fb1aa2a..a157c77 100644
--- a/java/com/android/dialer/constants/Constants.java
+++ b/java/com/android/dialer/constants/Constants.java
@@ -16,57 +16,18 @@
 
 package com.android.dialer.constants;
 
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.common.Assert;
-import com.android.dialer.proguard.UsedByReflection;
-
 /**
- * Utility to access constants that are different across build variants (Google Dialer, AOSP,
- * etc...). This functionality depends on a an implementation being present in the app that has the
- * same package and the class name ending in "Impl". For example,
- * com.android.dialer.constants.ConstantsImpl. This class is found by the module using reflection.
+ * Utility to access constants
  */
-@UsedByReflection(value = "Constants.java")
-public abstract class Constants {
-  private static Constants instance;
-  private static boolean didInitializeInstance;
+public class Constants {
+  public static final String FILE_PROVIDER_AUTHORITY = "com.android.dialer.files";
 
-  @NonNull
-  public static synchronized Constants get() {
-    if (!didInitializeInstance) {
-      didInitializeInstance = true;
-      try {
-        Class<?> clazz = Class.forName(Constants.class.getName() + "Impl");
-        instance = (Constants) clazz.getConstructor().newInstance();
-      } catch (ReflectiveOperationException e) {
-        Assert.fail(
-            "Unable to create an instance of ConstantsImpl. To fix this error include one of the "
-                + "constants modules (googledialer, aosp etc...) in your target.");
-      }
-    }
-    return instance;
-  }
+  public static final String ANNOTATED_CALL_LOG_PROVIDER_AUTHORITY =
+          "com.android.dialer.annotatedcalllog";
 
-  @NonNull
-  public abstract String getFilteredNumberProviderAuthority();
+  public static final String PHONE_LOOKUP_HISTORY_PROVIDER_AUTHORITY =
+          "com.android.dialer.phonelookuphistory";
 
-  @NonNull
-  public abstract String getFileProviderAuthority();
-
-  @NonNull
-  public abstract String getAnnotatedCallLogProviderAuthority();
-
-  @NonNull
-  public abstract String getPhoneLookupHistoryProviderAuthority();
-
-  @NonNull
-  public abstract String getPreferredSimFallbackProviderAuthority();
-
-  public abstract String getUserAgent(Context context);
-
-  @NonNull
-  public abstract String getSettingsActivity();
-
-  protected Constants() {}
+  public static final String PREFERRED_SIM_FALLBACK_PROVIDER_AUTHORITY =
+          "com.android.dialer.preferredsimfallback";
 }
diff --git a/java/com/android/dialer/constants/ScheduledJobIds.java b/java/com/android/dialer/constants/ScheduledJobIds.java
index 7ffd2da..34a27bd 100644
--- a/java/com/android/dialer/constants/ScheduledJobIds.java
+++ b/java/com/android/dialer/constants/ScheduledJobIds.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,6 @@
 
 package com.android.dialer.constants;
 
-import android.support.annotation.IntDef;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
 /**
  * Registry of scheduled job ids used by the dialer UID.
  *
@@ -29,30 +26,11 @@
  * <p>Do not change any existing IDs.
  */
 public final class ScheduledJobIds {
-  public static final int SPAM_JOB_WIFI = 50;
-  public static final int SPAM_JOB_ANY_NETWORK = 51;
-
-  /** Spam job type including all spam job IDs. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({SPAM_JOB_WIFI, SPAM_JOB_ANY_NETWORK})
-  public @interface SpamJobType {}
-
   // This job refreshes dynamic launcher shortcuts.
   public static final int SHORTCUT_PERIODIC_JOB = 100;
 
   public static final int VVM_TASK_SCHEDULER_JOB = 200;
   public static final int VVM_STATUS_CHECK_JOB = 201;
   public static final int VVM_DEVICE_PROVISIONED_JOB = 202;
-  public static final int VVM_TRANSCRIPTION_JOB = 203;
-  public static final int VVM_TRANSCRIPTION_BACKFILL_JOB = 204;
   public static final int VVM_NOTIFICATION_JOB = 205;
-  public static final int VVM_TRANSCRIPTION_RATING_JOB = 206;
-
-  public static final int VOIP_REGISTRATION = 300;
-
-  public static final int CALL_LOG_CONFIG_POLLING_JOB = 400;
-
-  // Job Ids from 10_000 to 10_100 should be reserved for proto upload jobs.
-  public static final int PROTO_UPLOAD_JOB_MIN_ID = 10_000;
-  public static final int PROTO_UPLOAD_JOB_MAX_ID = 10_100;
 }
diff --git a/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java b/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
deleted file mode 100644
index 312b3f5..0000000
--- a/java/com/android/dialer/constants/aospdialer/ConstantsImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.constants;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.proguard.UsedByReflection;
-
-/** Provider config values for AOSP Dialer. */
-@UsedByReflection(value = "Constants.java")
-public class ConstantsImpl extends Constants {
-
-  @Override
-  @NonNull
-  public String getFilteredNumberProviderAuthority() {
-    return "com.android.dialer.blocking.filterednumberprovider";
-  }
-
-  @Override
-  @NonNull
-  public String getFileProviderAuthority() {
-    return "com.android.dialer.files";
-  }
-
-  @NonNull
-  @Override
-  public String getAnnotatedCallLogProviderAuthority() {
-    return "com.android.dialer.annotatedcalllog";
-  }
-
-  @NonNull
-  @Override
-  public String getPhoneLookupHistoryProviderAuthority() {
-    return "com.android.dialer.phonelookuphistory";
-  }
-
-  @NonNull
-  @Override
-  public String getPreferredSimFallbackProviderAuthority() {
-    return "com.android.dialer.preferredsimfallback";
-  }
-
-  @Override
-  public String getUserAgent(Context context) {
-    return null;
-  }
-
-  @NonNull
-  @Override
-  public String getSettingsActivity() {
-    return "com.android.dialer.app.settings.DialerSettingsActivity";
-  }
-}
diff --git a/java/com/android/dialer/constants/googledialer/ConstantsImpl.java b/java/com/android/dialer/constants/googledialer/ConstantsImpl.java
deleted file mode 100644
index e4a96fe..0000000
--- a/java/com/android/dialer/constants/googledialer/ConstantsImpl.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.constants;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.support.annotation.NonNull;
-import com.android.dialer.proguard.UsedByReflection;
-
-/** Provider config values for Google Dialer. */
-@UsedByReflection(value = "Constants.java")
-public class ConstantsImpl extends Constants {
-
-  @Override
-  @NonNull
-  public String getFilteredNumberProviderAuthority() {
-    return "com.google.android.dialer.blocking.filterednumberprovider";
-  }
-
-  @Override
-  @NonNull
-  public String getFileProviderAuthority() {
-    return "com.google.android.dialer.files";
-  }
-
-  @NonNull
-  @Override
-  public String getAnnotatedCallLogProviderAuthority() {
-    return "com.google.android.dialer.annotatedcalllog";
-  }
-
-  @NonNull
-  @Override
-  public String getPhoneLookupHistoryProviderAuthority() {
-    return "com.google.android.dialer.phonelookuphistory";
-  }
-
-  @NonNull
-  @Override
-  public String getPreferredSimFallbackProviderAuthority() {
-    return "com.google.android.dialer.preferredsimfallback";
-  }
-
-  @Override
-  public String getUserAgent(Context context) {
-    StringBuilder userAgent = new StringBuilder("GoogleDialer ");
-    try {
-      String versionName =
-          context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
-      userAgent.append(versionName).append(" ");
-    } catch (PackageManager.NameNotFoundException e) {
-      // ignore
-    }
-    userAgent.append(Build.FINGERPRINT);
-
-    return userAgent.toString();
-  }
-
-  @NonNull
-  @Override
-  public String getSettingsActivity() {
-    return "com.google.android.apps.dialer.settings.GoogleDialerSettingsActivity";
-  }
-}
diff --git a/java/com/android/dialer/contactphoto/AndroidManifest.xml b/java/com/android/dialer/contactphoto/AndroidManifest.xml
deleted file mode 100644
index d852d40..0000000
--- a/java/com/android/dialer/contactphoto/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest
-    package="com.android.dialer.contactphoto">
-</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/contactphoto/ContactPhotoManager.java b/java/com/android/dialer/contactphoto/ContactPhotoManager.java
index 353c1ee..fd98d2b 100644
--- a/java/com/android/dialer/contactphoto/ContactPhotoManager.java
+++ b/java/com/android/dialer/contactphoto/ContactPhotoManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,11 +24,11 @@
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.net.Uri.Builder;
-import android.support.annotation.VisibleForTesting;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.util.PermissionsUtil;
@@ -40,7 +41,6 @@
   public static final float SCALE_DEFAULT = 1.0f;
 
   public static final float OFFSET_DEFAULT = 0.0f;
-  public static final boolean IS_CIRCULAR_DEFAULT = false;
   // TODO: Use LogUtil.isVerboseEnabled for DEBUG branches instead of a lint check.
   // LINT.DoNotSubmitIf(true)
   static final boolean DEBUG = false;
@@ -55,62 +55,10 @@
   private static final String OFFSET_PARAM_KEY = "offset";
   private static final String IS_CIRCULAR_PARAM_KEY = "is_circular";
   private static final String DEFAULT_IMAGE_URI_SCHEME = "defaultimage";
-  private static final Uri DEFAULT_IMAGE_URI = Uri.parse(DEFAULT_IMAGE_URI_SCHEME + "://");
   public static final DefaultImageProvider DEFAULT_AVATAR = new LetterTileDefaultImageProvider();
   private static ContactPhotoManager instance;
 
   /**
-   * Given a {@link DefaultImageRequest}, returns an Uri that can be used to request a letter tile
-   * avatar when passed to the {@link ContactPhotoManager}. The internal implementation of this uri
-   * is not guaranteed to remain the same across application versions, so the actual uri should
-   * never be persisted in long-term storage and reused.
-   *
-   * @param request A {@link DefaultImageRequest} object with the fields configured to return a
-   * @return A Uri that when later passed to the {@link ContactPhotoManager} via {@link
-   *     #loadPhoto(ImageView, Uri, int, boolean, boolean, DefaultImageRequest)}, can be used to
-   *     request a default contact image, drawn as a letter tile using the parameters as configured
-   *     in the provided {@link DefaultImageRequest}
-   */
-  public static Uri getDefaultAvatarUriForContact(DefaultImageRequest request) {
-    final Builder builder = DEFAULT_IMAGE_URI.buildUpon();
-    if (request != null) {
-      if (!TextUtils.isEmpty(request.displayName)) {
-        builder.appendQueryParameter(DISPLAY_NAME_PARAM_KEY, request.displayName);
-      }
-      if (!TextUtils.isEmpty(request.identifier)) {
-        builder.appendQueryParameter(IDENTIFIER_PARAM_KEY, request.identifier);
-      }
-      if (request.contactType != LetterTileDrawable.TYPE_DEFAULT) {
-        builder.appendQueryParameter(CONTACT_TYPE_PARAM_KEY, String.valueOf(request.contactType));
-      }
-      if (request.scale != SCALE_DEFAULT) {
-        builder.appendQueryParameter(SCALE_PARAM_KEY, String.valueOf(request.scale));
-      }
-      if (request.offset != OFFSET_DEFAULT) {
-        builder.appendQueryParameter(OFFSET_PARAM_KEY, String.valueOf(request.offset));
-      }
-      if (request.isCircular != IS_CIRCULAR_DEFAULT) {
-        builder.appendQueryParameter(IS_CIRCULAR_PARAM_KEY, String.valueOf(request.isCircular));
-      }
-    }
-    return builder.build();
-  }
-
-  /**
-   * Adds a business contact type encoded fragment to the URL. Used to ensure photo URLS from Nearby
-   * Places can be identified as business photo URLs rather than URLs for personal contact photos.
-   *
-   * @param photoUrl The photo URL to modify.
-   * @return URL with the contact type parameter added and set to TYPE_BUSINESS.
-   */
-  public static String appendBusinessContactType(String photoUrl) {
-    Uri uri = Uri.parse(photoUrl);
-    Builder builder = uri.buildUpon();
-    builder.encodedFragment(String.valueOf(LetterTileDrawable.TYPE_BUSINESS));
-    return builder.build().toString();
-  }
-
-  /**
    * Removes the contact type information stored in the photo URI encoded fragment.
    *
    * @param photoUri The photo URI to remove the contact type from.
@@ -151,22 +99,22 @@
     try {
       String contactType = uri.getQueryParameter(CONTACT_TYPE_PARAM_KEY);
       if (!TextUtils.isEmpty(contactType)) {
-        request.contactType = Integer.valueOf(contactType);
+        request.contactType = Integer.parseInt(contactType);
       }
 
       String scale = uri.getQueryParameter(SCALE_PARAM_KEY);
       if (!TextUtils.isEmpty(scale)) {
-        request.scale = Float.valueOf(scale);
+        request.scale = Float.parseFloat(scale);
       }
 
       String offset = uri.getQueryParameter(OFFSET_PARAM_KEY);
       if (!TextUtils.isEmpty(offset)) {
-        request.offset = Float.valueOf(offset);
+        request.offset = Float.parseFloat(offset);
       }
 
       String isCircular = uri.getQueryParameter(IS_CIRCULAR_PARAM_KEY);
       if (!TextUtils.isEmpty(isCircular)) {
-        request.isCircular = Boolean.valueOf(isCircular);
+        request.isCircular = Boolean.parseBoolean(isCircular);
       }
     } catch (NumberFormatException e) {
       LogUtil.w(
@@ -194,11 +142,6 @@
     return new ContactPhotoManagerImpl(context);
   }
 
-  @VisibleForTesting
-  public static void injectContactPhotoManagerForTesting(ContactPhotoManager photoManager) {
-    instance = photoManager;
-  }
-
   protected boolean isDefaultImageUri(Uri uri) {
     return DEFAULT_IMAGE_URI_SCHEME.equals(uri.getScheme());
   }
diff --git a/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java b/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
index f7f79e1..576b040 100644
--- a/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
+++ b/java/com/android/dialer/contactphoto/ContactPhotoManagerImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -37,26 +38,30 @@
 import android.os.Handler;
 import android.os.Handler.Callback;
 import android.os.HandlerThread;
+import android.os.Looper;
 import android.os.Message;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Contacts.Photo;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Directory;
-import android.support.annotation.UiThread;
-import android.support.annotation.WorkerThread;
-import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
-import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
 import android.text.TextUtils;
 import android.util.LruCache;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
+
+import androidx.annotation.UiThread;
+import androidx.annotation.WorkerThread;
+import androidx.core.graphics.drawable.RoundedBitmapDrawable;
+import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.constants.Constants;
 import com.android.dialer.constants.TrafficStatsTags;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.UriUtils;
+
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -105,7 +110,7 @@
 
   static {
     BITMAP_UNAVAILABLE = new BitmapHolder(new byte[0], 0);
-    BITMAP_UNAVAILABLE.bitmapRef = new SoftReference<Bitmap>(null);
+    BITMAP_UNAVAILABLE.bitmapRef = new SoftReference<>(null);
   }
 
   private final Context context;
@@ -126,10 +131,9 @@
    * A map from ImageView to the corresponding photo ID or uri, encapsulated in a request. The
    * request may swapped out before the photo loading request is started.
    */
-  private final ConcurrentHashMap<ImageView, Request> pendingRequests =
-      new ConcurrentHashMap<ImageView, Request>();
+  private final ConcurrentHashMap<ImageView, Request> pendingRequests = new ConcurrentHashMap<>();
   /** Handler for messages sent to the UI thread. */
-  private final Handler mainThreadHandler = new Handler(this);
+  private final Handler mainThreadHandler = new Handler(Looper.getMainLooper(), this);
   /** For debug: How many times we had to reload cached photo for a stale entry */
   private final AtomicInteger staleCacheOverwrite = new AtomicInteger();
   /** For debug: How many times we had to reload cached photo for a fresh entry. Should be 0. */
@@ -143,7 +147,7 @@
   /** Flag indicating if the image loading is paused. */
   private boolean paused;
   /** The user agent string to use when loading URI based photos. */
-  private String userAgent;
+  private final String userAgent;
 
   public ContactPhotoManagerImpl(Context context) {
     this.context = context;
@@ -198,10 +202,7 @@
         context.getResources().getDimensionPixelSize(R.dimen.contact_browser_list_item_photo_size);
 
     // Get a user agent string to use for URI photo requests.
-    userAgent = Constants.get().getUserAgent(context);
-    if (userAgent == null) {
-      userAgent = "";
-    }
+    userAgent = "";
   }
 
   /** Converts bytes to K bytes, rounding up. Used only for debug log. */
@@ -209,7 +210,7 @@
     return ((bytes + 1023) / 1024) + "K";
   }
 
-  private static final int safeDiv(int dividend, int divisor) {
+  private static int safeDiv(int dividend, int divisor) {
     return (divisor == 0) ? 0 : (dividend / divisor);
   }
 
@@ -279,7 +280,7 @@
 
       holder.decodedSampleSize = sampleSize;
       holder.bitmap = bitmap;
-      holder.bitmapRef = new SoftReference<Bitmap>(bitmap);
+      holder.bitmapRef = new SoftReference<>(bitmap);
       if (DEBUG) {
         LogUtil.d(
             "ContactPhotoManagerImpl.inflateBitmap",
@@ -337,7 +338,7 @@
       LogUtil.d(
           "ContactPhotoManagerImpl.dumpStats",
           "L1 Stats: "
-              + bitmapHolderCache.toString()
+              + bitmapHolderCache
               + ", overwrite: fresh="
               + freshCacheOverwrite.get()
               + " stale="
diff --git a/java/com/android/dialer/contacts/ContactsComponent.java b/java/com/android/dialer/contacts/ContactsComponent.java
index 9c67737..9e374a0 100644
--- a/java/com/android/dialer/contacts/ContactsComponent.java
+++ b/java/com/android/dialer/contacts/ContactsComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,12 @@
 package com.android.dialer.contacts;
 
 import android.content.Context;
+
 import com.android.dialer.contacts.displaypreference.ContactDisplayPreferences;
 import com.android.dialer.contacts.hiresphoto.HighResolutionPhotoRequester;
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.inject.IncludeInDialerRoot;
+
 import dagger.Subcomponent;
 
 /** Component for contacts related utilities */
diff --git a/java/com/android/dialer/contacts/ContactsModule.java b/java/com/android/dialer/contacts/ContactsModule.java
index 2a27b76..a41dec2 100644
--- a/java/com/android/dialer/contacts/ContactsModule.java
+++ b/java/com/android/dialer/contacts/ContactsModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,21 +19,20 @@
 
 import android.content.Context;
 import android.os.UserManager;
+
 import com.android.dialer.contacts.displaypreference.ContactDisplayPreferences;
 import com.android.dialer.contacts.displaypreference.ContactDisplayPreferencesImpl;
 import com.android.dialer.contacts.displaypreference.ContactDisplayPreferencesStub;
 import com.android.dialer.contacts.hiresphoto.HighResolutionPhotoRequester;
 import com.android.dialer.contacts.hiresphoto.HighResolutionPhotoRequesterImpl;
 import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
+
 import dagger.Binds;
 import dagger.Lazy;
 import dagger.Module;
 import dagger.Provides;
 
 /** Module for standard {@link ContactsComponent} */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module
 public abstract class ContactsModule {
   @Provides
diff --git a/java/com/android/dialer/contacts/displaypreference/AndroidManifest.xml b/java/com/android/dialer/contacts/displaypreference/AndroidManifest.xml
deleted file mode 100644
index 2751461..0000000
--- a/java/com/android/dialer/contacts/displaypreference/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest
-    package="com.android.dialer.contacts.displaypreference">
-</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferences.java b/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferences.java
index dca466e..ea520e8 100644
--- a/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferences.java
+++ b/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferences.java
@@ -17,9 +17,13 @@
 package com.android.dialer.contacts.displaypreference;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
 import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+
+import com.android.dialer.R;
+
 import java.util.Arrays;
 
 /** Handles name ordering of a contact (Given name first or family name first.) */
diff --git a/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferencesImpl.java b/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferencesImpl.java
index 4f67b17..1691ce3 100644
--- a/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferencesImpl.java
+++ b/java/com/android/dialer/contacts/displaypreference/ContactDisplayPreferencesImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,8 +20,12 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.os.UserManager;
-import android.preference.PreferenceManager;
+
+import androidx.preference.PreferenceManager;
+
+import com.android.dialer.R;
 import com.android.dialer.inject.ApplicationContext;
+
 import javax.inject.Inject;
 
 /**
diff --git a/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequester.java b/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequester.java
index 1075ec1..13d6104 100644
--- a/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequester.java
+++ b/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequester.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.dialer.contacts.hiresphoto;
 
 import android.net.Uri;
+
 import com.google.common.util.concurrent.ListenableFuture;
 
 /**
diff --git a/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java b/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java
index 0c14613..c9dbb47 100644
--- a/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java
+++ b/java/com/android/dialer/contacts/hiresphoto/HighResolutionPhotoRequesterImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -24,15 +25,17 @@
 import android.net.Uri;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.RawContacts;
-import android.support.annotation.VisibleForTesting;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.common.database.Selection;
 import com.android.dialer.inject.ApplicationContext;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import java.util.ArrayList;
 import java.util.List;
+
 import javax.inject.Inject;
 
 /** Use the contacts sync adapter to load high resolution photos for a Google account. */
@@ -48,8 +51,7 @@
     }
   }
 
-  @VisibleForTesting
-  static final ComponentName SYNC_HIGH_RESOLUTION_PHOTO_SERVICE =
+  private static final ComponentName SYNC_HIGH_RESOLUTION_PHOTO_SERVICE =
       new ComponentName(
           "com.google.android.gms",
           "com.google.android.gms.people.sync.focus.SyncHighResPhotoIntentOperation");
diff --git a/java/com/android/dialer/contacts/resources/AndroidManifest.xml b/java/com/android/dialer/contacts/resources/AndroidManifest.xml
deleted file mode 100644
index a1222ae..0000000
--- a/java/com/android/dialer/contacts/resources/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2018 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest  package="com.android.dialer.contacts.resources"/>
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_call_note_white_24dp.png b/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_call_note_white_24dp.png
deleted file mode 100644
index 0064349..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_call_note_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_phone_attach.png b/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_phone_attach.png
deleted file mode 100644
index 0137d75..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_phone_attach.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_scroll_handle.png b/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_scroll_handle.png
deleted file mode 100644
index edc8aa2..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable-hdpi/ic_scroll_handle.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-mdpi/ic_call_note_white_24dp.png b/java/com/android/dialer/contacts/resources/res/drawable-mdpi/ic_call_note_white_24dp.png
deleted file mode 100644
index 104983d..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable-mdpi/ic_call_note_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-mdpi/ic_phone_attach.png b/java/com/android/dialer/contacts/resources/res/drawable-mdpi/ic_phone_attach.png
deleted file mode 100644
index b023799..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable-mdpi/ic_phone_attach.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-xhdpi/ic_call_note_white_24dp.png b/java/com/android/dialer/contacts/resources/res/drawable-xhdpi/ic_call_note_white_24dp.png
deleted file mode 100644
index a91205b..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable-xhdpi/ic_call_note_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-xhdpi/ic_phone_attach.png b/java/com/android/dialer/contacts/resources/res/drawable-xhdpi/ic_phone_attach.png
deleted file mode 100644
index 6bd3237..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable-xhdpi/ic_phone_attach.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-xxhdpi/ic_call_note_white_24dp.png b/java/com/android/dialer/contacts/resources/res/drawable-xxhdpi/ic_call_note_white_24dp.png
deleted file mode 100644
index 6822d70..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable-xxhdpi/ic_call_note_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-xxhdpi/ic_phone_attach.png b/java/com/android/dialer/contacts/resources/res/drawable-xxhdpi/ic_phone_attach.png
deleted file mode 100644
index dd58d1c..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable-xxhdpi/ic_phone_attach.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-xxxhdpi/ic_call_note_white_24dp.png b/java/com/android/dialer/contacts/resources/res/drawable-xxxhdpi/ic_call_note_white_24dp.png
deleted file mode 100644
index 4b7ebc9..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable-xxxhdpi/ic_call_note_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable-xxxhdpi/ic_phone_attach.png b/java/com/android/dialer/contacts/resources/res/drawable-xxxhdpi/ic_phone_attach.png
deleted file mode 100644
index e238c99..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable-xxxhdpi/ic_phone_attach.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/contacts/resources/res/drawable/back_arrow.xml b/java/com/android/dialer/contacts/resources/res/drawable/back_arrow.xml
deleted file mode 100644
index 34fa3d7..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable/back_arrow.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
-    android:autoMirrored="true"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
-</vector>
diff --git a/java/com/android/dialer/contacts/resources/res/drawable/dialog_background_material.xml b/java/com/android/dialer/contacts/resources/res/drawable/dialog_background_material.xml
deleted file mode 100644
index c93d43e..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable/dialog_background_material.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<inset xmlns:android="http://schemas.android.com/apk/res/android"
-  android:inset="16dp">
-  <shape android:shape="rectangle">
-    <corners android:radius="2dp"/>
-    <solid android:color="?android:attr/colorBackground"/>
-  </shape>
-</inset>
diff --git a/java/com/android/dialer/contacts/resources/res/drawable/ic_call_note_white_24dp.xml b/java/com/android/dialer/contacts/resources/res/drawable/ic_call_note_white_24dp.xml
new file mode 100644
index 0000000..de7b96f
--- /dev/null
+++ b/java/com/android/dialer/contacts/resources/res/drawable/ic_call_note_white_24dp.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M480,520L480,160Q480,143 491.5,131.5Q503,120 520,120L800,120Q817,120 828.5,131.5Q840,143 840,160L840,360Q840,377 828.5,388.5Q817,400 800,400L600,400L480,520ZM560,320L760,320L760,200L560,200L560,320ZM560,320L560,200L560,200L560,320L560,320ZM798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z"/>
+</vector>
diff --git a/java/com/android/dialer/contacts/resources/res/drawable/ic_work_profile.xml b/java/com/android/dialer/contacts/resources/res/drawable/ic_work_profile.xml
index 4452885..f6fba80 100644
--- a/java/com/android/dialer/contacts/resources/res/drawable/ic_work_profile.xml
+++ b/java/com/android/dialer/contacts/resources/res/drawable/ic_work_profile.xml
@@ -1,26 +1,15 @@
 <!--
-Copyright (C) 2017 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="16dp"
-        android:height="16dp"
-        android:viewportWidth="16.0"
-        android:viewportHeight="16.0">
-
-
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:tint="?attr/colorControlNormal"
+    android:viewportWidth="960"
+    android:viewportHeight="960">
     <path
-        android:pathData="M13.33,4h-2.67V2.67c0,-0.74 -0.59,-1.33 -1.33,-1.33H6.67c-0.74,0 -1.33,0.59 -1.33,1.33V4H2.67C1.93,4 1.34,4.59 1.34,5.33l-0.01,7.33c0,0.74 0.59,1.33 1.33,1.33h10.67c0.74,0 1.33,-0.59 1.33,-1.33V5.33C14.67,4.59 14.07,4 13.33,4zM8,10c-0.73,0 -1.33,-0.6 -1.33,-1.33S7.27,7.33 8,7.33s1.33,0.6 1.33,1.33S8.73,10 8,10zM9.33,4H6.67V2.67h2.67V4z"
-        android:fillColor="#757575"/>
+        android:fillColor="@android:color/white"
+        android:pathData="M160,840Q127,840 103.5,816.5Q80,793 80,760L80,320Q80,287 103.5,263.5Q127,240 160,240L320,240L320,160Q320,127 343.5,103.5Q367,80 400,80L560,80Q593,80 616.5,103.5Q640,127 640,160L640,240L800,240Q833,240 856.5,263.5Q880,287 880,320L880,760Q880,793 856.5,816.5Q833,840 800,840L160,840ZM160,760L800,760Q800,760 800,760Q800,760 800,760L800,320Q800,320 800,320Q800,320 800,320L160,320Q160,320 160,320Q160,320 160,320L160,760Q160,760 160,760Q160,760 160,760ZM400,240L560,240L560,160Q560,160 560,160Q560,160 560,160L400,160Q400,160 400,160Q400,160 400,160L400,240ZM160,760Q160,760 160,760Q160,760 160,760L160,320Q160,320 160,320Q160,320 160,320L160,320Q160,320 160,320Q160,320 160,320L160,760Q160,760 160,760Q160,760 160,760L160,760Z" />
 </vector>
diff --git a/java/com/android/dialer/contacts/resources/res/drawable/searchedittext_custom_cursor.xml b/java/com/android/dialer/contacts/resources/res/drawable/searchedittext_custom_cursor.xml
deleted file mode 100644
index 51e984c..0000000
--- a/java/com/android/dialer/contacts/resources/res/drawable/searchedittext_custom_cursor.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
-  <size android:width="2dp"/>
-  <solid android:color="?android:attr/colorPrimary"/>
-</shape>
\ No newline at end of file
diff --git a/java/com/android/dialer/contacts/resources/res/layout/account_filter_header.xml b/java/com/android/dialer/contacts/resources/res/layout/account_filter_header.xml
deleted file mode 100644
index 592c240..0000000
--- a/java/com/android/dialer/contacts/resources/res/layout/account_filter_header.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Layout showing the type of account filter
-     (e.g. All contacts filter, custom filter, etc.),
-     which is the header of all contact lists. -->
-
-<!-- Solely used to set a background color -->
-<FrameLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="match_parent"
-  android:layout_height="wrap_content"
-  android:background="?android:attr/colorBackground">
-  <!-- Used to show the touch feedback -->
-  <FrameLayout
-    android:id="@+id/account_filter_header_container"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_marginStart="@dimen/contact_browser_list_header_left_margin"
-    android:layout_marginEnd="@dimen/contact_browser_list_header_right_margin"
-    android:paddingTop="@dimen/list_header_extra_top_padding"
-    android:background="?android:attr/selectableItemBackground"
-    android:visibility="gone">
-    <!-- Shows the text and underlining -->
-    <TextView
-      android:id="@+id/account_filter_header"
-      style="@style/ContactListSeparatorTextViewStyle"
-      android:paddingStart="@dimen/contact_browser_list_item_text_indent"
-      android:paddingLeft="@dimen/contact_browser_list_item_text_indent"/>
-  </FrameLayout>
-</FrameLayout>
diff --git a/java/com/android/dialer/contacts/resources/res/layout/contact_detail_list_padding.xml b/java/com/android/dialer/contacts/resources/res/layout/contact_detail_list_padding.xml
deleted file mode 100644
index 02a5c80..0000000
--- a/java/com/android/dialer/contacts/resources/res/layout/contact_detail_list_padding.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- The actual padding is embedded in a FrameLayout since we cannot change the
-     visibility of a header view in a ListView without having a parent view. -->
-<FrameLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="match_parent"
-  android:layout_height="wrap_content">
-  <View
-    android:id="@+id/contact_detail_list_padding"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/list_header_extra_top_padding"/>
-</FrameLayout>
diff --git a/java/com/android/dialer/contacts/resources/res/layout/contact_list_card.xml b/java/com/android/dialer/contacts/resources/res/layout/contact_list_card.xml
deleted file mode 100644
index 37bb8ea..0000000
--- a/java/com/android/dialer/contacts/resources/res/layout/contact_list_card.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/list_card"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:orientation="horizontal"
-  android:visibility="invisible">
-  <View
-    android:layout_width="0dp"
-    android:layout_height="match_parent"
-    android:layout_weight="@integer/contact_list_space_layout_weight"
-    android:background="?android:attr/colorBackground"/>
-  <View
-    android:layout_width="0dp"
-    android:layout_height="match_parent"
-    android:layout_weight="@integer/contact_list_card_layout_weight"
-    android:background="?android:attr/colorBackground"
-    android:elevation="@dimen/contact_list_card_elevation"/>
-  <View
-    android:layout_width="0dp"
-    android:layout_height="match_parent"
-    android:layout_weight="@integer/contact_list_space_layout_weight"
-    android:background="?android:attr/colorBackground"/>
-</LinearLayout>
diff --git a/java/com/android/dialer/contacts/resources/res/layout/contact_list_content.xml b/java/com/android/dialer/contacts/resources/res/layout/contact_list_content.xml
deleted file mode 100644
index 3ee27a0..0000000
--- a/java/com/android/dialer/contacts/resources/res/layout/contact_list_content.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- android:paddingTop is used instead of android:layout_marginTop. It looks
-     android:layout_marginTop is ignored when used with <fragment></fragment>, which
-     only happens in Tablet UI since we rely on ViewPager in Phone UI.
-     Instead, android:layout_marginTop inside <fragment /> is effective. -->
-
-<LinearLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/pinned_header_list_layout"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:background="?attr/contact_browser_background"
-  android:orientation="vertical">
-
-  <!-- Shown only when an Account filter is set.
-       - paddingTop should be here to show "shade" effect correctly. -->
-  <include layout="@layout/account_filter_header"/>
-
-  <FrameLayout
-    android:layout_width="match_parent"
-    android:layout_height="0dip"
-    android:layout_weight="1">
-    <include layout="@layout/contact_list_card"/>
-    <view
-      android:id="@android:id/list"
-      class="com.android.contacts.common.list.PinnedHeaderListView"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:layout_marginStart="?attr/contact_browser_list_padding_left"
-      android:layout_marginEnd="?attr/contact_browser_list_padding_right"
-      android:layout_marginLeft="?attr/contact_browser_list_padding_left"
-      android:layout_marginRight="?attr/contact_browser_list_padding_right"
-      android:paddingTop="?attr/list_item_padding_top"
-      android:clipToPadding="false"
-      android:fadingEdge="none"
-      android:fastScrollEnabled="true"/>
-    <ProgressBar
-      android:id="@+id/search_progress"
-      style="?android:attr/progressBarStyleLarge"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_gravity="center"
-      android:visibility="gone"/>
-  </FrameLayout>
-
-</LinearLayout>
diff --git a/java/com/android/dialer/contacts/resources/res/layout/default_account_checkbox.xml b/java/com/android/dialer/contacts/resources/res/layout/default_account_checkbox.xml
index 9110983..6c18204 100644
--- a/java/com/android/dialer/contacts/resources/res/layout/default_account_checkbox.xml
+++ b/java/com/android/dialer/contacts/resources/res/layout/default_account_checkbox.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -34,7 +36,6 @@
         android:layout_height="wrap_content"
         android:layout_gravity="center"
         android:checked="false"/>
-    />
   </FrameLayout>
   <TextView
       android:id="@+id/default_account_checkbox_text"
diff --git a/java/com/android/dialer/contacts/resources/res/layout/dialog_call_subject.xml b/java/com/android/dialer/contacts/resources/res/layout/dialog_call_subject.xml
index d20aa3b..902fdc1 100644
--- a/java/com/android/dialer/contacts/resources/res/layout/dialog_call_subject.xml
+++ b/java/com/android/dialer/contacts/resources/res/layout/dialog_call_subject.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2015 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 
 <LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
   android:id="@+id/call_subject_dialog"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
@@ -34,7 +36,8 @@
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_centerInParent="true"
-      android:background="@drawable/dialog_background_material"
+      android:background="@drawable/dialog_background"
+      android:layout_margin="16dp"
       android:clickable="true"
       android:elevation="16dp"
       android:orientation="vertical"
@@ -95,8 +98,7 @@
         android:gravity="top"
         android:hint="@string/call_subject_hint"
         android:textColor="?android:attr/textColorSecondary"
-        android:textSize="@dimen/call_subject_dialog_secondary_text_size"
-        />
+        android:textSize="@dimen/call_subject_dialog_secondary_text_size"/>
 
       <TextView
         android:id="@+id/character_limit"
@@ -130,7 +132,7 @@
           android:layout_alignParentStart="true"
           android:layout_centerVertical="true"
           android:src="@drawable/quantum_ic_history_vd_theme_24"
-          android:tint="?colorIcon"/>
+          app:tint="?colorIcon" />
 
         <TextView
           android:id="@+id/send_and_call_button"
@@ -151,7 +153,6 @@
     android:id="@+id/subject_list"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_below="@id/dialog_view"
     android:background="?android:attr/colorBackground"
     android:divider="@null"
     android:elevation="8dp"/>
diff --git a/java/com/android/dialer/contacts/resources/res/layout/directory_header.xml b/java/com/android/dialer/contacts/resources/res/layout/directory_header.xml
deleted file mode 100644
index b8f5163..0000000
--- a/java/com/android/dialer/contacts/resources/res/layout/directory_header.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Layout used for list section separators. -->
-<LinearLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/directory_header"
-  style="@style/DirectoryHeader"
-  android:layout_width="match_parent"
-  android:layout_height="wrap_content"
-  android:paddingTop="@dimen/directory_header_extra_top_padding"
-  android:paddingBottom="@dimen/directory_header_extra_bottom_padding"
-  android:paddingStart="?attr/list_item_padding_left"
-  android:paddingEnd="?attr/list_item_padding_right"
-  android:paddingLeft="?attr/list_item_padding_left"
-  android:paddingRight="?attr/list_item_padding_right"
-  android:background="?attr/contact_browser_background"
-  android:minHeight="@dimen/list_section_divider_min_height">
-  <TextView
-    android:id="@+id/label"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:singleLine="true"
-    android:textAlignment="viewStart"
-    android:textAppearance="@style/DirectoryHeaderStyle"/>
-  <TextView
-    android:id="@+id/display_name"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:layout_marginStart="8dp"
-    android:singleLine="true"
-    android:textAlignment="viewStart"
-    android:textAppearance="@style/DirectoryHeaderStyle"/>
-  <TextView
-    android:id="@+id/count"
-    android:layout_width="0dip"
-    android:layout_height="wrap_content"
-    android:paddingTop="1dip"
-    android:gravity="end"
-    android:singleLine="true"
-    android:textAppearance="@style/DirectoryHeaderStyle"/>
-</LinearLayout>
diff --git a/java/com/android/dialer/contacts/resources/res/layout/search_bar_expanded.xml b/java/com/android/dialer/contacts/resources/res/layout/search_bar_expanded.xml
deleted file mode 100644
index c9ab6a9..0000000
--- a/java/com/android/dialer/contacts/resources/res/layout/search_bar_expanded.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<RelativeLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/search_box_expanded"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:visibility="gone">
-
-  <ImageButton
-    android:id="@+id/search_back_button"
-    android:layout_width="@dimen/search_box_icon_size"
-    android:layout_height="@dimen/search_box_icon_size"
-    android:layout_marginStart="16dp"
-    android:layout_centerVertical="true"
-    android:background="?attr/selectableItemBackgroundBorderless"
-    android:contentDescription="@string/action_menu_back_from_search"
-    android:src="@drawable/back_arrow"
-    android:tint="?colorTextOnUnthemedDarkBackground"/>
-
-  <EditText
-    android:id="@+id/search_view"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_toEndOf="@+id/search_back_button"
-    android:layout_toStartOf="@+id/search_close_button"
-    android:layout_centerVertical="true"
-    android:layout_marginStart="8dp"
-    android:background="@null"
-    android:fontFamily="@string/search_font_family"
-    android:imeOptions="flagNoExtractUi"
-    android:inputType="textFilter"
-    android:maxLines="1"
-    android:textColor="?android:attr/textColorPrimary"
-    android:textColorHint="?android:attr/textColorHint"
-    android:textCursorDrawable="@drawable/searchedittext_custom_cursor"
-    android:textSize="@dimen/search_text_size"/>
-
-  <ImageView
-    android:id="@+id/search_close_button"
-    android:layout_width="@dimen/search_box_close_icon_size"
-    android:layout_height="@dimen/search_box_close_icon_size"
-    android:layout_alignParentEnd="true"
-    android:layout_centerVertical="true"
-    android:padding="@dimen/search_box_close_icon_padding"
-    android:background="?attr/selectableItemBackgroundBorderless"
-    android:clickable="true"
-    android:contentDescription="@string/description_clear_search"
-    android:src="@drawable/quantum_ic_close_vd_theme_24"
-    android:tint="?colorIcon"/>
-</RelativeLayout>
diff --git a/java/com/android/dialer/contacts/resources/res/values-ja/donottranslate_config.xml b/java/com/android/dialer/contacts/resources/res/values-ja/donottranslate_config.xml
index 29512c0..79ede4a 100644
--- a/java/com/android/dialer/contacts/resources/res/values-ja/donottranslate_config.xml
+++ b/java/com/android/dialer/contacts/resources/res/values-ja/donottranslate_config.xml
@@ -19,15 +19,9 @@
   <!-- If true, an option is shown in Display Options UI to choose a sort order -->
   <bool name="config_sort_order_user_changeable">false</bool>
 
-  <!-- If true, the default sort order is primary (i.e. by given name) -->
-  <bool name="config_default_sort_order_primary">true</bool>
-
   <!-- If true, an option is shown in Display Options UI to choose a name display order -->
   <bool name="config_display_order_user_changeable">false</bool>
 
-  <!-- If true, the default sort order is primary (i.e. by given name) -->
-  <bool name="config_default_display_order_primary">true</bool>
-
   <!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
   <bool name="config_editor_field_order_primary">false</bool>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values-ko/donottranslate_config.xml b/java/com/android/dialer/contacts/resources/res/values-ko/donottranslate_config.xml
index 8a1c2bf..3675632 100644
--- a/java/com/android/dialer/contacts/resources/res/values-ko/donottranslate_config.xml
+++ b/java/com/android/dialer/contacts/resources/res/values-ko/donottranslate_config.xml
@@ -18,15 +18,9 @@
   <!-- If true, an option is shown in Display Options UI to choose a sort order -->
   <bool name="config_sort_order_user_changeable">false</bool>
 
-  <!-- If true, the default sort order is primary (i.e. by given name) -->
-  <bool name="config_default_sort_order_primary">false</bool>
-
   <!-- If true, an option is shown in Display Options UI to choose a name display order -->
   <bool name="config_display_order_user_changeable">false</bool>
 
-  <!-- If true, the default sort order is primary (i.e. by given name) -->
-  <bool name="config_default_display_order_primary">false</bool>
-
   <!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
   <bool name="config_editor_field_order_primary">false</bool>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values-land/integers.xml b/java/com/android/dialer/contacts/resources/res/values-land/integers.xml
deleted file mode 100644
index 26bac62..0000000
--- a/java/com/android/dialer/contacts/resources/res/values-land/integers.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2012 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<resources>
-  <integer name="contact_tile_column_count_in_favorites">3</integer>
-
-  <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
-  <integer name="snippet_length_before_tokenize">60</integer>
-</resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values-sw600dp-land/integers.xml b/java/com/android/dialer/contacts/resources/res/values-sw600dp-land/integers.xml
deleted file mode 100644
index be4eb0b..0000000
--- a/java/com/android/dialer/contacts/resources/res/values-sw600dp-land/integers.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2012 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<resources>
-  <integer name="contact_tile_column_count_in_favorites">3</integer>
-
-  <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
-  <integer name="snippet_length_before_tokenize">20</integer>
-</resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values-sw600dp/dimens.xml b/java/com/android/dialer/contacts/resources/res/values-sw600dp/dimens.xml
deleted file mode 100644
index e5773b4..0000000
--- a/java/com/android/dialer/contacts/resources/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  ~ Copyright (C) 2012 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<resources>
-  <dimen name="contact_browser_list_header_left_margin">@dimen/list_visible_scrollbar_padding
-  </dimen>
-  <dimen name="contact_browser_list_header_right_margin">24dip</dimen>
-
-  <!-- Right margin of the floating action button -->
-  <dimen name="floating_action_button_margin_right">32dp</dimen>
-  <!-- Bottom margin of the floating action button -->
-  <dimen name="floating_action_button_margin_bottom">32dp</dimen>
-</resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values-sw600dp/integers.xml b/java/com/android/dialer/contacts/resources/res/values-sw600dp/integers.xml
deleted file mode 100644
index 31aeee9..0000000
--- a/java/com/android/dialer/contacts/resources/res/values-sw600dp/integers.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2012 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<resources>
-  <integer name="contact_tile_column_count_in_favorites">3</integer>
-
-  <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
-  <!-- Yikes, there is less space on a tablet!  This makes the search experience rather
-       poor. Another reason to get rid of the exist tablet layout. -->
-  <integer name="snippet_length_before_tokenize">15</integer>
-</resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values-sw720dp-land/integers.xml b/java/com/android/dialer/contacts/resources/res/values-sw720dp-land/integers.xml
deleted file mode 100644
index 577716d..0000000
--- a/java/com/android/dialer/contacts/resources/res/values-sw720dp-land/integers.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2012 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<resources>
-  <integer name="contact_tile_column_count_in_favorites">4</integer>
-
-  <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
-  <integer name="snippet_length_before_tokenize">30</integer>
-</resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values-sw720dp/integers.xml b/java/com/android/dialer/contacts/resources/res/values-sw720dp/integers.xml
deleted file mode 100644
index 05e3093..0000000
--- a/java/com/android/dialer/contacts/resources/res/values-sw720dp/integers.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2012 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<resources>
-  <integer name="contact_tile_column_count_in_favorites">2</integer>
-
-  <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
-  <integer name="snippet_length_before_tokenize">20</integer>
-</resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values-zh-rCN/donottranslate_config.xml b/java/com/android/dialer/contacts/resources/res/values-zh-rCN/donottranslate_config.xml
index 2c130ba..3675632 100644
--- a/java/com/android/dialer/contacts/resources/res/values-zh-rCN/donottranslate_config.xml
+++ b/java/com/android/dialer/contacts/resources/res/values-zh-rCN/donottranslate_config.xml
@@ -18,15 +18,9 @@
   <!-- If true, an option is shown in Display Options UI to choose a sort order -->
   <bool name="config_sort_order_user_changeable">false</bool>
 
-  <!-- If true, the default sort order is primary (i.e. by given name) -->
-  <bool name="config_default_sort_order_primary">true</bool>
-
   <!-- If true, an option is shown in Display Options UI to choose a name display order -->
   <bool name="config_display_order_user_changeable">false</bool>
 
-  <!-- If true, the default sort order is primary (i.e. by given name) -->
-  <bool name="config_default_display_order_primary">true</bool>
-
   <!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
   <bool name="config_editor_field_order_primary">false</bool>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values-zh-rTW/donottranslate_config.xml b/java/com/android/dialer/contacts/resources/res/values-zh-rTW/donottranslate_config.xml
index 2c130ba..3675632 100644
--- a/java/com/android/dialer/contacts/resources/res/values-zh-rTW/donottranslate_config.xml
+++ b/java/com/android/dialer/contacts/resources/res/values-zh-rTW/donottranslate_config.xml
@@ -18,15 +18,9 @@
   <!-- If true, an option is shown in Display Options UI to choose a sort order -->
   <bool name="config_sort_order_user_changeable">false</bool>
 
-  <!-- If true, the default sort order is primary (i.e. by given name) -->
-  <bool name="config_default_sort_order_primary">true</bool>
-
   <!-- If true, an option is shown in Display Options UI to choose a name display order -->
   <bool name="config_display_order_user_changeable">false</bool>
 
-  <!-- If true, the default sort order is primary (i.e. by given name) -->
-  <bool name="config_default_display_order_primary">true</bool>
-
   <!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
   <bool name="config_editor_field_order_primary">false</bool>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values/colors.xml b/java/com/android/dialer/contacts/resources/res/values/colors.xml
index ab9f19b..b2acf69 100644
--- a/java/com/android/dialer/contacts/resources/res/values/colors.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/colors.xml
@@ -15,9 +15,6 @@
   -->
 
 <resources>
-  <!-- Color of the theme of the People app -->
-  <color name="people_app_theme_color">#363636</color>
-
   <!-- Darker versions of letter_tile_colors, two shades darker. These colors are used
       for settings secondary activity colors. -->
   <array name="letter_tile_colors_dark">
@@ -40,9 +37,6 @@
   <!-- Text color used for character counter when the max limit has been exceeded -->
   <color name="call_subject_limit_exceeded">#d1041c</color>
 
-  <!-- Tint color for the call subject history icon. -->
-  <color name="call_subject_history_icon">#000000</color>
-
   <!-- Divider line on the call subject dialog. -->
   <color name="call_subject_divider">#d8d8d8</color>
 
diff --git a/java/com/android/dialer/contacts/resources/res/values/dimens.xml b/java/com/android/dialer/contacts/resources/res/values/dimens.xml
index df3e53c..16078bf 100644
--- a/java/com/android/dialer/contacts/resources/res/values/dimens.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/dimens.xml
@@ -14,34 +14,15 @@
   ~ limitations under the License
   -->
 
-<resources xmlns:tools="http://schemas.android.com/tools">
-
-  <!-- Padding between the action bar's bottom edge and the first header
-       in contacts/group lists. -->
-  <dimen name="list_header_extra_top_padding">0dip</dimen>
+<resources>
 
   <!-- Minimum height used with @drawable/list_section_divider_holo_custom.
        Right now the drawable has implicit 32dip minimal height, which is confusing.
        This value is for making the hidden configuration explicit in xml. -->
   <dimen name="list_section_divider_min_height">32dip</dimen>
 
-  <dimen name="directory_header_extra_top_padding">18dp</dimen>
-  <dimen name="directory_header_extra_bottom_padding">8dp</dimen>
-
-  <!-- Padding to be used between a visible scrollbar and the contact list -->
-  <dimen name="list_visible_scrollbar_padding">32dip</dimen>
-
-  <dimen name="contact_browser_list_header_left_margin">16dip</dimen>
-  <dimen name="contact_browser_list_header_right_margin">@dimen/list_visible_scrollbar_padding
-  </dimen>
-  <dimen name="contact_browser_list_item_text_indent">8dip</dimen>
-  <!-- Width of a contact list item section header. -->
-  <dimen name="contact_list_section_header_width">56dp</dimen>
-
   <!-- contact browser list margins -->
-  <dimen name="contact_browser_list_item_text_size">16sp</dimen>
   <dimen name="contact_browser_list_item_photo_size">40dp</dimen>
-  <dimen name="contact_browser_list_item_gap_between_image_and_text">15dp</dimen>
 
   <!-- Height of the floating action button -->
   <dimen name="floating_action_button_height">56dp</dimen>
@@ -66,21 +47,6 @@
   <dimen name="tab_unread_count_text_size">12sp</dimen>
   <dimen name="tab_unread_count_text_padding">2dp</dimen>
 
-  <!-- Size of the icon (voice search, back arrow) in the search box. -->
-  <dimen name="search_box_icon_size">48dp</dimen>
-  <!-- Size of the close icon.-->
-  <dimen name="search_box_close_icon_size">56dp</dimen>
-  <!-- Padding around the close button. It's visible size without padding is 24dp. -->
-  <dimen name="search_box_close_icon_padding">16dp</dimen>
-  <!-- Padding around back arrow icon in the search box -->
-  <dimen name="search_box_navigation_icon_margin">14dp</dimen>
-  <!-- Left margin of the text field in the search box. -->
-  <dimen name="search_box_text_left_margin">15dp</dimen>
-  <!-- Search box text size -->
-  <dimen name="search_text_size">16sp</dimen>
-
-  <dimen name="contact_list_card_elevation">2dp</dimen>
-
   <!-- Padding used around the periphery of the call subject dialog, as well as in between the
        items. -->
   <dimen name="call_subject_dialog_margin">20dp</dimen>
diff --git a/java/com/android/dialer/contacts/resources/res/values/donottranslate_config.xml b/java/com/android/dialer/contacts/resources/res/values/donottranslate_config.xml
index f37e0b8..dc85a94 100644
--- a/java/com/android/dialer/contacts/resources/res/values/donottranslate_config.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/donottranslate_config.xml
@@ -18,24 +18,9 @@
   <!-- If true, an option is shown in Display Options UI to choose a sort order -->
   <bool name="config_sort_order_user_changeable">true</bool>
 
-  <!-- If true, the default sort order is primary (i.e. by given name) -->
-  <bool name="config_default_sort_order_primary">true</bool>
-
   <!-- If true, an option is shown in Display Options UI to choose a name display order -->
   <bool name="config_display_order_user_changeable">true</bool>
 
-  <!-- If true, the default sort order is primary (i.e. by given name) -->
-  <bool name="config_default_display_order_primary">true</bool>
-
   <!-- If true, the order of name fields in the editor is primary (i.e. given name first) -->
   <bool name="config_editor_field_order_primary">true</bool>
-
-  <!-- If true, an option is shown in Display Options UI to choose a default account -->
-  <bool name="config_default_account_user_changeable">true</bool>
-
-  <!-- Contacts preferences key for contact editor default account -->
-  <string name="contact_editor_default_account_key">ContactEditorUtils_default_account</string>
-
-  <!-- Contacts preferences key for contact editor anything saved -->
-  <string name="contact_editor_anything_saved_key">ContactEditorUtils_anything_saved</string>
 </resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values/integers.xml b/java/com/android/dialer/contacts/resources/res/values/integers.xml
index f4ed5c2..5e85029 100644
--- a/java/com/android/dialer/contacts/resources/res/values/integers.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/integers.xml
@@ -16,20 +16,6 @@
   -->
 
 <resources>
-
-  <!--  Determines the number of columns in a ContactTileRow in the favorites tab -->
-  <integer name="contact_tile_column_count_in_favorites">2</integer>
-
-  <!-- The number of characters in the snippet before we need to tokenize and ellipse. -->
-  <integer name="snippet_length_before_tokenize">30</integer>
-
-  <!-- Layout weight of space elements in contact list view.
-  Default to 0 to indicate no padding-->
-  <integer name="contact_list_space_layout_weight">0</integer>
-  <!-- Layout weight of card in contact list view.
-  Default to 0 to indicate no padding -->
-  <integer name="contact_list_card_layout_weight">0</integer>
-
   <!-- Duration of the animations on the call subject dialog. -->
   <integer name="call_subject_animation_duration">250</integer>
 </resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values/strings.xml b/java/com/android/dialer/contacts/resources/res/values/strings.xml
index cf24a88..7b296de 100644
--- a/java/com/android/dialer/contacts/resources/res/values/strings.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/strings.xml
@@ -122,56 +122,16 @@
   <!-- Title of the "Clearing frequently contacted" progress-dialog [CHAR LIMIT=35] -->
   <string name="clearFrequentsProgress_title">Clearing frequently contacted\u2026</string>
 
-  <!--  Used to display as default status when the contact is available for chat [CHAR LIMIT=19] -->
-  <string name="status_available">Available</string>
-
-  <!--  Used to display as default status when the contact is away or idle for chat [CHAR LIMIT=19] -->
-  <string name="status_away">Away</string>
-
-  <!--  Used to display as default status when the contact is busy or Do not disturb for chat [CHAR LIMIT=19] -->
-  <string name="status_busy">Busy</string>
-
-  <!-- Directory partition name (also exists in contacts) -->
-  <string name="contactsList">Contacts</string>
-
-  <!-- Directory partition name for p13n suggestions -->
-  <string name="contact_suggestions">Top Suggested</string>
-
-  <!-- The name of the invisible local contact directory -->
-  <string name="local_invisible_directory">Other</string>
-
   <!-- The label in section header in the contact list for a contact directory [CHAR LIMIT=128] -->
   <string name="directory_search_label">Directory</string>
 
   <!-- The label in section header in the contact list for a work contact directory [CHAR LIMIT=128] -->
   <string name="directory_search_label_work">Work directory</string>
 
-  <!-- The label in section header in the contact list for a local contacts [CHAR LIMIT=128] -->
-  <string name="local_search_label">All contacts</string>
-
-  <!-- The label in section header in the contact list for a local suggested contacts [CHAR LIMIT=128] -->
-  <string name="local_suggestions_search_label">Suggestions</string>
-
-  <!-- String describing the text on the header of the profile contact in the contacts list
-       This may be programatically capitalized. [CHAR LIMIT=20] -->
-  <string msgid="9154761216179882405" name="user_profile_contacts_list_header">Me</string>
-
   <!-- Shown as the display name for a person when the name is missing or unknown. [CHAR LIMIT=18]-->
   <string name="missing_name">(No name)</string>
 
-  <!-- String describing a contact picture that introduces users to the contact detail screen.
-
-     Used by AccessibilityService to announce the purpose of the button.
-
-     [CHAR LIMIT=NONE]
-  -->
-  <string msgid="2795575601596468581" name="description_view_contact_detail">View contact</string>
-
-  <!-- Contact list filter selection indicating that the list shows all contacts with phone numbers [CHAR LIMIT=64] -->
-  <string name="list_filter_phones">All contacts with phone numbers</string>
-
   <!-- Contact list filter selection indicating that the list shows all work contacts with phone numbers [CHAR LIMIT=64] -->
-  <string name="list_filter_phones_work">Work profile contacts</string>
 
   <!-- Button to view the updates from the current group on the group detail page [CHAR LIMIT=25] -->
   <string name="view_updates_from_group">View updates</string>
@@ -320,20 +280,6 @@
   <!-- Generic action string for starting an IM chat -->
   <string name="chat">Chat</string>
 
-  <!-- Contact list filter label indicating that the list is showing all available accounts [CHAR LIMIT=64] -->
-  <string name="list_filter_all_accounts">All contacts</string>
-
-  <!-- Displayed at the top of the contacts showing the account filter selected  [CHAR LIMIT=64] -->
-  <string name="listAllContactsInAccount">Contacts in <xliff:g example="abc@gmail.com" id="name">%s</xliff:g></string>
-
-  <!-- Displayed at the top of the contacts showing single contact. [CHAR LIMIT=64] -->
-  <string name="listCustomView">Contacts in custom view</string>
-
-  <!-- Displayed at the top of the contacts showing single contact. [CHAR LIMIT=64] -->
-  <string name="listSingleContact">Single contact</string>
-
-  <!-- Contact preferences related strings -->
-
   <!-- Label of the "sort by" display option -->
   <string name="display_options_sort_list_by">Sort by</string>
 
@@ -362,22 +308,12 @@
   <!--  String describing the icon used to clear the search field -->
   <string name="description_clear_search">Clear search</string>
 
-  <!-- The font-family to use for the text inside the searchbox. -->
-  <string name="search_font_family" translatable="false">sans-serif</string>
-
   <!-- Title for Select Account Dialog [CHAR LIMIT=30] -->
   <string name="select_account_dialog_title">Account</string>
 
   <!-- Label for the check box to toggle default sim card setting [CHAR LIMIT=35]-->
   <string name="set_default_account">Always use this for calls</string>
 
-  <!-- Title for dialog to select Phone Account for outgoing call.  [CHAR LIMIT=40] -->
-  <string name="select_phone_account_for_calls">Choose SIM for this call</string>
-
-  <!-- Checkbox label when selecting a SIM when calling a contact, to use the selected SIM for the
-   same contact and never ask again [CHAR LIMIT=40]-->
-  <string name="select_phone_account_for_calls_remember">Remember this choice</string>
-
   <!-- String used for actions in the dialer call log and the quick contact card to initiate
        a call to an individual.  The user is prompted to enter a note which is sent along with
        the call (e.g. a call subject). [CHAR LIMIT=40] -->
@@ -420,11 +356,4 @@
 
        [CHAR LIMIT=NONE]-->
   <string name="description_search_video_call">Video call</string>
-
-  <!-- Description string for an action button to initiate an enriched call from search results.
-       Note: AccessibilityServices use this attribute to announce what the view represents.
-       This is especially valuable for views without textual representation like ImageView.
-
-       [CHAR LIMIT=NONE]-->
-  <string name="description_search_call_and_share">Share and call</string>
 </resources>
diff --git a/java/com/android/dialer/contacts/resources/res/values/styles.xml b/java/com/android/dialer/contacts/resources/res/values/styles.xml
index 4f0b3f1..6ce88c3 100644
--- a/java/com/android/dialer/contacts/resources/res/values/styles.xml
+++ b/java/com/android/dialer/contacts/resources/res/values/styles.xml
@@ -51,7 +51,7 @@
     <item name="android:paddingBottom">4dip</item>
     <item name="android:ellipsize">end</item>
     <item name="android:singleLine">true</item>
-    <item name="android:textAllCaps">true</item>
+    <item name="android:textAllCaps">false</item>
   </style>
 
   <style name="TextAppearanceMedium" parent="@android:style/TextAppearance.Medium">
diff --git a/java/com/android/dialer/contactsfragment/AddContactViewHolder.java b/java/com/android/dialer/contactsfragment/AddContactViewHolder.java
index 09c222e..5e45bc6 100644
--- a/java/com/android/dialer/contactsfragment/AddContactViewHolder.java
+++ b/java/com/android/dialer/contactsfragment/AddContactViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,14 +18,17 @@
 package com.android.dialer.contactsfragment;
 
 import android.content.Context;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.view.View;
 import android.view.View.OnClickListener;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.IntentUtil;
 
 /** ViewHolder for {@link ContactsFragment} to display add contact row. */
-final class AddContactViewHolder extends ViewHolder implements OnClickListener {
+final class AddContactViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
 
   private final Context context;
 
diff --git a/java/com/android/dialer/contactsfragment/AndroidManifest.xml b/java/com/android/dialer/contactsfragment/AndroidManifest.xml
deleted file mode 100644
index 3c27500..0000000
--- a/java/com/android/dialer/contactsfragment/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest  package="com.android.dialer.contactsfragment"/>
diff --git a/java/com/android/dialer/contactsfragment/ContactViewHolder.java b/java/com/android/dialer/contactsfragment/ContactViewHolder.java
index e188332..25eab26 100644
--- a/java/com/android/dialer/contactsfragment/ContactViewHolder.java
+++ b/java/com/android/dialer/contactsfragment/ContactViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,18 +17,18 @@
 
 package com.android.dialer.contactsfragment;
 
-import android.content.Context;
 import android.net.Uri;
-import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.contactsfragment.ContactsFragment.OnContactSelectedListener;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.widget.BidiTextView;
 
 /** View holder for a contact. */
@@ -36,7 +37,6 @@
   private final TextView header;
   private final BidiTextView name;
   private final QuickContactBadge photo;
-  private final Context context;
   private final OnContactSelectedListener onContactSelectedListener;
 
   private String headerText;
@@ -46,7 +46,6 @@
   ContactViewHolder(View itemView, OnContactSelectedListener onContactSelectedListener) {
     super(itemView);
     this.onContactSelectedListener = Assert.isNotNull(onContactSelectedListener);
-    context = itemView.getContext();
     itemView.findViewById(R.id.click_target).setOnClickListener(this);
     header = itemView.findViewById(R.id.header);
     name = itemView.findViewById(R.id.contact_name);
@@ -71,10 +70,6 @@
     name.setText(displayName);
     header.setText(headerText);
     header.setVisibility(showHeader ? View.VISIBLE : View.INVISIBLE);
-
-    Logger.get(context)
-        .logQuickContactOnTouch(
-            photo, InteractionEvent.Type.OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_BADGE, true);
   }
 
   public QuickContactBadge getPhoto() {
diff --git a/java/com/android/dialer/contactsfragment/ContactsAdapter.java b/java/com/android/dialer/contactsfragment/ContactsAdapter.java
index 5afd41f..7ba25f9 100644
--- a/java/com/android/dialer/contactsfragment/ContactsAdapter.java
+++ b/java/com/android/dialer/contactsfragment/ContactsAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,18 +21,22 @@
 import android.database.Cursor;
 import android.net.Uri;
 import android.provider.ContactsContract.Contacts;
-import android.support.annotation.IntDef;
-import android.support.v4.util.ArrayMap;
-import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+
+import androidx.annotation.IntDef;
+import androidx.collection.ArrayMap;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.contactsfragment.ContactsFragment.Header;
 import com.android.dialer.contactsfragment.ContactsFragment.OnContactSelectedListener;
 import com.android.dialer.lettertile.LetterTileDrawable;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
diff --git a/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java b/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java
index d74afe5..7b2e483 100644
--- a/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java
+++ b/java/com/android/dialer/contactsfragment/ContactsCursorLoader.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,12 @@
 package com.android.dialer.contactsfragment;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.net.Uri;
 import android.provider.ContactsContract.Contacts;
 import android.text.TextUtils;
+
+import androidx.loader.content.CursorLoader;
+
 import com.android.dialer.contacts.ContactsComponent;
 
 /** Cursor Loader for {@link ContactsFragment}. */
diff --git a/java/com/android/dialer/contactsfragment/ContactsFragment.java b/java/com/android/dialer/contactsfragment/ContactsFragment.java
index f40abec..6dbbbad 100644
--- a/java/com/android/dialer/contactsfragment/ContactsFragment.java
+++ b/java/com/android/dialer/contactsfragment/ContactsFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,45 +19,46 @@
 
 import static android.Manifest.permission.READ_CONTACTS;
 
-import android.app.Fragment;
-import android.app.LoaderManager.LoaderCallbacks;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.content.Loader;
-import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.v13.app.FragmentCompat;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.Recycler;
-import android.support.v7.widget.RecyclerView.State;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnScrollChangeListener;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.performancereport.PerformanceReport;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.IntentUtil;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.widget.EmptyContentView;
 import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Arrays;
 
 /** Fragment containing a list of all contacts. */
 public class ContactsFragment extends Fragment
-    implements LoaderCallbacks<Cursor>,
+    implements LoaderManager.LoaderCallbacks<Cursor>,
         OnScrollChangeListener,
         OnEmptyViewActionButtonClickedListener {
 
@@ -69,8 +71,6 @@
     int ADD_CONTACT = 1;
   }
 
-  public static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
-
   private static final String EXTRA_HEADER = "extra_header";
   private static final String EXTRA_HAS_PHONE_NUMBERS = "extra_has_phone_numbers";
 
@@ -86,6 +86,16 @@
         }
       };
 
+  private final ActivityResultLauncher<String[]> permissionLauncher = registerForActivityResult(
+          new ActivityResultContracts.RequestMultiplePermissions(),
+          grantResults -> {
+            if (grantResults.size() >= 1  && grantResults.values().iterator().next()) {
+              String key = grantResults.keySet().iterator().next();
+              // Force a refresh of the data since we were missing the permission before this.
+              PermissionsUtil.notifyPermissionGranted(getContext(), key);
+            }
+          });
+
   private FastScroller fastScroller;
   private TextView anchoredHeader;
   private RecyclerView recyclerView;
@@ -126,26 +136,6 @@
     return fragment;
   }
 
-  /**
-   * Returns {@link ContactsFragment} with a list of contacts such that:
-   *
-   * <ul>
-   *   <li>Each contact has a phone number
-   *   <li>Contacts are filterable via {@link #updateQuery(String)}
-   *   <li>There is no list header (i.e. {@link Header#NONE}
-   *   <li>Clicking on a contact notifies the parent activity via {@link
-   *       OnContactSelectedListener#onContactSelected(ImageView, Uri, long)}.
-   * </ul>
-   */
-  public static ContactsFragment newAddFavoritesInstance() {
-    ContactsFragment fragment = new ContactsFragment();
-    Bundle args = new Bundle();
-    args.putInt(EXTRA_HEADER, Header.NONE);
-    args.putBoolean(EXTRA_HAS_PHONE_NUMBERS, true);
-    fragment.setArguments(args);
-    return fragment;
-  }
-
   @SuppressWarnings("WrongConstant")
   @Override
   public void onCreate(@Nullable Bundle savedInstanceState) {
@@ -188,7 +178,7 @@
     manager =
         new LinearLayoutManager(getContext()) {
           @Override
-          public void onLayoutChildren(Recycler recycler, State state) {
+          public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
             super.onLayoutChildren(recycler, state);
             int itemsShown = findLastVisibleItemPosition() - findFirstVisibleItemPosition() + 1;
             if (adapter.getItemCount() > itemsShown) {
@@ -223,7 +213,7 @@
     if (getActivity() != null
         && isAdded()
         && PermissionsUtil.hasContactsReadPermissions(getContext())) {
-      getLoaderManager().restartLoader(0, null, this);
+      LoaderManager.getInstance(this).restartLoader(0, null, this);
     }
   }
 
@@ -235,11 +225,6 @@
     return cursorLoader;
   }
 
-  public void updateQuery(String query) {
-    this.query = query;
-    getLoaderManager().restartLoader(0, null, this);
-  }
-
   @Override
   public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
     LogUtil.enterBlock("ContactsFragment.onLoadFinished");
@@ -253,7 +238,6 @@
       recyclerView.setVisibility(View.VISIBLE);
       adapter.updateCursor(cursor);
 
-      PerformanceReport.logOnScrollStateChange(recyclerView);
       fastScroller.setup(adapter, manager);
     }
   }
@@ -328,8 +312,7 @@
         LogUtil.i(
             "ContactsFragment.onEmptyViewActionButtonClicked",
             "Requesting permissions: " + Arrays.toString(deniedPermissions));
-        FragmentCompat.requestPermissions(
-            this, deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
+        permissionLauncher.launch(deniedPermissions);
       }
 
     } else if (emptyContentView.getActionLabel()
@@ -343,17 +326,6 @@
   }
 
   @Override
-  public void onRequestPermissionsResult(
-      int requestCode, String[] permissions, int[] grantResults) {
-    if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE) {
-      if (grantResults.length >= 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
-        // Force a refresh of the data since we were missing the permission before this.
-        PermissionsUtil.notifyPermissionGranted(getContext(), permissions[0]);
-      }
-    }
-  }
-
-  @Override
   public void onHiddenChanged(boolean hidden) {
     super.onHiddenChanged(hidden);
     OnContactsFragmentHiddenChangedListener listener =
@@ -364,7 +336,7 @@
   }
 
   private void loadContacts() {
-    getLoaderManager().initLoader(0, null, this);
+    LoaderManager.getInstance(this).initLoader(0, null, this);
     recyclerView.setVisibility(View.VISIBLE);
     emptyContentView.setVisibility(View.GONE);
   }
diff --git a/java/com/android/dialer/contactsfragment/FastScroller.java b/java/com/android/dialer/contactsfragment/FastScroller.java
index 2bd07ac..59781c9 100644
--- a/java/com/android/dialer/contactsfragment/FastScroller.java
+++ b/java/com/android/dialer/contactsfragment/FastScroller.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,15 +18,18 @@
 package com.android.dialer.contactsfragment;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
+
 /** Widget to add fast scrolling to {@link ContactsFragment}. */
 public class FastScroller extends RelativeLayout {
 
diff --git a/java/com/android/dialer/contactsfragment/res/layout/add_contact_row.xml b/java/com/android/dialer/contactsfragment/res/layout/add_contact_row.xml
index be4ee08..ac5214b 100644
--- a/java/com/android/dialer/contactsfragment/res/layout/add_contact_row.xml
+++ b/java/com/android/dialer/contactsfragment/res/layout/add_contact_row.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
  ~ Copyright (C) 2017 The Android Open Source Project
+ ~ Copyright (C) 2023 The LineageOS Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
  -->
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/click_target"
     android:orientation="horizontal"
     android:layout_width="match_parent"
@@ -33,9 +35,9 @@
       android:id="@+id/photo"
       android:layout_width="@dimen/photo_size"
       android:layout_height="@dimen/photo_size"
-      android:src="@drawable/quantum_ic_person_add_white_24"
-      android:tint="?android:attr/colorPrimary"
-      android:scaleType="center"/>
+      android:src="@drawable/quantum_ic_person_add_vd_theme_24"
+      android:scaleType="center"
+      app:tint="?colorIcon" />
 
   <TextView
       android:id="@+id/contact_name"
diff --git a/java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml b/java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml
index fa17bf9..519f122 100644
--- a/java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml
+++ b/java/com/android/dialer/contactsfragment/res/layout/fragment_contacts.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
  ~ Copyright (C) 2017 The Android Open Source Project
+ ~ Copyright (C) 2023 The LineageOS Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
@@ -19,7 +20,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-  <android.support.v7.widget.RecyclerView
+  <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/recycler_view"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
@@ -42,7 +43,7 @@
         android:id="@+id/fast_scroller_container"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_toLeftOf="@+id/fast_scroller_scroll_bar"
+        android:layout_toStartOf="@+id/fast_scroller_scroll_bar"
         android:gravity="center"
         android:textSize="48sp"
         android:textColor="?android:attr/textColorPrimaryInverse"
@@ -53,9 +54,9 @@
         android:id="@+id/fast_scroller_scroll_bar"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginLeft="8dp"
-        android:layout_alignParentRight="true"
-        android:paddingRight="16dp"
+        android:layout_marginStart="8dp"
+        android:layout_alignParentEnd="true"
+        android:paddingEnd="16dp"
         android:src="@drawable/fast_scroller_scroll_bar" />
   </com.android.dialer.contactsfragment.FastScroller>
 
diff --git a/java/com/android/dialer/contactsfragment/res/layout/header.xml b/java/com/android/dialer/contactsfragment/res/layout/header.xml
index c0ba9d7..0bedf7f 100644
--- a/java/com/android/dialer/contactsfragment/res/layout/header.xml
+++ b/java/com/android/dialer/contactsfragment/res/layout/header.xml
@@ -19,7 +19,7 @@
     android:id="@+id/header"
     android:layout_width="@dimen/header_width"
     android:layout_height="@dimen/row_height"
-    android:textColor="?android:attr/colorPrimary"
+    android:textColor="?android:attr/colorAccent"
     android:gravity="center"
     android:textStyle="bold"
-    style="@style/Dialer.TextAppearance.Header2"/>
\ No newline at end of file
+    style="@style/Dialer.TextAppearance.Header2"/>
diff --git a/java/com/android/dialer/database/CallLogQueryHandler.java b/java/com/android/dialer/database/CallLogQueryHandler.java
index de4329d..99125ca 100644
--- a/java/com/android/dialer/database/CallLogQueryHandler.java
+++ b/java/com/android/dialer/database/CallLogQueryHandler.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -32,6 +33,7 @@
 import android.provider.CallLog.Calls;
 import android.provider.VoicemailContract.Status;
 import android.provider.VoicemailContract.Voicemails;
+
 import com.android.contacts.common.database.NoNullCursorAsyncQueryHandler;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.phonenumbercache.CallLogQuery;
@@ -39,6 +41,7 @@
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.voicemailstatus.VoicemailStatusQuery;
 import com.android.voicemail.VoicemailComponent;
+
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.List;
@@ -118,7 +121,7 @@
           Status.CONTENT_URI,
           VoicemailStatusQuery.getProjection(),
           where.toString(),
-          selectionArgs.toArray(new String[selectionArgs.size()]),
+          selectionArgs.toArray(new String[0]),
           null);
     } else {
       LogUtil.i(
@@ -144,7 +147,7 @@
           Voicemails.CONTENT_URI,
           new String[] {Voicemails._ID},
           where.toString(),
-          selectionArgs.toArray(new String[selectionArgs.size()]),
+          selectionArgs.toArray(new String[0]),
           null);
     }
   }
@@ -154,12 +157,8 @@
     StringBuilder where = new StringBuilder();
     List<String> selectionArgs = new ArrayList<>();
 
-    // Always hide blocked calls.
-    where.append("(").append(Calls.TYPE).append(" != ?)");
-    selectionArgs.add(Integer.toString(Calls.BLOCKED_TYPE));
-
     // Ignore voicemails marked as deleted
-    where.append(" AND (").append(Voicemails.DELETED).append(" = 0)");
+    where.append("(").append(Voicemails.DELETED).append(" = 0)");
 
     if (newOnly) {
       where.append(" AND (").append(Calls.NEW).append(" = 1)");
@@ -211,7 +210,7 @@
         uri,
         CallLogQuery.getProjection(),
         selection,
-        selectionArgs.toArray(new String[selectionArgs.size()]),
+        selectionArgs.toArray(new String[0]),
         Calls.DEFAULT_SORT_ORDER);
   }
 
diff --git a/java/com/android/dialer/database/Database.java b/java/com/android/dialer/database/Database.java
index d13f15e..0c3a094 100644
--- a/java/com/android/dialer/database/Database.java
+++ b/java/com/android/dialer/database/Database.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.dialer.database;
 
 import android.content.Context;
+
 import java.util.Objects;
 
 /** Accessor for the database bindings. */
@@ -42,8 +44,4 @@
     }
     return databaseBindings;
   }
-
-  public static void setForTesting(DatabaseBindings databaseBindings) {
-    Database.databaseBindings = databaseBindings;
-  }
 }
diff --git a/java/com/android/dialer/database/DialerDatabaseHelper.java b/java/com/android/dialer/database/DialerDatabaseHelper.java
index 719492e..e0d92c8 100644
--- a/java/com/android/dialer/database/DialerDatabaseHelper.java
+++ b/java/com/android/dialer/database/DialerDatabaseHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -32,23 +33,22 @@
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.Directory;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
 import android.text.TextUtils;
-import com.android.contacts.common.util.StopWatch;
+
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DefaultFutureCallback;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.concurrent.DialerFutureSerializer;
 import com.android.dialer.common.database.Selection;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.contacts.resources.R;
-import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
 import com.android.dialer.smartdial.util.SmartDialNameMatcher;
 import com.android.dialer.smartdial.util.SmartDialPrefix;
 import com.android.dialer.util.PermissionsUtil;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Objects;
@@ -67,7 +67,7 @@
    *   0-98   KitKat
    * </pre>
    */
-  public static final int DATABASE_VERSION = 10;
+  public static final int DATABASE_VERSION = 11;
 
   public static final String DATABASE_NAME = "dialer.db";
 
@@ -80,26 +80,17 @@
 
   private static final String LAST_UPDATED_MILLIS = "last_updated_millis";
 
-  @VisibleForTesting
-  static final String DEFAULT_LAST_UPDATED_CONFIG_KEY = "smart_dial_default_last_update_millis";
-
   private static final String DATABASE_VERSION_PROPERTY = "database_version";
   private static final int MAX_ENTRIES = 20;
 
   private final Context context;
   private final DialerFutureSerializer dialerFutureSerializer = new DialerFutureSerializer();
 
-  private boolean isTestInstance = false;
-
   protected DialerDatabaseHelper(Context context, String databaseName, int dbVersion) {
     super(context, databaseName, null, dbVersion);
     this.context = Objects.requireNonNull(context, "Context must not be null");
   }
 
-  public void setIsTestInstance(boolean isTestInstance) {
-    this.isTestInstance = isTestInstance;
-  }
-
   /**
    * Creates tables in the database when database is created for the first time.
    *
@@ -170,45 +161,16 @@
             + " TEXT "
             + ");");
 
-    // This will need to also be updated in setupTablesForFilteredNumberTest and onUpgrade.
-    // Hardcoded so we know on glance what columns are updated in setupTables,
-    // and to be able to guarantee the state of the DB at each upgrade step.
-    db.execSQL(
-        "CREATE TABLE "
-            + Tables.FILTERED_NUMBER_TABLE
-            + " ("
-            + FilteredNumberColumns._ID
-            + " INTEGER PRIMARY KEY AUTOINCREMENT,"
-            + FilteredNumberColumns.NORMALIZED_NUMBER
-            + " TEXT UNIQUE,"
-            + FilteredNumberColumns.NUMBER
-            + " TEXT,"
-            + FilteredNumberColumns.COUNTRY_ISO
-            + " TEXT,"
-            + FilteredNumberColumns.TIMES_FILTERED
-            + " INTEGER,"
-            + FilteredNumberColumns.LAST_TIME_FILTERED
-            + " LONG,"
-            + FilteredNumberColumns.CREATION_TIME
-            + " LONG,"
-            + FilteredNumberColumns.TYPE
-            + " INTEGER,"
-            + FilteredNumberColumns.SOURCE
-            + " INTEGER"
-            + ");");
-
     setProperty(db, DATABASE_VERSION_PROPERTY, String.valueOf(DATABASE_VERSION));
-    if (!isTestInstance) {
-      resetSmartDialLastUpdatedTime();
-    }
+    resetSmartDialLastUpdatedTime();
   }
 
   public void dropTables(SQLiteDatabase db) {
     db.execSQL("DROP TABLE IF EXISTS " + Tables.PREFIX_TABLE);
     db.execSQL("DROP TABLE IF EXISTS " + Tables.SMARTDIAL_TABLE);
     db.execSQL("DROP TABLE IF EXISTS " + Tables.PROPERTIES);
-    db.execSQL("DROP TABLE IF EXISTS " + Tables.FILTERED_NUMBER_TABLE);
     db.execSQL("DROP TABLE IF EXISTS " + Tables.VOICEMAIL_ARCHIVE_TABLE);
+    db.execSQL("DROP TABLE IF EXISTS filtered_numbers_table");
   }
 
   @Override
@@ -231,30 +193,6 @@
     }
 
     if (oldVersion < 7) {
-      db.execSQL("DROP TABLE IF EXISTS " + Tables.FILTERED_NUMBER_TABLE);
-      db.execSQL(
-          "CREATE TABLE "
-              + Tables.FILTERED_NUMBER_TABLE
-              + " ("
-              + FilteredNumberColumns._ID
-              + " INTEGER PRIMARY KEY AUTOINCREMENT,"
-              + FilteredNumberColumns.NORMALIZED_NUMBER
-              + " TEXT UNIQUE,"
-              + FilteredNumberColumns.NUMBER
-              + " TEXT,"
-              + FilteredNumberColumns.COUNTRY_ISO
-              + " TEXT,"
-              + FilteredNumberColumns.TIMES_FILTERED
-              + " INTEGER,"
-              + FilteredNumberColumns.LAST_TIME_FILTERED
-              + " LONG,"
-              + FilteredNumberColumns.CREATION_TIME
-              + " LONG,"
-              + FilteredNumberColumns.TYPE
-              + " INTEGER,"
-              + FilteredNumberColumns.SOURCE
-              + " INTEGER"
-              + ");");
       oldVersion = 7;
     }
 
@@ -268,6 +206,11 @@
       oldVersion = 10;
     }
 
+    if (oldVersion < 11) {
+      db.execSQL("DROP TABLE IF EXISTS filtered_numbers_table");
+      oldVersion = 11;
+    }
+
     if (oldVersion != DATABASE_VERSION) {
       throw new IllegalStateException(
           "error upgrading the database to version " + DATABASE_VERSION);
@@ -280,6 +223,34 @@
     db.execSQL("ALTER TABLE smartdial_table ADD carrier_presence INTEGER NOT NULL DEFAULT 0");
   }
 
+  @Override
+  public void onDowngrade(SQLiteDatabase db, int oldNumber, int newNumber) {
+    // Disregard the old version and new versions provided by SQLiteOpenHelper, we will read
+    // our own from the database.
+
+    int oldVersion;
+
+    oldVersion = getPropertyAsInt(db, DATABASE_VERSION_PROPERTY, 0);
+
+    if (oldVersion == 0) {
+      LogUtil.e(
+          "DialerDatabaseHelper.onDowngrade", "malformed database version..recreating database");
+      setupTables(db);
+      return;
+    }
+
+    if (oldVersion == 70011) {
+      oldVersion = 10;
+    }
+
+    if (oldVersion != DATABASE_VERSION) {
+      throw new IllegalStateException(
+          "error downgrading the database to version " + DATABASE_VERSION);
+    }
+
+    setProperty(db, DATABASE_VERSION_PROPERTY, String.valueOf(DATABASE_VERSION));
+  }
+
   /** Stores a key-value pair in the {@link Tables#PROPERTIES} table. */
   public void setProperty(String key, String value) {
     setProperty(getWritableDatabase(), key, value);
@@ -463,8 +434,7 @@
    * @param db Database pointer to the smartdial database
    * @param updatedContactCursor Cursor pointing to the list of recently updated contacts.
    */
-  @VisibleForTesting
-  void removeUpdatedContacts(SQLiteDatabase db, Cursor updatedContactCursor) {
+  private void removeUpdatedContacts(SQLiteDatabase db, Cursor updatedContactCursor) {
     db.beginTransaction();
     try {
       updatedContactCursor.moveToPosition(-1);
@@ -476,7 +446,7 @@
           continue;
         }
 
-        final Long contactId = updatedContactCursor.getLong(UpdatedContactQuery.UPDATED_CONTACT_ID);
+        final long contactId = updatedContactCursor.getLong(UpdatedContactQuery.UPDATED_CONTACT_ID);
 
         db.delete(Tables.SMARTDIAL_TABLE, SmartDialDbColumns.CONTACT_ID + "=" + contactId, null);
         db.delete(Tables.PREFIX_TABLE, PrefixColumns.CONTACT_ID + "=" + contactId, null);
@@ -495,8 +465,7 @@
    * @param updatedContactCursor Cursor pointing to the list of recently updated contacts.
    * @param currentMillis Current time to be recorded in the smartdial table as update timestamp.
    */
-  @VisibleForTesting
-  protected void insertUpdatedContactsAndNumberPrefix(
+  private void insertUpdatedContactsAndNumberPrefix(
       SQLiteDatabase db, Cursor updatedContactCursor, Long currentMillis) {
     db.beginTransaction();
     try {
@@ -616,8 +585,7 @@
    * @param db Database pointer to the smartdial database.
    * @param nameCursor Cursor pointing to the list of distinct updated contacts.
    */
-  @VisibleForTesting
-  void insertNamePrefixes(SQLiteDatabase db, Cursor nameCursor) {
+  private void insertNamePrefixes(SQLiteDatabase db, Cursor nameCursor) {
     final int columnIndexName = nameCursor.getColumnIndex(SmartDialDbColumns.DISPLAY_NAME_PRIMARY);
     final int columnIndexContactId = nameCursor.getColumnIndex(SmartDialDbColumns.CONTACT_ID);
 
@@ -675,19 +643,13 @@
     final SQLiteDatabase db = getWritableDatabase();
 
     LogUtil.v("DialerDatabaseHelper.updateSmartDialDatabase", "starting to update database");
-    final StopWatch stopWatch = DEBUG ? StopWatch.start("Updating databases") : null;
 
     /** Gets the last update time on the database. */
     final SharedPreferences databaseLastUpdateSharedPref =
         context.getSharedPreferences(DATABASE_LAST_CREATED_SHARED_PREF, Context.MODE_PRIVATE);
 
-    long defaultLastUpdateMillis =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong(DEFAULT_LAST_UPDATED_CONFIG_KEY, 0);
-
     long sharedPrefLastUpdateMillis =
-        databaseLastUpdateSharedPref.getLong(LAST_UPDATED_MILLIS, defaultLastUpdateMillis);
+        databaseLastUpdateSharedPref.getLong(LAST_UPDATED_MILLIS, 0);
 
     final String lastUpdateMillis = String.valueOf(forceUpdate ? 0 : sharedPrefLastUpdateMillis);
 
@@ -695,20 +657,12 @@
         "DialerDatabaseHelper.updateSmartDialDatabase", "last updated at %s", lastUpdateMillis);
 
     /** Sets the time after querying the database as the current update time. */
-    final Long currentMillis = System.currentTimeMillis();
-
-    if (DEBUG) {
-      stopWatch.lap("Queried the Contacts database");
-    }
+    final long currentMillis = System.currentTimeMillis();
 
     /** Removes contacts that have been deleted. */
     removeDeletedContacts(db, lastUpdateMillis);
     removePotentiallyCorruptedContacts(db, lastUpdateMillis);
 
-    if (DEBUG) {
-      stopWatch.lap("Finished deleting deleted entries");
-    }
-
     /**
      * If the database did not exist before, jump through deletion as there is nothing to delete.
      */
@@ -739,9 +693,6 @@
       } finally {
         updatedContactCursor.close();
       }
-      if (DEBUG) {
-        stopWatch.lap("Finished deleting entries belonging to updated contacts");
-      }
     }
 
     /**
@@ -767,9 +718,6 @@
     try {
       /** Inserts recently updated phone numbers to the smartdial database. */
       insertUpdatedContactsAndNumberPrefix(db, updatedPhoneCursor, currentMillis);
-      if (DEBUG) {
-        stopWatch.lap("Finished building the smart dial table");
-      }
     } finally {
       updatedPhoneCursor.close();
     }
@@ -793,15 +741,9 @@
             new String[] {});
     if (nameCursor != null) {
       try {
-        if (DEBUG) {
-          stopWatch.lap("Queried the smart dial table for contact names");
-        }
 
         /** Inserts prefixes of names into the prefix table. */
         insertNamePrefixes(db, nameCursor);
-        if (DEBUG) {
-          stopWatch.lap("Finished building the name prefix table");
-        }
       } finally {
         nameCursor.close();
       }
@@ -857,10 +799,6 @@
             + PrefixColumns.CONTACT_ID
             + ");");
 
-    if (DEBUG) {
-      stopWatch.lap(TAG + "Finished recreating index");
-    }
-
     /** Updates the database index statistics. */
     db.execSQL("ANALYZE " + Tables.SMARTDIAL_TABLE);
     db.execSQL("ANALYZE " + Tables.PREFIX_TABLE);
@@ -868,9 +806,6 @@
     db.execSQL("ANALYZE smartdial_last_update_index");
     db.execSQL("ANALYZE nameprefix_index");
     db.execSQL("ANALYZE nameprefix_contact_id_index");
-    if (DEBUG) {
-      stopWatch.stopAndLog(TAG + "Finished updating index stats", 0);
-    }
 
     final SharedPreferences.Editor editor = databaseLastUpdateSharedPref.edit();
     editor.putLong(LAST_UPDATED_MILLIS, currentMillis);
@@ -901,8 +836,6 @@
 
     final ArrayList<ContactNumber> result = new ArrayList<>();
 
-    final StopWatch stopWatch = DEBUG ? StopWatch.start(":Name Prefix query") : null;
-
     final String currentTimeStamp = Long.toString(System.currentTimeMillis());
 
     /** Queries the database to find contacts that have an index matching the query prefix. */
@@ -945,10 +878,6 @@
       return result;
     }
     try {
-      if (DEBUG) {
-        stopWatch.lap("Prefix query completed");
-      }
-
       /** Gets the column ID from the cursor. */
       final int columnDataId = 0;
       final int columnDisplayNamePrimary = 1;
@@ -957,15 +886,9 @@
       final int columnId = 4;
       final int columnLookupKey = 5;
       final int columnCarrierPresence = 6;
-      if (DEBUG) {
-        stopWatch.lap("Found column IDs");
-      }
 
       final Set<ContactMatch> duplicates = new HashSet<>();
       int counter = 0;
-      if (DEBUG) {
-        stopWatch.lap("Moved cursor to start");
-      }
       /** Iterates the cursor to find top contact suggestions without duplication. */
       while ((cursor.moveToNext()) && (counter < MAX_ENTRIES)) {
         if (cursor.isNull(columnDataId)) {
@@ -1004,15 +927,8 @@
               new ContactNumber(
                   id, dataID, displayName, phoneNumber, lookupKey, photoId, carrierPresence));
           counter++;
-          if (DEBUG) {
-            stopWatch.lap("Added one result: Name: " + displayName);
-          }
         }
       }
-
-      if (DEBUG) {
-        stopWatch.stopAndLog(TAG + "Finished loading cursor", 0);
-      }
     } finally {
       cursor.close();
     }
@@ -1020,9 +936,6 @@
   }
 
   public interface Tables {
-
-    /** Saves a list of numbers to be blocked. */
-    String FILTERED_NUMBER_TABLE = "filtered_numbers_table";
     /** Saves the necessary smart dial information of all contacts. */
     String SMARTDIAL_TABLE = "smartdial_table";
     /** Saves all possible prefixes to refer to a contacts. */
diff --git a/java/com/android/dialer/database/FilteredNumberContract.java b/java/com/android/dialer/database/FilteredNumberContract.java
deleted file mode 100644
index 5a7153e..0000000
--- a/java/com/android/dialer/database/FilteredNumberContract.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.database;
-
-import android.net.Uri;
-import android.provider.BaseColumns;
-import com.android.dialer.constants.Constants;
-
-/**
- * The contract between the filtered number provider and applications. Contains definitions for the
- * supported URIs and columns. Currently only accessible within Dialer.
- */
-public final class FilteredNumberContract {
-
-  public static final String AUTHORITY = Constants.get().getFilteredNumberProviderAuthority();
-
-  public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
-
-  /** The type of filtering to be applied, e.g. block the number or allow the number. */
-  public interface FilteredNumberTypes {
-
-    int UNDEFINED = 0;
-    /** Dialer will disconnect the call without sending the caller to voicemail. */
-    int BLOCKED_NUMBER = 1;
-  }
-
-  /** The original source of the filtered number, e.g. the user manually added it. */
-  public interface FilteredNumberSources {
-
-    int UNDEFINED = 0;
-    /** The user manually added this number through Dialer (e.g. from the call log or InCallUI). */
-    int USER = 1;
-  }
-
-  public interface FilteredNumberColumns {
-
-    // TYPE: INTEGER
-    String _ID = "_id";
-    /**
-     * Represents the number to be filtered, normalized to compare phone numbers for equality.
-     *
-     * <p>TYPE: TEXT
-     */
-    String NORMALIZED_NUMBER = "normalized_number";
-    /**
-     * Represents the number to be filtered, for formatting and used with country iso for contact
-     * lookups.
-     *
-     * <p>TYPE: TEXT
-     */
-    String NUMBER = "number";
-    /**
-     * The country code representing the country detected when the phone number was added to the
-     * database. Most numbers don't have the country code, so a best guess is provided by the
-     * country detector system. The country iso is also needed in order to format phone numbers
-     * correctly.
-     *
-     * <p>TYPE: TEXT
-     */
-    String COUNTRY_ISO = "country_iso";
-    /**
-     * The number of times the number has been filtered by Dialer. When this number is incremented,
-     * LAST_TIME_FILTERED should also be updated to the current time.
-     *
-     * <p>TYPE: INTEGER
-     */
-    String TIMES_FILTERED = "times_filtered";
-    /**
-     * Set to the current time when the phone number is filtered. When this is updated,
-     * TIMES_FILTERED should also be incremented.
-     *
-     * <p>TYPE: LONG
-     */
-    String LAST_TIME_FILTERED = "last_time_filtered";
-    // TYPE: LONG
-    String CREATION_TIME = "creation_time";
-    /**
-     * Indicates the type of filtering to be applied.
-     *
-     * <p>TYPE: INTEGER See {@link FilteredNumberTypes}
-     */
-    String TYPE = "type";
-    /**
-     * Integer representing the original source of the filtered number.
-     *
-     * <p>TYPE: INTEGER See {@link FilteredNumberSources}
-     */
-    String SOURCE = "source";
-  }
-
-  /**
-   * Constants for the table of filtered numbers.
-   *
-   * <h3>Operations</h3>
-   *
-   * <dl>
-   * <dt><b>Insert</b>
-   * <dd>Required fields: NUMBER, NORMALIZED_NUMBER, TYPE, SOURCE. A default value will be used for
-   *     the other fields if left null.
-   * <dt><b>Update</b>
-   * <dt><b>Delete</b>
-   * <dt><b>Query</b>
-   * <dd>{@link #CONTENT_URI} can be used for any query, append an ID to retrieve a specific
-   *     filtered number entry.
-   * </dl>
-   */
-  public static class FilteredNumber implements BaseColumns {
-
-    public static final String FILTERED_NUMBERS_TABLE = "filtered_numbers_table";
-
-    /**
-     * The MIME type of a {@link android.content.ContentProvider#getType(Uri)} single filtered
-     * number.
-     */
-    public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/filtered_numbers_table";
-
-    public static final Uri CONTENT_URI =
-        Uri.withAppendedPath(AUTHORITY_URI, FILTERED_NUMBERS_TABLE);
-
-    /** This utility class cannot be instantiated. */
-    private FilteredNumber() {}
-  }
-}
diff --git a/java/com/android/dialer/databasepopulator/AndroidManifest.xml b/java/com/android/dialer/databasepopulator/AndroidManifest.xml
deleted file mode 100644
index 0a37285..0000000
--- a/java/com/android/dialer/databasepopulator/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.databasepopulator">
-</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/databasepopulator/BlockedBumberPopulator.java b/java/com/android/dialer/databasepopulator/BlockedBumberPopulator.java
deleted file mode 100644
index 0819d52..0000000
--- a/java/com/android/dialer/databasepopulator/BlockedBumberPopulator.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.databasepopulator;
-
-import android.content.ContentProviderOperation;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.OperationApplicationException;
-import android.os.RemoteException;
-import android.provider.BlockedNumberContract;
-import android.provider.BlockedNumberContract.BlockedNumbers;
-import android.support.annotation.NonNull;
-import com.android.dialer.common.Assert;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/** Populates the device database with blocked number entries. */
-public class BlockedBumberPopulator {
-
-  private static final List<ContentValues> values =
-      Arrays.asList(
-          createContentValuesWithNumber("123456789"), createContentValuesWithNumber("987654321"));
-
-  public static void populateBlockedNumber(@NonNull Context context) {
-    ArrayList<ContentProviderOperation> operations = new ArrayList<>();
-    for (ContentValues value : values) {
-      operations.add(
-          ContentProviderOperation.newInsert(BlockedNumbers.CONTENT_URI)
-              .withValues(value)
-              .withYieldAllowed(true)
-              .build());
-    }
-    try {
-      context.getContentResolver().applyBatch(BlockedNumberContract.AUTHORITY, operations);
-    } catch (RemoteException | OperationApplicationException e) {
-      Assert.fail("error adding block number entries: " + e);
-    }
-  }
-
-  public static void deleteBlockedNumbers(@NonNull Context context) {
-    // clean BlockedNumbers db
-    context.getContentResolver().delete(BlockedNumbers.CONTENT_URI, null, null);
-  }
-
-  private static ContentValues createContentValuesWithNumber(String number) {
-    ContentValues contentValues = new ContentValues();
-    contentValues.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, number);
-    return contentValues;
-  }
-}
diff --git a/java/com/android/dialer/databasepopulator/CallLogPopulator.java b/java/com/android/dialer/databasepopulator/CallLogPopulator.java
index eeefe70..093b5fb 100644
--- a/java/com/android/dialer/databasepopulator/CallLogPopulator.java
+++ b/java/com/android/dialer/databasepopulator/CallLogPopulator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
 
 package com.android.dialer.databasepopulator;
 
+import android.annotation.SuppressLint;
 import android.content.ContentProviderOperation;
 import android.content.ContentValues;
 import android.content.Context;
@@ -23,12 +25,16 @@
 import android.os.RemoteException;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
-import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.google.auto.value.AutoValue;
+
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
@@ -84,6 +90,7 @@
     populateCallLog(context, false);
   }
 
+  @SuppressLint("CheckResult")
   @WorkerThread
   public static void populateCallLog(
       @NonNull Context context, boolean isWithoutMissedCalls, boolean fastMode) {
@@ -114,7 +121,7 @@
     try {
       context.getContentResolver().applyBatch(CallLog.AUTHORITY, operations);
     } catch (RemoteException | OperationApplicationException e) {
-      Assert.fail("error adding call entries: " + e);
+      Assert.createAssertionFailException("error adding call entries: " + e);
     }
   }
 
@@ -123,6 +130,7 @@
     populateCallLog(context, true);
   }
 
+  @SuppressLint("CheckResult")
   @WorkerThread
   public static void deleteAllCallLog(@NonNull Context context) {
     Assert.isWorkerThread();
@@ -131,10 +139,10 @@
           .getContentResolver()
           .applyBatch(
               CallLog.AUTHORITY,
-              new ArrayList<>(
-                  Arrays.asList(ContentProviderOperation.newDelete(Calls.CONTENT_URI).build())));
+              new ArrayList<>(Collections.singletonList(
+                      ContentProviderOperation.newDelete(Calls.CONTENT_URI).build())));
     } catch (RemoteException | OperationApplicationException e) {
-      Assert.fail("failed to delete call log: " + e);
+      Assert.createAssertionFailException("failed to delete call log: " + e);
     }
   }
 
diff --git a/java/com/android/dialer/databasepopulator/ContactsPopulator.java b/java/com/android/dialer/databasepopulator/ContactsPopulator.java
index f21e325..c87c946 100644
--- a/java/com/android/dialer/databasepopulator/ContactsPopulator.java
+++ b/java/com/android/dialer/databasepopulator/ContactsPopulator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
 
 package com.android.dialer.databasepopulator;
 
+import android.annotation.SuppressLint;
 import android.content.ContentProviderOperation;
 import android.content.Context;
 import android.content.OperationApplicationException;
@@ -27,15 +29,19 @@
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.RawContacts;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.google.auto.value.AutoValue;
+
 import java.io.ByteArrayOutputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 /** Populates the device database with contacts. */
@@ -126,6 +132,7 @@
         .build(),
   };
 
+  @SuppressLint("CheckResult")
   @WorkerThread
   public static void populateContacts(@NonNull Context context, boolean fastMode) {
     Assert.isWorkerThread();
@@ -143,29 +150,11 @@
     try {
       context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations);
     } catch (RemoteException | OperationApplicationException e) {
-      Assert.fail("error adding contacts: " + e);
+      Assert.createAssertionFailException("error adding contacts: " + e);
     }
   }
 
-  @WorkerThread
-  public static void populateSpeedDialTestContacts(@NonNull Context context) {
-    Assert.isWorkerThread();
-    ArrayList<ContentProviderOperation> operations = new ArrayList<>();
-    addContact(SIMPLE_CONTACTS[0], operations);
-    addContact(SIMPLE_CONTACTS[3], operations);
-    addContact(SIMPLE_CONTACTS[5], operations);
-    try {
-      context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations);
-    } catch (RemoteException | OperationApplicationException e) {
-      Assert.fail("error adding contacts: " + e);
-    }
-  }
-
-  @WorkerThread
-  public static void populateContacts(@NonNull Context context) {
-    populateContacts(context, false);
-  }
-
+  @SuppressLint("CheckResult")
   @WorkerThread
   public static void deleteAllContacts(@NonNull Context context) {
     Assert.isWorkerThread();
@@ -174,11 +163,10 @@
           .getContentResolver()
           .applyBatch(
               ContactsContract.AUTHORITY,
-              new ArrayList<>(
-                  Arrays.asList(
+              new ArrayList<>(Collections.singletonList(
                       ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).build())));
     } catch (RemoteException | OperationApplicationException e) {
-      Assert.fail("failed to delete contacts: " + e);
+      Assert.createAssertionFailException("failed to delete contacts: " + e);
     }
   }
 
diff --git a/java/com/android/dialer/databasepopulator/VoicemailPopulator.java b/java/com/android/dialer/databasepopulator/VoicemailPopulator.java
index 4465056..aec765e 100644
--- a/java/com/android/dialer/databasepopulator/VoicemailPopulator.java
+++ b/java/com/android/dialer/databasepopulator/VoicemailPopulator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,16 +20,16 @@
 import android.content.ComponentName;
 import android.content.ContentValues;
 import android.content.Context;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.provider.VoicemailContract.Status;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.google.auto.value.AutoValue;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -111,16 +112,13 @@
         .delete(Voicemails.buildSourceUri(context.getPackageName()), null, null);
   }
 
-  @VisibleForTesting
-  public static void enableVoicemail(@NonNull Context context) {
+  private static void enableVoicemail(@NonNull Context context) {
     PhoneAccountHandle handle =
         new PhoneAccountHandle(new ComponentName(context, VoicemailPopulator.class), ACCOUNT_ID);
     componentName = handle.getComponentName().toString();
     ContentValues values = new ContentValues();
     values.put(Status.SOURCE_PACKAGE, handle.getComponentName().getPackageName());
-    if (VERSION.SDK_INT >= VERSION_CODES.N_MR1) {
-      values.put(Status.SOURCE_TYPE, "vvm_type_vvm3"); // mark populated voice mail as vvm3
-    }
+    values.put(Status.SOURCE_TYPE, "vvm_type_vvm3"); // mark populated voice mail as vvm3
     values.put(Status.PHONE_ACCOUNT_COMPONENT_NAME, handle.getComponentName().flattenToString());
     values.put(Status.PHONE_ACCOUNT_ID, handle.getId());
     values.put(Status.CONFIGURATION_STATE, Status.CONFIGURATION_STATE_OK);
diff --git a/java/com/android/dialer/dialpadview/AndroidManifest.xml b/java/com/android/dialer/dialpadview/AndroidManifest.xml
deleted file mode 100644
index 011a004..0000000
--- a/java/com/android/dialer/dialpadview/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.dialer.dialpadview">
-</manifest>
diff --git a/java/com/android/dialer/dialpadview/DialpadCharMappings.java b/java/com/android/dialer/dialpadview/DialpadCharMappings.java
index 11975e6..6012766 100644
--- a/java/com/android/dialer/dialpadview/DialpadCharMappings.java
+++ b/java/com/android/dialer/dialpadview/DialpadCharMappings.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,8 +18,10 @@
 package com.android.dialer.dialpadview;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v4.util.SimpleArrayMap;
+
+import androidx.annotation.NonNull;
+import androidx.collection.SimpleArrayMap;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.i18n.LocaleUtils;
 
diff --git a/java/com/android/dialer/dialpadview/DialpadFragment.java b/java/com/android/dialer/dialpadview/DialpadFragment.java
index 12c82c9..c3bd2bc 100644
--- a/java/com/android/dialer/dialpadview/DialpadFragment.java
+++ b/java/com/android/dialer/dialpadview/DialpadFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,12 +17,9 @@
 
 package com.android.dialer.dialpadview;
 
-import android.annotation.TargetApi;
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.Fragment;
 import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -35,8 +33,6 @@
 import android.media.AudioManager;
 import android.media.ToneGenerator;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.PersistableBundle;
 import android.os.Trace;
@@ -44,12 +40,9 @@
 import android.provider.Contacts.Phones;
 import android.provider.Contacts.PhonesColumns;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.design.widget.FloatingActionButton;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
 import android.telephony.PhoneNumberFormattingTextWatcher;
 import android.telephony.PhoneNumberUtils;
 import android.telephony.ServiceState;
@@ -64,6 +57,7 @@
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
+import android.view.SubMenu;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.animation.Animation;
@@ -77,8 +71,14 @@
 import android.widget.PopupMenu;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+
 import com.android.contacts.common.dialog.CallSubjectDialog;
-import com.android.contacts.common.util.StopWatch;
+import com.android.dialer.R;
 import com.android.dialer.animation.AnimUtils;
 import com.android.dialer.animation.AnimUtils.AnimationCallback;
 import com.android.dialer.callintent.CallInitiationType;
@@ -90,9 +90,7 @@
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.location.GeoUtil;
-import com.android.dialer.logging.UiAction;
 import com.android.dialer.oem.MotorolaUtils;
-import com.android.dialer.performancereport.PerformanceReport;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.proguard.UsedByReflection;
@@ -101,8 +99,9 @@
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.ViewUtil;
 import com.android.dialer.widget.FloatingActionButtonController;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
 import com.google.common.base.Ascii;
-import com.google.common.base.Optional;
+
 import java.util.HashSet;
 import java.util.List;
 import java.util.regex.Matcher;
@@ -154,11 +153,8 @@
    * device is registered over WFC. Default value is -1, which indicates that this notification is
    * not pertinent for a particular carrier. We've added a delay to prevent false positives."
    */
-  @VisibleForTesting
-  static final String KEY_EMERGENCY_NOTIFICATION_DELAY_INT = "emergency_notification_delay_int";
-
-  private static Optional<String> currentCountryIsoForTesting = Optional.absent();
-  private static Boolean showEmergencyCallWarningForTest = null;
+  private static final String KEY_EMERGENCY_NOTIFICATION_DELAY_INT =
+          "emergency_notification_delay_int";
 
   private final Object toneGeneratorLock = new Object();
   /** Set of dialpad keys that are currently being pressed */
@@ -204,6 +200,8 @@
   private boolean isLayoutRtl;
   private boolean isLandscape;
 
+  private PhoneAccountHandle selectedAccount;
+
   private DialerExecutor<String> initPhoneNumberFormattingTextWatcherExecutor;
   private boolean isDialpadSlideUp;
 
@@ -262,7 +260,6 @@
    * returns false. Only prevents input of WAIT and PAUSE digits at an unsupported position. Fails
    * early if start == -1 or start is larger than end.
    */
-  @VisibleForTesting
   /* package */ static boolean canAddDigit(CharSequence digits, int start, int end, char newDigit) {
     if (newDigit != WAIT && newDigit != PAUSE) {
       throw new IllegalArgumentException(
@@ -359,9 +356,6 @@
 
     firstLaunch = state == null;
 
-    prohibitedPhoneNumberRegexp =
-        getResources().getString(R.string.config_prohibited_phone_number_regexp);
-
     if (state != null) {
       digitsFilledByIntent = state.getBoolean(PREF_DIGITS_FILLED_BY_INTENT);
       isDialpadSlideUp = state.getBoolean(PREF_IS_DIALPAD_SLIDE_OUT);
@@ -380,7 +374,7 @@
         DialerExecutorComponent.get(getContext())
             .dialerExecutorFactory()
             .createUiTaskBuilder(
-                getFragmentManager(),
+                getParentFragmentManager(),
                 "DialpadFragment.initPhoneNumberFormattingTextWatcher",
                 new InitPhoneNumberFormattingTextWatcherWorker())
             .onSuccess(watcher -> dialpadView.getDigits().addTextChangedListener(watcher))
@@ -489,15 +483,7 @@
    * cannot be inflated in robolectric.
    */
   @SuppressWarnings("missingPermission")
-  @TargetApi(VERSION_CODES.O)
-  @VisibleForTesting
   static boolean shouldShowEmergencyCallWarning(Context context) {
-    if (showEmergencyCallWarningForTest != null) {
-      return showEmergencyCallWarningForTest;
-    }
-    if (VERSION.SDK_INT < VERSION_CODES.O) {
-      return false;
-    }
     if (!PermissionsUtil.hasReadPhoneStatePermissions(context)) {
       return false;
     }
@@ -524,11 +510,6 @@
     }
   }
 
-  @VisibleForTesting
-  static void setShowEmergencyCallWarningForTest(Boolean value) {
-    showEmergencyCallWarningForTest = value;
-  }
-
   @Override
   public void onAttach(Context context) {
     super.onAttach(context);
@@ -538,18 +519,9 @@
   }
 
   private String getCurrentCountryIso() {
-    if (currentCountryIsoForTesting.isPresent()) {
-      return currentCountryIsoForTesting.get();
-    }
-
     return GeoUtil.getCurrentCountryIso(getActivity());
   }
 
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public static void setCurrentCountryIsoForTesting(String countryCode) {
-    currentCountryIsoForTesting = Optional.of(countryCode);
-  }
-
   private boolean isLayoutReady() {
     return digits != null;
   }
@@ -744,6 +716,7 @@
     }
     floatingActionButtonController.changeIcon(
         getContext(), iconId, res.getString(R.string.description_dial_button));
+    floatingActionButtonController.changeIconColor(getContext(), R.color.dialer_call_icon_color);
 
     // if the mToneGenerator creation fails, just continue without it.  It is
     // a local audio signal, and is not as important as the dtmf tone itself.
@@ -775,44 +748,28 @@
 
     dialpadQueryListener = FragmentUtils.getParentUnsafe(this, OnDialpadQueryChangedListener.class);
 
-    final StopWatch stopWatch = StopWatch.start("Dialpad.onResume");
-
     // Query the last dialed number. Do it first because hitting
     // the DB is 'slow'. This call is asynchronous.
     queryLastOutgoingCall();
 
-    stopWatch.lap("qloc");
-
     final ContentResolver contentResolver = getActivity().getContentResolver();
 
     // retrieve the DTMF tone play back setting.
     dTMFToneEnabled =
         Settings.System.getInt(contentResolver, Settings.System.DTMF_TONE_WHEN_DIALING, 1) == 1;
 
-    stopWatch.lap("dtwd");
-
-    stopWatch.lap("hptc");
-
     pressedDialpadKeys.clear();
 
     configureScreenFromIntent(getActivity().getIntent());
 
-    stopWatch.lap("fdin");
-
     if (!isPhoneInUse()) {
       LogUtil.i("DialpadFragment.onResume", "phone not in use");
       // A sanity-check: the "dialpad chooser" UI should not be visible if the phone is idle.
       showDialpadChooser(false);
     }
 
-    stopWatch.lap("hnt");
-
     updateDeleteButtonEnabledState();
 
-    stopWatch.lap("bes");
-
-    stopWatch.stopAndLog(TAG, 50);
-
     // Populate the overflow menu in onResume instead of onCreate, so that if the SMS activity
     // is disabled while Dialer is paused, the "Send a text message" option can be correctly
     // removed when resumed.
@@ -1021,6 +978,37 @@
                 item.setVisible(CallUtil.isCallWithSubjectSupported(getContext()));
               }
             }
+
+            final MenuItem callWithItem = menu.findItem(R.id.call_with);
+            List<PhoneAccount> accounts =
+                CallUtil.getCallCapablePhoneAccounts(getContext(), PhoneAccount.SCHEME_TEL);
+            if (accounts != null && accounts.size() > 1) {
+              final PhoneAccountHandle selected;
+              if (selectedAccount != null) {
+                selected = selectedAccount;
+              } else {
+                selected = TelecomUtil.getDefaultOutgoingPhoneAccount(getContext(),
+                    PhoneAccount.SCHEME_TEL);
+              }
+
+              SubMenu callWithMenu = callWithItem.getSubMenu();
+              callWithMenu.clear();
+
+              for (PhoneAccount account : accounts) {
+                final PhoneAccountHandle handle = account.getAccountHandle();
+                final Intent intent = new Intent()
+                    .putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, handle);
+
+                callWithMenu.add(Menu.FIRST, Menu.NONE, Menu.NONE, account.getLabel())
+                    .setIntent(intent)
+                    .setChecked(handle.equals(selected));
+              }
+              callWithMenu.setGroupCheckable(Menu.FIRST, true, true);
+              callWithItem.setVisible(callWithMenu.hasVisibleItems());
+            } else {
+              callWithItem.setVisible(false);
+            }
+
             super.show();
           }
         };
@@ -1083,18 +1071,17 @@
         } else if (getActivity() != null) {
           // Voicemail is unavailable maybe because Airplane mode is turned on.
           // Check the current status and show the most appropriate error message.
-          final boolean isAirplaneModeOn =
-              Settings.System.getInt(
-                      getActivity().getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0)
-                  != 0;
+          final boolean isAirplaneModeOn = Settings.Global.getInt(
+                  getActivity().getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) != 0;
           if (isAirplaneModeOn) {
             DialogFragment dialogFragment =
                 ErrorDialogFragment.newInstance(R.string.dialog_voicemail_airplane_mode_message);
-            dialogFragment.show(getFragmentManager(), "voicemail_request_during_airplane_mode");
+            dialogFragment.show(getParentFragmentManager(),
+                    "voicemail_request_during_airplane_mode");
           } else {
             DialogFragment dialogFragment =
                 ErrorDialogFragment.newInstance(R.string.dialog_voicemail_not_ready_message);
-            dialogFragment.show(getFragmentManager(), "voicemail_not_ready");
+            dialogFragment.show(getParentFragmentManager(), "voicemail_not_ready");
           }
         }
         return true;
@@ -1162,33 +1149,14 @@
   private void handleDialButtonPressed() {
     if (isDigitsEmpty()) { // No number entered.
       // No real call made, so treat it as a click
-      PerformanceReport.recordClick(UiAction.Type.PRESS_CALL_BUTTON_WITHOUT_CALLING);
       handleDialButtonClickWithEmptyDigits();
     } else {
       final String number = digits.getText().toString();
 
-      // "persist.radio.otaspdial" is a temporary hack needed for one carrier's automated
-      // test equipment.
-      // TODO: clean it up.
-      if (number != null
-          && !TextUtils.isEmpty(prohibitedPhoneNumberRegexp)
-          && number.matches(prohibitedPhoneNumberRegexp)) {
-        PerformanceReport.recordClick(UiAction.Type.PRESS_CALL_BUTTON_WITHOUT_CALLING);
-        LogUtil.i(
-            "DialpadFragment.handleDialButtonPressed",
-            "The phone number is prohibited explicitly by a rule.");
-        if (getActivity() != null) {
-          DialogFragment dialogFragment =
-              ErrorDialogFragment.newInstance(R.string.dialog_phone_call_prohibited_message);
-          dialogFragment.show(getFragmentManager(), "phone_prohibited_dialog");
-        }
-
-        // Clear the digits just in case.
-        clearDialpad();
-      } else {
-        PreCall.start(getContext(), new CallIntentBuilder(number, CallInitiationType.Type.DIALPAD));
-        hideAndClearDialpad();
-      }
+      CallIntentBuilder builder = new CallIntentBuilder(number, CallInitiationType.Type.DIALPAD)
+          .setPhoneAccountHandle(selectedAccount);
+      PreCall.start(getContext(), builder);
+      hideAndClearDialpad();
     }
   }
 
@@ -1196,6 +1164,7 @@
     if (digits != null) {
       digits.getText().clear();
     }
+    selectedAccount = null;
   }
 
   private void handleDialButtonClickWithEmptyDigits() {
@@ -1208,10 +1177,6 @@
       startActivity(newFlashIntent());
     } else {
       if (!TextUtils.isEmpty(lastNumberDialed)) {
-        // Dialpad will be filled with last called number,
-        // but we don't want to record it as user action
-        PerformanceReport.setIgnoreActionOnce(UiAction.Type.TEXT_CHANGE_WITH_INPUT);
-
         // Recall the last number dialed.
         digits.setText(lastNumberDialed);
 
@@ -1420,6 +1385,12 @@
 
   @Override
   public boolean onMenuItemClick(MenuItem item) {
+    if (item.getGroupId() == Menu.FIRST) {
+      Intent intent = item.getIntent();
+      selectedAccount = intent.getParcelableExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE,
+              PhoneAccountHandle.class);
+      return true;
+    }
     int resId = item.getItemId();
     if (resId == R.id.menu_2s_pause) {
       updateDialString(PAUSE);
@@ -1785,8 +1756,8 @@
     static final int DIALPAD_CHOICE_RETURN_TO_CALL = 102;
     static final int DIALPAD_CHOICE_ADD_NEW_CALL = 103;
     private static final int NUM_ITEMS = 3;
-    private LayoutInflater inflater;
-    private ChoiceItem[] choiceItems = new ChoiceItem[NUM_ITEMS];
+    private final LayoutInflater inflater;
+    private final ChoiceItem[] choiceItems = new ChoiceItem[NUM_ITEMS];
 
     DialpadChooserAdapter(Context context) {
       // Cache the LayoutInflate to avoid asking for a new one each time.
@@ -1858,9 +1829,9 @@
     // Simple struct for a single "choice" item.
     static class ChoiceItem {
 
-      String text;
-      Bitmap icon;
-      int id;
+      final String text;
+      final Bitmap icon;
+      final int id;
 
       ChoiceItem(String s, Bitmap b, int i) {
         text = s;
@@ -1938,7 +1909,6 @@
    * formatting for such numbers until libphonenumber is fixed (which will come as early as the next
    * Android release).
    */
-  @VisibleForTesting
   public static class DialerPhoneNumberFormattingTextWatcher
       extends PhoneNumberFormattingTextWatcher {
     private static final Pattern AR_DOMESTIC_CALL_MOBILE_NUMBER_PATTERN;
diff --git a/java/com/android/dialer/dialpadview/DialpadKeyButton.java b/java/com/android/dialer/dialpadview/DialpadKeyButton.java
index 47553b6..6b8d818 100644
--- a/java/com/android/dialer/dialpadview/DialpadKeyButton.java
+++ b/java/com/android/dialer/dialpadview/DialpadKeyButton.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -50,7 +51,7 @@
   private AccessibilityManager accessibilityManager;
 
   /** Bounds used to filter HOVER_EXIT events. */
-  private RectF hoverBounds = new RectF();
+  private final RectF hoverBounds = new RectF();
 
   /** Alternate content description for long-hover state. */
   private CharSequence longHoverContentDesc;
diff --git a/java/com/android/dialer/dialpadview/DialpadTextView.java b/java/com/android/dialer/dialpadview/DialpadTextView.java
index 9607195..8a1a8c3 100644
--- a/java/com/android/dialer/dialpadview/DialpadTextView.java
+++ b/java/com/android/dialer/dialpadview/DialpadTextView.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,7 +22,8 @@
 import android.graphics.Paint;
 import android.graphics.Rect;
 import android.util.AttributeSet;
-import android.widget.TextView;
+
+import androidx.appcompat.widget.AppCompatTextView;
 
 /**
  * This is a custom text view intended for rendering text on the dialpad. TextView has built-in
@@ -31,9 +33,9 @@
  * to a larger default, for the dialpad we use this class to more precisely render characters
  * according to the precise amount of space they need.
  */
-public class DialpadTextView extends TextView {
+public class DialpadTextView extends AppCompatTextView {
 
-  private Rect textBounds = new Rect();
+  private final Rect textBounds = new Rect();
   private String textStr;
 
   public DialpadTextView(Context context, AttributeSet attrs) {
diff --git a/java/com/android/dialer/dialpadview/DialpadView.java b/java/com/android/dialer/dialpadview/DialpadView.java
index 6d538f3..a5811f3 100644
--- a/java/com/android/dialer/dialpadview/DialpadView.java
+++ b/java/com/android/dialer/dialpadview/DialpadView.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -38,10 +39,12 @@
 import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.TextView;
+
 import com.android.dialer.animation.AnimUtils;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.i18n.LocaleUtils;
+
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
 import java.util.Locale;
diff --git a/java/com/android/dialer/dialpadview/DigitsEditText.java b/java/com/android/dialer/dialpadview/DigitsEditText.java
index 4a4b9b4..3d30d7f 100644
--- a/java/com/android/dialer/dialpadview/DigitsEditText.java
+++ b/java/com/android/dialer/dialpadview/DigitsEditText.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,6 +23,7 @@
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.inputmethod.InputMethodManager;
+
 import com.android.dialer.widget.ResizingTextEditText;
 
 /** EditText which suppresses IME show up. */
diff --git a/java/com/android/dialer/dialpadview/PseudoEmergencyAnimator.java b/java/com/android/dialer/dialpadview/PseudoEmergencyAnimator.java
index f3442e6..be6c257 100644
--- a/java/com/android/dialer/dialpadview/PseudoEmergencyAnimator.java
+++ b/java/com/android/dialer/dialpadview/PseudoEmergencyAnimator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023-2024 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,6 +26,9 @@
 import android.graphics.ColorFilter;
 import android.graphics.LightingColorFilter;
 import android.os.Handler;
+import android.os.Looper;
+import android.os.VibrationAttributes;
+import android.os.VibrationEffect;
 import android.os.Vibrator;
 import android.view.View;
 
@@ -92,7 +96,7 @@
                   viewProvider.getFab().getBackground().clearColorFilter();
                 }
 
-                new Handler()
+                new Handler(Looper.getMainLooper())
                     .postDelayed(
                         () -> {
                           try {
@@ -126,9 +130,13 @@
   private void vibrate(long milliseconds) {
     Context context = viewProvider.getContext();
     if (context != null) {
-      Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
-      if (vibrator != null) {
-        vibrator.vibrate(milliseconds);
+      Vibrator vibrator = context.getSystemService(Vibrator.class);
+      if (vibrator != null && vibrator.hasVibrator()) {
+        VibrationEffect effect = VibrationEffect.createOneShot(milliseconds,
+                VibrationEffect.DEFAULT_AMPLITUDE);
+        VibrationAttributes attributes = VibrationAttributes.createForUsage(
+                VibrationAttributes.USAGE_COMMUNICATION_REQUEST);
+        vibrator.vibrate(effect, attributes);
       }
     }
   }
diff --git a/java/com/android/dialer/dialpadview/SpecialCharSequenceMgr.java b/java/com/android/dialer/dialpadview/SpecialCharSequenceMgr.java
index d2652ee..616df5a 100644
--- a/java/com/android/dialer/dialpadview/SpecialCharSequenceMgr.java
+++ b/java/com/android/dialer/dialpadview/SpecialCharSequenceMgr.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2006 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,9 +19,6 @@
 
 import android.Manifest;
 import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.DialogFragment;
 import android.app.KeyguardManager;
 import android.app.ProgressDialog;
 import android.content.ActivityNotFoundException;
@@ -29,13 +27,8 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.database.Cursor;
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.Config;
-import android.graphics.Color;
 import android.net.Uri;
 import android.provider.Settings;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.PhoneNumberUtils;
@@ -45,18 +38,23 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
-import android.view.ViewTreeObserver.OnGlobalLayoutListener;
 import android.view.WindowManager;
 import android.widget.EditText;
-import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.Toast;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.DialogFragment;
+
 import com.android.common.io.MoreCloseables;
 import com.android.contacts.common.database.NoNullCursorAsyncQueryHandler;
 import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment;
 import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener;
 import com.android.contacts.common.widget.SelectPhoneAccountDialogOptionsUtil;
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
@@ -64,11 +62,7 @@
 import com.android.dialer.oem.TranssionUtils;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.PermissionsUtil;
-import com.google.zxing.BarcodeFormat;
-import com.google.zxing.MultiFormatWriter;
-import com.google.zxing.WriterException;
-import com.google.zxing.common.BitMatrix;
-import java.util.Arrays;
+
 import java.util.List;
 import java.util.Locale;
 
@@ -78,7 +72,7 @@
 public class SpecialCharSequenceMgr {
   private static final String TAG_SELECT_ACCT_FRAGMENT = "tag_select_acct_fragment";
 
-  @VisibleForTesting static final String MMI_IMEI_DISPLAY = "*#06#";
+  private static final String MMI_IMEI_DISPLAY = "*#06#";
   private static final String MMI_REGULATORY_INFO_DISPLAY = "*#07#";
   /** ***** This code is used to handle SIM Contact queries ***** */
   private static final String ADN_PHONE_NUMBER_COLUMN_NAME = "number";
@@ -184,7 +178,7 @@
     // accessed from the emergency dialer.
     KeyguardManager keyguardManager =
         (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
-    if (keyguardManager.inKeyguardRestrictedInputMode()) {
+    if (keyguardManager.isKeyguardLocked()) {
       return false;
     }
 
@@ -241,7 +235,8 @@
                           subscriptionAccountHandles)
                       .build(),
                   callback);
-          dialogFragment.show(((Activity) context).getFragmentManager(), TAG_SELECT_ACCT_FRAGMENT);
+          dialogFragment.show(((AppCompatActivity) context).getSupportFragmentManager(),
+                  TAG_SELECT_ACCT_FRAGMENT);
         }
 
         return true;
@@ -298,7 +293,8 @@
                 SelectPhoneAccountDialogOptionsUtil.builderWithAccounts(subscriptionAccountHandles)
                     .build(),
                 listener);
-        dialogFragment.show(((Activity) context).getFragmentManager(), TAG_SELECT_ACCT_FRAGMENT);
+        dialogFragment.show(((AppCompatActivity) context).getSupportFragmentManager(),
+                TAG_SELECT_ACCT_FRAGMENT);
       }
       return true;
     }
@@ -325,25 +321,18 @@
       ViewGroup holder = customView.findViewById(R.id.deviceids_holder);
 
       if (TelephonyManagerCompat.getPhoneCount(telephonyManager) > 1) {
-        for (int slot = 0; slot < telephonyManager.getPhoneCount(); slot++) {
-          String deviceId = telephonyManager.getDeviceId(slot);
+        for (int slot = 0; slot < telephonyManager.getActiveModemCount(); slot++) {
+          String deviceId = telephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM
+                  ? telephonyManager.getImei(slot)
+                  : telephonyManager.getMeid(slot);
           if (!TextUtils.isEmpty(deviceId)) {
-            addDeviceIdRow(
-                holder,
-                deviceId,
-                /* showDecimal */
-                context.getResources().getBoolean(R.bool.show_device_id_in_hex_and_decimal),
-                /* showBarcode */ false);
+            addDeviceIdRow(holder, deviceId);
           }
         }
       } else {
-        addDeviceIdRow(
-            holder,
-            telephonyManager.getDeviceId(),
-            /* showDecimal */
-            context.getResources().getBoolean(R.bool.show_device_id_in_hex_and_decimal),
-            /* showBarcode */
-            context.getResources().getBoolean(R.bool.show_device_id_as_barcode));
+        addDeviceIdRow(holder, telephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM
+                ? telephonyManager.getImei()
+                : telephonyManager.getMeid());
       }
 
       new AlertDialog.Builder(context)
@@ -359,8 +348,7 @@
     return false;
   }
 
-  private static void addDeviceIdRow(
-      ViewGroup holder, String deviceId, boolean showDecimal, boolean showBarcode) {
+  private static void addDeviceIdRow(ViewGroup holder, String deviceId) {
     if (TextUtils.isEmpty(deviceId)) {
       return;
     }
@@ -370,43 +358,7 @@
             LayoutInflater.from(holder.getContext()).inflate(R.layout.row_deviceid, holder, false);
     holder.addView(row);
 
-    // Remove the check digit, if exists. This digit is a checksum of the ID.
-    // See https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity
-    // and https://en.wikipedia.org/wiki/Mobile_equipment_identifier
-    String hex = deviceId.length() == 15 ? deviceId.substring(0, 14) : deviceId;
-
-    // If this is the valid length IMEI or MEID (14 digits), show it in all formats, otherwise fall
-    // back to just showing the raw hex
-    if (hex.length() == 14 && showDecimal) {
-      ((TextView) row.findViewById(R.id.deviceid_hex)).setText(hex);
-      ((TextView) row.findViewById(R.id.deviceid_dec)).setText(getDecimalFromHex(hex));
-      row.findViewById(R.id.deviceid_dec_label).setVisibility(View.VISIBLE);
-    } else {
-      row.findViewById(R.id.deviceid_hex_label).setVisibility(View.GONE);
-      ((TextView) row.findViewById(R.id.deviceid_hex)).setText(deviceId);
-    }
-
-    final ImageView barcode = row.findViewById(R.id.deviceid_barcode);
-    if (showBarcode) {
-      // Wait until the layout pass has completed so we the barcode is measured before drawing. We
-      // do this by adding a layout listener and setting the bitmap after getting the callback.
-      barcode
-          .getViewTreeObserver()
-          .addOnGlobalLayoutListener(
-              new OnGlobalLayoutListener() {
-                @Override
-                public void onGlobalLayout() {
-                  barcode.getViewTreeObserver().removeOnGlobalLayoutListener(this);
-                  Bitmap barcodeBitmap =
-                      generateBarcode(hex, barcode.getWidth(), barcode.getHeight());
-                  if (barcodeBitmap != null) {
-                    barcode.setImageBitmap(barcodeBitmap);
-                  }
-                }
-              });
-    } else {
-      barcode.setVisibility(View.GONE);
-    }
+    ((TextView) row.findViewById(R.id.deviceid_hex)).setText(deviceId);
   }
 
   private static String getDecimalFromHex(String hex) {
@@ -445,32 +397,6 @@
     return builder.toString();
   }
 
-  /**
-   * This method generates a 2d barcode using the zxing library. Each pixel of the bitmap is either
-   * black or white painted vertically. We determine which color using the BitMatrix.get(x, y)
-   * method.
-   */
-  private static Bitmap generateBarcode(String hex, int width, int height) {
-    MultiFormatWriter writer = new MultiFormatWriter();
-    String data = Uri.encode(hex);
-
-    try {
-      BitMatrix bitMatrix = writer.encode(data, BarcodeFormat.CODE_128, width, 1);
-      Bitmap bitmap = Bitmap.createBitmap(bitMatrix.getWidth(), height, Config.RGB_565);
-
-      for (int i = 0; i < bitMatrix.getWidth(); i++) {
-        // Paint columns of width 1
-        int[] column = new int[height];
-        Arrays.fill(column, bitMatrix.get(i, 0) ? Color.BLACK : Color.WHITE);
-        bitmap.setPixels(column, 0, 1, i, 0, 1, height);
-      }
-      return bitmap;
-    } catch (WriterException e) {
-      LogUtil.e("SpecialCharSequenceMgr.generateBarcode", "error generating barcode", e);
-    }
-    return null;
-  }
-
   private static boolean handleRegulatoryInfoDisplay(Context context, String input) {
     if (input.equals(MMI_REGULATORY_INFO_DISPLAY)) {
       LogUtil.i(
@@ -539,8 +465,8 @@
     public int contactNum;
 
     // Used to identify the query request.
-    private int token;
-    private QueryHandler handler;
+    private final int token;
+    private final QueryHandler handler;
 
     // The text field we're going to update
     private EditText textField;
diff --git a/java/com/android/dialer/dialpadview/res/drawable-land/rounded_dialpad_bg.xml b/java/com/android/dialer/dialpadview/res/drawable-land/rounded_dialpad_bg.xml
new file mode 100644
index 0000000..c0af27c
--- /dev/null
+++ b/java/com/android/dialer/dialpadview/res/drawable-land/rounded_dialpad_bg.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/rounded_dialpad_bg_color" />
+</shape>
diff --git a/java/com/android/dialer/dialpadview/res/drawable/ic_wifi_calling.xml b/java/com/android/dialer/dialpadview/res/drawable/ic_wifi_calling.xml
index 9687133..70c54bb 100644
--- a/java/com/android/dialer/dialpadview/res/drawable/ic_wifi_calling.xml
+++ b/java/com/android/dialer/dialpadview/res/drawable/ic_wifi_calling.xml
@@ -1,29 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
 -->
-
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
     android:height="24dp"
-    android:tint="?attr/colorControlNormal"
-    android:viewportHeight="30"
-    android:viewportWidth="30"
-    android:width="24dp">
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
   <path
       android:fillColor="@android:color/white"
-      android:pathData="M14.88,16.3h0L25,3.66a16.51,16.51 0,0 0,-20.3 0L14.88,16.3Z"/>
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M26.42,18.88a1.25,1.25 0,0 0,-0.89 -0.36,1.28 1.28,0 0,0 -0.87,0.35 14.26,14.26 0,0 1,-3.32 2.31,1.24 1.24,0 0,0 -0.7,1.12v3.87a18.27,18.27 0,0 1,-5.75 0.91,18.63 18.63,0 0,1 -5.75,-0.9v-3.87a1.26,1.26 0,0 0,-0.7 -1.12,14.73 14.73,0 0,1 -3.34,-2.31 1.23,1.23 0,0 0,-0.87 -0.35,1.25 1.25,0 0,0 -0.89,0.36L0.24,22a1.24,1.24 0,0 0,-0.36 0.89,1.23 1.23,0 0,0 0.37,0.87 21.26,21.26 0,0 0,29.26 0,1.27 1.27,0 0,0 0,-1.77Z"/>
-</vector>
\ No newline at end of file
+      android:pathData="M660,420L439,198Q489,160 546,140Q603,120 660,120Q716,120 772.5,140.5Q829,161 880,200L660,420ZM660,306L749,218Q731,209 708.5,204.5Q686,200 660,200Q633,200 610.5,204.5Q588,209 570,217L660,306ZM660,306L660,306Q660,306 660,306Q660,306 660,306Q660,306 660,306Q660,306 660,306L660,306ZM798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z"/>
+</vector>
diff --git a/java/com/android/dialer/dialpadview/res/drawable/rounded_dialpad_bg.xml b/java/com/android/dialer/dialpadview/res/drawable/rounded_dialpad_bg.xml
new file mode 100644
index 0000000..4540c31
--- /dev/null
+++ b/java/com/android/dialer/dialpadview/res/drawable/rounded_dialpad_bg.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/rounded_dialpad_bg_color" />
+    <corners
+        android:topLeftRadius="28dp"
+        android:topRightRadius="28dp" />
+</shape>
diff --git a/java/com/android/dialer/dialpadview/res/drawable/shadow_fade_up.xml b/java/com/android/dialer/dialpadview/res/drawable/shadow_fade_up.xml
deleted file mode 100644
index 86d37a9..0000000
--- a/java/com/android/dialer/dialpadview/res/drawable/shadow_fade_up.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-  android:shape="rectangle">
-  <gradient
-    android:angle="90"
-    android:endColor="@null"
-    android:startColor="#1a000000"
-    android:type="linear"/>
-</shape>
\ No newline at end of file
diff --git a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_fragment.xml b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_fragment.xml
index 66013c6..d60fbba 100644
--- a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_fragment.xml
+++ b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_fragment.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2011 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -67,14 +68,14 @@
           android:layout_height="@dimen/floating_action_button_margin_bottom"
           android:layout_alignParentBottom="true"/>
 
-      <android.support.design.widget.FloatingActionButton
+      <com.google.android.material.floatingactionbutton.FloatingActionButton
           android:id="@+id/dialpad_floating_action_button"
           android:layout_width="@dimen/floating_action_button_width"
           android:layout_height="@dimen/floating_action_button_height"
           android:layout_above="@id/dialpad_floating_action_button_margin_bottom"
           android:layout_centerHorizontal="true"
           android:contentDescription="@string/description_dial_button"
-          android:src="@drawable/quantum_ic_call_white_24"
+          android:src="@drawable/quantum_ic_call_vd_theme_24"
           android:visibility="invisible"
           app:backgroundTint="@color/dialer_call_green"
           app:elevation="@dimen/floating_action_button_translation_z"/>
diff --git a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key.xml b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key.xml
index 91d2506..178a20e 100644
--- a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key.xml
+++ b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key.xml
@@ -29,7 +29,7 @@
     <FrameLayout
         android:layout_width="@dimen/dialpad_key_number_width"
         android:layout_height="wrap_content"
-        android:layout_marginRight="@dimen/dialpad_key_margin_right">
+        android:layout_marginEnd="@dimen/dialpad_key_margin_right">
       <com.android.dialer.dialpadview.DialpadTextView
           android:id="@+id/dialpad_key_number"
           style="@style/DialpadKeyNumberStyle"/>
diff --git a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml
index 55bf092..c5ab88f 100644
--- a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml
+++ b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_one.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
+<!--
+     Copyright (C) 2014 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -17,6 +19,7 @@
 <!-- A layout representing key "1" in the dialpad -->
 <com.android.dialer.dialpadview.DialpadKeyButton
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/one"
     style="@style/DialpadKeyButtonStyle">
 
@@ -30,7 +33,7 @@
     <FrameLayout
         android:layout_width="@dimen/dialpad_key_number_width"
         android:layout_height="wrap_content"
-        android:layout_marginRight="@dimen/dialpad_key_margin_right">
+        android:layout_marginEnd="@dimen/dialpad_key_margin_right">
       <com.android.dialer.dialpadview.DialpadTextView
           android:id="@+id/dialpad_key_number"
           style="@style/DialpadKeyNumberStyle"/>
@@ -45,8 +48,8 @@
           android:layout_width="wrap_content"
           android:layout_height="@dimen/dialpad_voicemail_icon_size"
           android:scaleType="fitCenter"
-          android:src="@drawable/quantum_ic_voicemail_white_24"
-          android:tint="?colorIcon"/>
+          android:src="@drawable/quantum_ic_voicemail_vd_theme_24"
+          app:tint="?colorIcon" />
     </LinearLayout>
 
     <!-- A placeholder to make the width the same as other dialpad keys. -->
diff --git a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_pound.xml b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_pound.xml
index feaa904..4c3419e 100644
--- a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_pound.xml
+++ b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_pound.xml
@@ -30,7 +30,7 @@
     <FrameLayout
         android:layout_width="@dimen/dialpad_key_number_width"
         android:layout_height="wrap_content"
-        android:layout_marginRight="@dimen/dialpad_key_margin_right">
+        android:layout_marginEnd="@dimen/dialpad_key_margin_right">
       <com.android.dialer.dialpadview.DialpadTextView
           android:id="@id/dialpad_key_number"
           style="@style/DialpadKeyPoundStyle"/>
diff --git a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_star.xml b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_star.xml
index 5c57f3b..318dc87 100644
--- a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_star.xml
+++ b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_star.xml
@@ -30,7 +30,7 @@
     <FrameLayout
         android:layout_width="@dimen/dialpad_key_number_width"
         android:layout_height="wrap_content"
-        android:layout_marginRight="@dimen/dialpad_key_margin_right">
+        android:layout_marginEnd="@dimen/dialpad_key_margin_right">
       <com.android.dialer.dialpadview.DialpadTextView
           android:id="@id/dialpad_key_number"
           style="@style/DialpadKeyStarStyle"/>
diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad.xml
index fe4e286..bca24e6 100644
--- a/java/com/android/dialer/dialpadview/res/layout/dialpad.xml
+++ b/java/com/android/dialer/dialpadview/res/layout/dialpad.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2006 The Android Open Source Project
+<!--
+     Copyright (C) 2006 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad_fragment.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad_fragment.xml
index 3497d2a..71c2977 100644
--- a/java/com/android/dialer/dialpadview/res/layout/dialpad_fragment.xml
+++ b/java/com/android/dialer/dialpadview/res/layout/dialpad_fragment.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2011 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -13,12 +14,14 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<view xmlns:android="http://schemas.android.com/apk/res/android"
+<view
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     class="com.android.dialer.dialpadview.DialpadFragment$DialpadSlidingRelativeLayout"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:orientation="horizontal">
+    android:orientation="horizontal"
+    android:forceDarkAllowed="false">
 
   <LinearLayout
       android:layout_width="match_parent"
@@ -32,11 +35,6 @@
         android:layout_height="0dp"
         android:layout_weight="1"
         android:background="#00000000"/>
-    <!-- Dialpad shadow -->
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/shadow_length"
-        android:background="@drawable/shadow_fade_up"/>
     <include layout="@layout/dialpad_view"/>
     <!-- "Dialpad chooser" UI, shown only when the user brings up the
              Dialer while a call is already in progress.
@@ -58,7 +56,7 @@
       android:layout_height="@dimen/floating_action_button_margin_bottom"
       android:layout_alignParentBottom="true"/>
 
-  <android.support.design.widget.FloatingActionButton
+  <com.google.android.material.floatingactionbutton.FloatingActionButton
       android:id="@+id/dialpad_floating_action_button"
       android:layout_width="@dimen/floating_action_button_width"
       android:layout_height="@dimen/floating_action_button_height"
diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml
index 0d8a0f0..e841d9e 100644
--- a/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml
+++ b/java/com/android/dialer/dialpadview/res/layout/dialpad_key_one.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2006 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 <!-- A layout representing key "1" in the dialpad -->
 <com.android.dialer.dialpadview.DialpadKeyButton
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/one"
     style="@style/DialpadKeyButtonStyle">
 
@@ -45,8 +47,8 @@
           android:layout_width="wrap_content"
           android:layout_height="@dimen/dialpad_voicemail_icon_size"
           android:scaleType="fitCenter"
-          android:src="@drawable/quantum_ic_voicemail_white_24"
-          android:tint="?colorIcon"/>
+          android:src="@drawable/quantum_ic_voicemail_vd_theme_24"
+          app:tint="?attr/dialpad_text_color_secondary"/>
     </LinearLayout>
   </LinearLayout>
 </com.android.dialer.dialpadview.DialpadKeyButton>
diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad_view_unthemed.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad_view_unthemed.xml
index 9953fa3..431e44d 100644
--- a/java/com/android/dialer/dialpadview/res/layout/dialpad_view_unthemed.xml
+++ b/java/com/android/dialer/dialpadview/res/layout/dialpad_view_unthemed.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!--
+     Copyright (C) 2015 The Android Open Source Project
+     Copyright (C) 2023-2024 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -13,7 +15,10 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.dialer.dialpadview.DialpadView xmlns:android="http://schemas.android.com/apk/res/android"
+<com.android.dialer.dialpadview.DialpadView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/dialpad_view"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -58,7 +63,7 @@
     <View
         android:layout_width="match_parent"
         android:layout_height="1dp"
-        android:background="#e3e3e3"/>
+        android:background="@android:color/transparent"/>
 
   </LinearLayout>
 
@@ -68,37 +73,40 @@
       android:id="@+id/digits_container"
       android:layout_width="match_parent"
       android:layout_height="?attr/dialpad_digits_adjustable_height"
-      android:orientation="horizontal">
+      android:orientation="horizontal"
+      tools:layout_height="50dp">
 
     <ImageButton
         android:id="@+id/dialpad_back"
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
         android:layout_margin="@dimen/dialpad_overflow_margin"
-        android:paddingLeft="@dimen/dialpad_digits_menu_left_padding"
-        android:paddingRight="@dimen/dialpad_digits_menu_right_padding"
+        android:paddingStart="@dimen/dialpad_digits_menu_left_padding"
+        android:paddingEnd="@dimen/dialpad_digits_menu_right_padding"
         android:background="@drawable/btn_dialpad_key"
         android:contentDescription="@string/description_dialpad_back"
         android:gravity="center"
-        android:src="@drawable/quantum_ic_close_white_24"
-        android:tint="?colorIcon"
+        android:src="@drawable/quantum_ic_close_vd_theme_24"
         android:tintMode="src_in"
-        android:visibility="gone"/>
+        android:visibility="gone"
+        app:tint="@color/dialer_theme_color_light" />
 
     <ImageButton
         android:id="@+id/dialpad_overflow"
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
         android:layout_margin="@dimen/dialpad_overflow_margin"
-        android:paddingLeft="@dimen/dialpad_digits_menu_left_padding"
-        android:paddingRight="@dimen/dialpad_digits_menu_right_padding"
+        android:paddingStart="@dimen/dialpad_digits_menu_left_padding"
+        android:paddingEnd="@dimen/dialpad_digits_menu_right_padding"
         android:background="@drawable/btn_dialpad_key"
         android:contentDescription="@string/description_dialpad_overflow"
         android:gravity="center"
-        android:src="@drawable/quantum_ic_more_vert_white_24"
-        android:tint="?colorIcon"
+        android:src="@drawable/quantum_ic_more_vert_vd_theme_24"
         android:tintMode="src_in"
-        android:visibility="gone"/>
+        android:visibility="gone"
+        app:tint="@color/dialer_theme_color_light"
+        tools:visibility="visible"/>
+
       <FrameLayout android:layout_width="0dp"
           android:layout_height="match_parent"
           android:layout_weight="1">
@@ -138,18 +146,19 @@
         android:layout_height="match_parent"
         android:paddingLeft="@dimen/dialpad_digits_padding"
         android:paddingRight="@dimen/dialpad_digits_padding"
+        android:layout_margin="@dimen/dialpad_overflow_margin"
         android:background="@drawable/btn_dialpad_key"
         android:contentDescription="@string/description_delete_button"
-        android:src="@drawable/quantum_ic_backspace_white_24"
+        android:src="@drawable/quantum_ic_backspace_vd_theme_24"
         android:state_enabled="false"
-        android:tint="?colorIcon"
-        android:tintMode="src_in"/>
+        android:tintMode="src_in"
+        app:tint="@color/dialer_theme_color_light" />
   </LinearLayout>
 
   <View
       android:layout_width="match_parent"
       android:layout_height="1dp"
-      android:background="#e3e3e3"/>
+      android:background="@android:color/transparent"/>
 
   <Space
       android:layout_width="match_parent"
diff --git a/java/com/android/dialer/dialpadview/res/layout/row_deviceid.xml b/java/com/android/dialer/dialpadview/res/layout/row_deviceid.xml
index 6eab46b..2096052 100644
--- a/java/com/android/dialer/dialpadview/res/layout/row_deviceid.xml
+++ b/java/com/android/dialer/dialpadview/res/layout/row_deviceid.xml
@@ -19,34 +19,9 @@
     android:layout_marginTop="?dialogPreferredPadding"
     android:orientation="vertical">
   <TextView
-      android:id="@+id/deviceid_hex_label"
-      style="@style/DeviceIdBody"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:text="@string/hex"/>
-  <TextView
       android:id="@+id/deviceid_hex"
       style="@style/DeviceIdBody"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textIsSelectable="true"/>
-  <TextView
-      android:id="@+id/deviceid_dec_label"
-      style="@style/DeviceIdBody"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:text="@string/dec"
-      android:visibility="gone"/>
-  <TextView
-      android:id="@+id/deviceid_dec"
-      style="@style/DeviceIdBody"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:textIsSelectable="true"/>
-  <ImageView
-      android:id="@+id/deviceid_barcode"
-      android:layout_width="match_parent"
-      android:layout_height="@dimen/barcode_height"
-      android:layout_margin="24dp"
-      android:layout_gravity="center_horizontal"/>
 </LinearLayout>
diff --git a/java/com/android/dialer/dialpadview/res/menu/dialpad_options.xml b/java/com/android/dialer/dialpadview/res/menu/dialpad_options.xml
index 2921ea3..1972968 100644
--- a/java/com/android/dialer/dialpadview/res/menu/dialpad_options.xml
+++ b/java/com/android/dialer/dialpadview/res/menu/dialpad_options.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2011 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -13,18 +14,23 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto">
+  <item
+    android:id="@+id/call_with"
+    android:title="@string/call_via">
+    <menu />
+  </item>
   <item
     android:id="@+id/menu_2s_pause"
-    android:showAsAction="withText"
-    android:title="@string/add_2sec_pause"/>
+    android:title="@string/add_2sec_pause"
+    app:showAsAction="withText" />
   <item
     android:id="@+id/menu_add_wait"
-    android:showAsAction="withText"
-    android:title="@string/add_wait"/>
+    android:title="@string/add_wait"
+    app:showAsAction="withText" />
   <item
     android:id="@+id/menu_call_with_note"
-    android:showAsAction="withText"
-    android:title="@string/call_with_a_note"/>
+    android:title="@string/call_with_a_note"
+    app:showAsAction="withText" />
 </menu>
diff --git a/java/com/android/dialer/dialpadview/res/values-af/strings.xml b/java/com/android/dialer/dialpadview/res/values-af/strings.xml
index 0e55e31..190f824 100644
--- a/java/com/android/dialer/dialpadview/res/values-af/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-af/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM-kaartkontakte</string>
   <string name="menu_callNumber">Bel %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Kan nie noodoproepe oor Wi-Fi maak nie</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Kan nie hierdie nommer bel nie</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-am/strings.xml b/java/com/android/dialer/dialpadview/res/values-am/strings.xml
index 6a72de5..1efe98e 100644
--- a/java/com/android/dialer/dialpadview/res/values-am/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-am/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">የSIM ካርድ ዕውቂያዎች</string>
   <string name="menu_callNumber">ወደ %s ደውል</string>
   <string name="dialpad_hint_emergency_calling_not_available">በWi‑Fi በኩል የአደጋ ጊዜ ጥሪዎችን ማድረግ አይቻልም</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">ይህን ቁጥር መደወል አልተቻለም</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ar/strings.xml b/java/com/android/dialer/dialpadview/res/values-ar/strings.xml
index 8878403..e4129bd 100644
--- a/java/com/android/dialer/dialpadview/res/values-ar/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ar/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">‏شريحة SIM وجهات الاتصال</string>
   <string name="menu_callNumber">الاتصال بالرقم %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">‏يتعذّر إجراء مكالمات طوارئ عبر WiFi.</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">لا يمكن الاتصال بهذا الرقم</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-az/strings.xml b/java/com/android/dialer/dialpadview/res/values-az/strings.xml
index 1c2bf36..791ac02 100644
--- a/java/com/android/dialer/dialpadview/res/values-az/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-az/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM kart kontaktları</string>
   <string name="menu_callNumber">%s nömrəsinə zəng edin</string>
   <string name="dialpad_hint_emergency_calling_not_available">Wi‑Fi vasitəsilə təcili zənglər etmək mümkün deyil</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Bu nömrəyə zəng etmək mümkün deyil</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/dialpadview/res/values-b+sr+Latn/strings.xml
index f9986cb..4ee7427 100644
--- a/java/com/android/dialer/dialpadview/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-b+sr+Latn/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontakti na SIM kartici</string>
   <string name="menu_callNumber">Pozovi %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Ne možete da upućujete hitne pozive preko Wi‑Fi-ja</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Nije moguće pozvati ovaj broj</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-be/strings.xml b/java/com/android/dialer/dialpadview/res/values-be/strings.xml
index 829ccf6..0f58446 100644
--- a/java/com/android/dialer/dialpadview/res/values-be/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-be/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Кантакты SIM-карты</string>
   <string name="menu_callNumber">Выклікаць %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Экстранныя выклікі ў сетцы Wi‑Fi недаступныя</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Немагчыма выклікаць гэты нумар</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-bg/strings.xml b/java/com/android/dialer/dialpadview/res/values-bg/strings.xml
index 1ccdcce..3be739e 100644
--- a/java/com/android/dialer/dialpadview/res/values-bg/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-bg/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Контакти от SIM картата</string>
   <string name="menu_callNumber">Обаждане на %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Не може да се извършват спешни обаждания през Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Не можете да се обадите на този номер</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-bn/strings.xml b/java/com/android/dialer/dialpadview/res/values-bn/strings.xml
index ff18b17..994c1ae 100644
--- a/java/com/android/dialer/dialpadview/res/values-bn/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-bn/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">সিম কার্ডের পরিচিতিগুলি</string>
   <string name="menu_callNumber">%s নম্বরে কল করুন</string>
   <string name="dialpad_hint_emergency_calling_not_available">ওয়াই-ফাইয়ের মাধ্যমে জরুরি কল করা যাবে না</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">এই নম্বরে কল করা যাবে না</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-bs/strings.xml b/java/com/android/dialer/dialpadview/res/values-bs/strings.xml
index 404a052..b49ba26 100644
--- a/java/com/android/dialer/dialpadview/res/values-bs/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-bs/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontakti sa SIM kartice</string>
   <string name="menu_callNumber">Pozivanje broja %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Nije moguće uspostaviti hitne pozive putem WiFi-ja</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Nije moguće pozvati ovaj broj</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ca/strings.xml b/java/com/android/dialer/dialpadview/res/values-ca/strings.xml
index 31695af..9c489d4 100644
--- a/java/com/android/dialer/dialpadview/res/values-ca/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ca/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Contactes de la targeta SIM</string>
   <string name="menu_callNumber">Truca al %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">No es poden fer trucades d\'emergència per Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">No es pot trucar a aquest número</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-cs/strings.xml b/java/com/android/dialer/dialpadview/res/values-cs/strings.xml
index 458386e..063a368 100644
--- a/java/com/android/dialer/dialpadview/res/values-cs/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-cs/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontakty na SIM kartě</string>
   <string name="menu_callNumber">Zavolat %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Přes Wi‑Fi nelze uskutečňovat tísňová volání</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Na toto číslo není možné zavolat</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-da/strings.xml b/java/com/android/dialer/dialpadview/res/values-da/strings.xml
index 7cec9e0..fb21453 100644
--- a/java/com/android/dialer/dialpadview/res/values-da/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-da/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontaktpersoner på SIM-kortet</string>
   <string name="menu_callNumber">Ring til %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Det er ikke muligt at foretage nødopkald via Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Det er ikke muligt at ringe til dette nummer</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-de/strings.xml b/java/com/android/dialer/dialpadview/res/values-de/strings.xml
index eaeeac6..671d489 100644
--- a/java/com/android/dialer/dialpadview/res/values-de/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-de/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontakte auf SIM-Karte</string>
   <string name="menu_callNumber">%s anrufen</string>
   <string name="dialpad_hint_emergency_calling_not_available">Notrufe über WLAN nicht möglich</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Diese Nummer kann nicht angerufen werden</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-el/strings.xml b/java/com/android/dialer/dialpadview/res/values-el/strings.xml
index e0cd1ce..0a5c64e 100644
--- a/java/com/android/dialer/dialpadview/res/values-el/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-el/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Επαφές στην κάρτα SIM</string>
   <string name="menu_callNumber">Κλήση %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Δεν είναι δυνατές οι κλήσεις έκτακτης ανάγκης μέσω Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Δεν μπορείτε να καλέσετε αυτόν τον αριθμό</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-en-rAU/strings.xml b/java/com/android/dialer/dialpadview/res/values-en-rAU/strings.xml
index ca78287..56c8f18 100644
--- a/java/com/android/dialer/dialpadview/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-en-rAU/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM card contacts</string>
   <string name="menu_callNumber">Call %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Can’t make emergency calls over Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Can\'t call this number</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-en-rGB/strings.xml b/java/com/android/dialer/dialpadview/res/values-en-rGB/strings.xml
index ca78287..56c8f18 100644
--- a/java/com/android/dialer/dialpadview/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-en-rGB/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM card contacts</string>
   <string name="menu_callNumber">Call %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Can’t make emergency calls over Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Can\'t call this number</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-en-rIN/strings.xml b/java/com/android/dialer/dialpadview/res/values-en-rIN/strings.xml
index ca78287..56c8f18 100644
--- a/java/com/android/dialer/dialpadview/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-en-rIN/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM card contacts</string>
   <string name="menu_callNumber">Call %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Can’t make emergency calls over Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Can\'t call this number</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-es-rUS/strings.xml b/java/com/android/dialer/dialpadview/res/values-es-rUS/strings.xml
index 893e6e5..fa70787 100644
--- a/java/com/android/dialer/dialpadview/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-es-rUS/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Contactos de la tarjeta SIM</string>
   <string name="menu_callNumber">Llamar al %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">No se pueden hacer llamadas de emergencia con Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">No se puede llamar a este número</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-es/strings.xml b/java/com/android/dialer/dialpadview/res/values-es/strings.xml
index 92fcdba..58d459a 100644
--- a/java/com/android/dialer/dialpadview/res/values-es/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-es/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Contactos de la tarjeta SIM</string>
   <string name="menu_callNumber">Llamar al %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">No se pueden hacer llamadas de emergencia por Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">No se puede llamar a este número</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-et/strings.xml b/java/com/android/dialer/dialpadview/res/values-et/strings.xml
index d9747fd..f91b58e 100644
--- a/java/com/android/dialer/dialpadview/res/values-et/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-et/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM-kaardi kontaktid</string>
   <string name="menu_callNumber">Helistamine numbrile %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">WiFi kaudu ei saa hädaabikõnesid teha</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Sellele numbrile ei saa helistada</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-eu/strings.xml b/java/com/android/dialer/dialpadview/res/values-eu/strings.xml
index 7b966c2..293af60 100644
--- a/java/com/android/dialer/dialpadview/res/values-eu/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-eu/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM txarteleko kontaktuak</string>
   <string name="menu_callNumber">Deitu %s zenbakira</string>
   <string name="dialpad_hint_emergency_calling_not_available">Ezin duzu egin larrialdi-deirik Wi-Fi bidez</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Ezin da deitu zenbaki honetara</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-fa/strings.xml b/java/com/android/dialer/dialpadview/res/values-fa/strings.xml
index 2364649..113af1d 100644
--- a/java/com/android/dialer/dialpadview/res/values-fa/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-fa/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">مخاطبین سیم‌کارت</string>
   <string name="menu_callNumber">تماس با %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">‏برقراری تماس اضطراری ازطریق Wi‑Fi امکان‌پذیر نیست</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">تماس با این شماره ممکن نیست</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-fi/strings.xml b/java/com/android/dialer/dialpadview/res/values-fi/strings.xml
index 8fabff2..5466455 100644
--- a/java/com/android/dialer/dialpadview/res/values-fi/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-fi/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM-kortin yhteystiedot</string>
   <string name="menu_callNumber">Soita %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Hätäpuhelujen soittaminen Wi-Fi-yhteyden kautta ei onnistu</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Numeroon ei voi soittaa.</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-fr-rCA/strings.xml b/java/com/android/dialer/dialpadview/res/values-fr-rCA/strings.xml
index 022cbdc..892b7be 100644
--- a/java/com/android/dialer/dialpadview/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-fr-rCA/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Contacts de la carte SIM</string>
   <string name="menu_callNumber">Appeler le %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Impossible d\'effectuer des appels d\'urgence par Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Vous ne pouvez pas appeler ce numéro</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-fr/strings.xml b/java/com/android/dialer/dialpadview/res/values-fr/strings.xml
index 33f1726..d44ffe0 100644
--- a/java/com/android/dialer/dialpadview/res/values-fr/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-fr/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Contacts de la carte SIM</string>
   <string name="menu_callNumber">Appeler le %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Impossible de passer des appels d\'urgence via le Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Impossible d\'appeler ce numéro</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-gl/strings.xml b/java/com/android/dialer/dialpadview/res/values-gl/strings.xml
index 11f5d10..dc40ce7 100644
--- a/java/com/android/dialer/dialpadview/res/values-gl/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-gl/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Contactos da tarxeta SIM</string>
   <string name="menu_callNumber">Chamar ao %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Non se poden realizar chamadas de urxencia por wifi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Non é posible chamar a este número</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-gu/strings.xml b/java/com/android/dialer/dialpadview/res/values-gu/strings.xml
index d059b41..19eeec1 100644
--- a/java/com/android/dialer/dialpadview/res/values-gu/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-gu/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM કાર્ડ સંપર્કો</string>
   <string name="menu_callNumber">%s પર કૉલ કરો</string>
   <string name="dialpad_hint_emergency_calling_not_available">વાઇ-ફાઇ પરથી કટોકટીના કૉલ કરી શકાતા નથી</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">આ નંબર પર કૉલ કરી શકાતો નથી</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-hi/strings.xml b/java/com/android/dialer/dialpadview/res/values-hi/strings.xml
index 75f5ef1..136c7da 100644
--- a/java/com/android/dialer/dialpadview/res/values-hi/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-hi/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM कार्ड के संपर्क</string>
   <string name="menu_callNumber">%s पर कॉल करें</string>
   <string name="dialpad_hint_emergency_calling_not_available">वाई-फ़ाई के ज़रिए आपातकालीन कॉल नहीं किए जा सकते</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">इस नंबर पर कॉल नहीं किया जा सकता</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-hr/strings.xml b/java/com/android/dialer/dialpadview/res/values-hr/strings.xml
index ec12a12..6aae9ef 100644
--- a/java/com/android/dialer/dialpadview/res/values-hr/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-hr/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontakti na SIM kartici</string>
   <string name="menu_callNumber">Nazovite %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Nije moguće upućivati hitne pozive putem Wi‑Fi-ja</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Nije moguće nazvati taj broj</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-hu/strings.xml b/java/com/android/dialer/dialpadview/res/values-hu/strings.xml
index 9b67a5e..1ba80ea 100644
--- a/java/com/android/dialer/dialpadview/res/values-hu/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-hu/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Névjegyek a SIM-kártyán</string>
   <string name="menu_callNumber">Hívás: %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Nem lehet segélyhívást kezdeményezni Wi-Fi-n keresztül</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Nem lehet felhívni ezt a számot</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-hy/strings.xml b/java/com/android/dialer/dialpadview/res/values-hy/strings.xml
index f0bf7e9..316bb76 100644
--- a/java/com/android/dialer/dialpadview/res/values-hy/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-hy/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM քարտի կոնտակտներ</string>
   <string name="menu_callNumber">Զանգել %s համարին</string>
   <string name="dialpad_hint_emergency_calling_not_available">Շտապ կանչերը հասանելի չեն Wi‑Fi-ի միջոցով</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Հնարավոր չէ զանգել այս համարին</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-in/strings.xml b/java/com/android/dialer/dialpadview/res/values-in/strings.xml
index f1768a6..0da5ad3 100644
--- a/java/com/android/dialer/dialpadview/res/values-in/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-in/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontak di kartu SIM</string>
   <string name="menu_callNumber">Telepon %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Tidak dapat melakukan panggilan darurat melalui Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Tidak dapat menelepon nomor ini</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-is/strings.xml b/java/com/android/dialer/dialpadview/res/values-is/strings.xml
index 2379882..0a42d79 100644
--- a/java/com/android/dialer/dialpadview/res/values-is/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-is/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Tengiliðir á SIM-korti</string>
   <string name="menu_callNumber">Hringja í %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Ekki er hægt að hringja neyðarsímtöl með Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Ekki er hægt að hringja í þetta númer</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-it/strings.xml b/java/com/android/dialer/dialpadview/res/values-it/strings.xml
index b53f557..b8f01cf 100644
--- a/java/com/android/dialer/dialpadview/res/values-it/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-it/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Contatti della scheda SIM</string>
   <string name="menu_callNumber">Chiama %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Impossibile fare chiamate di emergenza tramite Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Impossibile chiamare questo numero</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-iw/strings.xml b/java/com/android/dialer/dialpadview/res/values-iw/strings.xml
index f47f1ec..563934a 100644
--- a/java/com/android/dialer/dialpadview/res/values-iw/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-iw/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">‏אנשי הקשר בכרטיס ה-SIM</string>
   <string name="menu_callNumber">התקשרות אל %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">‏לא ניתן להתקשר לשירותי חירום דרך רשת Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">לא ניתן להתקשר אל המספר הזה</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ja/strings.xml b/java/com/android/dialer/dialpadview/res/values-ja/strings.xml
index 3ef1dbc..4c28c28 100644
--- a/java/com/android/dialer/dialpadview/res/values-ja/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ja/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM カードの連絡先</string>
   <string name="menu_callNumber">%s に発信</string>
   <string name="dialpad_hint_emergency_calling_not_available">Wi‑Fi 経由で緊急通報を発信することはできません</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">この番号に発信できません</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ka/strings.xml b/java/com/android/dialer/dialpadview/res/values-ka/strings.xml
index 1e896bf..7bf596f 100644
--- a/java/com/android/dialer/dialpadview/res/values-ka/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ka/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM ბარათის კონტაქტები</string>
   <string name="menu_callNumber">დარეკვა %s-ზე</string>
   <string name="dialpad_hint_emergency_calling_not_available">გადაუდებელი ზარები Wi‑Fi-ს მეშვეობით ვერ განხორციელდება</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">ამ ნომერზე დარეკვა შეუძლებელია</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-kk/strings.xml b/java/com/android/dialer/dialpadview/res/values-kk/strings.xml
index fb1e7ba..da89e8d 100644
--- a/java/com/android/dialer/dialpadview/res/values-kk/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-kk/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM контактілері</string>
   <string name="menu_callNumber">%s нөміріне қоңырау шалу</string>
   <string name="dialpad_hint_emergency_calling_not_available">Жедел қызметке Wi-Fi арқылы қоңырау шалынбайды</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Бұл нөмірге қоңырау шалу мүмкін емес</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-km/strings.xml b/java/com/android/dialer/dialpadview/res/values-km/strings.xml
index 5ffae6c..5c6650c 100644
--- a/java/com/android/dialer/dialpadview/res/values-km/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-km/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">ទំនាក់ទំនង​នៅ​ក្នុង​ស៊ីម​កាត</string>
   <string name="menu_callNumber">ហៅ​ទៅ​កាន់ %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">មិន​អាចធ្វើការ​ហៅ​បន្ទាន់​តាម WiFi បានទេ</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">មិនអាចហៅ​ទៅ​កាន់​លេខនេះបានទេ</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-kn/strings.xml b/java/com/android/dialer/dialpadview/res/values-kn/strings.xml
index 3134797..19b39dc 100644
--- a/java/com/android/dialer/dialpadview/res/values-kn/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-kn/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">ಸಿಮ್‌ ಕಾರ್ಡ್‌ ಸಂಪರ್ಕಗಳು</string>
   <string name="menu_callNumber">%s ಕರೆ ಮಾಡಿ</string>
   <string name="dialpad_hint_emergency_calling_not_available">ವೈ-ಫೈ ಮೂಲಕ ತುರ್ತು ಕರೆಗಳನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">ಈ ಸಂಖ್ಯೆಗೆ ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ko/strings.xml b/java/com/android/dialer/dialpadview/res/values-ko/strings.xml
index 58ed421..87ebfaa 100644
--- a/java/com/android/dialer/dialpadview/res/values-ko/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ko/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM 카드 연락처</string>
   <string name="menu_callNumber">%s에 전화걸기</string>
   <string name="dialpad_hint_emergency_calling_not_available">Wi‑Fi로는 긴급 전화를 걸 수 없습니다.</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">이 번호에 전화를 걸 수 없습니다.</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ky/strings.xml b/java/com/android/dialer/dialpadview/res/values-ky/strings.xml
index 86e1371..ff5d5ce 100644
--- a/java/com/android/dialer/dialpadview/res/values-ky/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ky/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM картадагы байланыштар</string>
   <string name="menu_callNumber">%s номерине чалуу</string>
   <string name="dialpad_hint_emergency_calling_not_available">WiFi аркылуу шашылыш чалуулар иштетилген жок</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Бул номерге чалуу мүмкүн болбой жатат</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-lo/strings.xml b/java/com/android/dialer/dialpadview/res/values-lo/strings.xml
index 59711e0..02718b0 100644
--- a/java/com/android/dialer/dialpadview/res/values-lo/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-lo/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">ລາຍຊື່ຜູ້ຕິດຕໍ່ SIM card</string>
   <string name="menu_callNumber">ໂທ​ຫາ %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">ບໍ່ສາມາດໂທສຸກເສີນຜ່ານ Wi‑Fi ໄດ້</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">ບໍ່​ສາ​ມາດ​ໂທ​ຫາ​ເບີ​ນີ້​ໄດ້</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-lt/strings.xml b/java/com/android/dialer/dialpadview/res/values-lt/strings.xml
index 058439a..1941fbb 100644
--- a/java/com/android/dialer/dialpadview/res/values-lt/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-lt/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM kortelės kontaktai</string>
   <string name="menu_callNumber">Skambinti %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Negalima skambinti pagalbos numeriu naudojant „Wi‑Fi“</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Negalima skambinti šiuo numeriu</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-lv/strings.xml b/java/com/android/dialer/dialpadview/res/values-lv/strings.xml
index c2bab3a..cae29e4 100644
--- a/java/com/android/dialer/dialpadview/res/values-lv/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-lv/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM kartes kontaktpersonas</string>
   <string name="menu_callNumber">Zvanīt: %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Izmantojot Wi-Fi, nevar veikt ārkārtas izsaukumus.</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Uz šo numuru nevar piezvanīt.</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-mcc310-mnc000/bools.xml b/java/com/android/dialer/dialpadview/res/values-mcc310-mnc000/bools.xml
deleted file mode 100644
index 99fa7da..0000000
--- a/java/com/android/dialer/dialpadview/res/values-mcc310-mnc000/bools.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<resources>
-  <bool name="show_device_id_as_barcode">true</bool>
-</resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-mcc310-mnc120/bools.xml b/java/com/android/dialer/dialpadview/res/values-mcc310-mnc120/bools.xml
deleted file mode 100644
index 99fa7da..0000000
--- a/java/com/android/dialer/dialpadview/res/values-mcc310-mnc120/bools.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<resources>
-  <bool name="show_device_id_as_barcode">true</bool>
-</resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-mcc311-mnc480/bools.xml b/java/com/android/dialer/dialpadview/res/values-mcc311-mnc480/bools.xml
deleted file mode 100644
index 7e549e8..0000000
--- a/java/com/android/dialer/dialpadview/res/values-mcc311-mnc480/bools.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<resources>
-  <bool name="show_device_id_in_hex_and_decimal">true</bool>
-</resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-mcc311-mnc490/bools.xml b/java/com/android/dialer/dialpadview/res/values-mcc311-mnc490/bools.xml
deleted file mode 100644
index 99fa7da..0000000
--- a/java/com/android/dialer/dialpadview/res/values-mcc311-mnc490/bools.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<resources>
-  <bool name="show_device_id_as_barcode">true</bool>
-</resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-mcc311-mnc870/bools.xml b/java/com/android/dialer/dialpadview/res/values-mcc311-mnc870/bools.xml
deleted file mode 100644
index 99fa7da..0000000
--- a/java/com/android/dialer/dialpadview/res/values-mcc311-mnc870/bools.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<resources>
-  <bool name="show_device_id_as_barcode">true</bool>
-</resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-mcc312-mnc530/bools.xml b/java/com/android/dialer/dialpadview/res/values-mcc312-mnc530/bools.xml
deleted file mode 100644
index 99fa7da..0000000
--- a/java/com/android/dialer/dialpadview/res/values-mcc312-mnc530/bools.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<resources>
-  <bool name="show_device_id_as_barcode">true</bool>
-</resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-mcc316-mnc010/bools.xml b/java/com/android/dialer/dialpadview/res/values-mcc316-mnc010/bools.xml
deleted file mode 100644
index 99fa7da..0000000
--- a/java/com/android/dialer/dialpadview/res/values-mcc316-mnc010/bools.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<resources>
-  <bool name="show_device_id_as_barcode">true</bool>
-</resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-mk/strings.xml b/java/com/android/dialer/dialpadview/res/values-mk/strings.xml
index b1645d9..142a3bc 100644
--- a/java/com/android/dialer/dialpadview/res/values-mk/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-mk/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Контакти од SIM-картичка</string>
   <string name="menu_callNumber">Повикај %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Не може да се воспоставуваат итни повици преку Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Бројот не може да се повика</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ml/strings.xml b/java/com/android/dialer/dialpadview/res/values-ml/strings.xml
index 61c0a35..41c815e 100644
--- a/java/com/android/dialer/dialpadview/res/values-ml/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ml/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">സിം കാർഡ് കോൺടാക്റ്റുകൾ</string>
   <string name="menu_callNumber">വിളിക്കുക %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">വൈഫൈ വഴി എമർജൻസി കോളുകൾ ചെയ്യാനാകില്ല</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">ഈ നമ്പറിലേക്ക് കോൾ ചെയ്യാനാവില്ല</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-mn/strings.xml b/java/com/android/dialer/dialpadview/res/values-mn/strings.xml
index 0df4b81..f4e94c2 100644
--- a/java/com/android/dialer/dialpadview/res/values-mn/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-mn/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM картны харилцагч</string>
   <string name="menu_callNumber">%s руу залгах</string>
   <string name="dialpad_hint_emergency_calling_not_available">WiFi-р яаралтай дуудлага хийх боломжгүй</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Энэ дугаар руу залгах боломжгүй</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-mr/strings.xml b/java/com/android/dialer/dialpadview/res/values-mr/strings.xml
index b0472e5..f58a1ac 100644
--- a/java/com/android/dialer/dialpadview/res/values-mr/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-mr/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">सिम कार्ड संपर्क</string>
   <string name="menu_callNumber">%s वर कॉल करा</string>
   <string name="dialpad_hint_emergency_calling_not_available">वाय-फाय वरून आणीबाणी कॉल करू शकत नाही</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">या नंबरवर कॉल करू शकत नाही</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ms/strings.xml b/java/com/android/dialer/dialpadview/res/values-ms/strings.xml
index a2643c4..79564fa 100644
--- a/java/com/android/dialer/dialpadview/res/values-ms/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ms/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kenalan kad SIM</string>
   <string name="menu_callNumber">Panggil %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Tidak boleh membuat panggilan kecemasan melalui Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Tidak dapat menghubungi nombor ini</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-my/strings.xml b/java/com/android/dialer/dialpadview/res/values-my/strings.xml
index 79deacc..8237d73 100644
--- a/java/com/android/dialer/dialpadview/res/values-my/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-my/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">ဆင်းမ်ကဒ်အဆက်အသွယ်များ</string>
   <string name="menu_callNumber">%s ကို ဖုန်းခေါ်ရန်</string>
   <string name="dialpad_hint_emergency_calling_not_available">Wi‑Fi ဖြင့် အရေးပေါ်ခေါ်ဆိုမှုများ ပြုလုပ်၍မရပါ</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">ဤနံပါတ်ကို မခေါ်ဆိုနိုင်ပါ</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-nb/strings.xml b/java/com/android/dialer/dialpadview/res/values-nb/strings.xml
index 56fe380..4f15eef 100644
--- a/java/com/android/dialer/dialpadview/res/values-nb/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-nb/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontakter på SIM-kort</string>
   <string name="menu_callNumber">Ring %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Kan ikke ringe nødnumre via Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Kan ikke ringe dette nummeret</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ne/strings.xml b/java/com/android/dialer/dialpadview/res/values-ne/strings.xml
index 310e060..60e2a09 100644
--- a/java/com/android/dialer/dialpadview/res/values-ne/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ne/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM कार्डका सम्पर्क ठेगानाहरू</string>
   <string name="menu_callNumber">%s मा कल गर्नुहोस्</string>
   <string name="dialpad_hint_emergency_calling_not_available">WiFi मार्फत आपतकालीन कल गर्न सकिँदैन</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">यस नम्बरमा कल गर्न सकिँदैन</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-nl/strings.xml b/java/com/android/dialer/dialpadview/res/values-nl/strings.xml
index e8e8e8e..f23242b 100644
--- a/java/com/android/dialer/dialpadview/res/values-nl/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-nl/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Contacten op simkaart</string>
   <string name="menu_callNumber">%s bellen</string>
   <string name="dialpad_hint_emergency_calling_not_available">Er kunnen geen noodoproepen worden gemaakt via wifi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Kan dit nummer niet bellen</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-no/strings.xml b/java/com/android/dialer/dialpadview/res/values-no/strings.xml
index 56fe380..4f15eef 100644
--- a/java/com/android/dialer/dialpadview/res/values-no/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-no/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontakter på SIM-kort</string>
   <string name="menu_callNumber">Ring %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Kan ikke ringe nødnumre via Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Kan ikke ringe dette nummeret</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-pa/strings.xml b/java/com/android/dialer/dialpadview/res/values-pa/strings.xml
index 5a7c73b..71a4435 100644
--- a/java/com/android/dialer/dialpadview/res/values-pa/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-pa/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">ਸਿਮ ਕਾਰਡ ਸੰਪਰਕ</string>
   <string name="menu_callNumber">%s ਨੂੰ ਕਾਲ ਕਰੋ</string>
   <string name="dialpad_hint_emergency_calling_not_available">ਵਾਈ-ਫਾਈ ਰਾਹੀਂ ਸੰਕਟਕਾਲੀਨ ਕਾਲਾਂ ਨਹੀਂ ਕਰ ਸਕਦੇ</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">ਇਸ ਨੰਬਰ \'ਤੇ ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-pl/strings.xml b/java/com/android/dialer/dialpadview/res/values-pl/strings.xml
index d6ea28a..f931ca9 100644
--- a/java/com/android/dialer/dialpadview/res/values-pl/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-pl/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontakty z karty SIM</string>
   <string name="menu_callNumber">Zadzwoń: %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Nie można nawiązywać połączeń alarmowych przez Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Nie można zadzwonić pod ten numer</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-pt-rBR/strings.xml b/java/com/android/dialer/dialpadview/res/values-pt-rBR/strings.xml
index 10f9c19..f27298d 100644
--- a/java/com/android/dialer/dialpadview/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-pt-rBR/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Contatos do cartão SIM</string>
   <string name="menu_callNumber">Ligar para %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Não é possível fazer chamadas de emergência por Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Não é possível ligar para este número</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-pt-rPT/strings.xml b/java/com/android/dialer/dialpadview/res/values-pt-rPT/strings.xml
index 239616b..5511f6d 100644
--- a/java/com/android/dialer/dialpadview/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-pt-rPT/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Contactos do cartão SIM</string>
   <string name="menu_callNumber">Telefonar para %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Impossível efetuar chamadas de emergência através de Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Não é possível ligar para este número</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-pt/strings.xml b/java/com/android/dialer/dialpadview/res/values-pt/strings.xml
index 10f9c19..f27298d 100644
--- a/java/com/android/dialer/dialpadview/res/values-pt/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-pt/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Contatos do cartão SIM</string>
   <string name="menu_callNumber">Ligar para %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Não é possível fazer chamadas de emergência por Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Não é possível ligar para este número</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ro/strings.xml b/java/com/android/dialer/dialpadview/res/values-ro/strings.xml
index 5360ca3..9fadc3f 100644
--- a/java/com/android/dialer/dialpadview/res/values-ro/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ro/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Agenda de pe cardul SIM</string>
   <string name="menu_callNumber">Apelați %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Nu puteți efectua apeluri de urgență prin Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Nu puteți apela acest număr</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ru/strings.xml b/java/com/android/dialer/dialpadview/res/values-ru/strings.xml
index 5ca9b29..6b075ec 100644
--- a/java/com/android/dialer/dialpadview/res/values-ru/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ru/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Контакты на SIM</string>
   <string name="menu_callNumber">Позвонить: %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Экстренные вызовы по Wi‑Fi недоступны.</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">На этот номер нельзя позвонить</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-si/strings.xml b/java/com/android/dialer/dialpadview/res/values-si/strings.xml
index 630bbbf..e9203ba 100644
--- a/java/com/android/dialer/dialpadview/res/values-si/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-si/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM කාඩ්පත් සම්බන්ධතා</string>
   <string name="menu_callNumber">%s අමතන්න</string>
   <string name="dialpad_hint_emergency_calling_not_available">Wi-Fi හරහා හදිසි අවස්ථා ඇමතුම් කිරීමට නොහැකිය</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">මෙම අංකයට ඇමතිය නොහැකිය</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-sk/strings.xml b/java/com/android/dialer/dialpadview/res/values-sk/strings.xml
index 468dbba..d5ca50d 100644
--- a/java/com/android/dialer/dialpadview/res/values-sk/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-sk/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontakty na SIM karte</string>
   <string name="menu_callNumber">Volať na číslo %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Cez Wi-Fi sa tiesňové volania nedajú uskutočňovať</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Na toto číslo sa nedá zavolať</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-sl/strings.xml b/java/com/android/dialer/dialpadview/res/values-sl/strings.xml
index 16bcc2b..b9a0563 100644
--- a/java/com/android/dialer/dialpadview/res/values-sl/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-sl/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Stiki na kartici SIM</string>
   <string name="menu_callNumber">Pokliči %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Klicev v sili ni mogoče opravljati prek omrežja Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Te številke ni mogoče poklicati</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-sq/strings.xml b/java/com/android/dialer/dialpadview/res/values-sq/strings.xml
index 99bdf03..0e91041 100644
--- a/java/com/android/dialer/dialpadview/res/values-sq/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-sq/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontaktet e kartës SIM</string>
   <string name="menu_callNumber">Telefono %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Nuk mund të kryhen telefonata urgjence me WiFi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Ky numër nuk mund të telefonohet</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-sr/strings.xml b/java/com/android/dialer/dialpadview/res/values-sr/strings.xml
index d2e998f..31cc4c0 100644
--- a/java/com/android/dialer/dialpadview/res/values-sr/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-sr/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Контакти на SIM картици</string>
   <string name="menu_callNumber">Позови %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Не можете да упућујете хитне позиве преко Wi‑Fi-ја</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Није могуће позвати овај број</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-sv/strings.xml b/java/com/android/dialer/dialpadview/res/values-sv/strings.xml
index 589426b..b9275a0 100644
--- a/java/com/android/dialer/dialpadview/res/values-sv/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-sv/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Kontakter från SIM-kort</string>
   <string name="menu_callNumber">Ring %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Det går inte att ringa nödsamtal över Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Det går inte att ringa det här numret</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-sw/strings.xml b/java/com/android/dialer/dialpadview/res/values-sw/strings.xml
index 95d1e27..6741e94 100644
--- a/java/com/android/dialer/dialpadview/res/values-sw/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-sw/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Anwani za SIM kadi</string>
   <string name="menu_callNumber">Piga simu %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Huwezi kupiga simu ya dharura kupitia Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Haiwezi kupiga simu kwa nambari hii</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ta/strings.xml b/java/com/android/dialer/dialpadview/res/values-ta/strings.xml
index 7b8356b..573b80d 100644
--- a/java/com/android/dialer/dialpadview/res/values-ta/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ta/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">சிம் கார்டு தொடர்புகள்</string>
   <string name="menu_callNumber">%s எண்ணை அழை</string>
   <string name="dialpad_hint_emergency_calling_not_available">வைஃபையைப் பயன்படுத்தி அவசர அழைப்புகளைச் செய்ய முடியாது</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">இந்த எண்ணை அழைக்க முடியாது</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-te/strings.xml b/java/com/android/dialer/dialpadview/res/values-te/strings.xml
index 49c5191..a206a46 100644
--- a/java/com/android/dialer/dialpadview/res/values-te/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-te/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM కార్డ్ పరిచయాలు</string>
   <string name="menu_callNumber">%sకు కాల్ చేయండి</string>
   <string name="dialpad_hint_emergency_calling_not_available">Wi-Fiతో అత్యవసర కాల్‌లు చేయలేరు</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">ఈ నంబర్‌కు కాల్ చేయలేరు</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-th/strings.xml b/java/com/android/dialer/dialpadview/res/values-th/strings.xml
index 8c43757..2453555 100644
--- a/java/com/android/dialer/dialpadview/res/values-th/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-th/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">รายชื่อติดต่อในซิมการ์ด</string>
   <string name="menu_callNumber">โทร %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">โทรหาหมายเลขฉุกเฉินผ่าน Wi‑Fi ไม่ได้</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">ไม่สามารถโทรไปยังหมายเลขนี้</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-tl/strings.xml b/java/com/android/dialer/dialpadview/res/values-tl/strings.xml
index 8c43b42..3a89363 100644
--- a/java/com/android/dialer/dialpadview/res/values-tl/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-tl/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Mga contact sa SIM card</string>
   <string name="menu_callNumber">Tawagan ang %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Di makakagawa ng mga emergency na tawag sa Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Hindi matawagan ang numerong ito</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-tr/strings.xml b/java/com/android/dialer/dialpadview/res/values-tr/strings.xml
index 8629cb8..6e29ea2 100644
--- a/java/com/android/dialer/dialpadview/res/values-tr/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-tr/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM kart kişileri</string>
   <string name="menu_callNumber">Telefon et: %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Kablosuz ağ üzerinden acil durum araması yapılamaz</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Bu numara aranamaz</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-uk/strings.xml b/java/com/android/dialer/dialpadview/res/values-uk/strings.xml
index 4ffc7ae..d8cf176 100644
--- a/java/com/android/dialer/dialpadview/res/values-uk/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-uk/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Контакти із SIM-карти</string>
   <string name="menu_callNumber">Зателефонувати на номер %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Не можна здійснювати екстрені виклики через Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Не можна телефонувати на цей номер</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-ur/strings.xml b/java/com/android/dialer/dialpadview/res/values-ur/strings.xml
index 30f8705..9a9476c 100644
--- a/java/com/android/dialer/dialpadview/res/values-ur/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-ur/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">‏SIM کارڈ کے رابطے</string>
   <string name="menu_callNumber">%s کو کال کریں</string>
   <string name="dialpad_hint_emergency_calling_not_available">‏Wi‑Fi کے ذریعے ایمرجنسی کالز نہیں کر سکتے</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">اس نمبر پر کال نہیں کر سکتے</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-uz/strings.xml b/java/com/android/dialer/dialpadview/res/values-uz/strings.xml
index 3a59015..d1220c9 100644
--- a/java/com/android/dialer/dialpadview/res/values-uz/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-uz/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM kartadagi kontaktlar</string>
   <string name="menu_callNumber">%s raqamiga qo‘ng‘iroq qilish</string>
   <string name="dialpad_hint_emergency_calling_not_available">Wi‑Fi orqali favqulodda xizmatlarga chaqiruv qilib bo‘lmaydi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Bu raqamga qo‘ng‘iroq qilib bo‘lmaydi</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-vi/strings.xml b/java/com/android/dialer/dialpadview/res/values-vi/strings.xml
index 2fb3eea..83c5016 100644
--- a/java/com/android/dialer/dialpadview/res/values-vi/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-vi/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Danh bạ trên thẻ SIM</string>
   <string name="menu_callNumber">Gọi %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Không thể thực hiện cuộc gọi khẩn cấp qua Wi‑Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Không thể gọi số này</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-zh-rCN/strings.xml b/java/com/android/dialer/dialpadview/res/values-zh-rCN/strings.xml
index 81a234e..1c62c65 100644
--- a/java/com/android/dialer/dialpadview/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-zh-rCN/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM 卡联系人</string>
   <string name="menu_callNumber">拨打 %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">无法通过 WLAN 拨打紧急呼救电话</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">无法拨打此号码</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-zh-rHK/strings.xml b/java/com/android/dialer/dialpadview/res/values-zh-rHK/strings.xml
index b1638ec..2f84d1f 100644
--- a/java/com/android/dialer/dialpadview/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-zh-rHK/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM 卡聯絡人</string>
   <string name="menu_callNumber">撥打 %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">無法經 Wi‑Fi 撥打緊急電話</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">無法撥打此號碼</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-zh-rTW/strings.xml b/java/com/android/dialer/dialpadview/res/values-zh-rTW/strings.xml
index 406320a..687523e 100644
--- a/java/com/android/dialer/dialpadview/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-zh-rTW/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">SIM 卡聯絡人</string>
   <string name="menu_callNumber">撥打 %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">無法透過 Wi‑Fi 撥打緊急電話</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">無法撥打這個號碼</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values-zu/strings.xml b/java/com/android/dialer/dialpadview/res/values-zu/strings.xml
index 97c72fc..6345122 100644
--- a/java/com/android/dialer/dialpadview/res/values-zu/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values-zu/strings.xml
@@ -19,5 +19,4 @@
   <string name="simContacts_title">Othintana nabo bekhadi le-SIM</string>
   <string name="menu_callNumber">Shayela %s</string>
   <string name="dialpad_hint_emergency_calling_not_available">Ayikwazi ukwenza amakholi aphuthumayo nge-Wi-Fi</string>
-  <string msgid="4313552620858880999" name="dialog_phone_call_prohibited_message">Ayikwazi ukushayela le nombolo</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values/bools.xml b/java/com/android/dialer/dialpadview/res/values/bools.xml
deleted file mode 100644
index b7fed07..0000000
--- a/java/com/android/dialer/dialpadview/res/values/bools.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<resources>
-  <bool name="show_device_id_in_hex_and_decimal">false</bool>
-  <bool name="show_device_id_as_barcode">false</bool>
-</resources>
diff --git a/java/com/android/dialer/dialpadview/res/values/dimens.xml b/java/com/android/dialer/dialpadview/res/values/dimens.xml
index f77c9ab..e5c865a 100644
--- a/java/com/android/dialer/dialpadview/res/values/dimens.xml
+++ b/java/com/android/dialer/dialpadview/res/values/dimens.xml
@@ -22,7 +22,7 @@
   <dimen name="dialpad_symbol_margin_bottom">13dp</dimen>
   <dimen name="dialpad_digits_text_min_size">24sp</dimen>
   <dimen name="dialpad_digits_padding">16dp</dimen>
-  <dimen name="dialpad_digits_menu_left_padding">8dp</dimen>
+  <dimen name="dialpad_digits_menu_left_padding">10dp</dimen>
   <dimen name="dialpad_digits_menu_right_padding">10dp</dimen>
   <dimen name="dialpad_voicemail_icon_size">18dp</dimen>
   <dimen name="dialpad_key_button_translate_y">100dp</dimen>
@@ -35,6 +35,4 @@
 
   <!-- Length of dialpad's shadows in dialer. -->
   <dimen name="shadow_length">10dp</dimen>
-
-  <dimen name="barcode_height">100dp</dimen>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values/strings.xml b/java/com/android/dialer/dialpadview/res/values/strings.xml
index afa0237..d5150b5 100644
--- a/java/com/android/dialer/dialpadview/res/values/strings.xml
+++ b/java/com/android/dialer/dialpadview/res/values/strings.xml
@@ -77,12 +77,6 @@
   <!-- The title of a dialog that displays the MEID of the CDMA phone -->
   <string name="meid">MEID</string>
 
-  <!-- The label for the hex encoding of the device ID -->
-  <string name="hex" translatable="false">HEX:</string>
-
-  <!-- The label for the decimal encoding of the device ID -->
-  <string name="dec" translatable="false">DEC:</string>
-
   <!-- Dialog text displayed when loading a phone number from the SIM card for speed dial -->
   <string name="simContacts_emptyLoading">Loading from SIM card\u2026</string>
 
@@ -92,16 +86,7 @@
   <!-- Menu item used to call a contact, containing the number of the contact to call -->
   <string name="menu_callNumber">Call <xliff:g id="number">%s</xliff:g></string>
 
-
-  <!-- Regular expression for prohibiting certain phone numbers in dialpad.
-       Ignored if empty. -->
-  <string name="config_prohibited_phone_number_regexp" translatable="false"></string>
-
   <!-- Warning hint shown in the dialpad input field when emergency call (911, etc.) cannot be made over wifi.
        [CHAR_LIMIT=60] -->
   <string name="dialpad_hint_emergency_calling_not_available">Can\'t make emergency calls over WiFi</string>
-
-  <!-- Dialog message which is shown when the user tries to make a phone call
-       to prohibited phone numbers [CHAR LIMIT=NONE] -->
-  <string name="dialog_phone_call_prohibited_message" msgid="4313552620858880999">Can\'t call this number</string>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/theme/AndroidManifest.xml b/java/com/android/dialer/dialpadview/theme/AndroidManifest.xml
deleted file mode 100644
index f0726d0..0000000
--- a/java/com/android/dialer/dialpadview/theme/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest package="com.android.dialer.dialpadview.theme"/>
diff --git a/java/com/android/dialer/dialpadview/theme/res/values/styles.xml b/java/com/android/dialer/dialpadview/theme/res/values/styles.xml
index 8705a17..9729b91 100644
--- a/java/com/android/dialer/dialpadview/theme/res/values/styles.xml
+++ b/java/com/android/dialer/dialpadview/theme/res/values/styles.xml
@@ -18,24 +18,18 @@
   <style name="Dialpad">
     <item name="dialpad_digits_adjustable_height">@dimen/dialpad_digits_height</item>
     <item name="dialpad_digits_adjustable_text_size">@dimen/dialpad_digits_text_size</item>
-    <item name="dialpad_key_letters_size_for_dual_alphabets">
-      @dimen/dialpad_key_letters_default_size_for_dual_alphabets
-    </item>
-    <item name="dialpad_key_letters_size_for_single_alphabet">
-      @dimen/dialpad_key_letters_default_size_for_single_alphabet
-    </item>
+    <item name="dialpad_key_letters_size_for_dual_alphabets">@dimen/dialpad_key_letters_default_size_for_dual_alphabets</item>
+    <item name="dialpad_key_letters_size_for_single_alphabet">@dimen/dialpad_key_letters_default_size_for_single_alphabet</item>
     <item name="dialpad_key_numbers_size">@dimen/dialpad_key_numbers_default_size</item>
-    <item name="dialpad_key_number_margin_bottom">
-      @dimen/dialpad_key_number_default_margin_bottom
-    </item>
+    <item name="dialpad_key_number_margin_bottom">@dimen/dialpad_key_number_default_margin_bottom</item>
     <item name="dialpad_end_key_spacing">@dimen/dialpad_bottom_space_height</item>
     <item name="dialpad_elevation">0dp</item>
   </style>
 
   <style name="Dialpad.Themed">
-    <item name="dialpad_text_color">?android:attr/textColorSecondary</item>
-    <item name="dialpad_text_color_primary">?android:attr/colorPrimary</item>
+    <item name="dialpad_text_color">@color/dialer_theme_color_light</item>
+    <item name="dialpad_text_color_primary">@color/dialer_theme_color_light</item>
     <item name="dialpad_text_color_secondary">?android:attr/textColorSecondary</item>
-    <item name="dialpad_background">?android:attr/colorBackgroundFloating</item>
+    <item name="dialpad_background">@drawable/rounded_dialpad_bg</item>
   </style>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/duo/Duo.java b/java/com/android/dialer/duo/Duo.java
deleted file mode 100644
index 85fe9fb..0000000
--- a/java/com/android/dialer/duo/Duo.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.duo;
-
-import android.content.Context;
-import android.content.Intent;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.telecom.Call;
-import android.telecom.PhoneAccountHandle;
-import com.google.auto.value.AutoValue;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.List;
-
-/** Interface for Duo video call integration. */
-@SuppressWarnings("Guava")
-public interface Duo {
-
-  /** @return true if the Duo integration is enabled on this device. */
-  boolean isEnabled(@NonNull Context context);
-
-  /** @return true if Duo is installed on this device. */
-  boolean isInstalled(@NonNull Context context);
-
-  /**
-   * @return true if Duo is installed and the user has gone through the set-up flow confirming their
-   *     phone number.
-   */
-  boolean isActivated(@NonNull Context context);
-
-  /** @return true if the parameter number is reachable on Duo. */
-  @MainThread
-  boolean isReachable(@NonNull Context context, @Nullable String number);
-
-  /**
-   * @return true if the number supports upgrading a voice call to a Duo video call. Returns {@code
-   *     null} if result is unknown.
-   */
-  @MainThread
-  Optional<Boolean> supportsUpgrade(
-      @NonNull Context context,
-      @Nullable String number,
-      @Nullable PhoneAccountHandle phoneAccountHandle);
-
-  /** Starts a task to update the reachability of the parameter numbers asynchronously. */
-  @MainThread
-  ListenableFuture<ImmutableMap<String, ReachabilityData>> updateReachability(
-      @NonNull Context context, @NonNull List<String> numbers);
-
-  /**
-   * Clears the current reachability data and starts a task to load the latest reachability data
-   * asynchronously.
-   */
-  @MainThread
-  void reloadReachability(@NonNull Context context);
-
-  /**
-   * Get the {@link PhoneAccountHandle} used by duo calls in the connection service and call log.
-   */
-  Optional<PhoneAccountHandle> getPhoneAccountHandle();
-
-  boolean isDuoAccount(PhoneAccountHandle phoneAccountHandle);
-
-  boolean isDuoAccount(String componentName);
-
-  /**
-   * @return an Intent to start a Duo video call with the parameter number. Must be started using
-   *     startActivityForResult.
-   */
-  @MainThread
-  Optional<Intent> getCallIntent(@NonNull String number);
-
-  /** @return an Intent to setup duo. Must be started using startActivityForResult. */
-  Optional<Intent> getActivateIntent();
-
-  /**
-   * @return an Intent to invite the parameter number to use duo. Must be started using
-   *     startActivityForResult.
-   */
-  Optional<Intent> getInviteIntent(String number);
-
-  Optional<Intent> getInstallDuoIntent();
-
-  /** Requests upgrading the parameter ongoing call to a Duo video call. */
-  @MainThread
-  void requestUpgrade(@NonNull Context context, Call call);
-
-  /** Registers a listener for reachability data changes. */
-  @MainThread
-  void registerListener(@NonNull DuoListener listener);
-
-  /** Unregisters a listener for reachability data changes. */
-  @MainThread
-  void unregisterListener(@NonNull DuoListener listener);
-
-  /** The string resource to use for outgoing Duo call entries in call details. */
-  @StringRes
-  @MainThread
-  int getOutgoingCallTypeText();
-
-  /** The string resource to use for incoming Duo call entries in call details. */
-  @StringRes
-  @MainThread
-  int getIncomingCallTypeText();
-
-  /** The ID of the drawable resource of a Duo logo. */
-  @DrawableRes
-  @MainThread
-  int getLogo();
-
-  /** Reachability information for a number. */
-  @AutoValue
-  abstract class ReachabilityData {
-    public enum Status {
-      UNKNOWN,
-
-      /**
-       * The number is callable. Apps should further look up “AUDIO_CALLABLE” and “VIDEO_CALLABLE”
-       * keys for supported modes.
-       */
-      CALL,
-
-      /** The number is not callable. Apps can send an invite to the contact via INVITE intent. */
-      INVITE,
-
-      /**
-       * Neither Tachystick nor Duo is registered. Apps should show “setup” icon and send REGISTER
-       * intent to.
-       */
-      SETUP,
-
-      /**
-       * Indicates that the number is callable but user needs to set up (Tachystick/Duo) before
-       * calling.
-       */
-      SETUP_AND_CALL
-    }
-
-    public abstract Status status();
-
-    public abstract String number();
-
-    public abstract boolean audioCallable();
-
-    public abstract boolean videoCallable();
-
-    public abstract boolean supportsUpgrade();
-
-    public static ReachabilityData create(
-        Status status,
-        String number,
-        boolean audioCallable,
-        boolean videoCallable,
-        boolean supportsUpgrade) {
-      return new AutoValue_Duo_ReachabilityData(
-          status, number, audioCallable, videoCallable, supportsUpgrade);
-    }
-  }
-}
diff --git a/java/com/android/dialer/duo/DuoComponent.java b/java/com/android/dialer/duo/DuoComponent.java
deleted file mode 100644
index 307832a..0000000
--- a/java/com/android/dialer/duo/DuoComponent.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.duo;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-
-/**
- */
-@Subcomponent
-public abstract class DuoComponent {
-
-  @NonNull
-  public abstract Duo getDuo();
-
-  public static DuoComponent get(Context context) {
-    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
-        .duoComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  @IncludeInDialerRoot
-  public interface HasComponent {
-    DuoComponent duoComponent();
-  }
-}
diff --git a/java/com/android/dialer/duo/DuoListener.java b/java/com/android/dialer/duo/DuoListener.java
deleted file mode 100644
index 9c660be..0000000
--- a/java/com/android/dialer/duo/DuoListener.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.duo;
-
-public interface DuoListener {
-  void onDuoStateChanged();
-}
diff --git a/java/com/android/dialer/duo/stub/DuoStub.java b/java/com/android/dialer/duo/stub/DuoStub.java
deleted file mode 100644
index 2131d16..0000000
--- a/java/com/android/dialer/duo/stub/DuoStub.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.duo.stub;
-
-import android.content.Context;
-import android.content.Intent;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.telecom.Call;
-import android.telecom.PhoneAccountHandle;
-import com.android.dialer.common.Assert;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoListener;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.List;
-import javax.inject.Inject;
-
-public class DuoStub implements Duo {
-
-  @Inject
-  public DuoStub() {}
-
-  @Override
-  public boolean isEnabled(@NonNull Context context) {
-    return false;
-  }
-
-  @Override
-  public boolean isInstalled(@NonNull Context context) {
-    return false;
-  }
-
-  @Override
-  public boolean isActivated(@NonNull Context context) {
-    return false;
-  }
-
-  @MainThread
-  @Override
-  public boolean isReachable(@NonNull Context context, @Nullable String number) {
-    Assert.isMainThread();
-    Assert.isNotNull(context);
-    return false;
-  }
-
-  @MainThread
-  @Override
-  public Optional<Boolean> supportsUpgrade(
-      @NonNull Context context,
-      @Nullable String number,
-      @Nullable PhoneAccountHandle phoneAccountHandle) {
-    Assert.isMainThread();
-    Assert.isNotNull(context);
-    return Optional.of(false);
-  }
-
-  @Override
-  public ListenableFuture<ImmutableMap<String, ReachabilityData>> updateReachability(
-      @NonNull Context context, @NonNull List<String> numbers) {
-    Assert.isMainThread();
-    Assert.isNotNull(context);
-    Assert.isNotNull(numbers);
-    return Futures.immediateFuture(ImmutableMap.of());
-  }
-
-  @Override
-  public void reloadReachability(@NonNull Context context) {}
-
-  @Override
-  public Optional<PhoneAccountHandle> getPhoneAccountHandle() {
-    return Optional.absent();
-  }
-
-  @Override
-  public boolean isDuoAccount(PhoneAccountHandle phoneAccountHandle) {
-    return false;
-  }
-
-  @Override
-  public boolean isDuoAccount(String componentName) {
-    return false;
-  }
-
-  @MainThread
-  @Override
-  public Optional<Intent> getCallIntent(@NonNull String number) {
-    Assert.isMainThread();
-    Assert.isNotNull(number);
-    return Optional.absent();
-  }
-
-  @Override
-  public Optional<Intent> getActivateIntent() {
-    return Optional.absent();
-  }
-
-  @Override
-  public Optional<Intent> getInviteIntent(String number) {
-    return Optional.absent();
-  }
-
-  @Override
-  public Optional<Intent> getInstallDuoIntent() {
-    return null;
-  }
-
-  @MainThread
-  @Override
-  public void requestUpgrade(@NonNull Context context, Call call) {
-    Assert.isMainThread();
-    Assert.isNotNull(call);
-  }
-
-  @MainThread
-  @Override
-  public void registerListener(DuoListener listener) {
-    Assert.isMainThread();
-    Assert.isNotNull(listener);
-  }
-
-  @MainThread
-  @Override
-  public void unregisterListener(DuoListener listener) {
-    Assert.isMainThread();
-    Assert.isNotNull(listener);
-  }
-
-  @StringRes
-  @Override
-  public int getOutgoingCallTypeText() {
-    return -1;
-  }
-
-  @StringRes
-  @Override
-  public int getIncomingCallTypeText() {
-    return -1;
-  }
-
-  @DrawableRes
-  @Override
-  public int getLogo() {
-    return -1;
-  }
-}
diff --git a/java/com/android/dialer/duo/stub/StubDuoModule.java b/java/com/android/dialer/duo/stub/StubDuoModule.java
deleted file mode 100644
index 57c3570..0000000
--- a/java/com/android/dialer/duo/stub/StubDuoModule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.duo.stub;
-
-import com.android.dialer.duo.Duo;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-@Module
-@InstallIn(variants = DialerVariant.DIALER_TEST)
-public abstract class StubDuoModule {
-
-  @Binds
-  @Singleton
-  public abstract Duo bindsDuo(DuoStub duoStub);
-}
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java b/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java
deleted file mode 100644
index 32054e8..0000000
--- a/java/com/android/dialer/enrichedcall/EnrichedCallCapabilities.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.enrichedcall;
-
-import com.google.auto.value.AutoValue;
-
-/** Value type holding enriched call capabilities. */
-@AutoValue
-public abstract class EnrichedCallCapabilities {
-
-  public static final EnrichedCallCapabilities NO_CAPABILITIES = builder().build();
-
-  public static final EnrichedCallCapabilities ALL_CAPABILITIES =
-      builder()
-          .setCallComposerCapable(true)
-          .setPostCallCapable(true)
-          .setVideoShareCapable(true)
-          .build();
-
-  public abstract boolean isCallComposerCapable();
-
-  public abstract boolean isPostCallCapable();
-
-  public abstract boolean isVideoShareCapable();
-
-  public abstract Builder toBuilder();
-
-  /**
-   * Returns {@code true} if these capabilities represent those of a user that is temporarily
-   * unavailable. This is an indication that capabilities should be refreshed.
-   */
-  public abstract boolean isTemporarilyUnavailable();
-
-  /**
-   * Creates an instance of {@link Builder}.
-   *
-   * <p>Unless otherwise set, all fields will default to false.
-   */
-  public static Builder builder() {
-    return new AutoValue_EnrichedCallCapabilities.Builder()
-        .setCallComposerCapable(false)
-        .setPostCallCapable(false)
-        .setVideoShareCapable(false)
-        .setTemporarilyUnavailable(false);
-  }
-
-  /** Creates instances of {@link EnrichedCallCapabilities}. */
-  @AutoValue.Builder
-  public abstract static class Builder {
-    public abstract Builder setCallComposerCapable(boolean isCapable);
-
-    public abstract Builder setPostCallCapable(boolean isCapable);
-
-    public abstract Builder setVideoShareCapable(boolean isCapable);
-
-    public abstract Builder setTemporarilyUnavailable(boolean temporarilyUnavailable);
-
-    public abstract EnrichedCallCapabilities build();
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallComponent.java b/java/com/android/dialer/enrichedcall/EnrichedCallComponent.java
deleted file mode 100644
index 46afd84..0000000
--- a/java/com/android/dialer/enrichedcall/EnrichedCallComponent.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.enrichedcall;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-
-/** Subcomponent that can be used to access the enriched call implementation. */
-@Subcomponent
-public abstract class EnrichedCallComponent {
-
-  @NonNull
-  public abstract EnrichedCallManager getEnrichedCallManager();
-
-  @NonNull
-  public abstract RcsVideoShareFactory getRcsVideoShareFactory();
-
-  public static EnrichedCallComponent get(Context context) {
-    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
-        .enrichedCallComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  @IncludeInDialerRoot
-  public interface HasComponent {
-    EnrichedCallComponent enrichedCallComponent();
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java b/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
deleted file mode 100644
index 681193c..0000000
--- a/java/com/android/dialer/enrichedcall/EnrichedCallManager.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.enrichedcall;
-
-import android.content.BroadcastReceiver.PendingResult;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.calldetails.CallDetailsEntries;
-import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
-import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
-import com.android.dialer.enrichedcall.videoshare.VideoShareListener;
-import com.android.dialer.enrichedcall.videoshare.VideoShareSession;
-import com.android.dialer.multimedia.MultimediaData;
-import java.util.List;
-import java.util.Map;
-
-/** Performs all enriched calling logic. */
-public interface EnrichedCallManager {
-
-  int POST_CALL_NOTE_MAX_CHAR = 60;
-
-  /** Receives updates when enriched call capabilities are ready. */
-  interface CapabilitiesListener {
-
-    /** Callback fired when the capabilities are updated. */
-    @MainThread
-    void onCapabilitiesUpdated();
-  }
-
-  /**
-   * Registers the given {@link CapabilitiesListener}.
-   *
-   * <p>As a result of this method, the listener will receive a call to {@link
-   * CapabilitiesListener#onCapabilitiesUpdated()} after a call to {@link
-   * #requestCapabilities(String)}.
-   */
-  @MainThread
-  void registerCapabilitiesListener(@NonNull CapabilitiesListener listener);
-
-  /**
-   * Starts an asynchronous process to get enriched call capabilities of the given number.
-   *
-   * <p>Registered listeners will receive a call to {@link
-   * CapabilitiesListener#onCapabilitiesUpdated()} on completion.
-   *
-   * @param number the remote number in any format
-   */
-  @MainThread
-  void requestCapabilities(@NonNull String number);
-
-  /**
-   * Unregisters the given {@link CapabilitiesListener}.
-   *
-   * <p>As a result of this method, the listener will not receive capabilities of the given number.
-   */
-  @MainThread
-  void unregisterCapabilitiesListener(@NonNull CapabilitiesListener listener);
-
-  /** Gets the cached capabilities for the given number, else null */
-  @MainThread
-  @Nullable
-  EnrichedCallCapabilities getCapabilities(@NonNull String number);
-
-  /** Clears any cached data, such as capabilities. */
-  @MainThread
-  void clearCachedData();
-
-  /**
-   * Starts a call composer session with the given remote number.
-   *
-   * @param number the remote number in any format
-   * @return the id for the started session, or {@link Session#NO_SESSION_ID} if the session fails
-   */
-  @MainThread
-  long startCallComposerSession(@NonNull String number);
-
-  /**
-   * Sends the given information through an open enriched call session. As per the enriched calling
-   * spec, up to two messages are sent: the first is an enriched call data message that optionally
-   * includes the subject and the second is the optional image data message.
-   *
-   * @param sessionId the id for the session. See {@link #startCallComposerSession(String)}
-   * @param data the {@link MultimediaData}
-   * @throws IllegalArgumentException if there's no open session with the given number
-   * @throws IllegalStateException if the session isn't in the {@link Session#STATE_STARTED} state
-   */
-  @MainThread
-  void sendCallComposerData(long sessionId, @NonNull MultimediaData data);
-
-  /**
-   * Ends the given call composer session. Ending a session means that the call composer session
-   * will be closed.
-   *
-   * @param sessionId the id of the session to end
-   */
-  @MainThread
-  void endCallComposerSession(long sessionId);
-
-  /**
-   * Sends a post call note to the given number.
-   *
-   * @throws IllegalArgumentException if message is longer than {@link #POST_CALL_NOTE_MAX_CHAR}
-   *     characters
-   */
-  @MainThread
-  void sendPostCallNote(@NonNull String number, @NonNull String message);
-
-  /**
-   * Called once the capabilities are available for a corresponding call to {@link
-   * #requestCapabilities(String)}.
-   *
-   * @param number the remote number in any format
-   * @param capabilities the supported capabilities
-   */
-  @MainThread
-  void onCapabilitiesReceived(
-      @NonNull String number, @NonNull EnrichedCallCapabilities capabilities);
-
-  /** Receives updates when the state of an enriched call changes. */
-  interface StateChangedListener {
-
-    /**
-     * Callback fired when state changes. Listeners should call {@link #getSession(long)} or {@link
-     * #getSession(String, String, Filter)} to retrieve the new state.
-     */
-    void onEnrichedCallStateChanged();
-  }
-
-  /**
-   * Registers the given {@link StateChangedListener}.
-   *
-   * <p>As a result of this method, the listener will receive updates when the state of any enriched
-   * call changes.
-   */
-  @MainThread
-  void registerStateChangedListener(@NonNull StateChangedListener listener);
-
-  /**
-   * Returns the {@link Session} for the given unique call id, falling back to the number. If a
-   * filter is provided, it will be applied to both the uniqueCalId and number lookups.
-   */
-  @MainThread
-  @Nullable
-  Session getSession(@NonNull String uniqueCallId, @NonNull String number, @Nullable Filter filter);
-
-  /** Returns the {@link Session} for the given sessionId, or {@code null} if no session exists. */
-  @MainThread
-  @Nullable
-  Session getSession(long sessionId);
-
-  /**
-   * Returns a list containing viewable string representations of all existing sessions.
-   *
-   * <p>Intended for debug display purposes only.
-   */
-  @MainThread
-  @NonNull
-  List<String> getAllSessionsForDisplay();
-
-  @NonNull
-  Filter createIncomingCallComposerFilter();
-
-  @NonNull
-  Filter createOutgoingCallComposerFilter();
-
-  /** Receives updates when the state of an historical data changes. */
-  interface HistoricalDataChangedListener {
-
-    /**
-     * Callback fired when historical data changes. Listeners should call {@link
-     * #getAllHistoricalData(String, CallDetailsEntries)} to retrieve the new data.
-     */
-    void onHistoricalDataChanged();
-  }
-
-  /**
-   * Registers the given {@link HistoricalDataChangedListener}.
-   *
-   * <p>As a result of this method, the listener will receive updates when the state of any enriched
-   * call historical data changes.
-   */
-  @MainThread
-  void registerHistoricalDataChangedListener(@NonNull HistoricalDataChangedListener listener);
-
-  /**
-   * Unregisters the given {@link HistoricalDataChangedListener}.
-   *
-   * <p>As a result of this method, the listener will not receive updates when the state of enriched
-   * call historical data changes.
-   */
-  @MainThread
-  void unregisterHistoricalDataChangedListener(@NonNull HistoricalDataChangedListener listener);
-
-  /**
-   * Starts an asynchronous process to get all historical data for the given number and set of
-   * {@link CallDetailsEntries}.
-   */
-  @MainThread
-  void requestAllHistoricalData(@NonNull String number, @NonNull CallDetailsEntries entries);
-
-  /**
-   * Returns a mapping of enriched call data for all of the given {@link CallDetailsEntries}, which
-   * should not be modified. A {@code null} return indicates that clients should call {@link
-   * #requestAllHistoricalData(String, CallDetailsEntries)}.
-   *
-   * <p>The mapping is created by finding the HistoryResults whose timestamps occurred during or
-   * close after a CallDetailsEntry. A CallDetailsEntry can have multiple HistoryResults in the
-   * event that both a CallComposer message and PostCall message were sent for the same call.
-   */
-  @Nullable
-  @MainThread
-  Map<CallDetailsEntry, List<HistoryResult>> getAllHistoricalData(
-      @NonNull String number, @NonNull CallDetailsEntries entries);
-
-  /** Returns true if any enriched calls have been made or received. */
-  @MainThread
-  boolean hasStoredData();
-
-  /**
-   * Unregisters the given {@link StateChangedListener}.
-   *
-   * <p>As a result of this method, the listener will not receive updates when the state of enriched
-   * calls changes.
-   */
-  @MainThread
-  void unregisterStateChangedListener(@NonNull StateChangedListener listener);
-
-  /**
-   * Called when the status of an enriched call session changes.
-   *
-   *
-   * @throws IllegalArgumentException if the state is invalid
-   */
-  @MainThread
-  void onSessionStatusUpdate(long sessionId, @NonNull String number, int state);
-
-  /**
-   * Called when the status of an enriched call message updates.
-   *
-   *
-   * @throws IllegalArgumentException if the state is invalid
-   * @throws IllegalStateException if there's no session for the given id
-   */
-  @MainThread
-  void onMessageUpdate(long sessionId, @NonNull String messageId, int state);
-
-  /**
-   * Called when call composer data arrives for the given session.
-   *
-   * @throws IllegalStateException if there's no session for the given id
-   */
-  @MainThread
-  void onIncomingCallComposerData(long sessionId, @NonNull MultimediaData multimediaData);
-
-  /**
-   * Called when post call data arrives for the given session.
-   *
-   * @param pendingResult PendingResult form a broadcast receiver. The broadcast might be received
-   *     when dialer is not in the foreground, and can not start {@link
-   *     com.android.dialer.app.calllog.CallLogNotificationsService} to handle the event. The
-   *     pendingResult allows dialer to hold on to resources when the event is handled in a
-   *     background thread. TODO(a bug): migrate CallLogNotificationsService to a
-   *     JobIntentService so it can be used in the background.
-   * @throws IllegalStateException if there's no session for the given id
-   */
-  @MainThread
-  void onIncomingPostCallData(
-      @NonNull PendingResult pendingResult, long sessionId, @NonNull MultimediaData multimediaData);
-
-  /**
-   * Registers the given {@link VideoShareListener}.
-   *
-   * <p>As a result of this method, the listener will receive updates when any video share state
-   * changes.
-   */
-  @MainThread
-  void registerVideoShareListener(@NonNull VideoShareListener listener);
-
-  /**
-   * Unregisters the given {@link VideoShareListener}.
-   *
-   * <p>As a result of this method, the listener will not receive updates when any video share state
-   * changes.
-   */
-  @MainThread
-  void unregisterVideoShareListener(@NonNull VideoShareListener listener);
-
-  /**
-   * Called when an incoming video share invite is received.
-   *
-   * @return whether or not the invite was accepted by the manager (rejected when disabled)
-   */
-  @MainThread
-  boolean onIncomingVideoShareInvite(long sessionId, @NonNull String number);
-
-  /**
-   * Starts a video share session with the given remote number.
-   *
-   * @param number the remote number in any format
-   * @return the id for the started session, or {@link Session#NO_SESSION_ID} if the session fails
-   */
-  @MainThread
-  long startVideoShareSession(@NonNull String number);
-
-  /**
-   * Accepts a video share session invite.
-   *
-   * @param sessionId the session to accept
-   * @return whether or not accepting the session succeeded
-   */
-  @MainThread
-  boolean acceptVideoShareSession(long sessionId);
-
-  /**
-   * Retrieve the session id for an incoming video share invite.
-   *
-   * @param number the remote number in any format
-   * @return the id for the session invite, or {@link Session#NO_SESSION_ID} if there is no invite
-   */
-  @MainThread
-  long getVideoShareInviteSessionId(@NonNull String number);
-
-  /**
-   * Returns the {@link VideoShareSession} for the given sessionId, or {@code null} if no session
-   * exists.
-   */
-  @MainThread
-  @Nullable
-  VideoShareSession getVideoShareSession(long sessionId);
-
-  /**
-   * Ends the given video share session.
-   *
-   * @param sessionId the id of the session to end
-   */
-  @MainThread
-  void endVideoShareSession(long sessionId);
-
-  /** Interface for filtering sessions (compatible with Predicate from Java 8) */
-  interface Filter {
-    boolean test(Session session);
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java b/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java
deleted file mode 100644
index 6f4d975..0000000
--- a/java/com/android/dialer/enrichedcall/FuzzyPhoneNumberMatcher.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.enrichedcall;
-
-import android.support.annotation.NonNull;
-
-/** Utility for comparing phone numbers. */
-public class FuzzyPhoneNumberMatcher {
-
-  private static final int REQUIRED_MATCHED_DIGITS = 7;
-
-  /**
-   * Returns {@code true} if the given numbers can be interpreted to be the same.
-   *
-   * <p>This method is called numerous times when rendering the call log. Using string methods is
-   * too slow, so character by character matching is used instead.
-   */
-  public static boolean matches(@NonNull String lhs, @NonNull String rhs) {
-    return lastSevenDigitsCharacterByCharacterMatches(lhs, rhs);
-  }
-
-  /**
-   * This strategy examines the numbers character by character starting from the end. If the last
-   * {@link #REQUIRED_MATCHED_DIGITS} match, it returns {@code true}.
-   */
-  private static boolean lastSevenDigitsCharacterByCharacterMatches(
-      @NonNull String lhs, @NonNull String rhs) {
-    int lhsIndex = lhs.length() - 1;
-    int rhsIndex = rhs.length() - 1;
-
-    int matchedDigits = 0;
-
-    while (lhsIndex >= 0 && rhsIndex >= 0) {
-      if (!Character.isDigit(lhs.charAt(lhsIndex))) {
-        --lhsIndex;
-        continue;
-      }
-      if (!Character.isDigit(rhs.charAt(rhsIndex))) {
-        --rhsIndex;
-        continue;
-      }
-      if (lhs.charAt(lhsIndex) != rhs.charAt(rhsIndex)) {
-        break;
-      }
-      --lhsIndex;
-      --rhsIndex;
-      ++matchedDigits;
-    }
-
-    return matchedDigits >= REQUIRED_MATCHED_DIGITS;
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/OutgoingCallComposerData.java b/java/com/android/dialer/enrichedcall/OutgoingCallComposerData.java
deleted file mode 100644
index 56145dd..0000000
--- a/java/com/android/dialer/enrichedcall/OutgoingCallComposerData.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.enrichedcall;
-
-import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.google.auto.value.AutoValue;
-
-/**
- * Value type holding references to all data that could be provided for the call composer.
- *
- * <p>Note: Either the subject, the image data, or both must be specified, e.g.
- *
- * <pre>
- *   OutgoingCallComposerData.builder.build(); // throws exception, no data set
- *   OutgoingCallComposerData.builder
- *       .setText(subject)
- *       .build(); // Success
- *   OutgoingCallComposerData.builder
- *       .setImageData(uri, contentType)
- *       .build(); // Success
- *   OutgoingCallComposerData.builder
- *      .setText(subject)
- *      .setImageData(uri, contentType)
- *      .build(); // Success
- * </pre>
- */
-@AutoValue
-public abstract class OutgoingCallComposerData {
-
-  public static Builder builder() {
-    return new AutoValue_OutgoingCallComposerData.Builder();
-  }
-
-  public boolean hasImageData() {
-    return getImageUri() != null && getImageContentType() != null;
-  }
-
-  @Nullable
-  public abstract String getSubject();
-
-  @Nullable
-  public abstract Uri getImageUri();
-
-  @Nullable
-  public abstract String getImageContentType();
-
-  /** Builds instances of {@link OutgoingCallComposerData}. */
-  @AutoValue.Builder
-  public abstract static class Builder {
-    public abstract Builder setSubject(String subject);
-
-    public Builder setImageData(@NonNull Uri imageUri, @NonNull String imageContentType) {
-      setImageUri(Assert.isNotNull(imageUri));
-      setImageContentType(Assert.isNotNull(imageContentType));
-      return this;
-    }
-
-    abstract Builder setImageUri(Uri imageUri);
-
-    abstract Builder setImageContentType(String imageContentType);
-
-    abstract OutgoingCallComposerData autoBuild();
-
-    /**
-     * Returns the OutgoingCallComposerData from this builder.
-     *
-     * @return the OutgoingCallComposerData.
-     * @throws IllegalStateException if neither {@link #setSubject(String)} nor {@link
-     *     #setImageData(Uri, String)} were called.
-     */
-    public OutgoingCallComposerData build() {
-      OutgoingCallComposerData data = autoBuild();
-      Assert.checkState(data.getSubject() != null || data.hasImageData());
-      return data;
-    }
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/RcsVideoShareFactory.java b/java/com/android/dialer/enrichedcall/RcsVideoShareFactory.java
deleted file mode 100644
index faea3bc..0000000
--- a/java/com/android/dialer/enrichedcall/RcsVideoShareFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.enrichedcall;
-
-import android.support.annotation.NonNull;
-import com.android.incallui.videotech.VideoTech;
-import com.android.incallui.videotech.VideoTech.VideoTechListener;
-
-/** Interface for creating new RCS video tech instances. */
-public interface RcsVideoShareFactory {
-
-  @NonNull
-  VideoTech newRcsVideoShare(
-      @NonNull EnrichedCallManager enrichedCallManager,
-      @NonNull VideoTechListener videoTechListener,
-      @NonNull String number);
-}
diff --git a/java/com/android/dialer/enrichedcall/Session.java b/java/com/android/dialer/enrichedcall/Session.java
deleted file mode 100644
index 06837e3..0000000
--- a/java/com/android/dialer/enrichedcall/Session.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.enrichedcall;
-
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.multimedia.MultimediaData;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/** Holds state information and data about enriched calling sessions. */
-public interface Session {
-
-  /** Possible states for call composer sessions. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({
-    STATE_NONE,
-    STATE_STARTING,
-    STATE_STARTED,
-    STATE_START_FAILED,
-    STATE_MESSAGE_SENT,
-    STATE_MESSAGE_FAILED,
-    STATE_CLOSED,
-  })
-  @interface State {}
-
-  int STATE_NONE = 0;
-  int STATE_STARTING = STATE_NONE + 1;
-  int STATE_STARTED = STATE_STARTING + 1;
-  int STATE_START_FAILED = STATE_STARTED + 1;
-  int STATE_MESSAGE_SENT = STATE_START_FAILED + 1;
-  int STATE_MESSAGE_FAILED = STATE_MESSAGE_SENT + 1;
-  int STATE_CLOSED = STATE_MESSAGE_FAILED + 1;
-
-  /** Id used for sessions that fail to start. */
-  long NO_SESSION_ID = -1;
-
-  /**
-   * An id for the specific case when sending a message fails so early that a message id isn't
-   * created.
-   */
-  String MESSAGE_ID_COULD_NOT_CREATE_ID = "messageIdCouldNotCreateId";
-
-  /**
-   * Returns the id associated with this session, or {@link #NO_SESSION_ID} if this represents a
-   * session that failed to start.
-   */
-  long getSessionId();
-
-  /** Returns the id of the dialer call associated with this session, or null if there isn't one. */
-  @Nullable
-  String getUniqueDialerCallId();
-
-  void setUniqueDialerCallId(@NonNull String id);
-
-  /** Returns the number associated with the remote end of this session. */
-  @NonNull
-  String getRemoteNumber();
-
-  /** Returns the {@link State} for this session. */
-  @State
-  int getState();
-
-  /** Returns the {@link MultimediaData} associated with this session. */
-  @NonNull
-  MultimediaData getMultimediaData();
-
-  /** Returns type of this session, based on some arbitrarily defined type. */
-  int getType();
-
-  /**
-   * Sets the {@link MultimediaData} for this session.
-   *
-   *
-   * @throws IllegalArgumentException if the type is invalid
-   */
-  void setSessionData(@NonNull MultimediaData multimediaData, int type);
-}
diff --git a/java/com/android/dialer/enrichedcall/extensions/StateExtension.java b/java/com/android/dialer/enrichedcall/extensions/StateExtension.java
deleted file mode 100644
index 5d90829..0000000
--- a/java/com/android/dialer/enrichedcall/extensions/StateExtension.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.enrichedcall.extensions;
-
-import android.support.annotation.NonNull;
-import com.android.dialer.common.Assert;
-import com.android.dialer.enrichedcall.Session;
-import com.android.dialer.enrichedcall.Session.State;
-
-/** Extends the {@link State} to include a toString method. */
-public class StateExtension {
-
-  /** Returns the string representation for the given {@link State}. */
-  @NonNull
-  public static String toString(@State int callComposerState) {
-    if (callComposerState == Session.STATE_NONE) {
-      return "STATE_NONE";
-    }
-    if (callComposerState == Session.STATE_STARTING) {
-      return "STATE_STARTING";
-    }
-    if (callComposerState == Session.STATE_STARTED) {
-      return "STATE_STARTED";
-    }
-    if (callComposerState == Session.STATE_START_FAILED) {
-      return "STATE_START_FAILED";
-    }
-    if (callComposerState == Session.STATE_MESSAGE_SENT) {
-      return "STATE_MESSAGE_SENT";
-    }
-    if (callComposerState == Session.STATE_MESSAGE_FAILED) {
-      return "STATE_MESSAGE_FAILED";
-    }
-    if (callComposerState == Session.STATE_CLOSED) {
-      return "STATE_CLOSED";
-    }
-    Assert.checkArgument(false, "Unexpected callComposerState: %d", callComposerState);
-    return null;
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/historyquery/HistoryQuery.java b/java/com/android/dialer/enrichedcall/historyquery/HistoryQuery.java
deleted file mode 100644
index e61c79e..0000000
--- a/java/com/android/dialer/enrichedcall/historyquery/HistoryQuery.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.dialer.enrichedcall.historyquery;
-
-import android.support.annotation.NonNull;
-import com.android.dialer.common.LogUtil;
-import com.google.auto.value.AutoValue;
-
-/**
- * Data object representing the pieces of information required to query for historical enriched call
- * data.
- */
-@AutoValue
-public abstract class HistoryQuery {
-
-  @NonNull
-  public static HistoryQuery create(@NonNull String number, long callStartTime, long callEndTime) {
-    return new AutoValue_HistoryQuery(number, callStartTime, callEndTime);
-  }
-
-  public abstract String getNumber();
-
-  public abstract long getCallStartTimestamp();
-
-  public abstract long getCallEndTimestamp();
-
-  @Override
-  public String toString() {
-    return String.format(
-        "HistoryQuery{number: %s, callStartTimestamp: %d, callEndTimestamp: %d}",
-        LogUtil.sanitizePhoneNumber(getNumber()), getCallStartTimestamp(), getCallEndTimestamp());
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/historyquery/proto/history_result.proto b/java/com/android/dialer/enrichedcall/historyquery/proto/history_result.proto
deleted file mode 100644
index 6aed395..0000000
--- a/java/com/android/dialer/enrichedcall/historyquery/proto/history_result.proto
+++ /dev/null
@@ -1,23 +0,0 @@
-syntax = "proto2";
-
-option java_package = "com.android.dialer.enrichedcall.historyquery.proto";
-option java_multiple_files = true;
-
-
-package com.android.dialer.enrichedcall.historyquery.proto;
-
-// Holds data that was used in an enrichedcall in the past
-message HistoryResult {
-  optional Type type = 1;
-  optional string text = 2;
-  optional string image_uri = 4;
-  optional string image_content_type = 5;
-  optional int64 timestamp = 7;
-
-  enum Type {
-    INCOMING_CALL_COMPOSER = 1;
-    OUTGOING_CALL_COMPOSER = 2;
-    INCOMING_POST_CALL = 3;
-    OUTGOING_POST_CALL = 4;
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/simulator/AndroidManifest.xml b/java/com/android/dialer/enrichedcall/simulator/AndroidManifest.xml
deleted file mode 100644
index 35dc531..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.calldetails">
-  <application>
-  <activity
-        android:label="@string/enriched_call_simulator_activity"
-        android:name="com.android.dialer.enrichedcall.simulator.EnrichedCallSimulatorActivity">
-    </activity>
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/enrichedcall/simulator/EnrichedCallSimulatorActivity.java b/java/com/android/dialer/enrichedcall/simulator/EnrichedCallSimulatorActivity.java
deleted file mode 100644
index bbc1ada..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/EnrichedCallSimulatorActivity.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.enrichedcall.simulator;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.Toolbar;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.Button;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.enrichedcall.EnrichedCallManager.StateChangedListener;
-
-/**
- * Activity used to display Enriched call sessions that are currently in memory, and create new
- * outgoing sessions with various bits of data.
- *
- * <p>This activity will dynamically refresh as new sessions are added or updated, but there's no
- * update when sessions are deleted from memory. Use the refresh button to update the view.
- */
-public class EnrichedCallSimulatorActivity extends AppCompatActivity
-    implements StateChangedListener, OnClickListener {
-
-  public static Intent newIntent(@NonNull Context context) {
-    return new Intent(Assert.isNotNull(context), EnrichedCallSimulatorActivity.class);
-  }
-
-  private Button refreshButton;
-
-  private SessionsAdapter sessionsAdapter;
-
-  @Override
-  protected void onCreate(@Nullable Bundle bundle) {
-    LogUtil.enterBlock("EnrichedCallSimulatorActivity.onCreate");
-    super.onCreate(bundle);
-    setContentView(R.layout.enriched_call_simulator_activity);
-    Toolbar toolbar = findViewById(R.id.toolbar);
-    toolbar.setTitle(R.string.enriched_call_simulator_activity);
-
-    refreshButton = findViewById(R.id.refresh);
-    refreshButton.setOnClickListener(this);
-
-    RecyclerView recyclerView = findViewById(R.id.sessions_recycler_view);
-    recyclerView.setLayoutManager(new LinearLayoutManager(this));
-
-    sessionsAdapter = new SessionsAdapter();
-    sessionsAdapter.setSessionStrings(getEnrichedCallManager().getAllSessionsForDisplay());
-    recyclerView.setAdapter(sessionsAdapter);
-  }
-
-  @Override
-  protected void onResume() {
-    LogUtil.enterBlock("EnrichedCallSimulatorActivity.onResume");
-    super.onResume();
-    getEnrichedCallManager().registerStateChangedListener(this);
-  }
-
-  @Override
-  protected void onPause() {
-    LogUtil.enterBlock("EnrichedCallSimulatorActivity.onPause");
-    super.onPause();
-    getEnrichedCallManager().unregisterStateChangedListener(this);
-  }
-
-  @Override
-  public void onEnrichedCallStateChanged() {
-    LogUtil.enterBlock("EnrichedCallSimulatorActivity.onEnrichedCallStateChanged");
-    refreshSessions();
-  }
-
-  @Override
-  public void onClick(View v) {
-    if (v == refreshButton) {
-      LogUtil.i("EnrichedCallSimulatorActivity.onClick", "refreshing sessions");
-      refreshSessions();
-    }
-  }
-
-  private void refreshSessions() {
-    sessionsAdapter.setSessionStrings(getEnrichedCallManager().getAllSessionsForDisplay());
-    sessionsAdapter.notifyDataSetChanged();
-  }
-
-  private EnrichedCallManager getEnrichedCallManager() {
-    return EnrichedCallComponent.get(this).getEnrichedCallManager();
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/simulator/SessionViewHolder.java b/java/com/android/dialer/enrichedcall/simulator/SessionViewHolder.java
deleted file mode 100644
index 4443125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/SessionViewHolder.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.enrichedcall.simulator;
-
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
-import android.view.View;
-import android.widget.TextView;
-
-/** ViewHolder for an Enriched call session. */
-class SessionViewHolder extends RecyclerView.ViewHolder {
-
-  private final TextView sessionStringView;
-
-  SessionViewHolder(View view) {
-    super(view);
-    sessionStringView = view.findViewById(R.id.session_string);
-  }
-
-  void updateSession(@NonNull String sessionString) {
-    sessionStringView.setText(sessionString);
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/simulator/SessionsAdapter.java b/java/com/android/dialer/enrichedcall/simulator/SessionsAdapter.java
deleted file mode 100644
index 25edfc7..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/SessionsAdapter.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.enrichedcall.simulator;
-
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.ViewGroup;
-import com.android.dialer.common.Assert;
-import java.util.List;
-
-/** Adapter for the RecyclerView in {@link EnrichedCallSimulatorActivity}. */
-class SessionsAdapter extends RecyclerView.Adapter<SessionViewHolder> {
-
-  /** List of the string representation of all in-memory sessions */
-  private List<String> sessionStrings;
-
-  void setSessionStrings(@NonNull List<String> sessionStrings) {
-    this.sessionStrings = Assert.isNotNull(sessionStrings);
-  }
-
-  @Override
-  public SessionViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
-    LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
-    return new SessionViewHolder(inflater.inflate(R.layout.session_view_holder, viewGroup, false));
-  }
-
-  @Override
-  public void onBindViewHolder(SessionViewHolder viewHolder, int i) {
-    viewHolder.updateSession(sessionStrings.get(i));
-  }
-
-  @Override
-  public int getItemCount() {
-    return sessionStrings.size();
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/layout/enriched_call_simulator_activity.xml b/java/com/android/dialer/enrichedcall/simulator/res/layout/enriched_call_simulator_activity.xml
deleted file mode 100644
index be9aa7d..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/layout/enriched_call_simulator_activity.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-  <com.android.dialer.widget.DialerToolbar
-      android:id="@+id/toolbar"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"/>
-
-  <android.support.v7.widget.RecyclerView
-      android:id="@+id/sessions_recycler_view"
-      android:layout_width="match_parent"
-      android:layout_height="0dp"
-      android:layout_weight="1"/>
-
-  <Button
-      android:id="@+id/refresh"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:text="@string/refresh"/>
-</LinearLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/layout/session_view_holder.xml b/java/com/android/dialer/enrichedcall/simulator/res/layout/session_view_holder.xml
deleted file mode 100644
index 65543bd..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/layout/session_view_holder.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/session_string"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:padding="2dp"/>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-af/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-af/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-af/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-am/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-am/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-am/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ar/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ar/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ar/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-az/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-az/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-az/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-be/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-be/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-be/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-bg/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-bg/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-bg/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-bn/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-bn/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-bn/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-bs/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-bs/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-bs/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ca/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ca/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ca/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-cs/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-cs/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-cs/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-da/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-da/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-da/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-de/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-de/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-de/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-el/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-el/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-el/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rAU/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-en-rAU/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rGB/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-en-rGB/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rIN/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-en-rIN/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-es-rUS/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-es-rUS/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-es/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-es/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-es/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-et/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-et/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-et/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-eu/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-eu/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-eu/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-fa/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-fa/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-fa/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-fi/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-fi/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-fi/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-fr-rCA/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-fr/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-fr/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-fr/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-gl/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-gl/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-gl/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-gu/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-gu/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-gu/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-hi/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-hi/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-hi/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-hr/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-hr/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-hr/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-hu/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-hu/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-hu/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-hy/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-hy/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-hy/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-in/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-in/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-in/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-is/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-is/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-is/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-it/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-it/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-it/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-iw/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-iw/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-iw/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ja/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ja/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ja/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ka/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ka/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ka/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-kk/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-kk/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-kk/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-km/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-km/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-km/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-kn/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-kn/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-kn/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ko/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ko/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ko/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ky/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ky/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ky/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-lo/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-lo/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-lo/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-lt/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-lt/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-lt/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-lv/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-lv/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-lv/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-mk/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-mk/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-mk/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ml/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ml/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ml/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-mn/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-mn/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-mn/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-mr/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-mr/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-mr/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ms/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ms/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ms/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-my/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-my/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-my/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-nb/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-nb/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-nb/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ne/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ne/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ne/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-nl/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-nl/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-nl/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-no/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-no/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-no/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-pa/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-pa/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-pa/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-pl/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-pl/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-pl/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rBR/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rPT/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-pt/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-pt/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-pt/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ro/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ro/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ro/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ru/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ru/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ru/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-si/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-si/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-si/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sk/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sk/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sk/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sl/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sl/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sl/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sq/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sq/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sq/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sr/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sr/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sr/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sv/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sv/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sv/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-sw/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-sw/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-sw/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ta/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ta/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ta/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-te/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-te/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-te/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-th/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-th/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-th/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-tl/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-tl/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-tl/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-tr/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-tr/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-tr/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-uk/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-uk/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-uk/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-ur/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-ur/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-ur/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-uz/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-uz/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-uz/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-vi/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-vi/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-vi/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rCN/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rHK/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rTW/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values-zu/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values-zu/strings.xml
deleted file mode 100644
index 045e125..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values-zu/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml b/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml
deleted file mode 100644
index 06b0465..0000000
--- a/java/com/android/dialer/enrichedcall/simulator/res/values/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <string name="enriched_call_simulator_activity" translatable="false">Enriched Call Simulator Activity</string>
-
-  <string name="refresh" translatable="false">refresh</string>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java b/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
deleted file mode 100644
index 55bc0db..0000000
--- a/java/com/android/dialer/enrichedcall/stub/EnrichedCallManagerStub.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.enrichedcall.stub;
-
-import android.content.BroadcastReceiver.PendingResult;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.calldetails.CallDetailsEntries;
-import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry;
-import com.android.dialer.common.Assert;
-import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.enrichedcall.Session;
-import com.android.dialer.enrichedcall.historyquery.proto.HistoryResult;
-import com.android.dialer.enrichedcall.videoshare.VideoShareListener;
-import com.android.dialer.enrichedcall.videoshare.VideoShareSession;
-import com.android.dialer.multimedia.MultimediaData;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/** Stub implementation of {@link EnrichedCallManager}. */
-public final class EnrichedCallManagerStub implements EnrichedCallManager {
-
-  @Override
-  public void registerCapabilitiesListener(@NonNull CapabilitiesListener listener) {}
-
-  @Override
-  public void requestCapabilities(@NonNull String number) {}
-
-  @Override
-  public void unregisterCapabilitiesListener(@NonNull CapabilitiesListener listener) {}
-
-  @Override
-  public EnrichedCallCapabilities getCapabilities(@NonNull String number) {
-    return null;
-  }
-
-  @Override
-  public void clearCachedData() {}
-
-  @Override
-  public long startCallComposerSession(@NonNull String number) {
-    return Session.NO_SESSION_ID;
-  }
-
-  @Override
-  public void sendCallComposerData(long sessionId, @NonNull MultimediaData data) {}
-
-  @Override
-  public void endCallComposerSession(long sessionId) {}
-
-  @Override
-  public void sendPostCallNote(@NonNull String number, @NonNull String message) {}
-
-  @Override
-  public void onCapabilitiesReceived(
-      @NonNull String number, @NonNull EnrichedCallCapabilities capabilities) {}
-
-  @Override
-  public void registerStateChangedListener(@NonNull StateChangedListener listener) {}
-
-  @Nullable
-  @Override
-  public Session getSession(
-      @NonNull String uniqueCallId, @NonNull String number, @Nullable Filter filter) {
-    return null;
-  }
-
-  @Nullable
-  @Override
-  public Session getSession(long sessionId) {
-    return null;
-  }
-
-  @MainThread
-  @NonNull
-  @Override
-  public List<String> getAllSessionsForDisplay() {
-    Assert.isMainThread();
-    return Collections.emptyList();
-  }
-
-  @NonNull
-  @Override
-  public Filter createIncomingCallComposerFilter() {
-    return session -> false;
-  }
-
-  @NonNull
-  @Override
-  public Filter createOutgoingCallComposerFilter() {
-    return session -> false;
-  }
-
-  @Override
-  public void registerHistoricalDataChangedListener(
-      @NonNull HistoricalDataChangedListener listener) {}
-
-  @Override
-  public void unregisterHistoricalDataChangedListener(
-      @NonNull HistoricalDataChangedListener listener) {}
-
-  @Nullable
-  @Override
-  @MainThread
-  public Map<CallDetailsEntry, List<HistoryResult>> getAllHistoricalData(
-      @NonNull String number, @NonNull CallDetailsEntries entries) {
-    Assert.isMainThread();
-    return null;
-  }
-
-  @Override
-  public boolean hasStoredData() {
-    Assert.isMainThread();
-    return false;
-  }
-
-  @MainThread
-  @Override
-  public void requestAllHistoricalData(
-      @NonNull String number, @NonNull CallDetailsEntries entries) {
-    Assert.isMainThread();
-  }
-
-  @Override
-  public void unregisterStateChangedListener(@NonNull StateChangedListener listener) {}
-
-  @Override
-  public void onSessionStatusUpdate(long sessionId, @NonNull String number, int state) {}
-
-  @Override
-  public void onMessageUpdate(long sessionId, @NonNull String messageId, int state) {}
-
-  @Override
-  public void onIncomingCallComposerData(long sessionId, @NonNull MultimediaData multimediaData) {}
-
-  @Override
-  public void onIncomingPostCallData(
-      @NonNull PendingResult pendingResult,
-      long sessionId,
-      @NonNull MultimediaData multimediaData) {
-    pendingResult.finish();
-  }
-
-  @Override
-  public void registerVideoShareListener(@NonNull VideoShareListener listener) {}
-
-  @Override
-  public void unregisterVideoShareListener(@NonNull VideoShareListener listener) {}
-
-  @Override
-  public boolean onIncomingVideoShareInvite(long sessionId, @NonNull String number) {
-    return false;
-  }
-
-  @Override
-  public long startVideoShareSession(String number) {
-    return Session.NO_SESSION_ID;
-  }
-
-  @Override
-  public boolean acceptVideoShareSession(long sessionId) {
-    return false;
-  }
-
-  @Override
-  public long getVideoShareInviteSessionId(@NonNull String number) {
-    return Session.NO_SESSION_ID;
-  }
-
-  @MainThread
-  @Nullable
-  @Override
-  public VideoShareSession getVideoShareSession(long sessionId) {
-    Assert.isMainThread();
-    return null;
-  }
-
-  @Override
-  public void endVideoShareSession(long sessionId) {}
-}
diff --git a/java/com/android/dialer/enrichedcall/stub/StubEnrichedCallModule.java b/java/com/android/dialer/enrichedcall/stub/StubEnrichedCallModule.java
deleted file mode 100644
index 5a0618d..0000000
--- a/java/com/android/dialer/enrichedcall/stub/StubEnrichedCallModule.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.enrichedcall.stub;
-
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.enrichedcall.RcsVideoShareFactory;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.incallui.videotech.empty.EmptyVideoTech;
-import dagger.Module;
-import dagger.Provides;
-import javax.inject.Singleton;
-
-/** Module which binds {@link EnrichedCallManagerStub}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public class StubEnrichedCallModule {
-
-  @Provides
-  @Singleton
-  static EnrichedCallManager provideEnrichedCallManager() {
-    return new EnrichedCallManagerStub();
-  }
-
-  @Provides
-  @Singleton
-  static RcsVideoShareFactory providesRcsVideoShareFactory() {
-    return (enrichedCallManager, videoTechListener, number) -> new EmptyVideoTech();
-  }
-
-  private StubEnrichedCallModule() {}
-}
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareException.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareException.java
deleted file mode 100644
index 9d3a9ab..0000000
--- a/java/com/android/dialer/enrichedcall/videoshare/VideoShareException.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.enrichedcall.videoshare;
-
-/** Exceptions occurring from using DreamVideo and video share configuration. */
-public class VideoShareException extends Exception {
-
-  public VideoShareException(String message) {
-    super(message);
-  }
-}
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java
deleted file mode 100644
index a7d656a..0000000
--- a/java/com/android/dialer/enrichedcall/videoshare/VideoShareListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.enrichedcall.videoshare;
-
-import android.content.Context;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-
-/** Receives updates when video share status has changed. */
-public interface VideoShareListener {
-
-  /**
-   * Callback fired when video share has changed (service connected / disconnected, video share
-   * invite received or canceled, or when a session changes).
-   */
-  @MainThread
-  void onVideoShareChanged(@NonNull Context context);
-}
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java
deleted file mode 100644
index b0f24ff..0000000
--- a/java/com/android/dialer/enrichedcall/videoshare/VideoShareSession.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.enrichedcall.videoshare;
-
-import android.support.annotation.NonNull;
-import android.view.SurfaceView;
-
-/** Holds state information and data about video share sessions. */
-public interface VideoShareSession {
-  void setSessionId(long sessionId);
-
-  long getSessionId();
-
-  int getState();
-
-  void pause();
-
-  void unpause();
-
-  void dispose();
-
-  void setSurfaceView(@NonNull SurfaceView surfaceView);
-
-  void setCamera(String cameraId);
-}
diff --git a/java/com/android/dialer/enrichedcall/videoshare/VideoShareSessionListener.java b/java/com/android/dialer/enrichedcall/videoshare/VideoShareSessionListener.java
deleted file mode 100644
index 1e612bf..0000000
--- a/java/com/android/dialer/enrichedcall/videoshare/VideoShareSessionListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.enrichedcall.videoshare;
-
-/** Interface for receiving updates on session initialization failure or termination. */
-public interface VideoShareSessionListener {
-
-  void onSessionTerminated(VideoShareSession session);
-
-  void onSessionInitializationFailed(VideoShareSession session, Exception e);
-
-  /**
-   * Called when a session hasn't received a keep-alive or video packet within the timeout time
-   * period.
-   *
-   * @param session The session that timed out
-   */
-  void onSessionTimedOut(VideoShareSession session);
-}
diff --git a/java/com/android/dialer/feedback/FeedbackComponent.java b/java/com/android/dialer/feedback/FeedbackComponent.java
deleted file mode 100644
index 3c78197..0000000
--- a/java/com/android/dialer/feedback/FeedbackComponent.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.feedback;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.incallui.call.CallList;
-import dagger.Subcomponent;
-
-/** Subcomponent that can be used to access the feedback implementation. */
-@Subcomponent
-public abstract class FeedbackComponent {
-  @NonNull
-  public abstract CallList.Listener getCallFeedbackListener();
-
-  @NonNull
-  public abstract FeedbackSender getCallFeedbackSender();
-
-  public static FeedbackComponent get(Context context) {
-    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
-        .feedbackComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  public interface HasComponent {
-    FeedbackComponent feedbackComponent();
-  }
-}
diff --git a/java/com/android/dialer/feedback/FeedbackSender.java b/java/com/android/dialer/feedback/FeedbackSender.java
deleted file mode 100644
index 8f40209..0000000
--- a/java/com/android/dialer/feedback/FeedbackSender.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.feedback;
-
-/** Defines the apis provided by the class handling uploading of feedback. */
-public interface FeedbackSender {
-  void sendFeedback(Object feedbackOptions);
-
-  Object getFeedbackOptionsBuilder();
-}
diff --git a/java/com/android/dialer/feedback/stub/CallFeedbackListenerStub.java b/java/com/android/dialer/feedback/stub/CallFeedbackListenerStub.java
deleted file mode 100644
index 3eb8590..0000000
--- a/java/com/android/dialer/feedback/stub/CallFeedbackListenerStub.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.feedback.stub;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.common.Assert;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.incallui.call.CallList;
-import com.android.incallui.call.DialerCall;
-import javax.inject.Inject;
-
-/**
- * Stub implementation of {@link com.google.android.apps.dialer.feedback.CallFeedbackListenerImpl}
- */
-public class CallFeedbackListenerStub implements CallList.Listener {
-
-  @NonNull private final Context context;
-
-  @Inject
-  public CallFeedbackListenerStub(@ApplicationContext @NonNull Context context) {
-    this.context = Assert.isNotNull(context);
-  }
-
-  @Override
-  public void onIncomingCall(DialerCall call) {}
-
-  @Override
-  public void onUpgradeToVideo(DialerCall call) {}
-
-  @Override
-  public void onSessionModificationStateChange(DialerCall call) {}
-
-  @Override
-  public void onCallListChange(CallList callList) {}
-
-  @Override
-  public void onDisconnect(DialerCall call) {}
-
-  @Override
-  public void onWiFiToLteHandover(DialerCall call) {}
-
-  @Override
-  public void onHandoverToWifiFailed(DialerCall call) {}
-
-  @Override
-  public void onInternationalCallOnWifi(@NonNull DialerCall call) {}
-}
diff --git a/java/com/android/dialer/feedback/stub/FeedbackSenderStub.java b/java/com/android/dialer/feedback/stub/FeedbackSenderStub.java
deleted file mode 100644
index cde7a99..0000000
--- a/java/com/android/dialer/feedback/stub/FeedbackSenderStub.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.feedback.stub;
-
-import com.android.dialer.feedback.FeedbackSender;
-import javax.inject.Inject;
-
-/** Stub module that is returned if the Feedback module is not enabled. */
-public class FeedbackSenderStub implements FeedbackSender {
-
-  @Inject
-  public FeedbackSenderStub() {}
-
-  @Override
-  public void sendFeedback(Object feedbackOptions) {}
-
-  @Override
-  public Object getFeedbackOptionsBuilder() {
-    return null;
-  }
-}
diff --git a/java/com/android/dialer/feedback/stub/StubFeedbackModule.java b/java/com/android/dialer/feedback/stub/StubFeedbackModule.java
deleted file mode 100644
index 19f7e2e..0000000
--- a/java/com/android/dialer/feedback/stub/StubFeedbackModule.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.feedback.stub;
-
-import android.content.Context;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.feedback.FeedbackSender;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.dialer.logging.LoggingBindings;
-import com.android.dialer.logging.LoggingBindingsFactory;
-import com.android.dialer.logging.LoggingBindingsStub;
-import com.android.incallui.call.CallList;
-import dagger.Module;
-import dagger.Provides;
-
-/** Module which bind {@link com.android.dialer.feedback.stub.CallFeedbackListenerStub}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public class StubFeedbackModule {
-
-  @Provides
-  static LoggingBindings provideLoggingBindings(LoggingBindingsFactory factory) {
-    return new LoggingBindingsStub();
-  }
-
-  @Provides
-  static FeedbackSender provideCallFeedbackSender() {
-    LogUtil.i("StubFeedbackModule.provideCallFeedbackSender", "return stub");
-    return new FeedbackSenderStub();
-  }
-
-  @Provides
-  static CallList.Listener provideCallFeedbackListener(@ApplicationContext Context context) {
-    LogUtil.i("StubFeedbackModule.provideCallFeedbackListener", "returning stub");
-    return new CallFeedbackListenerStub(context);
-  }
-}
diff --git a/java/com/android/dialer/function/BiConsumer.java b/java/com/android/dialer/function/BiConsumer.java
deleted file mode 100644
index 5005221..0000000
--- a/java/com/android/dialer/function/BiConsumer.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.function;
-
-/** Functional interface for consuming two generic values. */
-public interface BiConsumer<T, U> {
-
-  /** Consumes a value. */
-  void accept(T t, U u);
-}
diff --git a/java/com/android/dialer/glidephotomanager/GlidePhotoManager.java b/java/com/android/dialer/glidephotomanager/GlidePhotoManager.java
index de16c38..78e61a4 100644
--- a/java/com/android/dialer/glidephotomanager/GlidePhotoManager.java
+++ b/java/com/android/dialer/glidephotomanager/GlidePhotoManager.java
@@ -16,10 +16,11 @@
 
 package com.android.dialer.glidephotomanager;
 
-import android.support.annotation.MainThread;
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
 
+import androidx.annotation.MainThread;
+
 /** Class to load photo for call/contacts */
 public interface GlidePhotoManager {
 
diff --git a/java/com/android/dialer/glidephotomanager/GlidePhotoManagerComponent.java b/java/com/android/dialer/glidephotomanager/GlidePhotoManagerComponent.java
index b4699be..b4f4e07 100644
--- a/java/com/android/dialer/glidephotomanager/GlidePhotoManagerComponent.java
+++ b/java/com/android/dialer/glidephotomanager/GlidePhotoManagerComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,9 @@
 package com.android.dialer.glidephotomanager;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
+
 import dagger.Subcomponent;
 
 /** Entry point for {@link GlidePhotoManager} */
diff --git a/java/com/android/dialer/glidephotomanager/GlidePhotoManagerModule.java b/java/com/android/dialer/glidephotomanager/GlidePhotoManagerModule.java
index d4199f0..f38ce3c 100644
--- a/java/com/android/dialer/glidephotomanager/GlidePhotoManagerModule.java
+++ b/java/com/android/dialer/glidephotomanager/GlidePhotoManagerModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,14 +18,13 @@
 package com.android.dialer.glidephotomanager;
 
 import com.android.dialer.glidephotomanager.impl.GlidePhotoManagerImpl;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import dagger.Binds;
-import dagger.Module;
+
 import javax.inject.Singleton;
 
+import dagger.Binds;
+import dagger.Module;
+
 /** Module for {@link GlidePhotoManagerComponent} */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module
 public abstract class GlidePhotoManagerModule {
   @Binds
diff --git a/java/com/android/dialer/glidephotomanager/impl/AndroidManifest.xml b/java/com/android/dialer/glidephotomanager/impl/AndroidManifest.xml
deleted file mode 100644
index 065c103..0000000
--- a/java/com/android/dialer/glidephotomanager/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest
-    package="com.android.dialer.glidephotomanager.impl">
-</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/glidephotomanager/impl/DefaultLookupUriGenerator.java b/java/com/android/dialer/glidephotomanager/impl/DefaultLookupUriGenerator.java
index 2c4acd4..fdd7391 100644
--- a/java/com/android/dialer/glidephotomanager/impl/DefaultLookupUriGenerator.java
+++ b/java/com/android/dialer/glidephotomanager/impl/DefaultLookupUriGenerator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,7 +22,9 @@
 import android.provider.ContactsContract.CommonDataKinds;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.DisplayNameSources;
+
 import com.android.dialer.glidephotomanager.PhotoInfo;
+
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
diff --git a/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java b/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java
index 9129e58..078a6ce 100644
--- a/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java
+++ b/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023-2024 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,12 +23,15 @@
 import android.net.Uri;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
-import android.support.annotation.MainThread;
-import android.support.annotation.Nullable;
 import android.telecom.TelecomManager;
 import android.text.TextUtils;
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.glide.GlideApp;
 import com.android.dialer.glide.GlideRequest;
@@ -37,7 +41,9 @@
 import com.android.dialer.i18n.DialerBidiFormatter;
 import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.lettertile.LetterTileDrawable;
+
 import java.util.List;
+
 import javax.inject.Inject;
 
 /** Implementation of {@link GlidePhotoManager} */
@@ -89,7 +95,7 @@
 
     if (photoInfo.getIsBlocked()) {
       // Whether the number is blocked takes precedence over the spam status.
-      request = requestManager.load(R.drawable.ic_block_grey_48dp);
+      request = requestManager.load(R.drawable.quantum_ic_block_vd_theme_24);
 
     } else if (photoInfo.getIsSpam()) {
       request = requestManager.load(R.drawable.quantum_ic_report_vd_red_24);
diff --git a/java/com/android/dialer/glidephotomanager/impl/res/drawable/ic_block_grey_48dp.xml b/java/com/android/dialer/glidephotomanager/impl/res/drawable/ic_block_grey_48dp.xml
deleted file mode 100644
index 9d2fb36..0000000
--- a/java/com/android/dialer/glidephotomanager/impl/res/drawable/ic_block_grey_48dp.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!-- Copyright (C) 2018 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-  <path android:pathData="M0 0h24v24H0z"/>
-  <path
-      android:fillColor="#757575"
-      android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"/>
-</vector>
\ No newline at end of file
diff --git a/java/com/android/dialer/helplines/HelplineActivity.java b/java/com/android/dialer/helplines/HelplineActivity.java
new file mode 100644
index 0000000..c79f6cd
--- /dev/null
+++ b/java/com/android/dialer/helplines/HelplineActivity.java
@@ -0,0 +1,281 @@
+/*
+ * Copyright (C) 2019-2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.helplines;
+
+
+import static android.graphics.Paint.UNDERLINE_TEXT_FLAG;
+
+import android.app.ActionBar;
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.telephony.SubscriptionManager;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.webkit.CookieManager;
+import android.webkit.WebResourceRequest;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
+import com.android.dialer.app.calllog.IntentProvider;
+import com.android.dialer.helplines.utils.HelplineUtils;
+
+import org.lineageos.lib.phone.spn.Item;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class HelplineActivity extends AppCompatActivity {
+
+    public static final String SHARED_PREFERENCES_KEY = "com.android.dialer.prefs";
+
+    private static final String KEY_FIRST_LAUNCH = "pref_first_launch";
+
+    private RecyclerView mRecyclerView;
+    private LinearLayout mLoadingView;
+    private LinearLayout mEmptyView;
+    private ProgressBar mProgressBar;
+
+    private HelplineAdapter mAdapter;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstance) {
+        super.onCreate(savedInstance);
+
+        ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
+
+        setContentView(R.layout.activity_helplines);
+        mRecyclerView = findViewById(R.id.helplines_list);
+        mLoadingView = findViewById(R.id.helplines_loading);
+        mEmptyView = findViewById(R.id.empty_view);
+        mProgressBar = findViewById(R.id.helplines_progress_bar);
+
+        mAdapter = new HelplineAdapter(getResources(), mListener);
+
+        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
+        mRecyclerView.setAdapter(mAdapter);
+
+        showUi();
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        finish();
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        MenuInflater menuInflater = getMenuInflater();
+        menuInflater.inflate(R.menu.menu_helplines, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        int id = item.getItemId();
+        if (id == android.R.id.home) {
+            finish();
+            return true;
+        } else if (id == R.id.menu_helpline_help) {
+            showHelp(true);
+            return true;
+        }
+
+        return super.onOptionsItemSelected(item);
+    }
+
+    private void showUi() {
+        mLoadingView.setVisibility(View.VISIBLE);
+
+        showHelp(false);
+        SubscriptionManager subManager = getSystemService(SubscriptionManager.class);
+        new LoadHelplinesTask(getResources(), subManager, mCallback).execute();
+    }
+
+    private void showHelp(boolean forceShow) {
+        SharedPreferences preferenceManager = getPrefs();
+        if (!forceShow && preferenceManager.getBoolean(KEY_FIRST_LAUNCH, false)) {
+            return;
+        }
+
+        preferenceManager.edit()
+                .putBoolean(KEY_FIRST_LAUNCH, true)
+                .apply();
+
+        new AlertDialog.Builder(this)
+                .setTitle(R.string.helplines_help_title)
+                .setMessage(R.string.helplines_help_message)
+                .setPositiveButton(android.R.string.ok, null)
+                .setNeutralButton(R.string.helpline_button_more, (dialog, which) -> showMoreInfo())
+                .show();
+    }
+
+    private void showMoreInfo() {
+        new AlertDialog.Builder(this)
+                .setMessage(getResources().getString(R.string.helplines_help_more_message,
+                        getResources().getString(R.string.helplines_contact_url)))
+                .setPositiveButton(android.R.string.ok, null)
+                .show();
+    }
+
+    public SharedPreferences getPrefs() {
+        return this.getSharedPreferences(SHARED_PREFERENCES_KEY,
+                Context.MODE_PRIVATE);
+    }
+
+    private final LoadHelplinesTask.Callback mCallback = new LoadHelplinesTask.Callback () {
+        @Override
+        public void onLoadListProgress(int progress) {
+            mProgressBar.setProgress(progress);
+        }
+
+        @Override
+        public void onLoadCompleted(List<HelplineItem> result) {
+            mLoadingView.setVisibility(View.GONE);
+            if (result.size() == 0) {
+                mEmptyView.setVisibility(View.VISIBLE);
+            } else {
+                mRecyclerView.setVisibility(View.VISIBLE);
+            }
+            mAdapter.update(result);
+        }
+    };
+
+    private final HelplineAdapter.Listener mListener = new HelplineAdapter.Listener() {
+        private AlertDialog mDialog;
+
+        @Override
+        public void initiateCall(@NonNull String number) {
+            IntentProvider provider = IntentProvider.getReturnCallIntentProvider(number);
+            Intent intent = provider.getClickIntent(HelplineActivity.this);
+            // Start the call and finish this activity - we don't want to leave traces of the call
+            startActivity(intent);
+            finish();
+        }
+
+        @Override
+        public void onItemClicked(@NonNull HelplineItem helplineItem) {
+            LayoutInflater inflater = LayoutInflater.from(HelplineActivity.this);
+            final View dialogView = inflater.inflate(R.layout.dialog_helpline_details, null);
+            Item item = helplineItem.getItem();
+
+            fillOrHideDialogRow(helplineItem.getName(), dialogView, R.id.name_title, R.id.name);
+            fillOrHideDialogRow(item.getOrganization(), dialogView, R.id.org_title, R.id.org);
+            fillOrHideDialogRow(HelplineUtils.getCategories(getResources(), helplineItem),
+                    dialogView, R.id.categories_title, R.id.categories);
+            fillOrHideDialogRow(item.getNumber(), dialogView, R.id.number_title, R.id.number);
+            fillOrHideDialogRow(item.getWebsite(), dialogView, R.id.website_title, R.id.website,
+                    true);
+
+            mDialog = new AlertDialog.Builder(HelplineActivity.this)
+                    .setView(dialogView)
+                    .setPositiveButton(android.R.string.ok, null)
+                    .show();
+        }
+
+        private void fillOrHideDialogRow(String content, View dialog, int headerViewId,
+                                         int contentViewId) {
+            fillOrHideDialogRow(content, dialog, headerViewId, contentViewId, false);
+        }
+
+        private void fillOrHideDialogRow(String content, View dialogView, int headerViewId,
+                                         int contentViewId, boolean isUrl) {
+            if (dialogView == null) {
+                return;
+            }
+            TextView headerView = dialogView.findViewById(headerViewId);
+            TextView contentView = dialogView.findViewById(contentViewId);
+            if (headerView == null || contentView == null) {
+                return;
+            }
+            if (TextUtils.isEmpty(content)) {
+                headerView.setVisibility(View.GONE);
+                contentView.setVisibility(View.GONE);
+                return;
+            }
+
+            contentView.setText(content);
+            if (isUrl) {
+                contentView.setPaintFlags(contentView.getPaintFlags() | UNDERLINE_TEXT_FLAG);
+
+                LayoutInflater inflater = HelplineActivity.this.getLayoutInflater();
+                contentView.setOnClickListener(v -> {
+                    AlertDialog.Builder dialogBuilder =
+                            new AlertDialog.Builder(HelplineActivity.this);
+                    View webviewDlgView = inflater.inflate(R.layout.dialog_webview, null);
+                    dialogBuilder.setView(webviewDlgView);
+                    LinearLayout loadingLayout = webviewDlgView.findViewById(R.id.webview_loading);
+
+                    // Disable cookies
+                    CookieManager.getInstance().setAcceptCookie(false);
+                    // Setup WebView
+                    WebView webView = webviewDlgView.findViewById(R.id.webview);
+                    webView.setWebViewClient(new WebViewClient() {
+                        @Override
+                        public boolean shouldOverrideUrlLoading(WebView view,
+                                WebResourceRequest request) {
+                          return false;
+                        }
+
+                        @Override
+                        public void onPageFinished(WebView view, String url) {
+                            super.onPageFinished(view, url);
+                            loadingLayout.setVisibility(ProgressBar.INVISIBLE);
+                            webView.setVisibility(View.VISIBLE);
+                        }
+                    });
+                    // Override headers to disable cache and add "Do not track"
+                    Map<String, String> headers = new HashMap<>(3);
+                    headers.put("Pragma", "no-cache");
+                    headers.put("Cache-Control", "no-cache");
+                    headers.put("DNT", "1");
+                    // Start loading the URL
+                    webView.loadUrl(content, headers);
+                    // Clear any WebView history
+                    dialogBuilder.setPositiveButton(android.R.string.ok, (dlg, which) -> {
+                        webView.clearHistory();
+                        dlg.dismiss();
+                    });
+                    dialogBuilder.setOnDismissListener(dialog -> webView.clearHistory());
+                    dialogBuilder.show();
+                    // dismiss the dialog, we show a new one already
+                    mDialog.dismiss();
+                });
+            }
+        }
+    };
+}
diff --git a/java/com/android/dialer/helplines/HelplineAdapter.java b/java/com/android/dialer/helplines/HelplineAdapter.java
new file mode 100644
index 0000000..1f67686
--- /dev/null
+++ b/java/com/android/dialer/helplines/HelplineAdapter.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2019-2021 The LineageOS Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.helplines;
+
+import android.content.res.Resources;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.DiffUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
+import com.android.dialer.helplines.utils.HelplineUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class HelplineAdapter extends RecyclerView.Adapter<HelplineAdapter.ViewHolder> {
+
+    private final Resources mResources;
+    private List<HelplineItem> mList = new ArrayList<>();
+    private final Listener mListener;
+
+    HelplineAdapter(Resources resources, Listener listener) {
+        mResources = resources;
+        mListener = listener;
+    }
+
+    public void update(List<HelplineItem> list) {
+        DiffUtil.DiffResult result = DiffUtil.calculateDiff(new Callback(mList, list));
+        mList = list;
+        result.dispatchUpdatesTo(this);
+    }
+
+    @NonNull
+    @Override
+    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int type) {
+        return new ViewHolder(LayoutInflater.from(parent.getContext())
+                .inflate(R.layout.item_helpline, parent, false));
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
+        viewHolder.bind(mList.get(i));
+    }
+
+    @Override
+    public int getItemCount() {
+        return mList.size();
+    }
+
+    public interface Listener {
+        void initiateCall(@NonNull String number);
+
+        void onItemClicked(@NonNull HelplineItem item);
+    }
+
+    private static class Callback extends DiffUtil.Callback {
+        final List<HelplineItem> mOldList;
+        final List<HelplineItem> mNewList;
+
+        public Callback(List<HelplineItem> oldList,
+                        List<HelplineItem> newList) {
+            mOldList = oldList;
+            mNewList = newList;
+        }
+
+        @Override
+        public int getOldListSize() {
+            return mOldList.size();
+        }
+
+        @Override
+        public int getNewListSize() {
+            return mNewList.size();
+        }
+
+        @Override
+        public boolean areItemsTheSame(int iOld, int iNew) {
+            String oldNumber = mOldList.get(iOld).getItem().getNumber();
+            String newNumber = mOldList.get(iNew).getItem().getNumber();
+            return oldNumber.equals(newNumber);
+        }
+
+        @Override
+        public boolean areContentsTheSame(int iOld, int iNew) {
+            return false;
+        }
+    }
+
+    class ViewHolder extends RecyclerView.ViewHolder {
+        private final View mItemView;
+        private final TextView mLabelView;
+        private final TextView mCategoriesView;
+        private final TextView mLanguageView;
+        private final ImageView mCallIcon;
+
+        ViewHolder(@NonNull View itemView) {
+            super(itemView);
+
+            mItemView = itemView;
+            mLabelView = itemView.findViewById(R.id.item_helpline_title);
+            mCategoriesView = itemView.findViewById(R.id.item_helpline_categories);
+            mLanguageView = itemView.findViewById(R.id.item_helpline_languages);
+            mCallIcon = itemView.findViewById(R.id.item_helpline_call_icon);
+        }
+
+        void bind(HelplineItem item) {
+            mItemView.setOnClickListener(v -> mListener.onItemClicked(item));
+
+            String name = item.getName();
+            if (!TextUtils.isEmpty(name)) {
+                mLabelView.setText(name);
+            } else {
+                mLabelView.setText(R.string.unknown_helpline_name);
+            }
+
+            String categories = HelplineUtils.getCategories(mResources, item);
+            if (!TextUtils.isEmpty(categories)) {
+                mCategoriesView.setText(categories);
+                mCategoriesView.setVisibility(View.VISIBLE);
+            }
+
+            String languages = HelplineUtils.getLanguages(mResources, item);
+            if (!TextUtils.isEmpty(languages)) {
+                mLanguageView.setVisibility(View.VISIBLE);
+                mLanguageView.setText(languages);
+            }
+
+            String number = item.getItem().getNumber();
+            if (!TextUtils.isEmpty(number)) {
+                mCallIcon.setVisibility(View.VISIBLE);
+                mCallIcon.setOnClickListener(v -> mListener.initiateCall(number));
+            }
+        }
+    }
+}
diff --git a/java/com/android/dialer/helplines/HelplineItem.java b/java/com/android/dialer/helplines/HelplineItem.java
new file mode 100644
index 0000000..e8f3d95
--- /dev/null
+++ b/java/com/android/dialer/helplines/HelplineItem.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2019-2021 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.helplines;
+
+import android.content.res.Resources;
+
+import com.android.dialer.helplines.utils.HelplineUtils;
+
+import org.lineageos.lib.phone.spn.Item;
+
+/* When loading all the items we modify the name based on the subscription.
+ * Using the setter would modify it permanently, resulting in modifications on each load.
+ * Therefore we don't use Item directly but use this little helper class so the modified
+ * name can be stored
+ */
+public class HelplineItem {
+    private final Item mItem;
+    private final String mName;
+
+    public HelplineItem(Resources res, Item item, String countryIso) {
+        mItem = item;
+        mName = HelplineUtils.getName(res, item, countryIso);
+    }
+
+    public Item getItem() {
+        return mItem;
+    }
+
+    public String getName() {
+        return mName;
+    }
+}
diff --git a/java/com/android/dialer/helplines/LoadHelplinesTask.java b/java/com/android/dialer/helplines/LoadHelplinesTask.java
new file mode 100644
index 0000000..7876fb1
--- /dev/null
+++ b/java/com/android/dialer/helplines/LoadHelplinesTask.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2019-2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.helplines;
+
+import android.annotation.SuppressLint;
+import android.content.res.Resources;
+import android.os.Handler;
+import android.os.Looper;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import androidx.annotation.NonNull;
+
+import org.lineageos.lib.phone.SensitivePhoneNumbers;
+import org.lineageos.lib.phone.spn.Item;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+public class LoadHelplinesTask {
+
+    @NonNull
+    private final Resources mResources;
+    @NonNull
+    private final SubscriptionManager mSubManager;
+    @NonNull
+    private final Callback mCallback;
+
+    private final ExecutorService mExecutor;
+    private final Handler mHandler;
+
+    LoadHelplinesTask(@NonNull Resources resources, @NonNull SubscriptionManager subManager,
+                      @NonNull Callback callback) {
+        mResources = resources;
+        mSubManager = subManager;
+        mCallback = callback;
+
+        mExecutor = Executors.newSingleThreadExecutor();
+        mHandler = new Handler(Looper.getMainLooper());
+    }
+
+    public void execute() {
+        mExecutor.execute(() -> {
+            final List<HelplineItem> helplineList = new ArrayList<>();
+            /* when the network's and the user's country iso differ from each other,
+             * include the iso code in the name so one can be sure that the number is the correct
+             * one (think of accidental roaming close to the country border) */
+            boolean addCountryCode = false;
+
+            List<SubscriptionInfo> subList = getSubscriptionInfos();
+            if (subList != null) {
+                String localeCountryIso = mResources.getConfiguration().getLocales().get(0)
+                        .getCountry().toLowerCase();
+                List<String> alreadyProcessedMccs = new ArrayList<>();
+                for (SubscriptionInfo subInfo : subList) {
+                    String subCountryIso = subInfo.getCountryIso();
+                    if (!subCountryIso.equals(localeCountryIso)) {
+                        addCountryCode = true;
+                    }
+
+                    String mcc = subInfo.getMccString();
+                    if (alreadyProcessedMccs.contains(mcc)) {
+                        continue;
+                    }
+                    alreadyProcessedMccs.add(mcc);
+
+                    SensitivePhoneNumbers spn = SensitivePhoneNumbers.getInstance();
+                    ArrayList<Item> pns = spn.getSensitivePnInfosForMcc(mcc);
+                    int numPns = pns.size();
+                    for (int i = 0; i < numPns; i++) {
+                        Item item = pns.get(i);
+                        helplineList.add(new HelplineItem(mResources, item,
+                                addCountryCode ? subCountryIso : ""));
+                        final int currentItem = i;
+                        mHandler.post(() -> {
+                            int progress = Math.round(currentItem * 100f / numPns / subList.size());
+                            mCallback.onLoadListProgress(progress);
+                        });
+                    }
+                }
+            }
+
+            helplineList.sort(Comparator.comparing(HelplineItem::getName));
+
+            mHandler.post(() -> mCallback.onLoadCompleted(helplineList));
+        });
+    }
+
+    @SuppressLint("MissingPermission")
+    private List<SubscriptionInfo> getSubscriptionInfos() {
+        List<SubscriptionInfo> subList = mSubManager.getActiveSubscriptionInfoList();
+        if (subList == null) {
+            SubscriptionInfo info = mSubManager.getActiveSubscriptionInfo(
+                    SubscriptionManager.getDefaultVoiceSubscriptionId());
+            if (info != null) {
+                subList = new ArrayList<>();
+                subList.add(info);
+            }
+        }
+        return subList;
+    }
+
+    interface Callback {
+        void onLoadListProgress(int progress);
+
+        void onLoadCompleted(List<HelplineItem> result);
+    }
+}
diff --git a/java/com/android/dialer/helplines/res/drawable/ic_help.xml b/java/com/android/dialer/helplines/res/drawable/ic_help.xml
new file mode 100644
index 0000000..af14bf0
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/drawable/ic_help.xml
@@ -0,0 +1,15 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorAccent"
+    android:autoMirrored="true">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M478,720Q499,720 513.5,705.5Q528,691 528,670Q528,649 513.5,634.5Q499,620 478,620Q457,620 442.5,634.5Q428,649 428,670Q428,691 442.5,705.5Q457,720 478,720ZM442,566L516,566Q516,533 523.5,514Q531,495 566,462Q592,436 607,412.5Q622,389 622,356Q622,300 581,270Q540,240 484,240Q427,240 391.5,270Q356,300 342,342L408,368Q413,350 430.5,329Q448,308 484,308Q516,308 532,325.5Q548,343 548,364Q548,384 536,401.5Q524,419 506,434Q462,473 452,493Q442,513 442,566ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
+</vector>
diff --git a/java/com/android/dialer/helplines/res/layout/activity_helplines.xml b/java/com/android/dialer/helplines/res/layout/activity_helplines.xml
new file mode 100644
index 0000000..fbc0c25
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/layout/activity_helplines.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2023 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/helplines_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="gone" />
+
+    <LinearLayout
+        android:id="@+id/helplines_loading"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        android:orientation="vertical">
+
+        <ProgressBar
+            android:id="@+id/helplines_progress_bar"
+            style="@android:style/Widget.DeviceDefault.ProgressBar.Horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:max="100"
+            android:paddingStart="32dp"
+            android:paddingEnd="32dp"
+            android:progress="0" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="16dp"
+            android:text="@string/helplines_loading"
+            android:textSize="16sp" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/empty_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        android:orientation="vertical"
+        android:visibility="gone">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="16dp"
+            android:gravity="center"
+            android:text="@string/helplines_empty"
+            android:textSize="16sp" />
+    </LinearLayout>
+</LinearLayout>
diff --git a/java/com/android/dialer/helplines/res/layout/dialog_helpline_details.xml b/java/com/android/dialer/helplines/res/layout/dialog_helpline_details.xml
new file mode 100644
index 0000000..c1f6d5c
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/layout/dialog_helpline_details.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:orientation="vertical"
+    android:paddingStart="24dp"
+    android:paddingTop="24dp"
+    android:paddingEnd="24dp"
+    android:paddingBottom="24dp">
+
+    <TextView
+        android:id="@+id/name_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/helpline_name"
+        android:textSize="16sp"
+        android:textStyle="bold" />
+
+    <TextView
+        android:id="@+id/name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingBottom="8dp"
+        android:textSize="16sp"
+        tools:text="Name here" />
+
+    <TextView
+        android:id="@+id/categories_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/helpline_categories"
+        android:textSize="16sp"
+        android:textStyle="bold" />
+
+    <TextView
+        android:id="@+id/categories"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingBottom="8dp"
+        android:textSize="16sp"
+        tools:text="Categories here" />
+
+    <TextView
+        android:id="@+id/number_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/helpline_number"
+        android:textSize="16sp"
+        android:textStyle="bold" />
+
+    <TextView
+        android:id="@+id/number"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingBottom="8dp"
+        android:textSize="16sp"
+        tools:text="Number here" />
+
+    <TextView
+        android:id="@+id/org_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/helpline_org"
+        android:textSize="16sp"
+        android:textStyle="bold" />
+
+    <TextView
+        android:id="@+id/org"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingBottom="8dp"
+        android:textSize="16sp"
+        tools:text="Org here" />
+
+    <TextView
+        android:id="@+id/website_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/helpline_website"
+        android:textSize="16sp"
+        android:textStyle="bold" />
+
+    <TextView
+        android:id="@+id/website"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textSize="16sp"
+        tools:text="Website here" />
+</LinearLayout>
diff --git a/java/com/android/dialer/helplines/res/layout/dialog_webview.xml b/java/com/android/dialer/helplines/res/layout/dialog_webview.xml
new file mode 100644
index 0000000..b21bff6
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/layout/dialog_webview.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <WebView
+        android:id="@+id/webview"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="gone" />
+
+    <LinearLayout
+        android:id="@+id/webview_loading"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        android:orientation="vertical"
+        android:layout_marginTop="32dp">
+
+        <ProgressBar
+            style="@android:style/Widget.DeviceDefault.ProgressBar.Horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingStart="32dp"
+            android:paddingEnd="32dp"
+            android:indeterminate="true"/>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="16dp"
+            android:text="@string/helplines_loading"
+            android:textSize="16sp" />
+    </LinearLayout>
+</LinearLayout>
diff --git a/java/com/android/dialer/helplines/res/layout/item_helpline.xml b/java/com/android/dialer/helplines/res/layout/item_helpline.xml
new file mode 100644
index 0000000..dc3c391
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/layout/item_helpline.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2024 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/item"
+    android:background="?android:attr/selectableItemBackground"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal"
+    android:minHeight="48dp"
+    android:paddingTop="8dp"
+    android:paddingBottom="8dp">
+
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="16dp"
+        android:layout_weight="1"
+        android:orientation="vertical"
+        android:layout_gravity="center_vertical">
+
+        <TextView
+            android:id="@+id/item_helpline_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|start"
+            tools:text="Title"
+            android:textColor="?android:attr/textColorPrimary"
+            android:textSize="@dimen/helpline_primary_text_size"/>
+
+        <TextView
+            android:id="@+id/item_helpline_categories"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            tools:text="Categories"
+            android:textColor="?android:attr/textColorSecondary"
+            android:visibility="gone"
+            tools:visibility="visible"
+            android:textSize="@dimen/helpline_secondary_text_size"/>
+
+        <TextView
+            android:id="@+id/item_helpline_languages"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            tools:text="Languages"
+            android:textColor="?android:attr/textColorSecondary"
+            android:visibility="gone"
+            tools:visibility="visible"
+            android:textSize="@dimen/helpline_secondary_text_size"/>
+    </LinearLayout>
+
+    <ImageView
+        android:id="@+id/item_helpline_call_icon"
+        android:layout_width="32dp"
+        android:layout_height="32dp"
+        android:layout_gravity="center|end"
+        android:layout_marginStart="16dp"
+        android:layout_marginEnd="16dp"
+        android:scaleType="center"
+        android:background="?android:attr/selectableItemBackgroundBorderless"
+        android:clickable="true"
+        android:focusable="true"
+        android:src="@drawable/quantum_ic_call_vd_theme_24"
+        android:visibility="visible"
+        android:tintMode="src_atop"
+        app:tint="?colorIcon" />
+</LinearLayout>
diff --git a/java/com/android/dialer/helplines/res/menu/menu_helplines.xml b/java/com/android/dialer/helplines/res/menu/menu_helplines.xml
new file mode 100644
index 0000000..9bd2259
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/menu/menu_helplines.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2023 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item
+        android:id="@+id/menu_helpline_help"
+        android:icon="@drawable/ic_help"
+        android:title="@string/helplines_help"
+        app:showAsAction="always" />
+</menu>
diff --git a/java/com/android/dialer/helplines/res/values-ar/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-ar/helpline_categories.xml
new file mode 100644
index 0000000..ebf7a63
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ar/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">إساءة</string>
+    <string name="helpline_category_acohol">الكحول</string>
+    <string name="helpline_category_addiction">الإدمان</string>
+    <string name="helpline_category_adolescents">المراهقين</string>
+    <string name="helpline_category_adults">البالغين</string>
+    <string name="helpline_category_aids">الإيدز</string>
+    <string name="helpline_category_birth">ولادة</string>
+    <string name="helpline_category_bullying">التنمر</string>
+    <string name="helpline_category_children">الأطفال</string>
+    <string name="helpline_category_crime">جريمة</string>
+    <string name="helpline_category_crime_victims">ضحايا الجريمة</string>
+    <string name="helpline_category_corruption">الفساد</string>
+    <string name="helpline_category_discrimination">التمييز</string>
+    <string name="helpline_category_domestic_violence">العنف المنزلي</string>
+    <string name="helpline_category_drugs">المخدرات</string>
+    <string name="helpline_category_emotional_support">الدعم العاطفي</string>
+    <string name="helpline_category_family">العائلة</string>
+    <string name="helpline_category_gambling">المقامرة</string>
+    <string name="helpline_category_gender">الجنس</string>
+    <string name="helpline_category_generic">عامة</string>
+    <string name="helpline_category_hiv">فيروس نقص المناعة البشرية</string>
+    <string name="helpline_category_human_rights">حقوق الإنسان</string>
+    <string name="helpline_category_human_trafficking">الإتجار بالبشر</string>
+    <string name="helpline_category_immigration">الهجرة</string>
+    <string name="helpline_category_legal_aid">المساعدة القانونية</string>
+    <string name="helpline_category_lgbtq">المثليّة</string>
+    <string name="helpline_category_men">الرجال</string>
+    <string name="helpline_category_mental_health">الصحة النفسية</string>
+    <string name="helpline_category_missing_children">الأطفال المفقودون</string>
+    <string name="helpline_category_mothers">أمهات</string>
+    <string name="helpline_category_muslim">مسلم</string>
+    <string name="helpline_category_parents">الآباء</string>
+    <string name="helpline_category_pregnancy">الحمل</string>
+    <string name="helpline_category_psychological">السيكولوجية</string>
+    <string name="helpline_category_religion">الدين</string>
+    <string name="helpline_category_senior">كبار السن</string>
+    <string name="helpline_category_sexual_abuse">العنف الجنسي</string>
+    <string name="helpline_category_sexual_assault">الاعتداء الجنسي</string>
+    <string name="helpline_category_sexual_rights">الحقوق الجنسية</string>
+    <string name="helpline_category_sexuality">النشاط الجنسي</string>
+    <string name="helpline_category_soldiers">الجنود</string>
+    <string name="helpline_category_suicide">منع الانتحار</string>
+    <string name="helpline_category_trans">المتحولون جنسيا</string>
+    <string name="helpline_category_veterans">مخضرمين</string>
+    <string name="helpline_category_violence">العنف</string>
+    <string name="helpline_category_war">الحرب</string>
+    <string name="helpline_category_women">النساء</string>
+    <string name="helpline_category_youth">الشباب</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ar/strings.xml b/java/com/android/dialer/helplines/res/values-ar/strings.xml
new file mode 100644
index 0000000..4a55756
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ar/strings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">خطوط المساعدة</string>
+    <string name="helplines_loading">جارٍ التحميل\u2026</string>
+    <string name="helplines_empty">لم يُعثر على خطوط مساعدة.\nأدخل بطاقة SIM وحاول مرة أخرى</string>
+    <string name="helplines_help">المساعدة</string>
+    <string name="helplines_help_title">هذه آمنة للمكالمة</string>
+    <string name="helplines_help_message">لا يظهر أي من هذه الأرقام في سجل مكالماتك.\nيمكنك النقر على أي عنصر لمزيد من المعلومات</string>
+    <string name="helpline_button_more">المزيد</string>
+    <string name="unknown_helpline_name">منظمة غير معروفة</string>
+    <string name="helpline_name">الاسم</string>
+    <string name="helpline_org">المنظمة</string>
+    <string name="helpline_categories">الفئات</string>
+    <string name="helpline_number">الرقم</string>
+    <string name="helpline_website">موقع الويب</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">الكريية</string>
+    <string name="helpline_language_english">الإنجليزية</string>
+    <string name="helpline_language_french">الفرنسية</string>
+    <string name="helpline_language_german">الألمانية</string>
+    <string name="helpline_language_inuktitut">الإينكتيتوتية</string>
+    <string name="helpline_language_ojibway">الأوجيبواية</string>
+    <string name="helpline_language_turkish">التركية</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ast-rES/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-ast-rES/helpline_categories.xml
new file mode 100644
index 0000000..7259d66
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ast-rES/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abusu</string>
+    <string name="helpline_category_acohol">Alcohol</string>
+    <string name="helpline_category_addiction">Adicción</string>
+    <string name="helpline_category_adolescents">Adolescentes</string>
+    <string name="helpline_category_adults">Adultos</string>
+    <string name="helpline_category_aids">SIDA</string>
+    <string name="helpline_category_birth">Nacencia</string>
+    <string name="helpline_category_bullying">Acosu</string>
+    <string name="helpline_category_children">Neños</string>
+    <string name="helpline_category_crime">Crime</string>
+    <string name="helpline_category_crime_victims">Víctimes de delitos</string>
+    <string name="helpline_category_corruption">Corrupción</string>
+    <string name="helpline_category_discrimination">Discriminación</string>
+    <string name="helpline_category_domestic_violence">Violencia doméstica</string>
+    <string name="helpline_category_drugs">Drogues</string>
+    <string name="helpline_category_emotional_support">Apoyu emocional</string>
+    <string name="helpline_category_family">Familia</string>
+    <string name="helpline_category_gambling">Ludopatía</string>
+    <string name="helpline_category_gender">Xéneru</string>
+    <string name="helpline_category_generic">Temes xenéricos</string>
+    <string name="helpline_category_hiv">VIH</string>
+    <string name="helpline_category_human_rights">Derechos humanos</string>
+    <string name="helpline_category_human_trafficking">Tráficu de persones</string>
+    <string name="helpline_category_immigration">Inmigración</string>
+    <string name="helpline_category_legal_aid">Asistencia llegal</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Homes</string>
+    <string name="helpline_category_mental_health">Salú mental</string>
+    <string name="helpline_category_missing_children">Neños desapaecíos</string>
+    <string name="helpline_category_mothers">Mas</string>
+    <string name="helpline_category_muslim">Temes musulmanes</string>
+    <string name="helpline_category_parents">Pas</string>
+    <string name="helpline_category_pregnancy">Embaranzu</string>
+    <string name="helpline_category_psychological">Temes sicolóxicos</string>
+    <string name="helpline_category_religion">Relixón</string>
+    <string name="helpline_category_senior">Xente mayor</string>
+    <string name="helpline_category_sexual_abuse">Abusu sexual</string>
+    <string name="helpline_category_sexual_assault">Agresiones sexuales</string>
+    <string name="helpline_category_sexual_rights">Derechos sexuales</string>
+    <string name="helpline_category_sexuality">Sexualidá</string>
+    <string name="helpline_category_soldiers">Soldaos</string>
+    <string name="helpline_category_suicide">Prevención del suicidiu</string>
+    <string name="helpline_category_trans">Temes tresxéneru</string>
+    <string name="helpline_category_veterans">Veteranos de guerra</string>
+    <string name="helpline_category_violence">Violencia</string>
+    <string name="helpline_category_war">Guerra</string>
+    <string name="helpline_category_women">Muyeres</string>
+    <string name="helpline_category_youth">Mocedá</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ast-rES/strings.xml b/java/com/android/dialer/helplines/res/values-ast-rES/strings.xml
new file mode 100644
index 0000000..3252eb7
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ast-rES/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Llinies d\'ayuda</string>
+    <string name="helplines_loading">Cargando\u2026</string>
+    <string name="helplines_empty">Nun s\'atopó nenguna llinia d\'ayuda\nInxerta una tarxeta SIM y volvi tentalo</string>
+    <string name="helplines_help">Ayuda</string>
+    <string name="helplines_help_title">Son númberos seguros</string>
+    <string name="helplines_help_message">Nengún d\'estos númberos apaez nel historial de llamaes.\nPues calcar en cualesquier elementu pa consiguir más información.</string>
+    <string name="helplines_help_more_message">La llista de llinies d\'ayuda rellénase cola información que los collaboradores anueven manualmente. Si atopes dalgún datu que falta o que ye incorreutu, pues ponete en contautu con nós en <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Más</string>
+    <string name="unknown_helpline_name">Organización desconocida</string>
+    <string name="helpline_name">Nome</string>
+    <string name="helpline_org">Organización</string>
+    <string name="helpline_categories">Categoríes</string>
+    <string name="helpline_number">Númberu</string>
+    <string name="helpline_website">Sitiu web</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Inglés</string>
+    <string name="helpline_language_french">Francés</string>
+    <string name="helpline_language_german">Alemán</string>
+    <string name="helpline_language_inuktitut">Inuit</string>
+    <string name="helpline_language_ojibway">Chippewa</string>
+    <string name="helpline_language_turkish">Turcu</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-az/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-az/helpline_categories.xml
new file mode 100644
index 0000000..77503b6
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-az/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Təhqir</string>
+    <string name="helpline_category_acohol">Alkoqol</string>
+    <string name="helpline_category_addiction">Zərərli vərdiş</string>
+    <string name="helpline_category_adolescents">Yeniyetmə</string>
+    <string name="helpline_category_adults">Yetkin</string>
+    <string name="helpline_category_aids">QİÇS</string>
+    <string name="helpline_category_birth">Doğum</string>
+    <string name="helpline_category_bullying">Zorbalıq</string>
+    <string name="helpline_category_children">Uşaq</string>
+    <string name="helpline_category_crime">Cinayət</string>
+    <string name="helpline_category_crime_victims">Cinayət qurbanları</string>
+    <string name="helpline_category_corruption">Rüşvət</string>
+    <string name="helpline_category_discrimination">Ayrı-seçkilik</string>
+    <string name="helpline_category_domestic_violence">Məişət zorakılığı</string>
+    <string name="helpline_category_drugs">Dərmanlar</string>
+    <string name="helpline_category_emotional_support">Emosional dəstək</string>
+    <string name="helpline_category_family">Ailə</string>
+    <string name="helpline_category_gambling">Qumar</string>
+    <string name="helpline_category_gender">Cins</string>
+    <string name="helpline_category_generic">Ümumi</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">İnsan hüquqları</string>
+    <string name="helpline_category_human_trafficking">İnsan alveri</string>
+    <string name="helpline_category_immigration">İmmiqrasiya</string>
+    <string name="helpline_category_legal_aid">Qanuni dəstək</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Kişilər</string>
+    <string name="helpline_category_mental_health">Psixi sağlamlıq</string>
+    <string name="helpline_category_missing_children">İtmiş uşaqlar</string>
+    <string name="helpline_category_mothers">Analar</string>
+    <string name="helpline_category_muslim">Müsəlman</string>
+    <string name="helpline_category_parents">Valideynlər</string>
+    <string name="helpline_category_pregnancy">Hamiləlik</string>
+    <string name="helpline_category_psychological">Psixoloji</string>
+    <string name="helpline_category_religion">Dini</string>
+    <string name="helpline_category_senior">Böyüklər</string>
+    <string name="helpline_category_sexual_abuse">Cinsi istismar</string>
+    <string name="helpline_category_sexual_assault">Cinsi təcavüz</string>
+    <string name="helpline_category_sexual_rights">Cinsi hüquqlar</string>
+    <string name="helpline_category_sexuality">Cinsiyyət</string>
+    <string name="helpline_category_soldiers">Əsgərlər</string>
+    <string name="helpline_category_suicide">İntiharın qarşısını alma</string>
+    <string name="helpline_category_trans">Transseksual</string>
+    <string name="helpline_category_veterans">Qazilər</string>
+    <string name="helpline_category_violence">Şiddət</string>
+    <string name="helpline_category_war">Müharibə</string>
+    <string name="helpline_category_women">Qadınlar</string>
+    <string name="helpline_category_youth">Gənc</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-az/strings.xml b/java/com/android/dialer/helplines/res/values-az/strings.xml
new file mode 100644
index 0000000..f19d1bf
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-az/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Yardım xətti</string>
+    <string name="helplines_loading">Yüklənir\u2026</string>
+    <string name="helplines_empty">Kömək xətti tapılmadı.\nBir SIM kart taxıb yenidən sınayın</string>
+    <string name="helplines_help">Kömək</string>
+    <string name="helplines_help_title">Bunlara zəng etmək güvənlidir</string>
+    <string name="helplines_help_message">Bu nömrələrdən heç biri zəng tarixçənizdə görünmür.\nDaha ətraflı məlumat üçün istənilən bir elementə klikləyə bilərsiniz</string>
+    <string name="helplines_help_more_message">Kömək xətti siyahısı, töhfə verənlər tərəfindən əllə güncəllənən məlumatlarla doldurulur. Əgər hər hansısa əskik və ya yanlış məlumatla qarşılaşsanız, lütfən <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g> üzərindən bizim əlaqə saxlamaqdan çəkinməyin.</string>
+    <string name="helpline_button_more">Daha çox</string>
+    <string name="unknown_helpline_name">Bilinməyən təşkilat</string>
+    <string name="helpline_name">Ad</string>
+    <string name="helpline_org">Təşkilat</string>
+    <string name="helpline_categories">Kateqoriyalar</string>
+    <string name="helpline_number">Nömrə</string>
+    <string name="helpline_website">Veb sayt</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">İngiliscə</string>
+    <string name="helpline_language_french">Fransızca</string>
+    <string name="helpline_language_german">Almanca</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Türkcə</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-be/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-be/helpline_categories.xml
new file mode 100644
index 0000000..2c47d35
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-be/helpline_categories.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_religion">Рэлігія</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-be/strings.xml b/java/com/android/dialer/helplines/res/values-be/strings.xml
new file mode 100644
index 0000000..44b325f
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-be/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_help">Дапамога</string>
+    <string name="helpline_name">Назва</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-bg/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-bg/helpline_categories.xml
new file mode 100644
index 0000000..dd5291b
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-bg/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Насилие</string>
+    <string name="helpline_category_acohol">Алкохол</string>
+    <string name="helpline_category_addiction">Пристрастеност</string>
+    <string name="helpline_category_adolescents">Юноши</string>
+    <string name="helpline_category_adults">Възрастни</string>
+    <string name="helpline_category_aids">СПИН</string>
+    <string name="helpline_category_birth">Раждане</string>
+    <string name="helpline_category_bullying">Тормоз</string>
+    <string name="helpline_category_children">Деца</string>
+    <string name="helpline_category_crime">Престъпления</string>
+    <string name="helpline_category_crime_victims">Жертви на престъпления</string>
+    <string name="helpline_category_corruption">Корупция</string>
+    <string name="helpline_category_discrimination">Дискриминация</string>
+    <string name="helpline_category_domestic_violence">Домашно насилие</string>
+    <string name="helpline_category_drugs">Наркотици</string>
+    <string name="helpline_category_emotional_support">Емоционална подкрепа</string>
+    <string name="helpline_category_family">Семейство</string>
+    <string name="helpline_category_gambling">Хазарт</string>
+    <string name="helpline_category_gender">Пол</string>
+    <string name="helpline_category_generic">Общи</string>
+    <string name="helpline_category_hiv">ХИВ</string>
+    <string name="helpline_category_human_rights">Човешки права</string>
+    <string name="helpline_category_human_trafficking">Трафик на хора</string>
+    <string name="helpline_category_immigration">Имиграция</string>
+    <string name="helpline_category_legal_aid">Правна помощ</string>
+    <string name="helpline_category_lgbtq">ЛГБТИ+</string>
+    <string name="helpline_category_men">Мъже</string>
+    <string name="helpline_category_mental_health">Психично здраве</string>
+    <string name="helpline_category_missing_children">Липсващи деца</string>
+    <string name="helpline_category_mothers">Майки</string>
+    <string name="helpline_category_muslim">Ислям</string>
+    <string name="helpline_category_parents">Родители</string>
+    <string name="helpline_category_pregnancy">Бременност</string>
+    <string name="helpline_category_psychological">Психологични</string>
+    <string name="helpline_category_religion">Религия</string>
+    <string name="helpline_category_senior">Пенсионери</string>
+    <string name="helpline_category_sexual_abuse">Сексуално насилие</string>
+    <string name="helpline_category_sexual_assault">Изнасилване</string>
+    <string name="helpline_category_sexual_rights">Сексуални права</string>
+    <string name="helpline_category_sexuality">Сексуалност</string>
+    <string name="helpline_category_soldiers">Военни</string>
+    <string name="helpline_category_suicide">Самоубийство</string>
+    <string name="helpline_category_trans">Трансджендър</string>
+    <string name="helpline_category_veterans">Ветерани</string>
+    <string name="helpline_category_violence">Насилие</string>
+    <string name="helpline_category_war">Война</string>
+    <string name="helpline_category_women">Жени</string>
+    <string name="helpline_category_youth">Младежи</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-bg/strings.xml b/java/com/android/dialer/helplines/res/values-bg/strings.xml
new file mode 100644
index 0000000..4610acf
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-bg/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Линии за помощ</string>
+    <string name="helplines_loading">Зареждане\u2026</string>
+    <string name="helplines_empty">Не са намерени линии за помощ.\nПоставете SIM карта и опитайте отново</string>
+    <string name="helplines_help">Помощ</string>
+    <string name="helplines_help_title">Тези са безопасни за обаждане</string>
+    <string name="helplines_help_message">Нито един от тези номера не се показват в историята на обажданията Ви.\nМожете да натиснете върху който и да е номер за повече информация</string>
+    <string name="helplines_help_more_message">Списъкът с линий за помощ е пълен с информация, която се актуализира ръчно от сътрудниците. Ако срещнете липсваща или грешна информация, моля не се колебайте да се свържете с нас на <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Още</string>
+    <string name="unknown_helpline_name">Неизвестна организация</string>
+    <string name="helpline_name">Име</string>
+    <string name="helpline_org">Организация</string>
+    <string name="helpline_categories">Категории</string>
+    <string name="helpline_number">Номер</string>
+    <string name="helpline_website">Уебсайт</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Кри</string>
+    <string name="helpline_language_english">Английски</string>
+    <string name="helpline_language_french">Френски</string>
+    <string name="helpline_language_german">Немски</string>
+    <string name="helpline_language_inuktitut">Инуктитут</string>
+    <string name="helpline_language_ojibway">Оджибуей</string>
+    <string name="helpline_language_turkish">Турски</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-bn/strings.xml b/java/com/android/dialer/helplines/res/values-bn/strings.xml
new file mode 100644
index 0000000..79c2934
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-bn/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_help_more_message">হেল্পলাইন এর লিস্টটির তথ্যগুলো বিভিন্ন অবদানকারী হতে ম্যানুয়ালি আপডেট করা হয়। আপনি যদি কোনো ভুল তথ্য খুজে পান, তাহলে আমাদের সাথে যোগাযোগ করতে পারেন। ঠিকানা: <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ca/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-ca/helpline_categories.xml
new file mode 100644
index 0000000..8618f1d
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ca/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abús</string>
+    <string name="helpline_category_acohol">Alcohol</string>
+    <string name="helpline_category_addiction">Adicció</string>
+    <string name="helpline_category_adolescents">Adolescents</string>
+    <string name="helpline_category_adults">Adults</string>
+    <string name="helpline_category_aids">SIDA</string>
+    <string name="helpline_category_birth">Naixement</string>
+    <string name="helpline_category_bullying">Assetjament</string>
+    <string name="helpline_category_children">Nens</string>
+    <string name="helpline_category_crime">Crim</string>
+    <string name="helpline_category_crime_victims">Víctimes del delicte</string>
+    <string name="helpline_category_corruption">Corrupció</string>
+    <string name="helpline_category_discrimination">Discriminació</string>
+    <string name="helpline_category_domestic_violence">Violència domèstica</string>
+    <string name="helpline_category_drugs">Drogues</string>
+    <string name="helpline_category_emotional_support">Suport emocional</string>
+    <string name="helpline_category_family">Família</string>
+    <string name="helpline_category_gambling">Apostes</string>
+    <string name="helpline_category_gender">Gènere</string>
+    <string name="helpline_category_generic">Genèric</string>
+    <string name="helpline_category_hiv">VIH</string>
+    <string name="helpline_category_human_rights">Drets humans</string>
+    <string name="helpline_category_human_trafficking">Tràfic de persones</string>
+    <string name="helpline_category_immigration">Immigració</string>
+    <string name="helpline_category_legal_aid">Assistència legal</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Home</string>
+    <string name="helpline_category_mental_health">Salut mental</string>
+    <string name="helpline_category_missing_children">Nens desapareguts</string>
+    <string name="helpline_category_mothers">Mares</string>
+    <string name="helpline_category_muslim">Musulmà</string>
+    <string name="helpline_category_parents">Progenitors</string>
+    <string name="helpline_category_pregnancy">Embaraç</string>
+    <string name="helpline_category_psychological">Psicològic</string>
+    <string name="helpline_category_religion">Religió</string>
+    <string name="helpline_category_senior">Majors</string>
+    <string name="helpline_category_sexual_abuse">Abús sexual</string>
+    <string name="helpline_category_sexual_assault">Agressió sexual</string>
+    <string name="helpline_category_sexual_rights">Drets sexuals</string>
+    <string name="helpline_category_sexuality">Sexualitat</string>
+    <string name="helpline_category_soldiers">Soldats</string>
+    <string name="helpline_category_suicide">Prevenció del suïcidi</string>
+    <string name="helpline_category_trans">Transgènere</string>
+    <string name="helpline_category_veterans">Veterans</string>
+    <string name="helpline_category_violence">Violència</string>
+    <string name="helpline_category_war">Guerra</string>
+    <string name="helpline_category_women">Dona</string>
+    <string name="helpline_category_youth">Joventut</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ca/strings.xml b/java/com/android/dialer/helplines/res/values-ca/strings.xml
new file mode 100644
index 0000000..88adb7f
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ca/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Línies d\'ajuda</string>
+    <string name="helplines_loading">S\'està carregant\u2026</string>
+    <string name="helplines_empty">No s\'ha trobat cap línia d\'ajuda.\nInseriu una targeta SIM i torneu-ho a provar</string>
+    <string name="helplines_help">Ajuda</string>
+    <string name="helplines_help_title">Aquests són segurs per trucar</string>
+    <string name="helplines_help_message">Cap d\'aquests números apareix a l\'historial de trucades.\nPodeu fer clic a qualsevol element per obtenir més informació</string>
+    <string name="helplines_help_more_message">La llista de línies d\'ajuda està plena d\'informació que els col·laboradors actualitzen manualment. Si trobeu alguna informació que falti o que sigui incorrecta, no dubteu a contactar amb nosaltres a <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Més</string>
+    <string name="unknown_helpline_name">Organització desconeguda</string>
+    <string name="helpline_name">Nom</string>
+    <string name="helpline_org">Organització</string>
+    <string name="helpline_categories">Categories</string>
+    <string name="helpline_number">Número</string>
+    <string name="helpline_website">Lloc web</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Anglès</string>
+    <string name="helpline_language_french">Francès</string>
+    <string name="helpline_language_german">Alemany</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turc</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-cs/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-cs/helpline_categories.xml
new file mode 100644
index 0000000..21b80a1
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-cs/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Zneužití</string>
+    <string name="helpline_category_acohol">Alkohol</string>
+    <string name="helpline_category_addiction">Závislost</string>
+    <string name="helpline_category_adolescents">Dospívající</string>
+    <string name="helpline_category_adults">Dospělí</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Narození</string>
+    <string name="helpline_category_bullying">Šikana</string>
+    <string name="helpline_category_children">Děti</string>
+    <string name="helpline_category_crime">Krimi</string>
+    <string name="helpline_category_crime_victims">Oběti zločinu</string>
+    <string name="helpline_category_corruption">Korupce</string>
+    <string name="helpline_category_discrimination">Diskriminace</string>
+    <string name="helpline_category_domestic_violence">Domácí násilí</string>
+    <string name="helpline_category_drugs">Drogy</string>
+    <string name="helpline_category_emotional_support">Emocionální podpora</string>
+    <string name="helpline_category_family">Rodina</string>
+    <string name="helpline_category_gambling">Hazard</string>
+    <string name="helpline_category_gender">Pohlaví</string>
+    <string name="helpline_category_generic">Obecné</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Lidská práva</string>
+    <string name="helpline_category_human_trafficking">Obchodování s lidmi</string>
+    <string name="helpline_category_immigration">Přistěhovalectví</string>
+    <string name="helpline_category_legal_aid">Právní pomoc</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Muži</string>
+    <string name="helpline_category_mental_health">Duševní zdraví</string>
+    <string name="helpline_category_missing_children">Ztracené děti</string>
+    <string name="helpline_category_mothers">Matky</string>
+    <string name="helpline_category_muslim">Islám</string>
+    <string name="helpline_category_parents">Rodiče</string>
+    <string name="helpline_category_pregnancy">Těhotenství</string>
+    <string name="helpline_category_psychological">Psychologie</string>
+    <string name="helpline_category_religion">Náboženství</string>
+    <string name="helpline_category_senior">Senioři</string>
+    <string name="helpline_category_sexual_abuse">Sexuální zneužívání</string>
+    <string name="helpline_category_sexual_assault">Znásilnění</string>
+    <string name="helpline_category_sexual_rights">Sexuální práva</string>
+    <string name="helpline_category_sexuality">Sexualita</string>
+    <string name="helpline_category_soldiers">Vojáci</string>
+    <string name="helpline_category_suicide">Prevence sebevražd</string>
+    <string name="helpline_category_trans">Transgender</string>
+    <string name="helpline_category_veterans">Veteráni</string>
+    <string name="helpline_category_violence">Násilí</string>
+    <string name="helpline_category_war">Válka</string>
+    <string name="helpline_category_women">Ženy</string>
+    <string name="helpline_category_youth">Mládež</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-cs/strings.xml b/java/com/android/dialer/helplines/res/values-cs/strings.xml
new file mode 100644
index 0000000..55c017c
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-cs/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Linky pomoci</string>
+    <string name="helplines_loading">Načítání\u2026</string>
+    <string name="helplines_empty">Nebyly nalezeny žádné linky pomoci.\nVložte SIM kartu a zkuste to znovu</string>
+    <string name="helplines_help">Pomoc</string>
+    <string name="helplines_help_title">Volat je bezpečné</string>
+    <string name="helplines_help_message">Žádná z těchto čísel se neobjeví ve vaší historii hovorů.\nPro více informací můžete kliknout na libovolnou položku</string>
+    <string name="helplines_help_more_message">Seznam linek pomoci je vyplněn informacemi, které jsou ručně aktualizovány přispěvateli. Pokud narazíte na nějaké chybějící nebo špatné informace, neváhejte nás kontaktovat na adrese <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Více</string>
+    <string name="unknown_helpline_name">Neznámá organizace</string>
+    <string name="helpline_name">Název</string>
+    <string name="helpline_org">Organizace</string>
+    <string name="helpline_categories">Kategorie</string>
+    <string name="helpline_number">Číslo</string>
+    <string name="helpline_website">Webová stránka</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Kríjština</string>
+    <string name="helpline_language_english">Angličtina</string>
+    <string name="helpline_language_french">Francouzština</string>
+    <string name="helpline_language_german">Němčina</string>
+    <string name="helpline_language_inuktitut">Inuktitutština</string>
+    <string name="helpline_language_ojibway">Ojibwayština</string>
+    <string name="helpline_language_turkish">Turečtina</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-cy/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-cy/helpline_categories.xml
new file mode 100644
index 0000000..ce4ea2b
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-cy/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Cam-driniaeth</string>
+    <string name="helpline_category_acohol">Alcohol</string>
+    <string name="helpline_category_addiction">Caethiwed</string>
+    <string name="helpline_category_adolescents">Glasoed</string>
+    <string name="helpline_category_adults">Oedolyn</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Geni</string>
+    <string name="helpline_category_bullying">Bwlio</string>
+    <string name="helpline_category_children">Plant</string>
+    <string name="helpline_category_crime">Trosedd</string>
+    <string name="helpline_category_crime_victims">Dioddefwyr troseddau</string>
+    <string name="helpline_category_corruption">Llygredd</string>
+    <string name="helpline_category_discrimination">Gwahaniaethu</string>
+    <string name="helpline_category_domestic_violence">Trais yn y cartref</string>
+    <string name="helpline_category_drugs">Cyffuriau</string>
+    <string name="helpline_category_emotional_support">Cefnogaeth emosiynol</string>
+    <string name="helpline_category_family">Teulu</string>
+    <string name="helpline_category_gambling">Gamblo</string>
+    <string name="helpline_category_gender">Rhyw</string>
+    <string name="helpline_category_generic">Generig</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Hawliau Dynol</string>
+    <string name="helpline_category_human_trafficking">Masnachu mewn pobl</string>
+    <string name="helpline_category_immigration">Mewnfudo</string>
+    <string name="helpline_category_legal_aid">Cymorth cyfreithiol</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Dynion</string>
+    <string name="helpline_category_mental_health">Iechyd meddwl</string>
+    <string name="helpline_category_missing_children">Plant ar goll</string>
+    <string name="helpline_category_mothers">Mamau</string>
+    <string name="helpline_category_muslim">Mwslim</string>
+    <string name="helpline_category_parents">Rhieni</string>
+    <string name="helpline_category_pregnancy">Beichiogrwydd</string>
+    <string name="helpline_category_psychological">Seicolegol</string>
+    <string name="helpline_category_religion">Crefydd</string>
+    <string name="helpline_category_senior">Hynafwyr</string>
+    <string name="helpline_category_sexual_abuse">Cam-drin rhywiol</string>
+    <string name="helpline_category_sexual_assault">Ymosodiad rhywiol</string>
+    <string name="helpline_category_sexual_rights">Hawliau rhywiol</string>
+    <string name="helpline_category_sexuality">Rhywioldeb</string>
+    <string name="helpline_category_soldiers">Milwyr</string>
+    <string name="helpline_category_suicide">Atal hunanladdiad</string>
+    <string name="helpline_category_trans">Trawsryweddol</string>
+    <string name="helpline_category_veterans">Cyn-filwyr</string>
+    <string name="helpline_category_violence">Trais</string>
+    <string name="helpline_category_war">Rhyfel</string>
+    <string name="helpline_category_women">Menywod</string>
+    <string name="helpline_category_youth">Ieuenctid</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-cy/strings.xml b/java/com/android/dialer/helplines/res/values-cy/strings.xml
new file mode 100644
index 0000000..a87e7f8
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-cy/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Llinellau Cymorth</string>
+    <string name="helplines_loading">Yn llwytho\u2026</string>
+    <string name="helplines_empty">Heb ddarganfod llinellau cymorth.\nGosodwch gerdyn SIM a rhoi cynnig arall arni</string>
+    <string name="helplines_help">Cymorth</string>
+    <string name="helplines_help_title">Mae\'r rhain yn ddiogel i\'w galw</string>
+    <string name="helplines_help_message">Nid oes unrhyw un o\'r rhifau hyn yn ymddangos yn hanes eich galwad. Gallwch glicio ar unrhyw eitem i gael mwy o wybodaeth</string>
+    <string name="helplines_help_more_message">Mae\'r rhestr o linellau cymorth wedi\'i llenwi â gwybodaeth sy\'n cael ei diweddaru â llaw gan gyfranwyr. Os oes unrhyw wybodaeth ar goll neu\'n anghywir, mae croeso i chi gysylltu â ni yn <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Rhagor</string>
+    <string name="unknown_helpline_name">Sefydliad anhysbys</string>
+    <string name="helpline_name">Enw</string>
+    <string name="helpline_org">Sefydliad</string>
+    <string name="helpline_categories">Categorïau</string>
+    <string name="helpline_number">Rhif</string>
+    <string name="helpline_website">Gwefan</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Saesneg</string>
+    <string name="helpline_language_french">Ffrangeg</string>
+    <string name="helpline_language_german">Almaeneg</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Twrceg</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-da/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-da/helpline_categories.xml
new file mode 100644
index 0000000..4baca2a
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-da/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Misbrug</string>
+    <string name="helpline_category_acohol">Alkohol</string>
+    <string name="helpline_category_addiction">Afhængighed</string>
+    <string name="helpline_category_adolescents">Unge</string>
+    <string name="helpline_category_adults">Voksne</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Fødsel</string>
+    <string name="helpline_category_bullying">Mobning</string>
+    <string name="helpline_category_children">Børn</string>
+    <string name="helpline_category_crime">Kriminalitet</string>
+    <string name="helpline_category_crime_victims">Ofre for kriminalitet</string>
+    <string name="helpline_category_corruption">Korruption</string>
+    <string name="helpline_category_discrimination">Diskrimination</string>
+    <string name="helpline_category_domestic_violence">Vold i hjemmet</string>
+    <string name="helpline_category_drugs">Narkotika</string>
+    <string name="helpline_category_emotional_support">Følelsesmæssig støtte</string>
+    <string name="helpline_category_family">Familie</string>
+    <string name="helpline_category_gambling">Hasardspil</string>
+    <string name="helpline_category_gender">Køn</string>
+    <string name="helpline_category_generic">Generelt</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Menneskerettigheder</string>
+    <string name="helpline_category_human_trafficking">Menneskehandel</string>
+    <string name="helpline_category_immigration">Immigration</string>
+    <string name="helpline_category_legal_aid">Lovlig hjælp</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Mænd</string>
+    <string name="helpline_category_mental_health">Psykisk sundhed</string>
+    <string name="helpline_category_missing_children">Manglende børn</string>
+    <string name="helpline_category_mothers">Mødre</string>
+    <string name="helpline_category_muslim">Muslimsk</string>
+    <string name="helpline_category_parents">Forælder</string>
+    <string name="helpline_category_pregnancy">Graviditet</string>
+    <string name="helpline_category_psychological">Psykologisk</string>
+    <string name="helpline_category_religion">Religion</string>
+    <string name="helpline_category_senior">Ældre</string>
+    <string name="helpline_category_sexual_abuse">Seksuelt misbrug</string>
+    <string name="helpline_category_sexual_assault">Seksuelt angreb</string>
+    <string name="helpline_category_sexual_rights">Seksuelle rettigheder</string>
+    <string name="helpline_category_sexuality">Seksualitet</string>
+    <string name="helpline_category_soldiers">Soldater</string>
+    <string name="helpline_category_suicide">Selvmordsforebyggelse</string>
+    <string name="helpline_category_trans">Transkønnet</string>
+    <string name="helpline_category_veterans">Veteraner</string>
+    <string name="helpline_category_violence">Vold</string>
+    <string name="helpline_category_war">Krig</string>
+    <string name="helpline_category_women">Kvinder</string>
+    <string name="helpline_category_youth">Unge</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-da/strings.xml b/java/com/android/dialer/helplines/res/values-da/strings.xml
new file mode 100644
index 0000000..4340898
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-da/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Hjælpelinjer</string>
+    <string name="helplines_loading">Indlæser\u2026</string>
+    <string name="helplines_empty">Ingen hjælpelinjer fundet.\nIndsæt et SIM-kort og prøv igen</string>
+    <string name="helplines_help">Hjælp</string>
+    <string name="helplines_help_title">Disse er sikre at ringe op</string>
+    <string name="helplines_help_message">Ingen af disse numre vises i din opkaldshistorik.\nDu kan klikke på et element for mere information</string>
+    <string name="helplines_help_more_message">Listen over hjælpelinjer er fyldt med oplysninger, der opdateres manuelt af frivillige. Hvis du møder manglende eller forkerte oplysninger, er du velkommen til at kontakte os på <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Mere</string>
+    <string name="unknown_helpline_name">Ukendt organisation</string>
+    <string name="helpline_name">Navn</string>
+    <string name="helpline_org">Organisation</string>
+    <string name="helpline_categories">Kategorier</string>
+    <string name="helpline_number">Nummer</string>
+    <string name="helpline_website">Hjemmeside</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Engelsk</string>
+    <string name="helpline_language_french">Fransk</string>
+    <string name="helpline_language_german">Tysk</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Tyrkisk</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-de/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-de/helpline_categories.xml
new file mode 100644
index 0000000..fd00d49
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-de/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Missbrauch</string>
+    <string name="helpline_category_acohol">Alkohol</string>
+    <string name="helpline_category_addiction">Abhängigkeit</string>
+    <string name="helpline_category_adolescents">Heranwachsende</string>
+    <string name="helpline_category_adults">Erwachsene</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Geburt</string>
+    <string name="helpline_category_bullying">Mobbing</string>
+    <string name="helpline_category_children">Kinder</string>
+    <string name="helpline_category_crime">Kriminalität</string>
+    <string name="helpline_category_crime_victims">Verbrechensopfer</string>
+    <string name="helpline_category_corruption">Korruption</string>
+    <string name="helpline_category_discrimination">Diskriminierung</string>
+    <string name="helpline_category_domestic_violence">Häusliche Gewalt</string>
+    <string name="helpline_category_drugs">Drogen</string>
+    <string name="helpline_category_emotional_support">Emotionale Unterstützung</string>
+    <string name="helpline_category_family">Familie</string>
+    <string name="helpline_category_gambling">Glücksspiel</string>
+    <string name="helpline_category_gender">Geschlecht</string>
+    <string name="helpline_category_generic">Allgemein</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Menschenrechte</string>
+    <string name="helpline_category_human_trafficking">Menschenhandel</string>
+    <string name="helpline_category_immigration">Einwanderung</string>
+    <string name="helpline_category_legal_aid">Rechtsberatung</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Männer</string>
+    <string name="helpline_category_mental_health">Psychische Gesundheit</string>
+    <string name="helpline_category_missing_children">Vermisste Kinder</string>
+    <string name="helpline_category_mothers">Mütter</string>
+    <string name="helpline_category_muslim">Muslim</string>
+    <string name="helpline_category_parents">Eltern</string>
+    <string name="helpline_category_pregnancy">Schwangerschaft</string>
+    <string name="helpline_category_psychological">Psychologisch</string>
+    <string name="helpline_category_religion">Religion</string>
+    <string name="helpline_category_senior">Senioren</string>
+    <string name="helpline_category_sexual_abuse">Sexueller Missbrauch</string>
+    <string name="helpline_category_sexual_assault">Sexuelle Nötigung</string>
+    <string name="helpline_category_sexual_rights">Sexuelle Rechte</string>
+    <string name="helpline_category_sexuality">Sexualität</string>
+    <string name="helpline_category_soldiers">Soldaten</string>
+    <string name="helpline_category_suicide">Selbstmordprävention</string>
+    <string name="helpline_category_trans">Transgender</string>
+    <string name="helpline_category_veterans">Veteranen</string>
+    <string name="helpline_category_violence">Gewalt</string>
+    <string name="helpline_category_war">Krieg</string>
+    <string name="helpline_category_women">Frauen</string>
+    <string name="helpline_category_youth">Jugend</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-de/strings.xml b/java/com/android/dialer/helplines/res/values-de/strings.xml
new file mode 100644
index 0000000..3d6f5d4
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-de/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Hilfe-Hotlines</string>
+    <string name="helplines_loading">Wird geladen\u2026</string>
+    <string name="helplines_empty">Keine Hilfe-Hotlines gefunden.\nLege eine SIM-Karte ein und versuche es erneut</string>
+    <string name="helplines_help">Hilfe</string>
+    <string name="helplines_help_title">Folgende Angebote sind sicher anzurufen</string>
+    <string name="helplines_help_message">Keine dieser Nummern erscheint in deiner Anrufliste.\nFür weitere Informationen kannst du auf einen Eintrag klicken</string>
+    <string name="helplines_help_more_message">Die Liste der Hilfe-Hotlines wird mit Informationen gefüllt, die von den Mitwirkenden manuell aktualisiert werden. Solltest du auf fehlende oder falsche Informationen stoßen, kannst du uns gerne unter <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g> kontaktieren.</string>
+    <string name="helpline_button_more">Mehr</string>
+    <string name="unknown_helpline_name">Unbekannte Organisation</string>
+    <string name="helpline_name">Name</string>
+    <string name="helpline_org">Organisation</string>
+    <string name="helpline_categories">Kategorien</string>
+    <string name="helpline_number">Nummer</string>
+    <string name="helpline_website">Webseite</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Englisch</string>
+    <string name="helpline_language_french">Französisch</string>
+    <string name="helpline_language_german">Deutsch</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibwe</string>
+    <string name="helpline_language_turkish">Türkisch</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-el/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-el/helpline_categories.xml
new file mode 100644
index 0000000..390b855
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-el/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Κατάχρηση</string>
+    <string name="helpline_category_acohol">Αλκοόλ</string>
+    <string name="helpline_category_addiction">Εθισμός</string>
+    <string name="helpline_category_adolescents">Έφηβοι</string>
+    <string name="helpline_category_adults">Ενήλικες</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Γέννηση</string>
+    <string name="helpline_category_bullying">Εκφοβισμός</string>
+    <string name="helpline_category_children">Παιδιά</string>
+    <string name="helpline_category_crime">Έγκλημα</string>
+    <string name="helpline_category_crime_victims">Θύματα εγκλήματος</string>
+    <string name="helpline_category_corruption">Διαφθορά</string>
+    <string name="helpline_category_discrimination">Διακρίσεις</string>
+    <string name="helpline_category_domestic_violence">Ενδοοικογενειακή βία</string>
+    <string name="helpline_category_drugs">Ναρκωτικά</string>
+    <string name="helpline_category_emotional_support">Συναισθηματική υποστήριξη</string>
+    <string name="helpline_category_family">Οικογένεια</string>
+    <string name="helpline_category_gambling">Τζόγος</string>
+    <string name="helpline_category_gender">Φύλο</string>
+    <string name="helpline_category_generic">Γενικά</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Ανθρώπινα δικαιώματα</string>
+    <string name="helpline_category_human_trafficking">Διακίνηση ανθρώπων</string>
+    <string name="helpline_category_immigration">Μετανάστευση</string>
+    <string name="helpline_category_legal_aid">Νομική βοήθεια</string>
+    <string name="helpline_category_lgbtq">ΛΟΑΤΚ+</string>
+    <string name="helpline_category_men">Άνδρες</string>
+    <string name="helpline_category_mental_health">Ψυχική υγεία</string>
+    <string name="helpline_category_missing_children">Αγνοούμενα παιδιά</string>
+    <string name="helpline_category_mothers">Μητέρες</string>
+    <string name="helpline_category_muslim">Μουσουλμάνοι</string>
+    <string name="helpline_category_parents">Γονείς</string>
+    <string name="helpline_category_pregnancy">Κύηση</string>
+    <string name="helpline_category_psychological">Ψυχολογικές</string>
+    <string name="helpline_category_religion">Θρησκεία</string>
+    <string name="helpline_category_senior">Ηλικιωμένοι</string>
+    <string name="helpline_category_sexual_abuse">Σεξουαλική παρενόχληση</string>
+    <string name="helpline_category_sexual_assault">Σεξουαλική επίθεση</string>
+    <string name="helpline_category_sexual_rights">Σεξουαλικά δικαιώματα</string>
+    <string name="helpline_category_sexuality">Σεξουαλικότητα</string>
+    <string name="helpline_category_soldiers">Στρατιώτες</string>
+    <string name="helpline_category_suicide">Αποφυγή αυτοκτονίας</string>
+    <string name="helpline_category_trans">Διεμφυλικά</string>
+    <string name="helpline_category_veterans">Βετεράνοι</string>
+    <string name="helpline_category_violence">Βία</string>
+    <string name="helpline_category_war">Πόλεμος</string>
+    <string name="helpline_category_women">Γυναίκες</string>
+    <string name="helpline_category_youth">Νεολαία</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-el/strings.xml b/java/com/android/dialer/helplines/res/values-el/strings.xml
new file mode 100644
index 0000000..cd250bf
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-el/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Γραμμές βοήθειας</string>
+    <string name="helplines_loading">Φόρτωση\u2026</string>
+    <string name="helplines_empty">Δεν βρέθηκαν γραμμές βοήθειας.\nΕισάγετε μια κάρτα SIM και προσπαθήστε ξανά</string>
+    <string name="helplines_help">Βοήθεια</string>
+    <string name="helplines_help_title">Αυτά είναι ασφαλή για κλήση</string>
+    <string name="helplines_help_message">Κανένας από αυτούς τους αριθμούς δεν εμφανίζεται στο ιστορικό κλήσεών σας.\nΜπορείτε να κάνετε κλικ σε οποιοδήποτε στοιχείο για περισσότερες πληροφορίες</string>
+    <string name="helplines_help_more_message">Ο κατάλογος των γραμμών βοήθειας αποτελείται από πληροφορίες που ενημερώνονται χειροκίνητα από τους συνεισφέροντες. Εάν αντιμετωπίσετε τυχόν ελλείπουσες ή λανθασμένες πληροφορίες, μη διστάσετε να επικοινωνήσετε μαζί μας στο <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Περισσότερα</string>
+    <string name="unknown_helpline_name">Άγνωστος οργανισμός</string>
+    <string name="helpline_name">Όνομα</string>
+    <string name="helpline_org">Οργανισμός</string>
+    <string name="helpline_categories">Κατηγορίες</string>
+    <string name="helpline_number">Αριθμός</string>
+    <string name="helpline_website">Ιστοσελίδα</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Κρι</string>
+    <string name="helpline_language_english">Αγγλικά</string>
+    <string name="helpline_language_french">Γαλλικά</string>
+    <string name="helpline_language_german">Γερμανικά</string>
+    <string name="helpline_language_inuktitut">Ινουκτιτούτ</string>
+    <string name="helpline_language_ojibway">Οζιβίγουα</string>
+    <string name="helpline_language_turkish">Τουρκικά</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-en-rAU/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-en-rAU/helpline_categories.xml
new file mode 100644
index 0000000..72dbdf9
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-en-rAU/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abuse</string>
+    <string name="helpline_category_acohol">Alcohol</string>
+    <string name="helpline_category_addiction">Addiction</string>
+    <string name="helpline_category_adolescents">Adolescents</string>
+    <string name="helpline_category_adults">Adults</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Birth</string>
+    <string name="helpline_category_bullying">Bullying</string>
+    <string name="helpline_category_children">Children</string>
+    <string name="helpline_category_crime">Crime</string>
+    <string name="helpline_category_crime_victims">Crime victims</string>
+    <string name="helpline_category_corruption">Corruption</string>
+    <string name="helpline_category_discrimination">Discrimination</string>
+    <string name="helpline_category_domestic_violence">Domestic violence</string>
+    <string name="helpline_category_drugs">Drugs</string>
+    <string name="helpline_category_emotional_support">Emotional support</string>
+    <string name="helpline_category_family">Family</string>
+    <string name="helpline_category_gambling">Gambling</string>
+    <string name="helpline_category_gender">Gender</string>
+    <string name="helpline_category_generic">Generic</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Human rights</string>
+    <string name="helpline_category_human_trafficking">Human trafficking</string>
+    <string name="helpline_category_immigration">Immigration</string>
+    <string name="helpline_category_legal_aid">Legal aid</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Men</string>
+    <string name="helpline_category_mental_health">Mental health</string>
+    <string name="helpline_category_missing_children">Missing children</string>
+    <string name="helpline_category_mothers">Mothers</string>
+    <string name="helpline_category_muslim">Muslim</string>
+    <string name="helpline_category_parents">Parents</string>
+    <string name="helpline_category_pregnancy">Pregnancy</string>
+    <string name="helpline_category_psychological">Psychological</string>
+    <string name="helpline_category_religion">Religion</string>
+    <string name="helpline_category_senior">Seniors</string>
+    <string name="helpline_category_sexual_abuse">Sexual abuse</string>
+    <string name="helpline_category_sexual_assault">Sexual assault</string>
+    <string name="helpline_category_sexual_rights">Sexual rights</string>
+    <string name="helpline_category_sexuality">Sexuality</string>
+    <string name="helpline_category_soldiers">Soldiers</string>
+    <string name="helpline_category_suicide">Suicide prevention</string>
+    <string name="helpline_category_trans">Transgender</string>
+    <string name="helpline_category_veterans">Veterans</string>
+    <string name="helpline_category_violence">Violence</string>
+    <string name="helpline_category_war">War</string>
+    <string name="helpline_category_women">Women</string>
+    <string name="helpline_category_youth">Youth</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-en-rAU/strings.xml b/java/com/android/dialer/helplines/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..57e88e9
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-en-rAU/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Helplines</string>
+    <string name="helplines_loading">Loading\u2026</string>
+    <string name="helplines_empty">No helplines found.\nInsert a SIM card and try again</string>
+    <string name="helplines_help">Help</string>
+    <string name="helplines_help_title">These are safe to call</string>
+    <string name="helplines_help_message">None of these numbers appear in your call history.\nYou can click any item for more information</string>
+    <string name="helplines_help_more_message">The list of helplines is filled with information that is updated manually by contributors. If you encounter any missing or wrong information, please feel free to contact us at <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">More</string>
+    <string name="unknown_helpline_name">Unknown organisation</string>
+    <string name="helpline_name">Name</string>
+    <string name="helpline_org">Organisation</string>
+    <string name="helpline_categories">Categories</string>
+    <string name="helpline_number">Number</string>
+    <string name="helpline_website">Website</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">English</string>
+    <string name="helpline_language_french">French</string>
+    <string name="helpline_language_german">German</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turkish</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-en-rCA/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-en-rCA/helpline_categories.xml
new file mode 100644
index 0000000..72dbdf9
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-en-rCA/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abuse</string>
+    <string name="helpline_category_acohol">Alcohol</string>
+    <string name="helpline_category_addiction">Addiction</string>
+    <string name="helpline_category_adolescents">Adolescents</string>
+    <string name="helpline_category_adults">Adults</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Birth</string>
+    <string name="helpline_category_bullying">Bullying</string>
+    <string name="helpline_category_children">Children</string>
+    <string name="helpline_category_crime">Crime</string>
+    <string name="helpline_category_crime_victims">Crime victims</string>
+    <string name="helpline_category_corruption">Corruption</string>
+    <string name="helpline_category_discrimination">Discrimination</string>
+    <string name="helpline_category_domestic_violence">Domestic violence</string>
+    <string name="helpline_category_drugs">Drugs</string>
+    <string name="helpline_category_emotional_support">Emotional support</string>
+    <string name="helpline_category_family">Family</string>
+    <string name="helpline_category_gambling">Gambling</string>
+    <string name="helpline_category_gender">Gender</string>
+    <string name="helpline_category_generic">Generic</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Human rights</string>
+    <string name="helpline_category_human_trafficking">Human trafficking</string>
+    <string name="helpline_category_immigration">Immigration</string>
+    <string name="helpline_category_legal_aid">Legal aid</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Men</string>
+    <string name="helpline_category_mental_health">Mental health</string>
+    <string name="helpline_category_missing_children">Missing children</string>
+    <string name="helpline_category_mothers">Mothers</string>
+    <string name="helpline_category_muslim">Muslim</string>
+    <string name="helpline_category_parents">Parents</string>
+    <string name="helpline_category_pregnancy">Pregnancy</string>
+    <string name="helpline_category_psychological">Psychological</string>
+    <string name="helpline_category_religion">Religion</string>
+    <string name="helpline_category_senior">Seniors</string>
+    <string name="helpline_category_sexual_abuse">Sexual abuse</string>
+    <string name="helpline_category_sexual_assault">Sexual assault</string>
+    <string name="helpline_category_sexual_rights">Sexual rights</string>
+    <string name="helpline_category_sexuality">Sexuality</string>
+    <string name="helpline_category_soldiers">Soldiers</string>
+    <string name="helpline_category_suicide">Suicide prevention</string>
+    <string name="helpline_category_trans">Transgender</string>
+    <string name="helpline_category_veterans">Veterans</string>
+    <string name="helpline_category_violence">Violence</string>
+    <string name="helpline_category_war">War</string>
+    <string name="helpline_category_women">Women</string>
+    <string name="helpline_category_youth">Youth</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-en-rCA/strings.xml b/java/com/android/dialer/helplines/res/values-en-rCA/strings.xml
new file mode 100644
index 0000000..493e0b4
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-en-rCA/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Helplines</string>
+    <string name="helplines_loading">Loading\u2026</string>
+    <string name="helplines_empty">No helplines found.\nInsert a SIM card and try again</string>
+    <string name="helplines_help">Help</string>
+    <string name="helplines_help_title">These are safe to call</string>
+    <string name="helplines_help_message">None of these numbers appear in your call history.\nYou can click any item for more information</string>
+    <string name="helplines_help_more_message">The list of helplines is filled with information that is updated manually by contributors. If you encounter any missing or wrong information, please feel free to contact us at <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">More</string>
+    <string name="unknown_helpline_name">Unknown organization</string>
+    <string name="helpline_name">Name</string>
+    <string name="helpline_org">Organization</string>
+    <string name="helpline_categories">Categories</string>
+    <string name="helpline_number">Number</string>
+    <string name="helpline_website">Website</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">English</string>
+    <string name="helpline_language_french">French</string>
+    <string name="helpline_language_german">German</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turkish</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-en-rGB/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-en-rGB/helpline_categories.xml
new file mode 100644
index 0000000..72dbdf9
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-en-rGB/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abuse</string>
+    <string name="helpline_category_acohol">Alcohol</string>
+    <string name="helpline_category_addiction">Addiction</string>
+    <string name="helpline_category_adolescents">Adolescents</string>
+    <string name="helpline_category_adults">Adults</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Birth</string>
+    <string name="helpline_category_bullying">Bullying</string>
+    <string name="helpline_category_children">Children</string>
+    <string name="helpline_category_crime">Crime</string>
+    <string name="helpline_category_crime_victims">Crime victims</string>
+    <string name="helpline_category_corruption">Corruption</string>
+    <string name="helpline_category_discrimination">Discrimination</string>
+    <string name="helpline_category_domestic_violence">Domestic violence</string>
+    <string name="helpline_category_drugs">Drugs</string>
+    <string name="helpline_category_emotional_support">Emotional support</string>
+    <string name="helpline_category_family">Family</string>
+    <string name="helpline_category_gambling">Gambling</string>
+    <string name="helpline_category_gender">Gender</string>
+    <string name="helpline_category_generic">Generic</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Human rights</string>
+    <string name="helpline_category_human_trafficking">Human trafficking</string>
+    <string name="helpline_category_immigration">Immigration</string>
+    <string name="helpline_category_legal_aid">Legal aid</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Men</string>
+    <string name="helpline_category_mental_health">Mental health</string>
+    <string name="helpline_category_missing_children">Missing children</string>
+    <string name="helpline_category_mothers">Mothers</string>
+    <string name="helpline_category_muslim">Muslim</string>
+    <string name="helpline_category_parents">Parents</string>
+    <string name="helpline_category_pregnancy">Pregnancy</string>
+    <string name="helpline_category_psychological">Psychological</string>
+    <string name="helpline_category_religion">Religion</string>
+    <string name="helpline_category_senior">Seniors</string>
+    <string name="helpline_category_sexual_abuse">Sexual abuse</string>
+    <string name="helpline_category_sexual_assault">Sexual assault</string>
+    <string name="helpline_category_sexual_rights">Sexual rights</string>
+    <string name="helpline_category_sexuality">Sexuality</string>
+    <string name="helpline_category_soldiers">Soldiers</string>
+    <string name="helpline_category_suicide">Suicide prevention</string>
+    <string name="helpline_category_trans">Transgender</string>
+    <string name="helpline_category_veterans">Veterans</string>
+    <string name="helpline_category_violence">Violence</string>
+    <string name="helpline_category_war">War</string>
+    <string name="helpline_category_women">Women</string>
+    <string name="helpline_category_youth">Youth</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-en-rGB/strings.xml b/java/com/android/dialer/helplines/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..57e88e9
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-en-rGB/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Helplines</string>
+    <string name="helplines_loading">Loading\u2026</string>
+    <string name="helplines_empty">No helplines found.\nInsert a SIM card and try again</string>
+    <string name="helplines_help">Help</string>
+    <string name="helplines_help_title">These are safe to call</string>
+    <string name="helplines_help_message">None of these numbers appear in your call history.\nYou can click any item for more information</string>
+    <string name="helplines_help_more_message">The list of helplines is filled with information that is updated manually by contributors. If you encounter any missing or wrong information, please feel free to contact us at <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">More</string>
+    <string name="unknown_helpline_name">Unknown organisation</string>
+    <string name="helpline_name">Name</string>
+    <string name="helpline_org">Organisation</string>
+    <string name="helpline_categories">Categories</string>
+    <string name="helpline_number">Number</string>
+    <string name="helpline_website">Website</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">English</string>
+    <string name="helpline_language_french">French</string>
+    <string name="helpline_language_german">German</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turkish</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-en-rIN/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-en-rIN/helpline_categories.xml
new file mode 100644
index 0000000..72dbdf9
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-en-rIN/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abuse</string>
+    <string name="helpline_category_acohol">Alcohol</string>
+    <string name="helpline_category_addiction">Addiction</string>
+    <string name="helpline_category_adolescents">Adolescents</string>
+    <string name="helpline_category_adults">Adults</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Birth</string>
+    <string name="helpline_category_bullying">Bullying</string>
+    <string name="helpline_category_children">Children</string>
+    <string name="helpline_category_crime">Crime</string>
+    <string name="helpline_category_crime_victims">Crime victims</string>
+    <string name="helpline_category_corruption">Corruption</string>
+    <string name="helpline_category_discrimination">Discrimination</string>
+    <string name="helpline_category_domestic_violence">Domestic violence</string>
+    <string name="helpline_category_drugs">Drugs</string>
+    <string name="helpline_category_emotional_support">Emotional support</string>
+    <string name="helpline_category_family">Family</string>
+    <string name="helpline_category_gambling">Gambling</string>
+    <string name="helpline_category_gender">Gender</string>
+    <string name="helpline_category_generic">Generic</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Human rights</string>
+    <string name="helpline_category_human_trafficking">Human trafficking</string>
+    <string name="helpline_category_immigration">Immigration</string>
+    <string name="helpline_category_legal_aid">Legal aid</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Men</string>
+    <string name="helpline_category_mental_health">Mental health</string>
+    <string name="helpline_category_missing_children">Missing children</string>
+    <string name="helpline_category_mothers">Mothers</string>
+    <string name="helpline_category_muslim">Muslim</string>
+    <string name="helpline_category_parents">Parents</string>
+    <string name="helpline_category_pregnancy">Pregnancy</string>
+    <string name="helpline_category_psychological">Psychological</string>
+    <string name="helpline_category_religion">Religion</string>
+    <string name="helpline_category_senior">Seniors</string>
+    <string name="helpline_category_sexual_abuse">Sexual abuse</string>
+    <string name="helpline_category_sexual_assault">Sexual assault</string>
+    <string name="helpline_category_sexual_rights">Sexual rights</string>
+    <string name="helpline_category_sexuality">Sexuality</string>
+    <string name="helpline_category_soldiers">Soldiers</string>
+    <string name="helpline_category_suicide">Suicide prevention</string>
+    <string name="helpline_category_trans">Transgender</string>
+    <string name="helpline_category_veterans">Veterans</string>
+    <string name="helpline_category_violence">Violence</string>
+    <string name="helpline_category_war">War</string>
+    <string name="helpline_category_women">Women</string>
+    <string name="helpline_category_youth">Youth</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-en-rIN/strings.xml b/java/com/android/dialer/helplines/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..57e88e9
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-en-rIN/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Helplines</string>
+    <string name="helplines_loading">Loading\u2026</string>
+    <string name="helplines_empty">No helplines found.\nInsert a SIM card and try again</string>
+    <string name="helplines_help">Help</string>
+    <string name="helplines_help_title">These are safe to call</string>
+    <string name="helplines_help_message">None of these numbers appear in your call history.\nYou can click any item for more information</string>
+    <string name="helplines_help_more_message">The list of helplines is filled with information that is updated manually by contributors. If you encounter any missing or wrong information, please feel free to contact us at <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">More</string>
+    <string name="unknown_helpline_name">Unknown organisation</string>
+    <string name="helpline_name">Name</string>
+    <string name="helpline_org">Organisation</string>
+    <string name="helpline_categories">Categories</string>
+    <string name="helpline_number">Number</string>
+    <string name="helpline_website">Website</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">English</string>
+    <string name="helpline_language_french">French</string>
+    <string name="helpline_language_german">German</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turkish</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-et/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-et/helpline_categories.xml
new file mode 100644
index 0000000..01b8bd7
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-et/helpline_categories.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Väärkohtlemine</string>
+    <string name="helpline_category_acohol">Alkohol</string>
+    <string name="helpline_category_addiction">Sõltuvus</string>
+    <string name="helpline_category_adolescents">Noorukid</string>
+    <string name="helpline_category_adults">Täiskasvanud</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Sünd</string>
+    <string name="helpline_category_children">Lapsed</string>
+    <string name="helpline_category_crime">Kuritegu</string>
+    <string name="helpline_category_corruption">Korruptsioon</string>
+    <string name="helpline_category_discrimination">Diskrimineerimine</string>
+    <string name="helpline_category_drugs">Narkootikumid</string>
+    <string name="helpline_category_family">Perekond</string>
+    <string name="helpline_category_gambling">Hasartmängud</string>
+    <string name="helpline_category_gender">Sugu</string>
+    <string name="helpline_category_generic">Üldine</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Inimõigused</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Mehed</string>
+    <string name="helpline_category_missing_children">Kadunud lapsed</string>
+    <string name="helpline_category_mothers">Emad</string>
+    <string name="helpline_category_muslim">Moslemid</string>
+    <string name="helpline_category_parents">Vanemad</string>
+    <string name="helpline_category_pregnancy">Rasedus</string>
+    <string name="helpline_category_psychological">Psühholoogiline</string>
+    <string name="helpline_category_religion">Religioon</string>
+    <string name="helpline_category_senior">Vanurid</string>
+    <string name="helpline_category_sexuality">Seksuaalsus</string>
+    <string name="helpline_category_soldiers">Sõdurid</string>
+    <string name="helpline_category_trans">Transsoolised</string>
+    <string name="helpline_category_veterans">Veteranid</string>
+    <string name="helpline_category_violence">Vägivald</string>
+    <string name="helpline_category_war">Sõda</string>
+    <string name="helpline_category_women">Naised</string>
+    <string name="helpline_category_youth">Noored</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-et/strings.xml b/java/com/android/dialer/helplines/res/values-et/strings.xml
new file mode 100644
index 0000000..a0b9ee4
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-et/strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Abinumbrid</string>
+    <string name="helplines_loading">Laadimine\u2026</string>
+    <string name="helplines_help">Abi</string>
+    <string name="helplines_help_title">Nendele on turvaline helistada</string>
+    <string name="helplines_help_message">Ükski neist numbritest ei kajastu sinu kõnelogis.\nRohkema teabe saamiseks klõpsa mistahes üksusele</string>
+    <string name="helpline_button_more">Rohkem</string>
+    <string name="helpline_name">Nimi</string>
+    <string name="helpline_org">Asutus</string>
+    <string name="helpline_categories">Kategooriad</string>
+    <string name="helpline_number">Number</string>
+    <string name="helpline_website">Veebileht</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_english">inglise</string>
+    <string name="helpline_language_french">prantsuse</string>
+    <string name="helpline_language_german">saksa</string>
+    <string name="helpline_language_inuktitut">inuktituti</string>
+    <string name="helpline_language_turkish">türgi</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-fi/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-fi/helpline_categories.xml
new file mode 100644
index 0000000..d5612bc
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-fi/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Väärinkäyttö</string>
+    <string name="helpline_category_acohol">Alkoholi</string>
+    <string name="helpline_category_addiction">Riippuvuus</string>
+    <string name="helpline_category_adolescents">Nuoret</string>
+    <string name="helpline_category_adults">Aikuiset</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Synnytys</string>
+    <string name="helpline_category_bullying">Kiusaaminen</string>
+    <string name="helpline_category_children">Lapset</string>
+    <string name="helpline_category_crime">Rikos</string>
+    <string name="helpline_category_crime_victims">Rikosten uhrit</string>
+    <string name="helpline_category_corruption">Korruptio</string>
+    <string name="helpline_category_discrimination">Syrjintä</string>
+    <string name="helpline_category_domestic_violence">Perheväkivalta</string>
+    <string name="helpline_category_drugs">Huumeet</string>
+    <string name="helpline_category_emotional_support">Henkinen tuki</string>
+    <string name="helpline_category_family">Perhe</string>
+    <string name="helpline_category_gambling">Uhkapelaaminen</string>
+    <string name="helpline_category_gender">Sukupuoli</string>
+    <string name="helpline_category_generic">Yleinen</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Ihmisoikeudet</string>
+    <string name="helpline_category_human_trafficking">Ihmiskauppa</string>
+    <string name="helpline_category_immigration">Maahanmuutto</string>
+    <string name="helpline_category_legal_aid">Oikeusapu</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Miehet</string>
+    <string name="helpline_category_mental_health">Mielenterveys</string>
+    <string name="helpline_category_missing_children">Kadonneet lapset</string>
+    <string name="helpline_category_mothers">Äidit</string>
+    <string name="helpline_category_muslim">Muslimit</string>
+    <string name="helpline_category_parents">Vanhemmat</string>
+    <string name="helpline_category_pregnancy">Raskaus</string>
+    <string name="helpline_category_psychological">Psykologinen</string>
+    <string name="helpline_category_religion">Uskonto</string>
+    <string name="helpline_category_senior">Seniorit</string>
+    <string name="helpline_category_sexual_abuse">Seksuaalinen hyväksikäyttö</string>
+    <string name="helpline_category_sexual_assault">Seksuaalinen väkivalta</string>
+    <string name="helpline_category_sexual_rights">Seksuaaliset oikeudet</string>
+    <string name="helpline_category_sexuality">Seksuaalisuus</string>
+    <string name="helpline_category_soldiers">Sotilaat</string>
+    <string name="helpline_category_suicide">Itsemurhien ehkäisy</string>
+    <string name="helpline_category_trans">Transsukupuolisuus</string>
+    <string name="helpline_category_veterans">Veteraanit</string>
+    <string name="helpline_category_violence">Väkivalta</string>
+    <string name="helpline_category_war">Sota</string>
+    <string name="helpline_category_women">Naiset</string>
+    <string name="helpline_category_youth">Nuoret</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-fi/strings.xml b/java/com/android/dialer/helplines/res/values-fi/strings.xml
new file mode 100644
index 0000000..ae34093
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-fi/strings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Tukinumerot</string>
+    <string name="helplines_loading">Ladataan\u2026</string>
+    <string name="helplines_empty">Tukinumeroita ei löytynyt.\nAseta SIM-kortti ja yritä uudelleen</string>
+    <string name="helplines_help">Ohje</string>
+    <string name="helplines_help_title">Näihin on turvallista soittaa</string>
+    <string name="helplines_help_message">Mikään näistä numeroista ei tallennu soittohistoriaan.\nVoit painaa mitä tahansa kohdetta saadaksesi lisätietoja</string>
+    <string name="helpline_button_more">Lisää</string>
+    <string name="unknown_helpline_name">Tuntematon organisaatio</string>
+    <string name="helpline_name">Nimi</string>
+    <string name="helpline_org">Organisaatio</string>
+    <string name="helpline_categories">Kategoriat</string>
+    <string name="helpline_number">Numero</string>
+    <string name="helpline_website">Verkkosivusto</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Englanti</string>
+    <string name="helpline_language_french">Ranska</string>
+    <string name="helpline_language_german">Saksa</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turkki</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-fr/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-fr/helpline_categories.xml
new file mode 100644
index 0000000..5d302a2
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-fr/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Maltraitance</string>
+    <string name="helpline_category_acohol">Alcool</string>
+    <string name="helpline_category_addiction">Addiction</string>
+    <string name="helpline_category_adolescents">Adolescents</string>
+    <string name="helpline_category_adults">Adultes</string>
+    <string name="helpline_category_aids">SIDA</string>
+    <string name="helpline_category_birth">Naissance</string>
+    <string name="helpline_category_bullying">Harcèlement</string>
+    <string name="helpline_category_children">Enfants</string>
+    <string name="helpline_category_crime">Crime</string>
+    <string name="helpline_category_crime_victims">Victimes de crimes</string>
+    <string name="helpline_category_corruption">Corruption</string>
+    <string name="helpline_category_discrimination">Discrimination</string>
+    <string name="helpline_category_domestic_violence">Violences familiales</string>
+    <string name="helpline_category_drugs">Drogues/Médicaments</string>
+    <string name="helpline_category_emotional_support">Soutien émotionnel</string>
+    <string name="helpline_category_family">Famille</string>
+    <string name="helpline_category_gambling">Jeux d’argent</string>
+    <string name="helpline_category_gender">Genre</string>
+    <string name="helpline_category_generic">Générique</string>
+    <string name="helpline_category_hiv">VIH</string>
+    <string name="helpline_category_human_rights">Droits de l\'Homme</string>
+    <string name="helpline_category_human_trafficking">Traffic d\'êtres humains</string>
+    <string name="helpline_category_immigration">Immigration</string>
+    <string name="helpline_category_legal_aid">Aide juridique</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Hommes</string>
+    <string name="helpline_category_mental_health">Santé mentale</string>
+    <string name="helpline_category_missing_children">Enfants disparus</string>
+    <string name="helpline_category_mothers">Mères</string>
+    <string name="helpline_category_muslim">Musulman</string>
+    <string name="helpline_category_parents">Parents</string>
+    <string name="helpline_category_pregnancy">Grossesse</string>
+    <string name="helpline_category_psychological">Psychologique</string>
+    <string name="helpline_category_religion">Religion</string>
+    <string name="helpline_category_senior">Personnes âgées</string>
+    <string name="helpline_category_sexual_abuse">Abus sexuel</string>
+    <string name="helpline_category_sexual_assault">Agression sexuelle</string>
+    <string name="helpline_category_sexual_rights">Droits sexuels</string>
+    <string name="helpline_category_sexuality">Sexualité</string>
+    <string name="helpline_category_soldiers">Soldats</string>
+    <string name="helpline_category_suicide">Prévention du suicide</string>
+    <string name="helpline_category_trans">Transgenre</string>
+    <string name="helpline_category_veterans">Anciens combattants</string>
+    <string name="helpline_category_violence">Violence</string>
+    <string name="helpline_category_war">Guerre</string>
+    <string name="helpline_category_women">Femmes</string>
+    <string name="helpline_category_youth">Jeunesse</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-fr/strings.xml b/java/com/android/dialer/helplines/res/values-fr/strings.xml
new file mode 100644
index 0000000..4ce375f
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-fr/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Services d’assistance téléphonique</string>
+    <string name="helplines_loading">Chargement\u2026</string>
+    <string name="helplines_empty">Aucun service d’assistance téléphonique trouvé.\nInsérez une carte SIM et réessayez</string>
+    <string name="helplines_help">Aide</string>
+    <string name="helplines_help_title">Celles-ci peuvent être appelées en toute sécurité</string>
+    <string name="helplines_help_message">Aucun de ces numéros n’apparaît dans votre historique d’appel.\nVous pouvez cliquer sur n’importe quel élément pour plus d’informations</string>
+    <string name="helplines_help_more_message">La liste des services d\'assistance téléphonique est maintenue manuellement par les contributeurs. Si certaines informations sont manquantes ou erronées, n\'hésitez pas à nous contacter sur : <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Plus</string>
+    <string name="unknown_helpline_name">Organisation inconnue</string>
+    <string name="helpline_name">Nom</string>
+    <string name="helpline_org">Organisation</string>
+    <string name="helpline_categories">Catégories</string>
+    <string name="helpline_number">Numéro</string>
+    <string name="helpline_website">Site internet</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Service d’assistance téléphonique pour un soutient émotionnel">%1$s</xliff:g> (<xliff:g id="helpline_county" example="FR">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cri</string>
+    <string name="helpline_language_english">Anglais</string>
+    <string name="helpline_language_french">Français</string>
+    <string name="helpline_language_german">Allemand</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibwé</string>
+    <string name="helpline_language_turkish">Turc</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-fur-rIT/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-fur-rIT/helpline_categories.xml
new file mode 100644
index 0000000..a4a779b
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-fur-rIT/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abûs</string>
+    <string name="helpline_category_acohol">Alcul</string>
+    <string name="helpline_category_addiction">Dipendence</string>
+    <string name="helpline_category_adolescents">Adolessents</string>
+    <string name="helpline_category_adults">Adults</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Nassite</string>
+    <string name="helpline_category_bullying">Bulatisim</string>
+    <string name="helpline_category_children">Fruts</string>
+    <string name="helpline_category_crime">Crimin</string>
+    <string name="helpline_category_crime_victims">Vitimis di criminâi</string>
+    <string name="helpline_category_corruption">Coruzion</string>
+    <string name="helpline_category_discrimination">Discriminazion</string>
+    <string name="helpline_category_domestic_violence">Violence domestiche</string>
+    <string name="helpline_category_drugs">Droghis</string>
+    <string name="helpline_category_emotional_support">Supuart emotîf</string>
+    <string name="helpline_category_family">Famee</string>
+    <string name="helpline_category_gambling">Zûc di azart</string>
+    <string name="helpline_category_gender">Gjenar</string>
+    <string name="helpline_category_generic">Gjeneric</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Dirits umans</string>
+    <string name="helpline_category_human_trafficking">Trate di personis</string>
+    <string name="helpline_category_immigration">Imigrazion</string>
+    <string name="helpline_category_legal_aid">Assistence legâl</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Oms</string>
+    <string name="helpline_category_mental_health">Salût mentâl</string>
+    <string name="helpline_category_missing_children">Fruts sparîts</string>
+    <string name="helpline_category_mothers">Maris</string>
+    <string name="helpline_category_muslim">Musulman</string>
+    <string name="helpline_category_parents">Gjenitôrs</string>
+    <string name="helpline_category_pregnancy">Gravidance</string>
+    <string name="helpline_category_psychological">Psicologjic</string>
+    <string name="helpline_category_religion">Religjon</string>
+    <string name="helpline_category_senior">Anzians</string>
+    <string name="helpline_category_sexual_abuse">Abûs sessuâl</string>
+    <string name="helpline_category_sexual_assault">Agression sessuâl</string>
+    <string name="helpline_category_sexual_rights">Dirits sessuâi</string>
+    <string name="helpline_category_sexuality">Sessualitât</string>
+    <string name="helpline_category_soldiers">Soldâts</string>
+    <string name="helpline_category_suicide">Prevenzion dai suicidis</string>
+    <string name="helpline_category_trans">Transessuâl</string>
+    <string name="helpline_category_veterans">Veterans</string>
+    <string name="helpline_category_violence">Violence</string>
+    <string name="helpline_category_war">Vuere</string>
+    <string name="helpline_category_women">Feminis</string>
+    <string name="helpline_category_youth">Zoventût</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-fur-rIT/strings.xml b/java/com/android/dialer/helplines/res/values-fur-rIT/strings.xml
new file mode 100644
index 0000000..fb49183
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-fur-rIT/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Liniis di jutori</string>
+    <string name="helplines_loading">Daûr a cjariâ\u2026</string>
+    <string name="helplines_empty">Nissune linie di jutori cjatade.\nInserìs une SIM e torne prove</string>
+    <string name="helplines_help">Jutori</string>
+    <string name="helplines_help_title">Chescj a son numars di clamâ sigûrs</string>
+    <string name="helplines_help_message">Nissun di chescj numars a vegnin fûr te tô cronologjie des clamadis.\nTocje un dai elements par vê plui informazions</string>
+    <string name="helplines_help_more_message">La liste di liniis di jutori e je jemplade cun informazions che a vegnin inzornadis a man dai colaboradôrs. Se tu viodis che al mancje alc o che lis informazions a son sbaliadis, no sta fâti scrupui a contatânus su <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Altri</string>
+    <string name="unknown_helpline_name">Organizazion no cognossude</string>
+    <string name="helpline_name">Non</string>
+    <string name="helpline_org">Organizazion</string>
+    <string name="helpline_categories">Categoriis</string>
+    <string name="helpline_number">Numar</string>
+    <string name="helpline_website">Sît web</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Inglês</string>
+    <string name="helpline_language_french">Francês</string>
+    <string name="helpline_language_german">Todesc</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turc</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-gd/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-gd/helpline_categories.xml
new file mode 100644
index 0000000..41ab8d8
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-gd/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Mì-ghnàthachadh</string>
+    <string name="helpline_category_acohol">Deoch-làidir</string>
+    <string name="helpline_category_addiction">Ro-dhèidhealachd</string>
+    <string name="helpline_category_adolescents">Òigridh</string>
+    <string name="helpline_category_adults">Inbhich</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Breith</string>
+    <string name="helpline_category_bullying">Burraidheachd</string>
+    <string name="helpline_category_children">Clann</string>
+    <string name="helpline_category_crime">Eucoir</string>
+    <string name="helpline_category_crime_victims">Fulangaiche eucoir</string>
+    <string name="helpline_category_corruption">Coirbeachd</string>
+    <string name="helpline_category_discrimination">Leth-bhreith</string>
+    <string name="helpline_category_domestic_violence">Ainneart teaghlachail</string>
+    <string name="helpline_category_drugs">Drugaichean</string>
+    <string name="helpline_category_emotional_support">Taic fhaireachail</string>
+    <string name="helpline_category_family">Teaghlach</string>
+    <string name="helpline_category_gambling">Cearrachas</string>
+    <string name="helpline_category_gender">Gnè</string>
+    <string name="helpline_category_generic">Coitcheann</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Còraichean daonna</string>
+    <string name="helpline_category_human_trafficking">Trafaigeachd dhaoine</string>
+    <string name="helpline_category_immigration">In-imrich</string>
+    <string name="helpline_category_legal_aid">Taic laghail</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Fireannaich</string>
+    <string name="helpline_category_mental_health">Slàinte-inntinn</string>
+    <string name="helpline_category_missing_children">Clann a dhìth</string>
+    <string name="helpline_category_mothers">Màthraichean</string>
+    <string name="helpline_category_muslim">Muslamach</string>
+    <string name="helpline_category_parents">Pàrantan</string>
+    <string name="helpline_category_pregnancy">Leatromachd</string>
+    <string name="helpline_category_psychological">Inntinn-eòlasach</string>
+    <string name="helpline_category_religion">Creideamh</string>
+    <string name="helpline_category_senior">Seann-daoine</string>
+    <string name="helpline_category_sexual_abuse">Mì-ghnàthachadh gnèitheasach</string>
+    <string name="helpline_category_sexual_assault">Ionnsaigh ghnèitheasach</string>
+    <string name="helpline_category_sexual_rights">Còraichean gnèitheasach</string>
+    <string name="helpline_category_sexuality">Gnèitheachd</string>
+    <string name="helpline_category_soldiers">Saighdearan</string>
+    <string name="helpline_category_suicide">Seachnadh fèin-mhuirt</string>
+    <string name="helpline_category_trans">Tar-ghnèitheach</string>
+    <string name="helpline_category_veterans">Seann-saighdearan</string>
+    <string name="helpline_category_violence">Ainneart</string>
+    <string name="helpline_category_war">Cogadh</string>
+    <string name="helpline_category_women">Boireannaich</string>
+    <string name="helpline_category_youth">Òigridh</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-gd/strings.xml b/java/com/android/dialer/helplines/res/values-gd/strings.xml
new file mode 100644
index 0000000..b42bd0a
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-gd/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Loidhnichean-taice</string>
+    <string name="helplines_loading">’Ga luchdadh\u2026</string>
+    <string name="helplines_empty">Cha deach loidhne-taice a lorg.\nCuir a-steach cairt SIM is feuch ris a-rithist</string>
+    <string name="helplines_help">Cobhair</string>
+    <string name="helplines_help_title">Tha e sàbhailte fòn a chur thuca</string>
+    <string name="helplines_help_message">Chan eil gin dhe na h-àireamhan seo air eachdraidh nan gairmean agad.\n’S urrainn dhut briogadh air nì sam bith airson barrachd fiosrachaidh</string>
+    <string name="helplines_help_more_message">Lìonaidh com-pàirtichean liosta nan loidhnichean-taice le fiosrachadh a thèid ùrachadh a làimh. Ma chì thu fiosrachadh seam bith a tha a dhìth no ceàrr, nach cuir thu fios thugainn air <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g>?</string>
+    <string name="helpline_button_more">Barrachd</string>
+    <string name="unknown_helpline_name">Buidheann nach aithne dhuinn</string>
+    <string name="helpline_name">Ainm</string>
+    <string name="helpline_org">Buidheann</string>
+    <string name="helpline_categories">Roinnean-seòrsa</string>
+    <string name="helpline_number">Àireamh</string>
+    <string name="helpline_website">Làrach-lìn</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Beurla</string>
+    <string name="helpline_language_french">Fraingis</string>
+    <string name="helpline_language_german">Gearmailtis</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibwa</string>
+    <string name="helpline_language_turkish">Turcais</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-gl/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-gl/helpline_categories.xml
new file mode 100644
index 0000000..8cebfec
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-gl/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abuso</string>
+    <string name="helpline_category_acohol">Alcol</string>
+    <string name="helpline_category_addiction">Adicción</string>
+    <string name="helpline_category_adolescents">Adolescentes</string>
+    <string name="helpline_category_adults">Adultos</string>
+    <string name="helpline_category_aids">SIDA</string>
+    <string name="helpline_category_birth">Nacemento</string>
+    <string name="helpline_category_bullying">Acoso escolar</string>
+    <string name="helpline_category_children">Cativos</string>
+    <string name="helpline_category_crime">Crime</string>
+    <string name="helpline_category_crime_victims">Vítimas de crimes</string>
+    <string name="helpline_category_corruption">Corrupción</string>
+    <string name="helpline_category_discrimination">Discriminación</string>
+    <string name="helpline_category_domestic_violence">Violencia machista</string>
+    <string name="helpline_category_drugs">Drogas</string>
+    <string name="helpline_category_emotional_support">Apoio emocional</string>
+    <string name="helpline_category_family">Familia</string>
+    <string name="helpline_category_gambling">Ludomanía</string>
+    <string name="helpline_category_gender">Xénero</string>
+    <string name="helpline_category_generic">Xeral</string>
+    <string name="helpline_category_hiv">VIH</string>
+    <string name="helpline_category_human_rights">Dereitos humanos</string>
+    <string name="helpline_category_human_trafficking">Tráfico de persoas</string>
+    <string name="helpline_category_immigration">Inmigración</string>
+    <string name="helpline_category_legal_aid">Axuda legal</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Homes</string>
+    <string name="helpline_category_mental_health">Saúde mental</string>
+    <string name="helpline_category_missing_children">Cativos desaparecidos</string>
+    <string name="helpline_category_mothers">Nais</string>
+    <string name="helpline_category_muslim">Musulmán</string>
+    <string name="helpline_category_parents">Proxenitores</string>
+    <string name="helpline_category_pregnancy">Embarazo</string>
+    <string name="helpline_category_psychological">Psicolóxico</string>
+    <string name="helpline_category_religion">Relixión</string>
+    <string name="helpline_category_senior">Xente maior</string>
+    <string name="helpline_category_sexual_abuse">Abuso sexual</string>
+    <string name="helpline_category_sexual_assault">Agresión sexual</string>
+    <string name="helpline_category_sexual_rights">Dereitos sexuais</string>
+    <string name="helpline_category_sexuality">Sexualidade</string>
+    <string name="helpline_category_soldiers">Soldados</string>
+    <string name="helpline_category_suicide">Prevención do suicidio</string>
+    <string name="helpline_category_trans">Transxénero</string>
+    <string name="helpline_category_veterans">Veteranos</string>
+    <string name="helpline_category_violence">Violencia</string>
+    <string name="helpline_category_war">Guerra</string>
+    <string name="helpline_category_women">Mulleres</string>
+    <string name="helpline_category_youth">Xuventude</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-gl/strings.xml b/java/com/android/dialer/helplines/res/values-gl/strings.xml
new file mode 100644
index 0000000..73cdd98
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-gl/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Liñas de axuda</string>
+    <string name="helplines_loading">Cargando\u2026</string>
+    <string name="helplines_empty">Non se atopou ningunha liña de axuda.\nInsire unha tarxeta SIM e inténtao de novo</string>
+    <string name="helplines_help">Axuda</string>
+    <string name="helplines_help_title">Estes son seguros para chamar</string>
+    <string name="helplines_help_message">Ningún destes números aparece no historial de chamadas.\nPodes premer sobre calquera elemento para obter máis información</string>
+    <string name="helplines_help_more_message">A información de lista das liñas de axuda é actualizada de xeito manual por colaboradores. Se atopas información incorrecta ou cres que falta, non dubides en contactar connosco en <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Máis</string>
+    <string name="unknown_helpline_name">Organización descoñecida</string>
+    <string name="helpline_name">Nome</string>
+    <string name="helpline_org">Organización</string>
+    <string name="helpline_categories">Categorías</string>
+    <string name="helpline_number">Número</string>
+    <string name="helpline_website">Sitio web</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Inglés</string>
+    <string name="helpline_language_french">Francés</string>
+    <string name="helpline_language_german">Alemán</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turco</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-hr/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-hr/helpline_categories.xml
new file mode 100644
index 0000000..d8adee0
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-hr/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Zlostavljanje</string>
+    <string name="helpline_category_acohol">Alkohol</string>
+    <string name="helpline_category_addiction">Ovisnost</string>
+    <string name="helpline_category_adolescents">Adolescenti</string>
+    <string name="helpline_category_adults">Odrasli</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Rođenje</string>
+    <string name="helpline_category_bullying">Vršnjačko zlostavljanje</string>
+    <string name="helpline_category_children">Djeca</string>
+    <string name="helpline_category_crime">Zločin</string>
+    <string name="helpline_category_crime_victims">Žrtve zločina</string>
+    <string name="helpline_category_corruption">Mito</string>
+    <string name="helpline_category_discrimination">Diskriminacija</string>
+    <string name="helpline_category_domestic_violence">Nasilje u obitelji</string>
+    <string name="helpline_category_drugs">Droge</string>
+    <string name="helpline_category_emotional_support">Emocionalna podrška</string>
+    <string name="helpline_category_family">Obitelj</string>
+    <string name="helpline_category_gambling">Kockanje</string>
+    <string name="helpline_category_gender">Spol</string>
+    <string name="helpline_category_generic">Općenito</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Ljudska prava</string>
+    <string name="helpline_category_human_trafficking">Trgovanje ljudima</string>
+    <string name="helpline_category_immigration">Imigracija</string>
+    <string name="helpline_category_legal_aid">Pravna pomoć</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Muškarci</string>
+    <string name="helpline_category_mental_health">Mentalno zdravlje</string>
+    <string name="helpline_category_missing_children">Nestala djeca</string>
+    <string name="helpline_category_mothers">Majke</string>
+    <string name="helpline_category_muslim">Musliman</string>
+    <string name="helpline_category_parents">Roditelji</string>
+    <string name="helpline_category_pregnancy">Trudnoća</string>
+    <string name="helpline_category_psychological">Psihološki</string>
+    <string name="helpline_category_religion">Religija</string>
+    <string name="helpline_category_senior">Starije osobe</string>
+    <string name="helpline_category_sexual_abuse">Seksualno zlostavljanje</string>
+    <string name="helpline_category_sexual_assault">Seksualni napad</string>
+    <string name="helpline_category_sexual_rights">Seksualna prava</string>
+    <string name="helpline_category_sexuality">Seksualnost</string>
+    <string name="helpline_category_soldiers">Vojnici</string>
+    <string name="helpline_category_suicide">Prevencija samoubojstava</string>
+    <string name="helpline_category_trans">Transrodna osoba</string>
+    <string name="helpline_category_veterans">Veterani</string>
+    <string name="helpline_category_violence">Nasilje</string>
+    <string name="helpline_category_war">Rat</string>
+    <string name="helpline_category_women">Žene</string>
+    <string name="helpline_category_youth">Mladi</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-hr/strings.xml b/java/com/android/dialer/helplines/res/values-hr/strings.xml
new file mode 100644
index 0000000..c1f0ee9
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-hr/strings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Brojevi za pomoć</string>
+    <string name="helplines_loading">Učitavanje\u2026</string>
+    <string name="helplines_empty">Brojevi za pomoć nisu pronađeni.\nUmetnite SIM karticu i pokušajte ponovo</string>
+    <string name="helplines_help">Pomoć</string>
+    <string name="helplines_help_title">Ovi su sigurni za telefonski poziv</string>
+    <string name="helplines_help_message">Nijedan od ovih brojeva ne pojavljuje se u vašoj povijesti poziva.\nZa više informacija možete kliknuti bilo koju stavku</string>
+    <string name="helpline_button_more">Više</string>
+    <string name="unknown_helpline_name">Nepoznata organizacija</string>
+    <string name="helpline_name">Naziv</string>
+    <string name="helpline_org">Organizacija</string>
+    <string name="helpline_categories">Kategorije</string>
+    <string name="helpline_number">Broj</string>
+    <string name="helpline_website">Web-stranica</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Engleski</string>
+    <string name="helpline_language_french">Francuski</string>
+    <string name="helpline_language_german">Njemački</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turski</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-hu/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-hu/helpline_categories.xml
new file mode 100644
index 0000000..91c4d2b
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-hu/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">jogsértés, nemi erőszak</string>
+    <string name="helpline_category_acohol">Alkohol</string>
+    <string name="helpline_category_addiction">Függőség</string>
+    <string name="helpline_category_adolescents">Serdülők</string>
+    <string name="helpline_category_adults">Felnőttek</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Szülés, születés</string>
+    <string name="helpline_category_bullying">Zaklatás</string>
+    <string name="helpline_category_children">Gyermekek</string>
+    <string name="helpline_category_crime">Bűnügy</string>
+    <string name="helpline_category_crime_victims">Bűncselekmények áldozatai</string>
+    <string name="helpline_category_corruption">Korrupció</string>
+    <string name="helpline_category_discrimination">Megkülönböztetés</string>
+    <string name="helpline_category_domestic_violence">Családon belüli erőszak</string>
+    <string name="helpline_category_drugs">Drogok</string>
+    <string name="helpline_category_emotional_support">Érzelmi támogatás</string>
+    <string name="helpline_category_family">Család</string>
+    <string name="helpline_category_gambling">Szerencsejáték</string>
+    <string name="helpline_category_gender">Nemiséggel kapcsolatos</string>
+    <string name="helpline_category_generic">Általános</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Emberi jogok</string>
+    <string name="helpline_category_human_trafficking">Embercsempészet</string>
+    <string name="helpline_category_immigration">Migránskérdés</string>
+    <string name="helpline_category_legal_aid">Jogsegély</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Férfiak</string>
+    <string name="helpline_category_mental_health">Mentális egészség</string>
+    <string name="helpline_category_missing_children">Elveszett gyermekek</string>
+    <string name="helpline_category_mothers">Anyák</string>
+    <string name="helpline_category_muslim">Muszlim</string>
+    <string name="helpline_category_parents">Szülők</string>
+    <string name="helpline_category_pregnancy">Terhesség, várandósság</string>
+    <string name="helpline_category_psychological">Pszichológiai</string>
+    <string name="helpline_category_religion">Vallási</string>
+    <string name="helpline_category_senior">Idősek</string>
+    <string name="helpline_category_sexual_abuse">Szexuális visszaélés</string>
+    <string name="helpline_category_sexual_assault">Szexuális erőszak</string>
+    <string name="helpline_category_sexual_rights">Szexuális jogok</string>
+    <string name="helpline_category_sexuality">Szexualitás</string>
+    <string name="helpline_category_soldiers">Katonák</string>
+    <string name="helpline_category_suicide">Öngyilkosság-megelőzés</string>
+    <string name="helpline_category_trans">Transzneműek</string>
+    <string name="helpline_category_veterans">Veteránok</string>
+    <string name="helpline_category_violence">Erőszak</string>
+    <string name="helpline_category_war">Háború</string>
+    <string name="helpline_category_women">Nők</string>
+    <string name="helpline_category_youth">Fiatalok</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-hu/strings.xml b/java/com/android/dialer/helplines/res/values-hu/strings.xml
new file mode 100644
index 0000000..79adc61
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-hu/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Segélyvonalak</string>
+    <string name="helplines_loading">Betöltés\u2026</string>
+    <string name="helplines_empty">Nem található segélyvonal.\nHelyezzen be egy SIM-kártyát és próbálja újra</string>
+    <string name="helplines_help">Súgó</string>
+    <string name="helplines_help_title">Az alábbiakkal biztonságos a hívás</string>
+    <string name="helplines_help_message">Ezen számok egyike sem jelenik meg a hívási előzményekben.\nTovábbi információért bármelyik elemre rákattinthat</string>
+    <string name="helplines_help_more_message">A segélyvonalak listája tartalmaz olyan információkat, amiket a közreműködők manuálisan frissítenek. Ha hiányzó vagy helytelen információkkal találkozik, értesítsen minket a <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g> webcímen</string>
+    <string name="helpline_button_more">Továbbiak</string>
+    <string name="unknown_helpline_name">Ismeretlen szervezet</string>
+    <string name="helpline_name">Név</string>
+    <string name="helpline_org">Szervezet</string>
+    <string name="helpline_categories">Kategóriák</string>
+    <string name="helpline_number">Szám</string>
+    <string name="helpline_website">Weboldal</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g>(<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Krí (kanadai)</string>
+    <string name="helpline_language_english">Angol</string>
+    <string name="helpline_language_french">Francia</string>
+    <string name="helpline_language_german">Német</string>
+    <string name="helpline_language_inuktitut">Inuktitut (kanadai)</string>
+    <string name="helpline_language_ojibway">Ojibway (kanadai)</string>
+    <string name="helpline_language_turkish">Török</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-in/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-in/helpline_categories.xml
new file mode 100644
index 0000000..99a3b53
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-in/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Penyalahgunaan</string>
+    <string name="helpline_category_acohol">Alkohol</string>
+    <string name="helpline_category_addiction">Adiksi</string>
+    <string name="helpline_category_adolescents">Remaja</string>
+    <string name="helpline_category_adults">Dewasa</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Kelahiran</string>
+    <string name="helpline_category_bullying">Perundungan</string>
+    <string name="helpline_category_children">Anak-anak</string>
+    <string name="helpline_category_crime">Kriminal</string>
+    <string name="helpline_category_crime_victims">Korban kejahatan</string>
+    <string name="helpline_category_corruption">Korupsi</string>
+    <string name="helpline_category_discrimination">Diskriminasi</string>
+    <string name="helpline_category_domestic_violence">Kekerasan domestik</string>
+    <string name="helpline_category_drugs">Obat-obatan</string>
+    <string name="helpline_category_emotional_support">Dukungan emosional</string>
+    <string name="helpline_category_family">Keluarga</string>
+    <string name="helpline_category_gambling">Judi</string>
+    <string name="helpline_category_gender">Jenis kelamin</string>
+    <string name="helpline_category_generic">Umum</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Hak asasi manusia</string>
+    <string name="helpline_category_human_trafficking">Penyelundupan manusia</string>
+    <string name="helpline_category_immigration">Imigrasi</string>
+    <string name="helpline_category_legal_aid">Bantuan hukum</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Laki-laki</string>
+    <string name="helpline_category_mental_health">Kesehatan mental</string>
+    <string name="helpline_category_missing_children">Kehilangan anak</string>
+    <string name="helpline_category_mothers">Ibu</string>
+    <string name="helpline_category_muslim">Muslim</string>
+    <string name="helpline_category_parents">Orang tua</string>
+    <string name="helpline_category_pregnancy">Kehamilan</string>
+    <string name="helpline_category_psychological">Psikologi</string>
+    <string name="helpline_category_religion">Agama</string>
+    <string name="helpline_category_senior">Senior</string>
+    <string name="helpline_category_sexual_abuse">Pelecehan seksual</string>
+    <string name="helpline_category_sexual_assault">Kekerasan seksual</string>
+    <string name="helpline_category_sexual_rights">Hak seksual</string>
+    <string name="helpline_category_sexuality">Seksualitas</string>
+    <string name="helpline_category_soldiers">Prajurit</string>
+    <string name="helpline_category_suicide">Pencegahan bunuh diri</string>
+    <string name="helpline_category_trans">Transgender</string>
+    <string name="helpline_category_veterans">Veteran</string>
+    <string name="helpline_category_violence">Kekerasan</string>
+    <string name="helpline_category_war">Perang</string>
+    <string name="helpline_category_women">Perempuan</string>
+    <string name="helpline_category_youth">Pemuda</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-in/strings.xml b/java/com/android/dialer/helplines/res/values-in/strings.xml
new file mode 100644
index 0000000..13a61d0
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-in/strings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Saluran bantuan</string>
+    <string name="helplines_loading">Memuat\u2026</string>
+    <string name="helplines_empty">Tidak ada saluran bantuan yang ditemukan.\nMasukkan kartu SIM dan coba lagi</string>
+    <string name="helplines_help">Bantuan</string>
+    <string name="helplines_help_title">Ini aman untuk dihubungi</string>
+    <string name="helplines_help_more_message">Daftar saluran bantuan berisi informasi yang diperbarui secara manual oleh para kontributor. Jika Anda menemukan informasi yang hilang atau salah, jangan ragu untuk menghubungi kami di <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Lainnya</string>
+    <string name="unknown_helpline_name">Organisasi tidak dikenal</string>
+    <string name="helpline_name">Nama</string>
+    <string name="helpline_org">Organisasi</string>
+    <string name="helpline_categories">Kategori</string>
+    <string name="helpline_number">Nomor</string>
+    <string name="helpline_website">Situs web</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Kree</string>
+    <string name="helpline_language_english">Inggris</string>
+    <string name="helpline_language_french">Prancis</string>
+    <string name="helpline_language_german">Jerman</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turki</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-is/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-is/helpline_categories.xml
new file mode 100644
index 0000000..2504ca8
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-is/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Misnotkun</string>
+    <string name="helpline_category_acohol">Áfengi</string>
+    <string name="helpline_category_addiction">Fíkn</string>
+    <string name="helpline_category_adolescents">Unglingar</string>
+    <string name="helpline_category_adults">Fullorðnir</string>
+    <string name="helpline_category_aids">Alnæmi</string>
+    <string name="helpline_category_birth">Fæðingar</string>
+    <string name="helpline_category_bullying">Einelti</string>
+    <string name="helpline_category_children">Börn</string>
+    <string name="helpline_category_crime">Gæpir</string>
+    <string name="helpline_category_crime_victims">Þolendur glæpa</string>
+    <string name="helpline_category_corruption">Spilling</string>
+    <string name="helpline_category_discrimination">Mismunun</string>
+    <string name="helpline_category_domestic_violence">Heimilisofbeldi</string>
+    <string name="helpline_category_drugs">Eiturlyf</string>
+    <string name="helpline_category_emotional_support">Tilfinningalegur stuðningur</string>
+    <string name="helpline_category_family">Fjölskylda</string>
+    <string name="helpline_category_gambling">Fjárhættuspil</string>
+    <string name="helpline_category_gender">Kyn</string>
+    <string name="helpline_category_generic">Almennt</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Mannréttindi</string>
+    <string name="helpline_category_human_trafficking">Mansal</string>
+    <string name="helpline_category_immigration">Innflytjendur</string>
+    <string name="helpline_category_legal_aid">Lögfræðiaðstoð</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Karlar</string>
+    <string name="helpline_category_mental_health">Geðheilsa</string>
+    <string name="helpline_category_missing_children">Horfin börn</string>
+    <string name="helpline_category_mothers">Mæður</string>
+    <string name="helpline_category_muslim">Múslímar</string>
+    <string name="helpline_category_parents">Foreldrar</string>
+    <string name="helpline_category_pregnancy">Meðganga</string>
+    <string name="helpline_category_psychological">Sálfræðiþjónusta</string>
+    <string name="helpline_category_religion">Trúarbrögð</string>
+    <string name="helpline_category_senior">Aldraðir</string>
+    <string name="helpline_category_sexual_abuse">Kynferðisleg misnotkun</string>
+    <string name="helpline_category_sexual_assault">Kynferðislegt ofbeldi</string>
+    <string name="helpline_category_sexual_rights">Kynbundin réttindi</string>
+    <string name="helpline_category_sexuality">Kynhneigð</string>
+    <string name="helpline_category_soldiers">Hermenn</string>
+    <string name="helpline_category_suicide">Sjálfsvígsforvarnir</string>
+    <string name="helpline_category_trans">Kyngerving (trans)</string>
+    <string name="helpline_category_veterans">Uppgjafahermenn</string>
+    <string name="helpline_category_violence">Ofbeldi</string>
+    <string name="helpline_category_war">Stríð</string>
+    <string name="helpline_category_women">Konur</string>
+    <string name="helpline_category_youth">Ungmenni</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-is/strings.xml b/java/com/android/dialer/helplines/res/values-is/strings.xml
new file mode 100644
index 0000000..3f509e5
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-is/strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Hjálparlínur</string>
+    <string name="helplines_loading">Hleður\u2026</string>
+    <string name="helplines_empty">Engar hjálparlínur fundust.\nSettu inn SIM-kort og prófaðu aftur</string>
+    <string name="helplines_help">Hjálp</string>
+    <string name="helplines_help_title">Það er öruggt að hringja í þessi númer</string>
+    <string name="helpline_button_more">Meira</string>
+    <string name="unknown_helpline_name">Óþekktur aðili</string>
+    <string name="helpline_name">Heiti</string>
+    <string name="helpline_org">Stofnun/félag</string>
+    <string name="helpline_categories">Flokkar</string>
+    <string name="helpline_number">Númer</string>
+    <string name="helpline_website">Vefsvæði</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Enska</string>
+    <string name="helpline_language_french">Franska</string>
+    <string name="helpline_language_german">Þýska</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Tyrkneska</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-it/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-it/helpline_categories.xml
new file mode 100644
index 0000000..1fe56be
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-it/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abuso</string>
+    <string name="helpline_category_acohol">Alcool</string>
+    <string name="helpline_category_addiction">Dipendenza</string>
+    <string name="helpline_category_adolescents">Adolescenti</string>
+    <string name="helpline_category_adults">Adulti</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Nascita</string>
+    <string name="helpline_category_bullying">Bullismo</string>
+    <string name="helpline_category_children">Bambini</string>
+    <string name="helpline_category_crime">Crimine</string>
+    <string name="helpline_category_crime_victims">Vittime di crimini</string>
+    <string name="helpline_category_corruption">Corruzione</string>
+    <string name="helpline_category_discrimination">Discriminazione</string>
+    <string name="helpline_category_domestic_violence">Violenza domestica</string>
+    <string name="helpline_category_drugs">Droghe</string>
+    <string name="helpline_category_emotional_support">Supporto emotivo</string>
+    <string name="helpline_category_family">Famiglia</string>
+    <string name="helpline_category_gambling">Gioco d\'azzardo</string>
+    <string name="helpline_category_gender">Genere</string>
+    <string name="helpline_category_generic">Generico</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Diritti umani</string>
+    <string name="helpline_category_human_trafficking">Tratta di esseri umani</string>
+    <string name="helpline_category_immigration">Immigrazione</string>
+    <string name="helpline_category_legal_aid">Assistenza legale</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Uomini</string>
+    <string name="helpline_category_mental_health">Salute mentale</string>
+    <string name="helpline_category_missing_children">Bambini scomparsi</string>
+    <string name="helpline_category_mothers">Madri</string>
+    <string name="helpline_category_muslim">Musulmano</string>
+    <string name="helpline_category_parents">Genitori</string>
+    <string name="helpline_category_pregnancy">Gravidanza</string>
+    <string name="helpline_category_psychological">Psicologico</string>
+    <string name="helpline_category_religion">Religione</string>
+    <string name="helpline_category_senior">Anziani</string>
+    <string name="helpline_category_sexual_abuse">Abuso sessuale</string>
+    <string name="helpline_category_sexual_assault">Aggressione sessuale</string>
+    <string name="helpline_category_sexual_rights">Diritti sessuali</string>
+    <string name="helpline_category_sexuality">Sessualità</string>
+    <string name="helpline_category_soldiers">Soldati</string>
+    <string name="helpline_category_suicide">Prevenzione dei suicidi</string>
+    <string name="helpline_category_trans">Transessuale</string>
+    <string name="helpline_category_veterans">Reduci</string>
+    <string name="helpline_category_violence">Violenza</string>
+    <string name="helpline_category_war">Guerra</string>
+    <string name="helpline_category_women">Donne</string>
+    <string name="helpline_category_youth">Gioventù</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-it/strings.xml b/java/com/android/dialer/helplines/res/values-it/strings.xml
new file mode 100644
index 0000000..30f6db3
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-it/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Telefono amico</string>
+    <string name="helplines_loading">Caricamento\u2026</string>
+    <string name="helplines_empty">Nessun numero amico disponibile.\nInserisci una scheda SIM e riprova</string>
+    <string name="helplines_help">Aiuto</string>
+    <string name="helplines_help_title">Questi numeri sono sicuri da chiamare</string>
+    <string name="helplines_help_message">Nessuno di questi numeri appare nella cronologia delle chiamate.\nTocca qualsiasi elemento per ottenere ulteriori informazioni</string>
+    <string name="helplines_help_more_message">L\'elenco numeri amico è riempito dalle informazioni che vengono aggiornate manualmente dai contributori. Se si incontrano informazioni mancanti o sbagliate, non esitate a contattarci su <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Altro</string>
+    <string name="unknown_helpline_name">Organizzazione sconosciuta</string>
+    <string name="helpline_name">Nome</string>
+    <string name="helpline_org">Organizzazione</string>
+    <string name="helpline_categories">Categorie</string>
+    <string name="helpline_number">Numero</string>
+    <string name="helpline_website">Sito web</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Inglese</string>
+    <string name="helpline_language_french">Francese</string>
+    <string name="helpline_language_german">Tedesco</string>
+    <string name="helpline_language_inuktitut">Inuit</string>
+    <string name="helpline_language_ojibway">Ojibwe</string>
+    <string name="helpline_language_turkish">Turco</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ja/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-ja/helpline_categories.xml
new file mode 100644
index 0000000..25a8a42
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ja/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">不正</string>
+    <string name="helpline_category_acohol">アルコール</string>
+    <string name="helpline_category_addiction">中毒</string>
+    <string name="helpline_category_adolescents">青少年</string>
+    <string name="helpline_category_adults">成人</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">誕生</string>
+    <string name="helpline_category_bullying">いじめ</string>
+    <string name="helpline_category_children">子供</string>
+    <string name="helpline_category_crime">犯罪</string>
+    <string name="helpline_category_crime_victims">犯罪難民</string>
+    <string name="helpline_category_corruption">腐敗</string>
+    <string name="helpline_category_discrimination">差別</string>
+    <string name="helpline_category_domestic_violence">家庭内暴力</string>
+    <string name="helpline_category_drugs">薬物</string>
+    <string name="helpline_category_emotional_support">精神支援</string>
+    <string name="helpline_category_family">家族</string>
+    <string name="helpline_category_gambling">ギャンブル</string>
+    <string name="helpline_category_gender">性別</string>
+    <string name="helpline_category_generic">ジェネリック</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">人権</string>
+    <string name="helpline_category_human_trafficking">人身売買</string>
+    <string name="helpline_category_immigration">移民</string>
+    <string name="helpline_category_legal_aid">法的支援</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">男性</string>
+    <string name="helpline_category_mental_health">メンタルヘルス</string>
+    <string name="helpline_category_missing_children">子供の行方不明</string>
+    <string name="helpline_category_mothers">母親</string>
+    <string name="helpline_category_muslim">イスラム</string>
+    <string name="helpline_category_parents">親</string>
+    <string name="helpline_category_pregnancy">妊娠</string>
+    <string name="helpline_category_psychological">心理的</string>
+    <string name="helpline_category_religion">宗教</string>
+    <string name="helpline_category_senior">高齢者</string>
+    <string name="helpline_category_sexual_abuse">性的虐待</string>
+    <string name="helpline_category_sexual_assault">性的暴行</string>
+    <string name="helpline_category_sexual_rights">性的権利</string>
+    <string name="helpline_category_sexuality">性的</string>
+    <string name="helpline_category_soldiers">兵士</string>
+    <string name="helpline_category_suicide">自殺予防</string>
+    <string name="helpline_category_trans">トランスジェンダー</string>
+    <string name="helpline_category_veterans">退役軍人</string>
+    <string name="helpline_category_violence">暴力</string>
+    <string name="helpline_category_war">戦争</string>
+    <string name="helpline_category_women">女性</string>
+    <string name="helpline_category_youth">青年</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ja/strings.xml b/java/com/android/dialer/helplines/res/values-ja/strings.xml
new file mode 100644
index 0000000..713eaf1
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ja/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">ヘルプライン</string>
+    <string name="helplines_loading">読み込み中\u2026</string>
+    <string name="helplines_empty">ヘルプラインが見つかりませんでした。\nSIM カードを挿入して再度お試し下さい。</string>
+    <string name="helplines_help">ヘルプ</string>
+    <string name="helplines_help_title">これらは安全に通話できます</string>
+    <string name="helplines_help_message">これらの番号は通話履歴に表示されません。\n詳細は任意の項目をクリックして下さい。</string>
+    <string name="helplines_help_more_message">ヘルプラインのリストは、貢献者が手動で更新しています。 不足・間違っている情報がある場合は、お気軽にお問い合わせください： <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">その他</string>
+    <string name="unknown_helpline_name">不明な組織</string>
+    <string name="helpline_name">名前</string>
+    <string name="helpline_org">組織</string>
+    <string name="helpline_categories">カテゴリー</string>
+    <string name="helpline_number">番号</string>
+    <string name="helpline_website">ウェブサイト</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">クリー語</string>
+    <string name="helpline_language_english">英語</string>
+    <string name="helpline_language_french">フランス語</string>
+    <string name="helpline_language_german">ドイツ語</string>
+    <string name="helpline_language_inuktitut">イヌクティトゥット語</string>
+    <string name="helpline_language_ojibway">オジブウェー語</string>
+    <string name="helpline_language_turkish">トルコ語</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ka/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-ka/helpline_categories.xml
new file mode 100644
index 0000000..dca2bc8
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ka/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">ძალადობა</string>
+    <string name="helpline_category_acohol">სასმელდამოკიდებულება</string>
+    <string name="helpline_category_addiction">წამალდამოკიდებულება</string>
+    <string name="helpline_category_adolescents">მოზარდები</string>
+    <string name="helpline_category_adults">ზრდასრულები</string>
+    <string name="helpline_category_aids">ᲨᲘᲓᲡᲘ</string>
+    <string name="helpline_category_birth">დაბადება</string>
+    <string name="helpline_category_bullying">ჩაგვრა</string>
+    <string name="helpline_category_children">ბავშვები</string>
+    <string name="helpline_category_crime">დანაშაული</string>
+    <string name="helpline_category_crime_victims">დანაშაულის მსხვერპლნი</string>
+    <string name="helpline_category_corruption">მექრთამეობა</string>
+    <string name="helpline_category_discrimination">შერჩევითი შეუმწყნარებლობა</string>
+    <string name="helpline_category_domestic_violence">ოჯახური ძალადობა</string>
+    <string name="helpline_category_drugs">წამლები</string>
+    <string name="helpline_category_emotional_support">სულიერი მხარდაჭერა</string>
+    <string name="helpline_category_family">ოჯახი</string>
+    <string name="helpline_category_gambling">თამაშდამოკიდებულება</string>
+    <string name="helpline_category_gender">სქესი</string>
+    <string name="helpline_category_generic">ზოგადი</string>
+    <string name="helpline_category_hiv">ᲐᲘᲕ-ᲘᲜᲤᲔᲥᲪᲘᲐ</string>
+    <string name="helpline_category_human_rights">ადამიანის უფლებები</string>
+    <string name="helpline_category_human_trafficking">ადამიანებით ვაჭრობა</string>
+    <string name="helpline_category_immigration">ჩამოსახლება</string>
+    <string name="helpline_category_legal_aid">სამართლებრივი დახმარება</string>
+    <string name="helpline_category_lgbtq">ᲚᲒᲑᲢᲥ+</string>
+    <string name="helpline_category_men">მამაკაცები</string>
+    <string name="helpline_category_mental_health">გონებრივი დარღვევები</string>
+    <string name="helpline_category_missing_children">დაკარგული ბავშვები</string>
+    <string name="helpline_category_mothers">დედები</string>
+    <string name="helpline_category_muslim">მუსლიმანები</string>
+    <string name="helpline_category_parents">მშობლები</string>
+    <string name="helpline_category_pregnancy">ორსულობა</string>
+    <string name="helpline_category_psychological">ფსიქოლოგიური</string>
+    <string name="helpline_category_religion">სარწმუნოება</string>
+    <string name="helpline_category_senior">ასაკოვნები</string>
+    <string name="helpline_category_sexual_abuse">სქესობრივი ძალადობა</string>
+    <string name="helpline_category_sexual_assault">სქესობრივი ზეწოლა</string>
+    <string name="helpline_category_sexual_rights">სქესობრივი უფლებები</string>
+    <string name="helpline_category_sexuality">სქესობრიობა</string>
+    <string name="helpline_category_soldiers">ჯარისკაცები</string>
+    <string name="helpline_category_suicide">თვითმკვლელობის აღკვეთა</string>
+    <string name="helpline_category_trans">ტრანსგენდერი</string>
+    <string name="helpline_category_veterans">ყოფილი სამხედრო</string>
+    <string name="helpline_category_violence">ძალმომრეობა</string>
+    <string name="helpline_category_war">ომი</string>
+    <string name="helpline_category_women">ქალები</string>
+    <string name="helpline_category_youth">ახალგაზრდობა</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ka/strings.xml b/java/com/android/dialer/helplines/res/values-ka/strings.xml
new file mode 100644
index 0000000..e4f5cca
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ka/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">ცხელი ხაზი</string>
+    <string name="helplines_loading">იტვირთება\u2026</string>
+    <string name="helplines_empty">ცხელი ხაზები არ მოიძებნა.\nჩადეთ SIM-ბარათი და კვლავ სცადეთ</string>
+    <string name="helplines_help">დახმარება</string>
+    <string name="helplines_help_title">უსაფრთხოა დასარეკად</string>
+    <string name="helplines_help_message">არცერთი ეს ნომერი არ გამოჩნდება ზარების ისტორიაში\nშეგიძლიათ დაწკაპოთ თითოეულზე ვრცლად გასაცნობად</string>
+    <string name="helplines_help_more_message">ცხელი ხაზების შესახებ მონაცემები გროვდება მოხალისეების დახმარებით. თუ წააწყდით არასრულ ან არასწორ ინფორმაციას, გთხოვთ, შეგვეხმიანოთ მისამართზე <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">სხვა</string>
+    <string name="unknown_helpline_name">უცნობი დაწესებულება</string>
+    <string name="helpline_name">სახელი</string>
+    <string name="helpline_org">დაწესებულება</string>
+    <string name="helpline_categories">ჯგუფები</string>
+    <string name="helpline_number">ნომერი</string>
+    <string name="helpline_website">ვებსაიტი</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">კრი</string>
+    <string name="helpline_language_english">ინგლისური</string>
+    <string name="helpline_language_french">ფრანგული</string>
+    <string name="helpline_language_german">გერმანული</string>
+    <string name="helpline_language_inuktitut">ინუკტიტუტი</string>
+    <string name="helpline_language_ojibway">ოჯიბვე</string>
+    <string name="helpline_language_turkish">თურქული</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-kab-rDZ/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-kab-rDZ/helpline_categories.xml
new file mode 100644
index 0000000..e6a3cf0
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-kab-rDZ/helpline_categories.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Yir aseqdec</string>
+    <string name="helpline_category_family">Tawacult</string>
+    <string name="helpline_category_men">Argaz</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-kab-rDZ/strings.xml b/java/com/android/dialer/helplines/res/values-kab-rDZ/strings.xml
new file mode 100644
index 0000000..acfa675
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-kab-rDZ/strings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_help">Tallelt</string>
+    <string name="helpline_button_more">Ugar</string>
+    <string name="helpline_name">Isem</string>
+    <string name="helpline_org">Tuddsa</string>
+    <string name="helpline_categories">Taggayin</string>
+    <string name="helpline_number">Uṭṭun</string>
+    <string name="helpline_website">Asmel Web</string>
+    <string name="helpline_language_cree">Takrikt</string>
+    <string name="helpline_language_english">Tagnizit</string>
+    <string name="helpline_language_french">Tafṛansist</string>
+    <string name="helpline_language_german">Talmanit</string>
+    <string name="helpline_language_inuktitut">Tinuktitut</string>
+    <string name="helpline_language_turkish">Taṭurkit</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ko/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-ko/helpline_categories.xml
new file mode 100644
index 0000000..03fe943
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ko/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">악용</string>
+    <string name="helpline_category_acohol">알코올</string>
+    <string name="helpline_category_addiction">중독</string>
+    <string name="helpline_category_adolescents">청소년</string>
+    <string name="helpline_category_adults">성인</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">출산</string>
+    <string name="helpline_category_bullying">따돌림</string>
+    <string name="helpline_category_children">어린이</string>
+    <string name="helpline_category_crime">범죄</string>
+    <string name="helpline_category_crime_victims">범죄피해자</string>
+    <string name="helpline_category_corruption">부패</string>
+    <string name="helpline_category_discrimination">차별</string>
+    <string name="helpline_category_domestic_violence">가정폭력</string>
+    <string name="helpline_category_drugs">약물</string>
+    <string name="helpline_category_emotional_support">정서적 지원</string>
+    <string name="helpline_category_family">가족</string>
+    <string name="helpline_category_gambling">도박</string>
+    <string name="helpline_category_gender">젠더</string>
+    <string name="helpline_category_generic">일반</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">인권</string>
+    <string name="helpline_category_human_trafficking">인신매매</string>
+    <string name="helpline_category_immigration">이민</string>
+    <string name="helpline_category_legal_aid">법률구조</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">남성</string>
+    <string name="helpline_category_mental_health">정신 건강</string>
+    <string name="helpline_category_missing_children">미아</string>
+    <string name="helpline_category_mothers">어머니</string>
+    <string name="helpline_category_muslim">무슬림</string>
+    <string name="helpline_category_parents">부모</string>
+    <string name="helpline_category_pregnancy">임신</string>
+    <string name="helpline_category_psychological">심리</string>
+    <string name="helpline_category_religion">종교</string>
+    <string name="helpline_category_senior">노년</string>
+    <string name="helpline_category_sexual_abuse">성적 학대</string>
+    <string name="helpline_category_sexual_assault">성폭력</string>
+    <string name="helpline_category_sexual_rights">성적 권리</string>
+    <string name="helpline_category_sexuality">성성향</string>
+    <string name="helpline_category_soldiers">군인</string>
+    <string name="helpline_category_suicide">자살 예방</string>
+    <string name="helpline_category_trans">트랜스젠더</string>
+    <string name="helpline_category_veterans">베테랑</string>
+    <string name="helpline_category_violence">폭력</string>
+    <string name="helpline_category_war">전쟁</string>
+    <string name="helpline_category_women">여성</string>
+    <string name="helpline_category_youth">청소년</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ko/strings.xml b/java/com/android/dialer/helplines/res/values-ko/strings.xml
new file mode 100644
index 0000000..06dd37f
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ko/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">헬프라인</string>
+    <string name="helplines_loading">불러오는 중\u2026</string>
+    <string name="helplines_empty">헬프라인을 찾을 수 없습니다.\nSIM 카드를 삽입하고 다시 시도해 주세요.</string>
+    <string name="helplines_help">도움말</string>
+    <string name="helplines_help_title">이 전화번호들은 안전합니다</string>
+    <string name="helplines_help_message">헬프라인 전화번호는 통화 기록에 남지 않습니다.\n항목을 누르면 자세한 정보를 볼 수 있습니다.</string>
+    <string name="helplines_help_more_message">헬프라인 목록은 기여자들이 직접 업데이트한 정보입니다. 누락되거나 잘못된 정보가 있으면 <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g> 에 보고해 주세요.</string>
+    <string name="helpline_button_more">더 보기</string>
+    <string name="unknown_helpline_name">알 수 없는 조직</string>
+    <string name="helpline_name">이름</string>
+    <string name="helpline_org">조직</string>
+    <string name="helpline_categories">카테고리</string>
+    <string name="helpline_number">전화번호</string>
+    <string name="helpline_website">웹 사이트</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">크리어</string>
+    <string name="helpline_language_english">영어</string>
+    <string name="helpline_language_french">프랑스어</string>
+    <string name="helpline_language_german">독일어</string>
+    <string name="helpline_language_inuktitut">이누이트어</string>
+    <string name="helpline_language_ojibway">오지브와어</string>
+    <string name="helpline_language_turkish">터키어</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-nl/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-nl/helpline_categories.xml
new file mode 100644
index 0000000..df3e404
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-nl/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Misbruik</string>
+    <string name="helpline_category_acohol">Alcohol</string>
+    <string name="helpline_category_addiction">Verslaving</string>
+    <string name="helpline_category_adolescents">Adolescenten</string>
+    <string name="helpline_category_adults">Volwassenen</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Geboorte</string>
+    <string name="helpline_category_bullying">Pesterijen</string>
+    <string name="helpline_category_children">Kinderen</string>
+    <string name="helpline_category_crime">Misdaad</string>
+    <string name="helpline_category_crime_victims">Misdaadslachtoffers</string>
+    <string name="helpline_category_corruption">Corruptie</string>
+    <string name="helpline_category_discrimination">Discriminatie</string>
+    <string name="helpline_category_domestic_violence">Huiselijk geweld</string>
+    <string name="helpline_category_drugs">Medicijnen</string>
+    <string name="helpline_category_emotional_support">Emotionele ondersteuning</string>
+    <string name="helpline_category_family">Familie</string>
+    <string name="helpline_category_gambling">Gokken</string>
+    <string name="helpline_category_gender">Gender</string>
+    <string name="helpline_category_generic">Algemeen</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Mensenrechten</string>
+    <string name="helpline_category_human_trafficking">Mensenhandel</string>
+    <string name="helpline_category_immigration">Immigratie</string>
+    <string name="helpline_category_legal_aid">Wettelijke steun</string>
+    <string name="helpline_category_lgbtq">LHBTQ+</string>
+    <string name="helpline_category_men">Mannen</string>
+    <string name="helpline_category_mental_health">Geestelijke gezondheid</string>
+    <string name="helpline_category_missing_children">Vermiste kinderen</string>
+    <string name="helpline_category_mothers">Moeders</string>
+    <string name="helpline_category_muslim">Moslim</string>
+    <string name="helpline_category_parents">Ouders</string>
+    <string name="helpline_category_pregnancy">Zwangerschap</string>
+    <string name="helpline_category_psychological">Psygologisch</string>
+    <string name="helpline_category_religion">Religie</string>
+    <string name="helpline_category_senior">Ouderen</string>
+    <string name="helpline_category_sexual_abuse">Seksueel misbruik</string>
+    <string name="helpline_category_sexual_assault">Aanranding</string>
+    <string name="helpline_category_sexual_rights">Seksuele rechten</string>
+    <string name="helpline_category_sexuality">Sexualiteit</string>
+    <string name="helpline_category_soldiers">Soldaten</string>
+    <string name="helpline_category_suicide">Zelfmoordpreventie</string>
+    <string name="helpline_category_trans">Transgender</string>
+    <string name="helpline_category_veterans">Veteranen</string>
+    <string name="helpline_category_violence">Agressie</string>
+    <string name="helpline_category_war">Oorlog</string>
+    <string name="helpline_category_women">Vrouwen</string>
+    <string name="helpline_category_youth">Jeugd</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-nl/strings.xml b/java/com/android/dialer/helplines/res/values-nl/strings.xml
new file mode 100644
index 0000000..a01767c
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-nl/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Hulplijnen</string>
+    <string name="helplines_loading">Aan het laden\u2026</string>
+    <string name="helplines_empty">Geen hulplijnen gevonden. \nPlaats een simkaart en probeer het opnieuw</string>
+    <string name="helplines_help">Help</string>
+    <string name="helplines_help_title">Deze zijn veilig op te bellen</string>
+    <string name="helplines_help_message">Geen van deze nummers wordt weergegeven in je oproepgeschiedenis. \nU kunt op elk item klikken voor meer informatie</string>
+    <string name="helplines_help_more_message">De lijst met hulplijnen is gevuld met informatie die handmatig wordt bijgewerkt door mensen die bijdragen. Als je ontbrekende of verkeerde informatie tegenkomt, neem dan gerust contact met ons op via <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Meer</string>
+    <string name="unknown_helpline_name">Onbekende organisatie</string>
+    <string name="helpline_name">Naam</string>
+    <string name="helpline_org">Organisatie</string>
+    <string name="helpline_categories">Categorieën</string>
+    <string name="helpline_number">Nummer</string>
+    <string name="helpline_website">Website</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotionele Ondersteunings Helplijn">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Engels</string>
+    <string name="helpline_language_french">Frans</string>
+    <string name="helpline_language_german">Duits</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turks</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-pl/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-pl/helpline_categories.xml
new file mode 100644
index 0000000..0c1d488
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-pl/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Nadużycia</string>
+    <string name="helpline_category_acohol">Alkohol</string>
+    <string name="helpline_category_addiction">Uzależnienia</string>
+    <string name="helpline_category_adolescents">Nieletni</string>
+    <string name="helpline_category_adults">Dorośli</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Narodziny</string>
+    <string name="helpline_category_bullying">Nękanie</string>
+    <string name="helpline_category_children">Dzieci</string>
+    <string name="helpline_category_crime">Przestępstwa</string>
+    <string name="helpline_category_crime_victims">Ofiary przestępstw</string>
+    <string name="helpline_category_corruption">Korupcja</string>
+    <string name="helpline_category_discrimination">Dyskryminacja</string>
+    <string name="helpline_category_domestic_violence">Przemoc domowa</string>
+    <string name="helpline_category_drugs">Narkotyki</string>
+    <string name="helpline_category_emotional_support">Wsparcie emocjonalne</string>
+    <string name="helpline_category_family">Rodzina</string>
+    <string name="helpline_category_gambling">Hazard</string>
+    <string name="helpline_category_gender">Płeć</string>
+    <string name="helpline_category_generic">Ogólne</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Prawa człowieka</string>
+    <string name="helpline_category_human_trafficking">Handel ludźmi</string>
+    <string name="helpline_category_immigration">Imigracja</string>
+    <string name="helpline_category_legal_aid">Pomoc prawna</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Mężczyźni</string>
+    <string name="helpline_category_mental_health">Zdrowie psychiczne</string>
+    <string name="helpline_category_missing_children">Zaginione dzieci</string>
+    <string name="helpline_category_mothers">Matki</string>
+    <string name="helpline_category_muslim">Islam</string>
+    <string name="helpline_category_parents">Rodzice</string>
+    <string name="helpline_category_pregnancy">Ciąża</string>
+    <string name="helpline_category_psychological">Psychologiczne</string>
+    <string name="helpline_category_religion">Religia</string>
+    <string name="helpline_category_senior">Seniorzy</string>
+    <string name="helpline_category_sexual_abuse">Nadużycia seksualne</string>
+    <string name="helpline_category_sexual_assault">Napaść na tle seksualnym</string>
+    <string name="helpline_category_sexual_rights">Prawa seksualne</string>
+    <string name="helpline_category_sexuality">Seksualność</string>
+    <string name="helpline_category_soldiers">Żołnierze</string>
+    <string name="helpline_category_suicide">Zapobieganie samobójstwom</string>
+    <string name="helpline_category_trans">Transpłciowość</string>
+    <string name="helpline_category_veterans">Weterani</string>
+    <string name="helpline_category_violence">Przemoc</string>
+    <string name="helpline_category_war">Wojna</string>
+    <string name="helpline_category_women">Kobiety</string>
+    <string name="helpline_category_youth">Młodzież</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-pl/strings.xml b/java/com/android/dialer/helplines/res/values-pl/strings.xml
new file mode 100644
index 0000000..675b41b
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-pl/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Telefony zaufania</string>
+    <string name="helplines_loading">Wczytywanie\u2026</string>
+    <string name="helplines_empty">Nie znaleziono telefonów zaufania.\nWłóż kartę SIM i spróbuj ponownie</string>
+    <string name="helplines_help">Pomoc</string>
+    <string name="helplines_help_title">Na te numery można bezpiecznie dzwonić</string>
+    <string name="helplines_help_message">Żaden z tych numerów nie pojawia się w historii połączeń.\nMożesz dotknąć dowolnego elementu, aby uzyskać więcej informacji</string>
+    <string name="helplines_help_more_message">Lista telefonów zaufania jest wypełniona informacjami, które są aktualizowane ręcznie przez współtwórców. Jeśli napotkasz jakiekolwiek brakujące lub nieprawidłowe informacje, skontaktuj się z nami pod adresem <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Więcej</string>
+    <string name="unknown_helpline_name">Nieznana organizacja</string>
+    <string name="helpline_name">Nazwa</string>
+    <string name="helpline_org">Organizacja</string>
+    <string name="helpline_categories">Kategorie</string>
+    <string name="helpline_number">Numer</string>
+    <string name="helpline_website">Strona internetowa</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Angielski</string>
+    <string name="helpline_language_french">Francuski</string>
+    <string name="helpline_language_german">Niemiecki</string>
+    <string name="helpline_language_inuktitut">Eskimoski</string>
+    <string name="helpline_language_ojibway">Odżibwe</string>
+    <string name="helpline_language_turkish">Turecki</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-pt-rBR/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-pt-rBR/helpline_categories.xml
new file mode 100644
index 0000000..b7c7984
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-pt-rBR/helpline_categories.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abusos</string>
+    <string name="helpline_category_acohol">Álcool</string>
+    <string name="helpline_category_addiction">Vício</string>
+    <string name="helpline_category_adolescents">Adolescentes</string>
+    <string name="helpline_category_adults">Adultos</string>
+    <string name="helpline_category_aids">SIDA (AIDS)</string>
+    <string name="helpline_category_birth">Parto</string>
+    <string name="helpline_category_bullying">Bullying</string>
+    <string name="helpline_category_children">Crianças</string>
+    <string name="helpline_category_crime">Crimes</string>
+    <string name="helpline_category_crime_victims">Vítimas de crimes</string>
+    <string name="helpline_category_corruption">Corrupção</string>
+    <string name="helpline_category_discrimination">Discriminação</string>
+    <string name="helpline_category_domestic_violence">Violência doméstica</string>
+    <string name="helpline_category_drugs">Drogas</string>
+    <string name="helpline_category_emotional_support">Apoio emocional</string>
+    <string name="helpline_category_family">Família</string>
+    <string name="helpline_category_gambling">Apostas</string>
+    <string name="helpline_category_gender">Gênero</string>
+    <string name="helpline_category_generic">Geral</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Direitos humanos</string>
+    <string name="helpline_category_human_trafficking">Tráfico de pessoas</string>
+    <string name="helpline_category_immigration">Imigração</string>
+    <string name="helpline_category_legal_aid">Auxílio legal</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Homens</string>
+    <string name="helpline_category_mental_health">Saúde mental</string>
+    <string name="helpline_category_missing_children">Crianças desaparecidas</string>
+    <string name="helpline_category_mothers">Mães</string>
+    <string name="helpline_category_muslim">Muçulmano</string>
+    <string name="helpline_category_pregnancy">Gravidez</string>
+    <string name="helpline_category_psychological">Psicológico</string>
+    <string name="helpline_category_religion">Religião</string>
+    <string name="helpline_category_senior">Idosos</string>
+    <string name="helpline_category_sexual_abuse">Abuso sexual</string>
+    <string name="helpline_category_sexual_assault">Agressão sexual</string>
+    <string name="helpline_category_sexual_rights">Direitos sexuais</string>
+    <string name="helpline_category_sexuality">Sexualidade</string>
+    <string name="helpline_category_soldiers">Soldados</string>
+    <string name="helpline_category_suicide">Prevenção ao suicídio</string>
+    <string name="helpline_category_trans">Transgênero</string>
+    <string name="helpline_category_veterans">Veteranos de guerra</string>
+    <string name="helpline_category_violence">Violência</string>
+    <string name="helpline_category_war">Guerra</string>
+    <string name="helpline_category_women">Mulheres</string>
+    <string name="helpline_category_youth">Jovens</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-pt-rBR/strings.xml b/java/com/android/dialer/helplines/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000..b234c4a
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-pt-rBR/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Linhas de ajuda</string>
+    <string name="helplines_loading">Carregando\u2026</string>
+    <string name="helplines_help">Ajuda</string>
+    <string name="helplines_help_title">Estes números são seguros para chamar</string>
+    <string name="helplines_help_message">Nenhum destes números aparecerá no seu histórico de chamadas.\nVocê pode clicar em qualquer um deles para obter mais informações</string>
+    <string name="helpline_button_more">Mais</string>
+    <string name="unknown_helpline_name">Organização desconhecida</string>
+    <string name="helpline_name">Nome</string>
+    <string name="helpline_org">Organização</string>
+    <string name="helpline_categories">Categorias</string>
+    <string name="helpline_number">Número</string>
+    <string name="helpline_website">Site</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Linha de Ajuda Narcóticos Anônimos">%1$s</xliff:g> (<xliff:g id="helpline_county" example="BR">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Inglês</string>
+    <string name="helpline_language_french">Francês</string>
+    <string name="helpline_language_german">Alemão</string>
+    <string name="helpline_language_inuktitut">Inuctitute</string>
+    <string name="helpline_language_ojibway">Ojíbue</string>
+    <string name="helpline_language_turkish">Turco</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-pt-rPT/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-pt-rPT/helpline_categories.xml
new file mode 100644
index 0000000..3e5ebbe
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-pt-rPT/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Maus tratos</string>
+    <string name="helpline_category_acohol">Álcool</string>
+    <string name="helpline_category_addiction">Vício</string>
+    <string name="helpline_category_adolescents">Adolescentes</string>
+    <string name="helpline_category_adults">Adultos</string>
+    <string name="helpline_category_aids">SIDA</string>
+    <string name="helpline_category_birth">Parto</string>
+    <string name="helpline_category_bullying">Bullying</string>
+    <string name="helpline_category_children">Crianças</string>
+    <string name="helpline_category_crime">Crime</string>
+    <string name="helpline_category_crime_victims">Vítimas de crime</string>
+    <string name="helpline_category_corruption">Corrupção</string>
+    <string name="helpline_category_discrimination">Discriminação</string>
+    <string name="helpline_category_domestic_violence">Violência doméstica</string>
+    <string name="helpline_category_drugs">Drogas</string>
+    <string name="helpline_category_emotional_support">Apoio emocional</string>
+    <string name="helpline_category_family">Família</string>
+    <string name="helpline_category_gambling">Jogo</string>
+    <string name="helpline_category_gender">Género</string>
+    <string name="helpline_category_generic">Geral</string>
+    <string name="helpline_category_hiv">VIH</string>
+    <string name="helpline_category_human_rights">Direitos humanos</string>
+    <string name="helpline_category_human_trafficking">Tráfico de seres humanos</string>
+    <string name="helpline_category_immigration">Imigração</string>
+    <string name="helpline_category_legal_aid">Auxílio legal</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Homens</string>
+    <string name="helpline_category_mental_health">Saúde mental</string>
+    <string name="helpline_category_missing_children">Crianças desaparecidas</string>
+    <string name="helpline_category_mothers">Mães</string>
+    <string name="helpline_category_muslim">Muçulmano</string>
+    <string name="helpline_category_parents">Pais</string>
+    <string name="helpline_category_pregnancy">Gravidez</string>
+    <string name="helpline_category_psychological">Psicológico</string>
+    <string name="helpline_category_religion">Religião</string>
+    <string name="helpline_category_senior">Idosos</string>
+    <string name="helpline_category_sexual_abuse">Abuso sexual</string>
+    <string name="helpline_category_sexual_assault">Agressão sexual</string>
+    <string name="helpline_category_sexual_rights">Direitos sexuais</string>
+    <string name="helpline_category_sexuality">Sexualidade</string>
+    <string name="helpline_category_soldiers">Soldados</string>
+    <string name="helpline_category_suicide">Prevenção do suicídio</string>
+    <string name="helpline_category_trans">Transgénero</string>
+    <string name="helpline_category_veterans">Veteranos</string>
+    <string name="helpline_category_violence">Violência</string>
+    <string name="helpline_category_war">Guerra</string>
+    <string name="helpline_category_women">Mulheres</string>
+    <string name="helpline_category_youth">Juventude</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-pt-rPT/strings.xml b/java/com/android/dialer/helplines/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..e0a89dc
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-pt-rPT/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Linhas de apoio</string>
+    <string name="helplines_loading">A carregar\u2026</string>
+    <string name="helplines_empty">Nenhuma linha de apoio encontrada.\nInsira um cartão SIM e tente novamente</string>
+    <string name="helplines_help">Ajuda</string>
+    <string name="helplines_help_title">São seguras para ligar</string>
+    <string name="helplines_help_message">Nenhum destes números aparece no seu histórico de chamadas.\nPode clicar em qualquer item para obter mais informações</string>
+    <string name="helplines_help_more_message">A lista de linhas de ajuda é preenchida com informações que são atualizadas manualmente por colaboradores. Se encontrar qualquer informação errada ou em falta, não hesite em contactar-nos em <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Mais</string>
+    <string name="unknown_helpline_name">Organização desconhecida</string>
+    <string name="helpline_name">Nome</string>
+    <string name="helpline_org">Organização</string>
+    <string name="helpline_categories">Categorias</string>
+    <string name="helpline_number">Número</string>
+    <string name="helpline_website">Página da internet</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Linha de Apoio Emocional">%1$s</xliff:g> (<xliff:g id="helpline_county" example="PT">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Inglês</string>
+    <string name="helpline_language_french">Francês</string>
+    <string name="helpline_language_german">Alemão</string>
+    <string name="helpline_language_inuktitut">Inuctitute</string>
+    <string name="helpline_language_ojibway">Ojíbue</string>
+    <string name="helpline_language_turkish">Turco</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ro/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-ro/helpline_categories.xml
new file mode 100644
index 0000000..c8eee8f
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ro/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abuz</string>
+    <string name="helpline_category_acohol">Alcool</string>
+    <string name="helpline_category_addiction">Dependenţă</string>
+    <string name="helpline_category_adolescents">Adolescenţi</string>
+    <string name="helpline_category_adults">Adulți</string>
+    <string name="helpline_category_aids">SIDA</string>
+    <string name="helpline_category_birth">Naștere</string>
+    <string name="helpline_category_bullying">Intimidare</string>
+    <string name="helpline_category_children">Copii</string>
+    <string name="helpline_category_crime">Crimă</string>
+    <string name="helpline_category_crime_victims">Victime ale crimei</string>
+    <string name="helpline_category_corruption">Corupție</string>
+    <string name="helpline_category_discrimination">Discriminare</string>
+    <string name="helpline_category_domestic_violence">Violenţă domestică</string>
+    <string name="helpline_category_drugs">Droguri</string>
+    <string name="helpline_category_emotional_support">Suport emoțional</string>
+    <string name="helpline_category_family">Familie</string>
+    <string name="helpline_category_gambling">Jocuri de noroc</string>
+    <string name="helpline_category_gender">Gen</string>
+    <string name="helpline_category_generic">General</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Drepturile omului</string>
+    <string name="helpline_category_human_trafficking">Trafic de persoane</string>
+    <string name="helpline_category_immigration">Imigrare</string>
+    <string name="helpline_category_legal_aid">Asistență juridică</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Bărbați</string>
+    <string name="helpline_category_mental_health">Sănătate mintală</string>
+    <string name="helpline_category_missing_children">Copii dispăruți</string>
+    <string name="helpline_category_mothers">Mame</string>
+    <string name="helpline_category_muslim">Musulman</string>
+    <string name="helpline_category_parents">Părinți</string>
+    <string name="helpline_category_pregnancy">Sarcină</string>
+    <string name="helpline_category_psychological">Psihologic</string>
+    <string name="helpline_category_religion">Religie</string>
+    <string name="helpline_category_senior">Vârstnici</string>
+    <string name="helpline_category_sexual_abuse">Abuz sexual</string>
+    <string name="helpline_category_sexual_assault">Hărțuire sexuală</string>
+    <string name="helpline_category_sexual_rights">Drepturi sexuale</string>
+    <string name="helpline_category_sexuality">Sexualitate</string>
+    <string name="helpline_category_soldiers">Soldați</string>
+    <string name="helpline_category_suicide">Prevenirea sinuciderilor</string>
+    <string name="helpline_category_trans">Transgen</string>
+    <string name="helpline_category_veterans">Veterani</string>
+    <string name="helpline_category_violence">Violență</string>
+    <string name="helpline_category_war">Război</string>
+    <string name="helpline_category_women">Femei</string>
+    <string name="helpline_category_youth">Tineret</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ro/strings.xml b/java/com/android/dialer/helplines/res/values-ro/strings.xml
new file mode 100644
index 0000000..48d67e1
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ro/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Linii de asistență</string>
+    <string name="helplines_loading">Încărcare\u2026</string>
+    <string name="helplines_empty">Nu s-au găsit linii telefonice de asistență.\nIntroduceți un card SIM și încercați din nou</string>
+    <string name="helplines_help">Ajutor</string>
+    <string name="helplines_help_title">Acestea pot fi apelate în siguranță</string>
+    <string name="helplines_help_message">Niciunul dintre aceste numere nu apar în istoricul apelurilor.\nPuteţi da click pe orice element pentru mai multe informaţii</string>
+    <string name="helplines_help_more_message">Lista liniilor de asistență telefonică este completată cu informații care sunt actualizate manual de către contribuitori. Dacă întâmpinați informații lipsă sau greșite, vă rugăm să ne contactați la <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Mai multe</string>
+    <string name="unknown_helpline_name">Organizație necunoscută</string>
+    <string name="helpline_name">Nume</string>
+    <string name="helpline_org">Organizație</string>
+    <string name="helpline_categories">Categorii</string>
+    <string name="helpline_number">Număr</string>
+    <string name="helpline_website">Website</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Engleză</string>
+    <string name="helpline_language_french">Franceză</string>
+    <string name="helpline_language_german">Germană</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turcă</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ru/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-ru/helpline_categories.xml
new file mode 100644
index 0000000..9157df0
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ru/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Злоупотребление</string>
+    <string name="helpline_category_acohol">Алкоголь</string>
+    <string name="helpline_category_addiction">Наркозависимость</string>
+    <string name="helpline_category_adolescents">Подростки</string>
+    <string name="helpline_category_adults">Взрослые</string>
+    <string name="helpline_category_aids">СПИД</string>
+    <string name="helpline_category_birth">Рождение</string>
+    <string name="helpline_category_bullying">Травля</string>
+    <string name="helpline_category_children">Дети</string>
+    <string name="helpline_category_crime">Преступление</string>
+    <string name="helpline_category_crime_victims">Жертвы преступлений</string>
+    <string name="helpline_category_corruption">Коррупция</string>
+    <string name="helpline_category_discrimination">Дискриминация</string>
+    <string name="helpline_category_domestic_violence">Насилие в семье</string>
+    <string name="helpline_category_drugs">Наркотические средства</string>
+    <string name="helpline_category_emotional_support">Эмоциональная поддержка</string>
+    <string name="helpline_category_family">Семья</string>
+    <string name="helpline_category_gambling">Азартные игры</string>
+    <string name="helpline_category_gender">Гендер</string>
+    <string name="helpline_category_generic">Общий</string>
+    <string name="helpline_category_hiv">ВИЧ</string>
+    <string name="helpline_category_human_rights">Права человека</string>
+    <string name="helpline_category_human_trafficking">Торговля людьми</string>
+    <string name="helpline_category_immigration">Иммиграция</string>
+    <string name="helpline_category_legal_aid">Юридическая помощь</string>
+    <string name="helpline_category_lgbtq">ЛГБТК+</string>
+    <string name="helpline_category_men">Мужчины</string>
+    <string name="helpline_category_mental_health">Психическое здоровье</string>
+    <string name="helpline_category_missing_children">Пропавшие дети</string>
+    <string name="helpline_category_mothers">Материнство</string>
+    <string name="helpline_category_muslim">Мусульманство</string>
+    <string name="helpline_category_parents">Родители</string>
+    <string name="helpline_category_pregnancy">Беременность</string>
+    <string name="helpline_category_psychological">Психология</string>
+    <string name="helpline_category_religion">Религия</string>
+    <string name="helpline_category_senior">Пенсионеры</string>
+    <string name="helpline_category_sexual_abuse">Домогательство</string>
+    <string name="helpline_category_sexual_assault">Сексуальное насилие</string>
+    <string name="helpline_category_sexual_rights">Сексуальные права</string>
+    <string name="helpline_category_sexuality">Сексуальность</string>
+    <string name="helpline_category_soldiers">Военнослужащие</string>
+    <string name="helpline_category_suicide">Предотвращение самоубийств</string>
+    <string name="helpline_category_trans">Транссексуалы</string>
+    <string name="helpline_category_veterans">Ветераны</string>
+    <string name="helpline_category_violence">Насилие</string>
+    <string name="helpline_category_war">Война</string>
+    <string name="helpline_category_women">Женщины</string>
+    <string name="helpline_category_youth">Молодость</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-ru/strings.xml b/java/com/android/dialer/helplines/res/values-ru/strings.xml
new file mode 100644
index 0000000..04679b0
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-ru/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Телефоны доверия</string>
+    <string name="helplines_loading">Загрузка\u2026</string>
+    <string name="helplines_empty">Телефонов доверия не найдено.\nВставьте SIM-карту и повторите попытку</string>
+    <string name="helplines_help">Помощь</string>
+    <string name="helplines_help_title">Это безопасные звонки</string>
+    <string name="helplines_help_message">Ни один из этих номеров не появится в истории звонков.\nДля получения дополнительной информации вы можете нажать на любой элемент.</string>
+    <string name="helplines_help_more_message">Список телефонов доверия содержит информацию, которая обновляется контрибьюторами вручную. Если вы обнаружите недостающую или неверную информацию, пожалуйста, свяжитесь с нами через сайт <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Еще</string>
+    <string name="unknown_helpline_name">Неизвестная организация</string>
+    <string name="helpline_name">Название</string>
+    <string name="helpline_org">Организация</string>
+    <string name="helpline_categories">Категории</string>
+    <string name="helpline_number">Номер</string>
+    <string name="helpline_website">Веб-сайт</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Кри</string>
+    <string name="helpline_language_english">Английский</string>
+    <string name="helpline_language_french">Французский</string>
+    <string name="helpline_language_german">Немецкий</string>
+    <string name="helpline_language_inuktitut">Инуктитут</string>
+    <string name="helpline_language_ojibway">Оджибве</string>
+    <string name="helpline_language_turkish">Турецкий</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-sk/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-sk/helpline_categories.xml
new file mode 100644
index 0000000..ea1d6f9
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-sk/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Zneužívanie</string>
+    <string name="helpline_category_acohol">Alkohol</string>
+    <string name="helpline_category_addiction">Závislosť</string>
+    <string name="helpline_category_adolescents">Dospievajúci</string>
+    <string name="helpline_category_adults">Dospelí</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Narodenie</string>
+    <string name="helpline_category_bullying">Šikanovanie</string>
+    <string name="helpline_category_children">Deti</string>
+    <string name="helpline_category_crime">Zločin</string>
+    <string name="helpline_category_crime_victims">Obete zločinu</string>
+    <string name="helpline_category_corruption">Korupcia</string>
+    <string name="helpline_category_discrimination">Diskriminácia</string>
+    <string name="helpline_category_domestic_violence">Domáce násilie</string>
+    <string name="helpline_category_drugs">Drogy</string>
+    <string name="helpline_category_emotional_support">Emocionálna podpora</string>
+    <string name="helpline_category_family">Rodina</string>
+    <string name="helpline_category_gambling">Hazard</string>
+    <string name="helpline_category_gender">Pohlavie</string>
+    <string name="helpline_category_generic">Všeobecné</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Ľudské práva</string>
+    <string name="helpline_category_human_trafficking">Obchodovanie s ľuďmi</string>
+    <string name="helpline_category_immigration">Emigrácia</string>
+    <string name="helpline_category_legal_aid">Právna pomoc</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Muži</string>
+    <string name="helpline_category_mental_health">Duševné zdravie</string>
+    <string name="helpline_category_missing_children">Stratené deti</string>
+    <string name="helpline_category_mothers">Matky</string>
+    <string name="helpline_category_muslim">Moslimovia</string>
+    <string name="helpline_category_parents">Rodičia</string>
+    <string name="helpline_category_pregnancy">Tehotné</string>
+    <string name="helpline_category_psychological">Psychológia</string>
+    <string name="helpline_category_religion">Náboženstvo</string>
+    <string name="helpline_category_senior">Seniori</string>
+    <string name="helpline_category_sexual_abuse">Sexuálne zneužívanie</string>
+    <string name="helpline_category_sexual_assault">Sexuálny útok</string>
+    <string name="helpline_category_sexual_rights">Sexuálne práva</string>
+    <string name="helpline_category_sexuality">Sexualita</string>
+    <string name="helpline_category_soldiers">Vojaci</string>
+    <string name="helpline_category_suicide">Prevencia pred samovraždou</string>
+    <string name="helpline_category_trans">Transrodové</string>
+    <string name="helpline_category_veterans">Veteráni</string>
+    <string name="helpline_category_violence">Násilie</string>
+    <string name="helpline_category_war">Vojna</string>
+    <string name="helpline_category_women">Ženy</string>
+    <string name="helpline_category_youth">Mládež</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-sk/strings.xml b/java/com/android/dialer/helplines/res/values-sk/strings.xml
new file mode 100644
index 0000000..fd8fe41
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-sk/strings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Linky pomoci</string>
+    <string name="helplines_loading">Načítava sa\u2026</string>
+    <string name="helplines_empty">Nenašli sa žiadne linky pomoci.\nVložte SIM kartu a skúste to znovu</string>
+    <string name="helplines_help">Nápoveda</string>
+    <string name="helplines_help_title">Volať je bezpečné</string>
+    <string name="helplines_help_message">Žiadne z týchto čísel sa nenachádza v histórii volaní.\nPre viac informácií kliknite na ktorúkoľvek položku</string>
+    <string name="helpline_button_more">Viac</string>
+    <string name="unknown_helpline_name">Neznáma organizácia</string>
+    <string name="helpline_name">Názov</string>
+    <string name="helpline_org">Organizácia</string>
+    <string name="helpline_categories">Kategórie</string>
+    <string name="helpline_number">Číslo</string>
+    <string name="helpline_website">Webová stránka</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Krijština</string>
+    <string name="helpline_language_english">Angličtina</string>
+    <string name="helpline_language_french">Francúzština</string>
+    <string name="helpline_language_german">Nemčina</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibwayština</string>
+    <string name="helpline_language_turkish">Turečtina</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-sl/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-sl/helpline_categories.xml
new file mode 100644
index 0000000..2b6dece
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-sl/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Zloraba</string>
+    <string name="helpline_category_acohol">Alkohol</string>
+    <string name="helpline_category_addiction">Zasvojenost</string>
+    <string name="helpline_category_adolescents">Mladostniki</string>
+    <string name="helpline_category_adults">Odrasli</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Porod</string>
+    <string name="helpline_category_bullying">Ustrahovanje</string>
+    <string name="helpline_category_children">Otroci</string>
+    <string name="helpline_category_crime">Zločin</string>
+    <string name="helpline_category_crime_victims">Žrtve zločina</string>
+    <string name="helpline_category_corruption">Korupcija</string>
+    <string name="helpline_category_discrimination">Diskriminacija</string>
+    <string name="helpline_category_domestic_violence">Nasilje v družini</string>
+    <string name="helpline_category_drugs">Mamila</string>
+    <string name="helpline_category_emotional_support">Čustvena podpora</string>
+    <string name="helpline_category_family">Družina</string>
+    <string name="helpline_category_gambling">Kockanje</string>
+    <string name="helpline_category_gender">Spol</string>
+    <string name="helpline_category_generic">Splošno</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Človekove pravice</string>
+    <string name="helpline_category_human_trafficking">Trgovina z ljudmi</string>
+    <string name="helpline_category_immigration">Priseljevanje</string>
+    <string name="helpline_category_legal_aid">Pravna pomoč</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Moški</string>
+    <string name="helpline_category_mental_health">Duševno zdravje</string>
+    <string name="helpline_category_missing_children">Pogrešani otroci</string>
+    <string name="helpline_category_mothers">Matere</string>
+    <string name="helpline_category_muslim">Muslimani</string>
+    <string name="helpline_category_parents">Starši</string>
+    <string name="helpline_category_pregnancy">Nosečnost</string>
+    <string name="helpline_category_psychological">Psihološki</string>
+    <string name="helpline_category_religion">Vera</string>
+    <string name="helpline_category_senior">Starejši</string>
+    <string name="helpline_category_sexual_abuse">Spolna zloraba</string>
+    <string name="helpline_category_sexual_assault">Spolni napad</string>
+    <string name="helpline_category_sexual_rights">Spolne pravice</string>
+    <string name="helpline_category_sexuality">Spolnost</string>
+    <string name="helpline_category_soldiers">Vojaki</string>
+    <string name="helpline_category_suicide">Preprečevanje samomora</string>
+    <string name="helpline_category_trans">Transspolni</string>
+    <string name="helpline_category_veterans">Veterani</string>
+    <string name="helpline_category_violence">Nasilje</string>
+    <string name="helpline_category_war">Vojna</string>
+    <string name="helpline_category_women">Ženske</string>
+    <string name="helpline_category_youth">Mladina</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-sl/strings.xml b/java/com/android/dialer/helplines/res/values-sl/strings.xml
new file mode 100644
index 0000000..bc23997
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-sl/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Tel. št. za pomoč</string>
+    <string name="helplines_loading">Nalaganje \u2026</string>
+    <string name="helplines_empty">Ni najdenih tel. št. za pomoč.\nVstavite kartico SIM in poskusite znova</string>
+    <string name="helplines_help">Pomoč</string>
+    <string name="helplines_help_title">Te so varne za klic</string>
+    <string name="helplines_help_message">Nobena od teh številk ne bo prikazana v vaši zgodovini klicev.\nKliknite na kateri koli predmet za več informacij</string>
+    <string name="helplines_help_more_message">Seznam tel. št. za pomoč je izpolnjen s podatki, ki so posodobljeni ročno s strani sodelavcev. Če opazite manjkajoče ali napačne podatke, nas prosimo kontaktirajte na <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Več</string>
+    <string name="unknown_helpline_name">Neznana organizacija</string>
+    <string name="helpline_name">Ime</string>
+    <string name="helpline_org">Organizacija</string>
+    <string name="helpline_categories">Kategorije</string>
+    <string name="helpline_number">Številka</string>
+    <string name="helpline_website">Spletna stran</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Krijščina</string>
+    <string name="helpline_language_english">Angleščina</string>
+    <string name="helpline_language_french">Francoščina</string>
+    <string name="helpline_language_german">Nemščina</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turščina</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-sq/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-sq/helpline_categories.xml
new file mode 100644
index 0000000..2607fc2
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-sq/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abuzim</string>
+    <string name="helpline_category_acohol">Alkol</string>
+    <string name="helpline_category_addiction">Varësi</string>
+    <string name="helpline_category_adolescents">Adoleshentë</string>
+    <string name="helpline_category_adults">Të rriturit</string>
+    <string name="helpline_category_aids">SIDA</string>
+    <string name="helpline_category_birth">Lindje</string>
+    <string name="helpline_category_bullying">Ngacmim</string>
+    <string name="helpline_category_children">Fëmijë</string>
+    <string name="helpline_category_crime">Krim</string>
+    <string name="helpline_category_crime_victims">Viktima Krimi</string>
+    <string name="helpline_category_corruption">Korrupsion</string>
+    <string name="helpline_category_discrimination">Diskriminim</string>
+    <string name="helpline_category_domestic_violence">Dhunë në familje</string>
+    <string name="helpline_category_drugs">Droga</string>
+    <string name="helpline_category_emotional_support">Ndihmë Emocionale</string>
+    <string name="helpline_category_family">Familja</string>
+    <string name="helpline_category_gambling">Kumar</string>
+    <string name="helpline_category_gender">Gjinia</string>
+    <string name="helpline_category_generic">Të përgjithshme</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Të drejtat e njeriut</string>
+    <string name="helpline_category_human_trafficking">Trafikim i Qënieve Njerzore</string>
+    <string name="helpline_category_immigration">Imigrim</string>
+    <string name="helpline_category_legal_aid">Ndihmë juridike</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Burra</string>
+    <string name="helpline_category_mental_health">Shëndeti Mendor</string>
+    <string name="helpline_category_missing_children">Fëmijë të humbur</string>
+    <string name="helpline_category_mothers">Nënat</string>
+    <string name="helpline_category_muslim">Musliman</string>
+    <string name="helpline_category_parents">Prindërit</string>
+    <string name="helpline_category_pregnancy">Shtatëzania</string>
+    <string name="helpline_category_psychological">Psikologjike</string>
+    <string name="helpline_category_religion">Besimi</string>
+    <string name="helpline_category_senior">Madhor</string>
+    <string name="helpline_category_sexual_abuse">Abuzim Seksual</string>
+    <string name="helpline_category_sexual_assault">Agresion Seksual</string>
+    <string name="helpline_category_sexual_rights">Të drejtat Seksuale</string>
+    <string name="helpline_category_sexuality">Seksualiteti</string>
+    <string name="helpline_category_soldiers">Ushtarët</string>
+    <string name="helpline_category_suicide">Parandalimi i vetëvrasjeve</string>
+    <string name="helpline_category_trans">Transgjinor</string>
+    <string name="helpline_category_veterans">Veteran</string>
+    <string name="helpline_category_violence">Dhunë</string>
+    <string name="helpline_category_war">Luftë</string>
+    <string name="helpline_category_women">Femra</string>
+    <string name="helpline_category_youth">Rinia</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-sq/strings.xml b/java/com/android/dialer/helplines/res/values-sq/strings.xml
new file mode 100644
index 0000000..1ed4f09
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-sq/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Linjat e ndihmës</string>
+    <string name="helplines_loading">Duke u ngarkuar\u2026</string>
+    <string name="helplines_empty">Nuk u gjet asnje linjë ndihme.\nVendosni një kartë SIM dhe provoni sërish</string>
+    <string name="helplines_help">Ndihmë</string>
+    <string name="helplines_help_title">Këto janë të sigurta për tu telefonuar</string>
+    <string name="helplines_help_message">Asnjë prej këtyre numrave nuk rezulton në historikun e telefonatave të tua.\nJu mund të shtypni në ndonjë prej artikujve për më shumë informacion</string>
+    <string name="helplines_help_more_message">Lista e linjave të ndihmës është e mbushur me informacione që përditësohen manualisht nga kontribuesit. Nëse hasni ndonjë informacion të munguar ose të gabuar, ju lutemi mos ngurroni të na kontaktoni në <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Më shumë</string>
+    <string name="unknown_helpline_name">Organizatë e pa njohur</string>
+    <string name="helpline_name">Emri</string>
+    <string name="helpline_org">Organizata</string>
+    <string name="helpline_categories">Kategoritë</string>
+    <string name="helpline_number">Numri</string>
+    <string name="helpline_website">Faqe interneti</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Linja e ndihmës për mbështetjen emocionale">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">Anglisht</string>
+    <string name="helpline_language_french">Frëngjisht</string>
+    <string name="helpline_language_german">Gjermanisht</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turqisht</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-sv/strings.xml b/java/com/android/dialer/helplines/res/values-sv/strings.xml
new file mode 100644
index 0000000..f9cb754
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-sv/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_help_more_message">Listan över hjälplinjer fylls med information som uppdateras manuellt av bidragsgivare. Känn dig fri att kontakta oss på <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g> om du stöter på någon information som saknas eller om den är felaktig</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-th/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-th/helpline_categories.xml
new file mode 100644
index 0000000..20a8d19
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-th/helpline_categories.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_war">สงคราม</string>
+    <string name="helpline_category_women">ผู้หญิง</string>
+    <string name="helpline_category_youth">เยาวชน</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-tr/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-tr/helpline_categories.xml
new file mode 100644
index 0000000..e742c24
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-tr/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Taciz</string>
+    <string name="helpline_category_acohol">Alkol</string>
+    <string name="helpline_category_addiction">Bağımlılık</string>
+    <string name="helpline_category_adolescents">Ergen</string>
+    <string name="helpline_category_adults">Yetişkin</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Doğum</string>
+    <string name="helpline_category_bullying">Zorbalık</string>
+    <string name="helpline_category_children">Çocuk</string>
+    <string name="helpline_category_crime">Suç</string>
+    <string name="helpline_category_crime_victims">Suç mağdurları</string>
+    <string name="helpline_category_corruption">Yolsuzluk</string>
+    <string name="helpline_category_discrimination">Ayrımcılık</string>
+    <string name="helpline_category_domestic_violence">Aile içi şiddet</string>
+    <string name="helpline_category_drugs">İlaçlar</string>
+    <string name="helpline_category_emotional_support">Duygusal destek</string>
+    <string name="helpline_category_family">Aile</string>
+    <string name="helpline_category_gambling">Kumar</string>
+    <string name="helpline_category_gender">Cinsiyet</string>
+    <string name="helpline_category_generic">Jenerik</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">İnsan hakları</string>
+    <string name="helpline_category_human_trafficking">İnsan kaçakçılığı</string>
+    <string name="helpline_category_immigration">Göçmenlik</string>
+    <string name="helpline_category_legal_aid">Yasal destek</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Erkek</string>
+    <string name="helpline_category_mental_health">Akıl sağlığı</string>
+    <string name="helpline_category_missing_children">Kayıp çocuklar</string>
+    <string name="helpline_category_mothers">Anneler</string>
+    <string name="helpline_category_muslim">Müslüman</string>
+    <string name="helpline_category_parents">Ebeveynler</string>
+    <string name="helpline_category_pregnancy">Gebelik</string>
+    <string name="helpline_category_psychological">Psikolojik</string>
+    <string name="helpline_category_religion">Dini</string>
+    <string name="helpline_category_senior">Büyükler</string>
+    <string name="helpline_category_sexual_abuse">Cinsel istismar</string>
+    <string name="helpline_category_sexual_assault">Cinsel saldırı</string>
+    <string name="helpline_category_sexual_rights">Cinsel haklar</string>
+    <string name="helpline_category_sexuality">Cinsellik</string>
+    <string name="helpline_category_soldiers">Askerler</string>
+    <string name="helpline_category_suicide">İntihar önleme</string>
+    <string name="helpline_category_trans">Transseksüel</string>
+    <string name="helpline_category_veterans">Gaziler</string>
+    <string name="helpline_category_violence">Şiddet</string>
+    <string name="helpline_category_war">Savaş</string>
+    <string name="helpline_category_women">Kadın</string>
+    <string name="helpline_category_youth">Genç</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-tr/strings.xml b/java/com/android/dialer/helplines/res/values-tr/strings.xml
new file mode 100644
index 0000000..6510840
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-tr/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Yardım hatları</string>
+    <string name="helplines_loading">Yükleniyor\u2026</string>
+    <string name="helplines_empty">Yardım hattı bulunamadı.\nBir sim kart takın ve tekrar deneyin</string>
+    <string name="helplines_help">Yardım</string>
+    <string name="helplines_help_title">Bunları aramak güvenli</string>
+    <string name="helplines_help_message">Bu numaralardan hiçbiri arama geçmişinizde görünmüyor.\nDaha fazla bilgi için herhangi bir ögeye tıklayabilirsiniz</string>
+    <string name="helplines_help_more_message">Yardım hatlarının listesi, katkıda bulunanlar tarafından manuel olarak güncellenen bilgilerle doldurulur. Herhangi bir eksik veya yanlış bilgi ile karşılaşırsanız, lütfen  <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g> adresinden bizimle iletişime geçmekten çekinmeyin.</string>
+    <string name="helpline_button_more">Daha fazla</string>
+    <string name="unknown_helpline_name">Bilinmeyen kurum</string>
+    <string name="helpline_name">İsim</string>
+    <string name="helpline_org">Kurum</string>
+    <string name="helpline_categories">Kategoriler</string>
+    <string name="helpline_number">Numara</string>
+    <string name="helpline_website">İnternet sitesi</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">İngilizce</string>
+    <string name="helpline_language_french">Fransızca</string>
+    <string name="helpline_language_german">Almanca</string>
+    <string name="helpline_language_inuktitut">İnuitçe</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Türkçe</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-uk/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-uk/helpline_categories.xml
new file mode 100644
index 0000000..a9ce60c
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-uk/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Жорстоке поводження</string>
+    <string name="helpline_category_acohol">Алкоголь</string>
+    <string name="helpline_category_addiction">Залежність</string>
+    <string name="helpline_category_adolescents">Підлітки</string>
+    <string name="helpline_category_adults">Дорослі</string>
+    <string name="helpline_category_aids">СНІД</string>
+    <string name="helpline_category_birth">Пологи</string>
+    <string name="helpline_category_bullying">Цькування</string>
+    <string name="helpline_category_children">Діти</string>
+    <string name="helpline_category_crime">Кримінал</string>
+    <string name="helpline_category_crime_victims">Потерпілі від злочинів</string>
+    <string name="helpline_category_corruption">Корупція</string>
+    <string name="helpline_category_discrimination">Дискримінація</string>
+    <string name="helpline_category_domestic_violence">Домашнє насильство</string>
+    <string name="helpline_category_drugs">Наркотики</string>
+    <string name="helpline_category_emotional_support">Емоційна підтримка</string>
+    <string name="helpline_category_family">Родина</string>
+    <string name="helpline_category_gambling">Азартні ігри</string>
+    <string name="helpline_category_gender">Гендер</string>
+    <string name="helpline_category_generic">Загальне</string>
+    <string name="helpline_category_hiv">ВІЛ</string>
+    <string name="helpline_category_human_rights">Права людини</string>
+    <string name="helpline_category_human_trafficking">Торгівля людьми</string>
+    <string name="helpline_category_immigration">Імміграція</string>
+    <string name="helpline_category_legal_aid">Правова допомога</string>
+    <string name="helpline_category_lgbtq">ЛГБТК+</string>
+    <string name="helpline_category_men">Чоловіки</string>
+    <string name="helpline_category_mental_health">Психічне здоров\'я</string>
+    <string name="helpline_category_missing_children">Загублені діти</string>
+    <string name="helpline_category_mothers">Матері</string>
+    <string name="helpline_category_muslim">Мусульманство</string>
+    <string name="helpline_category_parents">Батьки</string>
+    <string name="helpline_category_pregnancy">Вагітність</string>
+    <string name="helpline_category_psychological">Психологія</string>
+    <string name="helpline_category_religion">Релігія</string>
+    <string name="helpline_category_senior">Літні люди</string>
+    <string name="helpline_category_sexual_abuse">Сексуальне домагання</string>
+    <string name="helpline_category_sexual_assault">Сексуальне насильство</string>
+    <string name="helpline_category_sexual_rights">Сексуальні права</string>
+    <string name="helpline_category_sexuality">Сексуальність</string>
+    <string name="helpline_category_soldiers">Солдати</string>
+    <string name="helpline_category_suicide">Запобігання самогубству</string>
+    <string name="helpline_category_trans">Трансгендерність</string>
+    <string name="helpline_category_veterans">Ветерани</string>
+    <string name="helpline_category_violence">Насильство</string>
+    <string name="helpline_category_war">Війна</string>
+    <string name="helpline_category_women">Жінки</string>
+    <string name="helpline_category_youth">Юнацтво</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-uk/strings.xml b/java/com/android/dialer/helplines/res/values-uk/strings.xml
new file mode 100644
index 0000000..92a76c9
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-uk/strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Гарячі лінії</string>
+    <string name="helplines_loading">Завантаження\u2026</string>
+    <string name="helplines_empty">Телефонів невідкладної допомоги не знайдено.\nВставте SIM-карту та повторіть спробу</string>
+    <string name="helplines_help">Довідка</string>
+    <string name="helplines_help_title">Телефонувати сюди безпечно</string>
+    <string name="helplines_help_message">Виклики цих номерів не потраплять до вашої історії.\nНатисніть будь-який заголовок, щоб дізнатись більше</string>
+    <string name="helplines_help_more_message">Список номерів телефонів екстрених служб оновлюється нашими помічниками вручну. Якщо ви знайшли будь-яку відсутню або неправильну інформацію, будь ласка, повідомте нам на <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Докладніше</string>
+    <string name="helpline_org">Організація</string>
+    <string name="helpline_categories">Категорії</string>
+    <string name="helpline_number">Номер</string>
+    <string name="helpline_website">Вебсайт</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_english">Англійська</string>
+    <string name="helpline_language_french">Французька</string>
+    <string name="helpline_language_german">Німецька</string>
+    <string name="helpline_language_inuktitut">Інуктитут</string>
+    <string name="helpline_language_ojibway">Оджибва</string>
+    <string name="helpline_language_turkish">Турецька</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-vi/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-vi/helpline_categories.xml
new file mode 100644
index 0000000..37bff15
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-vi/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Lạm dụng</string>
+    <string name="helpline_category_acohol">Cồn</string>
+    <string name="helpline_category_addiction">Cơn nghiện</string>
+    <string name="helpline_category_adolescents">Thanh niên</string>
+    <string name="helpline_category_adults">Người lớn</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Sinh ra</string>
+    <string name="helpline_category_bullying">Bắt nạt</string>
+    <string name="helpline_category_children">Trẻ em</string>
+    <string name="helpline_category_crime">Tội ác</string>
+    <string name="helpline_category_crime_victims">Bị nạn</string>
+    <string name="helpline_category_corruption">Sự hối lộ</string>
+    <string name="helpline_category_discrimination">Sự phân biệt</string>
+    <string name="helpline_category_domestic_violence">Bạo lực gia đình</string>
+    <string name="helpline_category_drugs">Thuốc</string>
+    <string name="helpline_category_emotional_support">Trợ giúp tinh thần</string>
+    <string name="helpline_category_family">Gia đình</string>
+    <string name="helpline_category_gambling">Cờ bạc</string>
+    <string name="helpline_category_gender">Giới tính</string>
+    <string name="helpline_category_generic">Chung</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Quyền Con người</string>
+    <string name="helpline_category_human_trafficking">Buôn người</string>
+    <string name="helpline_category_immigration">Nhập cư</string>
+    <string name="helpline_category_legal_aid">Trợ giúp pháp lý</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Đàn ông</string>
+    <string name="helpline_category_mental_health">Sức khỏe tâm thần</string>
+    <string name="helpline_category_missing_children">Trẻ em thất lạc</string>
+    <string name="helpline_category_mothers">Mẹ</string>
+    <string name="helpline_category_muslim">Hồi giáo</string>
+    <string name="helpline_category_parents">Phụ huynh</string>
+    <string name="helpline_category_pregnancy">Mang thai</string>
+    <string name="helpline_category_psychological">Tâm lý</string>
+    <string name="helpline_category_religion">Tôn giáo</string>
+    <string name="helpline_category_senior">Người lớn tuổi</string>
+    <string name="helpline_category_sexual_abuse">Lạm dụng tình dục</string>
+    <string name="helpline_category_sexual_assault">Tấn công tình dục</string>
+    <string name="helpline_category_sexual_rights">Quyền tình dục</string>
+    <string name="helpline_category_sexuality">Tình dục</string>
+    <string name="helpline_category_soldiers">Lính</string>
+    <string name="helpline_category_suicide">Phòng chống tự tử</string>
+    <string name="helpline_category_trans">Chuyển giới</string>
+    <string name="helpline_category_veterans">Cựu binh</string>
+    <string name="helpline_category_violence">Bạo lực</string>
+    <string name="helpline_category_war">Chiến tranh</string>
+    <string name="helpline_category_women">Phụ nữ</string>
+    <string name="helpline_category_youth">Tuổi trẻ</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-vi/strings.xml b/java/com/android/dialer/helplines/res/values-vi/strings.xml
new file mode 100644
index 0000000..4760d9d
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-vi/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Đường dây nóng</string>
+    <string name="helplines_loading">Đang tải\u2026</string>
+    <string name="helplines_empty">Không tìm thấy đường dây nóng.\nHãy nhét thẻ SIM và thử lại</string>
+    <string name="helplines_help">Trợ giúp</string>
+    <string name="helplines_help_title">Những số này an toàn để gọi</string>
+    <string name="helplines_help_message">Những số này không xuất hiện trong lịch sử gọi của bạn.\nBạn có thể chạm vào bất cứ mục nào để xem thêm thông tin</string>
+    <string name="helplines_help_more_message">Danh sách đường dây trợ giúp chứa đầy thông tin được cập nhật thủ công bởi những người đóng góp. Nếu bạn gặp bất kỳ thông tin nào bị thiếu hoặc sai, vui lòng liên hệ với chúng tôi tại <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">Thêm</string>
+    <string name="unknown_helpline_name">Tổ chức không xác định</string>
+    <string name="helpline_name">Tên</string>
+    <string name="helpline_org">Tổ chức</string>
+    <string name="helpline_categories">Danh mục</string>
+    <string name="helpline_number">Số</string>
+    <string name="helpline_website">Trang web</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">Tiếng Cree</string>
+    <string name="helpline_language_english">Tiếng Anh</string>
+    <string name="helpline_language_french">Tiếng Pháp</string>
+    <string name="helpline_language_german">Tiếng Đức</string>
+    <string name="helpline_language_inuktitut">Tiếng Inuktitut</string>
+    <string name="helpline_language_ojibway">Tiếng Ojibway</string>
+    <string name="helpline_language_turkish">Tiếng Thổ Nhĩ Kỳ</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-zh-rCN/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-zh-rCN/helpline_categories.xml
new file mode 100644
index 0000000..05ed274
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-zh-rCN/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">虐待</string>
+    <string name="helpline_category_acohol">酗酒</string>
+    <string name="helpline_category_addiction">毒瘾</string>
+    <string name="helpline_category_adolescents">青少年</string>
+    <string name="helpline_category_adults">成人</string>
+    <string name="helpline_category_aids">艾滋病</string>
+    <string name="helpline_category_birth">出生</string>
+    <string name="helpline_category_bullying">欺凌行为</string>
+    <string name="helpline_category_children">儿童</string>
+    <string name="helpline_category_crime">犯罪</string>
+    <string name="helpline_category_crime_victims">犯罪受害者</string>
+    <string name="helpline_category_corruption">贪污问题</string>
+    <string name="helpline_category_discrimination">歧视</string>
+    <string name="helpline_category_domestic_violence">家庭暴力</string>
+    <string name="helpline_category_drugs">药物滥用</string>
+    <string name="helpline_category_emotional_support">情感支持</string>
+    <string name="helpline_category_family">家庭</string>
+    <string name="helpline_category_gambling">赌博</string>
+    <string name="helpline_category_gender">性别</string>
+    <string name="helpline_category_generic">一般</string>
+    <string name="helpline_category_hiv">艾滋病</string>
+    <string name="helpline_category_human_rights">人权</string>
+    <string name="helpline_category_human_trafficking">人口贩卖</string>
+    <string name="helpline_category_immigration">移民</string>
+    <string name="helpline_category_legal_aid">法律援助</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">男性</string>
+    <string name="helpline_category_mental_health">心理健康</string>
+    <string name="helpline_category_missing_children">失踪儿童</string>
+    <string name="helpline_category_mothers">母亲</string>
+    <string name="helpline_category_muslim">穆斯林</string>
+    <string name="helpline_category_parents">家长</string>
+    <string name="helpline_category_pregnancy">孕妇</string>
+    <string name="helpline_category_psychological">心理方面</string>
+    <string name="helpline_category_religion">宗教</string>
+    <string name="helpline_category_senior">老年人</string>
+    <string name="helpline_category_sexual_abuse">性虐待</string>
+    <string name="helpline_category_sexual_assault">性骚扰</string>
+    <string name="helpline_category_sexual_rights">性权利</string>
+    <string name="helpline_category_sexuality">性</string>
+    <string name="helpline_category_soldiers">士兵</string>
+    <string name="helpline_category_suicide">自杀预防</string>
+    <string name="helpline_category_trans">跨性别者</string>
+    <string name="helpline_category_veterans">老兵</string>
+    <string name="helpline_category_violence">暴力血腥</string>
+    <string name="helpline_category_war">战争</string>
+    <string name="helpline_category_women">女性</string>
+    <string name="helpline_category_youth">青年</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-zh-rCN/strings.xml b/java/com/android/dialer/helplines/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..b3042f3
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-zh-rCN/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">求助热线</string>
+    <string name="helplines_loading">正在载入\u2026</string>
+    <string name="helplines_empty">未找到求助热线。\n请插入一张 SIM 卡并重试</string>
+    <string name="helplines_help">求助</string>
+    <string name="helplines_help_title">这些都是可以安全拨打的</string>
+    <string name="helplines_help_message">这些号码都不会出现在你的通话记录中。\n你可以点击任何一个条目以了解更多信息</string>
+    <string name="helplines_help_more_message">帮助热线列表中的信息是由贡献者手动更新的。如果你遇到任何遗漏或错误的信息，请随时与我们联系： <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helpline_button_more">更多</string>
+    <string name="unknown_helpline_name">未知组织</string>
+    <string name="helpline_name">名称</string>
+    <string name="helpline_org">组织</string>
+    <string name="helpline_categories">类别</string>
+    <string name="helpline_number">号码</string>
+    <string name="helpline_website">网站</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">克里语</string>
+    <string name="helpline_language_english">英语</string>
+    <string name="helpline_language_french">法语</string>
+    <string name="helpline_language_german">德语</string>
+    <string name="helpline_language_inuktitut">伊努伊特语</string>
+    <string name="helpline_language_ojibway">奥吉布韦语</string>
+    <string name="helpline_language_turkish">土耳其语</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-zh-rTW/helpline_categories.xml b/java/com/android/dialer/helplines/res/values-zh-rTW/helpline_categories.xml
new file mode 100644
index 0000000..ed1804f
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-zh-rTW/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">虐待 </string>
+    <string name="helpline_category_acohol">酗酒</string>
+    <string name="helpline_category_addiction">上癮</string>
+    <string name="helpline_category_adolescents">青少年</string>
+    <string name="helpline_category_adults">成人</string>
+    <string name="helpline_category_aids">愛滋病</string>
+    <string name="helpline_category_birth">生育</string>
+    <string name="helpline_category_bullying">霸凌行為</string>
+    <string name="helpline_category_children">兒童</string>
+    <string name="helpline_category_crime">犯罪</string>
+    <string name="helpline_category_crime_victims">犯罪受害者</string>
+    <string name="helpline_category_corruption">貪污</string>
+    <string name="helpline_category_discrimination">歧視</string>
+    <string name="helpline_category_domestic_violence">家暴</string>
+    <string name="helpline_category_drugs">藥物</string>
+    <string name="helpline_category_emotional_support">情緒扶持</string>
+    <string name="helpline_category_family">家庭</string>
+    <string name="helpline_category_gambling">賭博</string>
+    <string name="helpline_category_gender">性別</string>
+    <string name="helpline_category_generic">一般</string>
+    <string name="helpline_category_hiv">人類免疫缺乏病毒</string>
+    <string name="helpline_category_human_rights">人權</string>
+    <string name="helpline_category_human_trafficking">人口販賣</string>
+    <string name="helpline_category_immigration">移民入境</string>
+    <string name="helpline_category_legal_aid">法律援助</string>
+    <string name="helpline_category_lgbtq">多元性別</string>
+    <string name="helpline_category_men">男人</string>
+    <string name="helpline_category_mental_health">心理健康</string>
+    <string name="helpline_category_missing_children">失踪兒童</string>
+    <string name="helpline_category_mothers">母親</string>
+    <string name="helpline_category_muslim">穆斯林</string>
+    <string name="helpline_category_parents">家長</string>
+    <string name="helpline_category_pregnancy">懷孕</string>
+    <string name="helpline_category_psychological">心理</string>
+    <string name="helpline_category_religion">宗教</string>
+    <string name="helpline_category_senior">長者</string>
+    <string name="helpline_category_sexual_abuse">性虐待</string>
+    <string name="helpline_category_sexual_assault">性侵犯</string>
+    <string name="helpline_category_sexual_rights">性權利</string>
+    <string name="helpline_category_sexuality">性慾</string>
+    <string name="helpline_category_soldiers">士兵</string>
+    <string name="helpline_category_suicide">自殺預防</string>
+    <string name="helpline_category_trans">跨性別者</string>
+    <string name="helpline_category_veterans">退伍軍人</string>
+    <string name="helpline_category_violence">暴力</string>
+    <string name="helpline_category_war">戰爭</string>
+    <string name="helpline_category_women">女人</string>
+    <string name="helpline_category_youth">青年</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values-zh-rTW/strings.xml b/java/com/android/dialer/helplines/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..1ec6c2f
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values-zh-rTW/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">求助熱線</string>
+    <string name="helplines_loading">載入中\u2026</string>
+    <string name="helplines_empty">找不到熱線。\n插入 SIM 卡後重試</string>
+    <string name="helplines_help">説明</string>
+    <string name="helplines_help_title">這些是可安全撥打的號碼</string>
+    <string name="helplines_help_message">這些號碼不曾出現在您的通話記錄中。\n您可按任何項目取得更多資料</string>
+    <string name="helplines_help_more_message">以下求助熱線提供的資訊是由貢獻者手動更新的。要是您發現闕漏或錯誤的資訊，請於 <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g> 聯絡我們</string>
+    <string name="helpline_button_more">更多</string>
+    <string name="unknown_helpline_name">未知組織</string>
+    <string name="helpline_name">名稱</string>
+    <string name="helpline_org">組織 </string>
+    <string name="helpline_categories">類別</string>
+    <string name="helpline_number">號碼</string>
+    <string name="helpline_website">網站</string>
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+    <string name="helpline_language_cree">克里語</string>
+    <string name="helpline_language_english">英語</string>
+    <string name="helpline_language_french">法語</string>
+    <string name="helpline_language_german">德語</string>
+    <string name="helpline_language_inuktitut">因紐特語</string>
+    <string name="helpline_language_ojibway">奧吉布韋</string>
+    <string name="helpline_language_turkish">土耳其語</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values/dimens.xml b/java/com/android/dialer/helplines/res/values/dimens.xml
new file mode 100644
index 0000000..20fec7e
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values/dimens.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <dimen name="helpline_primary_text_size">16sp</dimen>
+    <dimen name="helpline_secondary_text_size">12sp</dimen>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values/helpline_categories.xml b/java/com/android/dialer/helplines/res/values/helpline_categories.xml
new file mode 100644
index 0000000..72dbdf9
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values/helpline_categories.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="helpline_category_abuse">Abuse</string>
+    <string name="helpline_category_acohol">Alcohol</string>
+    <string name="helpline_category_addiction">Addiction</string>
+    <string name="helpline_category_adolescents">Adolescents</string>
+    <string name="helpline_category_adults">Adults</string>
+    <string name="helpline_category_aids">AIDS</string>
+    <string name="helpline_category_birth">Birth</string>
+    <string name="helpline_category_bullying">Bullying</string>
+    <string name="helpline_category_children">Children</string>
+    <string name="helpline_category_crime">Crime</string>
+    <string name="helpline_category_crime_victims">Crime victims</string>
+    <string name="helpline_category_corruption">Corruption</string>
+    <string name="helpline_category_discrimination">Discrimination</string>
+    <string name="helpline_category_domestic_violence">Domestic violence</string>
+    <string name="helpline_category_drugs">Drugs</string>
+    <string name="helpline_category_emotional_support">Emotional support</string>
+    <string name="helpline_category_family">Family</string>
+    <string name="helpline_category_gambling">Gambling</string>
+    <string name="helpline_category_gender">Gender</string>
+    <string name="helpline_category_generic">Generic</string>
+    <string name="helpline_category_hiv">HIV</string>
+    <string name="helpline_category_human_rights">Human rights</string>
+    <string name="helpline_category_human_trafficking">Human trafficking</string>
+    <string name="helpline_category_immigration">Immigration</string>
+    <string name="helpline_category_legal_aid">Legal aid</string>
+    <string name="helpline_category_lgbtq">LGBTQ+</string>
+    <string name="helpline_category_men">Men</string>
+    <string name="helpline_category_mental_health">Mental health</string>
+    <string name="helpline_category_missing_children">Missing children</string>
+    <string name="helpline_category_mothers">Mothers</string>
+    <string name="helpline_category_muslim">Muslim</string>
+    <string name="helpline_category_parents">Parents</string>
+    <string name="helpline_category_pregnancy">Pregnancy</string>
+    <string name="helpline_category_psychological">Psychological</string>
+    <string name="helpline_category_religion">Religion</string>
+    <string name="helpline_category_senior">Seniors</string>
+    <string name="helpline_category_sexual_abuse">Sexual abuse</string>
+    <string name="helpline_category_sexual_assault">Sexual assault</string>
+    <string name="helpline_category_sexual_rights">Sexual rights</string>
+    <string name="helpline_category_sexuality">Sexuality</string>
+    <string name="helpline_category_soldiers">Soldiers</string>
+    <string name="helpline_category_suicide">Suicide prevention</string>
+    <string name="helpline_category_trans">Transgender</string>
+    <string name="helpline_category_veterans">Veterans</string>
+    <string name="helpline_category_violence">Violence</string>
+    <string name="helpline_category_war">War</string>
+    <string name="helpline_category_women">Women</string>
+    <string name="helpline_category_youth">Youth</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values/helpline_names.xml b/java/com/android/dialer/helplines/res/values/helpline_names.xml
new file mode 100644
index 0000000..5ca02ac
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values/helpline_names.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+
+</resources>
diff --git a/java/com/android/dialer/helplines/res/values/strings.xml b/java/com/android/dialer/helplines/res/values/strings.xml
new file mode 100644
index 0000000..3e5f4aa
--- /dev/null
+++ b/java/com/android/dialer/helplines/res/values/strings.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2021 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="helplines_name">Helplines</string>
+    <string name="helplines_loading">Loading\u2026</string>
+    <string name="helplines_empty">No helplines found.\nInsert a SIM card and try again</string>
+    <string name="helplines_help">Help</string>
+    <string name="helplines_help_title">These are safe to call</string>
+    <string name="helplines_help_message">None of these numbers appear in your call history.\nYou can click any item for more information</string>
+
+    <string name="helplines_help_more_message">The list of helplines is filled with information that is updated manually by contributors. If you encounter any missing or wrong information, please feel free to contact us at <xliff:g id="helplines_contact_url" example="www.lineageos.org">%1$s</xliff:g></string>
+    <string name="helplines_contact_url" translatable="false">www.lineageos.org</string>
+
+    <string name="helpline_button_more">More</string>
+
+    <string name="unknown_helpline_name">Unknown organization</string>
+
+    <string name="helpline_name">Name</string>
+    <string name="helpline_org">Organization</string>
+    <string name="helpline_categories">Categories</string>
+    <string name="helpline_number">Number</string>
+    <string name="helpline_website">Website</string>
+
+    <!-- Format for displaying a helpline name with the country - Example will resolve to "Emotional Support Hotline (US)" -->
+    <string name="helpline_name_format_country"><xliff:g id="helpline_name" example="Emotional Support Helpline">%1$s</xliff:g> (<xliff:g id="helpline_county" example="US">%2$s</xliff:g>)</string>
+
+    <string name="helpline_language_cree">Cree</string>
+    <string name="helpline_language_english">English</string>
+    <string name="helpline_language_french">French</string>
+    <string name="helpline_language_german">German</string>
+    <string name="helpline_language_inuktitut">Inuktitut</string>
+    <string name="helpline_language_ojibway">Ojibway</string>
+    <string name="helpline_language_turkish">Turkish</string>
+</resources>
diff --git a/java/com/android/dialer/helplines/utils/HelplineUtils.java b/java/com/android/dialer/helplines/utils/HelplineUtils.java
new file mode 100644
index 0000000..6dafd2f
--- /dev/null
+++ b/java/com/android/dialer/helplines/utils/HelplineUtils.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2019-2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.helplines.utils;
+
+import android.content.res.Resources;
+import android.text.TextUtils;
+
+import com.android.dialer.R;
+import com.android.dialer.helplines.HelplineItem;
+
+import org.lineageos.lib.phone.spn.Item;
+
+import java.util.ArrayList;
+
+public class HelplineUtils {
+
+    private static final String TAG = HelplineUtils.class.getSimpleName();
+    private static final String NAME_STR_FORMAT = "helpline_name_%s";
+    private static final String CATEGORY_STR_FORMAT = "helpline_category_%s";
+    private static final String LANGUAGE_STR_FORMAT = "helpline_language_%s";
+
+    /* Get the name of the helpline, fall back to the number if not given */
+    public static String getName(Resources res, Item item, String countryIso) {
+        if (item != null) {
+            String name = item.getName();
+            String displayName = !TextUtils.isEmpty(name)
+                    ? getDisplayString(res, name, NAME_STR_FORMAT)
+                    : item.getNumber();
+            if (!TextUtils.isEmpty(countryIso)) {
+                return res.getString(R.string.helpline_name_format_country, displayName,
+                        countryIso);
+            } else {
+                return displayName;
+            }
+        }
+
+        return "";
+    }
+
+    /* Split the given categories and translate them, fall back to "generic" if not given */
+    public static String getCategories(Resources res, HelplineItem item) {
+        if (item != null) {
+            String str = getDisplayString(res, item.getItem().getCategories(), CATEGORY_STR_FORMAT);
+            if (!TextUtils.isEmpty(str)) {
+                return str;
+            }
+        }
+
+        return res.getString(R.string.helpline_category_generic);
+    }
+
+    /* Split and translate the given languages, return empty string if not given */
+    public static String getLanguages(Resources res, HelplineItem item) {
+        if (item != null) {
+            return getDisplayString(res, item.getItem().getLanguages(), LANGUAGE_STR_FORMAT);
+        }
+
+        return "";
+    }
+
+    /* Split the content at the pipe symbol and get a resource named according to each item
+       matching a pattern
+     */
+    private static String getDisplayString(Resources res, String content, String pattern) {
+        if (content != null && content.length() > 0) {
+            String[] listItems = TextUtils.split(content, "\\|");
+            ArrayList<String> list = new ArrayList<>();
+            for (String item : listItems) {
+                String l = ResourceUtils.getLocalizedString(res, item, pattern);
+                list.add(l);
+            }
+            if (list.size() > 0) {
+                return TextUtils.join(", ", list);
+            }
+            return content;
+        }
+        return "";
+    }
+}
diff --git a/java/com/android/dialer/helplines/utils/ResourceUtils.java b/java/com/android/dialer/helplines/utils/ResourceUtils.java
new file mode 100644
index 0000000..7c6d403
--- /dev/null
+++ b/java/com/android/dialer/helplines/utils/ResourceUtils.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (C) 2016 The CyanogenMod project
+ * Copyright (C) 2019 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.helplines.utils;
+
+import android.content.res.Resources;
+import android.util.Log;
+
+public class ResourceUtils {
+
+    private static final String TAG = ResourceUtils.class.getSimpleName();
+    private static final boolean DEBUG = false;
+
+    public static String getLocalizedString(final Resources res,
+                                            final String stringName,
+                                            final String stringFormat) {
+        String name = stringName.toLowerCase();
+        final String[] nonTokens = { "'", ",", "- ", "-", "(", ")" };
+        for (String token : nonTokens) {
+            name = name.replace(token, "");
+        }
+        final String[] underscoreTokens = { " ", "/" };
+        for (String token : underscoreTokens) {
+            name = name.replace(token, "_");
+        }
+        final String nameRes = String.format(stringFormat, name);
+        return getStringForResourceName(res, nameRes, stringName);
+    }
+
+    public static String getStringForResourceName(final Resources res,
+                                                  final String resourceName,
+                                                  final String defaultValue) {
+        final int resId = res.getIdentifier(resourceName, "string", "com.android.dialer");
+        if (resId <= 0) {
+            if (DEBUG) Log.d(TAG, "No resource found for " + resourceName);
+            return defaultValue;
+        } else {
+            return res.getString(resId);
+        }
+    }
+}
diff --git a/java/com/android/dialer/historyitemactions/AndroidManifest.xml b/java/com/android/dialer/historyitemactions/AndroidManifest.xml
deleted file mode 100644
index 4d30268..0000000
--- a/java/com/android/dialer/historyitemactions/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.historyitemactions"/>
diff --git a/java/com/android/dialer/historyitemactions/BlockReportSpamModules.java b/java/com/android/dialer/historyitemactions/BlockReportSpamModules.java
index c47b097..40e255c 100644
--- a/java/com/android/dialer/historyitemactions/BlockReportSpamModules.java
+++ b/java/com/android/dialer/historyitemactions/BlockReportSpamModules.java
@@ -17,11 +17,10 @@
 package com.android.dialer.historyitemactions;
 
 import android.content.Context;
+
+import com.android.dialer.R;
 import com.android.dialer.blockreportspam.BlockReportSpamDialogInfo;
 import com.android.dialer.blockreportspam.ShowBlockReportSpamDialogNotifier;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import java.util.Optional;
 
 /** Modules for blocking/unblocking a number and/or reporting it as spam/not spam. */
 final class BlockReportSpamModules {
@@ -30,8 +29,7 @@
 
   static HistoryItemActionModule moduleForMarkingNumberAsNotSpam(
       Context context,
-      BlockReportSpamDialogInfo blockReportSpamDialogInfo,
-      Optional<DialerImpression.Type> impression) {
+      BlockReportSpamDialogInfo blockReportSpamDialogInfo) {
 
     return new HistoryItemActionModule() {
       @Override
@@ -48,8 +46,6 @@
       public boolean onClick() {
         ShowBlockReportSpamDialogNotifier.notifyShowDialogToReportNotSpam(
             context, blockReportSpamDialogInfo);
-
-        impression.ifPresent(Logger.get(context)::logImpression);
         return true; // Close the bottom sheet.
       }
     };
@@ -57,8 +53,7 @@
 
   static HistoryItemActionModule moduleForBlockingNumber(
       Context context,
-      BlockReportSpamDialogInfo blockReportSpamDialogInfo,
-      Optional<DialerImpression.Type> impression) {
+      BlockReportSpamDialogInfo blockReportSpamDialogInfo) {
 
     return new HistoryItemActionModule() {
       @Override
@@ -75,8 +70,6 @@
       public boolean onClick() {
         ShowBlockReportSpamDialogNotifier.notifyShowDialogToBlockNumber(
             context, blockReportSpamDialogInfo);
-
-        impression.ifPresent(Logger.get(context)::logImpression);
         return true; // Close the bottom sheet.
       }
     };
@@ -84,8 +77,7 @@
 
   static HistoryItemActionModule moduleForUnblockingNumber(
       Context context,
-      BlockReportSpamDialogInfo blockReportSpamDialogInfo,
-      Optional<DialerImpression.Type> impression) {
+      BlockReportSpamDialogInfo blockReportSpamDialogInfo) {
 
     return new HistoryItemActionModule() {
       @Override
@@ -102,8 +94,6 @@
       public boolean onClick() {
         ShowBlockReportSpamDialogNotifier.notifyShowDialogToUnblockNumber(
             context, blockReportSpamDialogInfo);
-
-        impression.ifPresent(Logger.get(context)::logImpression);
         return true; // Close the bottom sheet.
       }
     };
@@ -111,8 +101,7 @@
 
   static HistoryItemActionModule moduleForBlockingNumberAndOptionallyReportingSpam(
       Context context,
-      BlockReportSpamDialogInfo blockReportSpamDialogInfo,
-      Optional<DialerImpression.Type> impression) {
+      BlockReportSpamDialogInfo blockReportSpamDialogInfo) {
 
     return new HistoryItemActionModule() {
       @Override
@@ -129,8 +118,6 @@
       public boolean onClick() {
         ShowBlockReportSpamDialogNotifier.notifyShowDialogToBlockNumberAndOptionallyReportSpam(
             context, blockReportSpamDialogInfo);
-
-        impression.ifPresent(Logger.get(context)::logImpression);
         return true; // Close the bottom sheet.
       }
     };
diff --git a/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
index 9bc6570..9b1e014 100644
--- a/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
+++ b/java/com/android/dialer/historyitemactions/HistoryItemActionBottomSheet.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,10 +20,6 @@
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.design.widget.BottomSheetBehavior;
-import android.support.design.widget.BottomSheetBehavior.BottomSheetCallback;
-import android.support.design.widget.BottomSheetDialog;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -34,11 +31,18 @@
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.compat.android.support.design.bottomsheet.BottomSheetStateCompat;
 import com.android.dialer.theme.base.ThemeComponent;
 import com.android.dialer.widget.ContactPhotoView;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
+import com.google.android.material.bottomsheet.BottomSheetDialog;
 import com.google.common.collect.ImmutableSet;
+
 import java.util.List;
 
 /**
@@ -69,8 +73,8 @@
   private final OnPreDrawListener onPreDrawListenerForContactLayout =
       () -> {
         View contactLayout = findViewById(R.id.contact_layout_root);
-        View background = findViewById(android.support.design.R.id.touch_outside);
-        View bottomSheet = findViewById(android.support.design.R.id.design_bottom_sheet);
+        View background = findViewById(com.google.android.material.R.id.touch_outside);
+        View bottomSheet = findViewById(com.google.android.material.R.id.design_bottom_sheet);
 
         BottomSheetBehavior<View> behavior = BottomSheetBehavior.from(bottomSheet);
 
@@ -111,6 +115,7 @@
 
   @Override
   protected void onCreate(Bundle bundle) {
+    super.onCreate(bundle);
     contactLayout = Assert.isNotNull(findViewById(R.id.contact_layout_root));
 
     initBottomSheetState();
@@ -145,8 +150,8 @@
     // be fully expanded because sometimes services like TalkBack won't read all items when the
     // bottom sheet is not fully expanded.
     if (isTouchExplorationEnabled()) {
-      BottomSheetBehavior<View> behavior =
-          BottomSheetBehavior.from(findViewById(android.support.design.R.id.design_bottom_sheet));
+      BottomSheetBehavior<View> behavior = BottomSheetBehavior.from(
+              findViewById(com.google.android.material.R.id.design_bottom_sheet));
       behavior.setState(BottomSheetStateCompat.STATE_EXPANDED);
     }
   }
@@ -163,10 +168,10 @@
    * BottomSheetBehavior#STATE_HIDDEN}.
    */
   private void setupBottomSheetBehavior() {
-    BottomSheetBehavior<View> behavior =
-        BottomSheetBehavior.from(findViewById(android.support.design.R.id.design_bottom_sheet));
-    behavior.setBottomSheetCallback(
-        new BottomSheetCallback() {
+    BottomSheetBehavior<View> behavior = BottomSheetBehavior.from(
+            findViewById(com.google.android.material.R.id.design_bottom_sheet));
+    behavior.addBottomSheetCallback(
+        new BottomSheetBehavior.BottomSheetCallback() {
           @Override
           public void onStateChanged(@NonNull View bottomSheet, int newState) {
             ImmutableSet<Integer> statesToCancelBottomSheet =
diff --git a/java/com/android/dialer/historyitemactions/HistoryItemActionModule.java b/java/com/android/dialer/historyitemactions/HistoryItemActionModule.java
index e948924..4287fb6 100644
--- a/java/com/android/dialer/historyitemactions/HistoryItemActionModule.java
+++ b/java/com/android/dialer/historyitemactions/HistoryItemActionModule.java
@@ -16,8 +16,8 @@
 
 package com.android.dialer.historyitemactions;
 
-import android.support.annotation.DrawableRes;
-import android.support.annotation.StringRes;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.StringRes;
 
 /**
  * Modules used to build {@link HistoryItemActionBottomSheet}.
diff --git a/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java b/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java
index 917aa95..ba2389e 100644
--- a/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java
+++ b/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,28 +22,21 @@
 import android.net.Uri;
 import android.provider.CallLog.Calls;
 import android.provider.ContactsContract;
-import android.support.annotation.IntDef;
 import android.text.TextUtils;
+
+import com.android.dialer.R;
 import com.android.dialer.blockreportspam.BlockReportSpamDialogInfo;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.clipboard.ClipboardUtils;
 import com.android.dialer.common.Assert;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.ReportingLocation;
 import com.android.dialer.spam.Spam;
 import com.android.dialer.util.CallUtil;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.UriUtils;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
 
 /**
  * Builds a list of {@link HistoryItemActionModule HistoryItemActionModules}.
@@ -83,54 +77,6 @@
  */
 public final class HistoryItemActionModulesBuilder {
 
-  /** Represents events when a module is tapped by the user. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({
-    Event.ADD_TO_CONTACT,
-    Event.BLOCK_NUMBER,
-    Event.BLOCK_NUMBER_AND_REPORT_SPAM,
-    Event.REPORT_NOT_SPAM,
-    Event.REQUEST_CARRIER_VIDEO_CALL,
-    Event.REQUEST_DUO_VIDEO_CALL,
-    Event.REQUEST_DUO_VIDEO_CALL_FOR_NON_CONTACT,
-    Event.SEND_TEXT_MESSAGE,
-    Event.UNBLOCK_NUMBER
-  })
-  @interface Event {
-    int ADD_TO_CONTACT = 1;
-    int BLOCK_NUMBER = 2;
-    int BLOCK_NUMBER_AND_REPORT_SPAM = 3;
-    int REPORT_NOT_SPAM = 4;
-    int REQUEST_CARRIER_VIDEO_CALL = 5;
-    int REQUEST_DUO_VIDEO_CALL = 6;
-    int REQUEST_DUO_VIDEO_CALL_FOR_NON_CONTACT = 7;
-    int SEND_TEXT_MESSAGE = 8;
-    int UNBLOCK_NUMBER = 9;
-  }
-
-  /**
-   * Maps each {@link Event} to a {@link DialerImpression.Type} to be logged when the modules are
-   * hosted by the call log.
-   */
-  private static final ImmutableMap<Integer, DialerImpression.Type> CALL_LOG_IMPRESSIONS =
-      new ImmutableMap.Builder<Integer, DialerImpression.Type>()
-          .put(Event.ADD_TO_CONTACT, DialerImpression.Type.ADD_TO_A_CONTACT_FROM_CALL_LOG)
-          .put(Event.BLOCK_NUMBER, DialerImpression.Type.CALL_LOG_BLOCK_NUMBER)
-          .put(Event.BLOCK_NUMBER_AND_REPORT_SPAM, DialerImpression.Type.CALL_LOG_BLOCK_REPORT_SPAM)
-          .put(Event.REPORT_NOT_SPAM, DialerImpression.Type.CALL_LOG_REPORT_AS_NOT_SPAM)
-          .put(
-              Event.REQUEST_CARRIER_VIDEO_CALL,
-              DialerImpression.Type.IMS_VIDEO_REQUESTED_FROM_CALL_LOG)
-          .put(
-              Event.REQUEST_DUO_VIDEO_CALL,
-              DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FROM_CALL_LOG)
-          .put(
-              Event.REQUEST_DUO_VIDEO_CALL_FOR_NON_CONTACT,
-              DialerImpression.Type.LIGHTBRINGER_NON_CONTACT_VIDEO_REQUESTED_FROM_CALL_LOG)
-          .put(Event.SEND_TEXT_MESSAGE, DialerImpression.Type.CALL_LOG_SEND_MESSAGE)
-          .put(Event.UNBLOCK_NUMBER, DialerImpression.Type.CALL_LOG_UNBLOCK_NUMBER)
-          .build();
-
   private final Context context;
   private final HistoryItemActionModuleInfo moduleInfo;
   private final List<HistoryItemActionModule> modules;
@@ -213,14 +159,7 @@
 
     // If the module info is for a video call, add an appropriate video call module.
     if ((moduleInfo.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO) {
-      boolean isDuoCall = isDuoCall();
-      modules.add(
-          IntentModule.newCallModule(
-              context,
-              callIntentBuilder.setIsDuoCall(isDuoCall),
-              isDuoCall
-                  ? getImpressionsForDuoVideoCall()
-                  : getImpressions(Event.REQUEST_CARRIER_VIDEO_CALL)));
+      modules.add(IntentModule.newCallModule(context, callIntentBuilder));
       return this;
     }
 
@@ -229,27 +168,12 @@
     //
     // The carrier video call module takes precedence over the Duo module.
     if (canPlaceCarrierVideoCall()) {
-      modules.add(
-          IntentModule.newCallModule(
-              context, callIntentBuilder, getImpressions(Event.REQUEST_CARRIER_VIDEO_CALL)));
-    } else if (canPlaceDuoCall()) {
-      modules.add(
-          IntentModule.newCallModule(
-              context, callIntentBuilder.setIsDuoCall(true), getImpressionsForDuoVideoCall()));
+      modules.add(IntentModule.newCallModule(
+              context, callIntentBuilder));
     }
     return this;
   }
 
-  /**
-   * Returns a list of impressions to be logged when the user taps the module that attempts to
-   * initiate a Duo video call.
-   */
-  private ImmutableList<DialerImpression.Type> getImpressionsForDuoVideoCall() {
-    return isExistingContact()
-        ? getImpressions(Event.REQUEST_DUO_VIDEO_CALL)
-        : getImpressions(
-            Event.REQUEST_DUO_VIDEO_CALL, Event.REQUEST_DUO_VIDEO_CALL_FOR_NON_CONTACT);
-  }
 
   /**
    * Adds a module for sending text messages.
@@ -275,9 +199,8 @@
       return this;
     }
 
-    modules.add(
-        IntentModule.newModuleForSendingTextMessage(
-            context, moduleInfo.getNormalizedNumber(), getImpressions(Event.SEND_TEXT_MESSAGE)));
+    modules.add(IntentModule.newModuleForSendingTextMessage(context,
+            moduleInfo.getNormalizedNumber()));
     return this;
   }
 
@@ -334,8 +257,7 @@
             context,
             intent,
             R.string.add_to_contacts,
-            R.drawable.quantum_ic_person_add_vd_theme_24,
-            getImpressions(Event.ADD_TO_CONTACT)));
+            R.drawable.quantum_ic_person_add_vd_theme_24));
     return this;
   }
 
@@ -371,7 +293,6 @@
             .setNormalizedNumber(moduleInfo.getNormalizedNumber())
             .setCountryIso(moduleInfo.getCountryIso())
             .setCallType(moduleInfo.getCallType())
-            .setReportingLocation(getReportingLocation())
             .setContactSource(moduleInfo.getContactSource())
             .build();
 
@@ -381,13 +302,13 @@
     if (Spam.shouldShowAsSpam(moduleInfo.getIsSpam(), moduleInfo.getCallType())) {
       modules.add(
           BlockReportSpamModules.moduleForMarkingNumberAsNotSpam(
-              context, blockReportSpamDialogInfo, getImpression(Event.REPORT_NOT_SPAM)));
+              context, blockReportSpamDialogInfo));
       modules.add(
           moduleInfo.getIsBlocked()
               ? BlockReportSpamModules.moduleForUnblockingNumber(
-                  context, blockReportSpamDialogInfo, getImpression(Event.UNBLOCK_NUMBER))
+                  context, blockReportSpamDialogInfo)
               : BlockReportSpamModules.moduleForBlockingNumber(
-                  context, blockReportSpamDialogInfo, getImpression(Event.BLOCK_NUMBER)));
+                  context, blockReportSpamDialogInfo));
       return this;
     }
 
@@ -396,7 +317,7 @@
     if (moduleInfo.getIsBlocked()) {
       modules.add(
           BlockReportSpamModules.moduleForUnblockingNumber(
-              context, blockReportSpamDialogInfo, getImpression(Event.UNBLOCK_NUMBER)));
+              context, blockReportSpamDialogInfo));
       return this;
     }
 
@@ -404,7 +325,7 @@
     // spam, add the "Block/Report spam" module.
     modules.add(
         BlockReportSpamModules.moduleForBlockingNumberAndOptionallyReportingSpam(
-            context, blockReportSpamDialogInfo, getImpression(Event.BLOCK_NUMBER_AND_REPORT_SPAM)));
+            context, blockReportSpamDialogInfo));
     return this;
   }
 
@@ -457,21 +378,6 @@
         && moduleInfo.getCanSupportCarrierVideoCall();
   }
 
-  private boolean isDuoCall() {
-    return DuoComponent.get(context)
-        .getDuo()
-        .isDuoAccount(moduleInfo.getPhoneAccountComponentName());
-  }
-
-  private boolean canPlaceDuoCall() {
-    Duo duo = DuoComponent.get(context).getDuo();
-
-    return duo.isInstalled(context)
-        && duo.isEnabled(context)
-        && duo.isActivated(context)
-        && duo.isReachable(context, moduleInfo.getNormalizedNumber());
-  }
-
   /**
    * Lookup URIs are currently fetched from the cached column of the system call log. This URI
    * contains encoded information for non-contacts for the purposes of populating contact cards.
@@ -503,50 +409,4 @@
             String.format("Unsupported host: %s", moduleInfo.getHost()));
     }
   }
-
-  /**
-   * Maps the value of {@link HistoryItemActionModuleInfo#getHost()} to {@link
-   * ReportingLocation.Type}, which is for logging where a spam number is reported.
-   */
-  private ReportingLocation.Type getReportingLocation() {
-    switch (moduleInfo.getHost()) {
-      case CALL_LOG:
-        return ReportingLocation.Type.CALL_LOG_HISTORY;
-      case VOICEMAIL:
-        return ReportingLocation.Type.VOICEMAIL_HISTORY;
-      default:
-        throw Assert.createUnsupportedOperationFailException(
-            String.format("Unsupported host: %s", moduleInfo.getHost()));
-    }
-  }
-
-  /** Returns a list of impressions to be logged for the given {@link Event events}. */
-  private ImmutableList<DialerImpression.Type> getImpressions(@Event int... events) {
-    Assert.isNotNull(events);
-
-    ImmutableList.Builder<DialerImpression.Type> impressionListBuilder =
-        new ImmutableList.Builder<>();
-    for (@Event int event : events) {
-      getImpression(event).ifPresent(impressionListBuilder::add);
-    }
-
-    return impressionListBuilder.build();
-  }
-
-  /**
-   * Returns an impression to be logged for the given {@link Event}, or {@link Optional#empty()} if
-   * no impression is available for the event.
-   */
-  private Optional<DialerImpression.Type> getImpression(@Event int event) {
-    switch (moduleInfo.getHost()) {
-      case CALL_LOG:
-        return Optional.of(CALL_LOG_IMPRESSIONS.get(event));
-      case VOICEMAIL:
-        // TODO(a bug): Return proper impressions for voicemail.
-        return Optional.empty();
-      default:
-        throw Assert.createUnsupportedOperationFailException(
-            String.format("Unsupported host: %s", moduleInfo.getHost()));
-    }
-  }
 }
diff --git a/java/com/android/dialer/historyitemactions/IntentModule.java b/java/com/android/dialer/historyitemactions/IntentModule.java
index f4fc678..d474f5c 100644
--- a/java/com/android/dialer/historyitemactions/IntentModule.java
+++ b/java/com/android/dialer/historyitemactions/IntentModule.java
@@ -18,15 +18,15 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.StringRes;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.StringRes;
+
+import com.android.dialer.R;
 import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.IntentUtil;
-import com.google.common.collect.ImmutableList;
 
 /**
  * {@link HistoryItemActionModule} useful for making easy to build modules based on starting an
@@ -38,28 +38,16 @@
   private final Intent intent;
   private final @StringRes int text;
   private final @DrawableRes int image;
-  private final ImmutableList<DialerImpression.Type> impressions;
 
-  /**
-   * @deprecated use {@link IntentModule#IntentModule(Context, Intent, int, int, ImmutableList)}
-   *     instead.
-   */
-  @Deprecated
-  public IntentModule(Context context, Intent intent, @StringRes int text, @DrawableRes int image) {
-    this(context, intent, text, image, /* impressions = */ ImmutableList.of());
-  }
-
-  IntentModule(
+  public IntentModule(
       Context context,
       Intent intent,
       @StringRes int text,
-      @DrawableRes int image,
-      ImmutableList<DialerImpression.Type> impressions) {
+      @DrawableRes int image) {
     this.context = context;
     this.intent = intent;
     this.text = text;
     this.image = image;
-    this.impressions = impressions;
   }
 
   @Override
@@ -75,21 +63,13 @@
   @Override
   public boolean onClick() {
     DialerUtils.startActivityWithErrorToast(context, intent);
-    impressions.forEach(Logger.get(context)::logImpression);
     return true;
   }
 
-  /** @deprecated Use {@link #newCallModule(Context, CallIntentBuilder, ImmutableList)} instead. */
-  @Deprecated
-  public static IntentModule newCallModule(Context context, CallIntentBuilder callIntentBuilder) {
-    return newCallModule(context, callIntentBuilder, /* impressions = */ ImmutableList.of());
-  }
-
   /** Creates a module for starting an outgoing call with a {@link CallIntentBuilder}. */
-  static IntentModule newCallModule(
+  public static IntentModule newCallModule(
       Context context,
-      CallIntentBuilder callIntentBuilder,
-      ImmutableList<DialerImpression.Type> impressions) {
+      CallIntentBuilder callIntentBuilder) {
     @StringRes int text;
     @DrawableRes int image;
 
@@ -98,30 +78,20 @@
       image = R.drawable.quantum_ic_videocam_vd_white_24;
     } else {
       text = R.string.voice_call;
-      image = R.drawable.quantum_ic_call_white_24;
+      image = R.drawable.quantum_ic_call_vd_theme_24;
     }
 
     return new IntentModule(
-        context, PreCall.getIntent(context, callIntentBuilder), text, image, impressions);
-  }
-
-  /**
-   * @deprecated Use {@link #newModuleForSendingTextMessage(Context, String, ImmutableList)}
-   *     instead.
-   */
-  @Deprecated
-  public static IntentModule newModuleForSendingTextMessage(Context context, String number) {
-    return newModuleForSendingTextMessage(context, number, /* impressions = */ ImmutableList.of());
+        context, PreCall.getIntent(context, callIntentBuilder), text, image);
   }
 
   /** Creates a module for sending a text message to the given number. */
-  static IntentModule newModuleForSendingTextMessage(
-      Context context, String number, ImmutableList<DialerImpression.Type> impressions) {
+  public static IntentModule newModuleForSendingTextMessage(
+      Context context, String number) {
     return new IntentModule(
         context,
         IntentUtil.getSendSmsIntent(number),
         R.string.send_a_message,
-        R.drawable.quantum_ic_message_vd_theme_24,
-        impressions);
+        R.drawable.quantum_ic_message_vd_theme_24);
   }
 }
diff --git a/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml b/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml
index 006302e..4d7c9df 100644
--- a/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml
+++ b/java/com/android/dialer/historyitemactions/res/layout/sheet_layout.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
  ~ Copyright (C) 2017 The Android Open Source Project
+ ~ Copyright (C) 2023 The LineageOS Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
@@ -23,7 +24,7 @@
 
   <include layout="@layout/contact_layout"/>
 
-  <android.support.v4.widget.NestedScrollView
+  <androidx.core.widget.NestedScrollView
       android:id="@+id/history_actions_scroll_view"
       android:layout_width="match_parent"
       android:layout_height="wrap_content">
@@ -35,5 +36,5 @@
           android:layout_height="wrap_content"
           android:paddingBottom="4dp"
           android:clipToPadding="false"/>
-  </android.support.v4.widget.NestedScrollView>
+  </androidx.core.widget.NestedScrollView>
 </LinearLayout>
diff --git a/java/com/android/dialer/i18n/DialerBidiFormatter.java b/java/com/android/dialer/i18n/DialerBidiFormatter.java
index 440db17..5b8c0b3 100644
--- a/java/com/android/dialer/i18n/DialerBidiFormatter.java
+++ b/java/com/android/dialer/i18n/DialerBidiFormatter.java
@@ -16,12 +16,14 @@
 
 package com.android.dialer.i18n;
 
-import android.support.annotation.Nullable;
 import android.telephony.PhoneNumberUtils;
 import android.text.SpannableStringBuilder;
 import android.text.SpannedString;
 import android.text.TextUtils;
 import android.util.Patterns;
+
+import androidx.annotation.Nullable;
+
 import java.util.regex.Matcher;
 
 /** A formatter that applies bidirectional formatting to phone numbers in text. */
diff --git a/java/com/android/dialer/i18n/LocaleUtils.java b/java/com/android/dialer/i18n/LocaleUtils.java
index 0532cc3..f866b73 100644
--- a/java/com/android/dialer/i18n/LocaleUtils.java
+++ b/java/com/android/dialer/i18n/LocaleUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 
 import android.content.Context;
 import android.os.LocaleList;
+
 import java.util.Locale;
 
 /** Utilities for locale. */
diff --git a/java/com/android/dialer/inject/ContextModule.java b/java/com/android/dialer/inject/ContextModule.java
index 72febbb..12128ba 100644
--- a/java/com/android/dialer/inject/ContextModule.java
+++ b/java/com/android/dialer/inject/ContextModule.java
@@ -17,13 +17,14 @@
 package com.android.dialer.inject;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
 import dagger.Module;
 import dagger.Provides;
 
 /** Provides the singleton application context object. */
 @Module
-@InstallIn(variants = {DialerVariant.DIALER_DEMO, DialerVariant.DIALER_TEST})
 public final class ContextModule {
 
   @NonNull private final Context context;
diff --git a/java/com/android/dialer/inject/DialerRootComponent.java b/java/com/android/dialer/inject/DialerRootComponent.java
deleted file mode 100644
index e508e17..0000000
--- a/java/com/android/dialer/inject/DialerRootComponent.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.inject;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotates the place with this annotation when a RootComponent is needed.
- *
- * <p>Usually users put this annotation on application class that is root of dependencies (the last
- * thing to compile). The annotation processor will figure out what it needs to generate a variant
- * root through dependencies.
- *
- * <p>Example:
- *
- * <pre>
- * <code>
- * @DialerRootComponent(variant = DialerVariant.DIALER_AOSP)
- * public class RootDialerAosp {}
- * </code>
- * </pre>
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.SOURCE)
-public @interface DialerRootComponent {
-  DialerVariant variant();
-
-  Class<?> injectClass() default Object.class;
-}
diff --git a/java/com/android/dialer/inject/DialerVariant.java b/java/com/android/dialer/inject/DialerVariant.java
deleted file mode 100644
index 2e5794f..0000000
--- a/java/com/android/dialer/inject/DialerVariant.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.inject;
-
-/** Represents all dialer variants. */
-public enum DialerVariant {
-  // AOSP Dialer variants
-  DIALER_AOSP("DialerAosp"),
-  DIALER_AOSP_ESPRESSO("DialerAospEspresso"),
-  DIALER_ROBOLECTRIC("DialerRobolectric"),
-
-
-
-  // TEST variant will be used in situations where we need create in-test application class which
-  // doesn't belong to any variants listed above
-  DIALER_TEST("DialerTest"),
-  // Just for sample code in inject/demo.
-  DIALER_DEMO("DialerDemo");
-
-  private final String variant;
-
-  DialerVariant(String variant) {
-    this.variant = variant;
-  }
-
-  @Override
-  public String toString() {
-    return variant;
-  }
-}
diff --git a/java/com/android/dialer/inject/InstallIn.java b/java/com/android/dialer/inject/InstallIn.java
deleted file mode 100644
index a6f973b..0000000
--- a/java/com/android/dialer/inject/InstallIn.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.inject;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Target;
-
-/**
- * Annotation for {@link dagger.Module dagger.Modules} which causes them to be installed in the
- * specified variants.
- *
- * <p>It has a parameter for users to enter on which variants annotated module will be installed and
- * also must be non-empty. Example:
- *
- * <pre>
- * <code>
- * @InstallIn(variants = {DialerVariant.DIALER_AOSP, DialerVariant.DIALER_TEST})
- * public class Module1 {}
- *
- * </code>
- * </pre>
- */
-@Target(ElementType.TYPE)
-public @interface InstallIn {
-  DialerVariant[] variants();
-}
diff --git a/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java b/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
index 924b41e..5987a27 100644
--- a/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
+++ b/java/com/android/dialer/inject/RootComponentGeneratorMetadata.java
@@ -21,7 +21,7 @@
 
 /**
  * Only used by rootcomponent generator to store metadata for locating annotated class with {@link
- * IncludeInDialerRoot}, {@link InstallIn}.
+ * IncludeInDialerRoot}.
  */
 @Target(ElementType.TYPE)
 public @interface RootComponentGeneratorMetadata {
diff --git a/java/com/android/dialer/inject/demo/DemoDaggerApplication.java b/java/com/android/dialer/inject/demo/DemoDaggerApplication.java
deleted file mode 100644
index ab40eca..0000000
--- a/java/com/android/dialer/inject/demo/DemoDaggerApplication.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.inject.demo;
-
-import android.app.Application;
-import android.support.annotation.NonNull;
-import com.android.dialer.inject.ContextModule;
-import com.android.dialer.inject.DialerRootComponent;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.HasRootComponent;
-
-/** Demo dialer dagger application. */
-@DialerRootComponent(variant = DialerVariant.DIALER_DEMO)
-public final class DemoDaggerApplication extends Application implements HasRootComponent {
-
-  private volatile Object rootComponent;
-
-  /** Returns a cached instance of application's root component. */
-  @Override
-  @NonNull
-  public final Object component() {
-    Object result = rootComponent;
-    if (result == null) {
-      synchronized (this) {
-        result = rootComponent;
-        if (result == null) {
-          rootComponent =
-              result = DaggerDialerDemo.builder().contextModule(new ContextModule(this)).build();
-        }
-      }
-    }
-    return result;
-  }
-
-  @Override
-  public void onCreate() {
-    super.onCreate();
-
-    DemoSubcomponent.get(this).demoObjects();
-  }
-}
diff --git a/java/com/android/dialer/inject/demo/DemoModule.java b/java/com/android/dialer/inject/demo/DemoModule.java
deleted file mode 100644
index 9917c7d..0000000
--- a/java/com/android/dialer/inject/demo/DemoModule.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.inject.demo;
-
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import dagger.Module;
-import dagger.Provides;
-import dagger.multibindings.IntoSet;
-
-/** Module for demo dagger application. */
-@Module
-@InstallIn(variants = DialerVariant.DIALER_DEMO)
-public final class DemoModule {
-
-  private DemoModule() {}
-
-  @Provides
-  @IntoSet
-  static DemoObject provide() {
-    return DemoObject.create("prod");
-  }
-}
diff --git a/java/com/android/dialer/inject/demo/DemoObject.java b/java/com/android/dialer/inject/demo/DemoObject.java
deleted file mode 100644
index 3c38621..0000000
--- a/java/com/android/dialer/inject/demo/DemoObject.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.inject.demo;
-
-import com.google.auto.value.AutoValue;
-
-/** Object used to demonstrate dagger bindings. */
-@AutoValue
-abstract class DemoObject {
-
-  abstract String value();
-
-  static DemoObject create(String value) {
-    return new AutoValue_DemoObject(value);
-  }
-}
diff --git a/java/com/android/dialer/inject/demo/DemoSubcomponent.java b/java/com/android/dialer/inject/demo/DemoSubcomponent.java
deleted file mode 100644
index 3e4dd66..0000000
--- a/java/com/android/dialer/inject/demo/DemoSubcomponent.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.inject.demo;
-
-import android.content.Context;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-import java.util.Set;
-
-/** Subcomponent for the demo dagger application. */
-@Subcomponent
-public abstract class DemoSubcomponent {
-
-  abstract Set<DemoObject> demoObjects();
-
-  public static DemoSubcomponent get(Context context) {
-    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
-        .demoSubcomponent();
-  }
-
-  /** Used to refer to the root application component. */
-  @IncludeInDialerRoot
-  public interface HasComponent {
-    DemoSubcomponent demoSubcomponent();
-  }
-}
diff --git a/java/com/android/dialer/interactions/AndroidManifest.xml b/java/com/android/dialer/interactions/AndroidManifest.xml
deleted file mode 100644
index a4b0978..0000000
--- a/java/com/android/dialer/interactions/AndroidManifest.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.interactions">
-
-  <application>
-
-    <!-- Service to update a contact -->
-    <service
-      android:exported="false"
-      android:name="com.android.dialer.interactions.ContactUpdateService"/>
-
-    <receiver android:name="com.android.dialer.interactions.UndemoteOutgoingCallReceiver"
-        android:exported="true">
-      <intent-filter>
-        <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
-      </intent-filter>
-    </receiver>
-
-  </application>
-
-</manifest>
-
diff --git a/java/com/android/dialer/interactions/ContactUpdateService.java b/java/com/android/dialer/interactions/ContactUpdateService.java
index 9b2d701..334abe7 100644
--- a/java/com/android/dialer/interactions/ContactUpdateService.java
+++ b/java/com/android/dialer/interactions/ContactUpdateService.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.app.IntentService;
 import android.content.Context;
 import android.content.Intent;
+
 import com.android.contacts.common.database.ContactUpdateUtils;
 
 /** Service for updating primary number on a contact. */
diff --git a/java/com/android/dialer/interactions/PhoneNumberInteraction.java b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
index 27ade19..4644801 100644
--- a/java/com/android/dialer/interactions/PhoneNumberInteraction.java
+++ b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,14 +21,9 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
 import android.content.Context;
-import android.content.CursorLoader;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.content.Loader;
-import android.content.Loader.OnLoadCompleteListener;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
@@ -38,9 +34,6 @@
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.RawContacts;
-import android.support.annotation.IntDef;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.ActivityCompat;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -48,22 +41,30 @@
 import android.widget.CheckBox;
 import android.widget.ListAdapter;
 import android.widget.TextView;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.annotation.IntDef;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.loader.content.CursorLoader;
+import androidx.loader.content.Loader;
+
 import com.android.contacts.common.Collapser;
 import com.android.contacts.common.Collapser.Collapsible;
 import com.android.contacts.common.MoreContactUtils;
 import com.android.contacts.common.util.ContactDisplayUtils;
-import com.android.dialer.callintent.CallInitiationType;
+import com.android.dialer.R;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.callintent.CallIntentParser;
 import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.TransactionSafeActivity;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
@@ -80,16 +81,11 @@
  * <p>TODO: clean up code and documents since it is quite confusing to use "phone numbers" or "phone
  * calls" here while they can be SIP addresses or SIP calls (See also issue 5039627).
  */
-public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> {
+public class PhoneNumberInteraction implements Loader.OnLoadCompleteListener<Cursor> {
 
   static final String TAG = PhoneNumberInteraction.class.getSimpleName();
-  /** The identifier for a permissions request if one is generated. */
-  public static final int REQUEST_READ_CONTACTS = 1;
 
-  public static final int REQUEST_CALL_PHONE = 2;
-
-  @VisibleForTesting
-  public static final String[] PHONE_NUMBER_PROJECTION =
+  private static final String[] PHONE_NUMBER_PROJECTION =
       new String[] {
         Phone._ID,
         Phone.NUMBER,
@@ -118,7 +114,7 @@
   private final CallSpecificAppData callSpecificAppData;
   private long contactId = UNKNOWN_CONTACT_ID;
   private CursorLoader loader;
-  private boolean isVideoCall;
+  private final boolean isVideoCall;
 
   /** Error codes for interactions. */
   @Retention(RetentionPolicy.SOURCE)
@@ -168,7 +164,6 @@
 
     Assert.checkArgument(context instanceof InteractionErrorListener);
     Assert.checkArgument(context instanceof DisambigDialogDismissedListener);
-    Assert.checkArgument(context instanceof ActivityCompat.OnRequestPermissionsResultCallback);
   }
 
   private static void performAction(
@@ -202,13 +197,14 @@
    * @param isVideoCall {@code true} if the call is a video call, {@code false} otherwise.
    */
   public static void startInteractionForPhoneCall(
-      TransactionSafeActivity activity,
-      Uri uri,
-      boolean isVideoCall,
-      CallSpecificAppData callSpecificAppData) {
+          TransactionSafeActivity activity,
+          Uri uri,
+          boolean isVideoCall,
+          CallSpecificAppData callSpecificAppData,
+          ActivityResultLauncher<String[]> permissionLauncher) {
     new PhoneNumberInteraction(
             activity, ContactDisplayUtils.INTERACTION_CALL, isVideoCall, callSpecificAppData)
-        .startInteraction(uri);
+        .startInteraction(uri, permissionLauncher);
   }
 
   private void performAction(String phoneNumber) {
@@ -221,14 +217,13 @@
    *
    * @param uri Contact Uri
    */
-  private void startInteraction(Uri uri) {
+  private void startInteraction(Uri uri, ActivityResultLauncher<String[]> permissionLauncher) {
     // It's possible for a shortcut to have been created, and then permissions revoked. To avoid a
     // crash when the user tries to use such a shortcut, check for this condition and ask the user
     // for the permission.
     if (!PermissionsUtil.hasPhonePermissions(context)) {
       LogUtil.i("PhoneNumberInteraction.startInteraction", "Need phone permission: CALL_PHONE");
-      ActivityCompat.requestPermissions(
-          (Activity) context, new String[] {permission.CALL_PHONE}, REQUEST_CALL_PHONE);
+      permissionLauncher.launch(new String[] {permission.CALL_PHONE});
       return;
     }
 
@@ -239,8 +234,7 @@
       LogUtil.i(
           "PhoneNumberInteraction.startInteraction",
           "Need contact permissions: " + Arrays.toString(deniedContactsPermissions));
-      ActivityCompat.requestPermissions(
-          (Activity) context, deniedContactsPermissions, REQUEST_READ_CONTACTS);
+      permissionLauncher.launch(deniedContactsPermissions);
       return;
     }
 
@@ -350,14 +344,9 @@
         || ((TransactionSafeActivity) context).isSafeToCommitTransactions();
   }
 
-  @VisibleForTesting
-  /* package */ CursorLoader getLoader() {
-    return loader;
-  }
-
   private void showDisambiguationDialog(ArrayList<PhoneItem> phoneList) {
     // TODO(a bug): don't leak the activity
-    final Activity activity = (Activity) context;
+    final FragmentActivity activity = (FragmentActivity) context;
     if (activity.isFinishing()) {
       LogUtil.i("PhoneNumberInteraction.showDisambiguationDialog", "activity finishing");
       return;
@@ -371,7 +360,7 @@
 
     try {
       PhoneDisambiguationDialogFragment.show(
-          activity.getFragmentManager(),
+          activity.getSupportFragmentManager(),
           phoneList,
           interactionType,
           isVideoCall,
@@ -384,8 +373,7 @@
   }
 
   /** A model object for capturing a phone number for a given contact. */
-  @VisibleForTesting
-  /* package */ static class PhoneItem implements Parcelable, Collapsible<PhoneItem> {
+  private static class PhoneItem implements Parcelable, Collapsible<PhoneItem> {
 
     public static final Parcelable.Creator<PhoneItem> CREATOR =
         new Parcelable.Creator<PhoneItem>() {
@@ -529,7 +517,7 @@
       final Activity activity = getActivity();
       Assert.checkState(activity instanceof DisambigDialogDismissedListener);
 
-      phoneList = getArguments().getParcelableArrayList(ARG_PHONE_LIST);
+      phoneList = getArguments().getParcelableArrayList(ARG_PHONE_LIST, PhoneItem.class);
       interactionType = getArguments().getInt(ARG_INTERACTION_TYPE);
       isVideoCall = getArguments().getBoolean(ARG_IS_VIDEO_CALL);
       callSpecificAppData = CallIntentParser.getCallSpecificAppData(getArguments());
@@ -559,12 +547,6 @@
         final PhoneItem phoneItem = phoneList.get(which);
         final CheckBox checkBox = (CheckBox) alertDialog.findViewById(R.id.setPrimary);
         if (checkBox.isChecked()) {
-          if (callSpecificAppData.getCallInitiationType() == CallInitiationType.Type.SPEED_DIAL) {
-            Logger.get(getContext())
-                .logInteraction(
-                    InteractionEvent.Type.SPEED_DIAL_SET_DEFAULT_NUMBER_FOR_AMBIGUOUS_CONTACT);
-          }
-
           // Request to mark the data as primary in the background.
           final Intent serviceIntent =
               ContactUpdateService.createSetSuperPrimaryIntent(activity, phoneItem.id);
diff --git a/java/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java b/java/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java
index 68b011a..39e3b4f 100644
--- a/java/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java
+++ b/java/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,6 +28,7 @@
 import android.provider.ContactsContract.PhoneLookup;
 import android.provider.ContactsContract.PinnedPositions;
 import android.text.TextUtils;
+
 import com.android.dialer.util.PermissionsUtil;
 
 /**
@@ -50,15 +52,12 @@
       if (TextUtils.isEmpty(number)) {
         return;
       }
-      new Thread() {
-        @Override
-        public void run() {
-          final long id = getContactIdFromPhoneNumber(context, number);
-          if (id != NO_CONTACT_FOUND) {
-            undemoteContactWithId(context, id);
-          }
+      new Thread(() -> {
+        final long id = getContactIdFromPhoneNumber(context, number);
+        if (id != NO_CONTACT_FOUND) {
+          undemoteContactWithId(context, id);
         }
-      }.start();
+      }).start();
     }
   }
 
@@ -95,8 +94,7 @@
     }
     try {
       if (cursor.moveToFirst()) {
-        final long id = cursor.getLong(0);
-        return id;
+        return cursor.getLong(0);
       } else {
         return NO_CONTACT_FOUND;
       }
diff --git a/java/com/android/dialer/lettertile/AndroidManifest.xml b/java/com/android/dialer/lettertile/AndroidManifest.xml
deleted file mode 100644
index dce6806..0000000
--- a/java/com/android/dialer/lettertile/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest
-  package="com.android.dialer.lettertile">
-</manifest>
diff --git a/java/com/android/dialer/lettertile/LetterTileDrawable.java b/java/com/android/dialer/lettertile/LetterTileDrawable.java
index b747c4f..f4c3ec8 100644
--- a/java/com/android/dialer/lettertile/LetterTileDrawable.java
+++ b/java/com/android/dialer/lettertile/LetterTileDrawable.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -28,12 +29,16 @@
 import android.graphics.Rect;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telecom.TelecomManager;
 import android.text.TextUtils;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -49,7 +54,8 @@
    * #TYPE_BUSINESS}, and voicemail contacts should use {@link #TYPE_VOICEMAIL}.
    */
   @Retention(RetentionPolicy.SOURCE)
-  @IntDef({TYPE_PERSON, TYPE_BUSINESS, TYPE_VOICEMAIL, TYPE_GENERIC_AVATAR, TYPE_SPAM})
+  @IntDef({TYPE_PERSON, TYPE_BUSINESS, TYPE_VOICEMAIL, TYPE_GENERIC_AVATAR, TYPE_SPAM,
+          TYPE_CONFERENCE})
   public @interface ContactType {}
 
   /** Contact type constants */
@@ -80,10 +86,6 @@
 
   public static final int SHAPE_RECTANGLE = 2;
 
-  /** 54% opacity */
-  private static final int ALPHA = 138;
-  /** 100% opacity */
-  private static final int SPAM_ALPHA = 255;
   /** Default icon scale for vector drawable. */
   private static final float VECTOR_ICON_SCALE = 0.7f;
 
@@ -94,7 +96,8 @@
   private final char[] firstChar = new char[1];
 
   /** Letter tile */
-  @NonNull private final TypedArray colors;
+  @NonNull
+  private final TypedArray colors;
 
   private final int spamColor;
   private final int defaultColor;
@@ -118,12 +121,11 @@
 
   public LetterTileDrawable(final Resources res) {
     colors = res.obtainTypedArray(R.array.letter_tile_colors);
-    spamColor = res.getColor(R.color.spam_contact_background);
-    defaultColor = res.getColor(R.color.letter_tile_default_color);
-    tileFontColor = res.getColor(R.color.letter_tile_font_color);
+    spamColor = res.getColor(R.color.spam_contact_background, null);
+    defaultColor = res.getColor(R.color.letter_tile_default_color, null);
+    tileFontColor = res.getColor(R.color.letter_tile_font_color, null);
     letterToTileRatio = res.getFraction(R.dimen.letter_to_tile_ratio, 1, 1);
-    defaultPersonAvatar =
-        res.getDrawable(R.drawable.product_logo_avatar_anonymous_white_color_120, null);
+    defaultPersonAvatar = res.getDrawable(R.drawable.quantum_ic_person_vd_theme_24, null);
     defaultBusinessAvatar = res.getDrawable(R.drawable.quantum_ic_business_vd_theme_24, null);
     defaultVoicemailAvatar = res.getDrawable(R.drawable.quantum_ic_voicemail_vd_theme_24, null);
     defaultSpamAvatar = res.getDrawable(R.drawable.quantum_ic_report_vd_theme_24, null);
@@ -169,6 +171,7 @@
       case TYPE_PERSON:
       case TYPE_GENERIC_AVATAR:
       default:
+        scale = VECTOR_ICON_SCALE;
         return defaultPersonAvatar;
     }
   }
@@ -218,7 +221,6 @@
       paint.getTextBounds(firstChar, 0, 1, rect);
       paint.setTypeface(Typeface.create("sans-serif", Typeface.NORMAL));
       paint.setColor(tileFontColor);
-      paint.setAlpha(ALPHA);
 
       // Draw the letter in the canvas, vertically shifted up or down by the user-defined
       // offset
@@ -238,7 +240,6 @@
       }
 
       drawable.setBounds(getScaledBounds(scale, offset));
-      drawable.setAlpha(drawable == defaultSpamAvatar ? SPAM_ALPHA : ALPHA);
       drawable.draw(canvas);
     }
   }
diff --git a/java/com/android/dialer/lettertile/res/values/colors.xml b/java/com/android/dialer/lettertile/res/values/colors.xml
index 406b490..8ae0fed 100644
--- a/java/com/android/dialer/lettertile/res/values/colors.xml
+++ b/java/com/android/dialer/lettertile/res/values/colors.xml
@@ -16,20 +16,18 @@
   -->
 <resources>
   <array name="letter_tile_colors">
-    <item>#DB4437</item>
-    <item>#E91E63</item>
-    <item>#9C27B0</item>
-    <item>#673AB7</item>
-    <item>#3F51B5</item>
-    <item>#4285F4</item>
-    <item>#039BE5</item>
-    <item>#0097A7</item>
-    <item>#009688</item>
-    <item>#0F9D58</item>
-    <item>#689F38</item>
-    <item>#EF6C00</item>
-    <item>#FF5722</item>
-    <item>#757575</item>
+    <item>@android:color/system_accent1_300</item>
+    <item>@android:color/system_accent2_300</item>
+    <item>@android:color/system_accent3_300</item>
+    <item>@android:color/system_accent1_400</item>
+    <item>@android:color/system_accent2_400</item>
+    <item>@android:color/system_accent3_400</item>
+    <item>@android:color/system_accent1_500</item>
+    <item>@android:color/system_accent2_500</item>
+    <item>@android:color/system_accent3_500</item>
+    <item>@android:color/system_accent1_600</item>
+    <item>@android:color/system_accent2_600</item>
+    <item>@android:color/system_accent3_600</item>
   </array>
 
   <color name="spam_contact_background">#A52714</color>
@@ -37,4 +35,4 @@
   <color name="letter_tile_default_color">#cccccc</color>
 
   <color name="letter_tile_font_color">#ffffff</color>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/location/AndroidManifest.xml b/java/com/android/dialer/location/AndroidManifest.xml
deleted file mode 100644
index 8f74480..0000000
--- a/java/com/android/dialer/location/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.contacts.common">
-
-  <application>
-    <!-- Broadcast receiver that passively listens to location updates -->
-    <receiver android:name="com.android.dialer.location.CountryDetector$LocationChangedReceiver"/>
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/location/CountryDetector.java b/java/com/android/dialer/location/CountryDetector.java
index 664bb50..f4e5c5d 100644
--- a/java/com/android/dialer/location/CountryDetector.java
+++ b/java/com/android/dialer/location/CountryDetector.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -26,17 +27,19 @@
 import android.location.Geocoder;
 import android.location.Location;
 import android.location.LocationManager;
-import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.os.UserManagerCompat;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.os.UserManagerCompat;
+import androidx.preference.PreferenceManager;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
+
 import java.util.List;
 import java.util.Locale;
 
@@ -73,15 +76,14 @@
   // exceedingly rare event that the device does not have a default locale set for some reason.
   private static final String DEFAULT_COUNTRY_ISO = "US";
 
-  @VisibleForTesting public static CountryDetector instance;
+  private static CountryDetector instance;
 
   private final TelephonyManager telephonyManager;
   private final LocaleProvider localeProvider;
   private final Geocoder geocoder;
   private final Context appContext;
 
-  @VisibleForTesting
-  public CountryDetector(
+  private CountryDetector(
       Context appContext,
       TelephonyManager telephonyManager,
       LocationManager locationManager,
@@ -111,8 +113,8 @@
     LogUtil.i("CountryDetector.registerForLocationUpdates", "registering for location updates");
 
     final Intent activeIntent = new Intent(context, LocationChangedReceiver.class);
-    final PendingIntent pendingIntent =
-        PendingIntent.getBroadcast(context, 0, activeIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+    final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, activeIntent,
+                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE);
 
     locationManager.requestLocationUpdates(
         LocationManager.PASSIVE_PROVIDER,
@@ -207,9 +209,9 @@
       }
 
       final Location location =
-          (Location) intent.getExtras().get(LocationManager.KEY_LOCATION_CHANGED);
+              intent.getParcelableExtra(LocationManager.KEY_LOCATION_CHANGED, Location.class);
 
-      // TODO: rething how we access the gecoder here, right now we have to set the static instance
+      // TODO: rethink how we access the gecoder here, right now we have to set the static instance
       // of CountryDetector to make this work for tests which is weird
       // (see CountryDetectorTest.locationChangedBroadcast_GeocodesLocation)
       processLocationUpdate(context, CountryDetector.getInstance(context).geocoder, location);
@@ -245,7 +247,8 @@
 
   /** Worker that given a {@link Location} returns an ISO 3166-1 two letter country code. */
   private static class GeocodeCountryWorker implements Worker<Location, String> {
-    @NonNull private final Geocoder geocoder;
+    @NonNull
+    private final Geocoder geocoder;
 
     GeocodeCountryWorker(@NonNull Geocoder geocoder) {
       this.geocoder = Assert.isNotNull(geocoder);
diff --git a/java/com/android/dialer/logging/Logger.java b/java/com/android/dialer/logging/Logger.java
deleted file mode 100644
index 207c35d..0000000
--- a/java/com/android/dialer/logging/Logger.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.logging;
-
-import android.content.Context;
-import java.util.Objects;
-
-/** Single entry point for all logging/analytics-related work for all user interactions. */
-public class Logger {
-
-  private static LoggingBindings loggingBindings;
-
-  private Logger() {}
-
-  public static LoggingBindings get(Context context) {
-    Objects.requireNonNull(context);
-    if (loggingBindings != null) {
-      return loggingBindings;
-    }
-
-    Context application = context.getApplicationContext();
-    if (application instanceof LoggingBindingsFactory) {
-      loggingBindings = ((LoggingBindingsFactory) application).newLoggingBindings();
-    }
-
-    if (loggingBindings == null) {
-      loggingBindings = new LoggingBindingsStub();
-    }
-    return loggingBindings;
-  }
-
-  public static void setForTesting(LoggingBindings loggingBindings) {
-    Logger.loggingBindings = loggingBindings;
-  }
-}
diff --git a/java/com/android/dialer/logging/LoggingBindings.java b/java/com/android/dialer/logging/LoggingBindings.java
deleted file mode 100644
index 9288324..0000000
--- a/java/com/android/dialer/logging/LoggingBindings.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.dialer.logging;
-
-import android.app.Activity;
-import android.widget.QuickContactBadge;
-import com.google.auto.value.AutoValue;
-import java.util.Collection;
-
-/** Allows the container application to gather analytics. */
-public interface LoggingBindings {
-
-  /**
-   * Logs an DialerImpression event that's not associated with a specific call.
-   *
-   * @param dialerImpression an integer representing what event occurred.
-   */
-  void logImpression(DialerImpression.Type dialerImpression);
-
-  /**
-   * Logs an impression for a general dialer event that's not associated with a specific call.
-   *
-   * @param dialerImpression an integer representing what event occurred.
-   */
-  @Deprecated
-  void logImpression(int dialerImpression);
-
-  /**
-   * Logs an impression for a general dialer event that's associated with a specific call.
-   *
-   * @param dialerImpression an integer representing what event occurred.
-   * @param callId unique ID of the call.
-   * @param callStartTimeMillis the absolute time when the call started.
-   */
-  void logCallImpression(
-      DialerImpression.Type dialerImpression, String callId, long callStartTimeMillis);
-
-  /**
-   * Logs an interaction that occurred.
-   *
-   * @param interaction an integer representing what interaction occurred.
-   * @see com.android.dialer.logging.InteractionEvent
-   */
-  void logInteraction(InteractionEvent.Type interaction);
-
-  /**
-   * Logs an event indicating that a screen was displayed.
-   *
-   * @param screenEvent an integer representing the displayed screen.
-   * @param activity Parent activity of the displayed screen.
-   * @see com.android.dialer.logging.ScreenEvent
-   */
-  void logScreenView(com.android.dialer.logging.ScreenEvent.Type screenEvent, Activity activity);
-
-  /** Logs the composition of contact tiles in the speed dial tab. */
-  void logSpeedDialContactComposition(
-      int counter,
-      int starredContactsCount,
-      int pinnedContactsCount,
-      int multipleNumbersContactsCount,
-      int contactsWithPhotoCount,
-      int contactsWithNameCount,
-      int lightbringerReachableContactsCount);
-
-  /** Logs a hit event to the analytics server. */
-  void sendHitEventAnalytics(String category, String action, String label, long value);
-
-  /** Logs where a quick contact badge is clicked */
-  void logQuickContactOnTouch(
-      QuickContactBadge quickContact,
-      InteractionEvent.Type interactionEvent,
-      boolean shouldPerformClick);
-
-  /** Logs People Api lookup result with error */
-  void logPeopleApiLookupReportWithError(
-      long latency, int httpResponseCode, PeopleApiLookupError.Type errorType);
-
-  /** Logs successful People Api lookup result */
-  void logSuccessfulPeopleApiLookupReport(long latency, int httpResponseCode);
-
-  /** Logs a call auto-blocked in call screening. */
-  void logAutoBlockedCall(String phoneNumber);
-
-  /** Logs annotated call log metrics. */
-  void logAnnotatedCallLogMetrics(int invalidNumbersInCallLog);
-
-  /** Logs annotated call log metrics. */
-  void logAnnotatedCallLogMetrics(int numberRowsThatDidPop, int numberRowsThatDidNotPop);
-
-  /** Logs contacts provider metrics. */
-  void logContactsProviderMetrics(Collection<ContactsProviderMatchInfo> matchInfos);
-
-  /** Input type for {@link #logContactsProviderMetrics(Collection)}. */
-  @AutoValue
-  abstract class ContactsProviderMatchInfo {
-    public abstract boolean matchedContact();
-
-    public abstract boolean inputNumberValid();
-
-    public abstract int inputNumberLength();
-
-    public abstract int matchedNumberLength();
-
-    public abstract boolean inputNumberHasPostdialDigits();
-
-    public abstract boolean matchedNumberHasPostdialDigits();
-
-    public static Builder builder() {
-      return new AutoValue_LoggingBindings_ContactsProviderMatchInfo.Builder()
-          .setMatchedContact(false)
-          .setMatchedNumberLength(0)
-          .setMatchedNumberHasPostdialDigits(false);
-    }
-
-    /** Builder. */
-    @AutoValue.Builder
-    public abstract static class Builder {
-      public abstract Builder setMatchedContact(boolean value);
-
-      public abstract Builder setInputNumberValid(boolean value);
-
-      public abstract Builder setInputNumberLength(int value);
-
-      public abstract Builder setMatchedNumberLength(int value);
-
-      public abstract Builder setInputNumberHasPostdialDigits(boolean value);
-
-      public abstract Builder setMatchedNumberHasPostdialDigits(boolean value);
-
-      public abstract ContactsProviderMatchInfo build();
-    }
-  }
-}
diff --git a/java/com/android/dialer/logging/LoggingBindingsFactory.java b/java/com/android/dialer/logging/LoggingBindingsFactory.java
deleted file mode 100644
index 0722cf4..0000000
--- a/java/com/android/dialer/logging/LoggingBindingsFactory.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.dialer.logging;
-
-/**
- * This interface should be implementated by the Application subclass. It allows this module to get
- * references to the LoggingBindings.
- */
-public interface LoggingBindingsFactory {
-
-  LoggingBindings newLoggingBindings();
-}
diff --git a/java/com/android/dialer/logging/LoggingBindingsStub.java b/java/com/android/dialer/logging/LoggingBindingsStub.java
deleted file mode 100644
index 9231782..0000000
--- a/java/com/android/dialer/logging/LoggingBindingsStub.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.dialer.logging;
-
-import android.app.Activity;
-import android.widget.QuickContactBadge;
-import java.util.Collection;
-
-/** Default implementation for logging bindings. */
-public class LoggingBindingsStub implements LoggingBindings {
-
-  @Override
-  public void logImpression(DialerImpression.Type dialerImpression) {}
-
-  @Override
-  public void logImpression(int dialerImpression) {}
-
-  @Override
-  public void logCallImpression(
-      DialerImpression.Type dialerImpression, String callId, long callStartTimeMillis) {}
-
-  @Override
-  public void logInteraction(InteractionEvent.Type interaction) {}
-
-  @Override
-  public void logScreenView(ScreenEvent.Type screenEvent, Activity activity) {}
-
-  @Override
-  public void logSpeedDialContactComposition(
-      int counter,
-      int starredContactsCount,
-      int pinnedContactsCount,
-      int multipleNumbersContactsCount,
-      int contactsWithPhotoCount,
-      int contactsWithNameCount,
-      int lightbringerReachableContactsCount) {}
-
-  @Override
-  public void sendHitEventAnalytics(String category, String action, String label, long value) {}
-
-  @Override
-  public void logQuickContactOnTouch(
-      QuickContactBadge quickContact,
-      InteractionEvent.Type interactionEvent,
-      boolean shouldPerformClick) {}
-
-  @Override
-  public void logPeopleApiLookupReportWithError(
-      long latency, int httpResponseCode, PeopleApiLookupError.Type errorType) {}
-
-  @Override
-  public void logSuccessfulPeopleApiLookupReport(long latency, int httpResponseCode) {}
-
-  @Override
-  public void logAutoBlockedCall(String phoneNumber) {}
-
-  @Override
-  public void logAnnotatedCallLogMetrics(int invalidNumbersInCallLog) {}
-
-  @Override
-  public void logAnnotatedCallLogMetrics(int numberRowsThatDidPop, int numberRowsThatDidNotPop) {}
-
-  @Override
-  public void logContactsProviderMetrics(Collection<ContactsProviderMatchInfo> matchInfos) {}
-}
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
deleted file mode 100644
index 0f362d9..0000000
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ /dev/null
@@ -1,800 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message DialerImpression {
-  // Event enums to be used for Impression Logging in Dialer.
-  // It's perfectly acceptable for this enum to be large
-  // Values should be from 1000 to 100000.
-  // Next Tag: 1409
-  enum Type {
-    UNKNOWN_AOSP_EVENT_TYPE = 1000;
-
-    // User opened the app
-    APP_LAUNCHED = 1001;
-
-    // User pressed the speaker phone button
-    IN_CALL_SCREEN_TURN_ON_SPEAKERPHONE = 1002;
-
-    // User pressed the speaker phone button again
-    IN_CALL_SCREEN_TURN_ON_WIRED_OR_EARPIECE = 1003;
-
-    // Number not identified as spam and the user tapped the block/report spam
-    // button in the call log
-    CALL_LOG_BLOCK_REPORT_SPAM = 1004;
-
-    // Number identified as spam and the user tapped on the block number call
-    // log item
-    CALL_LOG_BLOCK_NUMBER = 1005;
-
-    // User tapped on the unblock number in the call log
-    // This does not deal with whether the user reported this spam or not while
-    // initially blocking For that refer to
-    // REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER. If the user had not reported it as
-    // spam they then have the option of directly unblocking the number, a
-    // success of which is logged in USER_ACTION_UNBLOCKED_NUMBER
-    CALL_LOG_UNBLOCK_NUMBER = 1006;
-
-    // Number was identified as spam, and the user tapped that it was not spam
-    CALL_LOG_REPORT_AS_NOT_SPAM = 1007;
-
-    // Confirmation dialog in which the user confirmed that the number was not
-    // spam
-    DIALOG_ACTION_CONFIRM_NUMBER_NOT_SPAM = 1008;
-
-    // User unblocked a number and also acknowledged that the number is not spam
-    // This happens when the user had initially blocked a number and also
-    // claimed the number was spam and had now proceeded to undo that.
-    REPORT_AS_NOT_SPAM_VIA_UNBLOCK_NUMBER = 1009
-
-        ;
-
-    // A number that was identified as spam and the user proceeded to block it.
-    // However this impression was to make sure that while blocking the number
-    // the user also acknowledged that they were going to be reporting this as
-    // spam. There is no option for the user in this case to not report it as
-    // spam and block it only. The only flow is: system identified number as
-    // spam -> user wants to block it -> confirmation dialog shows up asking
-    // user to acknowledge they want to block and report as spam -> user
-    // acknowledges and this is when this impression is sent
-    DIALOG_ACTION_CONFIRM_NUMBER_SPAM_INDIRECTLY_VIA_BLOCK_NUMBER = 1010;
-
-    // User reported the number as spam by tick marking on report spam when
-    // blocking the number via call log. This is for case where the user wants
-    // to block a number and also report it as spam
-    REPORT_CALL_AS_SPAM_VIA_CALL_LOG_BLOCK_REPORT_SPAM_SENT_VIA_BLOCK_NUMBER_DIALOG =
-        1011
-
-        ;
-
-    // User made it to the last step and actually blocked the number
-    USER_ACTION_BLOCKED_NUMBER = 1012
-
-        ;
-
-    // User made it to the last step but blocking failed because user is
-    // secondary or dialer is not default
-    USER_ACTION_BLOCK_NUMBER_FAILED = 1369;
-
-    // User made it to the last step and actually unblocked the number
-    USER_ACTION_UNBLOCKED_NUMBER = 1013;
-
-    // User made it to the last step but unblocking failed because user is
-    // secondary or dialer is not default
-    USER_ACTION_UNBLOCK_NUMBER_FAILED = 1370;
-
-    // User blocked a number, does not guarantee if the number was reported as
-    // spam or not To compute the number of blocked numbers that were reported
-    // as not spam and yet blocked Subtract this value from
-    // SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_SPAM. It would be
-    // interesting to see how this value compares with
-    // SPAM_AFTER_CALL_NOTIFICATION_REPORT_NUMBER_AS_NOT_SPAM
-    SPAM_AFTER_CALL_NOTIFICATION_BLOCK_NUMBER = 1014;
-
-    // Displays the dialog for first time spam calls with actions "Not spam",
-    // "Block", and "Dismiss".
-    SPAM_AFTER_CALL_NOTIFICATION_SHOW_SPAM_DIALOG = 1015;
-
-    // Displays the dialog for the first time unknown calls with actions "Add
-    // contact", "Block/report spam", and "Dismiss".
-    SPAM_AFTER_CALL_NOTIFICATION_SHOW_NON_SPAM_DIALOG = 1016;
-
-    // User added the number to contacts from the after call notification
-    SPAM_AFTER_CALL_NOTIFICATION_ADD_TO_CONTACTS = 1019
-
-        ;
-
-    // User marked the number as spam on the after call notification flow
-    SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_SPAM = 1020
-
-        ;
-
-    SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_NOT_SPAM_AND_BLOCKED = 1021;
-
-    // User reported the number as not spam
-    SPAM_AFTER_CALL_NOTIFICATION_REPORT_NUMBER_AS_NOT_SPAM = 1022
-
-        ;
-
-    // User dismissed the spam notification
-    SPAM_AFTER_CALL_NOTIFICATION_ON_DISMISS_SPAM_DIALOG = 1024;
-
-    // User dismissed the non spam notification
-    SPAM_AFTER_CALL_NOTIFICATION_ON_DISMISS_NON_SPAM_DIALOG = 1025;
-
-    // From the service instead of an activity logs the number of times the
-    // number was marked as Spam by the user (e.g from the feedback prompt)
-    SPAM_NOTIFICATION_SERVICE_ACTION_MARK_NUMBER_AS_SPAM = 1026
-
-        ;
-
-    // From the service instead of an activity logs the number of times the
-    // number was marked as Not Spam by the user (e.g from the feedback prompt)
-    SPAM_NOTIFICATION_SERVICE_ACTION_MARK_NUMBER_AS_NOT_SPAM = 1027
-
-        ;
-
-    // User is in a active call i.e either incoming or outgoing
-    // This is mainly so we can assign an impression event to a call event i.e
-    // so that we may be able to stitch different types of events if they make
-    // sense e.g user pressed a speaker button and we want to associate that to
-    // a call event
-    USER_PARTICIPATED_IN_A_CALL = 1028
-
-        ;
-
-    // Incoming call is a spam call
-    INCOMING_SPAM_CALL = 1029;
-
-    // Incoming call is a non spam call
-    INCOMING_NON_SPAM_CALL = 1030;
-
-    // Spam notifications shown despite throttling
-    SPAM_NOTIFICATION_SHOWN_AFTER_THROTTLE = 1041
-
-        ;
-
-    // Spam notifications not shown due to throttling
-    SPAM_NOTIFICATION_NOT_SHOWN_AFTER_THROTTLE = 1042;
-
-    // Non spam notifications shown despite throttling
-    NON_SPAM_NOTIFICATION_SHOWN_AFTER_THROTTLE = 1043
-
-        ;
-
-    // Non spam notifications not shown due to throttling
-    NON_SPAM_NOTIFICATION_NOT_SHOWN_AFTER_THROTTLE = 1044;
-
-    // Voicemail status has updated in the voicemail tab and the change PIN
-    // prompt is shown.
-    VOICEMAIL_ALERT_SET_PIN_SHOWN = 1045;
-
-    // User has clicked the change PIN action in the voicemail tab
-    VOICEMAIL_ALERT_SET_PIN_CLICKED = 1046;
-
-    // User was not able to or did not participate in the call e.g missed calls,
-    // rejected calls
-    USER_DID_NOT_PARTICIPATE_IN_CALL = 1047;
-
-    // User deleted a call log entry
-    USER_DELETED_CALL_LOG_ITEM = 1048
-
-        ;
-
-    // User tapped on "Send a message"
-    CALL_LOG_SEND_MESSAGE = 1049
-
-        ;
-
-    // User tapped on "Add to contact"
-    CALL_LOG_ADD_TO_CONTACT = 1050
-
-        ;
-
-    // User tapped on "Create new contact"
-    CALL_LOG_CREATE_NEW_CONTACT = 1051
-
-        ;
-
-    // User deleted an entry from the voicemail tab
-    VOICEMAIL_DELETE_ENTRY = 1052
-
-        ;
-
-    // Voicemail call log entry was expanded. Could be either if the user tapped
-    // the voicemail call log entry or pressed the play button when the
-    // voicemail call log entry was not expanded
-    VOICEMAIL_EXPAND_ENTRY = 1053
-
-        ;
-
-    // The play button for voicemail call log entry was tapped directly (i.e
-    // when the voicemail call log entry was not expanded and the playbutton was
-    // tapped)
-    VOICEMAIL_PLAY_AUDIO_DIRECTLY = 1054
-
-        ;
-
-    // The play button after expanding the voicemail call log entry was tapped
-    VOICEMAIL_PLAY_AUDIO_AFTER_EXPANDING_ENTRY = 1055
-
-        ;
-
-    // Incoming call was rejected from the notifications
-    REJECT_INCOMING_CALL_FROM_NOTIFICATION = 1056
-
-        ;
-
-    // Incoming call was rejected from the answer screen including rejecting via
-    // sms and talkback
-    REJECT_INCOMING_CALL_FROM_ANSWER_SCREEN = 1057
-
-        ;
-
-    // User tapped block and spam buttons in context menu, same as buttons in
-    // call log drop down
-    // menu (See 1004-1007).
-    CALL_LOG_CONTEXT_MENU_BLOCK_REPORT_SPAM = 1058;
-    CALL_LOG_CONTEXT_MENU_BLOCK_NUMBER = 1059;
-    CALL_LOG_CONTEXT_MENU_UNBLOCK_NUMBER = 1060;
-    CALL_LOG_CONTEXT_MENU_REPORT_AS_NOT_SPAM = 1061;
-
-    NEW_CONTACT_OVERFLOW = 1062;
-    NEW_CONTACT_FAB = 1063;
-
-    // The ToS is shown the user
-    VOICEMAIL_VVM3_TOS_SHOWN = 1064;
-
-    // The user has accepted the ToS
-    VOICEMAIL_VVM3_TOS_ACCEPTED = 1065;
-
-    // The user has went through the decline ToS dialog and VVM is disabled
-    VOICEMAIL_VVM3_TOS_DECLINED = 1066;
-
-    // The user has clicked the decline ToS button, and a conformation dialog
-    // was shown
-    VOICEMAIL_VVM3_TOS_DECLINE_CLICKED = 1067;
-
-    // The use has clicked the decline ToS button but the PIN has been
-    // randomized. A dialog to instruct the user to set the PIN has been shown
-    VOICEMAIL_VVM3_TOS_DECLINE_CHANGE_PIN_SHOWN = 1068;
-
-    // The user does not have a permission and are presented with a
-    // non-framework UI to request permission.
-    STORAGE_PERMISSION_DISPLAYED = 1069;
-    CAMERA_PERMISSION_DISPLAYED = 1074;
-
-    // The user is being shown the Android framework UI to request a permission.
-    STORAGE_PERMISSION_REQUESTED = 1070;
-    CAMERA_PERMISSION_REQUESTED = 1075;
-
-    // The user has permenantly denied a permission, so the user is being
-    // sent to dialer settings to grant permission.
-    STORAGE_PERMISSION_SETTINGS = 1071;
-    CAMERA_PERMISSION_SETTINGS = 1076;
-
-    // The user granted a permission.
-    STORAGE_PERMISSION_GRANTED = 1072;
-    CAMERA_PERMISSION_GRANTED = 1077;
-
-    // The user denied a permission.
-    STORAGE_PERMISSION_DENIED = 1073;
-    CAMERA_PERMISSION_DENIED = 1078;
-
-    // Voicemail config corruption is detected when in dialtacts activity.
-    VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_ACTIVITY = 1079;
-    // Voicemail config corruption is detected when a new voicemail notification
-    // has arrived.
-    VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_NOTIFICATION = 1080;
-
-    // Android Auto Backup and Restore (Dolly)
-    BACKUP_ON_BACKUP = 1081 [deprecated = true];
-    BACKUP_ON_FULL_BACKUP = 1082 [deprecated = true];
-    BACKUP_ON_BACKUP_DISABLED = 1083 [deprecated = true];
-    BACKUP_VOICEMAIL_BACKED_UP = 1084 [deprecated = true];
-    BACKUP_FULL_BACKED_UP = 1085 [deprecated = true];
-    BACKUP_ON_BACKUP_JSON_EXCEPTION = 1086 [deprecated = true];
-
-    BACKUP_ON_QUOTA_EXCEEDED = 1087 [deprecated = true];
-
-    BACKUP_ON_RESTORE = 1088 [deprecated = true];
-    BACKUP_RESTORED_FILE = 1089 [deprecated = true];
-    BACKUP_RESTORED_VOICEMAIL = 1090 [deprecated = true];
-    BACKUP_ON_RESTORE_FINISHED = 1091 [deprecated = true];
-    BACKUP_ON_RESTORE_DISABLED = 1092 [deprecated = true];
-    BACKUP_ON_RESTORE_JSON_EXCEPTION = 1093 [deprecated = true];
-    BACKUP_ON_RESTORE_IO_EXCEPTION = 1094 [deprecated = true];
-
-    BACKUP_MAX_VM_BACKUP_REACHED = 1095 [deprecated = true];
-
-    EVENT_ANSWER_HINT_ACTIVATED = 1096;
-    EVENT_ANSWER_HINT_DEACTIVATED = 1097;
-
-    VVM_TAB_VIEWED = 1098;
-
-    VVM_SHARE_VISIBLE = 1099;
-    VVM_SHARE_PRESSED = 1100;
-
-    OUTGOING_VIDEO_CALL = 1101;
-    INCOMING_VIDEO_CALL = 1102;
-    USER_PARTICIPATED_IN_A_VIDEO_CALL = 1103;
-
-    BACKUP_ON_RESTORE_VM_DUPLICATE_NOT_RESTORING = 1104 [deprecated = true];
-
-    // User tapped the 'Share and call' button to start the call composer
-    CALL_LOG_SHARE_AND_CALL = 1105;
-    CALL_COMPOSER_ACTIVITY_PLACE_RCS_CALL = 1106;
-    CALL_COMPOSER_ACTIVITY_SEND_AND_CALL_PRESSED_WHEN_SESSION_NOT_READY = 1107;
-
-    POST_CALL_PROMPT_USER_TO_SEND_MESSAGE_CLICKED = 1108;
-    POST_CALL_PROMPT_USER_TO_SEND_MESSAGE = 1109;
-    POST_CALL_PROMPT_USER_TO_VIEW_SENT_MESSAGE = 1110;
-    POST_CALL_PROMPT_USER_TO_VIEW_SENT_MESSAGE_CLICKED = 1111;
-
-    IN_CALL_SCREEN_TURN_ON_MUTE = 1112;
-    IN_CALL_SCREEN_TURN_OFF_MUTE = 1113;
-    IN_CALL_SCREEN_SWAP_CAMERA = 1114;
-    IN_CALL_SCREEN_TURN_ON_VIDEO = 1115;
-    IN_CALL_SCREEN_TURN_OFF_VIDEO = 1116;
-
-    VIDEO_CALL_WITH_INCOMING_VOICE_CALL = 1117;
-    VIDEO_CALL_WITH_INCOMING_VIDEO_CALL = 1118;
-    VOICE_CALL_WITH_INCOMING_VOICE_CALL = 1119;
-    VOICE_CALL_WITH_INCOMING_VIDEO_CALL = 1120;
-
-    CALL_DETAILS_COPY_NUMBER = 1121;
-    CALL_DETAILS_EDIT_BEFORE_CALL = 1122;
-    CALL_DETAILS_CALL_BACK = 1123 [deprecated = true];
-
-    VVM_USER_DISMISSED_VM_ALMOST_FULL_PROMO = 1124;
-    VVM_USER_DISMISSED_VM_FULL_PROMO = 1125;
-    VVM_USER_ENABLED_ARCHIVE_FROM_VM_ALMOST_FULL_PROMO = 1126;
-    VVM_USER_ENABLED_ARCHIVE_FROM_VM_FULL_PROMO = 1127;
-    VVM_USER_SHOWN_VM_ALMOST_FULL_PROMO = 1128;
-    VVM_USER_SHOWN_VM_FULL_PROMO = 1129;
-    VVM_USER_SHOWN_VM_ALMOST_FULL_ERROR_MESSAGE = 1130;
-    VVM_USER_SHOWN_VM_FULL_ERROR_MESSAGE = 1131;
-    VVM_USER_TURNED_ARCHIVE_ON_FROM_SETTINGS = 1132;
-    VVM_USER_TURNED_ARCHIVE_OFF_FROM_SETTINGS = 1133;
-    VVM_ARCHIVE_AUTO_DELETED_VM_FROM_SERVER = 1134;
-    VVM_ARCHIVE_AUTO_DELETE_TURNED_OFF = 1135;
-
-    VVM_TAB_VISIBLE = 1136;
-    VVM_UNBUNDLED_EVENT_RECEIVED = 1137;
-    VVM_ACTIVATION_STARTED = 1138;
-    VVM_ACTIVATION_COMPLETED = 1139;
-    VVM_AUTO_RETRY_ACTIVATION = 1140;
-    VVM_PROVISIONING_STARTED = 1141;
-    VVM_PROVISIONING_COMPLETED = 1142;
-    VVM_SYNC_STARTED = 1143;
-    VVM_SYNC_COMPLETED = 1144;
-    VVM_AUTO_RETRY_SYNC = 1145;
-    VVM_USER_RETRY = 1146;
-    VVM_USER_SYNC = 1147;
-    VVM_SETTINGS_VIEWED = 1148;
-    VVM_CHANGE_PIN_CLICKED = 1149;
-    VVM_CHANGE_PIN_COMPLETED = 1150;
-    VVM_CHANGE_RINGTONE_CLICKED = 1151 [deprecated = true];
-    VVM_CHANGE_VIBRATION_CLICKED = 1152;
-    VVM_USER_ENABLED_IN_SETTINGS = 1153;
-    VVM_USER_DISABLED_IN_SETTINGS = 1154;
-    VVM_ADVANCED_SETINGS_CLICKED = 1155;
-    VVM_NOTIFICATION_CLICKED = 1156;
-    VVM_NOTIFICATION_CREATED = 1157;
-    VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION = 1158;
-    VVM_TRANSCRIPTION_DOWNLOADED = 1159;
-    VVM_CHANGE_AIRPLANE_MODE_CLICKED = 1160;
-    VVM_CALL_VOICEMAIL_CLICKED = 1161;
-    VVM_QUOTA_CHECK_UNAVAILABLE = 1162;
-
-    // Emergency location impressions
-    EMERGENCY_NEW_EMERGENCY_CALL = 1163;
-    EMERGENCY_CALLBACK = 1164;
-    EMERGENCY_NO_LOCATION_PERMISSION = 1165;
-    EMERGENCY_BATTERY_TOO_LOW_TO_GET_LOCATION = 1166;
-    EMERGENCY_CANT_GET_LOCATION = 1167;
-    EMERGENCY_STALE_LOCATION = 1168;
-    EMERGENCY_INACCURATE_LOCATION = 1169;
-    EMERGENCY_GOT_LOCATION = 1170;
-    EMERGENCY_GOT_ADDRESS = 1171;
-    EMERGENCY_GOT_MAP = 1172;
-    EMERGENCY_LAUNCHED_MAP = 1173;
-
-    VIDEO_CALL_UPGRADE_REQUESTED = 1174
-
-        ;
-    VIDEO_CALL_REQUEST_ACCEPTED = 1175
-
-        ;
-    VIDEO_CALL_REQUEST_ACCEPTED_AS_AUDIO = 1176
-
-        ;
-    VIDEO_CALL_REQUEST_DECLINED = 1177
-
-        ;
-    VIDEO_CALL_REQUEST_RECEIVED = 1178
-
-        ;
-
-    RCS_VIDEO_SHARE_UPGRADE_REQUESTED = 1179;
-    RCS_VIDEO_SHARE_REQUEST_ACCEPTED = 1180;
-    RCS_VIDEO_SHARE_REQUEST_DECLINED = 1181;
-    RCS_VIDEO_SHARE_REQUEST_RECEIVED = 1182;
-
-    IMS_VIDEO_UPGRADE_REQUESTED = 1183;
-    IMS_VIDEO_REQUEST_ACCEPTED = 1184;
-    IMS_VIDEO_REQUEST_ACCEPTED_AS_AUDIO = 1185;
-    IMS_VIDEO_REQUEST_DECLINED = 1186;
-    IMS_VIDEO_REQUEST_RECEIVED = 1187;
-
-    VVM_STATUS_CHECK_READY = 1188;
-    VVM_STATUS_CHECK_REACTIVATION = 1189;
-
-    VVM_ARCHIVE_AUTO_DELETE_FAILED_DUE_TO_FAILED_QUOTA_CHECK = 1190;
-
-    // User pressed the speaker phone button on the return-to-call bubble
-    BUBBLE_TURN_ON_SPEAKERPHONE = 1191;
-    // User pressed the speaker phone button again on the return-to-call bubble
-    BUBBLE_TURN_ON_WIRED_OR_EARPIECE = 1192;
-    // User muted the call from the return-to-call bubble
-    BUBBLE_MUTE_CALL = 1193;
-    // User unmuted the call from the return-to-call bubble
-    BUBBLE_UNMUTE_CALL = 1194;
-    // User ended the call from the return-to-call bubble
-    BUBBLE_END_CALL = 1195;
-
-    LIGHTBRINGER_VIDEO_REQUESTED_FROM_SEARCH = 1196;
-    LIGHTBRINGER_VIDEO_REQUESTED_FROM_CALL_LOG =
-        1197;  // Including call history
-    IMS_VIDEO_REQUESTED_FROM_SEARCH = 1198;
-    IMS_VIDEO_REQUESTED_FROM_CALL_LOG = 1199;  // Including call history
-
-    // Multi select impressions
-    MULTISELECT_LONG_PRESS_ENTER_MULTI_SELECT_MODE = 1200;
-    MULTISELECT_LONG_PRESS_TAP_ENTRY = 1201;
-    MULTISELECT_SINGLE_PRESS_SELECT_ENTRY = 1202;
-    MULTISELECT_SINGLE_PRESS_UNSELECT_ENTRY = 1203;
-    MULTISELECT_SINGLE_PRESS_TAP_VIA_CONTACT_BADGE = 1204;
-    MULTISELECT_SELECT_ALL = 1205;
-    MULTISELECT_UNSELECT_ALL = 1206;
-    MULTISELECT_TAP_DELETE_ICON = 1207;
-    MULTISELECT_DISPLAY_DELETE_CONFIRMATION_DIALOG = 1208;
-    MULTISELECT_DELETE_ENTRY_VIA_CONFIRMATION_DIALOG = 1209;
-    MULTISELECT_CANCEL_CONFIRMATION_DIALOG_VIA_CANCEL_BUTTON = 1210;
-    MULTISELECT_CANCEL_CONFIRMATION_DIALOG_VIA_CANCEL_TOUCH = 1211;
-    MULTISELECT_ROTATE_AND_SHOW_ACTION_MODE = 1212;
-
-    // Impressions for verizon VVM with backup and transcription ToS
-    VOICEMAIL_VVM3_TOS_V2_CREATED = 1213;
-    VOICEMAIL_VVM3_TOS_V2_ACCEPTED = 1214;
-    VOICEMAIL_VVM3_TOS_V2_DECLINE_CLICKED = 1215;
-    // Impressions for dialer voicemail with backup and transcription ToS
-    VOICEMAIL_DIALER_TOS_CREATED = 1216;
-    VOICEMAIL_DIALER_TOS_ACCEPTED = 1217;
-    VOICEMAIL_DIALER_TOS_DECLINE_CLICKED = 1218;
-
-    // Add or create contact
-    // Creating new contact fab was logged as NEW_CONTACT_FAB
-    CREATE_NEW_CONTACT_FROM_CALL_LOG = 1219;
-    CREATE_NEW_CONTACT_FROM_DIALPAD = 1220;
-    CREATE_NEW_CONTACT_FROM_VOICEMAIL = 1221;
-    CREATE_NEW_CONTACT_FROM_CALL_HISTORY = 1222;
-    ADD_TO_A_CONTACT_FROM_CALL_LOG = 1223;
-    ADD_TO_A_CONTACT_FROM_DIALPAD = 1224;
-    ADD_TO_A_CONTACT_FROM_VOICEMAIL = 1225;
-    ADD_TO_A_CONTACT_FROM_CALL_HISTORY = 1226;
-
-    // Impressions for dialer reporting caller id as inaccurate
-    CALLER_ID_REPORTED = 1227;
-    CALLER_ID_REPORT_FAILED = 1228;
-
-    // Impressions for interactions with the voicemail transcription server
-    VVM_TRANSCRIPTION_REQUEST_SENT = 1229;
-    VVM_TRANSCRIPTION_REQUEST_RETRY = 1230;
-    VVM_TRANSCRIPTION_RESPONSE_SUCCESS = 1231;
-    VVM_TRANSCRIPTION_RESPONSE_EMPTY = 1232;
-    VVM_TRANSCRIPTION_RESPONSE_INVALID = 1233;
-    VVM_TRANSCRIPTION_RESPONSE_RECOVERABLE_ERROR = 1234;
-    VVM_TRANSCRIPTION_RESPONSE_FATAL_ERROR = 1235;
-
-    // In in call UI
-    UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN = 1236;
-
-    // Bubble primary button first click to expand bubble (by user)
-    BUBBLE_PRIMARY_BUTTON_EXPAND = 1237;
-    // Bubble prinary button second click to return to call
-    BUBBLE_PRIMARY_BUTTON_RETURN_TO_CALL = 1238;
-
-    // Dialer Key/Value Backup and Restore
-    BACKUP_KEY_VALUE_ON_BACKUP = 1239;
-    BACKUP_KEY_VALUE_ON_RESTORE = 1240;
-    BACKUP_KEY_VALUE_ON_RESTORE_FINISHED = 1241;
-    BACKUP_KEY_VALUE_GET_BACKUP_SPECIFICATION = 1242;
-    BACKUP_KEY_VALUE_BACKUP_AGENT_CONSTRUCTOR = 1243;
-
-    // In the in call UI
-    UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_LIGHTBRINGER = 1244;
-    UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_IMS = 1245;
-    UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_RCS = 1246;
-    LIGHTBRINGER_UPGRADE_REQUESTED = 1247;
-
-    // Found Lightbringer reachable contact when launching Dialer
-    HAS_LIGHTBRINGER_REACHABLE_CONTACTS = 1248;
-
-    // This impression is logged once per process when the number of
-    // notifications is very high and the system may suppress future
-    // notifications.
-    HIGH_GLOBAL_NOTIFICATION_COUNT_REACHED = 1249;
-
-    // More impressions for interactions with the voicemail transcription server
-    VVM_TRANSCRIPTION_REQUEST_SENT_ASYNC = 1250;
-    VVM_TRANSCRIPTION_VOICEMAIL_RECEIVED = 1251;
-    VVM_TRANSCRIPTION_VOICEMAIL_FORMAT_NOT_SUPPORTED = 1252;
-    VVM_TRANSCRIPTION_VOICEMAIL_INVALID_DATA = 1253;
-    VVM_TRANSCRIPTION_VOICEMAIL_UPLOAD_FAILED = 1254;
-    VVM_TRANSCRIPTION_RESPONSE_LANGUAGE_NOT_SUPPORTED = 1255;
-    VVM_TRANSCRIPTION_RESPONSE_NO_SPEECH_DETECTED = 1256;
-    VVM_TRANSCRIPTION_RESPONSE_EXPIRED = 1257;
-    VVM_TRANSCRIPTION_RESPONSE_TOO_MANY_ERRORS = 1258;
-    VVM_TRANSCRIPTION_POLLING_TIMEOUT = 1259;
-
-    // Bubble collapse initiated by user, i.e. no hiding after collapse
-    BUBBLE_COLLAPSE_BY_USER = 1260;
-
-    // In in-call UI
-    IN_CALL_SHOW_DIALPAD_BUTTON_PRESSED = 1261;
-    IN_CALL_ADD_CALL_BUTTON_PRESSED = 1262;
-    IN_CALL_MERGE_BUTTON_PRESSED = 1263;
-    IN_CALL_SWAP_SECONDARY_BUTTON_PRESSED = 1264;
-
-    // In in-call dialpad
-    IN_CALL_DIALPAD_NUMBER_BUTTON_PRESSED = 1265;
-    IN_CALL_DIALPAD_HANG_UP_BUTTON_PRESSED = 1266;
-    IN_CALL_DIALPAD_CLOSE_BUTTON_PRESSED = 1267;
-
-    // More voicemail transcription impressions
-    VVM_NOTIFICATION_CREATED_WITH_IN_PROGRESS = 1268;
-    VVM_NOTIFICATION_CREATED_WITH_TRANSCRIPTION_FAILURE = 1269;
-    VVM_NOTIFICATION_CREATED_WITH_NO_TRANSCRIPTION = 1270;
-    VVM_TRANSCRIPTION_JOB_STOPPED = 1271;
-    VVM_TRANSCRIPTION_TASK_CANCELLED = 1272;
-
-    // Swipe/click to switch tabs
-    SWITCH_TAB_TO_FAVORITE_BY_SWIPE = 1273;
-    SWITCH_TAB_TO_CALL_LOG_BY_SWIPE = 1274;
-    SWITCH_TAB_TO_CONTACTS_BY_SWIPE = 1275;
-    SWITCH_TAB_TO_VOICEMAIL_BY_SWIPE = 1276;
-    SWITCH_TAB_TO_FAVORITE_BY_CLICK = 1277;
-    SWITCH_TAB_TO_CALL_LOG_BY_CLICK = 1278;
-    SWITCH_TAB_TO_CONTACTS_BY_CLICK = 1279;
-    SWITCH_TAB_TO_VOICEMAIL_BY_CLICK = 1280;
-
-    LIGHTBRINGER_NON_CONTACT_UPGRADE_REQUESTED = 1281;
-    LIGHTBRINGER_NON_CONTACT_VIDEO_REQUESTED_FROM_CALL_LOG =
-        1282;  // Including call history
-
-    // More voicemail transcription impressions
-    VVM_TRANSCRIPTION_POLL_REQUEST = 1283;
-
-    // Callback impressions (with more granularity) from the call details UI
-    CALL_DETAILS_IMS_VIDEO_CALL_BACK = 1284;
-    CALL_DETAILS_LIGHTBRINGER_CALL_BACK = 1285;
-    CALL_DETAILS_VOICE_CALL_BACK = 1286;
-
-    // Assisted Dialing related impressions tracking failures modes within the
-    // library.
-
-    // Indicates a failure to parse a provided number string in libphonenumber.
-    ASSISTED_DIALING_CONSTRAINT_PARSING_FAILURE = 1287;
-    // Indicates that the number attempting to be assisted dialed already
-    // specified a country code.
-    ASSISTED_DIALING_CONSTRAINT_NUMBER_HAS_COUNTRY_CODE = 1288;
-    // Indicates that the number attempting to be assisted dialed had an
-    // extension.
-    ASSISTED_DIALING_CONSTRAINT_NUMBER_HAS_EXTENSION = 1289;
-    // Indicates that the user disabled the feature.
-    ASSISTED_DIALING_FEATURE_DISABLED_BY_USER = 1292;
-
-    // User reports a same prefix call as spam from call history
-    REPORT_SAME_PREFIX_CALL_AS_SPAM_VIA_CALL_HISTORY = 1290
-
-        ;
-
-    // User reports a same prefix call as not spam from call history
-    REPORT_SAME_PREFIX_CALL_AS_NOT_SPAM_VIA_CALL_HISTORY = 1291
-
-        ;
-
-    PRECALL_INITIATED = 1293;
-    PRECALL_INITIATED_EXTERNAL = 1294;
-    PRECALL_CANCELED = 1295;
-
-    DUAL_SIM_CHANGE_SIM_PRESSED = 1296;
-    DUAL_SIM_SELECTION_SHOWN = 1297;
-    DUAL_SIM_SELECTION_VOICEMAIL = 1298;
-    DUAL_SIM_SELECTION_IN_CONTACTS = 1299;
-    DUAL_SIM_SELECTION_SUGGESTION_AVAILABLE = 1300;
-    DUAL_SIM_SELECTION_SUGGESTED_CARRIER = 1301;
-    DUAL_SIM_SELECTION_SUGGESTED_FREQUENCY = 1302;
-    DUAL_SIM_SELECTION_SUGGESTED_SIM_SELECTED = 1303;
-    DUAL_SIM_SELECTION_NON_SUGGESTED_SIM_SELECTED = 1304;
-    DUAL_SIM_SELECTION_PREFERRED_SET = 1305;
-    DUAL_SIM_SELECTION_PREFERRED_USED = 1306;
-    DUAL_SIM_SELECTION_PREFERRED_NOT_SELECTABLE = 1389;
-    DUAL_SIM_SELECTION_GLOBAL_USED = 1307;
-    DUAL_SIM_SELECTION_GLOBAL_NOT_SELECTABLE = 1390;
-    DUAL_SIM_SELECTION_SUGGESTION_AUTO_SELECTED = 1322;
-    DUAL_SIM_SELECTION_SUGGESTION_AUTO_NOT_SELECTABLE = 1391;
-
-    DUO_CALL_LOG_SET_UP_INSTALL = 1308;
-    DUO_CALL_LOG_SET_UP_ACTIVATE = 1309;
-    DUO_CALL_LOG_INVITE = 1310;
-
-    // Bubble primary button first click to expand bubble
-    BUBBLE_V2_CLICK_TO_EXPAND = 1311;
-    // Bubble primary button second click to collapse bubble
-    BUBBLE_V2_CLICK_TO_COLLAPSE = 1312;
-    // User return to call from bubble call action menu
-    BUBBLE_V2_RETURN_TO_CALL = 1313;
-    // User muted call from bubble call action menu
-    BUBBLE_V2_MUTE_CALL = 1314;
-    // User unmuted call from bubble call action menu
-    BUBBLE_V2_UNMUTE_CALL = 1315;
-    // User choose audio route speakerphone from bubble call action menu
-    BUBBLE_V2_SPEAKERPHONE = 1316;
-    // User choose audio route wired or earpiece from bubble call action menu
-    BUBBLE_V2_WIRED_OR_EARPIECE = 1317;
-    // User choose audio route bluetooth from bubble call action menu
-    BUBBLE_V2_BLUETOOTH = 1318;
-    // User ended call from bubble call action menu
-    BUBBLE_V2_END_CALL = 1319;
-    // Drag bubble to bottom and dismiss
-    BUBBLE_V2_BOTTOM_ACTION_DISMISS = 1320;
-    // Drag bubble to bottom and end call
-    BUBBLE_V2_BOTTOM_ACTION_END_CALL = 1321;
-
-    // Bubble appears
-    BUBBLE_V2_SHOW = 1323;
-
-    DUO_CALL_LOG_SET_UP_INSTALL_SHOWN = 1324;
-    DUO_CALL_LOG_SET_UP_ACTIVATE_SHOWN = 1325;
-    DUO_CALL_LOG_INVITE_SHOWN = 1326;
-
-    // NUI bottom navigation bar user actions
-    MAIN_SWITCH_TAB_TO_FAVORITE = 1327;
-    MAIN_SWITCH_TAB_TO_CALL_LOG = 1328;
-    MAIN_SWITCH_TAB_TO_CONTACTS = 1329;
-    MAIN_SWITCH_TAB_TO_VOICEMAIL = 1330;
-    // NUI search
-    MAIN_TOUCH_DIALPAD_SEARCH_LIST_TO_CLOSE_SEARCH_AND_DIALPAD = 1331;
-    MAIN_TOUCH_DIALPAD_SEARCH_LIST_TO_HIDE_DIALPAD = 1332;
-    MAIN_TOUCH_SEARCH_LIST_TO_CLOSE_SEARCH = 1333;
-    MAIN_TOUCH_SEARCH_LIST_TO_HIDE_KEYBOARD = 1334;
-    MAIN_PRESS_BACK_BUTTON_TO_CLOSE_SEARCH = 1335;
-    MAIN_PRESS_BACK_BUTTON_TO_CLOSE_SEARCH_AND_DIALPAD = 1336;
-    MAIN_PRESS_BACK_BUTTON_TO_HIDE_DIALPAD = 1337;
-    MAIN_CLICK_SEARCH_BAR = 1338;
-    MAIN_CLICK_SEARCH_BAR_VOICE_BUTTON = 1339;
-    // NUI FAB
-    MAIN_CLICK_FAB_TO_OPEN_DIALPAD = 1340;
-
-    // The call log was not dirty.
-    ANNOTATED_CALL_LOG_NOT_DIRTY = 1341;
-    // The call log was dirty but no changes were needed.
-    ANNOTATED_CALL_LOG_NO_CHANGES_NEEDED = 1342;
-    // The call log was force refreshed but no changes were needed.
-    ANNOTATED_CALL_LOG_FORCE_REFRESH_NO_CHANGES_NEEDED = 1343;
-    // The call log was dirty and changes were needed.
-    ANNOTATED_CALL_LOG_CHANGES_NEEDED = 1344;
-    // The call log was force refreshed and changes were needed.
-    ANNOTATED_CALL_LOG_FORCE_REFRESH_CHANGES_NEEDED = 1345;
-
-    MAIN_VVM_TAB_VISIBLE = 1346;
-
-    // Main bottom navigation bar non user actions
-    MAIN_OPEN_WITH_TAB_FAVORITE = 1347;
-    MAIN_OPEN_WITH_TAB_CALL_LOG = 1348;
-    MAIN_OPEN_WITH_TAB_CONTACTS = 1349;
-    MAIN_OPEN_WITH_TAB_VOICEMAIL = 1350;
-    MAIN_OPEN_WITH_DIALPAD = 1351;
-
-    // Incoming call screened for spam auto blocking
-    INCOMING_CALL_SCREENED = 1352;
-    // Incoming call auto blocked as spam
-    INCOMING_CALL_AUTO_BLOCKED_AS_SPAM = 1353;
-    // Incoming voicemail screened for spam auto blocking
-    INCOMING_VOICEMAIL_SCREENED = 1354;
-    // Incoming voicemail auto blocked as spam
-    INCOMING_VOICEMAIL_AUTO_BLOCKED_AS_SPAM = 1355;
-    // User reported auto blocked spam call as spam
-    AUTO_BLOCKED_SPAM_CALL_REPORTED_AS_SPAM = 1356;
-    // User reported auto blocked spam call as not spam
-    AUTO_BLOCKED_SPAM_CALL_REPORTED_AS_NOT_SPAM = 1357;
-
-    // User enabled spam blocking through setting page.
-    SPAM_BLOCKING_ENABLED_THROUGH_SETTING = 1358;
-    // User disabled spam blocking through setting page.
-    SPAM_BLOCKING_DISABLED_THROUGH_SETTING = 1359;
-    // Failure happened while modifying spam blocking setting.
-    SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_SETTING = 1360;
-
-    VVM_NOTIFICATIONS_SETTING_CLICKED = 1361;
-    VVM_USER_TURNED_TRANSCRIBE_ON_FROM_SETTINGS = 1362;
-    VVM_USER_TURNED_TRANSCRIBE_OFF_FROM_SETTINGS = 1363;
-    VVM_USER_TURNED_DONATION_ON_FROM_SETTINGS = 1364;
-    VVM_USER_TURNED_DONATION_OFF_FROM_SETTINGS = 1365;
-
-    // Spam blocking call log promo shown for user.
-    SPAM_BLOCKING_CALL_LOG_PROMO_SHOWN = 1366;
-    // User enabled spam blocking through call log promo.
-    SPAM_BLOCKING_ENABLED_THROUGH_CALL_LOG_PROMO = 1367;
-    // Failure happened while enabling spam blocking through call log promo.
-    SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_CALL_LOG_PROMO = 1368;
-
-    TOKEN_FETCHER_NEED_USER_APPROVAL = 1371;
-    TOKEN_FETCHER_IO_EXCEPTION = 1372;
-    TOKEN_FETCHER_AUTH_EXCEPTION = 1373;
-    TOKEN_FETCHER_CLEAR_EXCEPTION = 1374;
-
-    PEOPLE_API_LOOKUP_FAILED = 1375;
-
-    // New Speed Dial impressions
-    LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT = 1376;
-    LIGHTBRINGER_VIDEO_REQUESTED_FOR_SUGGESTED_CONTACT = 1377;
-    LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT_DISAMBIG = 1378;
-
-    // Spam blocking after call notification promo shown for user.
-    SPAM_BLOCKING_AFTER_CALL_NOTIFICATION_PROMO_SHOWN = 1379;
-    // User enabled spam blocking through after call notification promo.
-    SPAM_BLOCKING_ENABLED_THROUGH_AFTER_CALL_NOTIFICATION_PROMO = 1380;
-    // Failure happened while enabling spam blocking through after call
-    // notification promo.
-    SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_AFTER_CALL_NOTIFICATION_PROMO = 1381;
-
-    // RTT call impressions
-    OUTGOING_RTT_CALL = 1382;
-    INCOMING_RTT_CALL = 1383;
-    // The call turns into RTT call mid call.
-    RTT_MID_CALL_ENABLED = 1384;
-    // Mid call RTT request accepted.
-    RTT_MID_CALL_ACCEPTED = 1385;
-    // Mid call RTT request rejected.
-    RTT_MID_CALL_REJECTED = 1386;
-
-    // Send button clicked in RTT call, this includes send button on keyboard.
-    RTT_SEND_BUTTON_CLICKED = 1387;
-    RTT_KEYBOARD_SEND_BUTTON_CLICKED = 1388;
-
-    // For background calling
-    START_CALL_IN_BUBBLE_MODE = 1392;
-
-    // Switch audio route
-    IN_CALL_SWITCH_AUDIO_ROUTE_SPEAKER = 1393;
-    IN_CALL_SWITCH_AUDIO_ROUTE_WIRED_HEADSET = 1394;
-    IN_CALL_SWITCH_AUDIO_ROUTE_EARPIECE = 1395;
-    IN_CALL_SWITCH_AUDIO_ROUTE_BLUETOOTH = 1396;
-
-    // Impressions for PhoneLookup
-    PEOPLE_API_PHONE_LOOKUP_TIMEOUT = 1397;
-    CP2_EXTENDED_DIRECTORY_PHONE_LOOKUP_TIMEOUT = 1398;
-
-    // Favorite general
-    FAVORITE_ADD_FAVORITE = 1399;
-    FAVORITE_OPEN_DISAMBIG_DIALOG = 1400;
-    FAVORITE_REMOVE_FAVORITE_BY_DRAG_AND_DROP = 1401;
-    FAVORITE_MOVE_FAVORITE_BY_DRAG_AND_DROP = 1402;
-    // Favorite menu
-    FAVORITE_OPEN_FAVORITE_MENU = 1403;
-    FAVORITE_SEND_MESSAGE = 1404;
-    FAVORITE_OPEN_CONTACT_CARD = 1405;
-    FAVORITE_REMOVE_FAVORITE = 1406;  // Include drag and drop
-    // Favorite disambig
-    FAVORITE_SET_VIDEO_DEFAULT = 1407;
-    FAVORITE_SET_VOICE_DEFAULT = 1408;
-  }
-}
diff --git a/java/com/android/dialer/logging/interaction_event.proto b/java/com/android/dialer/logging/interaction_event.proto
deleted file mode 100644
index d7a09bd..0000000
--- a/java/com/android/dialer/logging/interaction_event.proto
+++ /dev/null
@@ -1,66 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message InteractionEvent {
-  // Next Tag: 38
-  enum Type {
-
-    UNKNOWN = 0;
-
-    // Leaving tags 1-14 for more frequent interactions, e.g. ANSWERED_CALL
-
-    // An incoming call was blocked
-    CALL_BLOCKED = 15;
-
-    // The user blocked a number from the Call Log screen
-    BLOCK_NUMBER_CALL_LOG = 16;
-
-    // The user blocked a number from the Call details screen
-    BLOCK_NUMBER_CALL_DETAIL = 17;
-
-    // The user blocked a number from the Management screen
-    BLOCK_NUMBER_MANAGEMENT_SCREEN = 18;
-
-    // The user unblocked a number from the Call Log screen
-    UNBLOCK_NUMBER_CALL_LOG = 19;
-
-    // The user unblocked a number from the Call details screen
-    UNBLOCK_NUMBER_CALL_DETAIL = 20;
-
-    // The user unblocked a number from the Management screen
-    UNBLOCK_NUMBER_MANAGEMENT_SCREEN = 21;
-
-    // The user blocked numbers from contacts marked as send to voicemail
-    IMPORT_SEND_TO_VOICEMAIL = 22;
-
-    // The user blocked a number then undid the block
-    UNDO_BLOCK_NUMBER = 23;
-
-    // The user unblocked a number then undid the unblock
-    UNDO_UNBLOCK_NUMBER = 24;
-
-    // Actions in speed dial
-    SPEED_DIAL_PIN_CONTACT = 25;
-    SPEED_DIAL_REMOVE_CONTACT = 26;
-    SPEED_DIAL_OPEN_CONTACT_CARD = 27;
-    SPEED_DIAL_CLICK_CONTACT_WITH_AMBIGUOUS_NUMBER = 28;
-
-    SPEED_DIAL_SET_DEFAULT_NUMBER_FOR_AMBIGUOUS_CONTACT = 29;
-
-    // Open quick contact from where
-    OPEN_QUICK_CONTACT_FROM_CALL_LOG = 30;
-    OPEN_QUICK_CONTACT_FROM_CALL_DETAILS = 31;
-    OPEN_QUICK_CONTACT_FROM_ALL_CONTACTS_GENERAL = 32;
-    OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_BADGE = 33;
-    OPEN_QUICK_CONTACT_FROM_CONTACTS_FRAGMENT_ITEM = 34;
-    OPEN_QUICK_CONTACT_FROM_SEARCH = 35;
-    OPEN_QUICK_CONTACT_FROM_VOICEMAIL = 36;
-    OPEN_QUICK_CONTACT_FROM_CALL_HISTORY = 37;
-  }
-}
diff --git a/java/com/android/dialer/logging/people_api_lookup_error.proto b/java/com/android/dialer/logging/people_api_lookup_error.proto
deleted file mode 100644
index 4506416..0000000
--- a/java/com/android/dialer/logging/people_api_lookup_error.proto
+++ /dev/null
@@ -1,18 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message PeopleApiLookupError {
-  enum Type {
-    UNKNOWN = 0;
-    HTTP_RESPONSE_ERROR = 1;
-    WRONG_KIND_VALUE = 2;
-    NO_ITEM_FOUND = 3;
-    JSON_PARSING_ERROR = 4;
-  }
-}
diff --git a/java/com/android/dialer/logging/reporting_location.proto b/java/com/android/dialer/logging/reporting_location.proto
deleted file mode 100644
index d2fd6dd..0000000
--- a/java/com/android/dialer/logging/reporting_location.proto
+++ /dev/null
@@ -1,19 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message ReportingLocation {
-  // Spam reporting location
-  enum Type {
-    UNKNOWN_REPORTING_LOCATION = 0;
-    CALL_LOG_HISTORY = 1;
-    FEEDBACK_PROMPT = 2;
-    VOICEMAIL_HISTORY = 3;
-    CONTACT_DETAILS = 4;
-  }
-}
diff --git a/java/com/android/dialer/logging/screen_event.proto b/java/com/android/dialer/logging/screen_event.proto
deleted file mode 100644
index 8081f6e..0000000
--- a/java/com/android/dialer/logging/screen_event.proto
+++ /dev/null
@@ -1,79 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message ScreenEvent {
-  enum Type {
-
-    UNKNOWN = 0;
-
-    DIALPAD = 1;
-
-    SPEED_DIAL = 2;
-
-    CALL_LOG = 3;
-
-    // The tab containing the list of voicemails only.
-    VOICEMAIL_LOG = 4;
-
-    // The tab containing the list of all contacts.
-    ALL_CONTACTS = 5;
-
-    // List of search results returned by typing into the search box.
-    REGULAR_SEARCH = 6;
-
-    // List of search results returned by typing into the dialpad.
-    SMART_DIAL_SEARCH = 7;
-
-    CALL_LOG_FILTER = 8;
-
-    SETTINGS = 9;
-
-    // The "Import/export contacts" dialog launched via the overflow menu.
-    IMPORT_EXPORT_CONTACTS = 10;
-
-    // The "Clear frequents" dialog launched via the overflow menu.
-    CLEAR_FREQUENTS = 11;
-
-    // The "Send feedback" dialog launched via the overflow menu.
-    SEND_FEEDBACK = 12;
-
-    // The main in call screen that displays caller details and contact photos
-    INCALL = 13;
-
-    // The screen that displays the glowpad widget (slide right to answer,
-    // slide left to dismiss).
-    INCOMING_CALL = 14;
-
-    // Conference management fragment displayed for conferences that support
-    // management of individual calls within the conference.
-    CONFERENCE_MANAGEMENT = 15;
-
-    // The dialpad displayed in-call that is used to send dtmf tones.
-    INCALL_DIALPAD = 16;
-
-    // Menu options displayed when long pressing on a call log entry
-    CALL_LOG_CONTEXT_MENU = 17;
-
-    // Screen displayed to allow the user to see an overview of all blocked
-    // numbers
-    BLOCKED_NUMBER_MANAGEMENT = 18;
-
-    // Screen displayed to allow the user to add a new blocked number
-    BLOCKED_NUMBER_ADD_NUMBER = 19;
-
-    CALL_DETAILS = 20;
-
-    MAIN_SPEED_DIAL = 21;
-    MAIN_CALL_LOG = 22;
-    MAIN_CONTACTS = 23;
-    MAIN_VOICEMAIL = 24;
-    MAIN_DIALPAD = 25;
-    MAIN_SEARCH = 26;
-  }
-}
diff --git a/java/com/android/dialer/logging/ui_action.proto b/java/com/android/dialer/logging/ui_action.proto
deleted file mode 100644
index d14bfbb..0000000
--- a/java/com/android/dialer/logging/ui_action.proto
+++ /dev/null
@@ -1,44 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message UiAction {
-  enum Type {
-    UNKNOWN = 0;
-
-    // General action starting from 1
-    CHANGE_TAB_TO_FAVORITE = 1;
-    CHANGE_TAB_TO_CALL_LOG = 2;
-    CHANGE_TAB_TO_CONTACTS = 3;
-    CHANGE_TAB_TO_VOICEMAIL = 4;
-    PRESS_ANDROID_BACK_BUTTON = 5;
-    TEXT_CHANGE_WITH_INPUT = 6;
-    SCROLL = 7;
-
-    // In call log, starting from 100
-    CLICK_CALL_LOG_ITEM = 100;
-    OPEN_CALL_DETAIL = 101;
-    CLOSE_CALL_DETAIL_WITH_CANCEL_BUTTON = 102;
-    COPY_NUMBER_IN_CALL_DETAIL = 103;
-    EDIT_NUMBER_BEFORE_CALL_IN_CALL_DETAIL = 104;
-
-    // In dialpad, starting from 200
-    OPEN_DIALPAD = 200;
-    CLOSE_DIALPAD = 201;
-    PRESS_CALL_BUTTON_WITHOUT_CALLING = 202;
-
-    // In search, starting from 300
-    OPEN_SEARCH = 300;
-    HIDE_KEYBOARD_IN_SEARCH = 301;
-    CLOSE_SEARCH_WITH_HIDE_BUTTON = 302;
-
-    // In call history, starting from 400
-    OPEN_CALL_HISTORY = 400;
-    CLOSE_CALL_HISTORY_WITH_CANCEL_BUTTON = 401;
-  }
-}
diff --git a/java/com/android/dialer/logging/video_tech.proto b/java/com/android/dialer/logging/video_tech.proto
deleted file mode 100644
index 1f274be..0000000
--- a/java/com/android/dialer/logging/video_tech.proto
+++ /dev/null
@@ -1,18 +0,0 @@
-syntax = "proto2";
-
-package com.android.dialer.logging;
-option java_package = "com.android.dialer.logging";
-option java_multiple_files = true;
-
-
-
-
-message VideoTech {
-  enum Type {
-    NONE = 0;
-
-    IMS_VIDEO_TECH = 1;
-    LIGHTBRINGER_VIDEO_TECH = 2;
-    RCS_VIDEO_SHARE = 3;
-  }
-}
\ No newline at end of file
diff --git a/java/com/android/dialer/lookup/ContactBuilder.java b/java/com/android/dialer/lookup/ContactBuilder.java
new file mode 100644
index 0000000..39afe3a
--- /dev/null
+++ b/java/com/android/dialer/lookup/ContactBuilder.java
@@ -0,0 +1,399 @@
+/*
+ * Copyright (C) 2014 Xiao-Long Chen <chillermillerlong@hotmail.com>
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup;
+
+import android.content.ContentResolver;
+import android.net.Uri;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.CommonDataKinds.Website;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Directory;
+import android.provider.ContactsContract.DisplayNameSources;
+import android.util.Log;
+
+import com.android.contacts.common.util.Constants;
+import com.android.dialer.R;
+import com.android.dialer.phonenumbercache.ContactInfo;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+
+public class ContactBuilder {
+  private static final String TAG = ContactBuilder.class.getSimpleName();
+
+  private static final boolean DEBUG = false;
+
+  /** Default photo for businesses if no other image is found */
+  public static final String PHOTO_URI_BUSINESS = new Uri.Builder()
+      .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
+      .authority("com.android.dialer")
+      .appendPath(String.valueOf(R.drawable.ic_places_picture_180_holo_light))
+      .build()
+      .toString();
+
+  private final ArrayList<Address> addresses = new ArrayList<>();
+  private final ArrayList<PhoneNumber> phoneNumbers = new ArrayList<>();
+  private final ArrayList<WebsiteUrl> websites = new ArrayList<>();
+
+  private final long directoryId;
+  private Name name;
+  private final String normalizedNumber;
+  private final String formattedNumber;
+  private Uri photoUri;
+
+  public static ContactBuilder forForwardLookup(String number) {
+      return new ContactBuilder(DirectoryId.NEARBY, null, number);
+  }
+
+  public static ContactBuilder forReverseLookup(String normalizedNumber, String formattedNumber) {
+      return new ContactBuilder(DirectoryId.NULL, normalizedNumber, formattedNumber);
+  }
+
+  private ContactBuilder(long directoryId, String normalizedNumber, String formattedNumber) {
+    this.directoryId = directoryId;
+    this.normalizedNumber = normalizedNumber;
+    this.formattedNumber = formattedNumber;
+  }
+
+  public ContactBuilder addAddress(Address address) {
+    if (DEBUG) Log.d(TAG, "Adding address");
+    if (address != null) {
+      addresses.add(address);
+    }
+    return this;
+  }
+
+  public ContactBuilder addPhoneNumber(PhoneNumber phoneNumber) {
+    if (DEBUG) Log.d(TAG, "Adding phone number");
+    if (phoneNumber != null) {
+      phoneNumbers.add(phoneNumber);
+    }
+    return this;
+  }
+
+  public ContactBuilder addWebsite(WebsiteUrl website) {
+    if (DEBUG) Log.d(TAG, "Adding website");
+    if (website != null) {
+      websites.add(website);
+    }
+    return this;
+  }
+
+  public ContactBuilder setName(Name name) {
+    if (DEBUG) Log.d(TAG, "Setting name");
+    if (name != null) {
+      this.name = name;
+    }
+    return this;
+  }
+
+  public ContactBuilder setPhotoUri(String photoUri) {
+    if (photoUri != null) {
+      setPhotoUri(Uri.parse(photoUri));
+    }
+    return this;
+  }
+
+  public ContactBuilder setPhotoUri(Uri photoUri) {
+    if (DEBUG) Log.d(TAG, "Setting photo URI");
+    this.photoUri = photoUri;
+    return this;
+  }
+
+  public ContactInfo build() {
+    if (name == null) {
+      throw new IllegalStateException("Name has not been set");
+    }
+
+    // Use the incoming call's phone number if no other phone number
+    // is specified. The reverse lookup source could present the phone
+    // number differently (eg. without the area code).
+    if (phoneNumbers.isEmpty()) {
+      PhoneNumber pn = new PhoneNumber();
+      // Use the formatted number where possible
+      pn.number = formattedNumber != null
+              ? formattedNumber : normalizedNumber;
+      pn.type = Phone.TYPE_MAIN;
+      addPhoneNumber(pn);
+    }
+
+    try {
+      JSONObject contact = new JSONObject();
+
+      // Insert the name
+      contact.put(StructuredName.CONTENT_ITEM_TYPE, name.getJsonObject());
+
+      // Insert phone numbers
+      JSONArray phoneNumbersJson = new JSONArray();
+      for (PhoneNumber number : phoneNumbers) {
+        phoneNumbersJson.put(number.getJsonObject());
+      }
+      contact.put(Phone.CONTENT_ITEM_TYPE, phoneNumbersJson);
+
+      // Insert addresses if there are any
+      if (!addresses.isEmpty()) {
+        JSONArray addressesJson = new JSONArray();
+        for (Address address : addresses) {
+          addressesJson.put(address.getJsonObject());
+        }
+        contact.put(StructuredPostal.CONTENT_ITEM_TYPE, addressesJson);
+      }
+
+      // Insert websites if there are any
+      if (!websites.isEmpty()) {
+        JSONArray websitesJson = new JSONArray();
+        for (WebsiteUrl site : websites) {
+          websitesJson.put(site.getJsonObject());
+        }
+        contact.put(Website.CONTENT_ITEM_TYPE, websitesJson);
+      }
+
+      ContactInfo info = new ContactInfo();
+      info.name = name.displayName;
+      info.normalizedNumber = normalizedNumber;
+      info.number = phoneNumbers.get(0).number;
+      info.type = phoneNumbers.get(0).type;
+      info.label = phoneNumbers.get(0).label;
+      info.photoUri = photoUri;
+
+      String json = new JSONObject()
+          .put(Contacts.DISPLAY_NAME, name.displayName)
+          .put(Contacts.DISPLAY_NAME_SOURCE, DisplayNameSources.ORGANIZATION)
+          .put(Directory.EXPORT_SUPPORT, Directory.EXPORT_SUPPORT_ANY_ACCOUNT)
+          .put(Contacts.CONTENT_ITEM_TYPE, contact)
+          .toString();
+
+      if (json != null) {
+        info.lookupUri = Contacts.CONTENT_LOOKUP_URI
+            .buildUpon()
+            .appendPath(Constants.LOOKUP_URI_ENCODED)
+            .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY,
+                String.valueOf(directoryId))
+            .encodedFragment(json)
+            .build();
+      }
+
+      return info;
+    } catch (JSONException e) {
+      Log.e(TAG, "Failed to build contact", e);
+      return null;
+    }
+  }
+
+  // android.provider.ContactsContract.CommonDataKinds.StructuredPostal
+  public static class Address {
+    public String formattedAddress;
+    public int type;
+    public String label;
+    public String street;
+    public String poBox;
+    public String neighborhood;
+    public String city;
+    public String region;
+    public String postCode;
+    public String country;
+
+    public static Address createFormattedHome(String address) {
+      if (address == null) {
+        return null;
+      }
+      Address a = new Address();
+      a.formattedAddress = address;
+      a.type = StructuredPostal.TYPE_HOME;
+      return a;
+    }
+
+    public JSONObject getJsonObject() throws JSONException {
+      JSONObject json = new JSONObject();
+      json.putOpt(StructuredPostal.FORMATTED_ADDRESS, formattedAddress);
+      json.put(StructuredPostal.TYPE, type);
+      json.putOpt(StructuredPostal.LABEL, label);
+      json.putOpt(StructuredPostal.STREET, street);
+      json.putOpt(StructuredPostal.POBOX, poBox);
+      json.putOpt(StructuredPostal.NEIGHBORHOOD, neighborhood);
+      json.putOpt(StructuredPostal.CITY, city);
+      json.putOpt(StructuredPostal.REGION, region);
+      json.putOpt(StructuredPostal.POSTCODE, postCode);
+      json.putOpt(StructuredPostal.COUNTRY, country);
+      return json;
+    }
+
+    public Address() {}
+
+    public Address(JSONObject json) throws JSONException {
+      if (json.has(StructuredPostal.FORMATTED_ADDRESS)) {
+        formattedAddress = json.getString(StructuredPostal.FORMATTED_ADDRESS);
+      }
+    }
+
+    public String toString() {
+      return "formattedAddress: " + formattedAddress + "; " +
+          "type: " + type + "; " +
+          "label: " + label + "; " +
+          "street: " + street + "; " +
+          "poBox: " + poBox + "; " +
+          "neighborhood: " + neighborhood + "; " +
+          "city: " + city + "; " +
+          "region: " + region + "; " +
+          "postCode: " + postCode + "; " +
+          "country: " + country;
+    }
+  }
+
+  // android.provider.ContactsContract.CommonDataKinds.StructuredName
+  public static class Name {
+    public String displayName;
+    public String givenName;
+    public String familyName;
+    public String prefix;
+    public String middleName;
+    public String suffix;
+    public String phoneticGivenName;
+    public String phoneticMiddleName;
+    public String phoneticFamilyName;
+
+    public static Name createDisplayName(String displayName) {
+      Name name = new Name();
+      name.displayName = displayName;
+      return name;
+    }
+
+    public JSONObject getJsonObject() throws JSONException {
+      JSONObject json = new JSONObject();
+      json.putOpt(StructuredName.DISPLAY_NAME, displayName);
+      json.putOpt(StructuredName.GIVEN_NAME, givenName);
+      json.putOpt(StructuredName.FAMILY_NAME, familyName);
+      json.putOpt(StructuredName.PREFIX, prefix);
+      json.putOpt(StructuredName.MIDDLE_NAME, middleName);
+      json.putOpt(StructuredName.SUFFIX, suffix);
+      json.putOpt(StructuredName.PHONETIC_GIVEN_NAME, phoneticGivenName);
+      json.putOpt(StructuredName.PHONETIC_MIDDLE_NAME, phoneticMiddleName);
+      json.putOpt(StructuredName.PHONETIC_FAMILY_NAME, phoneticFamilyName);
+      return json;
+    }
+
+    public Name(JSONObject json) throws JSONException {
+      if (json != null) {
+        displayName = json.optString(StructuredName.DISPLAY_NAME, null);
+      }
+    }
+
+    public Name() {}
+
+    public String toString() {
+      return "displayName: " + displayName + "; " +
+          "givenName: " + givenName + "; " +
+          "familyName: " + familyName + "; " +
+          "prefix: " + prefix + "; " +
+          "middleName: " + middleName + "; " +
+          "suffix: " + suffix + "; " +
+          "phoneticGivenName: " + phoneticGivenName + "; " +
+          "phoneticMiddleName: " + phoneticMiddleName + "; " +
+          "phoneticFamilyName: " + phoneticFamilyName;
+    }
+  }
+
+  // android.provider.ContactsContract.CommonDataKinds.Phone
+  public static class PhoneNumber {
+    public String number;
+    public int type;
+    public String label;
+
+    public static PhoneNumber createMainNumber(String number) {
+      PhoneNumber n = new PhoneNumber();
+      n.number = number;
+      n.type = Phone.TYPE_MAIN;
+      return n;
+    }
+
+    public JSONObject getJsonObject() throws JSONException {
+      JSONObject json = new JSONObject();
+      json.put(Phone.NUMBER, number);
+      json.put(Phone.TYPE, type);
+      json.putOpt(Phone.LABEL, label);
+      return json;
+    }
+
+    public PhoneNumber(JSONObject json) throws JSONException {
+      number = json.getString(Phone.NUMBER);
+      type = json.getInt(Phone.TYPE);
+      if (json.has(Phone.LABEL)) {
+        label = json.getString(Phone.LABEL);
+      }
+    }
+
+    public PhoneNumber() {}
+
+    public String toString() {
+      return "number: " + number + "; " +
+          "type: " + type + "; " +
+          "label: " + label;
+    }
+  }
+
+  // android.provider.ContactsContract.CommonDataKinds.Website
+  public static class WebsiteUrl {
+    public String url;
+    public int type;
+    public String label;
+
+    public static WebsiteUrl createProfile(String url) {
+      if (url == null) {
+        return null;
+      }
+      WebsiteUrl u = new WebsiteUrl();
+      u.url = url;
+      u.type = Website.TYPE_PROFILE;
+      return u;
+    }
+
+    public JSONObject getJsonObject() throws JSONException {
+      JSONObject json = new JSONObject();
+      json.put(Website.URL, url);
+      json.put(Website.TYPE, type);
+      json.putOpt(Website.LABEL, label);
+      return json;
+    }
+
+    public WebsiteUrl() {}
+
+    public WebsiteUrl(JSONObject json) throws JSONException {
+      if (json.has(Website.URL)) {
+        url = json.getString(Website.URL);
+      }
+      if (json.has(Website.TYPE)) {
+        type = json.getInt(Website.TYPE);
+      }
+      if (json.has(Website.LABEL)) {
+        label = json.getString(Website.LABEL);
+      }
+    }
+
+    public String toString() {
+      return "url: " + url + "; " +
+          "type: " + type + "; " +
+          "label: " + label;
+    }
+  }
+}
diff --git a/java/com/android/dialer/lookup/DirectoryId.java b/java/com/android/dialer/lookup/DirectoryId.java
new file mode 100644
index 0000000..1d39d74
--- /dev/null
+++ b/java/com/android/dialer/lookup/DirectoryId.java
@@ -0,0 +1,33 @@
+package com.android.dialer.lookup;
+
+import android.net.Uri;
+import android.provider.ContactsContract;
+
+public class DirectoryId {
+  // default contacts directory
+  public static final long DEFAULT = ContactsContract.Directory.DEFAULT;
+
+  // id for a non existant directory
+  public static final long NULL = Long.MAX_VALUE;
+
+  // id for nearby forward lookup results (not a real directory)
+  public static final long NEARBY = NULL - 1;
+
+  // id for people forward lookup results (not a real directory)
+  public static final long PEOPLE = NULL - 2;
+
+  public static boolean isFakeDirectory(long directory) {
+    return directory == NULL || directory == NEARBY || directory == PEOPLE;
+  }
+
+  public static long fromUri(Uri lookupUri) {
+    long directory = DirectoryId.DEFAULT;
+    if (lookupUri != null) {
+      String dqp = lookupUri.getQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY);
+      if (dqp != null) {
+        directory = Long.parseLong(dqp);
+      }
+    }
+    return directory;
+  }
+}
diff --git a/java/com/android/dialer/lookup/ForwardLookup.java b/java/com/android/dialer/lookup/ForwardLookup.java
new file mode 100644
index 0000000..6d8be80
--- /dev/null
+++ b/java/com/android/dialer/lookup/ForwardLookup.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2014 Xiao-Long Chen <chillermillerlong@hotmail.com>
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup;
+
+import android.content.Context;
+import android.location.Location;
+import android.util.Log;
+
+import com.android.dialer.lookup.openstreetmap.OpenStreetMapForwardLookup;
+import com.android.dialer.phonenumbercache.ContactInfo;
+
+import java.util.List;
+
+public abstract class ForwardLookup {
+  private static final String TAG = ForwardLookup.class.getSimpleName();
+
+  private static ForwardLookup INSTANCE = null;
+
+  public static ForwardLookup getInstance(Context context) {
+    String provider = LookupSettings.getForwardLookupProvider(context);
+
+    if (INSTANCE == null || !isInstance(provider)) {
+      Log.d(TAG, "Chosen forward lookup provider: " + provider);
+
+      if (provider.equals(LookupSettings.FLP_OPENSTREETMAP)) {
+        INSTANCE = new OpenStreetMapForwardLookup(context);
+      }
+    }
+
+    return INSTANCE;
+  }
+
+  private static boolean isInstance(String provider) {
+    if (provider.equals(LookupSettings.FLP_OPENSTREETMAP)
+        && INSTANCE instanceof OpenStreetMapForwardLookup) {
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  public abstract List<ContactInfo> lookup(Context context, String filter, Location lastLocation);
+}
diff --git a/java/com/android/dialer/lookup/LookupCache.java b/java/com/android/dialer/lookup/LookupCache.java
new file mode 100644
index 0000000..10305e5
--- /dev/null
+++ b/java/com/android/dialer/lookup/LookupCache.java
@@ -0,0 +1,298 @@
+/*
+ * Copyright (C) 2014 Xiao-Long Chen <chenxiaolong@cxl.epac.to>
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.provider.ContactsContract.Contacts;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.util.JsonReader;
+import android.util.JsonWriter;
+import android.util.Log;
+
+import com.android.dialer.phonenumbercache.ContactInfo;
+import com.android.dialer.util.DialerUtils;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+
+public class LookupCache {
+  private static final String TAG = LookupCache.class.getSimpleName();
+
+  public static final String NAME = "Name";
+  public static final String TYPE = "Type";
+  public static final String LABEL = "Label";
+  public static final String NUMBER = "Number";
+  public static final String FORMATTED_NUMBER = "FormattedNumber";
+  public static final String NORMALIZED_NUMBER = "NormalizedNumber";
+  public static final String PHOTO_ID = "PhotoID";
+  public static final String LOOKUP_URI = "LookupURI";
+
+  public static boolean hasCachedContact(Context context, String number) {
+    String normalizedNumber = formatE164(context, number);
+    if (normalizedNumber == null) {
+        return false;
+    }
+
+    File file = getFilePath(context, normalizedNumber);
+    return file.exists();
+  }
+
+  public static void cacheContact(Context context, ContactInfo info) {
+    File file = getFilePath(context, info.normalizedNumber);
+
+    if (file.exists()) {
+      file.delete();
+    }
+
+    FileOutputStream out = null;
+    JsonWriter writer = null;
+
+    try {
+      out = new FileOutputStream(file);
+      writer = new JsonWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
+      writer.setIndent("  ");
+      List messages = new ArrayList();
+
+      writer.beginObject();
+      if (info.name != null) {
+        writer.name(NAME).value(info.name);
+      }
+      writer.name(TYPE).value(info.type);
+      if (info.label != null) {
+        writer.name(LABEL).value(info.label);
+      }
+      if (info.number != null) {
+        writer.name(NUMBER).value(info.number);
+      }
+      if (info.formattedNumber != null) {
+          writer.name(FORMATTED_NUMBER).value(info.formattedNumber);
+      }
+      if (info.normalizedNumber != null) {
+          writer.name(NORMALIZED_NUMBER).value(info.normalizedNumber);
+      }
+      writer.name(PHOTO_ID).value(info.photoId);
+
+      if (info.lookupUri != null) {
+          writer.name(LOOKUP_URI).value(info.lookupUri.toString());
+      }
+
+      // We do not save the photo URI. If there's a cached image, that
+      // will be used when the contact is retrieved. Otherwise, photoUri
+      // will be set to null.
+
+      writer.endObject();
+    } catch (IOException e) {
+      e.printStackTrace();
+    } finally {
+      DialerUtils.closeQuietly(writer);
+      DialerUtils.closeQuietly(out);
+    }
+  }
+
+  public static ContactInfo getCachedContact(Context context, String number) {
+    String normalizedNumber = formatE164(context, number);
+    if (normalizedNumber == null) {
+      return null;
+    }
+
+    File file = getFilePath(context, normalizedNumber);
+    if (!file.exists()) {
+      // Whatever is calling this should probably check anyway
+      return null;
+    }
+
+    ContactInfo info = new ContactInfo();
+
+    FileInputStream in = null;
+    JsonReader reader = null;
+
+    try {
+      in = new FileInputStream(file);
+      reader = new JsonReader(new InputStreamReader(in, StandardCharsets.UTF_8));
+
+      reader.beginObject();
+      while (reader.hasNext()) {
+        String name = reader.nextName();
+
+        if (NAME.equals(name)) {
+          info.name = reader.nextString();
+        } else if (TYPE.equals(name)) {
+          info.type = reader.nextInt();
+        } else if (LABEL.equals(name)) {
+          info.label = reader.nextString();
+        } else if (NUMBER.equals(name)) {
+          info.number = reader.nextString();
+        } else if (FORMATTED_NUMBER.equals(name)) {
+          info.formattedNumber = reader.nextString();
+        } else if (NORMALIZED_NUMBER.equals(name)) {
+          info.normalizedNumber = reader.nextString();
+        } else if (PHOTO_ID.equals(name)) {
+          info.photoId = reader.nextInt();
+        } else if (LOOKUP_URI.equals(name)) {
+          Uri lookupUri = Uri.parse(reader.nextString());
+
+          if (hasCachedImage(context, normalizedNumber)) {
+            // Insert cached photo URI
+            Uri image = Uri.withAppendedPath(LookupProvider.IMAGE_CACHE_URI,
+                Uri.encode(normalizedNumber));
+
+            String json = lookupUri.getEncodedFragment();
+            if (json != null) {
+              try {
+                JSONObject jsonObj = new JSONObject(json);
+                jsonObj.putOpt(Contacts.PHOTO_URI, image.toString());
+                lookupUri = lookupUri.buildUpon()
+                    .encodedFragment(jsonObj.toString())
+                    .build();
+              } catch (JSONException e) {
+                Log.e(TAG, "Failed to add image URI to json", e);
+              }
+            }
+
+            info.photoUri = image;
+          }
+
+          info.lookupUri = lookupUri;
+        }
+      }
+      reader.endObject();
+    } catch (IOException e) {
+      e.printStackTrace();
+    } finally {
+      DialerUtils.closeQuietly(reader);
+      DialerUtils.closeQuietly(in);
+    }
+
+    return info;
+  }
+
+  public static void deleteCachedContacts(Context context) {
+    File dir = new File(context.getCacheDir(), "lookup");
+    if (!dir.exists()) {
+      Log.v(TAG, "Lookup cache directory does not exist. Not clearing it.");
+      return;
+    }
+
+    if (!dir.isDirectory()) {
+      Log.e(TAG, "Path " + dir + " is not a directory");
+      return;
+    }
+
+    File[] files = dir.listFiles();
+    if (files != null) {
+      for (File file : files) {
+        if (file.isFile()) {
+          file.delete();
+        }
+      }
+    }
+  }
+
+  public static void deleteCachedContact(Context context, String normalizedNumber) {
+    File f = getFilePath(context, normalizedNumber);
+    if (f.exists()) {
+      f.delete();
+    }
+
+    f = getImagePath(context, normalizedNumber);
+    if (f.exists()) {
+      f.delete();
+    }
+  }
+
+  public static boolean hasCachedImage(Context context, String number) {
+    String normalizedNumber = formatE164(context, number);
+    if (normalizedNumber == null) {
+      return false;
+    }
+
+    File file = getImagePath(context, normalizedNumber);
+    return file.exists();
+  }
+
+  public static Uri cacheImage(Context context, String normalizedNumber, Bitmap bmp) {
+    // Compress the cached images to save space
+    if (bmp == null) {
+      Log.e(TAG, "Failed to cache image");
+      return null;
+    }
+
+    File image = getImagePath(context, normalizedNumber);
+    FileOutputStream out = null;
+
+    try {
+      out = new FileOutputStream(image);
+      bmp.compress(Bitmap.CompressFormat.WEBP_LOSSLESS, 100, out);
+      return Uri.fromFile(image);
+    } catch (Exception e) {
+      e.printStackTrace();
+    } finally {
+      DialerUtils.closeQuietly(out);
+    }
+    return null;
+  }
+
+  public static Bitmap getCachedImage(Context context, String normalizedNumber) {
+    File image = getImagePath(context, normalizedNumber);
+    if (!image.exists()) {
+      return null;
+    }
+
+    BitmapFactory.Options options = new BitmapFactory.Options();
+    options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+    return BitmapFactory.decodeFile(image.getPath(), options);
+  }
+
+  private static String formatE164(Context context, String number) {
+    TelephonyManager tm = context.getSystemService(TelephonyManager.class);
+    String countryIso = tm.getSimCountryIso().toUpperCase();
+    return PhoneNumberUtils.formatNumberToE164(number, countryIso);
+  }
+
+  private static File getFilePath(Context context, String normalizedNumber) {
+    File dir = new File(context.getCacheDir(), "lookup");
+    if (!dir.exists()) {
+      dir.mkdirs();
+    }
+
+    return new File(dir, normalizedNumber + ".json");
+  }
+
+  public static File getImagePath(Context context, String normalizedNumber) {
+    File dir = new File(context.getCacheDir(), "lookup");
+    if (!dir.exists()) {
+      dir.mkdirs();
+    }
+
+    return new File(dir, normalizedNumber + ".webp");
+  }
+}
diff --git a/java/com/android/dialer/lookup/LookupCacheService.java b/java/com/android/dialer/lookup/LookupCacheService.java
new file mode 100644
index 0000000..87111d6
--- /dev/null
+++ b/java/com/android/dialer/lookup/LookupCacheService.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2018 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.logging.ContactSource;
+import com.android.dialer.phonenumbercache.CachedNumberLookupService;
+import com.android.dialer.phonenumbercache.ContactInfo;
+
+import java.io.InputStream;
+
+public class LookupCacheService implements CachedNumberLookupService {
+  @Override
+  public CachedContactInfo buildCachedContactInfo(ContactInfo info) {
+    return new LookupCachedContactInfo(info);
+  }
+
+  @Override
+  public void addContact(Context context, CachedContactInfo cachedInfo) {
+    LookupCache.cacheContact(context, cachedInfo.getContactInfo());
+  }
+
+  @Override
+  public CachedContactInfo lookupCachedContactFromNumber(Context context, String number) {
+    ContactInfo info = LookupCache.getCachedContact(context, number);
+    return info != null ? new LookupCachedContactInfo(info) : null;
+  }
+
+  @Override
+  public void clearAllCacheEntries(Context context) {
+    LookupCache.deleteCachedContacts(context);
+  }
+
+  @Override
+  public boolean isBusiness(ContactSource.Type sourceType) {
+    // We don't store source type, so assume false
+    return false;
+  }
+
+  @Override
+  public boolean canReportAsInvalid(ContactSource.Type sourceType, String objectId) {
+    return false;
+  }
+
+  @Override
+  public boolean reportAsInvalid(Context context, CachedContactInfo cachedContactInfo) {
+    return false;
+  }
+
+  @Override
+  public @Nullable Uri addPhoto(Context context, String number, InputStream in) {
+    TelephonyManager tm = context.getSystemService(TelephonyManager.class);
+    String countryIso = tm.getSimCountryIso().toUpperCase();
+    String normalized = number != null
+        ? PhoneNumberUtils.formatNumberToE164(number, countryIso) : null;
+    if (normalized != null) {
+      Bitmap bitmap = BitmapFactory.decodeStream(in, null, null);
+      if (bitmap != null) {
+        return LookupCache.cacheImage(context, normalized, bitmap);
+      }
+    }
+    return null;
+  }
+
+  private static class LookupCachedContactInfo implements CachedContactInfo {
+    private final ContactInfo info;
+
+    private LookupCachedContactInfo(ContactInfo info) {
+      this.info = info;
+    }
+
+    @Override
+    @NonNull
+    public ContactInfo getContactInfo() {
+      return info;
+    }
+
+    @Override
+    public void setSource(ContactSource.Type sourceType, String name, long directoryId) {
+    }
+
+    @Override
+    public void setDirectorySource(String name, long directoryId) {
+    }
+
+    @Override
+    public void setLookupKey(String lookupKey) {
+    }
+  }
+}
diff --git a/java/com/android/dialer/lookup/LookupProvider.java b/java/com/android/dialer/lookup/LookupProvider.java
new file mode 100644
index 0000000..725587c
--- /dev/null
+++ b/java/com/android/dialer/lookup/LookupProvider.java
@@ -0,0 +1,421 @@
+/*
+ * Copyright (C) 2014 Xiao-Long Chen <chillermillerlong@hotmail.com>
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup;
+
+import android.annotation.SuppressLint;
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.UriMatcher;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.location.Location;
+import android.location.LocationManager;
+import android.net.Uri;
+import android.os.CancellationSignal;
+import android.os.ParcelFileDescriptor;
+import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.Contacts;
+import android.util.Log;
+
+import com.android.dialer.phonenumbercache.ContactInfo;
+import com.android.dialer.searchfragment.common.Projections;
+import com.android.dialer.util.PermissionsUtil;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+public class LookupProvider extends ContentProvider {
+  private static final String TAG = LookupProvider.class.getSimpleName();
+
+  private static final boolean DEBUG = false;
+
+  public static final String AUTHORITY = "com.android.dialer.lookup";
+  public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
+  public static final Uri NEARBY_LOOKUP_URI =
+      Uri.withAppendedPath(AUTHORITY_URI, "nearby");
+  public static final Uri NEARBY_AND_PEOPLE_LOOKUP_URI =
+      Uri.withAppendedPath(AUTHORITY_URI, "nearby_and_people");
+  public static final Uri IMAGE_CACHE_URI =
+      Uri.withAppendedPath(AUTHORITY_URI, "images");
+
+  private static final UriMatcher uriMatcher = new UriMatcher(-1);
+  private final LinkedList<FutureTask> activeTasks = new LinkedList<>();
+
+  private static final int NEARBY = 0;
+  private static final int PEOPLE = 1;
+  private static final int NEARBY_AND_PEOPLE = 2;
+  private static final int IMAGE = 3;
+
+  static {
+    uriMatcher.addURI(AUTHORITY, "nearby/*", NEARBY);
+    uriMatcher.addURI(AUTHORITY, "people/*", PEOPLE);
+    uriMatcher.addURI(AUTHORITY, "nearby_and_people/*", NEARBY_AND_PEOPLE);
+    uriMatcher.addURI(AUTHORITY, "images/*", IMAGE);
+  }
+
+  private class FutureCallable<T> implements Callable<T> {
+    private final Callable<T> callable;
+    private volatile FutureTask<T> future;
+
+    public FutureCallable(Callable<T> callable) {
+      future = null;
+      this.callable = callable;
+    }
+
+    public T call() throws Exception {
+      Log.v(TAG, "Future called for " + Thread.currentThread().getName());
+
+      T result = callable.call();
+      if (future == null) {
+        return result;
+      }
+
+      synchronized (activeTasks) {
+        activeTasks.remove(future);
+      }
+
+      future = null;
+      return result;
+    }
+
+    public void setFuture(FutureTask<T> future) {
+      this.future = future;
+    }
+  }
+
+  @Override
+  public boolean onCreate() {
+    return true;
+  }
+
+  @Override
+  public Cursor query(Uri uri, final String[] projection, String selection,
+      String[] selectionArgs, String sortOrder) {
+    if (DEBUG) Log.v(TAG, "query: " + uri);
+
+    Location lastLocation = null;
+    final int match = uriMatcher.match(uri);
+
+    switch (match) {
+      case NEARBY:
+      case NEARBY_AND_PEOPLE:
+        if (!PermissionsUtil.hasLocationPermissions(getContext())) {
+          Log.v(TAG, "Location permission is missing, can not determine location.");
+        } else if (!isLocationEnabled()) {
+          Log.v(TAG, "Location settings is disabled, can no determine location.");
+        } else {
+          lastLocation = getLastLocation();
+        }
+        if (match == NEARBY && lastLocation == null) {
+          Log.v(TAG, "No location available, ignoring query.");
+          return null;
+        }
+        // fall through to the actual query
+
+      case PEOPLE:
+        final String filter = Uri.encode(uri.getLastPathSegment());
+        String limit = uri.getQueryParameter(ContactsContract.LIMIT_PARAM_KEY);
+
+        int maxResults = -1;
+
+        try {
+          if (limit != null) {
+            maxResults = Integer.parseInt(limit);
+          }
+        } catch (NumberFormatException e) {
+          Log.e(TAG, "query: invalid limit parameter: '" + limit + "'");
+        }
+
+        final Location finalLastLocation = lastLocation;
+        final int finalMaxResults = maxResults;
+
+        return execute(
+                () -> handleFilter(match, projection, filter, finalMaxResults, finalLastLocation),
+                "FilterThread");
+    }
+
+    return null;
+  }
+
+  @Override
+  public Uri insert(Uri uri, ContentValues values) {
+    throw new UnsupportedOperationException("insert() not supported");
+  }
+
+  @Override
+  public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+    throw new UnsupportedOperationException("update() not supported");
+  }
+
+  @Override
+  public int delete(Uri uri, String selection, String[] selectionArgs) {
+    throw new UnsupportedOperationException("delete() not supported");
+  }
+
+  @Override
+  public String getType(Uri uri) {
+    int match = uriMatcher.match(uri);
+
+    switch (match) {
+      case NEARBY:
+      case PEOPLE:
+      case NEARBY_AND_PEOPLE:
+        return Contacts.CONTENT_ITEM_TYPE;
+
+      default:
+        return null;
+    }
+  }
+
+  @Override
+  public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+    switch (uriMatcher.match(uri)) {
+      case IMAGE:
+        String number = uri.getLastPathSegment();
+        File image = LookupCache.getImagePath(getContext(), number);
+
+        if (mode.equals("r")) {
+          if (image == null || !image.exists() || !image.isFile()) {
+            throw new FileNotFoundException("Cached image does not exist");
+          }
+
+          return ParcelFileDescriptor.open(image, ParcelFileDescriptor.MODE_READ_ONLY);
+        } else {
+          throw new FileNotFoundException("The URI is read only");
+        }
+
+      default:
+        throw new FileNotFoundException("Invalid URI: " + uri);
+    }
+  }
+
+  /**
+   * Check if the location services is on.
+   *
+   * @return Whether location services are enabled
+   */
+  private boolean isLocationEnabled() {
+      LocationManager locationManager = requireContext().getSystemService(LocationManager.class);
+      return locationManager.isLocationEnabled();
+  }
+
+  /**
+   * Get location from last location query.
+   *
+   * @return The last location
+   */
+  @SuppressLint("MissingPermission")
+  private Location getLastLocation() {
+    LocationManager locationManager = requireContext().getSystemService(LocationManager.class);
+
+    try {
+      locationManager.getCurrentLocation(LocationManager.FUSED_PROVIDER, new CancellationSignal(),
+              Executors.newSingleThreadExecutor(), location -> {});
+
+      return locationManager.getLastKnownLocation(LocationManager.FUSED_PROVIDER);
+    } catch (IllegalArgumentException e) {
+      return null;
+    }
+  }
+
+  /**
+   * Process filter/query and perform the lookup.
+   *
+   * @param projection Columns to include in query
+   * @param filter String to lookup
+   * @param maxResults Maximum number of results
+   * @param lastLocation Coordinates of last location query
+   * @return Cursor for the results
+   */
+  private Cursor handleFilter(int type, String[] projection, String filter,
+      int maxResults, Location lastLocation) {
+    if (DEBUG) Log.v(TAG, "handleFilter(" + filter + ")");
+
+    if (filter == null) {
+      return null;
+    }
+
+    filter = URLDecoder.decode(filter, StandardCharsets.UTF_8);
+
+    ArrayList<ContactInfo> results = new ArrayList<>();
+    if ((type == NEARBY || type == NEARBY_AND_PEOPLE) && lastLocation != null) {
+      ForwardLookup fl = ForwardLookup.getInstance(getContext());
+      List<ContactInfo> nearby = fl.lookup(getContext(), filter, lastLocation);
+      if (nearby != null) {
+        results.addAll(nearby);
+      }
+    }
+
+    if (results.isEmpty()) {
+      if (DEBUG) Log.v(TAG, "handleFilter(" + filter + "): No results");
+      return null;
+    }
+
+    Cursor cursor = null;
+    try {
+      cursor = buildResultCursor(projection, results, maxResults);
+      if (DEBUG) {
+        Log.v(TAG, "handleFilter(" + filter + "): " + cursor.getCount() + " matches");
+      }
+    } catch (JSONException e) {
+      Log.e(TAG, "JSON failure", e);
+    }
+
+    return cursor;
+  }
+
+  /**
+   * Query results.
+   *
+   * @param projection Columns to include in query
+   * @param results Results for the forward lookup
+   * @param maxResults Maximum number of rows/results to add to cursor
+   * @return Cursor for forward lookup query results
+   */
+  private Cursor buildResultCursor(String[] projection, List<ContactInfo> results, int maxResults)
+      throws JSONException {
+    // Extended directories always use this projection
+    MatrixCursor cursor = new MatrixCursor(Projections.DATA_PROJECTION);
+
+    int id = 1;
+    for (ContactInfo result : results) {
+      Object[] row = new Object[Projections.DATA_PROJECTION.length];
+
+      row[Projections.ID] = id;
+      row[Projections.PHONE_TYPE] = result.type;
+      row[Projections.PHONE_LABEL] = getAddress(result);
+      row[Projections.PHONE_NUMBER] = result.number;
+      row[Projections.DISPLAY_NAME] = result.name;
+      row[Projections.PHOTO_ID] = 0;
+      row[Projections.PHOTO_URI] = result.photoUri;
+      row[Projections.LOOKUP_KEY] = result.lookupUri.getEncodedFragment();
+      row[Projections.CONTACT_ID] = id;
+
+      cursor.addRow(row);
+
+      if (maxResults != -1 && cursor.getCount() >= maxResults) {
+        break;
+      }
+
+      id++;
+    }
+
+    return cursor;
+  }
+
+  private String getAddress(ContactInfo info) {
+    // Hack: Show city or address for phone label, so they appear in the results list
+
+    String city = null;
+    String address = null;
+
+    try {
+      String jsonString = info.lookupUri.getEncodedFragment();
+      JSONObject json = new JSONObject(jsonString);
+      JSONObject contact = json.getJSONObject(Contacts.CONTENT_ITEM_TYPE);
+
+      if (!contact.has(StructuredPostal.CONTENT_ITEM_TYPE)) {
+        return null;
+      }
+
+      JSONArray addresses = contact.getJSONArray(StructuredPostal.CONTENT_ITEM_TYPE);
+      if (addresses.length() == 0) {
+        return null;
+      }
+
+      JSONObject addressEntry = addresses.getJSONObject(0);
+      if (addressEntry.has(StructuredPostal.CITY)) {
+        city = addressEntry.getString(StructuredPostal.CITY);
+      }
+      if (addressEntry.has(StructuredPostal.FORMATTED_ADDRESS)) {
+        address = addressEntry.getString(StructuredPostal.FORMATTED_ADDRESS);
+      }
+    } catch (JSONException e) {
+      Log.e(TAG, "Failed to get address", e);
+    }
+
+    if (city != null) {
+      return city;
+    } else if (address != null) {
+      return address;
+    } else {
+      return null;
+    }
+  }
+
+  /**
+   * Execute thread that is killed after a specified amount of time.
+   *
+   * @param callable The thread
+   * @param name Name of the thread
+   * @return Instance of the thread
+   */
+  private <T> T execute(Callable<T> callable, String name) {
+    FutureCallable<T> futureCallable = new FutureCallable<>(callable);
+    FutureTask<T> future = new FutureTask<>(futureCallable);
+    futureCallable.setFuture(future);
+
+    synchronized (activeTasks) {
+      activeTasks.addLast(future);
+      Log.v(TAG, "Currently running tasks: " + activeTasks.size());
+
+      while (activeTasks.size() > 8) {
+        Log.w(TAG, "Too many tasks, canceling one");
+        activeTasks.removeFirst().cancel(true);
+      }
+    }
+
+    Log.v(TAG, "Starting task " + name);
+
+    new Thread(future, name).start();
+
+    try {
+      Log.v(TAG, "Getting future " + name);
+      return future.get(10000, TimeUnit.MILLISECONDS);
+    } catch (InterruptedException e) {
+      Log.w(TAG, "Task was interrupted: " + name);
+      Thread.currentThread().interrupt();
+    } catch (ExecutionException e) {
+      Log.w(TAG, "Task threw an exception: " + name, e);
+    } catch (TimeoutException e) {
+      Log.w(TAG, "Task timed out: " + name);
+      future.cancel(true);
+    } catch (CancellationException e) {
+      Log.w(TAG, "Task was cancelled: " + name);
+    }
+
+    return null;
+  }
+}
diff --git a/java/com/android/dialer/lookup/LookupSettings.java b/java/com/android/dialer/lookup/LookupSettings.java
new file mode 100644
index 0000000..3c89f17
--- /dev/null
+++ b/java/com/android/dialer/lookup/LookupSettings.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2014 Xiao-Long Chen <chillermillerlong@hotmail.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+public final class LookupSettings {
+  private static final String TAG = LookupSettings.class.getSimpleName();
+
+  /** Forward lookup providers */
+  public static final String FLP_OPENSTREETMAP = "OpenStreetMap";
+  public static final String FLP_DEFAULT = FLP_OPENSTREETMAP;
+
+  /** Reverse lookup providers */
+  public static final String RLP_YELLOWPAGES = "YellowPages";
+  public static final String RLP_YELLOWPAGES_CA = "YellowPages_CA";
+  public static final String RLP_ZABASEARCH = "ZabaSearch";
+  public static final String RLP_CYNGN_CHINESE = "CyngnChinese";
+  public static final String RLP_DASTELEFONBUCH = "DasTelefonbuch";
+  public static final String RLP_DEFAULT = RLP_YELLOWPAGES;
+
+  /** Preferences */
+  private static final String SHARED_PREFERENCES_NAME = "lookup_settings";
+  private static final String ENABLE_FORWARD_LOOKUP = "enable_forward_lookup";
+  private static final String ENABLE_REVERSE_LOOKUP = "enable_reverse_lookup";
+  private static final String FORWARD_LOOKUP_PROVIDER = "forward_lookup_provider2";
+  private static final String REVERSE_LOOKUP_PROVIDER = "reverse_lookup_provider2";
+
+  private LookupSettings() {
+  }
+
+  private static SharedPreferences getSharedPreferences(Context context) {
+    return context.createDeviceProtectedStorageContext()
+            .getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
+  }
+
+  public static boolean isForwardLookupEnabled(Context context) {
+    return getSharedPreferences(context).getBoolean(ENABLE_FORWARD_LOOKUP, false);
+  }
+
+  public static void setForwardLookupEnabled(Context context, boolean value) {
+    getSharedPreferences(context).edit().putBoolean(ENABLE_FORWARD_LOOKUP, value).apply();
+  }
+
+  public static boolean isReverseLookupEnabled(Context context) {
+    return getSharedPreferences(context).getBoolean(ENABLE_REVERSE_LOOKUP, false);
+  }
+
+  public static void setReverseLookupEnabled(Context context, boolean value) {
+    getSharedPreferences(context).edit().putBoolean(ENABLE_REVERSE_LOOKUP, value).apply();
+  }
+
+  public static String getForwardLookupProvider(Context context) {
+    return getSharedPreferences(context).getString(FORWARD_LOOKUP_PROVIDER, FLP_DEFAULT);
+  }
+
+  public static void setForwardLookupProvider(Context context, String value) {
+    getSharedPreferences(context).edit().putString(FORWARD_LOOKUP_PROVIDER, value).apply();
+  }
+
+  public static String getReverseLookupProvider(Context context) {
+    return getSharedPreferences(context).getString(REVERSE_LOOKUP_PROVIDER, RLP_DEFAULT);
+  }
+
+  public static void setReverseLookupProvider(Context context, String value) {
+    getSharedPreferences(context).edit().putString(REVERSE_LOOKUP_PROVIDER, value).apply();
+  }
+}
diff --git a/java/com/android/dialer/lookup/LookupSettingsFragment.java b/java/com/android/dialer/lookup/LookupSettingsFragment.java
new file mode 100644
index 0000000..970198e
--- /dev/null
+++ b/java/com/android/dialer/lookup/LookupSettingsFragment.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.lookup;
+
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.SwitchPreferenceCompat;
+
+import com.android.dialer.R;
+
+public class LookupSettingsFragment extends PreferenceFragmentCompat
+    implements Preference.OnPreferenceChangeListener {
+
+  private static final String KEY_ENABLE_FORWARD_LOOKUP = "enable_forward_lookup";
+  private static final String KEY_ENABLE_REVERSE_LOOKUP = "enable_reverse_lookup";
+  private static final String KEY_FORWARD_LOOKUP_PROVIDER = "forward_lookup_provider";
+  private static final String KEY_REVERSE_LOOKUP_PROVIDER = "reverse_lookup_provider";
+
+  private SwitchPreferenceCompat enableForwardLookup;
+  private SwitchPreferenceCompat enableReverseLookup;
+  private ListPreference forwardLookupProvider;
+  private ListPreference reverseLookupProvider;
+
+  @Override
+  public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    getPreferenceManager().setStorageDeviceProtected();
+  }
+
+  @Override
+  public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
+    addPreferencesFromResource(R.xml.lookup_settings);
+
+    enableForwardLookup = (SwitchPreferenceCompat) findPreference(KEY_ENABLE_FORWARD_LOOKUP);
+    enableReverseLookup = (SwitchPreferenceCompat) findPreference(KEY_ENABLE_REVERSE_LOOKUP);
+
+    enableForwardLookup.setOnPreferenceChangeListener(this);
+    enableReverseLookup.setOnPreferenceChangeListener(this);
+
+    forwardLookupProvider = (ListPreference) findPreference(KEY_FORWARD_LOOKUP_PROVIDER);
+    reverseLookupProvider = (ListPreference) findPreference(KEY_REVERSE_LOOKUP_PROVIDER);
+
+    forwardLookupProvider.setOnPreferenceChangeListener(this);
+    reverseLookupProvider.setOnPreferenceChangeListener(this);
+  }
+
+  @Override
+  public void onResume() {
+    super.onResume();
+
+    restoreLookupProviderSwitches();
+    restoreLookupProviders();
+  }
+
+  @Override
+  public boolean onPreferenceChange(Preference preference, Object newValue) {
+    Context context = getContext();
+
+    if (preference == enableForwardLookup) {
+      LookupSettings.setForwardLookupEnabled(context, (Boolean) newValue);
+    } else if (preference == enableReverseLookup) {
+      LookupSettings.setReverseLookupEnabled(context, (Boolean) newValue);
+    } else if (preference == forwardLookupProvider) {
+      LookupSettings.setForwardLookupProvider(context, (String) newValue);
+    } else if (preference == reverseLookupProvider) {
+      LookupSettings.setReverseLookupProvider(context, (String) newValue);
+    }
+
+    return true;
+  }
+
+  private void restoreLookupProviderSwitches() {
+    Context context = getContext();
+
+    enableForwardLookup.setChecked(LookupSettings.isForwardLookupEnabled(context));
+    enableReverseLookup.setChecked(LookupSettings.isReverseLookupEnabled(context));
+  }
+
+  private void restoreLookupProviders() {
+    Context context = getContext();
+
+    restoreLookupProvider(forwardLookupProvider, LookupSettings.getForwardLookupProvider(context));
+    restoreLookupProvider(reverseLookupProvider, LookupSettings.getReverseLookupProvider(context));
+  }
+
+  private void restoreLookupProvider(ListPreference pref, String provider) {
+    Context context = getContext();
+
+    if (pref.getEntries().length < 1) {
+      pref.setEnabled(false);
+      return;
+    }
+
+    if (provider == null) {
+      setDefaultProvider(pref);
+    } else {
+      String[] providers = new String[0];
+      if (pref == forwardLookupProvider) {
+        providers = getContext().getResources().getStringArray(R.array.forward_lookup_providers);
+      } else if (pref == reverseLookupProvider) {
+        providers = getContext().getResources().getStringArray(R.array.reverse_lookup_providers);
+      }
+
+      boolean found = false;
+      for (String p : providers) {
+        if (p.equals(provider)) {
+          found = true;
+          break;
+        }
+      }
+
+      if (!found) {
+        setDefaultProvider(pref);
+      } else {
+        pref.setValue(provider);
+      }
+    }
+  }
+
+  private void setDefaultProvider(ListPreference pref) {
+    Context context = getContext();
+    if (pref == forwardLookupProvider) {
+      LookupSettings.setForwardLookupProvider(context, LookupSettings.FLP_DEFAULT);
+    } else if (pref == reverseLookupProvider) {
+      LookupSettings.setReverseLookupProvider(context, LookupSettings.RLP_DEFAULT);
+    }
+  }
+}
diff --git a/java/com/android/dialer/lookup/LookupUtils.java b/java/com/android/dialer/lookup/LookupUtils.java
new file mode 100644
index 0000000..f8174f6
--- /dev/null
+++ b/java/com/android/dialer/lookup/LookupUtils.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup;
+
+import android.text.Html;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class LookupUtils {
+  private static final String USER_AGENT =
+      "Mozilla/5.0 (X11; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0";
+
+  private static HttpURLConnection prepareHttpConnection(String url, Map<String, String> headers)
+      throws IOException {
+    // open connection
+    HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();
+    // set user agent (default value is null)
+    urlConnection.setRequestProperty("User-Agent", USER_AGENT);
+    // set all other headers if not null
+    if (headers != null) {
+      for (Map.Entry<String, String> header : headers.entrySet()) {
+        urlConnection.setRequestProperty(header.getKey(), header.getValue());
+      }
+    }
+
+    return urlConnection;
+  }
+
+  private static byte[] httpFetch(HttpURLConnection urlConnection) throws IOException {
+    // query url, read and return buffered response body
+    // we want to make sure that the connection gets closed here
+    InputStream is = new BufferedInputStream(urlConnection.getInputStream());
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    byte[] result = null;
+    try {
+      byte[] partial = new byte[4096];
+      int read;
+      while ((read = is.read(partial, 0, 4096)) != -1) {
+        baos.write(partial, 0, read);
+      }
+      result = baos.toByteArray();
+    } finally {
+      is.close();
+      baos.close();
+    }
+    return result;
+  }
+
+  private static Charset determineCharset(HttpURLConnection connection) {
+    String contentType = connection.getContentType();
+    if (contentType != null) {
+      String[] split = contentType.split(";");
+      for (int i = 0; i < split.length; i++) {
+        String trimmed = split[i].trim();
+        if (trimmed.startsWith("charset=")) {
+          try {
+            return Charset.forName(trimmed.substring(8));
+          } catch (IllegalCharsetNameException | UnsupportedCharsetException e) {
+            // we don't know about this charset -> ignore
+          }
+        }
+      }
+    }
+    return Charset.defaultCharset();
+  }
+
+  public static String httpGet(String url, Map<String, String> headers) throws IOException {
+    HttpURLConnection connection = prepareHttpConnection(url, headers);
+    try {
+      byte[] response = httpFetch(connection);
+      return new String(response, determineCharset(connection));
+    } finally {
+      connection.disconnect();
+    }
+  }
+
+  public static byte[] httpGetBytes(String url, Map<String, String> headers) throws IOException {
+    HttpURLConnection connection = prepareHttpConnection(url, headers);
+    try {
+      return httpFetch(connection);
+    } finally {
+      connection.disconnect();
+    }
+  }
+
+  public static String httpPost(String url, Map<String, String> headers, String postData)
+      throws IOException {
+    HttpURLConnection connection = prepareHttpConnection(url, headers);
+
+    try {
+      // write postData to buffered output stream
+      if (postData != null) {
+        connection.setDoOutput(true);
+        BufferedWriter bw = new BufferedWriter(
+            new OutputStreamWriter(connection.getOutputStream()));
+        try {
+          bw.write(postData, 0, postData.length());
+          // close connection and re-throw exception
+        } finally {
+          bw.close();
+        }
+      }
+      byte[] response = httpFetch(connection);
+      return new String(response, determineCharset(connection));
+    } finally {
+      connection.disconnect();
+    }
+  }
+
+  public static List<String> allRegexResults(String input, String regex, boolean dotall) {
+    if (input == null) {
+      return null;
+    }
+    Pattern pattern = Pattern.compile(regex, dotall ? Pattern.DOTALL : 0);
+    Matcher matcher = pattern.matcher(input);
+
+    List<String> regexResults = new ArrayList<>();
+    while (matcher.find()) {
+      regexResults.add(matcher.group(1).trim());
+    }
+    return regexResults;
+  }
+
+  public static String firstRegexResult(String input, String regex, boolean dotall) {
+    if (input == null) {
+      return null;
+    }
+    Pattern pattern = Pattern.compile(regex, dotall ? Pattern.DOTALL : 0);
+    Matcher m = pattern.matcher(input);
+    return m.find() ? m.group(1).trim() : null;
+  }
+
+  public static String fromHtml(String input) {
+    if (input == null) {
+      return null;
+    }
+    return Html.fromHtml(input, Html.FROM_HTML_MODE_LEGACY).toString().trim();
+  }
+}
diff --git a/java/com/android/dialer/lookup/ReverseLookup.java b/java/com/android/dialer/lookup/ReverseLookup.java
new file mode 100644
index 0000000..2df6459
--- /dev/null
+++ b/java/com/android/dialer/lookup/ReverseLookup.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2014 Xiao-Long Chen <chillermillerlong@hotmail.com>
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.util.Log;
+
+import com.android.dialer.lookup.dastelefonbuch.TelefonbuchReverseLookup;
+import com.android.dialer.lookup.yellowpages.YellowPagesReverseLookup;
+import com.android.dialer.lookup.zabasearch.ZabaSearchReverseLookup;
+import com.android.dialer.phonenumbercache.ContactInfo;
+
+import java.io.IOException;
+
+public abstract class ReverseLookup {
+  private static final String TAG = ReverseLookup.class.getSimpleName();
+
+  private static ReverseLookup INSTANCE = null;
+
+  public static ReverseLookup getInstance(Context context) {
+    String provider = LookupSettings.getReverseLookupProvider(context);
+
+    if (INSTANCE == null || !isInstance(provider)) {
+      Log.d(TAG, "Chosen reverse lookup provider: " + provider);
+
+      if (provider.equals(LookupSettings.RLP_YELLOWPAGES)
+          || provider.equals(LookupSettings.RLP_YELLOWPAGES_CA)) {
+        INSTANCE = new YellowPagesReverseLookup(context, provider);
+      } else if (provider.equals(LookupSettings.RLP_ZABASEARCH)) {
+        INSTANCE = new ZabaSearchReverseLookup(context);
+      } else if (provider.equals(LookupSettings.RLP_DASTELEFONBUCH)) {
+        INSTANCE = new TelefonbuchReverseLookup(context);
+      }
+    }
+
+    return INSTANCE;
+  }
+
+  private static boolean isInstance(String provider) {
+    if ((provider.equals(LookupSettings.RLP_YELLOWPAGES)
+        || provider.equals(LookupSettings.RLP_YELLOWPAGES_CA))
+        && INSTANCE instanceof YellowPagesReverseLookup) {
+      return true;
+    } else if (provider.equals(LookupSettings.RLP_ZABASEARCH)
+        && INSTANCE instanceof ZabaSearchReverseLookup) {
+      return true;
+    } else if (provider.equals(LookupSettings.RLP_DASTELEFONBUCH)
+        && INSTANCE instanceof TelefonbuchReverseLookup) {
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  /**
+   * Lookup image
+   *
+   * @param context The application context
+   * @param uri The image URI
+   */
+  public Bitmap lookupImage(Context context, Uri uri) {
+    return null;
+  }
+
+  /**
+   * Perform phone number lookup.
+   *
+   * @param context The application context
+   * @param normalizedNumber The normalized phone number
+   * @param formattedNumber The formatted phone number
+   * @return The phone number info object
+   */
+  public abstract ContactInfo lookupNumber(Context context,
+      String normalizedNumber, String formattedNumber) throws IOException;
+}
diff --git a/java/com/android/dialer/lookup/ReverseLookupService.java b/java/com/android/dialer/lookup/ReverseLookupService.java
new file mode 100644
index 0000000..3391ae5
--- /dev/null
+++ b/java/com/android/dialer/lookup/ReverseLookupService.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2014 Xiao-Long Chen <chillermillerlong@hotmail.com>
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.os.Message;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+
+import com.android.dialer.location.GeoUtil;
+import com.android.dialer.logging.ContactLookupResult;
+import com.android.dialer.phonenumbercache.ContactInfo;
+import com.android.incallui.bindings.PhoneNumberService;
+
+import java.io.IOException;
+
+public class ReverseLookupService implements PhoneNumberService, Handler.Callback {
+  private final Handler backgroundHandler;
+  private final Handler handler;
+  private final Context context;
+  private final TelephonyManager telephonyManager;
+
+  private static final int MSG_LOOKUP = 1;
+  private static final int MSG_NOTIFY_NUMBER = 2;
+
+  public ReverseLookupService(Context context) {
+    this.context = context;
+    telephonyManager = context.getSystemService(TelephonyManager.class);
+
+    // TODO: stop after a while?
+    HandlerThread backgroundThread = new HandlerThread("ReverseLookup");
+    backgroundThread.start();
+
+    backgroundHandler = new Handler(backgroundThread.getLooper(), this);
+    handler = new Handler(Looper.getMainLooper(), this);
+  }
+
+  @Override
+  public void getPhoneNumberInfo(String phoneNumber, NumberLookupListener numberListener) {
+    if (!LookupSettings.isReverseLookupEnabled(context)) {
+      LookupCache.deleteCachedContacts(context);
+      return;
+    }
+
+    String countryIso = telephonyManager.getSimCountryIso().toUpperCase();
+    String normalizedNumber = phoneNumber != null
+        ? PhoneNumberUtils.formatNumberToE164(phoneNumber, countryIso) : null;
+
+    // Can't do reverse lookup without a number
+    if (normalizedNumber == null) {
+      return;
+    }
+
+    LookupRequest request = new LookupRequest();
+    request.normalizedNumber = normalizedNumber;
+    request.formattedNumber = PhoneNumberUtils.formatNumber(phoneNumber,
+        request.normalizedNumber, GeoUtil.getCurrentCountryIso(context));
+    request.numberListener = numberListener;
+
+    backgroundHandler.obtainMessage(MSG_LOOKUP, request).sendToTarget();
+  }
+
+  @Override
+  public boolean handleMessage(Message msg) {
+    switch (msg.what) {
+      case MSG_LOOKUP: {
+        // background thread
+        LookupRequest request = (LookupRequest) msg.obj;
+        request.contactInfo = doLookup(request);
+        if (request.contactInfo != null) {
+          handler.obtainMessage(MSG_NOTIFY_NUMBER, request).sendToTarget();
+        }
+        break;
+      }
+      case MSG_NOTIFY_NUMBER: {
+        // main thread
+        LookupRequest request = (LookupRequest) msg.obj;
+        if (request.numberListener != null) {
+          LookupNumberInfo info = new LookupNumberInfo(request.contactInfo);
+          request.numberListener.onPhoneNumberInfoComplete(info);
+        }
+        break;
+      }
+    }
+
+    return true;
+  }
+
+  private ContactInfo doLookup(LookupRequest request) {
+    final String number = request.normalizedNumber;
+
+    if (LookupCache.hasCachedContact(context, number)) {
+      ContactInfo info = LookupCache.getCachedContact(context, number);
+      if (!ContactInfo.EMPTY.equals(info)) {
+        return info;
+      } else if (info != null) {
+        // If we have an empty cached contact, remove it and redo lookup
+        LookupCache.deleteCachedContact(context, number);
+      }
+    }
+
+    try {
+      ReverseLookup inst = ReverseLookup.getInstance(context);
+      ContactInfo info = inst.lookupNumber(context, number, request.formattedNumber);
+      if (info != null && !info.equals(ContactInfo.EMPTY)) {
+        LookupCache.cacheContact(context, info);
+        return info;
+      }
+    } catch (IOException e) {
+      // ignored
+    }
+
+    return null;
+  }
+
+  private Bitmap fetchImage(LookupRequest request, Uri uri) {
+    if (!LookupCache.hasCachedImage(context, request.normalizedNumber)) {
+      Bitmap bmp = ReverseLookup.getInstance(context).lookupImage(context, uri);
+      if (bmp != null) {
+        LookupCache.cacheImage(context, request.normalizedNumber, bmp);
+      }
+    }
+
+    return LookupCache.getCachedImage(context, request.normalizedNumber);
+  }
+
+  private static class LookupRequest {
+    String normalizedNumber;
+    String formattedNumber;
+    NumberLookupListener numberListener;
+    ContactInfo contactInfo;
+  }
+
+  private static class LookupNumberInfo implements PhoneNumberInfo {
+    private final ContactInfo info;
+    private LookupNumberInfo(ContactInfo info) {
+      this.info = info;
+    }
+
+    @Override
+    public String getDisplayName() {
+      return info.name;
+    }
+    @Override
+    public String getNumber() {
+      return info.number;
+    }
+    @Override
+    public int getPhoneType() {
+      return info.type;
+    }
+    @Override
+    public String getPhoneLabel() {
+      return info.label;
+    }
+    @Override
+    public String getNormalizedNumber() {
+      return info.normalizedNumber;
+    }
+    @Override
+    public String getImageUrl() {
+      return info.photoUri != null ? info.photoUri.toString() : null;
+    }
+    @Override
+    public boolean isBusiness() {
+      // FIXME
+      return false;
+    }
+    @Override
+    public String getLookupKey() {
+      return info.lookupKey;
+    }
+    @Override
+    public ContactLookupResult.Type getLookupSource() {
+      return ContactLookupResult.Type.REMOTE;
+    }
+  }
+}
diff --git a/java/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java b/java/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java
new file mode 100644
index 0000000..16407b7
--- /dev/null
+++ b/java/com/android/dialer/lookup/dastelefonbuch/TelefonbuchApi.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2014 Danny Baumann <dannybaumann@web.de>
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup.dastelefonbuch;
+
+import android.content.Context;
+import android.net.Uri;
+
+import com.android.dialer.lookup.LookupUtils;
+
+import java.io.IOException;
+
+public class TelefonbuchApi {
+  private static final String TAG = TelefonbuchApi.class.getSimpleName();
+
+  private static final String REVERSE_LOOKUP_URL =
+          "https://www.dastelefonbuch.de/R%C3%BCckw%C3%A4rts-Suche/";
+
+  private static final String RELEVANT_CONTENT_REGEX =
+          "<div class=\"vcard\">(.*)<div class=\"additional\">";
+  private static final String NAME_REGEX ="<div class=\"name\" title=\"(.*?)\">";
+  private static final String NUMBER_REGEX = "<!-- phoneTo: (.*?) -->";
+  private static final String ADDRESS_REGEX = "<address.*?>\n?(.*?)</address>";
+  private static final String WEBSITE_REGEX = "<div.*class=\"url\">.*<a.*?href=\"(.*?)\"";
+
+  private TelefonbuchApi() {
+  }
+
+  public static ContactInfo reverseLookup(Context context, String number) throws IOException {
+    Uri uri = Uri.parse(REVERSE_LOOKUP_URL)
+            .buildUpon()
+            .appendPath(number)
+            .build();
+    // Cut out everything we're not interested in (scripts etc.) to
+    // speed up the subsequent matching.
+    String output = LookupUtils.firstRegexResult(
+            LookupUtils.httpGet(uri.toString(), null), RELEVANT_CONTENT_REGEX, true);
+
+    String name = parseValue(output, NAME_REGEX, true, false);
+    if (name == null) {
+      return null;
+    }
+
+    String phoneNumber = parseValue(output, NUMBER_REGEX, false, true);
+    String address = parseValue(output, ADDRESS_REGEX, true, true);
+    String website = parseValue(output, WEBSITE_REGEX, true, false);
+
+    ContactInfo info = new ContactInfo();
+    info.name = name;
+    info.address = address;
+    info.formattedNumber = phoneNumber != null ? phoneNumber : number;
+    info.website = website != null ? website : uri.toString();
+
+    return info;
+  }
+
+  private static String parseValue(String output, String regex,
+      boolean dotall, boolean removeSpans) {
+    String result = LookupUtils.firstRegexResult(output, regex, dotall);
+    if (result != null && removeSpans) {
+      // completely remove hidden spans (including contents) ...
+      result = result.replaceAll("<span class=\"hide\".*?\\/span>", "");
+      // ... and remove span wrappers around data content
+      result = result.replaceAll("</?span.*?>", "");
+    }
+    return LookupUtils.fromHtml(result);
+  }
+
+  public static class ContactInfo {
+    String name;
+    String address;
+    String formattedNumber;
+    String website;
+  }
+}
diff --git a/java/com/android/dialer/lookup/dastelefonbuch/TelefonbuchReverseLookup.java b/java/com/android/dialer/lookup/dastelefonbuch/TelefonbuchReverseLookup.java
new file mode 100644
index 0000000..dc6305e
--- /dev/null
+++ b/java/com/android/dialer/lookup/dastelefonbuch/TelefonbuchReverseLookup.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2014 Danny Baumann <dannybaumann@web.de>
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup.dastelefonbuch;
+
+import android.content.Context;
+
+import com.android.dialer.lookup.ContactBuilder;
+import com.android.dialer.lookup.ReverseLookup;
+import com.android.dialer.phonenumbercache.ContactInfo;
+
+import java.io.IOException;
+
+public class TelefonbuchReverseLookup extends ReverseLookup {
+  private static final String TAG = TelefonbuchReverseLookup.class.getSimpleName();
+
+  public TelefonbuchReverseLookup(Context context) {
+  }
+
+  /**
+   * Perform phone number lookup.
+   *
+   * @param context The application context
+   * @param normalizedNumber The normalized phone number
+   * @param formattedNumber The formatted phone number
+   * @return The phone number info object
+   */
+  @Override
+  public ContactInfo lookupNumber(Context context,
+      String normalizedNumber, String formattedNumber) throws IOException {
+    if (normalizedNumber.startsWith("+") && !normalizedNumber.startsWith("+49")) {
+      // Das Telefonbuch only supports German numbers
+      return null;
+    }
+
+    TelefonbuchApi.ContactInfo info = TelefonbuchApi.reverseLookup(context, normalizedNumber);
+    if (info == null) {
+      return null;
+    }
+
+    return ContactBuilder.forReverseLookup(normalizedNumber, formattedNumber)
+        .setName(ContactBuilder.Name.createDisplayName(info.name))
+        .addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(info.formattedNumber))
+        .addWebsite(ContactBuilder.WebsiteUrl.createProfile(info.website))
+        .addAddress(ContactBuilder.Address.createFormattedHome(info.address))
+        .build();
+  }
+}
diff --git a/java/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java b/java/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java
new file mode 100644
index 0000000..e5ec00e
--- /dev/null
+++ b/java/com/android/dialer/lookup/openstreetmap/OpenStreetMapForwardLookup.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2014 The OmniROM Project
+ * Copyright (C) 2014 Xiao-Long Chen <chillermillerlong@hotmail.com>
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Partially based on OmniROM's implementation
+
+package com.android.dialer.lookup.openstreetmap;
+
+import android.content.Context;
+import android.location.Location;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.provider.ContactsContract.CommonDataKinds.Website;
+import android.util.Log;
+
+import com.android.dialer.lookup.ContactBuilder;
+import com.android.dialer.lookup.ForwardLookup;
+import com.android.dialer.lookup.LookupUtils;
+import com.android.dialer.phonenumbercache.ContactInfo;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+public class OpenStreetMapForwardLookup extends ForwardLookup {
+  private static final String TAG = OpenStreetMapForwardLookup.class.getSimpleName();
+
+  /** Search within radius (meters) */
+  private static final int RADIUS = 30000;
+
+  /** Query URL */
+  private static final String LOOKUP_URL = "https://overpass-api.de/api/interpreter";
+  private static final String LOOKUP_QUERY =
+      "[out:json];node[name~\"%s\",i][phone](around:%d,%f,%f);out body;";
+
+  private static final String RESULT_ELEMENTS = "elements";
+  private static final String RESULT_TAGS = "tags";
+  private static final String TAG_NAME = "name";
+  private static final String TAG_PHONE = "phone";
+  private static final String TAG_HOUSENUMBER = "addr:housenumber";
+  private static final String TAG_STREET = "addr:street";
+  private static final String TAG_CITY = "addr:city";
+  private static final String TAG_POSTCODE = "addr:postcode";
+  private static final String TAG_WEBSITE = "website";
+
+  public OpenStreetMapForwardLookup(Context context) {
+  }
+
+  @Override
+  public List<ContactInfo> lookup(Context context, String filter, Location lastLocation) {
+    String request = String.format(Locale.ENGLISH, LOOKUP_QUERY, filter,
+        RADIUS, lastLocation.getLatitude(), lastLocation.getLongitude());
+
+    try {
+      return getEntries(new JSONObject(LookupUtils.httpPost(LOOKUP_URL, null, request)));
+    } catch (IOException e) {
+      Log.e(TAG, "Failed to execute query", e);
+    } catch (JSONException e) {
+      Log.e(TAG, "JSON error", e);
+    }
+
+    return null;
+  }
+
+  private List<ContactInfo> getEntries(JSONObject results) throws JSONException {
+    ArrayList<ContactInfo> details = new ArrayList<>();
+    JSONArray elements = results.getJSONArray(RESULT_ELEMENTS);
+
+    for (int i = 0; i < elements.length(); i++) {
+      try {
+        JSONObject element = elements.getJSONObject(i);
+        JSONObject tags = element.getJSONObject(RESULT_TAGS);
+
+        String displayName = tags.getString(TAG_NAME);
+        String phoneNumber = tags.getString(TAG_PHONE);
+
+        // Take the first number if there are multiple
+        if (phoneNumber.contains(";")) {
+          phoneNumber = phoneNumber.split(";")[0];
+          phoneNumber = phoneNumber.trim();
+        }
+
+        // The address is split
+        String addressHouseNumber = tags.optString(TAG_HOUSENUMBER, null);
+        String addressStreet = tags.optString(TAG_STREET, null);
+        String addressCity = tags.optString(TAG_CITY, null);
+        String addressPostCode = tags.optString(TAG_POSTCODE, null);
+
+        String address = String.format("%s %s, %s %s",
+            addressHouseNumber != null ? addressHouseNumber : "",
+            addressStreet != null ? addressStreet : "",
+            addressCity != null ? addressCity : "",
+            addressPostCode != null ? addressPostCode : "");
+
+        address = address.trim().replaceAll("\\s+", " ");
+        if (address.isEmpty()) {
+            address = null;
+        }
+
+        ContactBuilder builder = ContactBuilder.forForwardLookup(phoneNumber)
+            .setName(ContactBuilder.Name.createDisplayName(displayName))
+            .addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(phoneNumber))
+            .setPhotoUri(ContactBuilder.PHOTO_URI_BUSINESS);
+
+        if (address != null) {
+            ContactBuilder.Address a = new ContactBuilder.Address();
+            a.formattedAddress = address;
+            a.city = addressCity;
+            a.street = addressStreet;
+            a.postCode = addressPostCode;
+            a.type = StructuredPostal.TYPE_WORK;
+            builder.addAddress(a);
+        }
+
+        String website = tags.optString(TAG_WEBSITE, null);
+        if (website != null) {
+            ContactBuilder.WebsiteUrl w = new ContactBuilder.WebsiteUrl();
+            w.url = website;
+            w.type = Website.TYPE_HOMEPAGE;
+            builder.addWebsite(w);
+        }
+
+        details.add(builder.build());
+      } catch (JSONException e) {
+        Log.e(TAG, "Skipping the suggestions at index " + i, e);
+      }
+    }
+
+    return details;
+  }
+}
diff --git a/java/com/android/dialer/lookup/res/drawable-hdpi/ic_places_picture_180_holo_light.png b/java/com/android/dialer/lookup/res/drawable-hdpi/ic_places_picture_180_holo_light.png
new file mode 100644
index 0000000..f0bbe73
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/drawable-hdpi/ic_places_picture_180_holo_light.png
Binary files differ
diff --git a/java/com/android/dialer/lookup/res/drawable-xhdpi/ic_places_picture_180_holo_light.png b/java/com/android/dialer/lookup/res/drawable-xhdpi/ic_places_picture_180_holo_light.png
new file mode 100644
index 0000000..6409ab1
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/drawable-xhdpi/ic_places_picture_180_holo_light.png
Binary files differ
diff --git a/java/com/android/dialer/lookup/res/drawable-xxhdpi/ic_places_picture_180_holo_light.png b/java/com/android/dialer/lookup/res/drawable-xxhdpi/ic_places_picture_180_holo_light.png
new file mode 100644
index 0000000..97b9822
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/drawable-xxhdpi/ic_places_picture_180_holo_light.png
Binary files differ
diff --git a/java/com/android/dialer/lookup/res/values-ar/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ar/cm_strings.xml
new file mode 100644
index 0000000..1d271c8
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-ar/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">الأماكن القريبة</string>
+    <string name="lookup_settings_label">البحث عن رقم الهاتف</string>
+    <string name="enable_forward_lookup_title">البحث الأمامي</string>
+    <string name="enable_forward_lookup_summary">إظهر الأماكن القريبة عند البحث في الهاتف</string>
+    <string name="enable_reverse_lookup_title">بحث عكسي</string>
+    <string name="enable_reverse_lookup_summary">البحث عن معلومات حول شخص أو مكان للأرقام غير المعروفة في المكالمات الواردة</string>
+    <string name="forward_lookup_provider_title">موفر البحث الأمامي</string>
+    <string name="reverse_lookup_provider_title">موفر البحث العكسي</string>
+    <string name="lookup_disclaimer">قد ترسل عمليات البحث استعلامات عبر بروتوكول آمن (https) إلى مواقع ويب بعيدة لجمع المعلومات. قد يتضمن الاستعلام رقم هاتف الطرف الآخر أو استعلام البحث</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-ast-rES/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ast-rES/cm_strings.xml
new file mode 100644
index 0000000..aa21386
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-ast-rES/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Llugares cercanos</string>
+    <string name="lookup_settings_label">Busca de númberos de teléfonu</string>
+    <string name="enable_forward_lookup_title">Busca direuta</string>
+    <string name="enable_forward_lookup_summary">Amuesa los llugares cercanos al buscar nel marcador</string>
+    <string name="enable_reverse_lookup_title">Busca inversa</string>
+    <string name="enable_reverse_lookup_summary">Busca la información tocante a la persona o\'l llugar de les llamaes entrantes con númberos desconocíos</string>
+    <string name="forward_lookup_provider_title">Fornidor de busques direutes</string>
+    <string name="reverse_lookup_provider_title">Fornidor de busques inverses</string>
+    <string name="lookup_disclaimer">Les busques puen unviar solicitúes per un protocolu seguru (https) a sitios web remotos p\'atropar información. La consulta pue incluyir el númberu de teléfonu del otru llamador o la consulta de busca</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-az/cm_strings.xml b/java/com/android/dialer/lookup/res/values-az/cm_strings.xml
new file mode 100644
index 0000000..1006855
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-az/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Yaxınlıqdakı məkanlar</string>
+    <string name="lookup_settings_label">Telefon nömrəsi axtar</string>
+    <string name="enable_forward_lookup_title">Yönləndirmə axtarışı</string>
+    <string name="enable_forward_lookup_summary">Nömrə yığımında axtarış edərkən yaxın məkanları göstər</string>
+    <string name="enable_reverse_lookup_title">Geri axtarış</string>
+    <string name="enable_reverse_lookup_summary">Gələn zənglərdə bilinməyən nömrələr üçün şəxs və ya yer haqqında məlumat axtar</string>
+    <string name="forward_lookup_provider_title">Axtarış yönləndirmə provayderi</string>
+    <string name="reverse_lookup_provider_title">Tərs axtarış provayderi</string>
+    <string name="lookup_disclaimer">Axtarışlar, məlumat yığmaq üçün uzaq veb saytlara təhlükəsiz bir protokol (https) üzərindən sorğu göndərə bilər. Sorğu, digər tərəflərin telefon nömrəsini və ya axtarış sorğusunu ehtiva edə bilər.</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-be/cm_strings.xml b/java/com/android/dialer/lookup/res/values-be/cm_strings.xml
new file mode 100644
index 0000000..e4916dc
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-be/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Месцы побач</string>
+    <string name="lookup_settings_label">Пошук нумара тэлефона</string>
+    <string name="enable_forward_lookup_title">Прамы пошук</string>
+    <string name="enable_forward_lookup_summary">Паказваць месцы побач пры пошуку ў нумаранабіральніку</string>
+    <string name="enable_reverse_lookup_title">Зваротны пошук</string>
+    <string name="enable_reverse_lookup_summary">Пошук інфармацыі пра асобу або месца для ўваходных з невядомых нумароў</string>
+    <string name="forward_lookup_provider_title">Пастаўшчык прамога пошуку</string>
+    <string name="reverse_lookup_provider_title">Пастаўшчык зваротнага пошуку</string>
+    <string name="lookup_disclaimer">Пры пошуку пэўнай інфармацыі запыты адпраўляюцца праз абаронены пратакол (https) на аддаленыя вэб-сайты для збору інфармацыі. Запыт можа ўключаць тэлефонны нумар іншай асобы або пошукавы запыт</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-bg/cm_strings.xml b/java/com/android/dialer/lookup/res/values-bg/cm_strings.xml
new file mode 100644
index 0000000..5ca8b73
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-bg/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Места наблизо</string>
+    <string name="lookup_settings_label">Търсене на телефонен номер</string>
+    <string name="enable_forward_lookup_title">Търсене напред</string>
+    <string name="enable_forward_lookup_summary">Покажи местата в близост, при търсене в указателя</string>
+    <string name="enable_reverse_lookup_title">Обратно търсене</string>
+    <string name="enable_reverse_lookup_summary">Търсене на информация за човек или място за непознати номера при входящи обаждания</string>
+    <string name="forward_lookup_provider_title">Доставчик на информация</string>
+    <string name="reverse_lookup_provider_title">Доставчик на информация при обратно търсене</string>
+    <string name="lookup_disclaimer">Търсенето може да изпраща заявки през защитен протокол (https) до отдалечени уеб сайтове, за да събира информация. Искането на другата страна може да включва телефонен номер или заявка за търсене</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-ca/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ca/cm_strings.xml
new file mode 100644
index 0000000..72742b6
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-ca/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Llocs propers</string>
+    <string name="lookup_settings_label">Cerca de número de telèfon</string>
+    <string name="enable_forward_lookup_title">Cerca directa</string>
+    <string name="enable_forward_lookup_summary">Mostra resultats de llocs propers quan es busqui al marcador</string>
+    <string name="enable_reverse_lookup_title">Cerca inversa</string>
+    <string name="enable_reverse_lookup_summary">Busca informació sobre la persona o lloc per a números desconeguts en les trucades entrants</string>
+    <string name="forward_lookup_provider_title">Proveïdor de cerca directa</string>
+    <string name="reverse_lookup_provider_title">Proveïdor de cerca inversa</string>
+    <string name="lookup_disclaimer">Les cerques poden enviar consultes a través d\'un protocol segur (https) a llocs web remots per recopilar informació. La consulta pot incloure el número de telèfon de l\'altra part o la consulta de cerca</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-cs/cm_strings.xml b/java/com/android/dialer/lookup/res/values-cs/cm_strings.xml
new file mode 100644
index 0000000..131a0b0
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-cs/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Blízká místa</string>
+    <string name="lookup_settings_label">Vyhledávání telefonního čísla</string>
+    <string name="enable_forward_lookup_title">Předběžné vyhledávání</string>
+    <string name="enable_forward_lookup_summary">Zobrazit blízká místa při vyhledávání v číselníku</string>
+    <string name="enable_reverse_lookup_title">Zpětné vyhledávání</string>
+    <string name="enable_reverse_lookup_summary">Vyhledávání informací o osobě nebo místě pro neznámá čísla při příchozím hovoru</string>
+    <string name="forward_lookup_provider_title">Poskytovatel předběžného vyhledávání</string>
+    <string name="reverse_lookup_provider_title">Poskytovatel zpětného vyhledávání</string>
+    <string name="lookup_disclaimer">Vyhledávání může odesílat dotazy přes zabezpečený protokol (https) na vzdálené webové stránky pro získání informací. Dotaz může obsahovat telefonní číslo druhé strany nebo vyhledávací dotaz</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-cy/cm_strings.xml b/java/com/android/dialer/lookup/res/values-cy/cm_strings.xml
new file mode 100644
index 0000000..72076e1
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-cy/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Lleoedd cyfagos</string>
+    <string name="lookup_settings_label">Chwilio rhif ffôn</string>
+    <string name="enable_forward_lookup_title">Chwiliad dargyfeiriad</string>
+    <string name="enable_forward_lookup_summary">Dangos llefydd gerllaw wrth chwilio yn y deialydd</string>
+    <string name="enable_reverse_lookup_title">Chwiliad croes</string>
+    <string name="enable_reverse_lookup_summary">Chwilio am wybodaeth am y person neu leoliad rhifau anhysbys sy\'n dy alw</string>
+    <string name="forward_lookup_provider_title">Darparydd chwiliad dargyfeiriad</string>
+    <string name="reverse_lookup_provider_title">Darparydd chwiliad croes</string>
+    <string name="lookup_disclaimer">Gall chwiliadau anfon ymholiadau dros brotocol diogel (https) at wefannau pell i gasglu gwybodaeth. Gall yr ymholiad gynnwys rhif ffôn y parti arall neu\'r term chwilio.</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-da/cm_strings.xml b/java/com/android/dialer/lookup/res/values-da/cm_strings.xml
new file mode 100644
index 0000000..d4f7a6a
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-da/cm_strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Steder tæt på</string>
+    <string name="lookup_settings_label">Slå telefonnummer op</string>
+    <string name="enable_forward_lookup_title">Slå telefonnummer op, når du ringer</string>
+    <string name="enable_forward_lookup_summary">Vis nærliggende steder, ved søgning i telefonen</string>
+    <string name="enable_reverse_lookup_title">Slå telefonnummer op, når du modtager opkald</string>
+    <string name="enable_reverse_lookup_summary">Slå information op om personen, eller stedet, for ukendte numre, ved indgående opkald</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-de/cm_strings.xml b/java/com/android/dialer/lookup/res/values-de/cm_strings.xml
new file mode 100644
index 0000000..f1f5907
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-de/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Orte in der Nähe</string>
+    <string name="lookup_settings_label">Telefonnummernsuche</string>
+    <string name="enable_forward_lookup_title">Vorwärtssuche</string>
+    <string name="enable_forward_lookup_summary">Bei der Telefonnummernsuche Orte in der Nähe einschließen</string>
+    <string name="enable_reverse_lookup_title">Rückwärtssuche</string>
+    <string name="enable_reverse_lookup_summary">Bei eingehenden Anrufen von unbekannten Nummern Informationen über die Person oder den Ort suchen</string>
+    <string name="forward_lookup_provider_title">Dienst für Vorwärtssuche</string>
+    <string name="reverse_lookup_provider_title">Dienst für Rückwärtssuche</string>
+    <string name="lookup_disclaimer">Suchen können Abfragen an Remote-Websites über ein sicheres Protokoll (https) senden, um Informationen zu sammeln. Die Abfrage kann die Telefonnummer des anderen Teilnehmers oder die Suchanfrage enthalten</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-el/cm_strings.xml b/java/com/android/dialer/lookup/res/values-el/cm_strings.xml
new file mode 100644
index 0000000..6934652
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-el/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Κοντινές τοποθεσίες</string>
+    <string name="lookup_settings_label">Αναζήτηση τηλεφωνικού αριθμού</string>
+    <string name="enable_forward_lookup_title">Κανονική αναζήτηση</string>
+    <string name="enable_forward_lookup_summary">Εμφάνιση κοντινών τοποθεσιών κατά την αναζήτηση στην εφαρμογή τηλεφώνου</string>
+    <string name="enable_reverse_lookup_title">Αντίστροφη αναζήτηση</string>
+    <string name="enable_reverse_lookup_summary">Αναζήτηση πληροφοριών σχετικά με το άτομο ή την τοποθεσία για άγνωστους αριθμούς στις εισερχόμενες κλήσεις</string>
+    <string name="forward_lookup_provider_title">Πάροχος κανονικής αναζήτησης</string>
+    <string name="reverse_lookup_provider_title">Πάροχος αντίστροφης αναζήτησης</string>
+    <string name="lookup_disclaimer">Οι αναζητήσεις ενδέχεται να στέλνουν ερωτήματα μέσω ενός ασφαλούς πρωτοκόλλου (https) σε απομακρυσμένους ιστότοπους για τη συλλογή πληροφοριών. Το ερώτημα ενδέχεται να περιλαμβάνει τον αριθμό τηλεφώνου του άλλου μέρους ή το ερώτημα αναζήτησης</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-en-rAU/cm_strings.xml b/java/com/android/dialer/lookup/res/values-en-rAU/cm_strings.xml
new file mode 100644
index 0000000..eece599
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-en-rAU/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Nearby places</string>
+    <string name="lookup_settings_label">Phone number lookup</string>
+    <string name="enable_forward_lookup_title">Forward lookup</string>
+    <string name="enable_forward_lookup_summary">Show nearby places when searching in the dialler</string>
+    <string name="enable_reverse_lookup_title">Reverse lookup</string>
+    <string name="enable_reverse_lookup_summary">Look up information about the person or place for unknown numbers on incoming calls</string>
+    <string name="forward_lookup_provider_title">Forward lookup provider</string>
+    <string name="reverse_lookup_provider_title">Reverse lookup provider</string>
+    <string name="lookup_disclaimer">Lookups may send queries over a secure protocol (https) to remote websites to gather information. The query may include the other party\'s phone number or the search query</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-en-rCA/cm_strings.xml b/java/com/android/dialer/lookup/res/values-en-rCA/cm_strings.xml
new file mode 100644
index 0000000..eece599
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-en-rCA/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Nearby places</string>
+    <string name="lookup_settings_label">Phone number lookup</string>
+    <string name="enable_forward_lookup_title">Forward lookup</string>
+    <string name="enable_forward_lookup_summary">Show nearby places when searching in the dialler</string>
+    <string name="enable_reverse_lookup_title">Reverse lookup</string>
+    <string name="enable_reverse_lookup_summary">Look up information about the person or place for unknown numbers on incoming calls</string>
+    <string name="forward_lookup_provider_title">Forward lookup provider</string>
+    <string name="reverse_lookup_provider_title">Reverse lookup provider</string>
+    <string name="lookup_disclaimer">Lookups may send queries over a secure protocol (https) to remote websites to gather information. The query may include the other party\'s phone number or the search query</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-en-rGB/cm_strings.xml b/java/com/android/dialer/lookup/res/values-en-rGB/cm_strings.xml
new file mode 100644
index 0000000..eece599
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-en-rGB/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Nearby places</string>
+    <string name="lookup_settings_label">Phone number lookup</string>
+    <string name="enable_forward_lookup_title">Forward lookup</string>
+    <string name="enable_forward_lookup_summary">Show nearby places when searching in the dialler</string>
+    <string name="enable_reverse_lookup_title">Reverse lookup</string>
+    <string name="enable_reverse_lookup_summary">Look up information about the person or place for unknown numbers on incoming calls</string>
+    <string name="forward_lookup_provider_title">Forward lookup provider</string>
+    <string name="reverse_lookup_provider_title">Reverse lookup provider</string>
+    <string name="lookup_disclaimer">Lookups may send queries over a secure protocol (https) to remote websites to gather information. The query may include the other party\'s phone number or the search query</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-en-rIN/cm_strings.xml b/java/com/android/dialer/lookup/res/values-en-rIN/cm_strings.xml
new file mode 100644
index 0000000..eece599
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-en-rIN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Nearby places</string>
+    <string name="lookup_settings_label">Phone number lookup</string>
+    <string name="enable_forward_lookup_title">Forward lookup</string>
+    <string name="enable_forward_lookup_summary">Show nearby places when searching in the dialler</string>
+    <string name="enable_reverse_lookup_title">Reverse lookup</string>
+    <string name="enable_reverse_lookup_summary">Look up information about the person or place for unknown numbers on incoming calls</string>
+    <string name="forward_lookup_provider_title">Forward lookup provider</string>
+    <string name="reverse_lookup_provider_title">Reverse lookup provider</string>
+    <string name="lookup_disclaimer">Lookups may send queries over a secure protocol (https) to remote websites to gather information. The query may include the other party\'s phone number or the search query</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-es-rUS/cm_strings.xml b/java/com/android/dialer/lookup/res/values-es-rUS/cm_strings.xml
new file mode 100644
index 0000000..f801af8
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-es-rUS/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Lugares cercanos</string>
+    <string name="lookup_settings_label">Búsqueda de números telefónicos</string>
+    <string name="enable_forward_lookup_title">Búsqueda directa</string>
+    <string name="enable_forward_lookup_summary">Mostrar lugares cercanos al buscar en el marcador</string>
+    <string name="enable_reverse_lookup_title">Búsqueda inversa</string>
+    <string name="enable_reverse_lookup_summary">Buscar información sobre la persona o lugar para números desconocidos en llamadas entrantes</string>
+    <string name="forward_lookup_provider_title">Proveedor de búsqueda directa</string>
+    <string name="reverse_lookup_provider_title">Proveedor de búsqueda inversa</string>
+    <string name="lookup_disclaimer">Las búsquedas pueden enviar consultas sobre un protocolo seguro (https) a sitios web remotos para recopilar información. La consulta puede incluir el número de teléfono de la contraparte o la consulta de búsqueda</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-es/cm_strings.xml b/java/com/android/dialer/lookup/res/values-es/cm_strings.xml
new file mode 100644
index 0000000..05300a5
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-es/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Lugares cercanos</string>
+    <string name="lookup_settings_label">Búsqueda de número telefónico</string>
+    <string name="enable_forward_lookup_title">Búsqueda directa</string>
+    <string name="enable_forward_lookup_summary">Mostrar lugares cercanos al buscar en el marcador</string>
+    <string name="enable_reverse_lookup_title">Búsqueda inversa</string>
+    <string name="enable_reverse_lookup_summary">Buscar información sobre la persona o lugar para números desconocidos en las llamadas entrantes</string>
+    <string name="forward_lookup_provider_title">Proveedor de búsqueda directa</string>
+    <string name="reverse_lookup_provider_title">Proveedor de búsqueda inversa</string>
+    <string name="lookup_disclaimer">Las búsquedas pueden enviar consultas a través de un protocolo seguro (https) a sitios web remotos para recopilar información. La consulta puede incluir el número de teléfono de la otra parte o la consulta de búsqueda</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-et/cm_strings.xml b/java/com/android/dialer/lookup/res/values-et/cm_strings.xml
new file mode 100644
index 0000000..a663e22
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-et/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Lähedal asuvad kohad</string>
+    <string name="lookup_settings_label">Numbriotsing</string>
+    <string name="enable_forward_lookup_title">Edasine otsing</string>
+    <string name="enable_forward_lookup_summary">Näita helistajast otsides lähedal asuvaid kohti</string>
+    <string name="enable_reverse_lookup_title">Pöördotsing</string>
+    <string name="enable_reverse_lookup_summary">Otsi teavet isiku või koha kohta, kui kõne tuleb tundmatult numbrilt</string>
+    <string name="forward_lookup_provider_title">Otsingupakkuja</string>
+    <string name="reverse_lookup_provider_title">Pöördotsingu pakkuja</string>
+    <string name="lookup_disclaimer">Otsingud võivad info hankimiseks saata välistele saitidele päringuid üle turvalise protokolli (HTTPS). Päring võib sisaldada teise osapoole telefoninumbrit või otsingusõna</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-eu/cm_strings.xml b/java/com/android/dialer/lookup/res/values-eu/cm_strings.xml
new file mode 100644
index 0000000..87a08ac
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-eu/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Inguruko tokiak</string>
+    <string name="lookup_settings_label">Telefono zenbakien bilaketa</string>
+    <string name="enable_forward_lookup_title">Tokien bilaketa</string>
+    <string name="enable_forward_lookup_summary">Erakutsi inguruko tokiak markatzailean bilatzean</string>
+    <string name="enable_reverse_lookup_title">Bilaketa alderantzikatua</string>
+    <string name="enable_reverse_lookup_summary">Bilatu pertsona edo lekuko informazioa zenbaki ezezagunen deientzako</string>
+    <string name="forward_lookup_provider_title">Tokien bilaketarako hornitzailea</string>
+    <string name="reverse_lookup_provider_title">Bilaketa alderantzikatuaren hornitzailea</string>
+    <string name="lookup_disclaimer">Bilaketek protokolo seguru baten bidez (https) galderak bidali ditzakete urruneko webguneetara informazio bila. Galderek beste partearen telefono zenbakia eraman dezakete</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-fi/cm_strings.xml b/java/com/android/dialer/lookup/res/values-fi/cm_strings.xml
new file mode 100644
index 0000000..a4f8736
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-fi/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Lähellä olevat sijainnit</string>
+    <string name="lookup_settings_label">Puhelinnumeron haku</string>
+    <string name="enable_forward_lookup_title">Paikkahaku</string>
+    <string name="enable_forward_lookup_summary">Näytä puhelusovelluksen haussa läheisiä sijainteja</string>
+    <string name="enable_reverse_lookup_title">Käänteinen haku</string>
+    <string name="enable_reverse_lookup_summary">Etsi tuntemattomasta numerosta soittavan henkilön tai paikan tietoja tulevissa puheluissa</string>
+    <string name="forward_lookup_provider_title">Paikkahauntarjoaja</string>
+    <string name="reverse_lookup_provider_title">Käänteisen haun tarjoaja</string>
+    <string name="lookup_disclaimer">Haku voi lähettää kyselyjä suojatun protokollan (https) kautta etäsivustoille tietojen keräämiseksi. Kysely voi sisältää toisen osapuolen puhelinnumeron tai hakukyselyn</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-fr/cm_strings.xml b/java/com/android/dialer/lookup/res/values-fr/cm_strings.xml
new file mode 100644
index 0000000..9a468de
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-fr/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Lieux à proximité</string>
+    <string name="lookup_settings_label">Recherche de numéro de téléphone</string>
+    <string name="enable_forward_lookup_title">Recherche directe</string>
+    <string name="enable_forward_lookup_summary">Afficher les lieux à proximité lors d\'une recherche à l\'aide du clavier</string>
+    <string name="enable_reverse_lookup_title">Recherche inversée</string>
+    <string name="enable_reverse_lookup_summary">Rechercher des informations sur la personne ou sur le lieu lors d\'un appel entrant en provenance d\'un numéro inconnu</string>
+    <string name="forward_lookup_provider_title">Moteur de recherche directe</string>
+    <string name="reverse_lookup_provider_title">Moteur de recherche inversée</string>
+    <string name="lookup_disclaimer">Lorsque vous effectuez des recherches, des requêtes sont susceptibles d\'être envoyées à des sites distants via un protocole sécurisé (https) pour recueillir des informations. Elles peuvent inclure le numéro de téléphone d\'un tiers ou la requête de recherche.</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-fur-rIT/cm_strings.xml b/java/com/android/dialer/lookup/res/values-fur-rIT/cm_strings.xml
new file mode 100644
index 0000000..7cb403f
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-fur-rIT/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Puescj tai contors</string>
+    <string name="lookup_settings_label">Ricercje numars telefonics</string>
+    <string name="enable_forward_lookup_title">Ricercje direte</string>
+    <string name="enable_forward_lookup_summary">Mostre lûcs tai contors te ricercje cul tastierin telefonic</string>
+    <string name="enable_reverse_lookup_title">Ricercje contrarie</string>
+    <string name="enable_reverse_lookup_summary">Cîr informazions su la persone o il puest pai numars no cognossûts des clamadis in jentrade</string>
+    <string name="forward_lookup_provider_title">Furnidôr servizi di ricercje direte</string>
+    <string name="reverse_lookup_provider_title">Furnidôr servizi di ricercje contrarie</string>
+    <string name="lookup_disclaimer">Al è pussibil che lis ricercjis a mandedin interogazions midiant un protocol sigûr (https) a sîts web esternis par tirâ dongje lis informazions necessariis. La interogazion e pues includi il numar di telefon dal interlocutôr o il test de ricercje</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-fy-rNL/cm_strings.xml b/java/com/android/dialer/lookup/res/values-fy-rNL/cm_strings.xml
new file mode 100644
index 0000000..7827211
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-fy-rNL/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Plakken tichteby</string>
+    <string name="lookup_settings_label">Telefoannûmer sykje</string>
+    <string name="enable_forward_lookup_title">Foarút sykje</string>
+    <string name="enable_forward_lookup_summary">Plakken tichteby wylst it sykjen yn de kiezer toane</string>
+    <string name="enable_reverse_lookup_title">Omkeard sykje</string>
+    <string name="enable_reverse_lookup_summary">Ynformaasje oer de persoan of plak sykje by ynkommende oproppen fan ûnbekende nûmers</string>
+    <string name="forward_lookup_provider_title">Tsjinst om foarút te sykjen</string>
+    <string name="reverse_lookup_provider_title">Oanbieder foar omkeard sykje</string>
+    <string name="lookup_disclaimer">Sykopdrachten kinne gegevens ferstjoere nei eksterne websites fia in befeilige protokol (https) om ynformaasje te sammeljen. De gegevens kinne it telefoannûmer fan de oare partij of de sykopdracht befetsje</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-gd/cm_strings.xml b/java/com/android/dialer/lookup/res/values-gd/cm_strings.xml
new file mode 100644
index 0000000..1208303
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-gd/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Àitichean faisg ort</string>
+    <string name="lookup_settings_label">Rannsachadh àireamhan fòn</string>
+    <string name="enable_forward_lookup_title">Rannsachadh air adhart</string>
+    <string name="enable_forward_lookup_summary">Seall ionadan am fagas nuair a bhios mi a’ lorg rud san daithealair</string>
+    <string name="enable_reverse_lookup_title">Rannsachadh contrarra</string>
+    <string name="enable_reverse_lookup_summary">Rannsaich fiosrachadh mun neach no ionad airson àireamh nach aithne dhut nuair a thig gairm a-steach</string>
+    <string name="forward_lookup_provider_title">Solaraiche an rannsachaidh air adhart</string>
+    <string name="reverse_lookup_provider_title">Solaraiche an rannsachaidh chontrarra</string>
+    <string name="lookup_disclaimer">Faodaidh an rannsachadh ceistean a chur a-null gu làraichean-lìn cèine slighe pròtacail thèarainte (https) airson fiosrachadh a chruinneachadh. Faodaidh a’ cheist gabhail a-steach àireamh fòn an neach eile no a’ cheist rannsachaidh</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-gl/cm_strings.xml b/java/com/android/dialer/lookup/res/values-gl/cm_strings.xml
new file mode 100644
index 0000000..32794da
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-gl/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Lugares próximos</string>
+    <string name="lookup_settings_label">Busca de número de teléfono</string>
+    <string name="enable_forward_lookup_title">Busca directa</string>
+    <string name="enable_forward_lookup_summary">Amosar lugares próximos ao buscar no dial</string>
+    <string name="enable_reverse_lookup_title">Porcura inversa</string>
+    <string name="enable_reverse_lookup_summary">Procurar información sobre persoas ou lugares para números descoñecidos nas chamadas entrantes</string>
+    <string name="forward_lookup_provider_title">Fornecedor de busca avanzada</string>
+    <string name="reverse_lookup_provider_title">Fornecedor de busca inversa</string>
+    <string name="lookup_disclaimer">As buscas poden enviar consultas a través dun protocolo seguro (https) a sitios web remotos para recompilar información. A consulta pode incluír o número de teléfono da outra parte ou a consulta de busca</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-hr/cm_strings.xml b/java/com/android/dialer/lookup/res/values-hr/cm_strings.xml
new file mode 100644
index 0000000..d3100bd
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-hr/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Mjesta u blizini</string>
+    <string name="lookup_settings_label">Pretraživanje telefonskih brojeva</string>
+    <string name="enable_forward_lookup_title">Pretraživanje unaprijed</string>
+    <string name="enable_forward_lookup_summary">Prikaz obližnjih mjesta prilikom pretraživanja u biraču brojeva</string>
+    <string name="enable_reverse_lookup_title">Obrnuto pretraživanje</string>
+    <string name="enable_reverse_lookup_summary">Pretraživanje podataka o osobi ili mjestu za nepoznate brojeve kod dolaznih poziva</string>
+    <string name="forward_lookup_provider_title">Pružatelj pretraživanja unaprijed</string>
+    <string name="reverse_lookup_provider_title">Pružatelj obrnutog pretraživanja</string>
+    <string name="lookup_disclaimer">Pretraživanja mogu slati upite putem sigurnog protokola (https) udaljenim web-stranicama da bi prikupila informacije. Upit može uključivati telefonski broj drugog korisnika ili upit za pretraživanje</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-hu/cm_strings.xml b/java/com/android/dialer/lookup/res/values-hu/cm_strings.xml
new file mode 100644
index 0000000..4340c0a
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-hu/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Közeli helyek</string>
+    <string name="lookup_settings_label">Telefonszám-lekérdezés</string>
+    <string name="enable_forward_lookup_title">Címlekérdezés</string>
+    <string name="enable_forward_lookup_summary">Közeli helyek megjelenítése a tárcsázóban történő kereséskor</string>
+    <string name="enable_reverse_lookup_title">Fordított-lekérdezés</string>
+    <string name="enable_reverse_lookup_summary">Személy vagy hely információk megjelenítése ismeretlen számról történő bejövő hívás esetén</string>
+    <string name="forward_lookup_provider_title">Címlekérdezési szolgáltató</string>
+    <string name="reverse_lookup_provider_title">Fordított-lekérdezési szolgáltató</string>
+    <string name="lookup_disclaimer">A kikeresések lekérdezhetnek egy biztonságos (https) protokollon keresztül távoli webhelyeket az információk összegyűjtésének érdekében. A tudakozódás tartalmazhatja a másik fél telefonszámát vagy lekérdezési keresőkifejezést</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-in/cm_strings.xml b/java/com/android/dialer/lookup/res/values-in/cm_strings.xml
new file mode 100644
index 0000000..a869671
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-in/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Tempat terdekat</string>
+    <string name="lookup_settings_label">Penelusuran nomor telepon</string>
+    <string name="enable_forward_lookup_title">Penelusuran kedepan</string>
+    <string name="enable_forward_lookup_summary">Tampilkan tempat terdekat ketika mencari di dialer</string>
+    <string name="enable_reverse_lookup_title">Penelusuran terbalik</string>
+    <string name="enable_reverse_lookup_summary">Mencari informasi tentang orang atau tempat untuk panggilan masuk dari nomor tak diketahui</string>
+    <string name="forward_lookup_provider_title">Penyedia penelusuran kedepan</string>
+    <string name="reverse_lookup_provider_title">Penyedia penelusuran terbalik</string>
+    <string name="lookup_disclaimer">Pencarian dapat mengirimkan pertanyaan melalui protokol aman (https) ke remote website untuk mengumpulkan informasi. Kueri mungkin termasuk nomor telepon pihak lain atau kueri penelusuran</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-is/cm_strings.xml b/java/com/android/dialer/lookup/res/values-is/cm_strings.xml
new file mode 100644
index 0000000..0fc96b0
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-is/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Nálægir staðir</string>
+    <string name="lookup_settings_label">Uppfletting á símanúmeri</string>
+    <string name="enable_forward_lookup_title">Leita áfram</string>
+    <string name="enable_forward_lookup_summary">Sýna staði í nágrenninu þegar leitað er á hringiskjá</string>
+    <string name="enable_reverse_lookup_title">Leita í hina áttina</string>
+    <string name="enable_reverse_lookup_summary">Flettu upp upplýsingum um einstakling eða stað þegar hringt er úr óþekktum símanúmerum</string>
+    <string name="forward_lookup_provider_title">Framvirk uppflettiþjónusta (forward lookup)</string>
+    <string name="reverse_lookup_provider_title">Afturvirk uppflettiþjónusta (reverse lookup)</string>
+    <string name="lookup_disclaimer">Uppflettingar gætu sent beiðnir í gegnum öruggan samskiptamáta (HTTPS) á fjartengt vefsvæði til að safna upplýsingum. Beiðnir gætu innihaldið símanúmer hins aðilans eða umbeðinn leitarstreng</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-it/cm_strings.xml b/java/com/android/dialer/lookup/res/values-it/cm_strings.xml
new file mode 100644
index 0000000..42dcbf4
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-it/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Posti nelle vicinanze</string>
+    <string name="lookup_settings_label">Ricerca numeri telefonici</string>
+    <string name="enable_forward_lookup_title">Ricerca diretta</string>
+    <string name="enable_forward_lookup_summary">Mostra luoghi nelle vicinanze durante la ricerca nel tastierino</string>
+    <string name="enable_reverse_lookup_title">Ricerca inversa</string>
+    <string name="enable_reverse_lookup_summary">Cerca informazioni sulla persona o luogo per i numeri sconosciuti delle chiamate in ingresso</string>
+    <string name="forward_lookup_provider_title">Provider di ricerca diretta</string>
+    <string name="reverse_lookup_provider_title">Provider di ricerca inversa</string>
+    <string name="lookup_disclaimer">Le ricerche potrebbero inviare query tramite un protocollo sicuro (https) a siti web in remoto per raccogliere le informazioni necessarie. La query può includere il numero di telefono del corrispondente o il testo della ricerca</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-iw/cm_strings.xml b/java/com/android/dialer/lookup/res/values-iw/cm_strings.xml
new file mode 100644
index 0000000..047984a
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-iw/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">מקומות סמוכים</string>
+    <string name="lookup_settings_label">חיפוש מספר טלפון</string>
+    <string name="enable_forward_lookup_title">חיפוש מקדים</string>
+    <string name="enable_forward_lookup_summary">הצג מקומות סמוכים בעת חיפוש בחייגן</string>
+    <string name="enable_reverse_lookup_title">חיפוש הפוך</string>
+    <string name="enable_reverse_lookup_summary">חפש מידע אודות אדם או מקום עבור מספרים לא ידועים בשיחות נכנסות</string>
+    <string name="forward_lookup_provider_title">ספק חיפוש מקדים</string>
+    <string name="reverse_lookup_provider_title">ספק חיפוש הפוך</string>
+    <string name="lookup_disclaimer">החיפוש ישלח מידע בפרוטוקול מוצפן (https) לשרת מרוחק לקבלת מידע. השאילתות יכילו את מספר הפלאפון ו\או שאילתות החיפוש</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-ja/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ja/cm_strings.xml
new file mode 100644
index 0000000..eda0806
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-ja/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">近くの場所</string>
+    <string name="lookup_settings_label">電話番号検索</string>
+    <string name="enable_forward_lookup_title">正引き検索</string>
+    <string name="enable_forward_lookup_summary">ダイヤル画面で検索しているときに近くの場所を表示します</string>
+    <string name="enable_reverse_lookup_title">逆引き検索</string>
+    <string name="enable_reverse_lookup_summary">着信中の不明な番号の人物または場所の情報を検索します</string>
+    <string name="forward_lookup_provider_title">正引き検索のプロバイダー</string>
+    <string name="reverse_lookup_provider_title">逆引き検索のプロバイダー</string>
+    <string name="lookup_disclaimer">Lookups は情報を収集するために、セキュアなプロトコル (https) 上で外部のウェブサイトにクエリを送信する可能性があります。クエリは相手の電話番号や検索クエリを含むことがあります。</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-ka/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ka/cm_strings.xml
new file mode 100644
index 0000000..bcb77d9
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-ka/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">ახლომდებარე ადგილები</string>
+    <string name="lookup_settings_label">სატელეფონო ნომრის მონახვა</string>
+    <string name="enable_forward_lookup_title">პირდაპირი ძიება</string>
+    <string name="enable_forward_lookup_summary">ახლომდებარე ადგილების ჩვენება ნომრის ასაკრეფში ძიებისას</string>
+    <string name="enable_reverse_lookup_title">შებრუნებული ძიება</string>
+    <string name="enable_reverse_lookup_summary">მონაცემების მოძიება პირის ან ადგილის შესახებ, უცნობი ნომრიდან შემომავალი ზარისას</string>
+    <string name="forward_lookup_provider_title">პირდაპირი ძიების მომსახურების მომწოდებელი</string>
+    <string name="reverse_lookup_provider_title">შებრუნებული ძიების მომსახურების მომწოდებელი</string>
+    <string name="lookup_disclaimer">ძიებისას შესაძლოა მოთხოვნები გადაიგზავნოს დაცული კავშირით (https) შესაბამის ვებსაიტებზე, მონაცემების მოსაგროვებლად. მოთხოვნა შეიძლება შეიცავდეს მოსაძიებელი პირის ტელეფონის ნომერს ან საძიებო ფრაზას</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-kab-rDZ/cm_strings.xml b/java/com/android/dialer/lookup/res/values-kab-rDZ/cm_strings.xml
new file mode 100644
index 0000000..453b344
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-kab-rDZ/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Imukan iqerban</string>
+    <string name="lookup_settings_label">Anadi n uṭṭun n tiliɣri</string>
+    <string name="enable_forward_lookup_title">Anadi ɣer zdat</string>
+    <string name="enable_forward_lookup_summary">Sken imukan iqerban ticki yettnadi g unasiw</string>
+    <string name="enable_reverse_lookup_summary">Anadi n tlɣut ɣef umdan neɣ amkan iεnan uṭṭunen irussinen g sawalen i d-ikecmen</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-kn/cm_strings.xml b/java/com/android/dialer/lookup/res/values-kn/cm_strings.xml
new file mode 100644
index 0000000..58e153c
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-kn/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">ಸಮೀಪದ ಸ್ಥಳಗಳು</string>
+    <string name="lookup_settings_label">ಫೋನ್ ಸಂಖ್ಯೆ ಹುಡುಕು</string>
+    <string name="enable_forward_lookup_title">ಮುಂಚಿತ ಮೇಲ್ವಿಚಾರಣೆ</string>
+    <string name="enable_forward_lookup_summary">ಕರೆ ಘಟಕದಲ್ಲಿ ಹುಡುಕುವುವಾಗ, ಸಮೀಪದ ಸ್ಥಳಗಳನ್ನು ತೋರಿಸು</string>
+    <string name="enable_reverse_lookup_title">ಉಲ್ಟ ಹುಡುಕು</string>
+    <string name="enable_reverse_lookup_summary">ಆಗಮಿತ ಕರೆಗಳಲ್ಲಿ ಅಪರಿಚಿತ ಸಂಖ್ಯೆಗಳ ವ್ಯಕ್ತಿ ಅಥವ ಸ್ಥಳದ ಬಗ್ಗೆ ಮಾಹಿತಿ ಮೇಲ್ವಿಚಾರಿಸು</string>
+    <string name="forward_lookup_provider_title">ಮುಂಚಿತ ಮೇಲ್ವಿಚಾರಣೆ ಪರಿಚಾರಕ</string>
+    <string name="reverse_lookup_provider_title">ಉಲ್ಟ ಹುಡುಕುವ ಪರಿಚಾರಕ</string>
+    <string name="lookup_disclaimer">ಮೇಲ್ವಿಚಾರಣೆ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸಲು ದೂರದ ಜಾಲತಾಣಗಳಿಗೆ ಸುರಕ್ಷಿತ ಶಿಷ್ಟಾಚಾರ (https) ಬಳಸಿ ಪ್ರಶ್ನೆಗಳನ್ನು ಕಳುಹಿಸಬಹುದು. ಪರಿಚಾರಕ ಪ್ರಶ್ನೆಯಲ್ಲಿ ಇನ್ನೊಬ್ಬ ವ್ಯಕ್ತಿಯ ದೂರವಾಣಿ ಸಂಖ್ಯೆಯನ್ನೂ ಕಳುಹಿಸಬಹುದು</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-ko/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ko/cm_strings.xml
new file mode 100644
index 0000000..bc4e909
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-ko/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">주변 장소</string>
+    <string name="lookup_settings_label">전화번호 검색</string>
+    <string name="enable_forward_lookup_title">순서대로 검색</string>
+    <string name="enable_forward_lookup_summary">다이얼러에서 검색 시 근처 장소 표시</string>
+    <string name="enable_reverse_lookup_title">역방향 검색</string>
+    <string name="enable_reverse_lookup_summary">모르는 번호에서 전화가 오면 연락처나 장소에 대한 정보를 검색</string>
+    <string name="forward_lookup_provider_title">정방향 검색 제공자</string>
+    <string name="reverse_lookup_provider_title">역방향 검색 제공자</string>
+    <string name="lookup_disclaimer">검색 기능은 정보 수집을 목적으로 https 보안 프로토콜을 사용하여 원격 웹 사이트에 쿼리를 보낼 수 있습니다. 이 쿼리에는 검색어 또는 상대방의 전화번호가 포함될 수 있습니다.</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-nb/cm_strings.xml b/java/com/android/dialer/lookup/res/values-nb/cm_strings.xml
new file mode 100644
index 0000000..0ec28cf
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-nb/cm_strings.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Nærliggende steder</string>
+    <string name="lookup_settings_label">Telefonnummeroppleting</string>
+    <string name="enable_forward_lookup_title">Videresendingsoppleting</string>
+    <string name="enable_forward_lookup_summary">Vis nærliggende steder når du søker i telefonappen</string>
+    <string name="enable_reverse_lookup_title">Omvendt oppleting</string>
+    <string name="enable_reverse_lookup_summary">Slå opp informasjon om personen eller stedet når det kommer inn en samtale med ukjent nummer</string>
+    <string name="forward_lookup_provider_title">Tjeneste for oppleting av videresending</string>
+    <string name="reverse_lookup_provider_title">Tjeneste for omvendt oppleting</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-nl/cm_strings.xml b/java/com/android/dialer/lookup/res/values-nl/cm_strings.xml
new file mode 100644
index 0000000..aa6b15c
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-nl/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Nabijgelegen plaatsen</string>
+    <string name="lookup_settings_label">Telefoonnummer zoeken</string>
+    <string name="enable_forward_lookup_title">Vooruit zoeken</string>
+    <string name="enable_forward_lookup_summary">Toon nabijgelegen plaatsen in de kiezer tijdens het zoeken</string>
+    <string name="enable_reverse_lookup_title">Omgekeerd zoeken</string>
+    <string name="enable_reverse_lookup_summary">Informatie over de persoon of plaats opzoeken bij inkomende oproepen van onbekende nummers</string>
+    <string name="forward_lookup_provider_title">Dienst om vooruit te zoeken</string>
+    <string name="reverse_lookup_provider_title">Aanbieder voor omgekeerd zoeken</string>
+    <string name="lookup_disclaimer">Zoekopdrachten kunnen gegevens versturen naar externe websites via een beveiligd protocol (https) om informatie te verzamelen. De gegevens kunnen het telefoonnummer van de andere partij of de zoekopdracht bevatten</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-pl/cm_strings.xml b/java/com/android/dialer/lookup/res/values-pl/cm_strings.xml
new file mode 100644
index 0000000..011054f
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-pl/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Miejsca w pobliżu</string>
+    <string name="lookup_settings_label">Wyszukiwanie numeru telefonu</string>
+    <string name="enable_forward_lookup_title">Wyszukiwanie do przodu</string>
+    <string name="enable_forward_lookup_summary">Pokaż miejsca w pobliżu podczas wyszukiwania w dialerze</string>
+    <string name="enable_reverse_lookup_title">Wyszukiwanie wstecz</string>
+    <string name="enable_reverse_lookup_summary">Wyszukaj informacje o osobie lub miejscu dla nieznanych numerów połączeń przychodzących</string>
+    <string name="forward_lookup_provider_title">Dostawca wyszukiwania w przód</string>
+    <string name="reverse_lookup_provider_title">Dostawca wyszukiwania wstecz</string>
+    <string name="lookup_disclaimer">Wyszukiwania mogą wysyłać zapytania za pomocą protokołu bezpiecznego (https) do zdalnych stron internetowych w celu zbierania informacji. Zapytanie może zawierać numer telefonu lub zapytania wyszukiwania rozmówcy</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-pt-rBR/cm_strings.xml b/java/com/android/dialer/lookup/res/values-pt-rBR/cm_strings.xml
new file mode 100644
index 0000000..4f45fe2
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-pt-rBR/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Locais próximos</string>
+    <string name="lookup_settings_label">Pesquisar números de telefone</string>
+    <string name="enable_forward_lookup_title">Pesquisa de encaminhamento</string>
+    <string name="enable_forward_lookup_summary">Mostrar lugares próximos ao pesquisar no discador</string>
+    <string name="enable_reverse_lookup_title">Pesquisa inversa</string>
+    <string name="enable_reverse_lookup_summary">Procurar informações sobre a pessoa ou local para números desconhecidos em chamadas recebidas</string>
+    <string name="forward_lookup_provider_title">Provedor de pesquisa de encaminhamento</string>
+    <string name="reverse_lookup_provider_title">Provedor de pesquisa inversa</string>
+    <string name="lookup_disclaimer">As pesquisas podem enviar consultas usando um protocolo seguro (HTTPS) para obterem informações em sites remotos. A consulta pode incluir o número de telefone da outra pessoa ou o conteúdo da pesquisa</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-pt-rPT/cm_strings.xml b/java/com/android/dialer/lookup/res/values-pt-rPT/cm_strings.xml
new file mode 100644
index 0000000..2103c97
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-pt-rPT/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Locais próximos</string>
+    <string name="lookup_settings_label">Pesquisa de números de telefone</string>
+    <string name="enable_forward_lookup_title">Pesquisa direta</string>
+    <string name="enable_forward_lookup_summary">Mostrar locais próximos ao pesquisar no teclado</string>
+    <string name="enable_reverse_lookup_title">Pesquisa inversa</string>
+    <string name="enable_reverse_lookup_summary">Procurar informações sobre a pessoa ou local para números desconhecidos de chamadas recebidas</string>
+    <string name="forward_lookup_provider_title">Fornecedor de pesquisa direta</string>
+    <string name="reverse_lookup_provider_title">Fornecedor de pesquisa inversa</string>
+    <string name="lookup_disclaimer">As pesquisas podem enviar consultas através de um protocolo seguro (https) para sites remotos de forma a conseguirem informações. A consulta pode incluir o número de telefone da outra pessoa ou o conteúdo da pesquisa</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-ro/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ro/cm_strings.xml
new file mode 100644
index 0000000..7186e04
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-ro/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Locații în apropiere</string>
+    <string name="lookup_settings_label">Căutare număr de telefon</string>
+    <string name="enable_forward_lookup_title">Căutare redirecționată</string>
+    <string name="enable_forward_lookup_summary">Arată locațiile din apropiere când se caută în telefon</string>
+    <string name="enable_reverse_lookup_title">Căutare inversă</string>
+    <string name="enable_reverse_lookup_summary">Caută informații despre persoană sau locație pentru numerele necunoscute la primirea apelurilor</string>
+    <string name="forward_lookup_provider_title">Furnizor de căutare redirecționată</string>
+    <string name="reverse_lookup_provider_title">Furnizor de căutare inversă</string>
+    <string name="lookup_disclaimer">Căutările pot trimite interogări peste un protocol securizat (https) la site-uri web de la distanță pentru a colecta informaţii. Interogarea poate include numărul de telefon al celeilalte părţi sau interogarea căutării</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-ru/cm_strings.xml b/java/com/android/dialer/lookup/res/values-ru/cm_strings.xml
new file mode 100644
index 0000000..b9ba62b
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-ru/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Места рядом</string>
+    <string name="lookup_settings_label">Поиск номеров телефона</string>
+    <string name="enable_forward_lookup_title">Прямой поиск</string>
+    <string name="enable_forward_lookup_summary">Показывать ближайшие организации при поиске в номеронабирателе</string>
+    <string name="enable_reverse_lookup_title">Обратный поиск</string>
+    <string name="enable_reverse_lookup_summary">Поиск информации о человеке или месте для входящих с неизвестных номеров</string>
+    <string name="forward_lookup_provider_title">Провайдер прямого поиска</string>
+    <string name="reverse_lookup_provider_title">Провайдер обратного поиска</string>
+    <string name="lookup_disclaimer">Для сбора информации поисковые запросы могут передаваться на удаленные веб-сайты по защищенному протоколу (https). Запрос может включать телефонный номер другой стороны или поисковый запрос</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-sc-rIT/cm_strings.xml b/java/com/android/dialer/lookup/res/values-sc-rIT/cm_strings.xml
new file mode 100644
index 0000000..70f3cbb
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-sc-rIT/cm_strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="lookup_disclaimer">Sas chircas diant pòdere imbiare sos datos de chirca pro mèdiu de unu protocollu seguru (https) a sitos remotos pro otènnere sas informatziones. Sos datos diant pòdere incluire su nùmeru de telèfonu de s\'àtera persone o sos tèrmines de chirca</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-sk/cm_strings.xml b/java/com/android/dialer/lookup/res/values-sk/cm_strings.xml
new file mode 100644
index 0000000..352e8cd
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-sk/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Miesta v blízkosti</string>
+    <string name="lookup_settings_label">Vyhľadávanie telefónneho čísla</string>
+    <string name="enable_forward_lookup_title">Vyhľadávanie vpred</string>
+    <string name="enable_forward_lookup_summary">Zobraziť miesta v blízkosti pri vyhľadávaní v číselníku</string>
+    <string name="enable_reverse_lookup_title">Spätné vyhľadávanie</string>
+    <string name="enable_reverse_lookup_summary">Vyhľadať informácie o osobe alebo mieste pre neznáme čísla u prichádzajúcich hovorov</string>
+    <string name="forward_lookup_provider_title">Poskytovateľ vyhľadávania vpred</string>
+    <string name="reverse_lookup_provider_title">Poskytovateľ pre spätné vyhľadávanie</string>
+    <string name="lookup_disclaimer">Vyhľadávanie môže posielať informácie prostredníctvom zabezpečeného protokolu (https) na vzdialené webové stránky. Dopyt môže obsahovať telefónne číslo druhej strany alebo vyhľadávací dopyt</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-sl/cm_strings.xml b/java/com/android/dialer/lookup/res/values-sl/cm_strings.xml
new file mode 100644
index 0000000..1f6435c
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-sl/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Bližnja mesta</string>
+    <string name="lookup_settings_label">Iskanje za telefonsko številko</string>
+    <string name="enable_forward_lookup_title">Posredujoče iskanje</string>
+    <string name="enable_forward_lookup_summary">Prikaži bližnja mesta med iskanjem v klicalniku</string>
+    <string name="enable_reverse_lookup_title">Obratno iskanje</string>
+    <string name="enable_reverse_lookup_summary">Poišči podatke o osebi ali mestu za neznane številke med dohodnimi klici</string>
+    <string name="forward_lookup_provider_title">Ponudnik posredujočega iskanja</string>
+    <string name="reverse_lookup_provider_title">Ponudnik obratnega iskanja</string>
+    <string name="lookup_disclaimer">Iskanja lahko pošiljajo poizvedbe prek varnega protokola (https) oddaljenim spletnim stranem za zbiranje podatkov. Poizvedba lahko vključuje telefonsko številko druge osebe ali poizvedbo iskanja</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-sq/cm_strings.xml b/java/com/android/dialer/lookup/res/values-sq/cm_strings.xml
new file mode 100644
index 0000000..14c1d5d
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-sq/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Vendet përreth</string>
+    <string name="lookup_settings_label">Kërkim në numrator</string>
+    <string name="enable_forward_lookup_title">Kërkim në përparësi</string>
+    <string name="enable_forward_lookup_summary">Shfaq vendet përreth kur kërkon me tastierë</string>
+    <string name="enable_reverse_lookup_title">Kërkim i anasjelltë</string>
+    <string name="enable_reverse_lookup_summary">Kërkon informacion për personin ose origjinën e numrave të panjohur qe telefonojnë</string>
+    <string name="forward_lookup_provider_title">Ofruesi i shërbimit të kërkimit të hershëm</string>
+    <string name="reverse_lookup_provider_title">Ofruesi i shërbimit të kërkimit të anasjelltë</string>
+    <string name="lookup_disclaimer">Kërkimet mund të dërgojnë pyetje mbi protokolle të sigurta (https) drejt faqeve të tjera për të marë informacion. Kjo kërkesë mund të përfshijë numrin e personit tjetër ose pse kërkohet</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-sr/cm_strings.xml b/java/com/android/dialer/lookup/res/values-sr/cm_strings.xml
new file mode 100644
index 0000000..bc6b4fe
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-sr/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Места у околини</string>
+    <string name="lookup_settings_label">Претрага бројева телефона</string>
+    <string name="enable_forward_lookup_title">Напредни преглед</string>
+    <string name="enable_forward_lookup_summary">Прикажи околна места приликом претраге у бројчанику</string>
+    <string name="enable_reverse_lookup_title">Обрнуто проналажење</string>
+    <string name="enable_reverse_lookup_summary">Потражи информације о особи или месту за непознате бројеве на долазним позивима</string>
+    <string name="forward_lookup_provider_title">Добављач напредне претраге</string>
+    <string name="reverse_lookup_provider_title">Провајдер обрнутог проналажења</string>
+    <string name="lookup_disclaimer">Претраге могу слати упите преко безбедног (https) протокола удаљеним веб сајтовима да добију информације. Упити могу садржати број телефона друге стране или упит претраге</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-sv/cm_strings.xml b/java/com/android/dialer/lookup/res/values-sv/cm_strings.xml
new file mode 100644
index 0000000..fa4eb9e
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-sv/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Platser i närheten</string>
+    <string name="lookup_settings_label">Telefonnummersökning</string>
+    <string name="enable_forward_lookup_title">Platssökning</string>
+    <string name="enable_forward_lookup_summary">Visa platser i närheten vid sökning med knappsatsen</string>
+    <string name="enable_reverse_lookup_title">Omvänd sökning</string>
+    <string name="enable_reverse_lookup_summary">Sök efter information om personen eller platsen för okända nummer vid inkommande samtal</string>
+    <string name="forward_lookup_provider_title">Platssökningstjänst</string>
+    <string name="reverse_lookup_provider_title">Leverantör för omvänd sökning</string>
+    <string name="lookup_disclaimer">Sökningar kan innebära att förfrågningar skickas till webbplatser via ett säkert protokoll (HTTPS) för att samla in information. Förfrågningarna kan innehålla motpartens telefonnummer, söktermen, eller båda två.</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-th/cm_strings.xml b/java/com/android/dialer/lookup/res/values-th/cm_strings.xml
new file mode 100644
index 0000000..6469055
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-th/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">สถานที่ใกล้เคียง</string>
+    <string name="lookup_settings_label">ค้นหาหมายเลขโทรศัพท์</string>
+    <string name="enable_forward_lookup_title">ค้นหาการส่งต่อ</string>
+    <string name="enable_forward_lookup_summary">แสดงสถานที่ใกล้เคียงเมื่อค้นหาจากแอปโทรศัพท์</string>
+    <string name="enable_reverse_lookup_title">ค้นหาย้อนกลับ</string>
+    <string name="enable_reverse_lookup_summary">ค้นหาข้อมูลเกี่ยวกับบุคคลหรือสถานที่สำหรับหมายเลขสายเรียกเข้าที่ไม่รู้จัก</string>
+    <string name="forward_lookup_provider_title">ผู้ให้บริการการค้นหาการส่งต่อ</string>
+    <string name="reverse_lookup_provider_title">ผู้ให้บริการค้นหาย้อนกลับ</string>
+    <string name="lookup_disclaimer">ค้นหาอาจส่งแบบสอบถามผ่านโพรโทคอลปลอดภัย (https) ไปยังเว็บไซต์ระยะไกลเพื่อรวบรวมข้อมูล แบบสอบถามอาจรวมถึงหมายเลขโทรศัพท์ของบุคคลอื่นหรือค้นหา</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-tr/cm_strings.xml b/java/com/android/dialer/lookup/res/values-tr/cm_strings.xml
new file mode 100644
index 0000000..fa62c8b
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-tr/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Yakın yerler</string>
+    <string name="lookup_settings_label">Telefon numarası arama</string>
+    <string name="enable_forward_lookup_title">Yönlendirme araması</string>
+    <string name="enable_forward_lookup_summary">Çevirici içinde arama yaparken yakınlardaki yerleri göster</string>
+    <string name="enable_reverse_lookup_title">Bilinmeyen numaradan aranma</string>
+    <string name="enable_reverse_lookup_summary">Gelen aramalarda bilinmeyen numaralar için kişi veya yer hakkında bilgi ara</string>
+    <string name="forward_lookup_provider_title">Arama yönlendirme sağlayıcısı</string>
+    <string name="reverse_lookup_provider_title">Ters arama sağlayıcısı</string>
+    <string name="lookup_disclaimer">Aramalar, bilgi toplamak için uzak web sitelerine güvenli bir protokol (https) üzerinden sorgu gönderebilir. Sorgu, diğer tarafın telefon numarasını veya arama sorgusunu içerebilir</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-uk/cm_strings.xml b/java/com/android/dialer/lookup/res/values-uk/cm_strings.xml
new file mode 100644
index 0000000..8889459
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-uk/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Місця поблизу</string>
+    <string name="lookup_settings_label">Пошук номеру телефона</string>
+    <string name="enable_forward_lookup_title">Прямий пошук</string>
+    <string name="enable_forward_lookup_summary">Показувати найближчі місця при пошуку в номеронабирачі</string>
+    <string name="enable_reverse_lookup_title">Зворотній пошук</string>
+    <string name="enable_reverse_lookup_summary">Пошук інформації про людину або місце для вхідних з невідомих номерів</string>
+    <string name="forward_lookup_provider_title">Постачальник прямого пошуку</string>
+    <string name="reverse_lookup_provider_title">Постачальник зворотнього пошуку</string>
+    <string name="lookup_disclaimer">Пошукові запити можуть відправляти запити за захищеним протоколом (https) на віддалені веб-сайти для збору інформації. Запит може включати телефонний номер іншої сторони або пошуковий запит</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-vi/cm_strings.xml b/java/com/android/dialer/lookup/res/values-vi/cm_strings.xml
new file mode 100644
index 0000000..4d040b8
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-vi/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">Địa điểm gần kề</string>
+    <string name="lookup_settings_label">Tra cứu số điện thoại</string>
+    <string name="enable_forward_lookup_title">Tra cứu xuôi</string>
+    <string name="enable_forward_lookup_summary">Hiển thị các địa điểm gần kề khi tìm kiếm trong trình quay số</string>
+    <string name="enable_reverse_lookup_title">Tra cứu ngược</string>
+    <string name="enable_reverse_lookup_summary">Tra cứu thông tin về người hoặc địa điểm cho các số không xác định trên các cuộc gọi đến</string>
+    <string name="forward_lookup_provider_title">Nhà cung cấp tra cứu xuôi</string>
+    <string name="reverse_lookup_provider_title">Nhà cung cấp tra cứu ngược</string>
+    <string name="lookup_disclaimer">Tra cứu có thể gửi truy vấn qua giao thức an toàn (https) tới các trang web từ xa để thu thập thông tin. Truy vấn có thể bao gồm số điện thoại của bên kia hoặc truy vấn tìm kiếm</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-zh-rCN/cm_strings.xml b/java/com/android/dialer/lookup/res/values-zh-rCN/cm_strings.xml
new file mode 100644
index 0000000..d1b1048
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-zh-rCN/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">附近地点</string>
+    <string name="lookup_settings_label">电话号码查询</string>
+    <string name="enable_forward_lookup_title">正向查询</string>
+    <string name="enable_forward_lookup_summary">在拨号器搜索时显示附近地点</string>
+    <string name="enable_reverse_lookup_title">反向查询</string>
+    <string name="enable_reverse_lookup_summary">为未知来电号码查询人名或地点信息</string>
+    <string name="forward_lookup_provider_title">正向查询提供商</string>
+    <string name="reverse_lookup_provider_title">反向查询提供商</string>
+    <string name="lookup_disclaimer">查询将会发送基于安全协议（https）的请求到远程网站以获取信息。此查询可能会包含第三方的电话号码或搜索查询。</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values-zh-rTW/cm_strings.xml b/java/com/android/dialer/lookup/res/values-zh-rTW/cm_strings.xml
new file mode 100644
index 0000000..4564d3d
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values-zh-rTW/cm_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="nearby_places">附近的地點</string>
+    <string name="lookup_settings_label">搜尋電話號碼</string>
+    <string name="enable_forward_lookup_title">正向搜尋</string>
+    <string name="enable_forward_lookup_summary">在撥號程式搜尋時顯示附近的地點</string>
+    <string name="enable_reverse_lookup_title">反向搜尋</string>
+    <string name="enable_reverse_lookup_summary">為未知的來電號碼搜尋聯絡人或地點資料</string>
+    <string name="forward_lookup_provider_title">正向搜尋供應商</string>
+    <string name="reverse_lookup_provider_title">反向搜尋供應商</string>
+    <string name="lookup_disclaimer">查找可以透過安全協定 (https) 向遠端網站傳送查詢以收集資訊。查詢可能包括對方的電話號碼或搜尋查詢</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values/cm_arrays.xml b/java/com/android/dialer/lookup/res/values/cm_arrays.xml
new file mode 100644
index 0000000..8486e19
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values/cm_arrays.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string-array name="forward_lookup_providers" translatable="false">
+        <item>OpenStreetMap</item>
+    </string-array>
+
+    <string-array name="forward_lookup_provider_names" translatable="false">
+        <item>OpenStreetMap</item>
+    </string-array>
+
+    <string-array name="reverse_lookup_providers" translatable="false">
+        <item>DasTelefonbuch</item>
+        <item>YellowPages</item>
+        <item>YellowPages_CA</item>
+        <item>ZabaSearch</item>
+    </string-array>
+
+    <string-array name="reverse_lookup_provider_names" translatable="false">
+        <item>Das Telefonbuch (DE)</item>
+        <item>YellowPages (US)</item>
+        <item>YellowPages (CA)</item>
+        <item>ZabaSearch (US)</item>
+    </string-array>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/values/cm_strings.xml b/java/com/android/dialer/lookup/res/values/cm_strings.xml
new file mode 100644
index 0000000..f3bc1c9
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/values/cm_strings.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Forward lookup -->
+    <string name="nearby_places">Nearby places</string>
+
+    <!-- Number lookup -->
+    <string name="lookup_settings_label">Phone number lookup</string>
+    <string name="enable_forward_lookup_title">Forward lookup</string>
+    <string name="enable_forward_lookup_summary">Show nearby places when searching in the dialer</string>
+    <string name="enable_reverse_lookup_title">Reverse lookup</string>
+    <string name="enable_reverse_lookup_summary">Look up information about the person or place for unknown numbers on incoming calls</string>
+    <string name="forward_lookup_provider_title">Forward lookup provider</string>
+    <string name="reverse_lookup_provider_title">Reverse lookup provider</string>
+
+    <!-- Disclaimer -->
+    <string name="lookup_disclaimer">Lookups may send queries over a secure protocol (https) to remote websites to gather information. The query may include the other party\'s phone number or the search query</string>
+</resources>
diff --git a/java/com/android/dialer/lookup/res/xml/lookup_settings.xml b/java/com/android/dialer/lookup/res/xml/lookup_settings.xml
new file mode 100644
index 0000000..2eb6bc4
--- /dev/null
+++ b/java/com/android/dialer/lookup/res/xml/lookup_settings.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2014 The CyanogenMod Project
+  ~ Copyright (C) 2023 The LineageOS Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <SwitchPreferenceCompat
+        android:defaultValue="false"
+        android:key="enable_forward_lookup"
+        android:persistent="false"
+        android:summary="@string/enable_forward_lookup_summary"
+        android:title="@string/enable_forward_lookup_title" />
+
+    <ListPreference
+        android:dependency="enable_forward_lookup"
+        android:entries="@array/forward_lookup_provider_names"
+        android:entryValues="@array/forward_lookup_providers"
+        android:key="forward_lookup_provider"
+        android:persistent="false"
+        android:summary="%s"
+        android:title="@string/forward_lookup_provider_title"
+        app:iconSpaceReserved="false" />
+
+    <SwitchPreferenceCompat
+        android:defaultValue="false"
+        android:key="enable_reverse_lookup"
+        android:persistent="false"
+        android:summary="@string/enable_reverse_lookup_summary"
+        android:title="@string/enable_reverse_lookup_title" />
+
+    <ListPreference
+        android:dependency="enable_reverse_lookup"
+        android:entries="@array/reverse_lookup_provider_names"
+        android:entryValues="@array/reverse_lookup_providers"
+        android:key="reverse_lookup_provider"
+        android:persistent="false"
+        android:summary="%s"
+        android:title="@string/reverse_lookup_provider_title"
+        app:iconSpaceReserved="false" />
+
+    <Preference
+        android:summary="@string/lookup_disclaimer"
+        app:iconSpaceReserved="false" />
+</PreferenceScreen>
+
diff --git a/java/com/android/dialer/lookup/yellowpages/YellowPagesApi.java b/java/com/android/dialer/lookup/yellowpages/YellowPagesApi.java
new file mode 100644
index 0000000..e5d90e7
--- /dev/null
+++ b/java/com/android/dialer/lookup/yellowpages/YellowPagesApi.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2014 Xiao-Long Chen <chillermillerlong@hotmail.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup.yellowpages;
+
+import android.text.TextUtils;
+
+import com.android.dialer.lookup.LookupUtils;
+
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class YellowPagesApi {
+  private static final String TAG = YellowPagesApi.class.getSimpleName();
+
+  static final String LOOKUP_URL_UNITED_STATES =
+      "https://www.yellowpages.com/phone?phone_search_terms=";
+  static final String LOOKUP_URL_CANADA =
+      "https://www.yellowpages.ca/search/si/1/";
+
+  private final String number;
+  private String output = null;
+  private ContactInfo info = null;
+  private final String lookupUrl;
+
+  public YellowPagesApi(String number, String lookupUrl) {
+    this.number = number;
+    this.lookupUrl = lookupUrl;
+  }
+
+  private void fetchPage() throws IOException {
+    output = LookupUtils.httpGet(lookupUrl + number, null);
+  }
+
+  private String getPhotoUrl(String website) throws IOException {
+    String output = LookupUtils.httpGet(website, null);
+    String galleryRef = LookupUtils.firstRegexResult(output,
+        "href=\"([^\"]+gallery\\?lid=[^\"]+)\"", true);
+    if (galleryRef == null) {
+      return null;
+    }
+
+    // Get first image
+    return LookupUtils.firstRegexResult(
+        LookupUtils.httpGet("https://www.yellowpages.com" + galleryRef, null),
+        "\"type\":\"image\",\"src\":\"([^\"]+)\"", true);
+  }
+
+  private String[] parseNameWebsiteUnitedStates() {
+    Pattern regexNameAndWebsite = Pattern.compile(
+        "<a href=\"([^>]+?)\"[^>]+?class=\"url[^>]+?>([^<]+)</a>",
+        Pattern.DOTALL);
+    String name = null;
+    String website = null;
+
+    Matcher m = regexNameAndWebsite.matcher(output);
+    if (m.find()) {
+      website = m.group(1).trim();
+      name = m.group(2).trim();
+    }
+
+    return new String[] { name, website };
+  }
+
+  private String[] parseNameWebsiteCanada() {
+    Pattern regexNameAndWebsite = Pattern.compile(
+        "class=\"ypgListingTitleLink utagLink\".*?href=\"(.*?)\">"
+        + "(<span\\s+class=\"listingTitle\">.*?</span>)",
+        Pattern.DOTALL);
+    String name = null;
+    String website = null;
+
+    Matcher m = regexNameAndWebsite.matcher(output);
+    if (m.find()) {
+      website = m.group(1).trim();
+      name = LookupUtils.fromHtml(m.group(2).trim());
+    }
+
+    if (website != null) {
+      website = "https://www.yellowpages.ca" + website;
+    }
+
+    return new String[] { name, website };
+  }
+
+  private String parseNumberUnitedStates() {
+    return LookupUtils.firstRegexResult(output,
+        "business-phone.*?>\n*([^\n<]+)\n*<", true);
+  }
+
+  private String parseNumberCanada() {
+    return LookupUtils.firstRegexResult(output,
+        "<div\\s+class=\"phoneNumber\">(.*?)</div>", true);
+  }
+
+  private String parseAddressUnitedStates() {
+    String addressStreet = LookupUtils.firstRegexResult(output,
+        "street-address.*?>\n*([^\n<]+)\n*<", true);
+    if (addressStreet != null && addressStreet.endsWith(",")) {
+      addressStreet = addressStreet.substring(0, addressStreet.length() - 1);
+    }
+
+    String addressCity = LookupUtils.firstRegexResult(output,
+        "locality.*?>\n*([^\n<]+)\n*<", true);
+    String addressState = LookupUtils.firstRegexResult(output,
+        "region.*?>\n*([^\n<]+)\n*<", true);
+    String addressZip = LookupUtils.firstRegexResult(output,
+        "postal-code.*?>\n*([^\n<]+)\n*<", true);
+
+    StringBuilder sb = new StringBuilder();
+
+    if (!TextUtils.isEmpty(addressStreet)) {
+      sb.append(addressStreet);
+    }
+    if (!TextUtils.isEmpty(addressCity)) {
+      sb.append(", ");
+      sb.append(addressCity);
+    }
+    if (!TextUtils.isEmpty(addressState)) {
+      sb.append(", ");
+      sb.append(addressState);
+    }
+    if (!TextUtils.isEmpty(addressZip)) {
+      sb.append(", ");
+      sb.append(addressZip);
+    }
+
+    String address = sb.toString();
+    return address.isEmpty() ? null : address;
+  }
+
+  private String parseAddressCanada() {
+    String address = LookupUtils.firstRegexResult(output,
+        "<div\\s+class=\"address\">(.*?)</div>", true);
+    return LookupUtils.fromHtml(address);
+  }
+
+  private void buildContactInfo() throws IOException {
+    Matcher m;
+
+    String name = null;
+    String website = null;
+    String phoneNumber = null;
+    String address = null;
+    String photoUrl = null;
+
+    if (lookupUrl.equals(LOOKUP_URL_UNITED_STATES)) {
+      String[] ret = parseNameWebsiteUnitedStates();
+      name = ret[0];
+      website = ret[1];
+      phoneNumber = parseNumberUnitedStates();
+      address = parseAddressUnitedStates();
+      if (website != null) {
+        photoUrl = getPhotoUrl(website);
+      }
+    } else {
+      String[] ret = parseNameWebsiteCanada();
+      name = ret[0];
+      website = ret[1];
+      phoneNumber = parseNumberCanada();
+      address = parseAddressCanada();
+      // AFAIK, Canada's YellowPages doesn't have photos
+    }
+
+    info = new ContactInfo();
+    info.name = name;
+    info.address = address;
+    info.formattedNumber = phoneNumber != null ? phoneNumber : number;
+    info.website = website;
+    info.photoUrl = photoUrl;
+  }
+
+  public ContactInfo getContactInfo() throws IOException {
+    if (info == null) {
+      fetchPage();
+      buildContactInfo();
+    }
+
+    return info;
+  }
+
+  public static class ContactInfo {
+    String name;
+    String address;
+    String formattedNumber;
+    String website;
+    String photoUrl;
+  }
+}
diff --git a/java/com/android/dialer/lookup/yellowpages/YellowPagesReverseLookup.java b/java/com/android/dialer/lookup/yellowpages/YellowPagesReverseLookup.java
new file mode 100644
index 0000000..42e332e
--- /dev/null
+++ b/java/com/android/dialer/lookup/yellowpages/YellowPagesReverseLookup.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2014 Xiao-Long Chen <chillermillerlong@hotmail.com>
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup.yellowpages;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
+import android.util.Log;
+
+import com.android.dialer.lookup.ContactBuilder;
+import com.android.dialer.lookup.LookupSettings;
+import com.android.dialer.lookup.LookupUtils;
+import com.android.dialer.lookup.ReverseLookup;
+import com.android.dialer.phonenumbercache.ContactInfo;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+public class YellowPagesReverseLookup extends ReverseLookup {
+  private static final String TAG = YellowPagesReverseLookup.class.getSimpleName();
+
+  private final String type;
+
+  public YellowPagesReverseLookup(Context context, String type) {
+    this.type = type;
+  }
+
+  /**
+   * Lookup image
+   *
+   * @param context The application context
+   * @param uri The image URI
+   */
+  @Override
+  public Bitmap lookupImage(Context context, Uri uri) {
+    if (uri == null) {
+      throw new NullPointerException("URI is null");
+    }
+
+    Log.e(TAG, "Fetching " + uri);
+
+    String scheme = uri.getScheme();
+
+    if (scheme.startsWith("http")) {
+      try {
+        byte[] response = LookupUtils.httpGetBytes(uri.toString(), null);
+        return BitmapFactory.decodeByteArray(response, 0, response.length);
+      } catch (IOException e) {
+        Log.e(TAG, "Failed to retrieve image", e);
+      }
+    } else if (scheme.equals(ContentResolver.SCHEME_CONTENT)) {
+      try {
+        ContentResolver cr = context.getContentResolver();
+        return BitmapFactory.decodeStream(cr.openInputStream(uri));
+      } catch (FileNotFoundException e) {
+        Log.e(TAG, "Failed to retrieve image", e);
+      }
+    }
+
+    return null;
+  }
+
+  /**
+   * Perform phone number lookup.
+   *
+   * @param context The application context
+   * @param normalizedNumber The normalized phone number
+   * @param formattedNumber The formatted phone number
+   * @return The phone number info object
+   */
+  @Override
+  public ContactInfo lookupNumber(Context context,
+      String normalizedNumber, String formattedNumber) throws IOException {
+    String lookupUrl = type.equals(LookupSettings.RLP_YELLOWPAGES_CA)
+        ? YellowPagesApi.LOOKUP_URL_CANADA : YellowPagesApi.LOOKUP_URL_UNITED_STATES;
+    YellowPagesApi ypa = new YellowPagesApi(normalizedNumber, lookupUrl);
+    YellowPagesApi.ContactInfo info = ypa.getContactInfo();
+    if (info.name == null) {
+        return null;
+    }
+
+    ContactBuilder builder = ContactBuilder.forReverseLookup(normalizedNumber, formattedNumber)
+        .setName(ContactBuilder.Name.createDisplayName(info.name))
+        .addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(info.formattedNumber))
+        .addWebsite(ContactBuilder.WebsiteUrl.createProfile(info.website));
+
+    if (info.address != null) {
+      ContactBuilder.Address a = new ContactBuilder.Address();
+      a.formattedAddress = info.address;
+      a.type = StructuredPostal.TYPE_WORK;
+      builder.addAddress(a);
+    }
+
+    if (info.photoUrl != null) {
+      builder.setPhotoUri(info.photoUrl);
+    } else {
+      builder.setPhotoUri(ContactBuilder.PHOTO_URI_BUSINESS);
+    }
+
+    return builder.build();
+  }
+}
diff --git a/java/com/android/dialer/lookup/zabasearch/ZabaSearchApi.java b/java/com/android/dialer/lookup/zabasearch/ZabaSearchApi.java
new file mode 100644
index 0000000..6118740
--- /dev/null
+++ b/java/com/android/dialer/lookup/zabasearch/ZabaSearchApi.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2014 Xiao-Long Chen <chillermillerlong@hotmail.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup.zabasearch;
+
+import android.text.TextUtils;
+
+import com.android.dialer.lookup.LookupUtils;
+
+import java.io.IOException;
+
+public class ZabaSearchApi {
+  private static final String TAG = ZabaSearchApi.class.getSimpleName();
+
+  private static final String LOOKUP_URL = "https://www.zabasearch.com/phone/";
+
+  private final String number;
+  public String output = null;
+  private ContactInfo info = null;
+
+  public ZabaSearchApi(String number) {
+    this.number = number;
+  }
+
+  private void fetchPage() throws IOException {
+    output = LookupUtils.httpGet(LOOKUP_URL + number, null);
+  }
+
+  private void buildContactInfo() {
+    // Name
+    String name = LookupUtils.firstRegexResult(output,
+        "itemprop=\"?name\"?>([^<]+)<", true);
+    // Formatted phone number
+    String phoneNumber = LookupUtils.firstRegexResult(output,
+        "itemprop=\"?telephone\"?>([^<]+)<", true);
+    // Address
+    String addressStreet = LookupUtils.firstRegexResult(output,
+        "itemprop=\"?streetAddress\"?>([^<]+?)(&nbsp;)*<", true);
+    String addressCity = LookupUtils.firstRegexResult(output,
+        "itemprop=\"?addressLocality\"?>([^<]+)<", true);
+    String addressState = LookupUtils.firstRegexResult(output,
+        "itemprop=\"?addressRegion\"?>([^<]+)<", true);
+    String addressZip = LookupUtils.firstRegexResult(output,
+        "itemprop=\"?postalCode\"?>([^<]+)<", true);
+
+    StringBuilder sb = new StringBuilder();
+
+    if (!TextUtils.isEmpty(addressStreet)) {
+      sb.append(addressStreet);
+    }
+    if (!TextUtils.isEmpty(addressCity)) {
+      sb.append(", ");
+      sb.append(addressCity);
+    }
+    if (!TextUtils.isEmpty(addressState)) {
+      sb.append(", ");
+      sb.append(addressState);
+    }
+    if (!TextUtils.isEmpty(addressZip)) {
+      sb.append(", ");
+      sb.append(addressZip);
+    }
+
+    String address = sb.toString();
+    if (address.isEmpty()) {
+        address = null;
+    }
+
+    info = new ContactInfo();
+    info.name = name;
+    info.address = address;
+    info.formattedNumber = number;
+    info.website = LOOKUP_URL + info.formattedNumber;
+  }
+
+  public ContactInfo getContactInfo() throws IOException {
+    if (info == null) {
+      fetchPage();
+      buildContactInfo();
+    }
+
+    return info;
+  }
+
+  public static class ContactInfo {
+    String name;
+    String address;
+    String formattedNumber;
+    String website;
+  }
+}
diff --git a/java/com/android/dialer/lookup/zabasearch/ZabaSearchReverseLookup.java b/java/com/android/dialer/lookup/zabasearch/ZabaSearchReverseLookup.java
new file mode 100644
index 0000000..16afd09
--- /dev/null
+++ b/java/com/android/dialer/lookup/zabasearch/ZabaSearchReverseLookup.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2014 Xiao-Long Chen <chillermillerlong@hotmail.com>
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.lookup.zabasearch;
+
+import android.content.Context;
+
+import com.android.dialer.lookup.ContactBuilder;
+import com.android.dialer.lookup.ReverseLookup;
+import com.android.dialer.phonenumbercache.ContactInfo;
+
+import java.io.IOException;
+
+public class ZabaSearchReverseLookup extends ReverseLookup {
+  private static final String TAG = ZabaSearchReverseLookup.class.getSimpleName();
+
+  public ZabaSearchReverseLookup(Context context) {
+  }
+
+  /**
+   * Perform phone number lookup.
+   *
+   * @param context The application context
+   * @param normalizedNumber The normalized phone number
+   * @param formattedNumber The formatted phone number
+   * @return The phone number info object
+   */
+  @Override
+  public ContactInfo lookupNumber(Context context,
+      String normalizedNumber, String formattedNumber) throws IOException {
+    ZabaSearchApi zsa = new ZabaSearchApi(normalizedNumber);
+    ZabaSearchApi.ContactInfo info = zsa.getContactInfo();
+    if (info.name == null) {
+        return null;
+    }
+
+    return ContactBuilder.forReverseLookup(normalizedNumber, formattedNumber)
+        .setName(ContactBuilder.Name.createDisplayName(info.name))
+        .addPhoneNumber(ContactBuilder.PhoneNumber.createMainNumber(info.formattedNumber))
+        .addWebsite(ContactBuilder.WebsiteUrl.createProfile(info.website))
+        .addAddress(ContactBuilder.Address.createFormattedHome(info.address))
+        .build();
+  }
+}
diff --git a/java/com/android/dialer/main/MainActivityPeer.java b/java/com/android/dialer/main/MainActivityPeer.java
index 31af9ad..494bfc4 100644
--- a/java/com/android/dialer/main/MainActivityPeer.java
+++ b/java/com/android/dialer/main/MainActivityPeer.java
@@ -32,12 +32,8 @@
 
   void onActivityStop();
 
-  void onActivityDestroyed();
-
   void onNewIntent(Intent intent);
 
-  void onActivityResult(int requestCode, int resultCode, Intent data);
-
   void onSaveInstanceState(Bundle bundle);
 
   boolean onBackPressed();
diff --git a/java/com/android/dialer/main/impl/AndroidManifest-withoutActivity.xml b/java/com/android/dialer/main/impl/AndroidManifest-withoutActivity.xml
deleted file mode 100644
index c273a57..0000000
--- a/java/com/android/dialer/main/impl/AndroidManifest-withoutActivity.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest package="com.android.dialer.main.impl"/>
diff --git a/java/com/android/dialer/main/impl/AndroidManifest.xml b/java/com/android/dialer/main/impl/AndroidManifest.xml
deleted file mode 100644
index a1ed5eb..0000000
--- a/java/com/android/dialer/main/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.main.impl">
-
-  <application>
-
-    <!-- TODO(a bug): remove activity themes and only have application wide themes -->
-    <!-- The entrance point for Phone UI.
-         stateAlwaysHidden is set to suppress keyboard show up on dialpad screen. -->
-    <activity
-        android:name="com.android.dialer.main.impl.MainActivity"
-        android:clearTaskOnLaunch="true"
-        android:directBootAware="true"
-        android:exported="true"
-        android:label="@string/main_activity_label"
-        android:launchMode="singleTask"
-        android:resizeableActivity="true"
-        android:theme="@style/MainActivityTheme"
-        android:windowSoftInputMode="stateAlwaysHidden|adjustNothing">
-
-      <intent-filter>
-        <action android:name="com.android.dialer.main.impl.MAIN"/>
-        <category android:name="android.intent.category.DEFAULT"/>
-      </intent-filter>
-
-      <intent-filter>
-        <action android:name="android.intent.action.DIAL"/>
-
-        <category android:name="android.intent.category.DEFAULT"/>
-        <category android:name="android.intent.category.BROWSABLE"/>
-
-        <data android:mimeType="vnd.android.cursor.item/phone"/>
-        <data android:mimeType="vnd.android.cursor.item/person"/>
-      </intent-filter>
-      <intent-filter>
-        <action android:name="android.intent.action.DIAL"/>
-
-        <category android:name="android.intent.category.DEFAULT"/>
-        <category android:name="android.intent.category.BROWSABLE"/>
-
-        <data android:scheme="voicemail"/>
-      </intent-filter>
-      <intent-filter>
-        <action android:name="android.intent.action.DIAL"/>
-        <category android:name="android.intent.category.DEFAULT"/>
-      </intent-filter>
-      <intent-filter>
-        <action android:name="android.intent.action.MAIN"/>
-
-        <category android:name="android.intent.category.DEFAULT"/>
-        <category android:name="android.intent.category.LAUNCHER"/>
-        <category android:name="android.intent.category.BROWSABLE"/>
-      </intent-filter>
-      <intent-filter>
-        <action android:name="android.intent.action.VIEW"/>
-        <action android:name="android.intent.action.DIAL"/>
-
-        <category android:name="android.intent.category.DEFAULT"/>
-        <category android:name="android.intent.category.BROWSABLE"/>
-
-        <data android:scheme="tel"/>
-      </intent-filter>
-      <intent-filter>
-        <action android:name="android.intent.action.VIEW"/>
-
-        <category android:name="android.intent.category.DEFAULT"/>
-        <category android:name="android.intent.category.BROWSABLE"/>
-
-        <data android:mimeType="vnd.android.cursor.dir/calls"/>
-      </intent-filter>
-      <intent-filter>
-        <action android:name="android.intent.action.CALL_BUTTON"/>
-
-        <category android:name="android.intent.category.DEFAULT"/>
-        <category android:name="android.intent.category.BROWSABLE"/>
-      </intent-filter>
-
-      <!-- This was never intended to be public, but is here for backward
-           compatibility.  Use Intent.ACTION_DIAL instead. -->
-      <intent-filter>
-        <action android:name="com.android.phone.action.TOUCH_DIALER"/>
-
-        <category android:name="android.intent.category.DEFAULT"/>
-        <category android:name="android.intent.category.TAB"/>
-      </intent-filter>
-      <intent-filter>
-        <action android:name="com.android.phone.action.RECENT_CALLS"/>
-
-        <category android:name="android.intent.category.DEFAULT"/>
-        <category android:name="android.intent.category.TAB"/>
-      </intent-filter>
-
-      <meta-data
-          android:name="com.android.keyguard.layout"
-          android:resource="@layout/keyguard_preview"/>
-
-    </activity>
-
-    <!-- This is the historical name of the "main" activity and is kept as an alias for backwards
-         compatibility in case older apps refer to the activity in this way. -->
-
-    <!--  {@deprecated Use .MainActivity instead.} -->
-    <activity-alias
-        android:name="com.android.dialer.app.DialtactsActivity"
-        android:exported="true"
-        android:targetActivity=".MainActivity"/>
-
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/main/impl/DefaultDialerActivity.java b/java/com/android/dialer/main/impl/DefaultDialerActivity.java
new file mode 100644
index 0000000..3a1382c
--- /dev/null
+++ b/java/com/android/dialer/main/impl/DefaultDialerActivity.java
@@ -0,0 +1,64 @@
+/*
+ * SPDX-FileCopyrightText: The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.android.dialer.main.impl;
+
+import android.app.role.RoleManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.telecom.TelecomManager;
+import android.view.View;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.android.dialer.R;
+import com.android.dialer.widget.EmptyContentView;
+
+public class DefaultDialerActivity extends AppCompatActivity implements
+        EmptyContentView.OnEmptyViewActionButtonClickedListener {
+
+    private RoleManager mRoleManager;
+
+    private final ActivityResultLauncher<Intent> mDefaultDialerLauncher = registerForActivityResult(
+            new ActivityResultContracts.StartActivityForResult(), result -> {
+                if (result.getResultCode() == RESULT_OK) {
+                    finish();
+                }
+            });
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        setTheme(R.style.MainActivityTheme);
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.default_dialer_view);
+
+        mRoleManager = (RoleManager) getSystemService(Context.ROLE_SERVICE);
+
+        EmptyContentView emptyContentView = findViewById(R.id.empty_list_view);
+        emptyContentView.setDescription(R.string.default_dialer_text);
+        emptyContentView.setImage(R.drawable.quantum_ic_call_vd_theme_24);
+        emptyContentView.setActionLabel(R.string.default_dialer_action);
+        emptyContentView.setActionClickedListener(this);
+        emptyContentView.setVisibility(View.VISIBLE);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (mRoleManager.isRoleHeld(RoleManager.ROLE_DIALER)) {
+            finish();
+        }
+    }
+
+    @Override
+    public void onEmptyViewActionButtonClicked() {
+        Intent roleRequest = mRoleManager.createRequestRoleIntent(RoleManager.ROLE_DIALER);
+        roleRequest.putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME,
+                getPackageName());
+        mDefaultDialerLauncher.launch(roleRequest);
+    }
+}
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index 1129609..966c323 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,28 +17,25 @@
 
 package com.android.dialer.main.impl;
 
-import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.content.LocalBroadcastManager;
+
+import androidx.annotation.NonNull;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.android.dialer.R;
 import com.android.dialer.blockreportspam.ShowBlockReportSpamDialogReceiver;
-import com.android.dialer.calllog.config.CallLogConfigComponent;
-import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.interactions.PhoneNumberInteraction.DisambigDialogDismissedListener;
-import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCode;
-import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorListener;
 import com.android.dialer.main.MainActivityPeer;
-import com.android.dialer.main.impl.bottomnav.BottomNavBar.TabIndex;
+
+import com.android.dialer.R;
+import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.TransactionSafeActivity;
 
 /** This is the main activity for dialer. It hosts favorites, call log, search, dialpad, etc... */
 // TODO(calderwoodra): Do not extend TransactionSafeActivity after new SpeedDial is launched
 public class MainActivity extends TransactionSafeActivity
-    implements MainActivityPeer.PeerSupplier,
-        // TODO(calderwoodra): remove these 2 interfaces when we migrate to new speed dial fragment
-        InteractionErrorListener,
-        DisambigDialogDismissedListener {
+    implements MainActivityPeer.PeerSupplier {
 
   private MainActivityPeer activePeer;
 
@@ -47,49 +45,19 @@
    */
   private ShowBlockReportSpamDialogReceiver showBlockReportSpamDialogReceiver;
 
-  public static Intent getShowCallLogIntent(Context context) {
-    return getShowTabIntent(context, TabIndex.CALL_LOG);
-  }
-
-  /** Returns intent that will open MainActivity to the specified tab. */
-  public static Intent getShowTabIntent(Context context, @TabIndex int tabIndex) {
-    if (CallLogConfigComponent.get(context).callLogConfig().isNewPeerEnabled()) {
-      // TODO(calderwoodra): implement this in NewMainActivityPeer
-      return null;
-    }
-    return OldMainActivityPeer.getShowTabIntent(context, tabIndex);
-  }
-
-  /**
-   * @param context Context of the application package implementing MainActivity class.
-   * @return intent for MainActivity.class
-   */
-  public static Intent getIntent(Context context) {
-    return new Intent(context, MainActivity.class)
-        .setAction(Intent.ACTION_VIEW)
-        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-  }
-
   @Override
   protected void onCreate(Bundle savedInstanceState) {
+    setTheme(R.style.MainActivityTheme);
     super.onCreate(savedInstanceState);
     LogUtil.enterBlock("MainActivity.onCreate");
-    // If peer was set by the super, don't reset it.
-    activePeer = getNewPeer();
+
+    activePeer = new OldMainActivityPeer(this);
     activePeer.onActivityCreate(savedInstanceState);
 
     showBlockReportSpamDialogReceiver =
         new ShowBlockReportSpamDialogReceiver(getSupportFragmentManager());
   }
 
-  protected MainActivityPeer getNewPeer() {
-    if (CallLogConfigComponent.get(this).callLogConfig().isNewPeerEnabled()) {
-      return new NewMainActivityPeer(this);
-    } else {
-      return new OldMainActivityPeer(this);
-    }
-  }
-
   @Override
   protected void onNewIntent(Intent intent) {
     super.onNewIntent(intent);
@@ -100,6 +68,12 @@
   @Override
   protected void onResume() {
     super.onResume();
+
+    if (!TelecomUtil.isDefaultDialer(this)) {
+      startActivity(new Intent(this, DefaultDialerActivity.class));
+      return;
+    }
+
     activePeer.onActivityResume();
 
     LocalBroadcastManager.getInstance(this)
@@ -128,18 +102,12 @@
   }
 
   @Override
-  protected void onSaveInstanceState(Bundle bundle) {
+  protected void onSaveInstanceState(@NonNull Bundle bundle) {
     super.onSaveInstanceState(bundle);
     activePeer.onSaveInstanceState(bundle);
   }
 
   @Override
-  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-    super.onActivityResult(requestCode, resultCode, data);
-    activePeer.onActivityResult(requestCode, resultCode, data);
-  }
-
-  @Override
   public void onBackPressed() {
     if (activePeer.onBackPressed()) {
       return;
@@ -148,28 +116,6 @@
   }
 
   @Override
-  public void interactionError(@InteractionErrorCode int interactionErrorCode) {
-    switch (interactionErrorCode) {
-      case InteractionErrorCode.USER_LEAVING_ACTIVITY:
-        // This is expected to happen if the user exits the activity before the interaction occurs.
-        return;
-      case InteractionErrorCode.CONTACT_NOT_FOUND:
-      case InteractionErrorCode.CONTACT_HAS_NO_NUMBER:
-      case InteractionErrorCode.OTHER_ERROR:
-      default:
-        // All other error codes are unexpected. For example, it should be impossible to start an
-        // interaction with an invalid contact from this activity.
-        throw Assert.createIllegalStateFailException(
-            "PhoneNumberInteraction error: " + interactionErrorCode);
-    }
-  }
-
-  @Override
-  public void onDisambigDialogDismissed() {
-    // Don't do anything; the app will remain open with favorites tiles displayed.
-  }
-
-  @Override
   public MainActivityPeer getPeer() {
     return activePeer;
   }
diff --git a/java/com/android/dialer/main/impl/MainSearchController.java b/java/com/android/dialer/main/impl/MainSearchController.java
index 364f5bc..2470ec0 100644
--- a/java/com/android/dialer/main/impl/MainSearchController.java
+++ b/java/com/android/dialer/main/impl/MainSearchController.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,44 +17,48 @@
 
 package com.android.dialer.main.impl;
 
-import android.app.Fragment;
-import android.app.FragmentTransaction;
 import android.content.ActivityNotFoundException;
 import android.content.Intent;
 import android.os.Bundle;
 import android.speech.RecognizerIntent;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v7.app.AppCompatActivity;
 import android.text.TextUtils;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.animation.Animation;
 import android.view.animation.Animation.AnimationListener;
 import android.widget.Toast;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.AttrRes;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+
 import com.android.contacts.common.dialog.ClearFrequentsDialog;
+import com.android.dialer.R;
 import com.android.dialer.app.calllog.CallLogActivity;
 import com.android.dialer.app.settings.DialerSettingsActivity;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.constants.ActivityRequestCodes;
 import com.android.dialer.dialpadview.DialpadFragment;
 import com.android.dialer.dialpadview.DialpadFragment.DialpadListener;
 import com.android.dialer.dialpadview.DialpadFragment.OnDialpadQueryChangedListener;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
+import com.android.dialer.helplines.HelplineActivity;
 import com.android.dialer.main.impl.bottomnav.BottomNavBar;
 import com.android.dialer.main.impl.toolbar.MainToolbar;
 import com.android.dialer.main.impl.toolbar.SearchBarListener;
 import com.android.dialer.searchfragment.list.NewSearchFragment;
 import com.android.dialer.searchfragment.list.NewSearchFragment.SearchFragmentListener;
 import com.android.dialer.smartdial.util.SmartDialNameMatcher;
+import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.TransactionSafeActivity;
-import com.google.common.base.Optional;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * Search controller for handling all the logic related to entering and exiting the search UI.
@@ -72,7 +77,6 @@
 public class MainSearchController implements SearchBarListener {
 
   private static final String KEY_IS_FAB_HIDDEN = "is_fab_hidden";
-  private static final String KEY_TOOLBAR_SHADOW_VISIBILITY = "toolbar_shadow_visibility";
   private static final String KEY_IS_TOOLBAR_EXPANDED = "is_toolbar_expanded";
   private static final String KEY_IS_TOOLBAR_SLIDE_UP = "is_toolbar_slide_up";
 
@@ -83,7 +87,6 @@
   private final BottomNavBar bottomNav;
   private final FloatingActionButton fab;
   private final MainToolbar toolbar;
-  private final View toolbarShadow;
 
   /** View located underneath the toolbar that needs to animate with it. */
   private final View fragmentContainer;
@@ -102,24 +105,29 @@
   private DialpadFragment dialpadFragment;
   private NewSearchFragment searchFragment;
 
+  private final ActivityResultLauncher<Intent> mVoiceSearchLauncher;
+
   public MainSearchController(
       TransactionSafeActivity activity,
       BottomNavBar bottomNav,
       FloatingActionButton fab,
       MainToolbar toolbar,
-      View toolbarShadow,
       View fragmentContainer) {
     this.activity = activity;
     this.bottomNav = bottomNav;
     this.fab = fab;
     this.toolbar = toolbar;
-    this.toolbarShadow = toolbarShadow;
     this.fragmentContainer = fragmentContainer;
 
-    dialpadFragment =
-        (DialpadFragment) activity.getFragmentManager().findFragmentByTag(DIALPAD_FRAGMENT_TAG);
-    searchFragment =
-        (NewSearchFragment) activity.getFragmentManager().findFragmentByTag(SEARCH_FRAGMENT_TAG);
+    dialpadFragment = (DialpadFragment) activity.getSupportFragmentManager()
+            .findFragmentByTag(DIALPAD_FRAGMENT_TAG);
+    searchFragment = (NewSearchFragment) activity.getSupportFragmentManager()
+            .findFragmentByTag(SEARCH_FRAGMENT_TAG);
+
+    mVoiceSearchLauncher = activity.registerForActivityResult(
+            new ActivityResultContracts.StartActivityForResult(), result -> {
+              onVoiceResults(result.getResultCode(), result.getData());
+            });
   }
 
   /** Should be called if we're showing the dialpad because of a new ACTION_DIAL intent. */
@@ -149,16 +157,13 @@
       return;
     }
 
-    Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_DIALPAD, activity);
-
     fab.hide();
     toolbar.slideUp(animate, fragmentContainer);
-    toolbar.expand(animate, Optional.absent(), /* requestFocus */ false);
-    toolbarShadow.setVisibility(View.VISIBLE);
+    toolbar.expand(animate, Optional.empty(), /* requestFocus */ false);
 
     activity.setTitle(R.string.dialpad_activity_title);
 
-    FragmentTransaction transaction = activity.getFragmentManager().beginTransaction();
+    FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
 
     // Show Search
     if (searchFragment == null) {
@@ -231,7 +236,10 @@
           public void onAnimationEnd(Animation animation) {
             if (activity.isSafeToCommitTransactions()
                 && !(activity.isFinishing() || activity.isDestroyed())) {
-              activity.getFragmentManager().beginTransaction().hide(dialpadFragment).commit();
+              activity.getSupportFragmentManager()
+                      .beginTransaction()
+                      .hide(dialpadFragment)
+                      .commit();
             }
           }
 
@@ -269,23 +277,14 @@
     LogUtil.enterBlock("MainSearchController.onSearchListTouched");
     if (isDialpadVisible()) {
       if (TextUtils.isEmpty(dialpadFragment.getQuery())) {
-        Logger.get(activity)
-            .logImpression(
-                DialerImpression.Type.MAIN_TOUCH_DIALPAD_SEARCH_LIST_TO_CLOSE_SEARCH_AND_DIALPAD);
         closeSearch(true);
       } else {
-        Logger.get(activity)
-            .logImpression(DialerImpression.Type.MAIN_TOUCH_DIALPAD_SEARCH_LIST_TO_HIDE_DIALPAD);
         hideDialpad(/* animate=*/ true);
       }
     } else if (isSearchVisible()) {
       if (TextUtils.isEmpty(toolbar.getQuery())) {
-        Logger.get(activity)
-            .logImpression(DialerImpression.Type.MAIN_TOUCH_SEARCH_LIST_TO_CLOSE_SEARCH);
         closeSearch(true);
       } else {
-        Logger.get(activity)
-            .logImpression(DialerImpression.Type.MAIN_TOUCH_SEARCH_LIST_TO_HIDE_KEYBOARD);
         closeKeyboard();
       }
     }
@@ -299,17 +298,10 @@
   public boolean onBackPressed() {
     if (isDialpadVisible() && !TextUtils.isEmpty(dialpadFragment.getQuery())) {
       LogUtil.i("MainSearchController.onBackPressed", "Dialpad visible with query");
-      Logger.get(activity)
-          .logImpression(DialerImpression.Type.MAIN_PRESS_BACK_BUTTON_TO_HIDE_DIALPAD);
       hideDialpad(/* animate=*/ true);
       return true;
     } else if (isSearchVisible()) {
       LogUtil.i("MainSearchController.onBackPressed", "Search is visible");
-      Logger.get(activity)
-          .logImpression(
-              isDialpadVisible()
-                  ? DialerImpression.Type.MAIN_PRESS_BACK_BUTTON_TO_CLOSE_SEARCH_AND_DIALPAD
-                  : DialerImpression.Type.MAIN_PRESS_BACK_BUTTON_TO_CLOSE_SEARCH);
       closeSearch(true);
       return true;
     } else {
@@ -341,9 +333,9 @@
       fab.show();
     }
     showBottomNav();
+    updateStatusBarColor(android.R.attr.statusBarColor);
     toolbar.collapse(animate);
-    toolbarShadow.setVisibility(View.GONE);
-    activity.getFragmentManager().beginTransaction().hide(searchFragment).commit();
+    activity.getSupportFragmentManager().beginTransaction().hide(searchFragment).commit();
 
     // Clear the dialpad so the phone number isn't persisted between search sessions.
     if (dialpadFragment != null) {
@@ -397,22 +389,19 @@
   @Override
   public void onSearchBarClicked() {
     LogUtil.enterBlock("MainSearchController.onSearchBarClicked");
-    Logger.get(activity).logImpression(DialerImpression.Type.MAIN_CLICK_SEARCH_BAR);
-    openSearch(Optional.absent());
+    openSearch(Optional.empty());
   }
 
   private void openSearch(Optional<String> query) {
     LogUtil.enterBlock("MainSearchController.openSearch");
 
-    Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_SEARCH, activity);
-
     fab.hide();
     toolbar.expand(/* animate=*/ true, query, /* requestFocus */ true);
     toolbar.showKeyboard();
-    toolbarShadow.setVisibility(View.VISIBLE);
     hideBottomNav();
+    updateStatusBarColor(android.R.attr.colorBackgroundFloating);
 
-    FragmentTransaction transaction = activity.getFragmentManager().beginTransaction();
+    FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
     // Show Search
     if (searchFragment == null) {
       searchFragment = NewSearchFragment.newInstance();
@@ -422,8 +411,7 @@
       transaction.show(searchFragment);
     }
 
-    searchFragment.setQuery(
-        query.isPresent() ? query.get() : "", CallInitiationType.Type.REGULAR_SEARCH);
+    searchFragment.setQuery(query.orElse(""), CallInitiationType.Type.REGULAR_SEARCH);
 
     if (activity.isSafeToCommitTransactions()) {
       transaction.commit();
@@ -457,10 +445,9 @@
 
   @Override
   public void onVoiceButtonClicked(VoiceSearchResultCallback voiceSearchResultCallback) {
-    Logger.get(activity).logImpression(DialerImpression.Type.MAIN_CLICK_SEARCH_BAR_VOICE_BUTTON);
     try {
       Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
-      activity.startActivityForResult(voiceIntent, ActivityRequestCodes.DIALTACTS_VOICE_SEARCH);
+      mVoiceSearchLauncher.launch(voiceIntent);
     } catch (ActivityNotFoundException e) {
       Toast.makeText(activity, R.string.voice_search_not_available, Toast.LENGTH_SHORT).show();
     }
@@ -470,15 +457,15 @@
   public boolean onMenuItemClicked(MenuItem menuItem) {
     if (menuItem.getItemId() == R.id.settings) {
       activity.startActivity(new Intent(activity, DialerSettingsActivity.class));
-      Logger.get(activity).logScreenView(ScreenEvent.Type.SETTINGS, activity);
       return true;
     } else if (menuItem.getItemId() == R.id.clear_frequents) {
-      ClearFrequentsDialog.show(activity.getFragmentManager());
-      Logger.get(activity).logScreenView(ScreenEvent.Type.CLEAR_FREQUENTS, activity);
+      ClearFrequentsDialog.show(activity.getSupportFragmentManager());
       return true;
     } else if (menuItem.getItemId() == R.id.menu_call_history) {
       final Intent intent = new Intent(activity, CallLogActivity.class);
       activity.startActivity(intent);
+    } else if (menuItem.getItemId() == R.id.menu_helplines) {
+      activity.startActivity(new Intent(activity, HelplineActivity.class));
     }
     return false;
   }
@@ -537,13 +524,11 @@
 
   public void onSaveInstanceState(Bundle bundle) {
     bundle.putBoolean(KEY_IS_FAB_HIDDEN, !fab.isShown());
-    bundle.putInt(KEY_TOOLBAR_SHADOW_VISIBILITY, toolbarShadow.getVisibility());
     bundle.putBoolean(KEY_IS_TOOLBAR_EXPANDED, toolbar.isExpanded());
     bundle.putBoolean(KEY_IS_TOOLBAR_SLIDE_UP, toolbar.isSlideUp());
   }
 
   public void onRestoreInstanceState(Bundle savedInstanceState) {
-    toolbarShadow.setVisibility(savedInstanceState.getInt(KEY_TOOLBAR_SHADOW_VISIBILITY));
     if (savedInstanceState.getBoolean(KEY_IS_FAB_HIDDEN, false)) {
       fab.hide();
     }
@@ -554,16 +539,13 @@
     if (savedInstanceState.getBoolean(KEY_IS_TOOLBAR_EXPANDED, false)) {
       // If the toolbar is slide up, that means the dialpad is showing. Thus we don't want to
       // request focus or we'll break physical/bluetooth keyboards typing.
-      toolbar.expand(/* animate */ false, Optional.absent(), /* requestFocus */ !isSlideUp);
+      toolbar.expand(/* animate */ false, Optional.empty(), /* requestFocus */ !isSlideUp);
     }
   }
 
-  public void addOnSearchShowListener(OnSearchShowListener listener) {
-    onSearchShowListenerList.add(listener);
-  }
-
-  public void removeOnSearchShowListener(OnSearchShowListener listener) {
-    onSearchShowListenerList.remove(listener);
+  private void updateStatusBarColor(@AttrRes int colorAttribute) {
+      int color = DialerUtils.resolveColor(activity, colorAttribute);
+      activity.getWindow().setStatusBarColor(color);
   }
 
   private void notifyListenersOnSearchOpen() {
@@ -584,14 +566,4 @@
 
     void onSearchClose();
   }
-
-  @VisibleForTesting
-  void setDialpadFragment(DialpadFragment dialpadFragment) {
-    this.dialpadFragment = dialpadFragment;
-  }
-
-  @VisibleForTesting
-  void setSearchFragment(NewSearchFragment searchFragment) {
-    this.searchFragment = searchFragment;
-  }
 }
diff --git a/java/com/android/dialer/main/impl/NewMainActivityPeer.java b/java/com/android/dialer/main/impl/NewMainActivityPeer.java
deleted file mode 100644
index f2d6fa6..0000000
--- a/java/com/android/dialer/main/impl/NewMainActivityPeer.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.main.impl;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import com.android.dialer.calllog.CallLogComponent;
-import com.android.dialer.calllog.ui.NewCallLogFragment;
-import com.android.dialer.common.concurrent.DefaultFutureCallback;
-import com.android.dialer.main.MainActivityPeer;
-import com.android.dialer.main.impl.bottomnav.BottomNavBar;
-import com.android.dialer.main.impl.bottomnav.BottomNavBar.OnBottomNavTabSelectedListener;
-import com.android.dialer.main.impl.bottomnav.BottomNavBar.TabIndex;
-import com.android.dialer.voicemail.listui.NewVoicemailFragment;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.MoreExecutors;
-
-/** MainActivityPeer that implements the new fragments. */
-public class NewMainActivityPeer implements MainActivityPeer {
-
-  private final MainActivity mainActivity;
-
-  public NewMainActivityPeer(MainActivity mainActivity) {
-    this.mainActivity = mainActivity;
-  }
-
-  @Override
-  public void onActivityCreate(Bundle saveInstanceState) {
-    mainActivity.setContentView(R.layout.main_activity);
-    MainBottomNavBarBottomNavTabListener bottomNavBarBottomNavTabListener =
-        new MainBottomNavBarBottomNavTabListener(
-            mainActivity.getSupportFragmentManager(), mainActivity.getApplicationContext());
-    BottomNavBar bottomNav = mainActivity.findViewById(R.id.bottom_nav_bar);
-    bottomNav.addOnTabSelectedListener(bottomNavBarBottomNavTabListener);
-    bottomNav.selectTab(TabIndex.SPEED_DIAL);
-  }
-
-  @Override
-  public void onActivityResume() {}
-
-  @Override
-  public void onUserLeaveHint() {}
-
-  @Override
-  public void onActivityPause() {}
-
-  @Override
-  public void onActivityStop() {}
-
-  @Override
-  public void onActivityDestroyed() {}
-
-  @Override
-  public void onNewIntent(Intent intent) {}
-
-  @Override
-  public void onActivityResult(int requestCode, int resultCode, Intent data) {}
-
-  @Override
-  public void onSaveInstanceState(Bundle bundle) {}
-
-  @Override
-  public boolean onBackPressed() {
-    return false;
-  }
-
-  /**
-   * Implementation of {@link OnBottomNavTabSelectedListener} that handles logic for showing each of
-   * the main tabs.
-   */
-  private static final class MainBottomNavBarBottomNavTabListener
-      implements OnBottomNavTabSelectedListener {
-
-    private static final String SPEED_DIAL_TAG = "speed_dial";
-    private static final String CALL_LOG_TAG = "call_log";
-    private static final String VOICEMAIL_TAG = "voicemail";
-
-    private final FragmentManager supportFragmentManager;
-    private final Context appContext;
-
-    private MainBottomNavBarBottomNavTabListener(
-        FragmentManager supportFragmentManager, Context appContext) {
-      this.supportFragmentManager = supportFragmentManager;
-      this.appContext = appContext;
-    }
-
-    @Override
-    public void onSpeedDialSelected() {
-      hideAllFragments();
-      // TODO(calderwoodra): Since we aren't using fragment utils in this peer, let's disable
-      // speed dial until we figure out a solution.
-      // SpeedDialFragment fragment =
-      //     (SpeedDialFragment) supportFragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
-      // if (fragment == null) {
-      //   supportFragmentManager
-      //       .beginTransaction()
-      //       .add(R.id.fragment_container, SpeedDialFragment.newInstance(), SPEED_DIAL_TAG)
-      //       .commit();
-      // } else {
-      //   supportFragmentManager.beginTransaction().show(fragment).commit();
-      // }
-    }
-
-    @Override
-    public void onCallLogSelected() {
-      hideAllFragments();
-      NewCallLogFragment fragment =
-          (NewCallLogFragment) supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
-      if (fragment == null) {
-        supportFragmentManager
-            .beginTransaction()
-            .add(R.id.fragment_container, new NewCallLogFragment(), CALL_LOG_TAG)
-            .commit();
-      } else {
-        supportFragmentManager.beginTransaction().show(fragment).commit();
-      }
-    }
-
-    @Override
-    public void onContactsSelected() {
-      hideAllFragments();
-      // TODO(calderwoodra): Implement ContactsFragment when FragmentUtils#getParent works
-    }
-
-    @Override
-    public void onVoicemailSelected() {
-      hideAllFragments();
-      NewVoicemailFragment fragment =
-          (NewVoicemailFragment) supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
-      if (fragment == null) {
-        supportFragmentManager
-            .beginTransaction()
-            .add(R.id.fragment_container, new NewVoicemailFragment(), VOICEMAIL_TAG)
-            .commit();
-      } else {
-        supportFragmentManager.beginTransaction().show(fragment).commit();
-      }
-    }
-
-    // TODO(calderwoodra): fix overlapping fragments issue
-    private void hideAllFragments() {
-      FragmentTransaction supportTransaction = supportFragmentManager.beginTransaction();
-      Fragment speedDialFragment = supportFragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
-      if (speedDialFragment != null) {
-        supportTransaction.hide(speedDialFragment);
-      }
-
-      Fragment callLogFragment = supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
-      if (callLogFragment != null) {
-        if (callLogFragment.isVisible()) {
-          // If the user taps any bottom nav button and the call log is showing, immediately cancel
-          // missed calls (unbold them and clear their notifications).
-          Futures.addCallback(
-              // TODO(zachh): Use dagger to create Peer and MainBottomNavBarBottomNavTabListener.
-              CallLogComponent.get(appContext).getClearMissedCalls().clearAll(),
-              new DefaultFutureCallback<>(),
-              MoreExecutors.directExecutor());
-        }
-        supportTransaction.hide(callLogFragment);
-      }
-
-      if (supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG) != null) {
-        supportTransaction.hide(supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG));
-      }
-      supportTransaction.commit();
-    }
-  }
-}
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
index feb76ac..1309d1e 100644
--- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,73 +18,48 @@
 package com.android.dialer.main.impl;
 
 import android.annotation.SuppressLint;
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
 import android.app.KeyguardManager;
-import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
 import android.database.ContentObserver;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Looper;
 import android.provider.CallLog.Calls;
 import android.provider.ContactsContract.QuickContact;
 import android.provider.VoicemailContract;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.design.widget.BottomSheetBehavior;
-import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.Snackbar;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.text.method.LinkMovementMethod;
 import android.view.ActionMode;
-import android.view.DragEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
-import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
-import com.android.dialer.animation.AnimUtils;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
+import com.android.dialer.R;
 import com.android.dialer.app.MainComponent;
 import com.android.dialer.app.calllog.CallLogAdapter;
 import com.android.dialer.app.calllog.CallLogFragment;
 import com.android.dialer.app.calllog.CallLogFragment.CallLogFragmentListener;
 import com.android.dialer.app.calllog.CallLogNotificationsService;
-import com.android.dialer.app.calllog.IntentProvider;
 import com.android.dialer.app.calllog.VisualVoicemailCallLogFragment;
-import com.android.dialer.app.list.DragDropController;
-import com.android.dialer.app.list.OldSpeedDialFragment;
-import com.android.dialer.app.list.OnDragDropListener;
-import com.android.dialer.app.list.OnListFragmentScrolledListener;
-import com.android.dialer.app.list.PhoneFavoriteSquareTileView;
-import com.android.dialer.app.list.RemoveView;
-import com.android.dialer.callcomposer.CallComposerActivity;
-import com.android.dialer.calldetails.OldCallDetailsActivity;
-import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.callintent.CallSpecificAppData;
-import com.android.dialer.calllog.CallLogComponent;
-import com.android.dialer.calllog.config.CallLogConfigComponent;
-import com.android.dialer.calllog.ui.NewCallLogFragment;
 import com.android.dialer.common.FragmentUtils.FragmentUtilListener;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DefaultFutureCallback;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.common.concurrent.UiListener;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.constants.ActivityRequestCodes;
+import com.android.dialer.common.concurrent.SupportUiListener;
 import com.android.dialer.contactsfragment.ContactsFragment;
 import com.android.dialer.contactsfragment.ContactsFragment.Header;
 import com.android.dialer.contactsfragment.ContactsFragment.OnContactSelectedListener;
@@ -93,22 +69,14 @@
 import com.android.dialer.dialpadview.DialpadFragment.DialpadListener;
 import com.android.dialer.dialpadview.DialpadFragment.LastOutgoingCallCallback;
 import com.android.dialer.dialpadview.DialpadFragment.OnDialpadQueryChangedListener;
-import com.android.dialer.duo.DuoComponent;
 import com.android.dialer.i18n.LocaleUtils;
-import com.android.dialer.interactions.PhoneNumberInteraction;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
 import com.android.dialer.main.MainActivityPeer;
 import com.android.dialer.main.impl.bottomnav.BottomNavBar;
 import com.android.dialer.main.impl.bottomnav.BottomNavBar.OnBottomNavTabSelectedListener;
 import com.android.dialer.main.impl.bottomnav.BottomNavBar.TabIndex;
 import com.android.dialer.main.impl.bottomnav.MissedCallCountObserver;
 import com.android.dialer.main.impl.toolbar.MainToolbar;
-import com.android.dialer.metrics.Metrics;
-import com.android.dialer.metrics.MetricsComponent;
 import com.android.dialer.postcall.PostCall;
-import com.android.dialer.precall.PreCall;
 import com.android.dialer.promotion.Promotion;
 import com.android.dialer.promotion.Promotion.PromotionType;
 import com.android.dialer.promotion.PromotionComponent;
@@ -119,18 +87,15 @@
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.theme.base.Theme;
 import com.android.dialer.theme.base.ThemeComponent;
-import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.TransactionSafeActivity;
-import com.android.dialer.voicemail.listui.NewVoicemailFragment;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler;
-import com.android.dialer.voicemail.listui.error.VoicemailStatusCorruptionHandler.Source;
 import com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker;
 import com.android.dialer.voicemailstatus.VoicemailStatusHelper;
 import com.android.voicemail.VoicemailComponent;
-import com.google.common.util.concurrent.Futures;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
 import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.Locale;
 import java.util.Optional;
 import java.util.concurrent.TimeUnit;
@@ -154,24 +119,6 @@
   // TODO(calderwoodra): change to AppCompatActivity once new speed dial ships
   private final TransactionSafeActivity activity;
 
-  private final BroadcastReceiver disableCallLogFrameworkReceiver =
-      new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-          if (bottomNavTabListener == null) {
-            return;
-          }
-          /*
-           * Remove the NewCallLogFragment and NewVoicemailFragment if it is currently attached. If
-           * this is not done, user interaction with the fragment could cause call log framework
-           * state to be unexpectedly written. For example scrolling could cause the
-           * AnnotatedCallLog to be read (which would trigger database creation).
-           */
-          bottomNavTabListener.disableNewCallLogFragment();
-          bottomNavTabListener.disableNewVoicemailFragment();
-        }
-      };
-
   // Contacts
   private MainOnContactSelectedListener onContactSelectedListener;
 
@@ -189,11 +136,8 @@
   // Call Log
   private MainCallLogHost callLogHostInterface;
   private MainCallLogFragmentListener callLogFragmentListener;
-  private MainOnListFragmentScrolledListener onListFragmentScrolledListener;
 
   // Speed Dial
-  private MainOnPhoneNumberPickerActionListener onPhoneNumberPickerActionListener;
-  private MainOldSpeedDialFragmentHost oldSpeedDialFragmentHost;
   private MainSpeedDialFragmentHost speedDialFragmentHost;
 
   /** Language the device was in last time {@link #onSaveInstanceState(Bundle)} was called. */
@@ -205,18 +149,10 @@
   private MainBottomNavBarBottomNavTabListener bottomNavTabListener;
   private View snackbarContainer;
   private MissedCallCountObserver missedCallCountObserver;
-  private UiListener<String> getLastOutgoingCallListener;
-  private UiListener<Integer> missedCallObserverUiListener;
+  private SupportUiListener<String> getLastOutgoingCallListener;
+  private SupportUiListener<Integer> missedCallObserverUiListener;
   private View bottomSheet;
 
-  public static Intent getShowTabIntent(Context context, @TabIndex int tabIndex) {
-    Intent intent = new Intent(context, MainActivity.class);
-    intent.setAction(ACTION_SHOW_TAB);
-    intent.putExtra(EXTRA_SHOW_TAB, tabIndex);
-    // TODO(calderwoodra): Do we need to set some URI data here
-    return intent;
-  }
-
   static boolean isShowTabIntent(Intent intent) {
     return ACTION_SHOW_TAB.equals(intent.getAction()) && intent.hasExtra(EXTRA_SHOW_TAB);
   }
@@ -259,10 +195,10 @@
   private void initUiListeners() {
     getLastOutgoingCallListener =
         DialerExecutorComponent.get(activity)
-            .createUiListener(activity.getFragmentManager(), "Query last phone number");
+            .createUiListener(activity.getSupportFragmentManager(), "Query last phone number");
     missedCallObserverUiListener =
         DialerExecutorComponent.get(activity)
-            .createUiListener(activity.getFragmentManager(), "Missed call observer");
+            .createUiListener(activity.getSupportFragmentManager(), "Missed call observer");
   }
 
   private void initLayout(Bundle savedInstanceState) {
@@ -277,7 +213,6 @@
     FloatingActionButton fab = activity.findViewById(R.id.fab);
     fab.setOnClickListener(
         v -> {
-          Logger.get(activity).logImpression(DialerImpression.Type.MAIN_CLICK_FAB_TO_OPEN_DIALPAD);
           searchController.showDialpad(true);
           if (callLogAdapterOnActionModeStateChangedListener.isEnabled) {
             LogUtil.i("OldMainActivityPeer.onFabClicked", "closing multiselect");
@@ -293,7 +228,6 @@
     bottomNavTabListener =
         new MainBottomNavBarBottomNavTabListener(
             activity,
-            activity.getFragmentManager(),
             activity.getSupportFragmentManager(),
             fab,
             bottomSheet);
@@ -311,9 +245,7 @@
             activity, activity.getContentResolver(), bottomNav, toolbar, bottomNavTabListener);
     bottomNav.addOnTabSelectedListener(callLogFragmentListener);
 
-    searchController =
-        getNewMainSearchController(
-            bottomNav, fab, toolbar, activity.findViewById(R.id.toolbar_shadow), snackbarContainer);
+    searchController = getNewMainSearchController(bottomNav, fab, toolbar, snackbarContainer);
     toolbar.setSearchBarListener(searchController);
 
     onDialpadQueryChangedListener = getNewOnDialpadQueryChangedListener(searchController);
@@ -324,22 +256,11 @@
         new MainCallLogAdapterOnActionModeStateChangedListener();
     callLogHostInterface = new MainCallLogHost(searchController, fab);
 
-    onListFragmentScrolledListener = new MainOnListFragmentScrolledListener(snackbarContainer);
-    onPhoneNumberPickerActionListener = new MainOnPhoneNumberPickerActionListener(activity);
-    oldSpeedDialFragmentHost =
-        new MainOldSpeedDialFragmentHost(
-            activity,
-            activity.findViewById(R.id.root_layout),
-            bottomNav,
-            activity.findViewById(R.id.contact_tile_drag_shadow_overlay),
-            activity.findViewById(R.id.remove_view),
-            activity.findViewById(R.id.search_view_container),
-            toolbar);
     speedDialFragmentHost =
         new MainSpeedDialFragmentHost(
             toolbar,
             activity.findViewById(R.id.root_layout),
-            activity.findViewById(R.id.coordinator_layout),
+            (ViewGroup) snackbarContainer,
             activity.findViewById(R.id.fragment_container));
 
     lastTabController = new LastTabController(activity, bottomNav, showVoicemailTab);
@@ -438,7 +359,6 @@
       if (extras != null && extras.getInt(Calls.EXTRA_CALL_TYPE_FILTER) == Calls.VOICEMAIL_TYPE) {
         LogUtil.i("OldMainActivityPeer.onHandleIntent", "Voicemail content type intent");
         tabToSelect = TabIndex.VOICEMAIL;
-        Logger.get(activity).logImpression(DialerImpression.Type.VVM_NOTIFICATION_CLICKED);
       } else {
         LogUtil.i("OldMainActivityPeer.onHandleIntent", "Call log content type intent");
         tabToSelect = TabIndex.CALL_LOG;
@@ -451,14 +371,12 @@
       LogUtil.i("OldMainActivityPeer.onHandleIntent", "Show last tab");
       tabToSelect = lastTabController.getLastTab();
     }
-    logImpressionForSelectedTab(tabToSelect);
     bottomNav.selectTab(tabToSelect);
 
     if (isDialOrAddCallIntent(intent)) {
       LogUtil.i("OldMainActivityPeer.onHandleIntent", "Dial or add call intent");
       // Dialpad will grab the intent and populate the number
       searchController.showDialpadFromNewIntent();
-      Logger.get(activity).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_DIALPAD);
     }
 
     if (intent.getBooleanExtra(MainComponent.EXTRA_CLEAR_NEW_VOICEMAILS, false)) {
@@ -467,21 +385,6 @@
     }
   }
 
-  /** Log impression for non user tab selection. */
-  private void logImpressionForSelectedTab(@TabIndex int tab) {
-    if (tab == TabIndex.SPEED_DIAL) {
-      Logger.get(activity).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_TAB_FAVORITE);
-    } else if (tab == TabIndex.CALL_LOG) {
-      Logger.get(activity).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_TAB_CALL_LOG);
-    } else if (tab == TabIndex.CONTACTS) {
-      Logger.get(activity).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_TAB_CONTACTS);
-    } else if (tab == TabIndex.VOICEMAIL) {
-      Logger.get(activity).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_TAB_VOICEMAIL);
-    } else {
-      throw new IllegalStateException("Invalid tab: " + tab);
-    }
-  }
-
   /** Returns true if the given intent is a Dial intent with data or an Add Call intent. */
   private boolean isDialOrAddCallIntent(Intent intent) {
     if (intent == null) {
@@ -519,44 +422,6 @@
     } else {
       bottomNav.setVisibility(View.VISIBLE);
     }
-
-    /*
-     * While the activity is running, listen for the call log framework being disabled. If this is
-     * not done, user interaction with the fragment could cause call log framework state to be
-     * unexpectedly written. For example scrolling could cause the AnnotatedCallLog to be read
-     * (which would trigger database creation).
-     */
-    LocalBroadcastManager.getInstance(activity)
-        .registerReceiver(
-            disableCallLogFrameworkReceiver, new IntentFilter("disableCallLogFramework"));
-
-    /*
-     * Similar to above, if the new call log/new voicemail is being shown and then the activity is
-     * paused, when the user returns we need to remove the NewCallLogFragment if the framework has
-     * been disabled in the meantime.
-     */
-    bottomNavTabListener.ensureCorrectCallLogShown();
-    bottomNavTabListener.ensureCorrectVoicemailShown();
-
-    // Config the badge of missed calls for the new call log.
-    if (bottomNavTabListener.newCallLogFragmentActive()) {
-      if (PermissionsUtil.hasCallLogReadPermissions(activity)) {
-        missedCallCountObserver.onChange(false); // Set the initial value for the badge
-        activity
-            .getContentResolver()
-            .registerContentObserver(Calls.CONTENT_URI, true, missedCallCountObserver);
-      } else {
-        bottomNav.setNotificationCount(TabIndex.CALL_LOG, 0);
-      }
-    }
-
-    // add 1 sec delay to get memory snapshot so that dialer wont react slowly on resume.
-    ThreadUtil.postDelayedOnUiThread(
-        () ->
-            MetricsComponent.get(activity)
-                .metrics()
-                .recordMemory(Metrics.OLD_MAIN_ACTIVITY_PEER_ON_RESUME_MEMORY_EVENT_NAME),
-        1000);
   }
 
   @Override
@@ -567,7 +432,6 @@
   @Override
   public void onActivityPause() {
     searchController.onActivityPause();
-    LocalBroadcastManager.getInstance(activity).unregisterReceiver(disableCallLogFrameworkReceiver);
     activity.getContentResolver().unregisterContentObserver(missedCallCountObserver);
   }
 
@@ -579,9 +443,6 @@
         activity.getSystemService(KeyguardManager.class).isKeyguardLocked());
   }
 
-  @Override
-  public void onActivityDestroyed() {}
-
   private void showPostCallPrompt() {
     if (TelecomUtil.isInManagedCall(activity)) {
       // No prompt to show if the user is in a call
@@ -604,58 +465,6 @@
   }
 
   @Override
-  public void onActivityResult(int requestCode, int resultCode, Intent data) {
-    LogUtil.i(
-        "OldMainActivityPeer.onActivityResult",
-        "requestCode:%d, resultCode:%d",
-        requestCode,
-        resultCode);
-    if (requestCode == ActivityRequestCodes.DIALTACTS_VOICE_SEARCH) {
-      searchController.onVoiceResults(resultCode, data);
-    } else if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_COMPOSER) {
-      if (resultCode == AppCompatActivity.RESULT_FIRST_USER) {
-        LogUtil.i(
-            "OldMainActivityPeer.onActivityResult", "returned from call composer, error occurred");
-        String message =
-            activity.getString(
-                R.string.call_composer_connection_failed,
-                data.getStringExtra(CallComposerActivity.KEY_CONTACT_NAME));
-        Snackbar.make(snackbarContainer, message, Snackbar.LENGTH_LONG).show();
-      } else {
-        LogUtil.i("OldMainActivityPeer.onActivityResult", "returned from call composer, no error");
-      }
-
-    } else if (requestCode == ActivityRequestCodes.DIALTACTS_CALL_DETAILS) {
-      if (resultCode == AppCompatActivity.RESULT_OK
-          && data != null
-          && data.getBooleanExtra(OldCallDetailsActivity.EXTRA_HAS_ENRICHED_CALL_DATA, false)) {
-        String number = data.getStringExtra(OldCallDetailsActivity.EXTRA_PHONE_NUMBER);
-        int snackbarDurationMillis = 5_000;
-        Snackbar.make(
-                snackbarContainer,
-                activity.getString(R.string.ec_data_deleted),
-                snackbarDurationMillis)
-            .setAction(
-                R.string.view_conversation,
-                v ->
-                    activity.startActivity(
-                        IntentProvider.getSendSmsIntentProvider(number).getIntent(activity)))
-            .setActionTextColor(
-                ContextCompat.getColor(activity, R.color.dialer_snackbar_action_text_color))
-            .show();
-      }
-
-    } else if (requestCode == ActivityRequestCodes.DIALTACTS_DUO) {
-      // We just returned from starting Duo for a task. Reload our reachability data since it
-      // may have changed after a user finished activating Duo.
-      DuoComponent.get(activity).getDuo().reloadReachability(activity);
-
-    } else {
-      LogUtil.e("OldMainActivityPeer.onActivityResult", "Unknown request code: " + requestCode);
-    }
-  }
-
-  @Override
   public boolean onBackPressed() {
     LogUtil.enterBlock("OldMainActivityPeer.onBackPressed");
     if (searchController.onBackPressed()) {
@@ -684,12 +493,6 @@
       return (T) callLogHostInterface;
     } else if (callbackInterface.isInstance(callLogFragmentListener)) {
       return (T) callLogFragmentListener;
-    } else if (callbackInterface.isInstance(onListFragmentScrolledListener)) {
-      return (T) onListFragmentScrolledListener;
-    } else if (callbackInterface.isInstance(onPhoneNumberPickerActionListener)) {
-      return (T) onPhoneNumberPickerActionListener;
-    } else if (callbackInterface.isInstance(oldSpeedDialFragmentHost)) {
-      return (T) oldSpeedDialFragmentHost;
     } else if (callbackInterface.isInstance(searchController)) {
       return (T) searchController;
     } else if (callbackInterface.isInstance(speedDialFragmentHost)) {
@@ -703,10 +506,9 @@
       BottomNavBar bottomNavBar,
       FloatingActionButton fab,
       MainToolbar mainToolbar,
-      View toolbarShadow,
       View fragmentContainer) {
     return new MainSearchController(
-        activity, bottomNavBar, fab, mainToolbar, toolbarShadow, fragmentContainer);
+        activity, bottomNavBar, fab, mainToolbar, fragmentContainer);
   }
 
   public MainOnDialpadQueryChangedListener getNewOnDialpadQueryChangedListener(
@@ -752,10 +554,11 @@
 
     private final MainSearchController searchController;
     private final Context context;
-    private final UiListener<String> listener;
+    private final SupportUiListener<String> listener;
 
     MainDialpadListener(
-        Context context, MainSearchController searchController, UiListener<String> uiListener) {
+        Context context, MainSearchController searchController,
+        SupportUiListener<String> uiListener) {
       this.context = context;
       this.searchController = searchController;
       this.listener = uiListener;
@@ -910,7 +713,7 @@
     private boolean activityIsAlive;
 
     private final ContentObserver voicemailStatusObserver =
-        new ContentObserver(new Handler()) {
+        new ContentObserver(new Handler(Looper.getMainLooper())) {
           @Override
           public void onChange(boolean selfChange) {
             LogUtil.i(
@@ -966,8 +769,6 @@
     @Override
     public void onVoicemailStatusFetched(Cursor statusCursor) {
       LogUtil.i("OldMainActivityPeer.MainCallLogFragmentListener", "onVoicemailStatusFetched");
-      VoicemailStatusCorruptionHandler.maybeFixVoicemailStatus(
-          context, statusCursor, Source.Activity);
 
       // Update hasActiveVoicemailProvider, which controls the number of tabs displayed.
       int numberOfActiveVoicemailSources =
@@ -983,7 +784,6 @@
               numberOfActiveVoicemailSources));
 
       if (hasActiveVoicemailProvider) {
-        Logger.get(context).logImpression(DialerImpression.Type.MAIN_VVM_TAB_VISIBLE);
         bottomNavBar.showVoicemail(true);
         callLogQueryHandler.fetchVoicemailUnreadCount();
       } else {
@@ -1045,15 +845,8 @@
     }
 
     private void markMissedCallsAsReadAndRemoveNotification() {
-      if (bottomNavTabListener.newCallLogFragmentActive()) {
-        Futures.addCallback(
-            CallLogComponent.get(context).getClearMissedCalls().clearAll(),
-            new DefaultFutureCallback<>(),
-            MoreExecutors.directExecutor());
-      } else {
-        callLogQueryHandler.markMissedCallsAsRead();
-        CallLogNotificationsService.cancelAllMissedCalls(context);
-      }
+      callLogQueryHandler.markMissedCallsAsRead();
+      CallLogNotificationsService.cancelAllMissedCalls(context);
     }
 
     private void setCurrentTab(@TabIndex int tabIndex) {
@@ -1070,10 +863,7 @@
       registerVoicemailStatusContentObserver(context);
       // TODO(a bug): Don't use callLogQueryHandler
       callLogQueryHandler.fetchVoicemailStatus();
-
-      if (!bottomNavTabListener.newCallLogFragmentActive()) {
-        callLogQueryHandler.fetchMissedCallsUnreadCount();
-      }
+      callLogQueryHandler.fetchMissedCallsUnreadCount();
       // Reset the tab on resume to restart the timer
       setCurrentTab(bottomNavBar.getSelectedTab());
     }
@@ -1082,9 +872,7 @@
     public void onActivityStop(boolean changingConfigurations, boolean keyguardLocked) {
       context.getContentResolver().unregisterContentObserver(voicemailStatusObserver);
       activityIsAlive = false;
-      // The new call log fragment handles this on its own.
-      if (!bottomNavTabListener.newCallLogFragmentActive()
-          && viewedCallLogTabPastTimeThreshold()
+      if (viewedCallLogTabPastTimeThreshold()
           && !changingConfigurations
           && !keyguardLocked) {
         markMissedCallsAsReadAndRemoveNotification();
@@ -1102,157 +890,6 @@
     }
   }
 
-  /** @see OnListFragmentScrolledListener */
-  private static final class MainOnListFragmentScrolledListener
-      implements OnListFragmentScrolledListener {
-
-    private final View parentLayout;
-
-    MainOnListFragmentScrolledListener(View parentLayout) {
-      this.parentLayout = parentLayout;
-    }
-
-    @Override
-    public void onListFragmentScrollStateChange(int scrollState) {
-      DialerUtils.hideInputMethod(parentLayout);
-    }
-
-    @Override
-    public void onListFragmentScroll(
-        int firstVisibleItem, int visibleItemCount, int totalItemCount) {
-      // TODO: No-op for now. This should eventually show/hide the actionBar based on
-      // interactions with the ListsFragments.
-    }
-  }
-
-  /** @see OnPhoneNumberPickerActionListener */
-  private static final class MainOnPhoneNumberPickerActionListener
-      implements OnPhoneNumberPickerActionListener {
-
-    private final TransactionSafeActivity activity;
-
-    MainOnPhoneNumberPickerActionListener(TransactionSafeActivity activity) {
-      this.activity = activity;
-    }
-
-    @Override
-    public void onPickDataUri(
-        Uri dataUri, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
-      PhoneNumberInteraction.startInteractionForPhoneCall(
-          activity, dataUri, isVideoCall, callSpecificAppData);
-    }
-
-    @Override
-    public void onPickPhoneNumber(
-        String phoneNumber, boolean isVideoCall, CallSpecificAppData callSpecificAppData) {
-      if (phoneNumber == null) {
-        // Invalid phone number, but let the call go through so that InCallUI can show
-        // an error message.
-        phoneNumber = "";
-      }
-      PreCall.start(
-          activity,
-          new CallIntentBuilder(phoneNumber, callSpecificAppData)
-              .setIsVideoCall(isVideoCall)
-              .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing()));
-    }
-
-    @Override
-    public void onHomeInActionBarSelected() {
-      // TODO(calderwoodra): investigate if we need to exit search here
-      // PhoneNumberPickerFragment#onOptionsItemSelected
-    }
-  }
-
-  /**
-   * Handles the callbacks for {@link OldSpeedDialFragment} and drag/drop logic for drag to remove.
-   *
-   * @see OldSpeedDialFragment.HostInterface
-   * @see OnDragDropListener
-   */
-  private static final class MainOldSpeedDialFragmentHost
-      implements OldSpeedDialFragment.HostInterface, OnDragDropListener {
-
-    private final Context context;
-    private final View rootLayout;
-    private final BottomNavBar bottomNavBar;
-    private final ImageView dragShadowOverlay;
-    private final RemoveView removeView;
-    private final View removeViewContent;
-    private final View searchViewContainer;
-    private final MainToolbar toolbar;
-
-    MainOldSpeedDialFragmentHost(
-        Context context,
-        View rootLayout,
-        BottomNavBar bottomNavBar,
-        ImageView dragShadowOverlay,
-        RemoveView removeView,
-        View searchViewContainer,
-        MainToolbar toolbar) {
-      this.context = context;
-      this.rootLayout = rootLayout;
-      this.bottomNavBar = bottomNavBar;
-      this.dragShadowOverlay = dragShadowOverlay;
-      this.removeView = removeView;
-      this.searchViewContainer = searchViewContainer;
-      this.toolbar = toolbar;
-      removeViewContent = removeView.findViewById(R.id.remove_view_content);
-    }
-
-    @Override
-    public void setDragDropController(DragDropController dragDropController) {
-      removeView.setDragDropController(dragDropController);
-      rootLayout.setOnDragListener(
-          (v, event) -> {
-            if (event.getAction() == DragEvent.ACTION_DRAG_LOCATION) {
-              dragDropController.handleDragHovered(v, (int) event.getX(), (int) event.getY());
-            }
-            return true;
-          });
-    }
-
-    @Override
-    public void showAllContactsTab() {
-      bottomNavBar.selectTab(TabIndex.CONTACTS);
-      Logger.get(context).logImpression(DialerImpression.Type.MAIN_OPEN_WITH_TAB_CONTACTS);
-    }
-
-    @Override
-    public ImageView getDragShadowOverlay() {
-      return dragShadowOverlay;
-    }
-
-    @Override
-    public void setHasFrequents(boolean hasFrequents) {
-      toolbar.showClearFrequents(hasFrequents);
-    }
-
-    @Override
-    public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
-      showRemoveView(true);
-    }
-
-    @Override
-    public void onDragHovered(int x, int y, PhoneFavoriteSquareTileView view) {}
-
-    @Override
-    public void onDragFinished(int x, int y) {
-      showRemoveView(false);
-    }
-
-    @Override
-    public void onDroppedOnRemove() {}
-
-    private void showRemoveView(boolean show) {
-      if (show) {
-        AnimUtils.crossFadeViews(removeViewContent, searchViewContainer, 300);
-      } else {
-        AnimUtils.crossFadeViews(searchViewContainer, removeViewContent, 300);
-      }
-    }
-  }
-
   /**
    * Handles the callbacks for {@link SpeedDialFragment}.
    *
@@ -1306,21 +943,18 @@
 
     private final TransactionSafeActivity activity;
     private final FragmentManager fragmentManager;
-    private final android.support.v4.app.FragmentManager supportFragmentManager;
     private final FloatingActionButton fab;
     private final View bottomSheet;
 
-    @TabIndex private int selectedTab = -1;
+    @TabIndex private int selectedTab = TabIndex.NONE;
 
     private MainBottomNavBarBottomNavTabListener(
         TransactionSafeActivity activity,
         FragmentManager fragmentManager,
-        android.support.v4.app.FragmentManager supportFragmentManager,
         FloatingActionButton fab,
         View bottomSheet) {
       this.activity = activity;
       this.fragmentManager = fragmentManager;
-      this.supportFragmentManager = supportFragmentManager;
       this.fab = fab;
       this.bottomSheet = bottomSheet;
     }
@@ -1331,21 +965,11 @@
       if (selectedTab == TabIndex.SPEED_DIAL) {
         return;
       }
-      Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_SPEED_DIAL, activity);
       selectedTab = TabIndex.SPEED_DIAL;
 
-      if (ConfigProviderComponent.get(activity)
-          .getConfigProvider()
-          .getBoolean("enable_new_favorites_tab", false)) {
-        android.support.v4.app.Fragment supportFragment =
-            supportFragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
-        showSupportFragment(
-            supportFragment == null ? SpeedDialFragment.newInstance() : supportFragment,
-            SPEED_DIAL_TAG);
-      } else {
-        Fragment fragment = fragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
-        showFragment(fragment == null ? new OldSpeedDialFragment() : fragment, SPEED_DIAL_TAG);
-      }
+      Fragment fragment = fragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
+      showFragment(fragment == null ? SpeedDialFragment.newInstance() : fragment, SPEED_DIAL_TAG);
+
       fab.show();
     }
 
@@ -1355,18 +979,11 @@
       if (selectedTab == TabIndex.CALL_LOG) {
         return;
       }
-      Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_CALL_LOG, activity);
       selectedTab = TabIndex.CALL_LOG;
 
-      if (CallLogConfigComponent.get(activity).callLogConfig().isNewCallLogFragmentEnabled()) {
-        android.support.v4.app.Fragment supportFragment =
-            supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
-        showSupportFragment(
-            supportFragment == null ? new NewCallLogFragment() : supportFragment, CALL_LOG_TAG);
-      } else {
-        Fragment fragment = fragmentManager.findFragmentByTag(CALL_LOG_TAG);
-        showFragment(fragment == null ? new CallLogFragment() : fragment, CALL_LOG_TAG);
-      }
+      Fragment fragment = fragmentManager.findFragmentByTag(CALL_LOG_TAG);
+      showFragment(fragment == null ? new CallLogFragment() : fragment, CALL_LOG_TAG);
+
       fab.show();
       showPromotionBottomSheet(activity, bottomSheet);
     }
@@ -1401,86 +1018,12 @@
       bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
     }
 
-    void disableNewCallLogFragment() {
-      LogUtil.i("MainBottomNavBarBottomNavTabListener.disableNewCallLogFragment", "disabled");
-      android.support.v4.app.Fragment supportFragment =
-          supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
-      if (supportFragment != null) {
-        supportFragmentManager.beginTransaction().remove(supportFragment).commitAllowingStateLoss();
-        // If the NewCallLogFragment was showing, immediately show the old call log fragment
-        // instead.
-        if (selectedTab == TabIndex.CALL_LOG) {
-          LogUtil.i(
-              "MainBottomNavBarBottomNavTabListener.disableNewCallLogFragment", "showing old");
-          Fragment fragment = fragmentManager.findFragmentByTag(CALL_LOG_TAG);
-          showFragment(fragment == null ? new CallLogFragment() : fragment, CALL_LOG_TAG);
-        }
-      }
-    }
-
-    void disableNewVoicemailFragment() {
-      LogUtil.i("MainBottomNavBarBottomNavTabListener.disableNewVoicemailFragment", "disabled");
-      android.support.v4.app.Fragment supportFragment =
-          supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
-      if (supportFragment != null) {
-        supportFragmentManager.beginTransaction().remove(supportFragment).commitAllowingStateLoss();
-        // If the NewVoicemailFragment was showing, immediately show the old voicemail fragment
-        // instead.
-        if (selectedTab == TabIndex.VOICEMAIL) {
-          LogUtil.i(
-              "MainBottomNavBarBottomNavTabListener.disableNewVoicemailFragment", "showing old");
-          Fragment fragment = fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
-          showFragment(
-              fragment == null ? new VisualVoicemailCallLogFragment() : fragment, VOICEMAIL_TAG);
-        }
-      }
-    }
-
-    void ensureCorrectCallLogShown() {
-      android.support.v4.app.Fragment supportFragment =
-          supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
-      if (supportFragment != null
-          && !CallLogConfigComponent.get(activity).callLogConfig().isNewCallLogFragmentEnabled()) {
-        LogUtil.i("MainBottomNavBarBottomNavTabListener.ensureCorrectCallLogShown", "disabling");
-        disableNewCallLogFragment();
-      }
-    }
-
-    void ensureCorrectVoicemailShown() {
-      android.support.v4.app.Fragment supportFragment =
-          supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
-      if (supportFragment != null
-          && !CallLogConfigComponent.get(activity)
-              .callLogConfig()
-              .isNewVoicemailFragmentEnabled()) {
-        LogUtil.i("MainBottomNavBarBottomNavTabListener.ensureCorrectVoicemailShown", "disabling");
-        disableNewVoicemailFragment();
-      }
-    }
-
-    boolean newCallLogFragmentActive() {
-      return supportFragmentManager.findFragmentByTag(CALL_LOG_TAG) != null
-          || (fragmentManager.findFragmentByTag(CALL_LOG_TAG) == null
-              && CallLogConfigComponent.get(activity)
-                  .callLogConfig()
-                  .isNewCallLogFragmentEnabled());
-    }
-
-    boolean newVoicemailFragmentActive() {
-      return supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG) != null
-          || (fragmentManager.findFragmentByTag(VOICEMAIL_TAG) == null
-              && CallLogConfigComponent.get(activity)
-                  .callLogConfig()
-                  .isNewVoicemailFragmentEnabled());
-    }
-
     @Override
     public void onContactsSelected() {
       LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.onContactsSelected");
       if (selectedTab == TabIndex.CONTACTS) {
         return;
       }
-      Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_CONTACTS, activity);
       selectedTab = TabIndex.CONTACTS;
       Fragment fragment = fragmentManager.findFragmentByTag(CONTACTS_TAG);
       showFragment(
@@ -1495,28 +1038,16 @@
       if (selectedTab == TabIndex.VOICEMAIL) {
         return;
       }
-      Logger.get(activity).logScreenView(ScreenEvent.Type.MAIN_VOICEMAIL, activity);
       selectedTab = TabIndex.VOICEMAIL;
 
-      if (CallLogConfigComponent.get(activity).callLogConfig().isNewVoicemailFragmentEnabled()) {
-        android.support.v4.app.Fragment supportFragment =
-            supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
-        showSupportFragment(
-            supportFragment == null ? new NewVoicemailFragment() : supportFragment, VOICEMAIL_TAG);
-      } else {
-        VisualVoicemailCallLogFragment fragment =
-            (VisualVoicemailCallLogFragment) fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
-        if (fragment == null) {
-          fragment = new VisualVoicemailCallLogFragment();
-        }
-        showFragment(fragment, VOICEMAIL_TAG);
-        fragment.setUserVisibleHint(true);
-        fragment.onVisible();
+      VisualVoicemailCallLogFragment fragment =
+          (VisualVoicemailCallLogFragment) fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
+      if (fragment == null) {
+        fragment = new VisualVoicemailCallLogFragment();
       }
-    }
-
-    private void showFragment(@NonNull Fragment fragment, String tag) {
-      showFragment(fragment, null, tag);
+      showFragment(fragment, VOICEMAIL_TAG);
+      fragment.setUserVisibleHint(true);
+      fragment.onVisible();
     }
 
     /**
@@ -1532,61 +1063,27 @@
      */
     private void showFragment(
         @Nullable Fragment fragment,
-        @Nullable android.support.v4.app.Fragment supportFragment,
         String tag) {
       LogUtil.enterBlock("MainBottomNavBarBottomNavTabListener.showFragment");
-      Fragment oldSpeedDial = fragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
-      Fragment oldCallLog = fragmentManager.findFragmentByTag(CALL_LOG_TAG);
+      Fragment speedDial = fragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
+      Fragment callLog = fragmentManager.findFragmentByTag(CALL_LOG_TAG);
       Fragment contacts = fragmentManager.findFragmentByTag(CONTACTS_TAG);
-      Fragment oldVoicemail = fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
+      Fragment voicemail = fragmentManager.findFragmentByTag(VOICEMAIL_TAG);
 
       FragmentTransaction transaction = fragmentManager.beginTransaction();
-      boolean fragmentShown = showIfEqualElseHide(transaction, fragment, oldSpeedDial);
-      fragmentShown |= showIfEqualElseHide(transaction, fragment, oldCallLog);
+      boolean fragmentShown = showIfEqualElseHide(transaction, fragment, speedDial);
+      fragmentShown |= showIfEqualElseHide(transaction, fragment, callLog);
       fragmentShown |= showIfEqualElseHide(transaction, fragment, contacts);
-      fragmentShown |= showIfEqualElseHide(transaction, fragment, oldVoicemail);
+      fragmentShown |= showIfEqualElseHide(transaction, fragment, voicemail);
 
       if (!fragmentShown && fragment != null) {
-        LogUtil.i(
-            "MainBottomNavBarBottomNavTabListener.showFragment", "Not added yet: " + fragment);
+        LogUtil.i("MainBottomNavBarBottomNavTabListener.showFragment",
+                "Not added yet: " + fragment);
         transaction.add(R.id.fragment_container, fragment, tag);
       }
       if (activity.isSafeToCommitTransactions()) {
         transaction.commit();
       }
-
-      // Handle support fragments.
-      // TODO(calderwoodra): Handle other new fragments.
-      android.support.v4.app.Fragment speedDial =
-          supportFragmentManager.findFragmentByTag(SPEED_DIAL_TAG);
-      android.support.v4.app.Fragment newCallLog =
-          supportFragmentManager.findFragmentByTag(CALL_LOG_TAG);
-      android.support.v4.app.Fragment newVoicemail =
-          supportFragmentManager.findFragmentByTag(VOICEMAIL_TAG);
-
-      android.support.v4.app.FragmentTransaction supportTransaction =
-          supportFragmentManager.beginTransaction();
-      boolean supportFragmentShown =
-          showIfEqualElseHideSupport(supportTransaction, supportFragment, speedDial);
-      supportFragmentShown |=
-          showIfEqualElseHideSupport(supportTransaction, supportFragment, newCallLog);
-      supportFragmentShown |=
-          showIfEqualElseHideSupport(supportTransaction, supportFragment, newVoicemail);
-
-      if (!supportFragmentShown && supportFragment != null) {
-        LogUtil.i(
-            "MainBottomNavBarBottomNavTabListener.showFragment",
-            "Not added yet: " + supportFragment);
-        supportTransaction.add(R.id.fragment_container, supportFragment, tag);
-      }
-      if (activity.isSafeToCommitTransactions()) {
-        supportTransaction.commit();
-      }
-    }
-
-    private void showSupportFragment(
-        @NonNull android.support.v4.app.Fragment supportFragment, String tag) {
-      showFragment(null, supportFragment, tag);
     }
 
     /**
@@ -1594,8 +1091,8 @@
      * @param fragment2 will be hidden if unequal to {@code fragment1}
      * @return {@code true} if {@code fragment1} was shown
      */
-    private boolean showIfEqualElseHide(
-        FragmentTransaction transaction, Fragment fragment1, Fragment fragment2) {
+    private boolean showIfEqualElseHide(FragmentTransaction transaction, Fragment fragment1,
+                                        Fragment fragment2) {
       boolean shown = false;
       if (fragment1 != null && fragment1.equals(fragment2)) {
         transaction.show(fragment1);
@@ -1609,25 +1106,6 @@
       }
       return shown;
     }
-
-    /**
-     * @param supportFragment1 will be shown if equal to {@code fragment2}
-     * @param supportFragment2 will be hidden if unequal to {@code fragment1}
-     * @return {@code true} if {@code fragment1} was shown
-     */
-    private boolean showIfEqualElseHideSupport(
-        android.support.v4.app.FragmentTransaction supportTransaction,
-        android.support.v4.app.Fragment supportFragment1,
-        android.support.v4.app.Fragment supportFragment2) {
-      boolean shown = false;
-      if (supportFragment1 != null && supportFragment1.equals(supportFragment2)) {
-        supportTransaction.show(supportFragment1);
-        shown = true;
-      } else if (supportFragment2 != null) {
-        supportTransaction.hide(supportFragment2);
-      }
-      return shown;
-    }
   }
 
   private static final class LastTabController {
@@ -1648,9 +1126,7 @@
      */
     @TabIndex
     int getLastTab() {
-      @TabIndex int tabIndex = TabIndex.SPEED_DIAL;
-
-      tabIndex =
+      @TabIndex int tabIndex =
           StorageComponent.get(context)
               .unencryptedSharedPrefs()
               .getInt(KEY_LAST_TAB, TabIndex.SPEED_DIAL);
diff --git a/java/com/android/dialer/main/impl/bottomnav/AndroidManifest.xml b/java/com/android/dialer/main/impl/bottomnav/AndroidManifest.xml
deleted file mode 100644
index 9b970f2..0000000
--- a/java/com/android/dialer/main/impl/bottomnav/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2018 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.main.impl.bottomnav"/>
diff --git a/java/com/android/dialer/main/impl/bottomnav/BottomNavBar.java b/java/com/android/dialer/main/impl/bottomnav/BottomNavBar.java
index 80aa38b..7766687 100644
--- a/java/com/android/dialer/main/impl/bottomnav/BottomNavBar.java
+++ b/java/com/android/dialer/main/impl/bottomnav/BottomNavBar.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,15 +18,18 @@
 package com.android.dialer.main.impl.bottomnav;
 
 import android.content.Context;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.LinearLayout;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
+import com.android.dialer.main.impl.MainActivity;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
@@ -37,12 +41,14 @@
   /** Index for each tab in the bottom nav. */
   @Retention(RetentionPolicy.SOURCE)
   @IntDef({
+    TabIndex.NONE,
     TabIndex.SPEED_DIAL,
     TabIndex.CALL_LOG,
     TabIndex.CONTACTS,
     TabIndex.VOICEMAIL,
   })
   public @interface TabIndex {
+    int NONE = -1;
     int SPEED_DIAL = 0;
     int CALL_LOG = 1;
     int CONTACTS = 2;
@@ -69,43 +75,19 @@
     contacts = findViewById(R.id.contacts_tab);
     voicemail = findViewById(R.id.voicemail_tab);
 
-    speedDial.setup(R.string.tab_title_speed_dial, R.drawable.quantum_ic_star_vd_theme_24);
-    callLog.setup(R.string.tab_title_call_history, R.drawable.quantum_ic_access_time_vd_theme_24);
-    contacts.setup(R.string.tab_title_contacts, R.drawable.quantum_ic_people_vd_theme_24);
-    voicemail.setup(R.string.tab_title_voicemail, R.drawable.quantum_ic_voicemail_vd_theme_24);
+    speedDial.setup(R.string.tab_title_speed_dial, R.drawable.quantum_ic_star_outline_vd_theme_24,
+            R.drawable.quantum_ic_star_vd_theme_24);
+    callLog.setup(R.string.tab_title_call_history, R.drawable.quantum_ic_access_time_vd_theme_24,
+            R.drawable.quantum_ic_clock_filled_vd_theme_24);
+    contacts.setup(R.string.tab_all_contacts, R.drawable.quantum_ic_people_outline_vd_theme_24,
+            R.drawable.quantum_ic_people_vd_theme_24);
+    voicemail.setup(R.string.tab_title_voicemail, R.drawable.quantum_ic_voicemail_vd_theme_24,
+            R.drawable.quantum_ic_voicemail_vd_theme_24);
 
-    speedDial.setOnClickListener(
-        v -> {
-          if (selectedTab != TabIndex.SPEED_DIAL) {
-            Logger.get(getContext())
-                .logImpression(DialerImpression.Type.MAIN_SWITCH_TAB_TO_FAVORITE);
-          }
-          selectTab(TabIndex.SPEED_DIAL);
-        });
-    callLog.setOnClickListener(
-        v -> {
-          if (selectedTab != TabIndex.CALL_LOG) {
-            Logger.get(getContext())
-                .logImpression(DialerImpression.Type.MAIN_SWITCH_TAB_TO_CALL_LOG);
-          }
-          selectTab(TabIndex.CALL_LOG);
-        });
-    contacts.setOnClickListener(
-        v -> {
-          if (selectedTab != TabIndex.CONTACTS) {
-            Logger.get(getContext())
-                .logImpression(DialerImpression.Type.MAIN_SWITCH_TAB_TO_CONTACTS);
-          }
-          selectTab(TabIndex.CONTACTS);
-        });
-    voicemail.setOnClickListener(
-        v -> {
-          if (selectedTab != TabIndex.VOICEMAIL) {
-            Logger.get(getContext())
-                .logImpression(DialerImpression.Type.MAIN_SWITCH_TAB_TO_VOICEMAIL);
-          }
-          selectTab(TabIndex.VOICEMAIL);
-        });
+    speedDial.setOnClickListener(v -> selectTab(TabIndex.SPEED_DIAL));
+    callLog.setOnClickListener(v -> selectTab(TabIndex.CALL_LOG));
+    contacts.setOnClickListener(v -> selectTab(TabIndex.CONTACTS));
+    voicemail.setOnClickListener(v -> selectTab(TabIndex.VOICEMAIL));
   }
 
   private void setSelected(View view) {
diff --git a/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java b/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java
index 4794b88..07cf496 100644
--- a/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java
+++ b/java/com/android/dialer/main/impl/bottomnav/BottomNavItem.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,28 +17,45 @@
 
 package com.android.dialer.main.impl.bottomnav;
 
+import android.animation.ValueAnimator;
 import android.content.Context;
 import android.content.res.ColorStateList;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.Nullable;
-import android.support.annotation.Px;
-import android.support.annotation.StringRes;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.Px;
+import androidx.annotation.StringRes;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.theme.base.ThemeComponent;
+import com.android.dialer.common.MathUtil;
+import com.android.dialer.util.DialerUtils;
+import com.android.incallui.answer.impl.utils.Interpolators;
+import com.google.android.material.navigation.NavigationBarItemView;
 
 /** Navigation item in a bottom nav. */
 final class BottomNavItem extends LinearLayout {
 
+  @Nullable
+  private View activeIndicatorView;
+  private ValueAnimator activeIndicatorAnimator;
   private ImageView image;
   private TextView text;
   private TextView notificationBadge;
+  private @DrawableRes int drawableRes;
+  private @DrawableRes int drawableResSelected;
+
+  private final ActiveIndicatorTransform activeIndicatorTransform = new ActiveIndicatorTransform();
+  private float activeIndicatorProgress = 0F;
+  private boolean initialized;
 
   public BottomNavItem(Context context, @Nullable AttributeSet attrs) {
     super(context, attrs);
@@ -46,23 +64,64 @@
   @Override
   protected void onFinishInflate() {
     super.onFinishInflate();
+    activeIndicatorView = findViewById(R.id.active_indicator);
+    activeIndicatorView.setBackgroundResource(R.drawable.pill);
     image = findViewById(R.id.bottom_nav_item_image);
     text = findViewById(R.id.bottom_nav_item_text);
     notificationBadge = findViewById(R.id.notification_badge);
+    initialized = true;
   }
 
   @Override
   public void setSelected(boolean selected) {
     super.setSelected(selected);
-    int colorId =
-        selected
-            ? ThemeComponent.get(getContext()).theme().getColorPrimary()
-            : ThemeComponent.get(getContext()).theme().getTextColorSecondary();
+    int colorId = selected
+            ? DialerUtils.resolveColor(getContext(), android.R.attr.textColorPrimary)
+            : DialerUtils.resolveColor(getContext(), android.R.attr.textColorSecondary);
+    image.setImageResource(selected ? drawableResSelected : drawableRes);
     image.setImageTintList(ColorStateList.valueOf(colorId));
     text.setTextColor(colorId);
+
+    float newIndicatorProgress = selected ? 1F : 0F;
+    maybeAnimateActiveIndicatorToProgress(newIndicatorProgress);
   }
 
-  void setup(@StringRes int stringRes, @DrawableRes int drawableRes) {
+  private void setActiveIndicatorProgress(
+          @FloatRange(from = 0F, to = 1F) float progress, float target) {
+    if (activeIndicatorView != null) {
+      activeIndicatorTransform.updateForProgress(progress, target, activeIndicatorView);
+    }
+    activeIndicatorProgress = progress;
+  }
+
+  /** If the active indicator is enabled, animate from it's current state to it's new state. */
+  private void maybeAnimateActiveIndicatorToProgress(
+          @FloatRange(from = 0F, to = 1F) final float newProgress) {
+    // If the active indicator is disabled or this view is in the process of being initialized,
+    // jump the active indicator to it's final state.
+    if (!initialized || activeIndicatorView == null || !activeIndicatorView.isAttachedToWindow()) {
+      setActiveIndicatorProgress(newProgress, newProgress);
+      return;
+    }
+
+    if (activeIndicatorAnimator != null) {
+      activeIndicatorAnimator.cancel();
+      activeIndicatorAnimator = null;
+    }
+    activeIndicatorAnimator = ValueAnimator.ofFloat(activeIndicatorProgress, newProgress);
+    activeIndicatorAnimator.addUpdateListener(animation -> {
+      float progress = (float) animation.getAnimatedValue();
+      setActiveIndicatorProgress(progress, newProgress);
+    });
+    activeIndicatorAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
+    activeIndicatorAnimator.setDuration(400);
+    activeIndicatorAnimator.start();
+  }
+
+  void setup(@StringRes int stringRes, @DrawableRes int drawableRes,
+             @DrawableRes int drawableResSelected) {
+    this.drawableRes = drawableRes;
+    this.drawableResSelected = drawableResSelected;
     text.setText(stringRes);
     image.setImageResource(drawableRes);
   }
@@ -74,15 +133,7 @@
     } else {
       String countString = String.format(Integer.toString(count));
 
-      boolean use99PlusCount =
-          ConfigProviderComponent.get(getContext())
-              .getConfigProvider()
-              .getBoolean("use_99_plus", false);
-      boolean use9Plus = !use99PlusCount;
-
-      if (use99PlusCount && count > 99) {
-        countString = getContext().getString(R.string.bottom_nav_count_99_plus);
-      } else if (use9Plus && count > 9) {
+      if (count > 9) {
         countString = getContext().getString(R.string.bottom_nav_count_9_plus);
       }
       notificationBadge.setVisibility(View.VISIBLE);
@@ -103,4 +154,69 @@
       image.setLayoutParams(params);
     }
   }
+
+  /**
+   * A class used to manipulate the {@link NavigationBarItemView}'s active indicator view when
+   * animating between hidden and shown.
+   *
+   * <p>By default, this class scales the indicator in the x direction to reveal the default pill
+   * shape.
+   *
+   * <p>Subclasses can override {@link #updateForProgress(float, float, View)} to manipulate the
+   * view in any way appropriate.
+   */
+  private static class ActiveIndicatorTransform {
+
+    private static final float SCALE_X_HIDDEN = .4F;
+    private static final float SCALE_X_SHOWN = 1F;
+
+    // The fraction of the animation's total duration over which the indicator will be faded in or
+    // out.
+    private static final float ALPHA_FRACTION = 1F / 5F;
+
+    /**
+     * Calculate the alpha value, based on a progress and target value, that has the indicator
+     * appear or disappear over the first 1/5th of the transform.
+     */
+    protected float calculateAlpha(
+            @FloatRange(from = 0F, to = 1F) float progress,
+            @FloatRange(from = 0F, to = 1F) float targetValue) {
+      // Animate the alpha of the indicator over the first ALPHA_FRACTION of the animation
+      float startAlphaFraction = targetValue == 0F ? 1F - ALPHA_FRACTION : 0F;
+      float endAlphaFraction = targetValue == 0F ? 1F : 0F + ALPHA_FRACTION;
+      return MathUtil.lerp(0F, 1F, progress);
+    }
+
+    protected float calculateScaleX(
+            @FloatRange(from = 0F, to = 1F) float progress,
+            @FloatRange(from = 0F, to = 1F) float targetValue) {
+      return MathUtil.lerp(SCALE_X_HIDDEN, SCALE_X_SHOWN, progress);
+    }
+
+    protected float calculateScaleY(
+            @FloatRange(from = 0F, to = 1F) float progress,
+            @FloatRange(from = 0F, to = 1F) float targetValue) {
+      return 1F;
+    }
+
+    /**
+     * Called whenever the {@code indicator} should update its parameters (scale, alpha, etc.) in
+     * response to a change in progress.
+     *
+     * @param progress A value between 0 and 1 where 0 represents a fully hidden indicator and 1
+     *     indicates a fully shown indicator.
+     * @param targetValue The final value towards which the progress is moving. This will be either
+     *     0 and 1 and can be used to determine whether the indicator is showing or hiding if show
+     *     and hide animations differ.
+     * @param indicator The active indicator {@link View}.
+     */
+    public void updateForProgress(
+            @FloatRange(from = 0F, to = 1F) float progress,
+            @FloatRange(from = 0F, to = 1F) float targetValue,
+            @NonNull View indicator) {
+      indicator.setScaleX(calculateScaleX(progress, targetValue));
+      indicator.setScaleY(calculateScaleY(progress, targetValue));
+      indicator.setAlpha(calculateAlpha(progress, targetValue));
+    }
+  }
 }
diff --git a/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java b/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java
index a4995c1..8ae76f2 100644
--- a/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java
+++ b/java/com/android/dialer/main/impl/bottomnav/MissedCallCountObserver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,9 +22,11 @@
 import android.database.ContentObserver;
 import android.database.Cursor;
 import android.provider.CallLog.Calls;
-import android.support.annotation.RequiresPermission;
+
+import androidx.annotation.RequiresPermission;
+
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.UiListener;
+import com.android.dialer.common.concurrent.SupportUiListener;
 import com.android.dialer.main.impl.bottomnav.BottomNavBar.TabIndex;
 import com.google.common.util.concurrent.ListenableFuture;
 
@@ -35,10 +38,10 @@
 public final class MissedCallCountObserver extends ContentObserver {
   private final Context appContext;
   private final BottomNavBar bottomNavBar;
-  private final UiListener<Integer> uiListener;
+  private final SupportUiListener<Integer> uiListener;
 
   public MissedCallCountObserver(
-      Context appContext, BottomNavBar bottomNavBar, UiListener<Integer> uiListener) {
+      Context appContext, BottomNavBar bottomNavBar, SupportUiListener<Integer> uiListener) {
     super(null);
     this.appContext = appContext;
     this.bottomNavBar = bottomNavBar;
diff --git a/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_bar_layout.xml b/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_bar_layout.xml
index 1dd60d8..668a655 100644
--- a/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_bar_layout.xml
+++ b/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_bar_layout.xml
@@ -19,7 +19,7 @@
     android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:background="?android:attr/colorBackgroundFloating"
+    android:background="@color/rounded_dialpad_bg_color"
     android:elevation="8dp">
 
   <include
@@ -49,4 +49,4 @@
       android:layout_height="wrap_content"
       android:layout_weight="1"
       layout="@layout/bottom_nav_item"/>
-</com.android.dialer.main.impl.bottomnav.BottomNavBar>
\ No newline at end of file
+</com.android.dialer.main.impl.bottomnav.BottomNavBar>
diff --git a/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_item.xml b/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_item.xml
index 02874a9..874acd9 100644
--- a/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_item.xml
+++ b/java/com/android/dialer/main/impl/bottomnav/res/layout/bottom_nav_item.xml
@@ -16,23 +16,41 @@
   -->
 <com.android.dialer.main.impl.bottomnav.BottomNavItem
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:orientation="vertical"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:minWidth="80dp"
     android:minHeight="56dp"
-    android:gravity="center"
-    android:background="?android:attr/selectableItemBackgroundBorderless">
+    android:gravity="center">
 
   <FrameLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content">
 
+    <FrameLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:layout_marginBottom="8dp">
+
+    <View
+        android:id="@+id/active_indicator"
+        android:layout_width="64dp"
+        android:layout_height="32dp"
+        android:background="@drawable/pill"
+        android:gravity="center"
+        android:visibility="visible"/>
+
     <ImageView
         android:id="@+id/bottom_nav_item_image"
         android:layout_width="24dp"
         android:layout_height="24dp"
-        android:layout_marginTop="8dp"/>
+        android:layout_marginTop="4dp"
+        android:layout_marginBottom="4dp"
+        android:layout_gravity="center"
+        tools:src="@drawable/quantum_ic_star_vd_theme_24"/>
+    </FrameLayout>
 
     <TextView
         android:id="@+id/notification_badge"
@@ -57,8 +75,9 @@
       android:id="@+id/bottom_nav_item_text"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
-      android:layout_marginBottom="8dp"
+      android:layout_marginBottom="16dp"
       android:gravity="center_horizontal"
       android:textSize="12sp"
-      style="@style/Dialer.TextAppearance.Secondary"/>
-</com.android.dialer.main.impl.bottomnav.BottomNavItem>
\ No newline at end of file
+      style="@style/Dialer.TextAppearance.OVERLINE"
+      android:textColor="?android:attr/textColorPrimary"/>
+</com.android.dialer.main.impl.bottomnav.BottomNavItem>
diff --git a/java/com/android/dialer/main/impl/bottomnav/res/values/strings.xml b/java/com/android/dialer/main/impl/bottomnav/res/values/strings.xml
index 6d38869..36189b8 100644
--- a/java/com/android/dialer/main/impl/bottomnav/res/values/strings.xml
+++ b/java/com/android/dialer/main/impl/bottomnav/res/values/strings.xml
@@ -21,12 +21,7 @@
   <string name="tab_title_speed_dial">Favorites</string>
   <!-- Tab text to show users their voicemails  [CHAR LIMIT=10] -->
   <string name="tab_title_voicemail">Voicemail</string>
-  <!-- Tab text to show users their contacts  [CHAR LIMIT=10] -->
-  <string name="tab_title_contacts">Contacts</string>
 
   <!-- Notification badge indicating that there are more than 9 notifications for the user [CHAR LIMIT=3] -->
   <string name="bottom_nav_count_9_plus">9+</string>
-
-  <!-- Notification badge indicating that there are more than 9 notifications for the user [CHAR LIMIT=3] -->
-  <string name="bottom_nav_count_99_plus">99+</string>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/main/impl/res/layout/default_dialer_view.xml b/java/com/android/dialer/main/impl/res/layout/default_dialer_view.xml
new file mode 100644
index 0000000..917ac99
--- /dev/null
+++ b/java/com/android/dialer/main/impl/res/layout/default_dialer_view.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  SPDX-FileCopyrightText: The LineageOS Project
+  SPDX-License-Identifier: Apache-2.0
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <com.android.dialer.widget.EmptyContentView
+        android:id="@+id/empty_list_view"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:layout_gravity="center"
+        android:gravity="center_vertical"/>
+</LinearLayout>
diff --git a/java/com/android/dialer/main/impl/res/layout/main_activity.xml b/java/com/android/dialer/main/impl/res/layout/main_activity.xml
index 25db637..1f6ecfa 100644
--- a/java/com/android/dialer/main/impl/res/layout/main_activity.xml
+++ b/java/com/android/dialer/main/impl/res/layout/main_activity.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -26,9 +27,7 @@
       android:id="@+id/toolbar"
       layout="@layout/toolbar_layout"/>
 
-  <android.support.design.widget.CoordinatorLayout
-      xmlns:android="http://schemas.android.com/apk/res/android"
-      xmlns:app="http://schemas.android.com/apk/res-auto"
+  <androidx.coordinatorlayout.widget.CoordinatorLayout
       android:id="@+id/coordinator_layout"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
@@ -46,27 +45,22 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>
 
-    <ImageView
-        android:id="@+id/toolbar_shadow"
-        android:layout_width="match_parent"
-        android:layout_height="2dp"
-        android:scaleType="fitXY"
-        android:src="@drawable/search_shadow"
-        android:visibility="gone"/>
-
     <com.android.dialer.widget.DialerFloatingActionButton
         android:id="@+id/fab"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_margin="16dp"
         android:layout_gravity="end|bottom"
-        android:src="@drawable/quantum_ic_dialpad_white_24"
+        android:forceDarkAllowed="false"
+        android:src="@drawable/quantum_ic_dialpad_vd_theme_24"
+        android:tint="@color/dialer_fab_icon_color"
+        app:tint="@color/dialer_fab_icon_color"
         android:contentDescription="@string/dialpad_button_content_description"
-        app:backgroundTint="?android:attr/colorAccent"/>
+        app:backgroundTint="@color/dialer_theme_color_light"/>
 
     <include android:id="@+id/promotion_bottom_sheet"
         layout="@layout/promotion_bottom_sheet"/>
-  </android.support.design.widget.CoordinatorLayout>
+  </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
   <!-- BottomNavBar -->
   <include
diff --git a/java/com/android/dialer/main/impl/res/layout/promotion_bottom_sheet.xml b/java/com/android/dialer/main/impl/res/layout/promotion_bottom_sheet.xml
index 0edc03c..fa5fbdc 100644
--- a/java/com/android/dialer/main/impl/res/layout/promotion_bottom_sheet.xml
+++ b/java/com/android/dialer/main/impl/res/layout/promotion_bottom_sheet.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2018 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -30,14 +31,14 @@
     android:visibility="gone"
     app:behavior_hideable="true"
     app:behavior_skipCollapsed="true"
-    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
+    app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
     app:layout_insetEdge="bottom">
 
   <ImageView
       android:id="@+id/promotion_icon"
       android:layout_width="36dp"
       android:layout_height="36dp"
-      android:tint="?android:attr/colorPrimary"/>
+      app:tint="?android:attr/colorPrimary" />
   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -73,4 +74,4 @@
         android:textSize="16sp"/>
   </LinearLayout>
 
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/java/com/android/dialer/main/impl/res/values-af/strings.xml b/java/com/android/dialer/main/impl/res/values-af/strings.xml
index fd1a859..fd974b7 100644
--- a/java/com/android/dialer/main/impl/res/values-af/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-af/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Foon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Foon-NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Oproepgeskiedenis"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Deursoek kontakte en plekke"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontakte"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Bekyk kontakte"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Oproepgeskiedenis"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Spoedbel"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Stemboodskap"</string>
-    <string name="settings" msgid="7614336599112169779">"Instellings"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Stuur terugvoer"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-am/strings.xml b/java/com/android/dialer/main/impl/res/values-am/strings.xml
index 273c019..a6e1fec 100644
--- a/java/com/android/dialer/main/impl/res/values-am/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-am/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ስልክ"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"ስልክ NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"የጥሪ ታሪክ"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"ዕውቂያዎችን እና ቦታዎችን ይፈልጉ"</string>
-    <string name="contacts" msgid="4464246185723317911">"እውቂያዎች"</string>
-    <string name="description_contacts" msgid="12768481422137448">"እውቂያዎችን ይመልከቱ"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"የጥሪ ታሪክ"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"አቋራጭ መደወያ"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"የድምፅ መልዕክት"</string>
-    <string name="settings" msgid="7614336599112169779">"ቅንብሮች"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"ግብረመልስ ይላኩ"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ar/strings.xml b/java/com/android/dialer/main/impl/res/values-ar/strings.xml
index 2be1289..60a22fa 100644
--- a/java/com/android/dialer/main/impl/res/values-ar/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ar/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"الهاتف"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"واجهة مستخدم جديدة للهاتف"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"سجل المكالمات"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"البحث عن جهات الاتصال والأماكن"</string>
-    <string name="contacts" msgid="4464246185723317911">"جهات الاتصال"</string>
-    <string name="description_contacts" msgid="12768481422137448">"عرض جهات الاتصال"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"سجلّ المكالمات"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"اتصال سريع"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"بريد صوتي"</string>
-    <string name="settings" msgid="7614336599112169779">"الإعدادات"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"إرسال تعليقات"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-az/strings.xml b/java/com/android/dialer/main/impl/res/values-az/strings.xml
index db9c17d..5907331 100644
--- a/java/com/android/dialer/main/impl/res/values-az/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-az/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Telefon Yeni İİ"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Zəng tarixçəsi"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Kontakt və yer axtarın"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontaktlar"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Kontaktlara Baxın"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Zəng Tarixçəsi"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Cəld Yığım"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"E-məktub"</string>
-    <string name="settings" msgid="7614336599112169779">"Ayarlar"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Cavab rəyi göndərin"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/main/impl/res/values-b+sr+Latn/strings.xml
index 75be4b8..0157b52 100644
--- a/java/com/android/dialer/main/impl/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-b+sr+Latn/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Novi UI Telefona"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Istorija poziva"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Pretražite kontakte i mesta"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontakti"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Pregledajte kontakte"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Ist. poziva"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Brzo poz."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Gov. pošta"</string>
-    <string name="settings" msgid="7614336599112169779">"Podešavanja"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Pošalji povr. inform."</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-be/strings.xml b/java/com/android/dialer/main/impl/res/values-be/strings.xml
index c83b770..35d8e2c 100644
--- a/java/com/android/dialer/main/impl/res/values-be/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-be/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Тэлефон"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Новы карыстальніцкі інтэрфейс тэлефона"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Гісторыя выклікаў"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Пошук кантактаў і месцаў"</string>
-    <string name="contacts" msgid="4464246185723317911">"Кантакты"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Прагляд кантактаў"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Выклікі"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Хуткі наб."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Гал. пошта"</string>
-    <string name="settings" msgid="7614336599112169779">"Налады"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Адправіць водгук"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-bg/strings.xml b/java/com/android/dialer/main/impl/res/values-bg/strings.xml
index 075e3e9..bd2da31 100644
--- a/java/com/android/dialer/main/impl/res/values-bg/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-bg/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Телефон"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Телефон – НПИ"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"История на обажданията"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Търсене на контакти и места"</string>
-    <string name="contacts" msgid="4464246185723317911">"Контакти"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Преглед на контактите"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"История"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Бързо наб."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Гл. поща"</string>
-    <string name="settings" msgid="7614336599112169779">"Настройки"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Изпращане на отзиви"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-bn/strings.xml b/java/com/android/dialer/main/impl/res/values-bn/strings.xml
index 372781b..dd2ff75 100644
--- a/java/com/android/dialer/main/impl/res/values-bn/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-bn/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ফোন"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"ফোন NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"কলের ইতিহাস"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"পরিচিতি এবং স্থানগুলি খুঁজুন"</string>
-    <string name="contacts" msgid="4464246185723317911">"পরিচিতিগুলি"</string>
-    <string name="description_contacts" msgid="12768481422137448">"পরিচিতিগুলি দেখুন"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"কলের ইতিহাস"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"দ্রুত ডায়াল"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"ভয়েসমেল"</string>
-    <string name="settings" msgid="7614336599112169779">"সেটিংস"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"প্রতিক্রিয়া পাঠান"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-bs/strings.xml b/java/com/android/dialer/main/impl/res/values-bs/strings.xml
index 989fa5c..f45a290 100644
--- a/java/com/android/dialer/main/impl/res/values-bs/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-bs/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI telefon"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Historija poziva"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Pretraži kontakte i mjesta"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontakti"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Prikaži kontakte"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"His. pozi."</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Brzo bira."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Govor. poš."</string>
-    <string name="settings" msgid="7614336599112169779">"Postavke"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Poša. povrat. infor."</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ca/strings.xml b/java/com/android/dialer/main/impl/res/values-ca/strings.xml
index 48c5904..3375bcb 100644
--- a/java/com/android/dialer/main/impl/res/values-ca/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ca/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telèfon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nova IU de telèfon"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Historial de trucades"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Cerca contactes i llocs"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contactes"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Mostra contactes"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Hist. trucades"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Marc. ràpid"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Miss. de veu"</string>
-    <string name="settings" msgid="7614336599112169779">"Configuració"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Envia suggeriments"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-cs/strings.xml b/java/com/android/dialer/main/impl/res/values-cs/strings.xml
index 71fd8f3..eae65f3 100644
--- a/java/com/android/dialer/main/impl/res/values-cs/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-cs/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nové rozhraní Telefonu"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Historie volání"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Hledat kontakty a místa"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontakty"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Zobrazit kontakty"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Historie volání"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Oblíbené"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Schránka"</string>
-    <string name="settings" msgid="7614336599112169779">"Nastavení"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Poslat zpětnou vazbu"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-da/strings.xml b/java/com/android/dialer/main/impl/res/values-da/strings.xml
index 67f0e92..ce342ee 100644
--- a/java/com/android/dialer/main/impl/res/values-da/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-da/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Ny genvej til telefon"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Opkaldshistorik"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Søg efter kontaktpersoner og steder"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontaktpersoner"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Se kontaktpersoner"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Opkaldshistorik"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Hurtigkald"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Talebesked"</string>
-    <string name="settings" msgid="7614336599112169779">"Indstillinger"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Send feedback"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-de/strings.xml b/java/com/android/dialer/main/impl/res/values-de/strings.xml
index a305ed4..2fc8615 100644
--- a/java/com/android/dialer/main/impl/res/values-de/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-de/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Neue Benutzeroberfläche für Telefon"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Anrufliste"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Kontakte und Orte suchen"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontakte"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Kontakte ansehen"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Anrufliste"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Kurzwahl"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Mailbox"</string>
-    <string name="settings" msgid="7614336599112169779">"Einstellungen"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Feedback geben"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-el/strings.xml b/java/com/android/dialer/main/impl/res/values-el/strings.xml
index 8591032..0deb3e8 100644
--- a/java/com/android/dialer/main/impl/res/values-el/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-el/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Τηλέφωνο"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Νέα διεπαφή χρήστη για το Τηλέφωνο"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Ιστορικό κλήσεων"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Αναζητήστε επαφές και μέρη"</string>
-    <string name="contacts" msgid="4464246185723317911">"Επαφές"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Προβολή επαφών"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Ιστορικό"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Ταχεία κλ."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Αυτ. τηλ."</string>
-    <string name="settings" msgid="7614336599112169779">"Ρυθμίσεις"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Αποστολή σχολίων"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-en-rAU/strings.xml b/java/com/android/dialer/main/impl/res/values-en-rAU/strings.xml
index b6c139f..d2b06f1 100644
--- a/java/com/android/dialer/main/impl/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-en-rAU/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telephone"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Phone NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Call history"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Search contacts and places"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contacts"</string>
-    <string name="description_contacts" msgid="12768481422137448">"View contacts"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Call history"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Speed dial"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Voicemail"</string>
-    <string name="settings" msgid="7614336599112169779">"Settings"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Sending feedback"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-en-rGB/strings.xml b/java/com/android/dialer/main/impl/res/values-en-rGB/strings.xml
index b6c139f..d2b06f1 100644
--- a/java/com/android/dialer/main/impl/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-en-rGB/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telephone"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Phone NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Call history"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Search contacts and places"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contacts"</string>
-    <string name="description_contacts" msgid="12768481422137448">"View contacts"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Call history"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Speed dial"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Voicemail"</string>
-    <string name="settings" msgid="7614336599112169779">"Settings"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Sending feedback"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-en-rIN/strings.xml b/java/com/android/dialer/main/impl/res/values-en-rIN/strings.xml
index b6c139f..d2b06f1 100644
--- a/java/com/android/dialer/main/impl/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-en-rIN/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telephone"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Phone NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Call history"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Search contacts and places"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contacts"</string>
-    <string name="description_contacts" msgid="12768481422137448">"View contacts"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Call history"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Speed dial"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Voicemail"</string>
-    <string name="settings" msgid="7614336599112169779">"Settings"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Sending feedback"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-es-rUS/strings.xml b/java/com/android/dialer/main/impl/res/values-es-rUS/strings.xml
index e62a6e6..c550276 100644
--- a/java/com/android/dialer/main/impl/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-es-rUS/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Teléfono"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nueva IU del teléfono"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Historial de llamadas"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Buscar contactos y lugares"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contactos"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Ver contactos"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Hist. llam"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Marc. ráp."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Buz. voz"</string>
-    <string name="settings" msgid="7614336599112169779">"Configuración"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Enviar comentarios"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-es/strings.xml b/java/com/android/dialer/main/impl/res/values-es/strings.xml
index 5ccc9e9..fd4801d 100644
--- a/java/com/android/dialer/main/impl/res/values-es/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-es/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Teléfono"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nueva interfaz de usuario del teléfono"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Historial de llamadas"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Buscar contactos y sitios"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contactos"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Ver contactos"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Historial"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Marcación"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Buzón"</string>
-    <string name="settings" msgid="7614336599112169779">"Ajustes"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Enviar comentarios"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-et/strings.xml b/java/com/android/dialer/main/impl/res/values-et/strings.xml
index 1c082fe..32d431c 100644
--- a/java/com/android/dialer/main/impl/res/values-et/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-et/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Telefoni uus kasutajaliides"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Kõneajalugu"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Otsige kontakte ja soovitusi"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontaktid"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Vaadake kontakte"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Kõneajalugu"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Kiirvalimine"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Kõnepost"</string>
-    <string name="settings" msgid="7614336599112169779">"Seaded"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Tagasiside saatmine"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-eu/strings.xml b/java/com/android/dialer/main/impl/res/values-eu/strings.xml
index a7100f0..a977e96 100644
--- a/java/com/android/dialer/main/impl/res/values-eu/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-eu/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefonoa"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Telefonoko erabiltzaile-interfaze naturala"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Deien historia"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Ikusi kontaktuak eta tokiak"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontaktuak"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Ikusi kontaktuak"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Deien historia"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Mark. biz."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Erantzung."</string>
-    <string name="settings" msgid="7614336599112169779">"Ezarpenak"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Bidali iritzia"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-fa/strings.xml b/java/com/android/dialer/main/impl/res/values-fa/strings.xml
index f855670..2f14cfc 100644
--- a/java/com/android/dialer/main/impl/res/values-fa/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-fa/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"تلفن"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"رابط کاربری جدید تلفن"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"سابقه تماس"</string>
-    <string name="search" msgid="3570654445331155513">"‎@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"جستجوی مخاطبین و مکان‌ها"</string>
-    <string name="contacts" msgid="4464246185723317911">"مخاطبین"</string>
-    <string name="description_contacts" msgid="12768481422137448">"مشاهده مخاطبین"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"سابقه تماس"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"شماره‌گیری سریع"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"پست صوتی"</string>
-    <string name="settings" msgid="7614336599112169779">"تنظیمات"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"ارسال بازخورد"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-fi/strings.xml b/java/com/android/dialer/main/impl/res/values-fi/strings.xml
index 7b7e053..2557e87 100644
--- a/java/com/android/dialer/main/impl/res/values-fi/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-fi/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Puhelin"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Puhelimen uusi UI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Soittohistoria"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/haku_aloita"</string>
-    <string name="description_search" msgid="3443578912463129718">"Haku yhteystiedoista ja paikoista"</string>
-    <string name="contacts" msgid="4464246185723317911">"Yhteystiedot"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Näytä yhteystiedot"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Soittohistoria"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Pikavalinta"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Vastaaja"</string>
-    <string name="settings" msgid="7614336599112169779">"Asetukset"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Lähetä palautetta"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-fr-rCA/strings.xml b/java/com/android/dialer/main/impl/res/values-fr-rCA/strings.xml
index 5d81972..ac80c2a 100644
--- a/java/com/android/dialer/main/impl/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-fr-rCA/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Téléphoner"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Téléphoner (nouvelle IU)"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Historique des appels"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Rechercher dans les contacts et les lieux"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contacts"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Afficher les contacts"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Appels"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Comp. abr."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Mess. voc."</string>
-    <string name="settings" msgid="7614336599112169779">"Paramètres"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Envoyer commentaires"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-fr/strings.xml b/java/com/android/dialer/main/impl/res/values-fr/strings.xml
index 39b2fa5..461cae4 100644
--- a/java/com/android/dialer/main/impl/res/values-fr/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-fr/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Téléphone"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Téléphone (nouvelle version)"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Historique des appels"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Recherchez des contacts et des adresses"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contacts"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Consultez vos contacts"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Historique"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Num. abrégée"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Messagerie"</string>
-    <string name="settings" msgid="7614336599112169779">"Paramètres"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Envoyer commentaires"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-gl/strings.xml b/java/com/android/dialer/main/impl/res/values-gl/strings.xml
index a8b4b4e..39c47fe 100644
--- a/java/com/android/dialer/main/impl/res/values-gl/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-gl/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Teléfono"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nova IU do teléfono"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Historial de chamadas"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Busca contactos e lugares"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contactos"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Mira os contactos"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Historial"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Marc. ráp."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Correo voz"</string>
-    <string name="settings" msgid="7614336599112169779">"Configuración"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Enviar comentarios"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-gu/strings.xml b/java/com/android/dialer/main/impl/res/values-gu/strings.xml
index 2bf6137..9c2600e 100644
--- a/java/com/android/dialer/main/impl/res/values-gu/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-gu/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ફોન"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"ફોન NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"કૉલ ઇતિહાસ"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"સંપર્કો અને સ્થાનો શોધો"</string>
-    <string name="contacts" msgid="4464246185723317911">"સંપર્કો"</string>
-    <string name="description_contacts" msgid="12768481422137448">"સંપર્કો જુઓ"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"કૉલ ઇતિહાસ"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"સ્પીડ ડાયલ"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"વૉઇસમેઇલ"</string>
-    <string name="settings" msgid="7614336599112169779">"સેટિંગ્સ"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"પ્રતિસાદ મોકલો"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-hi/strings.xml b/java/com/android/dialer/main/impl/res/values-hi/strings.xml
index 99cc780..93887be 100644
--- a/java/com/android/dialer/main/impl/res/values-hi/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-hi/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"फ़ोन"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"फ़ोन NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"कॉल इतिहास"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"संपर्क और स्थान खोजें"</string>
-    <string name="contacts" msgid="4464246185723317911">"संपर्क"</string>
-    <string name="description_contacts" msgid="12768481422137448">"संपर्क देखें"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"कॉल इतिहास"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"स्पीड डायल"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"वॉइसमेल"</string>
-    <string name="settings" msgid="7614336599112169779">"सेटिंग"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"फ़ीडबैक भेजें"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-hr/strings.xml b/java/com/android/dialer/main/impl/res/values-hr/strings.xml
index 0376d00..805fb28 100644
--- a/java/com/android/dialer/main/impl/res/values-hr/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-hr/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI telefona"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Povijest poziva"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Pretraži kontakte i mjesta"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontakti"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Prikaži kontakte"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Povijest poziva"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Brzo biranje"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Govorna pošta"</string>
-    <string name="settings" msgid="7614336599112169779">"Postavke"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Pošaljite povratne informacije"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-hu/strings.xml b/java/com/android/dialer/main/impl/res/values-hu/strings.xml
index 246d71d..451c4bd 100644
--- a/java/com/android/dialer/main/impl/res/values-hu/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-hu/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Telefon új felhasználói felülete"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Híváslista"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Névjegyek és helyek keresése"</string>
-    <string name="contacts" msgid="4464246185723317911">"Névjegyek"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Névjegyek megtekintése"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Előzmények"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Gyorshívó"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Hangposta"</string>
-    <string name="settings" msgid="7614336599112169779">"Beállítások"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Visszajelzés küldése"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-hy/strings.xml b/java/com/android/dialer/main/impl/res/values-hy/strings.xml
index e8334ca..5e51205 100644
--- a/java/com/android/dialer/main/impl/res/values-hy/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-hy/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Հեռախոս"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Հեռախոսի նոր միջերես"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Զանգերի պատմություն"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Գտնել կոնտակտներ և վայրեր"</string>
-    <string name="contacts" msgid="4464246185723317911">"Կոնտակտներ"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Դիտել կոնտակտները"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Զանգերի պատմ."</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Արագ հավաքում"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Ձայն. փոստ"</string>
-    <string name="settings" msgid="7614336599112169779">"Կարգավորումներ"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Կարծիք հայտնել"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-in/strings.xml b/java/com/android/dialer/main/impl/res/values-in/strings.xml
index 9cbab60..11a3a9e 100644
--- a/java/com/android/dialer/main/impl/res/values-in/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-in/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telepon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI Telepon"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Histori panggilan"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Telusuri kontak dan tempat"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontak"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Lihat Kontak"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Histori Panggilan"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Panggilan Cepat"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Pesan Suara"</string>
-    <string name="settings" msgid="7614336599112169779">"Setelan"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Kirim masukan"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-is/strings.xml b/java/com/android/dialer/main/impl/res/values-is/strings.xml
index 6be2056..5cda66a 100644
--- a/java/com/android/dialer/main/impl/res/values-is/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-is/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Sími"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nýtt viðmót síma"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Símtalaferill"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Leita að tengiliðum og stöðum"</string>
-    <string name="contacts" msgid="4464246185723317911">"Tengiliðir"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Skoða tengiliði"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Símtalaferill"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Hraðval"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Talhólf"</string>
-    <string name="settings" msgid="7614336599112169779">"Stillingar"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Senda ábendingu"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-it/strings.xml b/java/com/android/dialer/main/impl/res/values-it/strings.xml
index 52dc74b..f281232 100644
--- a/java/com/android/dialer/main/impl/res/values-it/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-it/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefono"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI telefono"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Cronologia chiamate"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Cerca contatti e luoghi"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contatti"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Visualizza contatti"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Cronologia"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Chiamata rapida"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Segreteria"</string>
-    <string name="settings" msgid="7614336599112169779">"Impostazioni"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Invia feedback"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-iw/strings.xml b/java/com/android/dialer/main/impl/res/values-iw/strings.xml
index 645ef20..c6af97e 100644
--- a/java/com/android/dialer/main/impl/res/values-iw/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-iw/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"טלפון"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"ממשק משתמש חדש לטלפון"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"היסטוריית שיחות"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"חיפוש אנשי קשר ומקומות"</string>
-    <string name="contacts" msgid="4464246185723317911">"אנשי קשר"</string>
-    <string name="description_contacts" msgid="12768481422137448">"הצגת אנשי הקשר"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"היסטוריית שיחות"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"חיוג מהיר"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"דואר קולי"</string>
-    <string name="settings" msgid="7614336599112169779">"הגדרות"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"משוב"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ja/strings.xml b/java/com/android/dialer/main/impl/res/values-ja/strings.xml
index 9b8cc79..2c4a743 100644
--- a/java/com/android/dialer/main/impl/res/values-ja/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ja/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"電話"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"電話 NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"通話履歴"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"連絡先や場所を検索"</string>
-    <string name="contacts" msgid="4464246185723317911">"連絡先"</string>
-    <string name="description_contacts" msgid="12768481422137448">"連絡先を表示"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"通話履歴"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"クイックアクセス"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"ボイスメール"</string>
-    <string name="settings" msgid="7614336599112169779">"設定"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"フィードバックを送信"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ka/strings.xml b/java/com/android/dialer/main/impl/res/values-ka/strings.xml
index 02f6c26..e35b69b 100644
--- a/java/com/android/dialer/main/impl/res/values-ka/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ka/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ტელეფონი"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"ტელეფონის NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"ზარების ისტორია"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"კონტაქტებისა და ადგილების ძიება"</string>
-    <string name="contacts" msgid="4464246185723317911">"კონტაქტები"</string>
-    <string name="description_contacts" msgid="12768481422137448">"კონტაქტების ნახვა"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"ზარის ისტ."</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"სწრ.აკრეფა"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"ხმოვ.ფოსტა"</string>
-    <string name="settings" msgid="7614336599112169779">"პარამეტრები"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"გამოხმაურება"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-kk/strings.xml b/java/com/android/dialer/main/impl/res/values-kk/strings.xml
index f3075a5..ecaf9cb 100644
--- a/java/com/android/dialer/main/impl/res/values-kk/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-kk/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Телефон"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Телефонға арналған жаңа пайдаланушы интерфейсі"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Қоңыраулар тарихы"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Контактілер мен орындарды іздеу"</string>
-    <string name="contacts" msgid="4464246185723317911">"Контактілер"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Контактілерді көру"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Қоңыраулар тарихы"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Жылдам теру"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Дауыстық хабар"</string>
-    <string name="settings" msgid="7614336599112169779">"Параметрлер"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Пікір жіберу"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-km/strings.xml b/java/com/android/dialer/main/impl/res/values-km/strings.xml
index bf8f51e..5821537 100644
--- a/java/com/android/dialer/main/impl/res/values-km/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-km/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ទូរសព្ទ"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI ទូរសព្ទ"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"ប្រវត្តិហៅ"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"ទំនាក់ទំនង និង​កន្លែង​ស្វែងរក"</string>
-    <string name="contacts" msgid="4464246185723317911">"ទំនាក់ទំនង"</string>
-    <string name="description_contacts" msgid="12768481422137448">"មើលទំនាក់ទំនង"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"ប្រវត្តិហៅ​ទូរសព្ទ"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"ការហៅរហ័ស"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"សារ​ជា​សំឡេង"</string>
-    <string name="settings" msgid="7614336599112169779">"ការ​កំណត់"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"ផ្ញើ​មតិ​ស្ថាបនា"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-kn/strings.xml b/java/com/android/dialer/main/impl/res/values-kn/strings.xml
index 640bdcc..68498ff 100644
--- a/java/com/android/dialer/main/impl/res/values-kn/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-kn/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ಫೋನ್"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"ಫೋನ್ NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"ಕರೆ ಇತಿಹಾಸ"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"ಸಂಪರ್ಕಗಳು ಮತ್ತು ಸ್ಥಳಗಳನ್ನು ಹುಡುಕಿ"</string>
-    <string name="contacts" msgid="4464246185723317911">"ಸಂಪರ್ಕಗಳು"</string>
-    <string name="description_contacts" msgid="12768481422137448">"ಸಂಪರ್ಕ ವೀಕ್ಷಿಸು"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"ಕರೆ ಇತಿಹಾಸ"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"ಸ್ಪೀಡ್ ಡಯಲ್"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"ಧ್ವನಿಮೇಲ್"</string>
-    <string name="settings" msgid="7614336599112169779">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"ಪ್ರತಿಕ್ರಿಯೆ ಕಳುಹಿಸಿ"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ko/strings.xml b/java/com/android/dialer/main/impl/res/values-ko/strings.xml
index 1f98f7f..51238c7 100644
--- a/java/com/android/dialer/main/impl/res/values-ko/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ko/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"전화"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"새 전화 UI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"통화 기록"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"연락처 및 장소 검색"</string>
-    <string name="contacts" msgid="4464246185723317911">"연락처"</string>
-    <string name="description_contacts" msgid="12768481422137448">"연락처 보기"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"통화 기록"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"단축 다이얼"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"음성사서함"</string>
-    <string name="settings" msgid="7614336599112169779">"설정"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"의견 보내기"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ky/strings.xml b/java/com/android/dialer/main/impl/res/values-ky/strings.xml
index 517a789..ce3f0fd 100644
--- a/java/com/android/dialer/main/impl/res/values-ky/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ky/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Чалуу"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Жаы интерфейсте чалуу"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Чалуулар таржымалы"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Байланыштарды жана жерлерди издөө"</string>
-    <string name="contacts" msgid="4464246185723317911">"Байланыштар"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Байланыштарды көрүү"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Чалуу таржымалы"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Тез терүү"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Үн почтасы"</string>
-    <string name="settings" msgid="7614336599112169779">"Жөндөөлөр"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Жооп пикир жөнөтүү"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-lo/strings.xml b/java/com/android/dialer/main/impl/res/values-lo/strings.xml
index 8b7e547..86ebfaf 100644
--- a/java/com/android/dialer/main/impl/res/values-lo/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-lo/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ໂທລະສັບ"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Phone NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"ປະຫວັດການໂທ"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"ຊອກຫາລາຍຊື່ຜູ້ຕິດຕໍ່ ແລະ ສະຖານທີ່"</string>
-    <string name="contacts" msgid="4464246185723317911">"ລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
-    <string name="description_contacts" msgid="12768481422137448">"ເບິ່ງລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"ປະຫວັດການໂທ"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"ໂທດ່ວນ"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"ຂໍ້ຄວາມສຽງ"</string>
-    <string name="settings" msgid="7614336599112169779">"ການຕັ້ງຄ່າ"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"ສົ່ງຄຳຕິຊົມ"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-lt/strings.xml b/java/com/android/dialer/main/impl/res/values-lt/strings.xml
index 4b3e3b9..d4029d3 100644
--- a/java/com/android/dialer/main/impl/res/values-lt/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-lt/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefonas"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nauja telefono NS"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Skambučių istorija"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Ieškoti kontaktų ir vietų"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontaktai"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Žr. kontaktus"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Sk. istor."</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Sp. rink."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Balso p."</string>
-    <string name="settings" msgid="7614336599112169779">"Nustatymai"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Siųsti atsiliepimą"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-lv/strings.xml b/java/com/android/dialer/main/impl/res/values-lv/strings.xml
index b1520b3..08f55c0 100644
--- a/java/com/android/dialer/main/impl/res/values-lv/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-lv/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Tālrunis"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Tālruņa jaunā lietotāja saskarne"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Zvanu vēsture"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Meklēt kontaktpersonas un vietas"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontaktpersonas"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Skatīt kontaktpersonas"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Vēsture"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Ātrā izv."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Balss pasts"</string>
-    <string name="settings" msgid="7614336599112169779">"Iestatījumi"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Sūtīt atsauksmes"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-mk/strings.xml b/java/com/android/dialer/main/impl/res/values-mk/strings.xml
index 4a04b4d..8b4539c 100644
--- a/java/com/android/dialer/main/impl/res/values-mk/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-mk/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Телефон"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Нов интерфејс на телефон"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Историја на повици"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Пребарајте контакти и места"</string>
-    <string name="contacts" msgid="4464246185723317911">"Контакти"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Прикажи контакти"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Историја"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Брзо бирање"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Гов. пошта"</string>
-    <string name="settings" msgid="7614336599112169779">"Поставки"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Повратни информации"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ml/strings.xml b/java/com/android/dialer/main/impl/res/values-ml/strings.xml
index b41d82f..1534fef 100644
--- a/java/com/android/dialer/main/impl/res/values-ml/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ml/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ഫോണ്‍"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"ഫോൺ NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"കോള്‍‌ ചരിത്രം"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"കോൺടാക്റ്റുകളും സ്ഥലങ്ങളും തിരയുക"</string>
-    <string name="contacts" msgid="4464246185723317911">"കോൺടാക്റ്റുകൾ"</string>
-    <string name="description_contacts" msgid="12768481422137448">"കോൺടാക്റ്റുകൾ കാണുക"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"കോള്‍‌ ചരിത്രം"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"സ്‌പീഡ് ഡയൽ"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"വോയ്‌സ്‌മെയിൽ"</string>
-    <string name="settings" msgid="7614336599112169779">"ക്രമീകരണം"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"ഫീഡ്‌ബാക്ക് അയയ്‌ക്കുക"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-mn/strings.xml b/java/com/android/dialer/main/impl/res/values-mn/strings.xml
index 6dee167..8ef9782 100644
--- a/java/com/android/dialer/main/impl/res/values-mn/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-mn/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Утас"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Утас NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Дуудлагын түүх"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Харилцагчид, газруудаас хайх"</string>
-    <string name="contacts" msgid="4464246185723317911">"Харилцагчид"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Харилцагчдыг харах"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Дуудлагын түүх"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Шуурхай залгах"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Дуут шуудан"</string>
-    <string name="settings" msgid="7614336599112169779">"Тохиргоо"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Санал хүсэл илгээх"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-mr/strings.xml b/java/com/android/dialer/main/impl/res/values-mr/strings.xml
index 4662461..bcfad67 100644
--- a/java/com/android/dialer/main/impl/res/values-mr/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-mr/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"फोन"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"फोन NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"कॉल इतिहास"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"संपर्क आणि स्थाने शोधा"</string>
-    <string name="contacts" msgid="4464246185723317911">"संपर्क"</string>
-    <string name="description_contacts" msgid="12768481422137448">"संपर्क पहा"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"कॉल इतिहास"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"जलद डायल"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"व्हॉइसमेल"</string>
-    <string name="settings" msgid="7614336599112169779">"सेटिंग्ज"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"अभिप्राय पाठवा"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ms/strings.xml b/java/com/android/dialer/main/impl/res/values-ms/strings.xml
index 36cb14b..b433e31 100644
--- a/java/com/android/dialer/main/impl/res/values-ms/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ms/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI Telefon"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Sejarah panggilan"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Cari kenalan dan tempat"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kenalan"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Lihat Kenalan"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Sjrh Pgln"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Dail Laju"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Mel suara"</string>
-    <string name="settings" msgid="7614336599112169779">"Tetapan"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Hantar maklum balas"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-my/strings.xml b/java/com/android/dialer/main/impl/res/values-my/strings.xml
index b71a8a5..9659514 100644
--- a/java/com/android/dialer/main/impl/res/values-my/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-my/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ဖုန်း"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI ဖုန်း"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"ခေါ်ဆိုမှုမှတ်တမ်း"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"အဆက်အသွယ်များနှင့် နေရာများကို ရှာဖွေရန်"</string>
-    <string name="contacts" msgid="4464246185723317911">"အဆက်အသွယ်များ"</string>
-    <string name="description_contacts" msgid="12768481422137448">"အဆက်အသွယ်များကို ကြည့်ရှုရန်"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"ခေါ်ဆိုမှု"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"နံပါတ်ကွက်"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"အသံမေးလ်"</string>
-    <string name="settings" msgid="7614336599112169779">"ဆက်တင်များ"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"အကြံပြုချက် ပို့ရန်"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-nb/strings.xml b/java/com/android/dialer/main/impl/res/values-nb/strings.xml
index 78ac920..456f4be 100644
--- a/java/com/android/dialer/main/impl/res/values-nb/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-nb/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Phone NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Anropslogg"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Søk etter kontakter og steder"</string>
-    <string name="contacts" msgid="4464246185723317911">"Google-kontakter"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Se kontakter"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Anropslogg"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Hurtigvalg"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Talepost"</string>
-    <string name="settings" msgid="7614336599112169779">"Innstillinger"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Send tilbakemelding"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ne/strings.xml b/java/com/android/dialer/main/impl/res/values-ne/strings.xml
index 794b058..6a429e5 100644
--- a/java/com/android/dialer/main/impl/res/values-ne/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ne/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"फोन"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI फोन"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"कलको इतिहास"</string>
-    <string name="search" msgid="3570654445331155513">"@android:स्ट्रिङ/खोज_जानुहोस्"</string>
-    <string name="description_search" msgid="3443578912463129718">"सम्पर्क र स्थानहरू खोज्‍नुहोस्"</string>
-    <string name="contacts" msgid="4464246185723317911">"सम्पर्कहरू"</string>
-    <string name="description_contacts" msgid="12768481422137448">"सम्पर्कहरू हेर्नुहोस्"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"कल इतिहास"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"स्पिड डायल"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"भ्वाइस मेल"</string>
-    <string name="settings" msgid="7614336599112169779">"सेटिङहरू"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"प्रतिक्रिया पठाउने"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-night/styles.xml b/java/com/android/dialer/main/impl/res/values-night/styles.xml
new file mode 100644
index 0000000..19afffc
--- /dev/null
+++ b/java/com/android/dialer/main/impl/res/values-night/styles.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources>
+
+  <style name="LaunchTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
+    <item name="android:colorPrimary">@color/dialer_primary_color</item>
+    <item name="colorPrimary">@color/dialer_primary_color</item>
+    <item name="android:colorPrimaryDark">@color/dialer_theme_color_dark</item>
+    <item name="colorPrimaryDark">@color/dialer_theme_color_dark</item>
+    <item name="android:windowLightStatusBar">false</item>
+  </style>
+
+</resources>
diff --git a/java/com/android/dialer/main/impl/res/values-nl/strings.xml b/java/com/android/dialer/main/impl/res/values-nl/strings.xml
index 1e8d5f1..5eb0f60 100644
--- a/java/com/android/dialer/main/impl/res/values-nl/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-nl/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Bellen"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nieuwe UI van telefoon"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Oproepgeschiedenis"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Contacten en plaatsen zoeken"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contacten"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Contacten bekijken"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Oproepen"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Snelkeuze"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Voicemail"</string>
-    <string name="settings" msgid="7614336599112169779">"Instellingen"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Feedback verzenden"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-no/strings.xml b/java/com/android/dialer/main/impl/res/values-no/strings.xml
index 78ac920..456f4be 100644
--- a/java/com/android/dialer/main/impl/res/values-no/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-no/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Phone NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Anropslogg"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Søk etter kontakter og steder"</string>
-    <string name="contacts" msgid="4464246185723317911">"Google-kontakter"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Se kontakter"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Anropslogg"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Hurtigvalg"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Talepost"</string>
-    <string name="settings" msgid="7614336599112169779">"Innstillinger"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Send tilbakemelding"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-pa/strings.xml b/java/com/android/dialer/main/impl/res/values-pa/strings.xml
index 57d3334..69bb6fc 100644
--- a/java/com/android/dialer/main/impl/res/values-pa/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-pa/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ਫ਼ੋਨ"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"ਫ਼ੋਨ NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"ਕਾਲ ਇਤਿਹਾਸ"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"ਸੰਪਰਕਾਂ ਅਤੇ ਥਾਂਵਾਂ ਨੂੰ ਖੋਜੋ"</string>
-    <string name="contacts" msgid="4464246185723317911">"ਸੰਪਰਕ"</string>
-    <string name="description_contacts" msgid="12768481422137448">"ਸੰਪਰਕ ਵੇਖੋ"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"ਕਾਲ ਇਤਿਹਾਸ"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"ਸਪੀਡ ਡਾਇਲ"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"ਵੌਇਸਮੇਲ"</string>
-    <string name="settings" msgid="7614336599112169779">"ਸੈਟਿੰਗਾਂ"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"ਪ੍ਰਤੀਕਰਮ ਭੇਜੋ"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-pl/strings.xml b/java/com/android/dialer/main/impl/res/values-pl/strings.xml
index 70f535e..1150752 100644
--- a/java/com/android/dialer/main/impl/res/values-pl/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-pl/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nowy interfejs telefonu"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Historia połączeń"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Wyszukaj kontakty i miejsca"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontakty"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Wyświetl kontakty"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Historia połączeń"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Szybkie wybieranie"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Poczta głosowa"</string>
-    <string name="settings" msgid="7614336599112169779">"Ustawienia"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Prześlij opinię"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-pt-rBR/strings.xml b/java/com/android/dialer/main/impl/res/values-pt-rBR/strings.xml
index e722727..e6cd433 100644
--- a/java/com/android/dialer/main/impl/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-pt-rBR/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefone"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nova IU: Telefone"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Histórico de chamadas"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Pesquisar contatos e lugares"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contatos"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Ver contatos"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Histórico"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Discagem rápida"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Correio de voz"</string>
-    <string name="settings" msgid="7614336599112169779">"Configurações"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Enviar feedback"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-pt-rPT/strings.xml b/java/com/android/dialer/main/impl/res/values-pt-rPT/strings.xml
index 07043fc..b9bf871 100644
--- a/java/com/android/dialer/main/impl/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-pt-rPT/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefone"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NIU do telemóvel"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Histórico de chamadas"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Pesquisar contactos e locais"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contactos"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Ver contactos"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Chamadas"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Marcação"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Corr. voz"</string>
-    <string name="settings" msgid="7614336599112169779">"Definições"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Enviar comentários"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-pt/strings.xml b/java/com/android/dialer/main/impl/res/values-pt/strings.xml
index e722727..e6cd433 100644
--- a/java/com/android/dialer/main/impl/res/values-pt/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-pt/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefone"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nova IU: Telefone"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Histórico de chamadas"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Pesquisar contatos e lugares"</string>
-    <string name="contacts" msgid="4464246185723317911">"Contatos"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Ver contatos"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Histórico"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Discagem rápida"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Correio de voz"</string>
-    <string name="settings" msgid="7614336599112169779">"Configurações"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Enviar feedback"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ro/strings.xml b/java/com/android/dialer/main/impl/res/values-ro/strings.xml
index 02158cf..73ddefd 100644
--- a/java/com/android/dialer/main/impl/res/values-ro/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ro/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Noua IU pentru Telefon"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Istoricul apelurilor"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Căutați persoane de contact și locuri"</string>
-    <string name="contacts" msgid="4464246185723317911">"Agendă"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Afișați Agenda"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Istoric"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Apel rapid"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Ms. vocală"</string>
-    <string name="settings" msgid="7614336599112169779">"Setări"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Trimiteți feedback"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ru/strings.xml b/java/com/android/dialer/main/impl/res/values-ru/strings.xml
index 4a60cfc..58a3eb4 100644
--- a/java/com/android/dialer/main/impl/res/values-ru/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ru/strings.xml
@@ -17,16 +17,8 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="main_activity_label" msgid="3121599977875141886">"Позвонить"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Позвонить в новом интерфейсе"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Журнал звонков"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Поиск контактов и мест"</string>
-    <string name="contacts" msgid="4464246185723317911">"Контакты"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Посмотреть контакты"</string>
+    <string name="main_activity_label" msgid="3121599977875141886">"Телефон"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Звонки"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Быстрый набор"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Гол. почта"</string>
-    <string name="settings" msgid="7614336599112169779">"Настройки"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Отправить отзыв"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-si/strings.xml b/java/com/android/dialer/main/impl/res/values-si/strings.xml
index 938bb39..6f2e667 100644
--- a/java/com/android/dialer/main/impl/res/values-si/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-si/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"දුරකථනය"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Phone NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"ඇමතුම් ඉතිහාසය"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"සම්බන්ධතා සහ ස්ථාන සොයන්න"</string>
-    <string name="contacts" msgid="4464246185723317911">"සම්බන්ධතා"</string>
-    <string name="description_contacts" msgid="12768481422137448">"සම්බන්ධතා බලන්න"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"ඇමතුම් ඉති"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"වේග ඇමතීම"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"හඬ තැපෑල"</string>
-    <string name="settings" msgid="7614336599112169779">"සැකසීම්"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"ප්‍රතිපෝෂණය යවන්න"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-sk/strings.xml b/java/com/android/dialer/main/impl/res/values-sk/strings.xml
index 74e7ebd..c6ab1d5 100644
--- a/java/com/android/dialer/main/impl/res/values-sk/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-sk/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefón"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nové rozhranie Telefónu"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"História hovorov"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Hľadať kontakty a miesta"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontakty"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Zobraziť kontakty"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"História hovorov"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Rých. voľ."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Hlas. sch."</string>
-    <string name="settings" msgid="7614336599112169779">"Nastavenia"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Odoslať spätnú väzbu"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-sl/strings.xml b/java/com/android/dialer/main/impl/res/values-sl/strings.xml
index f6746bd..04e341c 100644
--- a/java/com/android/dialer/main/impl/res/values-sl/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-sl/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nov uporabniški vmesnik za telefon"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Zgodovina klicev"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Iskanje po stikih in mestih"</string>
-    <string name="contacts" msgid="4464246185723317911">"Stiki"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Prikaz stikov"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Zg. klicev"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Hitro izb."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Odzivnik"</string>
-    <string name="settings" msgid="7614336599112169779">"Nastavitve"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Pošilj. povr. info."</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-sq/strings.xml b/java/com/android/dialer/main/impl/res/values-sq/strings.xml
index faf6518..b532157 100644
--- a/java/com/android/dialer/main/impl/res/values-sq/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-sq/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefoni"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Ndërfaqja e re e përdoruesit e telefonit"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Historiku i telefonatave"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Kërko për kontakte dhe vende"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontaktet"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Shiko kontaktet"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Historiku i telefonatave"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Telefonatë e shpejtë"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Posta zanore"</string>
-    <string name="settings" msgid="7614336599112169779">"Cilësimet"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Dërgo komentin"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-sr/strings.xml b/java/com/android/dialer/main/impl/res/values-sr/strings.xml
index 542460e..48d5cfc 100644
--- a/java/com/android/dialer/main/impl/res/values-sr/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-sr/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Телефон"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Нови UI Телефона"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Историја позива"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Претражите контакте и места"</string>
-    <string name="contacts" msgid="4464246185723317911">"Контакти"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Прегледајте контакте"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Ист. позива"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Брзо поз."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Гов. пошта"</string>
-    <string name="settings" msgid="7614336599112169779">"Подешавања"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Пошаљи повр. информ."</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-sv/strings.xml b/java/com/android/dialer/main/impl/res/values-sv/strings.xml
index cefefb3..c36b9f7 100644
--- a/java/com/android/dialer/main/impl/res/values-sv/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-sv/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Nytt användargränssnitt för telefon"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Samtalshistorik"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Sök efter kontakter och platser"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontakter"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Visa kontakter"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Samt.hist."</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Snabbval"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Röstbrevl."</string>
-    <string name="settings" msgid="7614336599112169779">"Inställningar"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Skicka feedback"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-sw/strings.xml b/java/com/android/dialer/main/impl/res/values-sw/strings.xml
index 0c50bd5..4c62633 100644
--- a/java/com/android/dialer/main/impl/res/values-sw/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-sw/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Simu"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI ya Simu"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Rekodi ya simu zilizopigwa"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Tafuta anwani na mahali"</string>
-    <string name="contacts" msgid="4464246185723317911">"Anwani"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Angalia Anwani"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Simu Zilizopigwa"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Mnaowasiliana Sana"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Ujumbe wa sauti"</string>
-    <string name="settings" msgid="7614336599112169779">"Mipangilio"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Tupe maoni yako"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ta/strings.xml b/java/com/android/dialer/main/impl/res/values-ta/strings.xml
index 81e02ef..81a4cad 100644
--- a/java/com/android/dialer/main/impl/res/values-ta/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ta/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ஃபோன்"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"ஃபோன் NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"அழைப்பு வரலாறு"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"தொடர்புகளையும் இடங்களையும் தேடுவதற்கான பொத்தான்"</string>
-    <string name="contacts" msgid="4464246185723317911">"தொடர்புகள்"</string>
-    <string name="description_contacts" msgid="12768481422137448">"தொடர்புகளைக் காட்டுவதற்கான பொத்தான்"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"கால் தகவல்"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"ஸ்பீட்டைல்"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"குரலஞ்சல்"</string>
-    <string name="settings" msgid="7614336599112169779">"அமைப்புகள்"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"கருத்துத் தெரிவி"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-te/strings.xml b/java/com/android/dialer/main/impl/res/values-te/strings.xml
index c337cf3..e0b59eb 100644
--- a/java/com/android/dialer/main/impl/res/values-te/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-te/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"ఫోన్"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"ఫోన్ NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"కాల్ చరిత్ర"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"పరిచయాలు మరియు స్థలాలను శోధించు"</string>
-    <string name="contacts" msgid="4464246185723317911">"పరిచయాలు"</string>
-    <string name="description_contacts" msgid="12768481422137448">"పరిచయాలను వీక్షించండి"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"కాల్ చరిత్ర"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"స్పీడ్ డయల్"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"వాయిస్ మెయిల్"</string>
-    <string name="settings" msgid="7614336599112169779">"సెట్టింగ్‌లు"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"అభిప్రాయాన్ని పంపండి"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-th/strings.xml b/java/com/android/dialer/main/impl/res/values-th/strings.xml
index aa83f81..4f9540d 100644
--- a/java/com/android/dialer/main/impl/res/values-th/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-th/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"โทรศัพท์"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI ของโทรศัพท์"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"ประวัติการโทร"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"ค้นหารายชื่อติดต่อและสถานที่"</string>
-    <string name="contacts" msgid="4464246185723317911">"รายชื่อติดต่อ"</string>
-    <string name="description_contacts" msgid="12768481422137448">"ดูรายชื่อติดต่อ"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"ประวัติการโทร"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"โทรด่วน"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"ข้อความเสียง"</string>
-    <string name="settings" msgid="7614336599112169779">"การตั้งค่า"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"ส่งความคิดเห็น"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-tl/strings.xml b/java/com/android/dialer/main/impl/res/values-tl/strings.xml
index bbfe10c..707b1b3 100644
--- a/java/com/android/dialer/main/impl/res/values-tl/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-tl/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telepono"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI ng telepono"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"History ng tawag"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Maghanap ng mga contact at mga lugar"</string>
-    <string name="contacts" msgid="4464246185723317911">"Mga Contact"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Tingnan ang Mga Contact"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"History ng Tawag"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Speed Dial"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Voicemail"</string>
-    <string name="settings" msgid="7614336599112169779">"Mga Setting"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Padala ng feedback"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-tr/strings.xml b/java/com/android/dialer/main/impl/res/values-tr/strings.xml
index 31e15be..14383be 100644
--- a/java/com/android/dialer/main/impl/res/values-tr/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-tr/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Telefon"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Telefonun Yeni Kullanıcı Arayüzü"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Çağrı geçmişi"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Kişileri ve yerleri ara"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kişiler"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Kişileri Göster"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Çağrı Gçmş"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Hızlı Ara"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Sesli msj"</string>
-    <string name="settings" msgid="7614336599112169779">"Ayarlar"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Geri bildirim gönder"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-uk/strings.xml b/java/com/android/dialer/main/impl/res/values-uk/strings.xml
index 7691054..99ffc72 100644
--- a/java/com/android/dialer/main/impl/res/values-uk/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-uk/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Телефон"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Новий елемент інтерфейсу телефону"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Історія дзвінків"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Шукати контакти й місця"</string>
-    <string name="contacts" msgid="4464246185723317911">"Контакти"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Переглянути контакти"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Історія"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Шв. набір"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Гол. пошта"</string>
-    <string name="settings" msgid="7614336599112169779">"Налаштування"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Надіслати відгук"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-ur/strings.xml b/java/com/android/dialer/main/impl/res/values-ur/strings.xml
index 5795faa..85faf49 100644
--- a/java/com/android/dialer/main/impl/res/values-ur/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-ur/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"فون"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"‏فون NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"کال کی سرگزشت"</string>
-    <string name="search" msgid="3570654445331155513">"‎@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"رابطے اور مقامات تلاش کریں"</string>
-    <string name="contacts" msgid="4464246185723317911">"رابطے"</string>
-    <string name="description_contacts" msgid="12768481422137448">"رابطے دیکھیں"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"کال کی سرگزشت"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"اسپیڈ ڈائل"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"صوتی میل"</string>
-    <string name="settings" msgid="7614336599112169779">"ترتیبات"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"تاثرات بھیجیں"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-uz/strings.xml b/java/com/android/dialer/main/impl/res/values-uz/strings.xml
index 8083322..10847ba 100644
--- a/java/com/android/dialer/main/impl/res/values-uz/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-uz/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Chaqiruv"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"Yangi interfeysdan foydalanib qo‘ng‘iroq qilish"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Qo‘ng‘iroqlar tarixi"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Kontakt va joylarni qidirish"</string>
-    <string name="contacts" msgid="4464246185723317911">"Kontaktlar"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Kontaktlarni ko‘rish"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Tarix"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Tez. ter."</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Ov. pochta"</string>
-    <string name="settings" msgid="7614336599112169779">"Sozlamalar"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Fikr-mulohaza yubor."</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-v27/styles.xml b/java/com/android/dialer/main/impl/res/values-v27/styles.xml
deleted file mode 100644
index 261012e..0000000
--- a/java/com/android/dialer/main/impl/res/values-v27/styles.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-
-  <!-- Used on sdk 27 and above -->
-  <!-- TODO(a bug): refactor into dialer/theme -->
-  <style name="MainActivityTheme" parent="MainActivityThemeBase">
-    <!-- Used to change the navigation bar color -->
-    <item name="android:windowLightNavigationBar">true</item>
-    <item name="android:navigationBarColor">?android:attr/colorBackgroundFloating</item>
-    <item name="android:navigationBarDividerColor">#E0E0E0</item>
-  </style>
-
-  <!-- Used on sdk 27 and above -->
-  <!-- TODO(a bug): refactor into dialer/theme -->
-  <style name="MainActivityTheme.Dark" parent="MainActivityThemeBase.Dark">
-    <!-- Used to change the navigation bar color -->
-    <item name="android:windowLightNavigationBar">true</item>
-    <item name="android:navigationBarColor">?android:attr/colorBackgroundFloating</item>
-    <item name="android:navigationBarDividerColor">#E0E0E0</item>
-  </style>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/main/impl/res/values-vi/strings.xml b/java/com/android/dialer/main/impl/res/values-vi/strings.xml
index 73fd31b..14b2a34 100644
--- a/java/com/android/dialer/main/impl/res/values-vi/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-vi/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Điện thoại"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"NUI điện thoại"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Nhật ký cuộc gọi"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Tìm kiếm liên hệ và địa điểm"</string>
-    <string name="contacts" msgid="4464246185723317911">"Danh bạ"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Xem Danh bạ"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Nhật ký cuộc gọi"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Quay số nhanh"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Thư thoại"</string>
-    <string name="settings" msgid="7614336599112169779">"Cài đặt"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Gửi phản hồi"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-zh-rCN/strings.xml b/java/com/android/dialer/main/impl/res/values-zh-rCN/strings.xml
index 9649748..cbe2790 100644
--- a/java/com/android/dialer/main/impl/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-zh-rCN/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"拨打电话"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"电话 NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"通话记录"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"搜索联系人和地点"</string>
-    <string name="contacts" msgid="4464246185723317911">"联系人"</string>
-    <string name="description_contacts" msgid="12768481422137448">"查看联系人"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"通话记录"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"快速拨号"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"语音邮件"</string>
-    <string name="settings" msgid="7614336599112169779">"设置"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"发送反馈"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-zh-rHK/strings.xml b/java/com/android/dialer/main/impl/res/values-zh-rHK/strings.xml
index 5595a9d..4e020a4 100644
--- a/java/com/android/dialer/main/impl/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-zh-rHK/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"電話"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"電話 NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"通話記錄"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"搜尋聯絡人和地點"</string>
-    <string name="contacts" msgid="4464246185723317911">"通訊錄"</string>
-    <string name="description_contacts" msgid="12768481422137448">"查看通訊錄"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"通話記錄"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"快速撥號"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"留言"</string>
-    <string name="settings" msgid="7614336599112169779">"設定"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"提供意見"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-zh-rTW/strings.xml b/java/com/android/dialer/main/impl/res/values-zh-rTW/strings.xml
index abda680..07e0de2 100644
--- a/java/com/android/dialer/main/impl/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-zh-rTW/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"手機"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"手機 NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"通話紀錄"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"搜尋聯絡人和地點"</string>
-    <string name="contacts" msgid="4464246185723317911">"聯絡人"</string>
-    <string name="description_contacts" msgid="12768481422137448">"查看聯絡人"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"通話紀錄"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"快速撥號"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"語音信箱"</string>
-    <string name="settings" msgid="7614336599112169779">"設定"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"提供意見"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values-zu/strings.xml b/java/com/android/dialer/main/impl/res/values-zu/strings.xml
index 8529550..cf8ad68 100644
--- a/java/com/android/dialer/main/impl/res/values-zu/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values-zu/strings.xml
@@ -18,15 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="main_activity_label" msgid="3121599977875141886">"Ifoni"</string>
-    <string name="nui_shortcut_name" msgid="6370942901789984087">"I-Phone NUI"</string>
-    <string name="main_call_history_tab_description" msgid="1705569872650796265">"Umlando wekholi"</string>
-    <string name="search" msgid="3570654445331155513">"@android:string/search_go"</string>
-    <string name="description_search" msgid="3443578912463129718">"Sesha oxhumana nabo nezindawo"</string>
-    <string name="contacts" msgid="4464246185723317911">"Oxhumana nabo"</string>
-    <string name="description_contacts" msgid="12768481422137448">"Buka oxhumana nabo"</string>
     <string name="tab_title_call_history" msgid="5191872501729332994">"Umlando wekholi"</string>
     <string name="tab_title_speed_dial" msgid="1968484500112572774">"Ukudayela okusheshayo"</string>
     <string name="tab_title_voicemail" msgid="4777655983569268504">"Ivoyisimeyili"</string>
-    <string name="settings" msgid="7614336599112169779">"Izilungiselelo"</string>
-    <string name="main_send_feedback" msgid="2446919533981327373">"Thumela impendulo"</string>
 </resources>
diff --git a/java/com/android/dialer/main/impl/res/values/strings.xml b/java/com/android/dialer/main/impl/res/values/strings.xml
index cde78e6..cd41c26 100644
--- a/java/com/android/dialer/main/impl/res/values/strings.xml
+++ b/java/com/android/dialer/main/impl/res/values/strings.xml
@@ -21,16 +21,6 @@
   <!-- Title for the activity that dials the phone, when launched directly into the dialpad -->
   <string name="dialpad_activity_title">Phone Keypad</string>
 
-  <!-- Text for a toolbar button that shows the user their contacts [CHAR LIMIT=NONE] -->
-  <string name="search">@android:string/search_go</string>
-  <!-- A11y announcement to let users know a button will let them search for contacts and places [CHAR LIMIT=NONE] -->
-  <string name="description_search">Search contacts and places</string>
-
-  <!-- Text for a toolbar button that shows the user their contacts [CHAR LIMIT=NONE] -->
-  <string name="contacts">Contacts</string>
-  <!-- A11y announcement to let users know a button will let them view their contacts [CHAR LIMIT=NONE] -->
-  <string name="description_contacts">View Contacts</string>
-
   <!-- Message displayed when there is no application available to handle voice search. [CHAR LIMIT=NONE] -->
   <string name="voice_search_not_available">Voice search not available</string>
 
diff --git a/java/com/android/dialer/main/impl/res/values/styles.xml b/java/com/android/dialer/main/impl/res/values/styles.xml
index 25f247e..322d62a 100644
--- a/java/com/android/dialer/main/impl/res/values/styles.xml
+++ b/java/com/android/dialer/main/impl/res/values/styles.xml
@@ -16,18 +16,38 @@
   -->
 <resources>
 
-  <!-- Activities should use this theme as their style -->
-  <style name="MainActivityTheme" parent="MainActivityThemeBase"/>
+  <style name="LaunchTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
+    <item name="android:colorPrimary">@color/dialer_primary_color</item>
+    <item name="colorPrimary">@color/dialer_primary_color</item>
+    <item name="android:colorPrimaryDark">@color/dialer_theme_color_dark</item>
+    <item name="colorPrimaryDark">@color/dialer_theme_color_dark</item>
+    <item name="android:windowLightStatusBar">true</item>
+  </style>
 
-  <style name="MainActivityTheme.Dark" parent="MainActivityTheme.Dark"/>
+  <!-- Activities should use this theme as their style -->
+  <style name="MainActivityTheme" parent="MainActivityThemeBase">
+    <!-- Used to change the navigation bar color -->
+    <item name="android:windowLightNavigationBar">true</item>
+    <item name="android:navigationBarColor">@color/rounded_dialpad_bg_color</item>
+    <item name="android:navigationBarDividerColor">@null</item>
+  </style>
+
+  <style name="MainActivityTheme.Dark" parent="MainActivityThemeBase.Dark">
+    <!-- Used to change the navigation bar color -->
+    <item name="android:windowLightNavigationBar">true</item>
+    <item name="android:navigationBarColor">@color/rounded_dialpad_bg_color</item>
+    <item name="android:navigationBarDividerColor">@null</item>
+  </style>
 
   <!-- Used as a procy for values-v27/styles.xml -->
   <style name="MainActivityThemeBase" parent="Dialer.ThemeBase.NoActionBar">
     <!-- Required for actionmode/multiselect to render properly. -->
     <!-- TODO(a bug): Check to see if we can remove this after NewVoicemailFragment launches -->
     <item name="actionModeStyle">@style/MainActionModeStyle</item>
-    <item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
+    <item name="actionBarTheme">@style/ThemeOverlay.AppCompat.ActionBar</item>
     <item name="dialpad_style">@style/Dialpad.Themed</item>
+    <item name="android:colorPrimaryDark">@color/dialer_theme_color_dark</item>
+    <item name="colorPrimaryDark">@color/dialer_theme_color_dark</item>
   </style>
 
   <style name="MainActivityThemeBase.Dark" parent="Dialer.Dark.ThemeBase.NoActionBar">
diff --git a/java/com/android/dialer/main/impl/toolbar/AndroidManifest.xml b/java/com/android/dialer/main/impl/toolbar/AndroidManifest.xml
deleted file mode 100644
index a5f9383..0000000
--- a/java/com/android/dialer/main/impl/toolbar/AndroidManifest.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest package="com.android.dialer.main.impl.toolbar"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/main/impl/toolbar/MainToolbar.java b/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
index 475383b..4082d7e 100644
--- a/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
+++ b/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,20 +18,24 @@
 package com.android.dialer.main.impl.toolbar;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.StringRes;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
 import android.util.AttributeSet;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.animation.AccelerateDecelerateInterpolator;
 import android.widget.ImageButton;
 import android.widget.PopupMenu;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.StringRes;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.util.ViewUtil;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /** Toolbar for {@link com.android.dialer.main.impl.MainActivity}. */
 public final class MainToolbar extends Toolbar implements PopupMenu.OnMenuItemClickListener {
diff --git a/java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java b/java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java
index 16aa7c5..020c521 100644
--- a/java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java
+++ b/java/com/android/dialer/main/impl/toolbar/MainToolbarMenu.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,11 +18,14 @@
 package com.android.dialer.main.impl.toolbar;
 
 import android.content.Context;
-import android.support.v7.app.AppCompatActivity;
 import android.view.Gravity;
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.PopupMenu;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.android.dialer.R;
 import com.android.dialer.simulator.Simulator;
 import com.android.dialer.simulator.SimulatorComponent;
 
diff --git a/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java b/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
index d01fe3a..4450ae4 100644
--- a/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
+++ b/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,10 @@
 package com.android.dialer.main.impl.toolbar;
 
 import android.app.Activity;
-import android.support.v7.app.AppCompatActivity;
 import android.view.MenuItem;
 
+import androidx.appcompat.app.AppCompatActivity;
+
 /** Useful callback for {@link SearchBarView} listeners. */
 public interface SearchBarListener {
 
diff --git a/java/com/android/dialer/main/impl/toolbar/SearchBarView.java b/java/com/android/dialer/main/impl/toolbar/SearchBarView.java
index 60b0673..245eeda 100644
--- a/java/com/android/dialer/main/impl/toolbar/SearchBarView.java
+++ b/java/com/android/dialer/main/impl/toolbar/SearchBarView.java
@@ -20,9 +20,6 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
@@ -31,11 +28,18 @@
 import android.widget.EditText;
 import android.widget.FrameLayout;
 import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+
+import com.android.dialer.R;
 import com.android.dialer.animation.AnimUtils;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.UiUtil;
 import com.android.dialer.util.DialerUtils;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /** Search bar for {@link MainToolbar}. Mostly used to handle expand and collapse animation. */
 final class SearchBarView extends FrameLayout {
@@ -134,9 +138,7 @@
           @Override
           public void onAnimationEnd(Animator animation) {
             super.onAnimationEnd(animation);
-            if (text.isPresent()) {
-              searchBox.setText(text.get());
-            }
+            text.ifPresent(s -> searchBox.setText(s));
             // Don't request focus unless we're actually showing the search box, otherwise
             // physical/bluetooth keyboards will type into this box when the dialpad is open.
             if (requestFocus) {
diff --git a/java/com/android/dialer/main/impl/toolbar/res/drawable/search_bar_background_rounded_corners.xml b/java/com/android/dialer/main/impl/toolbar/res/drawable/search_bar_background_rounded_corners.xml
index 88f5a04..2acd72f 100644
--- a/java/com/android/dialer/main/impl/toolbar/res/drawable/search_bar_background_rounded_corners.xml
+++ b/java/com/android/dialer/main/impl/toolbar/res/drawable/search_bar_background_rounded_corners.xml
@@ -14,8 +14,15 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-  android:shape="rectangle">
-  <solid android:color="?android:attr/colorBackgroundFloating"/>
-  <corners android:radius="2dp"/>
-</shape>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="@color/dialer_ripple_color">
+
+    <item android:id="@android:id/mask">
+        <shape android:shape="rectangle">
+            <solid android:color="@android:color/white" />
+            <corners android:radius="28dp" />
+        </shape>
+    </item>
+
+  <item android:drawable="@drawable/search_bar_background_rounded_corners_shape" />
+</ripple>
diff --git a/java/com/android/dialer/main/impl/toolbar/res/drawable/search_bar_background_rounded_corners_shape.xml b/java/com/android/dialer/main/impl/toolbar/res/drawable/search_bar_background_rounded_corners_shape.xml
new file mode 100644
index 0000000..62f1e61
--- /dev/null
+++ b/java/com/android/dialer/main/impl/toolbar/res/drawable/search_bar_background_rounded_corners_shape.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+  android:shape="rectangle">
+  <solid android:color="?attr/colorBackgroundSearchBar"/>
+  <corners android:radius="28dp"/>
+</shape>
diff --git a/java/com/android/dialer/main/impl/toolbar/res/drawable/search_shadow.xml b/java/com/android/dialer/main/impl/toolbar/res/drawable/search_shadow.xml
deleted file mode 100644
index 583ad20..0000000
--- a/java/com/android/dialer/main/impl/toolbar/res/drawable/search_shadow.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-  <gradient
-      android:startColor="#3333"
-      android:endColor="#0333"
-      android:type="linear"
-      android:angle="90">
-  </gradient>
-</shape>
\ No newline at end of file
diff --git a/java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml b/java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml
index a7b3aeb..04ab4ed 100644
--- a/java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml
+++ b/java/com/android/dialer/main/impl/toolbar/res/layout/expanded_search_bar.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 The Android Open Source Project
+<!--
+     Copyright (C) 2018 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -15,6 +17,7 @@
 -->
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/search_box_expanded"
     android:layout_width="match_parent"
     android:layout_height="@dimen/collapsed_search_bar_height"
@@ -29,7 +32,7 @@
       android:background="?attr/selectableItemBackgroundBorderless"
       android:contentDescription="@string/action_menu_back_from_search"
       android:src="@drawable/quantum_ic_arrow_back_vd_theme_24"
-      android:tint="?android:attr/colorPrimary"/>
+      app:tint="?colorIcon" />
 
   <EditText
       android:id="@+id/search_view"
@@ -60,6 +63,6 @@
       android:background="?attr/selectableItemBackgroundBorderless"
       android:contentDescription="@string/description_clear_search"
       android:src="@drawable/quantum_ic_close_vd_theme_24"
-      android:tint="?colorIcon"
-      android:visibility="gone"/>
-</RelativeLayout>
\ No newline at end of file
+      android:visibility="gone"
+      app:tint="?colorIcon" />
+</RelativeLayout>
diff --git a/java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml b/java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml
index 049cf2e..0df4fa2 100644
--- a/java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml
+++ b/java/com/android/dialer/main/impl/toolbar/res/layout/toolbar_layout.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 The Android Open Source Project
+<!--
+     Copyright (C) 2018 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -18,7 +20,6 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="@dimen/expanded_search_bar_height"
-    android:background="?android:attr/colorPrimary"
     app:contentInsetEnd="0dp"
     app:contentInsetStart="0dp">
   <FrameLayout
@@ -30,7 +31,7 @@
         android:layout_height="wrap_content"
         android:layout_margin="@dimen/search_bar_margin"
         android:background="@drawable/search_bar_background_rounded_corners"
-        android:elevation="4dp"
+        android:elevation="0dp"
         android:minHeight="@dimen/collapsed_search_bar_height">
 
       <RelativeLayout
@@ -38,7 +39,6 @@
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_gravity="center_vertical"
-          android:background="?android:attr/selectableItemBackground"
           android:gravity="center_vertical">
 
         <ImageView
@@ -50,7 +50,7 @@
             android:importantForAccessibility="no"
             android:scaleType="center"
             android:src="@drawable/quantum_ic_search_vd_theme_24"
-            android:tint="?colorIcon"/>
+            app:tint="@color/searchbar_icon_color" />
 
         <TextView
             android:id="@+id/search_box_start_search"
@@ -61,7 +61,7 @@
             android:layout_toEndOf="@+id/search_magnifying_glass"
             android:layout_toStartOf="@+id/voice_search_button"
             android:text="@string/dialer_hint_find_contact"
-            android:textSize="16dp"
+            android:textSize="16sp"
             style="@style/Dialer.TextAppearance.Secondary"/>
 
         <ImageView
@@ -73,7 +73,7 @@
             android:contentDescription="@string/description_start_voice_search"
             android:scaleType="center"
             android:src="@drawable/quantum_ic_mic_vd_theme_24"
-            android:tint="?colorIcon"/>
+            app:tint="@color/searchbar_icon_color" />
 
         <ImageButton
             android:id="@+id/main_options_menu_button"
@@ -84,7 +84,7 @@
             android:contentDescription="@string/action_menu_overflow_description"
             android:scaleType="center"
             android:src="@drawable/quantum_ic_more_vert_vd_theme_24"
-            android:tint="?colorIcon"/>
+            app:tint="@color/searchbar_icon_color" />
       </RelativeLayout>
 
       <include layout="@layout/expanded_search_bar"/>
@@ -121,7 +121,7 @@
             android:layout_marginTop="8dp"
             android:layout_marginBottom="8dp"
             android:src="@drawable/quantum_ic_close_vd_theme_24"
-            android:tint="?colorIconOnUnthemedDarkBackground"/>
+            app:tint="?colorIconOnUnthemedDarkBackground" />
 
         <TextView
             android:id="@+id/remove_view_text"
diff --git a/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml b/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml
index ab25aa4..4650692 100644
--- a/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml
+++ b/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2018 The Android Open Source Project
+  ~ Copyright (C) 2021 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -19,18 +20,22 @@
 
   <item
       android:id="@+id/menu_call_history"
-      android:title="@string/main_menu_call_history"
+      android:title="@string/action_menu_call_history_description"
       app:showAsAction="collapseActionView"/>
 
   <item
       android:id="@+id/clear_frequents"
-      android:title="@string/main_menu_clear_frequents"
+      android:title="@string/menu_clear_frequents"
       app:showAsAction="collapseActionView"
       android:visible="false"/>
 
   <item
+    android:id="@+id/menu_helplines"
+    android:title="@string/action_menu_helplines"/>
+
+  <item
       android:id="@+id/settings"
-      android:title="@string/settings"
+      android:title="@string/dialer_settings_label"
       app:showAsAction="collapseActionView"/>
 
   <item
@@ -38,4 +43,4 @@
     android:title="@string/nui_simulator_submenu_label"
     app:showAsAction="collapseActionView"
     android:visible="false"/>
-</menu>
\ No newline at end of file
+</menu>
diff --git a/java/com/android/dialer/main/impl/toolbar/res/values/strings.xml b/java/com/android/dialer/main/impl/toolbar/res/values/strings.xml
index 00b175e..6e180b9 100644
--- a/java/com/android/dialer/main/impl/toolbar/res/values/strings.xml
+++ b/java/com/android/dialer/main/impl/toolbar/res/values/strings.xml
@@ -38,17 +38,10 @@
   <!-- Show users their settings [CHAR LIMIT=20] -->
   <string name="settings">Settings</string>
 
-  <!-- Content description for the fake action menu button that brings up the call history
-       activity [CHAR LIMIT=20] -->
-  <string name="main_menu_call_history">Call history</string>
-
-  <!--  The menu item to clear frequents [CHAR LIMIT=30] -->
-  <string name="main_menu_clear_frequents">Clear frequents</string>
-
   <!-- Remove button that shows up when contact is long-pressed. [CHAR LIMIT=NONE] -->
   <string name="main_remove_contact">Remove</string>
 
   <!-- Label for the simulator submenu. This is used to show actions that are useful for development
        and testing. [CHAR LIMIT=30]-->
   <string translatable="false" name="nui_simulator_submenu_label">Simulator</string>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/metrics/FutureTimer.java b/java/com/android/dialer/metrics/FutureTimer.java
index a45fb38..b0c7694 100644
--- a/java/com/android/dialer/metrics/FutureTimer.java
+++ b/java/com/android/dialer/metrics/FutureTimer.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,8 +18,9 @@
 package com.android.dialer.metrics;
 
 import android.os.SystemClock;
-import android.support.annotation.IntDef;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.IntDef;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.LightweightExecutor;
 import com.google.common.base.Function;
@@ -26,17 +28,18 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+
 import javax.inject.Inject;
 
 /** Applies logcat and metric logging to a supplied future. */
 public final class FutureTimer {
 
   /** Operations which exceed this threshold will have logcat warnings printed. */
-  @VisibleForTesting static final long LONG_OPERATION_LOGCAT_THRESHOLD_MILLIS = 100L;
+  private static final long LONG_OPERATION_LOGCAT_THRESHOLD_MILLIS = 100L;
 
-  private final Metrics metrics;
   private final ListeningExecutorService lightweightExecutorService;
 
   /** Modes for logging Future results to logcat. */
@@ -58,9 +61,7 @@
   }
 
   @Inject
-  public FutureTimer(
-      Metrics metrics, @LightweightExecutor ListeningExecutorService lightweightExecutorService) {
-    this.metrics = metrics;
+  public FutureTimer(@LightweightExecutor ListeningExecutorService lightweightExecutorService) {
     this.lightweightExecutorService = lightweightExecutorService;
   }
 
@@ -101,16 +102,12 @@
       Function<T, String> eventNameFromResultFunction,
       @LogCatMode int logCatMode) {
     long startTime = SystemClock.elapsedRealtime();
-    Integer timerId = metrics.startUnnamedTimer();
     Futures.addCallback(
         future,
         new FutureCallback<T>() {
           @Override
           public void onSuccess(T result) {
             String eventName = eventNameFromResultFunction.apply(result);
-            if (timerId != null) {
-              metrics.stopUnnamedTimer(timerId, eventName);
-            }
             long operationTime = SystemClock.elapsedRealtime() - startTime;
 
             // If the operation took a long time, do some WARNING logging.
diff --git a/java/com/android/dialer/metrics/Metrics.java b/java/com/android/dialer/metrics/Metrics.java
index a8c68c8..bdfaa3d 100644
--- a/java/com/android/dialer/metrics/Metrics.java
+++ b/java/com/android/dialer/metrics/Metrics.java
@@ -17,35 +17,10 @@
 package com.android.dialer.metrics;
 
 import android.app.Application;
-import android.support.annotation.Nullable;
 
 /** Logs metrics. */
 public interface Metrics {
 
-  String APPLICATION_ON_CREATE_EVENT_NAME = "Application.onCreate";
-  String DIALTACTS_ON_CREATE_EVENT_NAME = "GoogleDialtactsActivity.onCreate";
-  String MAIN_ACTIVITY_ON_CREATE_EVENT_NAME = "GoogleMainActivity.onCreate";
-  String ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_INCOMING =
-      "CallList.onCallAdded_To_InCallActivity.onCreate_Incoming";
-  String ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_OUTGOING =
-      "CallList.onCallAdded_To_InCallActivity.onCreate_Outgoing";
-  String DIALTACTS_ON_RESUME_MEMORY_EVENT_NAME = "GoogleDialtactsActivity.onResume";
-  String OLD_MAIN_ACTIVITY_PEER_ON_RESUME_MEMORY_EVENT_NAME = "OldMainActivityPeer.onResume";
-  String INCALL_ACTIVITY_ON_RESUME_MEMORY_EVENT_NAME = "IncallActivity.OnResume";
-  String INCALL_ACTIVITY_ON_STOP_MEMORY_EVENT_NAME = "IncallActivity.OnStop";
-  String OLD_CALL_LOG_JANK_EVENT_NAME = "OldCallLog.Jank";
-  String NEW_CALL_LOG_JANK_EVENT_NAME = "NewCallLog.Jank";
-
-  // Events related to refreshing the annotated call log.
-  String NEW_CALL_LOG_COALESCE = "NewCallLog.Coalesce";
-  String ANNOTATED_CALL_LOG_NOT_DIRTY = "RefreshAnnotatedCallLogReceiver.NotDirty";
-  String ANNOTATED_CALL_LOG_CHANGES_NEEDED = "RefreshAnnotatedCallLogReceiver.ChangesNeeded";
-  String ANNOTATED_LOG_NO_CHANGES_NEEDED = "RefreshAnnotatedCallLogReceiver.NoChangesNeeded";
-  String ANNOTATED_CALL_LOG_FORCE_REFRESH_CHANGES_NEEDED =
-      "RefreshAnnotatedCallLogReceiver.ForceRefreshChangesNeeded";
-  String NEW_CALL_LOG_FORCE_REFRESH_NO_CHANGES_NEEDED =
-      "RefreshAnnotatedCallLogReceiver.ForceRefreshNoChangesNeeded";
-
   String INITIAL_FILL_EVENT_NAME = "RefreshAnnotatedCallLog.Initial.Fill";
   String INITIAL_ON_SUCCESSFUL_FILL_EVENT_NAME = "RefreshAnnotatedCallLog.Initial.OnSuccessfulFill";
   String INITIAL_APPLY_MUTATIONS_EVENT_NAME = "RefreshAnnotatedCallLog.Initial.ApplyMutations";
@@ -69,41 +44,6 @@
   String LOOKUP_FOR_CALL_TEMPLATE = "%s.LookupForCall";
   String LOOKUP_FOR_NUMBER_TEMPLATE = "%s.LookupForNumber";
 
-  /** Start a timer. */
-  void startTimer(String timerEventName);
-
-  /**
-   * Starts a timer for which the name is not yet known.
-   *
-   * @return opaque identifier for the event which should be provided back to {@link
-   *     #stopUnnamedTimer(int, String)} to stop the timer. Null if the timer cannot be started, for
-   *     example because the user is locked.
-   */
-  @Nullable
-  Integer startUnnamedTimer();
-
-  /**
-   * Stop a timer which was started with {@link #startUnnamedTimer()}.
-   *
-   * @param timerId the value returned in the corresponding call to {@link #startUnnamedTimer()}
-   */
-  void stopUnnamedTimer(int timerId, String timerEventName);
-
-  /** Stop a timer. */
-  void stopTimer(String timerEventName);
-
-  /** Start a jank recorder. */
-  void startJankRecorder(String eventName);
-
-  /** Stop a jank recorder. */
-  void stopJankRecorder(String eventName);
-
-  /** Record memory. */
-  void recordMemory(String memoryEventName);
-
-  /** Record battery. */
-  void recordBattery(String batteryEventName);
-
   /** Initiazer for metrics. */
   interface Initializer {
     /** Initialize metrics for the application . */
diff --git a/java/com/android/dialer/metrics/MetricsComponent.java b/java/com/android/dialer/metrics/MetricsComponent.java
deleted file mode 100644
index c0d957b..0000000
--- a/java/com/android/dialer/metrics/MetricsComponent.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.metrics;
-
-import android.content.Context;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-
-/** Component for metrics. */
-@Subcomponent
-public abstract class MetricsComponent {
-
-  public abstract Metrics metrics();
-
-  public abstract Metrics.Initializer metricsInitializer();
-
-  public abstract FutureTimer futureTimer();
-
-  public static MetricsComponent get(Context context) {
-    return ((MetricsComponent.HasComponent)
-            ((HasRootComponent) context.getApplicationContext()).component())
-        .metricsComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  @IncludeInDialerRoot
-  public interface HasComponent {
-    MetricsComponent metricsComponent();
-  }
-}
diff --git a/java/com/android/dialer/metrics/StubMetrics.java b/java/com/android/dialer/metrics/StubMetrics.java
deleted file mode 100644
index be1cf60..0000000
--- a/java/com/android/dialer/metrics/StubMetrics.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.metrics;
-
-import android.os.SystemClock;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import javax.annotation.concurrent.ThreadSafe;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-/** Stub {@link Metrics} which simply logs debug messages to logcat. */
-@ThreadSafe
-@Singleton
-public final class StubMetrics implements Metrics {
-
-  private final ConcurrentMap<String, StubTimerEvent> namedEvents = new ConcurrentHashMap<>();
-  private final ConcurrentMap<Integer, StubTimerEvent> unnamedEvents = new ConcurrentHashMap<>();
-
-  @Inject
-  StubMetrics() {}
-
-  @Override
-  public void startTimer(String timerEventName) {
-    namedEvents.put(timerEventName, new StubTimerEvent());
-  }
-
-  @Override
-  public Integer startUnnamedTimer() {
-    StubTimerEvent stubTimerEvent = new StubTimerEvent();
-    int id = stubTimerEvent.hashCode();
-    LogUtil.d("StubMetrics.startUnnamedTimer", "started timer for id: %d", id);
-    unnamedEvents.put(id, stubTimerEvent);
-    return id;
-  }
-
-  @Override
-  public void stopTimer(String timerEventName) {
-    StubTimerEvent stubTimerEvent = namedEvents.remove(timerEventName);
-    if (stubTimerEvent == null) {
-      return;
-    }
-
-    LogUtil.d(
-        "StubMetrics.stopTimer",
-        "%s took %dms",
-        timerEventName,
-        SystemClock.elapsedRealtime() - stubTimerEvent.startTime);
-  }
-
-  @Override
-  public void stopUnnamedTimer(int timerId, String timerEventName) {
-    long startTime =
-        Assert.isNotNull(
-                unnamedEvents.remove(timerId),
-                "no timer found for id: %d (%s)",
-                timerId,
-                timerEventName)
-            .startTime;
-
-    LogUtil.d(
-        "StubMetrics.stopUnnamedTimer",
-        "%s took %dms",
-        timerEventName,
-        SystemClock.elapsedRealtime() - startTime);
-  }
-
-  @Override
-  public void startJankRecorder(String eventName) {
-    LogUtil.d("StubMetrics.startJankRecorder", "started jank recorder for %s", eventName);
-  }
-
-  @Override
-  public void stopJankRecorder(String eventName) {
-    LogUtil.d("StubMetrics.startJankRecorder", "stopped jank recorder for %s", eventName);
-  }
-
-  @Override
-  public void recordMemory(String memoryEventName) {
-    LogUtil.d("StubMetrics.startJankRecorder", "recorded memory for %s", memoryEventName);
-  }
-
-  @Override
-  public void recordBattery(String batteryEventName) {
-    LogUtil.d("StubMetrics.recordBattery", "recorded battery for %s", batteryEventName);
-  }
-
-  private static class StubTimerEvent {
-    final long startTime;
-
-    StubTimerEvent() {
-      this.startTime = SystemClock.elapsedRealtime();
-    }
-  }
-}
diff --git a/java/com/android/dialer/metrics/StubMetricsInitializer.java b/java/com/android/dialer/metrics/StubMetricsInitializer.java
deleted file mode 100644
index cea4087..0000000
--- a/java/com/android/dialer/metrics/StubMetricsInitializer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.metrics;
-
-import android.app.Application;
-import javax.inject.Inject;
-
-/** Stub for {@link Metrics.Initializer}. */
-public class StubMetricsInitializer implements Metrics.Initializer {
-
-  @Inject
-  StubMetricsInitializer() {}
-
-  @Override
-  public void initialize(Application application) {}
-}
diff --git a/java/com/android/dialer/metrics/StubMetricsModule.java b/java/com/android/dialer/metrics/StubMetricsModule.java
deleted file mode 100644
index 46b2b4d..0000000
--- a/java/com/android/dialer/metrics/StubMetricsModule.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.metrics;
-
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import dagger.Binds;
-import dagger.Module;
-
-/** Binds stub {@link Metrics}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public interface StubMetricsModule {
-
-  @Binds
-  Metrics bindMetrics(StubMetrics stub);
-
-  @Binds
-  Metrics.Initializer bindMetricsInitializer(StubMetricsInitializer stub);
-}
diff --git a/java/com/android/dialer/metrics/jank/RecyclerViewJankLogger.java b/java/com/android/dialer/metrics/jank/RecyclerViewJankLogger.java
deleted file mode 100644
index c9f3892..0000000
--- a/java/com/android/dialer/metrics/jank/RecyclerViewJankLogger.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.metrics.jank;
-
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.OnScrollListener;
-import com.android.dialer.metrics.Metrics;
-
-/** Logs jank for {@link RecyclerView} scrolling events. */
-public final class RecyclerViewJankLogger extends OnScrollListener {
-
-  private final Metrics metrics;
-  private final String eventName;
-
-  private boolean isScrolling;
-
-  public RecyclerViewJankLogger(Metrics metrics, String eventName) {
-    this.metrics = metrics;
-    this.eventName = eventName;
-  }
-
-  @Override
-  public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
-    if (!isScrolling && newState == RecyclerView.SCROLL_STATE_DRAGGING) {
-      isScrolling = true;
-      metrics.startJankRecorder(eventName);
-    } else if (isScrolling && newState == RecyclerView.SCROLL_STATE_IDLE) {
-      isScrolling = false;
-      metrics.stopJankRecorder(eventName);
-    }
-  }
-}
diff --git a/java/com/android/dialer/multimedia/MultimediaData.java b/java/com/android/dialer/multimedia/MultimediaData.java
index dee0cff..387db12 100644
--- a/java/com/android/dialer/multimedia/MultimediaData.java
+++ b/java/com/android/dialer/multimedia/MultimediaData.java
@@ -18,9 +18,11 @@
 
 import android.location.Location;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 import com.google.auto.value.AutoValue;
 
diff --git a/java/com/android/dialer/notification/AndroidManifest.xml b/java/com/android/dialer/notification/AndroidManifest.xml
deleted file mode 100644
index b89d8f8..0000000
--- a/java/com/android/dialer/notification/AndroidManifest.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.notification">
-</manifest>
diff --git a/java/com/android/dialer/notification/DialerNotificationManager.java b/java/com/android/dialer/notification/DialerNotificationManager.java
index eb730be..385f50b 100644
--- a/java/com/android/dialer/notification/DialerNotificationManager.java
+++ b/java/com/android/dialer/notification/DialerNotificationManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,13 +21,15 @@
 import android.app.NotificationManager;
 import android.content.Context;
 import android.service.notification.StatusBarNotification;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.os.BuildCompat;
 import android.text.TextUtils;
 import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+
 import java.util.HashSet;
 import java.util.Set;
 
@@ -49,10 +52,7 @@
     Assert.isNotNull(context);
     Assert.isNotNull(notification);
     Assert.checkArgument(!TextUtils.isEmpty(tag));
-
-    if (BuildCompat.isAtLeastO()) {
-      Assert.checkArgument(!TextUtils.isEmpty(notification.getChannelId()));
-    }
+    Assert.checkArgument(!TextUtils.isEmpty(notification.getChannelId()));
 
     getNotificationManager(context).notify(tag, id, notification);
     throttledNotificationSet.addAll(NotificationThrottler.throttle(context, notification));
diff --git a/java/com/android/dialer/notification/NotificationChannelId.java b/java/com/android/dialer/notification/NotificationChannelId.java
index 4ab3d44..5aaf24d 100644
--- a/java/com/android/dialer/notification/NotificationChannelId.java
+++ b/java/com/android/dialer/notification/NotificationChannelId.java
@@ -16,7 +16,8 @@
 
 package com.android.dialer.notification;
 
-import android.support.annotation.StringDef;
+import androidx.annotation.StringDef;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
diff --git a/java/com/android/dialer/notification/NotificationChannelManager.java b/java/com/android/dialer/notification/NotificationChannelManager.java
index 790aac3..ba51125 100644
--- a/java/com/android/dialer/notification/NotificationChannelManager.java
+++ b/java/com/android/dialer/notification/NotificationChannelManager.java
@@ -16,23 +16,23 @@
 
 package com.android.dialer.notification;
 
-import android.annotation.TargetApi;
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
 import android.content.Context;
 import android.media.AudioAttributes;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.os.BuildCompat;
 import android.telecom.PhoneAccountHandle;
 import android.util.ArraySet;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+
 import java.util.Set;
 
 /** Creates all notification channels for Dialer. */
-@TargetApi(VERSION_CODES.O)
 public final class NotificationChannelManager {
 
   /**
@@ -51,7 +51,6 @@
    *       <ul>
    */
   public static void initChannels(@NonNull Context context) {
-    Assert.checkArgument(BuildCompat.isAtLeastO());
     Assert.isNotNull(context);
 
     NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
@@ -89,8 +88,7 @@
 
   @NonNull
   public static String getVoicemailChannelId(
-      @NonNull Context context, @Nullable PhoneAccountHandle handle) {
-    Assert.checkArgument(BuildCompat.isAtLeastO());
+          @NonNull Context context, @Nullable PhoneAccountHandle handle) {
     Assert.isNotNull(context);
     return VoicemailChannelUtils.getChannelId(context, handle);
   }
@@ -119,7 +117,7 @@
         new NotificationChannel(
             NotificationChannelId.INCOMING_CALL,
             context.getText(R.string.notification_channel_incoming_call),
-            NotificationManager.IMPORTANCE_MAX);
+            NotificationManager.IMPORTANCE_HIGH);
     channel.setShowBadge(false);
     channel.enableLights(true);
     channel.enableVibration(false);
diff --git a/java/com/android/dialer/notification/NotificationManagerUtils.java b/java/com/android/dialer/notification/NotificationManagerUtils.java
index d99a903..3b2d6b3 100644
--- a/java/com/android/dialer/notification/NotificationManagerUtils.java
+++ b/java/com/android/dialer/notification/NotificationManagerUtils.java
@@ -19,8 +19,10 @@
 import android.app.NotificationManager;
 import android.content.Context;
 import android.service.notification.StatusBarNotification;
-import android.support.annotation.NonNull;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 
 /** Utilities to manage notifications. */
diff --git a/java/com/android/dialer/notification/NotificationThrottler.java b/java/com/android/dialer/notification/NotificationThrottler.java
index 1f60920..aadc602 100644
--- a/java/com/android/dialer/notification/NotificationThrottler.java
+++ b/java/com/android/dialer/notification/NotificationThrottler.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,14 +21,14 @@
 import android.app.NotificationManager;
 import android.content.Context;
 import android.service.notification.StatusBarNotification;
-import android.support.annotation.NonNull;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
+
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
@@ -77,8 +78,6 @@
           "app has %d notifications, system may suppress future notifications",
           activeNotifications.length);
       didLogHighGlobalNotificationCountReached = true;
-      Logger.get(context)
-          .logImpression(DialerImpression.Type.HIGH_GLOBAL_NOTIFICATION_COUNT_REACHED);
     }
 
     // Count the number of notificatons for this group (excluding the summary).
@@ -114,14 +113,7 @@
         notifications.add(notification);
       }
     }
-    Collections.sort(
-        notifications,
-        new Comparator<StatusBarNotification>() {
-          @Override
-          public int compare(StatusBarNotification left, StatusBarNotification right) {
-            return Long.compare(left.getPostTime(), right.getPostTime());
-          }
-        });
+    notifications.sort(Comparator.comparingLong(StatusBarNotification::getPostTime));
     return notifications;
   }
 
diff --git a/java/com/android/dialer/notification/VoicemailChannelUtils.java b/java/com/android/dialer/notification/VoicemailChannelUtils.java
index ddc0f77..1b77a49 100644
--- a/java/com/android/dialer/notification/VoicemailChannelUtils.java
+++ b/java/com/android/dialer/notification/VoicemailChannelUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,42 +18,38 @@
 package com.android.dialer.notification;
 
 import android.Manifest.permission;
-import android.annotation.TargetApi;
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
 import android.content.Context;
 import android.media.AudioAttributes;
-import android.os.Build.VERSION_CODES;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresPermission;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.os.BuildCompat;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.ArraySet;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresPermission;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.util.PermissionsUtil;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
 /** Utilities for working with voicemail channels. */
-@TargetApi(VERSION_CODES.O)
 /* package */ final class VoicemailChannelUtils {
-  @VisibleForTesting static final String GLOBAL_VOICEMAIL_CHANNEL_ID = "phone_voicemail";
+  private static final String GLOBAL_VOICEMAIL_CHANNEL_ID = "phone_voicemail";
   private static final String PER_ACCOUNT_VOICEMAIL_CHANNEL_ID_PREFIX = "phone_voicemail_account_";
 
   @SuppressWarnings("MissingPermission") // isSingleSimDevice() returns true if no permission
   static Set<String> getAllChannelIds(@NonNull Context context) {
-    Assert.checkArgument(BuildCompat.isAtLeastO());
-    Assert.isNotNull(context);
-
     Set<String> result = new ArraySet<>();
     if (isSingleSimDevice(context)) {
       result.add(GLOBAL_VOICEMAIL_CHANNEL_ID);
@@ -66,9 +63,6 @@
 
   @SuppressWarnings("MissingPermission") // isSingleSimDevice() returns true if no permission
   static void createAllChannels(@NonNull Context context) {
-    Assert.checkArgument(BuildCompat.isAtLeastO());
-    Assert.isNotNull(context);
-
     if (isSingleSimDevice(context)) {
       createGlobalVoicemailChannel(context);
     } else {
@@ -80,9 +74,6 @@
 
   @NonNull
   static String getChannelId(@NonNull Context context, @Nullable PhoneAccountHandle handle) {
-    Assert.checkArgument(BuildCompat.isAtLeastO());
-    Assert.isNotNull(context);
-
     // Most devices we deal with have a single SIM slot. No need to distinguish between phone
     // accounts.
     if (isSingleSimDevice(context)) {
@@ -236,7 +227,7 @@
     if (!PermissionsUtil.hasReadPhoneStatePermissions(context)) {
       return true;
     }
-    return context.getSystemService(TelephonyManager.class).getPhoneCount() <= 1;
+    return context.getSystemService(TelephonyManager.class).getActiveModemCount() <= 1;
   }
 
   private VoicemailChannelUtils() {}
diff --git a/java/com/android/dialer/notification/missedcalls/MissedCallNotificationCanceller.java b/java/com/android/dialer/notification/missedcalls/MissedCallNotificationCanceller.java
index 8798c21..0a134e0 100644
--- a/java/com/android/dialer/notification/missedcalls/MissedCallNotificationCanceller.java
+++ b/java/com/android/dialer/notification/missedcalls/MissedCallNotificationCanceller.java
@@ -17,8 +17,10 @@
 
 import android.content.Context;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.notification.DialerNotificationManager;
 import com.android.dialer.notification.NotificationManagerUtils;
diff --git a/java/com/android/dialer/notification/missedcalls/MissedCallNotificationTags.java b/java/com/android/dialer/notification/missedcalls/MissedCallNotificationTags.java
index 64f28ee..ab2f785 100644
--- a/java/com/android/dialer/notification/missedcalls/MissedCallNotificationTags.java
+++ b/java/com/android/dialer/notification/missedcalls/MissedCallNotificationTags.java
@@ -17,7 +17,8 @@
 package com.android.dialer.notification.missedcalls;
 
 import android.net.Uri;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
 
 /** Static methods related to missed call notification tags. */
 public final class MissedCallNotificationTags {
diff --git a/java/com/android/dialer/oem/AndroidManifest.xml b/java/com/android/dialer/oem/AndroidManifest.xml
deleted file mode 100644
index 94cd4fc..0000000
--- a/java/com/android/dialer/oem/AndroidManifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.oem">
-  <!-- This is used for querying Cequint caller id. -->
-  <uses-permission android:name="com.cequint.ecid.CALLER_ID_LOOKUP"/>
-
-  <!-- This is used by MotorolaInCallUiNotifier to send broadcasts. -->
-  <uses-permission android:name="com.motorola.incallui.permission.INCOMING_CALL_VISIBILITY_CHANGED"/>
-</manifest>
diff --git a/java/com/android/dialer/oem/CequintCallerIdManager.java b/java/com/android/dialer/oem/CequintCallerIdManager.java
index da217c8..69cc84a 100644
--- a/java/com/android/dialer/oem/CequintCallerIdManager.java
+++ b/java/com/android/dialer/oem/CequintCallerIdManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,17 +20,19 @@
 import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.net.Uri;
-import android.support.annotation.AnyThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
+
+import androidx.annotation.AnyThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.google.auto.value.AutoValue;
+
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
@@ -43,9 +46,6 @@
  */
 public class CequintCallerIdManager {
 
-  @VisibleForTesting
-  public static final String CONFIG_CALLER_ID_ENABLED = "config_caller_id_enabled";
-
   private static final int CALLER_ID_LOOKUP_USER_PROVIDED_CID = 0x0001;
   private static final int CALLER_ID_LOOKUP_SYSTEM_PROVIDED_CID = 0x0002;
   private static final int CALLER_ID_LOOKUP_INCOMING_CALL = 0x0020;
@@ -53,8 +53,7 @@
   private static final String[] EMPTY_PROJECTION = new String[] {};
 
   /** Column names in Cequint content provider. */
-  @VisibleForTesting
-  public static final class CequintColumnNames {
+  private static final class CequintColumnNames {
     public static final String CITY_NAME = "cid_pCityName";
     public static final String STATE_NAME = "cid_pStateName";
     public static final String STATE_ABBR = "cid_pStateAbbr";
@@ -110,11 +109,6 @@
   /** Check whether Cequint Caller ID provider package is available and enabled. */
   @AnyThread
   public static synchronized boolean isCequintCallerIdEnabled(@NonNull Context context) {
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(CONFIG_CALLER_ID_ENABLED, true)) {
-      return false;
-    }
     if (!hasAlreadyCheckedCequintCallerIdPackage) {
       hasAlreadyCheckedCequintCallerIdPackage = true;
 
diff --git a/java/com/android/dialer/oem/CequintPackageUtils.java b/java/com/android/dialer/oem/CequintPackageUtils.java
index 6a64e68..70e16aa 100644
--- a/java/com/android/dialer/oem/CequintPackageUtils.java
+++ b/java/com/android/dialer/oem/CequintPackageUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,8 +21,11 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ProviderInfo;
 import android.content.pm.Signature;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
+
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchProviderException;
@@ -232,14 +236,15 @@
 
   @SuppressLint("PackageManagerGetSignatures")
   static boolean isCallerIdInstalled(
-      @Nullable PackageManager packageManager, @Nullable String authority) {
+          @Nullable PackageManager packageManager, @Nullable String authority) {
     if (packageManager == null) {
       LogUtil.i("CequintPackageUtils.isCallerIdInstalled", "failed to get PackageManager!");
       return false;
     }
 
     ProviderInfo providerInfo =
-        packageManager.resolveContentProvider(authority, PackageManager.GET_META_DATA);
+        packageManager.resolveContentProvider(authority,
+                PackageManager.ComponentInfoFlags.of(PackageManager.GET_META_DATA));
     if (providerInfo == null) {
       LogUtil.d(
           "CequintPackageUtils.isCallerIdInstalled",
@@ -260,9 +265,10 @@
 
     try {
       PackageInfo packageInfo =
-          packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
+          packageManager.getPackageInfo(packageName,
+                  PackageManager.PackageInfoFlags.of(PackageManager.GET_SIGNING_CERTIFICATES));
 
-      Signature[] signatures = packageInfo.signatures;
+      Signature[] signatures = packageInfo.signingInfo.getSigningCertificateHistory();
       if (signatures.length > 1) {
         LogUtil.w(
             "CequintPackageUtils.isCallerIdInstalled", "package has more than one signature.");
diff --git a/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java b/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java
index 74ad1b8..595b3fd 100644
--- a/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java
+++ b/java/com/android/dialer/oem/MotorolaHiddenMenuKeySequence.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * This file is derived in part from code issued under the following license.
  *
@@ -21,9 +22,11 @@
 import android.content.ActivityNotFoundException;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
-import android.support.annotation.VisibleForTesting;
+
 import com.android.dialer.common.LogUtil;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -37,11 +40,11 @@
 
   private static MotorolaHiddenMenuKeySequence instance = null;
 
-  @VisibleForTesting final List<String> hiddenKeySequences = new ArrayList<>();
-  @VisibleForTesting final List<String> hiddenKeySequenceIntents = new ArrayList<>();
-  @VisibleForTesting final List<String> hiddenKeyPatterns = new ArrayList<>();
-  @VisibleForTesting final List<String> hiddenKeyPatternIntents = new ArrayList<>();
-  @VisibleForTesting boolean featureHiddenMenuEnabled = false;
+  private final List<String> hiddenKeySequences = new ArrayList<>();
+  private final List<String> hiddenKeySequenceIntents = new ArrayList<>();
+  private final List<String> hiddenKeyPatterns = new ArrayList<>();
+  private final List<String> hiddenKeyPatternIntents = new ArrayList<>();
+  private boolean featureHiddenMenuEnabled = false;
 
   /**
    * Handle input char sequence.
@@ -70,13 +73,7 @@
     return instance;
   }
 
-  @VisibleForTesting
-  static void setInstanceForTest(MotorolaHiddenMenuKeySequence instance) {
-    MotorolaHiddenMenuKeySequence.instance = instance;
-  }
-
-  @VisibleForTesting
-  MotorolaHiddenMenuKeySequence(
+  private MotorolaHiddenMenuKeySequence(
       Context context, SystemPropertiesAccessor systemPropertiesAccessor) {
     if (MotorolaUtils.isSupportingHiddenMenu(context)) {
       Collections.addAll(
@@ -164,7 +161,8 @@
       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
       intent.putExtra(EXTRA_HIDDEN_MENU_CODE, input);
 
-      ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(intent, 0);
+      ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(intent,
+              PackageManager.ResolveInfoFlags.of(0));
 
       if (resolveInfo != null
           && resolveInfo.activityInfo != null
diff --git a/java/com/android/dialer/oem/MotorolaUtils.java b/java/com/android/dialer/oem/MotorolaUtils.java
index 0268937..fb15d67 100644
--- a/java/com/android/dialer/oem/MotorolaUtils.java
+++ b/java/com/android/dialer/oem/MotorolaUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,38 +19,26 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.provider.CallLog.Calls;
-import android.support.annotation.VisibleForTesting;
 import android.telephony.TelephonyManager;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.PackageUtils;
-import com.android.dialer.configprovider.ConfigProviderComponent;
+
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 /** Util class for Motorola OEM devices. */
 public class MotorolaUtils {
 
-  private static final String CONFIG_HD_CODEC_BLINKING_ICON_WHEN_CONNECTING_CALL_ENABLED =
-      "hd_codec_blinking_icon_when_connecting_enabled";
-  private static final String CONFIG_HD_CODEC_SHOW_ICON_IN_NOTIFICATION_ENABLED =
-      "hd_codec_show_icon_in_notification_enabled";
-  private static final String CONFIG_WIFI_CALL_SHOW_ICON_IN_CALL_LOG_ENABLED =
-      "wifi_call_show_icon_in_call_log_enabled";
-
-  @VisibleForTesting
-  static final String CONFIG_DISABLE_PHONE_NUMBER_FORMATTING = "disable_phone_number_formatting";
-
   // This is used to check if a Motorola device supports HD voice call feature, which comes from
   // system feature setting.
-  private static final String HD_CALL_FEATRURE = "com.motorola.software.sprint.hd_call";
+  private static final String HD_CALL_FEATURE = "com.motorola.software.sprint.hd_call";
   // This is used to check if a Motorola device supports WiFi call feature, by checking if a certain
   // package is enabled.
-  @VisibleForTesting public static final String WIFI_CALL_PACKAGE_NAME = "com.motorola.sprintwfc";
+  private static final String WIFI_CALL_PACKAGE_NAME = "com.motorola.sprintwfc";
   // Thi is used to check if a Motorola device supports hidden menu feature.
-  @VisibleForTesting
-  static final String HIDDEN_MENU_FEATURE = "com.motorola.software.sprint.hidden_menu";
+  private static final String HIDDEN_MENU_FEATURE = "com.motorola.software.sprint.hidden_menu";
 
-  private static Boolean disablePhoneNumberFormattingForTest = null;
   private static boolean hasCheckedSprintWifiCall;
   private static boolean supportSprintWifiCall;
 
@@ -79,36 +68,16 @@
   }
 
   public static boolean shouldBlinkHdIconWhenConnectingCall(Context context) {
-    return ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(CONFIG_HD_CODEC_BLINKING_ICON_WHEN_CONNECTING_CALL_ENABLED, true)
-        && isSupportingSprintHdCodec(context);
-  }
-
-  public static boolean shouldShowHdIconInNotification(Context context) {
-    return ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(CONFIG_HD_CODEC_SHOW_ICON_IN_NOTIFICATION_ENABLED, true)
-        && isSupportingSprintHdCodec(context);
+    return isSupportingSprintHdCodec(context);
   }
 
   public static boolean shouldShowWifiIconInCallLog(Context context, int features) {
-    return ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(CONFIG_WIFI_CALL_SHOW_ICON_IN_CALL_LOG_ENABLED, true)
-        && (features & Calls.FEATURES_WIFI) == Calls.FEATURES_WIFI
+    return (features & Calls.FEATURES_WIFI) == Calls.FEATURES_WIFI
         && isSupportingSprintWifiCall(context);
   }
 
   public static boolean shouldDisablePhoneNumberFormatting(Context context) {
-    if (disablePhoneNumberFormattingForTest != null) {
-      return disablePhoneNumberFormattingForTest;
-    }
-
-    return ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(CONFIG_DISABLE_PHONE_NUMBER_FORMATTING, true)
-        && context.getResources().getBoolean(R.bool.motorola_disable_phone_number_formatting);
+    return context.getResources().getBoolean(R.bool.motorola_disable_phone_number_formatting);
   }
 
   /**
@@ -142,7 +111,7 @@
   private static boolean isSupportingSprintHdCodec(Context context) {
     return isSpnMatched(context)
         && context.getResources().getBoolean(R.bool.motorola_sprint_hd_codec)
-        && context.getPackageManager().hasSystemFeature(HD_CALL_FEATRURE);
+        && context.getPackageManager().hasSystemFeature(HD_CALL_FEATURE);
   }
 
   private static boolean isSupportingSprintWifiCall(Context context) {
@@ -152,15 +121,4 @@
     }
     return supportSprintWifiCall;
   }
-
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public static void setDisablePhoneNumberFormattingForTest(boolean disablePhoneNumberFormatting) {
-    disablePhoneNumberFormattingForTest = disablePhoneNumberFormatting;
-  }
-
-  @VisibleForTesting
-  public static void resetForTest() {
-    hasCheckedSprintWifiCall = false;
-    supportSprintWifiCall = false;
-  }
 }
diff --git a/java/com/android/dialer/oem/PhoneNumberUtilsAccessor.java b/java/com/android/dialer/oem/PhoneNumberUtilsAccessor.java
index 178a7b2..abbc764 100644
--- a/java/com/android/dialer/oem/PhoneNumberUtilsAccessor.java
+++ b/java/com/android/dialer/oem/PhoneNumberUtilsAccessor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.content.Context;
 import android.telephony.PhoneNumberUtils;
+
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
diff --git a/java/com/android/dialer/oem/SystemPropertiesAccessor.java b/java/com/android/dialer/oem/SystemPropertiesAccessor.java
index 122bbfe..4605bf2 100644
--- a/java/com/android/dialer/oem/SystemPropertiesAccessor.java
+++ b/java/com/android/dialer/oem/SystemPropertiesAccessor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,10 @@
 
 package com.android.dialer.oem;
 
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
+
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
diff --git a/java/com/android/dialer/oem/TranssionUtils.java b/java/com/android/dialer/oem/TranssionUtils.java
index a0d3f2d..de8df20 100644
--- a/java/com/android/dialer/oem/TranssionUtils.java
+++ b/java/com/android/dialer/oem/TranssionUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@
 
 import android.content.Context;
 import android.os.Build;
-import android.support.annotation.VisibleForTesting;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
 import com.google.common.collect.ImmutableSet;
@@ -26,12 +27,10 @@
 /** Utilities for Transsion devices. */
 public final class TranssionUtils {
 
-  @VisibleForTesting
-  public static final ImmutableSet<String> TRANSSION_DEVICE_MANUFACTURERS =
+  private static final ImmutableSet<String> TRANSSION_DEVICE_MANUFACTURERS =
       ImmutableSet.of("INFINIX MOBILITY LIMITED", "itel", "TECNO");
 
-  @VisibleForTesting
-  public static final ImmutableSet<String> TRANSSION_SECRET_CODES =
+  private static final ImmutableSet<String> TRANSSION_SECRET_CODES =
       ImmutableSet.of("*#07#", "*#87#", "*#43#", "*#2727#", "*#88#");
 
   private TranssionUtils() {}
diff --git a/java/com/android/dialer/performancereport/PerformanceReport.java b/java/com/android/dialer/performancereport/PerformanceReport.java
deleted file mode 100644
index 4359c01..0000000
--- a/java/com/android/dialer/performancereport/PerformanceReport.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.performancereport;
-
-import android.os.SystemClock;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView;
-import android.widget.AbsListView;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.UiAction;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-/** Tracks UI performance for a call. */
-public final class PerformanceReport {
-
-  private static final long INVALID_TIME = -1;
-  private static final long ACTIVE_DURATION = TimeUnit.MINUTES.toMillis(5);
-
-  private static final List<UiAction.Type> actions = new ArrayList<>();
-  private static final List<Long> actionTimestamps = new ArrayList<>();
-
-  private static final RecyclerView.OnScrollListener recordOnScrollListener =
-      new RecyclerView.OnScrollListener() {
-        @Override
-        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
-          if (newState == RecyclerView.SCROLL_STATE_SETTLING) {
-            PerformanceReport.recordClick(UiAction.Type.SCROLL);
-          }
-          super.onScrollStateChanged(recyclerView, newState);
-        }
-      };
-
-  private static boolean recording = false;
-  private static long appLaunchTimeMillis = INVALID_TIME;
-  private static long firstClickTimeMillis = INVALID_TIME;
-  private static long lastActionTimeMillis = INVALID_TIME;
-
-  @Nullable private static UiAction.Type ignoreActionOnce = null;
-
-  private static int startingTabIndex = -1; // UNKNOWN
-
-  private PerformanceReport() {}
-
-  public static void startRecording() {
-    LogUtil.enterBlock("PerformanceReport.startRecording");
-
-    appLaunchTimeMillis = SystemClock.elapsedRealtime();
-    lastActionTimeMillis = appLaunchTimeMillis;
-    if (!actions.isEmpty()) {
-      actions.clear();
-      actionTimestamps.clear();
-    }
-    recording = true;
-  }
-
-  public static void stopRecording() {
-    LogUtil.enterBlock("PerformanceReport.stopRecording");
-    recording = false;
-  }
-
-  public static void recordClick(UiAction.Type action) {
-    if (!recording) {
-      return;
-    }
-
-    if (action == ignoreActionOnce) {
-      LogUtil.i("PerformanceReport.recordClick", "%s is ignored", action.toString());
-      ignoreActionOnce = null;
-      return;
-    }
-    ignoreActionOnce = null;
-
-    LogUtil.v("PerformanceReport.recordClick", action.toString());
-
-    // Timeout
-    long currentTime = SystemClock.elapsedRealtime();
-    if (currentTime - lastActionTimeMillis > ACTIVE_DURATION) {
-      startRecording();
-      recordClick(action);
-      return;
-    }
-
-    lastActionTimeMillis = currentTime;
-    if (actions.isEmpty()) {
-      firstClickTimeMillis = currentTime;
-    }
-    actions.add(action);
-    actionTimestamps.add(currentTime - appLaunchTimeMillis);
-  }
-
-  public static void recordScrollStateChange(int scrollState) {
-    if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
-      recordClick(UiAction.Type.SCROLL);
-    }
-  }
-
-  public static void logOnScrollStateChange(RecyclerView recyclerView) {
-    // Remove the listener in case it was added before
-    recyclerView.removeOnScrollListener(recordOnScrollListener);
-    recyclerView.addOnScrollListener(recordOnScrollListener);
-  }
-
-  public static boolean isRecording() {
-    return recording;
-  }
-
-  public static long getTimeSinceAppLaunch() {
-    if (appLaunchTimeMillis == INVALID_TIME) {
-      return INVALID_TIME;
-    }
-    return SystemClock.elapsedRealtime() - appLaunchTimeMillis;
-  }
-
-  public static long getTimeSinceFirstClick() {
-    if (firstClickTimeMillis == INVALID_TIME) {
-      return INVALID_TIME;
-    }
-    return SystemClock.elapsedRealtime() - firstClickTimeMillis;
-  }
-
-  public static List<UiAction.Type> getActions() {
-    return actions;
-  }
-
-  public static List<Long> getActionTimestamps() {
-    return actionTimestamps;
-  }
-
-  public static int getStartingTabIndex() {
-    return startingTabIndex;
-  }
-
-  public static void setStartingTabIndex(int startingTabIndex) {
-    PerformanceReport.startingTabIndex = startingTabIndex;
-  }
-
-  public static void setIgnoreActionOnce(@Nullable UiAction.Type ignoreActionOnce) {
-    PerformanceReport.ignoreActionOnce = ignoreActionOnce;
-    LogUtil.i(
-        "PerformanceReport.setIgnoreActionOnce",
-        "next action will be ignored once if it is %s",
-        ignoreActionOnce.toString());
-  }
-}
diff --git a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
deleted file mode 100644
index 5f39222..0000000
--- a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.persistentlog;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
-import android.support.annotation.AnyThread;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
-import android.support.v4.os.UserManagerCompat;
-import com.android.dialer.common.LogUtil;
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Handles serialization of byte arrays and read/write them to multiple rotating files. If a logText
- * file exceeds {@code fileSizeLimit} after a write, a new file will be used. if the total number of
- * files exceeds {@code fileCountLimit} the oldest ones will be deleted. The logs are stored in the
- * cache but the file index is stored in the data (clearing data will also clear the cache). The
- * logs will be stored under /cache_dir/persistent_log/{@code subfolder}, so multiple independent
- * logs can be created.
- *
- * <p>This class is NOT thread safe. All methods expect the constructor must be called on the same
- * worker thread.
- */
-final class PersistentLogFileHandler {
-
-  private static final String LOG_DIRECTORY = "persistent_log";
-  private static final String NEXT_FILE_INDEX_PREFIX = "persistent_long_next_file_index_";
-
-  private static final byte[] ENTRY_PREFIX = {'P'};
-  private static final byte[] ENTRY_POSTFIX = {'L'};
-
-  private static class LogCorruptionException extends Exception {
-
-    public LogCorruptionException(String message) {
-      super(message);
-    }
-  }
-
-  private File logDirectory;
-  private final String subfolder;
-  private final int fileSizeLimit;
-  private final int fileCountLimit;
-
-  private SharedPreferences sharedPreferences;
-
-  private File outputFile;
-  private Context context;
-
-  @MainThread
-  PersistentLogFileHandler(String subfolder, int fileSizeLimit, int fileCountLimit) {
-    this.subfolder = subfolder;
-    this.fileSizeLimit = fileSizeLimit;
-    this.fileCountLimit = fileCountLimit;
-  }
-
-  /** Must be called right after the logger thread is created. */
-  @WorkerThread
-  void initialize(Context context) {
-    this.context = context;
-    logDirectory = new File(new File(context.getCacheDir(), LOG_DIRECTORY), subfolder);
-    initializeSharedPreference(context);
-  }
-
-  @WorkerThread
-  private boolean initializeSharedPreference(Context context) {
-    if (sharedPreferences == null && UserManagerCompat.isUserUnlocked(context)) {
-      sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
-      return true;
-    }
-    return sharedPreferences != null;
-  }
-
-  /**
-   * Write the list of byte arrays to the current log file, prefixing each entry with its' length. A
-   * new file will only be selected when the batch is completed, so the resulting file might be
-   * larger then {@code fileSizeLimit}
-   */
-  @WorkerThread
-  void writeLogs(List<byte[]> logs) throws IOException {
-    if (outputFile == null) {
-      selectNextFileToWrite();
-    }
-    outputFile.createNewFile();
-    try (DataOutputStream outputStream =
-        new DataOutputStream(new FileOutputStream(outputFile, true))) {
-      for (byte[] log : logs) {
-        outputStream.write(ENTRY_PREFIX);
-        outputStream.writeInt(log.length);
-        outputStream.write(log);
-        outputStream.write(ENTRY_POSTFIX);
-      }
-      outputStream.close();
-      if (outputFile.length() > fileSizeLimit) {
-        selectNextFileToWrite();
-      }
-    }
-  }
-
-  void writeRawLogsForTest(byte[] data) throws IOException {
-    if (outputFile == null) {
-      selectNextFileToWrite();
-    }
-    outputFile.createNewFile();
-    try (DataOutputStream outputStream =
-        new DataOutputStream(new FileOutputStream(outputFile, true))) {
-      outputStream.write(data);
-      outputStream.close();
-      if (outputFile.length() > fileSizeLimit) {
-        selectNextFileToWrite();
-      }
-    }
-  }
-
-  /** Concatenate all log files in chronicle order and return a byte array. */
-  @WorkerThread
-  @NonNull
-  private byte[] readBlob() throws IOException {
-    File[] files = getLogFiles();
-
-    ByteBuffer byteBuffer = ByteBuffer.allocate(getTotalSize(files));
-    for (File file : files) {
-      byteBuffer.put(readAllBytes(file));
-    }
-    return byteBuffer.array();
-  }
-
-  private static int getTotalSize(File[] files) {
-    int sum = 0;
-    for (File file : files) {
-      sum += (int) file.length();
-    }
-    return sum;
-  }
-
-  /** Parses the content of all files back to individual byte arrays. */
-  @WorkerThread
-  @NonNull
-  List<byte[]> getLogs() throws IOException {
-    byte[] blob = readBlob();
-    List<byte[]> logs = new ArrayList<>();
-    try (DataInputStream input = new DataInputStream(new ByteArrayInputStream(blob))) {
-      byte[] log = readLog(input);
-      while (log != null) {
-        logs.add(log);
-        log = readLog(input);
-      }
-    } catch (LogCorruptionException e) {
-      LogUtil.e("PersistentLogFileHandler.getLogs", "logs corrupted, deleting", e);
-      deleteLogs();
-      return new ArrayList<>();
-    }
-    return logs;
-  }
-
-  private void deleteLogs() throws IOException {
-    for (File file : getLogFiles()) {
-      file.delete();
-    }
-    selectNextFileToWrite();
-  }
-
-  @WorkerThread
-  private void selectNextFileToWrite() throws IOException {
-    File[] files = getLogFiles();
-
-    if (files.length == 0 || files[files.length - 1].length() > fileSizeLimit) {
-      if (files.length >= fileCountLimit) {
-        for (int i = 0; i <= files.length - fileCountLimit; i++) {
-          files[i].delete();
-        }
-      }
-      outputFile = new File(logDirectory, String.valueOf(getAndIncrementNextFileIndex()));
-    } else {
-      outputFile = files[files.length - 1];
-    }
-  }
-
-  @NonNull
-  @WorkerThread
-  private File[] getLogFiles() {
-    logDirectory.mkdirs();
-    File[] files = logDirectory.listFiles();
-    if (files == null) {
-      files = new File[0];
-    }
-    Arrays.sort(
-        files,
-        (File lhs, File rhs) ->
-            Long.compare(Long.valueOf(lhs.getName()), Long.valueOf(rhs.getName())));
-    return files;
-  }
-
-  @Nullable
-  @WorkerThread
-  private byte[] readLog(DataInputStream inputStream) throws IOException, LogCorruptionException {
-    try {
-      byte[] prefix = new byte[ENTRY_PREFIX.length];
-      if (inputStream.read(prefix) == -1) {
-        // EOF
-        return null;
-      }
-      if (!Arrays.equals(prefix, ENTRY_PREFIX)) {
-        throw new LogCorruptionException("entry prefix mismatch");
-      }
-      int dataLength = inputStream.readInt();
-      if (dataLength > fileSizeLimit) {
-        throw new LogCorruptionException("data length over max size");
-      }
-      byte[] data = new byte[dataLength];
-      inputStream.read(data);
-
-      byte[] postfix = new byte[ENTRY_POSTFIX.length];
-      inputStream.read(postfix);
-      if (!Arrays.equals(postfix, ENTRY_POSTFIX)) {
-        throw new LogCorruptionException("entry postfix mismatch");
-      }
-      return data;
-    } catch (EOFException e) {
-      return null;
-    }
-  }
-
-  @NonNull
-  @WorkerThread
-  private static byte[] readAllBytes(File file) throws IOException {
-    byte[] result = new byte[(int) file.length()];
-    try (RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r")) {
-      randomAccessFile.readFully(result);
-    }
-    return result;
-  }
-
-  @WorkerThread
-  private int getAndIncrementNextFileIndex() throws IOException {
-    if (!initializeSharedPreference(context)) {
-      throw new IOException("Shared preference is not available");
-    }
-
-    int index = sharedPreferences.getInt(getNextFileKey(), 0);
-    sharedPreferences.edit().putInt(getNextFileKey(), index + 1).commit();
-    return index;
-  }
-
-  @AnyThread
-  private String getNextFileKey() {
-    return NEXT_FILE_INDEX_PREFIX + subfolder;
-  }
-}
diff --git a/java/com/android/dialer/persistentlog/PersistentLogger.java b/java/com/android/dialer/persistentlog/PersistentLogger.java
deleted file mode 100644
index 608602e..0000000
--- a/java/com/android/dialer/persistentlog/PersistentLogger.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.persistentlog;
-
-import android.content.Context;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.support.annotation.AnyThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
-import android.support.v4.os.UserManagerCompat;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.strictmode.StrictModeUtils;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.LinkedBlockingQueue;
-
-/**
- * Logs data that is persisted across app termination and device reboot. The logs are stored as
- * rolling files in cache with a limit of {@link #LOG_FILE_SIZE_LIMIT} * {@link
- * #LOG_FILE_COUNT_LIMIT}. The log writing is batched and there is a {@link #FLUSH_DELAY_MILLIS}
- * delay before the logs are committed to disk to avoid excessive IO. If the app is terminated
- * before the logs are committed it will be lost. {@link
- * com.google.android.apps.dialer.crashreporter.SilentCrashReporter} is expected to handle such
- * cases.
- *
- * <p>{@link #logText(String, String)} should be used to log ad-hoc text logs. TODO(twyen): switch
- * to structured logging
- */
-public final class PersistentLogger {
-
-  private static final int FLUSH_DELAY_MILLIS = 200;
-  private static final String LOG_FOLDER = "plain_text";
-  private static final int MESSAGE_FLUSH = 1;
-
-  @VisibleForTesting static final int LOG_FILE_SIZE_LIMIT = 64 * 1024;
-  @VisibleForTesting static final int LOG_FILE_COUNT_LIMIT = 8;
-
-  private static PersistentLogFileHandler fileHandler;
-
-  private static HandlerThread loggerThread;
-  private static Handler loggerThreadHandler;
-
-  private static final LinkedBlockingQueue<byte[]> messageQueue = new LinkedBlockingQueue<>();
-
-  private PersistentLogger() {}
-
-  public static void initialize(Context context) {
-    fileHandler =
-        new PersistentLogFileHandler(LOG_FOLDER, LOG_FILE_SIZE_LIMIT, LOG_FILE_COUNT_LIMIT);
-    loggerThread = new HandlerThread("PersistentLogger");
-    loggerThread.start();
-    loggerThreadHandler =
-        new Handler(
-            loggerThread.getLooper(),
-            (message) -> {
-              if (message.what == MESSAGE_FLUSH) {
-                if (messageQueue.isEmpty()) {
-                  return true;
-                }
-                loggerThreadHandler.removeMessages(MESSAGE_FLUSH);
-                List<byte[]> messages = new ArrayList<>();
-                messageQueue.drainTo(messages);
-                if (!UserManagerCompat.isUserUnlocked(context)) {
-                  return true;
-                }
-                try {
-                  fileHandler.writeLogs(messages);
-                } catch (IOException e) {
-                  LogUtil.e("PersistentLogger.MESSAGE_FLUSH", "error writing message", e);
-                }
-              }
-              return true;
-            });
-    loggerThreadHandler.post(() -> fileHandler.initialize(context));
-  }
-
-  static HandlerThread getLoggerThread() {
-    return loggerThread;
-  }
-
-  @AnyThread
-  public static void logText(String tag, String string) {
-    log(buildTextLog(tag, string));
-  }
-
-  @VisibleForTesting
-  @AnyThread
-  static void log(byte[] data) {
-    messageQueue.add(data);
-    loggerThreadHandler.sendEmptyMessageDelayed(MESSAGE_FLUSH, FLUSH_DELAY_MILLIS);
-  }
-
-  @VisibleForTesting
-  /** write raw bytes directly to the log file, likely corrupting it. */
-  static void rawLogForTest(byte[] data) {
-    try {
-      fileHandler.writeRawLogsForTest(data);
-    } catch (IOException e) {
-      throw new RuntimeException(e);
-    }
-  }
-
-  /** Dump the log as human readable string. Blocks until the dump is finished. */
-  @NonNull
-  @WorkerThread
-  public static String dumpLogToString() {
-    Assert.isWorkerThread();
-    DumpStringRunnable dumpStringRunnable = new DumpStringRunnable();
-    loggerThreadHandler.post(dumpStringRunnable);
-    try {
-      return dumpStringRunnable.get();
-    } catch (InterruptedException e) {
-      Thread.currentThread().interrupt();
-      return "Cannot dump logText: " + e;
-    }
-  }
-
-  private static class DumpStringRunnable implements Runnable {
-    private String result;
-    private final CountDownLatch latch = new CountDownLatch(1);
-
-    @Override
-    public void run() {
-      result = dumpLogToStringInternal();
-      latch.countDown();
-    }
-
-    public String get() throws InterruptedException {
-      latch.await();
-      return result;
-    }
-  }
-
-  @NonNull
-  @WorkerThread
-  private static String dumpLogToStringInternal() {
-    StringBuilder result = new StringBuilder();
-    List<byte[]> logs;
-    try {
-      logs = readLogs();
-    } catch (IOException e) {
-      return "Cannot dump logText: " + e;
-    }
-
-    for (byte[] log : logs) {
-      result.append(new String(log, StandardCharsets.UTF_8)).append("\n");
-    }
-    return result.toString();
-  }
-
-  @NonNull
-  @WorkerThread
-  @VisibleForTesting
-  static List<byte[]> readLogs() throws IOException {
-    Assert.isWorkerThread();
-    return fileHandler.getLogs();
-  }
-
-  private static byte[] buildTextLog(String tag, String string) {
-    Calendar c = StrictModeUtils.bypass(() -> Calendar.getInstance());
-    return String.format("%tm-%td %tH:%tM:%tS.%tL - %s - %s", c, c, c, c, c, c, tag, string)
-        .getBytes(StandardCharsets.UTF_8);
-  }
-}
diff --git a/java/com/android/dialer/phonelookup/PhoneLookup.java b/java/com/android/dialer/phonelookup/PhoneLookup.java
index 1043ee7..ba2a812 100644
--- a/java/com/android/dialer/phonelookup/PhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/PhoneLookup.java
@@ -17,8 +17,10 @@
 package com.android.dialer.phonelookup;
 
 import android.content.Context;
-import android.support.annotation.MainThread;
 import android.telecom.Call;
+
+import androidx.annotation.MainThread;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.location.GeoUtil;
diff --git a/java/com/android/dialer/phonelookup/PhoneLookupComponent.java b/java/com/android/dialer/phonelookup/PhoneLookupComponent.java
index 70743c8..3a13ae2 100644
--- a/java/com/android/dialer/phonelookup/PhoneLookupComponent.java
+++ b/java/com/android/dialer/phonelookup/PhoneLookupComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,9 +17,11 @@
 package com.android.dialer.phonelookup;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.inject.IncludeInDialerRoot;
 import com.android.dialer.phonelookup.composite.CompositePhoneLookup;
+
 import dagger.Subcomponent;
 
 /** Dagger component for the PhoneLookup package. */
diff --git a/java/com/android/dialer/phonelookup/PhoneLookupModule.java b/java/com/android/dialer/phonelookup/PhoneLookupModule.java
index 6d5ffd2..813e2e1 100644
--- a/java/com/android/dialer/phonelookup/PhoneLookupModule.java
+++ b/java/com/android/dialer/phonelookup/PhoneLookupModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,41 +17,36 @@
 
 package com.android.dialer.phonelookup;
 
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
 import com.android.dialer.phonelookup.blockednumber.SystemBlockedNumberPhoneLookup;
 import com.android.dialer.phonelookup.cequint.CequintPhoneLookup;
 import com.android.dialer.phonelookup.cnap.CnapPhoneLookup;
 import com.android.dialer.phonelookup.cp2.Cp2DefaultDirectoryPhoneLookup;
 import com.android.dialer.phonelookup.cp2.Cp2ExtendedDirectoryPhoneLookup;
 import com.android.dialer.phonelookup.emergency.EmergencyPhoneLookup;
-import com.android.dialer.phonelookup.spam.SpamPhoneLookup;
 import com.google.common.collect.ImmutableList;
+
 import dagger.Module;
 import dagger.Provides;
 
 /** Dagger module which binds the PhoneLookup implementation. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module
 public abstract class PhoneLookupModule {
 
   @Provides
-  @SuppressWarnings({"unchecked", "rawtype"})
+  @SuppressWarnings("rawtypes")
   static ImmutableList<PhoneLookup> providePhoneLookupList(
       CequintPhoneLookup cequintPhoneLookup,
       CnapPhoneLookup cnapPhoneLookup,
       Cp2DefaultDirectoryPhoneLookup cp2DefaultDirectoryPhoneLookup,
       Cp2ExtendedDirectoryPhoneLookup cp2ExtendedDirectoryPhoneLookup,
       EmergencyPhoneLookup emergencyPhoneLookup,
-      SystemBlockedNumberPhoneLookup systemBlockedNumberPhoneLookup,
-      SpamPhoneLookup spamPhoneLookup) {
+      SystemBlockedNumberPhoneLookup systemBlockedNumberPhoneLookup) {
     return ImmutableList.of(
         cequintPhoneLookup,
         cnapPhoneLookup,
         cp2DefaultDirectoryPhoneLookup,
         cp2ExtendedDirectoryPhoneLookup,
         emergencyPhoneLookup,
-        systemBlockedNumberPhoneLookup,
-        spamPhoneLookup);
+        systemBlockedNumberPhoneLookup);
   }
 }
diff --git a/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java b/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java
index 4192e79..c9232aa 100644
--- a/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,11 +20,12 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.provider.BlockedNumberContract.BlockedNumbers;
-import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
 import android.util.ArraySet;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.DialerPhoneNumber;
-import com.android.dialer.blocking.FilteredNumberCompat;
 import com.android.dialer.calllog.observer.MarkDirtyObserver;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
@@ -41,7 +43,9 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import java.util.Set;
+
 import javax.inject.Inject;
 
 /**
@@ -66,9 +70,6 @@
 
   @Override
   public ListenableFuture<SystemBlockedNumberInfo> lookup(@NonNull DialerPhoneNumber number) {
-    if (!FilteredNumberCompat.useNewFiltering(appContext)) {
-      return Futures.immediateFuture(SystemBlockedNumberInfo.getDefaultInstance());
-    }
     return executorService.submit(() -> queryNumbers(ImmutableSet.of(number)).get(number));
   }
 
@@ -83,9 +84,6 @@
   public ListenableFuture<ImmutableMap<DialerPhoneNumber, SystemBlockedNumberInfo>>
       getMostRecentInfo(ImmutableMap<DialerPhoneNumber, SystemBlockedNumberInfo> existingInfoMap) {
     LogUtil.enterBlock("SystemBlockedNumberPhoneLookup.getMostRecentPhoneLookupInfo");
-    if (!FilteredNumberCompat.useNewFiltering(appContext)) {
-      return Futures.immediateFuture(existingInfoMap);
-    }
     return executorService.submit(() -> queryNumbers(existingInfoMap.keySet()));
   }
 
diff --git a/java/com/android/dialer/phonelookup/cequint/CequintPhoneLookup.java b/java/com/android/dialer/phonelookup/cequint/CequintPhoneLookup.java
index b045d03..875b9bc 100644
--- a/java/com/android/dialer/phonelookup/cequint/CequintPhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/cequint/CequintPhoneLookup.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.content.Context;
 import android.telecom.Call;
 import android.text.TextUtils;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
@@ -37,6 +39,7 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import javax.inject.Inject;
 
 /** PhoneLookup implementation for Cequint. */
@@ -70,7 +73,7 @@
                   TelecomCallUtil.getNumber(call), GeoUtil.getCurrentCountryIso(appContext));
             });
     String callerDisplayName = call.getDetails().getCallerDisplayName();
-    boolean isIncomingCall = (call.getState() == Call.STATE_RINGING);
+    boolean isIncomingCall = (call.getDetails().getState() == Call.STATE_RINGING);
 
     return Futures.transformAsync(
         dialerPhoneNumberFuture,
diff --git a/java/com/android/dialer/phonelookup/cnap/CnapPhoneLookup.java b/java/com/android/dialer/phonelookup/cnap/CnapPhoneLookup.java
index 1b78a8e..657e480 100644
--- a/java/com/android/dialer/phonelookup/cnap/CnapPhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/cnap/CnapPhoneLookup.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
 import android.database.Cursor;
 import android.telecom.Call;
 import android.text.TextUtils;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
@@ -36,6 +38,7 @@
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.protobuf.InvalidProtocolBufferException;
+
 import javax.inject.Inject;
 
 /** PhoneLookup implementation for CNAP info. */
diff --git a/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java b/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java
index 8322329..734f6d0 100644
--- a/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,10 @@
 package com.android.dialer.phonelookup.composite;
 
 import android.content.Context;
-import android.support.annotation.MainThread;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.Call;
+
+import androidx.annotation.MainThread;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.calllog.CallLogState;
 import com.android.dialer.common.LogUtil;
@@ -41,9 +43,11 @@
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+
 import javax.inject.Inject;
 
 /**
@@ -60,7 +64,6 @@
   private final CallLogState callLogState;
   private final ListeningExecutorService lightweightExecutorService;
 
-  @VisibleForTesting
   @Inject
   public CompositePhoneLookup(
       @ApplicationContext Context appContext,
diff --git a/java/com/android/dialer/phonelookup/consolidator/PhoneLookupInfoConsolidator.java b/java/com/android/dialer/phonelookup/consolidator/PhoneLookupInfoConsolidator.java
index efd7ae6..9ab3e86 100644
--- a/java/com/android/dialer/phonelookup/consolidator/PhoneLookupInfoConsolidator.java
+++ b/java/com/android/dialer/phonelookup/consolidator/PhoneLookupInfoConsolidator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,8 +16,9 @@
  */
 package com.android.dialer.phonelookup.consolidator;
 
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.logging.ContactSource;
 import com.android.dialer.phonelookup.PhoneLookup;
@@ -26,6 +28,7 @@
 import com.android.dialer.phonelookup.PhoneLookupInfo.PeopleApiInfo;
 import com.android.dialer.phonelookup.PhoneLookupInfo.PeopleApiInfo.InfoType;
 import com.google.common.collect.ImmutableList;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -89,7 +92,8 @@
   private final @NameSource int nameSource;
   private final PhoneLookupInfo phoneLookupInfo;
 
-  @Nullable private final Cp2ContactInfo firstDefaultCp2Contact;
+  @Nullable
+  private final Cp2ContactInfo firstDefaultCp2Contact;
   @Nullable private final Cp2ContactInfo firstExtendedCp2Contact;
 
   public PhoneLookupInfoConsolidator(PhoneLookupInfo phoneLookupInfo) {
diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java
index 7f2d91a..bab7ca3 100644
--- a/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,18 +26,18 @@
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.DeletedContacts;
 import android.provider.ContactsContract.Directory;
-import android.support.annotation.Nullable;
-import android.support.v4.util.ArrayMap;
-import android.support.v4.util.ArraySet;
 import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+import androidx.collection.ArrayMap;
+import androidx.collection.ArraySet;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.common.concurrent.Annotations.LightweightExecutor;
-import com.android.dialer.configprovider.ConfigProvider;
 import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.phonelookup.PhoneLookup;
 import com.android.dialer.phonelookup.PhoneLookupInfo;
 import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info;
@@ -54,6 +55,7 @@
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.protobuf.InvalidProtocolBufferException;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -61,6 +63,7 @@
 import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.function.Predicate;
+
 import javax.inject.Inject;
 
 /** PhoneLookup implementation for contacts in the default directory. */
@@ -73,10 +76,10 @@
   private final SharedPreferences sharedPreferences;
   private final ListeningExecutorService backgroundExecutorService;
   private final ListeningExecutorService lightweightExecutorService;
-  private final ConfigProvider configProvider;
   private final MissingPermissionsOperations missingPermissionsOperations;
 
-  @Nullable private Long currentLastTimestampProcessed;
+  @Nullable
+  private Long currentLastTimestampProcessed;
 
   @Inject
   Cp2DefaultDirectoryPhoneLookup(
@@ -84,13 +87,11 @@
       @Unencrypted SharedPreferences sharedPreferences,
       @BackgroundExecutor ListeningExecutorService backgroundExecutorService,
       @LightweightExecutor ListeningExecutorService lightweightExecutorService,
-      ConfigProvider configProvider,
       MissingPermissionsOperations missingPermissionsOperations) {
     this.appContext = appContext;
     this.sharedPreferences = sharedPreferences;
     this.backgroundExecutorService = backgroundExecutorService;
     this.lightweightExecutorService = lightweightExecutorService;
-    this.configProvider = configProvider;
     this.missingPermissionsOperations = missingPermissionsOperations;
   }
 
@@ -351,8 +352,8 @@
           try (Cursor cursor =
               queryPhoneLookup(new String[] {ContactsContract.PhoneLookup.CONTACT_ID}, rawNumber)) {
             if (cursor == null) {
-              LogUtil.w(
-                  "Cp2DefaultDirectoryPhoneLookup.queryPhoneLookupTableForContactIdsBasedOnRawNumber",
+              LogUtil.w("Cp2DefaultDirectoryPhoneLookup." +
+                              "queryPhoneLookupTableForContactIdsBasedOnRawNumber",
                   "null cursor");
               return contactIds;
             }
@@ -556,7 +557,6 @@
     PartitionedNumbers partitionedNumbers = new PartitionedNumbers(existingInfoMap.keySet());
 
     int invalidNumberCount = partitionedNumbers.invalidNumbers().size();
-    Logger.get(appContext).logAnnotatedCallLogMetrics(invalidNumberCount);
 
     if (invalidNumberCount > getMaxSupportedInvalidNumbers()) {
       for (String invalidNumber : partitionedNumbers.invalidNumbers()) {
@@ -854,7 +854,7 @@
             Phone.CONTENT_URI,
             projection,
             Phone.NORMALIZED_NUMBER + " IN (" + questionMarks(validE164Numbers.size()) + ")",
-            validE164Numbers.toArray(new String[validE164Numbers.size()]),
+            validE164Numbers.toArray(new String[0]),
             null);
   }
 
@@ -971,6 +971,6 @@
    * if there are too many we fall back to querying CP2 at render time.
    */
   private long getMaxSupportedInvalidNumbers() {
-    return configProvider.getLong("cp2_phone_lookup_max_invalid_numbers", 5);
+    return 5;
   }
 }
diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java
index 237ae5e..548c92b 100644
--- a/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,16 +22,12 @@
 import android.net.Uri;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Directory;
-import android.support.annotation.VisibleForTesting;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.common.concurrent.Annotations.LightweightExecutor;
-import com.android.dialer.common.concurrent.Annotations.NonUiSerial;
-import com.android.dialer.configprovider.ConfigProvider;
 import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.phonelookup.PhoneLookup;
 import com.android.dialer.phonelookup.PhoneLookupInfo;
 import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info;
@@ -41,12 +38,11 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
 import java.util.function.Predicate;
+
 import javax.inject.Inject;
 
 /**
@@ -57,31 +53,20 @@
  */
 public final class Cp2ExtendedDirectoryPhoneLookup implements PhoneLookup<Cp2Info> {
 
-  /** Config flag for timeout (in ms). */
-  @VisibleForTesting
-  static final String CP2_EXTENDED_DIRECTORY_PHONE_LOOKUP_TIMEOUT_MILLIS =
-      "cp2_extended_directory_phone_lookup_timout_millis";
-
   private final Context appContext;
-  private final ConfigProvider configProvider;
   private final ListeningExecutorService backgroundExecutorService;
   private final ListeningExecutorService lightweightExecutorService;
   private final MissingPermissionsOperations missingPermissionsOperations;
-  private final ScheduledExecutorService scheduledExecutorService;
 
   @Inject
   Cp2ExtendedDirectoryPhoneLookup(
       @ApplicationContext Context appContext,
       @BackgroundExecutor ListeningExecutorService backgroundExecutorService,
       @LightweightExecutor ListeningExecutorService lightweightExecutorService,
-      @NonUiSerial ScheduledExecutorService scheduledExecutorService,
-      ConfigProvider configProvider,
       MissingPermissionsOperations missingPermissionsOperations) {
     this.appContext = appContext;
     this.backgroundExecutorService = backgroundExecutorService;
     this.lightweightExecutorService = lightweightExecutorService;
-    this.scheduledExecutorService = scheduledExecutorService;
-    this.configProvider = configProvider;
     this.missingPermissionsOperations = missingPermissionsOperations;
   }
 
@@ -91,32 +76,10 @@
       return Futures.immediateFuture(Cp2Info.getDefaultInstance());
     }
 
-    ListenableFuture<Cp2Info> cp2InfoFuture =
-        Futures.transformAsync(
+    return Futures.transformAsync(
             queryCp2ForExtendedDirectoryIds(),
             directoryIds -> queryCp2ForDirectoryContact(dialerPhoneNumber, directoryIds),
             lightweightExecutorService);
-
-    long timeoutMillis =
-        configProvider.getLong(CP2_EXTENDED_DIRECTORY_PHONE_LOOKUP_TIMEOUT_MILLIS, Long.MAX_VALUE);
-
-    // Do not pass Long.MAX_VALUE to Futures.withTimeout as it will cause the internal
-    // ScheduledExecutorService for timing to keep waiting even after "cp2InfoFuture" is done.
-    // Do not pass 0 or a negative value to Futures.withTimeout either as it will cause the timeout
-    // event to be triggered immediately.
-    return timeoutMillis == Long.MAX_VALUE
-        ? cp2InfoFuture
-        : Futures.catching(
-            Futures.withTimeout(
-                cp2InfoFuture, timeoutMillis, TimeUnit.MILLISECONDS, scheduledExecutorService),
-            TimeoutException.class,
-            unused -> {
-              LogUtil.w("Cp2ExtendedDirectoryPhoneLookup.lookup", "Time out!");
-              Logger.get(appContext)
-                  .logImpression(DialerImpression.Type.CP2_EXTENDED_DIRECTORY_PHONE_LOOKUP_TIMEOUT);
-              return Cp2Info.getDefaultInstance();
-            },
-            lightweightExecutorService);
   }
 
   private ListenableFuture<List<Long>> queryCp2ForExtendedDirectoryIds() {
@@ -223,8 +186,7 @@
         });
   }
 
-  @VisibleForTesting
-  static Uri getContentUriForContacts(String number, long directoryId) {
+  private static Uri getContentUriForContacts(String number, long directoryId) {
     Uri.Builder builder =
         ContactsContract.PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI
             .buildUpon()
diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2Projections.java b/java/com/android/dialer/phonelookup/cp2/Cp2Projections.java
index 38390e5..dd0f7f8 100644
--- a/java/com/android/dialer/phonelookup/cp2/Cp2Projections.java
+++ b/java/com/android/dialer/phonelookup/cp2/Cp2Projections.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +24,7 @@
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.PhoneLookup;
 import android.text.TextUtils;
+
 import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info.Cp2ContactInfo;
 
 /**
diff --git a/java/com/android/dialer/phonelookup/cp2/MissingPermissionsOperations.java b/java/com/android/dialer/phonelookup/cp2/MissingPermissionsOperations.java
index a241368..c7e3554 100644
--- a/java/com/android/dialer/phonelookup/cp2/MissingPermissionsOperations.java
+++ b/java/com/android/dialer/phonelookup/cp2/MissingPermissionsOperations.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.content.Context;
 import android.database.Cursor;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
@@ -32,7 +34,9 @@
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.protobuf.InvalidProtocolBufferException;
+
 import java.util.function.Predicate;
+
 import javax.inject.Inject;
 
 /** Shared logic for handling missing permissions in CP2 lookups. */
diff --git a/java/com/android/dialer/phonelookup/database/AndroidManifest.xml b/java/com/android/dialer/phonelookup/database/AndroidManifest.xml
deleted file mode 100644
index 5645133..0000000
--- a/java/com/android/dialer/phonelookup/database/AndroidManifest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.phonelookup.database">
-
-  <application>
-
-    <provider
-        android:authorities="com.android.dialer.phonelookuphistory"
-        android:exported="false"
-        android:multiprocess="false"
-        android:name=".PhoneLookupHistoryContentProvider"/>
-
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/phonelookup/database/PhoneLookupDatabaseComponent.java b/java/com/android/dialer/phonelookup/database/PhoneLookupDatabaseComponent.java
index 92659c1..e8fca24 100644
--- a/java/com/android/dialer/phonelookup/database/PhoneLookupDatabaseComponent.java
+++ b/java/com/android/dialer/phonelookup/database/PhoneLookupDatabaseComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,10 @@
 package com.android.dialer.phonelookup.database;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.inject.IncludeInDialerRoot;
+
 import dagger.Subcomponent;
 
 /** Dagger component for database package. */
diff --git a/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryContentProvider.java b/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryContentProvider.java
index 35d2d4f..3a2762f 100644
--- a/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryContentProvider.java
+++ b/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryContentProvider.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,13 +28,16 @@
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteQueryBuilder;
 import android.net.Uri;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.phonelookup.database.contract.PhoneLookupHistoryContract;
 import com.android.dialer.phonelookup.database.contract.PhoneLookupHistoryContract.PhoneLookupHistory;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
diff --git a/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryDatabaseHelper.java b/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryDatabaseHelper.java
index 337e467..27dfe87 100644
--- a/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryDatabaseHelper.java
+++ b/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryDatabaseHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,12 +21,14 @@
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.os.SystemClock;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.phonelookup.database.contract.PhoneLookupHistoryContract.PhoneLookupHistory;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
diff --git a/java/com/android/dialer/phonelookup/database/contract/PhoneLookupHistoryContract.java b/java/com/android/dialer/phonelookup/database/contract/PhoneLookupHistoryContract.java
index a195926..6703989 100644
--- a/java/com/android/dialer/phonelookup/database/contract/PhoneLookupHistoryContract.java
+++ b/java/com/android/dialer/phonelookup/database/contract/PhoneLookupHistoryContract.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,11 +18,12 @@
 package com.android.dialer.phonelookup.database.contract;
 
 import android.net.Uri;
+
 import com.android.dialer.constants.Constants;
 
 /** Contract for the PhoneLookupHistory content provider. */
 public class PhoneLookupHistoryContract {
-  public static final String AUTHORITY = Constants.get().getPhoneLookupHistoryProviderAuthority();
+  public static final String AUTHORITY = Constants.PHONE_LOOKUP_HISTORY_PROVIDER_AUTHORITY;
 
   public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY);
 
diff --git a/java/com/android/dialer/phonelookup/emergency/EmergencyPhoneLookup.java b/java/com/android/dialer/phonelookup/emergency/EmergencyPhoneLookup.java
index d31614a..e1be247 100644
--- a/java/com/android/dialer/phonelookup/emergency/EmergencyPhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/emergency/EmergencyPhoneLookup.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.dialer.phonelookup.emergency;
 
 import android.content.Context;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.inject.ApplicationContext;
@@ -29,6 +31,7 @@
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import javax.inject.Inject;
 
 /**
@@ -57,7 +60,7 @@
         () ->
             EmergencyInfo.newBuilder()
                 .setIsEmergencyNumber(
-                    PhoneNumberHelper.isLocalEmergencyNumber(
+                    PhoneNumberHelper.isEmergencyNumber(
                         appContext, dialerPhoneNumber.getNormalizedNumber()))
                 .build());
   }
diff --git a/java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java b/java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java
deleted file mode 100644
index 7e5c973..0000000
--- a/java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.phonelookup.spam;
-
-import android.content.SharedPreferences;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import com.android.dialer.DialerPhoneNumber;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.common.concurrent.Annotations.LightweightExecutor;
-import com.android.dialer.phonelookup.PhoneLookup;
-import com.android.dialer.phonelookup.PhoneLookupInfo;
-import com.android.dialer.phonelookup.PhoneLookupInfo.SpamInfo;
-import com.android.dialer.spam.Spam;
-import com.android.dialer.spam.status.SpamStatus;
-import com.android.dialer.storage.Unencrypted;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import java.util.Map.Entry;
-import javax.inject.Inject;
-
-/** PhoneLookup implementation for Spam info. */
-public final class SpamPhoneLookup implements PhoneLookup<SpamInfo> {
-
-  @VisibleForTesting
-  static final String PREF_LAST_TIMESTAMP_PROCESSED = "spamPhoneLookupLastTimestampProcessed";
-
-  private final ListeningExecutorService lightweightExecutorService;
-  private final ListeningExecutorService backgroundExecutorService;
-  private final SharedPreferences sharedPreferences;
-  private final Spam spam;
-
-  @Nullable private Long currentLastTimestampProcessed;
-
-  @Inject
-  SpamPhoneLookup(
-      @BackgroundExecutor ListeningExecutorService backgroundExecutorService,
-      @LightweightExecutor ListeningExecutorService lightweightExecutorService,
-      @Unencrypted SharedPreferences sharedPreferences,
-      Spam spam) {
-    this.backgroundExecutorService = backgroundExecutorService;
-    this.lightweightExecutorService = lightweightExecutorService;
-    this.sharedPreferences = sharedPreferences;
-    this.spam = spam;
-  }
-
-  @Override
-  public ListenableFuture<SpamInfo> lookup(DialerPhoneNumber dialerPhoneNumber) {
-    return Futures.transform(
-        spam.batchCheckSpamStatus(ImmutableSet.of(dialerPhoneNumber)),
-        spamStatusMap ->
-            SpamInfo.newBuilder()
-                .setIsSpam(Assert.isNotNull(spamStatusMap.get(dialerPhoneNumber)).isSpam())
-                .build(),
-        lightweightExecutorService);
-  }
-
-  @Override
-  public ListenableFuture<Boolean> isDirty(ImmutableSet<DialerPhoneNumber> phoneNumbers) {
-    ListenableFuture<Long> lastTimestampProcessedFuture =
-        backgroundExecutorService.submit(
-            () -> sharedPreferences.getLong(PREF_LAST_TIMESTAMP_PROCESSED, 0L));
-
-    return Futures.transformAsync(
-        lastTimestampProcessedFuture, spam::dataUpdatedSince, lightweightExecutorService);
-  }
-
-  @Override
-  public ListenableFuture<ImmutableMap<DialerPhoneNumber, SpamInfo>> getMostRecentInfo(
-      ImmutableMap<DialerPhoneNumber, SpamInfo> existingInfoMap) {
-    currentLastTimestampProcessed = null;
-
-    ListenableFuture<ImmutableMap<DialerPhoneNumber, SpamStatus>> spamStatusMapFuture =
-        spam.batchCheckSpamStatus(existingInfoMap.keySet());
-
-    return Futures.transform(
-        spamStatusMapFuture,
-        spamStatusMap -> {
-          ImmutableMap.Builder<DialerPhoneNumber, SpamInfo> mostRecentSpamInfo =
-              new ImmutableMap.Builder<>();
-
-          for (Entry<DialerPhoneNumber, SpamStatus> dialerPhoneNumberAndSpamStatus :
-              spamStatusMap.entrySet()) {
-            DialerPhoneNumber dialerPhoneNumber = dialerPhoneNumberAndSpamStatus.getKey();
-            SpamStatus spamStatus = dialerPhoneNumberAndSpamStatus.getValue();
-            mostRecentSpamInfo.put(
-                dialerPhoneNumber, SpamInfo.newBuilder().setIsSpam(spamStatus.isSpam()).build());
-
-            Optional<Long> timestampMillis = spamStatus.getTimestampMillis();
-            if (timestampMillis.isPresent()) {
-              currentLastTimestampProcessed =
-                  currentLastTimestampProcessed == null
-                      ? timestampMillis.get()
-                      : Math.max(timestampMillis.get(), currentLastTimestampProcessed);
-            }
-          }
-
-          // If currentLastTimestampProcessed is null, it means none of the numbers in
-          // existingInfoMap has spam status in the underlying data source.
-          // We should set currentLastTimestampProcessed to the current timestamp to avoid
-          // triggering the bulk update flow repeatedly.
-          if (currentLastTimestampProcessed == null) {
-            currentLastTimestampProcessed = System.currentTimeMillis();
-          }
-
-          return mostRecentSpamInfo.build();
-        },
-        lightweightExecutorService);
-  }
-
-  @Override
-  public SpamInfo getSubMessage(PhoneLookupInfo phoneLookupInfo) {
-    return phoneLookupInfo.getSpamInfo();
-  }
-
-  @Override
-  public void setSubMessage(PhoneLookupInfo.Builder destination, SpamInfo subMessage) {
-    destination.setSpamInfo(subMessage);
-  }
-
-  @Override
-  public ListenableFuture<Void> onSuccessfulBulkUpdate() {
-    return backgroundExecutorService.submit(
-        () -> {
-          sharedPreferences
-              .edit()
-              .putLong(
-                  PREF_LAST_TIMESTAMP_PROCESSED, Assert.isNotNull(currentLastTimestampProcessed))
-              .apply();
-          return null;
-        });
-  }
-
-  @Override
-  public void registerContentObservers() {
-    // No content observer can be registered as Spam is not based on a content provider.
-    // Each Spam implementation should be responsible for notifying any data changes.
-  }
-
-  @Override
-  public void unregisterContentObservers() {}
-
-  @Override
-  public ListenableFuture<Void> clearData() {
-    return backgroundExecutorService.submit(
-        () -> {
-          sharedPreferences.edit().remove(PREF_LAST_TIMESTAMP_PROCESSED).apply();
-          return null;
-        });
-  }
-
-  @Override
-  public String getLoggingName() {
-    return "SpamPhoneLookup";
-  }
-}
diff --git a/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java b/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java
index b2720d1..d1b2cda 100644
--- a/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java
+++ b/java/com/android/dialer/phonenumbercache/CachedNumberLookupService.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,10 +19,13 @@
 
 import android.content.Context;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.logging.ContactSource;
+
 import java.io.InputStream;
 
 public interface CachedNumberLookupService {
diff --git a/java/com/android/dialer/phonenumbercache/CallLogQuery.java b/java/com/android/dialer/phonenumbercache/CallLogQuery.java
index 2f2758a..a183870 100644
--- a/java/com/android/dialer/phonenumbercache/CallLogQuery.java
+++ b/java/com/android/dialer/phonenumbercache/CallLogQuery.java
@@ -16,15 +16,10 @@
 
 package com.android.dialer.phonenumbercache;
 
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresApi;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+
+import androidx.annotation.NonNull;
 
 /** The query for the call log table. */
 public final class CallLogQuery {
@@ -51,15 +46,11 @@
   public static final int ACCOUNT_ID = 19;
   public static final int FEATURES = 20;
   public static final int DATA_USAGE = 21;
-  public static final int TRANSCRIPTION = 22;
-  public static final int CACHED_PHOTO_URI = 23;
-  public static final int POST_DIAL_DIGITS = 24;
-  public static final int VIA_NUMBER = 25;
+  public static final int CACHED_PHOTO_URI = 22;
+  public static final int POST_DIAL_DIGITS = 23;
+  public static final int VIA_NUMBER = 24;
 
-  @RequiresApi(VERSION_CODES.O)
-  public static final int TRANSCRIPTION_STATE = 26;
-
-  private static final String[] PROJECTION_N =
+  private static final String[] PROJECTION =
       new String[] {
         Calls._ID, // 0
         Calls.NUMBER, // 1
@@ -83,26 +74,13 @@
         Calls.PHONE_ACCOUNT_ID, // 19
         Calls.FEATURES, // 20
         Calls.DATA_USAGE, // 21
-        Calls.TRANSCRIPTION, // 22
-        Calls.CACHED_PHOTO_URI, // 23
-        CallLog.Calls.POST_DIAL_DIGITS, // 24
-        CallLog.Calls.VIA_NUMBER // 25
+        Calls.CACHED_PHOTO_URI, // 22
+        CallLog.Calls.POST_DIAL_DIGITS, // 23
+        CallLog.Calls.VIA_NUMBER, // 24
       };
 
-  private static final String[] PROJECTION_O;
-
-  // TODO(mdooley): remove when this becomes a public api
-  // Copied from android.provider.CallLog.Calls
-  private static final String TRANSCRIPTION_STATE_COLUMN = "transcription_state";
-
-  static {
-    List<String> projectionList = new ArrayList<>(Arrays.asList(PROJECTION_N));
-    projectionList.add(TRANSCRIPTION_STATE_COLUMN);
-    PROJECTION_O = projectionList.toArray(new String[projectionList.size()]);
-  }
-
   @NonNull
   public static String[] getProjection() {
-    return VERSION.SDK_INT >= VERSION_CODES.O ? PROJECTION_O : PROJECTION_N;
+    return PROJECTION;
   }
 }
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfo.java b/java/com/android/dialer/phonenumbercache/ContactInfo.java
index a620a23..3bb84cf 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfo.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfo.java
@@ -17,8 +17,10 @@
 package com.android.dialer.phonenumbercache;
 
 import android.net.Uri;
-import android.support.annotation.NonNull;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+
 import com.android.contacts.common.ContactsUtils.UserType;
 import com.android.dialer.logging.ContactSource;
 import com.android.dialer.util.UriUtils;
diff --git a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
index 6179b5d..f6e3b7a 100644
--- a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
+++ b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java
@@ -1,15 +1,18 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
- * http://www.apache.org/licenses/LICENSE-2.0
+ *      http://www.apache.org/licenses/LICENSE-2.0
  *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 package com.android.dialer.phonenumbercache;
@@ -26,10 +29,12 @@
 import android.provider.ContactsContract.Directory;
 import android.provider.ContactsContract.DisplayNameSources;
 import android.provider.ContactsContract.PhoneLookup;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.ContactsUtils.UserType;
 import com.android.contacts.common.util.Constants;
@@ -43,11 +48,13 @@
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.UriUtils;
-import java.util.ArrayList;
-import java.util.List;
+
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /** Utility class to look up the contact information for a given number. */
 public class ContactInfoHelper {
 
diff --git a/java/com/android/dialer/phonenumbercache/PhoneNumberCache.java b/java/com/android/dialer/phonenumbercache/PhoneNumberCache.java
index aefa544..6071ce4 100644
--- a/java/com/android/dialer/phonenumbercache/PhoneNumberCache.java
+++ b/java/com/android/dialer/phonenumbercache/PhoneNumberCache.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.dialer.phonenumbercache;
 
 import android.content.Context;
+
 import java.util.Objects;
 
 /** Accessor for the phone number cache bindings. */
@@ -43,8 +45,4 @@
     }
     return phoneNumberCacheBindings;
   }
-
-  public static void setForTesting(PhoneNumberCacheBindings phoneNumberCacheBindings) {
-    PhoneNumberCache.phoneNumberCacheBindings = phoneNumberCacheBindings;
-  }
 }
diff --git a/java/com/android/dialer/phonenumbercache/PhoneNumberCacheBindings.java b/java/com/android/dialer/phonenumbercache/PhoneNumberCacheBindings.java
index 6e3ed9d..8242bd8 100644
--- a/java/com/android/dialer/phonenumbercache/PhoneNumberCacheBindings.java
+++ b/java/com/android/dialer/phonenumbercache/PhoneNumberCacheBindings.java
@@ -16,7 +16,7 @@
 
 package com.android.dialer.phonenumbercache;
 
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
 
 /** Allows the container application provide a number look up service. */
 public interface PhoneNumberCacheBindings {
diff --git a/java/com/android/dialer/phonenumbercache/PhoneNumberCacheBindingsStub.java b/java/com/android/dialer/phonenumbercache/PhoneNumberCacheBindingsStub.java
index c7fb978..e1dcfd7 100644
--- a/java/com/android/dialer/phonenumbercache/PhoneNumberCacheBindingsStub.java
+++ b/java/com/android/dialer/phonenumbercache/PhoneNumberCacheBindingsStub.java
@@ -16,7 +16,7 @@
 
 package com.android.dialer.phonenumbercache;
 
-import android.support.annotation.Nullable;
+import androidx.annotation.Nullable;
 
 /** Default implementation of PhoneNumberCacheBindings. */
 public class PhoneNumberCacheBindingsStub implements PhoneNumberCacheBindings {
diff --git a/java/com/android/dialer/phonenumbergeoutil/PhoneNumberGeoUtilComponent.java b/java/com/android/dialer/phonenumbergeoutil/PhoneNumberGeoUtilComponent.java
index a49005e..fd3c9f9 100644
--- a/java/com/android/dialer/phonenumbergeoutil/PhoneNumberGeoUtilComponent.java
+++ b/java/com/android/dialer/phonenumbergeoutil/PhoneNumberGeoUtilComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,9 @@
 package com.android.dialer.phonenumbergeoutil;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
+
 import dagger.Subcomponent;
 
 /** Dagger component for phone number geo util. */
diff --git a/java/com/android/dialer/phonenumbergeoutil/impl/PhoneNumberGeoUtilImpl.java b/java/com/android/dialer/phonenumbergeoutil/impl/PhoneNumberGeoUtilImpl.java
index 89fe04a..ebda26d 100644
--- a/java/com/android/dialer/phonenumbergeoutil/impl/PhoneNumberGeoUtilImpl.java
+++ b/java/com/android/dialer/phonenumbergeoutil/impl/PhoneNumberGeoUtilImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.content.Context;
 import android.text.TextUtils;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.i18n.LocaleUtils;
 import com.android.dialer.phonenumbergeoutil.PhoneNumberGeoUtil;
@@ -25,7 +27,9 @@
 import com.google.i18n.phonenumbers.PhoneNumberUtil;
 import com.google.i18n.phonenumbers.Phonenumber;
 import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
+
 import java.util.Locale;
+
 import javax.inject.Inject;
 
 /** Implementation of {@link PhoneNumberGeoUtil}. */
diff --git a/java/com/android/dialer/phonenumbergeoutil/impl/PhoneNumberGeoUtilModule.java b/java/com/android/dialer/phonenumbergeoutil/impl/PhoneNumberGeoUtilModule.java
index db4f7fa..ab8bfb2 100644
--- a/java/com/android/dialer/phonenumbergeoutil/impl/PhoneNumberGeoUtilModule.java
+++ b/java/com/android/dialer/phonenumbergeoutil/impl/PhoneNumberGeoUtilModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,15 +17,14 @@
 
 package com.android.dialer.phonenumbergeoutil.impl;
 
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
 import com.android.dialer.phonenumbergeoutil.PhoneNumberGeoUtil;
-import dagger.Binds;
-import dagger.Module;
+
 import javax.inject.Singleton;
 
+import dagger.Binds;
+import dagger.Module;
+
 /** Module which binds {@link PhoneNumberGeoUtilImpl}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module
 public abstract class PhoneNumberGeoUtilModule {
 
diff --git a/java/com/android/dialer/phonenumbergeoutil/stub/PhoneNumberGeoUtilStub.java b/java/com/android/dialer/phonenumbergeoutil/stub/PhoneNumberGeoUtilStub.java
index 06cd137..6b6da4e 100644
--- a/java/com/android/dialer/phonenumbergeoutil/stub/PhoneNumberGeoUtilStub.java
+++ b/java/com/android/dialer/phonenumbergeoutil/stub/PhoneNumberGeoUtilStub.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,9 @@
 package com.android.dialer.phonenumbergeoutil.stub;
 
 import android.content.Context;
+
 import com.android.dialer.phonenumbergeoutil.PhoneNumberGeoUtil;
+
 import javax.inject.Inject;
 
 /** Stub implementation of {@link PhoneNumberGeoUtil}. */
diff --git a/java/com/android/dialer/phonenumbergeoutil/stub/StubPhoneNumberGeoUtilModule.java b/java/com/android/dialer/phonenumbergeoutil/stub/StubPhoneNumberGeoUtilModule.java
index 82252cc..0b702bc 100644
--- a/java/com/android/dialer/phonenumbergeoutil/stub/StubPhoneNumberGeoUtilModule.java
+++ b/java/com/android/dialer/phonenumbergeoutil/stub/StubPhoneNumberGeoUtilModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,11 @@
 package com.android.dialer.phonenumbergeoutil.stub;
 
 import com.android.dialer.phonenumbergeoutil.PhoneNumberGeoUtil;
+
+import javax.inject.Singleton;
+
 import dagger.Binds;
 import dagger.Module;
-import javax.inject.Singleton;
 
 /** Module which binds {@link PhoneNumberGeoUtilStub}. */
 @Module
diff --git a/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java b/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java
index d8079ef..352c443 100644
--- a/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java
+++ b/java/com/android/dialer/phonenumberproto/DialerPhoneNumberUtil.java
@@ -16,11 +16,13 @@
 
 package com.android.dialer.phonenumberproto;
 
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
@@ -122,7 +124,7 @@
    */
   @WorkerThread
   public boolean isMatch(
-      @NonNull DialerPhoneNumber firstNumberIn, @NonNull DialerPhoneNumber secondNumberIn) {
+          @NonNull DialerPhoneNumber firstNumberIn, @NonNull DialerPhoneNumber secondNumberIn) {
     Assert.isWorkerThread();
 
     // An empty number should not be combined with any other number.
diff --git a/java/com/android/dialer/phonenumberproto/PartitionedNumbers.java b/java/com/android/dialer/phonenumberproto/PartitionedNumbers.java
index 2c19c12..ae681a9 100644
--- a/java/com/android/dialer/phonenumberproto/PartitionedNumbers.java
+++ b/java/com/android/dialer/phonenumberproto/PartitionedNumbers.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,14 +17,16 @@
 
 package com.android.dialer.phonenumberproto;
 
-import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
-import android.support.v4.util.ArrayMap;
-import android.support.v4.util.ArraySet;
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+import androidx.collection.ArrayMap;
+import androidx.collection.ArraySet;
+
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.common.Assert;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
+
 import java.util.Map;
 import java.util.Set;
 
diff --git a/java/com/android/dialer/phonenumberutil/AndroidManifest.xml b/java/com/android/dialer/phonenumberutil/AndroidManifest.xml
deleted file mode 100644
index f7ee400..0000000
--- a/java/com/android/dialer/phonenumberutil/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.dialer.phonenumberutil">
-</manifest>
diff --git a/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java b/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java
index 9e30394..d540386 100644
--- a/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java
+++ b/java/com/android/dialer/phonenumberutil/PhoneNumberHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,27 +22,28 @@
 import android.net.Uri;
 import android.os.Trace;
 import android.provider.CallLog;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.PhoneNumberUtils;
-import android.telephony.SubscriptionInfo;
 import android.telephony.TelephonyManager;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
 import com.android.dialer.i18n.LocaleUtils;
 import com.android.dialer.oem.MotorolaUtils;
-import com.android.dialer.oem.PhoneNumberUtilsAccessor;
 import com.android.dialer.phonenumbergeoutil.PhoneNumberGeoUtilComponent;
 import com.android.dialer.telecom.TelecomUtil;
-import com.google.common.base.Optional;
+
 import java.util.Arrays;
 import java.util.HashSet;
-import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 
 public class PhoneNumberHelper {
@@ -93,7 +95,7 @@
    * @return true if a match can be found.
    */
   public static boolean updateCursorToMatchContactLookupUri(
-      @Nullable Cursor cursor, int columnIndexForNumber, @Nullable Uri contactLookupUri) {
+          @Nullable Cursor cursor, int columnIndexForNumber, @Nullable Uri contactLookupUri) {
     if (cursor == null || contactLookupUri == null) {
       return false;
     }
@@ -141,37 +143,13 @@
     return rawNumber1.equals(rawNumber2);
   }
 
-  /**
-   * An enhanced version of {@link PhoneNumberUtils#isLocalEmergencyNumber(Context, String)}.
-   *
-   * <p>This methods supports checking the number for all SIMs.
-   *
-   * @param context the context which the number should be checked against
-   * @param number the number to tbe checked
-   * @return true if the specified number is an emergency number for any SIM in the device.
-   */
-  @SuppressWarnings("Guava")
-  public static boolean isLocalEmergencyNumber(Context context, String number) {
-    List<PhoneAccountHandle> phoneAccountHandles =
-        TelecomUtil.getSubscriptionPhoneAccounts(context);
+  public static boolean isEmergencyNumber(Context context, String number) {
+    TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+    return telephonyManager.isEmergencyNumber(number);
+  }
 
-    // If the number of phone accounts with a subscription is no greater than 1, only one SIM is
-    // installed in the device. We hand over the job to PhoneNumberUtils#isLocalEmergencyNumber.
-    if (phoneAccountHandles.size() <= 1) {
-      return PhoneNumberUtils.isLocalEmergencyNumber(context, number);
-    }
-
-    for (PhoneAccountHandle phoneAccountHandle : phoneAccountHandles) {
-      Optional<SubscriptionInfo> subscriptionInfo =
-          TelecomUtil.getSubscriptionInfo(context, phoneAccountHandle);
-      if (subscriptionInfo.isPresent()
-          && PhoneNumberUtilsAccessor.isLocalEmergencyNumber(
-              context, subscriptionInfo.get().getSubscriptionId(), number)) {
-        return true;
-      }
-    }
-
-    return false;
+  public static boolean isEmergencyNumber(Context context, String number, String countryIso) {
+    return isEmergencyNumber(context, PhoneNumberUtils.formatNumberToE164(number, countryIso));
   }
 
   /**
@@ -194,32 +172,6 @@
     return number != null && isUriNumber(number.toString());
   }
 
-  public static boolean isUnknownNumberThatCanBeLookedUp(
-      Context context, PhoneAccountHandle accountHandle, CharSequence number, int presentation) {
-    if (presentation == CallLog.Calls.PRESENTATION_UNKNOWN) {
-      return false;
-    }
-    if (presentation == CallLog.Calls.PRESENTATION_RESTRICTED) {
-      return false;
-    }
-    if (presentation == CallLog.Calls.PRESENTATION_UNAVAILABLE) {
-      return false;
-    }
-    if (presentation == CallLog.Calls.PRESENTATION_PAYPHONE) {
-      return false;
-    }
-    if (TextUtils.isEmpty(number)) {
-      return false;
-    }
-    if (isVoicemailNumber(context, accountHandle, number)) {
-      return false;
-    }
-    if (isLegacyUnknownNumbers(number)) {
-      return false;
-    }
-    return true;
-  }
-
   public static boolean isLegacyUnknownNumbers(CharSequence number) {
     return number != null && LEGACY_UNKNOWN_NUMBERS.contains(number.toString());
   }
@@ -342,65 +294,33 @@
     return number.substring(0, delimiterIndex);
   }
 
-  private static boolean isVerizon(Context context) {
-    // Verizon MCC/MNC codes copied from com/android/voicemailomtp/res/xml/vvm_config.xml.
-    // TODO(sail): Need a better way to do per carrier and per OEM configurations.
-    switch (context.getSystemService(TelephonyManager.class).getSimOperator()) {
-      case "310004":
-      case "310010":
-      case "310012":
-      case "310013":
-      case "310590":
-      case "310890":
-      case "310910":
-      case "311110":
-      case "311270":
-      case "311271":
-      case "311272":
-      case "311273":
-      case "311274":
-      case "311275":
-      case "311276":
-      case "311277":
-      case "311278":
-      case "311279":
-      case "311280":
-      case "311281":
-      case "311282":
-      case "311283":
-      case "311284":
-      case "311285":
-      case "311286":
-      case "311287":
-      case "311288":
-      case "311289":
-      case "311390":
-      case "311480":
-      case "311481":
-      case "311482":
-      case "311483":
-      case "311484":
-      case "311485":
-      case "311486":
-      case "311487":
-      case "311488":
-      case "311489":
-        return true;
-      default:
-        return false;
+  public static boolean compareSipAddresses(@Nullable String number1, @Nullable String number2) {
+    if (number1 == null || number2 == null) {
+      return Objects.equals(number1, number2);
     }
-  }
 
-  /**
-   * Gets the label to display for a phone call where the presentation is set as
-   * PRESENTATION_RESTRICTED. For Verizon we want this to be displayed as "Restricted". For all
-   * other carriers we want this to be be displayed as "Private number".
-   */
-  public static String getDisplayNameForRestrictedNumber(Context context) {
-    if (isVerizon(context)) {
-      return context.getString(R.string.private_num_verizon);
+    int index1 = number1.indexOf('@');
+    final String userinfo1;
+    final String rest1;
+    if (index1 != -1) {
+      userinfo1 = number1.substring(0, index1);
+      rest1 = number1.substring(index1);
     } else {
-      return context.getString(R.string.private_num_non_verizon);
+      userinfo1 = number1;
+      rest1 = "";
     }
+
+    int index2 = number2.indexOf('@');
+    final String userinfo2;
+    final String rest2;
+    if (index2 != -1) {
+      userinfo2 = number2.substring(0, index2);
+      rest2 = number2.substring(index2);
+    } else {
+      userinfo2 = number2;
+      rest2 = "";
+    }
+
+    return userinfo1.equals(userinfo2) && rest1.equalsIgnoreCase(rest2);
   }
 }
diff --git a/java/com/android/dialer/phonenumberutil/res/values-af/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-af/strings.xml
index 27ed500..61018c1 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-af/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-af/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Beperk</string>
   <string name="private_num_non_verizon">Privaat nommer</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-am/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-am/strings.xml
index 6127163..ad8ace9 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-am/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-am/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">ተገድቧል</string>
   <string name="private_num_non_verizon">የግል ቁጥር</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ar/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ar/strings.xml
index af8a568..0c2dcd1 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ar/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ar/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">محظور  </string>
   <string name="private_num_non_verizon">رقم خاص</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-az/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-az/strings.xml
index fe93ace..b9bed6b 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-az/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-az/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Məhdudlaşdırılmış</string>
   <string name="private_num_non_verizon">Gizli nömrə</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-b+sr+Latn/strings.xml
index 4012a0f..950e77a 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-b+sr+Latn/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Ograničeno</string>
   <string name="private_num_non_verizon">Privatan broj</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-be/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-be/strings.xml
index 563c703..bd11f45 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-be/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-be/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Абмежавана</string>
   <string name="private_num_non_verizon">Прыватны нумар</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-bg/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-bg/strings.xml
index 71f6090..3ac4a7b 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-bg/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-bg/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Ограничен</string>
   <string name="private_num_non_verizon">Частен номер</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-bn/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-bn/strings.xml
index b08721a..6544c70 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-bn/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-bn/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">বিধিনিষেধযুক্ত</string>
   <string name="private_num_non_verizon">ব্যক্তিগত নম্বর</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-bs/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-bs/strings.xml
index 54fa43e..85ca37c 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-bs/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-bs/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Ograničeno</string>
   <string name="private_num_non_verizon">Privatni broj</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ca/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ca/strings.xml
index e9ccb4c..d72d497 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ca/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ca/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restringit</string>
   <string name="private_num_non_verizon">Número privat</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-cs/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-cs/strings.xml
index 7c225fa..a376772 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-cs/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-cs/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Omezeno</string>
   <string name="private_num_non_verizon">Soukromé číslo</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-da/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-da/strings.xml
index e9975f4..ed0ba95 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-da/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-da/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Privat</string>
   <string name="private_num_non_verizon">Privat nummer</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-de/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-de/strings.xml
index 01d6803..016795c 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-de/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-de/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Beschränkt</string>
   <string name="private_num_non_verizon">Private Nummer</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-el/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-el/strings.xml
index e1782c8..c18c24c 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-el/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-el/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Περιορισμένος</string>
   <string name="private_num_non_verizon">Απόκρυψη αριθμού</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-en-rAU/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-en-rAU/strings.xml
index 8e85d0b..bfd53aa 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-en-rAU/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restricted</string>
   <string name="private_num_non_verizon">Private number</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-en-rGB/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-en-rGB/strings.xml
index 8e85d0b..bfd53aa 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-en-rGB/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restricted</string>
   <string name="private_num_non_verizon">Private number</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-en-rIN/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-en-rIN/strings.xml
index 8e85d0b..bfd53aa 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-en-rIN/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restricted</string>
   <string name="private_num_non_verizon">Private number</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-es-rUS/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-es-rUS/strings.xml
index 7515f32..0ff2342 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-es-rUS/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restringido</string>
   <string name="private_num_non_verizon">Número privado</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-es/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-es/strings.xml
index 637d072..0ff2342 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-es/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-es/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restringidas</string>
   <string name="private_num_non_verizon">Número privado</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-et/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-et/strings.xml
index bf886ff..6ec02fd 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-et/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-et/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Piiratud</string>
   <string name="private_num_non_verizon">Varjatud number</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-eu/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-eu/strings.xml
index 5ac836f..86d404c 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-eu/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-eu/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Murriztua</string>
   <string name="private_num_non_verizon">Zenbaki pribatua</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-fa/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-fa/strings.xml
index 6b3d2c8..fa9cc28 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-fa/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-fa/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">محدودشده</string>
   <string name="private_num_non_verizon">شماره خصوصی</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-fi/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-fi/strings.xml
index eb7ff9f..dd6e9ec 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-fi/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-fi/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Rajoitettu</string>
   <string name="private_num_non_verizon">Yksityinen numero</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-fr-rCA/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-fr-rCA/strings.xml
index 4949bba..1d8d7ca 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-fr-rCA/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Numéro privé</string>
   <string name="private_num_non_verizon">Numéro privé</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-fr/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-fr/strings.xml
index 37ae694..1d8d7ca 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-fr/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-fr/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restreint</string>
   <string name="private_num_non_verizon">Numéro privé</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-gl/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-gl/strings.xml
index 1a001c3..0ff2342 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-gl/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-gl/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restrinxido</string>
   <string name="private_num_non_verizon">Número privado</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-gu/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-gu/strings.xml
index 4c3b067..149efe3 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-gu/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-gu/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">પ્રતિબંધિત</string>
   <string name="private_num_non_verizon">ખાનગી નંબર</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-hi/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-hi/strings.xml
index 5a6ba89..34ac828 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-hi/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-hi/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">प्रतिबंधित</string>
   <string name="private_num_non_verizon">निजी नंबर</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-hr/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-hr/strings.xml
index 54fa43e..85ca37c 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-hr/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-hr/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Ograničeno</string>
   <string name="private_num_non_verizon">Privatni broj</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-hu/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-hu/strings.xml
index c54d830..37801e2 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-hu/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-hu/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Korlátozott</string>
   <string name="private_num_non_verizon">Magántelefonszám</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-hy/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-hy/strings.xml
index 3fc82ef..584e0eb 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-hy/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-hy/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Սահմանափակված</string>
   <string name="private_num_non_verizon">Փակ համար</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-in/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-in/strings.xml
index 713666d..ff9fb22 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-in/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-in/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Dibatasi</string>
   <string name="private_num_non_verizon">Nomor pribadi</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-is/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-is/strings.xml
index cbc6c28..977953a 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-is/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-is/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Einkanúmer</string>
   <string name="private_num_non_verizon">Leyninúmer</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-it/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-it/strings.xml
index 1f80844..2b6c9dd 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-it/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-it/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Limitata</string>
   <string name="private_num_non_verizon">Numero privato</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-iw/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-iw/strings.xml
index 3844682..620f6b7 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-iw/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-iw/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">מספר חסום</string>
   <string name="private_num_non_verizon">מספר פרטי</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ja/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ja/strings.xml
index f28d08f..9349288 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ja/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ja/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">制限されています</string>
   <string name="private_num_non_verizon">非通知設定</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ka/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ka/strings.xml
index 421b616..b0da957 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ka/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ka/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">შეზღუდული</string>
   <string name="private_num_non_verizon">დაფარული ნომერი</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-kk/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-kk/strings.xml
index 24a06f8..86a9992 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-kk/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-kk/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Шектелген</string>
   <string name="private_num_non_verizon">Жеке нөмір</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-km/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-km/strings.xml
index cf32395..2b8de43 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-km/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-km/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">បាន​ដាក់​កម្រិត</string>
   <string name="private_num_non_verizon">លេខ​ឯកជន</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-kn/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-kn/strings.xml
index e1c8194..f52e55f 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-kn/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-kn/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</string>
   <string name="private_num_non_verizon">ಖಾಸಗಿ ಸಂಖ್ಯೆ</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ko/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ko/strings.xml
index ead9f7a..8583005 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ko/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ko/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">제한됨</string>
   <string name="private_num_non_verizon">비공개 번호</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ky/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ky/strings.xml
index d64aa74..7972701 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ky/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ky/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Чектелген</string>
   <string name="private_num_non_verizon">Купуя номер</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-lo/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-lo/strings.xml
index 3b4cfa3..08bdcde 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-lo/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-lo/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">ຖືກຈຳກັດ</string>
   <string name="private_num_non_verizon">ເບີສ່ວນຕົວ</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-lt/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-lt/strings.xml
index 1df0133..6b361f8 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-lt/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-lt/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Apriboti</string>
   <string name="private_num_non_verizon">Privatus numeris</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-lv/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-lv/strings.xml
index c6dd574..82dd9bb 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-lv/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-lv/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Ierobežots</string>
   <string name="private_num_non_verizon">Privāts numurs</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-mk/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-mk/strings.xml
index ba79acf..09d3d84 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-mk/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-mk/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Ограничено</string>
   <string name="private_num_non_verizon">Приватен број</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ml/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ml/strings.xml
index f689835..82bb9a0 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ml/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ml/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">നിയന്ത്രിച്ചിരിക്കുന്നു</string>
   <string name="private_num_non_verizon">സ്വകാര്യ നമ്പർ</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-mn/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-mn/strings.xml
index eeefc0b..350cb83 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-mn/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-mn/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Хязгаарлагдсан</string>
   <string name="private_num_non_verizon">Нууцалсан дугаар</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-mr/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-mr/strings.xml
index 2286781..20c7868 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-mr/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-mr/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">प्रतिबंधित</string>
   <string name="private_num_non_verizon">खाजगी नंबर</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ms/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ms/strings.xml
index 07106b5..e55984c 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ms/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ms/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Terhad</string>
   <string name="private_num_non_verizon">Nombor peribadi</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-my/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-my/strings.xml
index 8f67cdd..3a29930 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-my/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-my/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">ကန့်သတ်ထားသည်</string>
   <string name="private_num_non_verizon">ပုဂ္ဂလိကဖုန်းနံပါတ်</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-nb/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-nb/strings.xml
index 8a3fe1d..35ad78f 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-nb/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-nb/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Begrenset</string>
   <string name="private_num_non_verizon">Skjult nummer</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ne/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ne/strings.xml
index d6b66aa..5988548 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ne/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ne/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">प्रतिबन्धित</string>
   <string name="private_num_non_verizon">निजी नम्बर</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-nl/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-nl/strings.xml
index 2813a9f..64850c6 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-nl/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-nl/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Beperkt</string>
   <string name="private_num_non_verizon">Privénummer</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-no/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-no/strings.xml
index 8a3fe1d..35ad78f 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-no/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-no/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Begrenset</string>
   <string name="private_num_non_verizon">Skjult nummer</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-pa/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-pa/strings.xml
index 00f7045..cdfa7a1 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-pa/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-pa/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">ਪ੍ਰਤੀਬੰਧਿਤ</string>
   <string name="private_num_non_verizon">ਨਿੱਜੀ ਨੰਬਰ</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-pl/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-pl/strings.xml
index 312b87e..93af5bb 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-pl/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-pl/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Zastrzeżone</string>
   <string name="private_num_non_verizon">Numer prywatny</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-pt-rBR/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-pt-rBR/strings.xml
index 495ad7d..a748055 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-pt-rBR/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restrito</string>
   <string name="private_num_non_verizon">Número particular</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-pt-rPT/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-pt-rPT/strings.xml
index a145003..0ff2342 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-pt-rPT/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restrito</string>
   <string name="private_num_non_verizon">Número privado</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-pt/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-pt/strings.xml
index 495ad7d..a748055 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-pt/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-pt/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restrito</string>
   <string name="private_num_non_verizon">Número particular</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ro/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ro/strings.xml
index 03a0e01..a8faece 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ro/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ro/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Restricționat</string>
   <string name="private_num_non_verizon">Număr privat</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ru/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ru/strings.xml
index c6e5356..666040f 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ru/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ru/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Ограничено</string>
   <string name="private_num_non_verizon">Номер скрыт</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-si/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-si/strings.xml
index 360a2fb..76e6964 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-si/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-si/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">සීමා කළ</string>
   <string name="private_num_non_verizon">පුද්ගලික අංකය</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-sk/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-sk/strings.xml
index 22abe59..1dd219f 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-sk/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-sk/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Obmedzené</string>
   <string name="private_num_non_verizon">Súkromné číslo</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-sl/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-sl/strings.xml
index 5be25d4..da57c50 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-sl/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-sl/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Omejeno</string>
   <string name="private_num_non_verizon">Zasebna številka</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-sq/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-sq/strings.xml
index 3f1c3e4..94544f4 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-sq/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-sq/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">I kufizuar</string>
   <string name="private_num_non_verizon">Numër privat</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-sr/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-sr/strings.xml
index 6803472..c723cab 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-sr/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-sr/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Ограничено</string>
   <string name="private_num_non_verizon">Приватан број</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-sv/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-sv/strings.xml
index a61872c..ed0ba95 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-sv/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-sv/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Hemligt nummer</string>
   <string name="private_num_non_verizon">Privat nummer</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-sw/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-sw/strings.xml
index 26ed3fc..c650be6 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-sw/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-sw/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Zilizozuiwa</string>
   <string name="private_num_non_verizon">Nambari isiyojulikana</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ta/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ta/strings.xml
index 5f64e67..6e01c4e 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ta/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ta/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">வரம்பிட்டவை</string>
   <string name="private_num_non_verizon">தனிப்பட்ட எண்</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-te/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-te/strings.xml
index 95a0f78..7a756e7 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-te/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-te/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">నియంత్రించబడింది</string>
   <string name="private_num_non_verizon">ప్రైవేట్ నంబర్</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-th/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-th/strings.xml
index 78c5f72..5b5fb91 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-th/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-th/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">ถูกจำกัด</string>
   <string name="private_num_non_verizon">หมายเลขส่วนตัว</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-tl/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-tl/strings.xml
index f15f069..bcdb83d 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-tl/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-tl/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Pinaghihigpitan</string>
   <string name="private_num_non_verizon">Pribadong numero</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-tr/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-tr/strings.xml
index 22e49f3..ae68768 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-tr/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-tr/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Kısıtlanmış</string>
   <string name="private_num_non_verizon">Özel numara</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-uk/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-uk/strings.xml
index fd4881c..ac1b2c3 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-uk/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-uk/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Обмежено</string>
   <string name="private_num_non_verizon">Приватний номер</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-ur/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-ur/strings.xml
index 52358ef..07aff5b 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-ur/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-ur/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">ممنوع</string>
   <string name="private_num_non_verizon">نجی نمبر</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-uz/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-uz/strings.xml
index 0504781..08f63e9 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-uz/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-uz/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Cheklangan</string>
   <string name="private_num_non_verizon">Maxfiy raqam</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-vi/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-vi/strings.xml
index bbd2a58..b76fdfc 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-vi/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-vi/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Bị giới hạn</string>
   <string name="private_num_non_verizon">Số cá nhân</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-zh-rCN/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-zh-rCN/strings.xml
index 40c3213..0602a56 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-zh-rCN/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">受限</string>
   <string name="private_num_non_verizon">私密号码</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-zh-rHK/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-zh-rHK/strings.xml
index e687a5f..5ee8ddb 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-zh-rHK/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">受限制</string>
   <string name="private_num_non_verizon">私人號碼</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-zh-rTW/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-zh-rTW/strings.xml
index a497b17..5ee8ddb 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-zh-rTW/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">受限</string>
   <string name="private_num_non_verizon">私人號碼</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values-zu/strings.xml b/java/com/android/dialer/phonenumberutil/res/values-zu/strings.xml
index 22cc7ea..2072000 100644
--- a/java/com/android/dialer/phonenumberutil/res/values-zu/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values-zu/strings.xml
@@ -1,4 +1,3 @@
 <resources>
-  <string name="private_num_verizon">Kuvinjelwe</string>
   <string name="private_num_non_verizon">Inombolo eyimfihlo</string>
 </resources>
diff --git a/java/com/android/dialer/phonenumberutil/res/values/strings.xml b/java/com/android/dialer/phonenumberutil/res/values/strings.xml
index f31883e..82e8af2 100644
--- a/java/com/android/dialer/phonenumberutil/res/values/strings.xml
+++ b/java/com/android/dialer/phonenumberutil/res/values/strings.xml
@@ -15,13 +15,7 @@
   -->
 
 <resources>
-  <!-- String used to display calls from private numbers in the call log and in call UI. For
-    example, if the user gets an incoming phone call from an unknown number, the caller ID will
-    read "Restricted". We only show this string if the user is on the Verizon network. -->
-  <string name="private_num_verizon">Restricted</string>
-
   <!-- String used to display calls from private numbers in the call log. For example, if the user
-    gets an incoming phone call from an unknown number, the caller ID will read "Private number".
-    We only show this string if the user is not on the Verizon network. -->
+    gets an incoming phone call from an unknown number, the caller ID will read "Private number". -->
   <string name="private_num_non_verizon">Private number</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/AndroidManifest.xml b/java/com/android/dialer/postcall/AndroidManifest.xml
deleted file mode 100644
index 82101a0..0000000
--- a/java/com/android/dialer/postcall/AndroidManifest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.postcall">
-
-  <application>
-  <activity
-      android:name="com.android.dialer.postcall.PostCallActivity"
-      android:exported="false"
-      android:theme="@style/Dialer.ThemeBase.NoActionBar"
-      android:windowSoftInputMode="adjustResize"/>
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/postcall/PostCall.java b/java/com/android/dialer/postcall/PostCall.java
index 376cb45..3fc42b5 100644
--- a/java/com/android/dialer/postcall/PostCall.java
+++ b/java/com/android/dialer/postcall/PostCall.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2020-2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,29 +17,28 @@
 
 package com.android.dialer.postcall;
 
+import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.support.annotation.Nullable;
-import android.support.design.widget.BaseTransientBottomBar.BaseCallback;
-import android.support.design.widget.Snackbar;
 import android.telephony.TelephonyManager;
 import android.view.View;
 import android.view.View.OnClickListener;
+
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProvider;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.performancereport.PerformanceReport;
 import com.android.dialer.storage.StorageComponent;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.IntentUtil;
+import com.google.android.material.snackbar.BaseTransientBottomBar;
+import com.google.android.material.snackbar.Snackbar;
+
+import org.lineageos.lib.phone.SensitivePhoneNumbers;
 
 /** Helper class to handle all post call actions. */
 public class PostCall {
@@ -74,39 +74,24 @@
     LogUtil.i("PostCall.promptUserToSendMessage", "returned from call, showing post call SnackBar");
     String number = Assert.isNotNull(getPhoneNumber(activity));
     String message = activity.getString(R.string.post_call_message);
-    EnrichedCallManager manager = EnrichedCallComponent.get(activity).getEnrichedCallManager();
-    EnrichedCallCapabilities capabilities = manager.getCapabilities(number);
     LogUtil.i(
         "PostCall.promptUserToSendMessage",
-        "number: %s, capabilities: %s",
-        LogUtil.sanitizePhoneNumber(number),
-        capabilities);
+        "number: %s",
+        LogUtil.sanitizePhoneNumber(number));
 
-    boolean isRcsPostCall = capabilities != null && capabilities.isPostCallCapable();
-    String actionText =
-        isRcsPostCall
-            ? activity.getString(R.string.post_call_add_message)
-            : activity.getString(R.string.post_call_send_message);
+    String actionText =activity.getString(R.string.post_call_send_message);
 
     OnClickListener onClickListener =
-        v -> {
-          Logger.get(activity)
-              .logImpression(DialerImpression.Type.POST_CALL_PROMPT_USER_TO_SEND_MESSAGE_CLICKED);
-          activity.startActivity(PostCallActivity.newIntent(activity, number, isRcsPostCall));
-        };
+        v -> activity.startActivity(PostCallActivity.newIntent(activity, number, false));
 
-    int durationMs =
-        (int)
-            ConfigProviderComponent.get(activity)
-                .getConfigProvider()
-                .getLong("post_call_prompt_duration_ms", 8_000);
+    int durationMs = 8_000;
     activeSnackbar =
         Snackbar.make(rootView, message, durationMs)
             .setAction(actionText, onClickListener)
             .setActionTextColor(
-                activity.getResources().getColor(R.color.dialer_snackbar_action_text_color));
+                activity.getResources().getColor(R.color.dialer_snackbar_action_text_color,
+                        activity.getTheme()));
     activeSnackbar.show();
-    Logger.get(activity).logImpression(DialerImpression.Type.POST_CALL_PROMPT_USER_TO_SEND_MESSAGE);
     StorageComponent.get(activity)
         .unencryptedSharedPrefs()
         .edit()
@@ -123,9 +108,6 @@
     String number = Assert.isNotNull(getPhoneNumber(activity));
     OnClickListener onClickListener =
         v -> {
-          Logger.get(activity)
-              .logImpression(
-                  DialerImpression.Type.POST_CALL_PROMPT_USER_TO_VIEW_SENT_MESSAGE_CLICKED);
           Intent intent = IntentUtil.getSendSmsIntent(number);
           DialerUtils.startActivityWithErrorToast(activity, intent);
         };
@@ -134,9 +116,10 @@
         Snackbar.make(rootView, message, Snackbar.LENGTH_LONG)
             .setAction(addMessage, onClickListener)
             .setActionTextColor(
-                activity.getResources().getColor(R.color.dialer_snackbar_action_text_color))
+                activity.getResources().getColor(R.color.dialer_snackbar_action_text_color,
+                        activity.getTheme()))
             .addCallback(
-                new BaseCallback<Snackbar>() {
+                new BaseTransientBottomBar.BaseCallback<Snackbar>() {
                   @Override
                   public void onDismissed(Snackbar snackbar, int i) {
                     super.onDismissed(snackbar, i);
@@ -144,8 +127,6 @@
                   }
                 });
     activeSnackbar.show();
-    Logger.get(activity)
-        .logImpression(DialerImpression.Type.POST_CALL_PROMPT_USER_TO_VIEW_SENT_MESSAGE);
     StorageComponent.get(activity)
         .unencryptedSharedPrefs()
         .edit()
@@ -180,20 +161,6 @@
         .apply();
   }
 
-  /**
-   * Restart performance recording if there is a recent call (disconnect time to now is under
-   * threshold)
-   */
-  public static void restartPerformanceRecordingIfARecentCallExist(Context context) {
-    long disconnectTimeMillis =
-        StorageComponent.get(context)
-            .unencryptedSharedPrefs()
-            .getLong(PostCall.KEY_POST_CALL_CALL_DISCONNECT_TIME, -1);
-    if (disconnectTimeMillis != -1 && PerformanceReport.isRecording()) {
-      PerformanceReport.startRecording();
-    }
-  }
-
   private static void clear(Context context) {
     activeSnackbar = null;
 
@@ -217,16 +184,19 @@
     long callDurationMillis = disconnectTimeMillis - connectTimeMillis;
 
     boolean callDisconnectedByUser = manager.getBoolean(KEY_POST_CALL_DISCONNECT_PRESSED, false);
+    String number = manager.getString(KEY_POST_CALL_CALL_NUMBER, null);
 
-    ConfigProvider binding = ConfigProviderComponent.get(context).getConfigProvider();
+    boolean isSensitiveNumber = SensitivePhoneNumbers.getInstance().isSensitiveNumber(context,
+            number, INVALID_SUBSCRIPTION_ID);
+
     return disconnectTimeMillis != -1
         && connectTimeMillis != -1
         && isSimReady(context)
-        && binding.getLong("postcall_last_call_threshold", 30_000) > timeSinceDisconnect
-        && (connectTimeMillis == 0
-            || binding.getLong("postcall_call_duration_threshold", 35_000) > callDurationMillis)
+        && 30_000 > timeSinceDisconnect
+        && (connectTimeMillis == 0 || 35_000 > callDurationMillis)
         && getPhoneNumber(context) != null
-        && callDisconnectedByUser;
+        && callDisconnectedByUser
+        && !isSensitiveNumber;
   }
 
   private static boolean shouldPromptUserToViewSentMessage(Context context) {
@@ -243,9 +213,7 @@
   }
 
   private static boolean isEnabled(Context context) {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("enable_post_call_prod", true);
+    return true;
   }
 
   private static boolean isSimReady(Context context) {
diff --git a/java/com/android/dialer/postcall/PostCallActivity.java b/java/com/android/dialer/postcall/PostCallActivity.java
index 1d3b611..44e2014 100644
--- a/java/com/android/dialer/postcall/PostCallActivity.java
+++ b/java/com/android/dialer/postcall/PostCallActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,18 +20,20 @@
 import android.Manifest.permission;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
 import android.telephony.SmsManager;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.widget.DialerToolbar;
 import com.android.dialer.widget.MessageFragment;
@@ -41,12 +44,18 @@
   public static final String KEY_PHONE_NUMBER = "phone_number";
   public static final String KEY_MESSAGE = "message";
   public static final String KEY_RCS_POST_CALL = "rcs_post_call";
-  private static final int REQUEST_CODE_SEND_SMS = 1;
+
+  private final ActivityResultLauncher<String> smsPermissionLauncher =
+          registerForActivityResult(new ActivityResultContracts.RequestPermission(),
+                  grantResult -> {
+            PermissionsUtil.permissionRequested(this, permission.SEND_SMS);
+            onMessageFragmentSendMessage(getIntent().getStringExtra(KEY_MESSAGE));
+          });
 
   private boolean useRcs;
 
   public static Intent newIntent(
-      @NonNull Context context, @NonNull String number, boolean isRcsPostCall) {
+          @NonNull Context context, @NonNull String number, boolean isRcsPostCall) {
     Intent intent = new Intent(Assert.isNotNull(context), PostCallActivity.class);
     intent.putExtra(KEY_PHONE_NUMBER, Assert.isNotNull(number));
     intent.putExtra(KEY_RCS_POST_CALL, isRcsPostCall);
@@ -91,12 +100,11 @@
 
     if (useRcs) {
       LogUtil.i("PostCallActivity.onMessageFragmentSendMessage", "sending post call Rcs.");
-      getEnrichedCallManager().sendPostCallNote(number, message);
       PostCall.onMessageSent(this, number);
       finish();
     } else if (PermissionsUtil.hasPermission(this, permission.SEND_SMS)) {
       LogUtil.i("PostCallActivity.sendMessage", "Sending post call SMS.");
-      SmsManager smsManager = SmsManager.getDefault();
+      SmsManager smsManager = getSystemService(SmsManager.class);
       smsManager.sendMultipartTextMessage(
           number, null, smsManager.divideMessage(message), null, null);
       PostCall.onMessageSent(this, number);
@@ -104,7 +112,7 @@
     } else if (PermissionsUtil.isFirstRequest(this, permission.SEND_SMS)
         || shouldShowRequestPermissionRationale(permission.SEND_SMS)) {
       LogUtil.i("PostCallActivity.sendMessage", "Requesting SMS_SEND permission.");
-      requestPermissions(new String[] {permission.SEND_SMS}, REQUEST_CODE_SEND_SMS);
+      smsPermissionLauncher.launch(permission.SEND_SMS);
     } else {
       LogUtil.i(
           "PostCallActivity.sendMessage", "Permission permanently denied, sending to settings.");
@@ -115,25 +123,4 @@
       startActivity(intent);
     }
   }
-
-  @Override
-  public void onMessageFragmentAfterTextChange(String message) {}
-
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
-    if (permissions.length > 0 && permissions[0].equals(permission.SEND_SMS)) {
-      PermissionsUtil.permissionRequested(this, permissions[0]);
-    }
-    if (requestCode == REQUEST_CODE_SEND_SMS
-        && grantResults.length > 0
-        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-      onMessageFragmentSendMessage(getIntent().getStringExtra(KEY_MESSAGE));
-    }
-  }
-
-  @NonNull
-  private EnrichedCallManager getEnrichedCallManager() {
-    return EnrichedCallComponent.get(this).getEnrichedCallManager();
-  }
 }
diff --git a/java/com/android/dialer/postcall/res/values-af/strings.xml b/java/com/android/dialer/postcall/res/values-af/strings.xml
index 229ff80..86773c4 100644
--- a/java/com/android/dialer/postcall/res/values-af/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-af/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Dit is dringend. Bel my terug.</string>
   <string name="post_call_message_2">Bel my terug wanneer jy \'n tydjie het.</string>
   <string name="post_call_message_3">Nie dringend nie, ons kan later klets.</string>
-  <string name="post_call_add_message">Voeg boodskap by</string>
-  <string name="post_call_send_message">Stuur boodskap</string>
+    <string name="post_call_send_message">Stuur boodskap</string>
   <string name="post_call_message_sent">Boodskap is gestuur</string>
   <string name="view">Bekyk</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-am/strings.xml b/java/com/android/dialer/postcall/res/values-am/strings.xml
index 4ffe2ae..bfac7c0 100644
--- a/java/com/android/dialer/postcall/res/values-am/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-am/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">ይህ አስቸኳይ ነው። መልሰው ይደውሉልኝ።</string>
   <string name="post_call_message_2">ጊዜ ሲኖርዎት መልሰው ይደውሉልኝ።</string>
   <string name="post_call_message_3">አስቸኳይ አይደለም። በኋላ መወያየት እንችላለን።</string>
-  <string name="post_call_add_message">መልዕክት አክል</string>
-  <string name="post_call_send_message">መልዕክት ይላኩ</string>
+    <string name="post_call_send_message">መልዕክት ይላኩ</string>
   <string name="post_call_message_sent">መልዕክት ልከዋል</string>
   <string name="view">አሳይ</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ar/strings.xml b/java/com/android/dialer/postcall/res/values-ar/strings.xml
index 8bed4a8..eaca12b 100644
--- a/java/com/android/dialer/postcall/res/values-ar/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ar/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">إنه أمر عاجل. عاود الاتصال بي.</string>
   <string name="post_call_message_2">عاود الاتصال بي عندما يتوفر لك الوقت.</string>
   <string name="post_call_message_3">الأمر ليس عاجلاً، يمكننا المحادثة لاحقًا.</string>
-  <string name="post_call_add_message">إضافة رسالة</string>
-  <string name="post_call_send_message">إرسال رسالة</string>
+    <string name="post_call_send_message">إرسال رسالة</string>
   <string name="post_call_message_sent">تم إرسال الرسالة</string>
   <string name="view">عرض</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-az/strings.xml b/java/com/android/dialer/postcall/res/values-az/strings.xml
index a8d6fc3..aad53ad 100644
--- a/java/com/android/dialer/postcall/res/values-az/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-az/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Bu çox vacibdir. Mənə geri zəng edin.</string>
   <string name="post_call_message_2">Vaxtın olanda mənə geri zəng edin.</string>
   <string name="post_call_message_3">Vacib deyil, daha sonra söhbət edə bilərik.</string>
-  <string name="post_call_add_message">Mesaj əlavə edin</string>
-  <string name="post_call_send_message">Mesaj göndərin</string>
+    <string name="post_call_send_message">Mesaj göndərin</string>
   <string name="post_call_message_sent">Mesaj göndərildi</string>
   <string name="view">Baxın</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/postcall/res/values-b+sr+Latn/strings.xml
index 8146805..0c61d38 100644
--- a/java/com/android/dialer/postcall/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-b+sr+Latn/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Hitno je. Uzvratite mi poziv.</string>
   <string name="post_call_message_2">Pozovite me kad budete imali vremena.</string>
   <string name="post_call_message_3">Nije hitno, možemo da ćaskamo kasnije.</string>
-  <string name="post_call_add_message">Dodaj poruku</string>
-  <string name="post_call_send_message">Pošaljite poruku</string>
+    <string name="post_call_send_message">Pošaljite poruku</string>
   <string name="post_call_message_sent">Poruka je poslata</string>
   <string name="view">Prikaži</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-be/strings.xml b/java/com/android/dialer/postcall/res/values-be/strings.xml
index d021a4f..b976580 100644
--- a/java/com/android/dialer/postcall/res/values-be/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-be/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Гэта тэрмінова. Перазваніце мне.</string>
   <string name="post_call_message_2">Перазваніце мне, калі будзеце мець час.</string>
   <string name="post_call_message_3">Не тэрмінова. Можам пагаварыць пазней.</string>
-  <string name="post_call_add_message">Дадаць паведамленне</string>
-  <string name="post_call_send_message">Адправіць паведамленне</string>
+    <string name="post_call_send_message">Адправіць паведамленне</string>
   <string name="post_call_message_sent">Паведамленне адпраўлена</string>
   <string name="view">Праглядзець</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-bg/strings.xml b/java/com/android/dialer/postcall/res/values-bg/strings.xml
index be8b6a9..084918e 100644
--- a/java/com/android/dialer/postcall/res/values-bg/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-bg/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Спешно е. Обадете ми се.</string>
   <string name="post_call_message_2">Обадете ми се, когато имате време.</string>
   <string name="post_call_message_3">Не е спешно, можем да говорим по-късно.</string>
-  <string name="post_call_add_message">Добавяне на съобщение</string>
-  <string name="post_call_send_message">Изпращане на съобщение</string>
+    <string name="post_call_send_message">Изпращане на съобщение</string>
   <string name="post_call_message_sent">Съобщението бе изпратено</string>
   <string name="view">Преглед</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-bn/strings.xml b/java/com/android/dialer/postcall/res/values-bn/strings.xml
index 808352e..a0cde35 100644
--- a/java/com/android/dialer/postcall/res/values-bn/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-bn/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">এটি জরুরী৷ আমায় ফোন করুন৷</string>
   <string name="post_call_message_2">আপনার হাতে যখন সময় হবে তখন আমায় ফোন করুন৷</string>
   <string name="post_call_message_3">জরুরী নয়, আমরা পরে চ্যাট করতে পারি৷</string>
-  <string name="post_call_add_message">বার্তা যোগ করুন</string>
-  <string name="post_call_send_message">বার্তা পাঠান</string>
+    <string name="post_call_send_message">বার্তা পাঠান</string>
   <string name="post_call_message_sent">বার্তা পাঠানো হয়েছে</string>
   <string name="view">দেখুন</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-bs/strings.xml b/java/com/android/dialer/postcall/res/values-bs/strings.xml
index 153d855..78f47a4 100644
--- a/java/com/android/dialer/postcall/res/values-bs/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-bs/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Hitno je. Nazovi me.</string>
   <string name="post_call_message_2">Nazovi me kad mogneš.</string>
   <string name="post_call_message_3">Nije hitno, možemo razgovarati kasnije.</string>
-  <string name="post_call_add_message">Dodaj poruku</string>
-  <string name="post_call_send_message">Pošaljite poruku</string>
+    <string name="post_call_send_message">Pošaljite poruku</string>
   <string name="post_call_message_sent">Poruka je poslana</string>
   <string name="view">Prikaži</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ca/strings.xml b/java/com/android/dialer/postcall/res/values-ca/strings.xml
index 6d9491e..1c90873 100644
--- a/java/com/android/dialer/postcall/res/values-ca/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ca/strings.xml
@@ -4,7 +4,6 @@
   <string name="post_call_message_1">És urgent. Truca\'m.</string>
   <string name="post_call_message_2">Truca\'m quan tinguis una estona.</string>
   <string name="post_call_message_3">No és urgent. Parlem més tard.</string>
-  <string name="post_call_add_message">Afegeix un missatge</string>
   <string name="post_call_send_message">Envia un missatge</string>
   <string name="post_call_message_sent">El missatge s\'ha enviat</string>
   <string name="view">Mostra</string>
diff --git a/java/com/android/dialer/postcall/res/values-cs/strings.xml b/java/com/android/dialer/postcall/res/values-cs/strings.xml
index 158f340..fcd2825 100644
--- a/java/com/android/dialer/postcall/res/values-cs/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-cs/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Zavolej mi, je to naléhavé.</string>
   <string name="post_call_message_2">Zavolej mi, až budeš mít čas.</string>
   <string name="post_call_message_3">Neděje si nic naléhavého, zavoláme si později.</string>
-  <string name="post_call_add_message">Přidat zprávu</string>
-  <string name="post_call_send_message">Poslat zprávu</string>
+    <string name="post_call_send_message">Poslat zprávu</string>
   <string name="post_call_message_sent">Zpráva byla odeslána</string>
   <string name="view">Zobrazit</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-da/strings.xml b/java/com/android/dialer/postcall/res/values-da/strings.xml
index cb74033..b1aaafc 100644
--- a/java/com/android/dialer/postcall/res/values-da/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-da/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Det haster. Ring tilbage til mig.</string>
   <string name="post_call_message_2">Ring tilbage til mig, når du har tid.</string>
   <string name="post_call_message_3">Det haster ikke. Vi kan tale sammen senere.</string>
-  <string name="post_call_add_message">Tilføj besked</string>
-  <string name="post_call_send_message">Send besked</string>
+    <string name="post_call_send_message">Send besked</string>
   <string name="post_call_message_sent">Beskeden blev sendt</string>
   <string name="view">Se</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-de/strings.xml b/java/com/android/dialer/postcall/res/values-de/strings.xml
index 32cd3f0..ed8ecc9 100644
--- a/java/com/android/dialer/postcall/res/values-de/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-de/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Es ist dringend. Bitte zurückrufen.</string>
   <string name="post_call_message_2">Bitte bei Gelegenheit zurückrufen.</string>
   <string name="post_call_message_3">Nicht dringend, wir können später sprechen.</string>
-  <string name="post_call_add_message">Nachricht hinzufügen</string>
-  <string name="post_call_send_message">Nachricht senden</string>
+    <string name="post_call_send_message">Nachricht senden</string>
   <string name="post_call_message_sent">Nachricht gesendet</string>
   <string name="view">Ansehen</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-el/strings.xml b/java/com/android/dialer/postcall/res/values-el/strings.xml
index 7023b33..b62f4aa 100644
--- a/java/com/android/dialer/postcall/res/values-el/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-el/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Είναι επείγον. Καλέστε με.</string>
   <string name="post_call_message_2">Καλέστε με όταν έχετε λίγο χρόνο.</string>
   <string name="post_call_message_3">Τίποτα επείγον, μπορούμε να τα πούμε αργότερα.</string>
-  <string name="post_call_add_message">Προσθήκη μηνύματος</string>
-  <string name="post_call_send_message">Αποστολή μηνύματος</string>
+    <string name="post_call_send_message">Αποστολή μηνύματος</string>
   <string name="post_call_message_sent">Το μήνυμα εστάλη</string>
   <string name="view">Προβολή</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-en-rAU/strings.xml b/java/com/android/dialer/postcall/res/values-en-rAU/strings.xml
index ba0ecde..f8d1549 100644
--- a/java/com/android/dialer/postcall/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-en-rAU/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">This is urgent. Call me back.</string>
   <string name="post_call_message_2">Call me back when you have time.</string>
   <string name="post_call_message_3">Not urgent – we can chat later.</string>
-  <string name="post_call_add_message">Add message</string>
-  <string name="post_call_send_message">Send message</string>
+    <string name="post_call_send_message">Send message</string>
   <string name="post_call_message_sent">Message sent</string>
   <string name="view">View</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-en-rGB/strings.xml b/java/com/android/dialer/postcall/res/values-en-rGB/strings.xml
index ba0ecde..f8d1549 100644
--- a/java/com/android/dialer/postcall/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-en-rGB/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">This is urgent. Call me back.</string>
   <string name="post_call_message_2">Call me back when you have time.</string>
   <string name="post_call_message_3">Not urgent – we can chat later.</string>
-  <string name="post_call_add_message">Add message</string>
-  <string name="post_call_send_message">Send message</string>
+    <string name="post_call_send_message">Send message</string>
   <string name="post_call_message_sent">Message sent</string>
   <string name="view">View</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-en-rIN/strings.xml b/java/com/android/dialer/postcall/res/values-en-rIN/strings.xml
index ba0ecde..f8d1549 100644
--- a/java/com/android/dialer/postcall/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-en-rIN/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">This is urgent. Call me back.</string>
   <string name="post_call_message_2">Call me back when you have time.</string>
   <string name="post_call_message_3">Not urgent – we can chat later.</string>
-  <string name="post_call_add_message">Add message</string>
-  <string name="post_call_send_message">Send message</string>
+    <string name="post_call_send_message">Send message</string>
   <string name="post_call_message_sent">Message sent</string>
   <string name="view">View</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-es-rUS/strings.xml b/java/com/android/dialer/postcall/res/values-es-rUS/strings.xml
index ee49628..3daed30 100644
--- a/java/com/android/dialer/postcall/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-es-rUS/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Es urgente. Llámame.</string>
   <string name="post_call_message_2">Llámame cuando tengas un momento.</string>
   <string name="post_call_message_3">No es urgente. Podemos hablar más tarde.</string>
-  <string name="post_call_add_message">Agregar mensaje</string>
-  <string name="post_call_send_message">Enviar mensaje</string>
+    <string name="post_call_send_message">Enviar mensaje</string>
   <string name="post_call_message_sent">Se envió el mensaje</string>
   <string name="view">Ver</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-es/strings.xml b/java/com/android/dialer/postcall/res/values-es/strings.xml
index dcc1ad7..b44224a 100644
--- a/java/com/android/dialer/postcall/res/values-es/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-es/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Llámame, es urgente.</string>
   <string name="post_call_message_2">Llámame cuando puedas.</string>
   <string name="post_call_message_3">No es urgente, podemos hablar luego.</string>
-  <string name="post_call_add_message">Añade un mensaje</string>
-  <string name="post_call_send_message">Enviar mensaje</string>
+    <string name="post_call_send_message">Enviar mensaje</string>
   <string name="post_call_message_sent">Mensaje enviado</string>
   <string name="view">Ver</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-et/strings.xml b/java/com/android/dialer/postcall/res/values-et/strings.xml
index da09e4b..02d7350 100644
--- a/java/com/android/dialer/postcall/res/values-et/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-et/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Sellega on kiire. Helistage tagasi.</string>
   <string name="post_call_message_2">Helistage tagasi, kui teil on rohkem aega.</string>
   <string name="post_call_message_3">Sellega pole kiiret, võime hiljem vestalda.</string>
-  <string name="post_call_add_message">Lisage sõnum</string>
-  <string name="post_call_send_message">Saada sõnum</string>
+    <string name="post_call_send_message">Saada sõnum</string>
   <string name="post_call_message_sent">Sõnum on saadetud</string>
   <string name="view">Kuva</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-eu/strings.xml b/java/com/android/dialer/postcall/res/values-eu/strings.xml
index b0c0549..270a72f 100644
--- a/java/com/android/dialer/postcall/res/values-eu/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-eu/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Dei iezadazu. Premiazkoa da.</string>
   <string name="post_call_message_2">Dei iezadazu denbora duzunean.</string>
   <string name="post_call_message_3">Geroago hitz egin dezakegu, ez da premiazkoa.</string>
-  <string name="post_call_add_message">Gehitu mezua</string>
-  <string name="post_call_send_message">Bidali mezua</string>
+    <string name="post_call_send_message">Bidali mezua</string>
   <string name="post_call_message_sent">Bidali da mezua</string>
   <string name="view">Ikusi</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-fa/strings.xml b/java/com/android/dialer/postcall/res/values-fa/strings.xml
index a1be369..843b6ab 100644
--- a/java/com/android/dialer/postcall/res/values-fa/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-fa/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">ضروریه. تماس بگیر.</string>
   <string name="post_call_message_2">با من تماس بگیر هنگامی که وقت کردی.</string>
   <string name="post_call_message_3">ضروری نیست، می‌توانیم بعداً گپ بزنیم.</string>
-  <string name="post_call_add_message">افزودن پیام</string>
-  <string name="post_call_send_message">ارسال پیام</string>
+    <string name="post_call_send_message">ارسال پیام</string>
   <string name="post_call_message_sent">پیام ارسال شد</string>
   <string name="view">مشاهده</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-fi/strings.xml b/java/com/android/dialer/postcall/res/values-fi/strings.xml
index eefb00f..9cd8342 100644
--- a/java/com/android/dialer/postcall/res/values-fi/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-fi/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Asia on kiireinen. Soittakaa minulle takaisin.</string>
   <string name="post_call_message_2">Soittakaa minulle takaisin, kun teillä on hetki aikaa.</string>
   <string name="post_call_message_3">Asia ei ole kiireellinen, voimme puhua myöhemmin.</string>
-  <string name="post_call_add_message">Lisää viesti</string>
-  <string name="post_call_send_message">Lähetä viesti</string>
+    <string name="post_call_send_message">Lähetä viesti</string>
   <string name="post_call_message_sent">Viesti lähetetty</string>
   <string name="view">Näytä</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-fr-rCA/strings.xml b/java/com/android/dialer/postcall/res/values-fr-rCA/strings.xml
index 799faa8..28465d5 100644
--- a/java/com/android/dialer/postcall/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-fr-rCA/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">C\'est urgent. Rappelez-moi.</string>
   <string name="post_call_message_2">Rappelez-moi quand vous aurez un peu de temps.</string>
   <string name="post_call_message_3">Ce n\'est pas urgent. Nous pourrons clavarder plus tard.</string>
-  <string name="post_call_add_message">Ajouter un message</string>
-  <string name="post_call_send_message">Envoyer le message</string>
+    <string name="post_call_send_message">Envoyer le message</string>
   <string name="post_call_message_sent">Message envoyé</string>
   <string name="view">Afficher</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-fr/strings.xml b/java/com/android/dialer/postcall/res/values-fr/strings.xml
index fe6b023..62dd48a 100644
--- a/java/com/android/dialer/postcall/res/values-fr/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-fr/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Veuillez me rappeler de toute urgence.</string>
   <string name="post_call_message_2">Veuillez me rappeler dès que vous avez un moment.</string>
   <string name="post_call_message_3">Aucune urgence. On se recontacte ultérieurement.</string>
-  <string name="post_call_add_message">Ajouter un message</string>
-  <string name="post_call_send_message">Envoyer un message</string>
+    <string name="post_call_send_message">Envoyer un message</string>
   <string name="post_call_message_sent">Message envoyé</string>
   <string name="view">Afficher</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-gl/strings.xml b/java/com/android/dialer/postcall/res/values-gl/strings.xml
index ce062f2..fc80d02 100644
--- a/java/com/android/dialer/postcall/res/values-gl/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-gl/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">É urxente. Chámame.</string>
   <string name="post_call_message_2">Chámame cando teñas tempo.</string>
   <string name="post_call_message_3">Non é urxente. Podemos falar máis tarde.</string>
-  <string name="post_call_add_message">Engade unha mensaxe</string>
-  <string name="post_call_send_message">Envia unha mensaxe</string>
+    <string name="post_call_send_message">Envia unha mensaxe</string>
   <string name="post_call_message_sent">Enviouse a mensaxe</string>
   <string name="view">Ver</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-gu/strings.xml b/java/com/android/dialer/postcall/res/values-gu/strings.xml
index 3f36977..9ddb13a 100644
--- a/java/com/android/dialer/postcall/res/values-gu/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-gu/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">અગત્યનું કામ છે. મને ફરી કૉલ કરો.</string>
   <string name="post_call_message_2">તમારી પાસે થોડો સમય હોય ત્યારે મને ફરી કૉલ કરો.</string>
   <string name="post_call_message_3">કોઇ ખાસ કામ નથી, આપણે પછી ચેટ કરી શકીએ.</string>
-  <string name="post_call_add_message">સંદેશ ઉમેરો</string>
-  <string name="post_call_send_message">સંદેશ મોકલો</string>
+    <string name="post_call_send_message">સંદેશ મોકલો</string>
   <string name="post_call_message_sent">સંદેશ મોકલ્યો</string>
   <string name="view">જુઓ</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-hi/strings.xml b/java/com/android/dialer/postcall/res/values-hi/strings.xml
index d9bffdd..2cf44c6 100644
--- a/java/com/android/dialer/postcall/res/values-hi/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-hi/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">यह बहुत ज़रूरी है. मुझे वापस कॉल करें.</string>
   <string name="post_call_message_2">आपके पास कुछ समय होने पर मुझे वापस कॉल करें.</string>
   <string name="post_call_message_3">ज़रूरी नहीं है, हम बाद में चैट कर सकते हैं.</string>
-  <string name="post_call_add_message">संदेश जोड़ें</string>
-  <string name="post_call_send_message">संदेश भेजें</string>
+    <string name="post_call_send_message">संदेश भेजें</string>
   <string name="post_call_message_sent">संदेश भेजा गया</string>
   <string name="view">देखें</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-hr/strings.xml b/java/com/android/dialer/postcall/res/values-hr/strings.xml
index 073e3fc..c64dcfa 100644
--- a/java/com/android/dialer/postcall/res/values-hr/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-hr/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Ovo je hitno. Uzvrati mi poziv.</string>
   <string name="post_call_message_2">Uzvrati mi poziv kada uhvatiš vremena.</string>
   <string name="post_call_message_3">Nije hitno, možemo chatati kasnije.</string>
-  <string name="post_call_add_message">Dodaj poruku</string>
-  <string name="post_call_send_message">Slanje poruke</string>
+    <string name="post_call_send_message">Slanje poruke</string>
   <string name="post_call_message_sent">Poruka je poslana</string>
   <string name="view">Prikaži</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-hu/strings.xml b/java/com/android/dialer/postcall/res/values-hu/strings.xml
index 46abc88..af478bc 100644
--- a/java/com/android/dialer/postcall/res/values-hu/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-hu/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Sürgős. Hívjon vissza.</string>
   <string name="post_call_message_2">Hívjon vissza, ha alkalmas.</string>
   <string name="post_call_message_3">Nem sürgős, ráér később.</string>
-  <string name="post_call_add_message">Üzenet hozzáadása</string>
-  <string name="post_call_send_message">Üzenet küldése</string>
+    <string name="post_call_send_message">Üzenet küldése</string>
   <string name="post_call_message_sent">Üzenet elküldve</string>
   <string name="view">Megtekintés</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-hy/strings.xml b/java/com/android/dialer/postcall/res/values-hy/strings.xml
index 77db258..5aa88cc 100644
--- a/java/com/android/dialer/postcall/res/values-hy/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-hy/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Շտապ է: Հետ զանգիր ինձ:</string>
   <string name="post_call_message_2">Հետ զանգիր, երբ ժամանակ ունենաս:</string>
   <string name="post_call_message_3">Շտապ չէ, կարող ենք հետո խոսել:</string>
-  <string name="post_call_add_message">Ավելացնել հաղորդագրություն</string>
-  <string name="post_call_send_message">Ուղարկել հաղորդագրություն</string>
+    <string name="post_call_send_message">Ուղարկել հաղորդագրություն</string>
   <string name="post_call_message_sent">Հաղորդագրությունն ուղարկվել է</string>
   <string name="view">Դիտել</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-in/strings.xml b/java/com/android/dialer/postcall/res/values-in/strings.xml
index a0d2f2f..3b60a87 100644
--- a/java/com/android/dialer/postcall/res/values-in/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-in/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Ini penting. Telepon saya balik.</string>
   <string name="post_call_message_2">Telepon saya balik jika Anda memiliki waktu luang.</string>
   <string name="post_call_message_3">Tidak penting, kita bisa chatting nanti.</string>
-  <string name="post_call_add_message">Tambahkan pesan</string>
-  <string name="post_call_send_message">Kirim pesan</string>
+    <string name="post_call_send_message">Kirim pesan</string>
   <string name="post_call_message_sent">Pesan terkirim</string>
   <string name="view">Lihat</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-is/strings.xml b/java/com/android/dialer/postcall/res/values-is/strings.xml
index e8e46a1..12adc70 100644
--- a/java/com/android/dialer/postcall/res/values-is/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-is/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Þetta er áríðandi. Hringdu í mig.</string>
   <string name="post_call_message_2">Hringdu í mig þegar þú hefur tíma.</string>
   <string name="post_call_message_3">Ekkert áríðandi, við getum spjallað síðar.</string>
-  <string name="post_call_add_message">Senda skilaboð</string>
-  <string name="post_call_send_message">Senda skilaboð</string>
+    <string name="post_call_send_message">Senda skilaboð</string>
   <string name="post_call_message_sent">Skilaboð send</string>
   <string name="view">Skoða</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-it/strings.xml b/java/com/android/dialer/postcall/res/values-it/strings.xml
index 2bb1350..d046422 100644
--- a/java/com/android/dialer/postcall/res/values-it/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-it/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">È urgente. Richiamami.</string>
   <string name="post_call_message_2">Richiamami quando hai tempo.</string>
   <string name="post_call_message_3">Non è urgente, possiamo parlare più tardi.</string>
-  <string name="post_call_add_message">Aggiungi messaggio</string>
-  <string name="post_call_send_message">Invia messaggio</string>
+    <string name="post_call_send_message">Invia messaggio</string>
   <string name="post_call_message_sent">Messaggio inviato</string>
   <string name="view">Visualizza</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-iw/strings.xml b/java/com/android/dialer/postcall/res/values-iw/strings.xml
index 0d23712..d82c0e5 100644
--- a/java/com/android/dialer/postcall/res/values-iw/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-iw/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">זה דחוף. תוכל/י לחזור אלי?</string>
   <string name="post_call_message_2">תוכל/י לחזור אלי כשיהיה לך זמן?</string>
   <string name="post_call_message_3">זה לא דחוף. אנחנו יכולים לדבר אחר כך.</string>
-  <string name="post_call_add_message">הוסף הודעה</string>
-  <string name="post_call_send_message">שליחת הודעה</string>
+    <string name="post_call_send_message">שליחת הודעה</string>
   <string name="post_call_message_sent">ההודעה נשלחה</string>
   <string name="view">הצג</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ja/strings.xml b/java/com/android/dialer/postcall/res/values-ja/strings.xml
index 4249ccd..b19b355 100644
--- a/java/com/android/dialer/postcall/res/values-ja/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ja/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">至急お伝えしたいことがあるので、折り返しお電話ください。</string>
   <string name="post_call_message_2">お時間のあるときにお電話ください。</string>
   <string name="post_call_message_3">急ぎではないので、また後でかけ直します。</string>
-  <string name="post_call_add_message">メッセージを追加できます</string>
-  <string name="post_call_send_message">メッセージを送信</string>
+    <string name="post_call_send_message">メッセージを送信</string>
   <string name="post_call_message_sent">メッセージを送信しました</string>
   <string name="view">表示</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ka/strings.xml b/java/com/android/dialer/postcall/res/values-ka/strings.xml
index ecd8686..2a87465 100644
--- a/java/com/android/dialer/postcall/res/values-ka/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ka/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">ეს სასწრაფოა. გადმომირეკე.</string>
   <string name="post_call_message_2">დამირეკე, როცა დრო გექნება.</string>
   <string name="post_call_message_3">სასწრაფო არ არის, შეგვიძლია ვისაუბროთ მოგვიანებით.</string>
-  <string name="post_call_add_message">შეტყობინების დამატება</string>
-  <string name="post_call_send_message">შეტყობინების გაგზავნა</string>
+    <string name="post_call_send_message">შეტყობინების გაგზავნა</string>
   <string name="post_call_message_sent">შეტყობინება გაიგზავნა</string>
   <string name="view">ნახვა</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-kk/strings.xml b/java/com/android/dialer/postcall/res/values-kk/strings.xml
index 2d2fee1..0f9fcdd 100644
--- a/java/com/android/dialer/postcall/res/values-kk/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-kk/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Шұғыл шаруа. Маған қайта қоңырау шалыңыз.</string>
   <string name="post_call_message_2">Уақытыңыз болғанда, маған қайта қоңырау шалыңыз.</string>
   <string name="post_call_message_3">Шұғыл емес, кейінірек сөйлесерміз.</string>
-  <string name="post_call_add_message">Хабар қосу</string>
-  <string name="post_call_send_message">Хабарды жіберу</string>
+    <string name="post_call_send_message">Хабарды жіберу</string>
   <string name="post_call_message_sent">Хабар жіберілді</string>
   <string name="view">Көру</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-km/strings.xml b/java/com/android/dialer/postcall/res/values-km/strings.xml
index 3b97ba3..3ae1b6d 100644
--- a/java/com/android/dialer/postcall/res/values-km/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-km/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">នេះជាការបន្ទាន់។ សូមហៅទូរស័ព្ទមកខ្ញុំវិញ។</string>
   <string name="post_call_message_2">សូមហៅទូរស័ព្ទមកខ្ញុំវិញនៅពេលអ្នកឆ្លៀតពេលបានខ្លះ។</string>
   <string name="post_call_message_3">មិនបន្ទាន់ទេ យើងអាចជជែកគ្នានៅពេលក្រោយ។</string>
-  <string name="post_call_add_message">បន្ថែមសារ</string>
-  <string name="post_call_send_message">ផ្ញើ​សារ</string>
+    <string name="post_call_send_message">ផ្ញើ​សារ</string>
   <string name="post_call_message_sent">បានផ្ញើសាររួចហើយ</string>
   <string name="view">មើល</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-kn/strings.xml b/java/com/android/dialer/postcall/res/values-kn/strings.xml
index 2a9dca6..d7cd780 100644
--- a/java/com/android/dialer/postcall/res/values-kn/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-kn/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">ತುರ್ತಾಗಿ ನನಗೆ ತಕ್ಷಣ ಕರೆ ಮಾಡಿ.</string>
   <string name="post_call_message_2">ನಿಮಗೆ ಸಮಯವಿದ್ದಾಗ ನನಗೆ ಕರೆ ಮಾಡಿ.</string>
   <string name="post_call_message_3">ಅವಸರವಿಲ್ಲ, ನಾವು ನಂತರ ಚಾಟ್ ಮಾಡಬಹುದು.</string>
-  <string name="post_call_add_message">ಸಂದೇಶವನ್ನು ಸೇರಿಸಿ</string>
-  <string name="post_call_send_message">ಸಂದೇಶ ಕಳುಹಿಸಿ</string>
+    <string name="post_call_send_message">ಸಂದೇಶ ಕಳುಹಿಸಿ</string>
   <string name="post_call_message_sent">ಸಂದೇಶ ಕಳುಹಿಸಲಾಗಿದೆ</string>
   <string name="view">ವೀಕ್ಷಿಸಿ</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ko/strings.xml b/java/com/android/dialer/postcall/res/values-ko/strings.xml
index 5805db4..6ee8890 100644
--- a/java/com/android/dialer/postcall/res/values-ko/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ko/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">급한 용무이니 전화해 주세요.</string>
   <string name="post_call_message_2">시간 나실 때 전화해 주세요.</string>
   <string name="post_call_message_3">급한 용무는 아니니 나중에 다시 연락드릴게요.</string>
-  <string name="post_call_add_message">메시지를 추가하시겠습니까?</string>
-  <string name="post_call_send_message">메시지 보내기</string>
+    <string name="post_call_send_message">메시지 보내기</string>
   <string name="post_call_message_sent">메시지 전송됨</string>
   <string name="view">보기</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ky/strings.xml b/java/com/android/dialer/postcall/res/values-ky/strings.xml
index afa227d..2a2d2e3 100644
--- a/java/com/android/dialer/postcall/res/values-ky/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ky/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Бул шашылыш нерсе. Мага кайра чалыңыз.</string>
   <string name="post_call_message_2">Убактыңыз болгондо мага кайра чалып коюңуз.</string>
   <string name="post_call_message_3">Шашылыш эмес, биз кийинчерээк маектеше алабыз.</string>
-  <string name="post_call_add_message">Билдирүүнү кошуңуз</string>
-  <string name="post_call_send_message">Билдирүү жөнөтүү</string>
+    <string name="post_call_send_message">Билдирүү жөнөтүү</string>
   <string name="post_call_message_sent">Билдирүү жөнөтүлдү</string>
   <string name="view">Карап көрүү</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-lo/strings.xml b/java/com/android/dialer/postcall/res/values-lo/strings.xml
index 102d302..5d76e3a 100644
--- a/java/com/android/dialer/postcall/res/values-lo/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-lo/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">ເລື່ອງດ່ວນ. ໂທກັບແດ່.</string>
   <string name="post_call_message_2">ຖ້າຫວ່າງແລ້ວໂທກັບແດ່.</string>
   <string name="post_call_message_3">ບໍ່ດ່ວນປານໃດ, ໄວ້ຄ່ອຍລົມກໍໄດ້.</string>
-  <string name="post_call_add_message">ເພີ່ມຂໍ້ຄວາມ</string>
-  <string name="post_call_send_message">ສົ່ງຂໍ້ຄວາມ</string>
+    <string name="post_call_send_message">ສົ່ງຂໍ້ຄວາມ</string>
   <string name="post_call_message_sent">ສົ່ງຂໍ້ຄວາມແລ້ວ</string>
   <string name="view">ເບິ່ງ</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-lt/strings.xml b/java/com/android/dialer/postcall/res/values-lt/strings.xml
index 709bf8a..d66fa62 100644
--- a/java/com/android/dialer/postcall/res/values-lt/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-lt/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Tai skubu. Atskambinkite.</string>
   <string name="post_call_message_2">Atskambinkite, kai turėsite šiek tiek laiko.</string>
   <string name="post_call_message_3">Neskubu, galėsime vėliau pasikalbėti.</string>
-  <string name="post_call_add_message">Pridėkite pranešimą</string>
-  <string name="post_call_send_message">Siųsti pranešimą</string>
+    <string name="post_call_send_message">Siųsti pranešimą</string>
   <string name="post_call_message_sent">Pranešimas išsiųstas</string>
   <string name="view">Peržiūrėti</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-lv/strings.xml b/java/com/android/dialer/postcall/res/values-lv/strings.xml
index 3bfd5d1..abf727d 100644
--- a/java/com/android/dialer/postcall/res/values-lv/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-lv/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Tas ir steidzami. Piezvaniet man!</string>
   <string name="post_call_message_2">Piezvaniet man, kad būs brīdis laika.</string>
   <string name="post_call_message_3">Tas nav steidzami. Varam parunāt vēlāk.</string>
-  <string name="post_call_add_message">Pievienojiet ziņojumu</string>
-  <string name="post_call_send_message">Sūtīt ziņojumu</string>
+    <string name="post_call_send_message">Sūtīt ziņojumu</string>
   <string name="post_call_message_sent">Ziņojums nosūtīts</string>
   <string name="view">Skatīt</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-mk/strings.xml b/java/com/android/dialer/postcall/res/values-mk/strings.xml
index 2ad6399..9570163 100644
--- a/java/com/android/dialer/postcall/res/values-mk/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-mk/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Итно е. Јави ми се.</string>
   <string name="post_call_message_2">Јави ми се кога ќе имаш време.</string>
   <string name="post_call_message_3">Не е итно. Може да разговараме подоцна.</string>
-  <string name="post_call_add_message">Додајте порака</string>
-  <string name="post_call_send_message">Испратете порака</string>
+    <string name="post_call_send_message">Испратете порака</string>
   <string name="post_call_message_sent">Пораката е испратена</string>
   <string name="view">Прикажи</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ml/strings.xml b/java/com/android/dialer/postcall/res/values-ml/strings.xml
index 0db9e35..25435dd 100644
--- a/java/com/android/dialer/postcall/res/values-ml/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ml/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">ഇതൊരു അത്യാവശ്യ കോളാണ്. എന്നെ തിരിച്ച് വിളിക്കുക.</string>
   <string name="post_call_message_2">നിങ്ങൾക്ക് സമയം കിട്ടുമ്പോൾ എന്നെ തിരിച്ച് വിളിക്കൂ.</string>
   <string name="post_call_message_3">അത്യാവശ്യമില്ല, നമുക്ക് പിന്നീട് ചാറ്റുചെയ്യാം.</string>
-  <string name="post_call_add_message">സന്ദേശം ചേർക്കുക</string>
-  <string name="post_call_send_message">സന്ദേശം അയയ്‌ക്കുക</string>
+    <string name="post_call_send_message">സന്ദേശം അയയ്‌ക്കുക</string>
   <string name="post_call_message_sent">സന്ദേശം അയച്ചു</string>
   <string name="view">കാണുക</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-mn/strings.xml b/java/com/android/dialer/postcall/res/values-mn/strings.xml
index f2213a4..91b4f4f 100644
--- a/java/com/android/dialer/postcall/res/values-mn/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-mn/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Энэ бол яаралтай. Над руу буцааж залгана уу.</string>
   <string name="post_call_message_2">Завтай болоод над руу буцааж залгана уу.</string>
   <string name="post_call_message_3">Яаралтай биш, бид дараа чатлаж болно.</string>
-  <string name="post_call_add_message">Зурвас нэмэх</string>
-  <string name="post_call_send_message">Зурвас илгээх</string>
+    <string name="post_call_send_message">Зурвас илгээх</string>
   <string name="post_call_message_sent">Зурвас илгээсэн</string>
   <string name="view">Үзэх</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-mr/strings.xml b/java/com/android/dialer/postcall/res/values-mr/strings.xml
index 63848b0..cf500c1 100644
--- a/java/com/android/dialer/postcall/res/values-mr/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-mr/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">हे खूप महत्वाचे आहे. मला परत कॉल करा.</string>
   <string name="post_call_message_2">आपल्याकडे वेळ असेल तेव्हा मला परत कॉल करा.</string>
   <string name="post_call_message_3">काही महत्वाचे नाही, आपण नंतर चॅट करू शकतो.</string>
-  <string name="post_call_add_message">मेसेज जोडा</string>
-  <string name="post_call_send_message">मेसेज पाठवा</string>
+    <string name="post_call_send_message">मेसेज पाठवा</string>
   <string name="post_call_message_sent">मेसेज पाठविला</string>
   <string name="view">पहा</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ms/strings.xml b/java/com/android/dialer/postcall/res/values-ms/strings.xml
index 77629ba..e144b7d 100644
--- a/java/com/android/dialer/postcall/res/values-ms/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ms/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Ada hal penting. Hubungi saya balik.</string>
   <string name="post_call_message_2">Hubungi saya balik apabila ada kelapangan.</string>
   <string name="post_call_message_3">Tidak penting, kita boleh bersembang kemudian.</string>
-  <string name="post_call_add_message">Tambah mesej</string>
-  <string name="post_call_send_message">Hantar mesej</string>
+    <string name="post_call_send_message">Hantar mesej</string>
   <string name="post_call_message_sent">Mesej dihantar</string>
   <string name="view">Lihat</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-my/strings.xml b/java/com/android/dialer/postcall/res/values-my/strings.xml
index 2eca1ea..85d096f 100644
--- a/java/com/android/dialer/postcall/res/values-my/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-my/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">အရေးကြီးသည်။ ကျွန်ုပ်ကို ပြန်ခေါ်ပါ။</string>
   <string name="post_call_message_2">သင်အချိန်ရလျှင် ကျွန်ုပ်ကို ပြန်ခေါ်ပါ။</string>
   <string name="post_call_message_3">အရေးမကြီးပါ၊ နောက်မှ ကျွန်ုပ်တို့ ချတ်လုပ်နိုင်ပါသည်။</string>
-  <string name="post_call_add_message">မက်ဆေ့ဂျ် ထည့်သွင်းပါ</string>
-  <string name="post_call_send_message">မက်ဆေ့ဂျ် ပို့မလား</string>
+    <string name="post_call_send_message">မက်ဆေ့ဂျ် ပို့မလား</string>
   <string name="post_call_message_sent">မက်ဆေ့ဂျ် ပို့ပြီးပါပြီ</string>
   <string name="view">ကြည့်ရန်</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-nb/strings.xml b/java/com/android/dialer/postcall/res/values-nb/strings.xml
index bfd5c3c..36753bf 100644
--- a/java/com/android/dialer/postcall/res/values-nb/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-nb/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Haster! Ring meg.</string>
   <string name="post_call_message_2">Ring tilbake når du har tid.</string>
   <string name="post_call_message_3">Haster ikke. Prates senere?</string>
-  <string name="post_call_add_message">Legg til melding</string>
-  <string name="post_call_send_message">Send melding</string>
+    <string name="post_call_send_message">Send melding</string>
   <string name="post_call_message_sent">Meldingen er sendt</string>
   <string name="view">Se</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ne/strings.xml b/java/com/android/dialer/postcall/res/values-ne/strings.xml
index 5744d32..2b9cafc 100644
--- a/java/com/android/dialer/postcall/res/values-ne/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ne/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">जरुरी काम छ। मलाई कल गरिहाल्नुहोस्।</string>
   <string name="post_call_message_2">तपाईंलाई अलि फुर्सद भएका बेला मलाई कल गर्नुहोस्।</string>
   <string name="post_call_message_3">जरुरी छैन, पछि कुरा गर्दा हुन्छ।</string>
-  <string name="post_call_add_message">सन्देश थप्नुहोस्</string>
-  <string name="post_call_send_message">सन्देश पठाउनुहोस्</string>
+    <string name="post_call_send_message">सन्देश पठाउनुहोस्</string>
   <string name="post_call_message_sent">सन्देश पठाइयो</string>
   <string name="view">हेर्नुहोस्</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-nl/strings.xml b/java/com/android/dialer/postcall/res/values-nl/strings.xml
index eea15fb..d9cc8bd 100644
--- a/java/com/android/dialer/postcall/res/values-nl/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-nl/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Ik moet je dringend spreken, bel me terug.</string>
   <string name="post_call_message_2">Bel me terug als je tijd hebt.</string>
   <string name="post_call_message_3">Het is niet dringend, ik spreek je later.</string>
-  <string name="post_call_add_message">Bericht toevoegen</string>
-  <string name="post_call_send_message">Bericht verzenden</string>
+    <string name="post_call_send_message">Bericht verzenden</string>
   <string name="post_call_message_sent">Bericht verzonden</string>
   <string name="view">Weergeven</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-no/strings.xml b/java/com/android/dialer/postcall/res/values-no/strings.xml
index bfd5c3c..36753bf 100644
--- a/java/com/android/dialer/postcall/res/values-no/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-no/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Haster! Ring meg.</string>
   <string name="post_call_message_2">Ring tilbake når du har tid.</string>
   <string name="post_call_message_3">Haster ikke. Prates senere?</string>
-  <string name="post_call_add_message">Legg til melding</string>
-  <string name="post_call_send_message">Send melding</string>
+    <string name="post_call_send_message">Send melding</string>
   <string name="post_call_message_sent">Meldingen er sendt</string>
   <string name="view">Se</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-pa/strings.xml b/java/com/android/dialer/postcall/res/values-pa/strings.xml
index ecab7b5..e7a9247 100644
--- a/java/com/android/dialer/postcall/res/values-pa/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-pa/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">ਇਹ ਜ਼ਰੂਰੀ ਹੈ। ਮੈਨੂੰ ਵਾਪਸ ਕਾਲ ਕਰੋ।</string>
   <string name="post_call_message_2">ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਕੁਝ ਸਮਾਂ ਹੋਵੇ ਤਾਂ ਮੈਨੂੰ ਵਾਪਸ ਕਾਲ ਕਰੋ।</string>
   <string name="post_call_message_3">ਜ਼ਰੂਰੀ ਨਹੀਂ ਹੈ, ਅਸੀਂ ਬਾਅਦ ਵਿੱਚ ਚੈਟ ਕਰ ਸਕਦੇ ਹਾਂ।</string>
-  <string name="post_call_add_message">ਸੁਨੇਹਾ ਸ਼ਾਮਲ ਕਰੋ</string>
-  <string name="post_call_send_message">ਸੁਨੇਹਾ ਭੇਜੋ</string>
+    <string name="post_call_send_message">ਸੁਨੇਹਾ ਭੇਜੋ</string>
   <string name="post_call_message_sent">ਸੁਨੇਹਾ ਭੇਜਿਆ ਗਿਆ</string>
   <string name="view">ਵੇਖੋ</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-pl/strings.xml b/java/com/android/dialer/postcall/res/values-pl/strings.xml
index 40c86f7..3f8f3f1 100644
--- a/java/com/android/dialer/postcall/res/values-pl/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-pl/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">To pilne. Zadzwoń do mnie.</string>
   <string name="post_call_message_2">Zadzwoń do mnie, jak znajdziesz czas.</string>
   <string name="post_call_message_3">Nic ważnego, pogadamy później.</string>
-  <string name="post_call_add_message">Dodaj wiadomość</string>
-  <string name="post_call_send_message">Wyślij wiadomość</string>
+    <string name="post_call_send_message">Wyślij wiadomość</string>
   <string name="post_call_message_sent">Wiadomość została wysłana</string>
   <string name="view">Wyświetl</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-pt-rBR/strings.xml b/java/com/android/dialer/postcall/res/values-pt-rBR/strings.xml
index 4ff9fdb..ba58d37 100644
--- a/java/com/android/dialer/postcall/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-pt-rBR/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">É urgente. Retorne minha chamada.</string>
   <string name="post_call_message_2">Retorne minha chamada quando você tiver tempo.</string>
   <string name="post_call_message_3">Não é urgente, podemos bater papo mais tarde.</string>
-  <string name="post_call_add_message">Adicionar mensagem</string>
-  <string name="post_call_send_message">Enviar mensagem</string>
+    <string name="post_call_send_message">Enviar mensagem</string>
   <string name="post_call_message_sent">Mensagem enviada</string>
   <string name="view">Ver</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-pt-rPT/strings.xml b/java/com/android/dialer/postcall/res/values-pt-rPT/strings.xml
index 6c19219..fc8ab0f 100644
--- a/java/com/android/dialer/postcall/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-pt-rPT/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">É urgente. Ligue-me de volta.</string>
   <string name="post_call_message_2">Ligue-me de volta quando tiver algum tempo.</string>
   <string name="post_call_message_3">Não é urgente, podemos conversar mais tarde.</string>
-  <string name="post_call_add_message">Adicionar mensagem</string>
-  <string name="post_call_send_message">Enviar mensagem</string>
+    <string name="post_call_send_message">Enviar mensagem</string>
   <string name="post_call_message_sent">Mensagem enviada</string>
   <string name="view">Ver</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-pt/strings.xml b/java/com/android/dialer/postcall/res/values-pt/strings.xml
index 4ff9fdb..ba58d37 100644
--- a/java/com/android/dialer/postcall/res/values-pt/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-pt/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">É urgente. Retorne minha chamada.</string>
   <string name="post_call_message_2">Retorne minha chamada quando você tiver tempo.</string>
   <string name="post_call_message_3">Não é urgente, podemos bater papo mais tarde.</string>
-  <string name="post_call_add_message">Adicionar mensagem</string>
-  <string name="post_call_send_message">Enviar mensagem</string>
+    <string name="post_call_send_message">Enviar mensagem</string>
   <string name="post_call_message_sent">Mensagem enviada</string>
   <string name="view">Ver</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ro/strings.xml b/java/com/android/dialer/postcall/res/values-ro/strings.xml
index e5c900f..11bb3fc 100644
--- a/java/com/android/dialer/postcall/res/values-ro/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ro/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Este ceva urgent. Sună-mă.</string>
   <string name="post_call_message_2">Sună-mă când ai puțin timp.</string>
   <string name="post_call_message_3">Nu e ceva urgent. Putem vorbi mai târziu.</string>
-  <string name="post_call_add_message">Adăugați un mesaj</string>
-  <string name="post_call_send_message">Trimiteți un mesaj</string>
+    <string name="post_call_send_message">Trimiteți un mesaj</string>
   <string name="post_call_message_sent">Mesaj trimis</string>
   <string name="view">Afișați</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ru/strings.xml b/java/com/android/dialer/postcall/res/values-ru/strings.xml
index f245488..8863411 100644
--- a/java/com/android/dialer/postcall/res/values-ru/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ru/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Это срочно. Пожалуйста, перезвоните мне.</string>
   <string name="post_call_message_2">Перезвоните мне, когда сможете.</string>
   <string name="post_call_message_3">Не срочно, можем поговорить позже.</string>
-  <string name="post_call_add_message">Добавить сообщение</string>
-  <string name="post_call_send_message">Отправить сообщение</string>
+    <string name="post_call_send_message">Отправить сообщение</string>
   <string name="post_call_message_sent">Сообщение отправлено</string>
   <string name="view">Просмотреть</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-si/strings.xml b/java/com/android/dialer/postcall/res/values-si/strings.xml
index ed5f62b..71ce653 100644
--- a/java/com/android/dialer/postcall/res/values-si/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-si/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">මෙය හදිස්සියි. මට ආපසු අමතන්න.</string>
   <string name="post_call_message_2">ඔබට යම් වේලාවක් තිබෙන විට මට ආපසු අමතන්න.</string>
   <string name="post_call_message_3">හදිස්සි නැත, අපට පසුව කතාබස් කිරීමට හැකිය.</string>
-  <string name="post_call_add_message">පණිවිඩය එක් කරන්න</string>
-  <string name="post_call_send_message">පණිවිඩය යවන්න</string>
+    <string name="post_call_send_message">පණිවිඩය යවන්න</string>
   <string name="post_call_message_sent">පණිවිඩය යවන ලදී</string>
   <string name="view">බලන්න</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-sk/strings.xml b/java/com/android/dialer/postcall/res/values-sk/strings.xml
index c45e75b..56f2aa1 100644
--- a/java/com/android/dialer/postcall/res/values-sk/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-sk/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Je to súrne. Zavolaj mi späť.</string>
   <string name="post_call_message_2">Zavolaj mi späť, keď budeš mať čas.</string>
   <string name="post_call_message_3">Nie je to súrne, môžeme sa porozprávať neskôr.</string>
-  <string name="post_call_add_message">Pridať správu</string>
-  <string name="post_call_send_message">Odoslanie správy</string>
+    <string name="post_call_send_message">Odoslanie správy</string>
   <string name="post_call_message_sent">Správa bola odoslaná</string>
   <string name="view">Zobraziť</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-sl/strings.xml b/java/com/android/dialer/postcall/res/values-sl/strings.xml
index 3de9477..233517b 100644
--- a/java/com/android/dialer/postcall/res/values-sl/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-sl/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">To je nujno. Pokliči me.</string>
   <string name="post_call_message_2">Ko si lahko vzameš nekaj časa, me pokliči.</string>
   <string name="post_call_message_3">Ni nujno, klepetava lahko tudi pozneje.</string>
-  <string name="post_call_add_message">Dodaj sporočilo</string>
-  <string name="post_call_send_message">Pošiljanje sporočila</string>
+    <string name="post_call_send_message">Pošiljanje sporočila</string>
   <string name="post_call_message_sent">Sporočilo je bilo poslano</string>
   <string name="view">Prikaži</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-sq/strings.xml b/java/com/android/dialer/postcall/res/values-sq/strings.xml
index f2f534b..00658ef 100644
--- a/java/com/android/dialer/postcall/res/values-sq/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-sq/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Është urgjente. Më telefono.</string>
   <string name="post_call_message_2">Më telefono kur të kesh kohë.</string>
   <string name="post_call_message_3">Nuk është urgjente, mund të bisedojmë më vonë.</string>
-  <string name="post_call_add_message">Shto një mesazh</string>
-  <string name="post_call_send_message">Dërgo mesazh</string>
+    <string name="post_call_send_message">Dërgo mesazh</string>
   <string name="post_call_message_sent">Mesazhi u dërgua</string>
   <string name="view">Shiko</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-sr/strings.xml b/java/com/android/dialer/postcall/res/values-sr/strings.xml
index 22305e8..90510bf 100644
--- a/java/com/android/dialer/postcall/res/values-sr/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-sr/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Хитно је. Узвратите ми позив.</string>
   <string name="post_call_message_2">Позовите ме кад будете имали времена.</string>
   <string name="post_call_message_3">Није хитно, можемо да ћаскамо касније.</string>
-  <string name="post_call_add_message">Додај поруку</string>
-  <string name="post_call_send_message">Пошаљите поруку</string>
+    <string name="post_call_send_message">Пошаљите поруку</string>
   <string name="post_call_message_sent">Порука је послата</string>
   <string name="view">Прикажи</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-sv/strings.xml b/java/com/android/dialer/postcall/res/values-sv/strings.xml
index e93a9ed..a01ff8e 100644
--- a/java/com/android/dialer/postcall/res/values-sv/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-sv/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Det här är brådskande. Ring tillbaka.</string>
   <string name="post_call_message_2">Ring tillbaka när du har tid.</string>
   <string name="post_call_message_3">Inte brådskande, vi kan prata senare.</string>
-  <string name="post_call_add_message">Lägg till meddelande</string>
-  <string name="post_call_send_message">Skicka meddelande</string>
+    <string name="post_call_send_message">Skicka meddelande</string>
   <string name="post_call_message_sent">Meddelandet skickat</string>
   <string name="view">Visa</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-sw/strings.xml b/java/com/android/dialer/postcall/res/values-sw/strings.xml
index f41df71..a85c7b5 100644
--- a/java/com/android/dialer/postcall/res/values-sw/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-sw/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Hili ni la dharura. Nipigie.</string>
   <string name="post_call_message_2">Nipigie ukipata nafasi.</string>
   <string name="post_call_message_3">Si jambo la dharura, tunaweza kuzungumza baadaye.</string>
-  <string name="post_call_add_message">Ongeza ujumbe</string>
-  <string name="post_call_send_message">Tuma ujumbe</string>
+    <string name="post_call_send_message">Tuma ujumbe</string>
   <string name="post_call_message_sent">Ujumbe umetumwa</string>
   <string name="view">Uangalie</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ta/strings.xml b/java/com/android/dialer/postcall/res/values-ta/strings.xml
index 7050d87..23386fa 100644
--- a/java/com/android/dialer/postcall/res/values-ta/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ta/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">அவசரம். என்னைத் திரும்ப அழைக்கவும்.</string>
   <string name="post_call_message_2">உங்களுக்கு நேரமிருக்கும் போது என்னைத் திரும்ப அழைக்கவும்.</string>
   <string name="post_call_message_3">அவசரமில்லை, நாம் பின்னர் அரட்டையடிக்கலாம்.</string>
-  <string name="post_call_add_message">செய்தியைச் சேர்க்கவும்</string>
-  <string name="post_call_send_message">செய்தி அனுப்பவும்</string>
+    <string name="post_call_send_message">செய்தி அனுப்பவும்</string>
   <string name="post_call_message_sent">செய்தி அனுப்பப்பட்டது</string>
   <string name="view">காட்டு</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-te/strings.xml b/java/com/android/dialer/postcall/res/values-te/strings.xml
index f3b244f..d385078 100644
--- a/java/com/android/dialer/postcall/res/values-te/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-te/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">అత్యవసరమైన విషయం. నాకు తిరిగి కాల్ చేయండి.</string>
   <string name="post_call_message_2">మీకు సమయం ఉన్నప్పుడు నాకు తిరిగి కాల్ చేయండి.</string>
   <string name="post_call_message_3">అత్యవసరమేమీ కాదు, మనం తర్వాత చాట్ చేసుకోవచ్చు.</string>
-  <string name="post_call_add_message">సందేశాన్ని జోడించండి</string>
-  <string name="post_call_send_message">సందేశాన్ని పంపండి</string>
+    <string name="post_call_send_message">సందేశాన్ని పంపండి</string>
   <string name="post_call_message_sent">సందేశం పంపబడింది</string>
   <string name="view">వీక్షించండి</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-th/strings.xml b/java/com/android/dialer/postcall/res/values-th/strings.xml
index 1f972d8..0ba0b7c 100644
--- a/java/com/android/dialer/postcall/res/values-th/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-th/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">มีเรื่องด่วน โปรดโทรกลับ</string>
   <string name="post_call_message_2">ว่างแล้วโปรดโทรกลับ</string>
   <string name="post_call_message_3">ไม่ด่วนอะไร ไว้แชททีหลังก็ได้</string>
-  <string name="post_call_add_message">เพิ่มข้อความ</string>
-  <string name="post_call_send_message">ส่งข้อความ</string>
+    <string name="post_call_send_message">ส่งข้อความ</string>
   <string name="post_call_message_sent">ส่งข้อความแล้ว</string>
   <string name="view">ดู</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-tl/strings.xml b/java/com/android/dialer/postcall/res/values-tl/strings.xml
index 1e72833..31fb2b4 100644
--- a/java/com/android/dialer/postcall/res/values-tl/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-tl/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Apurahan ito. Tawagan mo ko.</string>
   <string name="post_call_message_2">Tawagan mo ako kapag may oras ka.</string>
   <string name="post_call_message_3">Hindi agaran, maaari tayong mag-chat sa ibang pagkakataon.</string>
-  <string name="post_call_add_message">Magdagdag ng mensahe</string>
-  <string name="post_call_send_message">Magpadala ng mensahe</string>
+    <string name="post_call_send_message">Magpadala ng mensahe</string>
   <string name="post_call_message_sent">Naipadala ang mensahe</string>
   <string name="view">Tingnan</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-tr/strings.xml b/java/com/android/dialer/postcall/res/values-tr/strings.xml
index 91a15b1..094cc71 100644
--- a/java/com/android/dialer/postcall/res/values-tr/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-tr/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Acil bir durum var. Beni geri arayın.</string>
   <string name="post_call_message_2">Zamanınız olduğunda beni geri arayın.</string>
   <string name="post_call_message_3">Acil bir durum yok. Daha sonra konuşuruz.</string>
-  <string name="post_call_add_message">Mesaj ekleyin</string>
-  <string name="post_call_send_message">Mesaj gönder</string>
+    <string name="post_call_send_message">Mesaj gönder</string>
   <string name="post_call_message_sent">Mesaj gönderildi</string>
   <string name="view">Görüntüle</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-uk/strings.xml b/java/com/android/dialer/postcall/res/values-uk/strings.xml
index 3bd493f..cbcf140 100644
--- a/java/com/android/dialer/postcall/res/values-uk/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-uk/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Це терміново. Передзвоніть мені.</string>
   <string name="post_call_message_2">Передзвоніть мені, коли матимете час.</string>
   <string name="post_call_message_3">Нічого термінового, поспілкуємося пізніше.</string>
-  <string name="post_call_add_message">Додати повідомлення</string>
-  <string name="post_call_send_message">Надіслати повідомлення</string>
+    <string name="post_call_send_message">Надіслати повідомлення</string>
   <string name="post_call_message_sent">Повідомлення надіслано</string>
   <string name="view">Переглянути</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-ur/strings.xml b/java/com/android/dialer/postcall/res/values-ur/strings.xml
index c18675c..07b7d9f 100644
--- a/java/com/android/dialer/postcall/res/values-ur/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-ur/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">یہ ارجنٹ ہے۔ مجھے واپس کال کریں۔</string>
   <string name="post_call_message_2">جب آپ کے پاس کچھ وقت ہو تو مجھے واپس کال کریں۔</string>
   <string name="post_call_message_3">ارجنٹ نہیں ہے، ہم بعد میں چیٹ کر سکتے ہیں۔</string>
-  <string name="post_call_add_message">پیغام شامل کریں</string>
-  <string name="post_call_send_message">پیغام بھیجیں</string>
+    <string name="post_call_send_message">پیغام بھیجیں</string>
   <string name="post_call_message_sent">پیغام بھیج دیا گیا</string>
   <string name="view">دیکھیں</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-uz/strings.xml b/java/com/android/dialer/postcall/res/values-uz/strings.xml
index 285775f..419e215 100644
--- a/java/com/android/dialer/postcall/res/values-uz/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-uz/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Bu juda shoshilinch. Menga qayta qo‘ng‘iroq qiling.</string>
   <string name="post_call_message_2">Imkoniyatingiz bo‘lganda, menga qayta qo‘ng‘iroq qiling.</string>
   <string name="post_call_message_3">Bu shoshilinch emas. Keyinroq ham suhbatlashishimiz mumkin.</string>
-  <string name="post_call_add_message">Xabar qo‘shish</string>
-  <string name="post_call_send_message">Xabar yuborish</string>
+    <string name="post_call_send_message">Xabar yuborish</string>
   <string name="post_call_message_sent">Xabar yuborildi</string>
   <string name="view">Ko‘rish</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-vi/strings.xml b/java/com/android/dialer/postcall/res/values-vi/strings.xml
index 51c3b43..5b935e3 100644
--- a/java/com/android/dialer/postcall/res/values-vi/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-vi/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Cuộc gọi này là khẩn cấp. Hãy gọi lại cho tôi.</string>
   <string name="post_call_message_2">Hãy gọi lại cho tôi khi bạn có thời gian.</string>
   <string name="post_call_message_3">Không khẩn cấp, chúng ta có thể trò chuyện sau.</string>
-  <string name="post_call_add_message">Thêm tin nhắn</string>
-  <string name="post_call_send_message">Gửi tin nhắn</string>
+    <string name="post_call_send_message">Gửi tin nhắn</string>
   <string name="post_call_message_sent">Đã gửi tin nhắn</string>
   <string name="view">Xem</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-zh-rCN/strings.xml b/java/com/android/dialer/postcall/res/values-zh-rCN/strings.xml
index b1a216b..c1ee1bc 100644
--- a/java/com/android/dialer/postcall/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-zh-rCN/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">情况紧急，请回电。</string>
   <string name="post_call_message_2">有空时给我回电。</string>
   <string name="post_call_message_3">不着急，稍后再聊。</string>
-  <string name="post_call_add_message">添加信息</string>
-  <string name="post_call_send_message">发送短信</string>
+    <string name="post_call_send_message">发送短信</string>
   <string name="post_call_message_sent">信息已发送</string>
   <string name="view">查看</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-zh-rHK/strings.xml b/java/com/android/dialer/postcall/res/values-zh-rHK/strings.xml
index d0df6c2..1498e03 100644
--- a/java/com/android/dialer/postcall/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-zh-rHK/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">緊急狀況，請回電給我。</string>
   <string name="post_call_message_2">有空時請回電給我。</string>
   <string name="post_call_message_3">不急，稍後再聊也可以。</string>
-  <string name="post_call_add_message">新增訊息</string>
-  <string name="post_call_send_message">傳送訊息</string>
+    <string name="post_call_send_message">傳送訊息</string>
   <string name="post_call_message_sent">已傳送訊息</string>
   <string name="view">查看</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-zh-rTW/strings.xml b/java/com/android/dialer/postcall/res/values-zh-rTW/strings.xml
index 47b6c10..5c02a4b 100644
--- a/java/com/android/dialer/postcall/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-zh-rTW/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">緊急狀況，請回電給我。</string>
   <string name="post_call_message_2">有空時請回電給我。</string>
   <string name="post_call_message_3">不急，我們可以晚點再聊。</string>
-  <string name="post_call_add_message">加入訊息</string>
-  <string name="post_call_send_message">傳送訊息</string>
+    <string name="post_call_send_message">傳送訊息</string>
   <string name="post_call_message_sent">訊息成功送出</string>
   <string name="view">查看</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values-zu/strings.xml b/java/com/android/dialer/postcall/res/values-zu/strings.xml
index ff64b72..7247919 100644
--- a/java/com/android/dialer/postcall/res/values-zu/strings.xml
+++ b/java/com/android/dialer/postcall/res/values-zu/strings.xml
@@ -4,8 +4,7 @@
   <string name="post_call_message_1">Lokhu kuyashesha. Ngishayele futhi.</string>
   <string name="post_call_message_2">Ngishayele futhi uma unesikhathi.</string>
   <string name="post_call_message_3">Akusheshi, singaxoxa kamuva.</string>
-  <string name="post_call_add_message">Engeza umlayezo</string>
-  <string name="post_call_send_message">Thumela umlayezo</string>
+    <string name="post_call_send_message">Thumela umlayezo</string>
   <string name="post_call_message_sent">Umlayezo uthunyelwe</string>
   <string name="view">Buka</string>
 </resources>
diff --git a/java/com/android/dialer/postcall/res/values/strings.xml b/java/com/android/dialer/postcall/res/values/strings.xml
index c51d0d4..5135551 100644
--- a/java/com/android/dialer/postcall/res/values/strings.xml
+++ b/java/com/android/dialer/postcall/res/values/strings.xml
@@ -24,10 +24,8 @@
   <!-- Premade message to be sent as a text/RCS message -->
   <string name="post_call_message_3">Not urgent, we can chat later.</string>
   <!-- Asks the user if they want to send a post call message -->
-  <string name="post_call_add_message">Add message</string>
-  <!-- Asks the user if they want to send a post call message -->
   <string name="post_call_send_message">Send message</string>
   <!-- Shown to let the user know that their message was sent. -->
   <string name="post_call_message_sent">Message sent</string>
   <string name="view">View</string>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/precall/PreCall.java b/java/com/android/dialer/precall/PreCall.java
index bd0aee5..aabc252 100644
--- a/java/com/android/dialer/precall/PreCall.java
+++ b/java/com/android/dialer/precall/PreCall.java
@@ -18,8 +18,10 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.util.DialerUtils;
 
diff --git a/java/com/android/dialer/precall/PreCallAction.java b/java/com/android/dialer/precall/PreCallAction.java
index 298af08..d1e0b01 100644
--- a/java/com/android/dialer/precall/PreCallAction.java
+++ b/java/com/android/dialer/precall/PreCallAction.java
@@ -17,7 +17,9 @@
 package com.android.dialer.precall;
 
 import android.content.Context;
-import android.support.annotation.MainThread;
+
+import androidx.annotation.MainThread;
+
 import com.android.dialer.callintent.CallIntentBuilder;
 
 /**
diff --git a/java/com/android/dialer/precall/PreCallComponent.java b/java/com/android/dialer/precall/PreCallComponent.java
index 859eb01..b98de35 100644
--- a/java/com/android/dialer/precall/PreCallComponent.java
+++ b/java/com/android/dialer/precall/PreCallComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,12 @@
 package com.android.dialer.precall;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.inject.HasRootComponent;
 import com.google.common.collect.ImmutableList;
+
 import dagger.Subcomponent;
 
 /** Daggaer component for {@link PreCall} */
diff --git a/java/com/android/dialer/precall/PreCallCoordinator.java b/java/com/android/dialer/precall/PreCallCoordinator.java
index 4d4859a..b6e7a88 100644
--- a/java/com/android/dialer/precall/PreCallCoordinator.java
+++ b/java/com/android/dialer/precall/PreCallCoordinator.java
@@ -17,9 +17,10 @@
 package com.android.dialer.precall;
 
 import android.app.Activity;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.function.Consumer;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -30,7 +31,7 @@
  */
 public interface PreCallCoordinator {
 
-  @VisibleForTesting public String EXTRA_CALL_INTENT_BUILDER = "extra_call_intent_builder";
+  String EXTRA_CALL_INTENT_BUILDER = "extra_call_intent_builder";
 
   @NonNull
   CallIntentBuilder getBuilder();
diff --git a/java/com/android/dialer/precall/externalreceiver/AndroidManifest.xml b/java/com/android/dialer/precall/externalreceiver/AndroidManifest.xml
deleted file mode 100644
index b1c625a..0000000
--- a/java/com/android/dialer/precall/externalreceiver/AndroidManifest.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.precall.externalreceiver">
-
-  <application>
-    <activity
-        android:excludeFromRecents="true"
-        android:exported="true"
-        android:name="com.android.dialer.precall.externalreceiver.LaunchPreCallActivity"
-        android:noHistory="true"
-        android:permission="android.permission.CALL_PHONE"
-        android:theme="@style/Theme.PreCall.DialogHolder">
-      <intent-filter>
-        <action android:name="com.android.dialer.LAUNCH_PRE_CALL"/>
-        <category android:name="android.intent.category.DEFAULT" />
-        <data android:scheme="tel" />
-      </intent-filter>
-      <intent-filter>
-        <action android:name="com.android.dialer.LAUNCH_PRE_CALL"/>
-        <category android:name="android.intent.category.DEFAULT" />
-        <data android:scheme="voicemail" />
-      </intent-filter>
-    </activity>
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java b/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java
index 60245ee..a02e694 100644
--- a/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java
+++ b/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,21 +17,19 @@
 
 package com.android.dialer.precall.externalreceiver;
 
-import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telecom.VideoProfile;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
 import com.android.dialer.callintent.CallInitiationType.Type;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProvider;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCall;
 import com.google.common.collect.ImmutableList;
 
@@ -41,9 +40,7 @@
  *
  * @see CallIntentBuilder
  */
-public class LaunchPreCallActivity extends Activity {
-
-  public static final String ACTION_LAUNCH_PRE_CALL = "com.android.dialer.LAUNCH_PRE_CALL";
+public class LaunchPreCallActivity extends AppCompatActivity {
 
   public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "phone_account_handle";
 
@@ -67,26 +64,22 @@
   @Override
   public void onCreate(@Nullable Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
-    Logger.get(this).logImpression(DialerImpression.Type.PRECALL_INITIATED_EXTERNAL);
 
-    ConfigProvider configProvider =
-        ConfigProviderComponent.get(getApplicationContext()).getConfigProvider();
     Intent intent = getIntent();
     CallIntentBuilder builder = new CallIntentBuilder(intent.getData(), Type.EXTERNAL_INITIATION);
 
-    PhoneAccountHandle phoneAccountHandle = intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE);
+    PhoneAccountHandle phoneAccountHandle = intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE,
+            PhoneAccountHandle.class);
     if (phoneAccountHandle == null) {
-      phoneAccountHandle = intent.getParcelableExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE);
+      phoneAccountHandle = intent.getParcelableExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE,
+              PhoneAccountHandle.class);
     }
 
     builder
         .setPhoneAccountHandle(phoneAccountHandle)
         .setIsVideoCall(intent.getBooleanExtra(EXTRA_IS_VIDEO_CALL, false))
         .setCallSubject(intent.getStringExtra(EXTRA_CALL_SUBJECT))
-        .setAllowAssistedDial(
-            intent.getBooleanExtra(
-                EXTRA_ALLOW_ASSISTED_DIAL,
-                configProvider.getBoolean("assisted_dialing_default_precall_state", false)));
+        .setAllowAssistedDial(intent.getBooleanExtra(EXTRA_ALLOW_ASSISTED_DIAL, false));
     filterExtras(intent.getExtras(), builder);
     PreCall.start(this, builder);
     finish();
@@ -133,7 +126,8 @@
 
     if (intentExtras.containsKey(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE)) {
       builder.setPhoneAccountHandle(
-          intentExtras.getParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE));
+          intentExtras.getParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE,
+                  PhoneAccountHandle.class));
     }
 
     if (intentExtras.containsKey(TelecomManager.EXTRA_CALL_SUBJECT)) {
diff --git a/java/com/android/dialer/precall/impl/AndroidManifest.xml b/java/com/android/dialer/precall/impl/AndroidManifest.xml
deleted file mode 100644
index d3d0f53..0000000
--- a/java/com/android/dialer/precall/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.precall.impl">
-
-  <application>
-    <activity
-        android:exported="false"
-        android:name="com.android.dialer.precall.impl.PreCallActivity"
-        android:excludeFromRecents="true"
-        android:noHistory="true"
-        android:theme="@style/Theme.PreCall.DialogHolder">
-    </activity>
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/precall/impl/AssistedDialAction.java b/java/com/android/dialer/precall/impl/AssistedDialAction.java
index 0e38231..3f48817 100644
--- a/java/com/android/dialer/precall/impl/AssistedDialAction.java
+++ b/java/com/android/dialer/precall/impl/AssistedDialAction.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,8 +20,7 @@
 import android.content.Context;
 import android.os.Bundle;
 import android.telecom.PhoneAccount;
-import android.telephony.SubscriptionInfo;
-import android.telephony.TelephonyManager;
+
 import com.android.dialer.assisteddialing.AssistedDialingMediator;
 import com.android.dialer.assisteddialing.ConcreteCreator;
 import com.android.dialer.assisteddialing.TransformationInfo;
@@ -28,12 +28,10 @@
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.configprovider.ConfigProvider;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.precall.PreCallAction;
 import com.android.dialer.precall.PreCallCoordinator;
-import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.CallUtil;
+
 import java.util.Optional;
 
 /** Rewrites the call URI with country code. */
@@ -51,8 +49,7 @@
     }
 
     AssistedDialingMediator assistedDialingMediator =
-        ConcreteCreator.createNewAssistedDialingMediator(
-            getAssistedDialingTelephonyManager(context, builder), context);
+            ConcreteCreator.createNewAssistedDialingMediator();
 
     // Checks the platform is N+ and meets other pre-flight checks.
     if (!assistedDialingMediator.isPlatformEligible()) {
@@ -78,45 +75,6 @@
     }
   }
 
-  /**
-   * A convenience method to return the proper TelephonyManager in possible multi-sim environments.
-   */
-  private TelephonyManager getAssistedDialingTelephonyManager(
-      Context context, CallIntentBuilder builder) {
-
-    ConfigProvider configProvider = ConfigProviderComponent.get(context).getConfigProvider();
-    TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
-    // None of this will be required in the framework because the PhoneAccountHandle
-    // is already mapped to the request in the TelecomConnection.
-    if (builder.getPhoneAccountHandle() == null) {
-      return telephonyManager;
-    }
-
-    if (!configProvider.getBoolean("assisted_dialing_dual_sim_enabled", false)) {
-      return telephonyManager;
-    }
-
-    com.google.common.base.Optional<SubscriptionInfo> subscriptionInfo =
-        TelecomUtil.getSubscriptionInfo(context, builder.getPhoneAccountHandle());
-    if (!subscriptionInfo.isPresent()) {
-      LogUtil.i(
-          "AssistedDialAction.getAssistedDialingTelephonyManager", "subcriptionInfo was absent.");
-      return telephonyManager;
-    }
-    TelephonyManager pinnedtelephonyManager =
-        telephonyManager.createForSubscriptionId(subscriptionInfo.get().getSubscriptionId());
-    if (pinnedtelephonyManager == null) {
-      LogUtil.i(
-          "AssistedDialAction.getAssistedDialingTelephonyManager",
-          "createForSubscriptionId pinnedtelephonyManager was null.");
-      return telephonyManager;
-    }
-    LogUtil.i(
-        "AssistedDialAction.getAssistedDialingTelephonyManager",
-        "createForPhoneAccountHandle using pinnedtelephonyManager from subscription id.");
-    return pinnedtelephonyManager;
-  }
-
   @Override
   public void runWithUi(PreCallCoordinator coordinator) {
     runWithoutUi(coordinator.getActivity(), coordinator.getBuilder());
diff --git a/java/com/android/dialer/precall/impl/CallingAccountSelector.java b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
index 042f585..4ad1163 100644
--- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java
+++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,23 +19,21 @@
 
 import android.app.Activity;
 import android.content.Context;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
-import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentActivity;
+
 import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment;
-import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener;
 import com.android.contacts.common.widget.SelectPhoneAccountDialogOptions;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.logging.DialerImpression.Type;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCallAction;
 import com.android.dialer.precall.PreCallCoordinator;
 import com.android.dialer.precall.PreCallCoordinator.PendingAction;
@@ -42,14 +41,16 @@
 import com.android.dialer.preferredsim.PreferredAccountWorker;
 import com.android.dialer.preferredsim.suggestion.SuggestionProvider;
 import com.android.dialer.preferredsim.suggestion.SuggestionProvider.Suggestion;
+
 import java.util.List;
+
 import javax.inject.Inject;
 
 /** PreCallAction to select which phone account to call with. Ignored if there's only one account */
 @SuppressWarnings("MissingPermission")
 public class CallingAccountSelector implements PreCallAction {
 
-  @VisibleForTesting static final String TAG_CALLING_ACCOUNT_SELECTOR = "CallingAccountSelector";
+  private static final String TAG_CALLING_ACCOUNT_SELECTOR = "CallingAccountSelector";
 
   private SelectPhoneAccountDialogFragment selectPhoneAccountDialogFragment;
 
@@ -64,25 +65,18 @@
 
   @Override
   public boolean requiresUi(Context context, CallIntentBuilder builder) {
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("precall_calling_account_selector_enabled", true)) {
-      return false;
-    }
-
     if (builder.getPhoneAccountHandle() != null) {
       return false;
     }
-    if (PhoneNumberUtils.isEmergencyNumber(builder.getUri().getSchemeSpecificPart())) {
+
+    TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+    if (telephonyManager.isEmergencyNumber(builder.getUri().getSchemeSpecificPart())) {
       return false;
     }
 
     TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
     List<PhoneAccountHandle> accounts = telecomManager.getCallCapablePhoneAccounts();
-    if (accounts.size() <= 1) {
-      return false;
-    }
-    return true;
+    return accounts.size() > 1;
   }
 
   @Override
@@ -105,7 +99,6 @@
             null,
             null,
             null);
-        Logger.get(coordinator.getActivity()).logImpression(Type.DUAL_SIM_SELECTION_VOICEMAIL);
         break;
       case PhoneAccount.SCHEME_TEL:
         processPreferredAccount(coordinator);
@@ -161,9 +154,9 @@
               coordinator,
               pendingAction,
               result.getDialogOptionsBuilder().get().build(),
-              result.getDataId().orNull(),
+              result.getDataId().orElse(null),
               phoneNumber,
-              result.getSuggestion().orNull());
+              result.getSuggestion().orElse(null));
         },
         (throwable) -> {
           throw new RuntimeException(throwable);
@@ -188,7 +181,8 @@
                 pendingAction,
                 new PreferredAccountRecorder(number, suggestion, dataId)));
     selectPhoneAccountDialogFragment.show(
-        coordinator.getActivity().getFragmentManager(), TAG_CALLING_ACCOUNT_SELECTOR);
+        ((FragmentActivity) coordinator.getActivity()).getSupportFragmentManager(),
+            TAG_CALLING_ACCOUNT_SELECTOR);
   }
 
   @MainThread
@@ -200,7 +194,8 @@
     }
   }
 
-  private class SelectedListener extends SelectPhoneAccountListener {
+  private class SelectedListener extends
+          SelectPhoneAccountDialogFragment.SelectPhoneAccountListener {
 
     private final PreCallCoordinator coordinator;
     private final PreCallCoordinator.PendingAction listener;
diff --git a/java/com/android/dialer/precall/impl/DuoAction.java b/java/com/android/dialer/precall/impl/DuoAction.java
deleted file mode 100644
index c05fbe1..0000000
--- a/java/com/android/dialer/precall/impl/DuoAction.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.precall.impl;
-
-import android.content.Context;
-import android.content.Intent;
-import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.Annotations.Ui;
-import com.android.dialer.duo.Duo.ReachabilityData;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.precall.PreCallAction;
-import com.android.dialer.precall.PreCallCoordinator;
-import com.android.dialer.precall.PreCallCoordinator.PendingAction;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import javax.inject.Inject;
-
-/**
- * Checks if a duo call is actually callable, and request an activity for {@link
- * android.app.Activity#startActivityForResult(Intent, int)}
- */
-public class DuoAction implements PreCallAction {
-
-  private final ListeningExecutorService uiExecutor;
-
-  @Inject
-  DuoAction(@Ui ListeningExecutorService uiExecutor) {
-    this.uiExecutor = uiExecutor;
-  }
-
-  @Override
-  public boolean requiresUi(Context context, CallIntentBuilder builder) {
-    // Duo call must be started with startActivityForResult() which needs a activity.
-    return builder.isDuoCall();
-  }
-
-  @Override
-  public void runWithoutUi(Context context, CallIntentBuilder builder) {}
-
-  @Override
-  public void runWithUi(PreCallCoordinator coordinator) {
-    if (!requiresUi(coordinator.getActivity(), coordinator.getBuilder())) {
-      return;
-    }
-    String number = coordinator.getBuilder().getUri().getSchemeSpecificPart();
-    ListenableFuture<ImmutableMap<String, ReachabilityData>> reachabilities =
-        DuoComponent.get(coordinator.getActivity())
-            .getDuo()
-            .updateReachability(coordinator.getActivity(), ImmutableList.of(number));
-    PendingAction pendingAction = coordinator.startPendingAction();
-
-    Futures.addCallback(
-        reachabilities,
-        new FutureCallback<ImmutableMap<String, ReachabilityData>>() {
-          @Override
-          public void onSuccess(ImmutableMap<String, ReachabilityData> result) {
-            if (!result.containsKey(number) || !result.get(number).videoCallable()) {
-              LogUtil.w(
-                  "DuoAction.runWithUi",
-                  number + " number no longer duo reachable, falling back to carrier video call");
-              coordinator.getBuilder().setIsDuoCall(false);
-            }
-            pendingAction.finish();
-          }
-
-          @Override
-          public void onFailure(Throwable throwable) {
-            LogUtil.e("DuoAction.runWithUi", "reachability query failed", throwable);
-            coordinator.getBuilder().setIsDuoCall(false);
-            pendingAction.finish();
-          }
-        },
-        uiExecutor);
-  }
-
-  @Override
-  public void onDiscard() {}
-}
diff --git a/java/com/android/dialer/precall/impl/MalformedNumberRectifier.java b/java/com/android/dialer/precall/impl/MalformedNumberRectifier.java
index 2e41463..e76df75 100644
--- a/java/com/android/dialer/precall/impl/MalformedNumberRectifier.java
+++ b/java/com/android/dialer/precall/impl/MalformedNumberRectifier.java
@@ -18,14 +18,17 @@
 
 import android.content.Context;
 import android.net.Uri;
-import android.support.annotation.MainThread;
 import android.telecom.PhoneAccount;
+
+import androidx.annotation.MainThread;
+
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.precall.PreCallAction;
 import com.android.dialer.precall.PreCallCoordinator;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
+import java.util.Optional;
+
 /**
  * Fix common malformed number before it is dialed. Rewrite the number to the first handler that can
  * handle it
diff --git a/java/com/android/dialer/precall/impl/PermissionCheckAction.java b/java/com/android/dialer/precall/impl/PermissionCheckAction.java
index 85e9ceb..83c872e 100644
--- a/java/com/android/dialer/precall/impl/PermissionCheckAction.java
+++ b/java/com/android/dialer/precall/impl/PermissionCheckAction.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,17 +19,18 @@
 
 import android.content.Context;
 import android.widget.Toast;
+
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.precall.PreCallAction;
 import com.android.dialer.precall.PreCallCoordinator;
-import com.android.dialer.telecom.TelecomUtil;
+import com.android.dialer.util.PermissionsUtil;
 
 /** Aborts call and show a toast if phone permissions are missing. */
 public class PermissionCheckAction implements PreCallAction {
 
   @Override
   public boolean requiresUi(Context context, CallIntentBuilder builder) {
-    return !TelecomUtil.hasCallPhonePermission(context);
+    return !PermissionsUtil.hasPhonePermissions(context);
   }
 
   @Override
diff --git a/java/com/android/dialer/precall/impl/PreCallActivity.java b/java/com/android/dialer/precall/impl/PreCallActivity.java
index 7b27945..e2e5e1c 100644
--- a/java/com/android/dialer/precall/impl/PreCallActivity.java
+++ b/java/com/android/dialer/precall/impl/PreCallActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,14 +17,15 @@
 
 package com.android.dialer.precall.impl;
 
-import android.app.Activity;
 import android.app.KeyguardManager;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
 import android.view.WindowManager.LayoutParams;
 
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
 /** A transparent activity to host dialogs for {@link PreCallCoordinatorImpl} */
-public class PreCallActivity extends Activity {
+public class PreCallActivity extends AppCompatActivity {
 
   private PreCallCoordinatorImpl preCallCoordinator;
 
diff --git a/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java b/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
index 314a0a0..d320f72 100644
--- a/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
+++ b/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,22 +20,21 @@
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentActivity;
+
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.UiListener;
-import com.android.dialer.duo.DuoComponent;
+import com.android.dialer.common.concurrent.SupportUiListener;
 import com.android.dialer.function.Consumer;
-import com.android.dialer.logging.DialerImpression.Type;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCallAction;
 import com.android.dialer.precall.PreCallComponent;
 import com.android.dialer.precall.PreCallCoordinator;
 import com.android.dialer.telecom.TelecomUtil;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -48,7 +48,8 @@
 
   private static final String SAVED_STATE_CURRENT_ACTION = "current_action";
 
-  @NonNull private final Activity activity;
+  @NonNull
+  private final Activity activity;
 
   private CallIntentBuilder builder;
   private ImmutableList<PreCallAction> actions;
@@ -57,7 +58,7 @@
   private PendingAction pendingAction;
   private boolean aborted = false;
 
-  private UiListener<Object> uiListener;
+  private SupportUiListener<Object> uiListener;
 
   PreCallCoordinatorImpl(@NonNull Activity activity) {
     this.activity = Assert.isNotNull(activity);
@@ -67,18 +68,21 @@
     LogUtil.enterBlock("PreCallCoordinatorImpl.onCreate");
     if (savedInstanceState != null) {
       currentActionIndex = savedInstanceState.getInt(SAVED_STATE_CURRENT_ACTION);
-      builder = Assert.isNotNull(savedInstanceState.getParcelable(EXTRA_CALL_INTENT_BUILDER));
+      builder = Assert.isNotNull(savedInstanceState.getParcelable(EXTRA_CALL_INTENT_BUILDER,
+              CallIntentBuilder.class));
     } else {
-      builder = Assert.isNotNull(intent.getParcelableExtra(EXTRA_CALL_INTENT_BUILDER));
+      builder = Assert.isNotNull(intent.getParcelableExtra(EXTRA_CALL_INTENT_BUILDER,
+              CallIntentBuilder.class));
     }
     uiListener =
         DialerExecutorComponent.get(activity)
-            .createUiListener(activity.getFragmentManager(), "PreCallCoordinatorImpl.uiListener");
+            .createUiListener(((FragmentActivity)activity).getSupportFragmentManager(),
+                    "PreCallCoordinatorImpl.uiListener");
   }
 
   void onRestoreInstanceState(Bundle savedInstanceState) {
     currentActionIndex = savedInstanceState.getInt(SAVED_STATE_CURRENT_ACTION);
-    builder = savedInstanceState.getParcelable(EXTRA_CALL_INTENT_BUILDER);
+    builder = savedInstanceState.getParcelable(EXTRA_CALL_INTENT_BUILDER, CallIntentBuilder.class);
   }
 
   void onResume() {
@@ -131,7 +135,6 @@
   public void abortCall() {
     Assert.checkState(currentAction != null);
     aborted = true;
-    Logger.get(getActivity()).logImpression(Type.PRECALL_CANCELED);
   }
 
   @NonNull
@@ -181,18 +184,6 @@
   }
 
   private void placeCall() {
-    if (builder.isDuoCall()) {
-      Optional<Intent> intent =
-          DuoComponent.get(activity)
-              .getDuo()
-              .getCallIntent(builder.getUri().getSchemeSpecificPart());
-      if (intent.isPresent()) {
-        activity.startActivityForResult(intent.get(), 0);
-        return;
-      } else {
-        LogUtil.e("PreCallCoordinatorImpl.placeCall", "duo.getCallIntent() returned absent");
-      }
-    }
     TelecomUtil.placeCall(activity, builder.build());
   }
 }
diff --git a/java/com/android/dialer/precall/impl/PreCallImpl.java b/java/com/android/dialer/precall/impl/PreCallImpl.java
index f52fa61..e7c28a4 100644
--- a/java/com/android/dialer/precall/impl/PreCallImpl.java
+++ b/java/com/android/dialer/precall/impl/PreCallImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,15 +19,16 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.precall.PreCallAction;
 import com.android.dialer.precall.PreCallCoordinator;
 import com.google.common.collect.ImmutableList;
+
 import javax.inject.Inject;
 
 /** Implementation of {@link PreCall} */
@@ -42,7 +44,6 @@
   @NonNull
   @Override
   public Intent buildIntent(Context context, CallIntentBuilder builder) {
-    Logger.get(context).logImpression(DialerImpression.Type.PRECALL_INITIATED);
     if (!requiresUi(context, builder)) {
       LogUtil.i("PreCallImpl.buildIntent", "No UI requested, running pre-call directly");
       for (PreCallAction action : actions) {
diff --git a/java/com/android/dialer/precall/impl/PreCallModule.java b/java/com/android/dialer/precall/impl/PreCallModule.java
index cbdabe3..d5ee63e 100644
--- a/java/com/android/dialer/precall/impl/PreCallModule.java
+++ b/java/com/android/dialer/precall/impl/PreCallModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,18 +17,17 @@
 
 package com.android.dialer.precall.impl;
 
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.precall.PreCallAction;
 import com.google.common.collect.ImmutableList;
+
+import javax.inject.Singleton;
+
 import dagger.Binds;
 import dagger.Module;
 import dagger.Provides;
-import javax.inject.Singleton;
 
 /** Dagger module for {@link PreCall}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module
 public abstract class PreCallModule {
 
@@ -39,13 +39,12 @@
 
   @Provides
   public static ImmutableList<PreCallAction> provideActions(
-      DuoAction duoAction, CallingAccountSelector callingAccountSelector) {
+      CallingAccountSelector callingAccountSelector) {
     return ImmutableList.of(
         new PermissionCheckAction(),
         new MalformedNumberRectifier(
             ImmutableList.of(new UkRegionPrefixInInternationalFormatHandler())),
         callingAccountSelector,
-        duoAction,
         new AssistedDialAction());
   }
 }
diff --git a/java/com/android/dialer/precall/impl/UkRegionPrefixInInternationalFormatHandler.java b/java/com/android/dialer/precall/impl/UkRegionPrefixInInternationalFormatHandler.java
index 825375d..d53d7d3 100644
--- a/java/com/android/dialer/precall/impl/UkRegionPrefixInInternationalFormatHandler.java
+++ b/java/com/android/dialer/precall/impl/UkRegionPrefixInInternationalFormatHandler.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,10 +19,11 @@
 
 import android.content.Context;
 import android.telephony.PhoneNumberUtils;
+
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.precall.impl.MalformedNumberRectifier.MalformedNumberHandler;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /**
  * It is customary in UK to present numbers as "+44 (0) xx xxxx xxxx". This is actually a amalgam of
@@ -37,13 +39,8 @@
 
   @Override
   public Optional<String> handle(Context context, String number) {
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("uk_region_prefix_in_international_format_fix_enabled", true)) {
-      return Optional.absent();
-    }
     if (!PhoneNumberUtils.normalizeNumber(number).startsWith(MALFORMED_PREFIX)) {
-      return Optional.absent();
+      return Optional.empty();
     }
     LogUtil.i("UkRegionPrefixInInternationalFormatHandler.handle", "removing (0) in UK numbers");
 
diff --git a/java/com/android/dialer/preferredsim/PreferredAccountRecorder.java b/java/com/android/dialer/preferredsim/PreferredAccountRecorder.java
index 75f8ad7..ab5f31b 100644
--- a/java/com/android/dialer/preferredsim/PreferredAccountRecorder.java
+++ b/java/com/android/dialer/preferredsim/PreferredAccountRecorder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,15 +19,15 @@
 
 import android.content.ContentValues;
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.preferredsim.PreferredSimFallbackContract.PreferredSim;
 import com.android.dialer.preferredsim.suggestion.SimSuggestionComponent;
 import com.android.dialer.preferredsim.suggestion.SuggestionProvider.Suggestion;
@@ -35,7 +36,8 @@
 public class PreferredAccountRecorder {
 
   @Nullable private final String number;
-  @Nullable private final Suggestion suggestion;
+  @Nullable
+  private final Suggestion suggestion;
   @Nullable private final String dataId;
 
   public PreferredAccountRecorder(
@@ -47,23 +49,12 @@
 
   /**
    * Record the result from {@link
-   * com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener#onPhoneAccountSelected}
+   * com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener
+   * #onPhoneAccountSelected}
    */
   public void record(
       Context context, PhoneAccountHandle selectedAccountHandle, boolean setDefault) {
-
-    if (suggestion != null) {
-      if (suggestion.phoneAccountHandle.equals(selectedAccountHandle)) {
-        Logger.get(context)
-            .logImpression(DialerImpression.Type.DUAL_SIM_SELECTION_SUGGESTED_SIM_SELECTED);
-      } else {
-        Logger.get(context)
-            .logImpression(DialerImpression.Type.DUAL_SIM_SELECTION_NON_SUGGESTED_SIM_SELECTED);
-      }
-    }
-
     if (dataId != null && setDefault) {
-      Logger.get(context).logImpression(DialerImpression.Type.DUAL_SIM_SELECTION_PREFERRED_SET);
       DialerExecutorComponent.get(context)
           .dialerExecutorFactory()
           .createNonUiTaskBuilder(new WritePreferredAccountWorker())
@@ -87,8 +78,8 @@
     private final PhoneAccountHandle phoneAccountHandle;
     private final boolean remember;
 
-    public UserSelectionReporter(
-        @NonNull PhoneAccountHandle phoneAccountHandle, @Nullable String number, boolean remember) {
+    public UserSelectionReporter(@NonNull PhoneAccountHandle phoneAccountHandle,
+                                 @Nullable String number, boolean remember) {
       this.phoneAccountHandle = Assert.isNotNull(phoneAccountHandle);
       this.number = Assert.isNotNull(number);
       this.remember = remember;
@@ -138,7 +129,7 @@
               PreferredSimFallbackContract.CONTENT_URI,
               values,
               PreferredSim.DATA_ID + " = ?",
-              new String[] {String.valueOf(input.dataId)});
+              new String[] {input.dataId});
       return null;
     }
   }
diff --git a/java/com/android/dialer/preferredsim/PreferredAccountUtil.java b/java/com/android/dialer/preferredsim/PreferredAccountUtil.java
index 1cfdbb1..1a5ce98 100644
--- a/java/com/android/dialer/preferredsim/PreferredAccountUtil.java
+++ b/java/com/android/dialer/preferredsim/PreferredAccountUtil.java
@@ -18,22 +18,18 @@
 
 import android.content.ComponentName;
 import android.content.Context;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableSet;
 
+import java.util.Optional;
+
 /**
  * Utilities for looking up and validating preferred {@link PhoneAccountHandle}. Contacts should
  * follow the same logic.
@@ -45,53 +41,33 @@
    * device.
    */
   @NonNull
-  public static Optional<PhoneAccountHandle> getValidPhoneAccount(
-      @NonNull Context context, @Nullable String componentNameString, @Nullable String idString) {
+  public static Optional<PhoneAccountHandle> getValidPhoneAccount(@NonNull Context context,
+                                                                  @Nullable String
+                                                                          componentNameString,
+                                                                  @Nullable String idString) {
     if (TextUtils.isEmpty(componentNameString) || TextUtils.isEmpty(idString)) {
       LogUtil.i("PreferredAccountUtil.getValidPhoneAccount", "empty componentName or id");
-      return Optional.absent();
+      return Optional.empty();
     }
     ComponentName componentName = ComponentName.unflattenFromString(componentNameString);
     if (componentName == null) {
       LogUtil.e("PreferredAccountUtil.getValidPhoneAccount", "cannot parse component name");
-      return Optional.absent();
+      return Optional.empty();
     }
     PhoneAccountHandle phoneAccountHandle = new PhoneAccountHandle(componentName, idString);
 
     if (isPhoneAccountValid(context, phoneAccountHandle)) {
       return Optional.of(phoneAccountHandle);
     }
-    return Optional.absent();
+    return Optional.empty();
   }
 
   public static boolean isPhoneAccountValid(
       Context context, PhoneAccountHandle phoneAccountHandle) {
-    if (VERSION.SDK_INT >= VERSION_CODES.O) {
       return context
               .getSystemService(TelephonyManager.class)
               .createForPhoneAccountHandle(phoneAccountHandle)
           != null;
-    }
-
-    PhoneAccount phoneAccount =
-        context.getSystemService(TelecomManager.class).getPhoneAccount(phoneAccountHandle);
-    if (phoneAccount == null) {
-      LogUtil.e("PreferredAccountUtil.isPhoneAccountValid", "invalid phone account");
-      return false;
-    }
-
-    if (!phoneAccount.isEnabled()) {
-      LogUtil.e("PreferredAccountUtil.isPhoneAccountValid", "disabled phone account");
-      return false;
-    }
-    for (SubscriptionInfo info :
-        SubscriptionManager.from(context).getActiveSubscriptionInfoList()) {
-      if (phoneAccountHandle.getId().startsWith(info.getIccId())) {
-        LogUtil.i("PreferredAccountUtil.isPhoneAccountValid", "sim found");
-        return true;
-      }
-    }
-    return false;
   }
 
   /**
@@ -100,12 +76,9 @@
    * com.android.contacts.common.model.AccountTypeManager#getAccountTypes(boolean)}. External
    * accounts are not supported.
    */
-  public static ImmutableSet<String> getValidAccountTypes(Context context) {
+  public static ImmutableSet<String> getValidAccountTypes() {
     return ImmutableSet.copyOf(
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getString(
-                "preferred_sim_valid_account_types",
+            (
                 "com.google;"
                     + "com.osp.app.signin;"
                     + "com.android.exchange;"
diff --git a/java/com/android/dialer/preferredsim/PreferredAccountWorker.java b/java/com/android/dialer/preferredsim/PreferredAccountWorker.java
index 965d088..0e66291 100644
--- a/java/com/android/dialer/preferredsim/PreferredAccountWorker.java
+++ b/java/com/android/dialer/preferredsim/PreferredAccountWorker.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,15 +18,17 @@
 package com.android.dialer.preferredsim;
 
 import android.telecom.PhoneAccountHandle;
+
 import com.android.contacts.common.widget.SelectPhoneAccountDialogOptions;
 import com.android.dialer.preferredsim.suggestion.SuggestionProvider.Suggestion;
 import com.google.auto.value.AutoValue;
-import com.google.common.base.Optional;
 import com.google.common.util.concurrent.ListenableFuture;
+
 import java.util.List;
+import java.util.Optional;
 
 /** Query a preferred SIM to make a call with. */
-@SuppressWarnings({"missingPermission", "Guava"})
+@SuppressWarnings("missingPermission")
 public interface PreferredAccountWorker {
 
   /** Result of the query. */
diff --git a/java/com/android/dialer/preferredsim/PreferredSimComponent.java b/java/com/android/dialer/preferredsim/PreferredSimComponent.java
index b8d7fa1..9f2eb14 100644
--- a/java/com/android/dialer/preferredsim/PreferredSimComponent.java
+++ b/java/com/android/dialer/preferredsim/PreferredSimComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,9 @@
 package com.android.dialer.preferredsim;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
+
 import dagger.Subcomponent;
 
 /** Component for preferred SIM */
diff --git a/java/com/android/dialer/preferredsim/PreferredSimFallbackContract.java b/java/com/android/dialer/preferredsim/PreferredSimFallbackContract.java
index 6c2f860..594ff7b 100644
--- a/java/com/android/dialer/preferredsim/PreferredSimFallbackContract.java
+++ b/java/com/android/dialer/preferredsim/PreferredSimFallbackContract.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
 import android.net.Uri;
 import android.provider.ContactsContract.CommonDataKinds;
 import android.telecom.PhoneAccountHandle;
+
 import com.android.dialer.constants.Constants;
 
 /**
@@ -37,7 +39,7 @@
    * Check the meta-data "com.android.dialer.PREFERRED_SIM_FALLBACK_AUTHORITY" to get the authority
    * of the default dialer if it support it.
    */
-  public static final String AUTHORITY = Constants.get().getPreferredSimFallbackProviderAuthority();
+  public static final String AUTHORITY = Constants.PREFERRED_SIM_FALLBACK_PROVIDER_AUTHORITY;
 
   public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY);
 
diff --git a/java/com/android/dialer/preferredsim/PreferredSimModule.java b/java/com/android/dialer/preferredsim/PreferredSimModule.java
index bdc6a5a..717863e 100644
--- a/java/com/android/dialer/preferredsim/PreferredSimModule.java
+++ b/java/com/android/dialer/preferredsim/PreferredSimModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.dialer.preferredsim;
 
 import com.android.dialer.preferredsim.impl.PreferredAccountWorkerImpl;
+
 import dagger.Binds;
 import dagger.Module;
 
diff --git a/java/com/android/dialer/preferredsim/impl/AndroidManifest.xml b/java/com/android/dialer/preferredsim/impl/AndroidManifest.xml
deleted file mode 100644
index e6f932e..0000000
--- a/java/com/android/dialer/preferredsim/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.preferredsim.impl">
-
-  <application>
-
-    <provider
-        android:authorities="com.android.dialer.preferredsimfallback"
-        android:exported="true"
-        android:multiprocess="false"
-        android:name=".PreferredSimFallbackProvider"
-        android:readPermission="android.permission.READ_CONTACTS"
-        android:writePermission="android.permission.WRITE_CONTACTS"/>
-
-    <meta-data
-        android:name="com.android.dialer.SUPPORTS_PREFERRED_SIM"
-        android:value="true"/>
-    <meta-data
-        android:name="com.android.dialer.PREFERRED_SIM_FALLBACK_AUTHORITY"
-        android:value="com.android.dialer.preferredsimfallback"/>
-  </application>
-</manifest>
diff --git a/java/com/android/dialer/preferredsim/impl/PreferredAccountWorkerImpl.java b/java/com/android/dialer/preferredsim/impl/PreferredAccountWorkerImpl.java
index ffd98f4..019ced4 100644
--- a/java/com/android/dialer/preferredsim/impl/PreferredAccountWorkerImpl.java
+++ b/java/com/android/dialer/preferredsim/impl/PreferredAccountWorkerImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,25 +30,24 @@
 import android.provider.ContactsContract.PhoneLookup;
 import android.provider.ContactsContract.QuickContact;
 import android.provider.ContactsContract.RawContacts;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.contacts.common.widget.SelectPhoneAccountDialogOptions;
 import com.android.contacts.common.widget.SelectPhoneAccountDialogOptionsUtil;
+import com.android.dialer.R;
 import com.android.dialer.activecalls.ActiveCallInfo;
 import com.android.dialer.activecalls.ActiveCallsComponent;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.logging.DialerImpression.Type;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.preferredsim.PreferredAccountUtil;
 import com.android.dialer.preferredsim.PreferredAccountWorker;
 import com.android.dialer.preferredsim.PreferredAccountWorker.Result.Builder;
@@ -57,24 +57,25 @@
 import com.android.dialer.preferredsim.suggestion.SuggestionProvider;
 import com.android.dialer.preferredsim.suggestion.SuggestionProvider.Suggestion;
 import com.android.dialer.util.PermissionsUtil;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
+
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
+
 import javax.inject.Inject;
 
 /** Implements {@link PreferredAccountWorker}. */
-@SuppressWarnings({"missingPermission", "Guava"})
+@SuppressWarnings("missingPermission")
 public class PreferredAccountWorkerImpl implements PreferredAccountWorker {
 
   private final Context appContext;
   private final ListeningExecutorService backgroundExecutor;
 
-  @VisibleForTesting
-  public static final String METADATA_SUPPORTS_PREFERRED_SIM =
+  private static final String METADATA_SUPPORTS_PREFERRED_SIM =
       "supports_per_number_preferred_account";
 
   @Inject
@@ -115,7 +116,7 @@
             .getSystemService(TelecomManager.class)
             .getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL);
     if (defaultPhoneAccount != null) {
-      return useDefaultSim(defaultPhoneAccount, candidates, dataId.orNull());
+      return useDefaultSim(defaultPhoneAccount, candidates, dataId.orElse(null));
     }
 
     Optional<Suggestion> suggestion =
@@ -123,18 +124,14 @@
             .getSuggestionProvider()
             .getSuggestion(appContext, phoneNumber);
     if (suggestion.isPresent() && suggestion.get().shouldAutoSelect) {
-      return useSuggestedSim(suggestion.get(), candidates, dataId.orNull());
+      return useSuggestedSim(suggestion.get(), candidates, dataId.orElse(null));
     }
 
     Builder resultBuilder =
         Result.builder(
-            createDialogOptionsBuilder(candidates, dataId.orNull(), suggestion.orNull()));
-    if (suggestion.isPresent()) {
-      resultBuilder.setSuggestion(suggestion.get());
-    }
-    if (dataId.isPresent()) {
-      resultBuilder.setDataId(dataId.get());
-    }
+            createDialogOptionsBuilder(candidates, dataId.orElse(null), suggestion.orElse(null)));
+    suggestion.ifPresent(resultBuilder::setSuggestion);
+    dataId.ifPresent(resultBuilder::setDataId);
     return resultBuilder.build();
   }
 
@@ -142,10 +139,8 @@
       PhoneAccountHandle preferred, List<PhoneAccountHandle> candidates, String dataId) {
     Builder resultBuilder;
     if (isSelectable(preferred)) {
-      Logger.get(appContext).logImpression(Type.DUAL_SIM_SELECTION_PREFERRED_USED);
       resultBuilder = Result.builder(preferred);
     } else {
-      Logger.get(appContext).logImpression(Type.DUAL_SIM_SELECTION_PREFERRED_NOT_SELECTABLE);
       LogUtil.i("CallingAccountSelector.usePreferredAccount", "preferred account not selectable");
       resultBuilder = Result.builder(createDialogOptionsBuilder(candidates, dataId, null));
     }
@@ -158,10 +153,8 @@
       List<PhoneAccountHandle> candidates,
       @Nullable String dataId) {
     if (isSelectable(defaultPhoneAccount)) {
-      Logger.get(appContext).logImpression(Type.DUAL_SIM_SELECTION_GLOBAL_USED);
       return Result.builder(defaultPhoneAccount).build();
     } else {
-      Logger.get(appContext).logImpression(Type.DUAL_SIM_SELECTION_GLOBAL_NOT_SELECTABLE);
       LogUtil.i("CallingAccountSelector.usePreferredAccount", "global account not selectable");
       return Result.builder(createDialogOptionsBuilder(candidates, dataId, null)).build();
     }
@@ -173,9 +166,7 @@
     PhoneAccountHandle suggestedPhoneAccount = suggestion.phoneAccountHandle;
     if (isSelectable(suggestedPhoneAccount)) {
       resultBuilder = Result.builder(suggestedPhoneAccount);
-      Logger.get(appContext).logImpression(Type.DUAL_SIM_SELECTION_SUGGESTION_AUTO_SELECTED);
     } else {
-      Logger.get(appContext).logImpression(Type.DUAL_SIM_SELECTION_SUGGESTION_AUTO_NOT_SELECTABLE);
       LogUtil.i("CallingAccountSelector.usePreferredAccount", "global account not selectable");
       resultBuilder = Result.builder(createDialogOptionsBuilder(candidates, dataId, suggestion));
       return resultBuilder.build();
@@ -188,22 +179,6 @@
       List<PhoneAccountHandle> candidates,
       @Nullable String dataId,
       @Nullable Suggestion suggestion) {
-    Logger.get(appContext).logImpression(Type.DUAL_SIM_SELECTION_SHOWN);
-    if (dataId != null) {
-      Logger.get(appContext).logImpression(Type.DUAL_SIM_SELECTION_IN_CONTACTS);
-    }
-    if (suggestion != null) {
-      Logger.get(appContext).logImpression(Type.DUAL_SIM_SELECTION_SUGGESTION_AVAILABLE);
-      switch (suggestion.reason) {
-        case INTRA_CARRIER:
-          Logger.get(appContext).logImpression(Type.DUAL_SIM_SELECTION_SUGGESTED_CARRIER);
-          break;
-        case FREQUENT:
-          Logger.get(appContext).logImpression(Type.DUAL_SIM_SELECTION_SUGGESTED_FREQUENCY);
-          break;
-        default:
-      }
-    }
     SelectPhoneAccountDialogOptions.Builder optionsBuilder =
         SelectPhoneAccountDialogOptions.newBuilder()
             .setTitle(R.string.pre_call_select_phone_account)
@@ -242,15 +217,15 @@
     Assert.isWorkerThread();
 
     if (!isPreferredSimEnabled(appContext)) {
-      return Optional.absent();
+      return Optional.empty();
     }
     if (!PermissionsUtil.hasContactsReadPermissions(appContext)) {
       LogUtil.i("PreferredAccountWorker.doInBackground", "missing READ_CONTACTS permission");
-      return Optional.absent();
+      return Optional.empty();
     }
 
     if (TextUtils.isEmpty(phoneNumber)) {
-      return Optional.absent();
+      return Optional.empty();
     }
     try (Cursor cursor =
         appContext
@@ -262,10 +237,9 @@
                 null,
                 null)) {
       if (cursor == null) {
-        return Optional.absent();
+        return Optional.empty();
       }
-      ImmutableSet<String> validAccountTypes =
-          PreferredAccountUtil.getValidAccountTypes(appContext);
+      ImmutableSet<String> validAccountTypes = PreferredAccountUtil.getValidAccountTypes();
       String result = null;
       while (cursor.moveToNext()) {
         Optional<String> accountType =
@@ -279,11 +253,11 @@
           // TODO(twyen): if there are multiple entries attempt to grab from the contact that
           // initiated the call.
           LogUtil.i("CallingAccountSelector.getDataId", "lookup result not unique, ignoring");
-          return Optional.absent();
+          return Optional.empty();
         }
         result = cursor.getString(0);
       }
-      return Optional.fromNullable(result);
+      return Optional.ofNullable(result);
     }
   }
 
@@ -292,7 +266,7 @@
     Assert.isWorkerThread();
     Optional<Long> rawContactId = getRawContactId(contentResolver, dataId);
     if (!rawContactId.isPresent()) {
-      return Optional.absent();
+      return Optional.empty();
     }
     try (Cursor cursor =
         contentResolver.query(
@@ -302,9 +276,9 @@
             null,
             null)) {
       if (cursor == null || !cursor.moveToFirst()) {
-        return Optional.absent();
+        return Optional.empty();
       }
-      return Optional.fromNullable(cursor.getString(0));
+      return Optional.ofNullable(cursor.getString(0));
     }
   }
 
@@ -319,7 +293,7 @@
             null,
             null)) {
       if (cursor == null || !cursor.moveToFirst()) {
-        return Optional.absent();
+        return Optional.empty();
       }
       return Optional.of(cursor.getLong(0));
     }
@@ -344,10 +318,10 @@
                 new String[] {dataId},
                 null)) {
       if (cursor == null) {
-        return Optional.absent();
+        return Optional.empty();
       }
       if (!cursor.moveToFirst()) {
-        return Optional.absent();
+        return Optional.empty();
       }
       return PreferredAccountUtil.getValidPhoneAccount(
           context, cursor.getString(0), cursor.getString(1));
@@ -357,17 +331,11 @@
   @WorkerThread
   private static boolean isPreferredSimEnabled(Context context) {
     Assert.isWorkerThread();
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("preferred_sim_enabled", true)) {
-      return false;
-    }
 
     Intent quickContactIntent = getQuickContactIntent();
-    ResolveInfo resolveInfo =
-        context
-            .getPackageManager()
-            .resolveActivity(quickContactIntent, PackageManager.GET_META_DATA);
+    ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(
+            quickContactIntent,
+            PackageManager.ResolveInfoFlags.of(PackageManager.GET_META_DATA));
     if (resolveInfo == null
         || resolveInfo.activityInfo == null
         || resolveInfo.activityInfo.applicationInfo == null
@@ -385,7 +353,6 @@
     return true;
   }
 
-  @VisibleForTesting
   public static Intent getQuickContactIntent() {
     Intent intent = new Intent(QuickContact.ACTION_QUICK_CONTACT);
     intent.addCategory(Intent.CATEGORY_DEFAULT);
@@ -404,7 +371,7 @@
       return true;
     }
     for (ActiveCallInfo activeCall : activeCalls) {
-      if (Objects.equals(phoneAccountHandle, activeCall.phoneAccountHandle().orNull())) {
+      if (Objects.equals(phoneAccountHandle, activeCall.phoneAccountHandle().orElse(null))) {
         return true;
       }
     }
@@ -417,12 +384,12 @@
 
     if (activeCalls.isEmpty()) {
       LogUtil.e("CallingAccountSelector.getActiveCallLabel", "active calls no longer exist");
-      return Optional.absent();
+      return Optional.empty();
     }
     ActiveCallInfo activeCall = activeCalls.get(0);
     if (!activeCall.phoneAccountHandle().isPresent()) {
       LogUtil.e("CallingAccountSelector.getActiveCallLabel", "active call has no phone account");
-      return Optional.absent();
+      return Optional.empty();
     }
     PhoneAccount phoneAccount =
         appContext
@@ -430,7 +397,7 @@
             .getPhoneAccount(activeCall.phoneAccountHandle().get());
     if (phoneAccount == null) {
       LogUtil.e("CallingAccountSelector.getActiveCallLabel", "phone account not found");
-      return Optional.absent();
+      return Optional.empty();
     }
     return Optional.of(phoneAccount.getLabel().toString());
   }
diff --git a/java/com/android/dialer/preferredsim/impl/PreferredSimDatabaseHelper.java b/java/com/android/dialer/preferredsim/impl/PreferredSimDatabaseHelper.java
index 4795ea4..b47ef4a 100644
--- a/java/com/android/dialer/preferredsim/impl/PreferredSimDatabaseHelper.java
+++ b/java/com/android/dialer/preferredsim/impl/PreferredSimDatabaseHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.content.Context;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.preferredsim.PreferredSimFallbackContract.PreferredSim;
 
diff --git a/java/com/android/dialer/preferredsim/impl/PreferredSimFallbackProvider.java b/java/com/android/dialer/preferredsim/impl/PreferredSimFallbackProvider.java
index 515ed96..8cf65fd 100644
--- a/java/com/android/dialer/preferredsim/impl/PreferredSimFallbackProvider.java
+++ b/java/com/android/dialer/preferredsim/impl/PreferredSimFallbackProvider.java
@@ -23,9 +23,11 @@
 import android.database.Cursor;
 import android.database.sqlite.SQLiteQueryBuilder;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.preferredsim.PreferredSimFallbackContract;
 import com.android.dialer.preferredsim.PreferredSimFallbackContract.PreferredSim;
 import com.google.common.collect.ImmutableMap;
diff --git a/java/com/android/dialer/preferredsim/suggestion/AndroidManifest.xml b/java/com/android/dialer/preferredsim/suggestion/AndroidManifest.xml
deleted file mode 100644
index 78f7c26..0000000
--- a/java/com/android/dialer/preferredsim/suggestion/AndroidManifest.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
- ~ Copyright (C) 2018 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.preferredsim.suggestion">
-</manifest>
diff --git a/java/com/android/dialer/preferredsim/suggestion/SimSuggestionComponent.java b/java/com/android/dialer/preferredsim/suggestion/SimSuggestionComponent.java
index 4b3f7b2..255c67f 100644
--- a/java/com/android/dialer/preferredsim/suggestion/SimSuggestionComponent.java
+++ b/java/com/android/dialer/preferredsim/suggestion/SimSuggestionComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,12 @@
 package com.android.dialer.preferredsim.suggestion;
 
 import android.content.Context;
-import android.support.annotation.WorkerThread;
+
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.inject.HasRootComponent;
+
 import dagger.Subcomponent;
 
 /** Dagger component for {@link SuggestionProvider} */
diff --git a/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java b/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
index 50ae01f..ffd19c3 100644
--- a/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
+++ b/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,16 +18,19 @@
 package com.android.dialer.preferredsim.suggestion;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /** Provides hints to the user when selecting a SIM to make a call. */
-@SuppressWarnings("Guava")
 public interface SuggestionProvider {
 
   String EXTRA_SIM_SUGGESTION_REASON = "sim_suggestion_reason";
@@ -49,7 +53,8 @@
 
   /** The suggestion. */
   class Suggestion {
-    @NonNull public final PhoneAccountHandle phoneAccountHandle;
+    @NonNull
+    public final PhoneAccountHandle phoneAccountHandle;
     @NonNull public final Reason reason;
     public final boolean shouldAutoSelect;
 
@@ -81,13 +86,13 @@
   /**
    * Return the hint for {@code phoneAccountHandle}. Absent if no hint is available for the account.
    */
-  static Optional<String> getHint(
-      Context context, PhoneAccountHandle phoneAccountHandle, @Nullable Suggestion suggestion) {
+  static Optional<String> getHint(Context context, PhoneAccountHandle phoneAccountHandle,
+                                  @Nullable Suggestion suggestion) {
     if (suggestion == null) {
-      return Optional.absent();
+      return Optional.empty();
     }
     if (!phoneAccountHandle.equals(suggestion.phoneAccountHandle)) {
-      return Optional.absent();
+      return Optional.empty();
     }
     switch (suggestion.reason) {
       case INTRA_CARRIER:
@@ -97,7 +102,7 @@
         return Optional.of(context.getString(R.string.pre_call_select_phone_account_hint_frequent));
       default:
         LogUtil.w("CallingAccountSelector.getHint", "unhandled reason " + suggestion.reason);
-        return Optional.absent();
+        return Optional.empty();
     }
   }
 }
diff --git a/java/com/android/dialer/preferredsim/suggestion/stub/StubSimSuggestionModule.java b/java/com/android/dialer/preferredsim/suggestion/stub/StubSimSuggestionModule.java
index 2f0e9b2..a1e1823 100644
--- a/java/com/android/dialer/preferredsim/suggestion/stub/StubSimSuggestionModule.java
+++ b/java/com/android/dialer/preferredsim/suggestion/stub/StubSimSuggestionModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,11 @@
 package com.android.dialer.preferredsim.suggestion.stub;
 
 import com.android.dialer.preferredsim.suggestion.SuggestionProvider;
+
+import javax.inject.Singleton;
+
 import dagger.Binds;
 import dagger.Module;
-import javax.inject.Singleton;
 
 /** Stub module for {@link com.android.dialer.preferredsim.suggestion.SimSuggestionComponent} */
 @Module
diff --git a/java/com/android/dialer/preferredsim/suggestion/stub/StubSuggestionProvider.java b/java/com/android/dialer/preferredsim/suggestion/stub/StubSuggestionProvider.java
index bd54ddb..86e45d1 100644
--- a/java/com/android/dialer/preferredsim/suggestion/stub/StubSuggestionProvider.java
+++ b/java/com/android/dialer/preferredsim/suggestion/stub/StubSuggestionProvider.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,11 +18,15 @@
 package com.android.dialer.preferredsim.suggestion.stub;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.preferredsim.suggestion.SuggestionProvider;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
+
 import javax.inject.Inject;
 
 /** {@link SuggestionProvider} that does nothing. */
@@ -33,7 +38,7 @@
   @WorkerThread
   @Override
   public Optional<Suggestion> getSuggestion(Context context, String number) {
-    return Optional.absent();
+    return Optional.empty();
   }
 
   @Override
diff --git a/java/com/android/dialer/proguard/proguard.flags b/java/com/android/dialer/proguard/proguard.flags
index 5145313..29b9954 100644
--- a/java/com/android/dialer/proguard/proguard.flags
+++ b/java/com/android/dialer/proguard/proguard.flags
@@ -4,4 +4,4 @@
 -keepclassmembers class * {
     @com.android.dialer.proguard.UsedByReflection *;
 }
--keep class android.support.design.widget.FloatingActionButton$* { *; }
\ No newline at end of file
+-keep class com.google.android.material.floatingactionbutton.FloatingActionButton$* { *; }
\ No newline at end of file
diff --git a/java/com/android/dialer/proguard/proguard_base.flags b/java/com/android/dialer/proguard/proguard_base.flags
index 6d5d373..fca45d5 100644
--- a/java/com/android/dialer/proguard/proguard_base.flags
+++ b/java/com/android/dialer/proguard/proguard_base.flags
@@ -69,5 +69,7 @@
 -dontnote libcore.icu.ICU
 -keep class libcore.icu.ICU { *** get(...);}
 
-# AOSP support library:  Handle classes that use reflection.
--dontnote android.support.v4.app.NotificationCompatJellybean
+-keep class com.google.android.material.search.SearchBar$ScrollingViewBehavior {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>();
+}
diff --git a/java/com/android/dialer/promotion/Promotion.java b/java/com/android/dialer/promotion/Promotion.java
index 176606f..8b4bfc0 100644
--- a/java/com/android/dialer/promotion/Promotion.java
+++ b/java/com/android/dialer/promotion/Promotion.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,9 @@
 
 package com.android.dialer.promotion;
 
-import android.support.annotation.DrawableRes;
-import android.support.annotation.IntDef;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.IntDef;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -26,8 +28,8 @@
 
   /**
    * Type of promotion, which means promotion should be shown as a card in {@link
-   * android.support.v7.widget.RecyclerView} or {@link
-   * android.support.design.bottomsheet.BottomSheetBehavior}.
+   * androidx.recyclerview.widget.RecyclerView} or {@link
+   * com.google.android.material.bottomsheet.BottomSheetBehavior}.
    */
   @Retention(RetentionPolicy.SOURCE)
   @IntDef({PromotionType.CARD, PromotionType.BOTTOM_SHEET})
diff --git a/java/com/android/dialer/promotion/PromotionComponent.java b/java/com/android/dialer/promotion/PromotionComponent.java
index caf10db..dfb55d5 100644
--- a/java/com/android/dialer/promotion/PromotionComponent.java
+++ b/java/com/android/dialer/promotion/PromotionComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,11 @@
 package com.android.dialer.promotion;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.inject.IncludeInDialerRoot;
 import com.google.common.collect.ImmutableList;
+
 import dagger.Subcomponent;
 
 /** Component for promotion. */
diff --git a/java/com/android/dialer/promotion/PromotionManager.java b/java/com/android/dialer/promotion/PromotionManager.java
index 24830de..127149e 100644
--- a/java/com/android/dialer/promotion/PromotionManager.java
+++ b/java/com/android/dialer/promotion/PromotionManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,9 @@
 
 import com.android.dialer.promotion.Promotion.PromotionType;
 import com.google.common.collect.ImmutableList;
+
 import java.util.Optional;
+
 import javax.inject.Inject;
 
 /**
@@ -30,7 +33,7 @@
 public final class PromotionManager {
 
   /** Promotion priority order list. Promotions with higher priority must be added first. */
-  private ImmutableList<Promotion> priorityPromotionList;
+  private final ImmutableList<Promotion> priorityPromotionList;
 
   @Inject
   public PromotionManager(ImmutableList<Promotion> priorityPromotionList) {
diff --git a/java/com/android/dialer/promotion/impl/AndroidManifest.xml b/java/com/android/dialer/promotion/impl/AndroidManifest.xml
deleted file mode 100644
index 55a1657..0000000
--- a/java/com/android/dialer/promotion/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
- ~ Copyright (C) 2018 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.promotion">
-
-  <uses-sdk
-      android:minSdkVersion="24"
-      android:targetSdkVersion="30"/>
-
-</manifest>
diff --git a/java/com/android/dialer/promotion/impl/DuoPromotion.java b/java/com/android/dialer/promotion/impl/DuoPromotion.java
deleted file mode 100644
index 750e4a1..0000000
--- a/java/com/android/dialer/promotion/impl/DuoPromotion.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.promotion.impl;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.support.annotation.VisibleForTesting;
-import com.android.dialer.configprovider.ConfigProvider;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.promotion.Promotion;
-import com.android.dialer.spannable.ContentWithLearnMoreSpanner;
-import com.android.dialer.storage.Unencrypted;
-import java.util.concurrent.TimeUnit;
-import javax.inject.Inject;
-
-/** Duo promotion. */
-final class DuoPromotion implements Promotion {
-  private static final String SHARED_PREF_KEY_DUO_DISCLOSURE_DISMISSED = "duo_disclosure_dismissed";
-
-  private static final String SHARED_PREF_KEY_DUO_DISCLOSURE_FIRST_VIEW_TIME_MILLIS =
-      "duo_disclosure_first_viewed_time_ms";
-  @VisibleForTesting static final String FLAG_SHOW_DUO_DISCLOSURE = "show_duo_disclosure";
-
-  @VisibleForTesting
-  static final String FLAG_DUO_DISCLOSURE_AUTO_DISMISS_AFTER_VIEWED_TIME_MILLIS =
-      "show_duo_disclosure_auto_dismiss_after_viewed_time_millis";
-
-  private final Context appContext;
-  private final ConfigProvider configProvider;
-  private final Duo duo;
-  private final SharedPreferences sharedPreferences;
-
-  @Inject
-  DuoPromotion(
-      @ApplicationContext Context context,
-      ConfigProvider configProvider,
-      Duo duo,
-      @Unencrypted SharedPreferences sharedPreferences) {
-    this.appContext = context;
-    this.configProvider = configProvider;
-    this.duo = duo;
-    this.sharedPreferences = sharedPreferences;
-  }
-
-  @Override
-  public int getType() {
-    return PromotionType.CARD;
-  }
-
-  @Override
-  public boolean isEligibleToBeShown() {
-    if (!configProvider.getBoolean(FLAG_SHOW_DUO_DISCLOSURE, false)) {
-      return false;
-    }
-    // Don't show the Duo disclosure card if
-    // (1) Duo integration is not enabled on the device, or
-    // (2) Duo is not activated.
-    if (!duo.isEnabled(appContext) || !duo.isActivated(appContext)) {
-      return false;
-    }
-
-    // Don't show the Duo disclosure card if it has been dismissed.
-    if (sharedPreferences.getBoolean(SHARED_PREF_KEY_DUO_DISCLOSURE_DISMISSED, false)) {
-      return false;
-    }
-
-    // At this point, Duo is activated and the disclosure card hasn't been dismissed.
-    // We should show the card if it has never been viewed by the user.
-    if (!sharedPreferences.contains(SHARED_PREF_KEY_DUO_DISCLOSURE_FIRST_VIEW_TIME_MILLIS)) {
-      return true;
-    }
-
-    // At this point, the card has been viewed but not dismissed.
-    // We should not show the card if it has been viewed for more than 1 day.
-    long duoDisclosureFirstViewTimeMillis =
-        sharedPreferences.getLong(SHARED_PREF_KEY_DUO_DISCLOSURE_FIRST_VIEW_TIME_MILLIS, 0);
-    return System.currentTimeMillis() - duoDisclosureFirstViewTimeMillis
-        <= configProvider.getLong(
-            FLAG_DUO_DISCLOSURE_AUTO_DISMISS_AFTER_VIEWED_TIME_MILLIS, TimeUnit.DAYS.toMillis(1));
-  }
-
-  @Override
-  public void onViewed() {
-    if (!sharedPreferences.contains(SHARED_PREF_KEY_DUO_DISCLOSURE_FIRST_VIEW_TIME_MILLIS)) {
-      sharedPreferences
-          .edit()
-          .putLong(
-              SHARED_PREF_KEY_DUO_DISCLOSURE_FIRST_VIEW_TIME_MILLIS, System.currentTimeMillis())
-          .apply();
-    }
-  }
-
-  @Override
-  public void dismiss() {
-    sharedPreferences.edit().putBoolean(SHARED_PREF_KEY_DUO_DISCLOSURE_DISMISSED, true).apply();
-  }
-
-  @Override
-  public CharSequence getTitle() {
-    return appContext.getString(R.string.duo_disclosure_title);
-  }
-
-  @Override
-  public CharSequence getDetails() {
-    return new ContentWithLearnMoreSpanner(appContext)
-        .create(
-            appContext.getString(R.string.duo_disclosure_details),
-            configProvider.getString(
-                "duo_disclosure_link_full_url",
-                "http://support.google.com/pixelphone/?p=dialer_duo"));
-  }
-
-  @Override
-  public int getIconRes() {
-    return duo.getLogo();
-  }
-}
diff --git a/java/com/android/dialer/promotion/impl/PromotionModule.java b/java/com/android/dialer/promotion/impl/PromotionModule.java
index f090878..b5438ec 100644
--- a/java/com/android/dialer/promotion/impl/PromotionModule.java
+++ b/java/com/android/dialer/promotion/impl/PromotionModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,21 +17,19 @@
 
 package com.android.dialer.promotion.impl;
 
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
 import com.android.dialer.promotion.Promotion;
 import com.google.common.collect.ImmutableList;
+
 import dagger.Module;
 import dagger.Provides;
 
 /** Module for Promotion. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module
 public abstract class PromotionModule {
 
   @Provides
   static ImmutableList<Promotion> providePriorityPromotionList(
-      RttPromotion rttPromotion, DuoPromotion duoPromotion) {
-    return ImmutableList.of(rttPromotion, duoPromotion);
+      RttPromotion rttPromotion) {
+    return ImmutableList.of(rttPromotion);
   }
 }
diff --git a/java/com/android/dialer/promotion/impl/RttPromotion.java b/java/com/android/dialer/promotion/impl/RttPromotion.java
index f0f7f54..4a9c78c 100644
--- a/java/com/android/dialer/promotion/impl/RttPromotion.java
+++ b/java/com/android/dialer/promotion/impl/RttPromotion.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,14 +19,17 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.support.annotation.DrawableRes;
+
+import androidx.annotation.DrawableRes;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProvider;
 import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.promotion.Promotion;
 import com.android.dialer.spannable.ContentWithLearnMoreSpanner;
 import com.android.dialer.storage.StorageComponent;
 import com.android.dialer.storage.Unencrypted;
+
 import javax.inject.Inject;
 
 /** RTT promotion. */
@@ -34,7 +38,6 @@
   private static final String SHARED_PREFERENCE_KEY_DISMISSED = "rtt_promotion_dismissed";
   private final Context appContext;
   private final SharedPreferences sharedPreferences;
-  private final ConfigProvider configProvider;
 
   @Override
   public int getType() {
@@ -44,11 +47,9 @@
   @Inject
   RttPromotion(
       @ApplicationContext Context context,
-      @Unencrypted SharedPreferences sharedPreferences,
-      ConfigProvider configProvider) {
+      @Unencrypted SharedPreferences sharedPreferences) {
     appContext = context;
     this.sharedPreferences = sharedPreferences;
-    this.configProvider = configProvider;
   }
 
   @Override
@@ -67,9 +68,7 @@
     return new ContentWithLearnMoreSpanner(appContext)
         .create(
             appContext.getString(R.string.rtt_promotion_details),
-            configProvider.getString(
-                "rtt_promo_learn_more_link_full_url",
-                "http://support.google.com/pixelphone/?p=dialer_rtt"));
+                "http://support.google.com/pixelphone/?p=dialer_rtt");
   }
 
   @Override
diff --git a/java/com/android/dialer/promotion/impl/res/values-af/strings.xml b/java/com/android/dialer/promotion/impl/res/values-af/strings.xml
index c49cbc2..c995030 100644
--- a/java/com/android/dialer/promotion/impl/res/values-af/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-af/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT help bellers wat doof is, gehoorgestremd is, \'n spraakgebrek het
     of meer as net spraak benodig. RTT-boodskaptranskripsies word op jou toestel gestoor
     in die oproepgeskiedenis. %1$s</string>
-  <string name="duo_disclosure_title">Maak video-oproepe met Duo</string>
-  <string name="duo_disclosure_details">Met Google Duo-video-oproepe kan jy van aangesig tot aangesig met vriende en familie klets. Datakoste kan van toepassing wees. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-am/strings.xml b/java/com/android/dialer/promotion/impl/res/values-am/strings.xml
index 1306f30..101cca8 100644
--- a/java/com/android/dialer/promotion/impl/res/values-am/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-am/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">በጥሪ ውስጥ የቀጥታ ጊዜ ጽሁፍ መልዕክት መላላክ</string>
   <string name="rtt_promotion_details">አርቲቲ መስማት ለተሳናቸው፣ የመስማት ችግር ያለባቸው፣ የንግግር አካል ጉዳት ያለባቸው፣ ወይም ከድምፅ ብቻ በላይ ድጋፍ የሚያሻቸው ደዋዮች እገዛ ይሰጣል። የአርቲቲ መልዕክት መላላክ የጽሁፍ ግልባጮች በመሳሪያዎ ላይ በጥሪ ታሪክ ውስጥ ይቀመጣሉ። %1$s</string>
-  <string name="duo_disclosure_title">በDuo የቪዲዮ ጥሪዎችን አድርግ</string>
-  <string name="duo_disclosure_details">የGoogle Duo የቪዲዮ ጥሪ ከጓደኞች እና ቤተሰብ ጋር ፊት ለፊት እንዲወያዩ ያስችልዎታል። የውሂብ ክፍያዎች ሊተገበሩ ይችላሉ። %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ar/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ar/strings.xml
index 4674dd7..8014507 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ar/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ar/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">تساعد ميزة \"المراسلة النصية في الوقت الفعلي\" المتصلين الذين يعانون من فقدان حاسة السمع أو من ضعف في السمع أو ليست لديهم القدرة
     على التحدث أو يحتاجون إلى ما هو أكثر من الصوت فقط. يتم تخزين نصوص ميزة \"المراسلة النصية في الوقت الفعلي\" على جهازك
     في سجلّ المكالمات. %1$s</string>
-  <string name="duo_disclosure_title">‏إجراء مكالمات فيديو باستخدام Duo</string>
-  <string name="duo_disclosure_details">‏تتيح لك مكالمات الفيديو من Google Duo إمكانية المحادثة مع أصدقائك وعائلتك وجهًا لوجه. قد يتم فرض رسوم على استخدام البيانات. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-az/strings.xml b/java/com/android/dialer/promotion/impl/res/values-az/strings.xml
index 5ccc54b..4f9f44d 100644
--- a/java/com/android/dialer/promotion/impl/res/values-az/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-az/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Zəng daxili real zaman mətn mesajlaşması</string>
   <string name="rtt_promotion_details">RTT kar və ya eşitmə problemi, danışma qüsuru olan və ya səsdən daha çoxuna ehtiyac duyan şəxslərə dəstək olur. RTT mesajlaşma transkripsiyaları cihazın zəng tarixçəsində saxlanılır.%1$s</string>
-  <string name="duo_disclosure_title">Duo ilə video zənglər edin</string>
-  <string name="duo_disclosure_details">Google Duo video zəngi Sizə dost və ailənizlə üzbəüz danışmaq imkanı verir. Data xərcləri tətbiq edilə bilər. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/promotion/impl/res/values-b+sr+Latn/strings.xml
index 69a5d2a..b02ae64 100644
--- a/java/com/android/dialer/promotion/impl/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-b+sr+Latn/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT pomaže pozivaocima koji su gluvi, imaju oštećenje sluha, teškoće u
     govoru ili im je potrebno nešto više od glasa. Transkripti RTT poruka se čuvaju na uređaju
     u istoriji poziva. %1$s</string>
-  <string name="duo_disclosure_title">Upućujte video pozive pomoću Duo-a</string>
-  <string name="duo_disclosure_details">Video pozivi u Google Duo-u vam omogućavaju da ćaskate sa prijateljima i porodicom licem u lice. Važe naknade za prenos podataka. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-be/strings.xml b/java/com/android/dialer/promotion/impl/res/values-be/strings.xml
index 1e0c4e4..cb2da31 100644
--- a/java/com/android/dialer/promotion/impl/res/values-be/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-be/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">Функцыя RTT дапамагае карыстальнікам з парушэннямі слыху і маўлення.
     Расшыфроўкі паведамленняў RTT захоўваюцца на прыладзе
     ў гісторыі выклікаў. %1$s</string>
-  <string name="duo_disclosure_title">Рабіце відэавыклікі з дапамогай Duo</string>
-  <string name="duo_disclosure_details">Гаварыце з сябрамі і роднымі ў відэавыкліках Google Duo. Можа спаганяцца аплата за перадачу даных. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-bg/strings.xml b/java/com/android/dialer/promotion/impl/res/values-bg/strings.xml
index 34a1ff4..14f91fe 100644
--- a/java/com/android/dialer/promotion/impl/res/values-bg/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-bg/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Текстови съобщения в реално време в обаждане</string>
   <string name="rtt_promotion_details">ТСРВ подпомага обаждащите се, които са глухи, с влошен слух, имат проблеми с говора или се нуждаят от повече от само глас. Преписите на съобщенията с ТСРВ се съхраняват в историята на обажданията на устройството ви. %1$s</string>
-  <string name="duo_disclosure_title">Извършвайте видеообаждания с Duo</string>
-  <string name="duo_disclosure_details">Видеообажданията с Google Duo ви дават възможност да говорите с близки и приятели лице в лице. Възможно е да бъдете таксувани за данни. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-bn/strings.xml b/java/com/android/dialer/promotion/impl/res/values-bn/strings.xml
index 8a0e562..2d2dab0 100644
--- a/java/com/android/dialer/promotion/impl/res/values-bn/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-bn/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">যে কলাররা বধির, কানে কম শোনেন, যাদের কথা বলতে অসুবিধা হয়
     অথবা যারা কণ্ঠস্বরের সাথে অন্য কোনও উপায়ে নিজেদের প্রকাশ করেন, RTT বৈশিষ্ট্যটি তাদের সাহায্য করে। RTT মেসেজিং 
 ট্রান্সক্রিপ্টগুলি আপনার ডিভাইসের কলের ইতিহাসে সেভ করে রাখা হয়। %1$s</string>
-  <string name="duo_disclosure_title">Duo-তে ভিডিও কল করুন</string>
-  <string name="duo_disclosure_details">Google Duo ভিডিও কলিং এর মাধ্যমে আপনি পরিবারের সদস্য এবং বন্ধুদের সাথে মুখোমুখি চ্যাট করতে পারেন। ডেটা চার্জ প্রযোজ্য হতে পারে। %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-bs/strings.xml b/java/com/android/dialer/promotion/impl/res/values-bs/strings.xml
index ac4d870..9956865 100644
--- a/java/com/android/dialer/promotion/impl/res/values-bs/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-bs/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Slanje SMS-ova u stvarnom vremenu tokom poziva</string>
   <string name="rtt_promotion_details">RTT pomaže pozivaocima koji su gluhi, imaju probleme sa sluhom ili govorom te onima kojima treba više od samog glasa. RTT transkripti poruka se pohranjuju na vašem uređaju u historiji poziva. %1$s</string>
-  <string name="duo_disclosure_title">Upućivanje video poziva pomoću aplikacije Duo</string>
-  <string name="duo_disclosure_details">Google Duo video pozivi vam omogućavaju da razgovarate licem u lice s prijateljima i porodicom. Mogu nastati troškovi prijenosa podataka. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ca/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ca/strings.xml
index a7976ea..2b3b9af 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ca/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ca/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">La funció RTT ofereix assistència als usuaris que són sords, tenen problemes
     d\'audició o alteracions de la parla, o bé que necessiten un text a banda de la veu. Les transcripcions RTT es desen a l\'historial de trucades
     del dispositiu.%1$s</string>
-  <string name="duo_disclosure_title">Fes videotrucades amb Duo</string>
-  <string name="duo_disclosure_details">Les videotrucades de Google Duo et permeten parlar cara a cara amb els amics i la família. És possible que s\'hi apliquin càrrecs de dades. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-cs/strings.xml b/java/com/android/dialer/promotion/impl/res/values-cs/strings.xml
index 8a586bb..03aa195 100644
--- a/java/com/android/dialer/promotion/impl/res/values-cs/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-cs/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Posílání zpráv SMS během hovoru</string>
   <string name="rtt_promotion_details">Funkce SMS během hovoru (RTT) pomáhá volajícím, kteří neslyší, jsou nedoslýchaví, mají řečovou vadu, případně potřebují víc než jen hlas z jiného důvodu. Přepisy těchto zpráv jsou uchovávány ve vašem zařízení v historii hovorů. %1$s</string>
-  <string name="duo_disclosure_title">Provádějte videohovory v aplikaci Duo</string>
-  <string name="duo_disclosure_details">Pomocí videohovorů v aplikaci Google Duo můžete chatovat tváří v tvář s přáteli a rodinou. Mohou vám být účtovány poplatky za data. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-da/strings.xml b/java/com/android/dialer/promotion/impl/res/values-da/strings.xml
index c7249f0..67e1329 100644
--- a/java/com/android/dialer/promotion/impl/res/values-da/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-da/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">Sms i realtid hjælper personer, som er døve, hørehæmmede, talehandicappede,
     eller som har brug for mere end bare tale, med at foretage opkald. Transskriptioner af sms i realtid gemmes på din enhed 
     i opkaldshistorikken. %1$s</string>
-  <string name="duo_disclosure_title">Foretag videoopkald med Duo</string>
-  <string name="duo_disclosure_details">Med videoopkald i Google Duo kan du tale med venner og familie ansigt til ansigt. Du opkræves muligvis betaling for dataforbruget. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-de/strings.xml b/java/com/android/dialer/promotion/impl/res/values-de/strings.xml
index 6e5e063..12c6cf9 100644
--- a/java/com/android/dialer/promotion/impl/res/values-de/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-de/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">RTT-Nachrichten während eines Anrufs</string>
   <string name="rtt_promotion_details">Echtzeittext (Real-Time Text, RTT) dient als Unterstützung für Anrufer, die gehörlos, schwerhörig oder sprachgeschädigt sind oder zusätzlich zur gesprochenen Sprache weitere Informationen benötigen. RTT-Transkripte werden auf Ihrem Gerät in der Anrufliste gespeichert.%1$s</string>
-  <string name="duo_disclosure_title">Mit Duo Videoanrufe führen</string>
-  <string name="duo_disclosure_details">Mit Videoanrufen über Google Duo kannst du dich mit Freunden und Familienmitgliedern von Angesicht zu Angesicht unterhalten. Für die Datenübertragung können Gebühren anfallen. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-el/strings.xml b/java/com/android/dialer/promotion/impl/res/values-el/strings.xml
index 259120f..a89df71 100644
--- a/java/com/android/dialer/promotion/impl/res/values-el/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-el/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Ανταλλαγή μηνυμάτων με αποστολή κειμένου σε πραγματικό χρόνο εντός μιας κλήσης</string>
   <string name="rtt_promotion_details">Το RTT υποβοηθά καλούντες που είναι κωφοί ή αντιμετωπίζουν προβλήματα ακοής ή ομιλίας, καθώς και όσους χρειάζονται κάτι περισσότερο από απλή φωνητική επικοινωνία. Οι μεταγραφές μηνυμάτων RTT αποθηκεύονται στη συσκευή σας, στο ιστορικό κλήσεων. %1$s</string>
-  <string name="duo_disclosure_title">Πραγματοποιήστε βιντεοκλήσεις με το Duo</string>
-  <string name="duo_disclosure_details">Οι βιντεοκλήσεις μέσω του Google Duo σάς επιτρέπουν να συνομιλείτε με τους φίλους και την οικογένειά σας πρόσωπο με πρόσωπο. Ενδέχεται να ισχύουν χρεώσεις δεδομένων. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-en-rAU/strings.xml b/java/com/android/dialer/promotion/impl/res/values-en-rAU/strings.xml
index deb085f..5719996 100644
--- a/java/com/android/dialer/promotion/impl/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-en-rAU/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT assists callers who are deaf, hard of hearing, have a speech
     disability or need more than voice alone. RTT messaging transcripts are stored on your device
     in the call history. %1$s</string>
-  <string name="duo_disclosure_title">Make video calls with Duo</string>
-  <string name="duo_disclosure_details">Google Duo video calling lets you chat with friends and family face to face. Data charges may apply. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-en-rGB/strings.xml b/java/com/android/dialer/promotion/impl/res/values-en-rGB/strings.xml
index deb085f..5719996 100644
--- a/java/com/android/dialer/promotion/impl/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-en-rGB/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT assists callers who are deaf, hard of hearing, have a speech
     disability or need more than voice alone. RTT messaging transcripts are stored on your device
     in the call history. %1$s</string>
-  <string name="duo_disclosure_title">Make video calls with Duo</string>
-  <string name="duo_disclosure_details">Google Duo video calling lets you chat with friends and family face to face. Data charges may apply. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-en-rIN/strings.xml b/java/com/android/dialer/promotion/impl/res/values-en-rIN/strings.xml
index deb085f..5719996 100644
--- a/java/com/android/dialer/promotion/impl/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-en-rIN/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT assists callers who are deaf, hard of hearing, have a speech
     disability or need more than voice alone. RTT messaging transcripts are stored on your device
     in the call history. %1$s</string>
-  <string name="duo_disclosure_title">Make video calls with Duo</string>
-  <string name="duo_disclosure_details">Google Duo video calling lets you chat with friends and family face to face. Data charges may apply. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-es-rUS/strings.xml b/java/com/android/dialer/promotion/impl/res/values-es-rUS/strings.xml
index 4ddf19d..312b250 100644
--- a/java/com/android/dialer/promotion/impl/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-es-rUS/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">El RTT brinda asistencia a las personas sordas o hipoacúsicas, que tienen
     algún trastorno del habla, o necesitan una transcripción además de la voz. Las transcripciones de la mensajería de RTT
     se almacenan en el historial de llamadas de tu dispositivo. %1$s</string>
-  <string name="duo_disclosure_title">Realiza videollamadas con Duo</string>
-  <string name="duo_disclosure_details">Con la videollamada de Google Duo, puedes chatear con amigos y familiares cara a cara. Es posible que apliquen cargos por el uso de datos. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-es/strings.xml b/java/com/android/dialer/promotion/impl/res/values-es/strings.xml
index 0ecd2cb..5b063e2 100644
--- a/java/com/android/dialer/promotion/impl/res/values-es/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-es/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">La función TTR (texto en tiempo real) ofrece asistencia a las personas
     sordas o con discapacidades auditivas, que tienen algún trastorno del habla o que necesitan una transcripción además de la voz para comunicarse. Las transcripciones de mensajes de TTR se guardan en el
     historial de llamadas de tu dispositivo. %1$s</string>
-  <string name="duo_disclosure_title">Haz videollamadas con Duo</string>
-  <string name="duo_disclosure_details">Habla cara a cara con tus familiares y amigos con las videollamadas de Google Duo. Es posible que se apliquen cargos por el uso de datos. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-et/strings.xml b/java/com/android/dialer/promotion/impl/res/values-et/strings.xml
index b42d631..3000a16 100644
--- a/java/com/android/dialer/promotion/impl/res/values-et/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-et/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT aitab kurte, kuulmis- või kõnepuudega helistajaid või neid,
     kes vajavad lisaks häälele muud abi. RTT sõnumside transkriptsioonid
     salvestatakse teie seadmes kõneajaloos. %1$s</string>
-  <string name="duo_disclosure_title">Videokõnede tegemine Duoga</string>
-  <string name="duo_disclosure_details">Google Duo videokõned lubavad teil sõprade ja perega näost näkku vestelda. Rakenduda võivad andmesidetasud. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-eu/strings.xml b/java/com/android/dialer/promotion/impl/res/values-eu/strings.xml
index c5a83b4..74b581c 100644
--- a/java/com/android/dialer/promotion/impl/res/values-eu/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-eu/strings.xml
@@ -6,6 +6,4 @@
     ahotsaz gain, beste makuluren bat behar dutenei laguntzen die. Gailuko
     deien historian gordeko dira deietan testu bidez bidaltzen diren mezuen
     transkripzioak. %1$s</string>
-  <string name="duo_disclosure_title">Egin bideo-deiak Duo-rekin</string>
-  <string name="duo_disclosure_details">Google Duo zerbitzuko bideo-deien bidez, aurrez aurre hitz egin dezakezu lagunekin eta familiarekin. Baliteke datuak erabiltzearen ondorioz zerbait kobratzea. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-fa/strings.xml b/java/com/android/dialer/promotion/impl/res/values-fa/strings.xml
index 1768ccc..c23b7b4 100644
--- a/java/com/android/dialer/promotion/impl/res/values-fa/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-fa/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">نوشتار هم‌زمان به تماس گیرندگان ناشنوا، دارای مشکل شنوایی، دارای ناتوانی
     گفتاری یا افرادی که به چیزی بیش از صدا نیاز دارند کمک می‌کند. آوانویسی‌های پیام‌رسانی نوشتار هم‌زمان، در سابقه تماس
     دستگاهتان ذخیره می‌شوند. %1$s</string>
-  <string name="duo_disclosure_title">‏برقراری تماس ویدیویی با Duo</string>
-  <string name="duo_disclosure_details">‏تماس ویدیویی Google Duo امکان می‌دهد با دوستان و خانواده گپ رودررو داشته باشید. ممکن است هزینه داده اعمال شود. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-fi/strings.xml b/java/com/android/dialer/promotion/impl/res/values-fi/strings.xml
index da01e53..ea95443 100644
--- a/java/com/android/dialer/promotion/impl/res/values-fi/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-fi/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT-toiminto auttaa kuuroja sekä käyttäjiä, joilla on kuulo‑
     tai puhehäiriöitä tai jotka tarvitsevat muuta tukea pelkän puheen lisäksi. RTT-viestien transkriptiot tallennetaan laitteen
     puheluhistoriaan. %1$s</string>
-  <string name="duo_disclosure_title">Soita videopuheluja Duolla</string>
-  <string name="duo_disclosure_details">Kun soitat videopuhelun Google Duon kautta, voit keskustella ystävien ja perheenjäsenten kanssa kasvokkain. Tiedonsiirrosta voidaan periä maksu. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-fr-rCA/strings.xml b/java/com/android/dialer/promotion/impl/res/values-fr-rCA/strings.xml
index e940542..ec597bf 100644
--- a/java/com/android/dialer/promotion/impl/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-fr-rCA/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">La fonctionnalité TTR aide les appelants qui sont sourds ou malentendants, qui ont un trouble
     de la parole ou pour qui la voix ne suffit pas. Les transcriptions sont stockées sur votre appareil,
     dans l\'historique des appels. %1$s</string>
-  <string name="duo_disclosure_title">Faites des appels vidéo avec Duo</string>
-  <string name="duo_disclosure_details">Les appels vidéo Google Duo vous permettent de clavarder en face à face avec vos proches. Des frais de données peuvent s\'appliquer. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-fr/strings.xml b/java/com/android/dialer/promotion/impl/res/values-fr/strings.xml
index 8c01433..f47225f 100644
--- a/java/com/android/dialer/promotion/impl/res/values-fr/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-fr/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Envoi de messages en cours d\'appel avec la fonctionnalité de texte en temps réel</string>
   <string name="rtt_promotion_details">Le texte en temps réel (RTT) vient en aide aux personnes sourdes, malentendantes, qui ont un trouble de la parole, ou qui ont besoin d\'une transcription en plus de la voix. La transcription des messages RTT est stockée dans l\'historique des appels de votre appareil. %1$s</string>
-  <string name="duo_disclosure_title">Passez des appels vidéo avec Duo</string>
-  <string name="duo_disclosure_details">L\'application d\'appel vidéo Google Duo vous permet de discuter avec vos proches en face à face. Ce service peut occasionner des frais liés à la consommation de données. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-gl/strings.xml b/java/com/android/dialer/promotion/impl/res/values-gl/strings.xml
index 7ae0f45..e2460f8 100644
--- a/java/com/android/dialer/promotion/impl/res/values-gl/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-gl/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">A función de texto en tempo real (RTT) constitúe unha axuda para todos aqueles emisores de chamadas que padezan xordeira ou outros problemas auditivos, teñan algún trastorno
     da fala ou necesiten algo máis que a voz para comunicarse. As transcricións das mensaxes de RTT almacénanse no historial de chamadas
     do dispositivo. %1$s</string>
-  <string name="duo_disclosure_title">Facer videochamadas con Duo</string>
-  <string name="duo_disclosure_details">Coas videochamadas de Google Duo, podes chatear cos amigos e a familia cara a cara. É posible que se apliquen tarifas de datos. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-gu/strings.xml b/java/com/android/dialer/promotion/impl/res/values-gu/strings.xml
index 87e3929..a0b9e07 100644
--- a/java/com/android/dialer/promotion/impl/res/values-gu/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-gu/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">જેઓ બહેરા, ઓછું સાંભળતા, બોલવામાં તકલીફવાળા અથવા જેમને માત્ર વૉઇસ કરતાં પણ
     કંઈક વધુની જરૂર હોય એવા કૉલરોને RTT સહાય કરે છે. RTT મેસેજિંગ ટ્રાન્સક્રિપ્ટને તમારા ઉપકરણ પર કૉલ ઇતિહાસમાં
     સ્ટોર કરવામાં આવે છે. %1$s</string>
-  <string name="duo_disclosure_title">Duo વડે વીડિઓ કૉલ કરો</string>
-  <string name="duo_disclosure_details">Google Duo વીડિઓ કૉલિંગ વડે તમે મિત્રો અને કુટુંબ સાથે સામ-સામે ચૅટ કરી શકો છો. ડેટા શુલ્ક લાગુ થઈ શકે છે. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-hi/strings.xml b/java/com/android/dialer/promotion/impl/res/values-hi/strings.xml
index 7baa782..5fe98fa 100644
--- a/java/com/android/dialer/promotion/impl/res/values-hi/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-hi/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">आरटीटी उन कॉल करने वालों की मदद करता है, जो बधिर हैं, ऊंचा सुनते हैं, जिन्हें बोलने में
     दिक्कत है या जिनके लिए सिर्फ़ आवाज़ काफ़ी नहीं होती. आरटीटी मैसेज लेख आपके डिवाइस
     के कॉल इतिहास में सेव किए जाते हैं. %1$s</string>
-  <string name="duo_disclosure_title">Duo के ज़रिए वीडियो कॉल करें</string>
-  <string name="duo_disclosure_details">\'Google Duo\' वीडियो कॉल के ज़रिए आप अपने दोस्तों और परिवार के लोगों के साथ आमने-सामने चैट कर सकते हैं. डेटा शुल्क लागू हो सकते हैं. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-hr/strings.xml b/java/com/android/dialer/promotion/impl/res/values-hr/strings.xml
index 786c195..1abdf05 100644
--- a/java/com/android/dialer/promotion/impl/res/values-hr/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-hr/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT pomaže pozivateljima koji su gluhi, nagluhi,
     imaju govornu manu ili im je potrebno nešto više od glasa. Prijepisi poruka poslanih putem značajke RTT spremaju se na vaš uređaj
     u povijesti poziva. %1$s</string>
-  <string name="duo_disclosure_title">Upućivanje videopoziva pomoću aplikacije Duo</string>
-  <string name="duo_disclosure_details">Upućivanje videopoziva u aplikaciji Google Duo omogućuje vam da licem u lice chatate s prijateljima i obitelji. Operater može naplatiti podatkovni promet. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-hu/strings.xml b/java/com/android/dialer/promotion/impl/res/values-hu/strings.xml
index 1fe0c76..0b99fc8 100644
--- a/java/com/android/dialer/promotion/impl/res/values-hu/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-hu/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Valós idejű szöveges üzenetküldés a híváson belül</string>
   <string name="rtt_promotion_details">Az RTT funkció a siket, hallássérült, beszédzavaros vagy a hangalapú kommunikáción kívül más kommunikációt is igénylő hívóknak lehet segítségére. Az RTT-átiratokat a rendszer az eszköz híváselőzményeiben tárolja. %1$s</string>
-  <string name="duo_disclosure_title">Videohívások indítása a Duóval</string>
-  <string name="duo_disclosure_details">A Google Duo videohívási funkciójával közvetlenül cseveghet ismerőseivel és családtagjaival. A szolgáltató adatforgalmi díjat számíthat fel. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-hy/strings.xml b/java/com/android/dialer/promotion/impl/res/values-hy/strings.xml
index bcd7980..3f8a9c5 100644
--- a/java/com/android/dialer/promotion/impl/res/values-hy/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-hy/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT-ն օգնում է այն բաժանորդներին, ովքեր լսողության և խոսքի
     դժվարություններ ունեն, կամ ովքեր լոկ ձայնով չեն բավարարվում: RTT հաղորդագրությունների տառադրումները պահվում են ձեր սարքում՝
     զանգերի պատմության մեջ: %1$s</string>
-  <string name="duo_disclosure_title">Կատարեք տեսազանգեր Duo-ի միջոցով</string>
-  <string name="duo_disclosure_details">Google Duo տեսազանգի ծառայության օգնությամբ կարող եք երես առ երես զրուցել ընկերների և ընտանիքի անդամների հետ: Բջջային ինտերնետի համար կարող է վճար գանձվել: %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-in/strings.xml b/java/com/android/dialer/promotion/impl/res/values-in/strings.xml
index ae519fd..50c040c 100644
--- a/java/com/android/dialer/promotion/impl/res/values-in/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-in/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Pengiriman pesan real-time pada saat panggilan suara berlangsung</string>
   <string name="rtt_promotion_details">RTT membantu penelepon yang tunarungu, kesulitan mendengar, memiliki gangguan berbicara, atau memerlukan lebih dari sekadar suara. Transkripsi pesan RTT disimpan dalam histori panggilan di perangkat Anda. %1$s</string>
-  <string name="duo_disclosure_title">Lakukan video call dengan Duo</string>
-  <string name="duo_disclosure_details">Video call dengan Google Duo memungkinkan Anda melakukan chat bersama teman dan keluarga sambil bertatap muka. Biaya data mungkin berlaku. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-is/strings.xml b/java/com/android/dialer/promotion/impl/res/values-is/strings.xml
index b3831af..ade2ca5 100644
--- a/java/com/android/dialer/promotion/impl/res/values-is/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-is/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT-símtöl (með texta í rauntíma) aðstoða heyrnarlausa og fólk með heyrnarskerðingu eða skerta
     talgetu og þá sem þurfa að styðja sig við meira en bara hljóð. Umritanir RTT-skilaboða eru vistaðar í símtalaferli
     tækisins þíns. %1$s</string>
-  <string name="duo_disclosure_title">Hringdu myndsímtöl með Duo</string>
-  <string name="duo_disclosure_details">Með myndsímtölum í Google Duo geturðu spjallað við vini og fjölskyldu augliti til auglitis. Gjöld fyrir gagnanotkun geta átt við. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-it/strings.xml b/java/com/android/dialer/promotion/impl/res/values-it/strings.xml
index 9c2536a..54d29e9 100644
--- a/java/com/android/dialer/promotion/impl/res/values-it/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-it/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">SMS in tempo reale durante una chiamata</string>
   <string name="rtt_promotion_details">RTT aiuta i chiamanti con disabilità uditive o del linguaggio e le persone che hanno bisogno di un supporto scritto oltre alla voce. Le trascrizioni dei messaggi di RTT vengono memorizzate nella cronologia delle chiamate del tuo dispositivo. %1$s</string>
-  <string name="duo_disclosure_title">Fai videochiamate con Duo</string>
-  <string name="duo_disclosure_details">Le videochiamate di Google Duo ti permettono di chiacchierare con amici e familiari faccia a faccia. Potrebbero essere applicati dei costi per i dati. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-iw/strings.xml b/java/com/android/dialer/promotion/impl/res/values-iw/strings.xml
index c6d6914..7c12a19 100644
--- a/java/com/android/dialer/promotion/impl/res/values-iw/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-iw/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">‏שליחת הודעות טקסט בזמן אמת (RTT) במהלך שיחה</string>
   <string name="rtt_promotion_details">‏RTT (טקסט בזמן אמת) היא תכונת נגישות שעוזרת לחרשים, לקויי שמיעה, לקויי דיבור או אנשים שלא יכולים להסתפק רק בקול במהלך השיחה. %1$s</string>
-  <string name="duo_disclosure_title">‏ב-Duo אפשר לשוחח בשיחות וידאו</string>
-  <string name="duo_disclosure_details">‏באמצעות Google Duo אפשר לשוחח בשיחות וידאו ולראות את החברים וקרובי המשפחה. השירות עשוי להיות בתשלום, בהתאם לחבילה הסלולרית שלך. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ja/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ja/strings.xml
index 0c6ba11..deeed2e 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ja/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ja/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT は、聴覚障害や言語障害があるなど、
     音声だけではコミュニケーションを取ることが困難なユーザーをサポートする機能です。RTT の音声文字変換結果は、ご利用の端末の
     通話履歴に保存されます。%1$s</string>
-  <string name="duo_disclosure_title">Duo のビデオ通話を発信できます</string>
-  <string name="duo_disclosure_details">Google Duo のビデオ通話なら、家族や友だちとお互いの顔を見ながら会話を楽しむことができます。なお、場合によってはデータ通信料が適用されます。%1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ka/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ka/strings.xml
index 7c23af0..4447ac5 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ka/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ka/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT დახმარებას უწევს ყრუ, სმენადაქვეითებულ, შეზღუდული მეტყველების
     მქონე აბონენტებს, ან მათ, ვისაც სჭირდება მეტი, ვიდრე მხოლოდ ხმაა. RTT შეტყობინებების ტრანსკრიპტები ინახება თქვენს მოწყობილობაში,
     ზარების ისტორიაში. %1$s</string>
-  <string name="duo_disclosure_title">განახორციელეთ ვიდეოზარები Duo-თი</string>
-  <string name="duo_disclosure_details">Google Duo ვიდეო დარეკვა საშუალებას გაძლევთ, პირისპირ ესაუბროთ ჩეთში მეგობრებსა და ოჯახის წევრებს. შესაძლოა მოგიწიოთ მობილური ინტერნეტის საფასურის გადახდა. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-kk/strings.xml b/java/com/android/dialer/promotion/impl/res/values-kk/strings.xml
index 4b1ecb9..4231107 100644
--- a/java/com/android/dialer/promotion/impl/res/values-kk/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-kk/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Қоңырау кезінде хабар жіберу мүмкіндігі</string>
   <string name="rtt_promotion_details">RTT қызметі мүлдем естімейтін, есту немесе сөйлеу қабілеті нашар немесе дыбысқа қосымша басқа қызметтерді қажет ететін адамдарға көмек ретінде қолданылады. RTT мәтіндік хабар транскрипциялары құрылғыңыздағы қоңыраулар тарихына сақталады. %1$s</string>
-  <string name="duo_disclosure_title">Duo арқылы бейне қоңырау шалу</string>
-  <string name="duo_disclosure_details">Google Duo бейне қоңыраулары туыстарыңызбен және достарыңызбен бетпе-бет кездесіп, сөйлесу мүмкіндігін ұсынады. Дерек төлемдері қолданылуы мүмкін. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-km/strings.xml b/java/com/android/dialer/promotion/impl/res/values-km/strings.xml
index bf8ca12..bde2850 100644
--- a/java/com/android/dialer/promotion/impl/res/values-km/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-km/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT ជួយ​អ្នក​ហៅ​ទូរសព្ទ​ដែល​​ថ្លង់ ពិបាក​ក្នុង​ការស្ដាប់ មិន​អាច​និយាយ​បាន
     ឬ​មាន​តម្រូវការ​ក្រៅ​ពី​​សំឡេង។ ប្រតិចារឹក​ការផ្ញើ​សារ RTT ​បាន​រក្សាទុក​នៅ​លើ​ឧបករណ៍​របស់​អ្នក​
     នៅ​ក្នុង​ប្រវត្តិ​ហៅ​ទូរសព្ទ។ %1$s</string>
-  <string name="duo_disclosure_title">ហៅ​ជា​វីដេអូ​ជាមួយ Duo</string>
-  <string name="duo_disclosure_details">ការហៅ​ជា​វីដេអូ​តាម Google Duo អាច​ជួយ​អ្នក​ជជែក​ជាមួយ​មិត្តភក្ដិ និង​គ្រួសារ​ដោយ​ផ្ទាល់។ អាច​នឹង​មាន​ការគិតថ្លៃ​ទិន្នន័យ។ %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-kn/strings.xml b/java/com/android/dialer/promotion/impl/res/values-kn/strings.xml
index 9ed662f..8aac7ad 100644
--- a/java/com/android/dialer/promotion/impl/res/values-kn/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-kn/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">ಕರೆಯಲ್ಲಿರುವಾಗ ನೈಜ ಸಮಯದ ಪಠ್ಯ ಸಂದೇಶ ಕಳುಹಿಸುವಿಕೆ</string>
   <string name="rtt_promotion_details">ಯಾರು ಕಿವುಡರು, ಆಲಿಸಲು ಕಷ್ಟಪಡುವವರು, ಆಲಿಸಲು ಅಸಾಮರ್ಥ್ಯವಾಗಿರುವವರು, ಮಾತಿನ ಸಮಸ್ಯೆಯನ್ನು ಹೊಂದಿರುವವರು ಅಥವಾ ಧ್ವನಿಗಿಂತ ಇನ್ನಷ್ಟು ಬಯಸುವವರು RTT ಸಹಾಯಕ ಕರೆಮಾಡುವವರು. ನಿಮ್ಮ ಸಾಧನದ ಕರೆ ಇತಿಹಾಸದಲ್ಲಿ RTT ಪ್ರತಿಲೇಖನಗಳನ್ನು ಸಂಗ್ರಹಿಸಲಾಗಿದೆ. %1$s</string>
-  <string name="duo_disclosure_title">Duo ಮೂಲಕ ವೀಡಿಯೊ ಕರೆಗಳನ್ನು ಮಾಡಿ</string>
-  <string name="duo_disclosure_details">\"Google Duo ವೀಡಿಯೊ ಕರೆ\"ಯು ಸ್ನೇಹಿತರು ಮತ್ತು ಕುಟುಂಬದೊಂದಿಗೆ ನೀವು ಮುಖಾಮುಖಿಯಾಗಿ ಚಾಟ್ ಮಾಡಲು ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ. ಡೇಟಾ ಶುಲ್ಕಗಳು ಅನ್ವಯವಾಗಬಹುದು. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ko/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ko/strings.xml
index 090d823..4ad2f82 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ko/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ko/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT는 청각 장애, 난청, 언어 장애가 있거나
     음성 이외의 의사소통 수단이 필요한 발신자에게 도움이 됩니다. RTT 메시지 스크립트는 내 기기의 통화 기록에
     저장됩니다. %1$s</string>
-  <string name="duo_disclosure_title">Duo로 화상 통화 걸기</string>
-  <string name="duo_disclosure_details">Google Duo 화상 통화를 사용하면 가족, 친구와 얼굴을 마주 보며 채팅할 수 있습니다. 데이터 요금이 부과될 수 있습니다. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ky/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ky/strings.xml
index 9fac2f7..5d3f4d7 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ky/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ky/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Чалуу учурунда анык убакыттагы SMS билдирүү</string>
   <string name="rtt_promotion_details">RTT функциясы угуу жана сүйлөө жөндөмдүүлүгү бузулган адамдарга арналат. RTT транскрипциялары түзмөгүңүздөгү чалуу таржымалында сакталат. %1$s</string>
-  <string name="duo_disclosure_title">Duo\'нун жардамы менен видео чалууларды баштаңыз</string>
-  <string name="duo_disclosure_details">Google Duo аркылуу видео режиминде чалып, досторуңуз жана туугандарыңыз менен сүйлөшүңүз. Трафик үчүн акы төлөп калышыңыз мүмкүн. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-lo/strings.xml b/java/com/android/dialer/promotion/impl/res/values-lo/strings.xml
index dac7e42..55215ae 100644
--- a/java/com/android/dialer/promotion/impl/res/values-lo/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-lo/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">ສົ່ງຂໍ້ຄວາມແບບສົດໆໃນການໂທ</string>
   <string name="rtt_promotion_details">RTT ຈະຊ່ວຍເຫຼືອຜູ້ໂທທີ່ຫູໜວກ, ມີບັນຫາໃນການໄດ້ຍິນ, ບໍ່ສາມາດເວົ້າໄດ້ ຫຼື ຕ້ອງການໃຊ້ຫຼາຍກວ່າສຽງ. ການຖອດຂໍ້ຄວາມ RTT ຈະຖືກບັນທຶກໄວ້ຢູ່ອຸປະກອນຂອງທ່ານໃນປະຫວັດການໂທ. %1$s</string>
-  <string name="duo_disclosure_title">ໂທວິດີໂອດ້ວຍ Duo</string>
-  <string name="duo_disclosure_details">ການໂທວິດີໂອ Google Duo ເຮັດໃຫ້ທ່ານສາມາດລົມກັບໝູ່ ແລະ ຄອບຄົວໄດ້ແບບເຫັນໜ້າກັນ. ອາດມີການຮຽກເກັບຄ່າອິນເຕີເນັດ. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-lt/strings.xml b/java/com/android/dialer/promotion/impl/res/values-lt/strings.xml
index a601f72..aa70f28 100644
--- a/java/com/android/dialer/promotion/impl/res/values-lt/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-lt/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT padeda skambintojams, kurie yra kurti, neprigirdintys, sunkiai
     kalba arba kuriems reikia ne tik kalbėti. RTT susirašinėjimo nuorašai saugomi įrenginio
     skambučių istorijoje. %1$s</string>
-  <string name="duo_disclosure_title">Atlikite vaizdo skambučius naudodami „Duo“</string>
-  <string name="duo_disclosure_details">Naudodami „Google Duo“ vaizdo skambučius galite kalbėti su draugais ir šeimos nariais akis į akį. Gali būti taikomi duomenų mokesčiai. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-lv/strings.xml b/java/com/android/dialer/promotion/impl/res/values-lv/strings.xml
index f953141..f3657ed 100644
--- a/java/com/android/dialer/promotion/impl/res/values-lv/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-lv/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Reāllaika teksta ziņojumapmaiņa zvanā</string>
   <string name="rtt_promotion_details">RTT funkcionalitāte palīdz nedzirdīgiem un vājdzirdīgiem zvanītājiem, kā arī zvanītājiem, kuriem ir runas traucējumi vai ir nepieciešama ne tikai balss skaņa. RTT ziņojumapmaiņas transkripcijas tiek glabātas zvanu vēsturē jūsu ierīcē. %1$s</string>
-  <string name="duo_disclosure_title">Veiciet videozvanus, izmantojot lietotni Duo</string>
-  <string name="duo_disclosure_details">Google Duo videozvani ļauj jums personiski tērzēt ar draugiem un ģimeni. Var tikt piemērota maksa par datu pārraidi. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-mk/strings.xml b/java/com/android/dialer/promotion/impl/res/values-mk/strings.xml
index 44ecd8d..e15413b 100644
--- a/java/com/android/dialer/promotion/impl/res/values-mk/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-mk/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT им помага на повикувачи коишто се глуви, слабо слушаат, имаат говорна
     мана или пак, им е потребно многу повеќе од глас. Преписите на RTT-пораките се складирани на вашиот уред
     во историјата на повици. %1$s</string>
-  <string name="duo_disclosure_title">Воспоставувајте видеоповици со Duo</string>
-  <string name="duo_disclosure_details">Видеоповикувањето со Google Duo ви овозможува да разговарате со пријателите и семејството лице в лице. Може да ви се наплати за мобилен интернет. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ml/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ml/strings.xml
index f4db8db..d10c14a 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ml/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ml/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">ബധിരർ, കേൾവി ശക്തി കുറഞ്ഞവർ, സംഭാഷണ വൈകല്യമുള്ളവർ അല്ലെങ്കിൽ ശബ്‌ദത്തിന് പുറമേ മറ്റ് സഹായവും ആവശ്യമുള്ള,
     വിളിക്കുന്ന ആളുകളെ RTT സഹായിക്കുന്നു. നിങ്ങളുടെ ഉപകരണത്തിൽ RTT സന്ദേശമയയ്ക്കൽ ട്രാൻസ്‌ക്രിപ്റ്റുകൾ സംഭരിക്കപ്പെടുന്നത്
     കോൾ ചരിത്രത്തിലാണ്. %1$s</string>
-  <string name="duo_disclosure_title">Duo ഉപയോഗിച്ച് വീഡിയോ കോളുകൾ ചെയ്യൂ</string>
-  <string name="duo_disclosure_details">നിങ്ങളുടെ സുഹൃത്തുക്കളുമായും കുടുംബാംഗങ്ങളുമായും ‌മുഖാമുഖം ചാറ്റ് ചെയ്യാൻ Google Duo വീഡിയോ കോളിംഗ് അനുവദിക്കുന്നു. ഡാറ്റ നിരക്കുകൾ ബാധകമായേക്കാം. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-mn/strings.xml b/java/com/android/dialer/promotion/impl/res/values-mn/strings.xml
index d399ea7..883deda 100644
--- a/java/com/android/dialer/promotion/impl/res/values-mn/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-mn/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Дуудлагын тухайн агшины текст зурвас</string>
   <string name="rtt_promotion_details">ТАТ нь дүлий, сонсголын бэрхшээлтэй, хэл ярианы хөгжлийн бэрхшээлтэй эсвэл хэн нэгний тусламжтай ярьдаг дуудлага хийгчдэд тусладаг. ТАТ зурвас сийрүүлгийг таны төхөөрөмжийн дуудлагын түүх хэсэгт хадгалдаг.%1$s</string>
-  <string name="duo_disclosure_title">Duo ашиглан видео дуудлага хийх</string>
-  <string name="duo_disclosure_details">Google Duo видео дуудлага танд гэр бүлийнхэн, найз нөхөдтэйгээ нүүр нүүрээ харж ярилцах боломжийг олгодог. Дата төлбөр гарч болзошгүй. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-mr/strings.xml b/java/com/android/dialer/promotion/impl/res/values-mr/strings.xml
index 6fa8c22..35330cb 100644
--- a/java/com/android/dialer/promotion/impl/res/values-mr/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-mr/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">कॉलमध्‍ये रिअल टाइम एसएमएस</string>
   <string name="rtt_promotion_details">RTT अशा कॉल करणार्‍यांना साहाय्य करते, ज्‍यांना बहिरेपणा आहे, ज्‍यांना कमी ऐकू येते किंवा बोलताना अडखळतात किंवा ज्‍यांना फक्‍त आवाज पुरेसा नसतो. कॉल इतिहासामध्‍ये तुमच्‍या डिव्‍हाइसवर मेसेजिंग प्रतिलेख स्‍टोअर केले आहेत. %1$s</string>
-  <string name="duo_disclosure_title">Duo ने व्हिडिओ कॉल करा</string>
-  <string name="duo_disclosure_details">Google Duo व्हिडिओ कॉलिंग तुम्हाला तुमचे मित्रमैत्रिणी आणि कुटुंबाशी समोरासमोर चॅट करू देते. डेटा शुल्क लागू शकतात. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ms/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ms/strings.xml
index b8f01e2..4e2f069 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ms/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ms/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Pemesejan teks masa nyata dalam panggilan</string>
   <string name="rtt_promotion_details">RTT membantu pemanggil yang pekak, pekak labang, mengalami kesukaran bertutur atau memerlukan ciri selain suara. Transkrip pemesejan RTT disimpan pada peranti anda dalam sejarah panggilan. %1$s</string>
-  <string name="duo_disclosure_title">Buat panggilan video dengan Duo</string>
-  <string name="duo_disclosure_details">Panggilan video Google Duo membolehkan anda bersembang dengan rakan dan keluarga secara bersemuka. Caj data mungkin dikenakan. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-my/strings.xml b/java/com/android/dialer/promotion/impl/res/values-my/strings.xml
index 4784fbc..472a48a 100644
--- a/java/com/android/dialer/promotion/impl/res/values-my/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-my/strings.xml
@@ -3,6 +3,4 @@
   <string name="rtt_promotion_title">ဖုန်းပြောနေစဉ် အချိန်နှင့်တစ်ပြေးညီ စာသားမက်ဆေ့ဂျ်ပို့ခြင်း</string>
   <string name="rtt_promotion_details">RTT သည် နားမကြားသူ၊ နားလေးသူ၊ စကားချို့ယွင်းသူ (သို့) အသံတစ်မျိုးတည်းထက် ပိုမို၍ လိုအပ်သူများကို ကူညီပေးပါသည်။
  RTT မက်ဆေ့ဂျ်ပို့ခြင်း စာသားမှတ်တမ်းများကို သင့်ကိရိယာရှိ ခေါ်ဆိုမှုမှတ်တမ်းတွင် သိမ်းဆည်းထားပါသည်။ %1$s</string>
-  <string name="duo_disclosure_title">Duo ဖြင့် ဗီဒီယိုခေါ်ဆိုမှုများ ပြုလုပ်ခြင်း</string>
-  <string name="duo_disclosure_details">Google Duo ဗီဒီယိုခေါ်ဆိုမှုက သင့်အား မိတ်ဆွေများ၊ မိသားစုများနှင့် မျက်နှာချင်းဆိုင် ချတ်လုပ်ခွင့်ပေးပါသည်။ ဒေတာသုံးစွဲခများ ကျသင့်နိုင်ပါသည်။ %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-nb/strings.xml b/java/com/android/dialer/promotion/impl/res/values-nb/strings.xml
index a148de3..815c842 100644
--- a/java/com/android/dialer/promotion/impl/res/values-nb/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-nb/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Tekstmeldinger i sanntid i anrop</string>
   <string name="rtt_promotion_details">STT er til hjelp for anropsbrukere som er døve, tunghørte, har talefunksjonshemninger eller trenger mer enn bare tale. Transkripsjoner av STT-meldinger lagres i anropsloggen på enheten din. %1$s</string>
-  <string name="duo_disclosure_title">Ha videosamtaler i Duo</string>
-  <string name="duo_disclosure_details">Med videosamtaler i Google Duo kan du snakke med venner og familie ansikt til ansikt. Datakostnader kan påløpe. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ne/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ne/strings.xml
index ad7d02d..ff44a4c 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ne/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ne/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">कलभित्रै द्रुत पाठ सन्देश प्रवाह</string>
   <string name="rtt_promotion_details">RTT ले बहिरा, सुन्नमा कठिन हुने, बोल्न नसक्ने र कल गर्दा आवाजका साथै अरू कुराहरूको आवश्यकता पर्ने मान्छेहरूलाई सहायता गर्छ। तपाईंको यन्त्रको कलसम्बन्धी इतिहासमा RTT सन्देश प्रवाह ट्रान्सक्रिप्सनहरू भण्डारण गरिन्छ। %1$s</string>
-  <string name="duo_disclosure_title">Duo मार्फत भिडियो कलहरू गर्नुहोस्</string>
-  <string name="duo_disclosure_details">Google Duo को भिडियो कल गर्ने सेवामार्फत तपाईं आफ्ना साथी र परिवारका सदस्यहरूसँग आमनेसामने कुराकानी गर्न सक्नुहुन्छ। डेटा शुल्क लाग्न सक्छ। %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-nl/strings.xml b/java/com/android/dialer/promotion/impl/res/values-nl/strings.xml
index eb7f804..bec5f43 100644
--- a/java/com/android/dialer/promotion/impl/res/values-nl/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-nl/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">In realtime sms\'en in een oproep</string>
   <string name="rtt_promotion_details">RTT helpt dove en slechthorende bellers en bellers met een spraakbeperking. Deze functie kan ook handig zijn voor bellers die meer dan alleen gesproken communicatie nodig hebben. Transcripts van RTT-berichten worden op je apparaat opgeslagen in de oproepgeschiedenis. %1$s</string>
-  <string name="duo_disclosure_title">Videogesprekken voeren met Duo</string>
-  <string name="duo_disclosure_details">Met videogesprekken via Google Duo kun je je vrienden en familie zien terwijl je hen spreekt. Er kunnen datakosten in rekening worden gebracht. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-no/strings.xml b/java/com/android/dialer/promotion/impl/res/values-no/strings.xml
index a148de3..815c842 100644
--- a/java/com/android/dialer/promotion/impl/res/values-no/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-no/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Tekstmeldinger i sanntid i anrop</string>
   <string name="rtt_promotion_details">STT er til hjelp for anropsbrukere som er døve, tunghørte, har talefunksjonshemninger eller trenger mer enn bare tale. Transkripsjoner av STT-meldinger lagres i anropsloggen på enheten din. %1$s</string>
-  <string name="duo_disclosure_title">Ha videosamtaler i Duo</string>
-  <string name="duo_disclosure_details">Med videosamtaler i Google Duo kan du snakke med venner og familie ansikt til ansikt. Datakostnader kan påløpe. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-pa/strings.xml b/java/com/android/dialer/promotion/impl/res/values-pa/strings.xml
index 635086a..1054e97 100644
--- a/java/com/android/dialer/promotion/impl/res/values-pa/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-pa/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">ਕਿਸੇ ਕਾਲ ਦੌਰਾਨ ਅਸਲ-ਸਮੇਂ ਲਿਖਤ ਸੁਨੇਹਾ ਭੇਜਣਾ</string>
   <string name="rtt_promotion_details">RTT ਬੋਲੇ, ਗੂੰਗੇ, ਸੁਣਨ ਸੰਬੰਧੀ ਪਰੇਸ਼ਾਨੀਆਂ ਵਾਲੇ ਕਾਲਰਾਂ ਜਾਂ ਚੀਜ਼ਾਂ ਨੂੰ ਸਮਝਣ ਲਈ ਅਵਾਜ਼ ਤੋਂ ਇਲਾਵਾ ਹੋਰ ਚੀਜ਼ਾਂ \'ਤੇ ਨਿਰਭਰ ਕਰਨ ਵਾਲੇ ਕਾਲਰਾਂ ਦੀ ਸਹਾਇਤਾ ਕਰਦਾ ਹੈ। RTT ਸੁਨੇਹੇ ਦੀਆਂ ਪ੍ਰਤੀਲਿਪੀਆਂ ਨੂੰ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਵਿੱਚ ਕਾਲ ਇਤਿਹਾਸ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। %1$s</string>
-  <string name="duo_disclosure_title">Duo ਨਾਲ ਵੀਡੀਓ ਕਾਲਾਂ ਕਰੋ</string>
-  <string name="duo_disclosure_details">Google Duo ਵੀਡੀਓ ਕਾਲਿੰਗ ਤੁਹਾਨੂੰ ਦੋਸਤਾਂ ਅਤੇ ਪਰਿਵਾਰ ਨਾਲ ਆਮ੍ਹੋ-ਸਾਹਮਣੇ ਗੱਲਬਾਤ ਕਰਨ ਦਿੰਦੀ ਹੈ। ਡਾਟਾ ਖਰਚੇ ਲਏ ਜਾ ਸਕਦੇ ਹਨ। %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-pl/strings.xml b/java/com/android/dialer/promotion/impl/res/values-pl/strings.xml
index a170b5c..bbeb40d 100644
--- a/java/com/android/dialer/promotion/impl/res/values-pl/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-pl/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Wysyłanie SMS-ów w czasie rzeczywistym podczas rozmowy</string>
   <string name="rtt_promotion_details">RTT pomaga osobom niesłyszącym, niedosłyszącym, mającym problemy z mówieniem oraz potrzebującym czegoś więcej oprócz głosu. Transkrypcje są przechowywane na urządzeniu w historii połączeń. %1$s</string>
-  <string name="duo_disclosure_title">Prowadź rozmowy wideo w Duo</string>
-  <string name="duo_disclosure_details">Dzięki rozmowom wideo w Google Duo możesz czatować na żywo ze znajomymi i rodziną. Mogą obowiązywać opłaty za transmisję danych. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-pt-rBR/strings.xml b/java/com/android/dialer/promotion/impl/res/values-pt-rBR/strings.xml
index 33d88da..34bf4a5 100644
--- a/java/com/android/dialer/promotion/impl/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-pt-rBR/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Mensagem de texto em tempo real em uma chamada</string>
   <string name="rtt_promotion_details">A RTT ajuda os autores das chamadas com deficiências como surdez, dificuldade de audição ou fala ou que precisam de outros recursos além de voz. As transcrições das mensagens RTT são armazenadas no histórico de chamadas do dispositivo. %1$s</string>
-  <string name="duo_disclosure_title">Fazer videochamadas com o Duo</string>
-  <string name="duo_disclosure_details">Com as videochamadas do Google Duo, você pode bater papo cara a cara com amigos e familiares. O uso de dados está sujeito a cobranças. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-pt-rPT/strings.xml b/java/com/android/dialer/promotion/impl/res/values-pt-rPT/strings.xml
index 1075dd1..9fe5032 100644
--- a/java/com/android/dialer/promotion/impl/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-pt-rPT/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">A RTT assiste os autores de chamadas surdos, com deficiências auditivas,
     dificuldades da fala ou que precisem de mais do que apenas a voz. As transcrições de mensagens da RTT são armazenadas no seu dispositivo,
     no histórico de chamadas. %1$s</string>
-  <string name="duo_disclosure_title">Efetue videochamadas com o Duo</string>
-  <string name="duo_disclosure_details">As videochamadas do Google Duo permitem-lhe conversar no chat com os amigos e a família cara a cara. Poderão ser aplicadas taxas de dados. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-pt/strings.xml b/java/com/android/dialer/promotion/impl/res/values-pt/strings.xml
index 33d88da..34bf4a5 100644
--- a/java/com/android/dialer/promotion/impl/res/values-pt/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-pt/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Mensagem de texto em tempo real em uma chamada</string>
   <string name="rtt_promotion_details">A RTT ajuda os autores das chamadas com deficiências como surdez, dificuldade de audição ou fala ou que precisam de outros recursos além de voz. As transcrições das mensagens RTT são armazenadas no histórico de chamadas do dispositivo. %1$s</string>
-  <string name="duo_disclosure_title">Fazer videochamadas com o Duo</string>
-  <string name="duo_disclosure_details">Com as videochamadas do Google Duo, você pode bater papo cara a cara com amigos e familiares. O uso de dados está sujeito a cobranças. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ro/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ro/strings.xml
index 34a8faf..d11baa1 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ro/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ro/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">TTR oferă asistență apelanților fără auz, cu deficiențe de auz, care au dizabilități
     de vorbire sau care au nevoie de mai mult decât vocea. Transcrierile mesajelor TTR sunt stocate pe dispozitiv
     în istoricul apelurilor. %1$s</string>
-  <string name="duo_disclosure_title">Inițiați apeluri video folosind Duo</string>
-  <string name="duo_disclosure_details">Folosind apelarea video din Google Duo, puteți conversa cu prietenii și familia față în față. Se pot aplica taxe pentru date. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ru/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ru/strings.xml
index b4e3fc7..c573387 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ru/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ru/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">Функция RTT предназначена для пользователей
     с нарушениями слуха и речи. Расшифровки сообщений RTT сохраняются в журнале звонков
     на вашем устройстве. %1$s</string>
-  <string name="duo_disclosure_title">Начинайте видеовстречи с помощью Duo</string>
-  <string name="duo_disclosure_details">Общайтесь с друзьями и родными в видеочатах Google Duo. Может взиматься плата за передачу данных. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-si/strings.xml b/java/com/android/dialer/promotion/impl/res/values-si/strings.xml
index a188534..e93eb70 100644
--- a/java/com/android/dialer/promotion/impl/res/values-si/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-si/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">ඇමතුමක් ඇතුළත තථ්‍ය කාල පෙළ පණිවිඩකරණය</string>
   <string name="rtt_promotion_details">බිහිරි, ශ්‍රවණ දුර්වලතා, කථන ආබාධයක් හෝ හඬට වඩා වැඩි දෙයක් අවශ්‍ය අමතන්නන්ට RTT සහාය දක්වයි. RTT පණිවිඩකරණ පිටපත් ඔබේ උපාංගයේ ඇමතුම් ඉතිහාසය තුළ ගබඩා කෙරේ. %1$s</string>
-  <string name="duo_disclosure_title">Duo සමගින් වීඩියෝ ඇමතුම් කරන්න</string>
-  <string name="duo_disclosure_details">Google Duo වීඩියෝ ඇමතීම ඔබට මිතුරන් සහ පවුලේ අය සමග මුහුණට මුහුණ කතාබස් කිරීමට ඉඩ දේ. දත්ත ගාස්තු අදාළ විය හැකිය. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-sk/strings.xml b/java/com/android/dialer/promotion/impl/res/values-sk/strings.xml
index 18db4c6..6b965cc 100644
--- a/java/com/android/dialer/promotion/impl/res/values-sk/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-sk/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">Okamžitý text pomáha volajúcim, ktorí nepočujú, majú problémy so sluchom,
     rečovú poruchu alebo potrebujú viac ako samotný hlas. Prepisy správ s okamžitým textom sa ukladajú
     vo vašom zariadení v histórii hovorov. %1$s</string>
-  <string name="duo_disclosure_title">Uskutočňujte videohovory v aplikácii Duo</string>
-  <string name="duo_disclosure_details">Vďaka videohovorom v aplikácii Google Duo môžete bezprostredne četovať s priateľmi a rodinou. Môžu sa účtovať poplatky za dátový prenos. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-sl/strings.xml b/java/com/android/dialer/promotion/impl/res/values-sl/strings.xml
index f8e653f..fc0e1e2 100644
--- a/java/com/android/dialer/promotion/impl/res/values-sl/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-sl/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">Funkcija RTT pomaga klicateljem, ki so gluhi, naglušni, imajo govorno
     motnjo ali potrebujejo več kot samo glas. Prepisi sporočil RTT so shranjeni v vaši napravi
     v zgodovini klicev. %1$s</string>
-  <string name="duo_disclosure_title">Opravljajte videoklice prek Dua</string>
-  <string name="duo_disclosure_details">Videoklici prek Googla Duo omogočajo, da s prijatelji in družinskimi člani klepetate iz oči v oči. Morda boste morali plačati stroške prenosa podatkov. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-sq/strings.xml b/java/com/android/dialer/promotion/impl/res/values-sq/strings.xml
index e94e3f9..f2d7f17 100644
--- a/java/com/android/dialer/promotion/impl/res/values-sq/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-sq/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Mesazhet me tekst në kohë reale brenda një telefonate</string>
   <string name="rtt_promotion_details">Funksioni RTT ndihmon telefonuesit që janë të shurdhër, kanë vështirësi dëgjimi, kanë një aftësi të kufizuar të të folurit ose që kanë nevojë për më shumë se thjesht zërin. Transkriptet e mesazheve të funksionit RTT ruhen në pajisjen tënde në historikun e telefonatave. %1$s</string>
-  <string name="duo_disclosure_title">Bëj telefonata me video me Duo</string>
-  <string name="duo_disclosure_details">Telefonatat me video me Google Duo të lejojnë të bisedosh me shokët dhe familjen tënde ballë për ballë. Mund të zbatohen tarifat për të dhënat. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-sr/strings.xml b/java/com/android/dialer/promotion/impl/res/values-sr/strings.xml
index 432e2d9..c1c2f7d 100644
--- a/java/com/android/dialer/promotion/impl/res/values-sr/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-sr/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT помаже позиваоцима који су глуви, имају оштећење слуха, тешкоће у
     говору или им је потребно нешто више од гласа. Транскрипти RTT порука се чувају на уређају
     у историји позива. %1$s</string>
-  <string name="duo_disclosure_title">Упућујте видео позиве помоћу Duo-а</string>
-  <string name="duo_disclosure_details">Видео позиви у Google Duo-у вам омогућавају да ћаскате са пријатељима и породицом лицем у лице. Важе накнаде за пренос података. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-sv/strings.xml b/java/com/android/dialer/promotion/impl/res/values-sv/strings.xml
index 08cd4ef..332de27 100644
--- a/java/com/android/dialer/promotion/impl/res/values-sv/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-sv/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT hjälper döva, hörselskadade, personer med
     talsvårigheter eller behöver mer än endast röst. Transkriptioner av RTT-meddelanden lagras på enheten
     i samtalshistoriken. %1$s</string>
-  <string name="duo_disclosure_title">Ring videosamtal med Duo</string>
-  <string name="duo_disclosure_details">Google Duo videosamtal gör det möjligt att chatta ansikte mot ansikte med familj och vänner. Dataavgifter kan tillkomma. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-sw/strings.xml b/java/com/android/dialer/promotion/impl/res/values-sw/strings.xml
index 22cac3a..a96f6f5 100644
--- a/java/com/android/dialer/promotion/impl/res/values-sw/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-sw/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">Kutuma SMS katika muda halisi wakati unapiga simu</string>
   <string name="rtt_promotion_details">RTT huwasaidia wapigaji simu ambao ni viziwi, wenye matatizo ya kusikia, wenye matatizo ya kuzungumza au wanaohitaji kufanya zaidi ya kuzungumza tu. Manukuu ya ujumbe wa RTT huhifadhiwa kwenye kifaa chako katika rekodi ya simu zilizopigwa. %1$s</string>
-  <string name="duo_disclosure_title">Piga simu za video kwa kutumia Duo</string>
-  <string name="duo_disclosure_details">Huduma ya simu ya video ya Google Duo inakuwezesha kuzungumza na marafiki na familia ana kwa ana. Gharama ya kutumia data inaweza kutozwa. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ta/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ta/strings.xml
index 0fe2f16..35c841f 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ta/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ta/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">காது கேட்காதவர்கள், கேட்பதில் பிரச்சனை உள்ளவர்கள், பேச
     முடியாதவர்கள் அல்லது குரலுடன் கூடுதல் சேவை தேவைப்படும் அழைப்பாளர்களுக்கு RTT உதவுகிறது. RTT செய்தி டிரான்ஸ்கிரிப்ட்டுகள், உங்கள் சாதன
     அழைப்பு வரலாற்றில் சேமிக்கப்படும். %1$s</string>
-  <string name="duo_disclosure_title">Duo மூலம் வீடியோ அழைப்புகளைச் செய்யுங்கள்</string>
-  <string name="duo_disclosure_details">Google Duo இன் வீடியோ அழைப்பு மூலம் நண்பர்களுடனும் குடும்பத்தினருடனும் நேருக்கு நேராக அரட்டையடிக்கலாம். தரவுக் கட்டணங்கள் விதிக்கப்படலாம். %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-te/strings.xml b/java/com/android/dialer/promotion/impl/res/values-te/strings.xml
index 21bda7e..6435621 100644
--- a/java/com/android/dialer/promotion/impl/res/values-te/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-te/strings.xml
@@ -3,6 +3,4 @@
   <string name="rtt_promotion_title">కాల్‌లో నిజ సమయ వచన సందేశం</string>
   <string name="rtt_promotion_details">చెవిటివారు, వినికిడి సమస్యలు ఉన్న వారు, మాట్లాడటంలో సమస్యలు ఉన్న వారు లేదా కేవలం వాయిస్‌తో అర్థం చేసుకోలేని కాలర్‌లకు RTT సహాయపడుతుంది. RTT సందేశ
 లిపి మార్పులు మీ పరికరంలోని కాల్ చరిత్రలో నిల్వ చేయబడతాయి. %1$s</string>
-  <string name="duo_disclosure_title">Duoతో వీడియో కాల్‌లను చేయండి</string>
-  <string name="duo_disclosure_details">Google Duo వీడియో కాలింగ్ మీరు మీ స్నేహితులు మరియు కుటుంబ సభ్యులతో ముఖాముఖిగా సంభాషించడానికి వీలు కల్పిస్తుంది. డేటా ఛార్జీలు వర్తించవచ్చు. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-th/strings.xml b/java/com/android/dialer/promotion/impl/res/values-th/strings.xml
index 8eefae3..2c2c05b 100644
--- a/java/com/android/dialer/promotion/impl/res/values-th/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-th/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT ช่วยเหลือผู้โทรที่หูหนวก ได้ยินไม่ชัด มีความบกพร่อง
     ในการพูด หรือต้องการการสื่อสารที่นอกเหนือจากเสียงพูด ระบบจะจัดเก็บการถอดเสียงการรับส่งข้อความ RTT ไว้ในอุปกรณ์ของคุณ
     ในประวัติการโทร %1$s</string>
-  <string name="duo_disclosure_title">ใช้วิดีโอคอลผ่าน Duo</string>
-  <string name="duo_disclosure_details">วิดีโอคอลจาก Google Duo ช่วยให้คุณแชทกับเพื่อนๆ และครอบครัวแบบเห็นหน้าเห็นตาได้ อาจมีการคิดค่าเน็ตมือถือ %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-tl/strings.xml b/java/com/android/dialer/promotion/impl/res/values-tl/strings.xml
index bbb30a2..29adf5d 100644
--- a/java/com/android/dialer/promotion/impl/res/values-tl/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-tl/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">Tinutulungan ng RTT ang mga tumatawag na bingi, mahina ang pandinig, may kapansanan
     sa pagsasalita, o kailangan ng higit pa sa boses lang. Ini-store ang mga transcript ng pagmemensahe gamit ang RTT sa iyong device
     sa history ng tawag. %1$s</string>
-  <string name="duo_disclosure_title">Makipag-video call gamit ang Duo</string>
-  <string name="duo_disclosure_details">Pinahihintulutan ka ng pakikipag-video call sa Google Duo na makipag-chat sa mga kaibigan at pamilya nang harapan. Maaaring may mga babayaran sa data. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-tr/strings.xml b/java/com/android/dialer/promotion/impl/res/values-tr/strings.xml
index 5b527f7..9ed984e 100644
--- a/java/com/android/dialer/promotion/impl/res/values-tr/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-tr/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT; tam veya kısmi işitme engelli, konuşma engeli olan veya sesten
     fazlasına ihtiyaç duyan arayanlara yardımcı olur. RTT mesajlarının çeviri yazıları
     cihazınızdaki çağrı geçmişinde depolanır. %1$s</string>
-  <string name="duo_disclosure_title">Duo ile görüntülü görüşmeler yapın</string>
-  <string name="duo_disclosure_details">Google Duo görüntülü görüşmesi, arkadaşlarınız ve ailenizle yüz yüze sohbet etmenizi sağlar. Veri aktarımı için ücret alınabilir. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-uk/strings.xml b/java/com/android/dialer/promotion/impl/res/values-uk/strings.xml
index 83c51f3..b661b14 100644
--- a/java/com/android/dialer/promotion/impl/res/values-uk/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-uk/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT допомагає користувачам із вадами слуху, мовлення
     та іншим користувачам, для яких голосового спілкування недостатньо. Транскрипції повідомлень RTT зберігаються на вашому пристрої
     в історії викликів. %1$s</string>
-  <string name="duo_disclosure_title">Здійснюйте відеодзвінки за допомогою Duo</string>
-  <string name="duo_disclosure_details">Відеодзвінки Google Duo дають змогу спілкуватися з друзями та рідними віч-на-віч. Може стягуватися плата за обмін даними. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-ur/strings.xml b/java/com/android/dialer/promotion/impl/res/values-ur/strings.xml
index 2da5d9d..2d0d04d 100644
--- a/java/com/android/dialer/promotion/impl/res/values-ur/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-ur/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">کال میں ریئل ٹائم ٹیکسٹ پیغام رسانی کی سہولت</string>
   <string name="rtt_promotion_details">‏RTT ایسے کالرز کی مدد کرتا ہے جو بہرے ہیں، اونچا سنتے ہیں، بولنے سے معذور ہیں یا ان کیلئے صرف آواز ہی کافی نہیں ہے۔ RTT پیغام ٹرانسکرپٹس کو آپ کے آلہ پر کال کی سرگزشت میں اسٹور کیا جاتا ہے۔ %1$s</string>
-  <string name="duo_disclosure_title">‏Duo کے ذریعے ویڈیو کال کریں</string>
-  <string name="duo_disclosure_details">‏Google Duo ویڈیو کالنگ کے ذریعے آپ دوستوں اور فیملی کے ساتھ رو برو چیٹ کر سکتے ہیں۔ ڈیٹا چارجز لاگو ہو سکتے ہیں۔ %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-uz/strings.xml b/java/com/android/dialer/promotion/impl/res/values-uz/strings.xml
index cbb34b6..692cca4 100644
--- a/java/com/android/dialer/promotion/impl/res/values-uz/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-uz/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">RTT kar, eshitish qobiliyati va nutqiy faoliyati buzilgan shaxslarga
     mo‘ljallangan funksiyadir. RTT xabarlari transkripsiyalari qurilmangizga, chaqiruv
     jurnaliga saqlanadi. %1$s</string>
-  <string name="duo_disclosure_title">Duo orqali video suhbat qiling</string>
-  <string name="duo_disclosure_details">Google Duo orqali do‘st va yaqinlaringiz bilan onlayn video suhbat qiling. Internet uchun haq olinishi mumkin. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-vi/strings.xml b/java/com/android/dialer/promotion/impl/res/values-vi/strings.xml
index 1b0109f..40dc707 100644
--- a/java/com/android/dialer/promotion/impl/res/values-vi/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-vi/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">Tin nhắn theo thời gian thực (RTT) hỗ trợ những người gọi khiếm thính, bị suy giảm thính lực, không có
     khả năng nói hoặc cần thêm hỗ trợ khác ngoài giọng nói. Bản ghi RTT được lưu trữ trên thiết bị
     trong nhật ký cuộc gọi. %1$s</string>
-  <string name="duo_disclosure_title">Gọi điện video bằng Duo</string>
-  <string name="duo_disclosure_details">Ứng dụng gọi điện video Google Duo cho phép bạn trò chuyện trực diện với bạn bè và gia đình. Có thể mất cước phí dữ liệu. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-zh-rCN/strings.xml b/java/com/android/dialer/promotion/impl/res/values-zh-rCN/strings.xml
index a657a53..8152cec 100644
--- a/java/com/android/dialer/promotion/impl/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-zh-rCN/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">通话期间收发实时信息</string>
   <string name="rtt_promotion_details">RTT 可为以下类型的来电者提供协助：失聪者、听力障碍人士、语言障碍人士或需要语音以外服务的人。实时信息的转录文字会存储在您设备上的通话记录中。%1$s</string>
-  <string name="duo_disclosure_title">使用 Duo 进行视频通话</string>
-  <string name="duo_disclosure_details">借助 Google Duo 视频通话功能，您可与亲朋好友“面对面”地聊天。您可能需要支付流量费。%1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-zh-rHK/strings.xml b/java/com/android/dialer/promotion/impl/res/values-zh-rHK/strings.xml
index 8715a58..f73b25d 100644
--- a/java/com/android/dialer/promotion/impl/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-zh-rHK/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">在通話中進行即時文字短訊</string>
   <string name="rtt_promotion_details">即時文字短訊 (RTT) 功能可協助失聰、有聽力障礙、語言障礙或需要語音以外更多功能的通話者。RTT 訊息轉錄內容會儲存在您裝置中的通話記錄。%1$s</string>
-  <string name="duo_disclosure_title">透過 Duo 撥打視像通話</string>
-  <string name="duo_disclosure_details">Google Duo 視像通話可讓您與親朋好友面對面聊天。您可能需要支付數據費用。%1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-zh-rTW/strings.xml b/java/com/android/dialer/promotion/impl/res/values-zh-rTW/strings.xml
index b8f1f2d..7b0c243 100644
--- a/java/com/android/dialer/promotion/impl/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-zh-rTW/strings.xml
@@ -2,6 +2,4 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="rtt_promotion_title">通話內的即時文字訊息</string>
   <string name="rtt_promotion_details">即時文字訊息功能可為以下類型的來電者提供協助：聽障人士、聽力受損者、語言障礙者，或需要語音服務以外的使用者。系統會將即時文字訊息的留言轉錄儲存在裝置的通話記錄中。%1$s</string>
-  <string name="duo_disclosure_title">使用 Duo 進行視訊通話</string>
-  <string name="duo_disclosure_details">你可以使用 Google Duo 視訊通話服務與親友面對面聊天。使用本服務可能需支付數據傳輸費用。%1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values-zu/strings.xml b/java/com/android/dialer/promotion/impl/res/values-zu/strings.xml
index 38d564e..37599f6 100644
--- a/java/com/android/dialer/promotion/impl/res/values-zu/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values-zu/strings.xml
@@ -4,6 +4,4 @@
   <string name="rtt_promotion_details">I-RTT isiza abafonayo abayizithulu, abanenkinga yokuzwa, abanokukhubazeka
     bokukhuluma, noma abadinga okungaphezulu kwezwi lilodwa. Okulotshiwe kokulayeza kwe-RTT kugcinwa kudivayisi yakho
     kumlando wekholi. %1$s</string>
-  <string name="duo_disclosure_title">Yenza amakholi evidiyo nge-Duo</string>
-  <string name="duo_disclosure_details">Ukushaya kwevidiyo kwe-Google Duo kukuvumela ukuthi uxoxe nabangani nomndeni ubuso nobuso. izindleko zedatha zingasebenza. %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/promotion/impl/res/values/strings.xml b/java/com/android/dialer/promotion/impl/res/values/strings.xml
index 8990749..c34f982 100644
--- a/java/com/android/dialer/promotion/impl/res/values/strings.xml
+++ b/java/com/android/dialer/promotion/impl/res/values/strings.xml
@@ -22,14 +22,4 @@
   <string name="rtt_promotion_details">RTT assists callers who are deaf, hard of hearing, have a speech
     disability, or need more than voice alone. RTT messaging transcripts are stored on your device
     in the call history. <xliff:g exmaple="Learn More">%1$s</xliff:g></string>
-
-  <!-- Header on the Duo disclosure card. [CHAR_LIMIT=60] -->
-  <string name="duo_disclosure_title">
-    Make video calls with Duo
-  </string>
-
-  <!-- Details on the Duo disclosure card. [CHAR_LIMIT=200] -->
-  <string name="duo_disclosure_details">
-    Google Duo video calling lets you chat with friends and family face-to-face. Data charges may apply. <xliff:g example="Learn More">%1$s</xliff:g>
-  </string>
 </resources>
diff --git a/java/com/android/dialer/protos/ProtoParsers.java b/java/com/android/dialer/protos/ProtoParsers.java
index 00d5a26..cdfe846 100644
--- a/java/com/android/dialer/protos/ProtoParsers.java
+++ b/java/com/android/dialer/protos/ProtoParsers.java
@@ -19,7 +19,9 @@
 import android.content.ContentValues;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.google.protobuf.InvalidProtocolBufferException;
 import com.google.protobuf.MessageLite;
@@ -32,7 +34,7 @@
   /** Retrieve a proto from a Bundle which was not created within the current executable/version. */
   @SuppressWarnings("unchecked") // We want to eventually optimize away parser classes, so cast
   public static <T extends MessageLite> T get(
-      @NonNull Bundle bundle, @NonNull String key, @NonNull T defaultInstance)
+          @NonNull Bundle bundle, @NonNull String key, @NonNull T defaultInstance)
       throws InvalidProtocolBufferException {
 
     Assert.isNotNull(bundle);
diff --git a/java/com/android/dialer/rootcomponentgenerator/ComponentGeneratingStep.java b/java/com/android/dialer/rootcomponentgenerator/ComponentGeneratingStep.java
index 1a40611..3553564 100644
--- a/java/com/android/dialer/rootcomponentgenerator/ComponentGeneratingStep.java
+++ b/java/com/android/dialer/rootcomponentgenerator/ComponentGeneratingStep.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -36,12 +37,13 @@
 import com.squareup.javapoet.ParameterSpec;
 import com.squareup.javapoet.TypeName;
 import com.squareup.javapoet.TypeSpec;
-import dagger.Subcomponent;
+
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
+
 import javax.annotation.processing.ProcessingEnvironment;
 import javax.lang.model.element.AnnotationMirror;
 import javax.lang.model.element.AnnotationValue;
@@ -51,6 +53,8 @@
 import javax.lang.model.element.VariableElement;
 import javax.lang.model.type.TypeMirror;
 
+import dagger.Subcomponent;
+
 /**
  * Generates component for a type annotated with {@link IncludeInDialerRoot}.
  *
diff --git a/java/com/android/dialer/rootcomponentgenerator/MetadataGeneratingStep.java b/java/com/android/dialer/rootcomponentgenerator/MetadataGeneratingStep.java
index 266574d..cc0c1d0 100644
--- a/java/com/android/dialer/rootcomponentgenerator/MetadataGeneratingStep.java
+++ b/java/com/android/dialer/rootcomponentgenerator/MetadataGeneratingStep.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,7 @@
 
 package com.android.dialer.rootcomponentgenerator;
 
-import static javax.tools.Diagnostic.Kind.ERROR;
-
 import com.android.dialer.inject.IncludeInDialerRoot;
-import com.android.dialer.inject.InstallIn;
 import com.android.dialer.inject.RootComponentGeneratorMetadata;
 import com.google.auto.common.BasicAnnotationProcessor.ProcessingStep;
 import com.google.auto.common.MoreElements;
@@ -27,16 +25,17 @@
 import com.google.common.collect.SetMultimap;
 import com.squareup.javapoet.AnnotationSpec;
 import com.squareup.javapoet.TypeSpec;
+
 import java.lang.annotation.Annotation;
 import java.util.Collections;
 import java.util.Set;
+
 import javax.annotation.processing.ProcessingEnvironment;
 import javax.lang.model.element.Element;
 import javax.lang.model.element.TypeElement;
 
 /**
- * Genereates metadata for every type annotated by {@link InstallIn} and {@link
- * IncludeInDialerRoot}.
+ * Genereates metadata for every type annotated by {@link IncludeInDialerRoot}.
  *
  * <p>The metadata has the information where the annotated types are and it is used by annotation
  * processor when the processor tries to generate root component.
@@ -51,7 +50,7 @@
 
   @Override
   public Set<? extends Class<? extends Annotation>> annotations() {
-    return ImmutableSet.of(IncludeInDialerRoot.class, InstallIn.class);
+    return ImmutableSet.of(IncludeInDialerRoot.class);
   }
 
   @Override
@@ -61,16 +60,6 @@
     for (Element element : elementsByAnnotation.get(IncludeInDialerRoot.class)) {
       generateMetadataFor(IncludeInDialerRoot.class, MoreElements.asType(element));
     }
-    for (Element element : elementsByAnnotation.get(InstallIn.class)) {
-      if (element.getAnnotation(InstallIn.class).variants().length == 0) {
-        processingEnv
-            .getMessager()
-            .printMessage(
-                ERROR, String.format("@InstallIn %s must have at least one variant", element));
-        continue;
-      }
-      generateMetadataFor(InstallIn.class, MoreElements.asType(element));
-    }
 
     return Collections.emptySet();
   }
diff --git a/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
deleted file mode 100644
index 06b994f..0000000
--- a/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.rootcomponentgenerator;
-
-import static com.google.auto.common.AnnotationMirrors.getAnnotationValue;
-import static com.google.auto.common.MoreElements.getAnnotationMirror;
-import static com.google.auto.common.MoreElements.isAnnotationPresent;
-import static javax.tools.Diagnostic.Kind.ERROR;
-
-import com.android.dialer.inject.DialerRootComponent;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import com.android.dialer.inject.InstallIn;
-import com.android.dialer.inject.RootComponentGeneratorMetadata;
-import com.google.auto.common.BasicAnnotationProcessor.ProcessingStep;
-import com.google.auto.common.MoreElements;
-import com.google.common.base.Optional;
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ListMultimap;
-import com.google.common.collect.SetMultimap;
-import com.squareup.javapoet.AnnotationSpec;
-import com.squareup.javapoet.ClassName;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.TypeSpec;
-import dagger.Component;
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import javax.annotation.processing.ProcessingEnvironment;
-import javax.inject.Singleton;
-import javax.lang.model.element.AnnotationMirror;
-import javax.lang.model.element.Element;
-import javax.lang.model.element.Modifier;
-import javax.lang.model.element.PackageElement;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.type.TypeMirror;
-
-/**
- * Generates root component for a java type annotated with {@link DialerRootComponent}.
- *
- * <p>If users use {@link GenerateTestDaggerApp} along with RootComponentGenerator, there's an
- * optional method that they can use to inject instance in the test.
- *
- * <p>Example:
- *
- * <p>
- *
- * <pre>
- * <code>
- * @Inject SomeThing someThing;
- * @Before
- * public void setUp() {
- * ...
- * TestApplication application = (TestApplication) RuntimeEnvironment.application;
- * TestComponent component = (TestComponent) application.component();
- * component.inject(this);
- * ...
- * }
- * </code>
- * </pre>
- */
-final class RootComponentGeneratingStep implements ProcessingStep {
-
-  private final ProcessingEnvironment processingEnv;
-
-  public RootComponentGeneratingStep(ProcessingEnvironment processingEnv) {
-    this.processingEnv = processingEnv;
-  }
-
-  @Override
-  public Set<? extends Class<? extends Annotation>> annotations() {
-    return ImmutableSet.of(DialerRootComponent.class, InstallIn.class, IncludeInDialerRoot.class);
-  }
-
-  @Override
-  public Set<? extends Element> process(
-      SetMultimap<Class<? extends Annotation>, Element> elementsByAnnotation) {
-    for (Element element : elementsByAnnotation.get(DialerRootComponent.class)) {
-      // defer root components to the next round in case where the current build target contains
-      // elements annotated with @InstallIn. Annotation processor cannot detect metadata files
-      // generated in the same round and the metadata is accessible in the next round.
-      if (shouldDeferRootComponent(elementsByAnnotation)) {
-        return elementsByAnnotation.get(DialerRootComponent.class);
-      } else {
-        generateRootComponent(MoreElements.asType(element));
-      }
-    }
-    return Collections.emptySet();
-  }
-
-  private boolean shouldDeferRootComponent(
-      SetMultimap<Class<? extends Annotation>, Element> elementsByAnnotation) {
-    return elementsByAnnotation.containsKey(InstallIn.class)
-        || elementsByAnnotation.containsKey(IncludeInDialerRoot.class);
-  }
-
-  /**
-   * Generates a root component.
-   *
-   * @param rootElement the annotated type with {@link DialerRootComponent} used in annotation
-   *     processor.
-   */
-  private void generateRootComponent(TypeElement rootElement) {
-    DialerRootComponent dialerRootComponent = rootElement.getAnnotation(DialerRootComponent.class);
-    ListMultimap<DialerVariant, TypeElement> componentModuleMap = generateComponentModuleMap();
-    List<TypeElement> componentList = generateComponentList();
-    DialerVariant dialerVariant = dialerRootComponent.variant();
-    TypeSpec.Builder rootComponentClassBuilder =
-        TypeSpec.interfaceBuilder(dialerVariant.toString())
-            .addModifiers(Modifier.PUBLIC)
-            .addAnnotation(Singleton.class);
-    for (TypeElement componentWithSuperInterface : componentList) {
-      rootComponentClassBuilder.addSuperinterface(ClassName.get(componentWithSuperInterface));
-    }
-    AnnotationSpec.Builder componentAnnotation = AnnotationSpec.builder(Component.class);
-    for (TypeElement annotatedElement : componentModuleMap.get(dialerVariant)) {
-      componentAnnotation.addMember("modules", "$T.class", annotatedElement.asType());
-    }
-    rootComponentClassBuilder.addAnnotation(componentAnnotation.build());
-
-    AnnotationMirror dialerRootComponentMirror =
-        getAnnotationMirror(rootElement, DialerRootComponent.class).get();
-
-    TypeMirror annotatedTestClass =
-        (TypeMirror) getAnnotationValue(dialerRootComponentMirror, "injectClass").getValue();
-
-    rootComponentClassBuilder.addMethod(generateInjectMethod(annotatedTestClass));
-
-    TypeSpec rootComponentClass = rootComponentClassBuilder.build();
-    RootComponentUtils.writeJavaFile(
-        processingEnv, ClassName.get(rootElement).packageName(), rootComponentClass);
-  }
-
-  private List<TypeElement> generateComponentList() {
-    List<TypeElement> list = new ArrayList<>();
-    extractInfoFromMetadata(IncludeInDialerRoot.class, list::add);
-    return list;
-  }
-
-  private ListMultimap<DialerVariant, TypeElement> generateComponentModuleMap() {
-    ListMultimap<DialerVariant, TypeElement> map = ArrayListMultimap.create();
-    extractInfoFromMetadata(
-        InstallIn.class,
-        (annotatedElement) -> {
-          for (DialerVariant rootComponentName :
-              annotatedElement.getAnnotation(InstallIn.class).variants()) {
-            map.put(rootComponentName, annotatedElement);
-          }
-        });
-    return map;
-  }
-
-  private void extractInfoFromMetadata(
-      Class<? extends Annotation> annotation, MetadataProcessor metadataProcessor) {
-    PackageElement cachePackage =
-        processingEnv.getElementUtils().getPackageElement(RootComponentUtils.METADATA_PACKAGE_NAME);
-    if (cachePackage == null) {
-      processingEnv
-          .getMessager()
-          .printMessage(
-              ERROR,
-              "Metadata haven't been generated! do you forget to add modules "
-                  + "or components in dependency of dialer root?");
-      return;
-    }
-    for (Element element : cachePackage.getEnclosedElements()) {
-      Optional<AnnotationMirror> metadataAnnotation =
-          getAnnotationMirror(element, RootComponentGeneratorMetadata.class);
-      if (isAnnotationPresent(element, RootComponentGeneratorMetadata.class)
-          && getAnnotationValue(metadataAnnotation.get(), "tag")
-              .getValue()
-              .equals(annotation.getSimpleName())) {
-        TypeMirror annotatedClass =
-            (TypeMirror) getAnnotationValue(metadataAnnotation.get(), "annotatedClass").getValue();
-        TypeElement annotatedElement =
-            processingEnv.getElementUtils().getTypeElement(annotatedClass.toString());
-        metadataProcessor.process(annotatedElement);
-      }
-    }
-  }
-
-  private MethodSpec generateInjectMethod(TypeMirror testClassTypeMirror) {
-    return MethodSpec.methodBuilder("inject")
-        .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
-        .returns(void.class)
-        .addParameter(ClassName.get(testClassTypeMirror), "clazz")
-        .build();
-  }
-
-  private interface MetadataProcessor {
-    void process(TypeElement typeElement);
-  }
-}
diff --git a/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
index e5086aa..9362bbc 100644
--- a/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
+++ b/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import com.google.auto.common.BasicAnnotationProcessor;
 import com.google.auto.service.AutoService;
 import com.google.common.collect.ImmutableList;
+
 import javax.annotation.processing.Processor;
 import javax.lang.model.SourceVersion;
 
@@ -29,7 +31,7 @@
   @Override
   protected Iterable<? extends ProcessingStep> initSteps() {
     return ImmutableList.of(
-        new MetadataGeneratingStep(processingEnv), new RootComponentGeneratingStep(processingEnv));
+        new MetadataGeneratingStep(processingEnv));
   }
 
   @Override
diff --git a/java/com/android/dialer/rootcomponentgenerator/RootComponentUtils.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentUtils.java
index cdcae92..ef73699 100644
--- a/java/com/android/dialer/rootcomponentgenerator/RootComponentUtils.java
+++ b/java/com/android/dialer/rootcomponentgenerator/RootComponentUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,9 @@
 
 import com.squareup.javapoet.JavaFile;
 import com.squareup.javapoet.TypeSpec;
+
 import java.io.IOException;
+
 import javax.annotation.processing.ProcessingEnvironment;
 
 /**
diff --git a/java/com/android/dialer/rtt/AndroidManifest.xml b/java/com/android/dialer/rtt/AndroidManifest.xml
deleted file mode 100644
index f8e8e0b..0000000
--- a/java/com/android/dialer/rtt/AndroidManifest.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
- ~ Copyright (C) 2018 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.rtt"
-    xmlns:android="http://schemas.android.com/apk/res/android">
-  <application>
-    <activity android:name=".RttTranscriptActivity"/>
-  </application>
-</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/rtt/RttTranscriptActivity.java b/java/com/android/dialer/rtt/RttTranscriptActivity.java
index 574cdb2..0b52f9e 100644
--- a/java/com/android/dialer/rtt/RttTranscriptActivity.java
+++ b/java/com/android/dialer/rtt/RttTranscriptActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,16 +20,20 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
 import android.view.MenuItem;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.UiListener;
+import com.android.dialer.common.concurrent.SupportUiListener;
 import com.android.dialer.glidephotomanager.PhotoInfo;
 import com.android.dialer.protos.ProtoParsers;
+import com.android.dialer.rtt.RttTranscript;
 import com.android.dialer.widget.DialerToolbar;
 
 /** Activity holds RTT transcript. */
@@ -39,7 +44,7 @@
   public static final String EXTRA_PHOTO_INFO = "extra_photo_info";
 
   private RttTranscriptAdapter adapter;
-  private UiListener<RttTranscript> rttTranscriptUiListener;
+  private SupportUiListener<RttTranscript> rttTranscriptUiListener;
   private DialerToolbar toolbar;
 
   public static Intent getIntent(
@@ -68,7 +73,7 @@
 
     rttTranscriptUiListener =
         DialerExecutorComponent.get(this)
-            .createUiListener(getFragmentManager(), "Load RTT transcript");
+            .createUiListener(getSupportFragmentManager(), "Load RTT transcript");
     handleIntent(getIntent());
   }
 
diff --git a/java/com/android/dialer/rtt/RttTranscriptAdapter.java b/java/com/android/dialer/rtt/RttTranscriptAdapter.java
index 52f9d84..13223db 100644
--- a/java/com/android/dialer/rtt/RttTranscriptAdapter.java
+++ b/java/com/android/dialer/rtt/RttTranscriptAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,13 @@
 package com.android.dialer.rtt;
 
 import android.content.Context;
-import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.glidephotomanager.PhotoInfo;
 
diff --git a/java/com/android/dialer/rtt/RttTranscriptDatabaseHelper.java b/java/com/android/dialer/rtt/RttTranscriptDatabaseHelper.java
index 934eedb..26498f3 100644
--- a/java/com/android/dialer/rtt/RttTranscriptDatabaseHelper.java
+++ b/java/com/android/dialer/rtt/RttTranscriptDatabaseHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.os.SystemClock;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.rtt.RttTranscriptContract.RttTranscriptColumn;
 
diff --git a/java/com/android/dialer/rtt/RttTranscriptMessageViewHolder.java b/java/com/android/dialer/rtt/RttTranscriptMessageViewHolder.java
index daa8136..839d617 100644
--- a/java/com/android/dialer/rtt/RttTranscriptMessageViewHolder.java
+++ b/java/com/android/dialer/rtt/RttTranscriptMessageViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,6 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.text.format.DateUtils;
 import android.view.Gravity;
 import android.view.View;
@@ -26,11 +26,15 @@
 import android.widget.LinearLayout;
 import android.widget.LinearLayout.LayoutParams;
 import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent;
 import com.android.dialer.glidephotomanager.PhotoInfo;
 
 /** ViewHolder class for RTT chat message bubble. */
-public class RttTranscriptMessageViewHolder extends ViewHolder {
+public class RttTranscriptMessageViewHolder extends RecyclerView.ViewHolder {
 
   private final TextView messageTextView;
   private final Resources resources;
diff --git a/java/com/android/dialer/rtt/RttTranscriptUtil.java b/java/com/android/dialer/rtt/RttTranscriptUtil.java
index 967a123..ae22c20 100644
--- a/java/com/android/dialer/rtt/RttTranscriptUtil.java
+++ b/java/com/android/dialer/rtt/RttTranscriptUtil.java
@@ -19,7 +19,9 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
-import android.support.annotation.WorkerThread;
+
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.database.Selection;
diff --git a/java/com/android/dialer/rtt/res/layout/activity_rtt_transcript.xml b/java/com/android/dialer/rtt/res/layout/activity_rtt_transcript.xml
index 772fde1..5fcfaa0 100644
--- a/java/com/android/dialer/rtt/res/layout/activity_rtt_transcript.xml
+++ b/java/com/android/dialer/rtt/res/layout/activity_rtt_transcript.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2018 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -25,7 +26,7 @@
       android:layout_width="match_parent"
       android:layout_height="wrap_content"/>
 
-  <android.support.v7.widget.RecyclerView
+  <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/rtt_recycler_view"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
diff --git a/java/com/android/dialer/searchfragment/common/AndroidManifest.xml b/java/com/android/dialer/searchfragment/common/AndroidManifest.xml
deleted file mode 100644
index 178cd83..0000000
--- a/java/com/android/dialer/searchfragment/common/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest  package="com.android.dialer.searchfragment.common"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/common/QueryBoldingUtil.java b/java/com/android/dialer/searchfragment/common/QueryBoldingUtil.java
index 5fbcc97..aa65a16 100644
--- a/java/com/android/dialer/searchfragment/common/QueryBoldingUtil.java
+++ b/java/com/android/dialer/searchfragment/common/QueryBoldingUtil.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,13 +19,16 @@
 
 import android.content.Context;
 import android.graphics.Typeface;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.text.SpannableString;
 import android.text.Spanned;
 import android.text.TextUtils;
 import android.text.style.StyleSpan;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
+
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -56,7 +60,7 @@
    * @return name with query bolded if query can be found in the name.
    */
   public static CharSequence getNameWithQueryBolded(
-      @Nullable String query, @NonNull String name, @NonNull Context context) {
+          @Nullable String query, @NonNull String name, @NonNull Context context) {
     if (TextUtils.isEmpty(query)) {
       return name;
     }
@@ -126,7 +130,7 @@
    * @return number with query bolded if query can be found in the number.
    */
   public static CharSequence getNumberWithQueryBolded(
-      @Nullable String query, @NonNull String number) {
+          @Nullable String query, @NonNull String number) {
     if (TextUtils.isEmpty(query) || !QueryFilteringUtil.numberMatchesNumberQuery(query, number)) {
       return number;
     }
diff --git a/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java b/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java
index 9add44c..85bd5b9 100644
--- a/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java
+++ b/java/com/android/dialer/searchfragment/common/QueryFilteringUtil.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,11 +18,14 @@
 package com.android.dialer.searchfragment.common;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v4.util.SimpleArrayMap;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.collection.SimpleArrayMap;
+
 import com.android.dialer.dialpadview.DialpadCharMappings;
+
 import java.util.regex.Pattern;
 
 /** Utility class for filtering, comparing and handling strings and queries. */
diff --git a/java/com/android/dialer/searchfragment/common/RowClickListener.java b/java/com/android/dialer/searchfragment/common/RowClickListener.java
index e82f3f7..2224ebc 100644
--- a/java/com/android/dialer/searchfragment/common/RowClickListener.java
+++ b/java/com/android/dialer/searchfragment/common/RowClickListener.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,6 @@
 
 package com.android.dialer.searchfragment.common;
 
-import com.android.dialer.dialercontact.DialerContact;
-
 /** Interface of possible actions that can be performed by search elements. */
 public interface RowClickListener {
 
@@ -34,10 +33,4 @@
    * @param ranking position in the list relative to the other elements
    */
   void placeVideoCall(String phoneNumber, int ranking);
-
-  /** Places a Duo video call. */
-  void placeDuoCall(String phoneNumber);
-
-  /** Opens the enriched calling/call composer interface. */
-  void openCallAndShare(DialerContact dialerContact);
 }
diff --git a/java/com/android/dialer/searchfragment/common/SearchCursor.java b/java/com/android/dialer/searchfragment/common/SearchCursor.java
index 7ad19aa..d1ff9d5 100644
--- a/java/com/android/dialer/searchfragment/common/SearchCursor.java
+++ b/java/com/android/dialer/searchfragment/common/SearchCursor.java
@@ -17,7 +17,8 @@
 package com.android.dialer.searchfragment.common;
 
 import android.database.Cursor;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
 
 /** Base cursor interface needed for all cursors used in search. */
 public interface SearchCursor extends Cursor {
diff --git a/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml b/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
index 4f8e305..8266720 100644
--- a/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
+++ b/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
   -->
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="@dimen/search_row_height"
@@ -62,9 +64,9 @@
       android:layout_height="@dimen/search_row_height"
       android:layout_alignParentEnd="true"
       android:padding="@dimen/call_to_action_padding"
-      android:tint="?colorIcon"
       android:visibility="gone"
-      android:scaleType="center"/>
+      android:scaleType="center"
+      app:tint="?colorIcon" />
 
   <ImageView
       android:id="@+id/work_icon"
@@ -74,7 +76,7 @@
       android:layout_centerVertical="true"
       android:padding="@dimen/call_to_action_padding"
       android:src="@drawable/ic_work_profile"
-      android:tint="?colorIcon"
       android:scaleType="centerInside"
-      android:visibility="gone"/>
-</RelativeLayout>
\ No newline at end of file
+      android:visibility="gone"
+      app:tint="?colorIcon" />
+</RelativeLayout>
diff --git a/java/com/android/dialer/searchfragment/common/res/values/dimens.xml b/java/com/android/dialer/searchfragment/common/res/values/dimens.xml
index fabb030..6e8f901 100644
--- a/java/com/android/dialer/searchfragment/common/res/values/dimens.xml
+++ b/java/com/android/dialer/searchfragment/common/res/values/dimens.xml
@@ -18,5 +18,4 @@
   <dimen name="search_row_height">56dp</dimen>
   <dimen name="search_photo_padding">8dp</dimen>
   <dimen name="call_to_action_padding">8dp</dimen>
-  <dimen name="search_text_padding_start">8dp</dimen>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/searchfragment/cp2/AndroidManifest.xml b/java/com/android/dialer/searchfragment/cp2/AndroidManifest.xml
deleted file mode 100644
index 8d2efca..0000000
--- a/java/com/android/dialer/searchfragment/cp2/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest  package="com.android.dialer.searchfragment.cp2"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java b/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java
index 23c0d6e..b350580 100644
--- a/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java
+++ b/java/com/android/dialer/searchfragment/cp2/ContactFilterCursor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -28,13 +29,16 @@
 import android.provider.ContactsContract.CommonDataKinds.Nickname;
 import android.provider.ContactsContract.CommonDataKinds.Organization;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.v4.util.ArraySet;
 import android.text.TextUtils;
 import android.util.ArrayMap;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+import androidx.collection.ArraySet;
+
 import com.android.dialer.searchfragment.common.Projections;
 import com.android.dialer.searchfragment.common.QueryFilteringUtil;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
@@ -127,7 +131,7 @@
     }
 
     // Sort the contacts back into the exact same order they were inside of {@code cursor}
-    Collections.sort(coalescedContacts, (o1, o2) -> compare(contactIdsToPosition, o1, o2));
+    coalescedContacts.sort((o1, o2) -> compare(contactIdsToPosition, o1, o2));
     MatrixCursor newCursor = new MatrixCursor(Projections.CP2_PROJECTION, coalescedContacts.size());
     for (Cp2Contact contact : coalescedContacts) {
       newCursor.addRow(contact.toCursorRow());
@@ -476,12 +480,12 @@
 
   @Override
   public void deactivate() {
-    cursor.deactivate();
+
   }
 
   @Override
   public boolean requery() {
-    return cursor.requery();
+    return false;
   }
 
   @Override
diff --git a/java/com/android/dialer/searchfragment/cp2/ContactTernarySearchTree.java b/java/com/android/dialer/searchfragment/cp2/ContactTernarySearchTree.java
index 88738e2..8cfe6f6 100644
--- a/java/com/android/dialer/searchfragment/cp2/ContactTernarySearchTree.java
+++ b/java/com/android/dialer/searchfragment/cp2/ContactTernarySearchTree.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,10 @@
 
 package com.android.dialer.searchfragment.cp2;
 
-import android.support.v4.util.ArraySet;
 import android.text.TextUtils;
+
+import androidx.collection.ArraySet;
+
 import java.util.Set;
 
 /** Ternary Search Tree for searching a list of contacts. */
diff --git a/java/com/android/dialer/searchfragment/cp2/Cp2Contact.java b/java/com/android/dialer/searchfragment/cp2/Cp2Contact.java
index 8e5e3e7..3f7077b 100644
--- a/java/com/android/dialer/searchfragment/cp2/Cp2Contact.java
+++ b/java/com/android/dialer/searchfragment/cp2/Cp2Contact.java
@@ -17,7 +17,9 @@
 package com.android.dialer.searchfragment.cp2;
 
 import android.database.Cursor;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.searchfragment.common.Projections;
 import com.google.auto.value.AutoValue;
 
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
index 11f5218..a0f2972 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,47 +23,41 @@
 import android.net.Uri;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
+
+import androidx.annotation.IntDef;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.dialercontact.DialerContact;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
 import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.searchfragment.common.Projections;
 import com.android.dialer.searchfragment.common.QueryBoldingUtil;
-import com.android.dialer.searchfragment.common.R;
 import com.android.dialer.searchfragment.common.RowClickListener;
 import com.android.dialer.searchfragment.common.SearchCursor;
 import com.android.dialer.widget.BidiTextView;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
 /** ViewHolder for a contact row. */
-public final class SearchContactViewHolder extends ViewHolder implements OnClickListener {
+public final class SearchContactViewHolder extends RecyclerView.ViewHolder
+        implements OnClickListener {
 
   /** IntDef for the different types of actions that can be shown. */
   @Retention(RetentionPolicy.SOURCE)
   @IntDef({
     CallToAction.NONE,
-    CallToAction.VIDEO_CALL,
-    CallToAction.DUO_CALL,
-    CallToAction.SHARE_AND_CALL
+    CallToAction.VIDEO_CALL
   })
   @interface CallToAction {
     int NONE = 0;
     int VIDEO_CALL = 1;
-    int DUO_CALL = 2;
-    int SHARE_AND_CALL = 3;
   }
 
   private final RowClickListener listener;
@@ -74,7 +69,6 @@
 
   private int position;
   private String number;
-  private DialerContact dialerContact;
   private @CallToAction int currentAction;
 
   public SearchContactViewHolder(View view, RowClickListener listener) {
@@ -93,7 +87,6 @@
    * at the cursors set position.
    */
   public void bind(SearchCursor cursor, String query) {
-    dialerContact = getDialerContact(context, cursor);
     position = cursor.getPosition();
     number = cursor.getString(Projections.PHONE_NUMBER);
     String name = cursor.getString(Projections.DISPLAY_NAME);
@@ -102,7 +95,7 @@
         TextUtils.isEmpty(label)
             ? number
             : context.getString(
-                com.android.dialer.contacts.resources.R.string.call_subject_type_and_number,
+                R.string.call_subject_type_and_number,
                 label,
                 number);
 
@@ -169,15 +162,6 @@
         callToActionView.setVisibility(View.GONE);
         callToActionView.setOnClickListener(null);
         break;
-      case CallToAction.SHARE_AND_CALL:
-        callToActionView.setVisibility(View.VISIBLE);
-        callToActionView.setImageDrawable(
-            context.getDrawable(com.android.dialer.contacts.resources.R.drawable.ic_phone_attach));
-        callToActionView.setContentDescription(
-            context.getString(R.string.description_search_call_and_share));
-        callToActionView.setOnClickListener(this);
-        break;
-      case CallToAction.DUO_CALL:
       case CallToAction.VIDEO_CALL:
         callToActionView.setVisibility(View.VISIBLE);
         callToActionView.setImageDrawable(
@@ -200,62 +184,16 @@
       return CallToAction.VIDEO_CALL;
     }
 
-    if (DuoComponent.get(context).getDuo().isReachable(context, number)) {
-      return CallToAction.DUO_CALL;
-    }
-
-    EnrichedCallManager manager = EnrichedCallComponent.get(context).getEnrichedCallManager();
-    EnrichedCallCapabilities capabilities = manager.getCapabilities(number);
-    if (capabilities != null && capabilities.isCallComposerCapable()) {
-      return CallToAction.SHARE_AND_CALL;
-    } else if (shouldRequestCapabilities(cursor, capabilities, query)) {
-      manager.requestCapabilities(number);
-    }
     return CallToAction.NONE;
   }
 
-  /**
-   * An RPC is initiated for each number we request capabilities for, so to limit the network load
-   * and latency on slow networks, we only want to request capabilities for potential contacts the
-   * user is interested in calling. The requirements are that:
-   *
-   * <ul>
-   *   <li>The search query must be 3 or more characters; OR
-   *   <li>There must be 4 or fewer contacts listed in the cursor.
-   * </ul>
-   */
-  private static boolean shouldRequestCapabilities(
-      SearchCursor cursor,
-      @Nullable EnrichedCallCapabilities capabilities,
-      @Nullable String query) {
-    if (capabilities != null) {
-      return false;
-    }
-
-    if (query != null && query.length() >= 3) {
-      return true;
-    }
-
-    // TODO(calderwoodra): implement SearchCursor#getHeaderCount
-    if (cursor.getCount() <= 5) { // 4 contacts + 1 header row element
-      return true;
-    }
-    return false;
-  }
-
   @Override
   public void onClick(View view) {
     if (view == callToActionView) {
       switch (currentAction) {
-        case CallToAction.SHARE_AND_CALL:
-          listener.openCallAndShare(dialerContact);
-          break;
         case CallToAction.VIDEO_CALL:
           listener.placeVideoCall(number, position);
           break;
-        case CallToAction.DUO_CALL:
-          listener.placeDuoCall(number);
-          break;
         case CallToAction.NONE:
         default:
           throw Assert.createIllegalStateFailException(
@@ -265,40 +203,4 @@
       listener.placeVoiceCall(number, position);
     }
   }
-
-  private static DialerContact getDialerContact(Context context, Cursor cursor) {
-    DialerContact.Builder contact = DialerContact.newBuilder();
-    String displayName = cursor.getString(Projections.DISPLAY_NAME);
-    String number = cursor.getString(Projections.PHONE_NUMBER);
-    Uri contactUri =
-        Contacts.getLookupUri(
-            cursor.getLong(Projections.CONTACT_ID), cursor.getString(Projections.LOOKUP_KEY));
-
-    contact
-        .setNumber(number)
-        .setPhotoId(cursor.getLong(Projections.PHOTO_ID))
-        .setContactType(LetterTileDrawable.TYPE_DEFAULT)
-        .setNameOrNumber(displayName)
-        .setNumberLabel(
-            Phone.getTypeLabel(
-                    context.getResources(),
-                    cursor.getInt(Projections.PHONE_TYPE),
-                    cursor.getString(Projections.PHONE_LABEL))
-                .toString());
-
-    String photoUri = cursor.getString(Projections.PHOTO_URI);
-    if (photoUri != null) {
-      contact.setPhotoUri(photoUri);
-    }
-
-    if (contactUri != null) {
-      contact.setContactUri(contactUri.toString());
-    }
-
-    if (!TextUtils.isEmpty(displayName)) {
-      contact.setDisplayNumber(number);
-    }
-
-    return contact.build();
-  }
 }
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java
index 7697e05..5c2b500 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursor.java
@@ -21,7 +21,10 @@
 import android.database.MatrixCursor;
 import android.database.MergeCursor;
 import android.provider.ContactsContract.Directory;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.searchfragment.common.SearchCursor;
 
 /**
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
index f4ed21e..d147605 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,16 +18,19 @@
 package com.android.dialer.searchfragment.cp2;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.database.MergeCursor;
 import android.net.Uri;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Directory;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.loader.content.CursorLoader;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.contacts.ContactsComponent;
 import com.android.dialer.contacts.displaypreference.ContactDisplayPreferences.DisplayOrder;
@@ -44,7 +48,7 @@
 
   /** @param query Contacts cursor will be filtered based on this query. */
   public SearchContactsCursorLoader(
-      Context context, @Nullable String query, boolean isRegularSearch) {
+          Context context, @Nullable String query, boolean isRegularSearch) {
     super(
         context,
         buildUri(query),
diff --git a/java/com/android/dialer/searchfragment/directories/AndroidManifest.xml b/java/com/android/dialer/searchfragment/directories/AndroidManifest.xml
deleted file mode 100644
index a7294cd..0000000
--- a/java/com/android/dialer/searchfragment/directories/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2018 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.searchfragment.directories"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
index 754e055..958ecb2 100644
--- a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
@@ -1,30 +1,33 @@
 /*
-
-* Copyright (C) 2017 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*      http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License
-*/
+ * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
 
 package com.android.dialer.searchfragment.directories;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.database.Cursor;
 import android.provider.ContactsContract;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+import androidx.loader.content.CursorLoader;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.util.PermissionsUtil;
 import com.google.auto.value.AutoValue;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java
index 29127ff..8a21295 100644
--- a/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,12 +24,14 @@
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
-import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.dialer.common.cp2.DirectoryUtils;
 import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.lettertile.LetterTileDrawable;
diff --git a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java
index b081de0..5706bc3 100644
--- a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,12 +21,15 @@
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.database.MergeCursor;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.cp2.DirectoryUtils;
 import com.android.dialer.searchfragment.common.SearchCursor;
 import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader.Directory;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -39,7 +43,6 @@
  * <p>This cursor merges them together with a header at the start of each cursor/list using {@link
  * Directory#getDisplayName()} as the header text.
  */
-@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
 public final class DirectoryContactsCursor extends MergeCursor implements SearchCursor {
 
   /**
@@ -57,7 +60,6 @@
    * empty, null or closed, this method returns null.
    */
   @Nullable
-  @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
   public static DirectoryContactsCursor newInstance(
       Context context, Cursor[] cursors, List<Directory> directories) {
     Assert.checkArgument(
@@ -96,7 +98,7 @@
       cursorList.add(createHeaderCursor(context, directory.getDisplayName(), directory.getId()));
       cursorList.add(cursor);
     }
-    return cursorList.toArray(new Cursor[cursorList.size()]);
+    return cursorList.toArray(new Cursor[0]);
   }
 
   private static MatrixCursor createHeaderCursor(Context context, String name, long id) {
diff --git a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java
index bf56a1c..d47ce4e 100644
--- a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,17 +18,19 @@
 package com.android.dialer.searchfragment.directories;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.net.Uri;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.NonNull;
+import androidx.loader.content.CursorLoader;
+
 import com.android.dialer.common.cp2.DirectoryUtils;
 import com.android.dialer.searchfragment.common.Projections;
 import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader.Directory;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -141,8 +144,7 @@
     return values;
   }
 
-  @VisibleForTesting
-  static Uri getContentFilterUri(String query, long directoryId) {
+  private static Uri getContentFilterUri(String query, long directoryId) {
     return ENTERPRISE_CONTENT_FILTER_URI
         .buildUpon()
         .appendPath(query)
diff --git a/java/com/android/dialer/searchfragment/list/AndroidManifest.xml b/java/com/android/dialer/searchfragment/list/AndroidManifest.xml
deleted file mode 100644
index e0890cc..0000000
--- a/java/com/android/dialer/searchfragment/list/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest  package="com.android.dialer.searchfragment.list"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/list/HeaderViewHolder.java b/java/com/android/dialer/searchfragment/list/HeaderViewHolder.java
index dd35b13..b1d3301 100644
--- a/java/com/android/dialer/searchfragment/list/HeaderViewHolder.java
+++ b/java/com/android/dialer/searchfragment/list/HeaderViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,13 @@
 
 package com.android.dialer.searchfragment.list;
 
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.widget.TextView;
 
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
+
 /** ViewHolder for header rows in {@link NewSearchFragment}. */
 final class HeaderViewHolder extends RecyclerView.ViewHolder {
 
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
index 809f917..8998d2b 100644
--- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,19 +19,8 @@
 
 import static android.Manifest.permission.ACCESS_FINE_LOCATION;
 
-import android.app.Fragment;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.Intent;
-import android.content.Loader;
-import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
@@ -41,9 +31,20 @@
 import android.view.animation.Interpolator;
 import android.widget.FrameLayout;
 import android.widget.FrameLayout.LayoutParams;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+import androidx.preference.PreferenceManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
+import com.android.dialer.R;
 import com.android.dialer.animation.AnimUtils;
-import com.android.dialer.callcomposer.CallComposerActivity;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.callintent.CallSpecificAppData;
@@ -51,11 +52,6 @@
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.dialercontact.DialerContact;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager.CapabilitiesListener;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.searchfragment.common.RowClickListener;
 import com.android.dialer.searchfragment.common.SearchCursor;
@@ -66,11 +62,11 @@
 import com.android.dialer.searchfragment.list.SearchActionViewHolder.Action;
 import com.android.dialer.searchfragment.nearbyplaces.NearbyPlacesCursorLoader;
 import com.android.dialer.util.CallUtil;
-import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.ViewUtil;
 import com.android.dialer.widget.EmptyContentView;
 import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -78,24 +74,17 @@
 
 /** Fragment used for searching contacts. */
 public final class NewSearchFragment extends Fragment
-    implements LoaderCallbacks<Cursor>,
+    implements LoaderManager.LoaderCallbacks<Cursor>,
         OnEmptyViewActionButtonClickedListener,
-        CapabilitiesListener,
         OnTouchListener,
         RowClickListener {
 
   // Since some of our queries can generate network requests, we should delay them until the user
   // stops typing to prevent generating too much network traffic.
   private static final int NETWORK_SEARCH_DELAY_MILLIS = 300;
-  // To prevent constant capabilities updates refreshing the adapter, we want to add a delay between
-  // updates so they are bundled together
-  private static final int ENRICHED_CALLING_CAPABILITIES_UPDATED_DELAY = 400;
 
   private static final String KEY_LOCATION_PROMPT_DISMISSED = "search_location_prompt_dismissed";
 
-  @VisibleForTesting public static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
-  @VisibleForTesting private static final int LOCATION_PERMISSION_REQUEST_CODE = 2;
-
   private static final int CONTACTS_LOADER_ID = 0;
   private static final int NEARBY_PLACES_LOADER_ID = 1;
 
@@ -115,7 +104,6 @@
   // for actions to add contact or send sms.
   private String rawNumber;
   private CallInitiationType.Type callInitiationType = CallInitiationType.Type.UNKNOWN_INITIATION;
-  private boolean directoriesDisabledForTesting;
 
   // Information about all local & remote directories (including ID, display name, etc, but not
   // the contacts in them).
@@ -123,25 +111,45 @@
   private final Runnable loaderCp2ContactsRunnable =
       () -> {
         if (getHost() != null) {
-          getLoaderManager().restartLoader(CONTACTS_LOADER_ID, null, this);
+          LoaderManager.getInstance(this).restartLoader(CONTACTS_LOADER_ID, null, this);
         }
       };
   private final Runnable loadNearbyPlacesRunnable =
       () -> {
         if (getHost() != null) {
-          getLoaderManager().restartLoader(NEARBY_PLACES_LOADER_ID, null, this);
+          LoaderManager.getInstance(this).restartLoader(NEARBY_PLACES_LOADER_ID, null, this);
         }
       };
   private final Runnable loadDirectoryContactsRunnable =
       () -> {
         if (getHost() != null) {
-          getLoaderManager().restartLoader(DIRECTORY_CONTACTS_LOADER_ID, null, this);
+          LoaderManager.getInstance(this).restartLoader(DIRECTORY_CONTACTS_LOADER_ID, null, this);
         }
       };
   private final Runnable capabilitiesUpdatedRunnable = () -> adapter.notifyDataSetChanged();
 
   private Runnable updatePositionRunnable;
 
+  private final ActivityResultLauncher<String[]> contactPermissionLauncher =
+          registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(),
+                  grantResults -> {
+            if (grantResults.size() >= 1 && grantResults.values().iterator().next()) {
+              // Force a refresh of the data since we were missing the permission before this.
+              emptyContentView.setVisibility(View.GONE);
+              initLoaders();
+            }
+          });
+
+  private final ActivityResultLauncher<String[]> locationPermissionLauncher =
+          registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(),
+                  grantResults -> {
+            if (grantResults.size() >= 1 && grantResults.values().iterator().next()) {
+              // Force a refresh of the data since we were missing the permission before this.
+              loadNearbyPlacesCursor();
+              adapter.hideLocationPermissionRequest();
+            }
+          });
+
   public static NewSearchFragment newInstance() {
     return new NewSearchFragment();
   }
@@ -191,7 +199,7 @@
   }
 
   private void initLoaders() {
-    getLoaderManager().initLoader(CONTACTS_LOADER_ID, null, this);
+    LoaderManager.getInstance(this).initLoader(CONTACTS_LOADER_ID, null, this);
     loadDirectoriesCursor();
   }
 
@@ -263,11 +271,6 @@
     this.rawNumber = rawNumber;
   }
 
-  @VisibleForTesting
-  public String getRawNumber() {
-    return rawNumber;
-  }
-
   public void setQuery(String query, CallInitiationType.Type callInitiationType) {
     this.query = query;
     this.callInitiationType = callInitiationType;
@@ -289,6 +292,7 @@
 
     if (getContext() == null
         || PermissionsUtil.hasLocationPermissions(getContext())
+        || !PhoneDirectoryExtenderAccessor.get(getContext()).isEnabled(getContext())
         || hasBeenDismissed()
         || !isRegularSearch()) {
       adapter.hideLocationPermissionRequest();
@@ -343,24 +347,6 @@
   }
 
   @Override
-  public void onRequestPermissionsResult(
-      int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
-    if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE) {
-      if (grantResults.length >= 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
-        // Force a refresh of the data since we were missing the permission before this.
-        emptyContentView.setVisibility(View.GONE);
-        initLoaders();
-      }
-    } else if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
-      if (grantResults.length >= 1 && PackageManager.PERMISSION_GRANTED == grantResults[0]) {
-        // Force a refresh of the data since we were missing the permission before this.
-        loadNearbyPlacesCursor();
-        adapter.hideLocationPermissionRequest();
-      }
-    }
-  }
-
-  @Override
   public void onEmptyViewActionButtonClicked() {
     String[] deniedPermissions =
         PermissionsUtil.getPermissionsCurrentlyDenied(
@@ -370,15 +356,13 @@
           "NewSearchFragment.onEmptyViewActionButtonClicked",
           "Requesting permissions: " + Arrays.toString(deniedPermissions));
       FragmentUtils.getParentUnsafe(this, SearchFragmentListener.class).requestingPermission();
-      requestPermissions(deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
+      contactPermissionLauncher.launch(deniedPermissions);
     }
   }
 
   /** Loads info about all directories (local & remote). */
   private void loadDirectoriesCursor() {
-    if (!directoriesDisabledForTesting) {
-      getLoaderManager().initLoader(DIRECTORIES_LOADER_ID, null, this);
-    }
+    LoaderManager.getInstance(this).initLoader(DIRECTORIES_LOADER_ID, null, this);
   }
 
   /**
@@ -387,10 +371,6 @@
    * <p>Should not be called before finishing loading info about all directories (local & remote).
    */
   private void loadDirectoryContactsCursors() {
-    if (directoriesDisabledForTesting) {
-      return;
-    }
-
     // Cancel existing load if one exists.
     ThreadUtil.getUiThreadHandler().removeCallbacks(loadDirectoryContactsRunnable);
     ThreadUtil.getUiThreadHandler()
@@ -439,10 +419,9 @@
         PermissionsUtil.getPermissionsCurrentlyDenied(
             getContext(), PermissionsUtil.allLocationGroupPermissionsUsedInDialer);
     FragmentUtils.getParentUnsafe(this, SearchFragmentListener.class).requestingPermission();
-    requestPermissions(deniedPermissions, LOCATION_PERMISSION_REQUEST_CODE);
+    locationPermissionLauncher.launch(deniedPermissions);
   }
 
-  @VisibleForTesting
   public void dismissLocationPermission() {
     PreferenceManager.getDefaultSharedPreferences(getContext())
         .edit()
@@ -459,33 +438,7 @@
   @Override
   public void onResume() {
     super.onResume();
-    EnrichedCallComponent.get(getContext())
-        .getEnrichedCallManager()
-        .registerCapabilitiesListener(this);
-    getLoaderManager().restartLoader(CONTACTS_LOADER_ID, null, this);
-  }
-
-  @Override
-  public void onPause() {
-    super.onPause();
-    EnrichedCallComponent.get(getContext())
-        .getEnrichedCallManager()
-        .unregisterCapabilitiesListener(this);
-  }
-
-  @Override
-  public void onCapabilitiesUpdated() {
-    ThreadUtil.getUiThreadHandler().removeCallbacks(capabilitiesUpdatedRunnable);
-    ThreadUtil.getUiThreadHandler()
-        .postDelayed(capabilitiesUpdatedRunnable, ENRICHED_CALLING_CAPABILITIES_UPDATED_DELAY);
-  }
-
-  // Currently, setting up multiple FakeContentProviders doesn't work and results in this fragment
-  // being untestable while it can query multiple datasources. This is a temporary fix.
-  // TODO(a bug): Remove this method and test this fragment with multiple data sources
-  @VisibleForTesting
-  public void setDirectoriesDisabled(boolean disabled) {
-    directoriesDisabledForTesting = disabled;
+    LoaderManager.getInstance(this).restartLoader(CONTACTS_LOADER_ID, null, this);
   }
 
   /**
@@ -549,8 +502,6 @@
     CallSpecificAppData callSpecificAppData =
         CallSpecificAppData.newBuilder()
             .setCallInitiationType(callInitiationType)
-            .setPositionOfSelectedSearchResult(position)
-            .setCharactersInSearchString(query == null ? 0 : query.length())
             .setAllowAssistedDialing(true)
             .build();
     PreCall.start(
@@ -561,24 +512,6 @@
     FragmentUtils.getParentUnsafe(this, SearchFragmentListener.class).onCallPlacedFromSearch();
   }
 
-  @Override
-  public void placeDuoCall(String phoneNumber) {
-    Logger.get(getContext())
-        .logImpression(DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FROM_SEARCH);
-    PreCall.start(
-        getContext(),
-        new CallIntentBuilder(phoneNumber, CallInitiationType.Type.REGULAR_SEARCH)
-            .setIsVideoCall(true)
-            .setIsDuoCall(true));
-    FragmentUtils.getParentUnsafe(this, SearchFragmentListener.class).onCallPlacedFromSearch();
-  }
-
-  @Override
-  public void openCallAndShare(DialerContact contact) {
-    Intent intent = CallComposerActivity.newIntent(getContext(), contact);
-    DialerUtils.startActivityWithErrorToast(getContext(), intent);
-  }
-
   /** Callback to {@link NewSearchFragment}'s parent to be notified of important events. */
   public interface SearchFragmentListener {
 
diff --git a/java/com/android/dialer/searchfragment/list/SearchActionViewHolder.java b/java/com/android/dialer/searchfragment/list/SearchActionViewHolder.java
index 7315e89..b8e862b 100644
--- a/java/com/android/dialer/searchfragment/list/SearchActionViewHolder.java
+++ b/java/com/android/dialer/searchfragment/list/SearchActionViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,20 +19,21 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.IntDef;
-import android.support.annotation.StringRes;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.ImageView;
 import android.widget.TextView;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.StringRes;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.searchfragment.common.RowClickListener;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.util.IntentUtil;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -113,24 +115,16 @@
     }
   }
 
-  @VisibleForTesting
-  @Action
-  int getAction() {
-    return action;
-  }
-
   @Override
   public void onClick(View v) {
     switch (action) {
       case Action.ADD_TO_CONTACT:
-        Logger.get(context).logImpression(DialerImpression.Type.ADD_TO_A_CONTACT_FROM_DIALPAD);
         Intent intent = IntentUtil.getAddToExistingContactIntent(query);
         @StringRes int errorString = R.string.add_contact_not_available;
         DialerUtils.startActivityWithErrorToast(context, intent, errorString);
         break;
 
       case Action.CREATE_NEW_CONTACT:
-        Logger.get(context).logImpression(DialerImpression.Type.CREATE_NEW_CONTACT_FROM_DIALPAD);
         intent = IntentUtil.getNewContactIntent(query);
         DialerUtils.startActivityWithErrorToast(context, intent);
         break;
diff --git a/java/com/android/dialer/searchfragment/list/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
index 74b60c6..4dc222f 100644
--- a/java/com/android/dialer/searchfragment/list/SearchAdapter.java
+++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,15 +18,17 @@
 package com.android.dialer.searchfragment.list;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
+
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.searchfragment.common.RowClickListener;
 import com.android.dialer.searchfragment.common.SearchCursor;
@@ -33,10 +36,10 @@
 import com.android.dialer.searchfragment.directories.DirectoryContactViewHolder;
 import com.android.dialer.searchfragment.list.SearchCursorManager.RowType;
 import com.android.dialer.searchfragment.nearbyplaces.NearbyPlaceViewHolder;
+
 import java.util.List;
 
 /** RecyclerView adapter for {@link NewSearchFragment}. */
-@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
 public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
 
   private final SearchCursorManager searchCursorManager;
@@ -48,9 +51,8 @@
   private String rawNumber;
   private OnClickListener allowClickListener;
   private OnClickListener dismissClickListener;
-  private RowClickListener rowClickListener;
+  private final RowClickListener rowClickListener;
 
-  @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
   public SearchAdapter(
       Context context, SearchCursorManager searchCursorManager, RowClickListener rowClickListener) {
     this.context = context;
diff --git a/java/com/android/dialer/searchfragment/list/SearchCursorManager.java b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
index 364e97b..9b4e865 100644
--- a/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
+++ b/java/com/android/dialer/searchfragment/list/SearchCursorManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,11 +18,13 @@
 package com.android.dialer.searchfragment.list;
 
 import android.database.MatrixCursor;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.searchfragment.common.SearchCursor;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
@@ -48,7 +51,6 @@
  *   <li>{@link #getRowType(int)}
  * </ul>
  */
-@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
 public final class SearchCursorManager {
 
   /** IntDef for the different types of rows that can be shown when searching. */
@@ -101,11 +103,7 @@
       return false;
     }
 
-    if (cursor != null) {
-      contactsCursor = cursor;
-    } else {
-      contactsCursor = null;
-    }
+    contactsCursor = cursor;
     return true;
   }
 
@@ -115,11 +113,7 @@
       return false;
     }
 
-    if (cursor != null) {
-      nearbyPlacesCursor = cursor;
-    } else {
-      nearbyPlacesCursor = null;
-    }
+    nearbyPlacesCursor = cursor;
     return true;
   }
 
@@ -138,11 +132,7 @@
       return false;
     }
 
-    if (cursor != null) {
-      corpDirectoryCursor = cursor;
-    } else {
-      corpDirectoryCursor = null;
-    }
+    corpDirectoryCursor = cursor;
     return true;
   }
 
diff --git a/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml b/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml
index 3037067..919eea7 100644
--- a/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml
+++ b/java/com/android/dialer/searchfragment/list/res/layout/fragment_search.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -19,7 +20,7 @@
     android:layout_height="match_parent"
     android:layout_width="match_parent">
 
-  <android.support.v7.widget.RecyclerView
+  <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/recycler_view"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
diff --git a/java/com/android/dialer/searchfragment/list/res/layout/search_action_layout.xml b/java/com/android/dialer/searchfragment/list/res/layout/search_action_layout.xml
index b6e3048..d4bbda8 100644
--- a/java/com/android/dialer/searchfragment/list/res/layout/search_action_layout.xml
+++ b/java/com/android/dialer/searchfragment/list/res/layout/search_action_layout.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -15,6 +16,7 @@
   ~ limitations under the License
   -->
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="48dp">
@@ -26,7 +28,7 @@
       android:layout_marginStart="8dp"
       android:layout_gravity="center_vertical|start"
       android:padding="12dp"
-      android:tint="?android:attr/colorPrimary"/>
+      app:tint="?colorIcon" />
 
   <TextView
       android:id="@+id/search_action_text"
@@ -36,4 +38,4 @@
       android:layout_marginEnd="16dp"
       android:layout_gravity="center_vertical"
       style="@style/Dialer.TextAppearance.Primary"/>
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-af/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-af/strings.xml
index 8e109ca..60ae999 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-af/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-af/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Skakel die Kontakte-toestemmings aan om jou kontakte te deursoek.</string>
-  <string name="search_shortcut_create_new_contact">Skep nuwe kontak</string>
-  <string name="search_shortcut_add_to_contact">Voeg by \'n kontak</string>
-  <string name="search_shortcut_send_sms_message">Stuur SMS</string>
-  <string name="search_shortcut_make_video_call">Maak video-oproep</string>
   <string name="search_shortcut_make_voice_call">Bel %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-am/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-am/strings.xml
index 874f832..e7c4836 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-am/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-am/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">እውቂያዎችዎን ለመፈለግ፣ የእውቂያዎች ፈቃዶችን ያብሩ።</string>
-  <string name="search_shortcut_create_new_contact">አዲስ እውቂያ ይፍጠሩ</string>
-  <string name="search_shortcut_add_to_contact">ወደ እውቂያ አክል</string>
-  <string name="search_shortcut_send_sms_message">ኤስኤምኤስ ላክ</string>
-  <string name="search_shortcut_make_video_call">የቪዲዮ ጥሪ አድርግ</string>
   <string name="search_shortcut_make_voice_call">ወደ %1$s ይደውሉ</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ar/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ar/strings.xml
index 48ac855..beadf4a 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ar/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ar/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">عليك تشغيل أذونات جهات الاتصال للبحث عنا</string>
-  <string name="search_shortcut_create_new_contact">إنشاء جهة اتصال جديدة</string>
-  <string name="search_shortcut_add_to_contact">إضافة إلى جهة اتصال</string>
-  <string name="search_shortcut_send_sms_message">‏إرسال رسالة قصيرة SMS</string>
-  <string name="search_shortcut_make_video_call">إجراء مكالمة فيديو</string>
   <string name="search_shortcut_make_voice_call">الاتصال بالرقم %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-az/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-az/strings.xml
index da7c82d..9226518 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-az/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-az/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Kontaktlarınızı axtarmaq üçün Kontakt icazələrini aktiv edin.</string>
-  <string name="search_shortcut_create_new_contact">Yeni kontakt yaradın</string>
-  <string name="search_shortcut_add_to_contact">Kontakta əlavə edin</string>
-  <string name="search_shortcut_send_sms_message">SMS göndərin</string>
-  <string name="search_shortcut_make_video_call">Video zəng edin</string>
   <string name="search_shortcut_make_voice_call">%1$s nömrəsinə zəng edin</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-b+sr+Latn/strings.xml
index 1d7cdd2..a2945f7 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-b+sr+Latn/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Da biste pretražili kontakte, uključite dozvole za Kontakte.</string>
-  <string name="search_shortcut_create_new_contact">Napravi novi kontakt</string>
-  <string name="search_shortcut_add_to_contact">Dodaj u kontakt</string>
-  <string name="search_shortcut_send_sms_message">Pošalji SMS</string>
-  <string name="search_shortcut_make_video_call">Uputi video poziv</string>
   <string name="search_shortcut_make_voice_call">Pozovi %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-be/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-be/strings.xml
index f903830..d8e7e88 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-be/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-be/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Каб шукаць свае кантакты, уключыце дазвол для Кантактаў.</string>
-  <string name="search_shortcut_create_new_contact">Новы кантакт</string>
-  <string name="search_shortcut_add_to_contact">Дадаць у кантакт</string>
-  <string name="search_shortcut_send_sms_message">Адправiць SMS</string>
-  <string name="search_shortcut_make_video_call">Зрабіць відэавыклік</string>
   <string name="search_shortcut_make_voice_call">Выклікаць %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-bg/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-bg/strings.xml
index 483c11e..50b583f 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-bg/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-bg/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">За да търсите в контактите си, включете разрешенията за тях.</string>
-  <string name="search_shortcut_create_new_contact">Създаване на нов контакт</string>
-  <string name="search_shortcut_add_to_contact">Добавяне към контакт</string>
-  <string name="search_shortcut_send_sms_message">Изпращане на SMS</string>
-  <string name="search_shortcut_make_video_call">Провеждане на видеообаждане</string>
   <string name="search_shortcut_make_voice_call">Обаждане на %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-bn/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-bn/strings.xml
index 0c093f1..bad3f2f 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-bn/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-bn/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">আপনার পরিচিতিগুলি সার্চ করতে, পরিচিতির অনুমতিগুলি চালু করুন।</string>
-  <string name="search_shortcut_create_new_contact">নতুন পরিচিতি বানান</string>
-  <string name="search_shortcut_add_to_contact">একটি পরিচিতিতে যোগ করুন</string>
-  <string name="search_shortcut_send_sms_message">SMS পাঠান</string>
-  <string name="search_shortcut_make_video_call">ভিডিও কল করুন</string>
   <string name="search_shortcut_make_voice_call">%1$s এ কল করুন</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-bs/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-bs/strings.xml
index c5b39a2..6db3525 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-bs/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-bs/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Da pretražujete kontakte, uključite odobrenja za Kontakte.</string>
-  <string name="search_shortcut_create_new_contact">Izrada novog kontakta</string>
-  <string name="search_shortcut_add_to_contact">Dodaj u kontakt</string>
-  <string name="search_shortcut_send_sms_message">Pošalji SMS</string>
-  <string name="search_shortcut_make_video_call">Uputi video poziv</string>
   <string name="search_shortcut_make_voice_call">Pozvati %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ca/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ca/strings.xml
index 431dbdc..04e72df 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ca/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ca/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Activa els permisos de Contactes per cercar els teus contactes.</string>
-  <string name="search_shortcut_create_new_contact">Crea un contacte</string>
-  <string name="search_shortcut_add_to_contact">Afegeix a un contacte</string>
-  <string name="search_shortcut_send_sms_message">Envia SMS</string>
-  <string name="search_shortcut_make_video_call">Fes una videotrucada</string>
   <string name="search_shortcut_make_voice_call">Truca al %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-cs/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-cs/strings.xml
index 0e282b4..a6ee825 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-cs/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-cs/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Chcete-li vyhledat kontakty, zapněte oprávnění Kontakty.</string>
-  <string name="search_shortcut_create_new_contact">Vytvořit nový kontakt</string>
-  <string name="search_shortcut_add_to_contact">Přidat ke kontaktu</string>
-  <string name="search_shortcut_send_sms_message">Odeslat SMS</string>
-  <string name="search_shortcut_make_video_call">Uskutečnit videohovor</string>
   <string name="search_shortcut_make_voice_call">Zavolat na číslo %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-da/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-da/strings.xml
index 21ba83c..a786986 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-da/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-da/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Slå tilladelser til Kontaktpersoner til for at søge i dine kontaktpersoner.</string>
-  <string name="search_shortcut_create_new_contact">Opret ny kontaktperson</string>
-  <string name="search_shortcut_add_to_contact">Føj til en kontaktperson</string>
-  <string name="search_shortcut_send_sms_message">Send sms</string>
-  <string name="search_shortcut_make_video_call">Foretag videoopkald</string>
   <string name="search_shortcut_make_voice_call">Ring til %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-de/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-de/strings.xml
index 1b99258..13dfa28 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-de/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-de/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Aktiviere die Berechtigungen \"Kontakte\", um deine Kontakte zu suchen.</string>
-  <string name="search_shortcut_create_new_contact">Neuen Kontakt erstellen</string>
-  <string name="search_shortcut_add_to_contact">Zu Kontakt hinzufügen</string>
-  <string name="search_shortcut_send_sms_message">SMS senden</string>
-  <string name="search_shortcut_make_video_call">Videoanruf starten</string>
   <string name="search_shortcut_make_voice_call">%1$s anrufen</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-el/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-el/strings.xml
index 92c8ae1..6be5536 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-el/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-el/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Για να κάνετε αναζήτηση στις επαφές σας, ενεργοποιήστε τις άδειες \"Επαφές\".</string>
-  <string name="search_shortcut_create_new_contact">Δημιουργία νέας επαφής</string>
-  <string name="search_shortcut_add_to_contact">Προσθήκη σε μια επαφή</string>
-  <string name="search_shortcut_send_sms_message">Αποστολή SMS</string>
-  <string name="search_shortcut_make_video_call">Πραγματοποίηση βιντεοκλήσης</string>
   <string name="search_shortcut_make_voice_call">Κλήση %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-en-rAU/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-en-rAU/strings.xml
index 4987cbe..21d5c81 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-en-rAU/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">To search your contacts, turn on the Contacts permissions.</string>
-  <string name="search_shortcut_create_new_contact">Create new contact</string>
-  <string name="search_shortcut_add_to_contact">Add to a contact</string>
-  <string name="search_shortcut_send_sms_message">Send SMS</string>
-  <string name="search_shortcut_make_video_call">Make video call</string>
   <string name="search_shortcut_make_voice_call">Call %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-en-rGB/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-en-rGB/strings.xml
index 4987cbe..21d5c81 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-en-rGB/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">To search your contacts, turn on the Contacts permissions.</string>
-  <string name="search_shortcut_create_new_contact">Create new contact</string>
-  <string name="search_shortcut_add_to_contact">Add to a contact</string>
-  <string name="search_shortcut_send_sms_message">Send SMS</string>
-  <string name="search_shortcut_make_video_call">Make video call</string>
   <string name="search_shortcut_make_voice_call">Call %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-en-rIN/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-en-rIN/strings.xml
index 4987cbe..21d5c81 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-en-rIN/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">To search your contacts, turn on the Contacts permissions.</string>
-  <string name="search_shortcut_create_new_contact">Create new contact</string>
-  <string name="search_shortcut_add_to_contact">Add to a contact</string>
-  <string name="search_shortcut_send_sms_message">Send SMS</string>
-  <string name="search_shortcut_make_video_call">Make video call</string>
   <string name="search_shortcut_make_voice_call">Call %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-es-rUS/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-es-rUS/strings.xml
index 8565eb9..5737377 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-es-rUS/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Para buscar contactos, activa el permiso Contactos.</string>
-  <string name="search_shortcut_create_new_contact">Crear contacto nuevo</string>
-  <string name="search_shortcut_add_to_contact">Agregar a un contacto</string>
-  <string name="search_shortcut_send_sms_message">Enviar SMS</string>
-  <string name="search_shortcut_make_video_call">Realizar videollamada</string>
   <string name="search_shortcut_make_voice_call">Llamar a %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-es/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-es/strings.xml
index ef00fa5..0788bcc 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-es/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-es/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Para buscar tus contactos, activa los permisos de Contactos.</string>
-  <string name="search_shortcut_create_new_contact">Crear nuevo contacto</string>
-  <string name="search_shortcut_add_to_contact">Añadir a un contacto</string>
-  <string name="search_shortcut_send_sms_message">Enviar SMS</string>
-  <string name="search_shortcut_make_video_call">Hacer videollamada</string>
   <string name="search_shortcut_make_voice_call">Llamar al %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-et/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-et/strings.xml
index b06de58..2c1416a 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-et/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-et/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Kontaktide otsimiseks lülitage sisse kontaktiload.</string>
-  <string name="search_shortcut_create_new_contact">Loo uus kontakt</string>
-  <string name="search_shortcut_add_to_contact">Lisa kontaktile</string>
-  <string name="search_shortcut_send_sms_message">Saada SMS</string>
-  <string name="search_shortcut_make_video_call">Videokõne tegemine</string>
   <string name="search_shortcut_make_voice_call">Helista numbrile %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-eu/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-eu/strings.xml
index 30d435b..48772f5 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-eu/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-eu/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Kontaktuak bilatzeko, eman kontaktuak atzitzeko baimena.</string>
-  <string name="search_shortcut_create_new_contact">Sortu kontaktua</string>
-  <string name="search_shortcut_add_to_contact">Gehitu kontaktuetan</string>
-  <string name="search_shortcut_send_sms_message">Bidali SMS mezua</string>
-  <string name="search_shortcut_make_video_call">Egin bideo-deia</string>
   <string name="search_shortcut_make_voice_call">Deitu %1$s zenbakira</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-fa/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-fa/strings.xml
index 94e65e4..43476a9 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-fa/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-fa/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">برای جستجوی مخاطبینتان، مجوزهای مخاطبین را روشن کنید.</string>
-  <string name="search_shortcut_create_new_contact">ایجاد مخاطب جدید</string>
-  <string name="search_shortcut_add_to_contact">افزودن به مخاطب</string>
-  <string name="search_shortcut_send_sms_message">ارسال پیامک</string>
-  <string name="search_shortcut_make_video_call">برقراری تماس ویدئویی</string>
   <string name="search_shortcut_make_voice_call">تماس با %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-fi/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-fi/strings.xml
index 5855165..8071b13 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-fi/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-fi/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Jos haluat hakea kontaktejasi, ota käyttöön kontaktien käyttöoikeudet.</string>
-  <string name="search_shortcut_create_new_contact">Luo uusi yhteystieto</string>
-  <string name="search_shortcut_add_to_contact">Lisää yhteystietoihin</string>
-  <string name="search_shortcut_send_sms_message">Lähetä tekstiviesti</string>
-  <string name="search_shortcut_make_video_call">Soita videopuhelu</string>
   <string name="search_shortcut_make_voice_call">Soita numeroon %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-fr-rCA/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-fr-rCA/strings.xml
index d156bcc..51d973b 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-fr-rCA/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Pour rechercher vos contacts, activez les autorisations Contacts.</string>
-  <string name="search_shortcut_create_new_contact">Créer un contact</string>
-  <string name="search_shortcut_add_to_contact">Ajouter à un contact</string>
-  <string name="search_shortcut_send_sms_message">Envoyer un texto</string>
-  <string name="search_shortcut_make_video_call">Faire un appel vidéo</string>
   <string name="search_shortcut_make_voice_call">Composer le %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-fr/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-fr/strings.xml
index 2badd0c..da14f96 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-fr/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-fr/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Pour effectuer une recherche dans vos contacts, activez les autorisations de l\'application Contacts.</string>
-  <string name="search_shortcut_create_new_contact">Créer un contact</string>
-  <string name="search_shortcut_add_to_contact">Ajouter à un contact</string>
-  <string name="search_shortcut_send_sms_message">Envoyer un SMS</string>
-  <string name="search_shortcut_make_video_call">Passer un appel vidéo</string>
   <string name="search_shortcut_make_voice_call">Composer le %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-gl/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-gl/strings.xml
index ece496d..07e9d7f 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-gl/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-gl/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Para buscar os teus contactos, activa os permisos de Contactos.</string>
-  <string name="search_shortcut_create_new_contact">Crear novo contacto</string>
-  <string name="search_shortcut_add_to_contact">Engadir a un contacto</string>
-  <string name="search_shortcut_send_sms_message">Enviar SMS</string>
-  <string name="search_shortcut_make_video_call">Realizar unha videochamada</string>
   <string name="search_shortcut_make_voice_call">Chamar ao %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-gu/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-gu/strings.xml
index b245a83..1e334a6 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-gu/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-gu/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">તમારા સંપર્કો શોધવા માટે, સંપર્કોની પરવાનગીઓ ચાલુ કરો.</string>
-  <string name="search_shortcut_create_new_contact">નવો સંપર્ક બનાવો</string>
-  <string name="search_shortcut_add_to_contact">સંપર્કમાં ઉમેરો</string>
-  <string name="search_shortcut_send_sms_message">SMS મોકલો</string>
-  <string name="search_shortcut_make_video_call">વિડિઓ કૉલ કરો</string>
   <string name="search_shortcut_make_voice_call">%1$sને કૉલ કરો</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-hi/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-hi/strings.xml
index 4690e30..9f20b86 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-hi/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-hi/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">अपने संपर्कों की खोज करने के लिए, संपर्क अनुमतियों को चालू करें.</string>
-  <string name="search_shortcut_create_new_contact">नया संपर्क बनाएं</string>
-  <string name="search_shortcut_add_to_contact">किसी संपर्क में जोड़ें</string>
-  <string name="search_shortcut_send_sms_message">SMS भेजें</string>
-  <string name="search_shortcut_make_video_call">वीडियो कॉल करें</string>
   <string name="search_shortcut_make_voice_call">%1$s पर कॉल करें</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-hr/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-hr/strings.xml
index 52f6da6..8daac52 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-hr/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-hr/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Da biste pretraživali kontakte, uključite dopuštenja za kontakte.</string>
-  <string name="search_shortcut_create_new_contact">Izrada novog kontakta</string>
-  <string name="search_shortcut_add_to_contact">Dodaj kontaktu</string>
-  <string name="search_shortcut_send_sms_message">Pošalji SMS</string>
-  <string name="search_shortcut_make_video_call">Uputite videopoziv</string>
   <string name="search_shortcut_make_voice_call">Poziv na broj %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-hu/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-hu/strings.xml
index 01e1e01..6f23519 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-hu/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-hu/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">A névjegyek kereséséhez engedélyezze a névjegyhozzáférést.</string>
-  <string name="search_shortcut_create_new_contact">Új névjegy létrehozása</string>
-  <string name="search_shortcut_add_to_contact">Hozzáadás névjegyhez</string>
-  <string name="search_shortcut_send_sms_message">SMS küldése</string>
-  <string name="search_shortcut_make_video_call">Videohívás kezdeményezése</string>
   <string name="search_shortcut_make_voice_call">%1$s hívása</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-hy/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-hy/strings.xml
index f0cbe0f..9cdcac7 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-hy/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-hy/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Կոնտակտները որոնելու համար միացրեք Կոնտակտների թույլտվությունները:</string>
-  <string name="search_shortcut_create_new_contact">Ստեղծել նոր կոնտակտ</string>
-  <string name="search_shortcut_add_to_contact">Ավելացնել կոնտակտին</string>
-  <string name="search_shortcut_send_sms_message">Ուղարկել SMS</string>
-  <string name="search_shortcut_make_video_call">Տեսազանգ սկսել</string>
   <string name="search_shortcut_make_voice_call">Զանգել %1$s համարին</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-in/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-in/strings.xml
index b598a6c..d2d07d2 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-in/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-in/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Untuk menelusuri kontak, aktifkan izin Kontak.</string>
-  <string name="search_shortcut_create_new_contact">Buat kontak baru</string>
-  <string name="search_shortcut_add_to_contact">Tambahkan ke kontak</string>
-  <string name="search_shortcut_send_sms_message">Kirim SMS</string>
-  <string name="search_shortcut_make_video_call">Lakukan video call</string>
   <string name="search_shortcut_make_voice_call">Telepon %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-is/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-is/strings.xml
index 5701700..bd12886 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-is/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-is/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Kveiktu á heimildunum fyrir tengiliði til að leita að tengiliðum.</string>
-  <string name="search_shortcut_create_new_contact">Búa til nýjan tengilið</string>
-  <string name="search_shortcut_add_to_contact">Bæta við tengilið</string>
-  <string name="search_shortcut_send_sms_message">Senda SMS-skilaboð</string>
-  <string name="search_shortcut_make_video_call">Hringja myndsímtal</string>
   <string name="search_shortcut_make_voice_call">Hringja í %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-it/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-it/strings.xml
index 8d60aeb..83bed42 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-it/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-it/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Per cercare nei tuoi contatti, attiva le autorizzazioni Contatti.</string>
-  <string name="search_shortcut_create_new_contact">Crea nuovo contatto</string>
-  <string name="search_shortcut_add_to_contact">Aggiungi a un contatto</string>
-  <string name="search_shortcut_send_sms_message">Invia SMS</string>
-  <string name="search_shortcut_make_video_call">Fai una videochiamata</string>
   <string name="search_shortcut_make_voice_call">Chiama %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-iw/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-iw/strings.xml
index 39322cd..8c50391 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-iw/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-iw/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">עליך להפעיל את ההרשאה \'אנשי קשר\' כדי לחפש באנשי הקשר שלך.</string>
-  <string name="search_shortcut_create_new_contact">איש קשר חדש</string>
-  <string name="search_shortcut_add_to_contact">הוסף לאיש קשר</string>
-  <string name="search_shortcut_send_sms_message">‏שלח SMS</string>
-  <string name="search_shortcut_make_video_call">בצע שיחת וידאו</string>
   <string name="search_shortcut_make_voice_call">התקשרות אל %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ja/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ja/strings.xml
index d6c5b12..159ad5a 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ja/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ja/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">連絡先を検索するには、連絡先の権限を ON にしてください。</string>
-  <string name="search_shortcut_create_new_contact">新しい連絡先を作成</string>
-  <string name="search_shortcut_add_to_contact">連絡先に追加</string>
-  <string name="search_shortcut_send_sms_message">SMSを送信</string>
-  <string name="search_shortcut_make_video_call">ビデオハングアウト</string>
   <string name="search_shortcut_make_voice_call">%1$s 宛に発信</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ka/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ka/strings.xml
index 9d920a0..66f4a45 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ka/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ka/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">თქვენი კონტაქტების მოსაძებნად ჩართეთ კონტაქტების ნებართვები.</string>
-  <string name="search_shortcut_create_new_contact">ახალი კონტაქტის შექმნა</string>
-  <string name="search_shortcut_add_to_contact">კონტაქტისადმი დამატება</string>
-  <string name="search_shortcut_send_sms_message">SMS-ის გაგზავნა</string>
-  <string name="search_shortcut_make_video_call">ვიდეოზარის განხორციელება</string>
   <string name="search_shortcut_make_voice_call">%1$s-ზე დარეკვა</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-kk/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-kk/strings.xml
index b9f0eab..a9c0004 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-kk/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-kk/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Контактілерді іздеу мүмкін болуы үшін, \"Контактілер\" рұқсаттарын қосыңыз.</string>
-  <string name="search_shortcut_create_new_contact">Жаңа контакт жасау</string>
-  <string name="search_shortcut_add_to_contact">Контактіге қосу</string>
-  <string name="search_shortcut_send_sms_message">SMS жіберу</string>
-  <string name="search_shortcut_make_video_call">Бейне қоңырау шалу</string>
   <string name="search_shortcut_make_voice_call">Қоңырау шалу: %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-km/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-km/strings.xml
index 46444d8..943b9d0 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-km/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-km/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">ដើម្បីស្វែងរកទំនាក់ទំនងរបស់អ្នក សូមបើកការអនុញ្ញាតទំនាក់ទំនង។</string>
-  <string name="search_shortcut_create_new_contact">បង្កើតទំនាក់ទំនងថ្មី</string>
-  <string name="search_shortcut_add_to_contact">បន្ថែមទៅទំនាក់ទំនង</string>
-  <string name="search_shortcut_send_sms_message">ផ្ញើសារ SMS</string>
-  <string name="search_shortcut_make_video_call">ការ​ហៅ​ជា​វីដេអូ</string>
   <string name="search_shortcut_make_voice_call">ហៅ​ទូរសព្ទ​ទៅ​ %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-kn/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-kn/strings.xml
index 130ecf2..8821c09 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-kn/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-kn/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ಹುಡುಕಲು, ಸಂಪರ್ಕಗಳ ಅನುಮತಿಗಳನ್ನು ಆನ್ ಮಾಡಿ.</string>
-  <string name="search_shortcut_create_new_contact">ಹೊಸ ಸಂಪರ್ಕ ರಚಿಸು</string>
-  <string name="search_shortcut_add_to_contact">ಸಂಪರ್ಕಕ್ಕೆ ಸೇರಿಸು</string>
-  <string name="search_shortcut_send_sms_message">SMS ಕಳುಹಿಸು</string>
-  <string name="search_shortcut_make_video_call">ವೀಡಿಯೊ ಕರೆ ಮಾಡಿ</string>
   <string name="search_shortcut_make_voice_call">%1$s ಗೆ ಕರೆಮಾಡಿ</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ko/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ko/strings.xml
index 4d36e88..468be3b 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ko/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ko/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">연락처를 검색하려면 연락처 권한을 사용하도록 설정하세요.</string>
-  <string name="search_shortcut_create_new_contact">새 연락처 만들기</string>
-  <string name="search_shortcut_add_to_contact">연락처에 추가</string>
-  <string name="search_shortcut_send_sms_message">SMS 보내기</string>
-  <string name="search_shortcut_make_video_call">화상 통화하기</string>
   <string name="search_shortcut_make_voice_call">%1$s(으)로 전화 걸기</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ky/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ky/strings.xml
index 92ea5b7..5e10f14 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ky/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ky/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Байланыштарыңызды издөө үчүн, Байланыштарга уруксатты күйгүзүңүз.</string>
-  <string name="search_shortcut_create_new_contact">Жаңы байланыш түзүү</string>
-  <string name="search_shortcut_add_to_contact">Байланышка кошуу</string>
-  <string name="search_shortcut_send_sms_message">SMS жөнөтүү</string>
-  <string name="search_shortcut_make_video_call">Видео түрүндө чалуу</string>
   <string name="search_shortcut_make_voice_call">%1$s номерине чалуу</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-lo/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-lo/strings.xml
index e3c23bd..ffa72c0 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-lo/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-lo/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">ເພື່ອຊອກຫາລາຍຊື່ຂອງທ່ານ, ໃຫ້ອະນຸຍາດສິດການໃຊ້ລາຍຊື່ຜູ້ຕິດຕໍ່ກ່ອນ.</string>
-  <string name="search_shortcut_create_new_contact">ສ້າງລາຍຊື່ຜູ້ຕິດຕໍ່ໃໝ່</string>
-  <string name="search_shortcut_add_to_contact">ເພີ່ມ​ໃສ່​ລາຍ​ຊື່</string>
-  <string name="search_shortcut_send_sms_message">ສົ່ງ SMS</string>
-  <string name="search_shortcut_make_video_call">​ໂທ​ອອກ​ດ້ວຍ​ວິ​ດີ​ໂອ</string>
   <string name="search_shortcut_make_voice_call">ໂທຫາ %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-lt/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-lt/strings.xml
index 0825b7e..7da7d50 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-lt/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-lt/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Kad galėtumėte ieškoti kontaktų, įjunkite Kontaktų leidimus.</string>
-  <string name="search_shortcut_create_new_contact">Kurti naują kontaktą</string>
-  <string name="search_shortcut_add_to_contact">Pridėti prie kontakto</string>
-  <string name="search_shortcut_send_sms_message">Siųsti SMS</string>
-  <string name="search_shortcut_make_video_call">Atlikti vaizdo skambutį</string>
   <string name="search_shortcut_make_voice_call">Skambinti numeriu %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-lv/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-lv/strings.xml
index 88ca225..0d2ad57 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-lv/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-lv/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Lai meklētu savas kontaktpersonas, ieslēdziet atļauju Kontaktpersonas.</string>
-  <string name="search_shortcut_create_new_contact">Izveidot jaunu kontaktpersonu</string>
-  <string name="search_shortcut_add_to_contact">Pievienot kontaktpersonai</string>
-  <string name="search_shortcut_send_sms_message">Sūtīt īsziņu</string>
-  <string name="search_shortcut_make_video_call">Veikt videozvanu</string>
   <string name="search_shortcut_make_voice_call">Zvanīt: %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-mk/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-mk/strings.xml
index 28c68de..a491478 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-mk/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-mk/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">За да ги пребарувате контактите, вклучете ги дозволите за контакти.</string>
-  <string name="search_shortcut_create_new_contact">Создај нов контакт</string>
-  <string name="search_shortcut_add_to_contact">Додај на контакт</string>
-  <string name="search_shortcut_send_sms_message">Испрати SMS</string>
-  <string name="search_shortcut_make_video_call">Остварете видеоповик</string>
   <string name="search_shortcut_make_voice_call">Повикај %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ml/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ml/strings.xml
index dd11915..6f84cea 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ml/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ml/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">നിങ്ങളുടെ കോൺടാക്റ്റുകൾ തിരയുന്നതിന് കോൺടാക്റ്റുകൾക്കുള്ള അനുമതികൾ ഓണാക്കുക.</string>
-  <string name="search_shortcut_create_new_contact">പുതിയകോൺടാക്റ്റ് സൃഷ്‌ടിക്കൂ</string>
-  <string name="search_shortcut_add_to_contact">ഒരുകോൺടാക്റ്റിൽ ചേർക്കൂ</string>
-  <string name="search_shortcut_send_sms_message">SMS അയയ്ക്കുക</string>
-  <string name="search_shortcut_make_video_call">വീഡിയോ കോൾ ചെയ്യുക</string>
   <string name="search_shortcut_make_voice_call">%1$s എന്ന നമ്പറിൽ വിളിക്കുക</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-mn/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-mn/strings.xml
index 92979c1..0045b6d 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-mn/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-mn/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Харилцагчаа хайхын тулд, Харилцагчийн зөвшөөрлийг идэвхжүүлнэ үү.</string>
-  <string name="search_shortcut_create_new_contact">Шинэ хаяг үүсгэх</string>
-  <string name="search_shortcut_add_to_contact">Харилцагчийн хаягт нэмэх</string>
-  <string name="search_shortcut_send_sms_message">Мессеж илгээх</string>
-  <string name="search_shortcut_make_video_call">Видео дуудлага хийх</string>
   <string name="search_shortcut_make_voice_call">%1$s руу залгах</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-mr/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-mr/strings.xml
index 5122859..7580aa7 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-mr/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-mr/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">तुमचे संपर्क शोधण्‍यासाठी, संपर्क परवानग्या चालू करा.</string>
-  <string name="search_shortcut_create_new_contact">नवीन संपर्क तयार करा</string>
-  <string name="search_shortcut_add_to_contact">संपर्कांमध्‍ये जोडा</string>
-  <string name="search_shortcut_send_sms_message">SMS पाठवा</string>
-  <string name="search_shortcut_make_video_call">व्‍हिडिओ कॉल करा</string>
   <string name="search_shortcut_make_voice_call">%1$s वर कॉल करा</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ms/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ms/strings.xml
index 959cbb7..58a62ea 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ms/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ms/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Untuk mencari kenalan anda, hidupkan kebenaran Kenalan.</string>
-  <string name="search_shortcut_create_new_contact">Buat kenalan baharu</string>
-  <string name="search_shortcut_add_to_contact">Tambahkan pada kenalan</string>
-  <string name="search_shortcut_send_sms_message">Hantar SMS</string>
-  <string name="search_shortcut_make_video_call">Buat panggilan video</string>
   <string name="search_shortcut_make_voice_call">Panggil %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-my/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-my/strings.xml
index 46151a9..0f36943 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-my/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-my/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">သင့်အဆက်အသွယ်များကို ရှာဖွေရန် Contacts ခွင့်ပြုချက်များကို ဖွင့်ပါ။</string>
-  <string name="search_shortcut_create_new_contact">အဆက်အသွယ် အသစ် ဖန်တီးရန်</string>
-  <string name="search_shortcut_add_to_contact">အဆက်အသွယ်သို့ ပေါင်းထည့်ရန်</string>
-  <string name="search_shortcut_send_sms_message">စာတို ပို့ရန်</string>
-  <string name="search_shortcut_make_video_call">ဗီဒီယို ဖုန်းခေါ်ရန်</string>
   <string name="search_shortcut_make_voice_call">%1$s ကို ခေါ်ဆိုရန်</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-nb/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-nb/strings.xml
index 8a04e69..a4aef4f 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-nb/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-nb/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">For å søke i kontaktene dine, slå på tillatelser for Kontakter.</string>
-  <string name="search_shortcut_create_new_contact">Opprett ny kontakt</string>
-  <string name="search_shortcut_add_to_contact">Legg til for en kontakt</string>
-  <string name="search_shortcut_send_sms_message">Send SMS</string>
-  <string name="search_shortcut_make_video_call">Start en videosamtale</string>
   <string name="search_shortcut_make_voice_call">Ring %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ne/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ne/strings.xml
index 88c0e8f..588313d 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ne/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ne/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">आफ्ना सम्पर्कहरू खोज्न सम्पर्कसम्बन्धी अनुमतिहरूलाई सक्रिय गर्नुहोस्।</string>
-  <string name="search_shortcut_create_new_contact">नयाँ सम्पर्क सिर्जना गर्नुहोस्</string>
-  <string name="search_shortcut_add_to_contact">सम्पर्कमा थप्नुहोस्</string>
-  <string name="search_shortcut_send_sms_message">SMS पठाउनुहोस्</string>
-  <string name="search_shortcut_make_video_call">भिडियो कल बनाउनुहोस्</string>
   <string name="search_shortcut_make_voice_call">%1$s मा कल गर्नुहोस्</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-nl/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-nl/strings.xml
index eb3ca51..1eaec78 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-nl/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-nl/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Als je wilt zoeken in je contacten, moet je het recht Contacten inschakelen.</string>
-  <string name="search_shortcut_create_new_contact">Nieuw contact maken</string>
-  <string name="search_shortcut_add_to_contact">Toevoegen aan een contact</string>
-  <string name="search_shortcut_send_sms_message">Sms verzenden</string>
-  <string name="search_shortcut_make_video_call">Videogesprek starten</string>
   <string name="search_shortcut_make_voice_call">%1$s bellen</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-no/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-no/strings.xml
index 8a04e69..a4aef4f 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-no/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-no/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">For å søke i kontaktene dine, slå på tillatelser for Kontakter.</string>
-  <string name="search_shortcut_create_new_contact">Opprett ny kontakt</string>
-  <string name="search_shortcut_add_to_contact">Legg til for en kontakt</string>
-  <string name="search_shortcut_send_sms_message">Send SMS</string>
-  <string name="search_shortcut_make_video_call">Start en videosamtale</string>
   <string name="search_shortcut_make_voice_call">Ring %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-pa/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-pa/strings.xml
index f02d6b5..587a935 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-pa/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-pa/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">ਆਪਣੇ ਸੰਪਰਕ ਖੋਜਣ ਲਈ, ਸੰਪਰਕ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ।</string>
-  <string name="search_shortcut_create_new_contact">ਨਵਾਂ ਸੰਪਰਕ ਬਣਾਓ</string>
-  <string name="search_shortcut_add_to_contact">ਕਿਸੇ ਸੰਪਰਕ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ</string>
-  <string name="search_shortcut_send_sms_message">SMS ਭੇਜੋ</string>
-  <string name="search_shortcut_make_video_call">ਵੀਡੀਓ ਕਾਲ ਕਰੋ</string>
   <string name="search_shortcut_make_voice_call">%1$s \'ਤੇ ਕਾਲ ਕਰੋ</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-pl/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-pl/strings.xml
index 0d2a33a..8efb393 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-pl/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-pl/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Aby wyszukać kontakty, włącz uprawnienia Kontakty.</string>
-  <string name="search_shortcut_create_new_contact">Utwórz nowy kontakt</string>
-  <string name="search_shortcut_add_to_contact">Dodaj do kontaktu</string>
-  <string name="search_shortcut_send_sms_message">Wyślij SMS-a</string>
-  <string name="search_shortcut_make_video_call">Rozmowa wideo</string>
   <string name="search_shortcut_make_voice_call">Zadzwoń: %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-pt-rBR/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-pt-rBR/strings.xml
index 3a2a35f..4c75f70 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-pt-rBR/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Para pesquisar seus contatos, ative as permissões para Contatos.</string>
-  <string name="search_shortcut_create_new_contact">Criar novo contato</string>
-  <string name="search_shortcut_add_to_contact">Adicionar a um contato</string>
-  <string name="search_shortcut_send_sms_message">Enviar SMS</string>
-  <string name="search_shortcut_make_video_call">Fazer videochamada</string>
   <string name="search_shortcut_make_voice_call">Ligar para %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-pt-rPT/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-pt-rPT/strings.xml
index c99152f..314433d 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-pt-rPT/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Para pesquisar os seus contactos, ative as autorizações Contactos.</string>
-  <string name="search_shortcut_create_new_contact">Criar novo contacto</string>
-  <string name="search_shortcut_add_to_contact">Adicionar a um contacto</string>
-  <string name="search_shortcut_send_sms_message">Enviar SMS</string>
-  <string name="search_shortcut_make_video_call">Fazer videochamada</string>
   <string name="search_shortcut_make_voice_call">Ligar a %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-pt/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-pt/strings.xml
index 3a2a35f..4c75f70 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-pt/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-pt/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Para pesquisar seus contatos, ative as permissões para Contatos.</string>
-  <string name="search_shortcut_create_new_contact">Criar novo contato</string>
-  <string name="search_shortcut_add_to_contact">Adicionar a um contato</string>
-  <string name="search_shortcut_send_sms_message">Enviar SMS</string>
-  <string name="search_shortcut_make_video_call">Fazer videochamada</string>
   <string name="search_shortcut_make_voice_call">Ligar para %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ro/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ro/strings.xml
index 9539dd0..5ef0bda 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ro/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ro/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Pentru a căuta în agendă, activați permisiunea pentru Agendă.</string>
-  <string name="search_shortcut_create_new_contact">Creați o intrare nouă</string>
-  <string name="search_shortcut_add_to_contact">Adăugați la o intrare</string>
-  <string name="search_shortcut_send_sms_message">Trimiteți SMS</string>
-  <string name="search_shortcut_make_video_call">Inițiați un apel video</string>
   <string name="search_shortcut_make_voice_call">Apelați %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ru/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ru/strings.xml
index ed963c3..7620499 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ru/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ru/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Для поиска контактов включите разрешение \"Контакты\".</string>
-  <string name="search_shortcut_create_new_contact">Создать контакт</string>
-  <string name="search_shortcut_add_to_contact">Добавить к контакту</string>
-  <string name="search_shortcut_send_sms_message">Отправить SMS</string>
-  <string name="search_shortcut_make_video_call">Начать видеовстречу</string>
   <string name="search_shortcut_make_voice_call">Позвонить по номеру %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-si/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-si/strings.xml
index b579958..0c0efbf 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-si/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-si/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">ඔබේ සම්බන්ධතා සෙවීමට, සම්බන්ධතා අවසර ක්‍රියාත්මක කරන්න.</string>
-  <string name="search_shortcut_create_new_contact">නව සම්බන්ධතාවයක් සාදන්න</string>
-  <string name="search_shortcut_add_to_contact">සම්බන්ධතාවකට එක් කරන්න</string>
-  <string name="search_shortcut_send_sms_message">SMS යවන්න</string>
-  <string name="search_shortcut_make_video_call">වීඩියෝ ඇමතුමක් ලබාගන්න</string>
   <string name="search_shortcut_make_voice_call">%1$s අමතන්න</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-sk/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-sk/strings.xml
index 96a7dc1..b474f4d 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-sk/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-sk/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Ak chcete hľadať kontakty, zapnite povolenie Kontakty.</string>
-  <string name="search_shortcut_create_new_contact">Vytvoriť nový kontakt</string>
-  <string name="search_shortcut_add_to_contact">Pridať ku kontaktu</string>
-  <string name="search_shortcut_send_sms_message">Odoslať SMS</string>
-  <string name="search_shortcut_make_video_call">Uskutočniť videohovor</string>
   <string name="search_shortcut_make_voice_call">Volať %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-sl/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-sl/strings.xml
index 864a915..6bf35ef 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-sl/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-sl/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Če želite iskati po stikih, vklopite dovoljenje za stike.</string>
-  <string name="search_shortcut_create_new_contact">Ustvari nov stik</string>
-  <string name="search_shortcut_add_to_contact">Dodaj stiku</string>
-  <string name="search_shortcut_send_sms_message">Pošlji SMS</string>
-  <string name="search_shortcut_make_video_call">Opravi videoklic</string>
   <string name="search_shortcut_make_voice_call">Pokliči %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-sq/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-sq/strings.xml
index 82561ab..c8652de 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-sq/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-sq/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Për të kërkuar te kontaktet, aktivizo lejet e \"Kontakteve\"</string>
-  <string name="search_shortcut_create_new_contact">Krijo një kontakt të ri</string>
-  <string name="search_shortcut_add_to_contact">Shto te një kontakt</string>
-  <string name="search_shortcut_send_sms_message">Dërgo SMS</string>
-  <string name="search_shortcut_make_video_call">Bëj një telefonatë me video</string>
   <string name="search_shortcut_make_voice_call">Telefono %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-sr/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-sr/strings.xml
index bf4c169..8b33018 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-sr/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-sr/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Да бисте претражили контакте, укључите дозволе за Контакте.</string>
-  <string name="search_shortcut_create_new_contact">Направи нови контакт</string>
-  <string name="search_shortcut_add_to_contact">Додај у контакт</string>
-  <string name="search_shortcut_send_sms_message">Пошаљи SMS</string>
-  <string name="search_shortcut_make_video_call">Упути видео позив</string>
   <string name="search_shortcut_make_voice_call">Позови %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-sv/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-sv/strings.xml
index a21fd62..7c9f1cf 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-sv/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-sv/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Aktivera behörigheten till Kontakter om du vill söka bland kontakterna.</string>
-  <string name="search_shortcut_create_new_contact">Skapa ny kontakt</string>
-  <string name="search_shortcut_add_to_contact">Lägg till i kontakt</string>
-  <string name="search_shortcut_send_sms_message">Skicka sms</string>
-  <string name="search_shortcut_make_video_call">Ring videosamtal</string>
   <string name="search_shortcut_make_voice_call">Ring %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-sw/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-sw/strings.xml
index d09676b..f6ebd57 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-sw/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-sw/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Ili utafute anwani zako, washa ruhusa za Anwani.</string>
-  <string name="search_shortcut_create_new_contact">Ongeza anwani mpya</string>
-  <string name="search_shortcut_add_to_contact">Ongeza kwenye anwani</string>
-  <string name="search_shortcut_send_sms_message">Tuma SMS</string>
-  <string name="search_shortcut_make_video_call">Piga Hangout ya video</string>
   <string name="search_shortcut_make_voice_call">Piga simu nambari %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ta/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ta/strings.xml
index 84c4646..ac90016 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ta/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ta/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">தொடர்புகளைத் தேட, தொடர்புகளுக்கான அனுமதிகளை இயக்கவும்.</string>
-  <string name="search_shortcut_create_new_contact">புதிய தொடர்பை உருவாக்கு</string>
-  <string name="search_shortcut_add_to_contact">தொடர்பில் சேர்</string>
-  <string name="search_shortcut_send_sms_message">SMS அனுப்பு</string>
-  <string name="search_shortcut_make_video_call">வீடியோவில் அழை</string>
   <string name="search_shortcut_make_voice_call">%1$sஐ அழை</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-te/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-te/strings.xml
index b8b8c84..a8ea4b4 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-te/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-te/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">మీ పరిచయాలను శోధించడానికి, పరిచయాల అనుమతులను ఆన్ చేయండి.</string>
-  <string name="search_shortcut_create_new_contact">కొత్త పరిచయాన్ని సృష్టించు</string>
-  <string name="search_shortcut_add_to_contact">పరిచయానికి జోడించు</string>
-  <string name="search_shortcut_send_sms_message">SMS పంపు</string>
-  <string name="search_shortcut_make_video_call">వీడియో కాల్ చేయండి</string>
   <string name="search_shortcut_make_voice_call">%1$sకి కాల్ చేయి</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-th/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-th/strings.xml
index 42bd3f4..cc55c54 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-th/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-th/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">หากต้องการค้นหารายชื่อติดต่อ ให้เปิดสิทธิ์เข้าถึงรายชื่อติดต่อ</string>
-  <string name="search_shortcut_create_new_contact">สร้างรายชื่อติดต่อใหม่</string>
-  <string name="search_shortcut_add_to_contact">เพิ่มในรายชื่อติดต่อ</string>
-  <string name="search_shortcut_send_sms_message">ส่ง SMS</string>
-  <string name="search_shortcut_make_video_call">ใช้ Hangouts วิดีโอ</string>
   <string name="search_shortcut_make_voice_call">โทร %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-tl/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-tl/strings.xml
index 3e3be79..78a908c 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-tl/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-tl/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Upang makapaghanap sa iyong mga contact, i-on ang mga pahintulot sa Mga Contact.</string>
-  <string name="search_shortcut_create_new_contact">Gumawa ng bagong contact</string>
-  <string name="search_shortcut_add_to_contact">Idagdag sa isang contact</string>
-  <string name="search_shortcut_send_sms_message">Magpadala ng SMS</string>
-  <string name="search_shortcut_make_video_call">Gumawa ng video call</string>
   <string name="search_shortcut_make_voice_call">Tawagan ang %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-tr/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-tr/strings.xml
index 06fbb8d..a6b8d0c 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-tr/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-tr/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Kişilerinizde arama yapmak için Kişiler izinlerini etkinleştirin.</string>
-  <string name="search_shortcut_create_new_contact">Yeni kişi oluştur</string>
-  <string name="search_shortcut_add_to_contact">Bir kişiye ekle</string>
-  <string name="search_shortcut_send_sms_message">SMS gönder</string>
-  <string name="search_shortcut_make_video_call">Video görüşmesi yap</string>
   <string name="search_shortcut_make_voice_call">Telefon et: %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-uk/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-uk/strings.xml
index f013e78..6636876 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-uk/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-uk/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Щоб шукати контакти, увімкніть дозвіл \"Контакти\".</string>
-  <string name="search_shortcut_create_new_contact">Створити контакт</string>
-  <string name="search_shortcut_add_to_contact">Додати в контакти</string>
-  <string name="search_shortcut_send_sms_message">Надіслати SMS</string>
-  <string name="search_shortcut_make_video_call">Здійснити відеодзвінок</string>
   <string name="search_shortcut_make_voice_call">Зателефонувати на номер %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-ur/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-ur/strings.xml
index f9eea96..49f1d58 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-ur/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-ur/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">اپنے رابطوں کو تلاش کرنے کے لیے رابطوں کی اجازتیں آن کریں۔</string>
-  <string name="search_shortcut_create_new_contact">نیا رابطہ بنائیں</string>
-  <string name="search_shortcut_add_to_contact">رابطے میں شامل کریں</string>
-  <string name="search_shortcut_send_sms_message">‏SMS بھیجیں</string>
-  <string name="search_shortcut_make_video_call">ویڈیو کال کریں</string>
   <string name="search_shortcut_make_voice_call">%1$s پر کال کریں</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-uz/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-uz/strings.xml
index 831ac1f..9c99f3d 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-uz/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-uz/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Kontaktlarni qidirish uchun “Kontaktlar” ruxsatnomasini yoqing.</string>
-  <string name="search_shortcut_create_new_contact">Yangi kontakt yaratish</string>
-  <string name="search_shortcut_add_to_contact">Mavjud kontaktga saqlash</string>
-  <string name="search_shortcut_send_sms_message">SMS yuborish</string>
-  <string name="search_shortcut_make_video_call">Videoqo‘ng‘iroq qilish</string>
   <string name="search_shortcut_make_voice_call">Chaqiruv: %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-vi/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-vi/strings.xml
index 5b5b559..cf5432c 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-vi/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-vi/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Để tìm kiếm liên hệ của bạn, hãy bật quyền đối với Danh bạ.</string>
-  <string name="search_shortcut_create_new_contact">Tạo liên hệ mới</string>
-  <string name="search_shortcut_add_to_contact">Thêm vào liên hệ</string>
-  <string name="search_shortcut_send_sms_message">Gửi SMS</string>
-  <string name="search_shortcut_make_video_call">Gọi điện video</string>
   <string name="search_shortcut_make_voice_call">Gọi %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-zh-rCN/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-zh-rCN/strings.xml
index 0dc03cb..4dcb3f0 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-zh-rCN/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">要搜索您的联系人，请开启“通讯录”权限。</string>
-  <string name="search_shortcut_create_new_contact">新建联系人</string>
-  <string name="search_shortcut_add_to_contact">添加到联系人</string>
-  <string name="search_shortcut_send_sms_message">发送短信</string>
-  <string name="search_shortcut_make_video_call">发起视频通话</string>
   <string name="search_shortcut_make_voice_call">拨打 %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-zh-rHK/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-zh-rHK/strings.xml
index a082084..8965d85 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-zh-rHK/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">如要搜尋聯絡人，請開啟「通訊錄」權限。</string>
-  <string name="search_shortcut_create_new_contact">建立新聯絡人</string>
-  <string name="search_shortcut_add_to_contact">加至現有聯絡人資料</string>
-  <string name="search_shortcut_send_sms_message">傳送短訊</string>
-  <string name="search_shortcut_make_video_call">進行視像通話</string>
   <string name="search_shortcut_make_voice_call">撥打 %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-zh-rTW/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-zh-rTW/strings.xml
index fed436a..a10c35f 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-zh-rTW/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">如要搜尋你的聯絡人，請開啟「聯絡人」存取權限。</string>
-  <string name="search_shortcut_create_new_contact">建立新聯絡人</string>
-  <string name="search_shortcut_add_to_contact">新增至聯絡人</string>
-  <string name="search_shortcut_send_sms_message">傳送簡訊</string>
-  <string name="search_shortcut_make_video_call">進行視訊通話</string>
   <string name="search_shortcut_make_voice_call">撥打 %1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values-zu/strings.xml b/java/com/android/dialer/searchfragment/list/res/values-zu/strings.xml
index 5a1106a..e55d0e9 100644
--- a/java/com/android/dialer/searchfragment/list/res/values-zu/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values-zu/strings.xml
@@ -1,9 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="new_permission_no_search">Ukuze useshe oxhumana nabo, vula izimvume zoxhumana nabo.</string>
-  <string name="search_shortcut_create_new_contact">Dala oxhumana naye omusha</string>
-  <string name="search_shortcut_add_to_contact">Engeza koxhumana naye</string>
-  <string name="search_shortcut_send_sms_message">Thumela i-SMS</string>
-  <string name="search_shortcut_make_video_call">Yenza ikholi yevidiyo</string>
   <string name="search_shortcut_make_voice_call">Shayela ku-%1$s</string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/list/res/values/strings.xml b/java/com/android/dialer/searchfragment/list/res/values/strings.xml
index 26685a6..f853665 100644
--- a/java/com/android/dialer/searchfragment/list/res/values/strings.xml
+++ b/java/com/android/dialer/searchfragment/list/res/values/strings.xml
@@ -18,20 +18,6 @@
   <!-- Shown as a prompt to turn on contacts permissions to allow contact search [CHAR LIMIT=NONE]. See 2424710404207193826 for current translation. -->
   <string name="new_permission_no_search">To search your contacts, turn on the Contacts permissions.</string>
 
-  <!-- Shortcut item used to add a number directly to a new contact from search.
-       [CHAR LIMIT=25] -->
-  <string name="search_shortcut_create_new_contact">Create new contact</string>
-
-  <!-- Shortcut item used to add a number to an existing contact directly from search.
-       [CHAR LIMIT=25] -->
-  <string name="search_shortcut_add_to_contact">Add to a contact</string>
-
-  <!-- Shortcut item used to send a text message directly from search. [CHAR LIMIT=25] -->
-  <string name="search_shortcut_send_sms_message">Send SMS</string>
-
-  <!-- Shortcut item used to make a video call directly from search. [CHAR LIMIT=25] -->
-  <string name="search_shortcut_make_video_call">Make video call</string>
-
   <!-- Shortcut item used to make a voice call directly from search. [CHAR LIMIT=25] -->
   <string name="search_shortcut_make_voice_call">Call <xliff:g id="phone_number">%1$s</xliff:g></string>
 </resources>
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml b/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml
deleted file mode 100644
index 52fb086..0000000
--- a/java/com/android/dialer/searchfragment/nearbyplaces/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest  package="com.android.dialer.searchfragment.nearbyplaces"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
index 968c195..1bb3b19 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,10 +21,12 @@
 import android.net.Uri;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Contacts;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.contacts.common.util.Constants;
 import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.lettertile.LetterTileDrawable;
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursor.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursor.java
index 3be59b6..adc603a 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursor.java
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursor.java
@@ -20,7 +20,10 @@
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.database.MergeCursor;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.searchfragment.common.SearchCursor;
 
 /** {@link SearchCursor} implementation for displaying on nearby places. */
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
index 9ba6d56..1ff5443 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlacesCursorLoader.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,14 +18,17 @@
 package com.android.dialer.searchfragment.nearbyplaces;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.database.Cursor;
 import android.net.Uri;
 import android.provider.ContactsContract;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+import androidx.loader.content.CursorLoader;
+
 import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.searchfragment.common.Projections;
+
 import java.util.List;
 
 /** Cursor loader for nearby places search results. */
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-hdpi/business_asset.png b/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-hdpi/business_asset.png
deleted file mode 100644
index 062bba5..0000000
--- a/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-hdpi/business_asset.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-mdpi/business_asset.png b/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-mdpi/business_asset.png
deleted file mode 100644
index 60d8497..0000000
--- a/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-mdpi/business_asset.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-xhdpi/business_asset.png b/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-xhdpi/business_asset.png
deleted file mode 100644
index e8a4e5d..0000000
--- a/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-xhdpi/business_asset.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-xxhdpi/business_asset.png b/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-xxhdpi/business_asset.png
deleted file mode 100644
index 73b716c..0000000
--- a/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-xxhdpi/business_asset.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-xxxhdpi/business_asset.png b/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-xxxhdpi/business_asset.png
deleted file mode 100644
index b243f71..0000000
--- a/java/com/android/dialer/searchfragment/nearbyplaces/res/drawable-xxxhdpi/business_asset.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/res/layout/location_permission_row.xml b/java/com/android/dialer/searchfragment/nearbyplaces/res/layout/location_permission_row.xml
index 41ffb45..385086c 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/res/layout/location_permission_row.xml
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/res/layout/location_permission_row.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -14,15 +15,12 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<android.support.v7.widget.CardView
+<androidx.cardview.widget.CardView
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_marginStart="8dp"
-    android:layout_marginEnd="8dp"
-    android:layout_marginTop="8dp"
-    app:cardElevation="2dp">
+    style="@style/LocationPermCardStyle">
 
   <RelativeLayout
       android:layout_width="match_parent"
@@ -37,7 +35,8 @@
         android:layout_width="40dp"
         android:layout_height="40dp"
         android:layout_marginEnd="16dp"
-        android:src="@drawable/business_asset"/>
+        android:src="@drawable/quantum_ic_store_vd_theme_24"
+        app:tint="?colorIcon"/>
 
     <TextView
         android:id="@+id/permission_text"
@@ -52,26 +51,23 @@
     <Button
         android:id="@+id/location_permission_allow"
         android:layout_width="wrap_content"
-        android:layout_height="52dp"
+        android:layout_height="wrap_content"
         android:layout_alignParentEnd="true"
         android:layout_below="@id/permission_text"
         android:layout_marginTop="18dp"
-        android:paddingTop="8dp"
-        android:paddingBottom="8dp"
-        android:text="@string/nearby_places_allow"/>
+        android:text="@string/nearby_places_allow"
+        style="@style/DialerPrimaryFlatButtonStyle"/>
 
     <Button
         android:id="@+id/location_permission_dismiss"
         android:layout_width="wrap_content"
-        android:layout_height="52dp"
+        android:layout_height="wrap_content"
         android:layout_toStartOf="@+id/location_permission_allow"
         android:layout_below="@id/permission_text"
         android:layout_marginEnd="8dp"
         android:layout_marginTop="18dp"
-        android:paddingTop="8dp"
-        android:paddingBottom="8dp"
         android:text="@string/nearby_places_dismiss"
         android:textColor="?android:attr/colorPrimary"
-        style="@style/Widget.AppCompat.Button.Borderless"/>
+        style="@style/DialerFlatButtonStyle"/>
   </RelativeLayout>
-</android.support.v7.widget.CardView>
\ No newline at end of file
+</androidx.cardview.widget.CardView>
diff --git a/java/com/android/dialer/shortcuts/AndroidManifest.xml b/java/com/android/dialer/shortcuts/AndroidManifest.xml
deleted file mode 100644
index e54b659..0000000
--- a/java/com/android/dialer/shortcuts/AndroidManifest.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.shortcuts">
-
-  <uses-sdk
-    android:minSdkVersion="24"
-    android:targetSdkVersion="30"/>
-
-  <application>
-
-  <service
-      android:exported="false"
-      android:name=".PeriodicJobService"
-      android:permission="android.permission.BIND_JOB_SERVICE"/>
-
-    <!--
-       Comments for attributes in CallContactActivity:
-       taskAffinity=""             -> Open the dialog without opening the dialer app behind it
-       noHistory="true"            -> Navigating away finishes activity
-       excludeFromRecents="true"   -> Don't show in "recent apps" screen
-
-       We do not export this activity and do not declare an intent filter as a security precaution
-       so that apps other than the dialer cannot attempt to make phone calls using it.
-       -->
-    <activity
-      android:name=".CallContactActivity"
-      android:taskAffinity=""
-      android:noHistory="true"
-      android:excludeFromRecents="true"
-      android:label=""
-      android:exported="false"
-      android:theme="@style/CallContactsTheme"/>
-
-  </application>
-
-</manifest>
diff --git a/java/com/android/dialer/shortcuts/CallContactActivity.java b/java/com/android/dialer/shortcuts/CallContactActivity.java
index 87f6fce..d50d497 100644
--- a/java/com/android/dialer/shortcuts/CallContactActivity.java
+++ b/java/com/android/dialer/shortcuts/CallContactActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +17,15 @@
 
 package com.android.dialer.shortcuts;
 
-import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.v4.app.ActivityCompat;
 import android.widget.Toast;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.NonNull;
+
+import com.android.dialer.R;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallSpecificAppData;
 import com.android.dialer.common.LogUtil;
@@ -33,11 +38,21 @@
  */
 public class CallContactActivity extends TransactionSafeActivity
     implements PhoneNumberInteraction.DisambigDialogDismissedListener,
-        PhoneNumberInteraction.InteractionErrorListener,
-        ActivityCompat.OnRequestPermissionsResultCallback {
+        PhoneNumberInteraction.InteractionErrorListener {
 
   private static final String CONTACT_URI_KEY = "uri_key";
 
+  private final ActivityResultLauncher<String[]> permissionLauncher = registerForActivityResult(
+          new ActivityResultContracts.RequestMultiplePermissions(), grantResults -> {
+            if (grantResults.values().iterator().next()) {
+              makeCall();
+            } else {
+              Toast.makeText(this, R.string.dialer_shortcut_no_permissions, Toast.LENGTH_SHORT)
+                      .show();
+              finish();
+            }
+          });
+
   private Uri contactUri;
 
   @Override
@@ -45,14 +60,9 @@
     super.onCreate(savedInstanceState);
 
     if ("com.android.dialer.shortcuts.CALL_CONTACT".equals(getIntent().getAction())) {
-      if (Shortcuts.areDynamicShortcutsEnabled(this)) {
         LogUtil.i("CallContactActivity.onCreate", "shortcut clicked");
         contactUri = getIntent().getData();
         makeCall();
-      } else {
-        LogUtil.i("CallContactActivity.onCreate", "dynamic shortcuts disabled");
-        finish();
-      }
     }
   }
 
@@ -74,7 +84,7 @@
             .setCallInitiationType(CallInitiationType.Type.LAUNCHER_SHORTCUT)
             .build();
     PhoneNumberInteraction.startInteractionForPhoneCall(
-        this, contactUri, false /* isVideoCall */, callSpecificAppData);
+        this, contactUri, false /* isVideoCall */, callSpecificAppData, permissionLauncher);
   }
 
   @Override
@@ -110,7 +120,7 @@
   }
 
   @Override
-  public void onSaveInstanceState(Bundle outState) {
+  public void onSaveInstanceState(@NonNull Bundle outState) {
     super.onSaveInstanceState(outState);
     outState.putParcelable(CONTACT_URI_KEY, contactUri);
   }
@@ -121,28 +131,6 @@
     if (savedInstanceState == null) {
       return;
     }
-    contactUri = savedInstanceState.getParcelable(CONTACT_URI_KEY);
-  }
-
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, String[] permissions, int[] grantResults) {
-    switch (requestCode) {
-      case PhoneNumberInteraction.REQUEST_READ_CONTACTS:
-      case PhoneNumberInteraction.REQUEST_CALL_PHONE:
-        {
-          // If request is cancelled, the result arrays are empty.
-          if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-            makeCall();
-          } else {
-            Toast.makeText(this, R.string.dialer_shortcut_no_permissions, Toast.LENGTH_SHORT)
-                .show();
-            finish();
-          }
-          break;
-        }
-      default:
-        throw new IllegalStateException("Unsupported request code: " + requestCode);
-    }
+    contactUri = savedInstanceState.getParcelable(CONTACT_URI_KEY, Uri.class);
   }
 }
diff --git a/java/com/android/dialer/shortcuts/DialerShortcut.java b/java/com/android/dialer/shortcuts/DialerShortcut.java
index a8d4204..5e44c36 100644
--- a/java/com/android/dialer/shortcuts/DialerShortcut.java
+++ b/java/com/android/dialer/shortcuts/DialerShortcut.java
@@ -16,12 +16,12 @@
 
 package com.android.dialer.shortcuts;
 
-import android.annotation.TargetApi;
 import android.content.pm.ShortcutInfo;
 import android.net.Uri;
-import android.os.Build.VERSION_CODES;
 import android.provider.ContactsContract.Contacts;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
 import com.google.auto.value.AutoValue;
 
 /**
@@ -30,7 +30,6 @@
  * <p>This differs from {@link ShortcutInfo} in that it doesn't hold an icon or intent, and provides
  * convenience methods for doing things like constructing labels.
  */
-@TargetApi(VERSION_CODES.N_MR1) // Shortcuts introduced in N MR1
 @AutoValue
 abstract class DialerShortcut {
 
diff --git a/java/com/android/dialer/shortcuts/DynamicShortcuts.java b/java/com/android/dialer/shortcuts/DynamicShortcuts.java
index e39dc27..ceb1a69 100644
--- a/java/com/android/dialer/shortcuts/DynamicShortcuts.java
+++ b/java/com/android/dialer/shortcuts/DynamicShortcuts.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,19 +18,20 @@
 package com.android.dialer.shortcuts;
 
 import android.Manifest;
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.content.pm.ShortcutInfo;
 import android.content.pm.ShortcutManager;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
-import android.support.v4.content.ContextCompat;
 import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+import androidx.core.content.ContextCompat;
+
 import com.android.contacts.common.list.ContactEntry;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -60,7 +62,6 @@
  * updated periodically (about once a day).
  *
  */
-@TargetApi(VERSION_CODES.N_MR1) // Shortcuts introduced in N MR1
 final class DynamicShortcuts {
 
   private static final int MAX_DYNAMIC_SHORTCUTS = 3;
diff --git a/java/com/android/dialer/shortcuts/IconFactory.java b/java/com/android/dialer/shortcuts/IconFactory.java
index 7aad112..67d9178 100644
--- a/java/com/android/dialer/shortcuts/IconFactory.java
+++ b/java/com/android/dialer/shortcuts/IconFactory.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,21 +22,19 @@
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.drawable.AdaptiveIconDrawable;
-import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.provider.ContactsContract;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresApi;
-import android.support.annotation.WorkerThread;
-import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
-import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.util.DrawableConverter;
+
 import java.io.InputStream;
 
 /** Constructs the icons for dialer shortcuts. */
@@ -88,12 +87,9 @@
         ContactsContract.Contacts.openContactPhotoInputStream(
             context.getContentResolver(), lookupUri, false /* preferHighres */);
 
-    return VERSION.SDK_INT >= VERSION_CODES.O
-        ? createAdaptiveIcon(displayName, lookupKey, inputStream)
-        : createFlatIcon(displayName, lookupKey, inputStream);
+    return createAdaptiveIcon(displayName, lookupKey, inputStream);
   }
 
-  @RequiresApi(VERSION_CODES.O)
   private Icon createAdaptiveIcon(
       @NonNull String displayName, @NonNull String lookupKey, @Nullable InputStream inputStream) {
     if (inputStream == null) {
@@ -117,33 +113,4 @@
     Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
     return Icon.createWithAdaptiveBitmap(bitmap);
   }
-
-  private Icon createFlatIcon(
-      @NonNull String displayName, @NonNull String lookupKey, @Nullable InputStream inputStream) {
-    Drawable drawable;
-    if (inputStream == null) {
-      // No photo for contact; use a letter tile.
-      LetterTileDrawable letterTileDrawable = new LetterTileDrawable(context.getResources());
-      letterTileDrawable.setCanonicalDialerLetterTileDetails(
-          displayName, lookupKey, LetterTileDrawable.SHAPE_CIRCLE, LetterTileDrawable.TYPE_DEFAULT);
-      drawable = letterTileDrawable;
-    } else {
-      // There's a photo, create a circular drawable from it.
-      Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
-      drawable = createCircularDrawable(bitmap);
-    }
-    int iconSize =
-        context.getResources().getDimensionPixelSize(R.dimen.launcher_shortcut_icon_size);
-    return Icon.createWithBitmap(
-        DrawableConverter.drawableToBitmap(drawable, iconSize /* width */, iconSize /* height */));
-  }
-
-  @NonNull
-  private Drawable createCircularDrawable(@NonNull Bitmap bitmap) {
-    RoundedBitmapDrawable roundedBitmapDrawable =
-        RoundedBitmapDrawableFactory.create(context.getResources(), bitmap);
-    roundedBitmapDrawable.setCircular(true);
-    roundedBitmapDrawable.setAntiAlias(true);
-    return roundedBitmapDrawable;
-  }
 }
diff --git a/java/com/android/dialer/shortcuts/PeriodicJobService.java b/java/com/android/dialer/shortcuts/PeriodicJobService.java
index 62c9e37..7d65b2a 100644
--- a/java/com/android/dialer/shortcuts/PeriodicJobService.java
+++ b/java/com/android/dialer/shortcuts/PeriodicJobService.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,21 +17,21 @@
 
 package com.android.dialer.shortcuts;
 
-import android.annotation.TargetApi;
 import android.app.job.JobInfo;
 import android.app.job.JobParameters;
 import android.app.job.JobScheduler;
 import android.app.job.JobService;
 import android.content.ComponentName;
 import android.content.Context;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.v4.os.UserManagerCompat;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.core.os.UserManagerCompat;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.constants.ScheduledJobIds;
+
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -38,7 +39,6 @@
  *
  * <p>Only {@link #schedulePeriodicJob(Context)} should be used by callers.
  */
-@TargetApi(VERSION_CODES.N_MR1) // Shortcuts introduced in N MR1
 public final class PeriodicJobService extends JobService {
 
   private static final long REFRESH_PERIOD_MILLIS = TimeUnit.HOURS.toMillis(24);
@@ -57,7 +57,7 @@
     Assert.isMainThread();
     LogUtil.enterBlock("PeriodicJobService.schedulePeriodicJob");
 
-    if (VERSION.SDK_INT >= VERSION_CODES.N_MR1 && UserManagerCompat.isUserUnlocked(context)) {
+    if (UserManagerCompat.isUserUnlocked(context)) {
       JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
       if (jobScheduler.getPendingJob(ScheduledJobIds.SHORTCUT_PERIODIC_JOB) != null) {
         LogUtil.i("PeriodicJobService.schedulePeriodicJob", "job already scheduled.");
@@ -91,16 +91,7 @@
     Assert.isMainThread();
     LogUtil.enterBlock("PeriodicJobService.onStartJob");
 
-    if (VERSION.SDK_INT >= VERSION_CODES.N_MR1) {
-      (refreshShortcutsTask = new RefreshShortcutsTask(this)).execute(params);
-    } else {
-      // It is possible for the job to have been scheduled on NMR1+ and then the system was
-      // downgraded to < NMR1. In this case, shortcuts are no longer supported so we cancel the job
-      // which creates them.
-      LogUtil.i("PeriodicJobService.onStartJob", "not running on NMR1, cancelling job");
-      cancelJob(this);
-      return false;
-    }
+    (refreshShortcutsTask = new RefreshShortcutsTask(this)).execute(params);
     return true;
   }
 
@@ -111,7 +102,7 @@
     LogUtil.enterBlock("PeriodicJobService.onStopJob");
 
     if (refreshShortcutsTask != null) {
-      refreshShortcutsTask.cancel(false /* mayInterruptIfRunning */);
+      refreshShortcutsTask.cancel();
     }
     return false;
   }
diff --git a/java/com/android/dialer/shortcuts/PinnedShortcuts.java b/java/com/android/dialer/shortcuts/PinnedShortcuts.java
index d5265c2..8e075a6 100644
--- a/java/com/android/dialer/shortcuts/PinnedShortcuts.java
+++ b/java/com/android/dialer/shortcuts/PinnedShortcuts.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,21 +18,23 @@
 package com.android.dialer.shortcuts;
 
 import android.Manifest;
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.content.pm.ShortcutInfo;
 import android.content.pm.ShortcutManager;
 import android.database.Cursor;
 import android.net.Uri;
-import android.os.Build.VERSION_CODES;
 import android.provider.ContactsContract.Contacts;
-import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
-import android.support.v4.content.ContextCompat;
 import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+import androidx.core.content.ContextCompat;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -47,7 +50,6 @@
  * still up to date (e.g. photo and name). We also check to see if the contact has been deleted from
  * the user's contacts, and if so, we disable the pinned shortcut.
  */
-@TargetApi(VERSION_CODES.N_MR1) // Shortcuts introduced in N MR1
 final class PinnedShortcuts {
 
   private static final String[] PROJECTION =
diff --git a/java/com/android/dialer/shortcuts/RefreshShortcutsTask.java b/java/com/android/dialer/shortcuts/RefreshShortcutsTask.java
index 086d1dc..a06f0b3 100644
--- a/java/com/android/dialer/shortcuts/RefreshShortcutsTask.java
+++ b/java/com/android/dialer/shortcuts/RefreshShortcutsTask.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,56 +17,59 @@
 
 package com.android.dialer.shortcuts;
 
-import android.annotation.TargetApi;
 import android.app.job.JobParameters;
 import android.app.job.JobService;
-import android.os.AsyncTask;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
-import com.android.dialer.common.Assert;
+import android.os.Handler;
+import android.os.Looper;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.LogUtil;
 
-/** {@link AsyncTask} used by the periodic job service to refresh dynamic and pinned shortcuts. */
-@TargetApi(VERSION_CODES.N_MR1) // Shortcuts introduced in N MR1
-final class RefreshShortcutsTask extends AsyncTask<JobParameters, Void, JobParameters> {
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+
+/** Class used by the periodic job service to refresh dynamic and pinned shortcuts. */
+final class RefreshShortcutsTask {
 
   private final JobService jobService;
+  private final ExecutorService executor = Executors.newSingleThreadExecutor();
+  private final Handler handler = new Handler(Looper.getMainLooper());
+
+  private boolean mIsCancelled = false;
 
   RefreshShortcutsTask(@NonNull JobService jobService) {
     this.jobService = jobService;
   }
 
-  /** @param params array with length 1, provided from PeriodicJobService */
-  @Override
-  @NonNull
-  @WorkerThread
-  protected JobParameters doInBackground(JobParameters... params) {
-    Assert.isWorkerThread();
-    LogUtil.enterBlock("RefreshShortcutsTask.doInBackground");
+  /** @param param provided from PeriodicJobService */
+  public void execute(JobParameters param) {
+    executor.execute(() -> {
+      LogUtil.enterBlock("RefreshShortcutsTask.doInBackground");
 
-    // Dynamic shortcuts are refreshed from the UI but icons can become stale, so update them
-    // periodically using the job service.
-    //
-    // The reason that icons can become is stale is that there is no last updated timestamp for
-    // pictures; there is only a last updated timestamp for the entire contact row, which changes
-    // frequently (for example, when they are called their "times_contacted" is incremented).
-    // Relying on such a spuriously updated timestamp would result in too frequent shortcut updates,
-    // so instead we just allow the icon to become stale in the case that the contact's photo is
-    // updated, and then rely on the job service to periodically force update it.
-    new DynamicShortcuts(jobService, new IconFactory(jobService)).updateIcons(); // Blocking
-    new PinnedShortcuts(jobService).refresh(); // Blocking
+      // Dynamic shortcuts are refreshed from the UI but icons can become stale, so update them
+      // periodically using the job service.
+      //
+      // The reason that icons can become is stale is that there is no last updated timestamp for
+      // pictures; there is only a last updated timestamp for the entire contact row, which changes
+      // frequently (for example, when they are called their "times_contacted" is incremented).
+      // Relying on such a spuriously updated timestamp would result in too frequent shortcut
+      // updates, so instead we just allow the icon to become stale in the case that the contact's
+      // photo is updated, and then rely on the job service to periodically force update it.
+      new DynamicShortcuts(jobService, new IconFactory(jobService)).updateIcons(); // Blocking
+      new PinnedShortcuts(jobService).refresh(); // Blocking
 
-    return params[0];
+      if (!mIsCancelled) {
+        handler.post(() -> {
+          LogUtil.enterBlock("RefreshShortcutsTask.onPostExecute");
+          jobService.jobFinished(param, false /* needsReschedule */);
+        });
+      }
+    });
   }
 
-  @Override
-  @MainThread
-  protected void onPostExecute(JobParameters params) {
-    Assert.isMainThread();
-    LogUtil.enterBlock("RefreshShortcutsTask.onPostExecute");
-
-    jobService.jobFinished(params, false /* needsReschedule */);
+  public void cancel() {
+    mIsCancelled = true;
   }
 }
diff --git a/java/com/android/dialer/shortcuts/ShortcutInfoFactory.java b/java/com/android/dialer/shortcuts/ShortcutInfoFactory.java
index cf780bb..6cc2ce3 100644
--- a/java/com/android/dialer/shortcuts/ShortcutInfoFactory.java
+++ b/java/com/android/dialer/shortcuts/ShortcutInfoFactory.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,14 +17,15 @@
 
 package com.android.dialer.shortcuts;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ShortcutInfo;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -35,7 +37,6 @@
  * <p>The main work this factory does is create shortcut intents. It also delegates to the {@link
  * IconFactory} to create icons.
  */
-@TargetApi(VERSION_CODES.N_MR1) // Shortcuts introduced in N MR1
 final class ShortcutInfoFactory {
 
   /** Key for the contact ID extra (a long) stored as part of the shortcut intent. */
diff --git a/java/com/android/dialer/shortcuts/ShortcutRefresher.java b/java/com/android/dialer/shortcuts/ShortcutRefresher.java
index 7776aa9..a87dda4 100644
--- a/java/com/android/dialer/shortcuts/ShortcutRefresher.java
+++ b/java/com/android/dialer/shortcuts/ShortcutRefresher.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,15 +18,17 @@
 package com.android.dialer.shortcuts;
 
 import android.content.Context;
-import android.os.Build;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+
 import com.android.contacts.common.list.ContactEntry;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.speeddial.loader.SpeedDialUiItem;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -38,14 +41,6 @@
     Assert.isMainThread();
     Assert.isNotNull(context);
 
-    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
-      return;
-    }
-
-    if (!Shortcuts.areDynamicShortcutsEnabled(context)) {
-      return;
-    }
-
     DialerExecutorComponent.get(context)
         .dialerExecutorFactory()
         .createNonUiTaskBuilder(new RefreshWorker(context))
diff --git a/java/com/android/dialer/shortcuts/ShortcutUsageReporter.java b/java/com/android/dialer/shortcuts/ShortcutUsageReporter.java
index 3f0b2a6..f3ecc73 100644
--- a/java/com/android/dialer/shortcuts/ShortcutUsageReporter.java
+++ b/java/com/android/dialer/shortcuts/ShortcutUsageReporter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,27 +18,28 @@
 package com.android.dialer.shortcuts;
 
 import android.Manifest;
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.content.pm.ShortcutManager;
 import android.database.Cursor;
 import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Build;
-import android.os.Build.VERSION_CODES;
+import android.os.Handler;
+import android.os.Looper;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.PhoneLookup;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
-import android.support.v4.content.ContextCompat;
 import android.text.TextUtils;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+import androidx.core.content.ContextCompat;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.AsyncTaskExecutor;
-import com.android.dialer.common.concurrent.AsyncTaskExecutors;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * Reports outgoing calls as shortcut usage.
@@ -48,11 +50,8 @@
  * <p>This allows launcher applications to provide users with shortcut suggestions, even if the user
  * isn't already using shortcuts.
  */
-@TargetApi(VERSION_CODES.N_MR1) // Shortcuts introduced in N_MR1
 public class ShortcutUsageReporter {
 
-  private static final AsyncTaskExecutor EXECUTOR = AsyncTaskExecutors.createThreadPoolExecutor();
-
   /**
    * Called when an outgoing call is added to the call list in order to report outgoing calls as
    * shortcut usage. This should be called exactly once for each outgoing call.
@@ -68,40 +67,40 @@
     Assert.isMainThread();
     Assert.isNotNull(context);
 
-    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1 || TextUtils.isEmpty(phoneNumber)) {
+    if (TextUtils.isEmpty(phoneNumber)) {
       return;
     }
 
-    EXECUTOR.submit(Task.ID, new Task(context), phoneNumber);
+    new Task(context).execute(phoneNumber);
   }
 
-  private static final class Task extends AsyncTask<String, Void, Void> {
+  private static final class Task {
     private static final String ID = "ShortcutUsageReporter.Task";
 
     private final Context context;
 
+    private final ExecutorService executor = Executors.newSingleThreadExecutor();
+    private final Handler handler = new Handler(Looper.getMainLooper());
+
     public Task(Context context) {
       this.context = context;
     }
 
-    /** @param phoneNumbers array with exactly one non-empty phone number */
-    @Override
-    @WorkerThread
-    protected Void doInBackground(@NonNull String... phoneNumbers) {
-      Assert.isWorkerThread();
+    /** @param phoneNumber non-empty phone number */
+    public void execute(@NonNull String phoneNumber) {
+      executor.execute(() -> {
+        String lookupKey = queryForLookupKey(phoneNumber);
+        if (!TextUtils.isEmpty(lookupKey)) {
+          LogUtil.i("ShortcutUsageReporter.backgroundLogUsage", "%s", lookupKey);
+          ShortcutManager shortcutManager =
+                  (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE);
 
-      String lookupKey = queryForLookupKey(phoneNumbers[0]);
-      if (!TextUtils.isEmpty(lookupKey)) {
-        LogUtil.i("ShortcutUsageReporter.backgroundLogUsage", "%s", lookupKey);
-        ShortcutManager shortcutManager =
-            (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE);
-
-        // Note: There may not currently exist a shortcut with the provided key, but it is logged
-        // anyway, so that launcher applications at least have the information should the shortcut
-        // be created in the future.
-        shortcutManager.reportShortcutUsed(lookupKey);
-      }
-      return null;
+          // Note: There may not currently exist a shortcut with the provided key, but it is logged
+          // anyway, so that launcher applications at least have the information should the shortcut
+          // be created in the future.
+          shortcutManager.reportShortcutUsed(lookupKey);
+        }
+      });
     }
 
     @Nullable
diff --git a/java/com/android/dialer/shortcuts/Shortcuts.java b/java/com/android/dialer/shortcuts/Shortcuts.java
deleted file mode 100644
index d08e344..0000000
--- a/java/com/android/dialer/shortcuts/Shortcuts.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.shortcuts;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-
-/** Checks if dynamic shortcuts should be enabled. */
-public class Shortcuts {
-
-  /** Key for boolean config value which determines whether or not to enable dynamic shortcuts. */
-  private static final String DYNAMIC_SHORTCUTS_ENABLED = "dynamic_shortcuts_enabled";
-
-  static boolean areDynamicShortcutsEnabled(@NonNull Context context) {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(DYNAMIC_SHORTCUTS_ENABLED, true);
-  }
-
-  private Shortcuts() {}
-}
diff --git a/java/com/android/dialer/shortcuts/ShortcutsJobScheduler.java b/java/com/android/dialer/shortcuts/ShortcutsJobScheduler.java
deleted file mode 100644
index 4cfc436..0000000
--- a/java/com/android/dialer/shortcuts/ShortcutsJobScheduler.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.shortcuts;
-
-import android.content.Context;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-
-/**
- * Schedules dialer shortcut jobs.
- *
- * <p>A {@link ConfigProvider} value controls whether the jobs which creates shortcuts should be
- * scheduled or cancelled.
- */
-public class ShortcutsJobScheduler {
-
-  @MainThread
-  public static void scheduleAllJobs(@NonNull Context context) {
-    LogUtil.enterBlock("ShortcutsJobScheduler.scheduleAllJobs");
-    Assert.isMainThread();
-
-    if (Shortcuts.areDynamicShortcutsEnabled(context)) {
-      LogUtil.i("ShortcutsJobScheduler.scheduleAllJobs", "enabling shortcuts");
-
-      PeriodicJobService.schedulePeriodicJob(context);
-    } else {
-      LogUtil.i("ShortcutsJobScheduler.scheduleAllJobs", "disabling shortcuts");
-
-      PeriodicJobService.cancelJob(context);
-    }
-  }
-}
diff --git a/java/com/android/dialer/shortcuts/res/drawable-anydpi-v26/ic_shortcut_add_contact.xml b/java/com/android/dialer/shortcuts/res/drawable-anydpi-v26/ic_shortcut_add_contact.xml
deleted file mode 100644
index 07ed172..0000000
--- a/java/com/android/dialer/shortcuts/res/drawable-anydpi-v26/ic_shortcut_add_contact.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
-  <background android:drawable="@color/shortcut_add_contact_background_color"/>
-
-  <foreground android:drawable="@drawable/ic_add_contact_foreground"/>
-</adaptive-icon>
diff --git a/java/com/android/dialer/shortcuts/res/drawable/ic_add_contact_foreground.xml b/java/com/android/dialer/shortcuts/res/drawable/ic_add_contact_foreground.xml
deleted file mode 100644
index 2baa051..0000000
--- a/java/com/android/dialer/shortcuts/res/drawable/ic_add_contact_foreground.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:gravity="center"
-    android:src="@drawable/quantum_ic_person_add_white_24"
-    android:tint="?android:attr/colorPrimary">
-</bitmap>
diff --git a/java/com/android/dialer/shortcuts/res/drawable/ic_shortcut_add_contact.xml b/java/com/android/dialer/shortcuts/res/drawable/ic_shortcut_add_contact.xml
index 59dc466..8d0f4b4 100644
--- a/java/com/android/dialer/shortcuts/res/drawable/ic_shortcut_add_contact.xml
+++ b/java/com/android/dialer/shortcuts/res/drawable/ic_shortcut_add_contact.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2016 The Android Open Source Project
+  ~ Copyright (C) 2017 The Android Open Source Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -14,26 +14,9 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-  <item
-    android:bottom="2dp"
-    android:left="2dp"
-    android:right="2dp"
-    android:top="2dp">
-    <shape android:shape="oval">
-      <size
-        android:height="44dp"
-        android:width="44dp"/>
-      <solid android:color="?android:attr/colorBackgroundFloating"/>
-    </shape>
-  </item>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+  <background android:drawable="@color/shortcut_add_contact_background_color"/>
 
-  <item
-    android:bottom="12dp"
-    android:left="10dp"
-    android:right="14dp"
-    android:top="12dp">
-      <bitmap android:src="@drawable/quantum_ic_person_add_white_24"
-              android:tint="?android:attr/colorPrimary"/>
-  </item>
-</layer-list>
+  <foreground android:drawable="@drawable/quantum_ic_person_add_vd_theme_24"
+      android:tint="?android:attr/colorPrimary"/>
+</adaptive-icon>
diff --git a/java/com/android/dialer/shortcuts/res/values/colors.xml b/java/com/android/dialer/shortcuts/res/values/colors.xml
index e20309b..08015a2 100644
--- a/java/com/android/dialer/shortcuts/res/values/colors.xml
+++ b/java/com/android/dialer/shortcuts/res/values/colors.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2016 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -15,6 +16,5 @@
   ~ limitations under the License
   -->
 <resources>
-  <color name="shortcut_add_contact_foreground_color">#2A56C6</color>
   <color name="shortcut_add_contact_background_color">#f5f5f5</color>
 </resources>
diff --git a/java/com/android/dialer/shortcuts/res/values/dimens.xml b/java/com/android/dialer/shortcuts/res/values/dimens.xml
index 369d38c..de2d3d8 100644
--- a/java/com/android/dialer/shortcuts/res/values/dimens.xml
+++ b/java/com/android/dialer/shortcuts/res/values/dimens.xml
@@ -15,6 +15,5 @@
   ~ limitations under the License
   -->
 <resources>
-  <dimen name="launcher_shortcut_icon_size">48dp</dimen>
   <dimen name="launcher_shortcut_adaptive_icon_size">108dp</dimen>
 </resources>
diff --git a/java/com/android/dialer/simulator/Simulator.java b/java/com/android/dialer/simulator/Simulator.java
index 11a07d9..985b3d1 100644
--- a/java/com/android/dialer/simulator/Simulator.java
+++ b/java/com/android/dialer/simulator/Simulator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +17,13 @@
 
 package com.android.dialer.simulator;
 
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringDef;
-import android.support.v7.app.AppCompatActivity;
 import android.view.ActionProvider;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringDef;
+import androidx.appcompat.app.AppCompatActivity;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Objects;
@@ -40,8 +43,8 @@
   })
   @interface ConferenceType {}
 
-  static final int CONFERENCE_TYPE_GSM = 1;
-  static final int CONFERENCE_TYPE_VOLTE = 2;
+  int CONFERENCE_TYPE_GSM = 1;
+  int CONFERENCE_TYPE_VOLTE = 2;
 
   /** The types of connection service listener events */
   @Retention(RetentionPolicy.SOURCE)
@@ -52,29 +55,22 @@
   })
   @interface ConnectionServiceEventType {}
 
-  static final int ON_NEW_OUTGOING_CONNECTION = 1;
-  static final int ON_NEW_INCOMING_CONNECTION = 2;
-  static final int ON_CONFERENCE = 3;
+  int ON_NEW_OUTGOING_CONNECTION = 1;
+  int ON_NEW_INCOMING_CONNECTION = 2;
+  int ON_CONFERENCE = 3;
 
-  static final String CALLER_ID_PRESENTATION_TYPE = "caller_id_";
+  String CALLER_ID_PRESENTATION_TYPE = "caller_id_";
 
   /** Bundle keys that are used in making fake call. */
   @Retention(RetentionPolicy.SOURCE)
   @StringDef({
     IS_VOLTE,
     PRESENTATION_CHOICE,
-    IS_ENRICHED_CALL,
   })
   @interface BundleKey {}
 
-  public final String IS_VOLTE = "ISVOLTE";
-  public final String PRESENTATION_CHOICE = "PRESENTATIONCHOICE";
-  public final String IS_ENRICHED_CALL = "ISENRICHEDCALL";
-
-  /** Phone numbers for outgoing and incoming enriched call scenario. */
-  public static final String ENRICHED_CALL_OUTGOING_NUMBER = "+55-31-2128-6800";
-
-  public static final String ENRICHED_CALL_INCOMING_NUMBER = "+44 (0) 20 7031 3000";
+  String IS_VOLTE = "ISVOLTE";
+  String PRESENTATION_CHOICE = "PRESENTATIONCHOICE";
 
   boolean isSimulatorMode();
 
@@ -83,7 +79,7 @@
   void disableSimulatorMode();
 
   /** Information about a connection event. */
-  public static class Event {
+  class Event {
     /** The type of connection event. */
     @Retention(RetentionPolicy.SOURCE)
     @IntDef({
@@ -131,7 +127,8 @@
     /**
      * Holds event specific information. For example, for STATE_CHANGE this could be the new state.
      */
-    @Nullable public final String data2;
+    @Nullable
+    public final String data2;
 
     public Event(@Type int type) {
       this(type, null, null);
@@ -159,7 +156,7 @@
 
     @Override
     public int hashCode() {
-      return Objects.hash(Integer.valueOf(type), data1, data2);
+      return Objects.hash(type, data1, data2);
     }
   }
 }
diff --git a/java/com/android/dialer/simulator/SimulatorComponent.java b/java/com/android/dialer/simulator/SimulatorComponent.java
index ff75e9f..ca7d9ec 100644
--- a/java/com/android/dialer/simulator/SimulatorComponent.java
+++ b/java/com/android/dialer/simulator/SimulatorComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,8 +18,10 @@
 package com.android.dialer.simulator;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.inject.IncludeInDialerRoot;
+
 import dagger.Subcomponent;
 
 /** Subcomponent that can be used to access the simulator implementation. */
@@ -27,8 +30,6 @@
 
   public abstract Simulator getSimulator();
 
-  public abstract SimulatorEnrichedCall getSimulatorEnrichedCall();
-
   public abstract SimulatorConnectionsBank getSimulatorConnectionsBank();
 
   public static SimulatorComponent get(Context context) {
diff --git a/java/com/android/dialer/simulator/SimulatorConnectionsBank.java b/java/com/android/dialer/simulator/SimulatorConnectionsBank.java
index 23c0042..a91a8bf 100644
--- a/java/com/android/dialer/simulator/SimulatorConnectionsBank.java
+++ b/java/com/android/dialer/simulator/SimulatorConnectionsBank.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,12 @@
 package com.android.dialer.simulator;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
 import android.telecom.Connection;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.simulator.Simulator.ConferenceType;
+
 import java.util.List;
 
 /**
diff --git a/java/com/android/dialer/simulator/SimulatorEnrichedCall.java b/java/com/android/dialer/simulator/SimulatorEnrichedCall.java
deleted file mode 100644
index ae9447b..0000000
--- a/java/com/android/dialer/simulator/SimulatorEnrichedCall.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.simulator;
-
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.google.common.util.concurrent.ListenableFuture;
-
-/** Setup enriched calling environment for {@link Simulator}. */
-public interface SimulatorEnrichedCall extends EnrichedCallManager.StateChangedListener {
-  /** Setup a session for an incoming enriched call. */
-  ListenableFuture<Void> setupIncomingEnrichedCall(String number);
-
-  /** Setup a session for outgoing enriched call. */
-  ListenableFuture<Void> setupOutgoingEnrichedCall(String number);
-}
diff --git a/java/com/android/dialer/simulator/impl/AndroidManifest.xml b/java/com/android/dialer/simulator/impl/AndroidManifest.xml
deleted file mode 100644
index 718d50e..0000000
--- a/java/com/android/dialer/simulator/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.simulator.impl">
-
-  <application>
-
-    <service
-      android:exported="true"
-      android:name=".SimulatorConnectionService"
-      android:permission="android.permission.BIND_CONNECTION_SERVICE">
-      <intent-filter>
-        <action android:name="android.telecomm.ConnectionService"/>
-      </intent-filter>
-    </service>
-
-  </application>
-
-</manifest>
diff --git a/java/com/android/dialer/simulator/impl/NonSimulatorConnectionListener.java b/java/com/android/dialer/simulator/impl/NonSimulatorConnectionListener.java
index 66027fc..6515c98 100644
--- a/java/com/android/dialer/simulator/impl/NonSimulatorConnectionListener.java
+++ b/java/com/android/dialer/simulator/impl/NonSimulatorConnectionListener.java
@@ -16,9 +16,11 @@
 
 package com.android.dialer.simulator.impl;
 
-import android.support.annotation.NonNull;
 import android.telecom.Connection.RttModifyStatus;
 import android.telecom.DisconnectCause;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.ThreadUtil;
diff --git a/java/com/android/dialer/simulator/impl/RttChatBot.java b/java/com/android/dialer/simulator/impl/RttChatBot.java
index cd52343..ff633be 100644
--- a/java/com/android/dialer/simulator/impl/RttChatBot.java
+++ b/java/com/android/dialer/simulator/impl/RttChatBot.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,22 +17,23 @@
 
 package com.android.dialer.simulator.impl;
 
-import android.annotation.TargetApi;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Looper;
-import android.support.annotation.MainThread;
 import android.telecom.Connection.RttTextStream;
+
+import androidx.annotation.MainThread;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.rtt.protocol.Constants;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
 
 /** Chat bot to generate remote RTT chat messages. */
-@TargetApi(28)
 class RttChatBot {
 
   interface Callback {
diff --git a/java/com/android/dialer/simulator/impl/SimulatorConference.java b/java/com/android/dialer/simulator/impl/SimulatorConference.java
index 1a12d2a..de78812 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorConference.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorConference.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,15 +17,18 @@
 
 package com.android.dialer.simulator.impl;
 
-import android.support.annotation.NonNull;
 import android.telecom.CallAudioState;
 import android.telecom.Conference;
 import android.telecom.Connection;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.simulator.Simulator;
 import com.android.dialer.simulator.Simulator.Event;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/java/com/android/dialer/simulator/impl/SimulatorConferenceCreator.java b/java/com/android/dialer/simulator/impl/SimulatorConferenceCreator.java
index aec9398..4bb10da 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorConferenceCreator.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorConferenceCreator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,9 +19,11 @@
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
 import android.telecom.Connection;
 import android.telecom.DisconnectCause;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.ThreadUtil;
@@ -28,6 +31,7 @@
 import com.android.dialer.simulator.Simulator.Event;
 import com.android.dialer.simulator.SimulatorComponent;
 import com.android.dialer.simulator.SimulatorConnectionsBank;
+
 import java.util.ArrayList;
 import java.util.Locale;
 
@@ -38,7 +42,8 @@
         SimulatorConference.Listener {
   private static final String EXTRA_CALL_COUNT = "call_count";
   private static final String RECONNECT = "reconnect";
-  @NonNull private final Context context;
+  @NonNull
+  private final Context context;
 
   private final SimulatorConnectionsBank simulatorConnectionsBank;
 
diff --git a/java/com/android/dialer/simulator/impl/SimulatorConnection.java b/java/com/android/dialer/simulator/impl/SimulatorConnection.java
index 3aa3296..d8bd89f 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorConnection.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorConnection.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,25 +17,24 @@
 
 package com.android.dialer.simulator.impl;
 
-import android.annotation.TargetApi;
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v4.os.BuildCompat;
 import android.telecom.Connection;
-import android.telecom.Connection.RttTextStream;
 import android.telecom.ConnectionRequest;
 import android.telecom.VideoProfile;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.simulator.Simulator;
 import com.android.dialer.simulator.Simulator.Event;
 import com.android.dialer.simulator.SimulatorComponent;
 import com.android.dialer.simulator.SimulatorConnectionsBank;
+
 import java.util.ArrayList;
 import java.util.List;
 
 /** Represents a single phone call on the device. */
-@TargetApi(28)
 public final class SimulatorConnection extends Connection {
   private final List<Listener> listeners = new ArrayList<>();
   private final List<Event> events = new ArrayList<>();
@@ -51,7 +51,8 @@
         CAPABILITY_MUTE
             | CAPABILITY_SUPPORT_HOLD
             | CAPABILITY_HOLD
-            | CAPABILITY_CAN_UPGRADE_TO_VIDEO
+            | CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL
+            | CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL
             | CAPABILITY_DISCONNECT_FROM_CONFERENCE);
 
     if (request.getExtras() != null) {
@@ -60,9 +61,7 @@
             getConnectionCapabilities() | CAPABILITY_SEPARATE_FROM_CONFERENCE);
       }
     }
-    if (BuildCompat.isAtLeastP()) {
-      rttTextStream = request.getRttTextStream();
-    }
+    rttTextStream = request.getRttTextStream();
     setVideoProvider(new SimulatorVideoProvider(context, this));
     simulatorConnectionsBank = SimulatorComponent.get(context).getSimulatorConnectionsBank();
   }
diff --git a/java/com/android/dialer/simulator/impl/SimulatorConnectionService.java b/java/com/android/dialer/simulator/impl/SimulatorConnectionService.java
index 8430e24..fa3ab06 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorConnectionService.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorConnectionService.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,6 @@
 
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
 import android.telecom.Connection;
 import android.telecom.ConnectionRequest;
 import android.telecom.ConnectionService;
@@ -27,12 +27,16 @@
 import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
 import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.ThreadUtil;
 import com.android.dialer.simulator.Simulator;
 import com.android.dialer.simulator.SimulatorComponent;
 import com.android.dialer.simulator.SimulatorConnectionsBank;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/java/com/android/dialer/simulator/impl/SimulatorConnectionsBankImpl.java b/java/com/android/dialer/simulator/impl/SimulatorConnectionsBankImpl.java
index 75f144f..04c3174 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorConnectionsBankImpl.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorConnectionsBankImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,18 +18,22 @@
 package com.android.dialer.simulator.impl;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
 import android.telecom.Conferenceable;
 import android.telecom.Connection;
 import android.telecom.DisconnectCause;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.simulator.Simulator;
 import com.android.dialer.simulator.Simulator.ConferenceType;
 import com.android.dialer.simulator.Simulator.Event;
 import com.android.dialer.simulator.SimulatorConnectionsBank;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+
 import javax.inject.Inject;
 
 /** Wraps a list of connection tags and common methods around the connection tags list. */
diff --git a/java/com/android/dialer/simulator/impl/SimulatorDialogFragment.java b/java/com/android/dialer/simulator/impl/SimulatorDialogFragment.java
index dcf8032..3afcbfa 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorDialogFragment.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorDialogFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,10 +20,13 @@
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.os.Bundle;
-import android.support.v4.app.DialogFragment;
 import android.telecom.TelecomManager;
 import android.widget.EditText;
 
+import androidx.fragment.app.DialogFragment;
+
+import com.android.dialer.R;
+
 /** Holds dialog logic for creating different types of voice calls. */
 public final class SimulatorDialogFragment extends DialogFragment {
 
diff --git a/java/com/android/dialer/simulator/impl/SimulatorImpl.java b/java/com/android/dialer/simulator/impl/SimulatorImpl.java
index ee910ba..8e40885 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorImpl.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,12 +17,13 @@
 
 package com.android.dialer.simulator.impl;
 
-import android.support.v7.app.AppCompatActivity;
 import android.view.ActionProvider;
-import com.android.dialer.buildtype.BuildType;
-import com.android.dialer.buildtype.BuildType.Type;
+
+import androidx.appcompat.app.AppCompatActivity;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.simulator.Simulator;
+
 import javax.inject.Inject;
 
 /** The entry point for the simulator feature. */
@@ -34,7 +36,7 @@
 
   @Override
   public boolean shouldShow() {
-    return BuildType.get() == Type.BUGFOOD || LogUtil.isDebugEnabled();
+    return LogUtil.isDebugEnabled();
   }
 
   @Override
diff --git a/java/com/android/dialer/simulator/impl/SimulatorMainPortal.java b/java/com/android/dialer/simulator/impl/SimulatorMainPortal.java
index 2612757..caea72a 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorMainPortal.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorMainPortal.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,12 +18,13 @@
 package com.android.dialer.simulator.impl;
 
 import android.content.Context;
-import android.support.v7.app.AppCompatActivity;
 import android.telecom.TelecomManager;
 import android.telecom.VideoProfile;
 import android.view.ActionProvider;
+
+import androidx.appcompat.app.AppCompatActivity;
+
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.enrichedcall.simulator.EnrichedCallSimulatorActivity;
 import com.android.dialer.simulator.Simulator;
 import com.android.dialer.simulator.SimulatorComponent;
 import com.google.common.collect.ImmutableMap;
@@ -102,11 +104,6 @@
                     .put("Clean database", () -> SimulatorUtils.cleanDatabase(context))
                     .put("clear preferred SIM", () -> SimulatorUtils.clearPreferredSim(context))
                     .put("Sync voicemail", () -> SimulatorUtils.syncVoicemail(context))
-                    .put("Share persistent log", () -> SimulatorUtils.sharePersistentLog(context))
-                    .put(
-                        "Enriched call simulator",
-                        () ->
-                            context.startActivity(EnrichedCallSimulatorActivity.newIntent(context)))
                     .put(
                         "Enable simulator mode",
                         () -> {
@@ -160,12 +157,6 @@
                         new SimulatorVoiceCall(context)
                             .addCustomizedOutgoingCall(this.callerId, this.presentation))
                 .put(
-                    "Incoming enriched call",
-                    () -> new SimulatorVoiceCall(context).incomingEnrichedCall())
-                .put(
-                    "Outgoing enriched call",
-                    () -> new SimulatorVoiceCall(context).outgoingEnrichedCall())
-                .put(
                     "Spam incoming call",
                     () -> new SimulatorVoiceCall(context).addSpamIncomingCall())
                 .put(
diff --git a/java/com/android/dialer/simulator/impl/SimulatorMenu.java b/java/com/android/dialer/simulator/impl/SimulatorMenu.java
index 0c8f242..caf754f 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorMenu.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorMenu.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,20 +18,23 @@
 package com.android.dialer.simulator.impl;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
 import android.view.ActionProvider;
 import android.view.MenuItem;
 import android.view.SubMenu;
 import android.view.View;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
+
 import java.util.Map.Entry;
 
 /** Makes option menu for simulator. */
 public final class SimulatorMenu extends ActionProvider {
 
-  SimulatorPortalEntryGroup portal;
+  final SimulatorPortalEntryGroup portal;
 
-  Context context;
+  final Context context;
 
   public SimulatorMenu(@NonNull Context context, SimulatorPortalEntryGroup portal) {
     super(Assert.isNotNull(context));
diff --git a/java/com/android/dialer/simulator/impl/SimulatorMissedCallCreator.java b/java/com/android/dialer/simulator/impl/SimulatorMissedCallCreator.java
index b855615..dc13903 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorMissedCallCreator.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorMissedCallCreator.java
@@ -18,9 +18,11 @@
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
 import android.telecom.Connection;
 import android.telecom.DisconnectCause;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.ThreadUtil;
diff --git a/java/com/android/dialer/simulator/impl/SimulatorModule.java b/java/com/android/dialer/simulator/impl/SimulatorModule.java
index af554b6..3a8ae3c 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorModule.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,16 +17,15 @@
 
 package com.android.dialer.simulator.impl;
 
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
 import com.android.dialer.simulator.Simulator;
 import com.android.dialer.simulator.SimulatorConnectionsBank;
-import dagger.Binds;
-import dagger.Module;
+
 import javax.inject.Singleton;
 
+import dagger.Binds;
+import dagger.Module;
+
 /** This module provides an instance of the simulator. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module
 public abstract class SimulatorModule {
   @Binds
diff --git a/java/com/android/dialer/simulator/impl/SimulatorPortalEntryGroup.java b/java/com/android/dialer/simulator/impl/SimulatorPortalEntryGroup.java
index 200b10f..e6db99d 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorPortalEntryGroup.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorPortalEntryGroup.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import com.google.auto.value.AutoValue;
 import com.google.common.collect.ImmutableMap;
+
 import java.util.Collections;
 import java.util.Map;
 
diff --git a/java/com/android/dialer/simulator/impl/SimulatorPreviewCamera.java b/java/com/android/dialer/simulator/impl/SimulatorPreviewCamera.java
index e089f75..d402e5f 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorPreviewCamera.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorPreviewCamera.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,15 +26,21 @@
 import android.hardware.camera2.CameraManager;
 import android.hardware.camera2.CameraMetadata;
 import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.params.OutputConfiguration;
+import android.hardware.camera2.params.SessionConfiguration;
 import android.hardware.camera2.params.StreamConfigurationMap;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telecom.VideoProfile.CameraCapabilities;
 import android.util.Size;
 import android.view.Surface;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import java.util.Arrays;
+
+import java.util.Collections;
+import java.util.concurrent.Executors;
 
 /**
  * Used by the video provider to draw the local camera. The in-call UI is responsible for setting
@@ -41,10 +48,12 @@
  * capture frames from the given camera and draw to the given view.
  */
 final class SimulatorPreviewCamera {
-  @NonNull private final Context context;
+  @NonNull
+  private final Context context;
   @NonNull private final String cameraId;
   @NonNull private final Surface surface;
-  @Nullable private CameraDevice camera;
+  @Nullable
+  private CameraDevice camera;
   private boolean isStopped;
 
   SimulatorPreviewCamera(
@@ -110,10 +119,11 @@
       }
 
       try {
-        camera.createCaptureSession(
-            Arrays.asList(Assert.isNotNull(surface)),
-            new CaptureSessionCallback(),
-            null /* handler */);
+        OutputConfiguration out = new OutputConfiguration(surface);
+        SessionConfiguration cfg = new SessionConfiguration(SessionConfiguration.SESSION_REGULAR,
+                Collections.singletonList(Assert.isNotNull(out)),
+                Executors.newSingleThreadExecutor(), new CaptureSessionCallback());
+        camera.createCaptureSession(cfg);
       } catch (CameraAccessException e) {
         throw Assert.createIllegalStateFailException("camera error: " + e);
       }
diff --git a/java/com/android/dialer/simulator/impl/SimulatorRemoteVideo.java b/java/com/android/dialer/simulator/impl/SimulatorRemoteVideo.java
index b14bba3..96a2826 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorRemoteVideo.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorRemoteVideo.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,10 +22,12 @@
 import android.graphics.Paint;
 import android.os.Handler;
 import android.os.HandlerThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
+import android.os.Looper;
 import android.view.Surface;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 
@@ -34,7 +37,8 @@
  * green screen with a ball bouncing around.
  */
 final class SimulatorRemoteVideo {
-  @NonNull private final RenderThread thread;
+  @NonNull
+  private final RenderThread thread;
   private boolean isStopped;
 
   SimulatorRemoteVideo(@NonNull Surface surface) {
@@ -53,11 +57,6 @@
     thread.quitSafely();
   }
 
-  @VisibleForTesting
-  Runnable getRenderer() {
-    return thread.getRenderer();
-  }
-
   private static class Renderer implements Runnable {
     private static final int FRAME_DELAY_MILLIS = 33;
     private static final float CIRCLE_STEP = 16.0f;
@@ -81,7 +80,7 @@
     @WorkerThread
     void schedule() {
       Assert.isWorkerThread();
-      new Handler().postDelayed(this, FRAME_DELAY_MILLIS);
+      new Handler(Looper.getMainLooper()).postDelayed(this, FRAME_DELAY_MILLIS);
     }
 
     @WorkerThread
@@ -155,9 +154,5 @@
       renderer.schedule();
     }
 
-    @VisibleForTesting
-    Runnable getRenderer() {
-      return renderer;
-    }
   }
 }
diff --git a/java/com/android/dialer/simulator/impl/SimulatorRttCall.java b/java/com/android/dialer/simulator/impl/SimulatorRttCall.java
index 62e05a7..c4cb175 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorRttCall.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorRttCall.java
@@ -17,10 +17,12 @@
 package com.android.dialer.simulator.impl;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telecom.Connection;
 import android.telecom.DisconnectCause;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.ThreadUtil;
@@ -32,7 +34,8 @@
     implements SimulatorConnectionService.Listener, SimulatorConnection.Listener {
 
   @NonNull private final Context context;
-  @Nullable private String connectionTag;
+  @Nullable
+  private String connectionTag;
   private RttChatBot rttChatBot;
 
   SimulatorRttCall(@NonNull Context context) {
diff --git a/java/com/android/dialer/simulator/impl/SimulatorSimCallManager.java b/java/com/android/dialer/simulator/impl/SimulatorSimCallManager.java
index 0296ace..9a07947 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorSimCallManager.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorSimCallManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,20 +21,22 @@
 import android.content.Context;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
 import android.telecom.Connection;
 import android.telecom.ConnectionRequest;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.strictmode.StrictModeUtils;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Random;
 
@@ -67,23 +70,19 @@
   public static void register(@NonNull Context context) {
     LogUtil.enterBlock("SimulatorSimCallManager.register");
     Assert.isNotNull(context);
-    StrictModeUtils.bypass(
-        () -> {
-          TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
-          telecomManager.registerPhoneAccount(buildSimCallManagerAccount(context));
-          telecomManager.registerPhoneAccount(buildVideoProviderAccount(context));
-        });
+
+    TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+    telecomManager.registerPhoneAccount(buildSimCallManagerAccount(context));
+    telecomManager.registerPhoneAccount(buildVideoProviderAccount(context));
   }
 
   public static void unregister(@NonNull Context context) {
     LogUtil.enterBlock("SimulatorSimCallManager.unregister");
     Assert.isNotNull(context);
-    StrictModeUtils.bypass(
-        () -> {
-          TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
-          telecomManager.unregisterPhoneAccount(getSimCallManagerHandle(context));
-          telecomManager.unregisterPhoneAccount(getVideoProviderHandle(context));
-        });
+
+    TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+    telecomManager.unregisterPhoneAccount(getSimCallManagerHandle(context));
+    telecomManager.unregisterPhoneAccount(getVideoProviderHandle(context));
   }
 
   @NonNull
@@ -167,7 +166,7 @@
     return new PhoneAccount.Builder(getSimCallManagerHandle(context), "Simulator SIM call manager")
         .setCapabilities(PhoneAccount.CAPABILITY_CONNECTION_MANAGER | PhoneAccount.CAPABILITY_RTT)
         .setShortDescription("Simulator SIM call manager")
-        .setSupportedUriSchemes(Arrays.asList(PhoneAccount.SCHEME_TEL))
+        .setSupportedUriSchemes(Collections.singletonList(PhoneAccount.SCHEME_TEL))
         .build();
   }
 
@@ -179,7 +178,7 @@
                 | PhoneAccount.CAPABILITY_SUPPORTS_VIDEO_CALLING
                 | PhoneAccount.CAPABILITY_VIDEO_CALLING)
         .setShortDescription("Simulator video provider")
-        .setSupportedUriSchemes(Arrays.asList(PhoneAccount.SCHEME_TEL))
+        .setSupportedUriSchemes(Collections.singletonList(PhoneAccount.SCHEME_TEL))
         .build();
   }
 
diff --git a/java/com/android/dialer/simulator/impl/SimulatorUtils.java b/java/com/android/dialer/simulator/impl/SimulatorUtils.java
index 9e46f5a..c86c61e 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorUtils.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,17 +22,18 @@
 import android.content.Intent;
 import android.provider.VoicemailContract;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.databasepopulator.BlockedBumberPopulator;
 import com.android.dialer.databasepopulator.CallLogPopulator;
 import com.android.dialer.databasepopulator.ContactsPopulator;
 import com.android.dialer.databasepopulator.VoicemailPopulator;
-import com.android.dialer.persistentlog.PersistentLogger;
 import com.android.dialer.preferredsim.PreferredSimFallbackContract;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -103,23 +105,6 @@
     context.sendBroadcast(intent);
   }
 
-  public static void sharePersistentLog(@NonNull Context context) {
-    DialerExecutorComponent.get(context)
-        .dialerExecutorFactory()
-        .createNonUiTaskBuilder(new ShareLogWorker())
-        .onSuccess(
-            (String log) -> {
-              Intent intent = new Intent(Intent.ACTION_SEND);
-              intent.setType("text/plain");
-              intent.putExtra(Intent.EXTRA_TEXT, log);
-              if (intent.resolveActivity(context.getPackageManager()) != null) {
-                context.startActivity(intent);
-              }
-            })
-        .build()
-        .executeSerial(null);
-  }
-
   public static void addVoicemailNotifications(@NonNull Context context, int notificationNum) {
     LogUtil.enterBlock("SimulatorNotifications.addVoicemailNotifications");
     List<ContentValues> voicemails = new ArrayList<>();
@@ -139,7 +124,7 @@
         .getContentResolver()
         .bulkInsert(
             Voicemails.buildSourceUri(context.getPackageName()),
-            voicemails.toArray(new ContentValues[voicemails.size()]));
+            voicemails.toArray(new ContentValues[0]));
   }
 
   private static class PopulateVoicemailWorker
@@ -170,7 +155,6 @@
       ContactsPopulator.deleteAllContacts(context);
       CallLogPopulator.deleteAllCallLog(context);
       VoicemailPopulator.deleteAllVoicemail(context);
-      BlockedBumberPopulator.deleteBlockedNumbers(context);
       return null;
     }
   }
@@ -184,17 +168,9 @@
     }
   }
 
-  private static class ShareLogWorker implements Worker<Void, String> {
-    @Nullable
-    @Override
-    public String doInBackground(Void unused) {
-      return PersistentLogger.dumpLogToString();
-    }
-  }
-
   private static class PopulateDatabaseWorkerInput {
-    Context context;
-    boolean fastMode;
+    final Context context;
+    final boolean fastMode;
 
     PopulateDatabaseWorkerInput(Context context, boolean fastMode) {
       this.context = context;
diff --git a/java/com/android/dialer/simulator/impl/SimulatorVideoCall.java b/java/com/android/dialer/simulator/impl/SimulatorVideoCall.java
index 986ed99..9dfe078 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorVideoCall.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorVideoCall.java
@@ -18,12 +18,14 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telecom.Connection;
 import android.telecom.DisconnectCause;
 import android.telecom.TelecomManager;
 import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.ThreadUtil;
@@ -32,10 +34,12 @@
 /** Entry point in the simulator to create video calls. */
 final class SimulatorVideoCall
     implements SimulatorConnectionService.Listener, SimulatorConnection.Listener {
-  @NonNull private final Context context;
+  @NonNull
+  private final Context context;
   private final int initialVideoCapability;
   private final int initialVideoState;
-  @Nullable private String connectionTag;
+  @Nullable
+  private String connectionTag;
 
   SimulatorVideoCall(@NonNull Context context, int initialVideoState) {
     this.context = Assert.isNotNull(context);
@@ -75,7 +79,7 @@
       handleNewConnection(connection);
       // Telecom will force the connection to switch to Dialing when we return it. Wait until after
       // we're returned it before changing call state.
-      ThreadUtil.postOnUiThread(() -> connection.setActive());
+      ThreadUtil.postOnUiThread(connection::setActive);
     }
   }
 
@@ -100,7 +104,9 @@
   }
 
   private void showVideoAccountSettings() {
-    context.startActivity(new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS));
+    Intent intent = new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS);
+    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+    context.startActivity(intent);
     Toast.makeText(context, "Please enable simulator video provider", Toast.LENGTH_LONG).show();
   }
 
diff --git a/java/com/android/dialer/simulator/impl/SimulatorVideoProvider.java b/java/com/android/dialer/simulator/impl/SimulatorVideoProvider.java
index 0ed81da..2eb9a31 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorVideoProvider.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorVideoProvider.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,11 +19,13 @@
 
 import android.content.Context;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telecom.Connection;
 import android.telecom.VideoProfile;
 import android.view.Surface;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.simulator.Simulator.Event;
@@ -33,10 +36,12 @@
  * done by {@link SimulatorPreviewCamera} and {@link SimulatorRemoteVideo} respectively.
  */
 final class SimulatorVideoProvider extends Connection.VideoProvider {
-  @NonNull private final Context context;
+  @NonNull
+  private final Context context;
   @NonNull private final SimulatorConnection connection;
-  @Nullable private String previewCameraId;;
-  @Nullable private SimulatorPreviewCamera simulatorPreviewCamera;
+  @Nullable private String previewCameraId;
+  @Nullable
+  private SimulatorPreviewCamera simulatorPreviewCamera;
   @Nullable private SimulatorRemoteVideo simulatorRemoteVideo;
 
   SimulatorVideoProvider(@NonNull Context context, @NonNull SimulatorConnection connection) {
diff --git a/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java b/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java
index 9e38470..2db8fe1 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,73 +19,35 @@
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
 import android.telecom.Connection;
 import android.telecom.Connection.RttModifyStatus;
 import android.telecom.DisconnectCause;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
 import com.android.dialer.simulator.Simulator;
 import com.android.dialer.simulator.Simulator.Event;
-import com.android.dialer.simulator.SimulatorComponent;
-import com.android.dialer.simulator.SimulatorEnrichedCall;
 
 /** Entry point in the simulator to create voice calls. */
 final class SimulatorVoiceCall
     implements SimulatorConnectionService.Listener, SimulatorConnection.Listener {
-  @NonNull private final Context context;
-  @Nullable private String connectionTag;
-  private final SimulatorEnrichedCall simulatorEnrichedCall;
+  @NonNull
+  private final Context context;
+  @Nullable
+  private String connectionTag;
 
   SimulatorVoiceCall(@NonNull Context context) {
     this.context = Assert.isNotNull(context);
-    simulatorEnrichedCall = SimulatorComponent.get(context).getSimulatorEnrichedCall();
     SimulatorConnectionService.addListener(this);
     SimulatorConnectionService.addListener(
         new SimulatorConferenceCreator(context, Simulator.CONFERENCE_TYPE_GSM));
   }
 
-  void incomingEnrichedCall() {
-    simulatorEnrichedCall
-        .setupIncomingEnrichedCall(Simulator.ENRICHED_CALL_INCOMING_NUMBER)
-        .addListener(
-            () -> {
-              Bundle extras = new Bundle();
-              extras.putBoolean(Simulator.IS_ENRICHED_CALL, true);
-              connectionTag =
-                  SimulatorSimCallManager.addNewIncomingCall(
-                      context,
-                      Simulator.ENRICHED_CALL_INCOMING_NUMBER,
-                      SimulatorSimCallManager.CALL_TYPE_VOICE,
-                      extras);
-            },
-            DialerExecutorComponent.get(context).uiExecutor());
-  }
-
-  void outgoingEnrichedCall() {
-    getEnrichedCallManager().registerStateChangedListener(simulatorEnrichedCall);
-    simulatorEnrichedCall
-        .setupOutgoingEnrichedCall(Simulator.ENRICHED_CALL_OUTGOING_NUMBER)
-        .addListener(
-            () -> {
-              Bundle extras = new Bundle();
-              extras.putBoolean(Simulator.IS_ENRICHED_CALL, true);
-              connectionTag =
-                  SimulatorSimCallManager.addNewOutgoingCall(
-                      context,
-                      Simulator.ENRICHED_CALL_OUTGOING_NUMBER,
-                      SimulatorSimCallManager.CALL_TYPE_VOICE,
-                      extras);
-            },
-            DialerExecutorComponent.get(context).uiExecutor());
-  }
-
   void addNewIncomingCall() {
     String callerId = "+44 (0) 20 7031 3000" /* Google London office */;
     connectionTag =
@@ -206,9 +169,6 @@
         break;
       case Event.DISCONNECT:
         connection.setDisconnected(new DisconnectCause(DisconnectCause.LOCAL));
-        if (connection.getExtras().getBoolean(Simulator.IS_ENRICHED_CALL)) {
-          getEnrichedCallManager().unregisterStateChangedListener(simulatorEnrichedCall);
-        }
         break;
       case Event.SESSION_MODIFY_REQUEST:
         ThreadUtil.postDelayedOnUiThread(() -> connection.handleSessionModifyRequest(event), 2000);
@@ -227,9 +187,4 @@
         break;
     }
   }
-
-  @NonNull
-  private EnrichedCallManager getEnrichedCallManager() {
-    return EnrichedCallComponent.get(context).getEnrichedCallManager();
-  }
 }
diff --git a/java/com/android/dialer/simulator/service/AndroidManifest.xml b/java/com/android/dialer/simulator/service/AndroidManifest.xml
deleted file mode 100644
index 37f26ba..0000000
--- a/java/com/android/dialer/simulator/service/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.simulator.service">
-
-  <application>
-
-    <service
-        android:name=".SimulatorService"
-        android:exported="true">
-    </service>
-
-  </application>
-
-</manifest>
\ No newline at end of file
diff --git a/java/com/android/dialer/simulator/service/ISimulatorService.aidl b/java/com/android/dialer/simulator/service/ISimulatorService.aidl
index 77511cc..cbf0a7a 100644
--- a/java/com/android/dialer/simulator/service/ISimulatorService.aidl
+++ b/java/com/android/dialer/simulator/service/ISimulatorService.aidl
@@ -16,16 +16,6 @@
   * */
  void makeOutgoingCall(String callerId, int presentation);
  /**
-  * Makes an incoming enriched call.
-  * Note: simulator mode should be enabled first.
-  * */
- void makeIncomingEnrichedCall();
- /**
-  * Makes an outgoing enriched call.
-  * Note: simulator mode should be enabled first.
-  * */
- void makeOutgoingEnrichedCall();
- /**
   * Populate missed call logs.
   * @param num the number of missed call to make with this api.
   * */
@@ -37,9 +27,8 @@
  /**
   * Enable simulator mode. After entering simulator mode, all calls made by dialer will be handled
   * by simulator connection service, meaning users can directly make fake calls through simulator.
-  * It is also a prerequisite to make an enriched call.
   * */
  void enableSimulatorMode();
  /** Disable simulator mode to use system connection service. */
  void disableSimulatorMode();
-}
\ No newline at end of file
+}
diff --git a/java/com/android/dialer/simulator/service/SimulatorService.java b/java/com/android/dialer/simulator/service/SimulatorService.java
index 9b51b1b..ee4b8c6 100644
--- a/java/com/android/dialer/simulator/service/SimulatorService.java
+++ b/java/com/android/dialer/simulator/service/SimulatorService.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,12 +30,15 @@
 import android.os.IBinder;
 import android.os.Process;
 import android.os.RemoteException;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.simulator.impl.SimulatorMainPortal;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
+
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
+import java.util.Optional;
 
 /**
  * A secured android service that gives clients simulator api access through binder if clients do
@@ -50,8 +54,6 @@
   private static final String NOTIFICATIONS = "Notifications";
   private static final String CUSTOMIZED_INCOMING_CALL = "Customized incoming call";
   private static final String CUSTOMIZED_OUTGOING_CALL = "Customized outgoing call";
-  private static final String INCOMING_ENRICHED_CALL = "Incoming enriched call";
-  private static final String OUTGOING_ENRICHED_CALL = "Outgoing enriched call";
   private static final String MISSED_CALL = "Missed calls (few)";
 
   // Certificates that used for checking whether a client is a trusted client.
@@ -89,50 +91,22 @@
 
         @Override
         public void populateDataBase() throws RemoteException {
-          doSecurityCheck(
-              () -> {
-                simulatorMainPortal.execute(new String[] {POPULATE_DATABASE});
-              });
+          doSecurityCheck(() -> simulatorMainPortal.execute(new String[] {POPULATE_DATABASE}));
         }
 
         @Override
         public void cleanDataBase() throws RemoteException {
-          doSecurityCheck(
-              () -> {
-                simulatorMainPortal.execute(new String[] {CLEAN_DATABASE});
-              });
+          doSecurityCheck(() -> simulatorMainPortal.execute(new String[] {CLEAN_DATABASE}));
         }
 
         @Override
         public void enableSimulatorMode() throws RemoteException {
-          doSecurityCheck(
-              () -> {
-                simulatorMainPortal.execute(new String[] {ENABLE_SIMULATOR_MODE});
-              });
+          doSecurityCheck(() -> simulatorMainPortal.execute(new String[] {ENABLE_SIMULATOR_MODE}));
         }
 
         @Override
         public void disableSimulatorMode() throws RemoteException {
-          doSecurityCheck(
-              () -> {
-                simulatorMainPortal.execute(new String[] {DISABLE_SIMULATOR_MODE});
-              });
-        }
-
-        @Override
-        public void makeIncomingEnrichedCall() throws RemoteException {
-          doSecurityCheck(
-              () -> {
-                simulatorMainPortal.execute(new String[] {VOICECALL, INCOMING_ENRICHED_CALL});
-              });
-        }
-
-        @Override
-        public void makeOutgoingEnrichedCall() throws RemoteException {
-          doSecurityCheck(
-              () -> {
-                simulatorMainPortal.execute(new String[] {VOICECALL, OUTGOING_ENRICHED_CALL});
-              });
+          doSecurityCheck(() -> simulatorMainPortal.execute(new String[] {DISABLE_SIMULATOR_MODE}));
         }
 
         @Override
@@ -193,7 +167,7 @@
         return Optional.of(processInfo.processName);
       }
     }
-    return Optional.absent();
+    return Optional.empty();
   }
 
   private static boolean isCertificateValid(
diff --git a/java/com/android/dialer/simulator/service/SimulatorServiceClient.java b/java/com/android/dialer/simulator/service/SimulatorServiceClient.java
index 7917dfb..e48dfab 100644
--- a/java/com/android/dialer/simulator/service/SimulatorServiceClient.java
+++ b/java/com/android/dialer/simulator/service/SimulatorServiceClient.java
@@ -45,8 +45,6 @@
     }
   }
 
-  private void onServiceDisconnected() {}
-
   static class SimulatorServiceConnection implements ServiceConnection {
 
     private SimulatorServiceClient client;
@@ -60,7 +58,6 @@
 
     @Override
     public void onServiceDisconnected(ComponentName name) {
-      client.onServiceDisconnected();
     }
 
     void bindToClient(SimulatorServiceClient client) {
diff --git a/java/com/android/dialer/simulator/stub/SimulatorEnrichedCallStub.java b/java/com/android/dialer/simulator/stub/SimulatorEnrichedCallStub.java
deleted file mode 100644
index 5b07271..0000000
--- a/java/com/android/dialer/simulator/stub/SimulatorEnrichedCallStub.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.simulator.stub;
-
-import com.android.dialer.simulator.SimulatorEnrichedCall;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import javax.inject.Inject;
-
-/** Stub implementation of {@link SimulatorEnrichedCall}. */
-public class SimulatorEnrichedCallStub implements SimulatorEnrichedCall {
-
-  @Inject
-  public SimulatorEnrichedCallStub() {}
-
-  @Override
-  public ListenableFuture<Void> setupIncomingEnrichedCall(String number) {
-    return Futures.immediateFuture(null);
-  }
-
-  @Override
-  public ListenableFuture<Void> setupOutgoingEnrichedCall(String number) {
-    return Futures.immediateFuture(null);
-  }
-
-  @Override
-  public void onEnrichedCallStateChanged() {}
-}
diff --git a/java/com/android/dialer/simulator/stub/StubSimulatorEnrichedCallModule.java b/java/com/android/dialer/simulator/stub/StubSimulatorEnrichedCallModule.java
deleted file mode 100644
index 6a002f0..0000000
--- a/java/com/android/dialer/simulator/stub/StubSimulatorEnrichedCallModule.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.simulator.stub;
-
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.dialer.simulator.SimulatorEnrichedCall;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-/** Provides a stub instance of SimulatorEnrichedCall. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public abstract class StubSimulatorEnrichedCallModule {
-  @Binds
-  @Singleton
-  public abstract SimulatorEnrichedCall bindsSimulatorEnrichedCall(
-      SimulatorEnrichedCallStub simulatorEnrichedCall);
-}
diff --git a/java/com/android/dialer/smartdial/SmartDialCursorLoader.java b/java/com/android/dialer/smartdial/SmartDialCursorLoader.java
index 205362c..72aa8da 100644
--- a/java/com/android/dialer/smartdial/SmartDialCursorLoader.java
+++ b/java/com/android/dialer/smartdial/SmartDialCursorLoader.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,17 +17,20 @@
 
 package com.android.dialer.smartdial;
 
-import android.content.AsyncTaskLoader;
 import android.content.Context;
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
+
+import androidx.loader.content.AsyncTaskLoader;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.database.Database;
 import com.android.dialer.database.DialerDatabaseHelper;
 import com.android.dialer.database.DialerDatabaseHelper.ContactNumber;
 import com.android.dialer.smartdial.util.SmartDialNameMatcher;
 import com.android.dialer.util.PermissionsUtil;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -227,14 +231,14 @@
       final List<String> projectionList =
           new ArrayList<>(Arrays.asList(PROJECTION_PRIMARY_INTERNAL));
       projectionList.add(Phone.CARRIER_PRESENCE); // 9
-      PROJECTION_PRIMARY = projectionList.toArray(new String[projectionList.size()]);
+      PROJECTION_PRIMARY = projectionList.toArray(new String[0]);
     }
 
     static {
       final List<String> projectionList =
           new ArrayList<>(Arrays.asList(PROJECTION_ALTERNATIVE_INTERNAL));
       projectionList.add(Phone.CARRIER_PRESENCE); // 9
-      PROJECTION_ALTERNATIVE = projectionList.toArray(new String[projectionList.size()]);
+      PROJECTION_ALTERNATIVE = projectionList.toArray(new String[0]);
     }
   }
 }
diff --git a/java/com/android/dialer/smartdial/map/BulgarianSmartDialMap.java b/java/com/android/dialer/smartdial/map/BulgarianSmartDialMap.java
index 5be9761..a8cf00b 100644
--- a/java/com/android/dialer/smartdial/map/BulgarianSmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/BulgarianSmartDialMap.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,12 +17,13 @@
 
 package com.android.dialer.smartdial.map;
 
-import android.support.v4.util.SimpleArrayMap;
+import androidx.collection.SimpleArrayMap;
+
 import com.android.dialer.dialpadview.DialpadCharMappings;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /** A {@link SmartDialMap} for the Bulgarian alphabet. */
-@SuppressWarnings("Guava")
 final class BulgarianSmartDialMap extends SmartDialMap {
 
   private static BulgarianSmartDialMap instance;
@@ -39,7 +41,7 @@
   @Override
   Optional<Character> normalizeCharacter(char ch) {
     ch = Character.toLowerCase(ch);
-    return isValidDialpadAlphabeticChar(ch) ? Optional.of(ch) : Optional.absent();
+    return isValidDialpadAlphabeticChar(ch) ? Optional.of(ch) : Optional.empty();
   }
 
   @Override
diff --git a/java/com/android/dialer/smartdial/map/CompositeSmartDialMap.java b/java/com/android/dialer/smartdial/map/CompositeSmartDialMap.java
index 76c05c5..5f36cc7 100644
--- a/java/com/android/dialer/smartdial/map/CompositeSmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/CompositeSmartDialMap.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,12 @@
 package com.android.dialer.smartdial.map;
 
 import android.content.Context;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.util.SimpleArrayMap;
+
+import androidx.collection.SimpleArrayMap;
+
 import com.android.dialer.i18n.LocaleUtils;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /**
  * A utility class that combines the functionality of two implementations of {@link SmartDialMap} so
@@ -32,7 +35,6 @@
  * <p>Note that the second implementation can be absent if it is not defined for the system's 1st
  * language preference.
  */
-@SuppressWarnings("Guava")
 public class CompositeSmartDialMap {
 
   private static final SmartDialMap DEFAULT_MAP = LatinSmartDialMap.getInstance();
@@ -155,11 +157,10 @@
     return normalizedChar.isPresent() ? normalizedChar.get() : ch;
   }
 
-  @VisibleForTesting
-  static Optional<SmartDialMap> getExtraMap(Context context) {
+  private static Optional<SmartDialMap> getExtraMap(Context context) {
     String languageCode = LocaleUtils.getLocale(context).getISO3Language();
     return EXTRA_MAPS.containsKey(languageCode)
         ? Optional.of(EXTRA_MAPS.get(languageCode))
-        : Optional.absent();
+        : Optional.empty();
   }
 }
diff --git a/java/com/android/dialer/smartdial/map/LatinSmartDialMap.java b/java/com/android/dialer/smartdial/map/LatinSmartDialMap.java
index b8ef951..6aad001 100644
--- a/java/com/android/dialer/smartdial/map/LatinSmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/LatinSmartDialMap.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,12 +17,13 @@
 
 package com.android.dialer.smartdial.map;
 
-import android.support.v4.util.SimpleArrayMap;
+import androidx.collection.SimpleArrayMap;
+
 import com.android.dialer.dialpadview.DialpadCharMappings;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /** A {@link SmartDialMap} for the Latin alphabet, which is for T9 dialpad searching. */
-@SuppressWarnings("Guava")
 final class LatinSmartDialMap extends SmartDialMap {
 
   private static LatinSmartDialMap instance;
@@ -61,683 +63,372 @@
 
     switch (ch) {
       case 'À':
-        return Optional.of('a');
       case 'Á':
-        return Optional.of('a');
       case 'Â':
-        return Optional.of('a');
       case 'Ã':
-        return Optional.of('a');
       case 'Ä':
-        return Optional.of('a');
       case 'Å':
-        return Optional.of('a');
-      case 'Ç':
-        return Optional.of('c');
-      case 'È':
-        return Optional.of('e');
-      case 'É':
-        return Optional.of('e');
-      case 'Ê':
-        return Optional.of('e');
-      case 'Ë':
-        return Optional.of('e');
-      case 'Ì':
-        return Optional.of('i');
-      case 'Í':
-        return Optional.of('i');
-      case 'Î':
-        return Optional.of('i');
-      case 'Ï':
-        return Optional.of('i');
-      case 'Ð':
-        return Optional.of('d');
-      case 'Ñ':
-        return Optional.of('n');
-      case 'Ò':
-        return Optional.of('o');
-      case 'Ó':
-        return Optional.of('o');
-      case 'Ô':
-        return Optional.of('o');
-      case 'Õ':
-        return Optional.of('o');
-      case 'Ö':
-        return Optional.of('o');
-      case '×':
-        return Optional.of('x');
-      case 'Ø':
-        return Optional.of('o');
-      case 'Ù':
-        return Optional.of('u');
-      case 'Ú':
-        return Optional.of('u');
-      case 'Û':
-        return Optional.of('u');
-      case 'Ü':
-        return Optional.of('u');
-      case 'Ý':
-        return Optional.of('u');
       case 'à':
-        return Optional.of('a');
       case 'á':
-        return Optional.of('a');
       case 'â':
-        return Optional.of('a');
       case 'ã':
-        return Optional.of('a');
       case 'ä':
-        return Optional.of('a');
       case 'å':
-        return Optional.of('a');
-      case 'ç':
-        return Optional.of('c');
-      case 'è':
-        return Optional.of('e');
-      case 'é':
-        return Optional.of('e');
-      case 'ê':
-        return Optional.of('e');
-      case 'ë':
-        return Optional.of('e');
-      case 'ì':
-        return Optional.of('i');
-      case 'í':
-        return Optional.of('i');
-      case 'î':
-        return Optional.of('i');
-      case 'ï':
-        return Optional.of('i');
-      case 'ð':
-        return Optional.of('d');
-      case 'ñ':
-        return Optional.of('n');
-      case 'ò':
-        return Optional.of('o');
-      case 'ó':
-        return Optional.of('o');
-      case 'ô':
-        return Optional.of('o');
-      case 'õ':
-        return Optional.of('o');
-      case 'ö':
-        return Optional.of('o');
-      case 'ø':
-        return Optional.of('o');
-      case 'ù':
-        return Optional.of('u');
-      case 'ú':
-        return Optional.of('u');
-      case 'û':
-        return Optional.of('u');
-      case 'ü':
-        return Optional.of('u');
-      case 'ý':
-        return Optional.of('y');
-      case 'ÿ':
-        return Optional.of('y');
       case 'Ā':
-        return Optional.of('a');
       case 'ā':
-        return Optional.of('a');
       case 'Ă':
-        return Optional.of('a');
       case 'ă':
-        return Optional.of('a');
       case 'Ą':
-        return Optional.of('a');
       case 'ą':
-        return Optional.of('a');
-      case 'Ć':
-        return Optional.of('c');
-      case 'ć':
-        return Optional.of('c');
-      case 'Ĉ':
-        return Optional.of('c');
-      case 'ĉ':
-        return Optional.of('c');
-      case 'Ċ':
-        return Optional.of('c');
-      case 'ċ':
-        return Optional.of('c');
-      case 'Č':
-        return Optional.of('c');
-      case 'č':
-        return Optional.of('c');
-      case 'Ď':
-        return Optional.of('d');
-      case 'ď':
-        return Optional.of('d');
-      case 'Đ':
-        return Optional.of('d');
-      case 'đ':
-        return Optional.of('d');
-      case 'Ē':
-        return Optional.of('e');
-      case 'ē':
-        return Optional.of('e');
-      case 'Ĕ':
-        return Optional.of('e');
-      case 'ĕ':
-        return Optional.of('e');
-      case 'Ė':
-        return Optional.of('e');
-      case 'ė':
-        return Optional.of('e');
-      case 'Ę':
-        return Optional.of('e');
-      case 'ę':
-        return Optional.of('e');
-      case 'Ě':
-        return Optional.of('e');
-      case 'ě':
-        return Optional.of('e');
-      case 'Ĝ':
-        return Optional.of('g');
-      case 'ĝ':
-        return Optional.of('g');
-      case 'Ğ':
-        return Optional.of('g');
-      case 'ğ':
-        return Optional.of('g');
-      case 'Ġ':
-        return Optional.of('g');
-      case 'ġ':
-        return Optional.of('g');
-      case 'Ģ':
-        return Optional.of('g');
-      case 'ģ':
-        return Optional.of('g');
-      case 'Ĥ':
-        return Optional.of('h');
-      case 'ĥ':
-        return Optional.of('h');
-      case 'Ħ':
-        return Optional.of('h');
-      case 'ħ':
-        return Optional.of('h');
-      case 'Ĩ':
-        return Optional.of('i');
-      case 'ĩ':
-        return Optional.of('i');
-      case 'Ī':
-        return Optional.of('i');
-      case 'ī':
-        return Optional.of('i');
-      case 'Ĭ':
-        return Optional.of('i');
-      case 'ĭ':
-        return Optional.of('i');
-      case 'Į':
-        return Optional.of('i');
-      case 'į':
-        return Optional.of('i');
-      case 'İ':
-        return Optional.of('i');
-      case 'ı':
-        return Optional.of('i');
-      case 'Ĵ':
-        return Optional.of('j');
-      case 'ĵ':
-        return Optional.of('j');
-      case 'Ķ':
-        return Optional.of('k');
-      case 'ķ':
-        return Optional.of('k');
-      case 'ĸ':
-        return Optional.of('k');
-      case 'Ĺ':
-        return Optional.of('l');
-      case 'ĺ':
-        return Optional.of('l');
-      case 'Ļ':
-        return Optional.of('l');
-      case 'ļ':
-        return Optional.of('l');
-      case 'Ľ':
-        return Optional.of('l');
-      case 'ľ':
-        return Optional.of('l');
-      case 'Ŀ':
-        return Optional.of('l');
-      case 'ŀ':
-        return Optional.of('l');
-      case 'Ł':
-        return Optional.of('l');
-      case 'ł':
-        return Optional.of('l');
-      case 'Ń':
-        return Optional.of('n');
-      case 'ń':
-        return Optional.of('n');
-      case 'Ņ':
-        return Optional.of('n');
-      case 'ņ':
-        return Optional.of('n');
-      case 'Ň':
-        return Optional.of('n');
-      case 'ň':
-        return Optional.of('n');
-      case 'Ō':
-        return Optional.of('o');
-      case 'ō':
-        return Optional.of('o');
-      case 'Ŏ':
-        return Optional.of('o');
-      case 'ŏ':
-        return Optional.of('o');
-      case 'Ő':
-        return Optional.of('o');
-      case 'ő':
-        return Optional.of('o');
-      case 'Ŕ':
-        return Optional.of('r');
-      case 'ŕ':
-        return Optional.of('r');
-      case 'Ŗ':
-        return Optional.of('r');
-      case 'ŗ':
-        return Optional.of('r');
-      case 'Ř':
-        return Optional.of('r');
-      case 'ř':
-        return Optional.of('r');
-      case 'Ś':
-        return Optional.of('s');
-      case 'ś':
-        return Optional.of('s');
-      case 'Ŝ':
-        return Optional.of('s');
-      case 'ŝ':
-        return Optional.of('s');
-      case 'Ş':
-        return Optional.of('s');
-      case 'ş':
-        return Optional.of('s');
-      case 'Š':
-        return Optional.of('s');
-      case 'š':
-        return Optional.of('s');
-      case 'Ţ':
-        return Optional.of('t');
-      case 'ţ':
-        return Optional.of('t');
-      case 'Ť':
-        return Optional.of('t');
-      case 'ť':
-        return Optional.of('t');
-      case 'Ŧ':
-        return Optional.of('t');
-      case 'ŧ':
-        return Optional.of('t');
-      case 'Ũ':
-        return Optional.of('u');
-      case 'ũ':
-        return Optional.of('u');
-      case 'Ū':
-        return Optional.of('u');
-      case 'ū':
-        return Optional.of('u');
-      case 'Ŭ':
-        return Optional.of('u');
-      case 'ŭ':
-        return Optional.of('u');
-      case 'Ů':
-        return Optional.of('u');
-      case 'ů':
-        return Optional.of('u');
-      case 'Ű':
-        return Optional.of('u');
-      case 'ű':
-        return Optional.of('u');
-      case 'Ų':
-        return Optional.of('u');
-      case 'ų':
-        return Optional.of('u');
-      case 'Ŵ':
-        return Optional.of('w');
-      case 'ŵ':
-        return Optional.of('w');
-      case 'Ŷ':
-        return Optional.of('y');
-      case 'ŷ':
-        return Optional.of('y');
-      case 'Ÿ':
-        return Optional.of('y');
-      case 'Ź':
-        return Optional.of('z');
-      case 'ź':
-        return Optional.of('z');
-      case 'Ż':
-        return Optional.of('z');
-      case 'ż':
-        return Optional.of('z');
-      case 'Ž':
-        return Optional.of('z');
-      case 'ž':
-        return Optional.of('z');
-      case 'ſ':
-        return Optional.of('s');
-      case 'ƀ':
-        return Optional.of('b');
-      case 'Ɓ':
-        return Optional.of('b');
-      case 'Ƃ':
-        return Optional.of('b');
-      case 'ƃ':
-        return Optional.of('b');
-      case 'Ɔ':
-        return Optional.of('o');
-      case 'Ƈ':
-        return Optional.of('c');
-      case 'ƈ':
-        return Optional.of('c');
-      case 'Ɖ':
-        return Optional.of('d');
-      case 'Ɗ':
-        return Optional.of('d');
-      case 'Ƌ':
-        return Optional.of('d');
-      case 'ƌ':
-        return Optional.of('d');
-      case 'ƍ':
-        return Optional.of('d');
-      case 'Ɛ':
-        return Optional.of('e');
-      case 'Ƒ':
-        return Optional.of('f');
-      case 'ƒ':
-        return Optional.of('f');
-      case 'Ɠ':
-        return Optional.of('g');
-      case 'Ɣ':
-        return Optional.of('g');
-      case 'Ɩ':
-        return Optional.of('i');
-      case 'Ɨ':
-        return Optional.of('i');
-      case 'Ƙ':
-        return Optional.of('k');
-      case 'ƙ':
-        return Optional.of('k');
-      case 'ƚ':
-        return Optional.of('l');
-      case 'ƛ':
-        return Optional.of('l');
-      case 'Ɯ':
-        return Optional.of('w');
-      case 'Ɲ':
-        return Optional.of('n');
-      case 'ƞ':
-        return Optional.of('n');
-      case 'Ɵ':
-        return Optional.of('o');
-      case 'Ơ':
-        return Optional.of('o');
-      case 'ơ':
-        return Optional.of('o');
-      case 'Ƥ':
-        return Optional.of('p');
-      case 'ƥ':
-        return Optional.of('p');
-      case 'ƫ':
-        return Optional.of('t');
-      case 'Ƭ':
-        return Optional.of('t');
-      case 'ƭ':
-        return Optional.of('t');
-      case 'Ʈ':
-        return Optional.of('t');
-      case 'Ư':
-        return Optional.of('u');
-      case 'ư':
-        return Optional.of('u');
-      case 'Ʊ':
-        return Optional.of('y');
-      case 'Ʋ':
-        return Optional.of('v');
-      case 'Ƴ':
-        return Optional.of('y');
-      case 'ƴ':
-        return Optional.of('y');
-      case 'Ƶ':
-        return Optional.of('z');
-      case 'ƶ':
-        return Optional.of('z');
-      case 'ƿ':
-        return Optional.of('w');
       case 'Ǎ':
-        return Optional.of('a');
       case 'ǎ':
-        return Optional.of('a');
-      case 'Ǐ':
-        return Optional.of('i');
-      case 'ǐ':
-        return Optional.of('i');
-      case 'Ǒ':
-        return Optional.of('o');
-      case 'ǒ':
-        return Optional.of('o');
-      case 'Ǔ':
-        return Optional.of('u');
-      case 'ǔ':
-        return Optional.of('u');
-      case 'Ǖ':
-        return Optional.of('u');
-      case 'ǖ':
-        return Optional.of('u');
-      case 'Ǘ':
-        return Optional.of('u');
-      case 'ǘ':
-        return Optional.of('u');
-      case 'Ǚ':
-        return Optional.of('u');
-      case 'ǚ':
-        return Optional.of('u');
-      case 'Ǜ':
-        return Optional.of('u');
-      case 'ǜ':
-        return Optional.of('u');
       case 'Ǟ':
-        return Optional.of('a');
       case 'ǟ':
-        return Optional.of('a');
       case 'Ǡ':
-        return Optional.of('a');
       case 'ǡ':
-        return Optional.of('a');
-      case 'Ǥ':
-        return Optional.of('g');
-      case 'ǥ':
-        return Optional.of('g');
-      case 'Ǧ':
-        return Optional.of('g');
-      case 'ǧ':
-        return Optional.of('g');
-      case 'Ǩ':
-        return Optional.of('k');
-      case 'ǩ':
-        return Optional.of('k');
-      case 'Ǫ':
-        return Optional.of('o');
-      case 'ǫ':
-        return Optional.of('o');
-      case 'Ǭ':
-        return Optional.of('o');
-      case 'ǭ':
-        return Optional.of('o');
-      case 'ǰ':
-        return Optional.of('j');
-      case 'ǲ':
-        return Optional.of('d');
-      case 'Ǵ':
-        return Optional.of('g');
-      case 'ǵ':
-        return Optional.of('g');
-      case 'Ƿ':
-        return Optional.of('w');
-      case 'Ǹ':
-        return Optional.of('n');
-      case 'ǹ':
-        return Optional.of('n');
       case 'Ǻ':
-        return Optional.of('a');
       case 'ǻ':
-        return Optional.of('a');
-      case 'Ǿ':
-        return Optional.of('o');
-      case 'ǿ':
-        return Optional.of('o');
       case 'Ȁ':
-        return Optional.of('a');
       case 'ȁ':
-        return Optional.of('a');
       case 'Ȃ':
-        return Optional.of('a');
       case 'ȃ':
-        return Optional.of('a');
-      case 'Ȅ':
-        return Optional.of('e');
-      case 'ȅ':
-        return Optional.of('e');
-      case 'Ȇ':
-        return Optional.of('e');
-      case 'ȇ':
-        return Optional.of('e');
-      case 'Ȉ':
-        return Optional.of('i');
-      case 'ȉ':
-        return Optional.of('i');
-      case 'Ȋ':
-        return Optional.of('i');
-      case 'ȋ':
-        return Optional.of('i');
-      case 'Ȍ':
-        return Optional.of('o');
-      case 'ȍ':
-        return Optional.of('o');
-      case 'Ȏ':
-        return Optional.of('o');
-      case 'ȏ':
-        return Optional.of('o');
-      case 'Ȑ':
-        return Optional.of('r');
-      case 'ȑ':
-        return Optional.of('r');
-      case 'Ȓ':
-        return Optional.of('r');
-      case 'ȓ':
-        return Optional.of('r');
-      case 'Ȕ':
-        return Optional.of('u');
-      case 'ȕ':
-        return Optional.of('u');
-      case 'Ȗ':
-        return Optional.of('u');
-      case 'ȗ':
-        return Optional.of('u');
-      case 'Ș':
-        return Optional.of('s');
-      case 'ș':
-        return Optional.of('s');
-      case 'Ț':
-        return Optional.of('t');
-      case 'ț':
-        return Optional.of('t');
-      case 'Ȝ':
-        return Optional.of('y');
-      case 'ȝ':
-        return Optional.of('y');
-      case 'Ȟ':
-        return Optional.of('h');
-      case 'ȟ':
-        return Optional.of('h');
-      case 'Ȥ':
-        return Optional.of('z');
-      case 'ȥ':
-        return Optional.of('z');
       case 'Ȧ':
-        return Optional.of('a');
       case 'ȧ':
-        return Optional.of('a');
-      case 'Ȩ':
-        return Optional.of('e');
-      case 'ȩ':
-        return Optional.of('e');
-      case 'Ȫ':
-        return Optional.of('o');
-      case 'ȫ':
-        return Optional.of('o');
-      case 'Ȭ':
-        return Optional.of('o');
-      case 'ȭ':
-        return Optional.of('o');
-      case 'Ȯ':
-        return Optional.of('o');
-      case 'ȯ':
-        return Optional.of('o');
-      case 'Ȱ':
-        return Optional.of('o');
-      case 'ȱ':
-        return Optional.of('o');
-      case 'Ȳ':
-        return Optional.of('y');
-      case 'ȳ':
-        return Optional.of('y');
       case 'A':
         return Optional.of('a');
+      case 'ƀ':
+      case 'Ɓ':
+      case 'Ƃ':
+      case 'ƃ':
       case 'B':
         return Optional.of('b');
+      case 'Ç':
+      case 'ç':
+      case 'Ć':
+      case 'ć':
+      case 'Ĉ':
+      case 'ĉ':
+      case 'Ċ':
+      case 'ċ':
+      case 'Č':
+      case 'č':
+      case 'Ƈ':
+      case 'ƈ':
       case 'C':
         return Optional.of('c');
+      case 'Ð':
+      case 'ð':
+      case 'Ď':
+      case 'ď':
+      case 'Đ':
+      case 'đ':
+      case 'Ɖ':
+      case 'Ɗ':
+      case 'Ƌ':
+      case 'ƌ':
+      case 'ƍ':
+      case 'ȡ':
       case 'D':
         return Optional.of('d');
+      case 'È':
+      case 'É':
+      case 'Ê':
+      case 'Ë':
+      case 'è':
+      case 'é':
+      case 'ê':
+      case 'ë':
+      case 'Ē':
+      case 'ē':
+      case 'Ĕ':
+      case 'ĕ':
+      case 'Ė':
+      case 'ė':
+      case 'Ę':
+      case 'ę':
+      case 'Ě':
+      case 'ě':
+      case 'Ɛ':
+      case 'Ȅ':
+      case 'ȅ':
+      case 'Ȇ':
+      case 'ȇ':
+      case 'Ȩ':
+      case 'ȩ':
       case 'E':
         return Optional.of('e');
+      case 'Ƒ':
+      case 'ƒ':
       case 'F':
         return Optional.of('f');
+      case 'Ĝ':
+      case 'ĝ':
+      case 'Ğ':
+      case 'ğ':
+      case 'Ġ':
+      case 'ġ':
+      case 'Ģ':
+      case 'ģ':
+      case 'Ɠ':
+      case 'Ɣ':
+      case 'Ǥ':
+      case 'ǥ':
+      case 'Ǧ':
+      case 'ǧ':
+      case 'Ǵ':
+      case 'ǵ':
       case 'G':
         return Optional.of('g');
+      case 'Ĥ':
+      case 'ĥ':
+      case 'Ħ':
+      case 'ħ':
+      case 'Ȟ':
+      case 'ȟ':
       case 'H':
         return Optional.of('h');
+      case 'Ì':
+      case 'Í':
+      case 'Î':
+      case 'Ï':
+      case 'ì':
+      case 'í':
+      case 'î':
+      case 'ï':
+      case 'Ĩ':
+      case 'ĩ':
+      case 'Ī':
+      case 'ī':
+      case 'Ĭ':
+      case 'ĭ':
+      case 'Į':
+      case 'į':
+      case 'İ':
+      case 'ı':
+      case 'Ɩ':
+      case 'Ɨ':
+      case 'Ǐ':
+      case 'ǐ':
+      case 'Ȉ':
+      case 'ȉ':
+      case 'Ȋ':
+      case 'ȋ':
       case 'I':
         return Optional.of('i');
+      case 'Ĵ':
+      case 'ĵ':
+      case 'ǰ':
       case 'J':
         return Optional.of('j');
+      case 'Ķ':
+      case 'ķ':
+      case 'ĸ':
+      case 'Ƙ':
+      case 'ƙ':
+      case 'Ǩ':
+      case 'ǩ':
       case 'K':
         return Optional.of('k');
+      case 'Ĺ':
+      case 'ĺ':
+      case 'Ļ':
+      case 'ļ':
+      case 'Ľ':
+      case 'ľ':
+      case 'Ŀ':
+      case 'ŀ':
+      case 'Ł':
+      case 'ł':
+      case 'ƚ':
+      case 'ƛ':
       case 'L':
         return Optional.of('l');
       case 'M':
         return Optional.of('m');
+      case 'Ñ':
+      case 'ñ':
+      case 'Ń':
+      case 'ń':
+      case 'Ņ':
+      case 'ņ':
+      case 'Ň':
+      case 'ň':
+      case 'Ɲ':
+      case 'ƞ':
+      case 'Ǹ':
+      case 'ǹ':
+      case 'Ƞ':
       case 'N':
         return Optional.of('n');
+      case 'Ò':
+      case 'Ó':
+      case 'Ô':
+      case 'Õ':
+      case 'Ö':
+      case 'Ø':
+      case 'ò':
+      case 'ó':
+      case 'ô':
+      case 'õ':
+      case 'ö':
+      case 'ø':
+      case 'Ō':
+      case 'ō':
+      case 'Ŏ':
+      case 'ŏ':
+      case 'Ő':
+      case 'ő':
+      case 'Ɔ':
+      case 'Ɵ':
+      case 'Ơ':
+      case 'ơ':
+      case 'Ǒ':
+      case 'ǒ':
+      case 'Ǫ':
+      case 'ǫ':
+      case 'Ǭ':
+      case 'ǭ':
+      case 'Ǿ':
+      case 'ǿ':
+      case 'Ȍ':
+      case 'ȍ':
+      case 'Ȏ':
+      case 'ȏ':
+      case 'Ȫ':
+      case 'ȫ':
+      case 'Ȭ':
+      case 'ȭ':
+      case 'Ȯ':
+      case 'ȯ':
+      case 'Ȱ':
+      case 'ȱ':
       case 'O':
         return Optional.of('o');
+      case 'Ƥ':
+      case 'ƥ':
       case 'P':
         return Optional.of('p');
       case 'Q':
         return Optional.of('q');
+      case 'Ŕ':
+      case 'ŕ':
+      case 'Ŗ':
+      case 'ŗ':
+      case 'Ř':
+      case 'ř':
+      case 'Ȑ':
+      case 'ȑ':
+      case 'Ȓ':
+      case 'ȓ':
       case 'R':
         return Optional.of('r');
+      case 'Ś':
+      case 'ś':
+      case 'Ŝ':
+      case 'ŝ':
+      case 'Ş':
+      case 'ş':
+      case 'Š':
+      case 'š':
+      case 'ſ':
+      case 'Ș':
+      case 'ș':
       case 'S':
         return Optional.of('s');
+      case 'Ţ':
+      case 'ţ':
+      case 'Ť':
+      case 'ť':
+      case 'Ŧ':
+      case 'ŧ':
+      case 'ƫ':
+      case 'Ƭ':
+      case 'ƭ':
+      case 'Ʈ':
+      case 'Ț':
+      case 'ț':
       case 'T':
         return Optional.of('t');
+      case 'Ù':
+      case 'Ú':
+      case 'Û':
+      case 'Ü':
+      case 'ù':
+      case 'ú':
+      case 'û':
+      case 'ü':
+      case 'Ũ':
+      case 'ũ':
+      case 'Ū':
+      case 'ū':
+      case 'Ŭ':
+      case 'ŭ':
+      case 'Ů':
+      case 'ů':
+      case 'Ű':
+      case 'ű':
+      case 'Ų':
+      case 'ų':
+      case 'Ư':
+      case 'ư':
+      case 'Ǔ':
+      case 'ǔ':
+      case 'Ǖ':
+      case 'ǖ':
+      case 'Ǘ':
+      case 'ǘ':
+      case 'Ǚ':
+      case 'ǚ':
+      case 'Ǜ':
+      case 'ǜ':
+      case 'Ȕ':
+      case 'ȕ':
+      case 'Ȗ':
+      case 'ȗ':
       case 'U':
         return Optional.of('u');
+      case 'Ʋ':
       case 'V':
         return Optional.of('v');
+      case 'Ŵ':
+      case 'ŵ':
+      case 'Ɯ':
+      case 'ƿ':
+      case 'Ƿ':
       case 'W':
         return Optional.of('w');
+      case '×':
       case 'X':
         return Optional.of('x');
+      case 'Ý':
+      case 'ý':
+      case 'ÿ':
+      case 'Ŷ':
+      case 'ŷ':
+      case 'Ÿ':
+      case 'Ʊ':
+      case 'Ƴ':
+      case 'ƴ':
+      case 'Ȝ':
+      case 'ȝ':
+      case 'Ȳ':
+      case 'ȳ':
       case 'Y':
         return Optional.of('y');
+      case 'Ź':
+      case 'ź':
+      case 'Ż':
+      case 'ż':
+      case 'Ž':
+      case 'ž':
+      case 'Ƶ':
+      case 'ƶ':
+      case 'Ȥ':
+      case 'ȥ':
       case 'Z':
         return Optional.of('z');
       default:
-        return Optional.absent();
+        return Optional.empty();
     }
   }
 
diff --git a/java/com/android/dialer/smartdial/map/RussianSmartDialMap.java b/java/com/android/dialer/smartdial/map/RussianSmartDialMap.java
index c10bbb0..15b174e 100644
--- a/java/com/android/dialer/smartdial/map/RussianSmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/RussianSmartDialMap.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,12 +17,13 @@
 
 package com.android.dialer.smartdial.map;
 
-import android.support.v4.util.SimpleArrayMap;
+import androidx.collection.SimpleArrayMap;
+
 import com.android.dialer.dialpadview.DialpadCharMappings;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /** A {@link SmartDialMap} for the Russian alphabet. */
-@SuppressWarnings("Guava")
 final class RussianSmartDialMap extends SmartDialMap {
 
   private static RussianSmartDialMap instance;
@@ -39,7 +41,7 @@
   @Override
   Optional<Character> normalizeCharacter(char ch) {
     ch = Character.toLowerCase(ch);
-    return isValidDialpadAlphabeticChar(ch) ? Optional.of(ch) : Optional.absent();
+    return isValidDialpadAlphabeticChar(ch) ? Optional.of(ch) : Optional.empty();
   }
 
   @Override
diff --git a/java/com/android/dialer/smartdial/map/SmartDialMap.java b/java/com/android/dialer/smartdial/map/SmartDialMap.java
index c74dd28..2d99ca2 100644
--- a/java/com/android/dialer/smartdial/map/SmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/SmartDialMap.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +17,12 @@
 
 package com.android.dialer.smartdial.map;
 
-import android.support.v4.util.SimpleArrayMap;
-import com.google.common.base.Optional;
+import androidx.collection.SimpleArrayMap;
+
+import java.util.Optional;
 
 /** Definition for utilities that supports smart dial in different languages. */
-@SuppressWarnings("Guava")
+
 abstract class SmartDialMap {
 
   /**
@@ -56,7 +58,7 @@
    * <p>The provided character is expected to be a normalized character. See {@link
    * SmartDialMap#normalizeCharacter(char)} for details.
    *
-   * <p>An {@link Optional#absent()} is returned if the provided character can't be mapped to a key
+   * <p>An {@link Optional#empty()} ()} is returned if the provided character can't be mapped to a key
    * on the dialpad.
    */
   protected Optional<Byte> getDialpadIndex(char ch) {
@@ -68,7 +70,7 @@
       return Optional.of((byte) (getCharToKeyMap().get(ch) - '0'));
     }
 
-    return Optional.absent();
+    return Optional.empty();
   }
 
   /**
@@ -77,20 +79,20 @@
    * <p>The provided character is expected to be a normalized character. See {@link
    * SmartDialMap#normalizeCharacter(char)} for details.
    *
-   * <p>An {@link Optional#absent()} is returned if the provided character can't be mapped to a key
+   * <p>An {@link Optional#empty()} ()} is returned if the provided character can't be mapped to a key
    * on the dialpad.
    */
   protected Optional<Character> getDialpadNumericCharacter(char ch) {
     return isValidDialpadAlphabeticChar(ch)
         ? Optional.of(getCharToKeyMap().get(ch))
-        : Optional.absent();
+        : Optional.empty();
   }
 
   /**
    * Converts uppercase characters to lower case ones, and on a best effort basis, strips accents
    * from accented characters.
    *
-   * <p>An {@link Optional#absent()} is returned if the provided character can't be mapped to a key
+   * <p>An {@link Optional#empty()} ()} is returned if the provided character can't be mapped to a key
    * on the dialpad.
    */
   abstract Optional<Character> normalizeCharacter(char ch);
diff --git a/java/com/android/dialer/smartdial/map/UkrainianSmartDialMap.java b/java/com/android/dialer/smartdial/map/UkrainianSmartDialMap.java
index 844732c..90b1555 100644
--- a/java/com/android/dialer/smartdial/map/UkrainianSmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/UkrainianSmartDialMap.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,9 +17,11 @@
 
 package com.android.dialer.smartdial.map;
 
-import android.support.v4.util.SimpleArrayMap;
+import androidx.collection.SimpleArrayMap;
+
 import com.android.dialer.dialpadview.DialpadCharMappings;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /** A {@link SmartDialMap} for the Ukrainian alphabet. */
 final class UkrainianSmartDialMap extends SmartDialMap {
@@ -38,7 +41,7 @@
   @Override
   Optional<Character> normalizeCharacter(char ch) {
     ch = Character.toLowerCase(ch);
-    return isValidDialpadAlphabeticChar(ch) ? Optional.of(ch) : Optional.absent();
+    return isValidDialpadAlphabeticChar(ch) ? Optional.of(ch) : Optional.empty();
   }
 
   @Override
diff --git a/java/com/android/dialer/smartdial/util/SmartDialMatchPosition.java b/java/com/android/dialer/smartdial/util/SmartDialMatchPosition.java
index db317ae..3f2f2e5 100644
--- a/java/com/android/dialer/smartdial/util/SmartDialMatchPosition.java
+++ b/java/com/android/dialer/smartdial/util/SmartDialMatchPosition.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.dialer.smartdial.util;
 
 import com.android.dialer.common.LogUtil;
+
 import java.util.ArrayList;
 
 /**
diff --git a/java/com/android/dialer/smartdial/util/SmartDialNameMatcher.java b/java/com/android/dialer/smartdial/util/SmartDialNameMatcher.java
index 6019622..d876856 100644
--- a/java/com/android/dialer/smartdial/util/SmartDialNameMatcher.java
+++ b/java/com/android/dialer/smartdial/util/SmartDialNameMatcher.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,13 @@
 package com.android.dialer.smartdial.util;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.smartdial.map.CompositeSmartDialMap;
 import com.android.dialer.smartdial.util.SmartDialPrefix.PhoneNumberTokens;
+
 import java.util.ArrayList;
 
 /**
@@ -260,7 +264,7 @@
     // positions
     int seperatorCount = 0;
 
-    ArrayList<SmartDialMatchPosition> partial = new ArrayList<SmartDialMatchPosition>();
+    ArrayList<SmartDialMatchPosition> partial = new ArrayList<>();
     // Keep going until we reach the end of displayName
     while (nameStart < nameLength && queryStart < queryLength) {
       char ch = displayName.charAt(nameStart);
diff --git a/java/com/android/dialer/smartdial/util/SmartDialPrefix.java b/java/com/android/dialer/smartdial/util/SmartDialPrefix.java
index 7fef881..74d7479 100644
--- a/java/com/android/dialer/smartdial/util/SmartDialPrefix.java
+++ b/java/com/android/dialer/smartdial/util/SmartDialPrefix.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,11 +19,13 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
-import android.support.annotation.VisibleForTesting;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+
+import androidx.preference.PreferenceManager;
+
 import com.android.dialer.smartdial.map.CompositeSmartDialMap;
+
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Set;
@@ -62,8 +65,6 @@
   /** Set of supported country codes in front of the phone number. */
   private static Set<String> countryCodes = null;
 
-  private static boolean nanpInitialized = false;
-
   /** Initializes the Nanp settings, and finds out whether user is in a NANP region. */
   public static void initializeNanpSettings(Context context) {
     final TelephonyManager manager =
@@ -85,7 +86,6 @@
     }
     /** Queries the NANP country list to find out whether user is in a NANP region. */
     userInNanpRegion = isCountryNanp(userSimCountryCode);
-    nanpInitialized = true;
   }
 
   /**
@@ -299,7 +299,7 @@
   }
 
   private static Set<String> initCountryCodes() {
-    final HashSet<String> result = new HashSet<String>();
+    final HashSet<String> result = new HashSet<>();
     result.add("1");
     result.add("7");
     result.add("20");
@@ -526,8 +526,7 @@
    * @see <a href="https://en.wikipedia.org/wiki/North_American_Numbering_Plan">
    *     https://en.wikipedia.org/wiki/North_American_Numbering_Plan</a>
    */
-  @VisibleForTesting
-  public static boolean isCountryNanp(String country) {
+  private static boolean isCountryNanp(String country) {
     if (TextUtils.isEmpty(country)) {
       return false;
     }
@@ -538,7 +537,7 @@
   }
 
   private static Set<String> initNanpCountries() {
-    final HashSet<String> result = new HashSet<String>();
+    final HashSet<String> result = new HashSet<>();
     result.add("US"); // United States
     result.add("CA"); // Canada
     result.add("AS"); // American Samoa
@@ -566,21 +565,6 @@
     return result;
   }
 
-  /**
-   * Returns whether the user is in a region that uses Nanp format based on the sim location.
-   *
-   * @return Whether user is in Nanp region.
-   */
-  public static boolean getUserInNanpRegion() {
-    return userInNanpRegion;
-  }
-
-  /** Explicitly setting the user Nanp to the given boolean */
-  @VisibleForTesting
-  public static void setUserInNanpRegion(boolean userInNanpRegion) {
-    SmartDialPrefix.userInNanpRegion = userInNanpRegion;
-  }
-
   /** Class to record phone number parsing information. */
   public static class PhoneNumberTokens {
 
diff --git a/java/com/android/dialer/spam/Spam.java b/java/com/android/dialer/spam/Spam.java
index 028bda4..4918749 100644
--- a/java/com/android/dialer/spam/Spam.java
+++ b/java/com/android/dialer/spam/Spam.java
@@ -16,158 +16,10 @@
 
 package com.android.dialer.spam;
 
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceChangeListener;
 import android.provider.CallLog.Calls;
-import android.support.annotation.Nullable;
-import com.android.dialer.DialerPhoneNumber;
-import com.android.dialer.logging.ContactLookupResult;
-import com.android.dialer.logging.ContactSource;
-import com.android.dialer.logging.ReportingLocation;
-import com.android.dialer.spam.status.SpamStatus;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.util.concurrent.ListenableFuture;
 
 /** Allows the container application to mark calls as spam. */
-public interface Spam {
-
-  /**
-   * Checks if each of numbers in the given list is suspected of being a spam.
-   *
-   * @param dialerPhoneNumbers A set of {@link DialerPhoneNumber}.
-   * @return A {@link ListenableFuture} of a map that maps each number to its {@link SpamStatus}.
-   */
-  ListenableFuture<ImmutableMap<DialerPhoneNumber, SpamStatus>> batchCheckSpamStatus(
-      ImmutableSet<DialerPhoneNumber> dialerPhoneNumbers);
-
-  /**
-   * Checks if the given number is suspected of being spam.
-   *
-   * @param dialerPhoneNumber the phone number.
-   * @return the {@link SpamStatus} for the given number.
-   */
-  ListenableFuture<SpamStatus> checkSpamStatus(DialerPhoneNumber dialerPhoneNumber);
-
-  /**
-   * Checks if the given number is suspected of being spam.
-   *
-   * <p>See {@link #checkSpamStatus(DialerPhoneNumber)}.
-   *
-   * @param number the phone number.
-   * @param defaultCountryIso the default country to use if it's not part of the number.
-   * @return the {@link SpamStatus} for the given number.
-   */
-  ListenableFuture<SpamStatus> checkSpamStatus(String number, @Nullable String defaultCountryIso);
-
-  /**
-   * Called as an indication that the Spam implementation should check whether downloading a spam
-   * list needs to occur or not.
-   *
-   * @param isEnabledByUser true if spam is enabled by the user. Generally, this value should be
-   *     passed as {@link SpamSettings#isSpamEnabled()}. In the scenario where the user toggles the
-   *     spam setting isSpamEnabled returns stale data: the SharedPreferences will not have updated
-   *     prior to executing {@link OnPreferenceChangeListener#onPreferenceChange(Preference,
-   *     Object)}. For that case, use the new value provided in the onPreferenceChange callback.
-   * @return a future containing no value. It is only an indication of success or failure of the
-   *     operation.
-   */
-  ListenableFuture<Void> updateSpamListDownload(boolean isEnabledByUser);
-
-  /**
-   * Synchronously checks if the given number is suspected of being a spamer.
-   *
-   * @param number The phone number of the call.
-   * @param countryIso The country ISO of the call.
-   * @return True if the number is spam.
-   */
-  boolean checkSpamStatusSynchronous(String number, String countryIso);
-
-  /**
-   * Returns a {@link ListenableFuture} indicating whether the spam data have been updated since
-   * {@code timestampMillis}.
-   *
-   * <p>It is the caller's responsibility to ensure the timestamp is in milliseconds. Failure to do
-   * so will result in undefined behavior.
-   */
-  ListenableFuture<Boolean> dataUpdatedSince(long timestampMillis);
-
-  /**
-   * Reports number as spam.
-   *
-   * @param number The number to be reported.
-   * @param countryIso The country ISO of the number.
-   * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
-   *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
-   * @param from Where in the dialer this was reported from. Must be one of {@link
-   *     com.android.dialer.logging.ReportingLocation}.
-   * @param contactLookupResultType The result of the contact lookup for this phone number. Must be
-   *     one of {@link com.android.dialer.logging.ContactLookupResult}.
-   */
-  void reportSpamFromAfterCallNotification(
-      String number,
-      String countryIso,
-      int callType,
-      ReportingLocation.Type from,
-      ContactLookupResult.Type contactLookupResultType);
-
-  /**
-   * Reports number as spam.
-   *
-   * @param number The number to be reported.
-   * @param countryIso The country ISO of the number.
-   * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
-   *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
-   * @param from Where in the dialer this was reported from. Must be one of {@link
-   *     com.android.dialer.logging.ReportingLocation}.
-   * @param contactSourceType If we have cached contact information for the phone number, this
-   *     indicates its source. Must be one of {@link com.android.dialer.logging.ContactSource}.
-   */
-  void reportSpamFromCallHistory(
-      String number,
-      String countryIso,
-      int callType,
-      ReportingLocation.Type from,
-      ContactSource.Type contactSourceType);
-
-  /**
-   * Reports number as not spam.
-   *
-   * @param number The number to be reported.
-   * @param countryIso The country ISO of the number.
-   * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
-   *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
-   * @param from Where in the dialer this was reported from. Must be one of {@link
-   *     com.android.dialer.logging.ReportingLocation}.
-   * @param contactLookupResultType The result of the contact lookup for this phone number. Must be
-   *     one of {@link com.android.dialer.logging.ContactLookupResult}.
-   */
-  void reportNotSpamFromAfterCallNotification(
-      String number,
-      String countryIso,
-      int callType,
-      ReportingLocation.Type from,
-      ContactLookupResult.Type contactLookupResultType);
-
-  /**
-   * Reports number as not spam.
-   *
-   * @param number The number to be reported.
-   * @param countryIso The country ISO of the number.
-   * @param callType Whether the type of call is missed, voicemail, etc. Example of this is {@link
-   *     android.provider.CallLog.Calls#VOICEMAIL_TYPE}.
-   * @param from Where in the dialer this was reported from. Must be one of {@link
-   *     com.android.dialer.logging.ReportingLocation}.
-   * @param contactSourceType If we have cached contact information for the phone number, this
-   *     indicates its source. Must be one of {@link com.android.dialer.logging.ContactSource}.
-   */
-  void reportNotSpamFromCallHistory(
-      String number,
-      String countryIso,
-      int callType,
-      ReportingLocation.Type from,
-      ContactSource.Type contactSourceType);
-
+public class Spam {
   /**
    * Given a number's spam status and a call type, determine if the call should be shown as spam.
    *
@@ -185,7 +37,7 @@
    * @param callType One of the types in {@link android.provider.CallLog.Calls#TYPE}.
    * @return true if the number is spam *and* the call is not an outgoing call.
    */
-  static boolean shouldShowAsSpam(boolean isNumberSpam, int callType) {
+  public static boolean shouldShowAsSpam(boolean isNumberSpam, int callType) {
     return isNumberSpam && (callType != Calls.OUTGOING_TYPE);
   }
 }
diff --git a/java/com/android/dialer/spam/SpamComponent.java b/java/com/android/dialer/spam/SpamComponent.java
deleted file mode 100644
index a0ffcce..0000000
--- a/java/com/android/dialer/spam/SpamComponent.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.spam;
-
-import android.content.Context;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import dagger.Subcomponent;
-
-/** Dagger component to get Spam. */
-@Subcomponent
-public abstract class SpamComponent {
-
-  public abstract Spam spam();
-
-  public abstract SpamSettings spamSettings();
-
-  public static SpamComponent get(Context context) {
-    return ((SpamComponent.HasComponent)
-            ((HasRootComponent) context.getApplicationContext()).component())
-        .spamComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  @IncludeInDialerRoot
-  public interface HasComponent {
-    SpamComponent spamComponent();
-  }
-}
diff --git a/java/com/android/dialer/spam/SpamSettings.java b/java/com/android/dialer/spam/SpamSettings.java
deleted file mode 100644
index e0c0682..0000000
--- a/java/com/android/dialer/spam/SpamSettings.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.spam;
-
-import android.content.Context;
-import android.content.Intent;
-
-/** Allows the container application to interact with spam settings. */
-public interface SpamSettings {
-
-  /** @return if spam module is enabled */
-  boolean isSpamEnabled();
-
-  /** @return if spam after call notification is enabled */
-  boolean isSpamNotificationEnabled();
-
-  /** @return if spam blocking is enabled */
-  boolean isSpamBlockingEnabled();
-
-  /** @return if spam blocking user setting is controlled by carrier */
-  boolean isSpamBlockingControlledByCarrier();
-
-  /** @return if spam blocking module is enabled by flag */
-  boolean isSpamBlockingEnabledByFlag();
-
-  /** @return if spam blocking setting is enabled by user */
-  boolean isSpamBlockingEnabledByUser();
-
-  /** @return if dialog is used by default for spam after call notification */
-  boolean isDialogEnabledForSpamNotification();
-
-  /** @return if report spam is checked by default in block/report dialog */
-  boolean isDialogReportSpamCheckedByDefault();
-
-  /** @return percentage of after call notifications for spam numbers to show to the user */
-  int percentOfSpamNotificationsToShow();
-
-  /** @return percentage of after call notifications for nonspam numbers to show to the user */
-  int percentOfNonSpamNotificationsToShow();
-
-  /**
-   * Modifies spam blocking setting.
-   *
-   * @param enabled Whether to enable or disable the setting.
-   * @param listener The callback to be invoked after setting change is done.
-   */
-  void modifySpamBlockingSetting(boolean enabled, ModifySettingListener listener);
-
-  /** @return an intent to start spam blocking setting */
-  Intent getSpamBlockingSettingIntent(Context context);
-
-  /** Callback to be invoked when setting change completes. */
-  interface ModifySettingListener {
-
-    /** Called when setting change completes. */
-    void onComplete(boolean success);
-  }
-}
diff --git a/java/com/android/dialer/spam/promo/AndroidManifest.xml b/java/com/android/dialer/spam/promo/AndroidManifest.xml
deleted file mode 100644
index 7d766b8..0000000
--- a/java/com/android/dialer/spam/promo/AndroidManifest.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<manifest
-    package="com.android.dialer.spam.promo">
-</manifest>
diff --git a/java/com/android/dialer/spam/promo/SpamBlockingPromoDialogFragment.java b/java/com/android/dialer/spam/promo/SpamBlockingPromoDialogFragment.java
deleted file mode 100644
index dbefc52..0000000
--- a/java/com/android/dialer/spam/promo/SpamBlockingPromoDialogFragment.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.spam.promo;
-
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.DialogFragment;
-import android.support.v7.app.AlertDialog;
-
-/** Dialog for spam blocking on-boarding promotion. */
-public class SpamBlockingPromoDialogFragment extends DialogFragment {
-
-  public static final String SPAM_BLOCKING_PROMO_DIALOG_TAG = "SpamBlockingPromoDialog";
-
-  /** Called when dialog positive button is pressed. */
-  protected OnEnableListener positiveListener;
-
-  /** Called when the dialog is dismissed. */
-  @Nullable protected DialogInterface.OnDismissListener dismissListener;
-
-  public static DialogFragment newInstance(
-      OnEnableListener positiveListener,
-      @Nullable DialogInterface.OnDismissListener dismissListener) {
-    SpamBlockingPromoDialogFragment fragment = new SpamBlockingPromoDialogFragment();
-    fragment.positiveListener = positiveListener;
-    fragment.dismissListener = dismissListener;
-    return fragment;
-  }
-
-  @Override
-  public void onDismiss(DialogInterface dialog) {
-    if (dismissListener != null) {
-      dismissListener.onDismiss(dialog);
-    }
-    super.onDismiss(dialog);
-  }
-
-  @Override
-  public void onPause() {
-    // The dialog is dismissed onPause, i.e. rotation.
-    dismiss();
-    dismissListener = null;
-    positiveListener = null;
-    super.onPause();
-  }
-
-  @Override
-  public Dialog onCreateDialog(Bundle savedInstanceState) {
-    super.onCreateDialog(savedInstanceState);
-    // Return the newly created dialog
-    return new AlertDialog.Builder(getActivity())
-        .setCancelable(true)
-        .setTitle(R.string.spam_blocking_promo_title)
-        .setMessage(R.string.spam_blocking_promo_text)
-        .setNegativeButton(
-            R.string.spam_blocking_promo_action_dismiss, (dialog, which) -> dismiss())
-        .setPositiveButton(
-            R.string.spam_blocking_promo_action_filter_spam,
-            (dialog, which) -> {
-              dismiss();
-              positiveListener.onClick();
-            })
-        .create();
-  }
-
-  /** Positive listener for spam blocking promotion dialog. */
-  public interface OnEnableListener {
-    /** Called when user clicks on positive button in the spam blocking promo dialog. */
-    void onClick();
-  }
-}
diff --git a/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java b/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java
deleted file mode 100644
index c270c59..0000000
--- a/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.spam.promo;
-
-import android.annotation.SuppressLint;
-import android.app.Notification;
-import android.app.Notification.Builder;
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.DialogInterface.OnDismissListener;
-import android.graphics.drawable.Icon;
-import android.support.design.widget.Snackbar;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.os.BuildCompat;
-import android.view.View;
-import android.widget.Toast;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.notification.DialerNotificationManager;
-import com.android.dialer.notification.NotificationChannelId;
-import com.android.dialer.spam.SpamSettings;
-import com.android.dialer.spam.promo.SpamBlockingPromoDialogFragment.OnEnableListener;
-import com.android.dialer.storage.StorageComponent;
-import com.android.dialer.theme.base.ThemeComponent;
-
-/** Helper class for showing spam blocking on-boarding promotions. */
-public class SpamBlockingPromoHelper {
-
-  static final String SPAM_BLOCKING_PROMO_PERIOD_MILLIS = "spam_blocking_promo_period_millis";
-  static final String SPAM_BLOCKING_PROMO_LAST_SHOW_MILLIS = "spam_blocking_promo_last_show_millis";
-  public static final String ENABLE_SPAM_BLOCKING_PROMO = "enable_spam_blocking_promo";
-  public static final String ENABLE_AFTER_CALL_SPAM_BLOCKING_PROMO =
-      "enable_after_call_spam_blocking_promo";
-
-  private final Context context;
-  private final SpamSettings spamSettings;
-
-  public SpamBlockingPromoHelper(Context context, SpamSettings spamSettings) {
-    this.context = context;
-    this.spamSettings = spamSettings;
-  }
-
-  /**
-   * Returns true if we should show a spam blocking promo.
-   *
-   * <p>Should show spam blocking promo only when all of the following criteria meet 1. Spam
-   * blocking promo is enabled by flag. 2. Spam blocking setting is available. 3. Spam blocking
-   * setting is not yet enabled. 4. Time since last spam blocking promo exceeds the threshold.
-   *
-   * @return true if we should show a spam blocking promo.
-   */
-  public boolean shouldShowSpamBlockingPromo() {
-    if (!ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(ENABLE_SPAM_BLOCKING_PROMO, false)
-        || !spamSettings.isSpamEnabled()
-        || !spamSettings.isSpamBlockingEnabledByFlag()
-        || spamSettings.isSpamBlockingEnabledByUser()) {
-      return false;
-    }
-
-    long lastShowMillis =
-        StorageComponent.get(context)
-            .unencryptedSharedPrefs()
-            .getLong(SPAM_BLOCKING_PROMO_LAST_SHOW_MILLIS, 0);
-    long showPeriodMillis =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong(SPAM_BLOCKING_PROMO_PERIOD_MILLIS, Long.MAX_VALUE);
-    return lastShowMillis == 0 || System.currentTimeMillis() - lastShowMillis > showPeriodMillis;
-  }
-
-  /* Returns true if we should show a spam blocking promo in after call notification scenario. */
-  public boolean shouldShowAfterCallSpamBlockingPromo() {
-    return shouldShowSpamBlockingPromo()
-        && ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(ENABLE_AFTER_CALL_SPAM_BLOCKING_PROMO, false);
-  }
-
-  /**
-   * Shows a spam blocking promo dialog.
-   *
-   * @param fragmentManager the fragment manager to show the dialog.
-   * @param onEnableListener the listener called when enable button is clicked.
-   * @param onDismissListener the listener called when the dialog is dismissed.
-   */
-  public void showSpamBlockingPromoDialog(
-      FragmentManager fragmentManager,
-      OnEnableListener onEnableListener,
-      OnDismissListener onDismissListener) {
-    updateLastShowSpamTimestamp();
-    SpamBlockingPromoDialogFragment.newInstance(onEnableListener, onDismissListener)
-        .show(fragmentManager, SpamBlockingPromoDialogFragment.SPAM_BLOCKING_PROMO_DIALOG_TAG);
-  }
-
-  private void updateLastShowSpamTimestamp() {
-    StorageComponent.get(context)
-        .unencryptedSharedPrefs()
-        .edit()
-        .putLong(SPAM_BLOCKING_PROMO_LAST_SHOW_MILLIS, System.currentTimeMillis())
-        .apply();
-  }
-
-  /**
-   * Shows a modify setting on complete snackbar and a link to redirect to setting page.
-   *
-   * @param view the view to attach on-complete notice snackbar.
-   * @param success whether the modify setting operation succceeds.
-   */
-  public void showModifySettingOnCompleteSnackbar(View view, boolean success) {
-    String snackBarText =
-        success
-            ? context.getString(R.string.spam_blocking_settings_enable_complete_text)
-            : context.getString(R.string.spam_blocking_settings_enable_error_text);
-    Snackbar.make(view, snackBarText, Snackbar.LENGTH_LONG)
-        .setAction(
-            R.string.spam_blocking_setting_prompt,
-            v -> context.startActivity(spamSettings.getSpamBlockingSettingIntent(context)))
-        .setActionTextColor(
-            context.getResources().getColor(R.color.dialer_snackbar_action_text_color))
-        .show();
-  }
-
-  /** Shows a modify setting on complete toast message. */
-  public void showModifySettingOnCompleteToast(boolean success) {
-    String toastText =
-        success
-            ? context.getString(R.string.spam_blocking_settings_enable_complete_text)
-            : context.getString(R.string.spam_blocking_settings_enable_error_text);
-    Toast.makeText(context, toastText, Toast.LENGTH_LONG).show();
-  }
-
-  /**
-   * Shows a spam blocking promo notification.
-   *
-   * @param notificationTag a string identifier for this notification.
-   * @param notificationId an identifier for this notification.
-   * @param contentIntent pending intent to be sent when notification is clicked.
-   * @param actionIntent pending intent to be sent when enable-spam-blocking button is clicked.
-   */
-  public void showSpamBlockingPromoNotification(
-      String notificationTag,
-      int notificationId,
-      PendingIntent contentIntent,
-      PendingIntent actionIntent) {
-    updateLastShowSpamTimestamp();
-    Logger.get(context)
-        .logImpression(DialerImpression.Type.SPAM_BLOCKING_AFTER_CALL_NOTIFICATION_PROMO_SHOWN);
-    DialerNotificationManager.notify(
-        context,
-        notificationTag,
-        notificationId,
-        getSpamBlockingPromoNotification(contentIntent, actionIntent));
-  }
-
-  /**
-   * Builds a spam blocking promo notification with given intents.
-   *
-   * @param contentIntent pending intent to be sent when notification is clicked.
-   * @param actionIntent pending intent to be sent when enable-spam-blocking button is clicked.
-   */
-  @SuppressLint("NewApi")
-  private Notification getSpamBlockingPromoNotification(
-      PendingIntent contentIntent, PendingIntent actionIntent) {
-    Notification.Builder builder =
-        new Builder(context)
-            .setContentIntent(contentIntent)
-            .setCategory(Notification.CATEGORY_STATUS)
-            .setPriority(Notification.PRIORITY_DEFAULT)
-            .setColor(ThemeComponent.get(context).theme().getColorPrimary())
-            .setSmallIcon(R.drawable.quantum_ic_call_vd_theme_24)
-            .setLargeIcon(Icon.createWithResource(context, R.drawable.spam_blocking_promo_icon))
-            .setContentText(context.getString(R.string.spam_blocking_promo_text))
-            .setStyle(
-                new Notification.BigTextStyle()
-                    .bigText(context.getString(R.string.spam_blocking_promo_text)))
-            .addAction(
-                new Notification.Action.Builder(
-                        R.drawable.quantum_ic_block_vd_theme_24,
-                        context.getString(R.string.spam_blocking_promo_action_filter_spam),
-                        actionIntent)
-                    .build())
-            .setContentTitle(context.getString(R.string.spam_blocking_promo_title));
-
-    if (BuildCompat.isAtLeastO()) {
-      builder.setChannelId(NotificationChannelId.DEFAULT);
-    }
-    return builder.build();
-  }
-}
-
diff --git a/java/com/android/dialer/spam/promo/res/drawable/spam_blocking_promo_icon.xml b/java/com/android/dialer/spam/promo/res/drawable/spam_blocking_promo_icon.xml
deleted file mode 100644
index 0434004..0000000
--- a/java/com/android/dialer/spam/promo/res/drawable/spam_blocking_promo_icon.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-
-  <item>
-    <shape android:shape="oval">
-      <!-- Note: Ensure matches incallui and blocking colors. -->
-      <solid android:color="#A52714"/>
-      <size
-          android:height="@android:dimen/notification_large_icon_height"
-          android:width="@android:dimen/notification_large_icon_width"/>
-    </shape>
-  </item>
-
-  <item
-      android:drawable="@drawable/quantum_ic_report_white_36"
-      android:gravity="center"/>
-
-</layer-list>
diff --git a/java/com/android/dialer/spam/promo/res/values-af/strings.xml b/java/com/android/dialer/spam/promo/res/values-af/strings.xml
deleted file mode 100644
index 37a210f..0000000
--- a/java/com/android/dialer/spam/promo/res/values-af/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtreer alle verdagte strooiposoproepe?</string>
-  <string name="spam_blocking_promo_text">Oproepe soos die een wat jy pas geblokkeer het, sal jou nie meer
-      steur nie</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtreer strooipos</string>
-  <string name="spam_blocking_promo_action_dismiss">Weier</string>
-  <string name="spam_blocking_setting_prompt">Instellings</string>
-  <string name="spam_blocking_settings_enable_error_text">Sukkel om strooiposfiltrering aan te skakel</string>
-  <string name="spam_blocking_settings_disable_error_text">Sukkel om strooiposfiltrering af te skakel</string>
-  <string name="spam_blocking_settings_enable_complete_text">Strooiposfiltrering is aangeskakel</string>
-  <string name="spam_blocking_settings_disable_complete_text">Strooiposfiltrering is afgeskakel</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-am/strings.xml b/java/com/android/dialer/spam/promo/res/values-am/strings.xml
deleted file mode 100644
index 46ff084..0000000
--- a/java/com/android/dialer/spam/promo/res/values-am/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">ሁሉንም የተጠረጠሩ አይፈለጌ ጥሪዎችን አጣራ?</string>
-  <string name="spam_blocking_promo_text">አሁን እንዳገዱት ጥሪ አይነት ጥሪዎች ከእንግዲህ ወዲያ አይረብሹዎትም</string>
-  <string name="spam_blocking_promo_action_filter_spam">አይፈለጌ መልዕክትን አጣራ</string>
-  <string name="spam_blocking_promo_action_dismiss">አሰናብት</string>
-  <string name="spam_blocking_setting_prompt">ቅንብሮች</string>
-  <string name="spam_blocking_settings_enable_error_text">አይፈለጌ ማጣራትን በማብራት ላይ ችግር</string>
-  <string name="spam_blocking_settings_disable_error_text">አይፈለጌ ማጣራትን በማብራት ላይ ችግር</string>
-  <string name="spam_blocking_settings_enable_complete_text">የአይፈለጌ መልዕክት ማጣሪያ በርቷል</string>
-  <string name="spam_blocking_settings_disable_complete_text">የአይፈለጌ መልዕክት ማጣሪያ ጠፍቷል</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ar/strings.xml b/java/com/android/dialer/spam/promo/res/values-ar/strings.xml
deleted file mode 100644
index 7e3705f..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ar/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">هل تريد تصفية كل المكالمات غير المرغوب فيها؟</string>
-  <string name="spam_blocking_promo_text">لن تزعجك أي مكالمات مثل التي حظرتها لتوك
-      بعد الآن</string>
-  <string name="spam_blocking_promo_action_filter_spam">تصفية المحتوى غير المرغوب فيه</string>
-  <string name="spam_blocking_promo_action_dismiss">رفض</string>
-  <string name="spam_blocking_setting_prompt">الإعدادات</string>
-  <string name="spam_blocking_settings_enable_error_text">حدثت مشكلة أثناء تفعيل تصفية المحتوى غير المرغوب فيه</string>
-  <string name="spam_blocking_settings_disable_error_text">حدثت مشكلة أثناء إيقاف تصفية المحتوى غير المرغوب فيه</string>
-  <string name="spam_blocking_settings_enable_complete_text">تم تفعيل تصفية المحتوى غير المرغوب فيه</string>
-  <string name="spam_blocking_settings_disable_complete_text">تم إيقاف تصفية المحتوى غير المرغوب فيه</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-az/strings.xml b/java/com/android/dialer/spam/promo/res/values-az/strings.xml
deleted file mode 100644
index 8faa2fa..0000000
--- a/java/com/android/dialer/spam/promo/res/values-az/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Bütün şübhəli spam zəngləri filtrlənsin?</string>
-  <string name="spam_blocking_promo_text">Yeni blok etdiyiniz kimi zənglər artıq Sizi narahat etməyəcək</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spamı Filtrləyin</string>
-  <string name="spam_blocking_promo_action_dismiss">Kənarlaşdırın</string>
-  <string name="spam_blocking_setting_prompt">Ayarlar</string>
-  <string name="spam_blocking_settings_enable_error_text">Spam filterini aktiv edərkən xəta baş verdi</string>
-  <string name="spam_blocking_settings_disable_error_text">Spam filterini deaktiv edərkən xəta baş verdi</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam filteri aktivdir</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtri deaktivdir</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/spam/promo/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 8f62f39..0000000
--- a/java/com/android/dialer/spam/promo/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Želite li da filtrirate sve pozive za koje se sumnja da su nepoželjni?</string>
-  <string name="spam_blocking_promo_text">Pozivi kao što je ovaj koji ste upravo blokirali vas više
-      neće ometati</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtriraj nepoželjne pozive</string>
-  <string name="spam_blocking_promo_action_dismiss">Odbaci</string>
-  <string name="spam_blocking_setting_prompt">Podešavanja</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem pri uključivanju filtriranja nepoželjnih poziva</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem pri isključivanju filtriranja nepoželjnih poziva</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtriranje nepoželjnih poziva je uključeno</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtriranje nepoželjnih poziva je isključeno</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-be/strings.xml b/java/com/android/dialer/spam/promo/res/values-be/strings.xml
deleted file mode 100644
index b6e0655..0000000
--- a/java/com/android/dialer/spam/promo/res/values-be/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Фільтраванне ўсіх выклікаў, якія падазраюцца ў спаме</string>
-  <string name="spam_blocking_promo_text">Выклікі, падобныя на той, які вы заблакіравалі, больш не
-      будуць турбаваць вас</string>
-  <string name="spam_blocking_promo_action_filter_spam">Фільтраваць спам</string>
-  <string name="spam_blocking_promo_action_dismiss">Адхіліць</string>
-  <string name="spam_blocking_setting_prompt">Налады</string>
-  <string name="spam_blocking_settings_enable_error_text">Памылка ўключэння фільтра спама</string>
-  <string name="spam_blocking_settings_disable_error_text">Памылка выключэння фільтра спама</string>
-  <string name="spam_blocking_settings_enable_complete_text">Фільтрацыя спама ўключана</string>
-  <string name="spam_blocking_settings_disable_complete_text">Фільтрацыя спама выключана</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-bg/strings.xml b/java/com/android/dialer/spam/promo/res/values-bg/strings.xml
deleted file mode 100644
index 608c5b2..0000000
--- a/java/com/android/dialer/spam/promo/res/values-bg/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Да се филтрират ли всички обаждания, които са възможен спам?</string>
-  <string name="spam_blocking_promo_text">Повече няма да ви безпокоят обаждания като току-що блокираното от вас</string>
-  <string name="spam_blocking_promo_action_filter_spam">Филтриране на спама</string>
-  <string name="spam_blocking_promo_action_dismiss">Отхвърляне</string>
-  <string name="spam_blocking_setting_prompt">Настройки</string>
-  <string name="spam_blocking_settings_enable_error_text">При включването на филтрирането на спама възникна проблем</string>
-  <string name="spam_blocking_settings_disable_error_text">При изключването на филтрирането на спама възникна проблем</string>
-  <string name="spam_blocking_settings_enable_complete_text">Филтрирането на спама е включено</string>
-  <string name="spam_blocking_settings_disable_complete_text">Филтрирането на спама е изключено</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-bn/strings.xml b/java/com/android/dialer/spam/promo/res/values-bn/strings.xml
deleted file mode 100644
index 60fc070..0000000
--- a/java/com/android/dialer/spam/promo/res/values-bn/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">সন্দেহজনক স্প্যাম কল ফিল্টার করবেন?</string>
-  <string name="spam_blocking_promo_text">আপনি এইমাত্র যে কলটি ব্লক করলেন, সেই ধরনের কল দিয়ে আপনাকে
-      আর বিরক্ত করা হবে না</string>
-  <string name="spam_blocking_promo_action_filter_spam">স্প্যাম ফিল্টার করুন</string>
-  <string name="spam_blocking_promo_action_dismiss">খারিজ</string>
-  <string name="spam_blocking_setting_prompt">সেটিংস</string>
-  <string name="spam_blocking_settings_enable_error_text">স্প্যাম ফিল্টার করার বৈশিষ্ট্য চালু করতে সমস্যা হয়েছে</string>
-  <string name="spam_blocking_settings_disable_error_text">স্প্যাম ফিল্টার করার বৈশিষ্ট্য বন্ধ করতে সমস্যা হয়েছে</string>
-  <string name="spam_blocking_settings_enable_complete_text">স্প্যাম ফিল্টার করার বৈশিষ্ট্য চালু করা হয়েছে</string>
-  <string name="spam_blocking_settings_disable_complete_text">স্প্যাম ফিল্টার করার বৈশিষ্ট্য বন্ধ করা হয়েছে</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-bs/strings.xml b/java/com/android/dialer/spam/promo/res/values-bs/strings.xml
deleted file mode 100644
index 495192a..0000000
--- a/java/com/android/dialer/spam/promo/res/values-bs/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrirati sve potencijalne neželjene pozive?</string>
-  <string name="spam_blocking_promo_text">Pozivi, kao što je onaj koji ste upravo blokirali, više vas neće
-      uznemiravati</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtriranje neželjenih poziva</string>
-  <string name="spam_blocking_promo_action_dismiss">Odbaci</string>
-  <string name="spam_blocking_setting_prompt">Postavke</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem prilikom uključivanja filtriranja neželjenih poziva</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem prilikom isključivanja filtriranja neželjenih poziva</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtriranje neželjenih poziva je uključeno</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtriranje neželjenih poziva je isključeno</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ca/strings.xml b/java/com/android/dialer/spam/promo/res/values-ca/strings.xml
deleted file mode 100644
index 2b26129..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ca/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vols filtrar totes les possibles trucades brossa?</string>
-  <string name="spam_blocking_promo_text">Les trucades com la que acabes de bloquejar ja no
-      t\'interrompran</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtra les trucades brossa</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignora</string>
-  <string name="spam_blocking_setting_prompt">Configuració</string>
-  <string name="spam_blocking_settings_enable_error_text">S\'ha produït un error en activar el filtre de correu brossa</string>
-  <string name="spam_blocking_settings_disable_error_text">S\'ha produït un error en desactivar el filtre de correu brossa</string>
-  <string name="spam_blocking_settings_enable_complete_text">El filtre de trucades brossa s\'ha activat</string>
-  <string name="spam_blocking_settings_disable_complete_text">El filtre de trucades brossa s\'ha desactivat</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-cs/strings.xml b/java/com/android/dialer/spam/promo/res/values-cs/strings.xml
deleted file mode 100644
index 6aa3e79..0000000
--- a/java/com/android/dialer/spam/promo/res/values-cs/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrovat všechny hovory, u kterých je podezření na spam?</string>
-  <string name="spam_blocking_promo_text">Hovory jako ten, který jste právě zablokovali, už vás nebudou rušit</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrovat spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Zavřít</string>
-  <string name="spam_blocking_setting_prompt">Nastavení</string>
-  <string name="spam_blocking_settings_enable_error_text">Filtrování spamu se nepodařilo zapnout</string>
-  <string name="spam_blocking_settings_disable_error_text">Filtrování spamu se nepodařilo vypnout</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrování spamu je zapnuto</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrování spamu je vypnuto</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-da/strings.xml b/java/com/android/dialer/spam/promo/res/values-da/strings.xml
deleted file mode 100644
index 2e72e5c..0000000
--- a/java/com/android/dialer/spam/promo/res/values-da/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vil du filtrere alle formodede spamopkald?</string>
-  <string name="spam_blocking_promo_text">Opkald som det, du netop har blokeret, forstyrrer dig
-      ikke længere</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrer spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Afvis</string>
-  <string name="spam_blocking_setting_prompt">Indstillinger</string>
-  <string name="spam_blocking_settings_enable_error_text">Der opstod et problem, da filtrering af spamopkald skulle aktiveres</string>
-  <string name="spam_blocking_settings_disable_error_text">Der opstod et problem, da filtrering af spamopkald skulle deaktiveres</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrering af spamopkald blev aktiveret</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrering af spamopkald blev deaktiveret</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-de/strings.xml b/java/com/android/dialer/spam/promo/res/values-de/strings.xml
deleted file mode 100644
index 1d21d96..0000000
--- a/java/com/android/dialer/spam/promo/res/values-de/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Alle Anrufe bei Verdacht auf Spam herausfiltern?</string>
-  <string name="spam_blocking_promo_text">Anrufe wie der, den du gerade blockiert hast,
-      werden dich in Zukunft nicht mehr stören</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spam herausfiltern</string>
-  <string name="spam_blocking_promo_action_dismiss">Schließen</string>
-  <string name="spam_blocking_setting_prompt">Einstellungen</string>
-  <string name="spam_blocking_settings_enable_error_text">Fehler beim Aktivieren des Spamfilters</string>
-  <string name="spam_blocking_settings_disable_error_text">Fehler beim Deaktivieren des Spamfilters</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spamfilter aktiviert</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spamfilter deaktiviert</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-el/strings.xml b/java/com/android/dialer/spam/promo/res/values-el/strings.xml
deleted file mode 100644
index def1d70..0000000
--- a/java/com/android/dialer/spam/promo/res/values-el/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Φιλτράρισμα όλων των ύποπτων ανεπιθύμητων κλήσεων;</string>
-  <string name="spam_blocking_promo_text">Κλήσεις όπως αυτή που μόλις αποκλείσατε δεν θα σας ενοχλούν πλέον</string>
-  <string name="spam_blocking_promo_action_filter_spam">Φιλτράρισμα ανεπιθύμητων κλήσεων</string>
-  <string name="spam_blocking_promo_action_dismiss">Απόρριψη</string>
-  <string name="spam_blocking_setting_prompt">Ρυθμίσεις</string>
-  <string name="spam_blocking_settings_enable_error_text">Προέκυψε πρόβλημα κατά την ενεργοποίηση του φιλτραρίσματος ανεπιθύμητων μηνυμάτων</string>
-  <string name="spam_blocking_settings_disable_error_text">Προέκυψε πρόβλημα κατά την απενεργοποίηση του φιλτραρίσματος ανεπιθύμητων μηνυμάτων</string>
-  <string name="spam_blocking_settings_enable_complete_text">Το φιλτράρισμα ανεπιθύμητων κλήσεων ενεργοποιήθηκε</string>
-  <string name="spam_blocking_settings_disable_complete_text">Το φιλτράρισμα ανεπιθύμητων κλήσεων απενεργοποιήθηκε</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-en-rAU/strings.xml b/java/com/android/dialer/spam/promo/res/values-en-rAU/strings.xml
deleted file mode 100644
index ab59fce..0000000
--- a/java/com/android/dialer/spam/promo/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filter all suspected spam calls?</string>
-  <string name="spam_blocking_promo_text">Calls like the one that you just blocked will no longer
-      disturb you</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filter Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Dismiss</string>
-  <string name="spam_blocking_setting_prompt">Settings</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem turning on spam filtering</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem turning off spam filtering</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam filtering turned on</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtering turned off</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-en-rGB/strings.xml b/java/com/android/dialer/spam/promo/res/values-en-rGB/strings.xml
deleted file mode 100644
index ab59fce..0000000
--- a/java/com/android/dialer/spam/promo/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filter all suspected spam calls?</string>
-  <string name="spam_blocking_promo_text">Calls like the one that you just blocked will no longer
-      disturb you</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filter Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Dismiss</string>
-  <string name="spam_blocking_setting_prompt">Settings</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem turning on spam filtering</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem turning off spam filtering</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam filtering turned on</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtering turned off</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-en-rIN/strings.xml b/java/com/android/dialer/spam/promo/res/values-en-rIN/strings.xml
deleted file mode 100644
index ab59fce..0000000
--- a/java/com/android/dialer/spam/promo/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filter all suspected spam calls?</string>
-  <string name="spam_blocking_promo_text">Calls like the one that you just blocked will no longer
-      disturb you</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filter Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Dismiss</string>
-  <string name="spam_blocking_setting_prompt">Settings</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem turning on spam filtering</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem turning off spam filtering</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam filtering turned on</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtering turned off</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-es-rUS/strings.xml b/java/com/android/dialer/spam/promo/res/values-es-rUS/strings.xml
deleted file mode 100644
index 3144e82..0000000
--- a/java/com/android/dialer/spam/promo/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">¿Quieres filtrar todas las llamadas que se identifiquen como spam?</string>
-  <string name="spam_blocking_promo_text">Las llamadas como la que bloqueaste recién ya no
-      te molestarán</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Descartar</string>
-  <string name="spam_blocking_setting_prompt">Configuración</string>
-  <string name="spam_blocking_settings_enable_error_text">Hubo un problema al activar la opción para filtrar spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Hubo un problema al desactivar la opción para filtrar spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Se activó la opción para filtrar spam</string>
-  <string name="spam_blocking_settings_disable_complete_text">Se desactivó la opción para filtrar spam</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-es/strings.xml b/java/com/android/dialer/spam/promo/res/values-es/strings.xml
deleted file mode 100644
index 163ed85..0000000
--- a/java/com/android/dialer/spam/promo/res/values-es/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">¿Quieres filtrar todas las posibles llamadas de spam?</string>
-  <string name="spam_blocking_promo_text">Las llamadas como la que acabas de bloquear ya no te
-      molestarán</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignorar</string>
-  <string name="spam_blocking_setting_prompt">Ajustes</string>
-  <string name="spam_blocking_settings_enable_error_text">No se ha podido activar el filtrado de spam</string>
-  <string name="spam_blocking_settings_disable_error_text">No se ha podido desactivar el filtrado de spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Se ha activado el filtrado de spam</string>
-  <string name="spam_blocking_settings_disable_complete_text">Se ha desactivado el filtrado de spam</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-et/strings.xml b/java/com/android/dialer/spam/promo/res/values-et/strings.xml
deleted file mode 100644
index 521f14f..0000000
--- a/java/com/android/dialer/spam/promo/res/values-et/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Kas soovite filtreerida kõik arvatavad rämpskõned?</string>
-  <string name="spam_blocking_promo_text">Hiljuti blokeeritud kõnega sarnased kõned
-      ei häiri teid edaspidi</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtreeri rämpskõned</string>
-  <string name="spam_blocking_promo_action_dismiss">Loobu</string>
-  <string name="spam_blocking_setting_prompt">Seaded</string>
-  <string name="spam_blocking_settings_enable_error_text">Rämpskõnede filtreerimise sisselülitamisel tekkis probleem</string>
-  <string name="spam_blocking_settings_disable_error_text">Rämpskõnede filtreerimise väljalülitamisel tekkis probleem</string>
-  <string name="spam_blocking_settings_enable_complete_text">Rämpskõnede filtreerimine on sisse lülitatud</string>
-  <string name="spam_blocking_settings_disable_complete_text">Rämpskõnede filtreerimine on välja lülitatud</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-eu/strings.xml b/java/com/android/dialer/spam/promo/res/values-eu/strings.xml
deleted file mode 100644
index 94023c0..0000000
--- a/java/com/android/dialer/spam/promo/res/values-eu/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Ustezko spam-dei guztiak iragazi nahi dituzu?</string>
-  <string name="spam_blocking_promo_text">Aurrerantzean, blokeatu berri duzunaren antzeko deiek
-      ez zaituzte molestatuko</string>
-  <string name="spam_blocking_promo_action_filter_spam">Iragazi spama</string>
-  <string name="spam_blocking_promo_action_dismiss">Baztertu</string>
-  <string name="spam_blocking_setting_prompt">Ezarpenak</string>
-  <string name="spam_blocking_settings_enable_error_text">Arazo bat izan da spama iragazteko aukera aktibatzean</string>
-  <string name="spam_blocking_settings_disable_error_text">Arazo bat izan da spama iragazteko aukera desaktibatzean</string>
-  <string name="spam_blocking_settings_enable_complete_text">Aktibatu da spama iragazteko aukera</string>
-  <string name="spam_blocking_settings_disable_complete_text">Desaktibatu da spama iragazteko aukera</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-fa/strings.xml b/java/com/android/dialer/spam/promo/res/values-fa/strings.xml
deleted file mode 100644
index db797c6..0000000
--- a/java/com/android/dialer/spam/promo/res/values-fa/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">همه تماس‌های مشکوک به هرزنامه فیلتر شود؟</string>
-  <string name="spam_blocking_promo_text">تماس‌های مشابه تماسی که همین‌حالا مسدود کردید
-      دیگر برای شما مزاحمت ایجاد نخواهند کرد</string>
-  <string name="spam_blocking_promo_action_filter_spam">فیلتر هرزنامه</string>
-  <string name="spam_blocking_promo_action_dismiss">نپذیرفتن</string>
-  <string name="spam_blocking_setting_prompt">تنظیمات</string>
-  <string name="spam_blocking_settings_enable_error_text">مشکل هنگام روشن کردن فیلتر هرزنامه</string>
-  <string name="spam_blocking_settings_disable_error_text">مشکل هنگام خاموش کردن فیلتر هرزنامه</string>
-  <string name="spam_blocking_settings_enable_complete_text">فیلتر هرزنامه فعال است</string>
-  <string name="spam_blocking_settings_disable_complete_text">فیلتر هرزنامه غیرفعال است</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-fi/strings.xml b/java/com/android/dialer/spam/promo/res/values-fi/strings.xml
deleted file mode 100644
index 3b85fb0..0000000
--- a/java/com/android/dialer/spam/promo/res/values-fi/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Suodatetaanko kaikki häirikköpuheluilta vaikuttavat puhelut?</string>
-  <string name="spam_blocking_promo_text">Estämäsi kaltaiset puhelut eivät enää
-      häiritse sinua</string>
-  <string name="spam_blocking_promo_action_filter_spam">Suodata häirikköpuhelut</string>
-  <string name="spam_blocking_promo_action_dismiss">Ohita</string>
-  <string name="spam_blocking_setting_prompt">Asetukset</string>
-  <string name="spam_blocking_settings_enable_error_text">Häirikköpuhelujen suodatuksen käyttöönotossa oli ongelma</string>
-  <string name="spam_blocking_settings_disable_error_text">Häirikköpuhelujen suodatuksen poistamisessa käytöstä oli ongelma</string>
-  <string name="spam_blocking_settings_enable_complete_text">Häirikköpuhelujen suodatus päällä</string>
-  <string name="spam_blocking_settings_disable_complete_text">Häirikköpuhelujen suodatus pois päältä</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-fr-rCA/strings.xml b/java/com/android/dialer/spam/promo/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 312f7f0..0000000
--- a/java/com/android/dialer/spam/promo/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrer tous les appels importuns suspects?</string>
-  <string name="spam_blocking_promo_text">Les appels comme celui que vous venez de bloquer ne vous
-      dérangeront plus</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrer les appels importuns</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignorer</string>
-  <string name="spam_blocking_setting_prompt">Paramètres</string>
-  <string name="spam_blocking_settings_enable_error_text">Problème lors de l\'activation du filtrage des appels importuns</string>
-  <string name="spam_blocking_settings_disable_error_text">Problème lors de la désactivation du filtrage des appels importuns</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrage des appels importuns activé</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrage des appels importuns désactivé</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-fr/strings.xml b/java/com/android/dialer/spam/promo/res/values-fr/strings.xml
deleted file mode 100644
index c6ec5a9..0000000
--- a/java/com/android/dialer/spam/promo/res/values-fr/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrer tous les appels potentiellement indésirables ?</string>
-  <string name="spam_blocking_promo_text">Vous ne serez plus dérangé par des appels similaires à celui que vous venez de bloquer.</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrer le spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignorer</string>
-  <string name="spam_blocking_setting_prompt">Paramètres</string>
-  <string name="spam_blocking_settings_enable_error_text">Problème lors de l\'activation du fitre antispam</string>
-  <string name="spam_blocking_settings_disable_error_text">Problème lors de la désactivation du filtre antispam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Le filtre antispam est activé</string>
-  <string name="spam_blocking_settings_disable_complete_text">Le filtre antispam est désactivé</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-gl/strings.xml b/java/com/android/dialer/spam/promo/res/values-gl/strings.xml
deleted file mode 100644
index 3b3b5df..0000000
--- a/java/com/android/dialer/spam/promo/res/values-gl/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Queres filtrar todas as posibles chamadas de spam?</string>
-  <string name="spam_blocking_promo_text">Xa non te amolarán chamadas como a que
-      acabas de bloquear</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignorar</string>
-  <string name="spam_blocking_setting_prompt">Configuración</string>
-  <string name="spam_blocking_settings_enable_error_text">Produciuse un problema ao activar o filtrado de spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Produciuse un problema ao desactivar o filtrado de spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Activouse o filtrado de spam</string>
-  <string name="spam_blocking_settings_disable_complete_text">Desactivouse o filtrado de spam</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-gu/strings.xml b/java/com/android/dialer/spam/promo/res/values-gu/strings.xml
deleted file mode 100644
index 265ecfe..0000000
--- a/java/com/android/dialer/spam/promo/res/values-gu/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">બધા શંકાસ્પદ સ્પામ કૉલને ફિલ્ટર કરીએ?</string>
-  <string name="spam_blocking_promo_text">તમે હમણાં જ જે કૉલને બ્લૉક કર્યો છે તેવા કૉલ હવેથી તમારા કામમાં ખલેલ
-      પાડી શકશે નહીં</string>
-  <string name="spam_blocking_promo_action_filter_spam">સ્પામ ફિલ્ટર કરો</string>
-  <string name="spam_blocking_promo_action_dismiss">છોડી દો</string>
-  <string name="spam_blocking_setting_prompt">સેટિંગ</string>
-  <string name="spam_blocking_settings_enable_error_text">સ્પામ ફિલ્ટરિંગને ચાલુ કરવામાં સમસ્યા</string>
-  <string name="spam_blocking_settings_disable_error_text">સ્પામ ફિલ્ટરિંગને બંધ કરવામાં સમસ્યા</string>
-  <string name="spam_blocking_settings_enable_complete_text">સ્પામ ફિલ્ટરિંગ ચાલુ કર્યું</string>
-  <string name="spam_blocking_settings_disable_complete_text">સ્પામ ફિલ્ટરિંગ બંધ કર્યું</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-hi/strings.xml b/java/com/android/dialer/spam/promo/res/values-hi/strings.xml
deleted file mode 100644
index 80a98d4..0000000
--- a/java/com/android/dialer/spam/promo/res/values-hi/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">सभी संदिग्ध स्पैम कॉल फ़िल्टर करें?</string>
-  <string name="spam_blocking_promo_text">आपने अभी-अभी जिस तरह के कॉल पर रोक लगाई है, वैसे कॉल अब आपको
-      परेशान नहीं करेंगे</string>
-  <string name="spam_blocking_promo_action_filter_spam">स्पैम फ़िल्टर करें</string>
-  <string name="spam_blocking_promo_action_dismiss">खारिज करें</string>
-  <string name="spam_blocking_setting_prompt">सेटिंग</string>
-  <string name="spam_blocking_settings_enable_error_text">स्पैम फ़िल्टर करने की सुविधा चालू करने में समस्या आई</string>
-  <string name="spam_blocking_settings_disable_error_text">स्पैम फ़िल्टर करने की सुविधा बंद करने में समस्या आई</string>
-  <string name="spam_blocking_settings_enable_complete_text">स्पैम फ़िल्टर चालू किया गया</string>
-  <string name="spam_blocking_settings_disable_complete_text">स्पैम फ़िल्टर बंद किया गया</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-hr/strings.xml b/java/com/android/dialer/spam/promo/res/values-hr/strings.xml
deleted file mode 100644
index 5ce00b1..0000000
--- a/java/com/android/dialer/spam/promo/res/values-hr/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Želite li filtrirati sve moguće neželjene pozive?</string>
-  <string name="spam_blocking_promo_text">Pozivi kao što je ovaj koji ste upravo blokirali više
-      vas neće ometati</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtriranje neželjenih poziva</string>
-  <string name="spam_blocking_promo_action_dismiss">Odbaci</string>
-  <string name="spam_blocking_setting_prompt">Postavke</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem pri uključivanju filtriranja neželjenih poziva</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem pri isključivanju filtriranja neželjenih poziva</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtriranje neželjenih poziva uključeno</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtriranje neželjenih poziva isključeno</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-hu/strings.xml b/java/com/android/dialer/spam/promo/res/values-hu/strings.xml
deleted file mode 100644
index cdd2c57..0000000
--- a/java/com/android/dialer/spam/promo/res/values-hu/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Ki szeretné szűrni az összes gyanús spamhívást?</string>
-  <string name="spam_blocking_promo_text">Az épp letiltotthoz hasonló hívások nem fogják többet zavarni.</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spamszűrés</string>
-  <string name="spam_blocking_promo_action_dismiss">Bezárás</string>
-  <string name="spam_blocking_setting_prompt">Beállítások</string>
-  <string name="spam_blocking_settings_enable_error_text">Hiba történt a spamszűrés bekapcsolásakor</string>
-  <string name="spam_blocking_settings_disable_error_text">Hiba történt a spamszűrés kikapcsolásakor</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spamszűrés bekapcsolva</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spamszűrés kikapcsolva</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-hy/strings.xml b/java/com/android/dialer/spam/promo/res/values-hy/strings.xml
deleted file mode 100644
index b0fe325..0000000
--- a/java/com/android/dialer/spam/promo/res/values-hy/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Զտե՞լ բոլոր անցանկալի զանգերը</string>
-  <string name="spam_blocking_promo_text">Դուք քիչ առաջ զանգ արգելափակեցիք: Նման զանգերը այլևս ձեզ
-      չեն անհանգստացնի</string>
-  <string name="spam_blocking_promo_action_filter_spam">Զտել սպամը</string>
-  <string name="spam_blocking_promo_action_dismiss">Փակել</string>
-  <string name="spam_blocking_setting_prompt">Կարգավորումներ</string>
-  <string name="spam_blocking_settings_enable_error_text">Չհաջողվեց միացնել սպամի զտումը</string>
-  <string name="spam_blocking_settings_disable_error_text">Չհաջողվեց անջատել սպամի զտումը</string>
-  <string name="spam_blocking_settings_enable_complete_text">Սպապի զտումը միացավ</string>
-  <string name="spam_blocking_settings_disable_complete_text">Սպապի զտումն անջատվեց</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-in/strings.xml b/java/com/android/dialer/spam/promo/res/values-in/strings.xml
deleted file mode 100644
index 53e3e7a..0000000
--- a/java/com/android/dialer/spam/promo/res/values-in/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filter semua panggilan yang diduga spam?</string>
-  <string name="spam_blocking_promo_text">Panggilan seperti yang baru saja diblokir tidak akan lagi
-      mengganggu Anda</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filter Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Tutup</string>
-  <string name="spam_blocking_setting_prompt">Setelan</string>
-  <string name="spam_blocking_settings_enable_error_text">Masalah saat mengaktifkan pemfilteran spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Masalah saat menonaktifkan pemfilteran spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Pemfilteran spam diaktifkan</string>
-  <string name="spam_blocking_settings_disable_complete_text">Pemfilteran spam dinonaktifkan</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-is/strings.xml b/java/com/android/dialer/spam/promo/res/values-is/strings.xml
deleted file mode 100644
index b48f100..0000000
--- a/java/com/android/dialer/spam/promo/res/values-is/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Viltu sía út símtöl sem berast úr hugsanlegum ruslnúmerum?</string>
-  <string name="spam_blocking_promo_text">Þú munt ekki lengur fá símtal eins og það
-      sem þú lokaðir á</string>
-  <string name="spam_blocking_promo_action_filter_spam">Sía símtöl úr ruslnúmerum</string>
-  <string name="spam_blocking_promo_action_dismiss">Hunsa</string>
-  <string name="spam_blocking_setting_prompt">Stillingar</string>
-  <string name="spam_blocking_settings_enable_error_text">Villa við að kveikja á síun símtala úr ruslnúmerum</string>
-  <string name="spam_blocking_settings_disable_error_text">Villa við að slökkva á síun símtala úr ruslnúmerum</string>
-  <string name="spam_blocking_settings_enable_complete_text">Kveikt á síun símtala úr ruslnúmerum</string>
-  <string name="spam_blocking_settings_disable_complete_text">Slökkt á síun símtala úr ruslnúmerum</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-it/strings.xml b/java/com/android/dialer/spam/promo/res/values-it/strings.xml
deleted file mode 100644
index e882f7b..0000000
--- a/java/com/android/dialer/spam/promo/res/values-it/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrare tutte le chiamate di presunto spam?</string>
-  <string name="spam_blocking_promo_text">Le chiamate come quella che hai appena bloccato non ti disturberanno più</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtro antispam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignora</string>
-  <string name="spam_blocking_setting_prompt">Impostazioni</string>
-  <string name="spam_blocking_settings_enable_error_text">Errore durante l\'attivazione del filtro antispam</string>
-  <string name="spam_blocking_settings_disable_error_text">Errore durante la disattivazione del filtro antispam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtro antispam attivato</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtro antispam disattivato</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-iw/strings.xml b/java/com/android/dialer/spam/promo/res/values-iw/strings.xml
deleted file mode 100644
index 76caf27..0000000
--- a/java/com/android/dialer/spam/promo/res/values-iw/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">רוצה לסנן את כל השיחות שחשודות כספאם?</string>
-  <string name="spam_blocking_promo_text">שיחות כמו השיחה שחסמת לא יטרידו אותך יותר.</string>
-  <string name="spam_blocking_promo_action_filter_spam">סינון ספאם</string>
-  <string name="spam_blocking_promo_action_dismiss">סגירה</string>
-  <string name="spam_blocking_setting_prompt">הגדרות</string>
-  <string name="spam_blocking_settings_enable_error_text">הייתה בעיה בהפעלת הסינון של שיחות ספאם</string>
-  <string name="spam_blocking_settings_disable_error_text">הייתה בעיה בהשבתת הסינון של שיחות ספאם</string>
-  <string name="spam_blocking_settings_enable_complete_text">סינון הספאם הופעל</string>
-  <string name="spam_blocking_settings_disable_complete_text">סינון הספאם הושבת</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ja/strings.xml b/java/com/android/dialer/spam/promo/res/values-ja/strings.xml
deleted file mode 100644
index 7e517b4..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ja/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">迷惑電話の疑いがある通話をすべてブロックしますか？</string>
-  <string name="spam_blocking_promo_text">迷惑電話の疑いがある通話はすべて
-      ブロックされます</string>
-  <string name="spam_blocking_promo_action_filter_spam">迷惑電話をフィルタリング</string>
-  <string name="spam_blocking_promo_action_dismiss">閉じる</string>
-  <string name="spam_blocking_setting_prompt">設定</string>
-  <string name="spam_blocking_settings_enable_error_text">迷惑電話のブロックを ON にできませんでした</string>
-  <string name="spam_blocking_settings_disable_error_text">迷惑電話のブロックを OFF にできませんでした</string>
-  <string name="spam_blocking_settings_enable_complete_text">迷惑電話のフィルタリングを ON にしました</string>
-  <string name="spam_blocking_settings_disable_complete_text">迷惑電話のフィルタリングを OFF にしました</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ka/strings.xml b/java/com/android/dialer/spam/promo/res/values-ka/strings.xml
deleted file mode 100644
index 4452f99..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ka/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">გსურთ ყველა სავარაუდოდ სპამი ზარის გაფილტვრა?</string>
-  <string name="spam_blocking_promo_text">ისეთი ზარები, როგორიც ახლახან დაბლოკეთ, აღარ
-      შეგაწუხებთ</string>
-  <string name="spam_blocking_promo_action_filter_spam">სპამის გაფილტვრა</string>
-  <string name="spam_blocking_promo_action_dismiss">დახურვა</string>
-  <string name="spam_blocking_setting_prompt">პარამეტრები</string>
-  <string name="spam_blocking_settings_enable_error_text">სპამის გაფილტვრის ჩართვისას წარმოიშვა პრობლემა</string>
-  <string name="spam_blocking_settings_disable_error_text">სპამის გაფილტვრის გამორთვისას წარმოიშვა პრობლემა</string>
-  <string name="spam_blocking_settings_enable_complete_text">სპამის გაფილტვრა ჩართულია</string>
-  <string name="spam_blocking_settings_disable_complete_text">სპამის გაფილტვრა გამორთულია</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-kk/strings.xml b/java/com/android/dialer/spam/promo/res/values-kk/strings.xml
deleted file mode 100644
index 5a73b4f..0000000
--- a/java/com/android/dialer/spam/promo/res/values-kk/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Барлық күдікті спам қоңырауларды сүзу қажет пе?</string>
-  <string name="spam_blocking_promo_text">Осы сияқты бөгелген қоңыраулар енді мазаңызды алмайды</string>
-  <string name="spam_blocking_promo_action_filter_spam">Спам сүзу</string>
-  <string name="spam_blocking_promo_action_dismiss">Жабу</string>
-  <string name="spam_blocking_setting_prompt">Параметрлер</string>
-  <string name="spam_blocking_settings_enable_error_text">Спам сүзгісі қосылмады</string>
-  <string name="spam_blocking_settings_disable_error_text">Спам сүзгісі өшірілмеді</string>
-  <string name="spam_blocking_settings_enable_complete_text">Спам сүзгісі қосылды</string>
-  <string name="spam_blocking_settings_disable_complete_text">Спам сүзгісі өшірілді</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-km/strings.xml b/java/com/android/dialer/spam/promo/res/values-km/strings.xml
deleted file mode 100644
index ec3ca45..0000000
--- a/java/com/android/dialer/spam/promo/res/values-km/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">ត្រង​ការហៅទូរសព្ទ​​​ឥតបាន​ការ​ដែល​សង្ស័យ​ទាំងអស់​ដែរ​ឬ​ទេ?</string>
-  <string name="spam_blocking_promo_text">ការហៅ​ទូរសព្ទ​ដូច​ការហៅដែល​អ្នក​ទើបបាន​ទប់ស្កាត់​នឹង​លែង
-      រំខាន​អ្នក​ទៀត​ហើយ</string>
-  <string name="spam_blocking_promo_action_filter_spam">តម្រង​សារ​ឥត​បានការ</string>
-  <string name="spam_blocking_promo_action_dismiss">បដិសេធ</string>
-  <string name="spam_blocking_setting_prompt">ការកំណត់</string>
-  <string name="spam_blocking_settings_enable_error_text">មាន​បញ្ហា​ក្នុង​ការបើក​តម្រង​ការហៅ​ឥត​បានការ</string>
-  <string name="spam_blocking_settings_disable_error_text">មាន​បញ្ហា​បិទ​តម្រង​ការហៅ​ឥត​បានការ</string>
-  <string name="spam_blocking_settings_enable_complete_text">បាន​បើក​​តម្រង​ការហៅ​ឥត​បានការ</string>
-  <string name="spam_blocking_settings_disable_complete_text">បាន​បិទ​តម្រង​ការហៅ​ឥត​​បានការ</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-kn/strings.xml b/java/com/android/dialer/spam/promo/res/values-kn/strings.xml
deleted file mode 100644
index bde9a45..0000000
--- a/java/com/android/dialer/spam/promo/res/values-kn/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">ಶಂಕಿತ ಸ್ಪ್ಯಾಮ್ ಕರೆಗಳನ್ನು ಫಿಲ್ಟರ್‌ ಮಾಡುವುದೇ?</string>
-  <string name="spam_blocking_promo_text">ನೀವು ನಿರ್ಬಂಧಿಸಿದಂತಹ ಕರೆಗಳು ಇನ್ನು ಮುಂದೆ ನಿಮಗೆ ತೊಂದರೆ ಉಂಟು ಮಾಡುವುದಿಲ್ಲ</string>
-  <string name="spam_blocking_promo_action_filter_spam">ಸ್ಪ್ಯಾಮ್‌ ಫಿಲ್ಟರ್‌</string>
-  <string name="spam_blocking_promo_action_dismiss">ವಜಾಗೊಳಿಸಿ</string>
-  <string name="spam_blocking_setting_prompt">ಸೆಟ್ಟಿಂಗ್‌ಗಳು</string>
-  <string name="spam_blocking_settings_enable_error_text">ಸ್ಪ್ಯಾಮ್ ಫಿಲ್ಟರಿಂಗ್‌ ಆನ್ ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ</string>
-  <string name="spam_blocking_settings_disable_error_text">ಸ್ಪ್ಯಾಮ್ ಫಿಲ್ಟರಿಂಗ್‌ ಆಫ್ ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ</string>
-  <string name="spam_blocking_settings_enable_complete_text">ಸ್ಪ್ಯಾಮ್ ಫಿಲ್ಟರಿಂಗ್ ಆನ್ ಮಾಡಲಾಗಿದೆ</string>
-  <string name="spam_blocking_settings_disable_complete_text">ಸ್ಪ್ಯಾಮ್ ಫಿಲ್ಟರಿಂಗ್ ಆಫ್ ಮಾಡಲಾಗಿದೆ</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ko/strings.xml b/java/com/android/dialer/spam/promo/res/values-ko/strings.xml
deleted file mode 100644
index b6effac..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ko/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">의심스러운 스팸 통화를 모두 필터링하시겠습니까?</string>
-  <string name="spam_blocking_promo_text">방금 차단한 통화와 같은 스팸 통화를
-      더 이상 받지 않게 됩니다.</string>
-  <string name="spam_blocking_promo_action_filter_spam">스팸 필터링</string>
-  <string name="spam_blocking_promo_action_dismiss">닫기</string>
-  <string name="spam_blocking_setting_prompt">설정</string>
-  <string name="spam_blocking_settings_enable_error_text">스팸 필터링을 켜는 중에 문제가 발생했습니다.</string>
-  <string name="spam_blocking_settings_disable_error_text">스팸 필터링을 끄는 중에 문제가 발생했습니다.</string>
-  <string name="spam_blocking_settings_enable_complete_text">스팸 필터링이 켜짐</string>
-  <string name="spam_blocking_settings_disable_complete_text">스팸 필터링이 꺼짐</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ky/strings.xml b/java/com/android/dialer/spam/promo/res/values-ky/strings.xml
deleted file mode 100644
index 4f3cd6f..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ky/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Бардык шектүү спам чалуулар чыпкалансынбы?</string>
-  <string name="spam_blocking_promo_text">Сиз азыр эле бөгөттөгөн чалууга окшош чалуулар мындан ары
-      тынчыңызды албайт</string>
-  <string name="spam_blocking_promo_action_filter_spam">Спамды чыпкалоо</string>
-  <string name="spam_blocking_promo_action_dismiss">Жабуу</string>
-  <string name="spam_blocking_setting_prompt">Жөндөөлөр</string>
-  <string name="spam_blocking_settings_enable_error_text">Спамдын чыпкасын күйгүзүүдө көйгөй келип чыкты</string>
-  <string name="spam_blocking_settings_disable_error_text">Спамдын чыпкасын өчүрүүдө көйгөй келип чыкты</string>
-  <string name="spam_blocking_settings_enable_complete_text">Спам чыпкасы күйгүзүлдү</string>
-  <string name="spam_blocking_settings_disable_complete_text">Спам чыпкасы өчүрүлдү</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-lo/strings.xml b/java/com/android/dialer/spam/promo/res/values-lo/strings.xml
deleted file mode 100644
index 298ecae..0000000
--- a/java/com/android/dialer/spam/promo/res/values-lo/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">ກັ່ນຕອງສາຍທີ່ສົງໄສວ່າເປັນສະແປມທັງໝົດບໍ?</string>
-  <string name="spam_blocking_promo_text">ສາຍແບບດຽວກັບທີ່ທ່ານຫາກໍບລັອກໄປຈະບໍ່ສາມາດລົບກວນທ່ານໄດ້ອີກ.</string>
-  <string name="spam_blocking_promo_action_filter_spam">ກັ່ນຕອງສະແປມ</string>
-  <string name="spam_blocking_promo_action_dismiss">ປິດໄວ້</string>
-  <string name="spam_blocking_setting_prompt">ການຕັ້ງຄ່າ</string>
-  <string name="spam_blocking_settings_enable_error_text">ເກີດບັນຫາໃນການເປີດຕົວກັ່ນຕອງສະແປມ</string>
-  <string name="spam_blocking_settings_disable_error_text">ເກີດບັນຫາໃນການປິດຕົວກັ່ນຕອງສະແປມ</string>
-  <string name="spam_blocking_settings_enable_complete_text">ເປີດຕົວກັ່ນຕອງສະແປມແລ້ວ</string>
-  <string name="spam_blocking_settings_disable_complete_text">ປິດຕົວກັ່ນຕອງສະແປມແລ້ວ</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-lt/strings.xml b/java/com/android/dialer/spam/promo/res/values-lt/strings.xml
deleted file mode 100644
index d3d9cdc..0000000
--- a/java/com/android/dialer/spam/promo/res/values-lt/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtruoti visus įtartinus šlamšto skambučius?</string>
-  <string name="spam_blocking_promo_text">Tokie skambučiai kaip ką tik užblokuotas
-      nebetrukdys jums</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtruoti šlamštą</string>
-  <string name="spam_blocking_promo_action_dismiss">Atsisakyti</string>
-  <string name="spam_blocking_setting_prompt">Nustatymai</string>
-  <string name="spam_blocking_settings_enable_error_text">Įjungiant šlamšto filtravimą kilo problema</string>
-  <string name="spam_blocking_settings_disable_error_text">Išjungiant šlamšto filtravimą kilo problema</string>
-  <string name="spam_blocking_settings_enable_complete_text">Šlamšto filtravimas įjungtas</string>
-  <string name="spam_blocking_settings_disable_complete_text">Šlamšto filtravimas išjungtas</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-lv/strings.xml b/java/com/android/dialer/spam/promo/res/values-lv/strings.xml
deleted file mode 100644
index 9d0aafa..0000000
--- a/java/com/android/dialer/spam/promo/res/values-lv/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vai filtrēt visus aizdomīgos nevēlamos zvanus?</string>
-  <string name="spam_blocking_promo_text">Jūs vairs netraucēs tādi zvani kā zvans, ko tikko bloķējāt.</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrēt nevēlamus zvanus</string>
-  <string name="spam_blocking_promo_action_dismiss">Nerādīt</string>
-  <string name="spam_blocking_setting_prompt">Iestatījumi</string>
-  <string name="spam_blocking_settings_enable_error_text">Ieslēdzot nevēlamu zvanu filtrēšanu, radās problēma.</string>
-  <string name="spam_blocking_settings_disable_error_text">Izslēdzot nevēlamu zvanu filtrēšanu, radās problēma.</string>
-  <string name="spam_blocking_settings_enable_complete_text">Nevēlamu zvanu filtrēšana ieslēgta</string>
-  <string name="spam_blocking_settings_disable_complete_text">Nevēlamu zvanu filtrēšana izslēgta</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-mk/strings.xml b/java/com/android/dialer/spam/promo/res/values-mk/strings.xml
deleted file mode 100644
index 457039a..0000000
--- a/java/com/android/dialer/spam/promo/res/values-mk/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Да се филтрираат сите повици што може да се спам?</string>
-  <string name="spam_blocking_promo_text">Повици како оној што го блокиравте веќе нема
-      да ве вознемируваат</string>
-  <string name="spam_blocking_promo_action_filter_spam">Филтрирање спам</string>
-  <string name="spam_blocking_promo_action_dismiss">Отфрли</string>
-  <string name="spam_blocking_setting_prompt">Поставки</string>
-  <string name="spam_blocking_settings_enable_error_text">Проблем при вклучување филтрирање спам</string>
-  <string name="spam_blocking_settings_disable_error_text">Проблем при исклучување филтрирање спам</string>
-  <string name="spam_blocking_settings_enable_complete_text">Филтрирањето спам е вклучено</string>
-  <string name="spam_blocking_settings_disable_complete_text">Филтрирањето спам е исклучено</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ml/strings.xml b/java/com/android/dialer/spam/promo/res/values-ml/strings.xml
deleted file mode 100644
index c76754a..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ml/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">എല്ലാ സംശയാസ്‌പദമായ സ്‌പാം കോളുകളും ഫിൽട്ടർ ചെയ്യണോ?</string>
-  <string name="spam_blocking_promo_text">നിങ്ങൾ ഇപ്പോൾ ബ്ലോക്ക് ചെയ്‌ത പോലുള്ള കോളുകൾ ഇനി നിങ്ങളെ ശല്യപ്പെടുത്തില്ല</string>
-  <string name="spam_blocking_promo_action_filter_spam">സ്‌പാം ഫിൽട്ടർ ചെയ്യുക</string>
-  <string name="spam_blocking_promo_action_dismiss">ഒഴിവാക്കുക</string>
-  <string name="spam_blocking_setting_prompt">ക്രമീകരണം</string>
-  <string name="spam_blocking_settings_enable_error_text">സ്‌പാം ഫിൽട്ടർ ചെയ്യൽ ഓണാക്കുന്നതിൽ പ്രശ്‌നം</string>
-  <string name="spam_blocking_settings_disable_error_text">സ്‌പാം ഫിൽട്ടർ ചെയ്യൽ ഓഫാക്കുന്നതിൽ പ്രശ്‌നം</string>
-  <string name="spam_blocking_settings_enable_complete_text">സ്‌പാം ഫിൽട്ടർ ചെയ്യൽ ഓണാക്കി</string>
-  <string name="spam_blocking_settings_disable_complete_text">സ്‌പാം ഫിൽട്ടർ ചെയ്യൽ ഓഫാക്കി</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-mn/strings.xml b/java/com/android/dialer/spam/promo/res/values-mn/strings.xml
deleted file mode 100644
index 1acdb00..0000000
--- a/java/com/android/dialer/spam/promo/res/values-mn/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Бүх сэжигтэй спам дуудлагыг шүүх үү?</string>
-  <string name="spam_blocking_promo_text">Таны саяхан блоклосон иймэрхүү дуудлагууд танд цаашид саад болохгүй</string>
-  <string name="spam_blocking_promo_action_filter_spam">Спам шүүлтүүрдэх</string>
-  <string name="spam_blocking_promo_action_dismiss">Хаах</string>
-  <string name="spam_blocking_setting_prompt">Тохиргоо</string>
-  <string name="spam_blocking_settings_enable_error_text">Спамийн шүүлтүүрийг асаахад асуудал гарсан</string>
-  <string name="spam_blocking_settings_disable_error_text">Спамийн шүүлтүүрийг унтраахад асуудал гарсан</string>
-  <string name="spam_blocking_settings_enable_complete_text">Спамын шүүлтүүрийг асаасан</string>
-  <string name="spam_blocking_settings_disable_complete_text">Спамын шүүлтүүрийг унтраасан</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-mr/strings.xml b/java/com/android/dialer/spam/promo/res/values-mr/strings.xml
deleted file mode 100644
index 3f2bee5..0000000
--- a/java/com/android/dialer/spam/promo/res/values-mr/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">सर्व संशयित स्पॅम कॉल फिल्टर करायचे?</string>
-  <string name="spam_blocking_promo_text">तुम्ही आत्ताच ब्लॉक केलेल्या सारखे कॉल तुम्हाला अडथळा आणणार नाहीत</string>
-  <string name="spam_blocking_promo_action_filter_spam">स्पॅम फिल्टर करा</string>
-  <string name="spam_blocking_promo_action_dismiss">डिसमिस करा</string>
-  <string name="spam_blocking_setting_prompt">सेटिंग्ज</string>
-  <string name="spam_blocking_settings_enable_error_text">स्‍पॅम फिल्‍टरिंग सुरू करण्‍यात समस्‍या</string>
-  <string name="spam_blocking_settings_disable_error_text">स्‍पॅम फिल्‍टरिंग बंद करण्‍यात समस्‍या</string>
-  <string name="spam_blocking_settings_enable_complete_text">स्पॅम फिल्टरिंग चालू केलेले आहे</string>
-  <string name="spam_blocking_settings_disable_complete_text">स्पॅम फिल्टरिंग बंद केलेले आहे</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ms/strings.xml b/java/com/android/dialer/spam/promo/res/values-ms/strings.xml
deleted file mode 100644
index 28a51da..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ms/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Tapis semua panggilan yang disyaki spam?</string>
-  <string name="spam_blocking_promo_text">Panggilan seperti yang baru sahaja anda sekat tidak akan mengganggu anda lagi</string>
-  <string name="spam_blocking_promo_action_filter_spam">Tapis Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ketepikan</string>
-  <string name="spam_blocking_setting_prompt">Tetapan</string>
-  <string name="spam_blocking_settings_enable_error_text">Masalah semasa menghidupkan penapisan spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Masalah semasa mematikan penapisan spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Penapisan spam dihidupkan</string>
-  <string name="spam_blocking_settings_disable_complete_text">Penapisan spam dimatikan</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-my/strings.xml b/java/com/android/dialer/spam/promo/res/values-my/strings.xml
deleted file mode 100644
index 641e814..0000000
--- a/java/com/android/dialer/spam/promo/res/values-my/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">သံသယဖြစ်ဖွဘ် စပမ်းခေါ်ဆိုမှုအားလုံးကို စစ်ထုတ်မလား။</string>
-  <string name="spam_blocking_promo_text">သင်ပိတ်ထားသော ခေါ်ဆိုမှုများသည် သင့်အား အနှောင့်အယှက် ပေးတော့မည်မဟုတ်ပါ</string>
-  <string name="spam_blocking_promo_action_filter_spam">စပမ်းကို စစ်ထုတ်ရန်</string>
-  <string name="spam_blocking_promo_action_dismiss">ပယ်ရန်</string>
-  <string name="spam_blocking_setting_prompt">ဆက်တင်များ</string>
-  <string name="spam_blocking_settings_enable_error_text">စပမ်းစစ်ထုတ်ခြင်းကို ဖွင့်ရာတွင် အခက်အခဲရှိပါသည်</string>
-  <string name="spam_blocking_settings_disable_error_text">စပမ်းစစ်ထုတ်ခြင်းကို ပိတ်ရာတွင် အခက်အခဲရှိပါသည်</string>
-  <string name="spam_blocking_settings_enable_complete_text">စပမ်းစစ်ထုတ်ခြင်းကို ဖွင့်လိုက်ပါပြီ</string>
-  <string name="spam_blocking_settings_disable_complete_text">စပမ်းစစ်ထုတ်ခြင်းကို ပိတ်လိုက်ပါပြီ</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-nb/strings.xml b/java/com/android/dialer/spam/promo/res/values-nb/strings.xml
deleted file mode 100644
index a0b645b..0000000
--- a/java/com/android/dialer/spam/promo/res/values-nb/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vil du filtrere alle potensielt useriøse anrop?</string>
-  <string name="spam_blocking_promo_text">Anrop som det du akkurat har blokkert, kommer ikke til
-      å forstyrre deg lenger</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrér useriøse anrop</string>
-  <string name="spam_blocking_promo_action_dismiss">Lukk</string>
-  <string name="spam_blocking_setting_prompt">Innstillinger</string>
-  <string name="spam_blocking_settings_enable_error_text">Det oppsto problemer da filtrering av useriøse anrop skulle slås på</string>
-  <string name="spam_blocking_settings_disable_error_text">Det oppsto problemer da filtrering av useriøse anrop skulle slås av</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrering av useriøse anrop er slått på</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrering av useriøse anrop er slått av</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ne/strings.xml b/java/com/android/dialer/spam/promo/res/values-ne/strings.xml
deleted file mode 100644
index 629b97c..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ne/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">सबै शङ्कास्पद स्प्याम कलहरूलाई फिल्टर गर्ने हो?</string>
-  <string name="spam_blocking_promo_text">तपाईंले भर्खरै रोक लगाउनुभएका जस्ता कलहरूले तपाईंलाई अब उप्रान्त बाधा पुऱ्याउने छैनन्</string>
-  <string name="spam_blocking_promo_action_filter_spam">स्प्यामलाई फिल्टर गर्नुहोस्</string>
-  <string name="spam_blocking_promo_action_dismiss">खारेज गर्नुहोस्</string>
-  <string name="spam_blocking_setting_prompt">सेटिङहरू</string>
-  <string name="spam_blocking_settings_enable_error_text">स्प्यामलाई फिल्टर गर्ने सुविधा सक्रिय गर्दा समस्या भयो</string>
-  <string name="spam_blocking_settings_disable_error_text">स्प्याम फिल्टर गर्ने सुविधा निष्क्रिय पार्दा समस्या भयो</string>
-  <string name="spam_blocking_settings_enable_complete_text">स्प्याम फिल्टर गर्ने सुविधा सक्रिय गरियो</string>
-  <string name="spam_blocking_settings_disable_complete_text">स्प्याम फिल्टर गर्ने सुविधा निष्क्रिय पारियो</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-nl/strings.xml b/java/com/android/dialer/spam/promo/res/values-nl/strings.xml
deleted file mode 100644
index 498fb53..0000000
--- a/java/com/android/dialer/spam/promo/res/values-nl/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Alle vermoedelijke spamoproepen filteren?</string>
-  <string name="spam_blocking_promo_text">Je wordt niet meer gestoord door oproepen zoals de oproep die je net hebt geblokkeerd</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spam filteren</string>
-  <string name="spam_blocking_promo_action_dismiss">Sluiten</string>
-  <string name="spam_blocking_setting_prompt">Instellingen</string>
-  <string name="spam_blocking_settings_enable_error_text">Probleem bij inschakelen van spamfilters</string>
-  <string name="spam_blocking_settings_disable_error_text">Probleem bij uitschakelen van spamfilters</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spamfilter ingeschakeld</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spamfilter uitgeschakeld</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-no/strings.xml b/java/com/android/dialer/spam/promo/res/values-no/strings.xml
deleted file mode 100644
index a0b645b..0000000
--- a/java/com/android/dialer/spam/promo/res/values-no/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vil du filtrere alle potensielt useriøse anrop?</string>
-  <string name="spam_blocking_promo_text">Anrop som det du akkurat har blokkert, kommer ikke til
-      å forstyrre deg lenger</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrér useriøse anrop</string>
-  <string name="spam_blocking_promo_action_dismiss">Lukk</string>
-  <string name="spam_blocking_setting_prompt">Innstillinger</string>
-  <string name="spam_blocking_settings_enable_error_text">Det oppsto problemer da filtrering av useriøse anrop skulle slås på</string>
-  <string name="spam_blocking_settings_disable_error_text">Det oppsto problemer da filtrering av useriøse anrop skulle slås av</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrering av useriøse anrop er slått på</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrering av useriøse anrop er slått av</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-pa/strings.xml b/java/com/android/dialer/spam/promo/res/values-pa/strings.xml
deleted file mode 100644
index ef0bb01..0000000
--- a/java/com/android/dialer/spam/promo/res/values-pa/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">ਕੀ ਸਾਰੀਆਂ ਸ਼ੱਕੀ ਸਪੈਮ ਕਾਲਾਂ ਫਿਲਟਰ ਕਰਨੀਆਂ ਹਨ?</string>
-  <string name="spam_blocking_promo_text">ਜਿਸ ਤਰ੍ਹਾਂ ਦੀਆਂ ਕਾਲਾਂ ਤੁਸੀਂ ਬਲਾਕ ਕੀਤੀਆਂ ਹਨ ਉਹ ਹੁਣ ਤੁਹਾਨੂੰ ਕਦੇ ਵੀ ਪਰੇਸ਼ਾਨ ਨਹੀਂ ਕਰਨਗੀਆਂ</string>
-  <string name="spam_blocking_promo_action_filter_spam">ਸਪੈਮ ਨੂੰ ਫਿਲਟਰ ਕਰੋ</string>
-  <string name="spam_blocking_promo_action_dismiss">ਖਾਰਜ ਕਰੋ</string>
-  <string name="spam_blocking_setting_prompt">ਸੈਟਿੰਗਾਂ</string>
-  <string name="spam_blocking_settings_enable_error_text">ਸਪੈਮ ਫਿਲਟਰ ਕਰਨ ਦਾ ਵਿਕਲਪ ਚਾਲੂ ਕਰਨ ਵੇਲੇ ਸਮੱਸਿਆ ਆਈ</string>
-  <string name="spam_blocking_settings_disable_error_text">ਸਪੈਮ ਫਿਲਟਰ ਕਰਨ ਦਾ ਵਿਕਲਪ ਬੰਦ ਕਰਨ ਵੇਲੇ ਸਮੱਸਿਆ ਆਈ</string>
-  <string name="spam_blocking_settings_enable_complete_text">ਸਪੈਮ ਫਿਲਟਰ ਕਰਨਾ ਚਾਲੂ ਕੀਤਾ ਗਿਆ</string>
-  <string name="spam_blocking_settings_disable_complete_text">ਸਪੈਮ ਫਿਲਟਰ ਕਰਨਾ ਬੰਦ ਕੀਤਾ ਗਿਆ</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-pl/strings.xml b/java/com/android/dialer/spam/promo/res/values-pl/strings.xml
deleted file mode 100644
index e3c35c4..0000000
--- a/java/com/android/dialer/spam/promo/res/values-pl/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrować wszystkie połączenia podejrzanie o spam?</string>
-  <string name="spam_blocking_promo_text">Połączenia podobne do tego, które właśnie zostało zablokowane, nie będą Ci już przeszkadzać</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtruj spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Odrzuć</string>
-  <string name="spam_blocking_setting_prompt">Ustawienia</string>
-  <string name="spam_blocking_settings_enable_error_text">Nie udało się włączyć filtrowania spamu</string>
-  <string name="spam_blocking_settings_disable_error_text">Nie udało się wyłączyć filtrowania spamu</string>
-  <string name="spam_blocking_settings_enable_complete_text">Włączono filtrowanie spamu</string>
-  <string name="spam_blocking_settings_disable_complete_text">Wyłączono filtrowanie spamu</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-pt-rBR/strings.xml b/java/com/android/dialer/spam/promo/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 42ad4a9..0000000
--- a/java/com/android/dialer/spam/promo/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrar todas as chamadas suspeitas (spam)?</string>
-  <string name="spam_blocking_promo_text">Você não será mais incomodado por chamadas como a que acabou de bloquear</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Dispensar</string>
-  <string name="spam_blocking_setting_prompt">Configurações</string>
-  <string name="spam_blocking_settings_enable_error_text">Ocorreu um problema ao ativar a filtragem de spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Ocorreu um problema ao desativar a filtragem de spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">A filtragem de spam foi ativada</string>
-  <string name="spam_blocking_settings_disable_complete_text">A filtragem de spam foi desativada</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-pt-rPT/strings.xml b/java/com/android/dialer/spam/promo/res/values-pt-rPT/strings.xml
deleted file mode 100644
index cc9ad00..0000000
--- a/java/com/android/dialer/spam/promo/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrar chamadas de spam suspeitas?</string>
-  <string name="spam_blocking_promo_text">As chamadas como a que acabou de bloquear não voltarão
-      a incomodá-lo</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Ignorar</string>
-  <string name="spam_blocking_setting_prompt">Definições</string>
-  <string name="spam_blocking_settings_enable_error_text">Problema ao ativar o filtro de spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Problema ao desativar o filtro de spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtro de spam ativado</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtro de spam desativado</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-pt/strings.xml b/java/com/android/dialer/spam/promo/res/values-pt/strings.xml
deleted file mode 100644
index 42ad4a9..0000000
--- a/java/com/android/dialer/spam/promo/res/values-pt/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrar todas as chamadas suspeitas (spam)?</string>
-  <string name="spam_blocking_promo_text">Você não será mais incomodado por chamadas como a que acabou de bloquear</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrar spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Dispensar</string>
-  <string name="spam_blocking_setting_prompt">Configurações</string>
-  <string name="spam_blocking_settings_enable_error_text">Ocorreu um problema ao ativar a filtragem de spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Ocorreu um problema ao desativar a filtragem de spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">A filtragem de spam foi ativada</string>
-  <string name="spam_blocking_settings_disable_complete_text">A filtragem de spam foi desativada</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ro/strings.xml b/java/com/android/dialer/spam/promo/res/values-ro/strings.xml
deleted file mode 100644
index e96a266..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ro/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrați apelurile care ar putea fi spam?</string>
-  <string name="spam_blocking_promo_text">Apelurile precum cel pe care tocmai l-ați blocat
-      nu vă vor mai deranja</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrați mesajele spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Închideți</string>
-  <string name="spam_blocking_setting_prompt">Setări</string>
-  <string name="spam_blocking_settings_enable_error_text">Problemă la activarea filtrării spamului</string>
-  <string name="spam_blocking_settings_disable_error_text">Problemă la dezactivarea filtrării spamului</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrarea apelurilor spam este activată.</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrarea mesajelor spam este dezactivată.</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ru/strings.xml b/java/com/android/dialer/spam/promo/res/values-ru/strings.xml
deleted file mode 100644
index 2586017..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ru/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Фильтровать спам?</string>
-  <string name="spam_blocking_promo_text">Звонки, подобные этому, больше не будут беспокоить вас.</string>
-  <string name="spam_blocking_promo_action_filter_spam">Фильтровать спам</string>
-  <string name="spam_blocking_promo_action_dismiss">Закрыть</string>
-  <string name="spam_blocking_setting_prompt">Настройки</string>
-  <string name="spam_blocking_settings_enable_error_text">Не удалось включить фильтрацию спама</string>
-  <string name="spam_blocking_settings_disable_error_text">Не удалось выключить фильтрацию спама</string>
-  <string name="spam_blocking_settings_enable_complete_text">Фильтрация спама включена</string>
-  <string name="spam_blocking_settings_disable_complete_text">Фильтрация спама выключена</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-si/strings.xml b/java/com/android/dialer/spam/promo/res/values-si/strings.xml
deleted file mode 100644
index 8bf35f2..0000000
--- a/java/com/android/dialer/spam/promo/res/values-si/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">සියලු සැකසහිත අයාචිත ඇමතුම් පෙරන්නද?</string>
-  <string name="spam_blocking_promo_text">ඔබ මේ දැන් අවහිර කළ එක වැනි ඇමතුම් තවදුරටත් ඔබට බාධා නොකරනු ඇත</string>
-  <string name="spam_blocking_promo_action_filter_spam">අයාචිත තැපැල් පෙරහන් කරන්න</string>
-  <string name="spam_blocking_promo_action_dismiss">ඉවත ලන්න</string>
-  <string name="spam_blocking_setting_prompt">සැකසීම්</string>
-  <string name="spam_blocking_settings_enable_error_text">අයාචිත පෙරහන ක්‍රියාත්මක කිරීමේ ගැටලුවකි</string>
-  <string name="spam_blocking_settings_disable_error_text">අයාචිත පෙරහන ක්‍රියාවිරහිත කිරීමේ ගැටලුවකි</string>
-  <string name="spam_blocking_settings_enable_complete_text">අයාචිත පෙරහන ක්‍රියාත්මකයි</string>
-  <string name="spam_blocking_settings_disable_complete_text">අයාචිත පෙරහන ක්‍රියාවිරහිතයි</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sk/strings.xml b/java/com/android/dialer/spam/promo/res/values-sk/strings.xml
deleted file mode 100644
index b57d9ed..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sk/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Filtrovať všetky hovory, pri ktorých je podozrenie, že ide o spam?</string>
-  <string name="spam_blocking_promo_text">Hovory, ako ten, ktorý ste práve zablokovali, vás už nebudú
-      rušiť</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrovať spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Zavrieť</string>
-  <string name="spam_blocking_setting_prompt">Nastavenia</string>
-  <string name="spam_blocking_settings_enable_error_text">Filtrovanie spamu sa nepodarilo zapnúť</string>
-  <string name="spam_blocking_settings_disable_error_text">Filtrovanie spamu sa nepodarilo vypnúť</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrovanie spamu bolo zapnuté</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrovanie spamu bolo vypnuté</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sl/strings.xml b/java/com/android/dialer/spam/promo/res/values-sl/strings.xml
deleted file mode 100644
index 6a2d709..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sl/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Želite filtrirati vse domnevno neželene klice?</string>
-  <string name="spam_blocking_promo_text">Klici kot ta, ki ste ga pravkar blokirali, vas ne bodo več
-      zmotili</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtriraj neželene klice</string>
-  <string name="spam_blocking_promo_action_dismiss">Opusti</string>
-  <string name="spam_blocking_setting_prompt">Nastavitve</string>
-  <string name="spam_blocking_settings_enable_error_text">Težava pri vklopu filtriranja neželenih klicev</string>
-  <string name="spam_blocking_settings_disable_error_text">Težava pri izklopu filtriranja neželenih klicev</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtriranje neželenih klicev je vklopljeno</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtriranje neželenih klicev je izklopljeno</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sq/strings.xml b/java/com/android/dialer/spam/promo/res/values-sq/strings.xml
deleted file mode 100644
index 8677f4a..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sq/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Të filtrohen të gjitha telefonatat e dyshuara si të padëshiruara?</string>
-  <string name="spam_blocking_promo_text">Telefonatat si ajo që sapo bllokove nuk do të të shqetësojnë më</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtro të padëshiruarat</string>
-  <string name="spam_blocking_promo_action_dismiss">Hiq</string>
-  <string name="spam_blocking_setting_prompt">Cilësimet</string>
-  <string name="spam_blocking_settings_enable_error_text">Problem me aktivizimin e filtrimit për të padëshiruarat</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem me çaktivizimin e filtrimit për të padëshiruarat</string>
-  <string name="spam_blocking_settings_enable_complete_text">Filtrimi për të padëshiruarat u aktivizua</string>
-  <string name="spam_blocking_settings_disable_complete_text">Filtrimi për të padëshiruarat u çaktivizua</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sr/strings.xml b/java/com/android/dialer/spam/promo/res/values-sr/strings.xml
deleted file mode 100644
index 9706917..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sr/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Желите ли да филтрирате све позиве за које се сумња да су непожељни?</string>
-  <string name="spam_blocking_promo_text">Позиви као што је овај који сте управо блокирали вас више
-      неће ометати</string>
-  <string name="spam_blocking_promo_action_filter_spam">Филтрирај непожељне позиве</string>
-  <string name="spam_blocking_promo_action_dismiss">Одбаци</string>
-  <string name="spam_blocking_setting_prompt">Подешавања</string>
-  <string name="spam_blocking_settings_enable_error_text">Проблем при укључивању филтрирања непожељних позива</string>
-  <string name="spam_blocking_settings_disable_error_text">Проблем при искључивању филтрирања непожељних позива</string>
-  <string name="spam_blocking_settings_enable_complete_text">Филтрирање непожељних позива је укључено</string>
-  <string name="spam_blocking_settings_disable_complete_text">Филтрирање непожељних позива је искључено</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sv/strings.xml b/java/com/android/dialer/spam/promo/res/values-sv/strings.xml
deleted file mode 100644
index 52b32ce..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sv/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Vill du filtrera alla misstänkta spamsamtal?</string>
-  <string name="spam_blocking_promo_text">Du kommer inte längre att störas av samtal som det du precis blockerade</string>
-  <string name="spam_blocking_promo_action_filter_spam">Filtrera spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Stäng</string>
-  <string name="spam_blocking_setting_prompt">Inställningar</string>
-  <string name="spam_blocking_settings_enable_error_text">Problemet med att aktivera spamfilter</string>
-  <string name="spam_blocking_settings_disable_error_text">Problem med att stänga av spamfilter</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spamfiltrering har aktiverats</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spamfiltrering har inaktiverats</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-sw/strings.xml b/java/com/android/dialer/spam/promo/res/values-sw/strings.xml
deleted file mode 100644
index 9758fe9..0000000
--- a/java/com/android/dialer/spam/promo/res/values-sw/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Je, ungependa kuchuja simu zote unazoshuku kuwa taka?</string>
-  <string name="spam_blocking_promo_text">Simu kama ile uliyozuia sasa hivi hazitakusumbua tena</string>
-  <string name="spam_blocking_promo_action_filter_spam">Chuja Taka</string>
-  <string name="spam_blocking_promo_action_dismiss">Ondoa</string>
-  <string name="spam_blocking_setting_prompt">Mipangilio</string>
-  <string name="spam_blocking_settings_enable_error_text">Hitilafu imetokea wakati wa kuwasha kipengele cha kuchuja simu taka</string>
-  <string name="spam_blocking_settings_disable_error_text">Hitilafu imetokea wakati wa kuzima kipengele cha kuchuja simu taka</string>
-  <string name="spam_blocking_settings_enable_complete_text">Kipengele cha kuchuja simu taka kimewashwa</string>
-  <string name="spam_blocking_settings_disable_complete_text">Kipengele cha kuchuja simu taka kimezimwa</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ta/strings.xml b/java/com/android/dialer/spam/promo/res/values-ta/strings.xml
deleted file mode 100644
index 681d289..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ta/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">சந்தேகத்திற்குரிய ஸ்பேம் அழைப்புகளைத் தடுக்கவா?</string>
-  <string name="spam_blocking_promo_text">இப்போது நீங்கள் தடுத்த அழைப்பு போன்று, வேறு எந்த அழைப்புகளும் இனி
-      உங்களைத் தொந்தரவு செய்யாது</string>
-  <string name="spam_blocking_promo_action_filter_spam">ஸ்பேமைத் தடு</string>
-  <string name="spam_blocking_promo_action_dismiss">நிராகரி</string>
-  <string name="spam_blocking_setting_prompt">அமைப்புகள்</string>
-  <string name="spam_blocking_settings_enable_error_text">ஸ்பேம் தடுத்தலை இயக்குவதில் சிக்கல்</string>
-  <string name="spam_blocking_settings_disable_error_text">ஸ்பேம் தடுத்தலை முடக்குவதில் சிக்கல்</string>
-  <string name="spam_blocking_settings_enable_complete_text">ஸ்பேம் தடுத்தல் இயக்கப்பட்டது</string>
-  <string name="spam_blocking_settings_disable_complete_text">ஸ்பேம் தடுத்தல் முடக்கப்பட்டது</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-te/strings.xml b/java/com/android/dialer/spam/promo/res/values-te/strings.xml
deleted file mode 100644
index 3b7aeff..0000000
--- a/java/com/android/dialer/spam/promo/res/values-te/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">అనుమానిత స్పామ్ కాల్‌లన్నింటినీ ఫిల్టర్ చేయాలా?</string>
-  <string name="spam_blocking_promo_text">మీరు ఇప్పుడు బ్లాక్ చేసినటువంటి కాల్‌లు
-      మీకు ఇకపై అంతరాయం కలిగించవు</string>
-  <string name="spam_blocking_promo_action_filter_spam">స్పామ్‌ని ఫిల్టర్ చేయి</string>
-  <string name="spam_blocking_promo_action_dismiss">విస్మరించు</string>
-  <string name="spam_blocking_setting_prompt">సెట్టింగ్‌లు</string>
-  <string name="spam_blocking_settings_enable_error_text">స్పామ్ ఫిల్టరింగ్‌ని ఆన్ చేస్తున్నప్పుడు సమస్య ఏర్పడింది</string>
-  <string name="spam_blocking_settings_disable_error_text">స్పామ్ ఫిల్టరింగ్‌ని ఆఫ్ చేస్తున్నప్పుడు సమస్య ఏర్పడింది</string>
-  <string name="spam_blocking_settings_enable_complete_text">స్పామ్ ఫిల్టరింగ్ ఆన్ చేయబడింది</string>
-  <string name="spam_blocking_settings_disable_complete_text">స్పామ్ ఫిల్టరింగ్ ఆఫ్ చేయబడింది</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-th/strings.xml b/java/com/android/dialer/spam/promo/res/values-th/strings.xml
deleted file mode 100644
index 702486d..0000000
--- a/java/com/android/dialer/spam/promo/res/values-th/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">กรองสายที่สงสัยว่าเป็นสแปมทั้งหมดไหม</string>
-  <string name="spam_blocking_promo_text">จะไม่มีสายแบบเดียวกับที่บล็อกเมื่อสักครู่
-      มารบกวนคุณอีกต่อไป</string>
-  <string name="spam_blocking_promo_action_filter_spam">กรองสแปม</string>
-  <string name="spam_blocking_promo_action_dismiss">ปิด</string>
-  <string name="spam_blocking_setting_prompt">การตั้งค่า</string>
-  <string name="spam_blocking_settings_enable_error_text">มีปัญหาในการเปิดการกรองสแปม</string>
-  <string name="spam_blocking_settings_disable_error_text">มีปัญหาในการปิดการกรองสแปม</string>
-  <string name="spam_blocking_settings_enable_complete_text">เปิดตัวกรองสแปมแล้ว</string>
-  <string name="spam_blocking_settings_disable_complete_text">ปิดตัวกรองสแปมแล้ว</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-tl/strings.xml b/java/com/android/dialer/spam/promo/res/values-tl/strings.xml
deleted file mode 100644
index 8844c13..0000000
--- a/java/com/android/dialer/spam/promo/res/values-tl/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">I-filter ang lahat ng pinaghihinalaang spam na tawag?</string>
-  <string name="spam_blocking_promo_text">Ang mga tawag na kaka-block mo lang ay hindi 
-      ka na iistorbohin</string>
-  <string name="spam_blocking_promo_action_filter_spam">I-filter ang Spam</string>
-  <string name="spam_blocking_promo_action_dismiss">I-dismiss</string>
-  <string name="spam_blocking_setting_prompt">Mga Setting</string>
-  <string name="spam_blocking_settings_enable_error_text">May problema sa pag-on ng pag-filter ng spam</string>
-  <string name="spam_blocking_settings_disable_error_text">May problema sa pag-off ng pag-filter ng spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">In-on ang pag-filter ng spam</string>
-  <string name="spam_blocking_settings_disable_complete_text">In-off ang pag-filter ng spam</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-tr/strings.xml b/java/com/android/dialer/spam/promo/res/values-tr/strings.xml
deleted file mode 100644
index 0eb6609..0000000
--- a/java/com/android/dialer/spam/promo/res/values-tr/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Spam olabilecek çağrılar filtrelensin mi?</string>
-  <string name="spam_blocking_promo_text">Az önce engellediğiniz gibi çağrılar artık
-      sizi rahatsız edemez</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spam Çağrıları Filtrele</string>
-  <string name="spam_blocking_promo_action_dismiss">Kapat</string>
-  <string name="spam_blocking_setting_prompt">Ayarlar</string>
-  <string name="spam_blocking_settings_enable_error_text">Spam filtresi etkinleştirilirken sorun oluştu</string>
-  <string name="spam_blocking_settings_disable_error_text">Spam filtresi devre dışı bırakılırken sorun oluştu</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam filtresi etkinleştirildi</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtresi devre dışı bırakıldı</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-uk/strings.xml b/java/com/android/dialer/spam/promo/res/values-uk/strings.xml
deleted file mode 100644
index 16b6597..0000000
--- a/java/com/android/dialer/spam/promo/res/values-uk/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Відфільтрувати всі виклики, які можуть бути спамом?</string>
-  <string name="spam_blocking_promo_text">Виклики, подібні до щойно заблокованого, більше не надходитимуть</string>
-  <string name="spam_blocking_promo_action_filter_spam">Відфільтрувати спам</string>
-  <string name="spam_blocking_promo_action_dismiss">Відхилити</string>
-  <string name="spam_blocking_setting_prompt">Налаштування</string>
-  <string name="spam_blocking_settings_enable_error_text">Проблема з увімкненням спам-фільтра</string>
-  <string name="spam_blocking_settings_disable_error_text">Проблема з вимкненням спам-фільтра</string>
-  <string name="spam_blocking_settings_enable_complete_text">Спам-фільтр увімкнено</string>
-  <string name="spam_blocking_settings_disable_complete_text">Спам-фільтр вимкнено</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-ur/strings.xml b/java/com/android/dialer/spam/promo/res/values-ur/strings.xml
deleted file mode 100644
index 8fc0613..0000000
--- a/java/com/android/dialer/spam/promo/res/values-ur/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">کیا تمام مشتبہ اسپام کالز فلٹر کریں؟</string>
-  <string name="spam_blocking_promo_text">کال جس کو آپ نے ابھی مسدود کیا ہے اس طرح کی کالز آپ کو مزید
-      پریشان نہیں کریں گی</string>
-  <string name="spam_blocking_promo_action_filter_spam">سپام فلٹر کریں</string>
-  <string name="spam_blocking_promo_action_dismiss">برخاست کریں</string>
-  <string name="spam_blocking_setting_prompt">ترتیبات</string>
-  <string name="spam_blocking_settings_enable_error_text">اسپام فلٹر کرنے کی سہولت کو آن کرنے میں مسئلہ</string>
-  <string name="spam_blocking_settings_disable_error_text">اسپام فلٹر کرنے کی سہولت کو آف کرنے میں مسئلہ</string>
-  <string name="spam_blocking_settings_enable_complete_text">سپام فلٹر کرنے کی سہولت آن ہے</string>
-  <string name="spam_blocking_settings_disable_complete_text">سپام فلٹر کرنے کی سہولت آف ہے</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-uz/strings.xml b/java/com/android/dialer/spam/promo/res/values-uz/strings.xml
deleted file mode 100644
index 5856c25..0000000
--- a/java/com/android/dialer/spam/promo/res/values-uz/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Spam deb taxmin qilingan barcha chaqiruvlar filtrlansinmi?</string>
-  <string name="spam_blocking_promo_text">Shunga o‘xshash chaqiruvlar sizni boshqa bezovta qilmaydi</string>
-  <string name="spam_blocking_promo_action_filter_spam">Spamni filtrlash</string>
-  <string name="spam_blocking_promo_action_dismiss">Yopish</string>
-  <string name="spam_blocking_setting_prompt">Sozlamalar</string>
-  <string name="spam_blocking_settings_enable_error_text">Spam chaqiruvlarni filtrlar funksiyasi yoqilmadi</string>
-  <string name="spam_blocking_settings_disable_error_text">Spam chaqiruvlarni filtrlar funksiyasi o‘chmadi</string>
-  <string name="spam_blocking_settings_enable_complete_text">Spam chaqiruvlarni filtrlash funksiyasi yoqildi</string>
-  <string name="spam_blocking_settings_disable_complete_text">Spam chaqiruvlarni filtrlash funksiyasi o‘chdi</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-vi/strings.xml b/java/com/android/dialer/spam/promo/res/values-vi/strings.xml
deleted file mode 100644
index 7eb4c0b..0000000
--- a/java/com/android/dialer/spam/promo/res/values-vi/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Lọc tất cả các cuộc gọi nghi ngờ là spam?</string>
-  <string name="spam_blocking_promo_text">Các cuộc gọi như cuộc gọi bạn vừa chặn sẽ không còn
-      làm phiền bạn nữa</string>
-  <string name="spam_blocking_promo_action_filter_spam">Lọc spam</string>
-  <string name="spam_blocking_promo_action_dismiss">Bỏ qua</string>
-  <string name="spam_blocking_setting_prompt">Cài đặt</string>
-  <string name="spam_blocking_settings_enable_error_text">Đã xảy ra sự cố khi bật tính năng lọc spam</string>
-  <string name="spam_blocking_settings_disable_error_text">Đã xảy ra sự cố khi tắt tính năng lọc spam</string>
-  <string name="spam_blocking_settings_enable_complete_text">Đã bật tính năng lọc spam</string>
-  <string name="spam_blocking_settings_disable_complete_text">Đã tắt tính năng lọc spam</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-zh-rCN/strings.xml b/java/com/android/dialer/spam/promo/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 560d840..0000000
--- a/java/com/android/dialer/spam/promo/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">要过滤所有疑似骚扰电话吗？</string>
-  <string name="spam_blocking_promo_text">您日后不会再收到与刚刚所屏蔽电话类似的骚扰电话</string>
-  <string name="spam_blocking_promo_action_filter_spam">过滤骚扰电话</string>
-  <string name="spam_blocking_promo_action_dismiss">关闭</string>
-  <string name="spam_blocking_setting_prompt">设置</string>
-  <string name="spam_blocking_settings_enable_error_text">启用骚扰电话过滤功能时出错</string>
-  <string name="spam_blocking_settings_disable_error_text">停用骚扰电话过滤功能时出错</string>
-  <string name="spam_blocking_settings_enable_complete_text">骚扰电话过滤功能已启用</string>
-  <string name="spam_blocking_settings_disable_complete_text">骚扰电话过滤功能已停用</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-zh-rHK/strings.xml b/java/com/android/dialer/spam/promo/res/values-zh-rHK/strings.xml
deleted file mode 100644
index d0ea019..0000000
--- a/java/com/android/dialer/spam/promo/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">要過濾所有疑似垃圾來電嗎？</string>
-  <string name="spam_blocking_promo_text">剛封鎖的類似來電不會再
-      打擾您</string>
-  <string name="spam_blocking_promo_action_filter_spam">過濾垃圾來電</string>
-  <string name="spam_blocking_promo_action_dismiss">關閉</string>
-  <string name="spam_blocking_setting_prompt">設定</string>
-  <string name="spam_blocking_settings_enable_error_text">開啟垃圾來電濾除功能時發生錯誤</string>
-  <string name="spam_blocking_settings_disable_error_text">關閉垃圾來電濾除功能時發生錯誤</string>
-  <string name="spam_blocking_settings_enable_complete_text">已開啟垃圾來電過濾功能</string>
-  <string name="spam_blocking_settings_disable_complete_text">已關閉垃圾來電過濾功能</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-zh-rTW/strings.xml b/java/com/android/dialer/spam/promo/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 0ffc0ed..0000000
--- a/java/com/android/dialer/spam/promo/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">要過濾所有可疑的騷擾/廣告來電嗎？</string>
-  <string name="spam_blocking_promo_text">剛才封鎖的類似來電將不會再打擾你</string>
-  <string name="spam_blocking_promo_action_filter_spam">過濾騷擾/廣告電話</string>
-  <string name="spam_blocking_promo_action_dismiss">關閉</string>
-  <string name="spam_blocking_setting_prompt">設定</string>
-  <string name="spam_blocking_settings_enable_error_text">無法開啟過濾騷擾/廣告電話的功能</string>
-  <string name="spam_blocking_settings_disable_error_text">無法關閉過濾騷擾/廣告電話的功能</string>
-  <string name="spam_blocking_settings_enable_complete_text">已開啟過濾騷擾/廣告電話的功能</string>
-  <string name="spam_blocking_settings_disable_complete_text">已關閉過濾騷擾/廣告電話的功能</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values-zu/strings.xml b/java/com/android/dialer/spam/promo/res/values-zu/strings.xml
deleted file mode 100644
index 88fd297..0000000
--- a/java/com/android/dialer/spam/promo/res/values-zu/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="spam_blocking_promo_title">Hlunga onke amakholi kagaxekile asolisayo?</string>
-  <string name="spam_blocking_promo_text">Amakholi afana nale osanda kuyivimbela ngeke
-      asakuphazamisa</string>
-  <string name="spam_blocking_promo_action_filter_spam">Hlunga ugaxekile</string>
-  <string name="spam_blocking_promo_action_dismiss">Cashisa</string>
-  <string name="spam_blocking_setting_prompt">Izilungiselelo</string>
-  <string name="spam_blocking_settings_enable_error_text">Inkinga ukuvula isihlungi sikagaxekile</string>
-  <string name="spam_blocking_settings_disable_error_text">Inkinga ngokuvala isihlungi sikagaxekile</string>
-  <string name="spam_blocking_settings_enable_complete_text">Ukuhlunga kogaxekile kuvuliwe</string>
-  <string name="spam_blocking_settings_disable_complete_text">Ukuhlunga kogaxekile kuvaliwe</string>
-</resources>
diff --git a/java/com/android/dialer/spam/promo/res/values/strings.xml b/java/com/android/dialer/spam/promo/res/values/strings.xml
deleted file mode 100644
index 91036be..0000000
--- a/java/com/android/dialer/spam/promo/res/values/strings.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<resources>
-  <!-- Title for the spam blocking promo dialog. [CHAR LIMIT=100] -->
-  <string name="spam_blocking_promo_title">Filter all suspected spam calls?</string>
-  <!-- Text for the spam blocking promo dialog. [CHAR LIMIT=NONE] -->
-  <string name="spam_blocking_promo_text">Calls like the one you just blocked will no longer
-      disturb you</string>
-  <!-- Label for filter spam dialog action. [CHAR LIMIT=32] -->
-  <string name="spam_blocking_promo_action_filter_spam">Filter Spam</string>
-  <!-- Label for "Dismiss" dialog action. [CHAR LIMIT=32] -->
-  <string name="spam_blocking_promo_action_dismiss">Dismiss</string>
-  <!-- Button text to prompt a user to open spam blocking setting [CHAR LIMIT=NONE] -->
-  <string name="spam_blocking_setting_prompt">Settings</string>
-
-  <!-- Spam blocking error text, shown when error happens during setting enabling. -->
-  <string name="spam_blocking_settings_enable_error_text">Problem turning on spam filtering</string>
-  <!-- Spam blocking error text, shown when error happens during setting disabling. -->
-  <string name="spam_blocking_settings_disable_error_text">Problem turning off spam filtering</string>
-
-  <!-- On complete text shown when spam blocking is enabled successfully. -->
-  <string name="spam_blocking_settings_enable_complete_text">Spam filtering turned on</string>
-  <!-- On complete text shown when spam blocking is disabled successfully. -->
-  <string name="spam_blocking_settings_disable_complete_text">Spam filtering turned off</string>
-</resources>
diff --git a/java/com/android/dialer/spam/status/GlobalSpamListStatus.java b/java/com/android/dialer/spam/status/GlobalSpamListStatus.java
deleted file mode 100644
index 741d6e8..0000000
--- a/java/com/android/dialer/spam/status/GlobalSpamListStatus.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.spam.status;
-
-import android.support.annotation.IntDef;
-import com.google.auto.value.AutoValue;
-import com.google.common.base.Optional;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/** A value class representing a number's spam status in the global spam list. */
-@AutoValue
-public abstract class GlobalSpamListStatus {
-
-  /** Integers representing the spam status in the global spam list. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({Status.NOT_ON_LIST, Status.ON_LIST})
-  public @interface Status {
-    int NOT_ON_LIST = 1;
-    int ON_LIST = 2;
-  }
-
-  public abstract @Status int getStatus();
-
-  /**
-   * Returns the timestamp (in milliseconds) representing when a number's spam status was put on the
-   * list, or {@code Optional.absent()} if the number is not on the list.
-   */
-  public abstract Optional<Long> getTimestampMillis();
-
-  public static GlobalSpamListStatus notOnList() {
-    return new AutoValue_GlobalSpamListStatus(Status.NOT_ON_LIST, Optional.absent());
-  }
-
-  public static GlobalSpamListStatus onList(long timestampMillis) {
-    return new AutoValue_GlobalSpamListStatus(Status.ON_LIST, Optional.of(timestampMillis));
-  }
-}
diff --git a/java/com/android/dialer/spam/status/SimpleSpamStatus.java b/java/com/android/dialer/spam/status/SimpleSpamStatus.java
deleted file mode 100644
index 5f45c1a..0000000
--- a/java/com/android/dialer/spam/status/SimpleSpamStatus.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.spam.status;
-
-import android.support.annotation.Nullable;
-import com.google.auto.value.AutoValue;
-import com.google.common.base.Optional;
-
-/** Holds a boolean and long to represent spam status. */
-@AutoValue
-public abstract class SimpleSpamStatus implements SpamStatus {
-
-  /** Returns a SimpleSpamStatus with the given boolean and timestamp. */
-  public static SimpleSpamStatus create(boolean isSpam, @Nullable Long timestampMillis) {
-    return builder()
-        .setSpam(isSpam)
-        .setTimestampMillis(timestampMillis)
-        .setSpamMetadata(SpamMetadata.empty())
-        .build();
-  }
-
-  /** Returns a SimpleSpamStatus that's not marked as spam and has no timestamp. */
-  public static SimpleSpamStatus notSpam() {
-    return create(false, null);
-  }
-
-  public static Builder builder() {
-    return new AutoValue_SimpleSpamStatus.Builder();
-  }
-
-  /** Creates instances of SimpleSpamStatus. */
-  @AutoValue.Builder
-  public abstract static class Builder {
-    public abstract Builder setSpam(boolean isSpam);
-
-    abstract Builder setTimestampMillis(Optional<Long> timestamp);
-
-    public Builder setTimestampMillis(@Nullable Long timestampMillis) {
-      return setTimestampMillis(Optional.fromNullable(timestampMillis));
-    }
-
-    public abstract Builder setSpamMetadata(SpamMetadata spamMetadata);
-
-    public abstract SimpleSpamStatus build();
-  }
-}
diff --git a/java/com/android/dialer/spam/status/SpamMetadata.java b/java/com/android/dialer/spam/status/SpamMetadata.java
deleted file mode 100644
index 40feba1..0000000
--- a/java/com/android/dialer/spam/status/SpamMetadata.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.spam.status;
-
-import com.google.auto.value.AutoValue;
-import com.google.common.base.Optional;
-
-/**
- * Holds information which can be used to determine a number's spam status.
- *
- * @see SpamStatus
- */
-@AutoValue
-public abstract class SpamMetadata {
-
-  /** Returns an empty spam metadata, no optional data is set. */
-  public static SpamMetadata empty() {
-    return builder().build();
-  }
-
-  public static SpamMetadata.Builder builder() {
-    return new AutoValue_SpamMetadata.Builder();
-  }
-
-  public abstract Optional<GlobalSpamListStatus> globalSpamListStatus();
-
-  public abstract Optional<UserSpamListStatus> userSpamListStatus();
-
-  /** Creates instances of SpamMetadata. */
-  @AutoValue.Builder
-  public abstract static class Builder {
-    public abstract Builder setGlobalSpamListStatus(GlobalSpamListStatus globalSpamListStatus);
-
-    public abstract Builder setUserSpamListStatus(UserSpamListStatus userSpamListStatus);
-
-    public abstract SpamMetadata build();
-  }
-}
diff --git a/java/com/android/dialer/spam/status/SpamStatus.java b/java/com/android/dialer/spam/status/SpamStatus.java
deleted file mode 100644
index 10e8213..0000000
--- a/java/com/android/dialer/spam/status/SpamStatus.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.spam.status;
-
-import com.google.common.base.Optional;
-
-/** An interface representing a number's spam status. */
-@SuppressWarnings("Guava")
-public interface SpamStatus {
-
-  /** Returns true if the number is spam. */
-  boolean isSpam();
-
-  /**
-   * Returns the timestamp (in milliseconds) indicating when the number's spam status entered the
-   * underlying data source.
-   *
-   * <p>{@code Optional.absent()} is returned if
-   *
-   * <ul>
-   *   <li>the number's spam status doesn't exist in the underlying data source, or
-   *   <li>the underlying data source can't provide a timestamp.
-   * </ul>
-   */
-  Optional<Long> getTimestampMillis();
-
-  /** Returns the {@link SpamMetadata} associated with this status. */
-  SpamMetadata getSpamMetadata();
-}
diff --git a/java/com/android/dialer/spam/status/UserSpamListStatus.java b/java/com/android/dialer/spam/status/UserSpamListStatus.java
deleted file mode 100644
index 01f9987..0000000
--- a/java/com/android/dialer/spam/status/UserSpamListStatus.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.spam.status;
-
-import android.support.annotation.IntDef;
-import com.google.auto.value.AutoValue;
-import com.google.common.base.Optional;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/** A value class representing a number's spam status in the user spam list. */
-@AutoValue
-@SuppressWarnings("Guava")
-public abstract class UserSpamListStatus {
-
-  /** Integers representing the spam status in the user spam list. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({Status.NOT_ON_LIST, Status.WHITELISTED, Status.BLACKLISTED})
-  public @interface Status {
-    int NOT_ON_LIST = 1;
-    int WHITELISTED = 2;
-    int BLACKLISTED = 3;
-  }
-
-  public abstract @Status int getStatus();
-
-  /**
-   * Returns the timestamp (in milliseconds) representing when a number's spam status was put on the
-   * list, or {@code Optional.absent()} if the number is not on the list.
-   */
-  public abstract Optional<Long> getTimestampMillis();
-
-  public static UserSpamListStatus notOnList() {
-    return new AutoValue_UserSpamListStatus(Status.NOT_ON_LIST, Optional.absent());
-  }
-
-  public static UserSpamListStatus whitelisted(long timestampMillis) {
-    return new AutoValue_UserSpamListStatus(Status.WHITELISTED, Optional.of(timestampMillis));
-  }
-
-  public static UserSpamListStatus blacklisted(long timestampMillis) {
-    return new AutoValue_UserSpamListStatus(Status.BLACKLISTED, Optional.of(timestampMillis));
-  }
-}
diff --git a/java/com/android/dialer/spam/stub/SpamSettingsStub.java b/java/com/android/dialer/spam/stub/SpamSettingsStub.java
deleted file mode 100644
index 194d184..0000000
--- a/java/com/android/dialer/spam/stub/SpamSettingsStub.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.spam.stub;
-
-import android.content.Context;
-import android.content.Intent;
-import com.android.dialer.spam.SpamSettings;
-import javax.inject.Inject;
-
-/** Default implementation of SpamSettings. */
-public class SpamSettingsStub implements SpamSettings {
-
-  @Inject
-  public SpamSettingsStub() {}
-
-  @Override
-  public boolean isSpamEnabled() {
-    return false;
-  }
-
-  @Override
-  public boolean isSpamNotificationEnabled() {
-    return false;
-  }
-
-  @Override
-  public boolean isSpamBlockingEnabledByFlag() {
-    return false;
-  }
-
-  @Override
-  public boolean isSpamBlockingControlledByCarrier() {
-    return false;
-  }
-
-  @Override
-  public boolean isSpamBlockingEnabled() {
-    return false;
-  }
-
-  @Override
-  public boolean isSpamBlockingEnabledByUser() {
-    return false;
-  }
-
-  @Override
-  public boolean isDialogEnabledForSpamNotification() {
-    return false;
-  }
-
-  @Override
-  public boolean isDialogReportSpamCheckedByDefault() {
-    return false;
-  }
-
-  @Override
-  public int percentOfSpamNotificationsToShow() {
-    return 0;
-  }
-
-  @Override
-  public int percentOfNonSpamNotificationsToShow() {
-    return 0;
-  }
-
-  @Override
-  public void modifySpamBlockingSetting(boolean enabled, ModifySettingListener listener) {
-    listener.onComplete(false);
-  }
-
-  @Override
-  public Intent getSpamBlockingSettingIntent(Context context) {
-    return new Intent();
-  }
-}
diff --git a/java/com/android/dialer/spam/stub/SpamStub.java b/java/com/android/dialer/spam/stub/SpamStub.java
deleted file mode 100644
index 5eeed45..0000000
--- a/java/com/android/dialer/spam/stub/SpamStub.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.spam.stub;
-
-import android.support.annotation.Nullable;
-import com.android.dialer.DialerPhoneNumber;
-import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.logging.ContactLookupResult;
-import com.android.dialer.logging.ContactSource;
-import com.android.dialer.logging.ReportingLocation;
-import com.android.dialer.spam.Spam;
-import com.android.dialer.spam.status.SimpleSpamStatus;
-import com.android.dialer.spam.status.SpamStatus;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import javax.inject.Inject;
-
-/** Default implementation of Spam. */
-public class SpamStub implements Spam {
-
-  private final ListeningExecutorService backgroundExecutorService;
-
-  @Inject
-  public SpamStub(@BackgroundExecutor ListeningExecutorService backgroundExecutorService) {
-    this.backgroundExecutorService = backgroundExecutorService;
-  }
-
-  @Override
-  public ListenableFuture<ImmutableMap<DialerPhoneNumber, SpamStatus>> batchCheckSpamStatus(
-      ImmutableSet<DialerPhoneNumber> dialerPhoneNumbers) {
-    return backgroundExecutorService.submit(
-        () -> {
-          ImmutableMap.Builder<DialerPhoneNumber, SpamStatus> resultBuilder =
-              new ImmutableMap.Builder<>();
-          for (DialerPhoneNumber dialerPhoneNumber : dialerPhoneNumbers) {
-            resultBuilder.put(dialerPhoneNumber, SimpleSpamStatus.notSpam());
-          }
-          return resultBuilder.build();
-        });
-  }
-
-  @Override
-  public ListenableFuture<SpamStatus> checkSpamStatus(DialerPhoneNumber dialerPhoneNumber) {
-    return Futures.immediateFuture(SimpleSpamStatus.notSpam());
-  }
-
-  @Override
-  public ListenableFuture<SpamStatus> checkSpamStatus(
-      String number, @Nullable String defaultCountryIso) {
-    return Futures.immediateFuture(SimpleSpamStatus.notSpam());
-  }
-
-  @Override
-  public ListenableFuture<Void> updateSpamListDownload(boolean isEnabledByUser) {
-    // no-op
-    return Futures.immediateFuture(null);
-  }
-
-  @Override
-  public boolean checkSpamStatusSynchronous(String number, String countryIso) {
-    return false;
-  }
-
-  @Override
-  public ListenableFuture<Boolean> dataUpdatedSince(long timestampMillis) {
-    return Futures.immediateFuture(false);
-  }
-
-  @Override
-  public void reportSpamFromAfterCallNotification(
-      String number,
-      String countryIso,
-      int callType,
-      ReportingLocation.Type from,
-      ContactLookupResult.Type contactLookupResultType) {}
-
-  @Override
-  public void reportSpamFromCallHistory(
-      String number,
-      String countryIso,
-      int callType,
-      ReportingLocation.Type from,
-      ContactSource.Type contactSourceType) {}
-
-  @Override
-  public void reportNotSpamFromAfterCallNotification(
-      String number,
-      String countryIso,
-      int callType,
-      ReportingLocation.Type from,
-      ContactLookupResult.Type contactLookupResultType) {}
-
-  @Override
-  public void reportNotSpamFromCallHistory(
-      String number,
-      String countryIso,
-      int callType,
-      ReportingLocation.Type from,
-      ContactSource.Type contactSourceType) {}
-}
diff --git a/java/com/android/dialer/spam/stub/StubSpamModule.java b/java/com/android/dialer/spam/stub/StubSpamModule.java
deleted file mode 100644
index e6b4622..0000000
--- a/java/com/android/dialer/spam/stub/StubSpamModule.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.spam.stub;
-
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.dialer.spam.Spam;
-import com.android.dialer.spam.SpamSettings;
-import dagger.Binds;
-import dagger.Module;
-
-/** Module which binds {@link SpamStub}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public abstract class StubSpamModule {
-
-  @Binds
-  public abstract Spam bindSpam(SpamStub stub);
-
-  @Binds
-  public abstract SpamSettings bindSpamSettings(SpamSettingsStub stub);
-}
diff --git a/java/com/android/dialer/spannable/AndroidManifest.xml b/java/com/android/dialer/spannable/AndroidManifest.xml
deleted file mode 100644
index e768dac..0000000
--- a/java/com/android/dialer/spannable/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
- ~ Copyright (C) 2018 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.spannable">
-
-  <uses-sdk
-      android:minSdkVersion="24"
-      android:targetSdkVersion="30"/>
-</manifest>
diff --git a/java/com/android/dialer/spannable/ContentWithLearnMoreSpanner.java b/java/com/android/dialer/spannable/ContentWithLearnMoreSpanner.java
index 50302af..f9659f8 100644
--- a/java/com/android/dialer/spannable/ContentWithLearnMoreSpanner.java
+++ b/java/com/android/dialer/spannable/ContentWithLearnMoreSpanner.java
@@ -16,10 +16,13 @@
 package com.android.dialer.spannable;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
 import android.text.SpannableString;
 import android.text.Spanned;
 import android.text.style.TypefaceSpan;
+
+import androidx.annotation.NonNull;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 
 /**
diff --git a/java/com/android/dialer/speeddial/AndroidManifest.xml b/java/com/android/dialer/speeddial/AndroidManifest.xml
deleted file mode 100644
index 913e500..0000000
--- a/java/com/android/dialer/speeddial/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.speeddial"/>
diff --git a/java/com/android/dialer/speeddial/ContextMenu.java b/java/com/android/dialer/speeddial/ContextMenu.java
index e0a4551..eda85ae 100644
--- a/java/com/android/dialer/speeddial/ContextMenu.java
+++ b/java/com/android/dialer/speeddial/ContextMenu.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,20 +18,21 @@
 package com.android.dialer.speeddial;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.PopupMenu;
-import android.support.v7.widget.PopupMenu.OnMenuItemClickListener;
 import android.text.TextUtils;
 import android.view.Gravity;
 import android.view.MenuItem;
 import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.widget.PopupMenu;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.speeddial.database.SpeedDialEntry.Channel;
 import com.android.dialer.speeddial.loader.SpeedDialUiItem;
 
 /** {@link PopupMenu} which presents contact options for starred contacts. */
-public class ContextMenu extends PopupMenu implements OnMenuItemClickListener {
+public class ContextMenu extends PopupMenu implements PopupMenu.OnMenuItemClickListener {
 
   private final ContextMenuItemListener listener;
 
@@ -115,13 +117,7 @@
     return true;
   }
 
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public boolean isVisible() {
-    return visible;
-  }
-
   /** Listener to report user clicks on menu items. */
-  @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
   public interface ContextMenuItemListener {
 
     /** Called when the user selects "voice call" or "video call" option from the context menu. */
diff --git a/java/com/android/dialer/speeddial/DisambigDialog.java b/java/com/android/dialer/speeddial/DisambigDialog.java
index 15b8109..dbfce63 100644
--- a/java/com/android/dialer/speeddial/DisambigDialog.java
+++ b/java/com/android/dialer/speeddial/DisambigDialog.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,28 +20,27 @@
 import android.app.Dialog;
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v7.app.AlertDialog;
-import android.text.TextUtils;
 import android.util.ArraySet;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.CheckBox;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
-import android.widget.LinearLayout.LayoutParams;
 import android.widget.TextView;
+
+import androidx.annotation.WorkerThread;
+import androidx.appcompat.app.AlertDialog;
+import androidx.core.content.res.ResourcesCompat;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.FragmentManager;
+
+import com.android.dialer.R;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DefaultFutureCallback;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.speeddial.database.SpeedDialEntry;
 import com.android.dialer.speeddial.database.SpeedDialEntry.Channel;
@@ -49,19 +49,20 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+
 import java.util.List;
 import java.util.Set;
 
 /** Disambiguation dialog for favorite contacts in {@link SpeedDialFragment}. */
 public class DisambigDialog extends DialogFragment {
 
-  @VisibleForTesting public static final String FRAGMENT_TAG = "disambig_dialog";
+  private static final String FRAGMENT_TAG = "disambig_dialog";
   private final Set<String> phoneNumbers = new ArraySet<>();
 
   private SpeedDialUiItem speedDialUiItem;
-  @VisibleForTesting public List<Channel> channels;
-  @VisibleForTesting public LinearLayout container;
-  @VisibleForTesting public CheckBox rememberThisChoice;
+  private  List<Channel> channels;
+  private LinearLayout container;
+  private CheckBox rememberThisChoice;
 
   /** Show a disambiguation dialog for a starred contact without a favorite communication avenue. */
   public static DisambigDialog show(SpeedDialUiItem speedDialUiItem, FragmentManager manager) {
@@ -86,11 +87,9 @@
   @Override
   public void onResume() {
     super.onResume();
-    getDialog()
-        .getWindow()
-        .setLayout(
-            getContext().getResources().getDimensionPixelSize(R.dimen.disambig_dialog_width),
-            LayoutParams.WRAP_CONTENT);
+    getDialog().getWindow().setBackgroundDrawable(
+            ResourcesCompat.getDrawable(requireActivity().getResources(),
+                    R.drawable.dialog_background, requireActivity().getTheme()));
   }
 
   @Override
@@ -112,90 +111,48 @@
    */
   private void insertOptions(LinearLayout container, List<Channel> channels) {
     for (Channel channel : channels) {
-      // TODO(calderwoodra): use fuzzy number matcher
-      if (phoneNumbers.add(channel.number())) {
-        if (phoneNumbers.size() != 1) {
-          insertDivider(container);
-        }
-        insertHeader(container, channel.number(), channel.label());
-      }
       insertOption(container, channel);
     }
   }
 
-  private void insertDivider(LinearLayout container) {
-    View view =
-        getActivity()
-            .getLayoutInflater()
-            .inflate(R.layout.disambig_dialog_divider, container, false);
-    container.addView(view);
-  }
-
-  private void insertHeader(LinearLayout container, String number, String label) {
-    View view =
-        getActivity()
-            .getLayoutInflater()
-            .inflate(R.layout.disambig_option_header_layout, container, false);
-    String secondaryInfo =
-        TextUtils.isEmpty(label)
-            ? number
-            : getContext().getString(R.string.call_subject_type_and_number, label, number);
-    ((TextView) view.findViewById(R.id.disambig_header_phone_label)).setText(secondaryInfo);
-    container.addView(view);
-  }
-
-  /** Inserts a group of options for a specific phone number. */
   private void insertOption(LinearLayout container, Channel channel) {
-    View view =
-        getActivity()
+    View view = getActivity()
             .getLayoutInflater()
             .inflate(R.layout.disambig_option_layout, container, false);
+    View option = view.findViewById(R.id.option_container);
     if (channel.isVideoTechnology()) {
-      View videoOption = view.findViewById(R.id.option_container);
-      videoOption.setOnClickListener(v -> onVideoOptionClicked(channel));
-      videoOption.setContentDescription(
-          getActivity().getString(R.string.disambig_option_video_call));
+      option.setOnClickListener(v -> onVideoOptionClicked(channel));
+      option.setContentDescription(
+              getActivity().getString(R.string.disambig_option_video_call));
       ((ImageView) view.findViewById(R.id.disambig_option_image))
-          .setImageResource(R.drawable.quantum_ic_videocam_vd_theme_24);
-      ((TextView) view.findViewById(R.id.disambig_option_text))
-          .setText(R.string.disambig_option_video_call);
+              .setImageResource(R.drawable.quantum_ic_videocam_vd_theme_24);
     } else {
-      View voiceOption = view.findViewById(R.id.option_container);
-      voiceOption.setOnClickListener(v -> onVoiceOptionClicked(channel));
-      voiceOption.setContentDescription(
-          getActivity().getString(R.string.disambig_option_voice_call));
+      option.setOnClickListener(v -> onVoiceOptionClicked(channel));
+      option.setContentDescription(
+              getActivity().getString(R.string.disambig_option_voice_call));
       ((ImageView) view.findViewById(R.id.disambig_option_image))
-          .setImageResource(R.drawable.quantum_ic_phone_vd_theme_24);
-      ((TextView) view.findViewById(R.id.disambig_option_text))
-          .setText(R.string.disambig_option_voice_call);
+              .setImageResource(R.drawable.quantum_ic_phone_vd_theme_24);
     }
+    ((TextView) option.findViewById(R.id.speed_dial_label)).setText(channel.label());
+    ((TextView) option.findViewById(R.id.speed_dial_number)).setText(channel.number());
     container.addView(view);
   }
 
   private void onVideoOptionClicked(Channel channel) {
     if (rememberThisChoice.isChecked()) {
-      Logger.get(getContext()).logImpression(DialerImpression.Type.FAVORITE_SET_VIDEO_DEFAULT);
       setDefaultChannel(getContext().getApplicationContext(), speedDialUiItem, channel);
     }
 
-    if (channel.technology() == Channel.DUO) {
-      Logger.get(getContext())
-          .logImpression(
-              DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT_DISAMBIG);
-    }
-
     PreCall.start(
         getContext(),
         new CallIntentBuilder(channel.number(), CallInitiationType.Type.SPEED_DIAL_DISAMBIG_DIALOG)
             .setAllowAssistedDial(true)
-            .setIsVideoCall(true)
-            .setIsDuoCall(channel.technology() == Channel.DUO));
+            .setIsVideoCall(true));
     dismiss();
   }
 
   private void onVoiceOptionClicked(Channel channel) {
     if (rememberThisChoice.isChecked()) {
-      Logger.get(getContext()).logImpression(DialerImpression.Type.FAVORITE_SET_VOICE_DEFAULT);
       setDefaultChannel(getContext().getApplicationContext(), speedDialUiItem, channel);
     }
 
diff --git a/java/com/android/dialer/speeddial/FavoritesViewHolder.java b/java/com/android/dialer/speeddial/FavoritesViewHolder.java
index 600c8c7..74cc4e4 100644
--- a/java/com/android/dialer/speeddial/FavoritesViewHolder.java
+++ b/java/com/android/dialer/speeddial/FavoritesViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,8 +19,6 @@
 
 import android.content.Context;
 import android.provider.ContactsContract.Contacts;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.helper.ItemTouchHelper;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.View.OnLongClickListener;
@@ -27,17 +26,22 @@
 import android.widget.FrameLayout;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
+
+import androidx.recyclerview.widget.ItemTouchHelper;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent;
 import com.android.dialer.glidephotomanager.PhotoInfo;
 import com.android.dialer.speeddial.database.SpeedDialEntry.Channel;
 import com.android.dialer.speeddial.draghelper.SpeedDialFavoritesViewHolderOnTouchListener;
-import com.android.dialer.speeddial.draghelper.SpeedDialFavoritesViewHolderOnTouchListener.OnTouchFinishCallback;
 import com.android.dialer.speeddial.loader.SpeedDialUiItem;
 
 /** ViewHolder for starred/favorite contacts in {@link SpeedDialFragment}. */
-public class FavoritesViewHolder extends RecyclerView.ViewHolder
-    implements OnClickListener, OnLongClickListener, OnTouchFinishCallback {
+public class FavoritesViewHolder extends RecyclerView.ViewHolder implements
+        OnClickListener, OnLongClickListener,
+        SpeedDialFavoritesViewHolderOnTouchListener.OnTouchFinishCallback {
 
   private final FavoriteContactsListener listener;
 
diff --git a/java/com/android/dialer/speeddial/HeaderViewHolder.java b/java/com/android/dialer/speeddial/HeaderViewHolder.java
index 58120ee..6443f2d 100644
--- a/java/com/android/dialer/speeddial/HeaderViewHolder.java
+++ b/java/com/android/dialer/speeddial/HeaderViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,13 +17,16 @@
 
 package com.android.dialer.speeddial;
 
-import android.support.annotation.StringRes;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.TextView;
 
+import androidx.annotation.StringRes;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
+
 /** ViewHolder for headers in {@link SpeedDialFragment}. */
 public class HeaderViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
 
diff --git a/java/com/android/dialer/speeddial/RemoveViewHolder.java b/java/com/android/dialer/speeddial/RemoveViewHolder.java
index 998e1ae..670c026 100644
--- a/java/com/android/dialer/speeddial/RemoveViewHolder.java
+++ b/java/com/android/dialer/speeddial/RemoveViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,11 @@
 
 package com.android.dialer.speeddial;
 
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.view.View.OnClickListener;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 /** ViewHolder for headers in {@link SpeedDialFragment}. */
 public class RemoveViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
 
diff --git a/java/com/android/dialer/speeddial/SpeedDialAdapter.java b/java/com/android/dialer/speeddial/SpeedDialAdapter.java
index 1bc072b..7d5336a 100644
--- a/java/com/android/dialer/speeddial/SpeedDialAdapter.java
+++ b/java/com/android/dialer/speeddial/SpeedDialAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,18 +18,21 @@
 package com.android.dialer.speeddial;
 
 import android.content.Context;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.GridLayoutManager.SpanSizeLookup;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.support.v7.widget.helper.ItemTouchHelper;
 import android.util.ArrayMap;
 import android.view.LayoutInflater;
 import android.view.ViewGroup;
 import android.view.animation.AnticipateInterpolator;
 import android.widget.FrameLayout;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.ItemTouchHelper;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.speeddial.FavoritesViewHolder.FavoriteContactsListener;
 import com.android.dialer.speeddial.HeaderViewHolder.SpeedDialHeaderListener;
@@ -37,6 +41,7 @@
 import com.android.dialer.speeddial.draghelper.SpeedDialItemTouchHelperCallback.ItemTouchHelperAdapter;
 import com.android.dialer.speeddial.loader.SpeedDialUiItem;
 import com.google.common.collect.ImmutableList;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
@@ -65,7 +70,8 @@
   private static final float IN_REMOVE_VIEW_ALPHA = 0.5f;
 
   @Retention(RetentionPolicy.SOURCE)
-  @IntDef({RowType.STARRED_HEADER, RowType.SUGGESTION_HEADER, RowType.STARRED, RowType.SUGGESTION})
+  @IntDef({RowType.REMOVE_VIEW, RowType.STARRED_HEADER, RowType.SUGGESTION_HEADER, RowType.STARRED,
+          RowType.SUGGESTION})
   @interface RowType {
     int REMOVE_VIEW = 0;
     int STARRED_HEADER = 1;
@@ -174,7 +180,7 @@
     speedDialUiItems.sort(
         (o1, o2) -> {
           if (o1.isStarred() && o2.isStarred()) {
-            return Integer.compare(o1.pinnedPosition().or(-1), o2.pinnedPosition().or(-1));
+            return Integer.compare(o1.pinnedPosition().orElse(-1), o2.pinnedPosition().orElse(-1));
           }
           return Boolean.compare(o2.isStarred(), o1.isStarred());
         });
@@ -211,8 +217,8 @@
     return ImmutableList.copyOf(speedDialUiItems);
   }
 
-  public SpanSizeLookup getSpanSizeLookup() {
-    return new SpanSizeLookup() {
+  public GridLayoutManager.SpanSizeLookup getSpanSizeLookup() {
+    return new GridLayoutManager.SpanSizeLookup() {
       @Override
       public int getSpanSize(int position) {
         switch (getItemViewType(position)) {
diff --git a/java/com/android/dialer/speeddial/SpeedDialFragment.java b/java/com/android/dialer/speeddial/SpeedDialFragment.java
index d4e7a76..0951d7e 100644
--- a/java/com/android/dialer/speeddial/SpeedDialFragment.java
+++ b/java/com/android/dialer/speeddial/SpeedDialFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,29 +17,32 @@
 
 package com.android.dialer.speeddial;
 
+import static android.app.Activity.RESULT_OK;
+
 import android.Manifest;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.PackageManager;
 import android.database.ContentObserver;
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.app.FragmentManager;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.helper.ItemTouchHelper;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.recyclerview.widget.ItemTouchHelper;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.Assert;
@@ -48,14 +52,11 @@
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.concurrent.SupportUiListener;
 import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.constants.ActivityRequestCodes;
 import com.android.dialer.historyitemactions.DividerModule;
 import com.android.dialer.historyitemactions.HistoryItemActionBottomSheet;
 import com.android.dialer.historyitemactions.HistoryItemActionModule;
 import com.android.dialer.historyitemactions.HistoryItemBottomSheetHeaderInfo;
 import com.android.dialer.historyitemactions.IntentModule;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.shortcuts.ShortcutRefresher;
 import com.android.dialer.speeddial.ContextMenu.ContextMenuItemListener;
@@ -73,6 +74,7 @@
 import com.android.dialer.widget.EmptyContentView.OnEmptyViewActionButtonClickedListener;
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.Futures;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -89,8 +91,6 @@
  */
 public class SpeedDialFragment extends Fragment {
 
-  private static final int READ_CONTACTS_PERMISSION_REQUEST_CODE = 1;
-
   /**
    * Listen to broadcast events about permissions in order to be notified if the READ_CONTACTS
    * permission is granted via the UI in another fragment.
@@ -128,6 +128,33 @@
    */
   private boolean updateSpeedDialItemsOnResume = true;
 
+  private final ActivityResultLauncher<String[]> contactPermissionLauncher =
+          registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(),
+                  grantResults -> {
+                    if (grantResults.size() >= 1 && grantResults.values().iterator().next()) {
+                      PermissionsUtil.notifyPermissionGranted(getContext(),
+                              Manifest.permission.READ_CONTACTS);
+                      loadContacts();
+                    }
+                  });
+
+  private final ActivityResultLauncher<Intent> addFavoriteLauncher = registerForActivityResult(
+          new ActivityResultContracts.StartActivityForResult(), result -> {
+            Intent data = result.getData();
+            if (result.getResultCode() == RESULT_OK && data != null && data.getData() != null) {
+              updateSpeedDialItemsOnResume = false;
+              speedDialLoaderListener.listen(
+                      getContext(),
+                      UiItemLoaderComponent.get(requireContext())
+                              .speedDialUiItemMutator()
+                              .starContact(data.getData()),
+                      this::onSpeedDialUiItemListLoaded,
+                      throwable -> {
+                        throw new RuntimeException(throwable);
+                      });
+            }
+          });
+
   public static SpeedDialFragment newInstance() {
     return new SpeedDialFragment();
   }
@@ -168,7 +195,7 @@
     recyclerView.setAdapter(adapter);
 
     // Setup drag and drop touch helper
-    ItemTouchHelper.Callback callback = new SpeedDialItemTouchHelperCallback(getContext(), adapter);
+    ItemTouchHelper.Callback callback = new SpeedDialItemTouchHelperCallback(adapter);
     ItemTouchHelper touchHelper = new ItemTouchHelper(callback);
     touchHelper.attachToRecyclerView(recyclerView);
     adapter.setItemTouchHelper(touchHelper);
@@ -221,17 +248,6 @@
         ShortcutRefresher.speedDialUiItemsToContactEntries(adapter.getSpeedDialUiItems()));
   }
 
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
-    if (requestCode == READ_CONTACTS_PERMISSION_REQUEST_CODE
-        && grantResults.length > 0
-        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-      PermissionsUtil.notifyPermissionGranted(getContext(), Manifest.permission.READ_CONTACTS);
-      loadContacts();
-    }
-  }
-
   private void loadContacts() {
     if (!updateSpeedDialItemsOnResume) {
       updateSpeedDialItemsOnResume = true;
@@ -251,32 +267,10 @@
         });
   }
 
-  @Override
-  public void onActivityResult(int requestCode, int resultCode, Intent data) {
-    if (requestCode == ActivityRequestCodes.SPEED_DIAL_ADD_FAVORITE) {
-      if (resultCode == AppCompatActivity.RESULT_OK && data.getData() != null) {
-        Logger.get(getContext()).logImpression(DialerImpression.Type.FAVORITE_ADD_FAVORITE);
-        updateSpeedDialItemsOnResume = false;
-        speedDialLoaderListener.listen(
-            getContext(),
-            UiItemLoaderComponent.get(getContext())
-                .speedDialUiItemMutator()
-                .starContact(data.getData()),
-            this::onSpeedDialUiItemListLoaded,
-            throwable -> {
-              throw new RuntimeException(throwable);
-            });
-      }
-    }
-  }
-
   private void onSpeedDialUiItemListLoaded(ImmutableList<SpeedDialUiItem> speedDialUiItems) {
     LogUtil.enterBlock("SpeedDialFragment.onSpeedDialUiItemListLoaded");
     // TODO(calderwoodra): Use DiffUtil to properly update and animate the change
-    adapter.setSpeedDialUiItems(
-        UiItemLoaderComponent.get(getContext())
-            .speedDialUiItemMutator()
-            .insertDuoChannels(getContext(), speedDialUiItems));
+    adapter.setSpeedDialUiItems(speedDialUiItems);
     adapter.notifyDataSetChanged();
     maybeShowNoContactsEmptyContentView();
 
@@ -297,7 +291,8 @@
     emptyContentView.setActionLabel(R.string.speed_dial_turn_on_contacts_permission);
     emptyContentView.setDescription(R.string.speed_dial_contacts_permission_description);
     emptyContentView.setActionClickedListener(
-        new SpeedDialContactPermissionEmptyViewListener(getContext(), this));
+        new SpeedDialContactPermissionEmptyViewListener(getContext(), this,
+                contactPermissionLauncher));
     return true;
   }
 
@@ -310,7 +305,8 @@
     emptyContentView.setVisibility(View.VISIBLE);
     emptyContentView.setActionLabel(R.string.speed_dial_no_contacts_action_text);
     emptyContentView.setDescription(R.string.speed_dial_no_contacts_description);
-    emptyContentView.setActionClickedListener(new SpeedDialNoContactsEmptyViewListener(this));
+    emptyContentView.setActionClickedListener(
+            new SpeedDialNoContactsEmptyViewListener(addFavoriteLauncher));
   }
 
   @Override
@@ -338,12 +334,11 @@
     @Override
     public void onAddFavoriteClicked() {
       Intent intent = new Intent(Intent.ACTION_PICK, Phone.CONTENT_URI);
-      startActivityForResult(intent, ActivityRequestCodes.SPEED_DIAL_ADD_FAVORITE);
+      addFavoriteLauncher.launch(intent);
     }
   }
 
-  @VisibleForTesting
-  static final class SpeedDialFavoritesListener implements FavoriteContactsListener {
+  private static final class SpeedDialFavoritesListener implements FavoriteContactsListener {
 
     private final FragmentActivity activity;
     private final FragmentManager childFragmentManager;
@@ -377,28 +372,20 @@
         return;
       }
 
-      Logger.get(activity).logImpression(DialerImpression.Type.FAVORITE_OPEN_DISAMBIG_DIALOG);
       DisambigDialog.show(speedDialUiItem, childFragmentManager);
     }
 
     @Override
     public void onClick(Channel channel) {
-      if (channel.technology() == Channel.DUO) {
-        Logger.get(activity)
-            .logImpression(DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT);
-      }
-
       PreCall.start(
           activity,
           new CallIntentBuilder(channel.number(), CallInitiationType.Type.SPEED_DIAL)
               .setAllowAssistedDial(true)
-              .setIsVideoCall(channel.isVideoTechnology())
-              .setIsDuoCall(channel.technology() == Channel.DUO));
+              .setIsVideoCall(channel.isVideoTechnology()));
     }
 
     @Override
     public void showContextMenu(View view, SpeedDialUiItem speedDialUiItem) {
-      Logger.get(activity).logImpression(DialerImpression.Type.FAVORITE_OPEN_FAVORITE_MENU);
       layoutManager.setScrollEnabled(false);
       contextMenu =
           ContextMenu.show(activity, view, speedDialContextMenuItemListener, speedDialUiItem);
@@ -416,8 +403,6 @@
 
     @Override
     public void onRequestRemove(SpeedDialUiItem speedDialUiItem) {
-      Logger.get(activity)
-          .logImpression(DialerImpression.Type.FAVORITE_REMOVE_FAVORITE_BY_DRAG_AND_DROP);
       speedDialContextMenuItemListener.removeFavoriteContact(speedDialUiItem);
     }
 
@@ -436,28 +421,20 @@
 
       @Override
       public void placeCall(Channel channel) {
-        if (channel.technology() == Channel.DUO) {
-          Logger.get(activity)
-              .logImpression(
-                  DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FOR_FAVORITE_CONTACT);
-        }
         PreCall.start(
             activity,
             new CallIntentBuilder(channel.number(), CallInitiationType.Type.SPEED_DIAL)
                 .setAllowAssistedDial(true)
-                .setIsVideoCall(channel.isVideoTechnology())
-                .setIsDuoCall(channel.technology() == Channel.DUO));
+                .setIsVideoCall(channel.isVideoTechnology()));
       }
 
       @Override
       public void openSmsConversation(String number) {
-        Logger.get(activity).logImpression(DialerImpression.Type.FAVORITE_SEND_MESSAGE);
         activity.startActivity(IntentUtil.getSendSmsIntent(number));
       }
 
       @Override
       public void removeFavoriteContact(SpeedDialUiItem speedDialUiItem) {
-        Logger.get(activity).logImpression(DialerImpression.Type.FAVORITE_REMOVE_FAVORITE);
         speedDialLoaderListener.listen(
             activity,
             UiItemLoaderComponent.get(activity)
@@ -471,7 +448,6 @@
 
       @Override
       public void openContactInfo(SpeedDialUiItem speedDialUiItem) {
-        Logger.get(activity).logImpression(DialerImpression.Type.FAVORITE_OPEN_CONTACT_CARD);
         activity.startActivity(
             new Intent(
                 Intent.ACTION_VIEW,
@@ -532,24 +508,18 @@
                   Uri.withAppendedPath(
                       Contacts.CONTENT_URI, String.valueOf(speedDialUiItem.contactId()))),
               R.string.contact_menu_contact_info,
-              R.drawable.context_menu_contact_icon));
+              R.drawable.quantum_ic_person_vd_theme_24));
 
       bottomSheet = HistoryItemActionBottomSheet.show(getContext(), headerInfo, modules);
     }
 
     @Override
     public void onRowClicked(Channel channel) {
-      if (channel.technology() == Channel.DUO) {
-        Logger.get(getContext())
-            .logImpression(
-                DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FOR_SUGGESTED_CONTACT);
-      }
       PreCall.start(
           getContext(),
           new CallIntentBuilder(channel.number(), CallInitiationType.Type.SPEED_DIAL)
               .setAllowAssistedDial(true)
-              .setIsVideoCall(channel.isVideoTechnology())
-              .setIsDuoCall(channel.technology() == Channel.DUO));
+              .setIsVideoCall(channel.isVideoTechnology()));
     }
 
     private final class StarContactModule implements HistoryItemActionModule {
@@ -612,9 +582,14 @@
     private final Context context;
     private final Fragment fragment;
 
-    private SpeedDialContactPermissionEmptyViewListener(Context context, Fragment fragment) {
+    private final ActivityResultLauncher<String[]> contactPermissionLauncher;
+
+    private SpeedDialContactPermissionEmptyViewListener(Context context, Fragment fragment,
+                                                        ActivityResultLauncher<String[]>
+                                                                contactPermissionLauncher) {
       this.context = context;
       this.fragment = fragment;
+      this.contactPermissionLauncher = contactPermissionLauncher;
     }
 
     @Override
@@ -626,23 +601,23 @@
       LogUtil.i(
           "OldSpeedDialFragment.onEmptyViewActionButtonClicked",
           "Requesting permissions: " + Arrays.toString(deniedPermissions));
-      fragment.requestPermissions(deniedPermissions, READ_CONTACTS_PERMISSION_REQUEST_CODE);
+      contactPermissionLauncher.launch(deniedPermissions);
     }
   }
 
   private static final class SpeedDialNoContactsEmptyViewListener
       implements OnEmptyViewActionButtonClickedListener {
 
-    private final Fragment fragment;
+    private final ActivityResultLauncher<Intent> addFavoriteLauncher;
 
-    SpeedDialNoContactsEmptyViewListener(Fragment fragment) {
-      this.fragment = fragment;
+    SpeedDialNoContactsEmptyViewListener(ActivityResultLauncher<Intent> addFavoriteLauncher) {
+      this.addFavoriteLauncher = addFavoriteLauncher;
     }
 
     @Override
     public void onEmptyViewActionButtonClicked() {
       Intent intent = new Intent(Intent.ACTION_PICK, Phone.CONTENT_URI);
-      fragment.startActivityForResult(intent, ActivityRequestCodes.SPEED_DIAL_ADD_FAVORITE);
+      addFavoriteLauncher.launch(intent);
     }
   }
 
diff --git a/java/com/android/dialer/speeddial/SuggestionViewHolder.java b/java/com/android/dialer/speeddial/SuggestionViewHolder.java
index 578e0b3..12b8dab 100644
--- a/java/com/android/dialer/speeddial/SuggestionViewHolder.java
+++ b/java/com/android/dialer/speeddial/SuggestionViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,11 +18,14 @@
 package com.android.dialer.speeddial;
 
 import android.content.Context;
-import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.historyitemactions.HistoryItemBottomSheetHeaderInfo;
 import com.android.dialer.location.GeoUtil;
diff --git a/java/com/android/dialer/speeddial/database/SpeedDialEntry.java b/java/com/android/dialer/speeddial/database/SpeedDialEntry.java
index 181f9ec..dfaa825 100644
--- a/java/com/android/dialer/speeddial/database/SpeedDialEntry.java
+++ b/java/com/android/dialer/speeddial/database/SpeedDialEntry.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,12 +18,15 @@
 package com.android.dialer.speeddial.database;
 
 import android.provider.ContactsContract.CommonDataKinds.Phone;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+
 import com.google.auto.value.AutoValue;
-import com.google.common.base.Optional;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.util.Optional;
 
 /** POJO representation of database rows returned by {@link SpeedDialEntryDao}. */
 @AutoValue
@@ -57,7 +61,7 @@
   public abstract Builder toBuilder();
 
   public static Builder builder() {
-    return new AutoValue_SpeedDialEntry.Builder().setPinnedPosition(Optional.absent());
+    return new AutoValue_SpeedDialEntry.Builder().setPinnedPosition(Optional.empty());
   }
 
   /** Builder class for speed dial entry. */
@@ -84,15 +88,14 @@
     public static final int UNKNOWN = 0;
     public static final int VOICE = 1;
     public static final int IMS_VIDEO = 2;
-    public static final int DUO = 3;
 
     /** Whether the Channel is for an audio or video call. */
     @Retention(RetentionPolicy.SOURCE)
-    @IntDef({UNKNOWN, VOICE, IMS_VIDEO, DUO})
+    @IntDef({UNKNOWN, VOICE, IMS_VIDEO})
     public @interface Technology {}
 
     public boolean isVideoTechnology() {
-      return technology() == IMS_VIDEO || technology() == DUO;
+      return technology() == IMS_VIDEO;
     }
 
     /**
diff --git a/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java b/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java
index caba77f..2f189a2 100644
--- a/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java
+++ b/java/com/android/dialer/speeddial/database/SpeedDialEntryDatabaseHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,14 +23,16 @@
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.text.TextUtils;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.database.Selection;
 import com.android.dialer.speeddial.database.SpeedDialEntry.Channel;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
+
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * {@link SpeedDialEntryDao} implemented as an SQLite database.
@@ -42,7 +45,7 @@
   /**
    * If the pinned position is absent, then we need to write an impossible value in the table like
    * -1 so that it doesn't default to 0. When we read this value from the table, we'll translate it
-   * to Optional.absent() in the resulting {@link SpeedDialEntry}.
+   * to Optional.empty() in the resulting {@link SpeedDialEntry}.
    */
   private static final int PINNED_POSITION_ABSENT = -1;
 
@@ -125,14 +128,14 @@
               Channel.builder()
                   .setNumber(number)
                   .setPhoneType(cursor.getInt(POSITION_PHONE_TYPE))
-                  .setLabel(Optional.fromNullable(cursor.getString(POSITION_PHONE_LABEL)).or(""))
+                  .setLabel(Optional.ofNullable(cursor.getString(POSITION_PHONE_LABEL)).orElse(""))
                   .setTechnology(cursor.getInt(POSITION_PHONE_TECHNOLOGY))
                   .build();
         }
 
         Optional<Integer> pinnedPosition = Optional.of(cursor.getInt(POSITION_PINNED_POSITION));
-        if (pinnedPosition.or(PINNED_POSITION_ABSENT) == PINNED_POSITION_ABSENT) {
-          pinnedPosition = Optional.absent();
+        if (pinnedPosition.orElse(PINNED_POSITION_ABSENT) == PINNED_POSITION_ABSENT) {
+          pinnedPosition = Optional.empty();
         }
 
         SpeedDialEntry entry =
@@ -243,7 +246,7 @@
     if (includeId) {
       values.put(ID, entry.id());
     }
-    values.put(PINNED_POSITION, entry.pinnedPosition().or(PINNED_POSITION_ABSENT));
+    values.put(PINNED_POSITION, entry.pinnedPosition().orElse(PINNED_POSITION_ABSENT));
     values.put(CONTACT_ID, entry.contactId());
     values.put(LOOKUP_KEY, entry.lookupKey());
     if (entry.defaultChannel() != null) {
diff --git a/java/com/android/dialer/speeddial/draghelper/SpeedDialFavoritesViewHolderOnTouchListener.java b/java/com/android/dialer/speeddial/draghelper/SpeedDialFavoritesViewHolderOnTouchListener.java
index 00fecd7..253f85f 100644
--- a/java/com/android/dialer/speeddial/draghelper/SpeedDialFavoritesViewHolderOnTouchListener.java
+++ b/java/com/android/dialer/speeddial/draghelper/SpeedDialFavoritesViewHolderOnTouchListener.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,13 +17,15 @@
 
 package com.android.dialer.speeddial.draghelper;
 
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.support.v7.widget.helper.ItemTouchHelper;
 import android.view.HapticFeedbackConstants;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnTouchListener;
 import android.view.ViewConfiguration;
+
+import androidx.recyclerview.widget.ItemTouchHelper;
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.android.dialer.common.Assert;
 
 /** OnTouchListener for the {@link com.android.dialer.speeddial.FavoritesViewHolder}. */
@@ -30,7 +33,7 @@
 
   private final ViewConfiguration configuration;
   private final ItemTouchHelper itemTouchHelper;
-  private final ViewHolder viewHolder;
+  private final RecyclerView.ViewHolder viewHolder;
   private final OnTouchFinishCallback onTouchFinishCallback;
 
   private boolean hasPerformedLongClick;
@@ -40,7 +43,7 @@
   public SpeedDialFavoritesViewHolderOnTouchListener(
       ViewConfiguration configuration,
       ItemTouchHelper itemTouchHelper,
-      ViewHolder viewHolder,
+      RecyclerView.ViewHolder viewHolder,
       OnTouchFinishCallback onTouchFinishCallback) {
     this.configuration = configuration;
     this.itemTouchHelper = itemTouchHelper;
diff --git a/java/com/android/dialer/speeddial/draghelper/SpeedDialItemTouchHelperCallback.java b/java/com/android/dialer/speeddial/draghelper/SpeedDialItemTouchHelperCallback.java
index 2f5d87c..07ade72 100644
--- a/java/com/android/dialer/speeddial/draghelper/SpeedDialItemTouchHelperCallback.java
+++ b/java/com/android/dialer/speeddial/draghelper/SpeedDialItemTouchHelperCallback.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,21 +17,18 @@
 
 package com.android.dialer.speeddial.draghelper;
 
-import android.content.Context;
 import android.graphics.Canvas;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.support.v7.widget.helper.ItemTouchHelper;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.ItemTouchHelper;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
 
 /** {@link ItemTouchHelper} for Speed Dial favorite contacts. */
 public class SpeedDialItemTouchHelperCallback extends ItemTouchHelper.Callback {
 
   private final ItemTouchHelperAdapter adapter;
-  private final Context context;
 
   // When dragged item is in removeView, onMove() and onChildDraw() are called in turn. This
   // behavior changes when dragged item entering/leaving removeView. The boolean field
@@ -38,8 +36,7 @@
   private boolean movedOverRemoveView;
   private boolean inRemoveView;
 
-  public SpeedDialItemTouchHelperCallback(Context context, ItemTouchHelperAdapter adapter) {
-    this.context = context;
+  public SpeedDialItemTouchHelperCallback(ItemTouchHelperAdapter adapter) {
     this.adapter = adapter;
   }
 
@@ -56,8 +53,8 @@
   }
 
   @Override
-  public boolean canDropOver(
-      @NonNull RecyclerView recyclerView, @NonNull ViewHolder current, @NonNull ViewHolder target) {
+  public boolean canDropOver(@NonNull RecyclerView recyclerView, @NonNull ViewHolder current,
+                             @NonNull ViewHolder target) {
     return adapter.canDropOver(target);
   }
 
@@ -104,8 +101,6 @@
       int toPos,
       int x,
       int y) {
-    Logger.get(context)
-        .logImpression(DialerImpression.Type.FAVORITE_MOVE_FAVORITE_BY_DRAG_AND_DROP);
     super.onMoved(recyclerView, viewHolder, fromPos, viewHolder1, toPos, x, y);
   }
 
diff --git a/java/com/android/dialer/speeddial/draghelper/SpeedDialLayoutManager.java b/java/com/android/dialer/speeddial/draghelper/SpeedDialLayoutManager.java
index fcc9251..4afee16 100644
--- a/java/com/android/dialer/speeddial/draghelper/SpeedDialLayoutManager.java
+++ b/java/com/android/dialer/speeddial/draghelper/SpeedDialLayoutManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,8 @@
 package com.android.dialer.speeddial.draghelper;
 
 import android.content.Context;
-import android.support.v7.widget.GridLayoutManager;
+
+import androidx.recyclerview.widget.GridLayoutManager;
 
 /** {@link GridLayoutManager} that allows disabling scrolling. */
 public class SpeedDialLayoutManager extends GridLayoutManager {
diff --git a/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java b/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java
index 4d268f3..5ba16b4 100644
--- a/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java
+++ b/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,19 +23,23 @@
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
-import android.support.annotation.Nullable;
+import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.util.ArraySet;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.glidephotomanager.PhotoInfo;
 import com.android.dialer.speeddial.database.SpeedDialEntry;
 import com.android.dialer.speeddial.database.SpeedDialEntry.Channel;
 import com.google.auto.value.AutoValue;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.Set;
 
 /**
@@ -92,7 +97,7 @@
   public static Builder builder() {
     return new AutoValue_SpeedDialUiItem.Builder()
         .setChannels(ImmutableList.of())
-        .setPinnedPosition(Optional.absent());
+        .setPinnedPosition(Optional.empty());
   }
 
   /**
@@ -129,8 +134,9 @@
     Set<String> numbers = new ArraySet<>();
     do {
       String number = cursor.getString(NUMBER);
+      String normalizedNumber = PhoneNumberUtils.normalizeNumber(number);
       // TODO(78492722): consider using lib phone number to compare numbers
-      if (!numbers.add(number)) {
+      if (!numbers.add(normalizedNumber)) {
         // Number is identical to an existing number, skip this number
         continue;
       }
diff --git a/java/com/android/dialer/speeddial/loader/SpeedDialUiItemMutator.java b/java/com/android/dialer/speeddial/loader/SpeedDialUiItemMutator.java
index 86d5d37..55b6da6 100644
--- a/java/com/android/dialer/speeddial/loader/SpeedDialUiItemMutator.java
+++ b/java/com/android/dialer/speeddial/loader/SpeedDialUiItemMutator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,10 +28,11 @@
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
-import android.support.annotation.MainThread;
-import android.support.annotation.WorkerThread;
 import android.util.ArrayMap;
 import android.util.ArraySet;
+
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
@@ -42,25 +44,26 @@
 import com.android.dialer.contacts.displaypreference.ContactDisplayPreferences;
 import com.android.dialer.contacts.displaypreference.ContactDisplayPreferences.DisplayOrder;
 import com.android.dialer.contacts.hiresphoto.HighResolutionPhotoRequester;
-import com.android.dialer.duo.DuoComponent;
 import com.android.dialer.inject.ApplicationContext;
 import com.android.dialer.speeddial.database.SpeedDialEntry;
 import com.android.dialer.speeddial.database.SpeedDialEntry.Channel;
 import com.android.dialer.speeddial.database.SpeedDialEntryDao;
 import com.android.dialer.speeddial.database.SpeedDialEntryDatabaseHelper;
 import com.android.dialer.util.CallUtil;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.Set;
+
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
@@ -446,8 +449,7 @@
             // Preserve the default channel if it didn't change/still exists
             Channel defaultChannel = entry.defaultChannel();
             if (defaultChannel != null) {
-              if (item.channels().contains(defaultChannel)
-                  || isValidDuoDefaultChannel(item.channels(), defaultChannel)) {
+              if (item.channels().contains(defaultChannel)) {
                 entrySpeedDialItem.setDefaultChannel(defaultChannel);
               }
             }
@@ -471,25 +473,6 @@
     }
   }
 
-  /**
-   * Since we can't check duo reachabliity on background threads, we have to assume the contact is
-   * still duo reachable. So we just check it is and return true if the Duo number is still
-   * associated with the contact.
-   */
-  private static boolean isValidDuoDefaultChannel(
-      ImmutableList<Channel> channels, Channel defaultChannel) {
-    if (defaultChannel.technology() != Channel.DUO) {
-      return false;
-    }
-
-    for (Channel channel : channels) {
-      if (channel.number().equals(defaultChannel.number())) {
-        return true;
-      }
-    }
-    return false;
-  }
-
   @WorkerThread
   private List<SpeedDialUiItem> getStarredContacts() {
     Trace.beginSection("getStrequentContacts");
@@ -626,61 +609,6 @@
     }
   }
 
-  /**
-   * Returns a new list with duo reachable channels inserted. Duo channels won't replace ViLTE
-   * channels.
-   */
-  @MainThread
-  public ImmutableList<SpeedDialUiItem> insertDuoChannels(
-      Context context, ImmutableList<SpeedDialUiItem> speedDialUiItems) {
-    Assert.isMainThread();
-
-    ImmutableList.Builder<SpeedDialUiItem> newSpeedDialItemList = ImmutableList.builder();
-    // for each existing item
-    for (SpeedDialUiItem item : speedDialUiItems) {
-      if (item.defaultChannel() == null) {
-        // If the contact is starred and doesn't have a default channel, insert duo channels
-        newSpeedDialItemList.add(insertDuoChannelsToStarredContact(context, item));
-      } else {
-        // if starred and has a default channel, leave it as is, the user knows what they want.
-        newSpeedDialItemList.add(item);
-      }
-    }
-    return newSpeedDialItemList.build();
-  }
-
-  @MainThread
-  private SpeedDialUiItem insertDuoChannelsToStarredContact(Context context, SpeedDialUiItem item) {
-    Assert.isMainThread();
-    Assert.checkArgument(item.isStarred());
-
-    // build a new list of channels
-    ImmutableList.Builder<Channel> newChannelsList = ImmutableList.builder();
-    Channel previousChannel = item.channels().get(0);
-    newChannelsList.add(previousChannel);
-
-    for (int i = 1; i < item.channels().size(); i++) {
-      Channel currentChannel = item.channels().get(i);
-      // If the previous and current channel are voice channels, that means the previous number
-      // didn't have a video channel.
-      // If the previous number is duo reachable, insert a duo channel.
-      if (!previousChannel.isVideoTechnology()
-          && !currentChannel.isVideoTechnology()
-          && DuoComponent.get(context).getDuo().isReachable(context, previousChannel.number())) {
-        newChannelsList.add(previousChannel.toBuilder().setTechnology(Channel.DUO).build());
-      }
-      newChannelsList.add(currentChannel);
-      previousChannel = currentChannel;
-    }
-
-    // Check the last channel
-    if (!previousChannel.isVideoTechnology()
-        && DuoComponent.get(context).getDuo().isReachable(context, previousChannel.number())) {
-      newChannelsList.add(previousChannel.toBuilder().setTechnology(Channel.DUO).build());
-    }
-    return item.toBuilder().setChannels(newChannelsList.build()).build();
-  }
-
   private SpeedDialEntryDao getSpeedDialEntryDao() {
     return new SpeedDialEntryDatabaseHelper(appContext);
   }
diff --git a/java/com/android/dialer/speeddial/loader/UiItemLoaderComponent.java b/java/com/android/dialer/speeddial/loader/UiItemLoaderComponent.java
index 8529084..c655611 100644
--- a/java/com/android/dialer/speeddial/loader/UiItemLoaderComponent.java
+++ b/java/com/android/dialer/speeddial/loader/UiItemLoaderComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,9 @@
 package com.android.dialer.speeddial.loader;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
+
 import dagger.Subcomponent;
 
 /** Dagger component for the speeddial/loader package. */
diff --git a/java/com/android/dialer/speeddial/res/drawable/context_menu_contact_icon.xml b/java/com/android/dialer/speeddial/res/drawable/context_menu_contact_icon.xml
deleted file mode 100644
index ee9cde1..0000000
--- a/java/com/android/dialer/speeddial/res/drawable/context_menu_contact_icon.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-  <item>
-    <shape android:shape="oval">
-      <solid android:color="?colorIcon"/>
-      <size android:width="24dp" android:height="24dp"/>
-    </shape>
-  </item>
-  <item
-      android:width="24dp"
-      android:height="24dp"
-      android:gravity="center"
-      android:drawable="@drawable/product_logo_avatar_anonymous_white_color_120"/>
-</layer-list>
\ No newline at end of file
diff --git a/java/com/android/dialer/speeddial/res/drawable/dialog_background.xml b/java/com/android/dialer/speeddial/res/drawable/dialog_background.xml
new file mode 100644
index 0000000..119b08b
--- /dev/null
+++ b/java/com/android/dialer/speeddial/res/drawable/dialog_background.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2014 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="?android:attr/colorBackgroundFloating"/>
+    <corners android:radius="16dp"/>
+</shape>
diff --git a/java/com/android/dialer/speeddial/res/layout/disambig_dialog_divider.xml b/java/com/android/dialer/speeddial/res/layout/disambig_dialog_divider.xml
deleted file mode 100644
index a743ccc..0000000
--- a/java/com/android/dialer/speeddial/res/layout/disambig_dialog_divider.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2018 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<View
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="1dp"
-    android:layout_marginTop="8dp"
-    android:layout_marginBottom="8dp"
-    android:background="#12000000"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/speeddial/res/layout/disambig_dialog_layout.xml b/java/com/android/dialer/speeddial/res/layout/disambig_dialog_layout.xml
index 0923c52..f4b3f6d 100644
--- a/java/com/android/dialer/speeddial/res/layout/disambig_dialog_layout.xml
+++ b/java/com/android/dialer/speeddial/res/layout/disambig_dialog_layout.xml
@@ -39,7 +39,8 @@
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:minHeight="168dp"
-      app:maxHeight="256dp">
+      app:maxHeight="256dp"
+      android:background="?android:attr/colorBackgroundFloating">
 
     <LinearLayout
         android:id="@+id/communication_avenue_container"
@@ -65,4 +66,4 @@
         android:text="@string/speed_dial_remember_this_choice"
         style="@style/DialerCheckboxStyle"/>
   </FrameLayout>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/java/com/android/dialer/speeddial/res/layout/disambig_option_header_layout.xml b/java/com/android/dialer/speeddial/res/layout/disambig_option_header_layout.xml
deleted file mode 100644
index ffda367..0000000
--- a/java/com/android/dialer/speeddial/res/layout/disambig_option_header_layout.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/disambig_header_phone_label"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:gravity="center_vertical"
-    android:minHeight="48dp"
-    android:paddingStart="24dp"
-    android:paddingEnd="24dp"
-    style="@style/Dialer.TextAppearance.Secondary"/>
diff --git a/java/com/android/dialer/speeddial/res/layout/disambig_option_layout.xml b/java/com/android/dialer/speeddial/res/layout/disambig_option_layout.xml
index 0388005..88fcc96 100644
--- a/java/com/android/dialer/speeddial/res/layout/disambig_option_layout.xml
+++ b/java/com/android/dialer/speeddial/res/layout/disambig_option_layout.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
  ~ Copyright (C) 2017 The Android Open Source Project
+ ~ Copyright (C) 2023 The LineageOS Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
@@ -14,28 +15,49 @@
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License
  -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/option_container"
     android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:paddingStart="24dp"
     android:paddingEnd="24dp"
+    android:paddingTop="8dp"
+    android:paddingBottom="8dp"
     android:minHeight="56dp"
     android:background="?android:attr/selectableItemBackground">
 
+
+  <TextView
+      android:id="@+id/speed_dial_label"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_marginEnd="0dp"
+      android:layout_gravity="center_vertical"
+      style="@style/Dialer.TextAppearance.Primary"
+      tools:text="Mobile"/>
+
+  <TextView
+      android:id="@+id/speed_dial_number"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_marginEnd="16dp"
+      android:layout_marginTop="8dp"
+      android:layout_gravity="center_vertical"
+      android:layout_below="@id/speed_dial_label"
+      style="@style/Dialer.TextAppearance.Primary"
+      tools:text="Mobile"/>
+
+
   <ImageView
       android:id="@+id/disambig_option_image"
       android:layout_width="24dp"
       android:layout_height="24dp"
       android:layout_gravity="center_vertical"
-      android:tint="?colorIcon"/>
-
-  <TextView
-      android:id="@+id/disambig_option_text"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_marginStart="16dp"
-      android:layout_gravity="center_vertical"
-      style="@style/Dialer.TextAppearance.Primary"/>
-</LinearLayout>
\ No newline at end of file
+      android:layout_alignParentEnd="true"
+      android:layout_centerVertical="true"
+      app:tint="?colorIcon" />
+</RelativeLayout>
diff --git a/java/com/android/dialer/speeddial/res/layout/favorite_remove_view_layout.xml b/java/com/android/dialer/speeddial/res/layout/favorite_remove_view_layout.xml
index 825658c..498c1b7 100644
--- a/java/com/android/dialer/speeddial/res/layout/favorite_remove_view_layout.xml
+++ b/java/com/android/dialer/speeddial/res/layout/favorite_remove_view_layout.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
  ~ Copyright (C) 2018 The Android Open Source Project
+ ~ Copyright (C) 2023 The LineageOS Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
@@ -19,7 +20,9 @@
          talkback enabled. It will still be announced when user drag or drop contact onto it.
          This is required since drag and drop event is only sent to views are visible when drag
          starts. -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/favorite_remove_view"
     android:layout_width="match_parent"
     android:layout_height="@dimen/expanded_search_bar_height"
@@ -37,13 +40,13 @@
       android:layout_marginTop="8dp"
       android:layout_marginBottom="8dp"
       android:src="@drawable/quantum_ic_close_vd_theme_24"
-      android:tint="?colorIconOnUnthemedDarkBackground"/>
+      app:tint="?android:attr/textColorPrimary" />
 
   <TextView
       android:id="@+id/remove_view_text"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/speed_dial_remove_favorites"
-      android:textColor="?colorTextOnUnthemedDarkBackground"
+      android:textColor="?android:attr/textColorPrimary"
       android:textSize="16sp"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/java/com/android/dialer/speeddial/res/layout/fragment_speed_dial.xml b/java/com/android/dialer/speeddial/res/layout/fragment_speed_dial.xml
index e79bc6b..56eab96 100644
--- a/java/com/android/dialer/speeddial/res/layout/fragment_speed_dial.xml
+++ b/java/com/android/dialer/speeddial/res/layout/fragment_speed_dial.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
  ~ Copyright (C) 2017 The Android Open Source Project
+ ~ Copyright (C) 2023 The LineageOS Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
@@ -19,7 +20,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-  <android.support.v7.widget.RecyclerView
+  <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/speed_dial_recycler_view"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
diff --git a/java/com/android/dialer/speeddial/res/layout/speed_dial_header_layout.xml b/java/com/android/dialer/speeddial/res/layout/speed_dial_header_layout.xml
index 1a9d092..5897d34 100644
--- a/java/com/android/dialer/speeddial/res/layout/speed_dial_header_layout.xml
+++ b/java/com/android/dialer/speeddial/res/layout/speed_dial_header_layout.xml
@@ -40,6 +40,7 @@
       android:paddingStart="8dp"
       android:paddingEnd="8dp"
       android:text="@string/speed_dial_add_button_text"
-      android:textColor="?android:attr/colorPrimary"
+      android:textColor="?android:attr/colorAccent"
+      android:textAllCaps="false"
       style="@style/Widget.AppCompat.Button.Borderless"/>
-</RelativeLayout>
\ No newline at end of file
+</RelativeLayout>
diff --git a/java/com/android/dialer/speeddial/res/layout/suggestion_row_layout.xml b/java/com/android/dialer/speeddial/res/layout/suggestion_row_layout.xml
index 4e010c2..463f17c 100644
--- a/java/com/android/dialer/speeddial/res/layout/suggestion_row_layout.xml
+++ b/java/com/android/dialer/speeddial/res/layout/suggestion_row_layout.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
  ~ Copyright (C) 2017 The Android Open Source Project
+ ~ Copyright (C) 2023 The LineageOS Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
  -->
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="72dp"
@@ -57,8 +59,8 @@
       android:layout_centerVertical="true"
       android:layout_alignParentEnd="true"
       android:scaleType="center"
-      android:tint="?colorIcon"
-      android:src="@drawable/quantum_ic_more_vert_white_24"
+      android:src="@drawable/quantum_ic_more_vert_vd_theme_24"
       android:background="?android:attr/selectableItemBackgroundBorderless"
-      android:contentDescription="@string/content_description_overflow"/>
-</RelativeLayout>
\ No newline at end of file
+      android:contentDescription="@string/content_description_overflow"
+      app:tint="?colorIcon" />
+</RelativeLayout>
diff --git a/java/com/android/dialer/speeddial/res/menu/starred_contact_context_menu.xml b/java/com/android/dialer/speeddial/res/menu/starred_contact_context_menu.xml
index 2ff2524..74cab32 100644
--- a/java/com/android/dialer/speeddial/res/menu/starred_contact_context_menu.xml
+++ b/java/com/android/dialer/speeddial/res/menu/starred_contact_context_menu.xml
@@ -47,6 +47,6 @@
   <item
       android:id="@+id/contact_info_container"
       android:title="@string/contact_menu_contact_info"
-      android:icon="@drawable/context_menu_contact_icon"
+      android:icon="@drawable/quantum_ic_person_vd_theme_24"
       android:iconTint="#FFFFFF"/>
-</menu>
\ No newline at end of file
+</menu>
diff --git a/java/com/android/dialer/speeddial/res/values-af/strings.xml b/java/com/android/dialer/speeddial/res/values-af/strings.xml
index a8ee6b3..43e8c33 100644
--- a/java/com/android/dialer/speeddial/res/values-af/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-af/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Kies oproeptipe</string>
   <string name="disambig_option_video_call">Video-oproep</string>
   <string name="disambig_option_voice_call">Bel</string>
-  <string name="add_favorite_activity_title">Voeg gunsteling by</string>
   <string name="contact_menu_voice_call">Stemoproep</string>
   <string name="contact_menu_video_call">Video-oproep</string>
   <string name="contact_menu_message">SMS</string>
diff --git a/java/com/android/dialer/speeddial/res/values-am/strings.xml b/java/com/android/dialer/speeddial/res/values-am/strings.xml
index fc6443c..f73f82a 100644
--- a/java/com/android/dialer/speeddial/res/values-am/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-am/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">የጥሪ አይነት ይምረጡ</string>
   <string name="disambig_option_video_call">የቪዲዮ ጥሪ</string>
   <string name="disambig_option_voice_call">ጥሪ</string>
-  <string name="add_favorite_activity_title">ተወዳጅ ያክሉ</string>
   <string name="contact_menu_voice_call">የድምጽ ጥሪ</string>
   <string name="contact_menu_video_call">የቪዲዮ ጥሪ</string>
   <string name="contact_menu_message">መልዕክት</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ar/strings.xml b/java/com/android/dialer/speeddial/res/values-ar/strings.xml
index a0c9d85..be7d3af 100644
--- a/java/com/android/dialer/speeddial/res/values-ar/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ar/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">اختيار نوع المكالمة</string>
   <string name="disambig_option_video_call">فيديو</string>
   <string name="disambig_option_voice_call">اتصال</string>
-  <string name="add_favorite_activity_title">إضافة إلى المُفضلة</string>
   <string name="contact_menu_voice_call">مكالمة صوتية</string>
   <string name="contact_menu_video_call">مكالمة فيديو</string>
   <string name="contact_menu_message">رسالة</string>
diff --git a/java/com/android/dialer/speeddial/res/values-az/strings.xml b/java/com/android/dialer/speeddial/res/values-az/strings.xml
index afd3abf..72e8fa5 100644
--- a/java/com/android/dialer/speeddial/res/values-az/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-az/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Zəng növü seçin</string>
   <string name="disambig_option_video_call">Video zəng</string>
   <string name="disambig_option_voice_call">Zəng</string>
-  <string name="add_favorite_activity_title">Sevimlilərə əlavə edin</string>
   <string name="contact_menu_voice_call">Səsli Zəng</string>
   <string name="contact_menu_video_call">Video Zəng</string>
   <string name="contact_menu_message">Mesaj</string>
diff --git a/java/com/android/dialer/speeddial/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/speeddial/res/values-b+sr+Latn/strings.xml
index aae11ca..5b4ff18 100644
--- a/java/com/android/dialer/speeddial/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-b+sr+Latn/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Izaberite tip poziva</string>
   <string name="disambig_option_video_call">Video poziv</string>
   <string name="disambig_option_voice_call">Pozovi</string>
-  <string name="add_favorite_activity_title">Dodajte omiljeni kontakt</string>
   <string name="contact_menu_voice_call">Audio poziv</string>
   <string name="contact_menu_video_call">Video poziv</string>
   <string name="contact_menu_message">Pošalji SMS</string>
diff --git a/java/com/android/dialer/speeddial/res/values-be/strings.xml b/java/com/android/dialer/speeddial/res/values-be/strings.xml
index 74b0eba..7030abd 100644
--- a/java/com/android/dialer/speeddial/res/values-be/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-be/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Выбар тыпу выкліку</string>
   <string name="disambig_option_video_call">Відэавыклік</string>
   <string name="disambig_option_voice_call">Выклік</string>
-  <string name="add_favorite_activity_title">Дадаць у Абранае</string>
   <string name="contact_menu_voice_call">Галасавы выклік</string>
   <string name="contact_menu_video_call">Відэавыклік</string>
   <string name="contact_menu_message">Напісаць</string>
diff --git a/java/com/android/dialer/speeddial/res/values-bg/strings.xml b/java/com/android/dialer/speeddial/res/values-bg/strings.xml
index 58d14d3..9499067 100644
--- a/java/com/android/dialer/speeddial/res/values-bg/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-bg/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Избор на типа на обаждането</string>
   <string name="disambig_option_video_call">Видеообаждане</string>
   <string name="disambig_option_voice_call">Обаждане</string>
-  <string name="add_favorite_activity_title">Добавяне на любимо</string>
   <string name="contact_menu_voice_call">Глас. обаждане</string>
   <string name="contact_menu_video_call">Видеообаждане</string>
   <string name="contact_menu_message">Съобщение</string>
diff --git a/java/com/android/dialer/speeddial/res/values-bn/strings.xml b/java/com/android/dialer/speeddial/res/values-bn/strings.xml
index c09042a..ad25634 100644
--- a/java/com/android/dialer/speeddial/res/values-bn/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-bn/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">কলের মোড বেছে নিন</string>
   <string name="disambig_option_video_call">ভিডিও কল করুন</string>
   <string name="disambig_option_voice_call">কল করুন</string>
-  <string name="add_favorite_activity_title">পছন্দগুলি যোগ করুন</string>
   <string name="contact_menu_voice_call">ভয়েস কল করুন</string>
   <string name="contact_menu_video_call">ভিডিও কল করুন</string>
   <string name="contact_menu_message">মেসেজ পাঠান</string>
diff --git a/java/com/android/dialer/speeddial/res/values-bs/strings.xml b/java/com/android/dialer/speeddial/res/values-bs/strings.xml
index 84662e6..f24022b 100644
--- a/java/com/android/dialer/speeddial/res/values-bs/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-bs/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Odaberite vrstu poziva</string>
   <string name="disambig_option_video_call">Video poziv</string>
   <string name="disambig_option_voice_call">Poziv</string>
-  <string name="add_favorite_activity_title">Dodavanje u omiljene</string>
   <string name="contact_menu_voice_call">Glasovni poziv</string>
   <string name="contact_menu_video_call">Video poziv</string>
   <string name="contact_menu_message">Poruka</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ca/strings.xml b/java/com/android/dialer/speeddial/res/values-ca/strings.xml
index 5969d51..fbe8ce9 100644
--- a/java/com/android/dialer/speeddial/res/values-ca/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ca/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Tria el tipus de trucada</string>
   <string name="disambig_option_video_call">Videotrucada</string>
   <string name="disambig_option_voice_call">Trucada</string>
-  <string name="add_favorite_activity_title">Afegeix als preferits</string>
   <string name="contact_menu_voice_call">Trucada de veu</string>
   <string name="contact_menu_video_call">Videotrucada</string>
   <string name="contact_menu_message">Missatge</string>
diff --git a/java/com/android/dialer/speeddial/res/values-cs/strings.xml b/java/com/android/dialer/speeddial/res/values-cs/strings.xml
index 643da4a..d4b22f2 100644
--- a/java/com/android/dialer/speeddial/res/values-cs/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-cs/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Vyberte typ hovoru</string>
   <string name="disambig_option_video_call">Videohovor</string>
   <string name="disambig_option_voice_call">Volat</string>
-  <string name="add_favorite_activity_title">Přidejte oblíbené</string>
   <string name="contact_menu_voice_call">Hlasový hovor</string>
   <string name="contact_menu_video_call">Videohovor</string>
   <string name="contact_menu_message">Zpráva</string>
diff --git a/java/com/android/dialer/speeddial/res/values-da/strings.xml b/java/com/android/dialer/speeddial/res/values-da/strings.xml
index 763d7bb..eac21d6 100644
--- a/java/com/android/dialer/speeddial/res/values-da/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-da/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Vælg opkaldstype</string>
   <string name="disambig_option_video_call">Lav videoopkald</string>
   <string name="disambig_option_voice_call">Ring</string>
-  <string name="add_favorite_activity_title">Tilføj som foretrukken</string>
   <string name="contact_menu_voice_call">Taleopkald</string>
   <string name="contact_menu_video_call">Videoopkald</string>
   <string name="contact_menu_message">Besked</string>
diff --git a/java/com/android/dialer/speeddial/res/values-de/strings.xml b/java/com/android/dialer/speeddial/res/values-de/strings.xml
index fe1c48c..0dad10c 100644
--- a/java/com/android/dialer/speeddial/res/values-de/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-de/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Anruftyp auswählen</string>
   <string name="disambig_option_video_call">Videoanruf</string>
   <string name="disambig_option_voice_call">Anrufen</string>
-  <string name="add_favorite_activity_title">Favorit hinzufügen</string>
   <string name="contact_menu_voice_call">Sprachanruf</string>
   <string name="contact_menu_video_call">Videoanruf</string>
   <string name="contact_menu_message">Nachricht</string>
diff --git a/java/com/android/dialer/speeddial/res/values-el/strings.xml b/java/com/android/dialer/speeddial/res/values-el/strings.xml
index 9dbc648..c468f95 100644
--- a/java/com/android/dialer/speeddial/res/values-el/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-el/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Επιλέξτε τύπο κλήσης</string>
   <string name="disambig_option_video_call">Βιντεοκλήση</string>
   <string name="disambig_option_voice_call">Κλήση</string>
-  <string name="add_favorite_activity_title">Προσθήκη Αγαπημένου</string>
   <string name="contact_menu_voice_call">Φωνητική κλήση</string>
   <string name="contact_menu_video_call">Βιντεοκλήση</string>
   <string name="contact_menu_message">Μήνυμα</string>
diff --git a/java/com/android/dialer/speeddial/res/values-en-rAU/strings.xml b/java/com/android/dialer/speeddial/res/values-en-rAU/strings.xml
index 218a24d..eac5657 100644
--- a/java/com/android/dialer/speeddial/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-en-rAU/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Choose call type</string>
   <string name="disambig_option_video_call">Video call</string>
   <string name="disambig_option_voice_call">Call</string>
-  <string name="add_favorite_activity_title">Add Favourite</string>
   <string name="contact_menu_voice_call">Voice call</string>
   <string name="contact_menu_video_call">Video call</string>
   <string name="contact_menu_message">Message</string>
diff --git a/java/com/android/dialer/speeddial/res/values-en-rGB/strings.xml b/java/com/android/dialer/speeddial/res/values-en-rGB/strings.xml
index 218a24d..eac5657 100644
--- a/java/com/android/dialer/speeddial/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-en-rGB/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Choose call type</string>
   <string name="disambig_option_video_call">Video call</string>
   <string name="disambig_option_voice_call">Call</string>
-  <string name="add_favorite_activity_title">Add Favourite</string>
   <string name="contact_menu_voice_call">Voice call</string>
   <string name="contact_menu_video_call">Video call</string>
   <string name="contact_menu_message">Message</string>
diff --git a/java/com/android/dialer/speeddial/res/values-en-rIN/strings.xml b/java/com/android/dialer/speeddial/res/values-en-rIN/strings.xml
index 218a24d..eac5657 100644
--- a/java/com/android/dialer/speeddial/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-en-rIN/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Choose call type</string>
   <string name="disambig_option_video_call">Video call</string>
   <string name="disambig_option_voice_call">Call</string>
-  <string name="add_favorite_activity_title">Add Favourite</string>
   <string name="contact_menu_voice_call">Voice call</string>
   <string name="contact_menu_video_call">Video call</string>
   <string name="contact_menu_message">Message</string>
diff --git a/java/com/android/dialer/speeddial/res/values-es-rUS/strings.xml b/java/com/android/dialer/speeddial/res/values-es-rUS/strings.xml
index f7abbf5..5a526e9 100644
--- a/java/com/android/dialer/speeddial/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-es-rUS/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Elige el tipo de llamada</string>
   <string name="disambig_option_video_call">Videollamada</string>
   <string name="disambig_option_voice_call">Llamar</string>
-  <string name="add_favorite_activity_title">Agregar favorito</string>
   <string name="contact_menu_voice_call">Llamada de voz</string>
   <string name="contact_menu_video_call">Videollamada</string>
   <string name="contact_menu_message">Mensaje</string>
diff --git a/java/com/android/dialer/speeddial/res/values-es/strings.xml b/java/com/android/dialer/speeddial/res/values-es/strings.xml
index 25752a7..d5e1977 100644
--- a/java/com/android/dialer/speeddial/res/values-es/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-es/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Elegir tipo de llamada</string>
   <string name="disambig_option_video_call">Videollamada</string>
   <string name="disambig_option_voice_call">Llamada</string>
-  <string name="add_favorite_activity_title">Añadir favorito</string>
   <string name="contact_menu_voice_call">Llamada de voz</string>
   <string name="contact_menu_video_call">Videollamada</string>
   <string name="contact_menu_message">Mensaje</string>
diff --git a/java/com/android/dialer/speeddial/res/values-et/strings.xml b/java/com/android/dialer/speeddial/res/values-et/strings.xml
index d34dc17..ffbbef0 100644
--- a/java/com/android/dialer/speeddial/res/values-et/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-et/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Valige kõne tüüp</string>
   <string name="disambig_option_video_call">Videokõne</string>
   <string name="disambig_option_voice_call">Kõne</string>
-  <string name="add_favorite_activity_title">Lisage lemmikutesse</string>
   <string name="contact_menu_voice_call">Häälkõne</string>
   <string name="contact_menu_video_call">Videokõne</string>
   <string name="contact_menu_message">Sõnum</string>
diff --git a/java/com/android/dialer/speeddial/res/values-eu/strings.xml b/java/com/android/dialer/speeddial/res/values-eu/strings.xml
index 7d6b86e..30f47c6 100644
--- a/java/com/android/dialer/speeddial/res/values-eu/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-eu/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Aukeratu dei mota</string>
   <string name="disambig_option_video_call">Bideo-deia</string>
   <string name="disambig_option_voice_call">Deitu</string>
-  <string name="add_favorite_activity_title">Gehitu gogokoa</string>
   <string name="contact_menu_voice_call">Ahots-deia</string>
   <string name="contact_menu_video_call">Bideo-deia</string>
   <string name="contact_menu_message">Mezua</string>
diff --git a/java/com/android/dialer/speeddial/res/values-fa/strings.xml b/java/com/android/dialer/speeddial/res/values-fa/strings.xml
index b35788c..432475a 100644
--- a/java/com/android/dialer/speeddial/res/values-fa/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-fa/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">انتخاب نوع تماس</string>
   <string name="disambig_option_video_call">تماس ویدیویی</string>
   <string name="disambig_option_voice_call">تماس</string>
-  <string name="add_favorite_activity_title">افزودن مورد دلخواه</string>
   <string name="contact_menu_voice_call">تماس صوتی</string>
   <string name="contact_menu_video_call">تماس ویدیویی</string>
   <string name="contact_menu_message">پیام</string>
diff --git a/java/com/android/dialer/speeddial/res/values-fi/strings.xml b/java/com/android/dialer/speeddial/res/values-fi/strings.xml
index 679806e..cb801cb 100644
--- a/java/com/android/dialer/speeddial/res/values-fi/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-fi/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Valitse puhelutyyppi</string>
   <string name="disambig_option_video_call">Videopuhelu</string>
   <string name="disambig_option_voice_call">Soita</string>
-  <string name="add_favorite_activity_title">Lisää suosikki</string>
   <string name="contact_menu_voice_call">Äänipuhelu</string>
   <string name="contact_menu_video_call">Videopuhelu</string>
   <string name="contact_menu_message">Viesti</string>
diff --git a/java/com/android/dialer/speeddial/res/values-fr-rCA/strings.xml b/java/com/android/dialer/speeddial/res/values-fr-rCA/strings.xml
index 12cc511..b3fd325 100644
--- a/java/com/android/dialer/speeddial/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-fr-rCA/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Choisir le type d\'appel</string>
   <string name="disambig_option_video_call">Appel vidéo</string>
   <string name="disambig_option_voice_call">Appeler</string>
-  <string name="add_favorite_activity_title">Ajoutez un favori</string>
   <string name="contact_menu_voice_call">Appel vocal</string>
   <string name="contact_menu_video_call">Appel vidéo</string>
   <string name="contact_menu_message">Message</string>
diff --git a/java/com/android/dialer/speeddial/res/values-fr/strings.xml b/java/com/android/dialer/speeddial/res/values-fr/strings.xml
index 89194f7..d632225 100644
--- a/java/com/android/dialer/speeddial/res/values-fr/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-fr/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Choisir un type d\'appel</string>
   <string name="disambig_option_video_call">Appel vidéo</string>
   <string name="disambig_option_voice_call">Appel</string>
-  <string name="add_favorite_activity_title">Ajouter aux favoris</string>
   <string name="contact_menu_voice_call">Appel audio</string>
   <string name="contact_menu_video_call">Appel vidéo</string>
   <string name="contact_menu_message">Message</string>
diff --git a/java/com/android/dialer/speeddial/res/values-gl/strings.xml b/java/com/android/dialer/speeddial/res/values-gl/strings.xml
index 9855624..bbf22a1 100644
--- a/java/com/android/dialer/speeddial/res/values-gl/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-gl/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Escoller tipo de chamada</string>
   <string name="disambig_option_video_call">Videochamada</string>
   <string name="disambig_option_voice_call">Chamar</string>
-  <string name="add_favorite_activity_title">Engade un contacto a favoritos</string>
   <string name="contact_menu_voice_call">Chamada de voz</string>
   <string name="contact_menu_video_call">Videochamada</string>
   <string name="contact_menu_message">Mensaxe</string>
diff --git a/java/com/android/dialer/speeddial/res/values-gu/strings.xml b/java/com/android/dialer/speeddial/res/values-gu/strings.xml
index 60d3635..233bd5e 100644
--- a/java/com/android/dialer/speeddial/res/values-gu/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-gu/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">કૉલનો પ્રકાર પસંદ કરો</string>
   <string name="disambig_option_video_call">વીડિઓ કૉલ</string>
   <string name="disambig_option_voice_call">કૉલ</string>
-  <string name="add_favorite_activity_title">મનપસંદ ઉમેરો</string>
   <string name="contact_menu_voice_call">વૉઇસ કૉલ</string>
   <string name="contact_menu_video_call">વીડિઓ કૉલ</string>
   <string name="contact_menu_message">સંદેશ</string>
diff --git a/java/com/android/dialer/speeddial/res/values-hi/strings.xml b/java/com/android/dialer/speeddial/res/values-hi/strings.xml
index 9d18fa0..d98dd58 100644
--- a/java/com/android/dialer/speeddial/res/values-hi/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-hi/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">कॉल का प्रकार चुनें</string>
   <string name="disambig_option_video_call">वीडियो कॉल</string>
   <string name="disambig_option_voice_call">कॉल करें</string>
-  <string name="add_favorite_activity_title">पसंदीदा जोड़ें</string>
   <string name="contact_menu_voice_call">वॉइस कॉल करें</string>
   <string name="contact_menu_video_call">वीडियो कॉल करें</string>
   <string name="contact_menu_message">मैसेज भेजें</string>
diff --git a/java/com/android/dialer/speeddial/res/values-hr/strings.xml b/java/com/android/dialer/speeddial/res/values-hr/strings.xml
index 7294d83..0fd3108 100644
--- a/java/com/android/dialer/speeddial/res/values-hr/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-hr/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Odabir vrste poziva</string>
   <string name="disambig_option_video_call">Videopoziv</string>
   <string name="disambig_option_voice_call">Poziv</string>
-  <string name="add_favorite_activity_title">Dodavanje omiljenih konataka</string>
   <string name="contact_menu_voice_call">Glasovni poziv</string>
   <string name="contact_menu_video_call">Videopoziv</string>
   <string name="contact_menu_message">Poruka</string>
diff --git a/java/com/android/dialer/speeddial/res/values-hu/strings.xml b/java/com/android/dialer/speeddial/res/values-hu/strings.xml
index 8ed77bb..1c30879 100644
--- a/java/com/android/dialer/speeddial/res/values-hu/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-hu/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Hívás típusának kiválasztása</string>
   <string name="disambig_option_video_call">Videohívás</string>
   <string name="disambig_option_voice_call">Hívás</string>
-  <string name="add_favorite_activity_title">Felvétel a kedvencek közé</string>
   <string name="contact_menu_voice_call">Hanghívás</string>
   <string name="contact_menu_video_call">Videohívás</string>
   <string name="contact_menu_message">Üzenet</string>
diff --git a/java/com/android/dialer/speeddial/res/values-hy/strings.xml b/java/com/android/dialer/speeddial/res/values-hy/strings.xml
index 2e3d15a..8e07d72 100644
--- a/java/com/android/dialer/speeddial/res/values-hy/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-hy/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Ընտրեք զանգի տեսակը</string>
   <string name="disambig_option_video_call">Տեսազանգ</string>
   <string name="disambig_option_voice_call">Զանգ</string>
-  <string name="add_favorite_activity_title">Ընտրեք կոնտակտ՝ ընտրանիում ավելացնելու համար</string>
   <string name="contact_menu_voice_call">Զանգ</string>
   <string name="contact_menu_video_call">Տեսազանգ</string>
   <string name="contact_menu_message">SMS</string>
diff --git a/java/com/android/dialer/speeddial/res/values-in/strings.xml b/java/com/android/dialer/speeddial/res/values-in/strings.xml
index 9f72e8d..6e5f415 100644
--- a/java/com/android/dialer/speeddial/res/values-in/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-in/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Pilih jenis panggilan</string>
   <string name="disambig_option_video_call">Video call</string>
   <string name="disambig_option_voice_call">Panggil</string>
-  <string name="add_favorite_activity_title">Tambahkan Favorit</string>
   <string name="contact_menu_voice_call">Panggilan Suara</string>
   <string name="contact_menu_video_call">Video Call</string>
   <string name="contact_menu_message">Pesan</string>
diff --git a/java/com/android/dialer/speeddial/res/values-is/strings.xml b/java/com/android/dialer/speeddial/res/values-is/strings.xml
index 4073603..2506c2c 100644
--- a/java/com/android/dialer/speeddial/res/values-is/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-is/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Veldu gerð símtals</string>
   <string name="disambig_option_video_call">Myndsímtal</string>
   <string name="disambig_option_voice_call">Símtal</string>
-  <string name="add_favorite_activity_title">Setja í eftirlæti</string>
   <string name="contact_menu_voice_call">Raddsímtal</string>
   <string name="contact_menu_video_call">Myndsímtal</string>
   <string name="contact_menu_message">Skilaboð</string>
diff --git a/java/com/android/dialer/speeddial/res/values-it/strings.xml b/java/com/android/dialer/speeddial/res/values-it/strings.xml
index b076564..61485d9 100644
--- a/java/com/android/dialer/speeddial/res/values-it/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-it/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Scegli il tipo di chiamata</string>
   <string name="disambig_option_video_call">Videochiama</string>
   <string name="disambig_option_voice_call">Chiama</string>
-  <string name="add_favorite_activity_title">Aggiungi preferito</string>
   <string name="contact_menu_voice_call">Chiamata vocale</string>
   <string name="contact_menu_video_call">Videochiamata</string>
   <string name="contact_menu_message">Invia SMS</string>
diff --git a/java/com/android/dialer/speeddial/res/values-iw/strings.xml b/java/com/android/dialer/speeddial/res/values-iw/strings.xml
index af06358..491e26c 100644
--- a/java/com/android/dialer/speeddial/res/values-iw/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-iw/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">בחירת סוג השיחה</string>
   <string name="disambig_option_video_call">שיחת וידאו</string>
   <string name="disambig_option_voice_call">שיחה</string>
-  <string name="add_favorite_activity_title">הוספה למועדפים</string>
   <string name="contact_menu_voice_call">שיחה קולית</string>
   <string name="contact_menu_video_call">שיחת וידאו</string>
   <string name="contact_menu_message">הודעה</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ja/strings.xml b/java/com/android/dialer/speeddial/res/values-ja/strings.xml
index 1e004a0..6f8653f 100644
--- a/java/com/android/dialer/speeddial/res/values-ja/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ja/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">通話タイプの選択</string>
   <string name="disambig_option_video_call">ビデオ通話</string>
   <string name="disambig_option_voice_call">音声通話</string>
-  <string name="add_favorite_activity_title">お気に入りに追加</string>
   <string name="contact_menu_voice_call">音声通話</string>
   <string name="contact_menu_video_call">ビデオ通話</string>
   <string name="contact_menu_message">SMS</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ka/strings.xml b/java/com/android/dialer/speeddial/res/values-ka/strings.xml
index 8c0eda1..24c33aa 100644
--- a/java/com/android/dialer/speeddial/res/values-ka/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ka/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">აირჩიეთ ზარის ტიპი</string>
   <string name="disambig_option_video_call">ვიდეოზარი</string>
   <string name="disambig_option_voice_call">ზარი</string>
-  <string name="add_favorite_activity_title">რჩეულის დამატება</string>
   <string name="contact_menu_voice_call">ხმოვანი ზარი</string>
   <string name="contact_menu_video_call">ვიდეოზარი</string>
   <string name="contact_menu_message">შეტყობინება</string>
diff --git a/java/com/android/dialer/speeddial/res/values-kk/strings.xml b/java/com/android/dialer/speeddial/res/values-kk/strings.xml
index 31f8670..44c990a 100644
--- a/java/com/android/dialer/speeddial/res/values-kk/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-kk/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Қоңырау түрін таңдаңыз</string>
   <string name="disambig_option_video_call">Бейне қоңырау</string>
   <string name="disambig_option_voice_call">Қоңырау шалу</string>
-  <string name="add_favorite_activity_title">Таңдаулылар тізіміне жаңа контакт қосу</string>
   <string name="contact_menu_voice_call">Дауыстық қоңырау</string>
   <string name="contact_menu_video_call">Бейне қоңырау</string>
   <string name="contact_menu_message">Хабар</string>
diff --git a/java/com/android/dialer/speeddial/res/values-km/strings.xml b/java/com/android/dialer/speeddial/res/values-km/strings.xml
index ea4c035..ac9c927 100644
--- a/java/com/android/dialer/speeddial/res/values-km/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-km/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">ជ្រើសរើស​ប្រភេទ​ទាំងអស់</string>
   <string name="disambig_option_video_call">ការ​ហៅជា​វីដេអូ</string>
   <string name="disambig_option_voice_call">ហៅទូរសព្ទ</string>
-  <string name="add_favorite_activity_title">បញ្ចូល​សំណព្វ</string>
   <string name="contact_menu_voice_call">ការហៅ​ជា​សំឡេង</string>
   <string name="contact_menu_video_call">ការ​ហៅជាវីដេអូ</string>
   <string name="contact_menu_message">សារ</string>
diff --git a/java/com/android/dialer/speeddial/res/values-kn/strings.xml b/java/com/android/dialer/speeddial/res/values-kn/strings.xml
index 26607d5..c7b525c 100644
--- a/java/com/android/dialer/speeddial/res/values-kn/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-kn/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">ಕರೆ ಪ್ರಕಾರವನ್ನು ಆಯ್ಕೆಮಾಡಿ</string>
   <string name="disambig_option_video_call">ವೀಡಿಯೊ ಕರೆ</string>
   <string name="disambig_option_voice_call">ಕರೆ</string>
-  <string name="add_favorite_activity_title">ಮೆಚ್ಚಿನದನ್ನು ಸೇರಿಸಿ</string>
   <string name="contact_menu_voice_call">ಧ್ವನಿ ಕರೆ</string>
   <string name="contact_menu_video_call">ವೀಡಿಯೊ ಕರೆ</string>
   <string name="contact_menu_message">ಸಂದೇಶ</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ko/strings.xml b/java/com/android/dialer/speeddial/res/values-ko/strings.xml
index 7613be2..6b09ca2 100644
--- a/java/com/android/dialer/speeddial/res/values-ko/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ko/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">통화 유형 선택</string>
   <string name="disambig_option_video_call">화상 통화 걸기</string>
   <string name="disambig_option_voice_call">전화 걸기</string>
-  <string name="add_favorite_activity_title">즐겨찾기에 추가</string>
   <string name="contact_menu_voice_call">음성 통화</string>
   <string name="contact_menu_video_call">화상 통화</string>
   <string name="contact_menu_message">메시지</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ky/strings.xml b/java/com/android/dialer/speeddial/res/values-ky/strings.xml
index 91d81e3..a38a7fc 100644
--- a/java/com/android/dialer/speeddial/res/values-ky/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ky/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Чалуу түрүн тандоо</string>
   <string name="disambig_option_video_call">Видео чалуу</string>
   <string name="disambig_option_voice_call">Чалуу</string>
-  <string name="add_favorite_activity_title">Сүйүктүүлөрдү кошуу</string>
   <string name="contact_menu_voice_call">Үн чалуу</string>
   <string name="contact_menu_video_call">Видео чалуу</string>
   <string name="contact_menu_message">Билдирүү</string>
diff --git a/java/com/android/dialer/speeddial/res/values-lo/strings.xml b/java/com/android/dialer/speeddial/res/values-lo/strings.xml
index 08efdfb..3dd8194 100644
--- a/java/com/android/dialer/speeddial/res/values-lo/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-lo/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">ເລືອກປະເພດການໂທ</string>
   <string name="disambig_option_video_call">ໂທດ້ວຍວິດີໂອ</string>
   <string name="disambig_option_voice_call">ໂທ</string>
-  <string name="add_favorite_activity_title">ເພີ່ມລາຍການທີ່ມັກ</string>
   <string name="contact_menu_voice_call">ການໂທດ້ວຍສຽງ</string>
   <string name="contact_menu_video_call">ໂທດ້ວຍວິດີໂອ</string>
   <string name="contact_menu_message">ຂໍ້ຄວາມ</string>
diff --git a/java/com/android/dialer/speeddial/res/values-lt/strings.xml b/java/com/android/dialer/speeddial/res/values-lt/strings.xml
index 077d8ae..fa5707d 100644
--- a/java/com/android/dialer/speeddial/res/values-lt/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-lt/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Pasirinkite skambučio tipą</string>
   <string name="disambig_option_video_call">Vaizdo skamb.</string>
   <string name="disambig_option_voice_call">Skambinti</string>
-  <string name="add_favorite_activity_title">Įtraukti į mėgstamiausius</string>
   <string name="contact_menu_voice_call">Balso skambutis</string>
   <string name="contact_menu_video_call">Vaizdo skamb.</string>
   <string name="contact_menu_message">Pranešimas</string>
diff --git a/java/com/android/dialer/speeddial/res/values-lv/strings.xml b/java/com/android/dialer/speeddial/res/values-lv/strings.xml
index e98cd05..58a960e 100644
--- a/java/com/android/dialer/speeddial/res/values-lv/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-lv/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Zvana veida izvēle</string>
   <string name="disambig_option_video_call">Videozvans</string>
   <string name="disambig_option_voice_call">Zvans</string>
-  <string name="add_favorite_activity_title">Pievienošana izlasei</string>
   <string name="contact_menu_voice_call">Balss zvans</string>
   <string name="contact_menu_video_call">Videozvans</string>
   <string name="contact_menu_message">Īsziņa</string>
diff --git a/java/com/android/dialer/speeddial/res/values-mk/strings.xml b/java/com/android/dialer/speeddial/res/values-mk/strings.xml
index 9a1f3e9..6c41999 100644
--- a/java/com/android/dialer/speeddial/res/values-mk/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-mk/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Изберете тип повик</string>
   <string name="disambig_option_video_call">Видеоповик</string>
   <string name="disambig_option_voice_call">Повикај</string>
-  <string name="add_favorite_activity_title">Додавање во омилени</string>
   <string name="contact_menu_voice_call">Гласовен повик</string>
   <string name="contact_menu_video_call">Видеоповик</string>
   <string name="contact_menu_message">Порака</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ml/strings.xml b/java/com/android/dialer/speeddial/res/values-ml/strings.xml
index eec847e..2746035 100644
--- a/java/com/android/dialer/speeddial/res/values-ml/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ml/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">കോൾ തരം തിരഞ്ഞെടുക്കുക</string>
   <string name="disambig_option_video_call">വീഡിയോ കോള്‍</string>
   <string name="disambig_option_voice_call">വിളിക്കുക</string>
-  <string name="add_favorite_activity_title">പ്രിയപ്പെട്ടവ ചേർക്കുക</string>
   <string name="contact_menu_voice_call">വോയ്‌സ് കോള്‍‌</string>
   <string name="contact_menu_video_call">വീഡിയോ കോള്‍</string>
   <string name="contact_menu_message">സന്ദേശം</string>
diff --git a/java/com/android/dialer/speeddial/res/values-mn/strings.xml b/java/com/android/dialer/speeddial/res/values-mn/strings.xml
index fa7f247..6790163 100644
--- a/java/com/android/dialer/speeddial/res/values-mn/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-mn/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Дуудлагын төрөл сонгох</string>
   <string name="disambig_option_video_call">Видео дуудлага</string>
   <string name="disambig_option_voice_call">Залгах</string>
-  <string name="add_favorite_activity_title">Дуртай хүмүүст нэмэх</string>
   <string name="contact_menu_voice_call">Дуудлага</string>
   <string name="contact_menu_video_call">Видео дуудлага</string>
   <string name="contact_menu_message">Зурвас</string>
diff --git a/java/com/android/dialer/speeddial/res/values-mr/strings.xml b/java/com/android/dialer/speeddial/res/values-mr/strings.xml
index f43e7da..9ef37df 100644
--- a/java/com/android/dialer/speeddial/res/values-mr/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-mr/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">कॉल प्रकार निवडा</string>
   <string name="disambig_option_video_call">व्हिडिओ कॉल</string>
   <string name="disambig_option_voice_call">कॉल करा</string>
-  <string name="add_favorite_activity_title">मनपसंत जोडा</string>
   <string name="contact_menu_voice_call">व्हॉइस कॉल</string>
   <string name="contact_menu_video_call">व्हिडिओ कॉल</string>
   <string name="contact_menu_message">मेसेज</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ms/strings.xml b/java/com/android/dialer/speeddial/res/values-ms/strings.xml
index 6e24ccf..a7ffd17 100644
--- a/java/com/android/dialer/speeddial/res/values-ms/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ms/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Pilih jenis panggilan</string>
   <string name="disambig_option_video_call">Panggilan video</string>
   <string name="disambig_option_voice_call">Panggil</string>
-  <string name="add_favorite_activity_title">Tambah Kegemaran</string>
   <string name="contact_menu_voice_call">Panggilan Suara</string>
   <string name="contact_menu_video_call">Panggilan Video</string>
   <string name="contact_menu_message">Mesej</string>
diff --git a/java/com/android/dialer/speeddial/res/values-my/strings.xml b/java/com/android/dialer/speeddial/res/values-my/strings.xml
index e56690a..48c3d2f 100644
--- a/java/com/android/dialer/speeddial/res/values-my/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-my/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">ခေါ်ဆိုမှု အမျိုးအစားကို ရွေးချယ်ပါ</string>
   <string name="disambig_option_video_call">ဗီဒီယိုခေါ်ရန်</string>
   <string name="disambig_option_voice_call">ဖုန်းခေါ်ရန်</string>
-  <string name="add_favorite_activity_title">အကြိုက်ဆုံးအဖြစ် ထည့်ခြင်း</string>
   <string name="contact_menu_voice_call">အသံခေါ်ဆိုမှု</string>
   <string name="contact_menu_video_call">ဗီဒီယိုခေါ်ဆိုမှု</string>
   <string name="contact_menu_message">မက်ဆေ့ဂျ်</string>
diff --git a/java/com/android/dialer/speeddial/res/values-nb/strings.xml b/java/com/android/dialer/speeddial/res/values-nb/strings.xml
index ac666ee..8b3a1df 100644
--- a/java/com/android/dialer/speeddial/res/values-nb/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-nb/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Velg anropstype</string>
   <string name="disambig_option_video_call">Ring med video</string>
   <string name="disambig_option_voice_call">Ring</string>
-  <string name="add_favorite_activity_title">Legg til favoritt</string>
   <string name="contact_menu_voice_call">Taleanrop</string>
   <string name="contact_menu_video_call">Videoanrop</string>
   <string name="contact_menu_message">Melding</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ne/strings.xml b/java/com/android/dialer/speeddial/res/values-ne/strings.xml
index 103bea3..35d619c 100644
--- a/java/com/android/dialer/speeddial/res/values-ne/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ne/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">कलको प्रकार छनौट गर्नुहोस्</string>
   <string name="disambig_option_video_call">भिडियो कल</string>
   <string name="disambig_option_voice_call">कल</string>
-  <string name="add_favorite_activity_title">मनपर्नेमा थप्नुहोस्</string>
   <string name="contact_menu_voice_call">भ्वाइस कल</string>
   <string name="contact_menu_video_call">भिडियो कल</string>
   <string name="contact_menu_message">सन्देश</string>
diff --git a/java/com/android/dialer/speeddial/res/values-nl/strings.xml b/java/com/android/dialer/speeddial/res/values-nl/strings.xml
index 8d97b1b..a737463 100644
--- a/java/com/android/dialer/speeddial/res/values-nl/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-nl/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Oproeptype kiezen</string>
   <string name="disambig_option_video_call">Videogesprek</string>
   <string name="disambig_option_voice_call">Bellen</string>
-  <string name="add_favorite_activity_title">Favoriet toevoegen</string>
   <string name="contact_menu_voice_call">Spraakbericht</string>
   <string name="contact_menu_video_call">Videogesprek</string>
   <string name="contact_menu_message">Bericht</string>
diff --git a/java/com/android/dialer/speeddial/res/values-no/strings.xml b/java/com/android/dialer/speeddial/res/values-no/strings.xml
index ac666ee..8b3a1df 100644
--- a/java/com/android/dialer/speeddial/res/values-no/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-no/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Velg anropstype</string>
   <string name="disambig_option_video_call">Ring med video</string>
   <string name="disambig_option_voice_call">Ring</string>
-  <string name="add_favorite_activity_title">Legg til favoritt</string>
   <string name="contact_menu_voice_call">Taleanrop</string>
   <string name="contact_menu_video_call">Videoanrop</string>
   <string name="contact_menu_message">Melding</string>
diff --git a/java/com/android/dialer/speeddial/res/values-pa/strings.xml b/java/com/android/dialer/speeddial/res/values-pa/strings.xml
index 8b25fbe..7114283 100644
--- a/java/com/android/dialer/speeddial/res/values-pa/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-pa/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">ਕਾਲ ਦੀ ਕਿਸਮ ਚੁਣੋ</string>
   <string name="disambig_option_video_call">ਵੀਡੀਓ ਕਾਲ</string>
   <string name="disambig_option_voice_call">ਕਾਲ ਕਰੋ</string>
-  <string name="add_favorite_activity_title">ਮਨਪਸੰਦ ਵਜੋਂ ਸ਼ਾਮਲ ਕਰੋ</string>
   <string name="contact_menu_voice_call">ਅਵਾਜ਼ੀ ਕਾਲ ਕਰੋ</string>
   <string name="contact_menu_video_call">ਵੀਡੀਓ ਕਾਲ ਕਰੋ</string>
   <string name="contact_menu_message">ਸੁਨੇਹਾ ਭੇਜੋ</string>
diff --git a/java/com/android/dialer/speeddial/res/values-pl/strings.xml b/java/com/android/dialer/speeddial/res/values-pl/strings.xml
index e799827..05a4331 100644
--- a/java/com/android/dialer/speeddial/res/values-pl/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-pl/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Wybierz typ połączenia</string>
   <string name="disambig_option_video_call">Rozmowa wideo</string>
   <string name="disambig_option_voice_call">Zadzwoń</string>
-  <string name="add_favorite_activity_title">Dodaj do ulubionych</string>
   <string name="contact_menu_voice_call">Rozmowa głosowa</string>
   <string name="contact_menu_video_call">Rozmowa wideo</string>
   <string name="contact_menu_message">SMS</string>
diff --git a/java/com/android/dialer/speeddial/res/values-pt-rBR/strings.xml b/java/com/android/dialer/speeddial/res/values-pt-rBR/strings.xml
index f30b5a6..d530ba7 100644
--- a/java/com/android/dialer/speeddial/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-pt-rBR/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Escolher o tipo de chamada</string>
   <string name="disambig_option_video_call">Videochamada</string>
   <string name="disambig_option_voice_call">Ligar</string>
-  <string name="add_favorite_activity_title">Adicione como favorito</string>
   <string name="contact_menu_voice_call">Chamada de voz</string>
   <string name="contact_menu_video_call">Videochamada</string>
   <string name="contact_menu_message">Mensagem</string>
diff --git a/java/com/android/dialer/speeddial/res/values-pt-rPT/strings.xml b/java/com/android/dialer/speeddial/res/values-pt-rPT/strings.xml
index 3c839ff..9d566a6 100644
--- a/java/com/android/dialer/speeddial/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-pt-rPT/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Escolha o tipo de chamada</string>
   <string name="disambig_option_video_call">Videochamada</string>
   <string name="disambig_option_voice_call">Ligar</string>
-  <string name="add_favorite_activity_title">Adicionar favorito</string>
   <string name="contact_menu_voice_call">Chamada de Voz</string>
   <string name="contact_menu_video_call">Videochamada</string>
   <string name="contact_menu_message">Mensagem</string>
diff --git a/java/com/android/dialer/speeddial/res/values-pt/strings.xml b/java/com/android/dialer/speeddial/res/values-pt/strings.xml
index f30b5a6..d530ba7 100644
--- a/java/com/android/dialer/speeddial/res/values-pt/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-pt/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Escolher o tipo de chamada</string>
   <string name="disambig_option_video_call">Videochamada</string>
   <string name="disambig_option_voice_call">Ligar</string>
-  <string name="add_favorite_activity_title">Adicione como favorito</string>
   <string name="contact_menu_voice_call">Chamada de voz</string>
   <string name="contact_menu_video_call">Videochamada</string>
   <string name="contact_menu_message">Mensagem</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ro/strings.xml b/java/com/android/dialer/speeddial/res/values-ro/strings.xml
index 2891637..9fab6a2 100644
--- a/java/com/android/dialer/speeddial/res/values-ro/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ro/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Alegeți tipul de apel</string>
   <string name="disambig_option_video_call">Apel video</string>
   <string name="disambig_option_voice_call">Apelați</string>
-  <string name="add_favorite_activity_title">Adăugați la preferate</string>
   <string name="contact_menu_voice_call">Apel vocal</string>
   <string name="contact_menu_video_call">Apel video</string>
   <string name="contact_menu_message">Mesaj</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ru/strings.xml b/java/com/android/dialer/speeddial/res/values-ru/strings.xml
index 0b8e6be..15d34a2 100644
--- a/java/com/android/dialer/speeddial/res/values-ru/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ru/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Укажите тип вызова</string>
   <string name="disambig_option_video_call">Начать видеочат</string>
   <string name="disambig_option_voice_call">Позвонить</string>
-  <string name="add_favorite_activity_title">Добавьте в избранные</string>
   <string name="contact_menu_voice_call">Голосовой вызов</string>
   <string name="contact_menu_video_call">Видеовызов</string>
   <string name="contact_menu_message">Написать</string>
diff --git a/java/com/android/dialer/speeddial/res/values-si/strings.xml b/java/com/android/dialer/speeddial/res/values-si/strings.xml
index a3cb616..ab2480e 100644
--- a/java/com/android/dialer/speeddial/res/values-si/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-si/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">ඇමතුම් වර්ගය තෝරන්න</string>
   <string name="disambig_option_video_call">වීඩියෝ ඇමතුම</string>
   <string name="disambig_option_voice_call">අමතන්න</string>
-  <string name="add_favorite_activity_title">ප්‍රියතම දේ එක් කරන්න</string>
   <string name="contact_menu_voice_call">හඬ ඇමතුම</string>
   <string name="contact_menu_video_call">වීඩියෝ ඇමතුම</string>
   <string name="contact_menu_message">පණිවිඩය</string>
diff --git a/java/com/android/dialer/speeddial/res/values-sk/strings.xml b/java/com/android/dialer/speeddial/res/values-sk/strings.xml
index e30fc45..6cc9541 100644
--- a/java/com/android/dialer/speeddial/res/values-sk/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-sk/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Vyberte typ hovoru</string>
   <string name="disambig_option_video_call">Videohovor</string>
   <string name="disambig_option_voice_call">Volať</string>
-  <string name="add_favorite_activity_title">Pridajte obľúbený kontakt</string>
   <string name="contact_menu_voice_call">Hlasový hovor</string>
   <string name="contact_menu_video_call">Videohovor</string>
   <string name="contact_menu_message">Správa</string>
diff --git a/java/com/android/dialer/speeddial/res/values-sl/strings.xml b/java/com/android/dialer/speeddial/res/values-sl/strings.xml
index 0c7982a..2a6f613 100644
--- a/java/com/android/dialer/speeddial/res/values-sl/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-sl/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Izberite vrsto klica</string>
   <string name="disambig_option_video_call">Videoklic</string>
   <string name="disambig_option_voice_call">Klic</string>
-  <string name="add_favorite_activity_title">Dodajte med priljubljene</string>
   <string name="contact_menu_voice_call">Glasovni klic</string>
   <string name="contact_menu_video_call">Videoklic</string>
   <string name="contact_menu_message">Sporočilo</string>
diff --git a/java/com/android/dialer/speeddial/res/values-sq/strings.xml b/java/com/android/dialer/speeddial/res/values-sq/strings.xml
index 8fa0ff2..06fc2dc 100644
--- a/java/com/android/dialer/speeddial/res/values-sq/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-sq/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Zgjidh llojin e telefonatës</string>
   <string name="disambig_option_video_call">Telefono me video</string>
   <string name="disambig_option_voice_call">Telefono</string>
-  <string name="add_favorite_activity_title">Shto si të preferuar</string>
   <string name="contact_menu_voice_call">Tel. zanore</string>
   <string name="contact_menu_video_call">Tel. me video</string>
   <string name="contact_menu_message">Mesazh</string>
diff --git a/java/com/android/dialer/speeddial/res/values-sr/strings.xml b/java/com/android/dialer/speeddial/res/values-sr/strings.xml
index 1a5324e..28cbf5b 100644
--- a/java/com/android/dialer/speeddial/res/values-sr/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-sr/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Изаберите тип позива</string>
   <string name="disambig_option_video_call">Видео позив</string>
   <string name="disambig_option_voice_call">Позови</string>
-  <string name="add_favorite_activity_title">Додајте омиљени контакт</string>
   <string name="contact_menu_voice_call">Аудио позив</string>
   <string name="contact_menu_video_call">Видео позив</string>
   <string name="contact_menu_message">Пошаљи SMS</string>
diff --git a/java/com/android/dialer/speeddial/res/values-sv/strings.xml b/java/com/android/dialer/speeddial/res/values-sv/strings.xml
index 6b893a6..d5df2e1 100644
--- a/java/com/android/dialer/speeddial/res/values-sv/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-sv/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Välj samtalstyp</string>
   <string name="disambig_option_video_call">Videosamtal</string>
   <string name="disambig_option_voice_call">Ring</string>
-  <string name="add_favorite_activity_title">Lägg till favorit</string>
   <string name="contact_menu_voice_call">Röstsamtal</string>
   <string name="contact_menu_video_call">Videosamtal</string>
   <string name="contact_menu_message">Skicka sms</string>
diff --git a/java/com/android/dialer/speeddial/res/values-sw/strings.xml b/java/com/android/dialer/speeddial/res/values-sw/strings.xml
index 65f000b..ed2019c 100644
--- a/java/com/android/dialer/speeddial/res/values-sw/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-sw/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Chagua aina ya simu</string>
   <string name="disambig_option_video_call">Simu ya video</string>
   <string name="disambig_option_voice_call">Simu</string>
-  <string name="add_favorite_activity_title">Ongeza Kipendwa</string>
   <string name="contact_menu_voice_call">Simu ya Sauti</string>
   <string name="contact_menu_video_call">Simu ya Video</string>
   <string name="contact_menu_message">SMS</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ta/strings.xml b/java/com/android/dialer/speeddial/res/values-ta/strings.xml
index dc44272..12afb77 100644
--- a/java/com/android/dialer/speeddial/res/values-ta/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ta/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">அழைப்பு வகையைத் தேர்வுசெய்யவும்</string>
   <string name="disambig_option_video_call">வீடியோவில் அழை</string>
   <string name="disambig_option_voice_call">அழை</string>
-  <string name="add_favorite_activity_title">பிடித்தவர்களில் சேர்</string>
   <string name="contact_menu_voice_call">குரல் அழைப்பு</string>
   <string name="contact_menu_video_call">வீடியோ அழைப்பு</string>
   <string name="contact_menu_message">செய்தி</string>
diff --git a/java/com/android/dialer/speeddial/res/values-te/strings.xml b/java/com/android/dialer/speeddial/res/values-te/strings.xml
index 3a0c0f5..9478a13 100644
--- a/java/com/android/dialer/speeddial/res/values-te/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-te/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">కాల్ రకాన్ని ఎంచుకోండి</string>
   <string name="disambig_option_video_call">వీడియో కాల్</string>
   <string name="disambig_option_voice_call">కాల్</string>
-  <string name="add_favorite_activity_title">ఇష్టమైనది జోడించండి</string>
   <string name="contact_menu_voice_call">వాయిస్ కాల్</string>
   <string name="contact_menu_video_call">వీడియో కాల్</string>
   <string name="contact_menu_message">సందేశం</string>
diff --git a/java/com/android/dialer/speeddial/res/values-th/strings.xml b/java/com/android/dialer/speeddial/res/values-th/strings.xml
index 8c4577f..d9fff85 100644
--- a/java/com/android/dialer/speeddial/res/values-th/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-th/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">เลือกประเภทการโทร</string>
   <string name="disambig_option_video_call">วิดีโอคอล</string>
   <string name="disambig_option_voice_call">โทร</string>
-  <string name="add_favorite_activity_title">เพิ่มรายการโปรด</string>
   <string name="contact_menu_voice_call">การโทรด้วยเสียง</string>
   <string name="contact_menu_video_call">วิดีโอคอล</string>
   <string name="contact_menu_message">ข้อความ</string>
diff --git a/java/com/android/dialer/speeddial/res/values-tl/strings.xml b/java/com/android/dialer/speeddial/res/values-tl/strings.xml
index c44051d..b4e8069 100644
--- a/java/com/android/dialer/speeddial/res/values-tl/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-tl/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Piliin ang uri ng tawag</string>
   <string name="disambig_option_video_call">Video call</string>
   <string name="disambig_option_voice_call">Tawag</string>
-  <string name="add_favorite_activity_title">Magdagdag ng Paborito</string>
   <string name="contact_menu_voice_call">Voice Call</string>
   <string name="contact_menu_video_call">Video Call</string>
   <string name="contact_menu_message">Mensahe</string>
diff --git a/java/com/android/dialer/speeddial/res/values-tr/strings.xml b/java/com/android/dialer/speeddial/res/values-tr/strings.xml
index 288a2aa..29859c3 100644
--- a/java/com/android/dialer/speeddial/res/values-tr/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-tr/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Çağrı türünü seçin</string>
   <string name="disambig_option_video_call">Görünt. görüşm.</string>
   <string name="disambig_option_voice_call">Telefon et</string>
-  <string name="add_favorite_activity_title">Favori ekleyin</string>
   <string name="contact_menu_voice_call">Sesli Çağrı</string>
   <string name="contact_menu_video_call">Görüntülü Çağrı</string>
   <string name="contact_menu_message">Mesaj</string>
diff --git a/java/com/android/dialer/speeddial/res/values-uk/strings.xml b/java/com/android/dialer/speeddial/res/values-uk/strings.xml
index 475f44a..0bdaf3a 100644
--- a/java/com/android/dialer/speeddial/res/values-uk/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-uk/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Виберіть тип виклику</string>
   <string name="disambig_option_video_call">Відеодзвінок</string>
   <string name="disambig_option_voice_call">Дзвінок</string>
-  <string name="add_favorite_activity_title">Додайте до вибраного</string>
   <string name="contact_menu_voice_call">Голос. дзвінок</string>
   <string name="contact_menu_video_call">Відеодзвінок</string>
   <string name="contact_menu_message">Повідомлення</string>
diff --git a/java/com/android/dialer/speeddial/res/values-ur/strings.xml b/java/com/android/dialer/speeddial/res/values-ur/strings.xml
index 049fccc..af760c5 100644
--- a/java/com/android/dialer/speeddial/res/values-ur/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-ur/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">کال کی قسم منتخب کریں</string>
   <string name="disambig_option_video_call">ویڈیو کال کریں</string>
   <string name="disambig_option_voice_call">کال کریں</string>
-  <string name="add_favorite_activity_title">پسندیدہ شامل کریں</string>
   <string name="contact_menu_voice_call">صوتی کال کریں</string>
   <string name="contact_menu_video_call">ویڈیو کال کریں</string>
   <string name="contact_menu_message">پیغام بھیجیں</string>
diff --git a/java/com/android/dialer/speeddial/res/values-uz/strings.xml b/java/com/android/dialer/speeddial/res/values-uz/strings.xml
index 3948181..bbe5b9a 100644
--- a/java/com/android/dialer/speeddial/res/values-uz/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-uz/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Chaqiruv turini tanlang</string>
   <string name="disambig_option_video_call">Video chaqiruv</string>
   <string name="disambig_option_voice_call">Ovozli chaqiruv</string>
-  <string name="add_favorite_activity_title">Sevimlilarga qo‘shing</string>
   <string name="contact_menu_voice_call">Ovozli chaqiruv</string>
   <string name="contact_menu_video_call">Video chaqiruv</string>
   <string name="contact_menu_message">Xabar yozish</string>
diff --git a/java/com/android/dialer/speeddial/res/values-vi/strings.xml b/java/com/android/dialer/speeddial/res/values-vi/strings.xml
index 97949b5..2426cff 100644
--- a/java/com/android/dialer/speeddial/res/values-vi/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-vi/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Chọn loại cuộc gọi</string>
   <string name="disambig_option_video_call">Gọi điện video</string>
   <string name="disambig_option_voice_call">Gọi</string>
-  <string name="add_favorite_activity_title">Thêm liên hệ yêu thích</string>
   <string name="contact_menu_voice_call">Cuộc gọi thoại</string>
   <string name="contact_menu_video_call">Gọi điện video</string>
   <string name="contact_menu_message">Tin nhắn</string>
diff --git a/java/com/android/dialer/speeddial/res/values-zh-rCN/strings.xml b/java/com/android/dialer/speeddial/res/values-zh-rCN/strings.xml
index a785d7c..30c081c 100644
--- a/java/com/android/dialer/speeddial/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-zh-rCN/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">选择通话类型</string>
   <string name="disambig_option_video_call">视频通话</string>
   <string name="disambig_option_voice_call">拨打电话</string>
-  <string name="add_favorite_activity_title">收藏联系人</string>
   <string name="contact_menu_voice_call">语音呼叫</string>
   <string name="contact_menu_video_call">视频通话</string>
   <string name="contact_menu_message">短信</string>
diff --git a/java/com/android/dialer/speeddial/res/values-zh-rHK/strings.xml b/java/com/android/dialer/speeddial/res/values-zh-rHK/strings.xml
index 1adec8b..e195f2f 100644
--- a/java/com/android/dialer/speeddial/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-zh-rHK/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">選擇通話類型</string>
   <string name="disambig_option_video_call">視像通話</string>
   <string name="disambig_option_voice_call">通話</string>
-  <string name="add_favorite_activity_title">新增我的最愛</string>
   <string name="contact_menu_voice_call">語音通話</string>
   <string name="contact_menu_video_call">視像通話</string>
   <string name="contact_menu_message">訊息</string>
diff --git a/java/com/android/dialer/speeddial/res/values-zh-rTW/strings.xml b/java/com/android/dialer/speeddial/res/values-zh-rTW/strings.xml
index 58efabe..c65f05a 100644
--- a/java/com/android/dialer/speeddial/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-zh-rTW/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">選擇通話類型</string>
   <string name="disambig_option_video_call">視訊通話</string>
   <string name="disambig_option_voice_call">撥號</string>
-  <string name="add_favorite_activity_title">新增到常用聯絡人</string>
   <string name="contact_menu_voice_call">語音通話</string>
   <string name="contact_menu_video_call">視訊通話</string>
   <string name="contact_menu_message">訊息</string>
diff --git a/java/com/android/dialer/speeddial/res/values-zu/strings.xml b/java/com/android/dialer/speeddial/res/values-zu/strings.xml
index 81d2ef9..7851789 100644
--- a/java/com/android/dialer/speeddial/res/values-zu/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values-zu/strings.xml
@@ -7,7 +7,6 @@
   <string name="speed_dial_disambig_dialog_title">Khetha zonke izinhlobo</string>
   <string name="disambig_option_video_call">Ikholi yevidiyo</string>
   <string name="disambig_option_voice_call">Shaya</string>
-  <string name="add_favorite_activity_title">engeza intandokazi</string>
   <string name="contact_menu_voice_call">Ikholi yezwi</string>
   <string name="contact_menu_video_call">Ikholi Yevidiyo</string>
   <string name="contact_menu_message">Umlayezo</string>
diff --git a/java/com/android/dialer/speeddial/res/values/dimens.xml b/java/com/android/dialer/speeddial/res/values/dimens.xml
index 624c60d..f8e02c7 100644
--- a/java/com/android/dialer/speeddial/res/values/dimens.xml
+++ b/java/com/android/dialer/speeddial/res/values/dimens.xml
@@ -15,23 +15,6 @@
   ~ limitations under the License
   -->
 <resources>
-  <dimen name="scrollview_max_height">280dp</dimen>
-  <dimen name="speed_dial_context_menu_width">200dp</dimen>
-  <dimen name="context_menu_elevation">4dp</dimen>
-  <dimen name="speed_dial_recyclerview_horizontal_padding">16dp</dimen>
-
-  <!--
-   ~ This value expands the context menu to allow space for more text w/o being flush with the edge
-   ~ of the screen. Calculated with 2 * (speed_dial_recyclerview_horizontal_padding - 2dp)
-   -->
-  <dimen name="speed_dial_context_menu_extra_width">28dp</dimen>
-  <!--
-   ~ This value centers the context menu with the favorite item layout.
-   ~ Calculated with -1 * (speed_dial_context_menu_extra_width * 1.75)
-   -->
-  <dimen name="speed_dial_context_menu_x_offset">-24dp</dimen>
-  <dimen name="speed_dial_context_menu_corner_radius">16dp</dimen>
-  <dimen name="disambig_dialog_width">280dp</dimen>
   <dimen name="expanded_search_bar_height">64dp</dimen>
   <dimen name="expanded_search_bar_height_minus">-64dp</dimen>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/speeddial/res/values/strings.xml b/java/com/android/dialer/speeddial/res/values/strings.xml
index 397ec8f..2038243 100644
--- a/java/com/android/dialer/speeddial/res/values/strings.xml
+++ b/java/com/android/dialer/speeddial/res/values/strings.xml
@@ -39,9 +39,6 @@
   <!-- Text for a button that places a phone/voice call [CHAR LIMIT=15]-->
   <string name="disambig_option_voice_call">Call</string>
 
-  <!-- Title for screen prompting the user to select a contact to mark as a favorite. [CHAR LIMIT=NONE] -->
-  <string name="add_favorite_activity_title">Add Favorite</string>
-
   <!-- Text for a button that places a phone/voice call [CHAR LIMIT=15]-->
   <string name="contact_menu_voice_call">Voice Call</string>
 
@@ -74,4 +71,4 @@
 
   <!-- Text shown on a dragging target that removes the contact from favorites -->
   <string name="speed_dial_remove_favorites">Remove from favorites</string>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/speeddial/res/values/styles.xml b/java/com/android/dialer/speeddial/res/values/styles.xml
deleted file mode 100644
index 99e6e3c..0000000
--- a/java/com/android/dialer/speeddial/res/values/styles.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <style name="SpeedDialContextMenuItem" parent="SpeedDialContextMenuItem.NoDrawableTint">
-    <item name="android:drawableTint">?colorIcon</item>
-  </style>
-
-  <style name="SpeedDialContextMenuItem.NoDrawableTint" parent="Dialer.TextAppearance.Secondary">
-    <item name="android:paddingStart">12dp</item>
-    <item name="android:minHeight">48dp</item>
-    <item name="android:gravity">center_vertical</item>
-    <item name="android:drawablePadding">12dp</item>
-    <item name="android:clickable">true</item>
-    <item name="android:background">?android:attr/selectableItemBackground</item>
-  </style>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/dialer/storage/StorageComponent.java b/java/com/android/dialer/storage/StorageComponent.java
index 4754cc6..109ea09 100644
--- a/java/com/android/dialer/storage/StorageComponent.java
+++ b/java/com/android/dialer/storage/StorageComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,8 +19,10 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
+
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.inject.IncludeInDialerRoot;
+
 import dagger.Subcomponent;
 
 /** Dagger component for storage. */
diff --git a/java/com/android/dialer/storage/StorageModule.java b/java/com/android/dialer/storage/StorageModule.java
index 370998c..8a734a0 100644
--- a/java/com/android/dialer/storage/StorageModule.java
+++ b/java/com/android/dialer/storage/StorageModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,17 +18,18 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
-import android.support.v4.content.ContextCompat;
+
+import androidx.core.content.ContextCompat;
+import androidx.preference.PreferenceManager;
+
 import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import dagger.Module;
-import dagger.Provides;
+
 import javax.inject.Singleton;
 
+import dagger.Module;
+import dagger.Provides;
+
 /** Module for the storage component. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module
 public class StorageModule {
 
diff --git a/java/com/android/dialer/strictmode/DialerStrictMode.java b/java/com/android/dialer/strictmode/DialerStrictMode.java
deleted file mode 100644
index 462db57..0000000
--- a/java/com/android/dialer/strictmode/DialerStrictMode.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.strictmode;
-
-import android.app.Application;
-import android.support.annotation.MainThread;
-
-/** Interface for strict mode to handle strict mode violations. */
-public interface DialerStrictMode {
-
-  /** Initializes strict mode on application start. */
-  @MainThread
-  void onApplicationCreate(Application application);
-}
diff --git a/java/com/android/dialer/strictmode/StrictModeComponent.java b/java/com/android/dialer/strictmode/StrictModeComponent.java
deleted file mode 100644
index 7b9f48e..0000000
--- a/java/com/android/dialer/strictmode/StrictModeComponent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.strictmode;
-
-import android.content.Context;
-import com.android.dialer.inject.HasRootComponent;
-import dagger.Subcomponent;
-
-/** Dagger component for DialerStrictMode. */
-@Subcomponent
-public abstract class StrictModeComponent {
-
-  public abstract DialerStrictMode getDialerStrictMode();
-
-  public static StrictModeComponent get(Context context) {
-    return ((StrictModeComponent.HasComponent)
-            ((HasRootComponent) context.getApplicationContext()).component())
-        .strictModeComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  public interface HasComponent {
-    StrictModeComponent strictModeComponent();
-  }
-}
diff --git a/java/com/android/dialer/strictmode/StrictModeUtils.java b/java/com/android/dialer/strictmode/StrictModeUtils.java
deleted file mode 100644
index 27f8142..0000000
--- a/java/com/android/dialer/strictmode/StrictModeUtils.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.strictmode;
-
-import android.app.Application;
-import android.content.Context;
-import android.os.Looper;
-import android.os.StrictMode;
-import android.os.StrictMode.ThreadPolicy;
-import android.preference.PreferenceManager;
-import android.support.annotation.AnyThread;
-import android.support.v4.os.UserManagerCompat;
-import com.android.dialer.buildtype.BuildType;
-import com.android.dialer.buildtype.BuildType.Type;
-import com.android.dialer.function.Supplier;
-import com.android.dialer.storage.StorageComponent;
-
-/** Utilities for enforcing strict-mode in an app. */
-public final class StrictModeUtils {
-
-  private static final ThreadPolicy THREAD_NO_PENALTY =
-      new StrictMode.ThreadPolicy.Builder().permitAll().build();
-
-  /**
-   * Convenience method for disabling and enabling the thread policy death penalty using lambdas.
-   *
-   * <p>For example:
-   *
-   * <p><code>
-   *   Value foo = StrictModeUtils.bypass(() -> doDiskAccessOnMainThreadReturningValue());
-   * </code>
-   *
-   * <p>The thread policy is only mutated if this is called from the main thread.
-   */
-  @AnyThread
-  public static <T> T bypass(Supplier<T> supplier) {
-    if (isStrictModeAllowed() && onMainThread()) {
-      ThreadPolicy originalPolicy = StrictMode.getThreadPolicy();
-      StrictMode.setThreadPolicy(THREAD_NO_PENALTY);
-      try {
-        return supplier.get();
-      } finally {
-        StrictMode.setThreadPolicy(originalPolicy);
-      }
-    }
-    return supplier.get();
-  }
-
-  /**
-   * Convenience method for disabling and enabling the thread policy death penalty using lambdas.
-   *
-   * <p>For example:
-   *
-   * <p><code>
-   *   StrictModeUtils.bypass(() -> doDiskAccessOnMainThread());
-   * </code>
-   *
-   * <p>The thread policy is only mutated if this is called from the main thread.
-   */
-  @AnyThread
-  public static void bypass(Runnable runnable) {
-    if (isStrictModeAllowed() && onMainThread()) {
-      ThreadPolicy originalPolicy = StrictMode.getThreadPolicy();
-      StrictMode.setThreadPolicy(THREAD_NO_PENALTY);
-      try {
-        runnable.run();
-      } finally {
-        StrictMode.setThreadPolicy(originalPolicy);
-      }
-    } else {
-      runnable.run();
-    }
-  }
-
-  public static boolean isStrictModeAllowed() {
-    return BuildType.get() == Type.BUGFOOD;
-  }
-
-  private static boolean onMainThread() {
-    return Looper.getMainLooper().equals(Looper.myLooper());
-  }
-
-  /**
-   * We frequently access shared preferences on the main thread, which causes strict mode
-   * violations. When strict mode is allowed, warm up the shared preferences so that later uses of
-   * shared preferences access the in-memory versions and we don't have to bypass strict mode at
-   * every point in the application where shared preferences are accessed.
-   */
-  public static void warmupSharedPrefs(Application application) {
-    // From credential-encrypted (CE) storage, i.e.:
-    //    /data/data/com.android.dialer/shared_prefs
-
-    if (UserManagerCompat.isUserUnlocked(application)) {
-      // <package_name>_preferences.xml
-      PreferenceManager.getDefaultSharedPreferences(application);
-
-      // <package_name>.xml
-      application.getSharedPreferences(application.getPackageName(), Context.MODE_PRIVATE);
-    }
-
-    // From device-encrypted (DE) storage, i.e.:
-    //   /data/user_de/0/com.android.dialer/shared_prefs/
-
-    // <package_name>_preferences.xml
-    StorageComponent.get(application).unencryptedSharedPrefs();
-  }
-
-  private StrictModeUtils() {}
-}
diff --git a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java b/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
deleted file mode 100644
index f3ce70c..0000000
--- a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.strictmode.impl;
-
-import android.app.Application;
-import android.os.Build;
-import android.os.Build.VERSION_CODES;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.StrictMode;
-import android.os.StrictMode.ThreadPolicy;
-import android.os.StrictMode.VmPolicy;
-import android.support.annotation.MainThread;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.android.dialer.strictmode.DialerStrictMode;
-import com.android.dialer.strictmode.StrictModeUtils;
-import com.google.auto.value.AutoValue;
-import java.util.Map;
-import javax.inject.Inject;
-
-final class SystemDialerStrictMode implements DialerStrictMode {
-  private static final VmPolicy VM_DEATH_PENALTY =
-      new StrictMode.VmPolicy.Builder().penaltyLog().penaltyDeath().build();
-
-  private static final ThreadPolicy THREAD_DEATH_PENALTY =
-      new StrictMode.ThreadPolicy.Builder().penaltyLog().penaltyDeath().build();
-
-  @Inject
-  public SystemDialerStrictMode() {}
-
-  @MainThread
-  @Override
-  public void onApplicationCreate(Application application) {
-    if (StrictModeUtils.isStrictModeAllowed()) {
-      StrictModeUtils.warmupSharedPrefs(application);
-      setRecommendedMainThreadPolicy(THREAD_DEATH_PENALTY);
-      setRecommendedVMPolicy(VM_DEATH_PENALTY);
-
-      // Because Android resets StrictMode policies after Application.onCreate is done, we set it
-      // again right after.
-      // See cl/105932355 for the discussion.
-      // See a bug for the public bug.
-      Handler handler = new Handler(Looper.myLooper());
-      handler.postAtFrontOfQueue(() -> setRecommendedMainThreadPolicy(THREAD_DEATH_PENALTY));
-    }
-  }
-
-  /**
-   * Set the recommended policy for the app.
-   *
-   * @param threadPenalties policy with preferred penalties. Detection bits will be ignored.
-   */
-  private static void setRecommendedMainThreadPolicy(StrictMode.ThreadPolicy threadPenalties) {
-    StrictMode.ThreadPolicy threadPolicy =
-        new StrictMode.ThreadPolicy.Builder(threadPenalties).detectAll().build();
-    StrictMode.setThreadPolicy(threadPolicy);
-  }
-
-  /**
-   * Set the recommended policy for the app.
-   *
-   * @param vmPenalties policy with preferred penalties. Detection bits should be unset.
-   */
-  private static void setRecommendedVMPolicy(StrictMode.VmPolicy vmPenalties) {
-    setRecommendedVMPolicy(vmPenalties, StrictModeVmConfig.empty());
-  }
-
-  /**
-   * Set the recommended policy for the app.
-   *
-   * @param vmPenalties policy with preferred penalties. Detection bits should be unset.
-   */
-  private static void setRecommendedVMPolicy(
-      StrictMode.VmPolicy vmPenalties, StrictModeVmConfig config) {
-    Assert.isNotNull(config);
-    StrictMode.VmPolicy.Builder vmPolicyBuilder =
-        new StrictMode.VmPolicy.Builder(vmPenalties)
-            .detectLeakedClosableObjects()
-            .detectLeakedSqlLiteObjects();
-    if (Build.VERSION.SDK_INT >= VERSION_CODES.O) {
-      vmPolicyBuilder.detectContentUriWithoutPermission();
-      // TODO(azlatin): Enable detecting untagged sockets once: a bug is fixed.
-      // vmPolicyBuilder.detectUntaggedSockets();
-    }
-    StrictMode.setVmPolicy(vmPolicyBuilder.build());
-  }
-
-  /** VmPolicy configuration. */
-  @AutoValue
-  abstract static class StrictModeVmConfig {
-    /** A map of a class to the maximum number of allowed instances of that class. */
-    @Nullable
-    abstract Map<Class<?>, Integer> maxInstanceLimits();
-
-    public static StrictModeVmConfig empty() {
-      return builder().build();
-    }
-
-    public static Builder builder() {
-      return new AutoValue_SystemDialerStrictMode_StrictModeVmConfig.Builder();
-    }
-
-    /** VmPolicy configuration builder. */
-    @AutoValue.Builder
-    public abstract static class Builder {
-      public abstract Builder setMaxInstanceLimits(Map<Class<?>, Integer> limits);
-
-      public abstract StrictModeVmConfig build();
-
-      Builder() {}
-    }
-
-    StrictModeVmConfig() {}
-  }
-}
diff --git a/java/com/android/dialer/strictmode/impl/SystemStrictModeModule.java b/java/com/android/dialer/strictmode/impl/SystemStrictModeModule.java
deleted file mode 100644
index ac6416c..0000000
--- a/java/com/android/dialer/strictmode/impl/SystemStrictModeModule.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.strictmode.impl;
-
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.dialer.strictmode.DialerStrictMode;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-/** Module which binds {@link SystemDialerStrictMode}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public abstract class SystemStrictModeModule {
-
-  @Binds
-  @Singleton
-  public abstract DialerStrictMode bindDialerStrictMode(SystemDialerStrictMode impl);
-}
diff --git a/java/com/android/dialer/telecom/TelecomCallUtil.java b/java/com/android/dialer/telecom/TelecomCallUtil.java
index 6b66d86..6868a5c 100644
--- a/java/com/android/dialer/telecom/TelecomCallUtil.java
+++ b/java/com/android/dialer/telecom/TelecomCallUtil.java
@@ -18,15 +18,19 @@
 
 import android.content.Context;
 import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
 import android.telecom.Call;
 import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.location.GeoUtil;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /**
  * Class to provide a standard interface for obtaining information from the underlying
@@ -37,10 +41,10 @@
 public class TelecomCallUtil {
 
   /** Returns Whether the call handle is an emergency number. */
-  public static boolean isEmergencyCall(@NonNull Call call) {
+  public static boolean isEmergencyCall(TelephonyManager telephonyManager, @NonNull Call call) {
     Assert.isNotNull(call);
     Uri handle = call.getDetails().getHandle();
-    return PhoneNumberUtils.isEmergencyNumber(handle == null ? "" : handle.getSchemeSpecificPart());
+    return telephonyManager.isEmergencyNumber(handle == null ? "" : handle.getSchemeSpecificPart());
   }
 
   /**
@@ -86,7 +90,7 @@
     }
     String rawNumber = getNumber(call);
     if (TextUtils.isEmpty(rawNumber)) {
-      return Optional.absent();
+      return Optional.empty();
     }
     return Optional.of(PhoneNumberUtils.normalizeNumber(rawNumber));
   }
@@ -97,16 +101,16 @@
    * GeoUtil#getCurrentCountryIso(Context)} is used.
    *
    * <p>If the number cannot be formatted (because for example it is invalid), returns {@link
-   * Optional#absent()}.
+   * Optional#empty()} ()}.
    */
   @WorkerThread
   public static Optional<String> getValidE164Number(Context appContext, Call call) {
     Assert.isWorkerThread();
     String rawNumber = getNumber(call);
     if (TextUtils.isEmpty(rawNumber)) {
-      return Optional.absent();
+      return Optional.empty();
     }
-    return Optional.fromNullable(
+    return Optional.ofNullable(
         PhoneNumberUtils.formatNumberToE164(rawNumber, GeoUtil.getCurrentCountryIso(appContext)));
   }
 }
diff --git a/java/com/android/dialer/telecom/TelecomUtil.java b/java/com/android/dialer/telecom/TelecomUtil.java
index 633a53e..dd481d9 100644
--- a/java/com/android/dialer/telecom/TelecomUtil.java
+++ b/java/com/android/dialer/telecom/TelecomUtil.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,22 +17,15 @@
 
 package com.android.dialer.telecom;
 
-import android.Manifest;
 import android.Manifest.permission;
+import android.app.role.RoleManager;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.os.UserHandle;
 import android.provider.CallLog.Calls;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresPermission;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.content.ContextCompat;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -39,25 +33,33 @@
 import android.telephony.SubscriptionManager;
 import android.text.TextUtils;
 import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresPermission;
+import androidx.core.content.ContextCompat;
+
 import com.android.dialer.common.LogUtil;
-import com.google.common.base.Optional;
+import com.android.dialer.util.PermissionsUtil;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.Optional;
 
 /**
  * Performs permission checks before calling into TelecomManager. Each method is self-explanatory -
  * perform the required check and return the fallback default if the permission is missing,
  * otherwise return the value from TelecomManager.
  */
-@SuppressWarnings({"MissingPermission", "Guava"})
+@SuppressWarnings("MissingPermission")
 public abstract class TelecomUtil {
 
   private static final String TAG = "TelecomUtil";
   private static boolean warningLogged = false;
 
-  private static TelecomUtilImpl instance = new TelecomUtilImpl();
+  private static final TelecomUtilImpl instance = new TelecomUtilImpl();
 
   /**
    * Cache for {@link #isVoicemailNumber(Context, PhoneAccountHandle, String)}. Both
@@ -67,13 +69,8 @@
   private static final Map<Pair<PhoneAccountHandle, String>, Boolean> isVoicemailNumberCache =
       new ConcurrentHashMap<>();
 
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public static void setInstanceForTesting(TelecomUtilImpl instanceForTesting) {
-    instance = instanceForTesting;
-  }
-
   public static void showInCallScreen(Context context, boolean showDialpad) {
-    if (hasReadPhoneStatePermission(context)) {
+    if (PermissionsUtil.hasReadPhoneStatePermissions(context)) {
       try {
         getTelecomManager(context).showInCallScreen(showDialpad);
       } catch (SecurityException e) {
@@ -84,7 +81,7 @@
   }
 
   public static void silenceRinger(Context context) {
-    if (hasModifyPhoneStatePermission(context)) {
+    if (PermissionsUtil.hasModifyPhoneStatePermissions(context)) {
       try {
         getTelecomManager(context).silenceRinger();
       } catch (SecurityException e) {
@@ -95,7 +92,7 @@
   }
 
   public static void cancelMissedCallsNotification(Context context) {
-    if (hasModifyPhoneStatePermission(context)) {
+    if (PermissionsUtil.hasModifyPhoneStatePermissions(context)) {
       try {
         getTelecomManager(context).cancelMissedCallsNotification();
       } catch (SecurityException e) {
@@ -105,7 +102,7 @@
   }
 
   public static Uri getAdnUriForPhoneAccount(Context context, PhoneAccountHandle handle) {
-    if (hasModifyPhoneStatePermission(context)) {
+    if (PermissionsUtil.hasModifyPhoneStatePermissions(context)) {
       try {
         return getTelecomManager(context).getAdnUriForPhoneAccount(handle);
       } catch (SecurityException e) {
@@ -117,7 +114,7 @@
 
   public static boolean handleMmi(
       Context context, String dialString, @Nullable PhoneAccountHandle handle) {
-    if (hasModifyPhoneStatePermission(context)) {
+    if (PermissionsUtil.hasModifyPhoneStatePermissions(context)) {
       try {
         if (handle == null) {
           return getTelecomManager(context).handleMmi(dialString);
@@ -134,7 +131,7 @@
   @Nullable
   public static PhoneAccountHandle getDefaultOutgoingPhoneAccount(
       Context context, String uriScheme) {
-    if (hasReadPhoneStatePermission(context)) {
+    if (PermissionsUtil.hasReadPhoneStatePermissions(context)) {
       return getTelecomManager(context).getDefaultOutgoingPhoneAccount(uriScheme);
     }
     return null;
@@ -145,9 +142,9 @@
   }
 
   public static List<PhoneAccountHandle> getCallCapablePhoneAccounts(Context context) {
-    if (hasReadPhoneStatePermission(context)) {
-      return Optional.fromNullable(getTelecomManager(context).getCallCapablePhoneAccounts())
-          .or(new ArrayList<>());
+    if (PermissionsUtil.hasReadPhoneStatePermissions(context)) {
+      return Optional.ofNullable(getTelecomManager(context).getCallCapablePhoneAccounts())
+          .orElse(new ArrayList<>());
     }
     return new ArrayList<>();
   }
@@ -197,24 +194,24 @@
    *     valid SIM. Absent otherwise.
    */
   public static Optional<SubscriptionInfo> getSubscriptionInfo(
-      @NonNull Context context, @NonNull PhoneAccountHandle phoneAccountHandle) {
+          @NonNull Context context, @NonNull PhoneAccountHandle phoneAccountHandle) {
     if (TextUtils.isEmpty(phoneAccountHandle.getId())) {
-      return Optional.absent();
+      return Optional.empty();
     }
-    if (!hasPermission(context, permission.READ_PHONE_STATE)) {
-      return Optional.absent();
+    if (!PermissionsUtil.hasReadPhoneStatePermissions(context)) {
+      return Optional.empty();
     }
     SubscriptionManager subscriptionManager = context.getSystemService(SubscriptionManager.class);
     List<SubscriptionInfo> subscriptionInfos = subscriptionManager.getActiveSubscriptionInfoList();
     if (subscriptionInfos == null) {
-      return Optional.absent();
+      return Optional.empty();
     }
     for (SubscriptionInfo info : subscriptionInfos) {
       if (phoneAccountHandle.getId().startsWith(info.getIccId())) {
         return Optional.of(info);
       }
     }
-    return Optional.absent();
+    return Optional.empty();
   }
 
   /**
@@ -245,7 +242,7 @@
       return isVoicemailNumberCache.get(cacheKey);
     }
     boolean result = false;
-    if (hasReadPhoneStatePermission(context)) {
+    if (PermissionsUtil.hasReadPhoneStatePermissions(context)) {
       result = getTelecomManager(context).isVoiceMailNumber(accountHandle, number);
     }
     isVoicemailNumberCache.put(cacheKey, result);
@@ -254,7 +251,7 @@
 
   @Nullable
   public static String getVoicemailNumber(Context context, PhoneAccountHandle accountHandle) {
-    if (hasReadPhoneStatePermission(context)) {
+    if (PermissionsUtil.hasReadPhoneStatePermissions(context)) {
       return getTelecomManager(context).getVoiceMailNumber(accountHandle);
     }
     return null;
@@ -269,7 +266,7 @@
    *     due to a permission check.
    */
   public static boolean placeCall(Context context, Intent intent) {
-    if (hasCallPhonePermission(context)) {
+    if (PermissionsUtil.hasPhonePermissions(context)) {
       getTelecomManager(context).placeCall(intent.getData(), intent.getExtras());
       return true;
     }
@@ -284,31 +281,8 @@
 
   public static boolean hasReadWriteVoicemailPermissions(Context context) {
     return isDefaultDialer(context)
-        || (hasPermission(context, Manifest.permission.READ_VOICEMAIL)
-            && hasPermission(context, Manifest.permission.WRITE_VOICEMAIL));
-  }
-
-  /** @deprecated use {@link com.android.dialer.util.PermissionsUtil} */
-  @Deprecated
-  public static boolean hasModifyPhoneStatePermission(Context context) {
-    return isDefaultDialer(context)
-        || hasPermission(context, Manifest.permission.MODIFY_PHONE_STATE);
-  }
-
-  /** @deprecated use {@link com.android.dialer.util.PermissionsUtil} */
-  @Deprecated
-  public static boolean hasReadPhoneStatePermission(Context context) {
-    return isDefaultDialer(context) || hasPermission(context, Manifest.permission.READ_PHONE_STATE);
-  }
-
-  /** @deprecated use {@link com.android.dialer.util.PermissionsUtil} */
-  @Deprecated
-  public static boolean hasCallPhonePermission(Context context) {
-    return isDefaultDialer(context) || hasPermission(context, Manifest.permission.CALL_PHONE);
-  }
-
-  private static boolean hasPermission(Context context, String permission) {
-    return instance.hasPermission(context, permission);
+        || (PermissionsUtil.hasReadVoicemailPermissions(context)
+            && PermissionsUtil.hasWriteVoicemailPermissions(context));
   }
 
   private static TelecomManager getTelecomManager(Context context) {
@@ -343,11 +317,10 @@
   }
 
   /** Contains an implementation for {@link TelecomUtil} methods */
-  @VisibleForTesting()
-  public static class TelecomUtilImpl {
+  private static class TelecomUtilImpl {
 
     public boolean isInManagedCall(Context context) {
-      if (hasReadPhoneStatePermission(context)) {
+      if (PermissionsUtil.hasReadPhoneStatePermissions(context)) {
         // The TelecomManager#isInCall method returns true anytime the user is in a call.
         // Starting in O, the APIs include support for self-managed ConnectionServices so that other
         // apps like Duo can tell Telecom about its calls.  So, if the user is in a Duo call,
@@ -356,17 +329,14 @@
         // Dialer is launched.
         // Instead, Dialer should use TelecomManager#isInManagedCall, which only returns true if the
         // device is in a managed call which Dialer would know about.
-        if (VERSION.SDK_INT >= VERSION_CODES.O) {
-          return getTelecomManager(context).isInManagedCall();
-        } else {
-          return getTelecomManager(context).isInCall();
-        }
+        return getTelecomManager(context).isInManagedCall();
       }
       return false;
     }
 
     public boolean isInCall(Context context) {
-      return hasReadPhoneStatePermission(context) && getTelecomManager(context).isInCall();
+      return PermissionsUtil.hasReadPhoneStatePermissions(context) &&
+              getTelecomManager(context).isInCall();
     }
 
     public boolean hasPermission(Context context, String permission) {
@@ -375,19 +345,18 @@
     }
 
     public boolean isDefaultDialer(Context context) {
-      final boolean result =
-          TextUtils.equals(
-              context.getPackageName(), getTelecomManager(context).getDefaultDialerPackage());
-      if (result) {
-        warningLogged = false;
-      } else {
+      final RoleManager rm = (RoleManager) context.getSystemService(Context.ROLE_SERVICE);
+      if (rm == null || !rm.isRoleHeld(RoleManager.ROLE_DIALER)) {
         if (!warningLogged) {
           // Log only once to prevent spam.
           LogUtil.w(TAG, "Dialer is not currently set to be default dialer");
           warningLogged = true;
         }
+        return false;
       }
-      return result;
+
+      warningLogged = false;
+      return true;
     }
   }
 }
diff --git a/java/com/android/dialer/theme/base/AndroidManifest.xml b/java/com/android/dialer/theme/base/AndroidManifest.xml
deleted file mode 100644
index ff78910..0000000
--- a/java/com/android/dialer/theme/base/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest package="com.android.dialer.theme.base"/>
diff --git a/java/com/android/dialer/theme/base/Theme.java b/java/com/android/dialer/theme/base/Theme.java
index 6e0d20a..2d63935 100644
--- a/java/com/android/dialer/theme/base/Theme.java
+++ b/java/com/android/dialer/theme/base/Theme.java
@@ -17,10 +17,12 @@
 package com.android.dialer.theme.base;
 
 import android.content.Context;
-import android.support.annotation.ColorInt;
-import android.support.annotation.IntDef;
-import android.support.annotation.StyleRes;
 import android.view.LayoutInflater;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.IntDef;
+import androidx.annotation.StyleRes;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -73,4 +75,7 @@
 
   @ColorInt
   int getColorIconOnUnthemedDarkBackground();
+
+  @ColorInt
+  int getColorCallNotificationBackground();
 }
diff --git a/java/com/android/dialer/theme/base/ThemeComponent.java b/java/com/android/dialer/theme/base/ThemeComponent.java
index d906761..5025660 100644
--- a/java/com/android/dialer/theme/base/ThemeComponent.java
+++ b/java/com/android/dialer/theme/base/ThemeComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,8 +18,10 @@
 package com.android.dialer.theme.base;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.inject.IncludeInDialerRoot;
+
 import dagger.Subcomponent;
 
 /** Component for Theme. */
diff --git a/java/com/android/dialer/theme/base/impl/AospThemeImpl.java b/java/com/android/dialer/theme/base/impl/AospThemeImpl.java
index c8f20c7..9df5666 100644
--- a/java/com/android/dialer/theme/base/impl/AospThemeImpl.java
+++ b/java/com/android/dialer/theme/base/impl/AospThemeImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,13 +19,16 @@
 
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.support.annotation.ColorInt;
-import android.support.annotation.StyleRes;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.StyleRes;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.theme.base.R;
 import com.android.dialer.theme.base.Theme;
+
 import javax.inject.Singleton;
 
 /** Utility for fetching */
@@ -45,6 +49,7 @@
   private int colorBackgroundFloating = -1;
   private int colorTextOnUnthemedDarkBackground = -1;
   private int colorIconOnUnthemedDarkBackground = -1;
+  private int colorCallNotificationBackground = -1;
 
   public AospThemeImpl(Context context) {
 
@@ -69,6 +74,7 @@
                   R.attr.colorIconSecondary,
                   R.attr.colorTextOnUnthemedDarkBackground,
                   R.attr.colorIconOnUnthemedDarkBackground,
+                  R.attr.colorCallNotificationBackground
                 });
     colorPrimary = array.getColor(/* index= */ 0, /* defValue= */ -1);
     colorPrimaryDark = array.getColor(/* index= */ 1, /* defValue= */ -1);
@@ -83,6 +89,7 @@
     colorIconSecondary = array.getColor(/* index= */ 10, /* defValue= */ -1);
     colorTextOnUnthemedDarkBackground = array.getColor(/* index= */ 11, /* defValue= */ -1);
     colorIconOnUnthemedDarkBackground = array.getColor(/* index= */ 12, /* defValue= */ -1);
+    colorCallNotificationBackground = array.getColor(/* index= */ 13, /* defValue= */ -1);
     array.recycle();
   }
 
@@ -172,4 +179,10 @@
     Assert.checkArgument(colorIconOnUnthemedDarkBackground != -1);
     return colorIconOnUnthemedDarkBackground;
   }
+
+  @Override
+  public @ColorInt int getColorCallNotificationBackground() {
+    Assert.checkArgument(colorCallNotificationBackground != -1);
+    return colorCallNotificationBackground;
+  }
 }
diff --git a/java/com/android/dialer/theme/base/impl/AospThemeModule.java b/java/com/android/dialer/theme/base/impl/AospThemeModule.java
index 7cf52ca..5b67185 100644
--- a/java/com/android/dialer/theme/base/impl/AospThemeModule.java
+++ b/java/com/android/dialer/theme/base/impl/AospThemeModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,15 +18,14 @@
 package com.android.dialer.theme.base.impl;
 
 import android.content.Context;
+
 import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
 import com.android.dialer.theme.base.Theme;
+
 import dagger.Module;
 import dagger.Provides;
 
 /** Module which binds {@link AospThemeImpl}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module
 public class AospThemeModule {
 
diff --git a/java/com/android/dialer/theme/base/res/values-night/theme_dialer_light.xml b/java/com/android/dialer/theme/base/res/values-night/theme_dialer_light.xml
new file mode 100644
index 0000000..97133e3
--- /dev/null
+++ b/java/com/android/dialer/theme/base/res/values-night/theme_dialer_light.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  SPDX-FileCopyrightText: The Android Open Source Project
+  SPDX-License-Identifier: Apache-2.0
+-->
+<resources>
+  <style name="Dialer.ThemeBase.ActionBar">
+    <item name="android:windowLightStatusBar">false</item>
+  </style>
+
+  <style name="Dialer.ThemeBase.NoActionBar">
+    <!-- Copied from Theme.AppCompat.Light.NoActionBar. We can remove this and update the Dialer
+    base style once none of our activities depend on ActionBar anymore. -->
+    <item name="windowActionBar">false</item>
+    <item name="windowNoTitle">true</item>
+
+    <item name="colorControlHighlight">@color/dialer_ripple_color</item>
+    <item name="android:windowLightStatusBar">false</item>
+  </style>
+
+  <style name="DialerActionBarBaseTheme" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
+</resources>
diff --git a/java/com/android/dialer/theme/base/res/values/attr.xml b/java/com/android/dialer/theme/base/res/values/attr.xml
index 606d161..16fe843 100644
--- a/java/com/android/dialer/theme/base/res/values/attr.xml
+++ b/java/com/android/dialer/theme/base/res/values/attr.xml
@@ -15,6 +15,8 @@
   ~ limitations under the License
   -->
 <resources>
+  <!-- Used to color the search bar background -->
+  <attr name="colorBackgroundSearchBar" format="color"/>
   <!-- Used to style all icons in Dialer. -->
   <attr name="colorIcon" format="color"/>
   <!-- Used to style some icons a little lighter in Dialer. -->
@@ -23,14 +25,5 @@
   <attr name="colorTextOnUnthemedDarkBackground" format="color"/>
   <!-- Used to color icons on dark backgrounds. White in Light Theme. -->
   <attr name="colorIconOnUnthemedDarkBackground" format="color"/>
-  <!-- Used to color the background of chat bubbles we send -->
-  <attr name="colorMobileOriginatingChatBackground" format="color"/>
-  <!-- Used to color the text in chat bubbles we send -->
-  <attr name="colorMobileOriginatingChatText" format="color"/>
-  <!-- Used to color the background of chat bubbles we receive -->
-  <attr name="colorMobileTerminatingChatBackground" format="color"/>
-  <!-- Used to color the text in chat bubbles we receive -->
-  <attr name="colorMobileTerminatingChatText" format="color"/>
-  <!-- Used to theme ripple effects with the app's primary color. -->
-  <attr name="colorPrimary20pct" format="color|reference"/>
+  <attr name="colorCallNotificationBackground" format="color|reference"/>
 </resources>
diff --git a/java/com/android/dialer/theme/base/res/values/styles_dialer_light.xml b/java/com/android/dialer/theme/base/res/values/styles_dialer_light.xml
index 5fecbae..1029587 100644
--- a/java/com/android/dialer/theme/base/res/values/styles_dialer_light.xml
+++ b/java/com/android/dialer/theme/base/res/values/styles_dialer_light.xml
@@ -33,7 +33,13 @@
     <!-- Setting description. -->
     <item name="android:textColorSecondary">@color/settings_text_color_secondary</item>
     <item name="android:windowBackground">?android:attr/colorBackground</item>
-    <item name="android:colorAccent">?android:attr/colorPrimary</item>
+    <item name="android:colorAccent">@color/dialer_theme_color</item>
+    <item name="colorPrimary">@color/dialer_primary_color</item>
+    <item name="colorPrimaryDark">@color/dialer_primary_color</item>
+    <item name="android:statusBarColor">@color/dialer_primary_color</item>
+    <item name="preferenceTheme">@style/Dialer.Settings.PreferenceTheme</item>
+    <item name="android:switchStyle">@style/Dialer.Switch</item>
+    <item name="android:dropDownSpinnerStyle">@style/Dialer.Settings.DropDownSpinnerStyle</item>
   </style>
 
   <!-- TODO(a bug): This is only actively used in empty_content_view.xml. Move it there. -->
@@ -49,4 +55,22 @@
     <item name="android:singleLine">true</item>
     <item name="android:textAllCaps">true</item>
   </style>
+
+  <style name="Dialer.SwitchPreferenceCompat" parent="@style/Preference.SwitchPreferenceCompat.Material">
+    <item name="iconSpaceReserved">false</item>
+    <item name="android:widgetLayout">@layout/widget_switch_compat</item>
+  </style>
+
+  <style name="Dialer.Switch" parent="@android:style/Widget.Material.CompoundButton.Switch">
+    <item name="android:switchMinWidth">52dp</item>
+    <item name="android:minHeight">@dimen/touch_target_min_size</item>
+    <item name="android:track">@drawable/switch_track</item>
+    <item name="track">@drawable/switch_track</item>
+    <item name="android:thumb">@drawable/switch_thumb</item>
+    <item name="thumbTint">@color/dialer_background_color</item>
+  </style>
+
+  <style name="Dialer.Settings.DropDownSpinnerStyle" parent="@android:style/Widget.Material.Spinner">
+    <item name="android:popupBackground">@drawable/popup_background</item>
+  </style>
 </resources>
diff --git a/java/com/android/dialer/theme/base/res/values/theme_dialer_dark.xml b/java/com/android/dialer/theme/base/res/values/theme_dialer_dark.xml
index 142bb89..1e92e3c 100644
--- a/java/com/android/dialer/theme/base/res/values/theme_dialer_dark.xml
+++ b/java/com/android/dialer/theme/base/res/values/theme_dialer_dark.xml
@@ -15,14 +15,6 @@
   ~ limitations under the License
   -->
 <resources>
-  <!-- Deprecated: ActionBars are clunky and Toolbar (along with Dialer.ThemeBase.NoActionBar)
-      should be used in favor-->
-  <style name="Dialer.Dark.ThemeBase.ActionBar">
-    <!-- These are used to style all actionbars in Dialer. These aren't needed in Dialer.ThemeBase.NoActionBar -->
-    <item name="actionBarStyle">@style/DialerActionBarBaseStyle</item>
-    <item name="actionBarSize">@dimen/action_bar_height</item>
-  </style>
-
   <style name="Dialer.Dark.ThemeBase.NoActionBar">
     <!-- Copied from Theme.AppCompat.Light.NoActionBar. We can remove this and update the Dialer
         base style once none of our activities depend on ActionBar anymore. -->
@@ -33,8 +25,8 @@
   <!-- Activities and Applications should inherit from one of the themes above. -->
   <style name="Dialer.Dark.ThemeBase">
     <!-- These values should be used to color all backgrounds. -->
-    <item name="android:colorBackground">@color/google_grey_900</item>
-    <item name="android:colorBackgroundFloating">@color/google_grey_800</item>
+    <item name="android:colorBackground">@android:color/system_neutral1_900</item>
+    <item name="android:colorBackgroundFloating">@android:color/system_neutral1_800</item>
 
     <!-- These values should be used to set text color. -->
     <!-- swap text colors. -->
@@ -49,17 +41,17 @@
     <item name="colorPrimary">@color/dialer_dark_theme_color</item>
     <item name="android:colorPrimaryDark">@color/dialer_dark_theme_color_dark</item>
     <item name="colorPrimaryDark">@color/dialer_dark_theme_color_dark</item>
-    <item name="android:colorAccent">@color/dialer_dark_secondary_color</item>
-    <item name="colorAccent">@color/dialer_dark_secondary_color</item>
+    <item name="android:colorAccent">@color/dialer_dark_theme_color</item>
+    <item name="colorAccent">@color/dialer_dark_theme_color</item>
 
     <!-- Used to automatically style check/selected checkbox, switches and radio buttons -->
-    <item name="colorControlActivated">?android:attr/colorPrimary</item>
+    <item name="colorControlActivated">?android:attr/colorAccent</item>
 
     <!-- Dialer specific attributes. -->
     <item name="colorIcon">?android:attr/textColorSecondary</item>
     <item name="colorIconSecondary">?android:attr/textColorSecondary</item>
-    <item name="colorTextOnUnthemedDarkBackground">@android:color/white</item>
-    <item name="colorIconOnUnthemedDarkBackground">@android:color/white</item>
-    <item name="colorPrimary20pct">@color/dialer_dark_theme_color_20pct</item>
+    <item name="colorTextOnUnthemedDarkBackground">@android:color/system_neutral1_0</item>
+    <item name="colorIconOnUnthemedDarkBackground">@android:color/system_neutral1_0</item>
+    <item name="colorCallNotificationBackground">@android:color/system_accent2_700</item>
   </style>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/theme/base/res/values/theme_dialer_light.xml b/java/com/android/dialer/theme/base/res/values/theme_dialer_light.xml
index db06df4..b9ea10c 100644
--- a/java/com/android/dialer/theme/base/res/values/theme_dialer_light.xml
+++ b/java/com/android/dialer/theme/base/res/values/theme_dialer_light.xml
@@ -27,6 +27,9 @@
     <item name="actionBarWidgetTheme">@null</item>
     <item name="actionBarTheme">@style/DialerActionBarBaseTheme</item>
     <item name="listChoiceBackgroundIndicator">@drawable/abc_list_selector_holo_dark</item>
+
+    <item name="colorControlHighlight">@color/dialer_ripple_color</item>
+    <item name="android:windowLightStatusBar">true</item>
   </style>
 
   <style name="Dialer.ThemeBase.NoActionBar">
@@ -34,13 +37,18 @@
         base style once none of our activities depend on ActionBar anymore. -->
     <item name="windowActionBar">false</item>
     <item name="windowNoTitle">true</item>
+
+    <item name="colorControlHighlight">@color/dialer_ripple_color</item>
+    <item name="android:windowLightStatusBar">true</item>
   </style>
 
   <!-- Activities and Applications should inherit from one of the themes above. -->
   <style name="Dialer.ThemeBase">
+    <item name="android:forceDarkAllowed">true</item>
     <!-- These values should be used to color all backgrounds. -->
     <item name="android:colorBackground">@color/dialer_background_color</item>
-    <item name="android:colorBackgroundFloating">@android:color/white</item>
+    <item name="android:colorBackgroundFloating">@color/dialer_background_floating</item>
+    <item name="colorBackgroundSearchBar">@color/dialer_search_bar_color</item>
 
     <!-- These values should be used to set text color. -->
     <item name="android:textColorPrimary">@color/dialer_primary_text_color</item>
@@ -50,26 +58,22 @@
     <item name="android:textColorHint">@color/google_grey_600</item>
 
     <!-- These will be automatically used to color most Appcompat/Material widgets. -->
-    <item name="android:colorPrimary">@color/dialer_theme_color</item>
-    <item name="colorPrimary">@color/dialer_theme_color</item>
-    <item name="android:colorPrimaryDark">@color/dialer_theme_color_dark</item>
-    <item name="colorPrimaryDark">@color/dialer_theme_color_dark</item>
-    <item name="android:colorAccent">@color/dialer_secondary_color</item>
-    <item name="colorAccent">@color/dialer_secondary_color</item>
+    <item name="android:colorPrimary">@color/dialer_primary_color</item>
+    <item name="colorPrimary">@color/dialer_primary_color</item>
+    <item name="android:colorPrimaryDark">@color/dialer_primary_color</item>
+    <item name="colorPrimaryDark">@color/dialer_primary_color</item>
+    <item name="android:colorAccent">@color/dialer_theme_color</item>
+    <item name="colorAccent">@color/dialer_theme_color</item>
 
     <!-- Used to automatically style check/selected checkbox, switches and radio buttons -->
-    <item name="colorControlActivated">?android:attr/colorPrimary</item>
+    <item name="colorControlActivated">?android:attr/colorAccent</item>
 
     <!-- Dialer specific attributes. -->
     <item name="colorIcon">@color/google_grey_700</item>
     <item name="colorIconSecondary">@color/google_grey_400</item>
-    <item name="colorTextOnUnthemedDarkBackground">@android:color/white</item>
-    <item name="colorIconOnUnthemedDarkBackground">@android:color/white</item>
-    <item name="colorMobileTerminatingChatText">@color/google_grey_900</item>
-    <item name="colorMobileTerminatingChatBackground">@color/google_grey_100</item>
-    <item name="colorMobileOriginatingChatText">@color/google_blue_900</item>
-    <item name="colorMobileOriginatingChatBackground">@color/google_blue_100</item>
-    <item name="colorPrimary20pct">@color/dialer_theme_color_20pct</item>
+    <item name="colorTextOnUnthemedDarkBackground">@android:color/system_neutral1_0</item>
+    <item name="colorIconOnUnthemedDarkBackground">@android:color/system_neutral1_0</item>
+    <item name="colorCallNotificationBackground">@android:color/system_accent2_200</item>
   </style>
 
   <!-- TODO(a bug): investigate making this style's parent Dialer.ThemeBase.NoActionBar -->
@@ -84,13 +88,15 @@
   <!-- Deprecated: Use Toolbar instead of ActionBar. -->
   <!-- Used to style all Dialer's action bars. Every actionbar is awarded this for free if the parent
      activity's theme extends from Dialer.ThemeBase.ActionBar or doesn't specify a theme. -->
-  <style name="DialerActionBarBaseStyle"
-      parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
+  <style name="DialerActionBarBaseStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
     <item name="android:background">?android:attr/colorPrimary</item>
     <item name="background">?android:attr/colorPrimary</item>
   </style>
-  <style name="DialerActionBarBaseTheme"
-      parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
-    <item name="colorControlNormal">@android:color/white</item>
+  <style name="DialerActionBarBaseTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar" />
+
+  <style name="Dialer.Settings.PreferenceTheme" parent="@style/PreferenceThemeOverlay">
+    <item name="switchPreferenceCompatStyle">@style/Dialer.SwitchPreferenceCompat</item>
   </style>
+
+
 </resources>
diff --git a/java/com/android/dialer/theme/common/AndroidManifest.xml b/java/com/android/dialer/theme/common/AndroidManifest.xml
deleted file mode 100644
index 51e532e..0000000
--- a/java/com/android/dialer/theme/common/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest package="com.android.dialer.theme.common"/>
diff --git a/java/com/android/dialer/theme/common/res/values-af/strings.xml b/java/com/android/dialer/theme/common/res/values-af/strings.xml
index 5c9a1e1..d20c544 100644
--- a/java/com/android/dialer/theme/common/res/values-af/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-af/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefoonhokkie</string>
   <string name="emergency_number">Noodnommer</string>
-  <string name="launcherActivityLabel">Foon</string>
   <string name="call">Bel</string>
   <string name="video_call_lte_to_wifi_handover_toast">Gaan voort met oproep deur Wi-Fi te gebruik …</string>
   <string name="rtt_call_not_available_toast">RTT nie beskikbaar vir hierdie oproep nie</string>
diff --git a/java/com/android/dialer/theme/common/res/values-am/strings.xml b/java/com/android/dialer/theme/common/res/values-am/strings.xml
index ae8a1a9..1deb5c5 100644
--- a/java/com/android/dialer/theme/common/res/values-am/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-am/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">የሕዝብ ስልክ</string>
   <string name="emergency_number">የአደጋ ጊዜ ቁጥር</string>
-  <string name="launcherActivityLabel">ስልክ  </string>
   <string name="call">ደውል</string>
   <string name="video_call_lte_to_wifi_handover_toast">Wi‑Fi ን መጠቀም በመቀጠል ላይ…</string>
   <string name="rtt_call_not_available_toast">አርቲቲ ለዚህ ጥሪ አይገኝም</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ar/strings.xml b/java/com/android/dialer/theme/common/res/values-ar/strings.xml
index bb96605..ce96e3a 100644
--- a/java/com/android/dialer/theme/common/res/values-ar/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ar/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">هاتف يعمل بالعملة</string>
   <string name="emergency_number">رقم الطوارئ</string>
-  <string name="launcherActivityLabel">الهاتف</string>
   <string name="call">اتصال</string>
   <string name="video_call_lte_to_wifi_handover_toast">‏جارٍ متابعة المكالمة باستخدام Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">لا تتوفر ميزة \"المراسلة النصية في الوقت الفعلي\" لهذه المكالمة</string>
diff --git a/java/com/android/dialer/theme/common/res/values-az/strings.xml b/java/com/android/dialer/theme/common/res/values-az/strings.xml
index ff19fab..3b4134e 100644
--- a/java/com/android/dialer/theme/common/res/values-az/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-az/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Taksofon</string>
   <string name="emergency_number">Təcili nömrə</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Zəng edin</string>
   <string name="video_call_lte_to_wifi_handover_toast">Wi‑Fi istifadə edərək zəngə davam edin…</string>
   <string name="rtt_call_not_available_toast">Bu zəng üçün RTT əlçatan deyil</string>
diff --git a/java/com/android/dialer/theme/common/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/theme/common/res/values-b+sr+Latn/strings.xml
index 27e8beb..e1f1f0b 100644
--- a/java/com/android/dialer/theme/common/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-b+sr+Latn/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefonska govornica</string>
   <string name="emergency_number">Broj hitne službe</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Pozovi</string>
   <string name="video_call_lte_to_wifi_handover_toast">Poziv se nastavlja pomoću Wi‑Fi-ja…</string>
   <string name="rtt_call_not_available_toast">RTT nije dostupan za ovaj poziv</string>
diff --git a/java/com/android/dialer/theme/common/res/values-be/strings.xml b/java/com/android/dialer/theme/common/res/values-be/strings.xml
index 2e35ba2..a4226ac 100644
--- a/java/com/android/dialer/theme/common/res/values-be/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-be/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Таксафон</string>
   <string name="emergency_number">Нумар экстраннай службы</string>
-  <string name="launcherActivityLabel">Тэлефон</string>
   <string name="call">Выклікаць</string>
   <string name="video_call_lte_to_wifi_handover_toast">Працягваць выклік, выкарыстоўваючы сетку Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT недаступна для гэтага выкліку</string>
diff --git a/java/com/android/dialer/theme/common/res/values-bg/strings.xml b/java/com/android/dialer/theme/common/res/values-bg/strings.xml
index 45bafb8..cc2f090 100644
--- a/java/com/android/dialer/theme/common/res/values-bg/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-bg/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Обществен телефон</string>
   <string name="emergency_number">Спешен номер</string>
-  <string name="launcherActivityLabel">Телефон</string>
   <string name="call">Обаждане</string>
   <string name="video_call_lte_to_wifi_handover_toast">Обаждането продължава през Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">ТСРВ не е налице за това обаждане</string>
diff --git a/java/com/android/dialer/theme/common/res/values-bn/strings.xml b/java/com/android/dialer/theme/common/res/values-bn/strings.xml
index 7752d4e..4332497 100644
--- a/java/com/android/dialer/theme/common/res/values-bn/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-bn/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">পে ফোন</string>
   <string name="emergency_number">জরুরি নম্বর</string>
-  <string name="launcherActivityLabel">ফোন</string>
   <string name="call">কল করুন</string>
   <string name="video_call_lte_to_wifi_handover_toast">ওয়াই-ফাই দিয়ে কল জারি রাখা হচ্ছে…</string>
   <string name="rtt_call_not_available_toast">এই কলের জন্য RTT সুবিধা উপলভ্য নয়</string>
diff --git a/java/com/android/dialer/theme/common/res/values-bs/strings.xml b/java/com/android/dialer/theme/common/res/values-bs/strings.xml
index 8f67289..1f948ac 100644
--- a/java/com/android/dialer/theme/common/res/values-bs/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-bs/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefonska govornica</string>
   <string name="emergency_number">Broj za hitne slučajeve</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Pozovi</string>
   <string name="video_call_lte_to_wifi_handover_toast">Nastavak poziva putem Wi‑Fi-ja…</string>
   <string name="rtt_call_not_available_toast">RTT nije dostupan za ovaj poziv</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ca/strings.xml b/java/com/android/dialer/theme/common/res/values-ca/strings.xml
index c0797fe..ea3381e 100644
--- a/java/com/android/dialer/theme/common/res/values-ca/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ca/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telèfon públic</string>
   <string name="emergency_number">Número d\'emergència</string>
-  <string name="launcherActivityLabel">Telèfon</string>
   <string name="call">Truca</string>
   <string name="video_call_lte_to_wifi_handover_toast">S\'està continuant la trucada mitjançant la Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">La funció RTT no està disponible en aquesta trucada</string>
diff --git a/java/com/android/dialer/theme/common/res/values-cs/strings.xml b/java/com/android/dialer/theme/common/res/values-cs/strings.xml
index 8471ec0..0905f06 100644
--- a/java/com/android/dialer/theme/common/res/values-cs/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-cs/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefonní automat</string>
   <string name="emergency_number">Číslo tísňové linky</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Volat</string>
   <string name="video_call_lte_to_wifi_handover_toast">Hovor pokračuje přes Wi-Fi…</string>
   <string name="rtt_call_not_available_toast">Pro tento hovor není funkce SMS během hovoru dostupná</string>
diff --git a/java/com/android/dialer/theme/common/res/values-da/strings.xml b/java/com/android/dialer/theme/common/res/values-da/strings.xml
index 8863a78..c1e4511 100644
--- a/java/com/android/dialer/theme/common/res/values-da/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-da/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Mønttelefon</string>
   <string name="emergency_number">Alarmnummer</string>
-  <string name="launcherActivityLabel">Opkald</string>
   <string name="call">Ring op</string>
   <string name="video_call_lte_to_wifi_handover_toast">Opkaldet fortsættes via Wi-Fi…</string>
   <string name="rtt_call_not_available_toast">Sms i realtid er ikke tilgængeligt for dette opkald</string>
diff --git a/java/com/android/dialer/theme/common/res/values-de/strings.xml b/java/com/android/dialer/theme/common/res/values-de/strings.xml
index 12269e3..08d4c65 100644
--- a/java/com/android/dialer/theme/common/res/values-de/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-de/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Münztelefon</string>
   <string name="emergency_number">Notrufnummer</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Anrufen</string>
   <string name="video_call_lte_to_wifi_handover_toast">Anruf wird über WLAN fortgesetzt…</string>
   <string name="rtt_call_not_available_toast">RTT ist für diesen Anruf nicht verfügbar</string>
diff --git a/java/com/android/dialer/theme/common/res/values-el/strings.xml b/java/com/android/dialer/theme/common/res/values-el/strings.xml
index c395840..2e3539c 100644
--- a/java/com/android/dialer/theme/common/res/values-el/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-el/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Τηλέφωνο με χρέωση</string>
   <string name="emergency_number">Αριθμός έκτακτης ανάγκης</string>
-  <string name="launcherActivityLabel">Τηλέφωνο</string>
   <string name="call">Κλήση</string>
   <string name="video_call_lte_to_wifi_handover_toast">Συνέχιση κλήσης μέσω Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">Το RTT δεν είναι διαθέσιμο για αυτήν την κλήση</string>
diff --git a/java/com/android/dialer/theme/common/res/values-en-rAU/strings.xml b/java/com/android/dialer/theme/common/res/values-en-rAU/strings.xml
index c366dac..b95c8a1 100644
--- a/java/com/android/dialer/theme/common/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-en-rAU/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Payphone</string>
   <string name="emergency_number">Emergency number</string>
-  <string name="launcherActivityLabel">Phone</string>
   <string name="call">Call</string>
   <string name="video_call_lte_to_wifi_handover_toast">Continuing call using Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT not available for this call</string>
diff --git a/java/com/android/dialer/theme/common/res/values-en-rGB/strings.xml b/java/com/android/dialer/theme/common/res/values-en-rGB/strings.xml
index c366dac..b95c8a1 100644
--- a/java/com/android/dialer/theme/common/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-en-rGB/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Payphone</string>
   <string name="emergency_number">Emergency number</string>
-  <string name="launcherActivityLabel">Phone</string>
   <string name="call">Call</string>
   <string name="video_call_lte_to_wifi_handover_toast">Continuing call using Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT not available for this call</string>
diff --git a/java/com/android/dialer/theme/common/res/values-en-rIN/strings.xml b/java/com/android/dialer/theme/common/res/values-en-rIN/strings.xml
index c366dac..b95c8a1 100644
--- a/java/com/android/dialer/theme/common/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-en-rIN/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Payphone</string>
   <string name="emergency_number">Emergency number</string>
-  <string name="launcherActivityLabel">Phone</string>
   <string name="call">Call</string>
   <string name="video_call_lte_to_wifi_handover_toast">Continuing call using Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT not available for this call</string>
diff --git a/java/com/android/dialer/theme/common/res/values-es-rUS/strings.xml b/java/com/android/dialer/theme/common/res/values-es-rUS/strings.xml
index 340c0d0..c8bedd9 100644
--- a/java/com/android/dialer/theme/common/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-es-rUS/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Teléfono público</string>
   <string name="emergency_number">Número de emergencia</string>
-  <string name="launcherActivityLabel">Teléfono</string>
   <string name="call">Llamar</string>
   <string name="video_call_lte_to_wifi_handover_toast">Continuando llamada a través de Wi-Fi…</string>
   <string name="rtt_call_not_available_toast">La función de RTT no está disponible en esta llamada</string>
diff --git a/java/com/android/dialer/theme/common/res/values-es/strings.xml b/java/com/android/dialer/theme/common/res/values-es/strings.xml
index 50eb043..03f2ffa 100644
--- a/java/com/android/dialer/theme/common/res/values-es/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-es/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Teléfono público</string>
   <string name="emergency_number">Número de emergencia</string>
-  <string name="launcherActivityLabel">Teléfono</string>
   <string name="call">Llamar</string>
   <string name="video_call_lte_to_wifi_handover_toast">Continuando la llamada a través de Wi-Fi…</string>
   <string name="rtt_call_not_available_toast">TTR no disponible para esta llamada</string>
diff --git a/java/com/android/dialer/theme/common/res/values-et/strings.xml b/java/com/android/dialer/theme/common/res/values-et/strings.xml
index a7a4466..4f8ce8a 100644
--- a/java/com/android/dialer/theme/common/res/values-et/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-et/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefoniautomaat</string>
   <string name="emergency_number">Hädaabinumber</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Helista</string>
   <string name="video_call_lte_to_wifi_handover_toast">Kõnet jätkatakse WiFi kaudu …</string>
   <string name="rtt_call_not_available_toast">RTT pole selle kõne puhul saadaval</string>
diff --git a/java/com/android/dialer/theme/common/res/values-eu/strings.xml b/java/com/android/dialer/theme/common/res/values-eu/strings.xml
index 8232dc6..3026e14 100644
--- a/java/com/android/dialer/theme/common/res/values-eu/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-eu/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefono publikoa</string>
   <string name="emergency_number">Larrialdietarako zenbakia</string>
-  <string name="launcherActivityLabel">Telefonoa</string>
   <string name="call">Deitu</string>
   <string name="video_call_lte_to_wifi_handover_toast">Wi-Fi bidezko konexiora aldatzen…</string>
   <string name="rtt_call_not_available_toast">Deietan testua bidaltzeko eginbidea ez dago erabilgarri dei honetan</string>
diff --git a/java/com/android/dialer/theme/common/res/values-fa/strings.xml b/java/com/android/dialer/theme/common/res/values-fa/strings.xml
index d96d7aa..9991a36 100644
--- a/java/com/android/dialer/theme/common/res/values-fa/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-fa/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">تلفن عمومی</string>
   <string name="emergency_number">شماره اضطراری</string>
-  <string name="launcherActivityLabel">تلفن</string>
   <string name="call">تماس</string>
   <string name="video_call_lte_to_wifi_handover_toast">‏ادامه تماس با استفاده از Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">«نوشتار هم‌زمان» برای این تماس دردسترس نیست</string>
diff --git a/java/com/android/dialer/theme/common/res/values-fi/strings.xml b/java/com/android/dialer/theme/common/res/values-fi/strings.xml
index 7ab7e46..5960fef 100644
--- a/java/com/android/dialer/theme/common/res/values-fi/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-fi/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Maksupuhelin</string>
   <string name="emergency_number">Hätänumero</string>
-  <string name="launcherActivityLabel">Puhelin</string>
   <string name="call">Soita</string>
   <string name="video_call_lte_to_wifi_handover_toast">Jatketaan puhelua Wi‑Fi-yhteydellä…</string>
   <string name="rtt_call_not_available_toast">RTT ei ole käytettävissä tässä puhelussa.</string>
diff --git a/java/com/android/dialer/theme/common/res/values-fr-rCA/strings.xml b/java/com/android/dialer/theme/common/res/values-fr-rCA/strings.xml
index b774b4c..45b8a58 100644
--- a/java/com/android/dialer/theme/common/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-fr-rCA/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Cabine téléphonique</string>
   <string name="emergency_number">Numéro d\'urgence</string>
-  <string name="launcherActivityLabel">Téléphone</string>
   <string name="call">Appeler</string>
   <string name="video_call_lte_to_wifi_handover_toast">Transfert de l\'appel du réseau Wi-Fi au réseau LTE en cours…</string>
   <string name="rtt_call_not_available_toast">Texte en temps réel non disponible pour cet appel</string>
diff --git a/java/com/android/dialer/theme/common/res/values-fr/strings.xml b/java/com/android/dialer/theme/common/res/values-fr/strings.xml
index 0c0e8f5..5498637 100644
--- a/java/com/android/dialer/theme/common/res/values-fr/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-fr/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Cabine téléphonique</string>
   <string name="emergency_number">Numéro d\'urgence</string>
-  <string name="launcherActivityLabel">Téléphone</string>
   <string name="call">Appeler</string>
   <string name="video_call_lte_to_wifi_handover_toast">Poursuite de l\'appel en utilisant le Wi-Fi…</string>
   <string name="rtt_call_not_available_toast">Texte en temps réel non disponible pour cet appel</string>
diff --git a/java/com/android/dialer/theme/common/res/values-gl/strings.xml b/java/com/android/dialer/theme/common/res/values-gl/strings.xml
index c6c2405..1346355 100644
--- a/java/com/android/dialer/theme/common/res/values-gl/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-gl/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Teléfono público</string>
   <string name="emergency_number">Número de urxencia</string>
-  <string name="launcherActivityLabel">Teléfono</string>
   <string name="call">Chamar</string>
   <string name="video_call_lte_to_wifi_handover_toast">Continuando a chamada a través da wifi…</string>
   <string name="rtt_call_not_available_toast">A función RTT non está dispoñible para esta chamada</string>
diff --git a/java/com/android/dialer/theme/common/res/values-gu/strings.xml b/java/com/android/dialer/theme/common/res/values-gu/strings.xml
index 1934b67..42d6067 100644
--- a/java/com/android/dialer/theme/common/res/values-gu/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-gu/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">પેફોન</string>
   <string name="emergency_number">કટોકટીનો નંબર</string>
-  <string name="launcherActivityLabel">ફોન</string>
   <string name="call">કૉલ કરો</string>
   <string name="video_call_lte_to_wifi_handover_toast">વાઇ-ફાઇનો ઉપયોગ કરીને કૉલ ચાલુ રાખી રહ્યાં છીએ…</string>
   <string name="rtt_call_not_available_toast">આ કૉલ માટે RTT ઉપલબ્ધ નથી</string>
diff --git a/java/com/android/dialer/theme/common/res/values-hi/strings.xml b/java/com/android/dialer/theme/common/res/values-hi/strings.xml
index b243988..81e154f 100644
--- a/java/com/android/dialer/theme/common/res/values-hi/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-hi/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">पे-फ़ोन</string>
   <string name="emergency_number">आपातकालीन नंबर</string>
-  <string name="launcherActivityLabel">फ़ोन</string>
   <string name="call">कॉल करें</string>
   <string name="video_call_lte_to_wifi_handover_toast">कॉल वाई‑फ़ाई पर जारी रखा जा रहा है…</string>
   <string name="rtt_call_not_available_toast">इस कॉल के लिए आरटीटी उपलब्ध नहीं है</string>
diff --git a/java/com/android/dialer/theme/common/res/values-hr/strings.xml b/java/com/android/dialer/theme/common/res/values-hr/strings.xml
index b344138..b33cc09 100644
--- a/java/com/android/dialer/theme/common/res/values-hr/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-hr/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Javna telefonska govornica</string>
   <string name="emergency_number">Broj hitne službe</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Pozovi</string>
   <string name="video_call_lte_to_wifi_handover_toast">Poziv se nastavlja putem Wi‑Fi mreže…</string>
   <string name="rtt_call_not_available_toast">RTT nije dostupan za ovaj poziv</string>
diff --git a/java/com/android/dialer/theme/common/res/values-hu/strings.xml b/java/com/android/dialer/theme/common/res/values-hu/strings.xml
index 73e832a..87dec5b 100644
--- a/java/com/android/dialer/theme/common/res/values-hu/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-hu/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Nyilvános telefon</string>
   <string name="emergency_number">Segélyhívó szám</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Hívás</string>
   <string name="video_call_lte_to_wifi_handover_toast">Hívás folytatása Wi‑Fi-kapcsolaton keresztül…</string>
   <string name="rtt_call_not_available_toast">Az RTT funkció nem áll rendelkezésre ebben a hívásban.</string>
diff --git a/java/com/android/dialer/theme/common/res/values-hy/strings.xml b/java/com/android/dialer/theme/common/res/values-hy/strings.xml
index 586b10e..18ec3ff 100644
--- a/java/com/android/dialer/theme/common/res/values-hy/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-hy/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Բջջային տերմինալ</string>
   <string name="emergency_number">Արտակարգ ծառայության հեռախոսահամար</string>
-  <string name="launcherActivityLabel">Հեռախոս</string>
   <string name="call">Զանգել</string>
   <string name="video_call_lte_to_wifi_handover_toast">Անցում Wi‑Fi-ին…</string>
   <string name="rtt_call_not_available_toast">RTT գործառույթը հասանելի չէ այս զանգի համար</string>
diff --git a/java/com/android/dialer/theme/common/res/values-in/strings.xml b/java/com/android/dialer/theme/common/res/values-in/strings.xml
index b15e59b..a678229 100644
--- a/java/com/android/dialer/theme/common/res/values-in/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-in/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telepon Umum</string>
   <string name="emergency_number">Nomor darurat</string>
-  <string name="launcherActivityLabel">Telepon</string>
   <string name="call">Telepon</string>
   <string name="video_call_lte_to_wifi_handover_toast">Melanjutkan panggilan dengan Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT tidak tersedia untuk panggilan ini</string>
diff --git a/java/com/android/dialer/theme/common/res/values-is/strings.xml b/java/com/android/dialer/theme/common/res/values-is/strings.xml
index 87a4ca4..61c504d 100644
--- a/java/com/android/dialer/theme/common/res/values-is/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-is/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Símasjálfsali</string>
   <string name="emergency_number">Neyðarnúmer</string>
-  <string name="launcherActivityLabel">Sími</string>
   <string name="call">Hringja</string>
   <string name="video_call_lte_to_wifi_handover_toast">Heldur símtali áfram með Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT er ekki í boði fyrir þetta símtal</string>
diff --git a/java/com/android/dialer/theme/common/res/values-it/strings.xml b/java/com/android/dialer/theme/common/res/values-it/strings.xml
index c5b1add..f066fa2 100644
--- a/java/com/android/dialer/theme/common/res/values-it/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-it/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Cabina telefonica</string>
   <string name="emergency_number">Numero di emergenza</string>
-  <string name="launcherActivityLabel">Telefono</string>
   <string name="call">Chiama</string>
   <string name="video_call_lte_to_wifi_handover_toast">Proseguimento della chiamata utilizzando la rete Wi-Fi…</string>
   <string name="rtt_call_not_available_toast">RTT non disponibile per questa chiamata</string>
diff --git a/java/com/android/dialer/theme/common/res/values-iw/strings.xml b/java/com/android/dialer/theme/common/res/values-iw/strings.xml
index 6513602..28fd133 100644
--- a/java/com/android/dialer/theme/common/res/values-iw/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-iw/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">טלפון ציבורי</string>
   <string name="emergency_number">מספר חירום</string>
-  <string name="launcherActivityLabel">טלפון</string>
   <string name="call">התקשר</string>
   <string name="video_call_lte_to_wifi_handover_toast">‏המערכת ממשיכה את השיחה באמצעות Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">‏אי אפשר להשתמש ב-RTT בשיחה הזו</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ja/strings.xml b/java/com/android/dialer/theme/common/res/values-ja/strings.xml
index 36c3059..832ce3d 100644
--- a/java/com/android/dialer/theme/common/res/values-ja/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ja/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">公衆電話</string>
   <string name="emergency_number">緊急通報番号</string>
-  <string name="launcherActivityLabel">電話</string>
   <string name="call">発信</string>
   <string name="video_call_lte_to_wifi_handover_toast">Wi‑Fi を使用して通話を継続しています…</string>
   <string name="rtt_call_not_available_toast">この通話では RTT をご利用いただけません</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ka/strings.xml b/java/com/android/dialer/theme/common/res/values-ka/strings.xml
index 78448ea..5a71096 100644
--- a/java/com/android/dialer/theme/common/res/values-ka/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ka/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">გადახდის ტელეფონი</string>
   <string name="emergency_number">გადაუდებელი დახმარების ნომერი</string>
-  <string name="launcherActivityLabel">ტელეფონი</string>
   <string name="call">დარეკვა</string>
   <string name="video_call_lte_to_wifi_handover_toast">ზარი გრძელდება Wi‑Fi-ს გამოყენებით…</string>
   <string name="rtt_call_not_available_toast">RTT ამ ზარისთვის მიუწვდომელია</string>
diff --git a/java/com/android/dialer/theme/common/res/values-kk/strings.xml b/java/com/android/dialer/theme/common/res/values-kk/strings.xml
index fc87c6c..5bbd1db 100644
--- a/java/com/android/dialer/theme/common/res/values-kk/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-kk/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Автомат-телефон</string>
   <string name="emergency_number">Төтенше қызмет нөмір</string>
-  <string name="launcherActivityLabel">Телефон</string>
   <string name="call">Қоңырау шалу</string>
   <string name="video_call_lte_to_wifi_handover_toast">Қоңырау Wi‑Fi арқылы жалғасуда…</string>
   <string name="rtt_call_not_available_toast">Бұл қоңырауда RTT мүмкіндігі жоқ</string>
diff --git a/java/com/android/dialer/theme/common/res/values-km/strings.xml b/java/com/android/dialer/theme/common/res/values-km/strings.xml
index 4d1bbc3..ff91325 100644
--- a/java/com/android/dialer/theme/common/res/values-km/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-km/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">ទូរស័ព្ទសាធារណៈ</string>
   <string name="emergency_number">លេខអាសន្ន</string>
-  <string name="launcherActivityLabel">ទូរស័ព្ទ</string>
   <string name="call">ហៅ​ទូរសព្ទ</string>
   <string name="video_call_lte_to_wifi_handover_toast">កំពុង​បន្ត​ការហៅ​ទូរសព្ទ​ដោយ​ប្រើ Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT មិន​អាច​ប្រើ​បាន​សម្រាប់​ការហៅ​នេះ​ទេ</string>
diff --git a/java/com/android/dialer/theme/common/res/values-kn/strings.xml b/java/com/android/dialer/theme/common/res/values-kn/strings.xml
index 388608e..2e15bcc 100644
--- a/java/com/android/dialer/theme/common/res/values-kn/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-kn/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">ಪೇಫೋನ್</string>
   <string name="emergency_number">ತುರ್ತು ಸಂಖ್ಯೆ</string>
-  <string name="launcherActivityLabel">ಫೋನ್</string>
   <string name="call">ಕರೆಮಾಡಿ</string>
   <string name="video_call_lte_to_wifi_handover_toast">ವೈ-ಫೈ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕರೆ ಮಾಡುವುದನ್ನು ಮುಂದುವರಿಸಲಾಗುತ್ತಿದೆ…</string>
   <string name="rtt_call_not_available_toast">ಈ ಕರೆಗಾಗಿ RTT ಲಭ್ಯವಿಲ್ಲ</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ko/strings.xml b/java/com/android/dialer/theme/common/res/values-ko/strings.xml
index 82d647e..ab65a67 100644
--- a/java/com/android/dialer/theme/common/res/values-ko/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ko/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">공중전화</string>
   <string name="emergency_number">긴급 전화번호</string>
-  <string name="launcherActivityLabel">휴대전화</string>
   <string name="call">전화</string>
   <string name="video_call_lte_to_wifi_handover_toast">Wi‑Fi를 사용하여 계속 통화 중…</string>
   <string name="rtt_call_not_available_toast">이 통화에서 RTT를 사용할 수 없음</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ky/strings.xml b/java/com/android/dialer/theme/common/res/values-ky/strings.xml
index ededcdc..f081904 100644
--- a/java/com/android/dialer/theme/common/res/values-ky/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ky/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Таксофон</string>
   <string name="emergency_number">Өзгөчө кырдаал номери</string>
-  <string name="launcherActivityLabel">Телефон</string>
   <string name="call">Чалуу</string>
   <string name="video_call_lte_to_wifi_handover_toast">Wi‑Fi аркылуу чалуу улантылууда…</string>
   <string name="rtt_call_not_available_toast">Бул чалууда RTT функциясы жеткиликтүү эмес</string>
diff --git a/java/com/android/dialer/theme/common/res/values-lo/strings.xml b/java/com/android/dialer/theme/common/res/values-lo/strings.xml
index c4c8363..1eac994 100644
--- a/java/com/android/dialer/theme/common/res/values-lo/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-lo/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">ຕູ້​ໂທ​ລະ​ສັບ​ສາ​ທາ​ລະ​ນະ</string>
   <string name="emergency_number">ເບີໂທສຸກເສີນ</string>
-  <string name="launcherActivityLabel">ໂທລະສັບ</string>
   <string name="call">ໂທ</string>
   <string name="video_call_lte_to_wifi_handover_toast">ກຳລັງສືບຕໍ່ການໂທໂດຍໃຊ້ Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">ບໍ່ສາມາດໃຊ້ RTT ສຳລັບການໂທນີ້ໄດ້</string>
diff --git a/java/com/android/dialer/theme/common/res/values-lt/strings.xml b/java/com/android/dialer/theme/common/res/values-lt/strings.xml
index 05f9a39..12035e2 100644
--- a/java/com/android/dialer/theme/common/res/values-lt/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-lt/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Taksofonas</string>
   <string name="emergency_number">Pagalbos numeris</string>
-  <string name="launcherActivityLabel">Telefonas</string>
   <string name="call">Skambinti</string>
   <string name="video_call_lte_to_wifi_handover_toast">Skambutis tęsiamas naudojant „Wi‑Fi“…</string>
   <string name="rtt_call_not_available_toast">Atliekant šį skambutį RTT paslauga nepasiekiama</string>
diff --git a/java/com/android/dialer/theme/common/res/values-lv/strings.xml b/java/com/android/dialer/theme/common/res/values-lv/strings.xml
index 8ea7118..2879fc0 100644
--- a/java/com/android/dialer/theme/common/res/values-lv/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-lv/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Maksas tālrunis</string>
   <string name="emergency_number">Ārkārtas numurs</string>
-  <string name="launcherActivityLabel">Tālrunis</string>
   <string name="call">Zvanīt</string>
   <string name="video_call_lte_to_wifi_handover_toast">Zvans tiek turpināts, izmantojot Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT nav pieejams šim zvanam.</string>
diff --git a/java/com/android/dialer/theme/common/res/values-mk/strings.xml b/java/com/android/dialer/theme/common/res/values-mk/strings.xml
index c043447..78cad3d 100644
--- a/java/com/android/dialer/theme/common/res/values-mk/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-mk/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Говорница</string>
   <string name="emergency_number">Број за итни случаи</string>
-  <string name="launcherActivityLabel">Телефон</string>
   <string name="call">Повикајте</string>
   <string name="video_call_lte_to_wifi_handover_toast">Повикот ќе продолжи преку Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT не е достапна за повиков</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ml/strings.xml b/java/com/android/dialer/theme/common/res/values-ml/strings.xml
index 5075c9b..f81838c 100644
--- a/java/com/android/dialer/theme/common/res/values-ml/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ml/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">പണം നൽകി ഉപയോഗിക്കുന്ന ഫോൺ</string>
   <string name="emergency_number">അടിയന്തര നമ്പർ</string>
-  <string name="launcherActivityLabel">ഫോണ്‍</string>
   <string name="call">വിളിക്കുക</string>
   <string name="video_call_lte_to_wifi_handover_toast">വൈഫൈ ഉപയോഗിച്ച് കോൾ തുടരുന്നു…</string>
   <string name="rtt_call_not_available_toast">ഈ കോളിന് RTT ലഭ്യമല്ല</string>
diff --git a/java/com/android/dialer/theme/common/res/values-mn/strings.xml b/java/com/android/dialer/theme/common/res/values-mn/strings.xml
index 4baeb92..ad1bcd9 100644
--- a/java/com/android/dialer/theme/common/res/values-mn/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-mn/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Payphone</string>
   <string name="emergency_number">Яаралтай тусламжийн дугаар</string>
-  <string name="launcherActivityLabel">Утас</string>
   <string name="call">Залгах</string>
   <string name="video_call_lte_to_wifi_handover_toast">Wi‑Fi ашиглан дуудлагыг үргэлжлүүлж байна…</string>
   <string name="rtt_call_not_available_toast">RTT (Тухайн агшны текст) энэ дуудлагад боломжгүй байна</string>
diff --git a/java/com/android/dialer/theme/common/res/values-mr/strings.xml b/java/com/android/dialer/theme/common/res/values-mr/strings.xml
index 5a43652..4285801 100644
--- a/java/com/android/dialer/theme/common/res/values-mr/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-mr/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">सार्वजनिक फोन</string>
   <string name="emergency_number">आणीबाणी क्रमांक</string>
-  <string name="launcherActivityLabel">फोन</string>
   <string name="call">कॉल करा</string>
   <string name="video_call_lte_to_wifi_handover_toast">वाय-फाय वापरून कॉल सुरू ठेवा…</string>
   <string name="rtt_call_not_available_toast">या कॉलसाठी RTT उपलब्द्ध नाही</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ms/strings.xml b/java/com/android/dialer/theme/common/res/values-ms/strings.xml
index 3fbbb27..8539d05 100644
--- a/java/com/android/dialer/theme/common/res/values-ms/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ms/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefon Awam</string>
   <string name="emergency_number">Nombor kecemasan</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Panggil</string>
   <string name="video_call_lte_to_wifi_handover_toast">Meneruskan panggilan menggunakan Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT tidak tersedia untuk panggilan ini</string>
diff --git a/java/com/android/dialer/theme/common/res/values-my/strings.xml b/java/com/android/dialer/theme/common/res/values-my/strings.xml
index 108bcd4..0a3c120 100644
--- a/java/com/android/dialer/theme/common/res/values-my/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-my/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">ငွေပေးရသည့်ဖုန်း</string>
   <string name="emergency_number">အရေးပေါ်နံပါတ်</string>
-  <string name="launcherActivityLabel">ဖုန်း</string>
   <string name="call">ခေါ်ဆိုရန်</string>
   <string name="video_call_lte_to_wifi_handover_toast">Wi‑Fi သုံးပြီး ဆက်လက်ခေါ်ဆိုနေသည်…</string>
   <string name="rtt_call_not_available_toast">ဤခေါ်ဆိုမှုအတွက် RTT ကို အသုံးမပြုနိုင်ပါ</string>
diff --git a/java/com/android/dialer/theme/common/res/values-nb/strings.xml b/java/com/android/dialer/theme/common/res/values-nb/strings.xml
index 8d18894..ca560a5 100644
--- a/java/com/android/dialer/theme/common/res/values-nb/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-nb/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefonkiosk</string>
   <string name="emergency_number">Nødnummer</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Ring</string>
   <string name="video_call_lte_to_wifi_handover_toast">Fortsetter samtalen via Wi‑Fi …</string>
   <string name="rtt_call_not_available_toast">STT er ikke tilgjengelig for dette anropet</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ne/strings.xml b/java/com/android/dialer/theme/common/res/values-ne/strings.xml
index dc71dda..01f47ad 100644
--- a/java/com/android/dialer/theme/common/res/values-ne/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ne/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">पेफोन</string>
   <string name="emergency_number">आपतकालीन नम्बर</string>
-  <string name="launcherActivityLabel">फोन</string>
   <string name="call">कल गर्नुहोस्</string>
   <string name="video_call_lte_to_wifi_handover_toast">Wi‑Fi प्रयोग गरी कललाई निरन्तरता दिँदै…</string>
   <string name="rtt_call_not_available_toast">यो कलमा RTT उपलब्ध छैन</string>
diff --git a/java/com/android/dialer/theme/common/res/values-night/colors.xml b/java/com/android/dialer/theme/common/res/values-night/colors.xml
new file mode 100644
index 0000000..41b308d
--- /dev/null
+++ b/java/com/android/dialer/theme/common/res/values-night/colors.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2012 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<!-- The colors in this file aren't configured at the theme level. -->
+<resources>
+  <color name="dialer_call_green">#3ee0a0</color>
+  <color name="dialer_end_call_button_color">#e46962</color>
+  <color name="dialer_link_color">#b5c4ff</color>
+  <color name="dialer_snackbar_action_text_color">@android:color/system_accent1_600</color>
+  <color name="dialer_call_icon_color">@android:color/black</color>
+</resources>
diff --git a/java/com/android/dialer/theme/common/res/values-nl/strings.xml b/java/com/android/dialer/theme/common/res/values-nl/strings.xml
index 758ca04..db21f0b 100644
--- a/java/com/android/dialer/theme/common/res/values-nl/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-nl/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefooncel</string>
   <string name="emergency_number">Alarmnummer</string>
-  <string name="launcherActivityLabel">Telefoon</string>
   <string name="call">Bellen</string>
   <string name="video_call_lte_to_wifi_handover_toast">Gesprek voortzetten via wifi…</string>
   <string name="rtt_call_not_available_toast">RTT niet beschikbaar voor deze oproep</string>
diff --git a/java/com/android/dialer/theme/common/res/values-no/strings.xml b/java/com/android/dialer/theme/common/res/values-no/strings.xml
index 8d18894..ca560a5 100644
--- a/java/com/android/dialer/theme/common/res/values-no/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-no/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefonkiosk</string>
   <string name="emergency_number">Nødnummer</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Ring</string>
   <string name="video_call_lte_to_wifi_handover_toast">Fortsetter samtalen via Wi‑Fi …</string>
   <string name="rtt_call_not_available_toast">STT er ikke tilgjengelig for dette anropet</string>
diff --git a/java/com/android/dialer/theme/common/res/values-pa/strings.xml b/java/com/android/dialer/theme/common/res/values-pa/strings.xml
index fb831dd..6c68a77 100644
--- a/java/com/android/dialer/theme/common/res/values-pa/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-pa/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">ਪੇਫੋਨ</string>
   <string name="emergency_number">ਸੰਕਟਕਾਲੀਨ ਨੰਬਰ</string>
-  <string name="launcherActivityLabel">ਫੋਨ</string>
   <string name="call">ਕਾਲ ਕਰੋ</string>
   <string name="video_call_lte_to_wifi_handover_toast">ਵਾਈ-ਫਾਈ ਦੀ ਵਰਤੋ ਨਾਲ ਕਾਲ ਜਾਰੀ ਰੱਖੋ…</string>
   <string name="rtt_call_not_available_toast">ਇਸ ਕਾਲ ਲਈ RTT ਉਪਲਬਧ ਨਹੀਂ ਹੈ</string>
diff --git a/java/com/android/dialer/theme/common/res/values-pl/strings.xml b/java/com/android/dialer/theme/common/res/values-pl/strings.xml
index 54e5ee8..9526bbf 100644
--- a/java/com/android/dialer/theme/common/res/values-pl/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-pl/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Automat telefoniczny</string>
   <string name="emergency_number">Numer alarmowy</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Zadzwoń</string>
   <string name="video_call_lte_to_wifi_handover_toast">Kontynuuję rozmowę przy użyciu sieci Wi-Fi…</string>
   <string name="rtt_call_not_available_toast">Funkcja RTT jest niedostępna w przypadku tego połączenia</string>
diff --git a/java/com/android/dialer/theme/common/res/values-pt-rBR/strings.xml b/java/com/android/dialer/theme/common/res/values-pt-rBR/strings.xml
index 99c2a8b..8925437 100644
--- a/java/com/android/dialer/theme/common/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-pt-rBR/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefone público</string>
   <string name="emergency_number">Número de emergência</string>
-  <string name="launcherActivityLabel">Telefone</string>
   <string name="call">Ligar</string>
   <string name="video_call_lte_to_wifi_handover_toast">Continuando a chamada por Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">A RTT não está disponível para esta chamada</string>
diff --git a/java/com/android/dialer/theme/common/res/values-pt-rPT/strings.xml b/java/com/android/dialer/theme/common/res/values-pt-rPT/strings.xml
index 37d9cd1..c93ce92 100644
--- a/java/com/android/dialer/theme/common/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-pt-rPT/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefone público</string>
   <string name="emergency_number">Número de emergência</string>
-  <string name="launcherActivityLabel">Telefone</string>
   <string name="call">Telefonar</string>
   <string name="video_call_lte_to_wifi_handover_toast">Continuar a chamada através de Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT não está disponível para esta chamada</string>
diff --git a/java/com/android/dialer/theme/common/res/values-pt/strings.xml b/java/com/android/dialer/theme/common/res/values-pt/strings.xml
index 99c2a8b..8925437 100644
--- a/java/com/android/dialer/theme/common/res/values-pt/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-pt/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefone público</string>
   <string name="emergency_number">Número de emergência</string>
-  <string name="launcherActivityLabel">Telefone</string>
   <string name="call">Ligar</string>
   <string name="video_call_lte_to_wifi_handover_toast">Continuando a chamada por Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">A RTT não está disponível para esta chamada</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ro/strings.xml b/java/com/android/dialer/theme/common/res/values-ro/strings.xml
index 8dd7733..6602ff9 100644
--- a/java/com/android/dialer/theme/common/res/values-ro/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ro/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefon public</string>
   <string name="emergency_number">Număr de urgență</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Apelați</string>
   <string name="video_call_lte_to_wifi_handover_toast">Se continuă apelul folosind Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">Funcția TTR nu este disponibilă pentru apel</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ru/strings.xml b/java/com/android/dialer/theme/common/res/values-ru/strings.xml
index be33a12..8a7cbb7 100644
--- a/java/com/android/dialer/theme/common/res/values-ru/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ru/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Телефон-автомат</string>
   <string name="emergency_number">Экстренная служба</string>
-  <string name="launcherActivityLabel">Телефон</string>
   <string name="call">Позвонить</string>
   <string name="video_call_lte_to_wifi_handover_toast">Переключение на Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">Функция RTT недоступна для этого вызова</string>
diff --git a/java/com/android/dialer/theme/common/res/values-si/strings.xml b/java/com/android/dialer/theme/common/res/values-si/strings.xml
index bf9403e..9a5371a 100644
--- a/java/com/android/dialer/theme/common/res/values-si/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-si/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">පේෆෝනය</string>
   <string name="emergency_number">හදිසි ඇමතුම් අංකය</string>
-  <string name="launcherActivityLabel">දුරකථනය</string>
   <string name="call">ඇමතුම</string>
   <string name="video_call_lte_to_wifi_handover_toast">Wi‑Fi භාවිතයෙන් ඇමතුම දිගටම කරගෙන යමින්…</string>
   <string name="rtt_call_not_available_toast">RTT මෙම ඇමතුම සඳහා ලබා ගත නොහැකිය</string>
diff --git a/java/com/android/dialer/theme/common/res/values-sk/strings.xml b/java/com/android/dialer/theme/common/res/values-sk/strings.xml
index faafa6e..fe5a657 100644
--- a/java/com/android/dialer/theme/common/res/values-sk/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sk/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefónny automat</string>
   <string name="emergency_number">Číslo tiesňovej linky</string>
-  <string name="launcherActivityLabel">Telefón</string>
   <string name="call">Volať</string>
   <string name="video_call_lte_to_wifi_handover_toast">Pokračuje sa v hovore cez Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">Pre tento hovor nie je okamžitý text k dispozícii</string>
diff --git a/java/com/android/dialer/theme/common/res/values-sl/strings.xml b/java/com/android/dialer/theme/common/res/values-sl/strings.xml
index d4a8efa..48b88d7 100644
--- a/java/com/android/dialer/theme/common/res/values-sl/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sl/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefonska govorilnica</string>
   <string name="emergency_number">Številka za klic v sili</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Pokliči</string>
   <string name="video_call_lte_to_wifi_handover_toast">Nadaljevanje klica prek Wi-Fi-ja …</string>
   <string name="rtt_call_not_available_toast">RTT ni na voljo za ta klic</string>
diff --git a/java/com/android/dialer/theme/common/res/values-sq/strings.xml b/java/com/android/dialer/theme/common/res/values-sq/strings.xml
index 3924fb8..7632ba8 100644
--- a/java/com/android/dialer/theme/common/res/values-sq/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sq/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefon me pagesë</string>
   <string name="emergency_number">Numri i urgjencës</string>
-  <string name="launcherActivityLabel">Telefoni</string>
   <string name="call">Telefono</string>
   <string name="video_call_lte_to_wifi_handover_toast">Po vazhdon telefonatën duke përdorur Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">Funksioni RTT nuk ofrohet për këtë telefonatë</string>
diff --git a/java/com/android/dialer/theme/common/res/values-sr/strings.xml b/java/com/android/dialer/theme/common/res/values-sr/strings.xml
index 0b65e5a..65c7e75 100644
--- a/java/com/android/dialer/theme/common/res/values-sr/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sr/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Телефонска говорница</string>
   <string name="emergency_number">Број хитне службе</string>
-  <string name="launcherActivityLabel">Телефон</string>
   <string name="call">Позови</string>
   <string name="video_call_lte_to_wifi_handover_toast">Позив се наставља помоћу Wi‑Fi-ја…</string>
   <string name="rtt_call_not_available_toast">RTT није доступан за овај позив</string>
diff --git a/java/com/android/dialer/theme/common/res/values-sv/strings.xml b/java/com/android/dialer/theme/common/res/values-sv/strings.xml
index 4154f3d..d230c08 100644
--- a/java/com/android/dialer/theme/common/res/values-sv/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sv/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Telefonautomat</string>
   <string name="emergency_number">Larmnummer</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Ring</string>
   <string name="video_call_lte_to_wifi_handover_toast">Samtalet fortsätter med Wi‑Fi …</string>
   <string name="rtt_call_not_available_toast">RTT är inte tillgängligt för det här samtalet</string>
diff --git a/java/com/android/dialer/theme/common/res/values-sw/strings.xml b/java/com/android/dialer/theme/common/res/values-sw/strings.xml
index 6b358dc..98f90cd 100644
--- a/java/com/android/dialer/theme/common/res/values-sw/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-sw/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Simu ya kulipia</string>
   <string name="emergency_number">Nambari ya dharura</string>
-  <string name="launcherActivityLabel">Simu</string>
   <string name="call">Piga simu</string>
   <string name="video_call_lte_to_wifi_handover_toast">Inaendelea kupiga simu ya video kupitia Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT haipatikani kwa ajili ya simu hii</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ta/strings.xml b/java/com/android/dialer/theme/common/res/values-ta/strings.xml
index 5b2e9c9..7ba97a7 100644
--- a/java/com/android/dialer/theme/common/res/values-ta/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ta/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">கட்டணத் தொலைபேசி</string>
   <string name="emergency_number">அவசர எண்</string>
-  <string name="launcherActivityLabel">மொபைல்</string>
   <string name="call">அழை</string>
   <string name="video_call_lte_to_wifi_handover_toast">வைஃபையைப் பயன்படுத்தி அழைப்பைத் தொடர்கிறது…</string>
   <string name="rtt_call_not_available_toast">இந்த அழைப்பிற்கு RTT கிடையாது</string>
diff --git a/java/com/android/dialer/theme/common/res/values-te/strings.xml b/java/com/android/dialer/theme/common/res/values-te/strings.xml
index b88dd8b..c3b0b59 100644
--- a/java/com/android/dialer/theme/common/res/values-te/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-te/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">పే ఫోన్</string>
   <string name="emergency_number">అత్యవసర నంబర్</string>
-  <string name="launcherActivityLabel">ఫోన్</string>
   <string name="call">కాల్ చేయి</string>
   <string name="video_call_lte_to_wifi_handover_toast">Wi‑Fiని ఉపయోగించి కాల్‌ను కొనసాగిస్తోంది…</string>
   <string name="rtt_call_not_available_toast">ఈ కాల్‌కు RTT అందుబాటులో లేదు</string>
diff --git a/java/com/android/dialer/theme/common/res/values-th/strings.xml b/java/com/android/dialer/theme/common/res/values-th/strings.xml
index 4324baa..ff66648 100644
--- a/java/com/android/dialer/theme/common/res/values-th/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-th/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">โทรศัพท์สาธารณะ</string>
   <string name="emergency_number">หมายเลขฉุกเฉิน</string>
-  <string name="launcherActivityLabel">โทรศัพท์</string>
   <string name="call">โทร</string>
   <string name="video_call_lte_to_wifi_handover_toast">โทรต่อไปโดยใช้ Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">RTT ไม่สามารถใช้ได้สำหรับการโทรนี้</string>
diff --git a/java/com/android/dialer/theme/common/res/values-tl/strings.xml b/java/com/android/dialer/theme/common/res/values-tl/strings.xml
index 8b210f6..c57fb3b 100644
--- a/java/com/android/dialer/theme/common/res/values-tl/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-tl/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Payphone</string>
   <string name="emergency_number">Pang-emergency na numero</string>
-  <string name="launcherActivityLabel">Telepono</string>
   <string name="call">Tawag</string>
   <string name="video_call_lte_to_wifi_handover_toast">Ipinagpapatuloy ang tawag gamit ang Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">Hindi available ang RTT para sa tawag na ito</string>
diff --git a/java/com/android/dialer/theme/common/res/values-tr/strings.xml b/java/com/android/dialer/theme/common/res/values-tr/strings.xml
index 324f3dc..e8e6569 100644
--- a/java/com/android/dialer/theme/common/res/values-tr/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-tr/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Ankesörlü telefon</string>
   <string name="emergency_number">Acil durum numarası</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Telefon et</string>
   <string name="video_call_lte_to_wifi_handover_toast">Görüşmeye kablosuz ağ kullanılarak devam ediliyor…</string>
   <string name="rtt_call_not_available_toast">Bu çağrıda RTT kullanılamaz</string>
diff --git a/java/com/android/dialer/theme/common/res/values-uk/strings.xml b/java/com/android/dialer/theme/common/res/values-uk/strings.xml
index de131f6..fbd6062 100644
--- a/java/com/android/dialer/theme/common/res/values-uk/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-uk/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Таксофон</string>
   <string name="emergency_number">Екстрений номер</string>
-  <string name="launcherActivityLabel">Телефон</string>
   <string name="call">Виклик</string>
   <string name="video_call_lte_to_wifi_handover_toast">Продовження виклику за допомогою Wi-Fi…</string>
   <string name="rtt_call_not_available_toast">Функція RTT недоступна для цього виклику</string>
diff --git a/java/com/android/dialer/theme/common/res/values-ur/strings.xml b/java/com/android/dialer/theme/common/res/values-ur/strings.xml
index af868ec..249b895 100644
--- a/java/com/android/dialer/theme/common/res/values-ur/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-ur/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">پے فون</string>
   <string name="emergency_number">ایمرجنسی نمبر</string>
-  <string name="launcherActivityLabel">فون</string>
   <string name="call">کال کریں</string>
   <string name="video_call_lte_to_wifi_handover_toast">‏Wi‑Fi کے ذریعے کال جاری ہے…</string>
   <string name="rtt_call_not_available_toast">‏اس کال کے لئے RTT دستیاب نہیں ہے</string>
diff --git a/java/com/android/dialer/theme/common/res/values-uz/strings.xml b/java/com/android/dialer/theme/common/res/values-uz/strings.xml
index a575046..0dd750b 100644
--- a/java/com/android/dialer/theme/common/res/values-uz/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-uz/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Taksofon</string>
   <string name="emergency_number">Favqulodda xizmat raqami</string>
-  <string name="launcherActivityLabel">Telefon</string>
   <string name="call">Telefon</string>
   <string name="video_call_lte_to_wifi_handover_toast">Chaqiruv Wi‑Fi orqali davom ettirish…</string>
   <string name="rtt_call_not_available_toast">Ushbu chaqiruvda RTT funksiyasidan foydalanish imkonsiz</string>
diff --git a/java/com/android/dialer/theme/common/res/values-vi/strings.xml b/java/com/android/dialer/theme/common/res/values-vi/strings.xml
index bb274ae..dae2a21 100644
--- a/java/com/android/dialer/theme/common/res/values-vi/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-vi/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Điện thoại công cộng</string>
   <string name="emergency_number">Số khẩn cấp</string>
-  <string name="launcherActivityLabel">Điện thoại</string>
   <string name="call">Gọi</string>
   <string name="video_call_lte_to_wifi_handover_toast">Đang tiếp tục cuộc gọi bằng cách sử dụng Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">Không thể sử dụng tin nhắn theo thời gian thực (RTT) cho cuộc gọi này</string>
diff --git a/java/com/android/dialer/theme/common/res/values-zh-rCN/strings.xml b/java/com/android/dialer/theme/common/res/values-zh-rCN/strings.xml
index 780fbe7..a224f80 100644
--- a/java/com/android/dialer/theme/common/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-zh-rCN/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">公用电话</string>
   <string name="emergency_number">紧急呼救号码</string>
-  <string name="launcherActivityLabel">电话</string>
   <string name="call">拨打电话</string>
   <string name="video_call_lte_to_wifi_handover_toast">正在使用 WLAN 继续通话…</string>
   <string name="rtt_call_not_available_toast">此通话不支持实时信息 (RTT) 功能</string>
diff --git a/java/com/android/dialer/theme/common/res/values-zh-rHK/strings.xml b/java/com/android/dialer/theme/common/res/values-zh-rHK/strings.xml
index 02cd157..18a38d3 100644
--- a/java/com/android/dialer/theme/common/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-zh-rHK/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">公共電話</string>
   <string name="emergency_number">緊急電話號碼</string>
-  <string name="launcherActivityLabel">電話</string>
   <string name="call">通話</string>
   <string name="video_call_lte_to_wifi_handover_toast">正在使用 Wi‑Fi 繼續通話…</string>
   <string name="rtt_call_not_available_toast">RTT 不適用於此通話</string>
diff --git a/java/com/android/dialer/theme/common/res/values-zh-rTW/strings.xml b/java/com/android/dialer/theme/common/res/values-zh-rTW/strings.xml
index cce900b..be50373 100644
--- a/java/com/android/dialer/theme/common/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-zh-rTW/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">公用電話</string>
   <string name="emergency_number">緊急電話號碼</string>
-  <string name="launcherActivityLabel">電話</string>
   <string name="call">撥號</string>
   <string name="video_call_lte_to_wifi_handover_toast">使用 Wi‑Fi 繼續進行通話…</string>
   <string name="rtt_call_not_available_toast">本次通話不支援即時文字訊息功能</string>
diff --git a/java/com/android/dialer/theme/common/res/values-zu/strings.xml b/java/com/android/dialer/theme/common/res/values-zu/strings.xml
index cdcec45..f6eb72f 100644
--- a/java/com/android/dialer/theme/common/res/values-zu/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values-zu/strings.xml
@@ -3,7 +3,6 @@
   <string name="unknown_counter">%1$s %2$d</string>
   <string name="payphone">Ucingo olufakwa imali</string>
   <string name="emergency_number">Inombolo ephuthumayo</string>
-  <string name="launcherActivityLabel">Ifoni</string>
   <string name="call">Shaya</string>
   <string name="video_call_lte_to_wifi_handover_toast">Qhubeka ifone usebenzisa i-Wi‑Fi…</string>
   <string name="rtt_call_not_available_toast">I-RTT ayitholakaleli le kholi</string>
diff --git a/java/com/android/dialer/theme/common/res/values/colors.xml b/java/com/android/dialer/theme/common/res/values/colors.xml
index 1831862..2e9e3b6 100644
--- a/java/com/android/dialer/theme/common/res/values/colors.xml
+++ b/java/com/android/dialer/theme/common/res/values/colors.xml
@@ -16,11 +16,12 @@
   -->
 <!-- The colors in this file aren't configured at the theme level. -->
 <resources>
-  <color name="dialer_call_green">#00C853</color>
-  <color name="dialer_end_call_button_color">#BD2A2A</color>
+  <color name="dialer_call_green">#006c49</color>
+  <color name="dialer_end_call_button_color">#dc362e</color>
   <color name="dialer_divider_line_color">#D8D8D8</color>
   <color name="dialer_link_color">#2A56C6</color>
-  <color name="dialer_snackbar_action_text_color">#4285F4</color>
+  <color name="dialer_snackbar_action_text_color">@android:color/system_accent1_600</color>
+  <color name="dialer_call_icon_color">@android:color/white</color>
 
   <!-- Colors for the notification actions -->
   <color name="notification_action_accept">#097138</color>
@@ -31,4 +32,6 @@
 
   <!-- Legacy -->
   <color name="blue_grey_100">#CFD8DC</color>
-</resources>
\ No newline at end of file
+
+  <color name="cardBackgroundColor">@android:color/system_neutral1_50</color>
+</resources>
diff --git a/java/com/android/dialer/theme/common/res/values/dimens.xml b/java/com/android/dialer/theme/common/res/values/dimens.xml
index 88b8a04..f1c4051 100644
--- a/java/com/android/dialer/theme/common/res/values/dimens.xml
+++ b/java/com/android/dialer/theme/common/res/values/dimens.xml
@@ -19,10 +19,6 @@
   <dimen name="call_log_action_icon_dimen">24dp</dimen>
   <dimen name="call_log_action_horizontal_padding">24dp</dimen>
 
-  <dimen name="call_log_primary_text_size">16sp</dimen>
-  <dimen name="call_log_detail_text_size">12sp</dimen>
-  <dimen name="call_log_day_group_heading_size">14sp</dimen>
-  <dimen name="call_log_voicemail_transcription_text_size">14sp</dimen>
   <!-- Height of the call log actions section for each call log entry -->
   <dimen name="call_log_action_height">48dp</dimen>
   <dimen name="call_log_day_group_padding_top">15dp</dimen>
@@ -31,26 +27,16 @@
   <!-- Height of the actionBar - this is 8dps bigger than the platform standard to give more
   room to the search box-->
   <dimen name="action_bar_height">56dp</dimen>
-  <dimen name="action_bar_height_large">64dp</dimen>
-  <dimen name="action_bar_elevation">3dp</dimen>
   <dimen name="tab_height">48dp</dimen>
-  <!-- actionbar height + tab height -->
-  <dimen name="actionbar_contentInsetStart">72dp</dimen>
 
   <dimen name="call_log_icon_margin">2dp</dimen>
 
   <item name="alpha_enabled" format="float" type="dimen">1.0</item>
   <item name="alpha_hiden" format="float" type="dimen">0.54</item>
 
-  <!-- Minimum height required for all row elements in Dialer lists. -->
-  <dimen name="dialer_list_item_min_height">56dp</dimen>
-
   <!-- Minimum a11y height and width required for all touch targets. -->
   <dimen name="dialer_touch_target_min_size">48dp</dimen>
 
-  <!-- Minimum width for material compliant buttons. -->
-  <dimen name="dialer_button_min_width">72dp</dimen>
-
   <!-- Padding to be applied to the bottom of lists to make space for the floating action
      button -->
   <dimen name="floating_action_button_list_bottom_padding">88dp</dimen>
diff --git a/java/com/android/dialer/theme/common/res/values/strings.xml b/java/com/android/dialer/theme/common/res/values/strings.xml
index 5952a01..c2511a3 100644
--- a/java/com/android/dialer/theme/common/res/values/strings.xml
+++ b/java/com/android/dialer/theme/common/res/values/strings.xml
@@ -29,10 +29,6 @@
   <!-- String used to display calls from emergency numbers in the call log and incallui -->
   <string name="emergency_number">Emergency number</string>
 
-  <!-- Title for the activity that dials the phone.  This is the name
-       used in the Launcher icon. -->
-  <string name="launcherActivityLabel">Phone</string>
-
   <!-- Label shown on the 'positive' button for the dialog. Indicates that the call will proceed -->
   <string name="call">Call</string>
 
diff --git a/java/com/android/dialer/theme/common/res/values/styles.xml b/java/com/android/dialer/theme/common/res/values/styles.xml
index 2c6446c..70c91d7 100644
--- a/java/com/android/dialer/theme/common/res/values/styles.xml
+++ b/java/com/android/dialer/theme/common/res/values/styles.xml
@@ -22,8 +22,9 @@
     <item name="android:layout_height">wrap_content</item>
     <item name="android:layout_margin">4dp</item>
     <item name="android:baselineAligned">false</item>
-    <item name="cardCornerRadius">2dp</item>
-    <item name="cardBackgroundColor">?android:attr/colorBackgroundFloating</item>
+    <item name="cardCornerRadius">28dp</item>
+    <item name="cardBackgroundColor">?android:attr/colorBackground</item>
+    <item name="cardElevation">0dp</item>
   </style>
 
   <!-- This Checkbox style helps align checkboxes with the common list element layout(Image + text) -->
@@ -31,4 +32,14 @@
     <item name="android:layout_marginStart">20dp</item>
     <item name="android:paddingLeft">12dp</item>
   </style>
-</resources>
\ No newline at end of file
+
+  <style name="LocationPermCardStyle" parent="CallLogCardStyle">
+    <item name="cardBackgroundColor">@color/cardBackgroundColor</item>
+    <item name="android:layout_margin">8dp</item>
+  </style>
+
+  <style name="CallStatsCardStyle" parent="CallLogCardStyle">
+    <item name="android:layout_margin">0dp</item>
+    <item name="cardBackgroundColor">@color/cardBackgroundColor</item>
+  </style>
+</resources>
diff --git a/java/com/android/dialer/theme/common/res/values/text_styles.xml b/java/com/android/dialer/theme/common/res/values/text_styles.xml
index def5862..18bd0ff 100644
--- a/java/com/android/dialer/theme/common/res/values/text_styles.xml
+++ b/java/com/android/dialer/theme/common/res/values/text_styles.xml
@@ -95,4 +95,4 @@
     <item name="android:ellipsize">end</item>
     <item name="android:maxLines">1</item>
   </style>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/dialer/theme/hidden/AndroidManifest.xml b/java/com/android/dialer/theme/hidden/AndroidManifest.xml
deleted file mode 100644
index ec46a3a..0000000
--- a/java/com/android/dialer/theme/hidden/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest package="com.android.dialer.theme.hidden"/>
diff --git a/java/com/android/dialer/theme/hidden/res/color/dialer_primary_text_color.xml b/java/com/android/dialer/theme/hidden/res/color/dialer_primary_text_color.xml
index 58aa2b0..ef8c996 100644
--- a/java/com/android/dialer/theme/hidden/res/color/dialer_primary_text_color.xml
+++ b/java/com/android/dialer/theme/hidden/res/color/dialer_primary_text_color.xml
@@ -16,6 +16,6 @@
   -->
 <!-- Primary text color in the Phone app -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:state_enabled="false" android:color="@color/google_grey_400"/>
+  <item android:state_enabled="false" android:color="@color/google_grey_900"/>
   <item android:color="@color/google_grey_900"/>
-</selector>
\ No newline at end of file
+</selector>
diff --git a/java/com/android/dialer/theme/hidden/res/values-night/colors_dialer_light.xml b/java/com/android/dialer/theme/hidden/res/values-night/colors_dialer_light.xml
new file mode 100644
index 0000000..99fda07
--- /dev/null
+++ b/java/com/android/dialer/theme/hidden/res/values-night/colors_dialer_light.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Copyright (C) 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources>
+    <!-- Essential theme colors -->
+    <color name="dialer_theme_color_dark">@color/dialer_background_color</color>
+    <color name="dialer_background_color">@android:color/system_neutral1_900</color>
+    <color name="dialer_background_floating">@android:color/system_neutral1_800</color>
+    <color name="dialer_search_bar_color">@android:color/system_neutral1_800</color>
+    <color name="rounded_dialpad_bg_color">@android:color/system_neutral1_800</color>
+    <color name="dialer_theme_color_light">@android:color/system_accent1_100</color>
+</resources>
diff --git a/java/com/android/dialer/theme/hidden/res/values/colors_dialer_dark.xml b/java/com/android/dialer/theme/hidden/res/values/colors_dialer_dark.xml
index e48474e..41c5fd1 100644
--- a/java/com/android/dialer/theme/hidden/res/values/colors_dialer_dark.xml
+++ b/java/com/android/dialer/theme/hidden/res/values/colors_dialer_dark.xml
@@ -18,5 +18,4 @@
   <color name="dialer_dark_theme_color">#5195EA</color>
   <color name="dialer_dark_theme_color_20pct">#335195EA</color>
   <color name="dialer_dark_theme_color_dark">#2374CE</color>
-  <color name="dialer_dark_secondary_color">#5195EA</color>
 </resources>
diff --git a/java/com/android/dialer/theme/hidden/res/values/colors_dialer_light.xml b/java/com/android/dialer/theme/hidden/res/values/colors_dialer_light.xml
index 988aad7..c894da3 100644
--- a/java/com/android/dialer/theme/hidden/res/values/colors_dialer_light.xml
+++ b/java/com/android/dialer/theme/hidden/res/values/colors_dialer_light.xml
@@ -15,9 +15,15 @@
   -->
 <resources>
   <!-- Essential theme colors -->
-  <color name="dialer_theme_color">#2A56C6</color>
+  <color name="dialer_theme_color">@android:color/system_accent1_600</color>
   <color name="dialer_theme_color_20pct">#332A56C6</color>
-  <color name="dialer_theme_color_dark">#1C3AA9</color>
-  <color name="dialer_secondary_color">#F50057</color>
-  <color name="dialer_background_color">#FAFAFA</color>
+  <color name="dialer_theme_color_dark">@color/dialer_background_color</color>
+  <color name="dialer_primary_color">@android:color/system_neutral2_50</color>
+  <color name="dialer_ripple_color">#1f000000</color>
+  <color name="dialer_background_color">@android:color/system_neutral1_10</color>
+  <color name="dialer_background_floating">@android:color/system_neutral1_50</color>
+  <color name="dialer_search_bar_color">@android:color/system_neutral1_50</color>
+  <color name="rounded_dialpad_bg_color">@android:color/system_neutral1_100</color>
+  <color name="searchbar_icon_color">@android:color/system_neutral1_900</color>
+  <color name="dialer_theme_color_light">@android:color/system_accent1_600</color>
 </resources>
diff --git a/java/com/android/dialer/theme/hidden/res/values/styles.xml b/java/com/android/dialer/theme/hidden/res/values/styles.xml
index 44a35f8..b2fab95 100644
--- a/java/com/android/dialer/theme/hidden/res/values/styles.xml
+++ b/java/com/android/dialer/theme/hidden/res/values/styles.xml
@@ -52,10 +52,9 @@
      activity's theme extends from Dialer.ThemeBase(.NoActionBar) or doesn't specify a theme. -->
   <style name="AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
     <item name="android:textColorPrimary">@color/dialer_primary_text_color</item>
-    <!-- TODO(a bug): figure out why ?android:attr/colorPrimary doesn't work here -->
     <item name="android:colorAccent">@color/dialer_theme_color</item>
     <item name="colorAccent">@color/dialer_theme_color</item>
-    <item name="android:textColorPrimary">@color/dialer_primary_text_color</item>
     <item name="android:textColorSecondary">@color/dialer_secondary_text_color</item>
+    <item name="android:windowBackground">@drawable/dialog_background</item>
   </style>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-af/strings.xml b/java/com/android/dialer/theme/res/values-af/strings.xml
index 4440616..6ec7f2f 100644
--- a/java/com/android/dialer/theme/res/values-af/strings.xml
+++ b/java/com/android/dialer/theme/res/values-af/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Onbekend"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefoonhokkie"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Foon"</string>
     <string name="video_call" msgid="8914878391104612532">"Video-oproep"</string>
     <string name="call" msgid="3699617769606114168">"Bel"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-am/strings.xml b/java/com/android/dialer/theme/res/values-am/strings.xml
index cb69727..7186144 100644
--- a/java/com/android/dialer/theme/res/values-am/strings.xml
+++ b/java/com/android/dialer/theme/res/values-am/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"ያልታወቀ"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"የሕዝብ ስልክ"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"ስልክ"</string>
     <string name="video_call" msgid="8914878391104612532">"የቪዲዮ ጥሪ"</string>
     <string name="call" msgid="3699617769606114168">"ደውል"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ar/strings.xml b/java/com/android/dialer/theme/res/values-ar/strings.xml
index 49ecdf6..480f352 100644
--- a/java/com/android/dialer/theme/res/values-ar/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ar/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"غير معروف"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"هاتف يعمل بالعملة"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"الهاتف"</string>
     <string name="video_call" msgid="8914878391104612532">"مكالمة فيديو"</string>
     <string name="call" msgid="3699617769606114168">"اتصال"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-az/strings.xml b/java/com/android/dialer/theme/res/values-az/strings.xml
index 6aa8a03..e2b75c7 100644
--- a/java/com/android/dialer/theme/res/values-az/strings.xml
+++ b/java/com/android/dialer/theme/res/values-az/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Naməlum"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Taksofon"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Video zəng"</string>
     <string name="call" msgid="3699617769606114168">"Zəng edin"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
index 159f2a1..c412fa8 100644
--- a/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-b+sr+Latn/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Nepoznato"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonska govornica"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Uputi video poziv"</string>
     <string name="call" msgid="3699617769606114168">"Pozovi"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-be/strings.xml b/java/com/android/dialer/theme/res/values-be/strings.xml
index c69fa10..9627099 100644
--- a/java/com/android/dialer/theme/res/values-be/strings.xml
+++ b/java/com/android/dialer/theme/res/values-be/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Невядомы"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Таксафон"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Тэлефон"</string>
     <string name="video_call" msgid="8914878391104612532">"Відэавыклік"</string>
     <string name="call" msgid="3699617769606114168">"Выклікаць"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-bg/strings.xml b/java/com/android/dialer/theme/res/values-bg/strings.xml
index 0e829a5..53885db 100644
--- a/java/com/android/dialer/theme/res/values-bg/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bg/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Неизвестен номер"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Обществен телефон"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
     <string name="video_call" msgid="8914878391104612532">"Видеообаждане"</string>
     <string name="call" msgid="3699617769606114168">"Обаждане"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-bn/strings.xml b/java/com/android/dialer/theme/res/values-bn/strings.xml
index be08264..37e6208 100644
--- a/java/com/android/dialer/theme/res/values-bn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bn/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"অজানা"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"পে ফোন"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"ফোন"</string>
     <string name="video_call" msgid="8914878391104612532">"ভিডিও কল"</string>
     <string name="call" msgid="3699617769606114168">"কল করুন"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-bs/strings.xml b/java/com/android/dialer/theme/res/values-bs/strings.xml
index 7d1e17b..507b50b 100644
--- a/java/com/android/dialer/theme/res/values-bs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-bs/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Nepoznato"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonska govornica"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Videopoziv"</string>
     <string name="call" msgid="3699617769606114168">"Pozovi"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ca/strings.xml b/java/com/android/dialer/theme/res/values-ca/strings.xml
index a15434b..03a181a 100644
--- a/java/com/android/dialer/theme/res/values-ca/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ca/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Desconegut"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telèfon públic"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telèfon"</string>
     <string name="video_call" msgid="8914878391104612532">"Videotrucada"</string>
     <string name="call" msgid="3699617769606114168">"Truca"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-cs/strings.xml b/java/com/android/dialer/theme/res/values-cs/strings.xml
index 7525c3e..201b3cb 100644
--- a/java/com/android/dialer/theme/res/values-cs/strings.xml
+++ b/java/com/android/dialer/theme/res/values-cs/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Neznámé"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonní automat"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Zahájit videohovor"</string>
     <string name="call" msgid="3699617769606114168">"Volat"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-da/strings.xml b/java/com/android/dialer/theme/res/values-da/strings.xml
index 1c2bbb5..8bd2bda 100644
--- a/java/com/android/dialer/theme/res/values-da/strings.xml
+++ b/java/com/android/dialer/theme/res/values-da/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Ukendt"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Mønttelefon"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Opkald"</string>
     <string name="video_call" msgid="8914878391104612532">"Videoopkald"</string>
     <string name="call" msgid="3699617769606114168">"Ring op"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-de/strings.xml b/java/com/android/dialer/theme/res/values-de/strings.xml
index 102d59c..3ec7c4d 100644
--- a/java/com/android/dialer/theme/res/values-de/strings.xml
+++ b/java/com/android/dialer/theme/res/values-de/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Unbekannt"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Münztelefon"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Videoanruf"</string>
     <string name="call" msgid="3699617769606114168">"Anrufen"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-el/strings.xml b/java/com/android/dialer/theme/res/values-el/strings.xml
index 20cd856..ef62058 100644
--- a/java/com/android/dialer/theme/res/values-el/strings.xml
+++ b/java/com/android/dialer/theme/res/values-el/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Άγνωστος"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Τηλέφωνο με χρέωση"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Τηλέφωνο"</string>
     <string name="video_call" msgid="8914878391104612532">"Βιντεοκλήση"</string>
     <string name="call" msgid="3699617769606114168">"Κλήση"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
index 5ab154e..d58a3ad 100644
--- a/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rAU/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Unknown"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Payphone"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
     <string name="video_call" msgid="8914878391104612532">"Video call"</string>
     <string name="call" msgid="3699617769606114168">"Call"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
index 5ab154e..d58a3ad 100644
--- a/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rGB/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Unknown"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Payphone"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
     <string name="video_call" msgid="8914878391104612532">"Video call"</string>
     <string name="call" msgid="3699617769606114168">"Call"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
index 5ab154e..d58a3ad 100644
--- a/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/theme/res/values-en-rIN/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Unknown"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Payphone"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Phone"</string>
     <string name="video_call" msgid="8914878391104612532">"Video call"</string>
     <string name="call" msgid="3699617769606114168">"Call"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
index ac31fff..75b84d5 100644
--- a/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/theme/res/values-es-rUS/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Desconocido"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
     <string name="video_call" msgid="8914878391104612532">"Videollamada"</string>
     <string name="call" msgid="3699617769606114168">"Llamar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-es/strings.xml b/java/com/android/dialer/theme/res/values-es/strings.xml
index 8a12c02..1198075 100644
--- a/java/com/android/dialer/theme/res/values-es/strings.xml
+++ b/java/com/android/dialer/theme/res/values-es/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Desconocido"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
     <string name="video_call" msgid="8914878391104612532">"Videollamada"</string>
     <string name="call" msgid="3699617769606114168">"Llamar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-et/strings.xml b/java/com/android/dialer/theme/res/values-et/strings.xml
index 42adb03..4397827 100644
--- a/java/com/android/dialer/theme/res/values-et/strings.xml
+++ b/java/com/android/dialer/theme/res/values-et/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Tundmatu"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefoniautomaat"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Videokõne"</string>
     <string name="call" msgid="3699617769606114168">"Helista"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-eu/strings.xml b/java/com/android/dialer/theme/res/values-eu/strings.xml
index 8760dac..d117403 100644
--- a/java/com/android/dialer/theme/res/values-eu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-eu/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Ezezaguna"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefono publikoa"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefonoa"</string>
     <string name="video_call" msgid="8914878391104612532">"Bideo-deia"</string>
     <string name="call" msgid="3699617769606114168">"Deitu"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-fa/strings.xml b/java/com/android/dialer/theme/res/values-fa/strings.xml
index 0379d7c..e9c127e 100644
--- a/java/com/android/dialer/theme/res/values-fa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fa/strings.xml
@@ -18,9 +18,8 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="unknown" msgid="7932659017139013277">"ناشناس"</string>
-    <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="ID">%1$d</xliff:g> <xliff:g id="UNKNOWN">%2$s</xliff:g>"</string>
+    <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="ID">%1$s</xliff:g> <xliff:g id="UNKNOWN">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"تلفن عمومی"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"تلفن"</string>
     <string name="video_call" msgid="8914878391104612532">"تماس ویدیویی"</string>
     <string name="call" msgid="3699617769606114168">"تماس"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-fi/strings.xml b/java/com/android/dialer/theme/res/values-fi/strings.xml
index 82172e6..737e4b8 100644
--- a/java/com/android/dialer/theme/res/values-fi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fi/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Tuntematon"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Maksupuhelin"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Puhelin"</string>
     <string name="video_call" msgid="8914878391104612532">"Videopuhelu"</string>
     <string name="call" msgid="3699617769606114168">"Soita"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
index 3fe64f4..d7cbcc3 100644
--- a/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fr-rCA/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Inconnu"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Cabine téléphonique"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Téléphone"</string>
     <string name="video_call" msgid="8914878391104612532">"Appel vidéo"</string>
     <string name="call" msgid="3699617769606114168">"Appeler"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-fr/strings.xml b/java/com/android/dialer/theme/res/values-fr/strings.xml
index 3fe64f4..d7cbcc3 100644
--- a/java/com/android/dialer/theme/res/values-fr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-fr/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Inconnu"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Cabine téléphonique"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Téléphone"</string>
     <string name="video_call" msgid="8914878391104612532">"Appel vidéo"</string>
     <string name="call" msgid="3699617769606114168">"Appeler"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-gl/strings.xml b/java/com/android/dialer/theme/res/values-gl/strings.xml
index c137c52..f1928d5 100644
--- a/java/com/android/dialer/theme/res/values-gl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gl/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Descoñecido"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Teléfono público"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Teléfono"</string>
     <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
     <string name="call" msgid="3699617769606114168">"Chamar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-gu/strings.xml b/java/com/android/dialer/theme/res/values-gu/strings.xml
index 7af9367..5720317 100644
--- a/java/com/android/dialer/theme/res/values-gu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-gu/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"અજાણ્યું"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"પેફોન"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"ફોન"</string>
     <string name="video_call" msgid="8914878391104612532">"વિડિઓ કૉલ"</string>
     <string name="call" msgid="3699617769606114168">"કૉલ કરો"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-hi/strings.xml b/java/com/android/dialer/theme/res/values-hi/strings.xml
index a475383..60c5ed6 100644
--- a/java/com/android/dialer/theme/res/values-hi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hi/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"अज्ञात"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"पे-फ़ोन"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"फ़ोन"</string>
     <string name="video_call" msgid="8914878391104612532">"वीडियो कॉल"</string>
     <string name="call" msgid="3699617769606114168">"कॉल करें"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-hr/strings.xml b/java/com/android/dialer/theme/res/values-hr/strings.xml
index 668d8ff..fd30b15 100644
--- a/java/com/android/dialer/theme/res/values-hr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hr/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Nepoznato"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Javna telefonska govornica"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Videopoziv"</string>
     <string name="call" msgid="3699617769606114168">"Pozovi"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-hu/strings.xml b/java/com/android/dialer/theme/res/values-hu/strings.xml
index 75c89c6..b101884 100644
--- a/java/com/android/dialer/theme/res/values-hu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hu/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Ismeretlen"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Nyilvános telefon"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Videohívás"</string>
     <string name="call" msgid="3699617769606114168">"Hívás"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-hy/strings.xml b/java/com/android/dialer/theme/res/values-hy/strings.xml
index cefdf45..2e16194 100644
--- a/java/com/android/dialer/theme/res/values-hy/strings.xml
+++ b/java/com/android/dialer/theme/res/values-hy/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Անհայտ"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Բջջային տերմինալ"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Հեռախոս"</string>
     <string name="video_call" msgid="8914878391104612532">"Տեսազանգ"</string>
     <string name="call" msgid="3699617769606114168">"Զանգել"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-in/strings.xml b/java/com/android/dialer/theme/res/values-in/strings.xml
index ef44136..c1816bb 100644
--- a/java/com/android/dialer/theme/res/values-in/strings.xml
+++ b/java/com/android/dialer/theme/res/values-in/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Tidak diketahui"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telepon Umum"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telepon"</string>
     <string name="video_call" msgid="8914878391104612532">"Video call"</string>
     <string name="call" msgid="3699617769606114168">"Telepon"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-is/strings.xml b/java/com/android/dialer/theme/res/values-is/strings.xml
index 88763f5..e0981c5 100644
--- a/java/com/android/dialer/theme/res/values-is/strings.xml
+++ b/java/com/android/dialer/theme/res/values-is/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Óþekkt"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Símasjálfsali"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Sími"</string>
     <string name="video_call" msgid="8914878391104612532">"Hringja myndsímtal"</string>
     <string name="call" msgid="3699617769606114168">"Hringja"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-it/strings.xml b/java/com/android/dialer/theme/res/values-it/strings.xml
index ec0caa9..b7bcf48 100644
--- a/java/com/android/dialer/theme/res/values-it/strings.xml
+++ b/java/com/android/dialer/theme/res/values-it/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Sconosciuto"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Cabina telefonica"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefono"</string>
     <string name="video_call" msgid="8914878391104612532">"Videochiamata"</string>
     <string name="call" msgid="3699617769606114168">"Chiama"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-iw/strings.xml b/java/com/android/dialer/theme/res/values-iw/strings.xml
index e6652dc..4b5f596 100644
--- a/java/com/android/dialer/theme/res/values-iw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-iw/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"לא ידוע"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"טלפון ציבורי"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"טלפון"</string>
     <string name="video_call" msgid="8914878391104612532">"שיחת וידאו"</string>
     <string name="call" msgid="3699617769606114168">"התקשר"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ja/strings.xml b/java/com/android/dialer/theme/res/values-ja/strings.xml
index a351717..e3a4085 100644
--- a/java/com/android/dialer/theme/res/values-ja/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ja/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"不明"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g>（<xliff:g id="ID">%2$d</xliff:g>）"</string>
     <string name="payphone" msgid="7106361320283710387">"公衆電話"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
     <string name="video_call" msgid="8914878391104612532">"ビデオハングアウト"</string>
     <string name="call" msgid="3699617769606114168">"発信"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ka/strings.xml b/java/com/android/dialer/theme/res/values-ka/strings.xml
index 03e368b..550c553 100644
--- a/java/com/android/dialer/theme/res/values-ka/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ka/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"უცნობი"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"გადახდის ტელეფონი"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"ტელეფონი"</string>
     <string name="video_call" msgid="8914878391104612532">"ვიდეოზარი"</string>
     <string name="call" msgid="3699617769606114168">"დარეკვა"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-kk/strings.xml b/java/com/android/dialer/theme/res/values-kk/strings.xml
index a26da8c..0604bf8 100644
--- a/java/com/android/dialer/theme/res/values-kk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kk/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Белгісіз"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Автомат-телефон"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
     <string name="video_call" msgid="8914878391104612532">"Бейне қоңырау"</string>
     <string name="call" msgid="3699617769606114168">"Қоңырау шалу"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-km/strings.xml b/java/com/android/dialer/theme/res/values-km/strings.xml
index 9128d45..3450e70 100644
--- a/java/com/android/dialer/theme/res/values-km/strings.xml
+++ b/java/com/android/dialer/theme/res/values-km/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"មិន​ស្គាល់"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"ទូរស័ព្ទសាធារណៈ"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"ទូរស័ព្ទ"</string>
     <string name="video_call" msgid="8914878391104612532">"ការ​ហៅវីដេអូ"</string>
     <string name="call" msgid="3699617769606114168">"ហៅ​ទូរសព្ទ"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-kn/strings.xml b/java/com/android/dialer/theme/res/values-kn/strings.xml
index 63f2e5b..0b4b2a5 100644
--- a/java/com/android/dialer/theme/res/values-kn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-kn/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"ಅಪರಿಚಿತ"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"ಪೇಫೋನ್"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"ಫೋನ್"</string>
     <string name="video_call" msgid="8914878391104612532">"ವೀಡಿಯೊ ಕರೆ"</string>
     <string name="call" msgid="3699617769606114168">"ಕರೆಮಾಡಿ"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ko/strings.xml b/java/com/android/dialer/theme/res/values-ko/strings.xml
index 03c0ab1..088f0d5 100644
--- a/java/com/android/dialer/theme/res/values-ko/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ko/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"알 수 없음"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"공중전화"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"휴대전화"</string>
     <string name="video_call" msgid="8914878391104612532">"화상 통화"</string>
     <string name="call" msgid="3699617769606114168">"전화"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ky/strings.xml b/java/com/android/dialer/theme/res/values-ky/strings.xml
index ccbcecb..42917d6 100644
--- a/java/com/android/dialer/theme/res/values-ky/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ky/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Белгисиз"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Таксофон"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
     <string name="video_call" msgid="8914878391104612532">"Видео чалуу"</string>
     <string name="call" msgid="3699617769606114168">"Чалуу"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-lo/strings.xml b/java/com/android/dialer/theme/res/values-lo/strings.xml
index 8148bce..784c238 100644
--- a/java/com/android/dialer/theme/res/values-lo/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lo/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"ບໍ່ຮູ້ຈັກ"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"ຕູ້​ໂທ​ລະ​ສັບ​ສາ​ທາ​ລະ​ນະ"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"ໂທລະສັບ"</string>
     <string name="video_call" msgid="8914878391104612532">"ໂທວິດີໂອ"</string>
     <string name="call" msgid="3699617769606114168">"ໂທ"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-lt/strings.xml b/java/com/android/dialer/theme/res/values-lt/strings.xml
index db133d9..af8f90e 100644
--- a/java/com/android/dialer/theme/res/values-lt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lt/strings.xml
@@ -18,9 +18,8 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="unknown" msgid="7932659017139013277">"Nežinomas"</string>
-    <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="ID">%1$d</xliff:g> <xliff:g id="UNKNOWN">%2$s</xliff:g>"</string>
+    <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="ID">%1$s</xliff:g> <xliff:g id="UNKNOWN">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Taksofonas"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefonas"</string>
     <string name="video_call" msgid="8914878391104612532">"Vaizdo skambutis"</string>
     <string name="call" msgid="3699617769606114168">"Skambinti"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-lv/strings.xml b/java/com/android/dialer/theme/res/values-lv/strings.xml
index 435d334..9597cb8 100644
--- a/java/com/android/dialer/theme/res/values-lv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-lv/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Nezināms"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Maksas tālrunis"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Tālrunis"</string>
     <string name="video_call" msgid="8914878391104612532">"Videozvans"</string>
     <string name="call" msgid="3699617769606114168">"Zvanīt"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-mk/strings.xml b/java/com/android/dialer/theme/res/values-mk/strings.xml
index f8e8fbb..e9cda38 100644
--- a/java/com/android/dialer/theme/res/values-mk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mk/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Непознато"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Говорница"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
     <string name="video_call" msgid="8914878391104612532">"Воспоставете видеоповик"</string>
     <string name="call" msgid="3699617769606114168">"Повикајте"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ml/strings.xml b/java/com/android/dialer/theme/res/values-ml/strings.xml
index beae000..afdd07a 100644
--- a/java/com/android/dialer/theme/res/values-ml/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ml/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"അജ്ഞാതം"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"പണം നൽകി ഉപയോഗിക്കുന്ന ഫോൺ"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"ഫോണ്‍"</string>
     <string name="video_call" msgid="8914878391104612532">"വീഡിയോ കോള്‍"</string>
     <string name="call" msgid="3699617769606114168">"വിളിക്കുക"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-mn/strings.xml b/java/com/android/dialer/theme/res/values-mn/strings.xml
index 3a37dd1..bede15e 100644
--- a/java/com/android/dialer/theme/res/values-mn/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mn/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Тодорхойгүй"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Payphone"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Утас"</string>
     <string name="video_call" msgid="8914878391104612532">"Видео дуудлага"</string>
     <string name="call" msgid="3699617769606114168">"Залгах"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-mr/strings.xml b/java/com/android/dialer/theme/res/values-mr/strings.xml
index c60c7b7..e3f22af 100644
--- a/java/com/android/dialer/theme/res/values-mr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-mr/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"अज्ञात"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"सार्वजनिक फोन"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"फोन"</string>
     <string name="video_call" msgid="8914878391104612532">"व्हिडिओ कॉल"</string>
     <string name="call" msgid="3699617769606114168">"कॉल करा"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ms/strings.xml b/java/com/android/dialer/theme/res/values-ms/strings.xml
index f3d1a7b..4a29f65 100644
--- a/java/com/android/dialer/theme/res/values-ms/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ms/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Tidak diketahui"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefon Awam"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Panggilan video"</string>
     <string name="call" msgid="3699617769606114168">"Panggil"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-my/strings.xml b/java/com/android/dialer/theme/res/values-my/strings.xml
index 0e61898..3941b23 100644
--- a/java/com/android/dialer/theme/res/values-my/strings.xml
+++ b/java/com/android/dialer/theme/res/values-my/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"အကြောင်းအရာ မသိရှိ"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"ငွေပေးရသည့်ဖုန်း"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"ဖုန်း"</string>
     <string name="video_call" msgid="8914878391104612532">"ဗီဒီယိုခေါ်ဆိုမှု"</string>
     <string name="call" msgid="3699617769606114168">"ခေါ်ဆိုရန်"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-nb/strings.xml b/java/com/android/dialer/theme/res/values-nb/strings.xml
index 97ddbec..d6e4844 100644
--- a/java/com/android/dialer/theme/res/values-nb/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nb/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Ukjent"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonkiosk"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Videosamtale"</string>
     <string name="call" msgid="3699617769606114168">"Ring"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ne/strings.xml b/java/com/android/dialer/theme/res/values-ne/strings.xml
index c4e6992..f85fc73 100644
--- a/java/com/android/dialer/theme/res/values-ne/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ne/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"अज्ञात"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"पेफोन"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"फोन"</string>
     <string name="video_call" msgid="8914878391104612532">"भिडियो कल"</string>
     <string name="call" msgid="3699617769606114168">"कल गर्नुहोस्"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-nl/strings.xml b/java/com/android/dialer/theme/res/values-nl/strings.xml
index 19346eb..022d3ad 100644
--- a/java/com/android/dialer/theme/res/values-nl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-nl/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Onbekend"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefooncel"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefoon"</string>
     <string name="video_call" msgid="8914878391104612532">"Videogesprek"</string>
     <string name="call" msgid="3699617769606114168">"Bellen"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-no/strings.xml b/java/com/android/dialer/theme/res/values-no/strings.xml
index 97ddbec..d6e4844 100644
--- a/java/com/android/dialer/theme/res/values-no/strings.xml
+++ b/java/com/android/dialer/theme/res/values-no/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Ukjent"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonkiosk"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Videosamtale"</string>
     <string name="call" msgid="3699617769606114168">"Ring"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-pa/strings.xml b/java/com/android/dialer/theme/res/values-pa/strings.xml
index e74c7aa..a86f1ea 100644
--- a/java/com/android/dialer/theme/res/values-pa/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pa/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"ਅਗਿਆਤ"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"ਪੇਫੋਨ"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"ਫੋਨ"</string>
     <string name="video_call" msgid="8914878391104612532">"ਵੀਡੀਓ ਕਾਲ"</string>
     <string name="call" msgid="3699617769606114168">"ਕਾਲ ਕਰੋ"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-pl/strings.xml b/java/com/android/dialer/theme/res/values-pl/strings.xml
index ea11367..c1914ef 100644
--- a/java/com/android/dialer/theme/res/values-pl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pl/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Nieznane"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Automat telefoniczny"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Rozmowa wideo"</string>
     <string name="call" msgid="3699617769606114168">"Zadzwoń"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
index 5528395..c855241 100644
--- a/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt-rBR/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Desconhecido"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
     <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
     <string name="call" msgid="3699617769606114168">"Ligar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
index 52c22ba..2b91dcf 100644
--- a/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt-rPT/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Desconhecido"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
     <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
     <string name="call" msgid="3699617769606114168">"Telefonar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-pt/strings.xml b/java/com/android/dialer/theme/res/values-pt/strings.xml
index 5528395..c855241 100644
--- a/java/com/android/dialer/theme/res/values-pt/strings.xml
+++ b/java/com/android/dialer/theme/res/values-pt/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Desconhecido"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefone público"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefone"</string>
     <string name="video_call" msgid="8914878391104612532">"Videochamada"</string>
     <string name="call" msgid="3699617769606114168">"Ligar"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ro/strings.xml b/java/com/android/dialer/theme/res/values-ro/strings.xml
index d572b71..305a94e 100644
--- a/java/com/android/dialer/theme/res/values-ro/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ro/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Necunoscut"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefon public"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Apel video"</string>
     <string name="call" msgid="3699617769606114168">"Apelați"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ru/strings.xml b/java/com/android/dialer/theme/res/values-ru/strings.xml
index 2cb4648..e3937d9 100644
--- a/java/com/android/dialer/theme/res/values-ru/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ru/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Неизвестно"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Телефон-автомат"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
     <string name="video_call" msgid="8914878391104612532">"Видеовызов"</string>
     <string name="call" msgid="3699617769606114168">"Позвонить"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-si/strings.xml b/java/com/android/dialer/theme/res/values-si/strings.xml
index 08a421e..d28647c 100644
--- a/java/com/android/dialer/theme/res/values-si/strings.xml
+++ b/java/com/android/dialer/theme/res/values-si/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"නොදනී"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"පේෆෝනය"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"දුරකථනය"</string>
     <string name="video_call" msgid="8914878391104612532">"වීඩියෝ ඇමතුම"</string>
     <string name="call" msgid="3699617769606114168">"ඇමතුම"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sk/strings.xml b/java/com/android/dialer/theme/res/values-sk/strings.xml
index e8e2019..17f8660 100644
--- a/java/com/android/dialer/theme/res/values-sk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sk/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Neznáme"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefónny automat"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefón"</string>
     <string name="video_call" msgid="8914878391104612532">"Videohovor"</string>
     <string name="call" msgid="3699617769606114168">"Volať"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sl/strings.xml b/java/com/android/dialer/theme/res/values-sl/strings.xml
index ee80c78..34e8d68 100644
--- a/java/com/android/dialer/theme/res/values-sl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sl/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Neznano"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonska govorilnica"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Videoklic"</string>
     <string name="call" msgid="3699617769606114168">"Pokliči"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sq/strings.xml b/java/com/android/dialer/theme/res/values-sq/strings.xml
index c0a61b0..03f034b 100644
--- a/java/com/android/dialer/theme/res/values-sq/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sq/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"I panjohur"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefon me pagesë"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefoni"</string>
     <string name="video_call" msgid="8914878391104612532">"Telefonatë me video"</string>
     <string name="call" msgid="3699617769606114168">"Telefono"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sr/strings.xml b/java/com/android/dialer/theme/res/values-sr/strings.xml
index 9349977..3eecd0d 100644
--- a/java/com/android/dialer/theme/res/values-sr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sr/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Непознато"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Телефонска говорница"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
     <string name="video_call" msgid="8914878391104612532">"Упути видео позив"</string>
     <string name="call" msgid="3699617769606114168">"Позови"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sv/strings.xml b/java/com/android/dialer/theme/res/values-sv/strings.xml
index b2811a1..3683b36 100644
--- a/java/com/android/dialer/theme/res/values-sv/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sv/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Okänd"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Telefonautomat"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Videosamtal"</string>
     <string name="call" msgid="3699617769606114168">"Ring"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-sw/strings.xml b/java/com/android/dialer/theme/res/values-sw/strings.xml
index c5e50b8..cad25fb 100644
--- a/java/com/android/dialer/theme/res/values-sw/strings.xml
+++ b/java/com/android/dialer/theme/res/values-sw/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Haijulikani"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Simu ya kulipia"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Simu"</string>
     <string name="video_call" msgid="8914878391104612532">"Simu ya video"</string>
     <string name="call" msgid="3699617769606114168">"Piga simu"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ta/strings.xml b/java/com/android/dialer/theme/res/values-ta/strings.xml
index 0be6617..e6b40d8 100644
--- a/java/com/android/dialer/theme/res/values-ta/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ta/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"தெரியாதவர்"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"கட்டணத் தொலைபேசி"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"மொபைல்"</string>
     <string name="video_call" msgid="8914878391104612532">"வீடியோ அழைப்பு"</string>
     <string name="call" msgid="3699617769606114168">"அழை"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-te/strings.xml b/java/com/android/dialer/theme/res/values-te/strings.xml
index d8406a8..d0eff66 100644
--- a/java/com/android/dialer/theme/res/values-te/strings.xml
+++ b/java/com/android/dialer/theme/res/values-te/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"తెలియదు"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"పే ఫోన్"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"ఫోన్"</string>
     <string name="video_call" msgid="8914878391104612532">"వీడియో కాల్"</string>
     <string name="call" msgid="3699617769606114168">"కాల్ చేయి"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-th/strings.xml b/java/com/android/dialer/theme/res/values-th/strings.xml
index be1dc1d..b4e3789 100644
--- a/java/com/android/dialer/theme/res/values-th/strings.xml
+++ b/java/com/android/dialer/theme/res/values-th/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"ไม่ทราบ"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"โทรศัพท์สาธารณะ"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"โทรศัพท์"</string>
     <string name="video_call" msgid="8914878391104612532">"แฮงเอาท์วิดีโอ"</string>
     <string name="call" msgid="3699617769606114168">"โทร"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-tl/strings.xml b/java/com/android/dialer/theme/res/values-tl/strings.xml
index 2f03ae6..4f1a1ab 100644
--- a/java/com/android/dialer/theme/res/values-tl/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tl/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Di-kilala"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Payphone"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telepono"</string>
     <string name="video_call" msgid="8914878391104612532">"Mag-video call"</string>
     <string name="call" msgid="3699617769606114168">"Tawag"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-tr/strings.xml b/java/com/android/dialer/theme/res/values-tr/strings.xml
index bcbd525..b4cda7a 100644
--- a/java/com/android/dialer/theme/res/values-tr/strings.xml
+++ b/java/com/android/dialer/theme/res/values-tr/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Bilinmiyor"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Ankesörlü telefon"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Görüntülü görüşme"</string>
     <string name="call" msgid="3699617769606114168">"Telefon et"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-uk/strings.xml b/java/com/android/dialer/theme/res/values-uk/strings.xml
index 73aa2f9..fa8a70e 100644
--- a/java/com/android/dialer/theme/res/values-uk/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uk/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Невідомий"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Таксофон"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Телефон"</string>
     <string name="video_call" msgid="8914878391104612532">"Відеодзвінок"</string>
     <string name="call" msgid="3699617769606114168">"Виклик"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-ur/strings.xml b/java/com/android/dialer/theme/res/values-ur/strings.xml
index b61ace1..6315ca1 100644
--- a/java/com/android/dialer/theme/res/values-ur/strings.xml
+++ b/java/com/android/dialer/theme/res/values-ur/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"نامعلوم"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"پے فون"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"فون"</string>
     <string name="video_call" msgid="8914878391104612532">"ویڈیو کال"</string>
     <string name="call" msgid="3699617769606114168">"کال کریں"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-uz/strings.xml b/java/com/android/dialer/theme/res/values-uz/strings.xml
index 72d4663..88da6bb 100644
--- a/java/com/android/dialer/theme/res/values-uz/strings.xml
+++ b/java/com/android/dialer/theme/res/values-uz/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Noma’lum"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Taksofon"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Telefon"</string>
     <string name="video_call" msgid="8914878391104612532">"Video suhbat"</string>
     <string name="call" msgid="3699617769606114168">"Telefon"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-vi/strings.xml b/java/com/android/dialer/theme/res/values-vi/strings.xml
index 23ee89a..1901be1 100644
--- a/java/com/android/dialer/theme/res/values-vi/strings.xml
+++ b/java/com/android/dialer/theme/res/values-vi/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Không xác định"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Điện thoại công cộng"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Điện thoại"</string>
     <string name="video_call" msgid="8914878391104612532">"Gọi điện video"</string>
     <string name="call" msgid="3699617769606114168">"Gọi"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
index 77676bd..c7a880c 100644
--- a/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rCN/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"未知"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"公用电话"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"电话"</string>
     <string name="video_call" msgid="8914878391104612532">"视频通话"</string>
     <string name="call" msgid="3699617769606114168">"拨打电话"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
index f455dc4..293ad28 100644
--- a/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rHK/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"未知"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"公共電話"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
     <string name="video_call" msgid="8914878391104612532">"視像通話"</string>
     <string name="call" msgid="3699617769606114168">"通話"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
index 2db624c..6ca8004 100644
--- a/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zh-rTW/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"不明"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"公用電話"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"電話"</string>
     <string name="video_call" msgid="8914878391104612532">"視訊通話"</string>
     <string name="call" msgid="3699617769606114168">"撥號"</string>
 </resources>
diff --git a/java/com/android/dialer/theme/res/values-zu/strings.xml b/java/com/android/dialer/theme/res/values-zu/strings.xml
index e985338..83a2732 100644
--- a/java/com/android/dialer/theme/res/values-zu/strings.xml
+++ b/java/com/android/dialer/theme/res/values-zu/strings.xml
@@ -20,7 +20,6 @@
     <string name="unknown" msgid="7932659017139013277">"Akwaziwa"</string>
     <string name="unknown_counter" msgid="7452889151953704159">"<xliff:g id="UNKNOWN">%1$s</xliff:g> <xliff:g id="ID">%2$d</xliff:g>"</string>
     <string name="payphone" msgid="7106361320283710387">"Ucingo olufakwa imali"</string>
-    <string name="launcherActivityLabel" msgid="9034868428899993166">"Ifoni"</string>
     <string name="video_call" msgid="8914878391104612532">"Ikholi yevidiyo"</string>
     <string name="call" msgid="3699617769606114168">"Shaya"</string>
 </resources>
diff --git a/java/com/android/dialer/time/Clock.java b/java/com/android/dialer/time/Clock.java
deleted file mode 100644
index 4b7edc6..0000000
--- a/java/com/android/dialer/time/Clock.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.time;
-
-/** Functional interface for providing time since epoch. */
-public interface Clock {
-  /** Returns milliseconds since epoch. */
-  long currentTimeMillis();
-}
diff --git a/java/com/android/dialer/util/AndroidManifest.xml b/java/com/android/dialer/util/AndroidManifest.xml
deleted file mode 100644
index ba22c17..0000000
--- a/java/com/android/dialer/util/AndroidManifest.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<manifest
-  package="com.android.dialer.util">
-</manifest>
diff --git a/java/com/android/dialer/util/CallUtil.java b/java/com/android/dialer/util/CallUtil.java
index 89af0b9..c27612a 100644
--- a/java/com/android/dialer/util/CallUtil.java
+++ b/java/com/android/dialer/util/CallUtil.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,8 +23,11 @@
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+
+import java.util.ArrayList;
 import java.util.List;
 
 /** Utilities related to calls that can be used by non system apps. */
@@ -89,6 +93,26 @@
   }
 
   /**
+   * Returns a list of phone accounts that are able to call to numbers with the supplied scheme
+   */
+  @SuppressLint("MissingPermission")
+  public static List<PhoneAccount> getCallCapablePhoneAccounts(Context context, String scheme) {
+    if (!PermissionsUtil.hasPermission(context, android.Manifest.permission.READ_PHONE_STATE)) {
+      return null;
+    }
+    TelecomManager tm = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
+    final ArrayList<PhoneAccount> accounts = new ArrayList<>();
+
+    for (PhoneAccountHandle handle : tm.getCallCapablePhoneAccounts()) {
+      final PhoneAccount account = tm.getPhoneAccount(handle);
+      if (account != null && account.supportsUriScheme(scheme)) {
+        accounts.add(account);
+      }
+    }
+    return accounts;
+  }
+
+  /**
    * Determines if one of the call capable phone accounts defined supports video calling.
    *
    * @param context The context.
diff --git a/java/com/android/dialer/util/DialerUtils.java b/java/com/android/dialer/util/DialerUtils.java
index 49a0733..0b9b8e5 100644
--- a/java/com/android/dialer/util/DialerUtils.java
+++ b/java/com/android/dialer/util/DialerUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,9 +20,8 @@
 import android.app.AlertDialog;
 import android.content.ActivityNotFoundException;
 import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
 import android.content.Intent;
+import android.content.res.TypedArray;
 import android.graphics.Point;
 import android.os.Bundle;
 import android.telecom.TelecomManager;
@@ -31,11 +31,15 @@
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.Toast;
+
+import androidx.annotation.AttrRes;
+import androidx.annotation.ColorInt;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.telecom.TelecomUtil;
-import java.io.File;
+
 import java.util.Iterator;
-import java.util.Random;
 
 /** General purpose utility methods for the Dialer. */
 public class DialerUtils {
@@ -46,10 +50,6 @@
    */
   private static final String WPS_PREFIX = "*272";
 
-  public static final String FILE_PROVIDER_CACHE_DIR = "my_cache";
-
-  private static final Random RANDOM = new Random();
-
   /**
    * Attempts to start an activity and displays a toast with the default error message if the
    * activity is not found, instead of throwing an exception.
@@ -80,7 +80,8 @@
           Bundle extras;
           // Make sure to not accidentally clobber any existing extras
           if (intent.hasExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS)) {
-            extras = intent.getParcelableExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS);
+            extras = intent.getParcelableExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS,
+                    Bundle.class);
           } else {
             extras = new Bundle();
           }
@@ -95,13 +96,7 @@
           AlertDialog.Builder builder = new AlertDialog.Builder(context);
           builder.setMessage(R.string.outgoing_wps_warning);
           builder.setPositiveButton(
-              R.string.dialog_continue,
-              new OnClickListener() {
-                @Override
-                public void onClick(DialogInterface dialog, int which) {
-                  placeCallOrMakeToast(context, intent);
-                }
-              });
+              R.string.dialog_continue, (dialog, which) -> placeCallOrMakeToast(context, intent));
           builder.setNegativeButton(android.R.string.cancel, null);
           builder.create().show();
         } else {
@@ -133,11 +128,11 @@
   @SuppressLint("MissingPermission")
   private static boolean shouldWarnForOutgoingWps(Context context, String number) {
     if (number != null && number.startsWith(WPS_PREFIX)) {
+      TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
       TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
       boolean isOnVolte =
           telephonyManager.getVoiceNetworkType() == TelephonyManager.NETWORK_TYPE_LTE;
-      boolean hasCurrentActiveCall =
-          telephonyManager.getCallState() == TelephonyManager.CALL_STATE_OFFHOOK;
+      boolean hasCurrentActiveCall = telecomManager.isInCall();
       return isOnVolte && hasCurrentActiveCall;
     }
     return false;
@@ -204,16 +199,12 @@
     }
   }
 
-  /**
-   * Create a File in the cache directory that Dialer's FileProvider knows about so they can be
-   * shared to other apps.
-   */
-  public static File createShareableFile(Context context) {
-    long fileId = Math.abs(RANDOM.nextLong());
-    File parentDir = new File(context.getCacheDir(), FILE_PROVIDER_CACHE_DIR);
-    if (!parentDir.exists()) {
-      parentDir.mkdirs();
+  public static @ColorInt int resolveColor(Context context, @AttrRes int styledAttributeId) {
+    TypedArray a = context.obtainStyledAttributes(new int[] {styledAttributeId});
+    try {
+      return a.getColor(0, 0);
+    } finally {
+      a.recycle();
     }
-    return new File(parentDir, String.valueOf(fileId));
   }
 }
diff --git a/java/com/android/dialer/util/DrawableConverter.java b/java/com/android/dialer/util/DrawableConverter.java
index 5670315..22fe22c 100644
--- a/java/com/android/dialer/util/DrawableConverter.java
+++ b/java/com/android/dialer/util/DrawableConverter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,10 +22,12 @@
 import android.graphics.Canvas;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
-import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.graphics.drawable.RoundedBitmapDrawable;
+import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
+
 import com.android.dialer.common.LogUtil;
 
 /** Provides utilities for bitmaps and drawables. */
@@ -82,7 +85,7 @@
 
   @Nullable
   public static Drawable getRoundedDrawable(
-      @NonNull Context context, @Nullable Drawable photo, int width, int height) {
+          @NonNull Context context, @Nullable Drawable photo, int width, int height) {
     Bitmap bitmap = drawableToBitmap(photo);
     if (bitmap != null) {
       Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);
diff --git a/java/com/android/dialer/util/EmergencyCallUtil.java b/java/com/android/dialer/util/EmergencyCallUtil.java
new file mode 100644
index 0000000..ed0b18a
--- /dev/null
+++ b/java/com/android/dialer/util/EmergencyCallUtil.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.util;
+
+import android.content.Context;
+import android.provider.Settings;
+
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.storage.StorageComponent;
+
+import java.util.concurrent.TimeUnit;
+
+/** Utility to help with tasks related to emergency calls. */
+public class EmergencyCallUtil {
+
+  // Pref key for storing the time of end of the last emergency call in milliseconds after epoch.\
+  private static final String LAST_EMERGENCY_CALL_MS_PREF_KEY = "last_emergency_call_ms";
+  // Pref key for storing whether a notification has been dispatched to notify the user that call
+  // blocking has been disabled because of a recent emergency call.
+  protected static final String NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY =
+      "notified_call_blocking_disabled_by_emergency_call";
+  // Disable incoming call blocking if there was a call within the past 2 days.
+  static final long RECENT_EMERGENCY_CALL_THRESHOLD_MS = TimeUnit.DAYS.toMillis(2);
+
+  /**
+   * Used for testing to specify the custom threshold value, in milliseconds for whether an
+   * emergency call is "recent". The default value will be used if this custom threshold is less
+   * than zero. For example, to set this threshold to 60 seconds:
+   *
+   * <p>adb shell settings put system dialer_emergency_call_threshold_ms 60000
+   */
+  private static final String RECENT_EMERGENCY_CALL_THRESHOLD_SETTINGS_KEY =
+      "dialer_emergency_call_threshold_ms";
+
+  public static long getLastEmergencyCallTimeMillis(Context context) {
+    return StorageComponent.get(context)
+        .unencryptedSharedPrefs()
+        .getLong(LAST_EMERGENCY_CALL_MS_PREF_KEY, 0);
+  }
+
+  public static boolean hasRecentEmergencyCall(Context context) {
+    if (context == null) {
+      return false;
+    }
+
+    long lastEmergencyCallTime = getLastEmergencyCallTimeMillis(context);
+    if (lastEmergencyCallTime == 0) {
+      return false;
+    }
+
+    return (System.currentTimeMillis() - lastEmergencyCallTime)
+        < getRecentEmergencyCallThresholdMs(context);
+  }
+
+  public static void recordLastEmergencyCallTime(Context context) {
+    if (context == null) {
+      return;
+    }
+
+    StorageComponent.get(context)
+        .unencryptedSharedPrefs()
+        .edit()
+        .putLong(LAST_EMERGENCY_CALL_MS_PREF_KEY, System.currentTimeMillis())
+        .putBoolean(NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY, false)
+        .apply();
+  }
+
+  private static long getRecentEmergencyCallThresholdMs(Context context) {
+    if (LogUtil.isVerboseEnabled()) {
+      long thresholdMs =
+          Settings.System.getLong(
+              context.getContentResolver(), RECENT_EMERGENCY_CALL_THRESHOLD_SETTINGS_KEY, 0);
+      return thresholdMs > 0 ? thresholdMs : RECENT_EMERGENCY_CALL_THRESHOLD_MS;
+    } else {
+      return RECENT_EMERGENCY_CALL_THRESHOLD_MS;
+    }
+  }
+}
diff --git a/java/com/android/dialer/util/ExpirableCache.java b/java/com/android/dialer/util/ExpirableCache.java
index a1b0afd..2e6de2d 100644
--- a/java/com/android/dialer/util/ExpirableCache.java
+++ b/java/com/android/dialer/util/ExpirableCache.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,9 @@
 package com.android.dialer.util;
 
 import android.util.LruCache;
+
 import java.util.concurrent.atomic.AtomicInteger;
+
 import javax.annotation.concurrent.Immutable;
 import javax.annotation.concurrent.ThreadSafe;
 
@@ -100,7 +103,7 @@
    */
   private final AtomicInteger generation;
   /** The underlying cache used to stored the cached values. */
-  private LruCache<K, CachedValue<V>> cache;
+  private final LruCache<K, CachedValue<V>> cache;
 
   private ExpirableCache(LruCache<K, CachedValue<V>> cache) {
     this.cache = cache;
@@ -119,7 +122,7 @@
    * @throws IllegalArgumentException if the cache is not empty
    */
   public static <K, V> ExpirableCache<K, V> create(LruCache<K, CachedValue<V>> cache) {
-    return new ExpirableCache<K, V>(cache);
+    return new ExpirableCache<>(cache);
   }
 
   /**
@@ -130,7 +133,7 @@
    * @return the newly created expirable cache
    */
   public static <K, V> ExpirableCache<K, V> create(int maxSize) {
-    return create(new LruCache<K, CachedValue<V>>(maxSize));
+    return create(new LruCache<>(maxSize));
   }
 
   /**
@@ -210,7 +213,7 @@
    * <p>Implementation of {@link LruCache#create(K)} can use this method to create a new entry.
    */
   public CachedValue<V> newCachedValue(V value) {
-    return new GenerationalCachedValue<V>(value, generation);
+    return new GenerationalCachedValue<>(value, generation);
   }
 
   /**
diff --git a/java/com/android/dialer/util/MoreStrings.java b/java/com/android/dialer/util/MoreStrings.java
index 5a43b1d..297389c 100644
--- a/java/com/android/dialer/util/MoreStrings.java
+++ b/java/com/android/dialer/util/MoreStrings.java
@@ -16,9 +16,10 @@
 
 package com.android.dialer.util;
 
-import android.support.annotation.Nullable;
 import android.text.TextUtils;
 
+import androidx.annotation.Nullable;
+
 /** Static utility methods for Strings. */
 public class MoreStrings {
 
diff --git a/java/com/android/dialer/util/PermissionsUtil.java b/java/com/android/dialer/util/PermissionsUtil.java
index 7e8aae9..7db383f 100644
--- a/java/com/android/dialer/util/PermissionsUtil.java
+++ b/java/com/android/dialer/util/PermissionsUtil.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,6 +26,7 @@
 import static android.Manifest.permission.READ_CONTACTS;
 import static android.Manifest.permission.READ_PHONE_STATE;
 import static android.Manifest.permission.READ_VOICEMAIL;
+import static android.Manifest.permission.RECEIVE_SMS;
 import static android.Manifest.permission.SEND_SMS;
 import static android.Manifest.permission.WRITE_CALL_LOG;
 import static android.Manifest.permission.WRITE_CONTACTS;
@@ -36,13 +38,16 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.PackageManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.content.LocalBroadcastManager;
 import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.storage.StorageComponent;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -51,8 +56,7 @@
 /** Utility class to help with runtime permissions. */
 public class PermissionsUtil {
 
-  @VisibleForTesting
-  public static final String PREFERENCE_CAMERA_ALLOWED_BY_USER = "camera_allowed_by_user";
+  private static final String PREFERENCE_CAMERA_ALLOWED_BY_USER = "camera_allowed_by_user";
 
   private static final String PERMISSION_PREFERENCE = "dialer_permissions";
   private static final String CEQUINT_PERMISSION = "com.cequint.ecid.CALLER_ID_LOOKUP";
@@ -67,6 +71,7 @@
               WRITE_CALL_LOG,
               READ_PHONE_STATE,
               MODIFY_PHONE_STATE,
+              RECEIVE_SMS,
               SEND_SMS,
               CALL_PHONE,
               ADD_VOICEMAIL,
@@ -87,6 +92,10 @@
     return hasPermission(context, permission.READ_PHONE_STATE);
   }
 
+  public static boolean hasModifyPhoneStatePermissions(Context context) {
+    return hasPermission(context, MODIFY_PHONE_STATE);
+  }
+
   public static boolean hasContactsReadPermissions(Context context) {
     return hasPermission(context, permission.READ_CONTACTS);
   }
@@ -131,6 +140,10 @@
     return hasPermission(context, permission.ADD_VOICEMAIL);
   }
 
+  public static boolean hasReceiveSmsPermissions(Context context) {
+    return hasPermission(context, permission.RECEIVE_SMS);
+  }
+
   public static boolean hasSendSmsPermissions(Context context) {
     return hasPermission(context, permission.SEND_SMS);
   }
@@ -225,7 +238,7 @@
         permissionsCurrentlyDenied.add(permission);
       }
     }
-    return permissionsCurrentlyDenied.toArray(new String[permissionsCurrentlyDenied.size()]);
+    return permissionsCurrentlyDenied.toArray(new String[0]);
   }
 
   /**
diff --git a/java/com/android/dialer/util/SettingsUtil.java b/java/com/android/dialer/util/SettingsUtil.java
index 5043c3d..ceaa0f0 100644
--- a/java/com/android/dialer/util/SettingsUtil.java
+++ b/java/com/android/dialer/util/SettingsUtil.java
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
- *
+ * Copyright (C) 2023 The LineageOS Project
+ * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -23,10 +24,13 @@
 import android.media.RingtoneManager;
 import android.net.Uri;
 import android.os.Handler;
-import android.preference.PreferenceManager;
 import android.provider.Settings;
 import android.text.TextUtils;
 
+import androidx.preference.PreferenceManager;
+
+import com.android.dialer.R;
+
 public class SettingsUtil {
 
   private static final String DEFAULT_NOTIFICATION_URI_STRING =
diff --git a/java/com/android/dialer/util/TouchPointManager.java b/java/com/android/dialer/util/TouchPointManager.java
index ad5b007..625558d 100644
--- a/java/com/android/dialer/util/TouchPointManager.java
+++ b/java/com/android/dialer/util/TouchPointManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,9 +28,9 @@
 
   public static final String TOUCH_POINT = "touchPoint";
 
-  private static TouchPointManager instance = new TouchPointManager();
+  private static final TouchPointManager instance = new TouchPointManager();
 
-  private Point point = new Point();
+  private final Point point = new Point();
 
   /** Private constructor. Instance should only be acquired through getRunningInstance(). */
   private TouchPointManager() {}
diff --git a/java/com/android/dialer/util/TransactionSafeActivity.java b/java/com/android/dialer/util/TransactionSafeActivity.java
index aa47249..9ea1a9b 100644
--- a/java/com/android/dialer/util/TransactionSafeActivity.java
+++ b/java/com/android/dialer/util/TransactionSafeActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,9 @@
 
 import android.app.Activity;
 import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
 
 /**
  * A common superclass that keeps track of whether an {@link Activity} has saved its state yet or
@@ -46,7 +49,7 @@
   }
 
   @Override
-  protected void onSaveInstanceState(Bundle outState) {
+  protected void onSaveInstanceState(@NonNull Bundle outState) {
     super.onSaveInstanceState(outState);
     isSafeToCommitTransactions = false;
   }
diff --git a/java/com/android/dialer/util/UriUtils.java b/java/com/android/dialer/util/UriUtils.java
index c4308a8..b1a02f7 100644
--- a/java/com/android/dialer/util/UriUtils.java
+++ b/java/com/android/dialer/util/UriUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.net.Uri;
 import android.provider.ContactsContract;
+
 import java.util.List;
 
 /** Utility methods for dealing with URIs. */
diff --git a/java/com/android/dialer/util/ViewUtil.java b/java/com/android/dialer/util/ViewUtil.java
index 81a32f9..d2e4e99 100644
--- a/java/com/android/dialer/util/ViewUtil.java
+++ b/java/com/android/dialer/util/ViewUtil.java
@@ -22,7 +22,6 @@
 import android.os.PowerManager;
 import android.provider.Settings;
 import android.provider.Settings.Global;
-import android.support.annotation.NonNull;
 import android.text.TextUtils;
 import android.util.TypedValue;
 import android.view.View;
@@ -30,6 +29,9 @@
 import android.view.ViewTreeObserver.OnGlobalLayoutListener;
 import android.view.ViewTreeObserver.OnPreDrawListener;
 import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
 import java.util.Locale;
 
 /** Provides static functions to work with views */
@@ -101,7 +103,7 @@
   }
 
   public static void doOnPreDraw(
-      @NonNull final View view, final boolean drawNextFrame, final ViewRunnable runnable) {
+          @NonNull final View view, final boolean drawNextFrame, final ViewRunnable runnable) {
     view.getViewTreeObserver()
         .addOnPreDrawListener(
             new OnPreDrawListener() {
diff --git a/java/com/android/dialer/voicemail/listui/AndroidManifest.xml b/java/com/android/dialer/voicemail/listui/AndroidManifest.xml
deleted file mode 100644
index ae807bb..0000000
--- a/java/com/android/dialer/voicemail/listui/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.voicemail.listui"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java b/java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java
deleted file mode 100644
index 5b2f061..0000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailAdapter.java
+++ /dev/null
@@ -1,1115 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.dialer.voicemail.listui;
-
-import android.app.FragmentManager;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.database.Cursor;
-import android.media.MediaPlayer;
-import android.media.MediaPlayer.OnCompletionListener;
-import android.media.MediaPlayer.OnErrorListener;
-import android.media.MediaPlayer.OnPreparedListener;
-import android.net.Uri;
-import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
-import android.support.design.widget.Snackbar;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.util.ArrayMap;
-import android.util.ArraySet;
-import android.util.Pair;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import com.android.dialer.calllogutils.CallLogDates;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.time.Clock;
-import com.android.dialer.voicemail.listui.NewVoicemailViewHolder.NewVoicemailViewHolderListener;
-import com.android.dialer.voicemail.listui.error.VoicemailErrorMessage;
-import com.android.dialer.voicemail.listui.error.VoicemailErrorMessageCreator;
-import com.android.dialer.voicemail.listui.error.VoicemailStatus;
-import com.android.dialer.voicemail.model.VoicemailEntry;
-import com.android.voicemail.VoicemailClient;
-import com.google.common.collect.ImmutableList;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.Locale;
-import java.util.Objects;
-import java.util.Set;
-
-/** {@link RecyclerView.Adapter} for the new voicemail call log fragment. */
-final class NewVoicemailAdapter extends RecyclerView.Adapter<ViewHolder>
-    implements NewVoicemailViewHolderListener {
-
-  private static final int VOICEMAIL_DELETE_DELAY_MS = 3000;
-
-  /** IntDef for the different types of rows that can be shown in the call log. */
-  @Retention(RetentionPolicy.SOURCE)
-  @IntDef({RowType.HEADER, RowType.VOICEMAIL_ENTRY, RowType.VOICEMAIL_ALERT})
-  @interface RowType {
-    /** A row representing a voicemail alert. */
-    int VOICEMAIL_ALERT = 1;
-    /** Header that displays "Today", "Yesterday" or "Older". */
-    int HEADER = 2;
-    /** A row representing a voicemail entry. */
-    int VOICEMAIL_ENTRY = 3;
-  }
-
-  private Cursor cursor;
-  private final Clock clock;
-
-  /** {@link Integer#MAX_VALUE} when the "Today" header should not be displayed. */
-  private int todayHeaderPosition = Integer.MAX_VALUE;
-  /** {@link Integer#MAX_VALUE} when the "Yesterday" header should not be displayed. */
-  private int yesterdayHeaderPosition = Integer.MAX_VALUE;
-  /** {@link Integer#MAX_VALUE} when the "Older" header should not be displayed. */
-  private int olderHeaderPosition = Integer.MAX_VALUE;
-  /** {@link Integer#MAX_VALUE} when the voicemail alert message should not be displayed. */
-  private int voicemailAlertPosition = Integer.MAX_VALUE;
-
-  private final FragmentManager fragmentManager;
-  /** A valid id for {@link VoicemailEntry} is greater than 0 */
-  private long currentlyExpandedViewHolderId = -1;
-
-  private VoicemailErrorMessage voicemailErrorMessage;
-
-  /**
-   * It takes time to delete voicemails from the server, so we "remove" them and remember the
-   * positions we removed until a new cursor is ready.
-   */
-  Set<Integer> deletedVoicemailPosition = new ArraySet<>();
-
-  /**
-   * A set of (re-usable) view holders being used by the recycler view to display voicemails. This
-   * set may include multiple view holder with the same ID and shouldn't be used to lookup a
-   * specific viewholder based on this value, instead use newVoicemailViewHolderArrayMap for that
-   * purpose.
-   */
-  private final Set<NewVoicemailViewHolder> newVoicemailViewHolderSet = new ArraySet<>();
-  /**
-   * This allows us to retrieve the view holder corresponding to a particular view holder id, and
-   * will always ensure there is only (up-to-date) view holder corresponding to a view holder id,
-   * unlike the newVoicemailViewHolderSet.
-   */
-  private final ArrayMap<Long, NewVoicemailViewHolder> newVoicemailViewHolderArrayMap =
-      new ArrayMap<>();
-
-  // A single instance of a media player re-used across the expanded view holders.
-  private final NewVoicemailMediaPlayer mediaPlayer =
-      new NewVoicemailMediaPlayer(new MediaPlayer());
-
-  /** @param cursor whose projection is {@link VoicemailCursorLoader#VOICEMAIL_COLUMNS} */
-  NewVoicemailAdapter(Cursor cursor, Clock clock, FragmentManager fragmentManager) {
-    LogUtil.enterBlock("NewVoicemailAdapter");
-    this.cursor = cursor;
-    this.clock = clock;
-    this.fragmentManager = fragmentManager;
-    initializeMediaPlayerListeners();
-    updateHeaderPositions();
-  }
-
-  private void updateHeaderPositions() {
-    LogUtil.i(
-        "NewVoicemailAdapter.updateHeaderPositions",
-        "before updating todayPos:%d, yestPos:%d, olderPos:%d, alertPos:%d",
-        todayHeaderPosition,
-        yesterdayHeaderPosition,
-        olderHeaderPosition,
-        voicemailAlertPosition);
-
-    // If there are no rows to display, set all header positions to MAX_VALUE.
-    if (!cursor.moveToFirst()) {
-      todayHeaderPosition = Integer.MAX_VALUE;
-      yesterdayHeaderPosition = Integer.MAX_VALUE;
-      olderHeaderPosition = Integer.MAX_VALUE;
-      return;
-    }
-
-    long currentTimeMillis = clock.currentTimeMillis();
-
-    int numItemsInToday = 0;
-    int numItemsInYesterday = 0;
-
-    do {
-      long timestamp = VoicemailCursorLoader.getTimestamp(cursor);
-      long dayDifference = CallLogDates.getDayDifference(currentTimeMillis, timestamp);
-      if (dayDifference == 0) {
-        numItemsInToday++;
-      } else if (dayDifference == 1) {
-        numItemsInYesterday++;
-      } else {
-        break;
-      }
-    } while (cursor.moveToNext());
-
-    if (numItemsInToday > 0) {
-      numItemsInToday++; // including the "Today" header;
-    }
-    if (numItemsInYesterday > 0) {
-      numItemsInYesterday++; // including the "Yesterday" header;
-    }
-
-    int alertOffSet = 0;
-    if (voicemailAlertPosition != Integer.MAX_VALUE) {
-      Assert.checkArgument(
-          voicemailAlertPosition == 0, "voicemail alert can only be 0, when showing");
-      alertOffSet = 1;
-    }
-
-    // Set all header positions.
-    // A header position will be MAX_VALUE if there is no item to be displayed under that header.
-    todayHeaderPosition = numItemsInToday > 0 ? alertOffSet : Integer.MAX_VALUE;
-    yesterdayHeaderPosition =
-        numItemsInYesterday > 0 ? numItemsInToday + alertOffSet : Integer.MAX_VALUE;
-    olderHeaderPosition =
-        !cursor.isAfterLast()
-            ? numItemsInToday + numItemsInYesterday + alertOffSet
-            : Integer.MAX_VALUE;
-
-    LogUtil.i(
-        "NewVoicemailAdapter.updateHeaderPositions",
-        "after updating todayPos:%d, yestPos:%d, olderPos:%d, alertOffSet:%d, alertPos:%d",
-        todayHeaderPosition,
-        yesterdayHeaderPosition,
-        olderHeaderPosition,
-        alertOffSet,
-        voicemailAlertPosition);
-  }
-
-  private void initializeMediaPlayerListeners() {
-    mediaPlayer.setOnCompletionListener(onCompletionListener);
-    mediaPlayer.setOnPreparedListener(onPreparedListener);
-    mediaPlayer.setOnErrorListener(onErrorListener);
-  }
-
-  public void updateCursor(Cursor updatedCursor) {
-    LogUtil.enterBlock("NewVoicemailAdapter.updateCursor");
-    deletedVoicemailPosition.clear();
-    this.cursor = updatedCursor;
-    updateHeaderPositions();
-    notifyDataSetChanged();
-  }
-
-  @Override
-  public ViewHolder onCreateViewHolder(ViewGroup viewGroup, @RowType int viewType) {
-    LogUtil.enterBlock("NewVoicemailAdapter.onCreateViewHolder");
-    LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
-    View view;
-    switch (viewType) {
-      case RowType.VOICEMAIL_ALERT:
-        view = inflater.inflate(R.layout.new_voicemail_entry_alert, viewGroup, false);
-        return new NewVoicemailAlertViewHolder(view);
-      case RowType.HEADER:
-        view = inflater.inflate(R.layout.new_voicemail_entry_header, viewGroup, false);
-        return new NewVoicemailHeaderViewHolder(view);
-      case NewVoicemailAdapter.RowType.VOICEMAIL_ENTRY:
-        view = inflater.inflate(R.layout.new_voicemail_entry, viewGroup, false);
-        NewVoicemailViewHolder newVoicemailViewHolder =
-            new NewVoicemailViewHolder(view, clock, this);
-        newVoicemailViewHolderSet.add(newVoicemailViewHolder);
-        return newVoicemailViewHolder;
-      default:
-        throw Assert.createUnsupportedOperationFailException("Unsupported view type: " + viewType);
-    }
-  }
-
-  // TODO(uabdullah): a bug - Clean up logging in this function, here for debugging during
-  // development.
-  @Override
-  public void onBindViewHolder(ViewHolder viewHolder, int position) {
-    LogUtil.enterBlock("NewVoicemailAdapter.onBindViewHolder, pos:" + position);
-    // Re-request a bind when a viewholder is deleted to ensure correct position
-    if (deletedVoicemailPosition.contains(position)) {
-      LogUtil.i(
-          "NewVoicemailAdapter.onBindViewHolder",
-          "pos:%d contains deleted voicemail, re-bind. #of deleted voicemail positions: %d",
-          position,
-          deletedVoicemailPosition.size());
-      // TODO(uabdullah): This should be removed when we support multi-select delete
-      Assert.checkArgument(
-          deletedVoicemailPosition.size() == 1, "multi-deletes not currently supported");
-      onBindViewHolder(viewHolder, ++position);
-      return;
-    }
-
-    // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-    printHashSet();
-    // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-    printArrayMap();
-
-    if (viewHolder instanceof NewVoicemailHeaderViewHolder) {
-      LogUtil.i(
-          "NewVoicemailAdapter.onBindViewHolder", "view holder at pos:%d is a header", position);
-      onBindHeaderViewHolder(viewHolder, position);
-      return;
-    }
-
-    if (viewHolder instanceof NewVoicemailAlertViewHolder) {
-      LogUtil.i(
-          "NewVoicemailAdapter.onBindViewHolder", "view holder at pos:%d is a alert", position);
-      onBindAlertViewHolder(viewHolder, position);
-      return;
-    }
-
-    LogUtil.i(
-        "NewVoicemailAdapter.onBindViewHolder",
-        "view holder at pos:%d is a not a header or an alert",
-        position);
-
-    NewVoicemailViewHolder newVoicemailViewHolder = (NewVoicemailViewHolder) viewHolder;
-    int nonVoicemailEntryHeaders = getHeaderCountAtPosition(position);
-
-    LogUtil.i(
-        "NewVoicemailAdapter.onBindViewHolder",
-        "view holder at pos:%d, nonVoicemailEntryHeaders:%d",
-        position,
-        nonVoicemailEntryHeaders);
-
-    // Remove if the viewholder is being recycled.
-    if (newVoicemailViewHolderArrayMap.containsKey(newVoicemailViewHolder.getViewHolderId())) {
-      // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-      LogUtil.i(
-          "NewVoicemailAdapter.onBindViewHolder",
-          "Removing from hashset:%d, hashsetSize:%d, currExpanded:%d",
-          newVoicemailViewHolder.getViewHolderId(),
-          newVoicemailViewHolderArrayMap.size(),
-          currentlyExpandedViewHolderId);
-
-      newVoicemailViewHolderArrayMap.remove(newVoicemailViewHolder.getViewHolderId());
-      printHashSet();
-      printArrayMap();
-    }
-
-    newVoicemailViewHolder.reset();
-    cursor.moveToPosition(position - nonVoicemailEntryHeaders);
-    newVoicemailViewHolder.bindViewHolderValuesFromAdapter(
-        cursor, fragmentManager, mediaPlayer, position, currentlyExpandedViewHolderId);
-
-    // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-    LogUtil.i(
-        "NewVoicemailAdapter.onBindViewHolder",
-        "Adding to hashset:%d, hashsetSize:%d, pos:%d, currExpanded:%d",
-        newVoicemailViewHolder.getViewHolderId(),
-        newVoicemailViewHolderArrayMap.size(),
-        position,
-        currentlyExpandedViewHolderId);
-
-    // Need this to ensure correct getCurrentlyExpandedViewHolder() value
-    newVoicemailViewHolderArrayMap.put(
-        newVoicemailViewHolder.getViewHolderId(), newVoicemailViewHolder);
-
-    // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-    printHashSet();
-    // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-    printArrayMap();
-
-    // If the viewholder is playing the voicemail, keep updating its media player view (seekbar,
-    // duration etc.)
-    if (newVoicemailViewHolder.isViewHolderExpanded() && mediaPlayer.isPlaying()) {
-      LogUtil.i(
-          "NewVoicemailAdapter.onBindViewHolder",
-          "Adding to hashset:%d, hashsetSize:%d, pos:%d, currExpanded:%d",
-          newVoicemailViewHolderSet.size(),
-          newVoicemailViewHolderArrayMap.size(),
-          position,
-          currentlyExpandedViewHolderId);
-
-      Assert.checkArgument(
-          newVoicemailViewHolder
-              .getViewHolderVoicemailUri()
-              .equals(mediaPlayer.getLastPlayedOrPlayingVoicemailUri()),
-          "only the expanded view holder can be playing.");
-      Assert.isNotNull(getCurrentlyExpandedViewHolder());
-      Assert.checkArgument(
-          getCurrentlyExpandedViewHolder()
-              .getViewHolderVoicemailUri()
-              .equals(mediaPlayer.getLastPlayedOrPlayingVoicemailUri()));
-
-      recursivelyUpdateMediaPlayerViewOfExpandedViewHolder(newVoicemailViewHolder);
-    }
-    // Updates the hashmap with the most up-to-date state of the viewholder.
-    newVoicemailViewHolderArrayMap.put(
-        newVoicemailViewHolder.getViewHolderId(), newVoicemailViewHolder);
-
-    // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-    printHashSet();
-    // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-    printArrayMap();
-  }
-
-  private int getHeaderCountAtPosition(int position) {
-    int previousHeaders = 0;
-    if (voicemailAlertPosition != Integer.MAX_VALUE && position > voicemailAlertPosition) {
-      previousHeaders++;
-    }
-    if (todayHeaderPosition != Integer.MAX_VALUE && position > todayHeaderPosition) {
-      previousHeaders++;
-    }
-    if (yesterdayHeaderPosition != Integer.MAX_VALUE && position > yesterdayHeaderPosition) {
-      previousHeaders++;
-    }
-    if (olderHeaderPosition != Integer.MAX_VALUE && position > olderHeaderPosition) {
-      previousHeaders++;
-    }
-    return previousHeaders;
-  }
-
-  private void onBindAlertViewHolder(ViewHolder viewHolder, int position) {
-    LogUtil.i(
-        "NewVoicemailAdapter.onBindAlertViewHolder",
-        "pos:%d, voicemailAlertPosition:%d",
-        position,
-        voicemailAlertPosition);
-
-    NewVoicemailAlertViewHolder alertViewHolder = (NewVoicemailAlertViewHolder) viewHolder;
-    @RowType int viewType = getItemViewType(position);
-
-    Assert.checkArgument(position == 0, "position is not 0");
-    Assert.checkArgument(
-        position == voicemailAlertPosition,
-        String.format(
-            Locale.US,
-            "position:%d and voicemailAlertPosition:%d are different",
-            position,
-            voicemailAlertPosition));
-    Assert.checkArgument(viewType == RowType.VOICEMAIL_ALERT, "Invalid row type: " + viewType);
-    Assert.checkArgument(
-        voicemailErrorMessage.getActions().size() <= 2,
-        "Too many actions: " + voicemailErrorMessage.getActions().size());
-
-    alertViewHolder.setTitle(voicemailErrorMessage.getTitle());
-    alertViewHolder.setDescription(voicemailErrorMessage.getDescription());
-
-    if (!voicemailErrorMessage.getActions().isEmpty()) {
-      alertViewHolder.setPrimaryButton(voicemailErrorMessage.getActions().get(0));
-    }
-    if (voicemailErrorMessage.getActions().size() > 1) {
-      alertViewHolder.setSecondaryButton(voicemailErrorMessage.getActions().get(1));
-    }
-  }
-
-  private void onBindHeaderViewHolder(ViewHolder viewHolder, int position) {
-    NewVoicemailHeaderViewHolder headerViewHolder = (NewVoicemailHeaderViewHolder) viewHolder;
-    @RowType int viewType = getItemViewType(position);
-    if (position == todayHeaderPosition) {
-      headerViewHolder.setHeader(R.string.new_voicemail_header_today);
-    } else if (position == yesterdayHeaderPosition) {
-      headerViewHolder.setHeader(R.string.new_voicemail_header_yesterday);
-    } else if (position == olderHeaderPosition) {
-      headerViewHolder.setHeader(R.string.new_voicemail_header_older);
-    } else {
-      throw Assert.createIllegalStateFailException(
-          "Unexpected view type " + viewType + " at position: " + position);
-    }
-  }
-
-  private void printArrayMap() {
-    LogUtil.i(
-        "NewVoicemailAdapter.printArrayMap",
-        "hashMapSize: %d, currentlyExpandedViewHolderId:%d",
-        newVoicemailViewHolderArrayMap.size(),
-        currentlyExpandedViewHolderId);
-
-    if (!newVoicemailViewHolderArrayMap.isEmpty()) {
-      String ids = "";
-      for (long id : newVoicemailViewHolderArrayMap.keySet()) {
-        ids = ids + id + " ";
-      }
-      LogUtil.i("NewVoicemailAdapter.printArrayMap", "ids are " + ids);
-    }
-  }
-
-  private void printHashSet() {
-    LogUtil.i(
-        "NewVoicemailAdapter.printHashSet",
-        "hashSetSize: %d, currentlyExpandedViewHolderId:%d",
-        newVoicemailViewHolderSet.size(),
-        currentlyExpandedViewHolderId);
-
-    if (!newVoicemailViewHolderSet.isEmpty()) {
-      String viewHolderID = "";
-      for (NewVoicemailViewHolder vh : newVoicemailViewHolderSet) {
-        viewHolderID = viewHolderID + vh.getViewHolderId() + " ";
-      }
-      LogUtil.i("NewVoicemailAdapter.printHashSet", "ids are " + viewHolderID);
-    }
-  }
-
-  /**
-   * The {@link NewVoicemailAdapter} needs to keep track of {@link NewVoicemailViewHolder} that has
-   * been expanded. This is so that the adapter can ensure the correct {@link
-   * NewVoicemailMediaPlayerView} and {@link NewVoicemailViewHolder} states are maintained
-   * (playing/paused/reset) for the expanded viewholder, especially when views are recycled in
-   * {@link RecyclerView}. Since we can only have one expanded voicemail view holder, this method
-   * ensures that except for the currently expanded view holder, all the other view holders visible
-   * on the screen are collapsed.
-   *
-   * <p>The {@link NewVoicemailMediaPlayer} is also reset, if there is an existing playing
-   * voicemail.
-   *
-   * <p>This is the function that is responsible of keeping track of the expanded viewholder in the
-   * {@link NewVoicemailAdapter}
-   *
-   * <p>This is the first function called in the adapter when a viewholder has been expanded.
-   *
-   * <p>This is the function that is responsible of keeping track of the expanded viewholder in the
-   * {@link NewVoicemailAdapter}
-   *
-   * @param viewHolderRequestedToExpand is the view holder that is currently expanded.
-   * @param voicemailEntryOfViewHolder
-   */
-  @Override
-  public void expandViewHolderFirstTimeAndCollapseAllOtherVisibleViewHolders(
-      NewVoicemailViewHolder viewHolderRequestedToExpand,
-      VoicemailEntry voicemailEntryOfViewHolder,
-      NewVoicemailViewHolderListener listener) {
-
-    LogUtil.i(
-        "NewVoicemailAdapter.expandViewHolderFirstTimeAndCollapseAllOtherVisibleViewHolders",
-        "viewholder id:%d being request to expand, isExpanded:%b, size of our view holder "
-            + "dataset:%d, hashmap size:%d",
-        viewHolderRequestedToExpand.getViewHolderId(),
-        viewHolderRequestedToExpand.isViewHolderExpanded(),
-        newVoicemailViewHolderSet.size(),
-        newVoicemailViewHolderArrayMap.size());
-
-    currentlyExpandedViewHolderId = viewHolderRequestedToExpand.getViewHolderId();
-
-    for (NewVoicemailViewHolder viewHolder : newVoicemailViewHolderSet) {
-      if (viewHolder.getViewHolderId() != viewHolderRequestedToExpand.getViewHolderId()) {
-        viewHolder.collapseViewHolder();
-      }
-    }
-
-    // If the media player is playing and we expand something other than the currently playing one
-    // we should stop playing the media player
-    if (mediaPlayer.isPlaying()
-        && !Objects.equals(
-            mediaPlayer.getLastPlayedOrPlayingVoicemailUri(),
-            viewHolderRequestedToExpand.getViewHolderVoicemailUri())) {
-      LogUtil.i(
-          "NewVoicemailAdapter.expandViewHolderFirstTimeAndCollapseAllOtherVisibleViewHolders",
-          "Reset the media player since we expanded something other that the playing "
-              + "voicemail, MP was playing:%s, viewholderExpanded:%d, MP.isPlaying():%b",
-          String.valueOf(mediaPlayer.getLastPlayedOrPlayingVoicemailUri()),
-          viewHolderRequestedToExpand.getViewHolderId(),
-          mediaPlayer.isPlaying());
-      mediaPlayer.reset();
-    }
-
-    // If the media player is paused and we expand something other than the currently paused one
-    // we should stop playing the media player
-    if (mediaPlayer.isPaused()
-        && !Objects.equals(
-            mediaPlayer.getLastPausedVoicemailUri(),
-            viewHolderRequestedToExpand.getViewHolderVoicemailUri())) {
-      LogUtil.i(
-          "NewVoicemailAdapter.expandViewHolderFirstTimeAndCollapseAllOtherVisibleViewHolders",
-          "There was an existing paused viewholder, the media player should reset since we "
-              + "expanded something other that the paused voicemail, MP.paused:%s",
-          String.valueOf(mediaPlayer.getLastPausedVoicemailUri()));
-      mediaPlayer.reset();
-    }
-
-    Assert.checkArgument(
-        !viewHolderRequestedToExpand.isViewHolderExpanded(),
-        "cannot expand a voicemail that is not collapsed");
-
-    viewHolderRequestedToExpand.expandAndBindViewHolderAndMediaPlayerViewWithAdapterValues(
-        voicemailEntryOfViewHolder, fragmentManager, mediaPlayer, listener);
-
-    // There should be nothing playing when we expand a viewholder for the first time
-    Assert.checkArgument(!mediaPlayer.isPlaying());
-  }
-
-  /**
-   * Ensures that when we collapse the expanded view, we don't expand it again when we are recycling
-   * the viewholders. If we collapse an existing playing voicemail viewholder, we should stop
-   * playing it.
-   *
-   * @param collapseViewHolder is the view holder that is currently collapsed.
-   */
-  @Override
-  public void collapseExpandedViewHolder(NewVoicemailViewHolder collapseViewHolder) {
-    Assert.checkArgument(collapseViewHolder.getViewHolderId() == currentlyExpandedViewHolderId);
-    collapseViewHolder.collapseViewHolder();
-    currentlyExpandedViewHolderId = -1;
-
-    // If the view holder is currently playing, then we should stop playing it.
-    if (mediaPlayer.isPlaying()) {
-      Assert.checkArgument(
-          Objects.equals(
-              mediaPlayer.getLastPlayedOrPlayingVoicemailUri(),
-              collapseViewHolder.getViewHolderVoicemailUri()),
-          "the voicemail being played should have been of the recently collapsed view holder.");
-      mediaPlayer.reset();
-    }
-  }
-
-  @Override
-  public void pauseViewHolder(NewVoicemailViewHolder expandedViewHolder) {
-    Assert.isNotNull(
-        getCurrentlyExpandedViewHolder(),
-        "cannot have pressed pause if the viewholder wasn't expanded");
-    Assert.checkArgument(
-        getCurrentlyExpandedViewHolder()
-            .getViewHolderVoicemailUri()
-            .equals(expandedViewHolder.getViewHolderVoicemailUri()),
-        "view holder whose pause button was pressed has to have been the expanded "
-            + "viewholder being tracked by the adapter.");
-    mediaPlayer.pauseMediaPlayer(expandedViewHolder.getViewHolderVoicemailUri());
-    expandedViewHolder.setPausedStateOfMediaPlayerView(
-        expandedViewHolder.getViewHolderVoicemailUri(), mediaPlayer);
-  }
-
-  @Override
-  public void resumePausedViewHolder(NewVoicemailViewHolder expandedViewHolder) {
-    Assert.isNotNull(
-        getCurrentlyExpandedViewHolder(),
-        "cannot have pressed pause if the viewholder wasn't expanded");
-    Assert.checkArgument(
-        getCurrentlyExpandedViewHolder()
-            .getViewHolderVoicemailUri()
-            .equals(expandedViewHolder.getViewHolderVoicemailUri()),
-        "view holder whose play button was pressed has to have been the expanded "
-            + "viewholder being tracked by the adapter.");
-    Assert.isNotNull(
-        mediaPlayer.getLastPausedVoicemailUri(), "there should be be an pausedUri to resume");
-    Assert.checkArgument(
-        mediaPlayer
-            .getLastPlayedOrPlayingVoicemailUri()
-            .equals(expandedViewHolder.getViewHolderVoicemailUri()),
-        "only the last playing uri can be resumed");
-    Assert.checkArgument(
-        mediaPlayer
-            .getLastPreparedOrPreparingToPlayVoicemailUri()
-            .equals(expandedViewHolder.getViewHolderVoicemailUri()),
-        "only the last prepared uri can be resumed");
-    Assert.checkArgument(
-        mediaPlayer
-            .getLastPreparedOrPreparingToPlayVoicemailUri()
-            .equals(mediaPlayer.getLastPlayedOrPlayingVoicemailUri()),
-        "the last prepared and playing voicemails have to be the same when resuming");
-
-    onPreparedListener.onPrepared(mediaPlayer.getMediaPlayer());
-  }
-
-  @Override
-  public void deleteViewHolder(
-      Context context,
-      FragmentManager fragmentManager,
-      NewVoicemailViewHolder expandedViewHolder,
-      Uri voicemailUri) {
-    LogUtil.i(
-        "NewVoicemailAdapter.deleteViewHolder",
-        "deleting adapter position %d, id:%d, uri:%s ",
-        expandedViewHolder.getAdapterPosition(),
-        expandedViewHolder.getViewHolderId(),
-        String.valueOf(voicemailUri));
-
-    deletedVoicemailPosition.add(expandedViewHolder.getAdapterPosition());
-
-    Assert.checkArgument(expandedViewHolder.getViewHolderVoicemailUri().equals(voicemailUri));
-
-    Assert.checkArgument(currentlyExpandedViewHolderId == expandedViewHolder.getViewHolderId());
-
-    collapseExpandedViewHolder(expandedViewHolder);
-
-    showUndoSnackbar(
-        context,
-        expandedViewHolder.getMediaPlayerView(),
-        expandedViewHolder.getAdapterPosition(),
-        voicemailUri);
-  }
-
-  private void showUndoSnackbar(
-      Context context, View newVoicemailMediaPlayerView, int position, Uri voicemailUri) {
-    LogUtil.i(
-        "NewVoicemailAdapter.showUndoSnackbar",
-        "position:%d and uri:%s",
-        position,
-        String.valueOf(voicemailUri));
-    Snackbar undoSnackbar =
-        Snackbar.make(
-            newVoicemailMediaPlayerView,
-            R.string.snackbar_voicemail_deleted,
-            VOICEMAIL_DELETE_DELAY_MS);
-    undoSnackbar.addCallback(
-        new Snackbar.Callback() {
-          @Override
-          public void onShown(Snackbar sb) {
-            notifyItemRemoved(position);
-            LogUtil.i(
-                "NewVoicemailAdapter.showUndoSnackbar",
-                "onShown for position:%d and uri:%s",
-                position,
-                voicemailUri);
-            super.onShown(sb);
-          }
-
-          @Override
-          public void onDismissed(Snackbar transientBottomBar, int event) {
-            LogUtil.i(
-                "NewVoicemailAdapter.showUndoSnackbar",
-                "onDismissed for event:%d, position:%d and uri:%s",
-                event,
-                position,
-                String.valueOf(voicemailUri));
-
-            switch (event) {
-              case DISMISS_EVENT_SWIPE:
-              case DISMISS_EVENT_ACTION:
-              case DISMISS_EVENT_MANUAL:
-                LogUtil.i(
-                    "NewVoicemailAdapter.showUndoSnackbar",
-                    "Not proceeding with deleting the voicemail");
-                deletedVoicemailPosition.remove(position);
-                notifyItemChanged(position);
-                break;
-              case DISMISS_EVENT_TIMEOUT:
-              case DISMISS_EVENT_CONSECUTIVE:
-                LogUtil.i(
-                    "NewVoicemailAdapter.showUndoSnackbar", "Proceeding with deleting voicemail");
-
-                DialerExecutorComponent.get(context)
-                    .dialerExecutorFactory()
-                    .createNonUiTaskBuilder(this::deleteVoicemail)
-                    .build()
-                    .executeSerial(new Pair<>(context, voicemailUri));
-                break;
-              default:
-                Assert.checkArgument(event <= 4 && event >= 0, "unknown event");
-            }
-          }
-
-          @WorkerThread
-          private Void deleteVoicemail(Pair<Context, Uri> contextUriPair) {
-            Assert.isWorkerThread();
-            Context context = contextUriPair.first;
-            Uri uri = contextUriPair.second;
-            LogUtil.i(
-                "NewVoicemailAdapter.deleteVoicemail", "deleting uri:%s", String.valueOf(uri));
-            ContentValues values = new ContentValues();
-            values.put(Voicemails.DELETED, "1");
-
-            int numRowsUpdated = context.getContentResolver().update(uri, values, null, null);
-
-            LogUtil.i("NewVoicemailAdapter.deleteVoicemail", "return value:%d", numRowsUpdated);
-            Assert.checkArgument(numRowsUpdated == 1, "voicemail delete was not successful");
-
-            Intent intent = new Intent(VoicemailClient.ACTION_UPLOAD);
-            intent.setPackage(context.getPackageName());
-            context.sendBroadcast(intent);
-            return null;
-          }
-        });
-
-    undoSnackbar
-        .setAction(
-            R.string.snackbar_undo,
-            new OnClickListener() {
-              @Override
-              public void onClick(View v) {
-                // does nothing, but needed for the undo button to show
-              }
-            })
-        .setActionTextColor(
-            context.getResources().getColor(R.color.dialer_snackbar_action_text_color))
-        .show();
-  }
-
-  /**
-   * This function is called recursively to update the seekbar, duration, play/pause buttons of the
-   * expanded view holder if its playing.
-   *
-   * <p>Since this function is called at 30 frames/second, its possible (and eventually will happen)
-   * that between each update the playing voicemail state could have changed, in which case this
-   * method should stop calling itself. These conditions are:
-   *
-   * <ul>
-   *   <li>The user scrolled the playing voicemail out of view.
-   *   <li>Another view holder was expanded.
-   *   <li>The playing voicemail was paused.
-   *   <li>The media player returned {@link MediaPlayer#isPlaying()} to be true but had its {@link
-   *       MediaPlayer#getCurrentPosition()} > {@link MediaPlayer#getDuration()}.
-   *   <li>The {@link MediaPlayer} stopped playing.
-   * </ul>
-   *
-   * <p>Note: Since the update happens at 30 frames/second, it's also possible that the viewholder
-   * was recycled when scrolling the playing voicemail out of view.
-   *
-   * @param expandedViewHolderPossiblyPlaying the view holder that was expanded and could or could
-   *     not be playing. This viewholder can be recycled.
-   */
-  private void recursivelyUpdateMediaPlayerViewOfExpandedViewHolder(
-      NewVoicemailViewHolder expandedViewHolderPossiblyPlaying) {
-    // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-    LogUtil.i(
-        "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
-        "currentlyExpanded:%d",
-        currentlyExpandedViewHolderId);
-
-    // It's possible that by the time this is run, the expanded view holder has been
-    // scrolled out of view (and possibly recycled)
-    if (getCurrentlyExpandedViewHolder() == null) {
-      LogUtil.i(
-          "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
-          "viewholder:%d media player view, no longer on screen, no need to update",
-          expandedViewHolderPossiblyPlaying.getViewHolderId());
-      return;
-    }
-
-    // Another viewholder was expanded, no need to update
-    if (!getCurrentlyExpandedViewHolder().equals(expandedViewHolderPossiblyPlaying)) {
-      LogUtil.i(
-          "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
-          "currentlyExpandedViewHolderId:%d and the one we are attempting to update:%d "
-              + "aren't the same.",
-          currentlyExpandedViewHolderId,
-          expandedViewHolderPossiblyPlaying.getViewHolderId());
-      return;
-    }
-
-    Assert.checkArgument(expandedViewHolderPossiblyPlaying.isViewHolderExpanded());
-    Assert.checkArgument(
-        expandedViewHolderPossiblyPlaying.getViewHolderId()
-            == getCurrentlyExpandedViewHolder().getViewHolderId());
-
-    // If the viewholder was paused, there is no need to update the media player view
-    if (mediaPlayer.isPaused()) {
-      Assert.checkArgument(
-          expandedViewHolderPossiblyPlaying
-              .getViewHolderVoicemailUri()
-              .equals(mediaPlayer.getLastPausedVoicemailUri()),
-          "only the expanded viewholder can be paused.");
-
-      LogUtil.i(
-          "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
-          "set the media player to a paused state");
-      expandedViewHolderPossiblyPlaying.setPausedStateOfMediaPlayerView(
-          expandedViewHolderPossiblyPlaying.getViewHolderVoicemailUri(), mediaPlayer);
-      return;
-    }
-
-    // In some weird corner cases a media player could return isPlaying() as true but would
-    // have getCurrentPosition > getDuration(). We consider that as the voicemail has finished
-    // playing.
-    if (mediaPlayer.isPlaying() && mediaPlayer.getCurrentPosition() < mediaPlayer.getDuration()) {
-
-      Assert.checkArgument(
-          mediaPlayer
-              .getLastPlayedOrPlayingVoicemailUri()
-              .equals(getCurrentlyExpandedViewHolder().getViewHolderVoicemailUri()));
-      // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-      LogUtil.i(
-          "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
-          "recursely update the player, currentlyExpanded:%d",
-          expandedViewHolderPossiblyPlaying.getViewHolderId());
-
-      Assert.checkArgument(
-          expandedViewHolderPossiblyPlaying
-              .getViewHolderVoicemailUri()
-              .equals(getCurrentlyExpandedViewHolder().getViewHolderVoicemailUri()));
-
-      expandedViewHolderPossiblyPlaying.updateMediaPlayerViewWithPlayingState(
-          expandedViewHolderPossiblyPlaying, mediaPlayer);
-
-      ThreadUtil.postDelayedOnUiThread(
-          new Runnable() {
-            @Override
-            public void run() {
-              recursivelyUpdateMediaPlayerViewOfExpandedViewHolder(
-                  expandedViewHolderPossiblyPlaying);
-            }
-          },
-          1000 / 30 /*30 FPS*/);
-      return;
-    }
-
-    if (!mediaPlayer.isPlaying()
-        || (mediaPlayer.isPlaying()
-            && mediaPlayer.getCurrentPosition() > mediaPlayer.getDuration())) {
-      LogUtil.i(
-          "NewVoicemailAdapter.recursivelyUpdateMediaPlayerViewOfExpandedViewHolder",
-          "resetting the player, currentlyExpanded:%d, MPPlaying:%b",
-          getCurrentlyExpandedViewHolder().getViewHolderId(),
-          mediaPlayer.isPlaying());
-      mediaPlayer.reset();
-      Assert.checkArgument(
-          expandedViewHolderPossiblyPlaying
-              .getViewHolderVoicemailUri()
-              .equals(getCurrentlyExpandedViewHolder().getViewHolderVoicemailUri()));
-      expandedViewHolderPossiblyPlaying.setMediaPlayerViewToResetState(
-          expandedViewHolderPossiblyPlaying, mediaPlayer);
-      return;
-    }
-
-    String error =
-        String.format(
-            "expandedViewHolderPossiblyPlaying:%d, expanded:%b, CurrentExpanded:%d, uri:%s, "
-                + "MPPlaying:%b, MPPaused:%b, MPPreparedUri:%s, MPPausedUri:%s",
-            expandedViewHolderPossiblyPlaying.getViewHolderId(),
-            expandedViewHolderPossiblyPlaying.isViewHolderExpanded(),
-            currentlyExpandedViewHolderId,
-            String.valueOf(expandedViewHolderPossiblyPlaying.getViewHolderVoicemailUri()),
-            mediaPlayer.isPlaying(),
-            mediaPlayer.isPaused(),
-            String.valueOf(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()),
-            String.valueOf(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()));
-
-    throw Assert.createAssertionFailException(
-        "All cases should have been handled before. Error " + error);
-  }
-
-  // When a voicemail has finished playing.
-  OnCompletionListener onCompletionListener =
-      new OnCompletionListener() {
-
-        @Override
-        public void onCompletion(MediaPlayer mp) {
-          Assert.checkArgument(
-              mediaPlayer
-                  .getLastPlayedOrPlayingVoicemailUri()
-                  .equals(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()));
-          Assert.checkArgument(!mediaPlayer.isPlaying());
-
-          LogUtil.i(
-              "NewVoicemailAdapter.onCompletionListener",
-              "completed playing voicemailUri: %s, expanded viewholder is %d, visibility :%b",
-              mediaPlayer.getLastPlayedOrPlayingVoicemailUri().toString(),
-              currentlyExpandedViewHolderId,
-              isCurrentlyExpandedViewHolderInViewHolderSet());
-
-          Assert.checkArgument(
-              currentlyExpandedViewHolderId != -1,
-              "a voicemail that was never expanded, should never be playing.");
-          mediaPlayer.reset();
-        }
-      };
-
-  // When a voicemail has been prepared and can be played
-  private final OnPreparedListener onPreparedListener =
-      new OnPreparedListener() {
-
-        /**
-         * When a user pressed the play button, this listener should be called immediately. The
-         * asserts ensures that is the case. This function starts playing the voicemail and updates
-         * the UI.
-         */
-        @Override
-        public void onPrepared(MediaPlayer mp) {
-          LogUtil.i(
-              "NewVoicemailAdapter.onPrepared",
-              "MPPreparedUri: %s, currentlyExpandedViewHolderId:%d, and its visibility on "
-                  + "the screen is:%b",
-              String.valueOf(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()),
-              currentlyExpandedViewHolderId,
-              isCurrentlyExpandedViewHolderInViewHolderSet());
-
-          NewVoicemailViewHolder currentlyExpandedViewHolder = getCurrentlyExpandedViewHolder();
-          Assert.checkArgument(currentlyExpandedViewHolder != null);
-          Assert.checkArgument(
-              currentlyExpandedViewHolder
-                  .getViewHolderVoicemailUri()
-                  .equals(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()),
-              "should only have prepared the last expanded view holder.");
-
-          mediaPlayer.start(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri());
-
-          recursivelyUpdateMediaPlayerViewOfExpandedViewHolder(currentlyExpandedViewHolder);
-
-          Assert.checkArgument(mediaPlayer.isPlaying());
-          LogUtil.i("NewVoicemailAdapter.onPrepared", "voicemail should be playing");
-        }
-      };
-
-  // TODO(uabdullah): when playing the voicemail results in an error
-  // we must update the viewholder and mention there was an error playing the voicemail, and reset
-  // the media player and the media player view
-  private final OnErrorListener onErrorListener =
-      new OnErrorListener() {
-        @Override
-        public boolean onError(MediaPlayer mp, int what, int extra) {
-          LogUtil.e("NewVoicemailAdapter.onError", "onError, what:%d, extra:%d", what, extra);
-          Assert.checkArgument(
-              mediaPlayer.getMediaPlayer().equals(mp),
-              "there should always only be one instance of the media player");
-          Assert.checkArgument(
-              mediaPlayer
-                  .getLastPlayedOrPlayingVoicemailUri()
-                  .equals(mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri()));
-          LogUtil.i(
-              "NewVoicemailAdapter.onErrorListener",
-              "error playing voicemailUri: %s",
-              mediaPlayer.getLastPlayedOrPlayingVoicemailUri().toString());
-          return false;
-        }
-      };
-
-  private boolean isCurrentlyExpandedViewHolderInViewHolderSet() {
-    for (NewVoicemailViewHolder viewHolder : newVoicemailViewHolderSet) {
-      if (viewHolder.getViewHolderId() == currentlyExpandedViewHolderId) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  /**
-   * The expanded view holder may or may not be visible on the screen. Since the {@link
-   * NewVoicemailViewHolder} may be recycled, it's possible that the expanded view holder is
-   * recycled for a non-expanded view holder when the expanded view holder is scrolled out of view.
-   *
-   * @return the expanded view holder if it is amongst the recycled views on the screen, otherwise
-   *     null.
-   */
-  @Nullable
-  private NewVoicemailViewHolder getCurrentlyExpandedViewHolder() {
-    if (newVoicemailViewHolderArrayMap.containsKey(currentlyExpandedViewHolderId)) {
-      Assert.checkArgument(
-          newVoicemailViewHolderArrayMap.get(currentlyExpandedViewHolderId).getViewHolderId()
-              == currentlyExpandedViewHolderId);
-      return newVoicemailViewHolderArrayMap.get(currentlyExpandedViewHolderId);
-    } else {
-      // returned when currentlyExpandedViewHolderId = -1 (viewholder was collapsed)
-      LogUtil.i(
-          "NewVoicemailAdapter.getCurrentlyExpandedViewHolder",
-          "no view holder found in hashmap size:%d for %d",
-          newVoicemailViewHolderArrayMap.size(),
-          currentlyExpandedViewHolderId);
-      // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-      printHashSet();
-      printArrayMap();
-      return null;
-    }
-  }
-
-  @Override
-  public int getItemCount() {
-    // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-    LogUtil.enterBlock("NewVoicemailAdapter.getItemCount");
-    int numberOfHeaders = 0;
-    if (voicemailAlertPosition != Integer.MAX_VALUE) {
-      numberOfHeaders++;
-    }
-    if (todayHeaderPosition != Integer.MAX_VALUE) {
-      numberOfHeaders++;
-    }
-    if (yesterdayHeaderPosition != Integer.MAX_VALUE) {
-      numberOfHeaders++;
-    }
-    if (olderHeaderPosition != Integer.MAX_VALUE) {
-      numberOfHeaders++;
-    }
-    // TODO(uabdullah): a bug Remove logging, temporarily here for debugging.
-    LogUtil.i(
-        "NewVoicemailAdapter.getItemCount",
-        "cursor cnt:%d, num of headers:%d, delete size:%d",
-        cursor.getCount(),
-        numberOfHeaders,
-        deletedVoicemailPosition.size());
-    return cursor.getCount() + numberOfHeaders - deletedVoicemailPosition.size();
-  }
-
-  @RowType
-  @Override
-  public int getItemViewType(int position) {
-    LogUtil.enterBlock("NewVoicemailAdapter.getItemViewType");
-    if (voicemailAlertPosition != Integer.MAX_VALUE && position == voicemailAlertPosition) {
-      return RowType.VOICEMAIL_ALERT;
-    }
-    if (todayHeaderPosition != Integer.MAX_VALUE && position == todayHeaderPosition) {
-      return RowType.HEADER;
-    }
-    if (yesterdayHeaderPosition != Integer.MAX_VALUE && position == yesterdayHeaderPosition) {
-      return RowType.HEADER;
-    }
-    if (olderHeaderPosition != Integer.MAX_VALUE && position == olderHeaderPosition) {
-      return RowType.HEADER;
-    }
-    return RowType.VOICEMAIL_ENTRY;
-  }
-
-  /**
-   * This will be called once the voicemail that was attempted to be played (and was not locally
-   * available) was downloaded from the server. However it is possible that by the time the download
-   * was completed, the view holder was collapsed. In that case we shouldn't play the voicemail.
-   */
-  public void checkAndPlayVoicemail() {
-    LogUtil.i(
-        "NewVoicemailAdapter.checkAndPlayVoicemail",
-        "expandedViewHolder:%d, inViewHolderSet:%b, MPRequestToDownload:%s",
-        currentlyExpandedViewHolderId,
-        isCurrentlyExpandedViewHolderInViewHolderSet(),
-        String.valueOf(mediaPlayer.getVoicemailRequestedToDownload()));
-
-    NewVoicemailViewHolder currentlyExpandedViewHolder = getCurrentlyExpandedViewHolder();
-    if (currentlyExpandedViewHolderId != -1
-        && isCurrentlyExpandedViewHolderInViewHolderSet()
-        && currentlyExpandedViewHolder != null
-        // Used to differentiate underlying table changes from voicemail downloads and other changes
-        // (e.g delete)
-        && mediaPlayer.getVoicemailRequestedToDownload() != null
-        && (mediaPlayer
-            .getVoicemailRequestedToDownload()
-            .equals(currentlyExpandedViewHolder.getViewHolderVoicemailUri()))) {
-      currentlyExpandedViewHolder.clickPlayButtonOfViewHoldersMediaPlayerView(
-          currentlyExpandedViewHolder);
-    } else {
-      LogUtil.i("NewVoicemailAdapter.checkAndPlayVoicemail", "not playing downloaded voicemail");
-    }
-  }
-
-  /**
-   * Updates the voicemail alert message to reflect the state of the {@link VoicemailStatus} table.
-   * TODO(uabdullah): Handle ToS properly (a bug)
-   */
-  public void updateVoicemailAlertWithMostRecentStatus(
-      Context context, ImmutableList<VoicemailStatus> voicemailStatuses) {
-
-    if (voicemailStatuses.isEmpty()) {
-      LogUtil.i(
-          "NewVoicemailAdapter.updateVoicemailAlertWithMostRecentStatus",
-          "voicemailStatuses was empty");
-      return;
-    }
-
-    voicemailErrorMessage = null;
-    VoicemailErrorMessageCreator messageCreator = new VoicemailErrorMessageCreator();
-
-    for (VoicemailStatus status : voicemailStatuses) {
-      voicemailErrorMessage = messageCreator.create(context, status, null);
-      if (voicemailErrorMessage != null) {
-        break;
-      }
-    }
-
-    if (voicemailErrorMessage != null) {
-      LogUtil.i("NewVoicemailAdapter.updateVoicemailAlertWithMostRecentStatus", "showing alert");
-      voicemailAlertPosition = 0;
-      updateHeaderPositions();
-      notifyItemChanged(0);
-    }
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailAlertViewHolder.java b/java/com/android/dialer/voicemail/listui/NewVoicemailAlertViewHolder.java
deleted file mode 100644
index ac989a8..0000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailAlertViewHolder.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-import com.android.dialer.voicemail.listui.error.VoicemailErrorMessage.Action;
-
-/** ViewHolder for {@link NewVoicemailAdapter} to display voicemail error states. */
-final class NewVoicemailAlertViewHolder extends ViewHolder {
-
-  private final TextView voicemailErrorTitleTextView;
-  private final TextView voicemailErrorDetailsTextView;
-  private final Button primaryButton;
-  private final Button secondaryButton;
-
-  NewVoicemailAlertViewHolder(View view) {
-    super(view);
-    voicemailErrorTitleTextView = view.findViewById(R.id.voicemail_alert_header);
-    voicemailErrorDetailsTextView = view.findViewById(R.id.voicemail_alert_details);
-    primaryButton = view.findViewById(R.id.voicemail_alert_primary_button);
-    secondaryButton = view.findViewById(R.id.voicemail_alert_primary_button);
-  }
-
-  void setTitle(CharSequence error) {
-    voicemailErrorTitleTextView.setText(error);
-  }
-
-  void setDescription(CharSequence error) {
-    voicemailErrorDetailsTextView.setText(error);
-  }
-
-  void setPrimaryButton(Action action) {
-    primaryButton.setVisibility(View.VISIBLE);
-    primaryButton.setText(action.getText());
-    primaryButton.setOnClickListener(action.getListener());
-  }
-
-  void setSecondaryButton(Action action) {
-    secondaryButton.setVisibility(View.VISIBLE);
-    secondaryButton.setText(action.getText());
-    secondaryButton.setOnClickListener(action.getListener());
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java b/java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java
deleted file mode 100644
index 87b0a63..0000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailFragment.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.provider.VoicemailContract.Status;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.LoaderManager.LoaderCallbacks;
-import android.support.v4.content.Loader;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import com.android.dialer.calllog.CallLogComponent;
-import com.android.dialer.calllog.RefreshAnnotatedCallLogReceiver;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.UiListener;
-import com.android.dialer.voicemail.listui.error.VoicemailStatus;
-import com.android.dialer.voicemailstatus.VoicemailStatusQuery;
-import com.android.dialer.widget.EmptyContentView;
-import com.android.voicemail.VoicemailComponent;
-import com.google.common.collect.ImmutableList;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.ArrayList;
-import java.util.List;
-
-// TODO(uabdullah): Register content observer for VoicemailContract.Status.CONTENT_URI in onStart
-/** Fragment for Dialer Voicemail Tab. */
-public final class NewVoicemailFragment extends Fragment implements LoaderCallbacks<Cursor> {
-
-  private RecyclerView recyclerView;
-  private RefreshAnnotatedCallLogReceiver refreshAnnotatedCallLogReceiver;
-  private UiListener<ImmutableList<VoicemailStatus>> queryVoicemailStatusTableListener;
-
-  // View required to show/hide recycler and empty views
-  FrameLayout fragmentRootFrameLayout;
-
-  private EmptyContentView emptyContentView;
-
-  public NewVoicemailFragment() {
-    LogUtil.enterBlock("NewVoicemailFragment.NewVoicemailFragment");
-  }
-
-  @Override
-  public void onActivityCreated(@Nullable Bundle savedInstanceState) {
-    super.onActivityCreated(savedInstanceState);
-
-    LogUtil.enterBlock("NewVoicemailFragment.onActivityCreated");
-
-    refreshAnnotatedCallLogReceiver = new RefreshAnnotatedCallLogReceiver(getContext());
-    queryVoicemailStatusTableListener =
-        DialerExecutorComponent.get(getContext())
-            .createUiListener(
-                getActivity().getFragmentManager(),
-                "NewVoicemailFragment.queryVoicemailStatusTable");
-  }
-
-  @Override
-  public void onStart() {
-    super.onStart();
-    LogUtil.enterBlock("NewVoicemailFragment.onStart");
-  }
-
-  @Override
-  public void onResume() {
-    super.onResume();
-
-    boolean isHidden = isHidden();
-    LogUtil.i("NewVoicemailFragment.onResume", "isHidden = %s", isHidden);
-
-    // As a fragment's onResume() is tied to the containing Activity's onResume(), being resumed is
-    // not equivalent to becoming visible.
-    // For example, when an activity with a hidden fragment is resumed, the fragment's onResume()
-    // will be called but it is not visible.
-    if (!isHidden) {
-      onFragmentShown();
-    }
-  }
-
-  @Override
-  public void onPause() {
-    super.onPause();
-    LogUtil.enterBlock("NewVoicemailFragment.onPause");
-
-    onFragmentHidden();
-  }
-
-  @Override
-  public void onHiddenChanged(boolean hidden) {
-    super.onHiddenChanged(hidden);
-    LogUtil.i("NewVoicemailFragment.onHiddenChanged", "hidden = %s", hidden);
-
-    if (hidden) {
-      onFragmentHidden();
-    } else {
-      onFragmentShown();
-    }
-  }
-
-  /**
-   * To be called when the fragment becomes visible.
-   *
-   * <p>Note that for a fragment, being resumed is not equivalent to becoming visible.
-   *
-   * <p>For example, when an activity with a hidden fragment is resumed, the fragment's onResume()
-   * will be called but it is not visible.
-   */
-  private void onFragmentShown() {
-    registerRefreshAnnotatedCallLogReceiver();
-
-    CallLogComponent.get(getContext())
-        .getRefreshAnnotatedCallLogNotifier()
-        .notify(/* checkDirty = */ true);
-  }
-
-  /**
-   * To be called when the fragment becomes hidden.
-   *
-   * <p>This can happen in the following two cases:
-   *
-   * <ul>
-   *   <li>hide the fragment but keep the parent activity visible (e.g., calling {@link
-   *       android.support.v4.app.FragmentTransaction#hide(Fragment)} in an activity, or
-   *   <li>the parent activity is paused.
-   * </ul>
-   */
-  private void onFragmentHidden() {
-    unregisterRefreshAnnotatedCallLogReceiver();
-  }
-
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-    LogUtil.enterBlock("NewVoicemailFragment.onCreateView");
-
-    fragmentRootFrameLayout =
-        (FrameLayout) inflater.inflate(R.layout.new_voicemail_call_log_fragment, container, false);
-    recyclerView = fragmentRootFrameLayout.findViewById(R.id.new_voicemail_call_log_recycler_view);
-
-    emptyContentView = fragmentRootFrameLayout.findViewById(R.id.empty_content_view);
-    getLoaderManager().restartLoader(0, null, this);
-    return fragmentRootFrameLayout;
-  }
-
-  @Override
-  public Loader<Cursor> onCreateLoader(int id, Bundle args) {
-    LogUtil.enterBlock("NewVoicemailFragment.onCreateLoader");
-    return new VoicemailCursorLoader(getContext());
-  }
-
-  @Override
-  public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
-    LogUtil.i("NewVoicemailFragment.onLoadFinished", "cursor size is %d", data.getCount());
-    if (data.getCount() == 0) {
-      showEmptyVoicemailFragmentView();
-      return;
-    }
-    showView(recyclerView);
-
-    if (recyclerView.getAdapter() == null) {
-      recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
-      // TODO(uabdullah): Replace getActivity().getFragmentManager() with getChildFragment()
-      recyclerView.setAdapter(
-          new NewVoicemailAdapter(
-              data, System::currentTimeMillis, getActivity().getFragmentManager()));
-    } else {
-      // This would only be called in cases such as when voicemail has been fetched from the server
-      // or a changed occurred in the annotated table changed (e.g deletes). To check if the change
-      // was due to a voicemail download,
-      // NewVoicemailAdapter.mediaPlayer.getVoicemailRequestedToDownload() is called.
-      LogUtil.i(
-          "NewVoicemailFragment.onLoadFinished",
-          "adapter: %s was not null, checking and playing the voicemail if conditions met",
-          recyclerView.getAdapter());
-      ((NewVoicemailAdapter) recyclerView.getAdapter()).updateCursor(data);
-      ((NewVoicemailAdapter) recyclerView.getAdapter()).checkAndPlayVoicemail();
-      queryAndUpdateVoicemailStatusAlert();
-    }
-  }
-
-  /** Shows the view when there are no voicemails to be displayed * */
-  private void showEmptyVoicemailFragmentView() {
-    LogUtil.enterBlock("NewVoicemailFragment.showEmptyVoicemailFragmentView");
-
-    showView(emptyContentView);
-
-    emptyContentView.setDescription((R.string.empty_voicemail_tab_text));
-    emptyContentView.setImage(R.drawable.quantum_ic_voicemail_vd_theme_24);
-  }
-
-  private void showView(View view) {
-    LogUtil.i("NewVoicemailFragment.showView", "Showing view: " + view);
-    emptyContentView.setVisibility(view == emptyContentView ? View.VISIBLE : View.GONE);
-    recyclerView.setVisibility(view == recyclerView ? View.VISIBLE : View.GONE);
-  }
-
-  private void registerRefreshAnnotatedCallLogReceiver() {
-    LogUtil.enterBlock("NewVoicemailFragment.registerRefreshAnnotatedCallLogReceiver");
-
-    LocalBroadcastManager.getInstance(getContext())
-        .registerReceiver(
-            refreshAnnotatedCallLogReceiver, RefreshAnnotatedCallLogReceiver.getIntentFilter());
-  }
-
-  private void unregisterRefreshAnnotatedCallLogReceiver() {
-    LogUtil.enterBlock("NewVoicemailFragment.unregisterRefreshAnnotatedCallLogReceiver");
-
-    // Cancel pending work as we don't need it any more.
-    CallLogComponent.get(getContext()).getRefreshAnnotatedCallLogNotifier().cancel();
-
-    LocalBroadcastManager.getInstance(getContext())
-        .unregisterReceiver(refreshAnnotatedCallLogReceiver);
-  }
-
-  private void queryAndUpdateVoicemailStatusAlert() {
-    queryVoicemailStatusTableListener.listen(
-        getContext(),
-        queryVoicemailStatus(getContext()),
-        this::updateVoicemailStatusAlert,
-        throwable -> {
-          throw new RuntimeException(throwable);
-        });
-  }
-
-  private ListenableFuture<ImmutableList<VoicemailStatus>> queryVoicemailStatus(Context context) {
-    return DialerExecutorComponent.get(context)
-        .backgroundExecutor()
-        .submit(
-            () -> {
-              StringBuilder where = new StringBuilder();
-              List<String> selectionArgs = new ArrayList<>();
-
-              VoicemailComponent.get(context)
-                  .getVoicemailClient()
-                  .appendOmtpVoicemailStatusSelectionClause(context, where, selectionArgs);
-
-              ImmutableList.Builder<VoicemailStatus> statuses = ImmutableList.builder();
-
-              try (Cursor cursor =
-                  context
-                      .getContentResolver()
-                      .query(
-                          Status.CONTENT_URI,
-                          VoicemailStatusQuery.getProjection(),
-                          where.toString(),
-                          selectionArgs.toArray(new String[selectionArgs.size()]),
-                          null)) {
-                if (cursor == null) {
-                  LogUtil.e(
-                      "NewVoicemailFragment.queryVoicemailStatus", "query failed. Null cursor.");
-                  return statuses.build();
-                }
-
-                LogUtil.i(
-                    "NewVoicemailFragment.queryVoicemailStatus",
-                    "cursor size:%d ",
-                    cursor.getCount());
-
-                while (cursor.moveToNext()) {
-                  VoicemailStatus status = new VoicemailStatus(context, cursor);
-                  if (status.isActive(context)) {
-                    LogUtil.i(
-                        "NewVoicemailFragment.queryVoicemailStatus", "inactive source ignored");
-                    statuses.add(status);
-                    // TODO(a bug): Handle Service State Listeners
-                  }
-                }
-              }
-              LogUtil.i(
-                  "NewVoicemailFragment.queryVoicemailStatus",
-                  "query returned %d results",
-                  statuses.build().size());
-              return statuses.build();
-            });
-  }
-
-  private void updateVoicemailStatusAlert(ImmutableList<VoicemailStatus> voicemailStatuses) {
-    ((NewVoicemailAdapter) recyclerView.getAdapter())
-        .updateVoicemailAlertWithMostRecentStatus(getContext(), voicemailStatuses);
-  }
-
-  @Override
-  public void onLoaderReset(Loader<Cursor> loader) {
-    LogUtil.enterBlock("NewVoicemailFragment.onLoaderReset");
-    recyclerView.setAdapter(null);
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailHeaderViewHolder.java b/java/com/android/dialer/voicemail/listui/NewVoicemailHeaderViewHolder.java
deleted file mode 100644
index 6bd8e86..0000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailHeaderViewHolder.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.support.annotation.StringRes;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.view.View;
-import android.widget.TextView;
-
-/** ViewHolder for {@link NewVoicemailAdapter} to display "Today" or "Older" divider row. */
-final class NewVoicemailHeaderViewHolder extends ViewHolder {
-
-  private final TextView headerTextView;
-
-  NewVoicemailHeaderViewHolder(View view) {
-    super(view);
-    headerTextView = view.findViewById(R.id.new_voicemail_header_text);
-  }
-
-  void setHeader(@StringRes int header) {
-    headerTextView.setText(header);
-  }
-
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  String getHeaderText() {
-    return headerTextView.getText().toString();
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayer.java b/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayer.java
deleted file mode 100644
index efa1060..0000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayer.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.content.Context;
-import android.media.AudioManager;
-import android.media.MediaPlayer;
-import android.media.MediaPlayer.OnCompletionListener;
-import android.media.MediaPlayer.OnErrorListener;
-import android.media.MediaPlayer.OnPreparedListener;
-import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.strictmode.StrictModeUtils;
-import java.io.IOException;
-
-/** A wrapper around {@link MediaPlayer} */
-public class NewVoicemailMediaPlayer {
-
-  private final MediaPlayer mediaPlayer;
-  private Uri voicemailLastPlayedOrPlayingUri;
-  private Uri voicemailUriLastPreparedOrPreparingToPlay;
-
-  private OnErrorListener newVoicemailMediaPlayerOnErrorListener;
-  private OnPreparedListener newVoicemailMediaPlayerOnPreparedListener;
-  private OnCompletionListener newVoicemailMediaPlayerOnCompletionListener;
-  private Uri pausedUri;
-  @Nullable private Uri voicemailRequestedToDownload;
-
-  public NewVoicemailMediaPlayer(@NonNull MediaPlayer player) {
-    mediaPlayer = Assert.isNotNull(player);
-  }
-
-  // TODO(uabdullah): Consider removing the StrictModeUtils.bypass (a bug)
-  public void prepareMediaPlayerAndPlayVoicemailWhenReady(Context context, Uri uri)
-      throws IOException {
-    Assert.checkArgument(uri != null, "Media player cannot play a null uri");
-    LogUtil.i(
-        "NewVoicemailMediaPlayer",
-        "trying to prepare playing voicemail uri: %s",
-        String.valueOf(uri));
-    try {
-      reset();
-      voicemailUriLastPreparedOrPreparingToPlay = uri;
-      verifyListenersNotNull();
-      LogUtil.i("NewVoicemailMediaPlayer", "setData source");
-      StrictModeUtils.bypass(
-          () -> {
-            try {
-              mediaPlayer.setDataSource(context, uri);
-              setAudioManagerToNonSpeakerMode(context);
-            } catch (IOException e) {
-              LogUtil.i(
-                  "NewVoicemailMediaPlayer",
-                  "threw an Exception when setting datasource "
-                      + e
-                      + " for uri: "
-                      + uri
-                      + "for context : "
-                      + context);
-            }
-          });
-      LogUtil.i("NewVoicemailMediaPlayer", "prepare async");
-      StrictModeUtils.bypass(() -> mediaPlayer.prepareAsync());
-    } catch (IllegalStateException e) {
-      LogUtil.i(
-          "NewVoicemailMediaPlayer", "caught an IllegalStateException state exception : \n" + e);
-    } catch (Exception e) {
-      LogUtil.i(
-          "NewVoicemailMediaPlayer",
-          "threw an Exception " + e + " for uri: " + uri + "for context : " + context);
-    }
-  }
-
-  /** We should never start playing voicemails from the speaker mode */
-  private void setAudioManagerToNonSpeakerMode(Context context) {
-    AudioManager audioManager = context.getSystemService(AudioManager.class);
-    audioManager.setMode(AudioManager.STREAM_MUSIC);
-    audioManager.setSpeakerphoneOn(false);
-  }
-
-  private void verifyListenersNotNull() {
-    Assert.isNotNull(
-        newVoicemailMediaPlayerOnErrorListener,
-        "newVoicemailMediaPlayerOnErrorListener must be set before preparing to "
-            + "play voicemails");
-    Assert.isNotNull(
-        newVoicemailMediaPlayerOnCompletionListener,
-        "newVoicemailMediaPlayerOnCompletionListener must be set before preparing"
-            + " to play voicemails");
-    Assert.isNotNull(
-        newVoicemailMediaPlayerOnPreparedListener,
-        "newVoicemailMediaPlayerOnPreparedListener must be set before preparing to"
-            + " play voicemails");
-  }
-
-  // Must be called from onPrepared
-  public void start(Uri startPlayingVoicemailUri) {
-    Assert.checkArgument(
-        startPlayingVoicemailUri.equals(voicemailUriLastPreparedOrPreparingToPlay),
-        "uri:%s was not prepared before calling start. Uri that is currently prepared: %s",
-        startPlayingVoicemailUri,
-        getLastPreparedOrPreparingToPlayVoicemailUri());
-
-    mediaPlayer.start();
-    voicemailLastPlayedOrPlayingUri = startPlayingVoicemailUri;
-    pausedUri = null;
-    voicemailRequestedToDownload = null;
-  }
-
-  public void reset() {
-    LogUtil.enterBlock("NewVoicemailMediaPlayer.reset");
-    mediaPlayer.reset();
-    voicemailLastPlayedOrPlayingUri = null;
-    voicemailUriLastPreparedOrPreparingToPlay = null;
-    pausedUri = null;
-    voicemailRequestedToDownload = null;
-  }
-
-  public void pauseMediaPlayer(Uri voicemailUri) {
-    pausedUri = voicemailUri;
-    Assert.checkArgument(
-        voicemailUriLastPreparedOrPreparingToPlay.equals(voicemailLastPlayedOrPlayingUri),
-        "last prepared and last playing should be the same");
-    Assert.checkArgument(
-        pausedUri.equals(voicemailLastPlayedOrPlayingUri),
-        "only the last played uri can be paused");
-    mediaPlayer.pause();
-  }
-
-  public void seekTo(int progress) {
-    mediaPlayer.seekTo(progress);
-  }
-
-  public void setOnErrorListener(OnErrorListener onErrorListener) {
-    mediaPlayer.setOnErrorListener(onErrorListener);
-    newVoicemailMediaPlayerOnErrorListener = onErrorListener;
-  }
-
-  public void setOnPreparedListener(OnPreparedListener onPreparedListener) {
-    mediaPlayer.setOnPreparedListener(onPreparedListener);
-    newVoicemailMediaPlayerOnPreparedListener = onPreparedListener;
-  }
-
-  public void setOnCompletionListener(OnCompletionListener onCompletionListener) {
-    mediaPlayer.setOnCompletionListener(onCompletionListener);
-    newVoicemailMediaPlayerOnCompletionListener = onCompletionListener;
-  }
-
-  public void setVoicemailRequestedToDownload(@NonNull Uri uri) {
-    Assert.isNotNull(uri, "cannot download a null voicemail");
-    voicemailRequestedToDownload = uri;
-  }
-
-  /**
-   * Note: In some cases it's possible mediaPlayer.isPlaying() can return true, but
-   * mediaPlayer.getCurrentPosition() can be greater than mediaPlayer.getDuration(), after which
-   * mediaPlayer.isPlaying() will be false. This is a weird corner case and adding the
-   * mediaPlayer.getCurrentPosition() < mediaPlayer.getDuration() check here messes with the
-   * mediaPlayer.start() (doesn't return mediaPlayer.isPlaying() to be true immediately).
-   *
-   * @return if the media plaer;
-   */
-  public boolean isPlaying() {
-    return mediaPlayer.isPlaying();
-  }
-
-  public int getCurrentPosition() {
-    return mediaPlayer.getCurrentPosition();
-  }
-
-  public Uri getLastPlayedOrPlayingVoicemailUri() {
-    if (mediaPlayer.isPlaying()) {
-      Assert.isNotNull(voicemailLastPlayedOrPlayingUri);
-    }
-
-    return voicemailLastPlayedOrPlayingUri == null ? Uri.EMPTY : voicemailLastPlayedOrPlayingUri;
-  }
-
-  /**
-   * All the places that call this function, we expect the voicemail to have been prepared, but we
-   * could get rid of the assert check in the future if needed.
-   */
-  public Uri getLastPreparedOrPreparingToPlayVoicemailUri() {
-    return Assert.isNotNull(
-        voicemailUriLastPreparedOrPreparingToPlay,
-        "we expect whoever called this to have prepared a voicemail before calling this function");
-  }
-
-  public Uri getLastPausedVoicemailUri() {
-    return pausedUri;
-  }
-
-  public MediaPlayer getMediaPlayer() {
-    return mediaPlayer;
-  }
-
-  public int getDuration() {
-    Assert.checkArgument(mediaPlayer != null);
-    return mediaPlayer.getDuration();
-  }
-
-  /**
-   * A null v/s non-value is important for the {@link NewVoicemailAdapter} to differentiate between
-   * a underlying table change due to a voicemail being downloaded or something else (e.g delete).
-   *
-   * @return if there was a Uri that was requested to be downloaded from the server, null otherwise.
-   */
-  @Nullable
-  public Uri getVoicemailRequestedToDownload() {
-    return voicemailRequestedToDownload;
-  }
-
-  public boolean isPaused() {
-    return pausedUri != null;
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java b/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java
deleted file mode 100644
index f821f4f..0000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java
+++ /dev/null
@@ -1,677 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.app.FragmentManager;
-import android.content.Context;
-import android.content.Intent;
-import android.database.Cursor;
-import android.graphics.drawable.Drawable;
-import android.media.AudioManager;
-import android.net.Uri;
-import android.provider.VoicemailContract;
-import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.util.Pair;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageButton;
-import android.widget.LinearLayout;
-import android.widget.SeekBar;
-import android.widget.SeekBar.OnSeekBarChangeListener;
-import android.widget.TextView;
-import com.android.dialer.callintent.CallInitiationType.Type;
-import com.android.dialer.callintent.CallIntentBuilder;
-import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener;
-import com.android.dialer.common.concurrent.DialerExecutor.Worker;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.precall.PreCall;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.voicemail.listui.NewVoicemailViewHolder.NewVoicemailViewHolderListener;
-import com.android.dialer.voicemail.model.VoicemailEntry;
-import java.util.Locale;
-
-/**
- * The view of the media player that is visible when a {@link NewVoicemailViewHolder} is expanded.
- */
-public final class NewVoicemailMediaPlayerView extends LinearLayout {
-
-  private ImageButton playButton;
-  private ImageButton pauseButton;
-  private ImageButton speakerButton;
-  private ImageButton phoneButton;
-  private ImageButton deleteButton;
-  private TextView currentSeekBarPosition;
-  private SeekBar seekBarView;
-  private Drawable voicemailSeekHandleDisabled;
-
-  private TextView totalDurationView;
-  private TextView voicemailLoadingStatusView;
-  private Uri voicemailUri;
-  private String numberVoicemailFrom;
-  private String phoneAccountId;
-  private String phoneAccountComponentName;
-  private FragmentManager fragmentManager;
-  private NewVoicemailViewHolder newVoicemailViewHolder;
-  private NewVoicemailMediaPlayer mediaPlayer;
-  private NewVoicemailViewHolderListener newVoicemailViewHolderListener;
-
-  public NewVoicemailMediaPlayerView(Context context, AttributeSet attrs) {
-    super(context, attrs);
-    LogUtil.enterBlock("NewVoicemailMediaPlayer");
-    LayoutInflater inflater =
-        (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-    inflater.inflate(R.layout.new_voicemail_media_player_layout, this);
-  }
-
-  @Override
-  protected void onFinishInflate() {
-    super.onFinishInflate();
-    LogUtil.enterBlock("NewVoicemailMediaPlayer.onFinishInflate");
-    initializeMediaPlayerButtonsAndViews();
-    setupListenersForMediaPlayerButtons();
-  }
-
-  private void initializeMediaPlayerButtonsAndViews() {
-    playButton = findViewById(R.id.playButton);
-    pauseButton = findViewById(R.id.pauseButton);
-    currentSeekBarPosition = findViewById(R.id.playback_position_text);
-    seekBarView = findViewById(R.id.playback_seek);
-    speakerButton = findViewById(R.id.speakerButton);
-    phoneButton = findViewById(R.id.phoneButton);
-    deleteButton = findViewById(R.id.deleteButton);
-    totalDurationView = findViewById(R.id.playback_seek_total_duration);
-    voicemailLoadingStatusView = findViewById(R.id.playback_state_text);
-
-    voicemailSeekHandleDisabled =
-        getContext()
-            .getResources()
-            .getDrawable(R.drawable.ic_voicemail_seek_handle_disabled, getContext().getTheme());
-  }
-
-  private void setupListenersForMediaPlayerButtons() {
-    playButton.setOnClickListener(playButtonListener);
-    pauseButton.setOnClickListener(pauseButtonListener);
-    seekBarView.setOnSeekBarChangeListener(seekbarChangeListener);
-    speakerButton.setOnClickListener(speakerButtonListener);
-    phoneButton.setOnClickListener(phoneButtonListener);
-    deleteButton.setOnClickListener(deleteButtonListener);
-  }
-
-  public void reset() {
-    LogUtil.i(
-        "NewVoicemailMediaPlayer.reset",
-        "the uri for this is " + voicemailUri + " and number is " + numberVoicemailFrom);
-    voicemailUri = null;
-    voicemailLoadingStatusView.setVisibility(GONE);
-    numberVoicemailFrom = null;
-    phoneAccountId = null;
-    phoneAccountComponentName = null;
-  }
-
-  /**
-   * Can be called either when binding happens on the {@link NewVoicemailViewHolder} from {@link
-   * NewVoicemailAdapter} or when a user expands a {@link NewVoicemailViewHolder}. During the
-   * binding, since {@link NewVoicemailMediaPlayerView} is part of {@link NewVoicemailViewHolder},
-   * we have to ensure that during the binding the values from the {@link NewVoicemailAdapter} are
-   * also propogated down to the {@link NewVoicemailMediaPlayerView} via {@link
-   * NewVoicemailViewHolder}. In the case of when the {@link NewVoicemailViewHolder} is expanded,
-   * the most recent value and states from the {@link NewVoicemailAdapter} are set for the expanded
-   * {@link NewVoicemailMediaPlayerView}.
-   *
-   * @param viewHolder
-   * @param voicemailEntryFromAdapter are the voicemail related values from the {@link
-   *     AnnotatedCallLog} converted into {@link VoicemailEntry} format.
-   * @param fragmentManager
-   * @param mp the media player passed down from the adapter
-   * @param listener
-   */
-  void bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView(
-      NewVoicemailViewHolder viewHolder,
-      @NonNull VoicemailEntry voicemailEntryFromAdapter,
-      @NonNull FragmentManager fragmentManager,
-      NewVoicemailMediaPlayer mp,
-      NewVoicemailViewHolderListener listener) {
-
-    Assert.isNotNull(voicemailEntryFromAdapter);
-    Uri uri = Uri.parse(voicemailEntryFromAdapter.getVoicemailUri());
-
-    numberVoicemailFrom = voicemailEntryFromAdapter.getNumber().getNormalizedNumber();
-    phoneAccountId = voicemailEntryFromAdapter.getPhoneAccountId();
-    phoneAccountComponentName = voicemailEntryFromAdapter.getPhoneAccountComponentName();
-
-    Assert.isNotNull(viewHolder);
-    Assert.isNotNull(uri);
-    Assert.isNotNull(listener);
-    Assert.isNotNull(totalDurationView);
-    Assert.checkArgument(uri.equals(viewHolder.getViewHolderVoicemailUri()));
-
-    LogUtil.i(
-        "NewVoicemailMediaPlayerView.bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView",
-        "Updating the viewholder:%d mediaPlayerView with uri value:%s",
-        viewHolder.getViewHolderId(),
-        uri.toString());
-
-    this.fragmentManager = fragmentManager;
-
-    newVoicemailViewHolder = viewHolder;
-    newVoicemailViewHolderListener = listener;
-    mediaPlayer = mp;
-    voicemailUri = uri;
-    totalDurationView.setText(
-        VoicemailEntryText.getVoicemailDuration(getContext(), voicemailEntryFromAdapter));
-    // Not sure if these are needed, but it'll ensure that onInflate() has atleast happened.
-    initializeMediaPlayerButtonsAndViews();
-    setupListenersForMediaPlayerButtons();
-
-    // TODO(uabdullah): Handle seekbar seeking properly (a bug)
-    seekBarView.setEnabled(false);
-    seekBarView.setThumb(voicemailSeekHandleDisabled);
-
-    updatePhoneIcon(numberVoicemailFrom);
-
-    // During the binding we only send a request to the adapter to tell us what the
-    // state of the media player should be and call that function.
-    // This could be the paused state, or the playing state of the resume state.
-    // Our job here is only to send the request upto the adapter and have it decide what we should
-    // do.
-    LogUtil.i(
-        "NewVoicemailMediaPlayerView.bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView",
-        "Updating media player values for id:" + viewHolder.getViewHolderId());
-
-    // During the binding make sure that the first time we just set the mediaplayer view
-    // This does not take care of the constant update
-    if (mp.isPlaying() && mp.getLastPlayedOrPlayingVoicemailUri().equals(voicemailUri)) {
-      Assert.checkArgument(
-          mp.getLastPlayedOrPlayingVoicemailUri()
-              .equals(mp.getLastPreparedOrPreparingToPlayVoicemailUri()));
-      LogUtil.i(
-          "NewVoicemailMediaPlayerView.bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView",
-          "show playing state");
-      playButton.setVisibility(GONE);
-      pauseButton.setVisibility(VISIBLE);
-      currentSeekBarPosition.setText(formatAsMinutesAndSeconds(mp.getCurrentPosition()));
-
-      if (seekBarView.getMax() != mp.getDuration()) {
-        seekBarView.setMax(mp.getDuration());
-      }
-      seekBarView.setProgress(mp.getCurrentPosition());
-
-    } else if (mediaPlayer.isPaused() && mp.getLastPausedVoicemailUri().equals(voicemailUri)) {
-      LogUtil.i(
-          "NewVoicemailMediaPlayerView.bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView",
-          "show paused state");
-      Assert.checkArgument(viewHolder.getViewHolderVoicemailUri().equals(voicemailUri));
-      playButton.setVisibility(VISIBLE);
-      pauseButton.setVisibility(GONE);
-      currentSeekBarPosition.setText(formatAsMinutesAndSeconds(mp.getCurrentPosition()));
-      if (seekBarView.getMax() != mp.getDuration()) {
-        seekBarView.setMax(mp.getDuration());
-      }
-      seekBarView.setProgress(mp.getCurrentPosition());
-
-    } else {
-      LogUtil.i(
-          "NewVoicemailMediaPlayerView.bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView",
-          "show reset state");
-      playButton.setVisibility(VISIBLE);
-      pauseButton.setVisibility(GONE);
-      seekBarView.setProgress(0);
-      seekBarView.setMax(100);
-      currentSeekBarPosition.setText(formatAsMinutesAndSeconds(0));
-    }
-  }
-
-  /**
-   * Updates the phone icon depending if we can dial it or not.
-   *
-   * <p>Note: This must be called after the onClickListeners have been set, otherwise isClickable()
-   * state is not maintained.
-   */
-  private void updatePhoneIcon(@Nullable String numberVoicemailFrom) {
-    // TODO(uabdullah): Handle restricted/blocked numbers (a bug)
-    if (TextUtils.isEmpty(numberVoicemailFrom)) {
-      phoneButton.setEnabled(false);
-      phoneButton.setClickable(false);
-    } else {
-      phoneButton.setEnabled(true);
-      phoneButton.setClickable(true);
-    }
-  }
-
-  private final OnSeekBarChangeListener seekbarChangeListener =
-      new OnSeekBarChangeListener() {
-        @Override
-        public void onProgressChanged(SeekBar seekBarfromProgress, int progress, boolean fromUser) {
-          // TODO(uabdullah): Only for debugging purposes, to be removed.
-          if (progress < 100) {
-            LogUtil.i(
-                "NewVoicemailMediaPlayer.seekbarChangeListener",
-                "onProgressChanged, progress:%d, seekbarMax: %d, fromUser:%b",
-                progress,
-                seekBarfromProgress.getMax(),
-                fromUser);
-          }
-
-          if (fromUser) {
-            mediaPlayer.seekTo(progress);
-            currentSeekBarPosition.setText(formatAsMinutesAndSeconds(progress));
-          }
-        }
-
-        @Override
-        // TODO(uabdullah): Handle this case
-        public void onStartTrackingTouch(SeekBar seekBar) {
-          LogUtil.i("NewVoicemailMediaPlayer.onStartTrackingTouch", "does nothing for now");
-        }
-
-        @Override
-        // TODO(uabdullah): Handle this case
-        public void onStopTrackingTouch(SeekBar seekBar) {
-          LogUtil.i("NewVoicemailMediaPlayer.onStopTrackingTouch", "does nothing for now");
-        }
-      };
-
-  private final View.OnClickListener pauseButtonListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View view) {
-          LogUtil.i(
-              "NewVoicemailMediaPlayer.pauseButtonListener",
-              "pauseMediaPlayerAndSetPausedStateOfViewHolder button for voicemailUri: %s",
-              voicemailUri.toString());
-
-          Assert.checkArgument(playButton.getVisibility() == GONE);
-          Assert.checkArgument(mediaPlayer != null);
-          Assert.checkArgument(
-              mediaPlayer.getLastPlayedOrPlayingVoicemailUri().equals((voicemailUri)),
-              "the voicemail being played is the only voicemail that should"
-                  + " be paused. last played voicemail:%s, uri:%s",
-              mediaPlayer.getLastPlayedOrPlayingVoicemailUri().toString(),
-              voicemailUri.toString());
-          Assert.checkArgument(
-              newVoicemailViewHolder.getViewHolderVoicemailUri().equals(voicemailUri),
-              "viewholder uri and mediaplayer view should be the same.");
-          newVoicemailViewHolderListener.pauseViewHolder(newVoicemailViewHolder);
-        }
-      };
-
-  /**
-   * Attempts to imitate clicking the play button. This is useful for when we the user attempted to
-   * play a voicemail, but the media player didn't start playing till the voicemail was downloaded
-   * from the server. However once we have the voicemail downloaded, we want to start playing, so as
-   * to make it seem like that this is a continuation of the users initial play button click.
-   */
-  public final void clickPlayButton() {
-    playButtonListener.onClick(null);
-  }
-
-  private final View.OnClickListener playButtonListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View view) {
-          LogUtil.i(
-              "NewVoicemailMediaPlayer.playButtonListener",
-              "play button for voicemailUri: %s",
-              String.valueOf(voicemailUri));
-
-          if (mediaPlayer.getLastPausedVoicemailUri() != null
-              && mediaPlayer
-                  .getLastPausedVoicemailUri()
-                  .toString()
-                  .contentEquals(voicemailUri.toString())) {
-            LogUtil.i(
-                "NewVoicemailMediaPlayer.playButtonListener",
-                "resume playing voicemailUri: %s",
-                voicemailUri.toString());
-
-            newVoicemailViewHolderListener.resumePausedViewHolder(newVoicemailViewHolder);
-
-          } else {
-            playVoicemailWhenAvailableLocally();
-          }
-        }
-      };
-
-  /**
-   * Plays the voicemail when we are able to play the voicemail locally from the device. This
-   * involves checking if the voicemail is available to play locally, if it is, then we setup the
-   * Media Player to play the voicemail. If the voicemail is not available, then we need download
-   * the voicemail from the voicemail server to the device, and then have the Media player play it.
-   */
-  private void playVoicemailWhenAvailableLocally() {
-    LogUtil.enterBlock("playVoicemailWhenAvailableLocally");
-    Worker<Pair<Context, Uri>, Pair<Boolean, Uri>> checkVoicemailHasContent =
-        this::queryVoicemailHasContent;
-    SuccessListener<Pair<Boolean, Uri>> checkVoicemailHasContentCallBack = this::prepareMediaPlayer;
-
-    DialerExecutorComponent.get(getContext())
-        .dialerExecutorFactory()
-        .createUiTaskBuilder(fragmentManager, "lookup_voicemail_content", checkVoicemailHasContent)
-        .onSuccess(checkVoicemailHasContentCallBack)
-        .build()
-        .executeSerial(new Pair<>(getContext(), voicemailUri));
-  }
-
-  private Pair<Boolean, Uri> queryVoicemailHasContent(Pair<Context, Uri> contextUriPair) {
-    Context context = contextUriPair.first;
-    Uri uri = contextUriPair.second;
-
-    try (Cursor cursor = context.getContentResolver().query(uri, null, null, null, null)) {
-      if (cursor != null && cursor.moveToFirst()) {
-        return new Pair<>(
-            cursor.getInt(cursor.getColumnIndex(VoicemailContract.Voicemails.HAS_CONTENT)) == 1,
-            uri);
-      }
-      return new Pair<>(false, uri);
-    }
-  }
-
-  /**
-   * If the voicemail is available to play locally, setup the media player to play it. Otherwise
-   * send a request to download the voicemail and then play it.
-   */
-  private void prepareMediaPlayer(Pair<Boolean, Uri> booleanUriPair) {
-    boolean voicemailAvailableLocally = booleanUriPair.first;
-    Uri uri = booleanUriPair.second;
-    LogUtil.i(
-        "NewVoicemailMediaPlayer.prepareMediaPlayer",
-        "voicemail available locally: %b for voicemailUri: %s",
-        voicemailAvailableLocally,
-        uri.toString());
-
-    if (voicemailAvailableLocally) {
-      try {
-        Assert.checkArgument(mediaPlayer != null, "media player should not have been null");
-        mediaPlayer.prepareMediaPlayerAndPlayVoicemailWhenReady(getContext(), uri);
-      } catch (Exception e) {
-        LogUtil.e(
-            "NewVoicemailMediaPlayer.prepareMediaPlayer",
-            "Exception when mediaPlayer.prepareMediaPlayerAndPlayVoicemailWhenReady"
-                + "(getContext(), uri)\n"
-                + e
-                + "\n uri:"
-                + uri
-                + "context should not be null, its value is :"
-                + getContext());
-      }
-    } else {
-      LogUtil.i(
-          "NewVoicemailMediaPlayer.prepareVoicemailForMediaPlayer", "need to download content");
-      // Important to set since it allows the adapter to differentiate when to start playing the
-      // voicemail, after it's downloaded.
-      mediaPlayer.setVoicemailRequestedToDownload(uri);
-      voicemailLoadingStatusView.setVisibility(VISIBLE);
-      sendIntentToDownloadVoicemail(uri);
-    }
-  }
-
-  private void sendIntentToDownloadVoicemail(Uri uri) {
-    LogUtil.i("NewVoicemailMediaPlayer.sendIntentToDownloadVoicemail", "uri:%s", uri.toString());
-
-    Worker<Pair<Context, Uri>, Pair<String, Uri>> getVoicemailSourcePackage =
-        this::queryVoicemailSourcePackage;
-    SuccessListener<Pair<String, Uri>> checkVoicemailHasSourcePackageCallBack = this::sendIntent;
-
-    DialerExecutorComponent.get(getContext())
-        .dialerExecutorFactory()
-        .createUiTaskBuilder(fragmentManager, "lookup_voicemail_pkg", getVoicemailSourcePackage)
-        .onSuccess(checkVoicemailHasSourcePackageCallBack)
-        .build()
-        .executeSerial(new Pair<>(getContext(), voicemailUri));
-  }
-
-  private void sendIntent(Pair<String, Uri> booleanUriPair) {
-    String sourcePackage = booleanUriPair.first;
-    Uri uri = booleanUriPair.second;
-    LogUtil.i(
-        "NewVoicemailMediaPlayer.sendIntent",
-        "srcPkg:%s, uri:%s",
-        sourcePackage,
-        String.valueOf(uri));
-    Intent intent = new Intent(VoicemailContract.ACTION_FETCH_VOICEMAIL, uri);
-    intent.setPackage(sourcePackage);
-    voicemailLoadingStatusView.setVisibility(VISIBLE);
-    getContext().sendBroadcast(intent);
-  }
-
-  @Nullable
-  private Pair<String, Uri> queryVoicemailSourcePackage(Pair<Context, Uri> contextUriPair) {
-    LogUtil.enterBlock("NewVoicemailMediaPlayer.queryVoicemailSourcePackage");
-    Context context = contextUriPair.first;
-    Uri uri = contextUriPair.second;
-    String sourcePackage;
-    try (Cursor cursor =
-        context
-            .getContentResolver()
-            .query(uri, new String[] {Voicemails.SOURCE_PACKAGE}, null, null, null)) {
-
-      if (!hasContent(cursor)) {
-        LogUtil.e(
-            "NewVoicemailMediaPlayer.queryVoicemailSourcePackage",
-            "uri: %s does not return a SOURCE_PACKAGE",
-            uri.toString());
-        sourcePackage = null;
-      } else {
-        sourcePackage = cursor.getString(0);
-        LogUtil.i(
-            "NewVoicemailMediaPlayer.queryVoicemailSourcePackage",
-            "uri: %s has a SOURCE_PACKAGE: %s",
-            uri.toString(),
-            sourcePackage);
-      }
-      LogUtil.i(
-          "NewVoicemailMediaPlayer.queryVoicemailSourcePackage",
-          "uri: %s has a SOURCE_PACKAGE: %s",
-          uri.toString(),
-          sourcePackage);
-    }
-    return new Pair<>(sourcePackage, uri);
-  }
-
-  private boolean hasContent(Cursor cursor) {
-    return cursor != null && cursor.moveToFirst();
-  }
-
-  private final View.OnClickListener speakerButtonListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View view) {
-          LogUtil.i(
-              "NewVoicemailMediaPlayer.speakerButtonListener",
-              "speaker request for voicemailUri: %s",
-              voicemailUri.toString());
-          AudioManager audioManager =
-              (AudioManager) getContext().getSystemService(AudioManager.class);
-          audioManager.setMode(AudioManager.STREAM_MUSIC);
-          if (audioManager.isSpeakerphoneOn()) {
-            LogUtil.i(
-                "NewVoicemailMediaPlayer.speakerButtonListener", "speaker was on, turning it off");
-            audioManager.setSpeakerphoneOn(false);
-          } else {
-            LogUtil.i(
-                "NewVoicemailMediaPlayer.speakerButtonListener", "speaker was off, turning it on");
-            audioManager.setSpeakerphoneOn(true);
-          }
-          // TODO(uabdullah): Handle colors of speaker icon when speaker is on and off.
-        }
-      };
-
-  private final View.OnClickListener phoneButtonListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View view) {
-          LogUtil.i(
-              "NewVoicemailMediaPlayer.phoneButtonListener",
-              "phone request for voicemailUri: %s with number:%s",
-              voicemailUri.toString(),
-              numberVoicemailFrom);
-
-          Assert.checkArgument(
-              !TextUtils.isEmpty(numberVoicemailFrom),
-              "number cannot be empty:" + numberVoicemailFrom);
-          PreCall.start(
-              getContext(),
-              new CallIntentBuilder(numberVoicemailFrom, Type.VOICEMAIL_LOG)
-                  .setPhoneAccountHandle(
-                      TelecomUtil.composePhoneAccountHandle(
-                          phoneAccountComponentName, phoneAccountId)));
-        }
-      };
-
-  private final View.OnClickListener deleteButtonListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View view) {
-          LogUtil.i(
-              "NewVoicemailMediaPlayer.deleteButtonListener",
-              "delete voicemailUri %s",
-              String.valueOf(voicemailUri));
-          newVoicemailViewHolderListener.deleteViewHolder(
-              getContext(), fragmentManager, newVoicemailViewHolder, voicemailUri);
-        }
-      };
-
-  /**
-   * This is only called to update the media player view of the seekbar, and the duration and the
-   * play button. For constant updates the adapter should seek track. This is the state when a
-   * voicemail is playing.
-   */
-  public void updateSeekBarDurationAndShowPlayButton(NewVoicemailMediaPlayer mp) {
-    if (!mp.isPlaying()) {
-      return;
-    }
-
-    playButton.setVisibility(GONE);
-    pauseButton.setVisibility(VISIBLE);
-    voicemailLoadingStatusView.setVisibility(GONE);
-
-    Assert.checkArgument(
-        mp.equals(mediaPlayer), "there should only be one instance of a media player");
-    Assert.checkArgument(
-        mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri().equals(voicemailUri));
-    Assert.checkArgument(mediaPlayer.getLastPlayedOrPlayingVoicemailUri().equals(voicemailUri));
-    Assert.isNotNull(mediaPlayer, "media player should have been set on bind");
-    Assert.checkArgument(mediaPlayer.isPlaying());
-    Assert.checkArgument(mediaPlayer.getCurrentPosition() >= 0);
-    Assert.checkArgument(mediaPlayer.getDuration() >= 0);
-    Assert.checkArgument(playButton.getVisibility() == GONE);
-    Assert.checkArgument(pauseButton.getVisibility() == VISIBLE);
-    Assert.checkArgument(seekBarView.getVisibility() == VISIBLE);
-    Assert.checkArgument(currentSeekBarPosition.getVisibility() == VISIBLE);
-
-    currentSeekBarPosition.setText(formatAsMinutesAndSeconds(mediaPlayer.getCurrentPosition()));
-    if (seekBarView.getMax() != mediaPlayer.getDuration()) {
-      seekBarView.setMax(mediaPlayer.getDuration());
-    }
-    seekBarView.setProgress(mediaPlayer.getCurrentPosition());
-  }
-
-  /**
-   * What the default state of an expanded media player view should look like.
-   *
-   * @param currentlyExpandedViewHolderOnScreen
-   * @param mediaPlayer
-   */
-  public void setToResetState(
-      NewVoicemailViewHolder currentlyExpandedViewHolderOnScreen,
-      NewVoicemailMediaPlayer mediaPlayer) {
-    LogUtil.i(
-        "NewVoicemailMediaPlayer.setToResetState",
-        "update the seekbar for viewholder id:%d, mediaplayer view uri:%s, play button "
-            + "visible:%b, pause button visible:%b",
-        currentlyExpandedViewHolderOnScreen.getViewHolderId(),
-        String.valueOf(voicemailUri),
-        playButton.getVisibility() == VISIBLE,
-        pauseButton.getVisibility() == VISIBLE);
-
-    if (playButton.getVisibility() == GONE) {
-      playButton.setVisibility(VISIBLE);
-      pauseButton.setVisibility(GONE);
-    }
-
-    Assert.checkArgument(playButton.getVisibility() == VISIBLE);
-    Assert.checkArgument(pauseButton.getVisibility() == GONE);
-
-    Assert.checkArgument(
-        !mediaPlayer.isPlaying(),
-        "when resetting an expanded " + "state, there should be no voicemail playing");
-
-    Assert.checkArgument(
-        mediaPlayer.getLastPlayedOrPlayingVoicemailUri().equals(Uri.EMPTY),
-        "reset should have been called before updating its media player view");
-    currentSeekBarPosition.setText(formatAsMinutesAndSeconds(0));
-    seekBarView.setProgress(0);
-    seekBarView.setMax(100);
-  }
-
-  public void setToPausedState(Uri toPausedState, NewVoicemailMediaPlayer mp) {
-    LogUtil.i(
-        "NewVoicemailMediaPlayer.setToPausedState",
-        "toPausedState uri:%s, play button visible:%b, pause button visible:%b",
-        toPausedState == null ? "null" : voicemailUri.toString(),
-        playButton.getVisibility() == VISIBLE,
-        pauseButton.getVisibility() == VISIBLE);
-
-    playButton.setVisibility(VISIBLE);
-    pauseButton.setVisibility(GONE);
-
-    currentSeekBarPosition.setText(formatAsMinutesAndSeconds(mediaPlayer.getCurrentPosition()));
-    if (seekBarView.getMax() != mediaPlayer.getDuration()) {
-      seekBarView.setMax(mediaPlayer.getDuration());
-    }
-    seekBarView.setProgress(mediaPlayer.getCurrentPosition());
-
-    Assert.checkArgument(voicemailUri.equals(toPausedState));
-    Assert.checkArgument(!mp.isPlaying());
-    Assert.checkArgument(
-        mp.equals(mediaPlayer), "there should only be one instance of a media player");
-    Assert.checkArgument(
-        this.mediaPlayer.getLastPreparedOrPreparingToPlayVoicemailUri().equals(voicemailUri));
-    Assert.checkArgument(
-        this.mediaPlayer.getLastPlayedOrPlayingVoicemailUri().equals(voicemailUri));
-    Assert.checkArgument(this.mediaPlayer.getLastPausedVoicemailUri().equals(voicemailUri));
-    Assert.isNotNull(this.mediaPlayer, "media player should have been set on bind");
-    Assert.checkArgument(this.mediaPlayer.getCurrentPosition() >= 0);
-    Assert.checkArgument(this.mediaPlayer.getDuration() >= 0);
-    Assert.checkArgument(playButton.getVisibility() == VISIBLE);
-    Assert.checkArgument(pauseButton.getVisibility() == GONE);
-    Assert.checkArgument(seekBarView.getVisibility() == VISIBLE);
-    Assert.checkArgument(currentSeekBarPosition.getVisibility() == VISIBLE);
-  }
-
-  @NonNull
-  public Uri getVoicemailUri() {
-    return voicemailUri;
-  }
-
-  private String formatAsMinutesAndSeconds(int millis) {
-    int seconds = millis / 1000;
-    int minutes = seconds / 60;
-    seconds -= minutes * 60;
-    if (minutes > 99) {
-      minutes = 99;
-    }
-    return String.format(Locale.US, "%02d:%02d", minutes, seconds);
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailViewHolder.java b/java/com/android/dialer/voicemail/listui/NewVoicemailViewHolder.java
deleted file mode 100644
index ba851eb..0000000
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailViewHolder.java
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.dialer.voicemail.listui;
-
-import static android.view.View.GONE;
-import static android.view.View.VISIBLE;
-
-import android.app.FragmentManager;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.database.Cursor;
-import android.graphics.Typeface;
-import android.net.Uri;
-import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.WorkerThread;
-import android.support.v7.widget.RecyclerView;
-import android.text.TextUtils;
-import android.util.Pair;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.ImageView;
-import android.widget.TextView;
-import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
-import com.android.dialer.calllogutils.PhotoInfoBuilder;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener;
-import com.android.dialer.common.concurrent.DialerExecutor.Worker;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.time.Clock;
-import com.android.dialer.voicemail.listui.menu.NewVoicemailMenu;
-import com.android.dialer.voicemail.model.VoicemailEntry;
-import com.android.dialer.widget.ContactPhotoView;
-import com.android.voicemail.VoicemailClient;
-
-/** {@link RecyclerView.ViewHolder} for the new voicemail tab. */
-final class NewVoicemailViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
-
-  private final Context context;
-  private final TextView primaryTextView;
-  private final TextView secondaryTextView;
-  private final TextView transcriptionTextView;
-  private final TextView transcriptionBrandingTextView;
-  private final ContactPhotoView contactPhotoView;
-  private final NewVoicemailMediaPlayerView mediaPlayerView;
-  private final ImageView menuButton;
-  private final Clock clock;
-  private boolean isViewHolderExpanded;
-  private long viewHolderId;
-  private VoicemailEntry voicemailEntryOfViewHolder;
-  @NonNull private Uri viewHolderVoicemailUri;
-  private final NewVoicemailViewHolderListener voicemailViewHolderListener;
-
-  NewVoicemailViewHolder(
-      View view, Clock clock, NewVoicemailViewHolderListener newVoicemailViewHolderListener) {
-    super(view);
-    LogUtil.enterBlock("NewVoicemailViewHolder");
-    this.context = view.getContext();
-    primaryTextView = view.findViewById(R.id.primary_text);
-    secondaryTextView = view.findViewById(R.id.secondary_text);
-    transcriptionTextView = view.findViewById(R.id.transcription_text);
-    transcriptionBrandingTextView = view.findViewById(R.id.transcription_branding);
-    contactPhotoView = view.findViewById(R.id.contact_photo_view);
-    mediaPlayerView = view.findViewById(R.id.new_voicemail_media_player);
-    menuButton = view.findViewById(R.id.menu_button);
-    this.clock = clock;
-    voicemailViewHolderListener = newVoicemailViewHolderListener;
-
-    viewHolderId = -1;
-    isViewHolderExpanded = false;
-    viewHolderVoicemailUri = null;
-  }
-
-  public NewVoicemailMediaPlayerView getMediaPlayerView() {
-    return Assert.isNotNull(mediaPlayerView);
-  }
-
-  /**
-   * When the {@link RecyclerView} displays voicemail entries, it might recycle the views upon
-   * scrolling. In that case we need to ensure that the member variables of this {@link
-   * NewVoicemailViewHolder} and its views are correctly set, especially when this {@link
-   * NewVoicemailViewHolder} is recycled.
-   *
-   * @param cursor the voicemail data from {@link AnnotatedCallLog} generated by the {@link
-   *     VoicemailCursorLoader} related
-   * @param fragmentManager FragmentManager retrieved from {@link
-   *     NewVoicemailFragment#getActivity()}
-   * @param mediaPlayer
-   * @param position the position of the item within the adapter's data set.
-   * @param currentlyExpandedViewHolderId the value the adapter keeps track of which viewholder if
-   */
-  void bindViewHolderValuesFromAdapter(
-      Cursor cursor,
-      FragmentManager fragmentManager,
-      NewVoicemailMediaPlayer mediaPlayer,
-      int position,
-      long currentlyExpandedViewHolderId) {
-
-    LogUtil.i(
-        "NewVoicemailViewHolder.bindViewHolderValuesFromAdapter",
-        "view holder at pos:%d, adapterPos:%d, cursorPos:%d, cursorSize:%d",
-        position,
-        getAdapterPosition(),
-        cursor.getPosition(),
-        cursor.getCount());
-
-    voicemailEntryOfViewHolder = VoicemailCursorLoader.toVoicemailEntry(cursor);
-    viewHolderId = voicemailEntryOfViewHolder.getId();
-    LogUtil.i(
-        "NewVoicemailViewHolder.bindViewHolderValuesFromAdapter", "viewholderId:%d", viewHolderId);
-    viewHolderVoicemailUri = Uri.parse(voicemailEntryOfViewHolder.getVoicemailUri());
-    primaryTextView.setText(
-        VoicemailEntryText.buildPrimaryVoicemailText(context, voicemailEntryOfViewHolder));
-    secondaryTextView.setText(
-        VoicemailEntryText.buildSecondaryVoicemailText(context, clock, voicemailEntryOfViewHolder));
-
-    String voicemailTranscription = voicemailEntryOfViewHolder.getTranscription();
-
-    if (TextUtils.isEmpty(voicemailTranscription)) {
-      transcriptionTextView.setVisibility(GONE);
-      transcriptionTextView.setText(null);
-    } else {
-      transcriptionTextView.setVisibility(View.VISIBLE);
-      transcriptionTextView.setText(voicemailTranscription);
-    }
-
-    // Bold if voicemail is unread
-    boldViewHolderIfUnread();
-
-    itemView.setOnClickListener(this);
-    menuButton.setOnClickListener(
-        NewVoicemailMenu.createOnClickListener(context, voicemailEntryOfViewHolder));
-
-    contactPhotoView.setPhoto(
-        PhotoInfoBuilder.fromVoicemailEntry(voicemailEntryOfViewHolder).build());
-
-    // Update the expanded/collapsed state of this view holder
-    // Only update the binding of the mediaPlayerView of the expanded view holder
-    if (viewHolderId == currentlyExpandedViewHolderId) {
-      LogUtil.i(
-          "NewVoicemailViewHolder.bindViewHolderValuesFromAdapter",
-          "viewHolderId:%d is expanded, update its mediaplayer view",
-          viewHolderId);
-      expandAndBindViewHolderAndMediaPlayerViewWithAdapterValues(
-          voicemailEntryOfViewHolder, fragmentManager, mediaPlayer, voicemailViewHolderListener);
-      LogUtil.i(
-          "NewVoicemailViewHolder.bindViewHolderValuesFromAdapter",
-          "After 2nd updating the MPPlayerView: viewHolderId:%d, uri:%s, MediaplayerView(after "
-              + "updated):%s, adapter position passed down:%d, getAdapterPos:%d",
-          viewHolderId,
-          String.valueOf(viewHolderVoicemailUri),
-          String.valueOf(mediaPlayerView.getVoicemailUri()),
-          position,
-          getAdapterPosition());
-      Assert.checkArgument(
-          mediaPlayerView.getVisibility() == VISIBLE,
-          "a expanded viewholder should have its media player view visible");
-    } else {
-      LogUtil.i(
-          "NewVoicemailViewHolder.bindViewHolderValuesFromAdapter",
-          "viewHolderId:%d is not the expanded one, collapse it and don't update the MpView",
-          viewHolderId);
-      collapseViewHolder();
-      Assert.checkArgument(
-          mediaPlayerView.getVisibility() == GONE,
-          "a collapsed viewholder should not have its media player view visible");
-    }
-    LogUtil.i(
-        "NewVoicemailViewHolder.bindViewHolderValuesFromAdapter",
-        "Final value after updating: viewHolderId:%d, uri:%s, MediaplayerView(not updated):%s,"
-            + " adapter position passed down:%d, getAdapterPos:%d, MPPlayerVisibility:%b",
-        viewHolderId,
-        String.valueOf(viewHolderVoicemailUri),
-        String.valueOf(mediaPlayerView.getVoicemailUri()),
-        position,
-        getAdapterPosition(),
-        mediaPlayerView.getVisibility() == VISIBLE);
-  }
-
-  private void boldViewHolderIfUnread() {
-    LogUtil.v(
-        "NewVoicemailViewHolder.boldViewHolderIfUnread",
-        "id:%d, isRead:%d",
-        voicemailEntryOfViewHolder.getId(),
-        voicemailEntryOfViewHolder.getIsRead());
-
-    if (voicemailEntryOfViewHolder.getIsRead() == 0) {
-      primaryTextView.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
-      secondaryTextView.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
-      transcriptionTextView.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
-    }
-  }
-
-  void collapseViewHolder() {
-    LogUtil.i(
-        "NewVoicemailViewHolder.collapseViewHolder",
-        "viewHolderId:%d is being collapsed, its MPViewUri:%s, its Uri is :%s",
-        viewHolderId,
-        String.valueOf(mediaPlayerView.getVoicemailUri()),
-        String.valueOf(viewHolderVoicemailUri));
-    transcriptionTextView.setMaxLines(1);
-    transcriptionBrandingTextView.setVisibility(GONE);
-    isViewHolderExpanded = false;
-
-    mediaPlayerView.reset();
-    mediaPlayerView.setVisibility(GONE);
-  }
-
-  // When we are recycling the views ensure that we reset the viewHolder, as if its brand new
-  public void reset() {
-    LogUtil.i(
-        "NewVoicemailViewHolder.reset()",
-        "Reset the viewholder, currently viewHolderId:%d, uri:%s, isViewHolderExpanded:%b, "
-            + "its MediaPlayerViewUri:%s",
-        viewHolderId,
-        String.valueOf(viewHolderVoicemailUri),
-        isViewHolderExpanded,
-        String.valueOf(mediaPlayerView.getVoicemailUri()));
-
-    viewHolderId = -1;
-    isViewHolderExpanded = false;
-    viewHolderVoicemailUri = null;
-
-    primaryTextView.setTypeface(null, Typeface.NORMAL);
-    secondaryTextView.setTypeface(null, Typeface.NORMAL);
-    transcriptionTextView.setTypeface(null, Typeface.NORMAL);
-
-    transcriptionBrandingTextView.setVisibility(GONE);
-
-    mediaPlayerView.reset();
-
-    LogUtil.i(
-        "NewVoicemailViewHolder.reset()",
-        "Reset the viewholder, after resetting viewHolderId:%d, uri:%s, isViewHolderExpanded:%b",
-        viewHolderId,
-        String.valueOf(viewHolderVoicemailUri),
-        isViewHolderExpanded);
-  }
-
-  /**
-   * Is only called when a user either clicks a {@link NewVoicemailViewHolder} to expand it or if
-   * the user had already expanded, then scrolled the {@link NewVoicemailViewHolder} out of view and
-   * then scrolled it back into view, and during the binding (as the views are recyled in {@link
-   * RecyclerView}) we restore the expanded state of the {@link NewVoicemailViewHolder}.
-   *
-   * <p>This function also tracks if the state of this viewholder is expanded.
-   *
-   * @param voicemailEntry are the voicemail related values from the {@link AnnotatedCallLog}
-   * @param fragmentManager FragmentManager retrieved from {@link
-   *     NewVoicemailFragment#getActivity()}
-   * @param mediaPlayer there should only be one instance of this passed down from the {@link
-   *     NewVoicemailAdapter}
-   * @param voicemailViewHolderListener
-   */
-  void expandAndBindViewHolderAndMediaPlayerViewWithAdapterValues(
-      VoicemailEntry voicemailEntry,
-      FragmentManager fragmentManager,
-      NewVoicemailMediaPlayer mediaPlayer,
-      NewVoicemailViewHolderListener voicemailViewHolderListener) {
-
-    Assert.isNotNull(voicemailViewHolderListener);
-    Assert.checkArgument(
-        voicemailEntry.getId() == viewHolderId, "ensure that the adapter binding has taken place");
-    Assert.checkArgument(
-        Uri.parse(voicemailEntry.getVoicemailUri()).equals(viewHolderVoicemailUri),
-        "ensure that the adapter binding has taken place");
-    LogUtil.i(
-        "NewVoicemailViewHolder.expandAndBindViewHolderAndMediaPlayerViewWithAdapterValues",
-        "voicemail id: %d, value of isViewHolderExpanded:%b, before setting it to be true, and"
-            + " value of ViewholderUri:%s, MPView:%s, VoicemailRead:%d, before updating it",
-        viewHolderId,
-        isViewHolderExpanded,
-        String.valueOf(viewHolderVoicemailUri),
-        String.valueOf(mediaPlayerView.getVoicemailUri()),
-        voicemailEntry.getIsRead());
-
-    if (voicemailEntry.getIsRead() == 0) {
-      // update as read.
-      primaryTextView.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
-      secondaryTextView.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
-      transcriptionTextView.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
-
-      Uri uri = Uri.parse(voicemailEntry.getVoicemailUri());
-
-      Worker<Pair<Context, Uri>, Integer> markVoicemailRead = this::markVoicemailAsRead;
-      SuccessListener<Integer> markedAsReadVoicemailCallBack = this::onVoicemailMarkedAsRead;
-
-      DialerExecutorComponent.get(context)
-          .dialerExecutorFactory()
-          .createUiTaskBuilder(fragmentManager, "mark_voicemail_read", markVoicemailRead)
-          .onSuccess(markedAsReadVoicemailCallBack)
-          .build()
-          .executeSerial(new Pair<>(context, uri));
-    }
-
-    transcriptionTextView.setMaxLines(999);
-    isViewHolderExpanded = true;
-    updateBrandingText(voicemailEntry);
-    // Once the media player is visible update its state
-    mediaPlayerView.setVisibility(View.VISIBLE);
-    mediaPlayerView.bindValuesFromAdapterOfExpandedViewHolderMediaPlayerView(
-        this, voicemailEntry, fragmentManager, mediaPlayer, voicemailViewHolderListener);
-    LogUtil.i(
-        "NewVoicemailViewHolder.expandAndBindViewHolderAndMediaPlayerViewWithAdapterValues",
-        "voicemail id: %d, value of isViewHolderExpanded:%b, after setting it to be true, and"
-            + " value of ViewholderUri:%s, MPView:%s, after updating it",
-        viewHolderId,
-        isViewHolderExpanded,
-        String.valueOf(viewHolderVoicemailUri),
-        String.valueOf(mediaPlayerView.getVoicemailUri()));
-  }
-
-  private void updateBrandingText(VoicemailEntry voicemailEntry) {
-    if (voicemailEntry.getTranscriptionState() == VoicemailCompat.TRANSCRIPTION_AVAILABLE
-        && !TextUtils.isEmpty(voicemailEntry.getTranscription())) {
-      transcriptionBrandingTextView.setVisibility(VISIBLE);
-    } else {
-      transcriptionBrandingTextView.setVisibility(GONE);
-    }
-  }
-
-  @WorkerThread
-  private Integer markVoicemailAsRead(Pair<Context, Uri> contextUriPair) {
-    Assert.isWorkerThread();
-    LogUtil.enterBlock("NewVoicemailAdapter.markVoicemailAsRead");
-    Context context = contextUriPair.first;
-    Uri uri = contextUriPair.second;
-
-    ContentValues values = new ContentValues();
-    values.put(Voicemails.IS_READ, true);
-    values.put(Voicemails.DIRTY, 1);
-
-    LogUtil.i(
-        "NewVoicemailAdapter.markVoicemailAsRead", "marking as read uri:%s", String.valueOf(uri));
-    return context.getContentResolver().update(uri, values, null, null);
-  }
-
-  private void onVoicemailMarkedAsRead(Integer integer) {
-    LogUtil.i("NewVoicemailAdapter.markVoicemailAsRead", "return value:%d", integer);
-    Assert.checkArgument(integer > 0, "marking voicemail read was not successful");
-
-    Intent intent = new Intent(VoicemailClient.ACTION_UPLOAD);
-    intent.setPackage(context.getPackageName());
-    context.sendBroadcast(intent);
-  }
-
-  /**
-   * Called when we want to update the voicemail that is currently playing Updates the Seekbar,
-   * duration timer and the play/pause button visibility when the expanded voicemail is being
-   * played.
-   */
-  public void updateMediaPlayerViewWithPlayingState(
-      NewVoicemailViewHolder newVoicemailViewHolder, NewVoicemailMediaPlayer mp) {
-
-    LogUtil.i(
-        "NewVoicemailViewHolder.updateMediaPlayerViewWithPlayingState",
-        "viewholderUri:%s, mediaPlayerViewUri:%s, MPPosition:%d, MpDuration:%d, MpIsPlaying:%b",
-        newVoicemailViewHolder.getViewHolderVoicemailUri().toString(),
-        mediaPlayerView.getVoicemailUri().toString(),
-        mp.getCurrentPosition(),
-        mp.getDuration(),
-        mp.isPlaying());
-
-    Assert.checkArgument(
-        mp.isPlaying(),
-        "this method is only called when we are certain that the media player is playing");
-
-    LogUtil.i(
-        "NewVoicemailViewHolder.updateMediaPlayerViewWithPlayingState",
-        "viewholderUri:%s, mediaPlayerViewUri:%s",
-        newVoicemailViewHolder.getViewHolderVoicemailUri().toString(),
-        mediaPlayerView.getVoicemailUri().toString());
-    Assert.checkArgument(
-        newVoicemailViewHolder
-            .getViewHolderVoicemailUri()
-            .equals(mediaPlayerView.getVoicemailUri()),
-        "the mediaplayer view must be that of the viewholder we are updating");
-    Assert.checkArgument(
-        mp.getLastPlayedOrPlayingVoicemailUri()
-            .equals(mp.getLastPreparedOrPreparingToPlayVoicemailUri()),
-        "the media player view we are attempting to update should be of the "
-            + "currently prepared and playing voicemail");
-
-    mediaPlayerView.updateSeekBarDurationAndShowPlayButton(mp);
-  }
-
-  public void setMediaPlayerViewToResetState(
-      NewVoicemailViewHolder currentlyExpandedViewHolderOnScreen,
-      NewVoicemailMediaPlayer mediaPlayer) {
-    Assert.isNotNull(currentlyExpandedViewHolderOnScreen);
-    mediaPlayerView.setToResetState(currentlyExpandedViewHolderOnScreen, mediaPlayer);
-  }
-
-  public void setPausedStateOfMediaPlayerView(Uri uri, NewVoicemailMediaPlayer mediaPlayer) {
-    Assert.checkArgument(viewHolderVoicemailUri.equals(uri));
-    Assert.checkArgument(mediaPlayerView.getVoicemailUri().equals(uri));
-    Assert.checkArgument(mediaPlayerView.getVoicemailUri().equals(viewHolderVoicemailUri));
-    mediaPlayerView.setToPausedState(uri, mediaPlayer);
-  }
-
-  boolean isViewHolderExpanded() {
-    return isViewHolderExpanded;
-  }
-
-  public long getViewHolderId() {
-    return viewHolderId;
-  }
-
-  public Uri getViewHolderVoicemailUri() {
-    return viewHolderVoicemailUri;
-  }
-
-  public void clickPlayButtonOfViewHoldersMediaPlayerView(
-      NewVoicemailViewHolder expandedViewHolder) {
-    LogUtil.i(
-        "NewVoicemailViewHolder.clickPlayButtonOfViewHoldersMediaPlayerView",
-        "expandedViewHolderID:%d",
-        expandedViewHolder.getViewHolderId());
-
-    Assert.checkArgument(
-        mediaPlayerView.getVoicemailUri().equals(expandedViewHolder.getViewHolderVoicemailUri()));
-    Assert.checkArgument(
-        expandedViewHolder.getViewHolderVoicemailUri().equals(getViewHolderVoicemailUri()));
-    Assert.checkArgument(
-        mediaPlayerView.getVisibility() == View.VISIBLE,
-        "the media player must be visible for viewholder id:%d, before we attempt to play");
-    mediaPlayerView.clickPlayButton();
-  }
-
-  interface NewVoicemailViewHolderListener {
-    void expandViewHolderFirstTimeAndCollapseAllOtherVisibleViewHolders(
-        NewVoicemailViewHolder expandedViewHolder,
-        VoicemailEntry voicemailEntryOfViewHolder,
-        NewVoicemailViewHolderListener listener);
-
-    void collapseExpandedViewHolder(NewVoicemailViewHolder expandedViewHolder);
-
-    void pauseViewHolder(NewVoicemailViewHolder expandedViewHolder);
-
-    void resumePausedViewHolder(NewVoicemailViewHolder expandedViewHolder);
-
-    void deleteViewHolder(
-        Context context,
-        FragmentManager fragmentManager,
-        NewVoicemailViewHolder expandedViewHolder,
-        Uri uri);
-  }
-
-  @Override
-  public void onClick(View v) {
-    LogUtil.i(
-        "NewVoicemailViewHolder.onClick",
-        "voicemail id: %d, isViewHolderCurrentlyExpanded:%b",
-        viewHolderId,
-        isViewHolderExpanded);
-    if (isViewHolderExpanded) {
-      voicemailViewHolderListener.collapseExpandedViewHolder(this);
-    } else {
-      voicemailViewHolderListener.expandViewHolderFirstTimeAndCollapseAllOtherVisibleViewHolders(
-          this,
-          Assert.isNotNull(voicemailEntryOfViewHolder),
-          Assert.isNotNull(voicemailViewHolderListener));
-    }
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java b/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
deleted file mode 100644
index f242484..0000000
--- a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.provider.CallLog.Calls;
-import android.support.v4.content.CursorLoader;
-import android.text.TextUtils;
-import com.android.dialer.DialerPhoneNumber;
-import com.android.dialer.NumberAttributes;
-import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.AnnotatedCallLog;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.voicemail.model.VoicemailEntry;
-import com.google.protobuf.InvalidProtocolBufferException;
-
-/** CursorLoader for the annotated call log (voicemails only). */
-final class VoicemailCursorLoader extends CursorLoader {
-
-  // When adding columns be sure to update {@link #VoicemailCursorLoader.toVoicemailEntry}.
-  public static final String[] VOICEMAIL_COLUMNS =
-      new String[] {
-        AnnotatedCallLog._ID,
-        AnnotatedCallLog.TIMESTAMP,
-        AnnotatedCallLog.NUMBER,
-        AnnotatedCallLog.FORMATTED_NUMBER,
-        AnnotatedCallLog.DURATION,
-        AnnotatedCallLog.GEOCODED_LOCATION,
-        AnnotatedCallLog.CALL_TYPE,
-        AnnotatedCallLog.TRANSCRIPTION,
-        AnnotatedCallLog.VOICEMAIL_URI,
-        AnnotatedCallLog.IS_READ,
-        AnnotatedCallLog.NUMBER_ATTRIBUTES,
-        AnnotatedCallLog.TRANSCRIPTION_STATE,
-        AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME,
-        AnnotatedCallLog.PHONE_ACCOUNT_ID,
-      };
-
-  // Indexes for VOICEMAIL_COLUMNS
-  private static final int ID = 0;
-  private static final int TIMESTAMP = 1;
-  private static final int NUMBER = 2;
-  private static final int FORMATTED_NUMBER = 3;
-  private static final int DURATION = 4;
-  private static final int GEOCODED_LOCATION = 5;
-  private static final int CALL_TYPE = 6;
-  private static final int TRANSCRIPTION = 7;
-  private static final int VOICEMAIL_URI = 8;
-  private static final int IS_READ = 9;
-  private static final int NUMBER_ATTRIBUTES = 10;
-  private static final int TRANSCRIPTION_STATE = 11;
-  private static final int PHONE_ACCOUNT_COMPONENT_NAME = 12;
-  private static final int PHONE_ACCOUNT_ID = 13;
-
-  // TODO(zachh): Optimize indexes
-  VoicemailCursorLoader(Context context) {
-    super(
-        context,
-        AnnotatedCallLog.CONTENT_URI,
-        VOICEMAIL_COLUMNS,
-        AnnotatedCallLog.CALL_TYPE + " = ?",
-        new String[] {Integer.toString(Calls.VOICEMAIL_TYPE)},
-        AnnotatedCallLog.TIMESTAMP + " DESC");
-  }
-
-  /** Creates a new {@link VoicemailEntry} from the provided cursor using the current position. */
-  static VoicemailEntry toVoicemailEntry(Cursor cursor) {
-    DialerPhoneNumber number;
-    try {
-      number = DialerPhoneNumber.parseFrom(cursor.getBlob(NUMBER));
-    } catch (InvalidProtocolBufferException e) {
-      throw new IllegalStateException("Couldn't parse DialerPhoneNumber bytes");
-    }
-    NumberAttributes numberAttributes;
-    try {
-      numberAttributes = NumberAttributes.parseFrom(cursor.getBlob(NUMBER_ATTRIBUTES));
-    } catch (InvalidProtocolBufferException e) {
-      throw new IllegalStateException("Couldn't parse NumberAttributes bytes");
-    }
-
-    // Voicemail numbers should always be valid so the CP2 information should never be incomplete,
-    // and there should be no need to query PhoneLookup at render time.
-    Assert.checkArgument(
-        !numberAttributes.getIsCp2InfoIncomplete(),
-        "CP2 info incomplete for number: %s",
-        LogUtil.sanitizePii(number.getNormalizedNumber()));
-
-    VoicemailEntry.Builder voicemailEntryBuilder =
-        VoicemailEntry.newBuilder()
-            .setId(cursor.getInt(ID))
-            .setTimestamp(cursor.getLong(TIMESTAMP))
-            .setNumber(number)
-            .setDuration(cursor.getLong(DURATION))
-            .setCallType(cursor.getInt(CALL_TYPE))
-            .setIsRead(cursor.getInt(IS_READ))
-            .setNumberAttributes(numberAttributes)
-            .setTranscriptionState(cursor.getInt(TRANSCRIPTION_STATE));
-
-    String formattedNumber = cursor.getString(FORMATTED_NUMBER);
-    if (!TextUtils.isEmpty(formattedNumber)) {
-      voicemailEntryBuilder.setFormattedNumber(formattedNumber);
-    }
-
-    String geocodedLocation = cursor.getString(GEOCODED_LOCATION);
-    if (!TextUtils.isEmpty(geocodedLocation)) {
-      voicemailEntryBuilder.setGeocodedLocation(geocodedLocation);
-    }
-
-    String transcription = cursor.getString(TRANSCRIPTION);
-    if (!TextUtils.isEmpty(transcription)) {
-      voicemailEntryBuilder.setTranscription(transcription);
-    }
-
-    String voicemailUri = cursor.getString(VOICEMAIL_URI);
-    if (!TextUtils.isEmpty(voicemailUri)) {
-      voicemailEntryBuilder.setVoicemailUri(voicemailUri);
-    }
-
-    String phoneAccountComponentName = cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME);
-    if (!TextUtils.isEmpty(phoneAccountComponentName)) {
-      voicemailEntryBuilder.setPhoneAccountComponentName(phoneAccountComponentName);
-    }
-
-    String phoneAccountId = cursor.getString(PHONE_ACCOUNT_ID);
-    if (!TextUtils.isEmpty(phoneAccountId)) {
-      voicemailEntryBuilder.setPhoneAccountId(phoneAccountId);
-    }
-
-    return voicemailEntryBuilder.build();
-  }
-
-  static long getTimestamp(Cursor cursor) {
-    return cursor.getLong(TIMESTAMP);
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/VoicemailEntryText.java b/java/com/android/dialer/voicemail/listui/VoicemailEntryText.java
deleted file mode 100644
index dd53dff..0000000
--- a/java/com/android/dialer/voicemail/listui/VoicemailEntryText.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.voicemail.listui;
-
-import android.content.Context;
-import android.text.TextUtils;
-import com.android.dialer.calllogutils.CallLogDates;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.time.Clock;
-import com.android.dialer.voicemail.model.VoicemailEntry;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Computes the primary text for voicemail entries.
- *
- * <p>These text values are shown in the voicemail tab.
- */
-public class VoicemailEntryText {
-
-  public static String buildPrimaryVoicemailText(Context context, VoicemailEntry data) {
-    StringBuilder primaryText = new StringBuilder();
-    if (!TextUtils.isEmpty(data.getNumberAttributes().getName())) {
-      primaryText.append(data.getNumberAttributes().getName());
-    } else if (!TextUtils.isEmpty(data.getFormattedNumber())) {
-      primaryText.append(data.getFormattedNumber());
-    } else {
-      // TODO(uabdullah): Handle CallLog.Calls.PRESENTATION_*, including Verizon restricted numbers.
-      primaryText.append(context.getText(R.string.voicemail_entry_unknown));
-    }
-    return primaryText.toString();
-  }
-
-  /**
-   * Uses the new date and location formatting rules to format the location and date in the new
-   * voicemail tab.
-   *
-   * <p>Rules: $Location • Date
-   *
-   * <p>Examples:
-   *
-   * <p>Jun 20 San Francisco • Now
-   *
-   * <p>Markham, ON • Jul 27
-   *
-   * <p>Toledo, OH • 12:15 PM
-   *
-   * <p>Date rules: if < 1 minute ago: "Now"; else if today: HH:MM(am|pm); else if < 3 days: day;
-   * else: MON D *
-   *
-   * @return $Location • Date
-   */
-  public static String buildSecondaryVoicemailText(
-      Context context, Clock clock, VoicemailEntry voicemailEntry) {
-    return secondaryTextPrefix(context, clock, voicemailEntry);
-  }
-
-  private static String secondaryTextPrefix(
-      Context context, Clock clock, VoicemailEntry voicemailEntry) {
-    StringBuilder secondaryText = new StringBuilder();
-    String location = voicemailEntry.getGeocodedLocation();
-    if (!TextUtils.isEmpty(location)) {
-      secondaryText.append(location);
-    }
-    if (secondaryText.length() > 0) {
-      secondaryText.append(" • ");
-    }
-    secondaryText.append(
-        CallLogDates.newCallLogTimestampLabel(
-            context,
-            clock.currentTimeMillis(),
-            voicemailEntry.getTimestamp(),
-            /* abbreviateDateTime = */ true));
-
-    long duration = voicemailEntry.getDuration();
-    if (duration >= 0) {
-      secondaryText.append(" • ");
-      String formattedDuration = getVoicemailDuration(context, voicemailEntry);
-      secondaryText.append(formattedDuration);
-    }
-    return secondaryText.toString();
-  }
-
-  static String getVoicemailDuration(Context context, VoicemailEntry voicemailEntry) {
-    long minutes = TimeUnit.SECONDS.toMinutes(voicemailEntry.getDuration());
-    long seconds = voicemailEntry.getDuration() - TimeUnit.MINUTES.toSeconds(minutes);
-
-    // The format for duration is "MM:SS" and we never expect the duration to be > 5 minutes
-    // However an incorrect duration could be set by the framework/someone to be >99, and in that
-    // case cap it at 99, for the UI to still be able to display it in "MM:SS" format.
-    if (minutes > 99) {
-      LogUtil.w(
-          "VoicemailEntryText.getVoicemailDuration",
-          "Duration was %d",
-          voicemailEntry.getDuration());
-      minutes = 99;
-    }
-    return context.getString(R.string.voicemailDurationFormat, minutes, seconds);
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/error/AndroidManifest.xml b/java/com/android/dialer/voicemail/listui/error/AndroidManifest.xml
deleted file mode 100644
index 07cb77f..0000000
--- a/java/com/android/dialer/voicemail/listui/error/AndroidManifest.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.dialer.app.voicemail.error">
-
-  <uses-permission android:name="android.permission.CALL_PHONE"/>
-
-</manifest>
diff --git a/java/com/android/dialer/voicemail/listui/error/OmtpVoicemailMessageCreator.java b/java/com/android/dialer/voicemail/listui/error/OmtpVoicemailMessageCreator.java
index 850b938..edeb5f6 100644
--- a/java/com/android/dialer/voicemail/listui/error/OmtpVoicemailMessageCreator.java
+++ b/java/com/android/dialer/voicemail/listui/error/OmtpVoicemailMessageCreator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,17 +18,19 @@
 package com.android.dialer.voicemail.listui.error;
 
 import android.content.Context;
-import android.preference.PreferenceManager;
 import android.provider.VoicemailContract.Status;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceManager;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.PerAccountSharedPreferences;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.voicemail.listui.error.VoicemailErrorMessage.Action;
 import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.VoicemailComponent;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -162,7 +165,6 @@
         && status.quotaTotal != Status.QUOTA_UNAVAILABLE) {
       return createInboxErrorMessage(context, status, statusReader);
     }
-    Logger.get(context).logImpression(DialerImpression.Type.VVM_QUOTA_CHECK_UNAVAILABLE);
     return null;
   }
 
@@ -193,14 +195,10 @@
 
     if (!shouldShowPromoForArchive) {
       if (isFull) {
-        Logger.get(context)
-            .logImpression(DialerImpression.Type.VVM_USER_SHOWN_VM_FULL_ERROR_MESSAGE);
         return new VoicemailErrorMessage(
             context.getString(R.string.voicemail_error_inbox_full_title),
             context.getString(R.string.voicemail_error_inbox_full_message));
       } else {
-        Logger.get(context)
-            .logImpression(DialerImpression.Type.VVM_USER_SHOWN_VM_ALMOST_FULL_ERROR_MESSAGE);
         return new VoicemailErrorMessage(
             context.getString(R.string.voicemail_error_inbox_near_full_title),
             context.getString(R.string.voicemail_error_inbox_near_full_message));
@@ -209,23 +207,15 @@
 
     String title;
     CharSequence message;
-    DialerImpression.Type enabledImpression;
-    DialerImpression.Type dismissedImpression;
     String dismissedKey;
 
     if (isFull) {
-      Logger.get(context).logImpression(DialerImpression.Type.VVM_USER_SHOWN_VM_FULL_PROMO);
       title = context.getString(R.string.voicemail_error_inbox_full_turn_archive_on_title);
       message = context.getText(R.string.voicemail_error_inbox_full_turn_archive_on_message);
-      enabledImpression = DialerImpression.Type.VVM_USER_ENABLED_ARCHIVE_FROM_VM_FULL_PROMO;
-      dismissedImpression = DialerImpression.Type.VVM_USER_DISMISSED_VM_FULL_PROMO;
       dismissedKey = VOICEMAIL_PROMO_DISMISSED_KEY;
     } else {
-      Logger.get(context).logImpression(DialerImpression.Type.VVM_USER_SHOWN_VM_ALMOST_FULL_PROMO);
       title = context.getString(R.string.voicemail_error_inbox_almost_full_turn_archive_on_title);
       message = context.getText(R.string.voicemail_error_inbox_almost_full_turn_archive_on_message);
-      enabledImpression = DialerImpression.Type.VVM_USER_ENABLED_ARCHIVE_FROM_VM_ALMOST_FULL_PROMO;
-      dismissedImpression = DialerImpression.Type.VVM_USER_DISMISSED_VM_ALMOST_FULL_PROMO;
       dismissedKey = VOICEMAIL_PROMO_ALMOST_FULL_DISMISSED_KEY;
     }
 
@@ -238,8 +228,6 @@
         sharedPreferenceForAccount,
         title,
         message,
-        enabledImpression,
-        dismissedImpression,
         dismissedKey);
   }
 
@@ -262,22 +250,18 @@
       PerAccountSharedPreferences sharedPreferenceForAccount,
       String title,
       CharSequence message,
-      DialerImpression.Type impressionToLogOnEnable,
-      DialerImpression.Type impressionToLogOnDismiss,
       String preferenceKeyToUpdate) {
     return new VoicemailErrorMessage(
         title,
         message,
         VoicemailErrorMessage.createTurnArchiveOnAction(
             context,
-            impressionToLogOnEnable,
             status,
             statusReader,
             voicemailClient,
             phoneAccountHandle),
         VoicemailErrorMessage.createDismissTurnArchiveOnAction(
             context,
-            impressionToLogOnDismiss,
             statusReader,
             sharedPreferenceForAccount,
             preferenceKeyToUpdate));
diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailErrorAlert.java b/java/com/android/dialer/voicemail/listui/error/VoicemailErrorAlert.java
index 364659d..98b5690 100644
--- a/java/com/android/dialer/voicemail/listui/error/VoicemailErrorAlert.java
+++ b/java/com/android/dialer/voicemail/listui/error/VoicemailErrorAlert.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,15 +18,16 @@
 package com.android.dialer.voicemail.listui.error;
 
 import android.content.Context;
-import android.support.annotation.VisibleForTesting;
 import android.text.method.LinkMovementMethod;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
+
 import com.android.dialer.app.alert.AlertManager;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.voicemail.listui.error.VoicemailErrorMessage.Action;
+
 import java.util.List;
 
 /**
@@ -100,16 +102,6 @@
     }
   }
 
-  @VisibleForTesting
-  public View getView() {
-    return view;
-  }
-
-  @VisibleForTesting
-  public View getModalView() {
-    return modalView;
-  }
-
   void loadMessage(VoicemailErrorMessage message) {
     header.setText(message.getTitle());
     details.setText(message.getDescription());
diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessage.java b/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessage.java
index e22f306..469a9de 100644
--- a/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessage.java
+++ b/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessage.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,21 +21,22 @@
 import android.content.Intent;
 import android.provider.Settings;
 import android.provider.VoicemailContract;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.view.View;
-import android.view.View.OnClickListener;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.PerAccountSharedPreferences;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.precall.PreCall;
 import com.android.dialer.voicemail.settings.VoicemailChangePinActivity;
 import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.VoicemailComponent;
+
 import java.util.Arrays;
 import java.util.List;
 
@@ -129,15 +131,10 @@
   public static Action createChangeAirplaneModeAction(final Context context) {
     return new Action(
         context.getString(R.string.voicemail_action_turn_off_airplane_mode),
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            Logger.get(context)
-                .logImpression(DialerImpression.Type.VVM_CHANGE_AIRPLANE_MODE_CLICKED);
-            Intent intent = new Intent(Settings.ACTION_AIRPLANE_MODE_SETTINGS);
-            context.startActivity(intent);
-          }
-        });
+            v -> {
+              Intent intent = new Intent(Settings.ACTION_AIRPLANE_MODE_SETTINGS);
+              context.startActivity(intent);
+            });
   }
 
   @NonNull
@@ -145,16 +142,11 @@
       final Context context, PhoneAccountHandle phoneAccountHandle) {
     return new Action(
         context.getString(R.string.voicemail_action_set_pin),
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            Logger.get(context)
-                .logImpression(DialerImpression.Type.VOICEMAIL_ALERT_SET_PIN_CLICKED);
-            Intent intent = new Intent(context, VoicemailChangePinActivity.class);
-            intent.putExtra(VoicemailClient.PARAM_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
-            context.startActivity(intent);
-          }
-        });
+            v -> {
+              Intent intent = new Intent(context, VoicemailChangePinActivity.class);
+              intent.putExtra(VoicemailClient.PARAM_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
+              context.startActivity(intent);
+            });
   }
 
   @NonNull
@@ -162,95 +154,71 @@
       final Context context) {
     return new Action(
         context.getString(R.string.voicemail_action_call_voicemail),
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            Logger.get(context).logImpression(DialerImpression.Type.VVM_CALL_VOICEMAIL_CLICKED);
-            PreCall.start(
+            v -> PreCall.start(
                 context,
                 CallIntentBuilder.forVoicemail(
-                    CallInitiationType.Type.VOICEMAIL_ERROR_MESSAGE));
-          }
-        });
+                    CallInitiationType.Type.VOICEMAIL_ERROR_MESSAGE)));
   }
 
   @NonNull
   public static Action createSyncAction(final Context context, final VoicemailStatus status) {
     return new Action(
         context.getString(R.string.voicemail_action_sync),
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            Logger.get(context).logImpression(DialerImpression.Type.VVM_USER_SYNC);
-            Intent intent = new Intent(VoicemailContract.ACTION_SYNC_VOICEMAIL);
-            intent.setPackage(status.sourcePackage);
-            context.sendBroadcast(intent);
-          }
-        });
+            v -> {
+              Intent intent = new Intent(VoicemailContract.ACTION_SYNC_VOICEMAIL);
+              intent.setPackage(status.sourcePackage);
+              context.sendBroadcast(intent);
+            });
   }
 
   @NonNull
   public static Action createRetryAction(final Context context, final VoicemailStatus status) {
     return new Action(
         context.getString(R.string.voicemail_action_retry),
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            Logger.get(context).logImpression(DialerImpression.Type.VVM_USER_RETRY);
-            Intent intent = new Intent(VoicemailContract.ACTION_SYNC_VOICEMAIL);
-            intent.setPackage(status.sourcePackage);
-            context.sendBroadcast(intent);
-          }
-        });
+            v -> {
+              Intent intent = new Intent(VoicemailContract.ACTION_SYNC_VOICEMAIL);
+              intent.setPackage(status.sourcePackage);
+              context.sendBroadcast(intent);
+            });
   }
 
   @NonNull
   public static Action createTurnArchiveOnAction(
       final Context context,
-      DialerImpression.Type impressionToLog,
       final VoicemailStatus status,
       VoicemailStatusReader statusReader,
       VoicemailClient voicemailClient,
       PhoneAccountHandle phoneAccountHandle) {
     return new Action(
         context.getString(R.string.voicemail_action_turn_archive_on),
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            Assert.checkArgument(
-                VoicemailComponent.get(context)
-                    .getVoicemailClient()
-                    .isVoicemailArchiveAvailable(context));
-            Logger.get(context).logImpression(impressionToLog);
-            voicemailClient.setVoicemailArchiveEnabled(context, phoneAccountHandle, true);
-            Intent intent = new Intent(VoicemailContract.ACTION_SYNC_VOICEMAIL);
-            intent.setPackage(status.sourcePackage);
-            context.sendBroadcast(intent);
-            statusReader.refresh();
-          }
-        });
+            v -> {
+              Assert.checkArgument(
+                  VoicemailComponent.get(context)
+                      .getVoicemailClient()
+                      .isVoicemailArchiveAvailable(context));
+              voicemailClient.setVoicemailArchiveEnabled(context, phoneAccountHandle, true);
+              Intent intent = new Intent(VoicemailContract.ACTION_SYNC_VOICEMAIL);
+              intent.setPackage(status.sourcePackage);
+              context.sendBroadcast(intent);
+              statusReader.refresh();
+            });
   }
 
   @NonNull
   public static Action createDismissTurnArchiveOnAction(
       final Context context,
-      DialerImpression.Type impressionToLog,
       VoicemailStatusReader statusReader,
       PerAccountSharedPreferences sharedPreferenceForAccount,
       String preferenceKeyToUpdate) {
     return new Action(
         context.getString(R.string.voicemail_action_dimiss),
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            Assert.checkArgument(
-                VoicemailComponent.get(context)
-                    .getVoicemailClient()
-                    .isVoicemailArchiveAvailable(context));
-            Logger.get(context).logImpression(impressionToLog);
-            sharedPreferenceForAccount.edit().putBoolean(preferenceKeyToUpdate, true).apply();
-            statusReader.refresh();
-          }
-        });
+            v -> {
+              Assert.checkArgument(
+                  VoicemailComponent.get(context)
+                      .getVoicemailClient()
+                      .isVoicemailArchiveAvailable(context));
+              sharedPreferenceForAccount.edit().putBoolean(preferenceKeyToUpdate, true).apply();
+              statusReader.refresh();
+            });
   }
 }
diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessageCreator.java b/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessageCreator.java
index 43da6af..5980573 100644
--- a/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessageCreator.java
+++ b/java/com/android/dialer/voicemail/listui/error/VoicemailErrorMessageCreator.java
@@ -17,9 +17,9 @@
 package com.android.dialer.voicemail.listui.error;
 
 import android.content.Context;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.VisualVoicemailTypeExtensions;
 
 /**
@@ -32,10 +32,6 @@
   @Nullable
   public VoicemailErrorMessage create(
       Context context, VoicemailStatus status, VoicemailStatusReader statusReader) {
-    // Never return error message before NMR1. Voicemail status is not supported on those.
-    if (VERSION.SDK_INT < VERSION_CODES.N_MR1) {
-      return null;
-    }
     switch (status.type) {
       case VisualVoicemailTypeExtensions.VVM_TYPE_VVM3:
         return Vvm3VoicemailMessageCreator.create(context, status, statusReader);
diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java b/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java
index ebda0e6..ccf631a 100644
--- a/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java
+++ b/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,22 +17,21 @@
 
 package com.android.dialer.voicemail.listui.error;
 
-import android.annotation.TargetApi;
+import android.annotation.SuppressLint;
 import android.content.ComponentName;
 import android.content.Context;
 import android.database.Cursor;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.provider.Settings;
 import android.provider.Settings.Global;
 import android.provider.VoicemailContract.Status;
-import android.support.annotation.Nullable;
-import android.support.v4.os.BuildCompat;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.ServiceState;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.voicemailstatus.VoicemailStatusQuery;
 import com.android.voicemail.VoicemailClient;
@@ -46,7 +46,8 @@
   public final String phoneAccountComponentName;
   public final String phoneAccountId;
 
-  @Nullable public final Uri settingsUri;
+  @Nullable
+  public final Uri settingsUri;
   @Nullable public final Uri voicemailAccessUri;
 
   public final int configurationState;
@@ -67,18 +68,11 @@
     settingsUri = getUri(statusCursor, VoicemailStatusQuery.SETTINGS_URI_INDEX);
     voicemailAccessUri = getUri(statusCursor, VoicemailStatusQuery.VOICEMAIL_ACCESS_URI_INDEX);
 
-    if (VERSION.SDK_INT >= VERSION_CODES.N_MR1) {
-      type =
-          getString(
-              statusCursor, VoicemailStatusQuery.SOURCE_TYPE_INDEX, TelephonyManager.VVM_TYPE_OMTP);
-      phoneAccountComponentName =
-          getString(statusCursor, VoicemailStatusQuery.PHONE_ACCOUNT_COMPONENT_NAME, "");
-      phoneAccountId = getString(statusCursor, VoicemailStatusQuery.PHONE_ACCOUNT_ID, "");
-    } else {
-      type = TelephonyManager.VVM_TYPE_OMTP;
-      phoneAccountComponentName = "";
-      phoneAccountId = "";
-    }
+    type = getString(
+            statusCursor, VoicemailStatusQuery.SOURCE_TYPE_INDEX, TelephonyManager.VVM_TYPE_OMTP);
+    phoneAccountComponentName =
+        getString(statusCursor, VoicemailStatusQuery.PHONE_ACCOUNT_COMPONENT_NAME, "");
+    phoneAccountId = getString(statusCursor, VoicemailStatusQuery.PHONE_ACCOUNT_ID, "");
 
     configurationState =
         getInt(
@@ -97,7 +91,7 @@
      * user. It is much simpler to poll the status on the UI side. The result is injected back to
      * the status query result so the handling will be consistent with other voicemail clients.
      */
-    if (BuildCompat.isAtLeastO() && sourcePackage.equals(context.getPackageName())) {
+    if (sourcePackage.equals(context.getPackageName())) {
       notificationChannelState =
           getNotificationChannelStateFormTelephony(context, getPhoneAccountHandle());
     } else {
@@ -130,7 +124,7 @@
     isAirplaneMode = builder.isAirplaneMode;
   }
 
-  @TargetApi(VERSION_CODES.O)
+  @SuppressLint("MissingPermission")
   private static int getNotificationChannelStateFormTelephony(
       Context context, PhoneAccountHandle phoneAccountHandle) {
     TelephonyManager telephonyManager =
diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailStatusCorruptionHandler.java b/java/com/android/dialer/voicemail/listui/error/VoicemailStatusCorruptionHandler.java
deleted file mode 100644
index 75b21e7..0000000
--- a/java/com/android/dialer/voicemail/listui/error/VoicemailStatusCorruptionHandler.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.voicemail.listui.error;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.database.Cursor;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
-import android.provider.VoicemailContract.Status;
-import android.telecom.PhoneAccountHandle;
-import android.telephony.TelephonyManager;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-
-/**
- * This class will detect the corruption in the voicemail status and log it so we can track how many
- * users are affected.
- */
-public class VoicemailStatusCorruptionHandler {
-
-  /** Where the check is made so logging can be done. */
-  public enum Source {
-    Activity,
-    Notification
-  }
-
-  private static final String CONFIG_VVM_STATUS_FIX_DISABLED = "vvm_status_fix_disabled";
-
-  public static void maybeFixVoicemailStatus(Context context, Cursor statusCursor, Source source) {
-
-    if (ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(CONFIG_VVM_STATUS_FIX_DISABLED, false)) {
-      return;
-    }
-
-    if (VERSION.SDK_INT != VERSION_CODES.N_MR1) {
-      // This issue is specific to N MR1, it is fixed in future SDK.
-      return;
-    }
-
-    if (statusCursor.getCount() == 0) {
-      return;
-    }
-
-    statusCursor.moveToFirst();
-    VoicemailStatus status = new VoicemailStatus(context, statusCursor);
-    PhoneAccountHandle phoneAccountHandle =
-        new PhoneAccountHandle(
-            ComponentName.unflattenFromString(status.phoneAccountComponentName),
-            status.phoneAccountId);
-
-    TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
-
-    boolean visualVoicemailEnabled =
-        TelephonyManagerCompat.isVisualVoicemailEnabled(telephonyManager, phoneAccountHandle);
-    LogUtil.i(
-        "VoicemailStatusCorruptionHandler.maybeFixVoicemailStatus",
-        "Source="
-            + source
-            + ", CONFIGURATION_STATE="
-            + status.configurationState
-            + ", visualVoicemailEnabled="
-            + visualVoicemailEnabled);
-
-    // If visual voicemail is enabled, the CONFIGURATION_STATE should be either OK, PIN_NOT_SET,
-    // or other failure code. CONFIGURATION_STATE_NOT_CONFIGURED means that the client has been
-    // shut down improperly (a bug). The client should be reset or the VVM tab will be
-    // missing.
-    if (Status.CONFIGURATION_STATE_NOT_CONFIGURED == status.configurationState
-        && visualVoicemailEnabled) {
-      LogUtil.e(
-          "VoicemailStatusCorruptionHandler.maybeFixVoicemailStatus",
-          "VVM3 voicemail status corrupted");
-
-      switch (source) {
-        case Activity:
-          Logger.get(context)
-              .logImpression(
-                  DialerImpression.Type
-                      .VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_ACTIVITY);
-          break;
-        case Notification:
-          Logger.get(context)
-              .logImpression(
-                  DialerImpression.Type
-                      .VOICEMAIL_CONFIGURATION_STATE_CORRUPTION_DETECTED_FROM_NOTIFICATION);
-          break;
-        default:
-          Assert.fail("this should never happen");
-          break;
-      }
-      // At this point we could attempt to work around the issue by disabling and re-enabling
-      // voicemail. Unfortunately this work around is buggy so we'll do nothing for now.
-    }
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailStatusWorker.java b/java/com/android/dialer/voicemail/listui/error/VoicemailStatusWorker.java
index 08fef8e..4466409 100644
--- a/java/com/android/dialer/voicemail/listui/error/VoicemailStatusWorker.java
+++ b/java/com/android/dialer/voicemail/listui/error/VoicemailStatusWorker.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,11 +20,14 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.provider.VoicemailContract.Status;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.voicemailstatus.VoicemailStatusQuery;
 import com.android.voicemail.VoicemailComponent;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -53,7 +57,7 @@
                 Status.CONTENT_URI,
                 VoicemailStatusQuery.getProjection(),
                 where.toString(),
-                selectionArgs.toArray(new String[selectionArgs.size()]),
+                selectionArgs.toArray(new String[0]),
                 null)) {
       if (cursor == null) {
         return statuses;
diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java b/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java
index efc094c..7826e9d 100644
--- a/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java
+++ b/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,11 +20,8 @@
 import android.app.AlertDialog;
 import android.content.ComponentName;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
 import android.text.Layout;
@@ -33,18 +31,19 @@
 import android.text.style.AlignmentSpan;
 import android.text.style.TextAppearanceSpan;
 import android.text.style.URLSpan;
-import android.view.View;
-import android.view.View.OnClickListener;
+
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceManager;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.voicemail.listui.error.VoicemailErrorMessage.Action;
 import com.android.voicemail.VisualVoicemailTypeExtensions;
 import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.VoicemailVersionConstants;
+
 import java.util.Locale;
 
 /**
@@ -75,10 +74,7 @@
     if (!canShowTos()) {
       return null;
     } else if (shouldShowTos()) {
-      logTosCreatedImpression();
       return getTosMessage();
-    } else if (shouldShowPromo()) {
-      return getPromoMessage();
     } else {
       return null;
     }
@@ -90,90 +86,23 @@
             getNewUserTosMessageText(),
             new Action(
                 getDeclineText(),
-                new OnClickListener() {
-                  @Override
-                  public void onClick(View v) {
-                    LogUtil.i("VoicemailTosMessageCreator.getTosMessage", "decline clicked");
-                    PhoneAccountHandle handle =
-                        new PhoneAccountHandle(
-                            ComponentName.unflattenFromString(status.phoneAccountComponentName),
-                            status.phoneAccountId);
-                    logTosDeclinedImpression();
-                    showDeclineTosDialog(handle);
-                  }
-                }),
+                    v -> {
+                      LogUtil.i("VoicemailTosMessageCreator.getTosMessage", "decline clicked");
+                      PhoneAccountHandle handle =
+                          new PhoneAccountHandle(
+                              ComponentName.unflattenFromString(status.phoneAccountComponentName),
+                              status.phoneAccountId);
+                      showDeclineTosDialog(handle);
+                    }),
             new Action(
                 getAcceptText(),
-                new OnClickListener() {
-                  @Override
-                  public void onClick(View v) {
-                    LogUtil.i("VoicemailTosMessageCreator.getTosMessage", "accept clicked");
-                    if (isVoicemailTranscriptionAvailable()) {
-                      VoicemailComponent.get(context)
-                          .getVoicemailClient()
-                          .setVoicemailTranscriptionEnabled(
-                              context, status.getPhoneAccountHandle(), true);
-                    }
-                    recordTosAcceptance();
-                    // Accepting the TOS also acknowledges the latest features
-                    recordFeatureAcknowledgement();
-                    logTosAcceptedImpression();
-                    statusReader.refresh();
-                  }
-                },
-                true /* raised */))
-        .setModal(true)
-        .setImageResourceId(R.drawable.voicemail_tos_image);
-  }
-
-  private VoicemailErrorMessage getPromoMessage() {
-    return new VoicemailTosMessage(
-            getExistingUserTosTitle(),
-            getExistingUserTosMessageText(),
-            new Action(
-                context.getString(R.string.dialer_terms_and_conditions_existing_user_decline),
-                new OnClickListener() {
-                  @Override
-                  public void onClick(View v) {
-                    LogUtil.i(
-                        "VoicemailTosMessageCreator.getPromoMessage", "declined transcription");
-                    if (isVoicemailTranscriptionAvailable()) {
-                      VoicemailClient voicemailClient =
-                          VoicemailComponent.get(context).getVoicemailClient();
-                      voicemailClient.setVoicemailTranscriptionEnabled(
-                          context, status.getPhoneAccountHandle(), false);
-                      // Feature acknowledgement also means accepting TOS, otherwise after removing
-                      // the feature ToS, we'll end up showing the ToS
-                      // TODO(uabdullah): Consider separating the ToS acceptance and feature
-                      // acknowledgment.
+                    v -> {
+                      LogUtil.i("VoicemailTosMessageCreator.getTosMessage", "accept clicked");
                       recordTosAcceptance();
+                      // Accepting the TOS also acknowledges the latest features
                       recordFeatureAcknowledgement();
                       statusReader.refresh();
-                    } else {
-                      LogUtil.e(
-                          "VoicemailTosMessageCreator.getPromoMessage",
-                          "voicemail transcription not available");
-                    }
-                  }
-                }),
-            new Action(
-                context.getString(R.string.dialer_terms_and_conditions_existing_user_ack),
-                new OnClickListener() {
-                  @Override
-                  public void onClick(View v) {
-                    LogUtil.i("VoicemailTosMessageCreator.getPromoMessage", "acknowledge clicked");
-                    if (isVoicemailTranscriptionAvailable()) {
-                      VoicemailComponent.get(context)
-                          .getVoicemailClient()
-                          .setVoicemailTranscriptionEnabled(
-                              context, status.getPhoneAccountHandle(), true);
-                    }
-                    // Feature acknowledgement also means accepting TOS
-                    recordTosAcceptance();
-                    recordFeatureAcknowledgement();
-                    statusReader.refresh();
-                  }
-                },
+                    },
                 true /* raised */))
         .setModal(true)
         .setImageResourceId(R.drawable.voicemail_tos_image);
@@ -205,29 +134,6 @@
       return true;
     }
 
-    if (isVoicemailTranscriptionAvailable() && !isLegacyVoicemailUser()) {
-      LogUtil.i(
-          "VoicemailTosMessageCreator.shouldShowTos", "showing TOS for Google transcription users");
-      return true;
-    }
-
-    return false;
-  }
-
-  private boolean shouldShowPromo() {
-    if (hasAcknowledgedFeatures()) {
-      LogUtil.i(
-          "VoicemailTosMessageCreator.shouldShowPromo", "already acknowledeged latest features");
-      return false;
-    }
-
-    if (isVoicemailTranscriptionAvailable()) {
-      LogUtil.i(
-          "VoicemailTosMessageCreator.shouldShowPromo",
-          "showing promo for Google transcription users");
-      return true;
-    }
-
     return false;
   }
 
@@ -245,12 +151,6 @@
     }
   }
 
-  private boolean isVoicemailTranscriptionAvailable() {
-    return VoicemailComponent.get(context)
-        .getVoicemailClient()
-        .isVoicemailTranscriptionAvailable(context, status.getPhoneAccountHandle());
-  }
-
   private void showDeclineTosDialog(final PhoneAccountHandle handle) {
     if (isVvm3() && Vvm3VoicemailMessageCreator.PIN_NOT_SET == status.configurationState) {
       LogUtil.i(
@@ -265,29 +165,15 @@
     AlertDialog.Builder builder = new AlertDialog.Builder(context);
     builder.setTitle(R.string.terms_and_conditions_decline_dialog_title);
     builder.setMessage(getTosDeclinedDialogMessageId());
-    builder.setPositiveButton(
-        getTosDeclinedDialogDowngradeId(),
-        new DialogInterface.OnClickListener() {
-          @Override
-          public void onClick(DialogInterface dialog, int which) {
-            Logger.get(context).logImpression(DialerImpression.Type.VOICEMAIL_VVM3_TOS_DECLINED);
-            VoicemailClient voicemailClient = VoicemailComponent.get(context).getVoicemailClient();
-            if (voicemailClient.isVoicemailModuleEnabled()) {
-              voicemailClient.setVoicemailEnabled(context, status.getPhoneAccountHandle(), false);
-            } else {
-              TelephonyManagerCompat.setVisualVoicemailEnabled(telephonyManager, handle, false);
-            }
-          }
-        });
-
-    builder.setNegativeButton(
-        android.R.string.cancel,
-        new DialogInterface.OnClickListener() {
-          @Override
-          public void onClick(DialogInterface dialog, int which) {
-            dialog.dismiss();
-          }
-        });
+    builder.setPositiveButton(getTosDeclinedDialogDowngradeId(), (dialog, which) -> {
+      VoicemailClient voicemailClient = VoicemailComponent.get(context).getVoicemailClient();
+      if (voicemailClient.isVoicemailModuleEnabled()) {
+        voicemailClient.setVoicemailEnabled(context, status.getPhoneAccountHandle(), false);
+      } else {
+        TelephonyManagerCompat.setVisualVoicemailEnabled(telephonyManager, handle, false);
+      }
+    });
+    builder.setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.dismiss());
 
     builder.setCancelable(true);
     builder.show();
@@ -298,25 +184,12 @@
     builder.setMessage(R.string.verizon_terms_and_conditions_decline_set_pin_dialog_message);
     builder.setPositiveButton(
         R.string.verizon_terms_and_conditions_decline_set_pin_dialog_set_pin,
-        new DialogInterface.OnClickListener() {
-          @Override
-          public void onClick(DialogInterface dialog, int which) {
-            Logger.get(context)
-                .logImpression(DialerImpression.Type.VOICEMAIL_VVM3_TOS_DECLINE_CHANGE_PIN_SHOWN);
-            Intent intent = new Intent(TelephonyManager.ACTION_CONFIGURE_VOICEMAIL);
-            intent.putExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
-            context.startActivity(intent);
-          }
-        });
-
-    builder.setNegativeButton(
-        android.R.string.cancel,
-        new DialogInterface.OnClickListener() {
-          @Override
-          public void onClick(DialogInterface dialog, int which) {
-            dialog.dismiss();
-          }
-        });
+            (dialog, which) -> {
+              Intent intent = new Intent(TelephonyManager.ACTION_CONFIGURE_VOICEMAIL);
+              intent.putExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
+              context.startActivity(intent);
+            });
+    builder.setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.dismiss());
 
     builder.setCancelable(true);
     builder.show();
@@ -364,16 +237,6 @@
     VoicemailComponent.get(context).getVoicemailClient().onTosAccepted(context, handle);
   }
 
-  private boolean hasAcknowledgedFeatures() {
-    if (isVvm3()) {
-      return true;
-    }
-
-    return preferences.getInt(
-            VoicemailVersionConstants.PREF_DIALER_FEATURE_VERSION_ACKNOWLEDGED_KEY, 0)
-        >= VoicemailVersionConstants.CURRENT_VOICEMAIL_FEATURE_VERSION;
-  }
-
   private void recordFeatureAcknowledgement() {
     preferences
         .edit()
@@ -383,37 +246,6 @@
         .apply();
   }
 
-  private boolean isLegacyVoicemailUser() {
-    return preferences.getInt(
-            VoicemailVersionConstants.PREF_DIALER_FEATURE_VERSION_ACKNOWLEDGED_KEY, 0)
-        == VoicemailVersionConstants.LEGACY_VOICEMAIL_FEATURE_VERSION;
-  }
-
-  private void logTosCreatedImpression() {
-    if (isVvm3()) {
-      Logger.get(context).logImpression(DialerImpression.Type.VOICEMAIL_VVM3_TOS_V2_CREATED);
-    } else {
-      Logger.get(context).logImpression(DialerImpression.Type.VOICEMAIL_DIALER_TOS_CREATED);
-    }
-  }
-
-  private void logTosDeclinedImpression() {
-    if (isVvm3()) {
-      Logger.get(context)
-          .logImpression(DialerImpression.Type.VOICEMAIL_VVM3_TOS_V2_DECLINE_CLICKED);
-    } else {
-      Logger.get(context).logImpression(DialerImpression.Type.VOICEMAIL_DIALER_TOS_DECLINE_CLICKED);
-    }
-  }
-
-  private void logTosAcceptedImpression() {
-    if (isVvm3()) {
-      Logger.get(context).logImpression(DialerImpression.Type.VOICEMAIL_VVM3_TOS_V2_ACCEPTED);
-    } else {
-      Logger.get(context).logImpression(DialerImpression.Type.VOICEMAIL_DIALER_TOS_ACCEPTED);
-    }
-  }
-
   private CharSequence getVvm3Tos() {
     String policyUrl = context.getString(R.string.verizon_terms_and_conditions_policy_url);
     return useSpanish()
@@ -426,21 +258,7 @@
   }
 
   private CharSequence getNewUserDialerTos() {
-    if (!isVoicemailTranscriptionAvailable()) {
-      return "";
-    }
-
-    String learnMoreText = context.getString(R.string.dialer_terms_and_conditions_learn_more);
-    return context.getString(R.string.dialer_terms_and_conditions_1_0, learnMoreText);
-  }
-
-  private CharSequence getExistingUserDialerTos() {
-    if (!isVoicemailTranscriptionAvailable()) {
-      return "";
-    }
-
-    String learnMoreText = context.getString(R.string.dialer_terms_and_conditions_learn_more);
-    return context.getString(R.string.dialer_terms_and_conditions_existing_user, learnMoreText);
+    return "";
   }
 
   private CharSequence getAcceptText() {
@@ -473,12 +291,6 @@
         : context.getString(R.string.dialer_terms_and_conditions_title);
   }
 
-  private CharSequence getExistingUserTosTitle() {
-    return isVvm3()
-        ? context.getString(R.string.verizon_terms_and_conditions_title)
-        : context.getString(R.string.dialer_terms_and_conditions_existing_user_title);
-  }
-
   private CharSequence getNewUserTosMessageText() {
     SpannableString spannableTos;
     if (isVvm3()) {
@@ -516,23 +328,6 @@
     }
   }
 
-  private CharSequence getExistingUserTosMessageText() {
-    SpannableString spannableTos;
-    // Change to center alignment.
-    CharSequence tos =
-        context.getString(R.string.dialer_terms_and_conditions_message, getExistingUserDialerTos());
-    spannableTos = new SpannableString(tos);
-    spannableTos.setSpan(
-        new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER),
-        0,
-        tos.length(),
-        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-
-    // Add 'Learn more' link for dialer TOS
-    String learnMore = context.getString(R.string.dialer_terms_and_conditions_learn_more);
-    return addLink(spannableTos, learnMore, getLearnMoreUrl());
-  }
-
   private SpannableString addLink(SpannableString spannable, String linkText, String linkUrl) {
     if (TextUtils.isEmpty(linkUrl) || TextUtils.isEmpty(linkText)) {
       return spannable;
@@ -552,11 +347,7 @@
   }
 
   private String getLearnMoreUrl() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getString(
-            "voicemail_transcription_learn_more_url",
-            context.getString(R.string.dialer_terms_and_conditions_learn_more_url));
+    return context.getString(R.string.dialer_terms_and_conditions_learn_more_url);
   }
 
   private int getTosDeclinedDialogMessageId() {
diff --git a/java/com/android/dialer/voicemail/listui/error/Vvm3VoicemailMessageCreator.java b/java/com/android/dialer/voicemail/listui/error/Vvm3VoicemailMessageCreator.java
index 863c586..c4910ae 100644
--- a/java/com/android/dialer/voicemail/listui/error/Vvm3VoicemailMessageCreator.java
+++ b/java/com/android/dialer/voicemail/listui/error/Vvm3VoicemailMessageCreator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,23 +20,19 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.os.Build.VERSION_CODES;
 import android.provider.VoicemailContract.Status;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresApi;
-import android.view.View;
-import android.view.View.OnClickListener;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.contacts.common.util.ContactDisplayUtils;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
+import com.android.dialer.R;
 import com.android.dialer.voicemail.listui.error.VoicemailErrorMessage.Action;
 
 /**
  * Create error message from {@link VoicemailStatus} for VVM3 visual voicemail. VVM3 is used only by
  * Verizon Wireless.
  */
-@RequiresApi(VERSION_CODES.N_MR1)
 public class Vvm3VoicemailMessageCreator {
 
   // Copied from com.android.phone.vvm.omtp.protocol.Vvm3EventHandler
@@ -248,7 +245,6 @@
     }
 
     if (PIN_NOT_SET == status.configurationState) {
-      Logger.get(context).logImpression(DialerImpression.Type.VOICEMAIL_ALERT_SET_PIN_SHOWN);
       return new VoicemailErrorMessage(
           context.getString(R.string.voicemail_error_pin_not_set_title),
           getCustomerSupportString(context, R.string.voicemail_error_pin_not_set_message),
@@ -291,18 +287,15 @@
   private static Action createCallCustomerSupportAction(final Context context) {
     return new Action(
         context.getString(R.string.voicemail_action_call_customer_support),
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            Intent intent =
-                new Intent(
-                    Intent.ACTION_CALL,
-                    Uri.parse(
-                        "tel:"
-                            + context.getString(
-                                R.string.verizon_domestic_customer_support_number)));
-            context.startActivity(intent);
-          }
-        });
+            v -> {
+              Intent intent =
+                  new Intent(
+                      Intent.ACTION_CALL,
+                      Uri.parse(
+                          "tel:"
+                              + context.getString(
+                                  R.string.verizon_domestic_customer_support_number)));
+              context.startActivity(intent);
+            });
   }
 }
diff --git a/java/com/android/dialer/voicemail/listui/error/res/drawable/shadow.xml b/java/com/android/dialer/voicemail/listui/error/res/drawable/shadow.xml
deleted file mode 100644
index 925c8d2..0000000
--- a/java/com/android/dialer/voicemail/listui/error/res/drawable/shadow.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-       android:shape="rectangle">
-  <gradient
-        android:startColor="#3333"
-        android:endColor="#0333"
-        android:type="linear"
-        android:angle="90">
-    </gradient>
-</shape>
diff --git a/java/com/android/dialer/voicemail/listui/error/res/drawable/voicemail_tos_image.png b/java/com/android/dialer/voicemail/listui/error/res/drawable/voicemail_tos_image.png
deleted file mode 100644
index 48ab3c3..0000000
--- a/java/com/android/dialer/voicemail/listui/error/res/drawable/voicemail_tos_image.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/dialer/voicemail/listui/error/res/layout/voicemail_error_message_fragment.xml b/java/com/android/dialer/voicemail/listui/error/res/layout/voicemail_error_message_fragment.xml
index dab2f21..e70e749 100644
--- a/java/com/android/dialer/voicemail/listui/error/res/layout/voicemail_error_message_fragment.xml
+++ b/java/com/android/dialer/voicemail/listui/error/res/layout/voicemail_error_message_fragment.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2017 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -13,7 +14,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<android.support.v7.widget.CardView
+<androidx.cardview.widget.CardView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/error_card"
     style="@style/CallLogCardStyle"
@@ -106,4 +107,4 @@
 
     </LinearLayout>
   </LinearLayout>
-</android.support.v7.widget.CardView>
+</androidx.cardview.widget.CardView>
diff --git a/java/com/android/dialer/voicemail/listui/error/res/layout/voicemail_tos_fragment.xml b/java/com/android/dialer/voicemail/listui/error/res/layout/voicemail_tos_fragment.xml
index 17a1f74..2ecc143 100644
--- a/java/com/android/dialer/voicemail/listui/error/res/layout/voicemail_tos_fragment.xml
+++ b/java/com/android/dialer/voicemail/listui/error/res/layout/voicemail_tos_fragment.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2017 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -82,8 +83,8 @@
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/verizon_terms_and_conditions_decline_english"/>
-    <android.support.v4.widget.Space
-      android:layout_width="8dp"
+    <Space
+      android:layout_width="0dp"
       android:layout_height="match_parent"
       android:layout_weight="1"/>
     <TextView
diff --git a/java/com/android/dialer/voicemail/listui/error/res/values-th/strings.xml b/java/com/android/dialer/voicemail/listui/error/res/values-th/strings.xml
index 0390903..1bc83db 100644
--- a/java/com/android/dialer/voicemail/listui/error/res/values-th/strings.xml
+++ b/java/com/android/dialer/voicemail/listui/error/res/values-th/strings.xml
@@ -88,7 +88,7 @@
   <string name="dialer_terms_and_conditions_message">%s</string>
   <string name="dialer_terms_and_conditions_1.0">ดูและฟังข้อความได้โดยไม่ต้องโทรไปฟังข้อความเสียงเอง บริการถอดเสียงฟรีของ Google ถอดเสียงข้อความให้คุณแล้ว โดยเลือกปิดฟีเจอร์นี้ในการตั้งค่าได้ทุกเมื่อ %s</string>
   <string name="dialer_terms_and_conditions_existing_user">บริการถอดเสียงฟรีของ Google ถอดเสียงข้อความให้คุณแล้ว โดยเลือกปิดฟีเจอร์นี้ในการตั้งค่าได้ทุกเมื่อ %s</string>
-  <string name="dialer_terms_and_conditions_for_verizon_1.0">ดูและฟังข้อความโดยไม่ต้องโทรไปฟังข้อความเสียงเอง %s</string>
+  <string name="dialer_terms_and_conditions_for_verizon_1.0">ดูและฟังข้อความโดยไม่ต้องโทรไปฟังข้อความเสียงเอง</string>
   <string name="dialer_terms_and_conditions_learn_more">ดูข้อมูลเพิ่มเติม</string>
   <string name="dialer_terms_and_conditions_existing_user_ack">รับทราบ</string>
   <string name="dialer_terms_and_conditions_existing_user_decline">ไม่เป็นไร</string>
diff --git a/java/com/android/dialer/voicemail/listui/error/res/values/dimens.xml b/java/com/android/dialer/voicemail/listui/error/res/values/dimens.xml
index f40cc5f..64ec30b 100644
--- a/java/com/android/dialer/voicemail/listui/error/res/values/dimens.xml
+++ b/java/com/android/dialer/voicemail/listui/error/res/values/dimens.xml
@@ -27,8 +27,6 @@
   <dimen name="voicemail_promo_card_action_end_padding">4dp</dimen>
   <dimen name="voicemail_promo_card_action_between_padding">11dp</dimen>
   <dimen name="voicemail_promo_card_line_spacing">4dp</dimen>
-  <dimen name="voicemail_promo_card_title_text_size">16sp</dimen>
-  <dimen name="voicemail_promo_card_message_size">14sp</dimen>
 
   <dimen name="voicemail_tos_image_size">280dp</dimen>
 </resources>
diff --git a/java/com/android/dialer/voicemail/listui/error/res/values/styles.xml b/java/com/android/dialer/voicemail/listui/error/res/values/styles.xml
index 4267e8c..280fc09 100644
--- a/java/com/android/dialer/voicemail/listui/error/res/values/styles.xml
+++ b/java/com/android/dialer/voicemail/listui/error/res/values/styles.xml
@@ -23,7 +23,7 @@
     <item name="android:layout_marginStart">8dp</item>
     <item name="android:layout_marginEnd">8dp</item>
     <item name="android:padding">8dp</item>
-    <item name="android:textColor">?android:attr/colorPrimary</item>
+    <item name="android:textColor">?android:attr/colorAccent</item>
     <item name="android:fontFamily">"sans-serif-medium"</item>
     <item name="android:focusable">true</item>
     <item name="android:singleLine">true</item>
@@ -55,24 +55,11 @@
     <item name="android:layout_height">@dimen/call_log_action_height</item>
   </style>
 
-  <style name="TosTitleStyle">
-    <item name="android:textColor">?android:attr/textColorPrimary</item>
-    <item name="android:textSize">20sp</item>
-    <item name="android:fontFamily">"sans-serif-medium"</item>
-  </style>
-
   <style name="TosLinkStyle">
     <item name="android:textColor">?android:attr/colorPrimary</item>
     <item name="android:fontFamily">"sans-serif-medium"</item>
   </style>
 
-  <style name="TosTextStyle">
-    <item name="android:textSize">16sp</item>
-    <item name="android:textColor">@color/dialer_primary_text_color</item>
-    <item name="android:fontFamily">"sans-serif-regular"</item>
-    <item name="android:lineSpacingExtra">8sp</item>
-  </style>
-
   <style name="TosDetailsTextStyle">
     <item name="android:textSize">12sp</item>
     <item name="android:textColor">?android:attr/textColorSecondary</item>
diff --git a/java/com/android/dialer/voicemail/listui/menu/AndroidManifest.xml b/java/com/android/dialer/voicemail/listui/menu/AndroidManifest.xml
deleted file mode 100644
index 07d4d22..0000000
--- a/java/com/android/dialer/voicemail/listui/menu/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.voicemail.listui.menu"/>
\ No newline at end of file
diff --git a/java/com/android/dialer/voicemail/listui/menu/BottomSheetHeader.java b/java/com/android/dialer/voicemail/listui/menu/BottomSheetHeader.java
deleted file mode 100644
index deca7bd..0000000
--- a/java/com/android/dialer/voicemail/listui/menu/BottomSheetHeader.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.voicemail.listui.menu;
-
-import android.text.TextUtils;
-import com.android.dialer.calllogutils.PhotoInfoBuilder;
-import com.android.dialer.historyitemactions.HistoryItemBottomSheetHeaderInfo;
-import com.android.dialer.voicemail.model.VoicemailEntry;
-
-/** Configures the top row in the bottom sheet for the Voicemail Tab */
-final class BottomSheetHeader {
-
-  static HistoryItemBottomSheetHeaderInfo fromVoicemailEntry(VoicemailEntry voicemailEntry) {
-    return HistoryItemBottomSheetHeaderInfo.newBuilder()
-        .setNumber(voicemailEntry.getNumber())
-        .setPhotoInfo(PhotoInfoBuilder.fromVoicemailEntry(voicemailEntry))
-        .setPrimaryText(buildPrimaryVoicemailText(voicemailEntry))
-        .setSecondaryText(buildSecondaryVoicemailText(voicemailEntry))
-        .build();
-  }
-
-  private static String buildSecondaryVoicemailText(VoicemailEntry voicemailEntry) {
-    return voicemailEntry.getGeocodedLocation();
-  }
-
-  private static String buildPrimaryVoicemailText(VoicemailEntry data) {
-    StringBuilder primaryText = new StringBuilder();
-    if (!TextUtils.isEmpty(data.getNumberAttributes().getName())) {
-      primaryText.append(data.getNumberAttributes().getName());
-    } else if (!TextUtils.isEmpty(data.getFormattedNumber())) {
-      primaryText.append(data.getFormattedNumber());
-    } else {
-      // TODO(uabdullah): Handle CallLog.Calls.PRESENTATION_*, including Verizon restricted numbers.
-      // primaryText.append(context.getText(R.string.voicemail_unknown));
-      // TODO(uabdullah): Figure out why http://gpaste/5980163120562176 error when using string
-      primaryText.append("Unknown");
-    }
-    return primaryText.toString();
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/menu/Modules.java b/java/com/android/dialer/voicemail/listui/menu/Modules.java
deleted file mode 100644
index 5a9a711..0000000
--- a/java/com/android/dialer/voicemail/listui/menu/Modules.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.voicemail.listui.menu;
-
-import android.content.Context;
-import android.text.TextUtils;
-import com.android.dialer.historyitemactions.HistoryItemActionModule;
-import com.android.dialer.historyitemactions.HistoryItemActionModuleInfo;
-import com.android.dialer.historyitemactions.HistoryItemActionModulesBuilder;
-import com.android.dialer.voicemail.model.VoicemailEntry;
-import java.util.List;
-
-/**
- * Configures the modules for the voicemail bottom sheet; these are the rows below the top row
- * (contact info) in the bottom sheet.
- */
-final class Modules {
-
-  static List<HistoryItemActionModule> fromVoicemailEntry(
-      Context context, VoicemailEntry voicemailEntry) {
-    return new HistoryItemActionModulesBuilder(context, buildModuleInfo(voicemailEntry))
-        // TODO(uabdullah): add module for calls.
-        .addModuleForAddingToContacts()
-        .addModuleForSendingTextMessage()
-        .addModuleForDivider()
-        .addModuleForBlockedOrSpamNumber()
-        .addModuleForCopyingNumber()
-        // TODO(zachh): Module for CallComposer.
-        .build();
-  }
-
-  private static HistoryItemActionModuleInfo buildModuleInfo(VoicemailEntry voicemailEntry) {
-    return HistoryItemActionModuleInfo.newBuilder()
-        .setNormalizedNumber(voicemailEntry.getNumber().getNormalizedNumber())
-        .setCountryIso(voicemailEntry.getNumber().getCountryIso())
-        .setName(voicemailEntry.getNumberAttributes().getName())
-        .setCallType(voicemailEntry.getCallType())
-        .setLookupUri(voicemailEntry.getNumberAttributes().getLookupUri())
-        .setPhoneAccountComponentName(voicemailEntry.getPhoneAccountComponentName())
-        .setCanReportAsInvalidNumber(
-            voicemailEntry.getNumberAttributes().getCanReportAsInvalidNumber())
-        .setCanSupportAssistedDialing(
-            !TextUtils.isEmpty(voicemailEntry.getNumberAttributes().getLookupUri()))
-        .setCanSupportCarrierVideoCall(
-            voicemailEntry.getNumberAttributes().getCanSupportCarrierVideoCall())
-        .setIsBlocked(voicemailEntry.getNumberAttributes().getIsBlocked())
-        .setIsEmergencyNumber(voicemailEntry.getNumberAttributes().getIsEmergencyNumber())
-        .setIsSpam(voicemailEntry.getNumberAttributes().getIsSpam())
-        // A voicemail call is an outgoing call to the voicemail box.
-        // Voicemail entries are not voicemail calls.
-        .setIsVoicemailCall(false)
-        .setContactSource(voicemailEntry.getNumberAttributes().getContactSource())
-        .setHost(HistoryItemActionModuleInfo.Host.VOICEMAIL)
-        .build();
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/menu/NewVoicemailMenu.java b/java/com/android/dialer/voicemail/listui/menu/NewVoicemailMenu.java
deleted file mode 100644
index 6008059..0000000
--- a/java/com/android/dialer/voicemail/listui/menu/NewVoicemailMenu.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.dialer.voicemail.listui.menu;
-
-import android.content.Context;
-import android.view.View;
-import com.android.dialer.historyitemactions.HistoryItemActionBottomSheet;
-import com.android.dialer.voicemail.model.VoicemailEntry;
-
-/** Handles configuration of the bottom sheet menus for voicemail entries. */
-public final class NewVoicemailMenu {
-
-  /** Creates and returns the OnClickListener which opens the menu for the provided row. */
-  public static View.OnClickListener createOnClickListener(
-      Context context, VoicemailEntry voicemailEntry) {
-    return (view) ->
-        HistoryItemActionBottomSheet.show(
-            context,
-            BottomSheetHeader.fromVoicemailEntry(voicemailEntry),
-            Modules.fromVoicemailEntry(context, voicemailEntry));
-  }
-}
diff --git a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_call_log_fragment.xml b/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_call_log_fragment.xml
deleted file mode 100644
index a001bd6..0000000
--- a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_call_log_fragment.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/new_voicemail_frame_layout"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="?android:attr/colorBackground"
-    android:orientation="vertical">
-
-  <android.support.v7.widget.RecyclerView
-      xmlns:android="http://schemas.android.com/apk/res/android"
-      android:id="@+id/new_voicemail_call_log_recycler_view"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:paddingBottom="88dp"
-      android:clipToPadding="false"/>
-
-
-  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent">
-
-    <com.android.dialer.widget.EmptyContentView
-        android:id="@+id/empty_content_view"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:visibility="gone"/>
-  </FrameLayout>
-
-</FrameLayout>
diff --git a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_entry.xml b/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_entry.xml
deleted file mode 100644
index 95711e0..0000000
--- a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_entry.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="72dp">
-
-  <com.android.dialer.widget.ContactPhotoView
-      android:id="@+id/contact_photo_view"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_marginTop="12dp"
-      android:layout_marginStart="8dp"
-      android:layout_marginEnd="8dp"/>
-
-  <LinearLayout
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_toEndOf="@+id/contact_photo_view"
-      android:layout_toStartOf="@+id/menu_button"
-      android:orientation="vertical">
-
-    <TextView
-        android:id="@+id/primary_text"
-        style="@style/Dialer.TextAppearance.Primary.Ellipsize"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="14dp"
-        android:layout_marginEnd="6dp"
-        android:lineSpacingMultiplier="1.5"/>
-
-    <LinearLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        tools:ignore="UseCompoundDrawables">
-
-      <ImageView
-          android:layout_width="wrap_content"
-          android:layout_height="18dp"
-          android:layout_gravity="center_vertical"
-          android:importantForAccessibility="no"
-          android:src="@drawable/quantum_ic_voicemail_vd_theme_24"
-          android:tint="?android:attr/colorPrimary"
-          android:tintMode="multiply"
-          tools:ignore="ContentDescription"/>
-
-      <TextView
-          android:id="@+id/secondary_text"
-          style="@style/Dialer.TextAppearance.Secondary.Ellipsize"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:lineSpacingMultiplier="1.4"/>
-    </LinearLayout>
-
-    <!-- TODO(a bug): Make text selectable -->
-    <TextView
-        android:id="@+id/transcription_text"
-        style="@style/Dialer.TextAppearance.Primary"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="6dp"
-        android:layout_gravity="center_vertical"
-        android:textSize="@dimen/voicemail_transcription_text_size"
-        android:visibility="gone"/>
-
-    <TextView
-        android:id="@+id/transcription_branding"
-        style="@style/Dialer.TextAppearance.Secondary"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_vertical"
-        android:text="@string/voicemail_transcription_branding_text"
-        android:visibility="gone"/>
-
-    <com.android.dialer.voicemail.listui.NewVoicemailMediaPlayerView
-        android:id="@+id/new_voicemail_media_player"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:visibility="gone"/>
-  </LinearLayout>
-
-  <ImageView
-      android:id="@+id/menu_button"
-      android:layout_width="56dp"
-      android:layout_height="72dp"
-      android:layout_alignParentEnd="true"
-      android:background="?android:attr/selectableItemBackgroundBorderless"
-      android:contentDescription="@string/a11y_voicemail_entry_expand_menu"
-      android:scaleType="center"
-      android:src="@drawable/quantum_ic_more_vert_vd_theme_24"
-      android:tint="?colorIcon"/>
-</RelativeLayout>
diff --git a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_entry_alert.xml b/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_entry_alert.xml
deleted file mode 100644
index 1df8b2c..0000000
--- a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_entry_alert.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<!-- TODO(uabdullah): Use a relative layout instead of nested linear layouts.-->
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/voicemail_alert_content"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
-
-  <LinearLayout
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:paddingTop="@dimen/alert_main_padding"
-      android:paddingBottom="@dimen/alert_main_padding"
-      android:paddingStart="@dimen/alert_main_padding"
-      android:paddingEnd="@dimen/alert_main_padding"
-      android:gravity="top"
-      android:orientation="horizontal">
-
-    <ImageView
-        android:id="@+id/voicemail_alert_icon"
-        android:layout_width="@dimen/voicemail_promo_card_icon_size"
-        android:layout_height="@dimen/voicemail_promo_card_icon_size"
-        android:layout_gravity="top"
-        android:importantForAccessibility="no"
-        android:src="@drawable/ic_voicemail_error_24px"/>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="@dimen/voicemail_promo_card_main_padding"
-        android:gravity="center_vertical"
-        android:orientation="vertical">
-
-      <TextView
-          android:id="@+id/voicemail_alert_header"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_marginBottom="@dimen/voicemail_promo_card_title_padding"
-          android:layout_gravity="center_vertical"
-          android:text="Voicemail Alert"
-          style="@style/Dialer.TextAppearance.Header2"/>
-
-      <TextView
-          android:id="@+id/voicemail_alert_details"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:lineSpacingExtra="@dimen/voicemail_promo_card_line_spacing"
-          android:text="This is a voicemail alert message."
-          style="@style/Dialer.TextAppearance.Secondary"/>
-    </LinearLayout>
-  </LinearLayout>
-
-  <LinearLayout
-      android:id="@+id/voicemail_alert_button"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:layout_gravity="end"
-      android:paddingTop="10dp"
-      android:paddingBottom="10dp"
-      android:paddingStart="16dp"
-      android:paddingEnd="16dp"
-      android:gravity="end"
-      android:minHeight="56dp"
-      android:orientation="horizontal">
-    <Button
-        android:id="@+id/voicemail_alert_secondary_button"
-        style="@style/TosButtonStyle"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textColor="?android:attr/colorPrimary"/>
-
-    <Button
-        android:id="@+id/voicemail_alert_primary_button"
-        style="@style/TosButtonStyle"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textColor="?android:attr/colorPrimary"/>
-  </LinearLayout>
-
-  <View
-      xmlns:android="http://schemas.android.com/apk/res/android"
-      android:layout_width="match_parent"
-      android:layout_height="1dp"
-      android:layout_marginTop="8dp"
-      android:layout_marginBottom="8dp"
-      android:background="#12000000"/>
-</LinearLayout>
diff --git a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_entry_header.xml b/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_entry_header.xml
deleted file mode 100644
index 70ca2ac..0000000
--- a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_entry_header.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:minHeight="48dp"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-  <TextView
-      android:id="@+id/new_voicemail_header_text"
-      style="@style/Dialer.TextAppearance.Secondary.Ellipsize"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_marginStart="16dp"
-      android:layout_marginTop="8dp"
-      android:layout_centerVertical="true"
-      android:layout_gravity="center_vertical"/>
-</RelativeLayout>
diff --git a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_media_player_layout.xml b/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_media_player_layout.xml
deleted file mode 100644
index 2796142..0000000
--- a/java/com/android/dialer/voicemail/listui/res/layout/new_voicemail_media_player_layout.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="@dimen/voicemail_media_player_padding_top"
-    android:orientation="vertical">
-
-  <TextView
-      android:id="@+id/playback_state_text"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:gravity="center"
-      android:text="@string/voicemail_media_player_state"
-      android:textSize="@dimen/voicemail_playback_state_text_size"
-      android:visibility="gone"/>
-
-  <LinearLayout
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:gravity="center_vertical"
-      android:orientation="horizontal">
-
-    <TextView
-        android:id="@+id/playback_position_text"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:importantForAccessibility="no"
-        android:text="@string/voicemail_media_player_inital_start_position"
-        android:textSize="@dimen/voicemail_duration_size"/>
-
-    <!-- TODO(uabdullah): Add listener to seekbar -->
-    <SeekBar
-        android:id="@+id/playback_seek"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:max="0"
-        android:progress="0"/>
-
-    <TextView
-        android:id="@+id/playback_seek_total_duration"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:importantForAccessibility="no"
-        android:textSize="@dimen/voicemail_duration_size"/>
-  </LinearLayout>
-
-  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:paddingTop="10dp"
-      android:gravity="center"
-      android:orientation="horizontal"
-      android:weightSum="4">
-
-    <ImageButton
-        android:id="@+id/pauseButton"
-        style="@style/voicemail_media_player_buttons"
-        android:layout_weight="1"
-        android:contentDescription="@string/a11y_voicemail_entry_pause"
-        android:src="@drawable/quantum_ic_pause_vd_theme_24"
-        android:visibility="gone"/>
-
-    <ImageButton
-        android:id="@+id/playButton"
-        style="@style/voicemail_media_player_buttons"
-        android:layout_weight="1"
-        android:contentDescription="@string/a11y_voicemail_entry_play"
-        android:src="@drawable/quantum_ic_play_arrow_vd_theme_24"/>
-
-
-    <ImageButton
-        android:id="@+id/speakerButton"
-        style="@style/voicemail_media_player_buttons"
-        android:layout_weight="1"
-        android:contentDescription="@string/a11y_voicemail_entry_speaker"
-        android:src="@drawable/quantum_ic_volume_up_vd_theme_24"/>
-
-
-    <ImageButton
-        android:id="@+id/phoneButton"
-        style="@style/voicemail_media_player_buttons"
-        android:layout_weight="1"
-        android:contentDescription="@string/a11y_voicemail_entry_call"
-        android:src="@drawable/quantum_ic_phone_vd_theme_24"/>
-
-    <ImageButton
-        android:id="@+id/deleteButton"
-        style="@style/voicemail_media_player_buttons"
-        android:layout_weight="1"
-        android:contentDescription="@string/a11y_voicemail_entry_delete"
-        android:src="@drawable/quantum_ic_delete_vd_theme_24"/>
-  </LinearLayout>
-</LinearLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/voicemail/listui/res/values/dimens.xml b/java/com/android/dialer/voicemail/listui/res/values/dimens.xml
deleted file mode 100644
index 1fa308a..0000000
--- a/java/com/android/dialer/voicemail/listui/res/values/dimens.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-
-  <!-- TODO(uabdullah): These values are to be shared with the call log entries -->
-  <dimen name="call_log_entry_menu_button_size">48dp</dimen>
-  <dimen name="voicemail_transcription_text_size">14sp</dimen>
-  <dimen name="voicemail_playback_state_text_size">14sp</dimen>
-  <!-- TODO(uabdullah): Work with UX on this value to ensure proper spacing between
-  the seekbar and transcription -->
-  <dimen name="voicemail_media_player_padding_top">20dp</dimen>
-  <dimen name="voicemail_duration_size">14sp</dimen>
-  <!-- TODO(uabdullah): Work with UX on these values so that the touch target is not too small -->
-  <dimen name="voicemail_media_player_height">56dp</dimen>
-  <dimen name="voicemail_media_player_width">0dp</dimen>
-
-  <dimen name="voicemail_tos_image_size">280dp</dimen>
-
-  <!-- Dimensions for voicemail alert -->
-  <dimen name="alert_main_padding">24dp</dimen>
-  <dimen name="voicemail_promo_card_icon_size">24dp</dimen>
-  <dimen name="voicemail_promo_card_main_padding">24dp</dimen>
-  <dimen name="voicemail_promo_card_title_padding">12dp</dimen>
-  <dimen name="voicemail_promo_card_title_text_size">16sp</dimen>
-  <dimen name="voicemail_promo_card_line_spacing">4dp</dimen>
-  <dimen name="voicemail_promo_card_message_size">14sp</dimen>
-
-</resources>
diff --git a/java/com/android/dialer/voicemail/listui/res/values/strings.xml b/java/com/android/dialer/voicemail/listui/res/values/strings.xml
index bfa81f7..ebd84b4 100644
--- a/java/com/android/dialer/voicemail/listui/res/values/strings.xml
+++ b/java/com/android/dialer/voicemail/listui/res/values/strings.xml
@@ -15,55 +15,9 @@
  ~ limitations under the License
  -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <!--
-    A string to describe available action for accessibility user. It will be read as "call number".
-  -->
-  <string name="a11y_voicemail_entry_call">Call number</string>
-
-  <!--
-    A string to describe available action for accessibility user. It will be read as "delete".
-  -->
-  <string name="a11y_voicemail_entry_delete">Delete</string>
-
-  <!--
-    A string to describe available action for accessibility user.
-    It will be read as "expand menu for this voicemail entry".
-  -->
-  <string name="a11y_voicemail_entry_expand_menu">
-    Expand menu for this voicemail entry
-  </string>
-
-  <!-- A string to describe available action for accessibility user. It will be read as "pause". -->
-  <string name="a11y_voicemail_entry_pause">Pause</string>
-
-  <!-- A string to describe available action for accessibility user. It will be read as "play". -->
-  <string name="a11y_voicemail_entry_play">Play</string>
-
-  <!--
-    A string to describe available action for accessibility user. It will be read as "speaker".
-  -->
-  <string name="a11y_voicemail_entry_speaker">Speaker</string>
-
-  <!-- String used to display voicemails from unknown numbers in the voicemail tab.  [CHAR LIMIT=30] -->
-  <string name="voicemail_entry_unknown">Unknown</string>
-
   <!-- Format for duration of voicemails which are displayed when viewing voicemail. For example "01:22" -->
   <string name="voicemailDurationFormat"><xliff:g example="10" id="minutes">%1$02d</xliff:g>:<xliff:g example="20" id="seconds">%2$02d</xliff:g></string>
 
-  <!-- TODO(ubdullah): Confirm string with UX before allowing translation -->
-  <!-- String used to display the state of the voicemail media player -->
-  <string name="voicemail_media_player_state" translatable="false">Loading Voicemail</string>
-
-  <!-- String used to display the default staring point of a voicemail-->
-  <string name="voicemail_media_player_inital_start_position" translatable="false">00:00</string>
-
-  <!-- Header in voicemail tab to group calls from the current day.  [CHAR LIMIT=30] -->
-  <string name="new_voicemail_header_today">Today</string>
-  <!-- Header in voicemail tab to group calls from yesterday.  [CHAR LIMIT=30] -->
-  <string name="new_voicemail_header_yesterday">Yesterday</string>
-  <!-- Header in voicemail tab to group calls from before yesterday.  [CHAR LIMIT=30] -->
-  <string name="new_voicemail_header_older">Older</string>
-
   <string translatable="false" name="verizon_terms_and_conditions_1.1_english">
 Visual Voice Mail (VVM) is a service that provides access to voice mail messages directly on the device, without the need to call *86. This service requires traditional Voice Mail but does not support all traditional Voice Mail features, which you can access by dialing *86 from your handset. Use of this feature will be billed on a per-megabyte basis, or according to any data package you have. Mobile to mobile minutes do not apply. Standard rates apply to any calls, emails or messages initiated from Visual Voice Mail.\n
 \n
@@ -81,12 +35,6 @@
 
   <string translatable="false" name="verizon_terms_and_conditions_accept_english">Turn On</string>
 
-  <!-- Label indicating who provided the voicemail transcription [CHAR LIMIT=64] -->
-  <string name="voicemail_transcription_branding_text">Transcribed by Google</string>
-
-  <!-- Text displayed when the list of voicemails is empty [CHAR LIMIT=NONE] -->
-  <string name="empty_voicemail_tab_text">Your voicemail inbox is empty.</string>
-
   <!-- Text for snackbar to undo a voicemail delete. [CHAR LIMIT=30] -->
   <string name="snackbar_voicemail_deleted">Voicemail deleted</string>
 
diff --git a/java/com/android/dialer/voicemail/listui/res/values/styles.xml b/java/com/android/dialer/voicemail/listui/res/values/styles.xml
index cbc0102..2b6e38e 100644
--- a/java/com/android/dialer/voicemail/listui/res/values/styles.xml
+++ b/java/com/android/dialer/voicemail/listui/res/values/styles.xml
@@ -17,12 +17,6 @@
 
 <resources>
 
-  <style name="voicemail_media_player_buttons">
-    <item name="android:layout_width">@dimen/voicemail_media_player_width</item>
-    <item name="android:layout_height">@dimen/voicemail_media_player_height</item>
-    <item name="android:background">?android:attr/selectableItemBackgroundBorderless</item>
-  </style>
-
   <style name="TosTitleStyle">
     <item name="android:textColor">?android:attr/textColorPrimary</item>
     <item name="android:textSize">20sp</item>
@@ -36,12 +30,4 @@
     <item name="android:lineSpacingExtra">8sp</item>
   </style>
 
-  <style name="TosButtonStyle" parent="Widget.AppCompat.Button.Borderless">
-    <item name="android:gravity">end|center_vertical</item>
-    <item name="android:layout_marginStart">8dp</item>
-    <item name="android:layout_marginEnd">8dp</item>
-    <item name="android:padding">8dp</item>
-    <item name="android:minHeight">48dp</item>
-  </style>
-
 </resources>
diff --git a/java/com/android/dialer/voicemail/settings/AndroidManifest.xml b/java/com/android/dialer/voicemail/settings/AndroidManifest.xml
deleted file mode 100644
index f25858e..0000000
--- a/java/com/android/dialer/voicemail/settings/AndroidManifest.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.dialer.voicemail.settings">
-
-  <application>
-    <!-- Causes the "Voicemail" item under "Calls" setting to be hidden. The voicemail module will
-    be handling the settings. Has no effect before OC where dialer cannot provide voicemail
-    settings -->
-    <meta-data android:name="android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU" android:value="true"/>
-
-    <activity
-        android:exported="false"
-        android:label="@string/voicemail_change_pin_preference_title"
-        android:name="com.android.dialer.voicemail.settings.VoicemailChangePinActivity"
-        android:parentActivityName="com.android.dialer.app.settings.DialerSettingsActivity"
-        android:theme="@style/SettingsStyle"
-        android:windowSoftInputMode="stateVisible|adjustResize">
-    </activity>
-    <activity
-        android:name=".RecordVoicemailGreetingActivity"
-        android:configChanges="orientation|screenSize|keyboardHidden"
-        android:label="@string/voicemail_change_greeting_preference_title"
-        android:parentActivityName="com.android.dialer.app.settings.DialerSettingsActivity"
-        android:theme="@style/SettingsStyle">
-    </activity>
-    <activity
-        android:name=".CurrentVoicemailGreetingActivity"
-        android:label="@string/voicemail_change_greeting_preference_title"
-        android:parentActivityName="com.android.dialer.app.settings.DialerSettingsActivity"
-        android:exported="true">
-    <!-- TODO(a bug): delete android:exported="true" closer to submitting  -->
-    </activity>
-  </application>
-
-</manifest>
diff --git a/java/com/android/dialer/voicemail/settings/CurrentVoicemailGreetingActivity.java b/java/com/android/dialer/voicemail/settings/CurrentVoicemailGreetingActivity.java
index ff7ae97..5a73c03 100644
--- a/java/com/android/dialer/voicemail/settings/CurrentVoicemailGreetingActivity.java
+++ b/java/com/android/dialer/voicemail/settings/CurrentVoicemailGreetingActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,34 +18,35 @@
 package com.android.dialer.voicemail.settings;
 
 import android.Manifest;
-import android.app.Activity;
 import android.content.Intent;
-import android.content.pm.PackageManager;
 import android.media.MediaPlayer;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
 import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.ImageButton;
 import android.widget.TextView;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.widget.DialerToolbar;
+
 import java.io.IOException;
 import java.util.Locale;
 
 /** Activity to display current voicemail greeting and allow user to navigate to record a new one */
-public class CurrentVoicemailGreetingActivity extends Activity {
+public class CurrentVoicemailGreetingActivity extends AppCompatActivity {
   public static final String VOICEMAIL_GREETING_FILEPATH_KEY = "canonVoicemailGreetingFilePathKey";
 
-  private static final int REQUEST_RECORD_AUDIO_PERMISSION = 200;
-
-  private boolean permissionToRecordAccepted = false;
-
-  private ImageButton changeGreetingButton;
-  private ImageButton playButton;
-
-  private DialerToolbar currentVoicemailGreetingDialerToolbar;
+  private final ActivityResultLauncher<String> audioPermissionLauncher = registerForActivityResult(
+          new ActivityResultContracts.RequestPermission(), granted -> {
+            if (!granted) {
+              LogUtil.w(
+                      "CurrentVoicemailGreetingActivity.onRequestPermissionsResult",
+                      "permissionToRecordAccepted = false.");
+            }
+          });
 
   private int greetingDuration = -1;
 
@@ -61,37 +63,18 @@
     setContentView(R.layout.activity_current_voicemail_greeting);
 
     playbackDisplay = findViewById(R.id.current_voicemail_greeting_recording_display);
-    playbackProgressLabel = (TextView) findViewById(R.id.playback_progress_text_view);
-    currentVoicemailGreetingDialerToolbar = (DialerToolbar) findViewById(R.id.toolbar);
+    playbackProgressLabel = findViewById(R.id.playback_progress_text_view);
+    DialerToolbar currentVoicemailGreetingDialerToolbar = findViewById(R.id.toolbar);
 
     currentVoicemailGreetingDialerToolbar.setTitle(
         R.string.voicemail_change_greeting_preference_title);
 
-    changeGreetingButton = (ImageButton) findViewById(R.id.change_greeting_button);
-    changeGreetingButton.setOnClickListener(
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            // TODO(sabowitz): Implement this in CL child beta01.
-          }
-        });
-
-    playButton = (ImageButton) findViewById(R.id.play_button);
-    playButton.setOnClickListener(
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            // TODO(sabowitz): Finish implementing this in CL child beta02.
-          }
-        });
-
     displayCurrentVoicemailGreetingStatus();
   }
 
   @Override
   public void onStart() {
-    ActivityCompat.requestPermissions(
-        this, new String[] {Manifest.permission.RECORD_AUDIO}, REQUEST_RECORD_AUDIO_PERMISSION);
+    audioPermissionLauncher.launch(Manifest.permission.RECORD_AUDIO);
 
     if (isGreetingRecorded()) {
       mediaPlayer = new MediaPlayer();
@@ -116,22 +99,6 @@
     super.onPause();
   }
 
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
-    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
-
-    if (requestCode == REQUEST_RECORD_AUDIO_PERMISSION) {
-      permissionToRecordAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
-    }
-    if (!permissionToRecordAccepted) {
-      LogUtil.w(
-          "CurrentVoicemailGreetingActivity.onRequestPermissionsResult",
-          "permissionToRecordAccepted = false.");
-      // TODO(sabowitz): Implement error dialog logic in a child CL.
-    }
-  }
-
   private boolean isGreetingRecorded() {
     Intent intent = getIntent();
     if (intent.hasExtra(VOICEMAIL_GREETING_FILEPATH_KEY)) {
diff --git a/java/com/android/dialer/voicemail/settings/RecordButton.java b/java/com/android/dialer/voicemail/settings/RecordButton.java
index ac64cde..6409dd4 100644
--- a/java/com/android/dialer/voicemail/settings/RecordButton.java
+++ b/java/com/android/dialer/voicemail/settings/RecordButton.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -24,13 +25,16 @@
 import android.graphics.RectF;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.LayerDrawable;
-import android.support.v4.content.ContextCompat;
 import android.util.AttributeSet;
-import android.widget.Button;
+
+import androidx.appcompat.widget.AppCompatButton;
+import androidx.core.content.ContextCompat;
+
+import com.android.dialer.R;
 import com.android.dialer.voicemail.settings.RecordVoicemailGreetingActivity.ButtonState;
 
 /** Custom Button View for Dialer voicemail greeting recording */
-public class RecordButton extends Button {
+public class RecordButton extends AppCompatButton {
 
   private final float trackWidth = getResources().getDimensionPixelSize(R.dimen.track_width);
   private final int centerIconRadius =
diff --git a/java/com/android/dialer/voicemail/settings/RecordVoicemailGreetingActivity.java b/java/com/android/dialer/voicemail/settings/RecordVoicemailGreetingActivity.java
index 89e45dc..f2a7ce7 100644
--- a/java/com/android/dialer/voicemail/settings/RecordVoicemailGreetingActivity.java
+++ b/java/com/android/dialer/voicemail/settings/RecordVoicemailGreetingActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,17 +17,21 @@
 
 package com.android.dialer.voicemail.settings;
 
-import android.app.Activity;
 import android.os.Bundle;
-import android.support.annotation.IntDef;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
+
+import androidx.annotation.IntDef;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.android.dialer.R;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
 /** Activity for recording a new voicemail greeting */
-public class RecordVoicemailGreetingActivity extends Activity implements OnClickListener {
+public class RecordVoicemailGreetingActivity extends AppCompatActivity implements OnClickListener {
 
   /** Possible states of RecordButton and RecordVoicemailGreetingActivity */
   @Retention(RetentionPolicy.SOURCE)
diff --git a/java/com/android/dialer/voicemail/settings/VoicemailChangePinActivity.java b/java/com/android/dialer/voicemail/settings/VoicemailChangePinActivity.java
index ebebdf7..67caa41 100644
--- a/java/com/android/dialer/voicemail/settings/VoicemailChangePinActivity.java
+++ b/java/com/android/dialer/voicemail/settings/VoicemailChangePinActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,18 +17,14 @@
 
 package com.android.dialer.voicemail.settings;
 
-import android.annotation.TargetApi;
-import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.ProgressDialog;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.DialogInterface.OnDismissListener;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Looper;
 import android.os.Message;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.text.Editable;
 import android.text.InputFilter;
@@ -44,17 +41,21 @@
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
 import android.widget.Toast;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.voicemail.PinChanger;
 import com.android.voicemail.PinChanger.ChangePinResult;
 import com.android.voicemail.PinChanger.PinSpecification;
 import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.VoicemailComponent;
+
 import java.lang.ref.WeakReference;
 
 /**
@@ -62,8 +63,7 @@
  * traditional voicemail through phone call. The intent to launch this activity must contain {@link
  * VoicemailClient#PARAM_PHONE_ACCOUNT_HANDLE}
  */
-@TargetApi(VERSION_CODES.O)
-public class VoicemailChangePinActivity extends Activity
+public class VoicemailChangePinActivity extends AppCompatActivity
     implements OnClickListener, OnEditorActionListener, TextWatcher {
 
   private static final String TAG = "VmChangePinActivity";
@@ -98,7 +98,7 @@
   private Button cancelButton;
   private Button nextButton;
 
-  private Handler handler = new ChangePinHandler(new WeakReference<>(this));
+  private final Handler handler = new ChangePinHandler(new WeakReference<>(this));
 
   private enum State {
     /**
@@ -166,12 +166,7 @@
               .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
           activity.showError(
               activity.getString(R.string.change_pin_system_error),
-              new OnDismissListener() {
-                @Override
-                public void onDismiss(DialogInterface dialog) {
-                  activity.finish();
-                }
-              });
+                  dialog -> activity.finish());
         } else {
           LogUtil.e(TAG, "invalid default old PIN: " + activity.getChangePinResultMessage(result));
           // If the default old PIN is rejected by the server, the PIN is probably changed
@@ -243,7 +238,7 @@
       public void onEnter(VoicemailChangePinActivity activity) {
         activity.headerText.setText(R.string.change_pin_confirm_pin_header);
         activity.hintText.setText(null);
-        activity.nextButton.setText(R.string.change_pin_ok_label);
+        activity.nextButton.setText(android.R.string.ok);
       }
 
       @Override
@@ -270,7 +265,6 @@
           activity.pinChanger.setScrambledPin(null);
 
           activity.finish();
-          Logger.get(activity).logImpression(DialerImpression.Type.VVM_CHANGE_PIN_COMPLETED);
           Toast.makeText(
                   activity, activity.getString(R.string.change_pin_succeeded), Toast.LENGTH_SHORT)
               .show();
@@ -327,7 +321,8 @@
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
 
-    phoneAccountHandle = getIntent().getParcelableExtra(VoicemailClient.PARAM_PHONE_ACCOUNT_HANDLE);
+    phoneAccountHandle = getIntent().getParcelableExtra(VoicemailClient.PARAM_PHONE_ACCOUNT_HANDLE,
+            PhoneAccountHandle.class);
     pinChanger =
         VoicemailComponent.get(this)
             .getVoicemailClient()
@@ -358,7 +353,7 @@
     changePinExecutor =
         DialerExecutorComponent.get(this)
             .dialerExecutorFactory()
-            .createUiTaskBuilder(getFragmentManager(), "changePin", new ChangePinWorker())
+            .createUiTaskBuilder(getSupportFragmentManager(), "changePin", new ChangePinWorker())
             .onSuccess(this::sendResult)
             .onFailure((tr) -> sendResult(PinChanger.CHANGE_PIN_SYSTEM_ERROR))
             .build();
@@ -567,6 +562,7 @@
     private final WeakReference<VoicemailChangePinActivity> activityWeakReference;
 
     private ChangePinHandler(WeakReference<VoicemailChangePinActivity> activityWeakReference) {
+      super(Looper.getMainLooper());
       this.activityWeakReference = activityWeakReference;
     }
 
diff --git a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
index 1eb831f..a0cfc82 100644
--- a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
+++ b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
@@ -1,85 +1,77 @@
-/**
+/*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
- * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
- * <p>http://www.apache.org/licenses/LICENSE-2.0
+ *      http://www.apache.org/licenses/LICENSE-2.0
  *
- * <p>Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing permissions and
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
  * limitations under the License
  */
+
 package com.android.dialer.voicemail.settings;
 
-import android.annotation.TargetApi;
 import android.app.AlertDialog;
-import android.content.DialogInterface;
 import android.content.Intent;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceClickListener;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
-import android.preference.SwitchPreference;
 import android.provider.Settings;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.SubscriptionInfo;
 import android.telephony.TelephonyManager;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreferenceCompat;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.preference.SwitchPreferenceWithClickableSummary;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.notification.NotificationChannelManager;
-import com.android.dialer.spannable.ContentWithLearnMoreSpanner;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.VoicemailClient.ActivationStateListener;
 import com.android.voicemail.VoicemailComponent;
-import com.google.common.base.Optional;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.util.Optional;
 
 /**
  * Fragment for voicemail settings. Requires {@link VoicemailClient#PARAM_PHONE_ACCOUNT_HANDLE} set
  * in arguments.
  */
-@TargetApi(VERSION_CODES.O)
-public class VoicemailSettingsFragment extends PreferenceFragment
+public class VoicemailSettingsFragment extends PreferenceFragmentCompat
     implements Preference.OnPreferenceChangeListener, ActivationStateListener {
 
   // Extras copied from com.android.phone.settings.VoicemailSettingsActivity,
   // it does not recognize EXTRA_PHONE_ACCOUNT_HANDLE in O.
-  @VisibleForTesting
-  static final String SUB_ID_EXTRA =
+  private static final String SUB_ID_EXTRA =
       "com.android.phone.settings.SubscriptionInfoHelper.SubscriptionId";
   // Extra on intent containing the label of a subscription.
-  @VisibleForTesting
-  static final String SUB_LABEL_EXTRA =
+  private static final String SUB_LABEL_EXTRA =
       "com.android.phone.settings.SubscriptionInfoHelper.SubscriptionLabel";
 
   private static final String TAG = "VmSettingsActivity";
-  @Nullable private PhoneAccountHandle phoneAccountHandle;
+  @Nullable
+  private PhoneAccountHandle phoneAccountHandle;
   private VoicemailClient voicemailClient;
   // Settings that are independent of the carrier configurations
   private Preference voicemailNotificationPreference;
-  private Preference changeGreetingPreference;
   private PreferenceScreen advancedSettingsPreference;
   // Settings that are supported by dialer only if the carrier configurations are valid.
-  private SwitchPreference visualVoicemailPreference;
-  private SwitchPreference voicemailAutoArchivePreference;
-  private SwitchPreferenceWithClickableSummary transcribeVoicemailPreference;
-  // Voicemail transcription analysis toggle
-  private SwitchPreferenceWithClickableSummary donateTranscribedVoicemailPreference;
+  private SwitchPreferenceCompat visualVoicemailPreference;
+  private SwitchPreferenceCompat voicemailAutoArchivePreference;
   private Preference voicemailChangePinPreference;
 
   @Override
@@ -91,9 +83,13 @@
   }
 
   @Override
+  public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
+
+  }
+
+  @Override
   public void onResume() {
     super.onResume();
-    Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_SETTINGS_VIEWED);
     voicemailClient.addActivationStateListener(this);
     PreferenceScreen preferenceScreen = getPreferenceScreen();
     if (preferenceScreen != null) {
@@ -107,7 +103,6 @@
     setupVisualVoicemailPreferences();
 
     setupNotificationsPreference();
-    setupChangeGreetingPreference();
     setupAdvancedSettingsPreference();
   }
 
@@ -127,84 +122,10 @@
   private void setupVisualVoicemailFeaturePreferences() {
     if (!voicemailClient.isVoicemailEnabled(getContext(), phoneAccountHandle)
         || !voicemailClient.isActivated(getContext(), phoneAccountHandle)) {
-      removeAllTranscriptionPreferences();
       getPreferenceScreen().removePreference(voicemailAutoArchivePreference);
       return;
     }
     setupAutoArchivePreference();
-    updateTranscriptionPreferences();
-  }
-
-  private void updateTranscriptionPreferences() {
-    if (!VoicemailComponent.get(getContext())
-        .getVoicemailClient()
-        .isVoicemailTranscriptionAvailable(getContext(), phoneAccountHandle)) {
-      removeAllTranscriptionPreferences();
-      return;
-    } else {
-      showTranscriptionEnabledPreference();
-      updateTranscriptionDonationPreference();
-    }
-  }
-
-  private void showTranscriptionEnabledPreference() {
-    transcribeVoicemailPreference.setOnPreferenceChangeListener(this);
-    transcribeVoicemailPreference.setChecked(
-        voicemailClient.isVoicemailTranscriptionEnabled(getContext(), phoneAccountHandle));
-    transcribeVoicemailPreference.setSummary(getVoicemailTranscriptionInformationalText());
-    transcribeVoicemailPreference.setEnabled(true);
-    getPreferenceScreen().addPreference(transcribeVoicemailPreference);
-  }
-
-  /**
-   * Builds a spannable string containing the voicemail transcription informational text containing
-   * the appropriate "Learn More" urls.
-   *
-   * @return The voicemail transcription information text.
-   */
-  private CharSequence getVoicemailTranscriptionInformationalText() {
-    return new ContentWithLearnMoreSpanner(getContext())
-        .create(
-            getContext().getString(R.string.voicemail_transcription_preference_summary_info),
-            getContext().getString(R.string.transcription_learn_more_url));
-  }
-
-  private void updateTranscriptionDonationPreference() {
-    if (!VoicemailComponent.get(getContext())
-        .getVoicemailClient()
-        .isVoicemailDonationAvailable(getContext(), phoneAccountHandle)) {
-      getPreferenceScreen().removePreference(donateTranscribedVoicemailPreference);
-    } else {
-      showTranscriptionDonationEnabledPreferences();
-    }
-  }
-
-  private void showTranscriptionDonationEnabledPreferences() {
-    donateTranscribedVoicemailPreference.setEnabled(true);
-    donateTranscribedVoicemailPreference.setChecked(
-        voicemailClient.isVoicemailDonationEnabled(getContext(), phoneAccountHandle));
-    donateTranscribedVoicemailPreference.setOnPreferenceChangeListener(this);
-    donateTranscribedVoicemailPreference.setSummary(
-        getVoicemailTranscriptionDonationInformationalText());
-    getPreferenceScreen().addPreference(donateTranscribedVoicemailPreference);
-  }
-
-  /**
-   * Builds a spannable string containing the voicemail donation informational text containing the
-   * appropriate "Learn More" urls.
-   *
-   * @return The voicemail donation information text.
-   */
-  private CharSequence getVoicemailTranscriptionDonationInformationalText() {
-    return new ContentWithLearnMoreSpanner(getContext())
-        .create(
-            getContext().getString(R.string.voicemail_donate_preference_summary_info),
-            getContext().getString(R.string.donation_learn_more_url));
-  }
-
-  private void removeAllTranscriptionPreferences() {
-    getPreferenceScreen().removePreference(transcribeVoicemailPreference);
-    getPreferenceScreen().removePreference(donateTranscribedVoicemailPreference);
   }
 
   private void setupAutoArchivePreference() {
@@ -232,33 +153,19 @@
         findPreference(getString(R.string.voicemail_notifications_key));
     voicemailNotificationPreference.setOrder(VMSettingOrdering.NOTIFICATIONS);
 
-    changeGreetingPreference = findPreference(getString(R.string.voicemail_change_greeting_key));
-    changeGreetingPreference.setOrder(VMSettingOrdering.CHANGE_GREETING);
-
     advancedSettingsPreference =
         (PreferenceScreen) findPreference(getString(R.string.voicemail_advanced_settings_key));
     advancedSettingsPreference.setOrder(VMSettingOrdering.ADVANCED_SETTING);
 
     visualVoicemailPreference =
-        (SwitchPreference) findPreference(getString(R.string.voicemail_visual_voicemail_key));
+        (SwitchPreferenceCompat) findPreference(getString(R.string.voicemail_visual_voicemail_key));
     visualVoicemailPreference.setOrder(VMSettingOrdering.VISUAL_VOICEMAIL);
 
     voicemailAutoArchivePreference =
-        (SwitchPreference)
+        (SwitchPreferenceCompat)
             findPreference(getString(R.string.voicemail_visual_voicemail_archive_key));
     voicemailAutoArchivePreference.setOrder(VMSettingOrdering.VOICEMAIL_AUTO_ARCHIVE);
 
-    transcribeVoicemailPreference =
-        (SwitchPreferenceWithClickableSummary)
-            findPreference(getString(R.string.voicemail_visual_voicemail_transcription_key));
-    transcribeVoicemailPreference.setOrder(VMSettingOrdering.VOICEMAIL_TRANSCRIPTION);
-
-    donateTranscribedVoicemailPreference =
-        (SwitchPreferenceWithClickableSummary)
-            findPreference(getString(R.string.voicemail_visual_voicemail_donation_key));
-    donateTranscribedVoicemailPreference.setOrder(
-        VMSettingOrdering.VOICEMAIL_TRANSCRIPTION_DONATION);
-
     voicemailChangePinPreference = findPreference(getString(R.string.voicemail_change_pin_key));
     voicemailChangePinPreference.setOrder(VMSettingOrdering.VOICEMAIL_CHANGE_PIN);
   }
@@ -268,8 +175,6 @@
     PreferenceScreen prefSet = getPreferenceScreen();
     prefSet.removePreference(visualVoicemailPreference);
     prefSet.removePreference(voicemailAutoArchivePreference);
-    prefSet.removePreference(transcribeVoicemailPreference);
-    prefSet.removePreference(donateTranscribedVoicemailPreference);
     prefSet.removePreference(voicemailChangePinPreference);
   }
 
@@ -278,15 +183,6 @@
     changePinIntent.putExtra(VoicemailClient.PARAM_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
 
     voicemailChangePinPreference.setIntent(changePinIntent);
-    voicemailChangePinPreference.setOnPreferenceClickListener(
-        new OnPreferenceClickListener() {
-          @Override
-          public boolean onPreferenceClick(Preference preference) {
-            Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_CHANGE_PIN_CLICKED);
-            // Let the preference handle the click.
-            return false;
-          }
-        });
     if (VoicemailChangePinActivity.isPinScrambled(getContext(), phoneAccountHandle)) {
       voicemailChangePinPreference.setTitle(R.string.voicemail_set_pin_preference_title);
     } else {
@@ -297,29 +193,6 @@
 
   private void setupNotificationsPreference() {
     voicemailNotificationPreference.setIntent(getNotificationSettingsIntent());
-
-    voicemailNotificationPreference.setOnPreferenceClickListener(
-        new OnPreferenceClickListener() {
-          @Override
-          public boolean onPreferenceClick(Preference preference) {
-            Logger.get(getContext())
-                .logImpression(DialerImpression.Type.VVM_NOTIFICATIONS_SETTING_CLICKED);
-            // Let the preference handle the click.
-            return false;
-          }
-        });
-  }
-
-  private void setupChangeGreetingPreference() {
-    if (!ConfigProviderComponent.get(getContext())
-        .getConfigProvider()
-        .getBoolean("voicemail_change_greeting_enabled", false)) {
-      getPreferenceScreen().removePreference(changeGreetingPreference);
-      return;
-    }
-
-    Intent changeGreetingIntent = new Intent(getContext(), CurrentVoicemailGreetingActivity.class);
-    changeGreetingPreference.setIntent(changeGreetingIntent);
   }
 
   private void setupAdvancedSettingsPreference() {
@@ -341,17 +214,6 @@
     }
 
     advancedSettingsPreference.setIntent(advancedSettingsIntent);
-
-    advancedSettingsPreference.setOnPreferenceClickListener(
-        new OnPreferenceClickListener() {
-          @Override
-          public boolean onPreferenceClick(Preference preference) {
-            Logger.get(getContext())
-                .logImpression(DialerImpression.Type.VVM_ADVANCED_SETINGS_CLICKED);
-            // Let the preference handle the click.
-            return false;
-          }
-        });
   }
 
   @Override
@@ -379,18 +241,8 @@
         updateVoicemailEnabled(true);
       }
     } else if (preference.getKey().equals(voicemailAutoArchivePreference.getKey())) {
-      logArchiveToggle((boolean) objValue);
       voicemailClient.setVoicemailArchiveEnabled(
           getContext(), phoneAccountHandle, (boolean) objValue);
-    } else if (preference.getKey().equals(transcribeVoicemailPreference.getKey())) {
-      logTranscribeToggle((boolean) objValue);
-      voicemailClient.setVoicemailTranscriptionEnabled(
-          getContext(), phoneAccountHandle, (boolean) objValue);
-      updateTranscriptionDonationPreference();
-    } else if (preference.getKey().equals(donateTranscribedVoicemailPreference.getKey())) {
-      logDonationToggle((boolean) objValue);
-      voicemailClient.setVoicemailDonationEnabled(
-          getContext(), phoneAccountHandle, (boolean) objValue);
     }
 
     // Let the preference setting proceed.
@@ -401,13 +253,7 @@
     voicemailClient.setVoicemailEnabled(getContext(), phoneAccountHandle, isEnabled);
     visualVoicemailPreference.setChecked(isEnabled);
 
-    if (isEnabled) {
-      Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_USER_ENABLED_IN_SETTINGS);
-    } else {
-      Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_USER_DISABLED_IN_SETTINGS);
-    }
     updateVoicemailSummaryMessage();
-    updateTranscriptionPreferences();
     updateChangePinPreference();
   }
 
@@ -426,41 +272,10 @@
     }
   }
 
-  private void logArchiveToggle(boolean userTurnedOn) {
-    if (userTurnedOn) {
-      Logger.get(getContext())
-          .logImpression(DialerImpression.Type.VVM_USER_TURNED_ARCHIVE_ON_FROM_SETTINGS);
-    } else {
-      Logger.get(getContext())
-          .logImpression(DialerImpression.Type.VVM_USER_TURNED_ARCHIVE_OFF_FROM_SETTINGS);
-    }
-  }
-
-  private void logTranscribeToggle(boolean userTurnedOn) {
-    if (userTurnedOn) {
-      Logger.get(getContext())
-          .logImpression(DialerImpression.Type.VVM_USER_TURNED_TRANSCRIBE_ON_FROM_SETTINGS);
-    } else {
-      Logger.get(getContext())
-          .logImpression(DialerImpression.Type.VVM_USER_TURNED_TRANSCRIBE_OFF_FROM_SETTINGS);
-    }
-  }
-
-  private void logDonationToggle(boolean userTurnedOn) {
-    if (userTurnedOn) {
-      Logger.get(getContext())
-          .logImpression(DialerImpression.Type.VVM_USER_TURNED_TRANSCRIBE_ON_FROM_SETTINGS);
-    } else {
-      Logger.get(getContext())
-          .logImpression(DialerImpression.Type.VVM_USER_TURNED_TRANSCRIBE_OFF_FROM_SETTINGS);
-    }
-  }
-
   @Override
   public void onActivationStateChanged(PhoneAccountHandle phoneAccountHandle, boolean isActivated) {
     if (this.phoneAccountHandle.equals(phoneAccountHandle)) {
       updateVoicemailSummaryMessage();
-      updateTranscriptionPreferences();
       updateChangePinPreference();
     }
   }
@@ -491,26 +306,16 @@
     AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
     builder.setTitle(R.string.confirm_disable_voicemail_dialog_title);
     builder.setMessage(R.string.confirm_disable_voicemail_dialog_message);
-    builder.setPositiveButton(
-        R.string.confirm_disable_voicemail_accept_dialog_label,
-        new DialogInterface.OnClickListener() {
-          @Override
-          public void onClick(DialogInterface dialog, int which) {
-            LogUtil.i(TAG, "showDisableConfirmationDialog, confirmed");
-            updateVoicemailEnabled(false);
-            dialog.dismiss();
-          }
-        });
-
-    builder.setNegativeButton(
-        android.R.string.cancel,
-        new DialogInterface.OnClickListener() {
-          @Override
-          public void onClick(DialogInterface dialog, int which) {
-            LogUtil.i(TAG, "showDisableConfirmationDialog, cancelled");
-            dialog.dismiss();
-          }
-        });
+    builder.setPositiveButton(R.string.confirm_disable_voicemail_accept_dialog_label,
+            (dialog, which) -> {
+      LogUtil.i(TAG, "showDisableConfirmationDialog, confirmed");
+      updateVoicemailEnabled(false);
+      dialog.dismiss();
+    });
+    builder.setNegativeButton(android.R.string.cancel, (dialog, which) -> {
+      LogUtil.i(TAG, "showDisableConfirmationDialog, cancelled");
+      dialog.dismiss();
+    });
 
     builder.setCancelable(true);
     builder.show();
@@ -525,8 +330,7 @@
     VMSettingOrdering.VOICEMAIL_TRANSCRIPTION_DONATION,
     VMSettingOrdering.VOICEMAIL_CHANGE_PIN,
     VMSettingOrdering.VOICEMAIL_AUTO_ARCHIVE,
-    VMSettingOrdering.ADVANCED_SETTING,
-    VMSettingOrdering.CHANGE_GREETING
+    VMSettingOrdering.ADVANCED_SETTING
   })
   private @interface VMSettingOrdering {
     int NOTIFICATIONS = 1;
@@ -536,6 +340,5 @@
     int VOICEMAIL_CHANGE_PIN = 5;
     int VOICEMAIL_AUTO_ARCHIVE = 6;
     int ADVANCED_SETTING = 7;
-    int CHANGE_GREETING = 8;
   }
 }
diff --git a/java/com/android/dialer/voicemail/settings/res/layout/activity_current_voicemail_greeting.xml b/java/com/android/dialer/voicemail/settings/res/layout/activity_current_voicemail_greeting.xml
index 3e90cf7..d67c48e 100644
--- a/java/com/android/dialer/voicemail/settings/res/layout/activity_current_voicemail_greeting.xml
+++ b/java/com/android/dialer/voicemail/settings/res/layout/activity_current_voicemail_greeting.xml
@@ -14,114 +14,109 @@
      limitations under the License.
 -->
 
-<RelativeLayout
+<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:layout_alignParentTop="true"
+    android:layout_centerHorizontal="true"
+    android:orientation="vertical"
     tools:context="com.android.dialer.voicemail.settings.CurrentVoicemailGreetingActivity">
+  <com.android.dialer.widget.DialerToolbar
+      android:id="@+id/toolbar"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:title="@string/voicemail_change_greeting_preference_title">
+  </com.android.dialer.widget.DialerToolbar>
+
+  <View
+      android:layout_width="match_parent"
+      android:layout_height="1dp"
+      android:background="@color/dialer_divider_line_color"
+      />
+
+  <!-- Change Greeting Panel -->
   <LinearLayout
       android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:layout_alignParentTop="true"
-      android:layout_centerHorizontal="true"
-      android:orientation="vertical">
-    <com.android.dialer.widget.DialerToolbar
-        android:id="@+id/toolbar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:title="@string/voicemail_change_greeting_preference_title">
-    </com.android.dialer.widget.DialerToolbar>
+      android:layout_height="72dp"
+      android:layout_marginTop="8dp"
+      android:layout_marginBottom="7dp"
+      android:orientation="horizontal"
+      android:visibility="visible">
 
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="1dp"
-        android:background="@color/dialer_divider_line_color"
-        />
-
-    <!-- Change Greeting Panel -->
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="72dp"
-        android:layout_marginTop="8dp"
-        android:layout_marginBottom="7dp"
-        android:orientation="horizontal"
-        android:visibility="visible">
-
-        <!-- Change Greeting Button -->
-      <ImageButton
-          android:id="@+id/change_greeting_button"
-          style="@android:style/Widget.Material.Light.ImageButton"
-          android:layout_width="40dp"
-          android:layout_height="40dp"
-          android:layout_marginStart="16dp"
-          android:layout_gravity="center_vertical"
-          android:background="?android:attr/colorBackground"
-          android:foregroundGravity="center_vertical"
-          android:scaleType="centerCrop"
-          android:src="@drawable/ic_circles_add_googblue_48dp"/>
-
-      <TextView
-          android:id="@+id/textView"
-          android:layout_width="0dp"
-          android:layout_height="wrap_content"
-          android:layout_weight="1"
-          android:layout_marginStart="17dp"
-          android:layout_gravity="center_vertical"
-          android:text="@string/current_voicemail_greeting_record_instruction"
-          style="@style/Dialer.TextAppearance.Primary"/>
-
-    </LinearLayout>
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="1dp"
-        android:background="@color/dialer_divider_line_color"
-        />
-    <LinearLayout
-        android:id="@+id/current_voicemail_greeting_recording_display"
-        android:layout_width="match_parent"
-        android:layout_height="72dp"
+      <!-- Change Greeting Button -->
+    <ImageButton
+        android:id="@+id/change_greeting_button"
+        style="@android:style/Widget.Material.Light.ImageButton"
+        android:layout_width="40dp"
+        android:layout_height="40dp"
+        android:layout_marginStart="16dp"
+        android:layout_gravity="center_vertical"
         android:background="?android:attr/colorBackground"
-        android:orientation="horizontal">
-        <!-- Play Button -->
-      <ImageButton
-          android:id="@+id/play_button"
-          style="@android:style/Widget.Material.Light.ImageButton"
-          android:layout_width="40dp"
-          android:layout_height="40dp"
-          android:layout_marginStart="16dp"
-          android:layout_gravity="center_vertical"
-          android:adjustViewBounds="false"
-          android:background="?android:attr/colorBackground"
-          android:cropToPadding="false"
-          android:scaleType="centerCrop"
-          android:src="@drawable/ic_play_circle_filled_googblue_48dp"/>
+        android:foregroundGravity="center_vertical"
+        android:scaleType="centerCrop"
+        android:src="@drawable/ic_circles_add_googblue_48dp"/>
 
-      <LinearLayout
-          android:layout_width="232dp"
-          android:layout_height="wrap_content"
-          android:layout_weight="1"
-          android:layout_marginStart="16dp"
-          android:layout_gravity="center_vertical"
-          android:orientation="vertical">
-        <TextView
-            android:id="@+id/current_voicemail_greeting_recording_title_textview"
-            style="@style/Dialer.TextAppearance.Primary"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:text="@string/current_voicemail_greeting_recording_title"/>
-        <TextView
-            android:id="@+id/playback_progress_text_view"
-            style="@style/Dialer.TextAppearance.Secondary"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
-      </LinearLayout>
-    </LinearLayout>
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="1dp"
-        android:background="@color/dialer_divider_line_color"
-        />
+    <TextView
+        android:id="@+id/textView"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:layout_marginStart="17dp"
+        android:layout_gravity="center_vertical"
+        android:text="@string/current_voicemail_greeting_record_instruction"
+        style="@style/Dialer.TextAppearance.Primary"/>
+
   </LinearLayout>
-</RelativeLayout>
+  <View
+      android:layout_width="match_parent"
+      android:layout_height="1dp"
+      android:background="@color/dialer_divider_line_color"
+      />
+  <LinearLayout
+      android:id="@+id/current_voicemail_greeting_recording_display"
+      android:layout_width="match_parent"
+      android:layout_height="72dp"
+      android:background="?android:attr/colorBackground"
+      android:orientation="horizontal">
+      <!-- Play Button -->
+    <ImageButton
+        android:id="@+id/play_button"
+        style="@android:style/Widget.Material.Light.ImageButton"
+        android:layout_width="40dp"
+        android:layout_height="40dp"
+        android:layout_marginStart="16dp"
+        android:layout_gravity="center_vertical"
+        android:adjustViewBounds="false"
+        android:background="?android:attr/colorBackground"
+        android:cropToPadding="false"
+        android:scaleType="centerCrop"
+        android:src="@drawable/ic_play_circle_filled_googblue_48dp"/>
+
+    <LinearLayout
+        android:layout_width="232dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:layout_marginStart="16dp"
+        android:layout_gravity="center_vertical"
+        android:orientation="vertical">
+      <TextView
+          android:id="@+id/current_voicemail_greeting_recording_title_textview"
+          style="@style/Dialer.TextAppearance.Primary"
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:text="@string/current_voicemail_greeting_recording_title"/>
+      <TextView
+          android:id="@+id/playback_progress_text_view"
+          style="@style/Dialer.TextAppearance.Secondary"
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"/>
+    </LinearLayout>
+  </LinearLayout>
+  <View
+      android:layout_width="match_parent"
+      android:layout_height="1dp"
+      android:background="@color/dialer_divider_line_color"
+      />
+</LinearLayout>
diff --git a/java/com/android/dialer/voicemail/settings/res/layout/voicemail_change_pin.xml b/java/com/android/dialer/voicemail/settings/res/layout/voicemail_change_pin.xml
index 304bd37..9ca6708 100644
--- a/java/com/android/dialer/voicemail/settings/res/layout/voicemail_change_pin.xml
+++ b/java/com/android/dialer/voicemail/settings/res/layout/voicemail_change_pin.xml
@@ -80,7 +80,7 @@
       android:layout_width="0dp"
       android:layout_weight="1"
       android:layout_height="wrap_content"
-      android:text="@string/change_pin_cancel_label"/>
+      android:text="@android:string/cancel"/>
 
     <!-- right : continue -->
     <Button
diff --git a/java/com/android/dialer/voicemail/settings/res/values-af/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-af/strings.xml
index b512564..c430691 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-af/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-af/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Stemboodskap (%s)</string>
   <string name="voicemail_settings_title">Stemboodskap</string>
   <string name="voicemail_notifications_preference_title">Kennisgewings</string>
   <string name="voicemail_change_greeting_preference_title">Stemboodskapgroet</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Verander PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Visuele stemboodskap moet geaktiveer wees om PIN te verander</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visuele stemboodskap is nog nie geaktiveer nie, probeer asseblief later weer</string>
-  <string name="vm_change_pin_old_pin">Ou PIN</string>
-  <string name="vm_change_pin_new_pin">Nuwe PIN</string>
   <string name="vm_change_pin_progress_message">Wag asseblief.</string>
   <string name="vm_change_pin_error_too_short">Die nuwe PIN is te kort.</string>
   <string name="vm_change_pin_error_too_long">Die nuwe PIN is te lank.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Kan nie PIN verander nie</string>
   <string name="change_pin_title">Verander stemboodskap-PIN</string>
   <string name="change_pin_continue_label">Gaan voort</string>
-  <string name="change_pin_cancel_label">Kanselleer</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Bevestig jou ou PIN</string>
   <string name="change_pin_enter_old_pin_hint">Voer jou stemboodskap-PIN in om voort te gaan.</string>
   <string name="change_pin_enter_new_pin_header">Stel \'n nuwe PIN op</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN\'s stem nie ooreen nie</string>
   <string name="change_pin_succeeded">Stemboodskap-PIN is opgedateer</string>
   <string name="change_pin_system_error">Kan nie PIN stel nie</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Stemboodskaptranskripsie</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Ontleding van stemboodskaptranskripsie</string>
   <string name="voicemail_activating_summary_info">Aktiveer tans stemboodskap</string>
-  <string name="voicemail_transcription_preference_summary_info">Kry transkripsies van jou stemboodskap deur Google se transkripsiediens te gebruik. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Laat Google jou stemboodskapboodskappe hersien om transkripsiegehalte te verbeter. Jou stemboodskapboodskappe word anoniem geberg. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Skakel visuele stemboodskap af</string>
   <string name="confirm_disable_voicemail_dialog_message">Dit sal enige stemboodskap en Google-transkripsies wat in hierdie program geberg is, uitvee. Jou diensverskaffer kan dalk sy eie kopieë hou.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">SKAKEL AF</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-am/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-am/strings.xml
index e89c1da..1d63f79 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-am/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-am/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">የድምፅ መልዕክት (%s)</string>
   <string name="voicemail_settings_title">የድምፅ መልዕክት</string>
   <string name="voicemail_notifications_preference_title">ማሳወቂያዎች</string>
   <string name="voicemail_change_greeting_preference_title">የድምጽ መልዕክት ሰላምታ</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">ፒን ቀይር</string>
   <string name="voicemail_change_pin_preference_summary_disable">ፒን ለመቀየር እይታዊ የድምጽ መልዕክት መንቃት አለበት</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">እይታዊ የድምጽ መልዕክት ገና ገቢር አልሆነም፣ እባክዎ ቆይተው እንደገና ይሞክሩ</string>
-  <string name="vm_change_pin_old_pin">የቀድሞ ፒን</string>
-  <string name="vm_change_pin_new_pin">አዲስ ፒን</string>
   <string name="vm_change_pin_progress_message">እባክዎ ይጠብቁ።</string>
   <string name="vm_change_pin_error_too_short">አዲሱ ፒን በጣም አጭር ነው።</string>
   <string name="vm_change_pin_error_too_long">አዲሱ ፒን በጣም ረጅም ነው።</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">ፒን መቀየር አልተቻለም</string>
   <string name="change_pin_title">የድምፅ መልዕክት ፒን ለውጥ</string>
   <string name="change_pin_continue_label">ቀጥል</string>
-  <string name="change_pin_cancel_label">ይቅር</string>
-  <string name="change_pin_ok_label">እሺ</string>
   <string name="change_pin_enter_old_pin_header">የቀድሞውን ፒንዎን ያረጋግጡ</string>
   <string name="change_pin_enter_old_pin_hint">ለመቀጠል የድምፅ መልዕክት ፒንዎን ያስገቡ።</string>
   <string name="change_pin_enter_new_pin_header">አዲስ ፒን ያዘጋጁ</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">ፒኖች አይዛመዱም</string>
   <string name="change_pin_succeeded">የድምፅ መልዕክት ፒን ዘምኗል</string>
   <string name="change_pin_system_error">ፒን ማዘጋጀት አልተቻለም</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">የድምጽ መልዕክትን ወደ ጽሁፍ ግልበጣ</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">የድምጽ መልዕክት ወደ ጽሁፍ መገልበጥ ትንታኔ</string>
   <string name="voicemail_activating_summary_info">የድምጽ መልዕክትን ማግበር</string>
-  <string name="voicemail_transcription_preference_summary_info">የGoogleን ወደ ጽሁፍ የመገልበጥ አገልግሎት በመጠቀም የድምጽ መልዕክትዎን የጽሁፍ ግልባጭ ያግኙ። %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">ወደ ጽሁፍ የመገልበጥን ትክክለኛነት ለማሻሻል የድምጽ መልዕክትዎን Google እንዲገመግመው ያድርጉ። የድምጽ መልዕክት መልዕክቶችዎ  በማይታወቅ መልኩ ይቀመጣሉ። %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">ዕይታዊ የድምጽ መልዕክትን አጥፋ</string>
   <string name="confirm_disable_voicemail_dialog_message">ይህ ማንኛውንም የድምጽ መልዕክት እና በዚህ መተግበሪያ ውስጥ የተቀመጡ የGoogle ወደ ጽሁፍ ግልባጮችን ይሰርዛል። አገልግሎት አቅራቢዎ የራሱን ቅጅ ሊያቆይ ይችላል።</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">አጥፋ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ar/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ar/strings.xml
index b1a980f..058f262 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ar/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ar/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">البريد الصوتي (%s)</string>
   <string name="voicemail_settings_title">بريد صوتي</string>
   <string name="voicemail_notifications_preference_title">الإشعارات</string>
   <string name="voicemail_change_greeting_preference_title">رسالة ترحيب البريد الصوتي</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">تغيير رقم التعريف الشخصي</string>
   <string name="voicemail_change_pin_preference_summary_disable">ينبغي تشغيل البريد الصوتي المرئي لتغيير رقم التعريف الشخصي</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">لم يتم تفعيل البريد الصوتي المرئي بعد، يُرجى المحاولة مرة أخرى لاحقًا</string>
-  <string name="vm_change_pin_old_pin">رقم التعريف الشخصي القديم</string>
-  <string name="vm_change_pin_new_pin">رقم التعريف الشخصي الجديد</string>
   <string name="vm_change_pin_progress_message">يُرجى الانتظار.</string>
   <string name="vm_change_pin_error_too_short">رقم التعريف الشخصي الجديد قصير جدًا.</string>
   <string name="vm_change_pin_error_too_long">رقم التعريف الشخصي الجديد طويل جدًا.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">يتعذّر تغيير رقم التعريف الشخصي</string>
   <string name="change_pin_title">تغيير رقم التعريف الشخصي للبريد الصوتي</string>
   <string name="change_pin_continue_label">متابعة</string>
-  <string name="change_pin_cancel_label">إلغاء</string>
-  <string name="change_pin_ok_label">موافق</string>
   <string name="change_pin_enter_old_pin_header">تأكيد رقم التعريف الشخصي القديم</string>
   <string name="change_pin_enter_old_pin_hint">أدخل رقم التعريف الشخصي لبريدك الصوتي للمتابعة.</string>
   <string name="change_pin_enter_new_pin_header">تعيين رقم تعريف شخصي جديد</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">أرقام التعريف الشخصي غير متطابقة</string>
   <string name="change_pin_succeeded">تمّ تحديث رقم التعريف الشخصي للبريد الصوتي</string>
   <string name="change_pin_system_error">يتعذر تعيين رقم التعريف الشخصي</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">تحويل رسائل البريد الصوتي إلى نصوص</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">تحليل نص التسجيل الصوتي للبريد الصوتي</string>
   <string name="voicemail_activating_summary_info">تفعيل البريد الصوتي</string>
-  <string name="voicemail_transcription_preference_summary_info">‏حوّل بريدك الصوتي إلى نصوص باستخدام خدمة تحويل الصوت إلى نص من Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">‏اسمح لخدمة Google بمراجعة رسائل بريدك الصوتي لتحسين دقة تحويل الصوت إلى نص. يتم تخزين رسائل بريدك الصوتي بدون تحديد هويتك. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">إيقاف البريد الصوتي المرئي</string>
   <string name="confirm_disable_voicemail_dialog_message">‏سيؤدي هذا إلى حذف أي بريد صوتي وأي نصوص رسائل صوتية على Google مخزّنة داخل هذا التطبيق. قد يحتفظ مشغل شبكة الجوال بنسخة لديه.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">إيقاف</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-az/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-az/strings.xml
index f459add..86d922e 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-az/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-az/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Səsli e-poçt (%s)</string>
   <string name="voicemail_settings_title">Səsli e-poçt</string>
   <string name="voicemail_notifications_preference_title">Bildirişlər</string>
   <string name="voicemail_change_greeting_preference_title">Səsli e-poçt salamlaması</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN-i dəyişin</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN-i dəyişmək üçün görünən səsli e-poçt aktiv olmalıdır</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Görünən səsli e-poçt hələ aktiv edilməyib, daha sonra yenidən cəhd edin</string>
-  <string name="vm_change_pin_old_pin">Köhnə PIN</string>
-  <string name="vm_change_pin_new_pin">Yeni PIN</string>
   <string name="vm_change_pin_progress_message">Gözləyin.</string>
   <string name="vm_change_pin_error_too_short">Yeni PIN çox qısadır.</string>
   <string name="vm_change_pin_error_too_long">Yeni PIN çox uzundur.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN-i dəyişmək mümkün olmadı</string>
   <string name="change_pin_title">Səsli e-poçtun PIN kodunu dəyişin</string>
   <string name="change_pin_continue_label">Davam edin</string>
-  <string name="change_pin_cancel_label">Ləğv edin</string>
-  <string name="change_pin_ok_label">Ok</string>
   <string name="change_pin_enter_old_pin_header">Köhnə PIN-i təsdiq edin</string>
   <string name="change_pin_enter_old_pin_hint">Davam etmək üçün səsli e-poçtun PIN kodunu daxil edin.</string>
   <string name="change_pin_enter_new_pin_header">Yeni PIN ayarlayın</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-lər üst-üstə düşmür</string>
   <string name="change_pin_succeeded">Səsli e-poçtun PIN-i yeniləndi</string>
   <string name="change_pin_system_error">PIN ayarlamaq olmur</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Səsli e-poçt transkripsiyası</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Səsli e-məktub transkripsiyası təhlili</string>
   <string name="voicemail_activating_summary_info">Səsli e-poçt aktiv edilir</string>
-  <string name="voicemail_transcription_preference_summary_info">Google\'un transkripsiya xidmtindən istifadə edərək səsli e-məktubların transkripsiyasını əldə edin. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Transkripsiya keyfiyyətini təkmilləşdirmək üçün Google\'a səsli e-poçt mesajlarınızı nəzərdən keçirmək icazəsi verin. Səsli e-poçt mesajlarınız anonim olaraq saxlanılacaq. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Görünən səsli e-poçtu deaktiv edin</string>
   <string name="confirm_disable_voicemail_dialog_message">Bununla bu tətbiq daxilində saxlanılan hər hansı səsli e-poçt və Google transkripsiyaları silinəcək. Operator onların nüsxələrini saxlaya bilər.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DEAKTİV EDİN</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-b+sr+Latn/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-b+sr+Latn/strings.xml
index 3b0ac9f..60ff643 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-b+sr+Latn/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Govorna pošta (%s)</string>
   <string name="voicemail_settings_title">Govorna pošta</string>
   <string name="voicemail_notifications_preference_title">Obaveštenja</string>
   <string name="voicemail_change_greeting_preference_title">Pozdravna poruka govorne pošte</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Promenite PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Morate da omogućite vizuelnu govornu poštu da biste promenili PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Vizuelna govorna pošta još uvek nije aktivirana, probajte ponovo kasnije</string>
-  <string name="vm_change_pin_old_pin">Stari PIN</string>
-  <string name="vm_change_pin_new_pin">Novi PIN</string>
   <string name="vm_change_pin_progress_message">Sačekajte.</string>
   <string name="vm_change_pin_error_too_short">Novi PIN je prekratak.</string>
   <string name="vm_change_pin_error_too_long">Novi PIN je predugačak.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Promena PIN-a nije uspela</string>
   <string name="change_pin_title">Promenite PIN kôd govorne pošte</string>
   <string name="change_pin_continue_label">Nastavi</string>
-  <string name="change_pin_cancel_label">Otkaži</string>
-  <string name="change_pin_ok_label">Potvrdi</string>
   <string name="change_pin_enter_old_pin_header">Potvrdite stari PIN</string>
   <string name="change_pin_enter_old_pin_hint">Unesite PIN kôd govorne pošte da biste nastavili.</string>
   <string name="change_pin_enter_new_pin_header">Podesite novi PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-ovi se ne podudaraju</string>
   <string name="change_pin_succeeded">PIN kôd govorne pošte je ažuriran</string>
   <string name="change_pin_system_error">Podešavanje PIN-a nije uspelo</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transkripcija govorne pošte</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analiza transkripcije govorne pošte</string>
   <string name="voicemail_activating_summary_info">Aktivira se vizuelna govorna pošta</string>
-  <string name="voicemail_transcription_preference_summary_info">Dobijajte transkripte govornih poruka pomoću Google-ove usluge transkripcije. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Dozvolite Google-u da pregleda vaše govorne poruke da bi poboljšao tačnost transkripcije. Govorne poruke čuvamo anonimno. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Isključite vizuelnu govornu poštu</string>
   <string name="confirm_disable_voicemail_dialog_message">Ovo će izbrisati sve govorne poruke i Google transkripte sačuvane u ovoj aplikaciji. Mobilni operater može da zadrži svoje kopije.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ISKLJUČI</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-be/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-be/strings.xml
index a4b88f5..98e22eb 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-be/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-be/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Галасавая пошта (%s)</string>
   <string name="voicemail_settings_title">Галасавая пошта</string>
   <string name="voicemail_notifications_preference_title">Апавяшчэнні</string>
   <string name="voicemail_change_greeting_preference_title">Вітанне галасавой пошты</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Змяніць PIN-код</string>
   <string name="voicemail_change_pin_preference_summary_disable">Каб змяніць PIN-код, трэба ўключыць візуальную галасавую пошту</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Візуальная галасавая пошта пакуль не актываваная. Паўтарыце спробу пазней</string>
-  <string name="vm_change_pin_old_pin">Стары PIN-код</string>
-  <string name="vm_change_pin_new_pin">Новы PIN-код</string>
   <string name="vm_change_pin_progress_message">Пачакайце.</string>
   <string name="vm_change_pin_error_too_short">Новы PIN-код занадта кароткі.</string>
   <string name="vm_change_pin_error_too_long">Новы PIN-код занадта доўгі.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Немагчыма змяніць PIN-код</string>
   <string name="change_pin_title">Змяніце PIN-код галасавой пошты</string>
   <string name="change_pin_continue_label">Працягнуць</string>
-  <string name="change_pin_cancel_label">Скасаваць</string>
-  <string name="change_pin_ok_label">ОК</string>
   <string name="change_pin_enter_old_pin_header">Пацвердзіце стары PIN-код</string>
   <string name="change_pin_enter_old_pin_hint">Каб працягнуць, увядзіце PIN-код галасавой пошты.</string>
   <string name="change_pin_enter_new_pin_header">Задайце новы PIN-код</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-коды не супадаюць</string>
   <string name="change_pin_succeeded">PIN-код галасавой пошты абноўлены</string>
   <string name="change_pin_system_error">Немагчыма задаць PIN-код</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Расшыфроўка галасавой пошты</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Аналіз транскрыпцый галасавой пошты</string>
   <string name="voicemail_activating_summary_info">Уключэнне галасавой пошты</string>
-  <string name="voicemail_transcription_preference_summary_info">Атрымайце расшыфроўкі галасавой пошты з дапамогай сэрвісу расшыфроўкі Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Дазвольце Google праглядаць паведамленні галасавой пошты, каб палепшыць дакладнасць расшыфроўкі. Паведамленні галасавой пошты захоўваюцца ананімна. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Выключыць візуальную галасавую пошту</string>
   <string name="confirm_disable_voicemail_dialog_message">Гэта прывядзе да выдалення ўсіх паведамленняў галасавой пошты і расшыфровак Google, якія захоўваюцца ў гэтай праграме. Аператар можа пакінуць свае копіі.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ВЫКЛЮЧЫЦЬ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-bg/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-bg/strings.xml
index aadb66c..a4e365e 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-bg/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-bg/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Гласова поща (%s)</string>
   <string name="voicemail_settings_title">Гласова поща</string>
   <string name="voicemail_notifications_preference_title">Известия</string>
   <string name="voicemail_change_greeting_preference_title">Поздрав в гласовата поща</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Промяна на вашия ПИН</string>
   <string name="voicemail_change_pin_preference_summary_disable">За промяна на ПИН трябва да бъде активирана визуалната гласова поща</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Визуалната гласова поща още не е активирана. Моля, опитайте отново по-късно</string>
-  <string name="vm_change_pin_old_pin">Стар ПИН</string>
-  <string name="vm_change_pin_new_pin">Нов ПИН</string>
   <string name="vm_change_pin_progress_message">Моля, изчакайте.</string>
   <string name="vm_change_pin_error_too_short">Новият ПИН е твърде къс.</string>
   <string name="vm_change_pin_error_too_long">Новият ПИН е твърде дълъг.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Промяната на ПИН не е възможна</string>
   <string name="change_pin_title">Промяна на ПИН за гласовата поща</string>
   <string name="change_pin_continue_label">Напред</string>
-  <string name="change_pin_cancel_label">Отказ</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Потвърдете стария си ПИН</string>
   <string name="change_pin_enter_old_pin_hint">За да продължите, въведете своя ПИН за гласовата поща.</string>
   <string name="change_pin_enter_new_pin_header">Задайте нов ПИН</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">ПИН кодовете не съвпадат</string>
   <string name="change_pin_succeeded">ПИН за гласовата поща бе актуализиран</string>
   <string name="change_pin_system_error">ПИН не може да бъде зададен</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Преписи на гласови съобщения</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Анализ на преписите на гласовите съобщ.</string>
   <string name="voicemail_activating_summary_info">Гласовата поща се активира</string>
-  <string name="voicemail_transcription_preference_summary_info">Получавайте преписи на гласовите си съобщения чрез услугата на Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Позволете на Google да преглежда съобщенията в гласовата ви поща, за да подобри точността на преписите. Съобщенията ви се съхраняват анонимно. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Изключване на визуалната гласова поща</string>
   <string name="confirm_disable_voicemail_dialog_message">Това ще изтрие гласовите съобщения и преписите от Google, съхранявани в приложението. Операторът ви може да запази свои копия.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ИЗКЛЮЧВАНЕ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-bn/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-bn/strings.xml
index 0b5f602..94cafec 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-bn/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-bn/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">ভয়েসমেল (%s)</string>
   <string name="voicemail_settings_title">ভয়েসমেল</string>
   <string name="voicemail_notifications_preference_title">বিজ্ঞপ্তি</string>
   <string name="voicemail_change_greeting_preference_title">ভয়েসমেলের অভিবাদন</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">পিন পরিবর্তন করুন</string>
   <string name="voicemail_change_pin_preference_summary_disable">পিন পরিবর্তন করতে হলে ভিজুয়াল ভয়েসমেল অবশ্যই সক্ষম করতে হবে</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">ভিজুয়াল ভয়েসমেল এখনও সক্রিয় করা হয়নি, অনুগ্রহ করে পরে আবার চেষ্টা করুন</string>
-  <string name="vm_change_pin_old_pin">পুরনো পিন</string>
-  <string name="vm_change_pin_new_pin">নতুন পিন</string>
   <string name="vm_change_pin_progress_message">অনুগ্রহ করে অপেক্ষা করুন৷</string>
   <string name="vm_change_pin_error_too_short">নতুন পিনটি খুব ছোট৷</string>
   <string name="vm_change_pin_error_too_long">নতুন পিনটি বেশি বড়৷</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">পিন পরিবর্তন করা যায়নি</string>
   <string name="change_pin_title">ভয়েসমেলের পিন পরিবর্তন করুন</string>
   <string name="change_pin_continue_label">চালিয়ে যান</string>
-  <string name="change_pin_cancel_label">বাতিল করুন</string>
-  <string name="change_pin_ok_label">ঠিক আছে</string>
   <string name="change_pin_enter_old_pin_header">আপনার পুরনো পিনটি নিশ্চিত করুন</string>
   <string name="change_pin_enter_old_pin_hint">চালিয়ে যেতে আপনার ভয়েসমেলের পিন লিখুন৷</string>
   <string name="change_pin_enter_new_pin_header">একটি নতুন পিন সেট করুন</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">পিনগুলি মিলছে না</string>
   <string name="change_pin_succeeded">ভয়েসমেলের পিন আপডেট করা হয়েছে</string>
   <string name="change_pin_system_error">পিন সেট করা গেল না</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">ভয়েসমেল ট্রান্সক্রিপশন</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">ভয়েসমেল ট্রান্সক্রিপশনের বিশ্লেষণ</string>
   <string name="voicemail_activating_summary_info">ভয়েসমেল অ্যাক্টিভেট হচ্ছে</string>
-  <string name="voicemail_transcription_preference_summary_info">Google-এর ট্রান্সক্রিপশন পরিষেবা ব্যবহার করে ভয়েসমেলের ট্রান্সক্রিপ্ট পান। %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">ট্রান্সক্রিপশনের গুণমান আরও উন্নত করতে Google-কে আপনার ভয়েসমেল মেসেজগুলি পর্যালোচনা করতে দিন। আপনার পরিচয় গোপন রেখে মেসেজগুলি স্টোর করা হবে। %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">ভিজুয়াল ভয়েসমেল বন্ধ করুন</string>
   <string name="confirm_disable_voicemail_dialog_message">এর ফলে এই অ্যাপের মধ্যে স্টোর করা যেকোনও ভয়েসমেল এবং Google ট্রান্সক্রিপ্ট মুছে যাবে। আপনার পরিষেবা প্রদানকারী সেগুলির একটি কপি রেখে দিতে পারে।</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">বন্ধ করুন</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-bs/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-bs/strings.xml
index 235f6f6..f146c42 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-bs/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-bs/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Govorna pošta (%s)</string>
   <string name="voicemail_settings_title">Govorna pošta</string>
   <string name="voicemail_notifications_preference_title">Obavještenja</string>
   <string name="voicemail_change_greeting_preference_title">Pozdravna poruka govorne pošte</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Promijenite PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Vizuelna govorna pošta mora biti omogućena za promjenu PIN-a</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Vizuelna govorna pošta još uvijek nije aktivirana, pokušajte ponovo kasnije</string>
-  <string name="vm_change_pin_old_pin">Stari PIN</string>
-  <string name="vm_change_pin_new_pin">Novi PIN</string>
   <string name="vm_change_pin_progress_message">Pričekajte.</string>
   <string name="vm_change_pin_error_too_short">Novi PIN je prekratak.</string>
   <string name="vm_change_pin_error_too_long">Novi PIN je predug.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Nije moguće promijeniti PIN</string>
   <string name="change_pin_title">Promijenite PIN govorne pošte</string>
   <string name="change_pin_continue_label">Nastavi</string>
-  <string name="change_pin_cancel_label">Otkaži</string>
-  <string name="change_pin_ok_label">Uredu</string>
   <string name="change_pin_enter_old_pin_header">Potvrdite stari PIN</string>
   <string name="change_pin_enter_old_pin_hint">Za nastavak unesite PIN govorne pošte.</string>
   <string name="change_pin_enter_new_pin_header">Postavite novi PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-ovi se ne podudaraju</string>
   <string name="change_pin_succeeded">PIN govorne pošte je ažuriran</string>
   <string name="change_pin_system_error">Nije moguće postaviti PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transkripcija govorne pošte</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analiza transkripcije govorne pošte</string>
   <string name="voicemail_activating_summary_info">Aktiviranje govorne pošte</string>
-  <string name="voicemail_transcription_preference_summary_info">Preuzmite transkripte govorne pošte putem Googleove usluge transkripcije. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Dozvolite da Google pregleda vaše poruke govorne pošte kako bi se poboljšala tačnost transkripcije. Poruke govorne pošte se pohranjuju anonimno. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Isključivanje vizuelne govorne pošte</string>
   <string name="confirm_disable_voicemail_dialog_message">Ovo će izbrisati svu govornu poštu i Googleove transkripte pohranjene u ovoj aplikaciji. Vaš mobilni operater može zadržati svoje kopije.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ISKLJUČI</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ca/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ca/strings.xml
index d00e3a4..044e1a9 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ca/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ca/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Bústia de veu (%s)</string>
   <string name="voicemail_settings_title">Bústia de veu</string>
   <string name="voicemail_notifications_preference_title">Notificacions</string>
   <string name="voicemail_change_greeting_preference_title">Salutació de la bústia de veu</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Canvia el PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">La bústia de veu visual ha d\'estar activada per poder canviar el PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">La bústia de veu visual encara no està activada; torna-ho a provar més tard</string>
-  <string name="vm_change_pin_old_pin">PIN antic</string>
-  <string name="vm_change_pin_new_pin">PIN nou</string>
   <string name="vm_change_pin_progress_message">Un moment.</string>
   <string name="vm_change_pin_error_too_short">El PIN nou és massa curt.</string>
   <string name="vm_change_pin_error_too_long">El PIN nou és massa llarg.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">No es pot canviar el PIN</string>
   <string name="change_pin_title">Canvia el PIN de la bústia de veu</string>
   <string name="change_pin_continue_label">Continua</string>
-  <string name="change_pin_cancel_label">Cancel·la</string>
-  <string name="change_pin_ok_label">D\'acord</string>
   <string name="change_pin_enter_old_pin_header">Confirma el teu PIN antic</string>
   <string name="change_pin_enter_old_pin_hint">Introdueix el PIN de la bústia de veu per continuar.</string>
   <string name="change_pin_enter_new_pin_header">Defineix un PIN nou</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Els PIN no coincideixen</string>
   <string name="change_pin_succeeded">S\'ha actualitzat el PIN de la bústia de veu</string>
   <string name="change_pin_system_error">No s\'ha pogut definir el PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transcripció de missatges de veu</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Anàlisi de transcripció (missatges de veu)</string>
   <string name="voicemail_activating_summary_info">S\'està activant la bústia de veu</string>
-  <string name="voicemail_transcription_preference_summary_info">Obtén transcripcions dels missatges de veu utilitzant el servei de transcripció de Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Permet que Google accedeixi als missatges de la teva bústia de veu per millorar la precisió de les transcripcions. Aquests missatges s\'emmagatzemen de manera anònima. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Desactiva la bústia de veu visual</string>
   <string name="confirm_disable_voicemail_dialog_message">Se suprimiran els missatges de veu i les transcripcions de Google desats en aquesta aplicació. És possible que l\'operador de telefonia mòbil en conservi còpies.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DESACTIVA</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-cs/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-cs/strings.xml
index 917bf8f..f8066cd 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-cs/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-cs/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Hlasová schránka (%s)</string>
   <string name="voicemail_settings_title">Hlasová schránka</string>
   <string name="voicemail_notifications_preference_title">Oznámení</string>
   <string name="voicemail_change_greeting_preference_title">Pozdrav v hlasové schránce</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Změnit kód PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Pokud chcete kód PIN změnit, musíte mít zapnutou vizuální hlasovou schránku</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Vizuální hlasová schránka zatím není aktivovaná, zkuste to prosím znovu později</string>
-  <string name="vm_change_pin_old_pin">Starý kód PIN</string>
-  <string name="vm_change_pin_new_pin">Nový kód PIN</string>
   <string name="vm_change_pin_progress_message">Počkejte prosím.</string>
   <string name="vm_change_pin_error_too_short">Nový kód PIN je příliš krátký.</string>
   <string name="vm_change_pin_error_too_long">Nový kód PIN je příliš dlouhý.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Kód PIN se nepodařilo změnit</string>
   <string name="change_pin_title">Změňte kód PIN hlasové schránky</string>
   <string name="change_pin_continue_label">Pokračovat</string>
-  <string name="change_pin_cancel_label">Zrušit</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Potvrďte starý kód PIN</string>
   <string name="change_pin_enter_old_pin_hint">Pokud chcete pokračovat, zadejte kód PIN hlasové schránky.</string>
   <string name="change_pin_enter_new_pin_header">Nastavte nový kód PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Kódy PIN se neshodují</string>
   <string name="change_pin_succeeded">Kód PIN hlasové schránky byl změněn</string>
   <string name="change_pin_system_error">Kód PIN se nepodařilo nastavit</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Přepis hlasových zpráv</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analýza přepisu hlasových zpráv</string>
   <string name="voicemail_activating_summary_info">Aktivace hlasové schránky</string>
-  <string name="voicemail_transcription_preference_summary_info">Získejte přepisy svých hlasových zpráv poskytované přepisovací službou od Googlu. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Dovolte Googlu kontrolovat vaše hlasové zprávy s cílem zlepšit kvalitu přepisu. Hlasové zprávy se ukládají anonymně. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Vypnout vizuální hlasovou schránku</string>
   <string name="confirm_disable_voicemail_dialog_message">Tím smažete všechny hlasové zprávy a přepisy od Googlu uložené v této aplikaci. Váš operátor si může uchovávat vlastní kopie.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">VYPNOUT</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-da/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-da/strings.xml
index cf143b4..0423766 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-da/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-da/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Telefonsvarer (%s)</string>
   <string name="voicemail_settings_title">Telefonsvarer</string>
   <string name="voicemail_notifications_preference_title">Underretninger</string>
   <string name="voicemail_change_greeting_preference_title">Telefonsvarerhilsen</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Skift pinkode</string>
   <string name="voicemail_change_pin_preference_summary_disable">Visuel telefonsvarer skal være aktiveret, for at du kan skifte pinkode</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visuel telefonsvarer er ikke aktiveret endnu. Prøv igen senere</string>
-  <string name="vm_change_pin_old_pin">Gammel pinkode</string>
-  <string name="vm_change_pin_new_pin">Ny pinkode</string>
   <string name="vm_change_pin_progress_message">Vent et øjeblik.</string>
   <string name="vm_change_pin_error_too_short">Den nye pinkode er for kort.</string>
   <string name="vm_change_pin_error_too_long">Den nye pinkode er for lang.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Pinkoden kunne ikke ændres</string>
   <string name="change_pin_title">Skift pinkode til din telefonsvarer</string>
   <string name="change_pin_continue_label">Fortsæt</string>
-  <string name="change_pin_cancel_label">Annuller</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Bekræft din gamle pinkode</string>
   <string name="change_pin_enter_old_pin_hint">Angiv din pinkode til din telefonsvarer for at fortsætte.</string>
   <string name="change_pin_enter_new_pin_header">Angiv en ny pinkode</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Pinkoderne er ikke ens</string>
   <string name="change_pin_succeeded">Pinkoden til din telefonsvarer blev opdateret</string>
   <string name="change_pin_system_error">Pinkoden kunne ikke angives</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transskription af talebeskeder</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analyse af talebeskedstransskription</string>
   <string name="voicemail_activating_summary_info">Telefonsvareren aktiveres</string>
-  <string name="voicemail_transcription_preference_summary_info">Få transskription af dine talebeskeder ved hjælp af Googles transskriptionstjeneste. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Tillad, at Google gennemgår dine talebeskeder for at forbedre nøjagtigheden af transskriptioner. Dine talebeskeder gemmes anonymt. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Slå visuel telefonsvarer fra</string>
   <string name="confirm_disable_voicemail_dialog_message">Dette sletter eventuelle talebeskeder og Google-transskriptioner, der er gemt i appen. Dit mobilselskab gemmer muligvis separate kopier.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">SLÅ FRA</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-de/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-de/strings.xml
index f56338a..18a5b6f 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-de/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-de/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Mailbox (%s)</string>
   <string name="voicemail_settings_title">Mailbox</string>
   <string name="voicemail_notifications_preference_title">Benachrichtigungen</string>
   <string name="voicemail_change_greeting_preference_title">Mailboxbegrüßung</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN ändern</string>
   <string name="voicemail_change_pin_preference_summary_disable">Die visuelle Mailbox muss aktiviert sein, um die PIN zu ändern</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Die visuelle Mailbox wurde noch nicht aktiviert, bitte versuche es später noch einmal</string>
-  <string name="vm_change_pin_old_pin">Alte PIN</string>
-  <string name="vm_change_pin_new_pin">Neue PIN</string>
   <string name="vm_change_pin_progress_message">Bitte warten.</string>
   <string name="vm_change_pin_error_too_short">Die neue PIN ist zu kurz.</string>
   <string name="vm_change_pin_error_too_long">Die neue PIN ist zu lang.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN kann nicht geändert werden</string>
   <string name="change_pin_title">Mailbox-PIN ändern</string>
   <string name="change_pin_continue_label">Weiter</string>
-  <string name="change_pin_cancel_label">Abbrechen</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Alte PIN bestätigen</string>
   <string name="change_pin_enter_old_pin_hint">Gib zum Fortfahren deine Mailbox-PIN ein.</string>
   <string name="change_pin_enter_new_pin_header">Neue PIN festlegen</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Die PINs stimmen nicht überein</string>
   <string name="change_pin_succeeded">Mailbox-PIN aktualisiert</string>
   <string name="change_pin_system_error">Festlegen der PIN nicht möglich</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Mailboxnachrichten transkribieren</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analyse transkribierter Mailboxnachrichten</string>
   <string name="voicemail_activating_summary_info">Mailbox wird aktiviert</string>
-  <string name="voicemail_transcription_preference_summary_info">Der Transkriptionsdienst von Google liefert dir deine Mailboxnachrichten als geschriebenen Text. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Google darf deine Mailboxnachrichten analysieren, damit die Genauigkeit der Transkriptionen verbessert werden kann. Deine Mailboxnachrichten werden anonym gespeichert. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Visuelle Mailbox deaktivieren</string>
   <string name="confirm_disable_voicemail_dialog_message">Hiermit werden alle Mailbox-Nachrichten und Google-Transkripte gelöscht, die in dieser App gespeichert wurden. Möglicherweise speichert dein Mobilfunkanbieter eigene Kopien.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DEAKTIVIEREN</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-el/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-el/strings.xml
index cb90321..62299d0 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-el/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-el/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Αυτόματος τηλεφωνητής (%s)</string>
   <string name="voicemail_settings_title">Αυτόματος τηλεφωνητής</string>
   <string name="voicemail_notifications_preference_title">Ειδοποιήσεις</string>
   <string name="voicemail_change_greeting_preference_title">Χαιρετισμός αυτόματου τηλεφωνητή</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Αλλαγή κωδικού PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Για αλλαγή του PIN, ενεργοποιήστε τον οπτικό αυτόματο τηλεφωνητή</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Ο οπτικός αυτόματος τηλεφωνητής δεν έχει ενεργοποιηθεί ακόμα. Δοκιμάστε ξανά αργότερα.</string>
-  <string name="vm_change_pin_old_pin">Παλιός αριθμός PIN</string>
-  <string name="vm_change_pin_new_pin">Νέος αριθμός PIN</string>
   <string name="vm_change_pin_progress_message">Περιμένετε.</string>
   <string name="vm_change_pin_error_too_short">Το νέο PIN είναι πολύ μικρό.</string>
   <string name="vm_change_pin_error_too_long">Το νέο PIN είναι πολύ μεγάλo.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Δεν είναι δυνατή η αλλαγή του PIN</string>
   <string name="change_pin_title">Αλλαγή PIN αυτόματου τηλεφωνητή</string>
   <string name="change_pin_continue_label">Συνέχεια</string>
-  <string name="change_pin_cancel_label">Ακύρωση</string>
-  <string name="change_pin_ok_label">ΟΚ</string>
   <string name="change_pin_enter_old_pin_header">Επιβεβαιώστε το παλιό σας PIN</string>
   <string name="change_pin_enter_old_pin_hint">Εισαγάγετε το PIN του αυτόματου τηλεφωνητή σας για να συνεχίσετε.</string>
   <string name="change_pin_enter_new_pin_header">Ορίστε ένα νέο PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Τα PIN δεν ταιριάζουν</string>
   <string name="change_pin_succeeded">Το PIN αυτόματου τηλεφωνητή ενημερώθηκε</string>
   <string name="change_pin_system_error">Δεν είναι δυνατή η ρύθμιση του PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Μεταγραφή μηνυμάτων αυτόματου τηλεφωνητή</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Ανάλυση μεταγραφής φωνητικού μηνύματος</string>
   <string name="voicemail_activating_summary_info">Ενεργοποίηση αυτόματου τηλεφωνητή</string>
-  <string name="voicemail_transcription_preference_summary_info">Λάβετε μεταγραφές των φωνητικών μηνυμάτων του αυτόματου τηλεφωνητή σας, χρησιμοποιώντας την υπηρεσία μεταγραφής της Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Επιτρέψτε στην Google να ελέγχει τα μηνύματά σας, για να βελτιώσει την ακρίβεια της μεταγραφής. Τα μηνύματα του αυτόματου τηλεφωνητή σας αποθηκεύονται ανώνυμα. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Απενεργοπ. οπτικού αυτόματου τηλεφωνητή</string>
   <string name="confirm_disable_voicemail_dialog_message">Αυτό θα διαγράψει τυχόν φωνητικά μηνύματα ή μεταγραφές Google που έχουν αποθηκευτεί εντός της εφαρμογής. Η εταιρεία κινητής τηλεφωνίας που χρησιμοποιείτε ενδέχεται να διατηρεί τα δικά της αντίγραφα.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-en-rAU/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-en-rAU/strings.xml
index 6323a5d..7dbaa4b 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-en-rAU/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-en-rAU/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Voicemail (%s)</string>
   <string name="voicemail_settings_title">Voicemail</string>
   <string name="voicemail_notifications_preference_title">Notifications</string>
   <string name="voicemail_change_greeting_preference_title">Voicemail greeting</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Change PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Visual voicemail must be enabled to change PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visual voicemail is not activated yet. Please try again later</string>
-  <string name="vm_change_pin_old_pin">Old PIN</string>
-  <string name="vm_change_pin_new_pin">New PIN</string>
   <string name="vm_change_pin_progress_message">Please wait.</string>
   <string name="vm_change_pin_error_too_short">The new PIN is too short.</string>
   <string name="vm_change_pin_error_too_long">The new PIN is too long.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Unable to change PIN</string>
   <string name="change_pin_title">Change voicemail PIN</string>
   <string name="change_pin_continue_label">Continue</string>
-  <string name="change_pin_cancel_label">Cancel</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Confirm your old PIN</string>
   <string name="change_pin_enter_old_pin_hint">Enter your voicemail PIN to continue.</string>
   <string name="change_pin_enter_new_pin_header">Set a new PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PINs don\'t match</string>
   <string name="change_pin_succeeded">Voicemail PIN updated</string>
   <string name="change_pin_system_error">Unable to set PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Voicemail transcription</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Voicemail transcription analysis</string>
   <string name="voicemail_activating_summary_info">Activating voicemail</string>
-  <string name="voicemail_transcription_preference_summary_info">Get transcripts of your voicemail using Google\'s transcription service. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Let Google review your voicemail messages to improve transcription accuracy. Your voicemail messages are stored anonymously. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Turn off visual voicemail</string>
   <string name="confirm_disable_voicemail_dialog_message">This will delete any voicemail and Google transcripts stored within this app. Your operator may keep its own copies.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">TURN OFF</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-en-rGB/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-en-rGB/strings.xml
index 6323a5d..7dbaa4b 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-en-rGB/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-en-rGB/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Voicemail (%s)</string>
   <string name="voicemail_settings_title">Voicemail</string>
   <string name="voicemail_notifications_preference_title">Notifications</string>
   <string name="voicemail_change_greeting_preference_title">Voicemail greeting</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Change PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Visual voicemail must be enabled to change PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visual voicemail is not activated yet. Please try again later</string>
-  <string name="vm_change_pin_old_pin">Old PIN</string>
-  <string name="vm_change_pin_new_pin">New PIN</string>
   <string name="vm_change_pin_progress_message">Please wait.</string>
   <string name="vm_change_pin_error_too_short">The new PIN is too short.</string>
   <string name="vm_change_pin_error_too_long">The new PIN is too long.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Unable to change PIN</string>
   <string name="change_pin_title">Change voicemail PIN</string>
   <string name="change_pin_continue_label">Continue</string>
-  <string name="change_pin_cancel_label">Cancel</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Confirm your old PIN</string>
   <string name="change_pin_enter_old_pin_hint">Enter your voicemail PIN to continue.</string>
   <string name="change_pin_enter_new_pin_header">Set a new PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PINs don\'t match</string>
   <string name="change_pin_succeeded">Voicemail PIN updated</string>
   <string name="change_pin_system_error">Unable to set PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Voicemail transcription</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Voicemail transcription analysis</string>
   <string name="voicemail_activating_summary_info">Activating voicemail</string>
-  <string name="voicemail_transcription_preference_summary_info">Get transcripts of your voicemail using Google\'s transcription service. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Let Google review your voicemail messages to improve transcription accuracy. Your voicemail messages are stored anonymously. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Turn off visual voicemail</string>
   <string name="confirm_disable_voicemail_dialog_message">This will delete any voicemail and Google transcripts stored within this app. Your operator may keep its own copies.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">TURN OFF</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-en-rIN/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-en-rIN/strings.xml
index 6323a5d..7dbaa4b 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-en-rIN/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-en-rIN/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Voicemail (%s)</string>
   <string name="voicemail_settings_title">Voicemail</string>
   <string name="voicemail_notifications_preference_title">Notifications</string>
   <string name="voicemail_change_greeting_preference_title">Voicemail greeting</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Change PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Visual voicemail must be enabled to change PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visual voicemail is not activated yet. Please try again later</string>
-  <string name="vm_change_pin_old_pin">Old PIN</string>
-  <string name="vm_change_pin_new_pin">New PIN</string>
   <string name="vm_change_pin_progress_message">Please wait.</string>
   <string name="vm_change_pin_error_too_short">The new PIN is too short.</string>
   <string name="vm_change_pin_error_too_long">The new PIN is too long.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Unable to change PIN</string>
   <string name="change_pin_title">Change voicemail PIN</string>
   <string name="change_pin_continue_label">Continue</string>
-  <string name="change_pin_cancel_label">Cancel</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Confirm your old PIN</string>
   <string name="change_pin_enter_old_pin_hint">Enter your voicemail PIN to continue.</string>
   <string name="change_pin_enter_new_pin_header">Set a new PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PINs don\'t match</string>
   <string name="change_pin_succeeded">Voicemail PIN updated</string>
   <string name="change_pin_system_error">Unable to set PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Voicemail transcription</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Voicemail transcription analysis</string>
   <string name="voicemail_activating_summary_info">Activating voicemail</string>
-  <string name="voicemail_transcription_preference_summary_info">Get transcripts of your voicemail using Google\'s transcription service. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Let Google review your voicemail messages to improve transcription accuracy. Your voicemail messages are stored anonymously. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Turn off visual voicemail</string>
   <string name="confirm_disable_voicemail_dialog_message">This will delete any voicemail and Google transcripts stored within this app. Your operator may keep its own copies.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">TURN OFF</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-es-rUS/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-es-rUS/strings.xml
index b76cfae..209821e 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-es-rUS/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-es-rUS/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Buzón de voz (%s)</string>
   <string name="voicemail_settings_title">Buzón de voz</string>
   <string name="voicemail_notifications_preference_title">Notificaciones</string>
   <string name="voicemail_change_greeting_preference_title">Saludo del buzón de voz</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Cambiar PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">El buzón de voz visual debe estar habilitado para cambiar el PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">El buzón de voz visual aún no está activado. Vuelve a intentarlo más tarde.</string>
-  <string name="vm_change_pin_old_pin">PIN anterior</string>
-  <string name="vm_change_pin_new_pin">PIN nuevo</string>
   <string name="vm_change_pin_progress_message">Espera un momento.</string>
   <string name="vm_change_pin_error_too_short">El PIN nuevo es demasiado corto.</string>
   <string name="vm_change_pin_error_too_long">El PIN nuevo es demasiado largo.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">No se puede cambiar el PIN</string>
   <string name="change_pin_title">Cambiar el PIN del buzón de voz</string>
   <string name="change_pin_continue_label">Continuar</string>
-  <string name="change_pin_cancel_label">Cancelar</string>
-  <string name="change_pin_ok_label">Aceptar</string>
   <string name="change_pin_enter_old_pin_header">Confirmar el PIN anterior</string>
   <string name="change_pin_enter_old_pin_hint">Ingresa el PIN del buzón de voz para continuar.</string>
   <string name="change_pin_enter_new_pin_header">Establecer un PIN nuevo</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Los PIN no coinciden</string>
   <string name="change_pin_succeeded">Se actualizó el PIN del buzón de voz</string>
   <string name="change_pin_system_error">No se puede establecer el PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transcripción del buzón de voz</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Análisis de transcr. del buzón de voz</string>
   <string name="voicemail_activating_summary_info">Activando el buzón de voz</string>
-  <string name="voicemail_transcription_preference_summary_info">Recibir las transcripciones de tu buzón de voz por medio del servicio de transcripciones de Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Permitir que Google acceda a los mensajes de tu buzón de voz para mejorar la calidad de las transcripciones. Estos mensajes se almacenan de forma anónima. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Desactivar el buzón de voz visual</string>
   <string name="confirm_disable_voicemail_dialog_message">Esta acción borrará todas las transcripciones de Google y los correos de voz almacenados en esta app. Es posible que tu proveedor conserve sus propias copias.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DESACTIVAR</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-es/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-es/strings.xml
index eef0d66..7629d64 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-es/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-es/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Buzón de voz (%s)</string>
   <string name="voicemail_settings_title">Buzón de voz</string>
   <string name="voicemail_notifications_preference_title">Notificaciones</string>
   <string name="voicemail_change_greeting_preference_title">Saludo del buzón de voz</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Cambiar el PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Se debe habilitar el buzón de voz visual para cambiar el PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">El buzón de voz visual aún no está activado; inténtalo de nuevo más tarde</string>
-  <string name="vm_change_pin_old_pin">PIN antiguo</string>
-  <string name="vm_change_pin_new_pin">PIN nuevo</string>
   <string name="vm_change_pin_progress_message">Espera...</string>
   <string name="vm_change_pin_error_too_short">El PIN nuevo es muy corto.</string>
   <string name="vm_change_pin_error_too_long">El PIN nuevo es muy largo.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">No se ha podido cambiar el PIN</string>
   <string name="change_pin_title">Cambiar el PIN del buzón de voz</string>
   <string name="change_pin_continue_label">Continuar</string>
-  <string name="change_pin_cancel_label">Cancelar</string>
-  <string name="change_pin_ok_label">Aceptar</string>
   <string name="change_pin_enter_old_pin_header">Confirma tu PIN antiguo</string>
   <string name="change_pin_enter_old_pin_hint">Introduce el PIN de tu buzón de voz para continuar.</string>
   <string name="change_pin_enter_new_pin_header">Configura un PIN nuevo</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Los PIN no coinciden</string>
   <string name="change_pin_succeeded">Se ha cambiado el PIN del buzón de voz</string>
   <string name="change_pin_system_error">No se ha podido configurar el PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transcripción de mensajes de voz</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Análisis de transcripciones de mensajes</string>
   <string name="voicemail_activating_summary_info">Activando el buzón de voz</string>
-  <string name="voicemail_transcription_preference_summary_info">Consulta transcripciones de tus mensajes de voz con el servicio de transcripción de Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Deja que Google revise tus mensajes de voz para mejorar la precisión de las transcripciones. Estos mensajes se guardan de manera anónima. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Desactivar el buzón de voz visual</string>
   <string name="confirm_disable_voicemail_dialog_message">Esta acción eliminará las transcripciones de Google y los mensajes de voz almacenados en esta aplicación. Es posible que tu operador guarde una copia de ellos.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DESACTIVAR</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-et/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-et/strings.xml
index 2d32b9b..94b96bf 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-et/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-et/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Kõnepost (%s)</string>
   <string name="voicemail_settings_title">Kõnepost</string>
   <string name="voicemail_notifications_preference_title">Märguanded</string>
   <string name="voicemail_change_greeting_preference_title">Kõneposti tervitus</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN-koodi muutmine</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN-koodi muutmiseks peab olema lubatud visuaalne kõnepost</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visuaalne kõnepost pole veel aktiveeritud, proovige hiljem uuesti</string>
-  <string name="vm_change_pin_old_pin">Vana PIN-kood</string>
-  <string name="vm_change_pin_new_pin">Uus PIN-kood</string>
   <string name="vm_change_pin_progress_message">Oodake.</string>
   <string name="vm_change_pin_error_too_short">Uus PIN-kood on liiga lühike.</string>
   <string name="vm_change_pin_error_too_long">Uus PIN-kood on liiga pikk.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN-koodi ei õnnestu muuta</string>
   <string name="change_pin_title">Kõneposti PIN-koodi muutmine</string>
   <string name="change_pin_continue_label">Jätka</string>
-  <string name="change_pin_cancel_label">Tühista</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Kinnitage vana PIN-kood</string>
   <string name="change_pin_enter_old_pin_hint">Jätkamiseks sisestage kõneposti PIN-kood.</string>
   <string name="change_pin_enter_new_pin_header">Määrake uus PIN-kood</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-koodid ei ühti</string>
   <string name="change_pin_succeeded">Kõneposti PIN-koodi värskendati</string>
   <string name="change_pin_system_error">PIN-koodi ei saa määrata</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Kõnepostisõnumite transkribeerimine</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Kõnepostisõn. transkribeerimise analüüs</string>
   <string name="voicemail_activating_summary_info">Kõneposti aktiveerimine</string>
-  <string name="voicemail_transcription_preference_summary_info">Hankige oma kõnepostisõnumite transkriptsioonid, kasutades Google\'i transkribeerimisteenust. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Lubage Google\'il transkribeerimise täpsuse parandamiseks oma kõnepostisõnumid üle vaadata. Teie kõnepostisõnumid salvestatakse anonüümselt. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Visuaalse kõneposti väljalülitamine</string>
   <string name="confirm_disable_voicemail_dialog_message">See kustutab kõik selles rakenduses salvestatud kõnepostisõnumid ja Google\'i transkriptsioonid. Teie operaator võib säilitada oma koopiad.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">LÜLITA VÄLJA</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-eu/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-eu/strings.xml
index e4b7092..b36aa55 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-eu/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-eu/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Erantzungailua (%s)</string>
   <string name="voicemail_settings_title">Erantzungailua</string>
   <string name="voicemail_notifications_preference_title">Jakinarazpenak</string>
   <string name="voicemail_change_greeting_preference_title">Erantzungailuko agurra</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Aldatu PIN kodea</string>
   <string name="voicemail_change_pin_preference_summary_disable">Ikusizko erantzungailuak gaituta egon behar du PIN kodea aldatu ahal izateko</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Oraindik ez dago aktibatuta ikusizko erantzungailua. Saiatu berriro geroago.</string>
-  <string name="vm_change_pin_old_pin">PIN kode zaharra</string>
-  <string name="vm_change_pin_new_pin">PIN kode berria</string>
   <string name="vm_change_pin_progress_message">Itxaron, mesedez.</string>
   <string name="vm_change_pin_error_too_short">Laburregia da PIN kode berria.</string>
   <string name="vm_change_pin_error_too_long">Luzeegia da PIN kode berria.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Ezin da aldatu PIN kodea</string>
   <string name="change_pin_title">Aldatu ikusizko erantzungailuaren PIN kodea</string>
   <string name="change_pin_continue_label">Egin aurrera</string>
-  <string name="change_pin_cancel_label">Utzi</string>
-  <string name="change_pin_ok_label">Ados</string>
   <string name="change_pin_enter_old_pin_header">Berretsi PIN kode zaharra</string>
   <string name="change_pin_enter_old_pin_hint">Aurrera egiteko, idatzi ikusizko erantzungailuaren PIN kodea.</string>
   <string name="change_pin_enter_new_pin_header">Ezarri PIN kode berria</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN kodeak ez datoz bat</string>
   <string name="change_pin_succeeded">Eguneratu da ikusizko erantzungailuaren PIN kodea</string>
   <string name="change_pin_system_error">Ezin da ezarri PIN kodea</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Ahots-mezuen transkripzioa</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Ahots-mezuen transkripzioen analisia</string>
   <string name="voicemail_activating_summary_info">Erantzungailua aktibatzen</string>
-  <string name="voicemail_transcription_preference_summary_info">Lortu ahots-mezuen transkripzioak Google-ren transkripzio-zerbitzuaren bidez. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Utzi Google-ri ahots-mezuak berrikusten, transkripzioak zehatzagoak izan daitezen. Erantzungailuko ahots-mezuak modu anonimoan gordeko dira. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Desaktibatu ikusizko erantzungailua</string>
   <string name="confirm_disable_voicemail_dialog_message">Aplikazio honetan gordetako ahots-mezu eta Google transkripzio guztiak ezabatuko dira. Baliteke operadoreak haien kopiak gordetzea.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DESAKTIBATU</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-fa/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-fa/strings.xml
index 90f3c48..1b14118 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-fa/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-fa/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">پست صوتی (%s)</string>
   <string name="voicemail_settings_title">پست صوتی</string>
   <string name="voicemail_notifications_preference_title">اعلان‌ها</string>
   <string name="voicemail_change_greeting_preference_title">خوشامدگویی پست صوتی</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">تغییر پین</string>
   <string name="voicemail_change_pin_preference_summary_disable">برای تغییر پین، پست صوتی تصویری باید فعال شود</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">پست صوتی تصویری هنوز فعال نشده است، لطفاً بعداً دوباره امتحان کنید</string>
-  <string name="vm_change_pin_old_pin">پین قدیمی</string>
-  <string name="vm_change_pin_new_pin">پین جدید</string>
   <string name="vm_change_pin_progress_message">لطفاً منتظر بمانید.</string>
   <string name="vm_change_pin_error_too_short">پین جدید خیلی کوتاه است.</string>
   <string name="vm_change_pin_error_too_long">پین جدید خیلی طولانی است.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">پین تغییر نکرد</string>
   <string name="change_pin_title">تغییر پین پست صوتی</string>
   <string name="change_pin_continue_label">ادامه</string>
-  <string name="change_pin_cancel_label">لغو</string>
-  <string name="change_pin_ok_label">تأیید</string>
   <string name="change_pin_enter_old_pin_header">تأیید پین قدیمی</string>
   <string name="change_pin_enter_old_pin_hint">برای ادامه دادن، پین پست صوتی را وارد کنید.</string>
   <string name="change_pin_enter_new_pin_header">تنظیم پین جدید</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">پین‌ها با یکدیگر مطابقت ندارند</string>
   <string name="change_pin_succeeded">پین پست صوتی به‌روزرسانی شد</string>
   <string name="change_pin_system_error">پین تنظیم نشد</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">ترانویسی پست‌ صوتی</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">تجزیه‌وتحلیل ترانویسی پست صوتی</string>
   <string name="voicemail_activating_summary_info">فعال کردن پست صوتی</string>
-  <string name="voicemail_transcription_preference_summary_info">‏با استفاده از سرویس ترانویسی Google، ترانوشت پست صوتی‌تان را دریافت کنید. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">‏برای بهبود دقت ترانویسی، به Google اجازه دهید پیام‌های پست صوتی شما را مرور کند. پیام‌های پست صوتی‌تان به‌صورت ناشناس ذخیره می‌شوند. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">خاموش کردن پست صوتی تصویری</string>
   <string name="confirm_disable_voicemail_dialog_message">‏با این کار پست‌های صوتی و آوانویسی‌های Google ذخیره‌شده در این برنامه حذف خواهند شد. ممکن است شرکت مخابراتی‌تان نسخه‌های خود را نگه‌دارد.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">خاموش کردن</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-fi/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-fi/strings.xml
index fbdeb36..14273ed 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-fi/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-fi/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Vastaaja (%s)</string>
   <string name="voicemail_settings_title">Vastaaja</string>
   <string name="voicemail_notifications_preference_title">Ilmoitukset</string>
   <string name="voicemail_change_greeting_preference_title">Vastaajatervehdys</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Vaihda PIN-koodi</string>
   <string name="voicemail_change_pin_preference_summary_disable">Ota visuaalinen puhelinvastaaja käyttöön, jotta voit vaihtaa PIN-koodin.</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visuaalista puhelinvastaajaa ei ole vielä aktivoitu. Yritä myöhemmin uudelleen.</string>
-  <string name="vm_change_pin_old_pin">Vanha PIN-koodi</string>
-  <string name="vm_change_pin_new_pin">Uusi PIN-koodi</string>
   <string name="vm_change_pin_progress_message">Odota.</string>
   <string name="vm_change_pin_error_too_short">Uusi PIN-koodi on liian lyhyt.</string>
   <string name="vm_change_pin_error_too_long">Uusi PIN-koodi on liian pitkä.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN-koodin vaihtaminen epäonnistui.</string>
   <string name="change_pin_title">Vaihda vastaajan PIN-koodi</string>
   <string name="change_pin_continue_label">Jatka</string>
-  <string name="change_pin_cancel_label">Peruuta</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Vahvista vanha PIN-koodi</string>
   <string name="change_pin_enter_old_pin_hint">Jatka antamalla vastaajasi PIN-koodi.</string>
   <string name="change_pin_enter_new_pin_header">Määritä uusi PIN-koodi</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-koodit eivät täsmää.</string>
   <string name="change_pin_succeeded">Vastaajan PIN-koodi päivitetty</string>
   <string name="change_pin_system_error">PIN-koodin määrittäminen epäonnistui.</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Puhelinvastaajan transkriptio</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Vastaajaviestien transkriptioanalyysi</string>
   <string name="voicemail_activating_summary_info">Aktivoidaan puhelinvastaajaa</string>
-  <string name="voicemail_transcription_preference_summary_info">Tilaa vastaajaviestiesi transkriptiot Googlen transkriptiopalvelun avulla. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Myönnä Googlelle oikeus tarkastella vastaajaviestejäsi, jotta transkription tarkkuutta voidaan parantaa. Vastaajaviestit tallennetaan nimettöminä. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Poista visuaalinen vastaaja käytöstä</string>
   <string name="confirm_disable_voicemail_dialog_message">Kaikki tähän sovellukseen tallennetut vastaajaviestit ja Google-transkriptiot poistetaan. Operaattorisi saattaa säilyttää omat kopionsa.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">POISTA KÄYTÖSTÄ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-fr-rCA/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-fr-rCA/strings.xml
index f10661b..7916457 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-fr-rCA/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-fr-rCA/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Messagerie vocale (%s)</string>
   <string name="voicemail_settings_title">Messagerie vocale</string>
   <string name="voicemail_notifications_preference_title">Notifications</string>
   <string name="voicemail_change_greeting_preference_title">Message d\'accueil de la messagerie vocale</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Modifier le NIP</string>
   <string name="voicemail_change_pin_preference_summary_disable">La messagerie vocale visuelle doit être activée pour que vous puissiez modifier votre NIP</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">La messagerie vocale visuelle n\'a pas encore été activée. Veuillez réessayer plus tard</string>
-  <string name="vm_change_pin_old_pin">Ancien NIP</string>
-  <string name="vm_change_pin_new_pin">Nouveau NIP</string>
   <string name="vm_change_pin_progress_message">Veuillez patienter.</string>
   <string name="vm_change_pin_error_too_short">Le nouveau NIP est trop court.</string>
   <string name="vm_change_pin_error_too_long">Le nouveau NIP est trop long.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Impossible de modifier le NIP</string>
   <string name="change_pin_title">Modifier le NIP de la messagerie vocale</string>
   <string name="change_pin_continue_label">Continuer</string>
-  <string name="change_pin_cancel_label">Annuler</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Confirmer votre ancien NIP</string>
   <string name="change_pin_enter_old_pin_hint">Entrez votre NIP de messagerie vocale pour continuer.</string>
   <string name="change_pin_enter_new_pin_header">Choisir un nouveau NIP</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Les NIP ne correspondent pas</string>
   <string name="change_pin_succeeded">NIP de messagerie vocale mis à jour</string>
   <string name="change_pin_system_error">Impossible de définir le NIP</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transcription des messages vocaux</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analyse/transcription de messages vocaux</string>
   <string name="voicemail_activating_summary_info">Activation de la messagerie vocale en cours…</string>
-  <string name="voicemail_transcription_preference_summary_info">Obtenir des transcriptions de vos messages vocaux grâce au service de transcription de Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Autoriser Google à accéder à vos messages vocaux pour que nous puissions améliorer l\'exactitude des transcriptions. Vos messages vocaux sont stockés de façon anonyme. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Désactiver la messagerie vocale visuelle</string>
   <string name="confirm_disable_voicemail_dialog_message">Cette action supprimera les messages vocaux et les transcriptions Google stockés dans cette application. Il se peut que votre fournisseur de services conserve ses propres copies.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DÉSACTIVER</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-fr/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-fr/strings.xml
index bcd48d4..e8889e0 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-fr/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-fr/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Messagerie vocale (%s)</string>
   <string name="voicemail_settings_title">Messagerie</string>
   <string name="voicemail_notifications_preference_title">Notifications</string>
   <string name="voicemail_change_greeting_preference_title">Message d\'accueil</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Modifier le code</string>
   <string name="voicemail_change_pin_preference_summary_disable">Pour que vous puissiez modifier le code, la messagerie vocale visuelle doit être activée</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">La messagerie vocale visuelle n\'est pas encore activée. Veuillez réessayer ultérieurement.</string>
-  <string name="vm_change_pin_old_pin">Ancien code</string>
-  <string name="vm_change_pin_new_pin">Nouveau code</string>
   <string name="vm_change_pin_progress_message">Patientez.</string>
   <string name="vm_change_pin_error_too_short">Le nouveau code est trop court.</string>
   <string name="vm_change_pin_error_too_long">Le nouveau code est trop long.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Impossible de modifier le code</string>
   <string name="change_pin_title">Modifier le code de la messagerie vocale</string>
   <string name="change_pin_continue_label">Continuer</string>
-  <string name="change_pin_cancel_label">Annuler</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Confirmer votre ancien code</string>
   <string name="change_pin_enter_old_pin_hint">Pour continuer, saisissez le code de votre messagerie vocale.</string>
   <string name="change_pin_enter_new_pin_header">Définir un nouveau code</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Les codes ne correspondent pas.</string>
   <string name="change_pin_succeeded">Le code de votre messagerie vocale a été mis à jour</string>
   <string name="change_pin_system_error">Impossible de définir le code</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transcription des messages vocaux</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analyse des messages vocaux transcrits</string>
   <string name="voicemail_activating_summary_info">Activation de la messagerie vocale</string>
-  <string name="voicemail_transcription_preference_summary_info">Recevez vos messages vocaux par écrit avec le service de transcription de Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Autorisez Google à analyser vos messages vocaux pour améliorer la justesse de la transcription. Ceux-ci sont stockés de manière anonyme. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Désactiver la messagerie vocale visuelle</string>
   <string name="confirm_disable_voicemail_dialog_message">Cette opération entraînera la suppression des messages vocaux et des transcriptions Google stockés dans l\'application. Votre opérateur en conserve peut-être une copie.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DÉSACTIVER</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-gl/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-gl/strings.xml
index 8fd8ca2..534cc15 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-gl/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-gl/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Correo de voz (%s)</string>
   <string name="voicemail_settings_title">Correo de voz</string>
   <string name="voicemail_notifications_preference_title">Notificacións</string>
   <string name="voicemail_change_greeting_preference_title">Saúdo do correo de voz</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Cambiar PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Para poder cambiar o PIN, o correo de voz visual ten que estar activado</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">O correo de voz visual aínda non está activado. Téntao de novo máis tarde</string>
-  <string name="vm_change_pin_old_pin">PIN antigo</string>
-  <string name="vm_change_pin_new_pin">PIN novo</string>
   <string name="vm_change_pin_progress_message">Agarda.</string>
   <string name="vm_change_pin_error_too_short">O novo PIN é demasiado curto.</string>
   <string name="vm_change_pin_error_too_long">O novo PIN é demasiado longo.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Non se puido cambiar o PIN</string>
   <string name="change_pin_title">Cambiar PIN do correo de voz</string>
   <string name="change_pin_continue_label">Continuar</string>
-  <string name="change_pin_cancel_label">Cancelar</string>
-  <string name="change_pin_ok_label">Aceptar</string>
   <string name="change_pin_enter_old_pin_header">Confirmar o teu PIN antigo</string>
   <string name="change_pin_enter_old_pin_hint">Introduce o PIN do teu correo de voz para continuar.</string>
   <string name="change_pin_enter_new_pin_header">Establecer un PIN novo</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Os PIN non coinciden</string>
   <string name="change_pin_succeeded">Actualizouse o PIN do correo de voz</string>
   <string name="change_pin_system_error">Non se puido establecer o PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transcrición do correo de voz</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Análise dos correos de voz transcritos</string>
   <string name="voicemail_activating_summary_info">Activando correo de voz</string>
-  <string name="voicemail_transcription_preference_summary_info">Obtén transcricións dos teus correos de voz co servizo de transcrición de Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Permite que Google revise as mensaxes do teu correo de voz para poder mellorar a precisión das transcricións. As mensaxes do teu correo de voz almacénanse de maneira anónima. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Desactivar correo de voz visual</string>
   <string name="confirm_disable_voicemail_dialog_message">Con esta acción, eliminaranse os correos de voz, así como as transcricións de Google almacenadas nesta aplicación. É posible que o teu operador garde as súas propias copias.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DESACTIVAR</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-gu/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-gu/strings.xml
index 1bee0e1..d4d8fd0 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-gu/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-gu/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">વૉઇસમેઇલ (%s)</string>
   <string name="voicemail_settings_title">વૉઇસમેઇલ</string>
   <string name="voicemail_notifications_preference_title">નોટિફિકેશનો</string>
   <string name="voicemail_change_greeting_preference_title">વૉઇસમેઇલની શુભેચ્છા</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">પિન બદલો</string>
   <string name="voicemail_change_pin_preference_summary_disable">પિન બદલવા માટે વિઝ્યુઅલ વૉઇસમેઇલ ચાલુ હોય તે આવશ્યક છે</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">વિઝ્યુઅલ વૉઇસમેઇલ હજી સુધી સક્રિય થયેલ નથી, કૃપા કરીને થોડા સમય પછી ફરી પ્રયાસ કરો</string>
-  <string name="vm_change_pin_old_pin">જૂનો પિન</string>
-  <string name="vm_change_pin_new_pin">નવો પિન</string>
   <string name="vm_change_pin_progress_message">કૃપા કરીને રાહ જુઓ.</string>
   <string name="vm_change_pin_error_too_short">નવો પિન ખૂબ ટૂંકો છે.</string>
   <string name="vm_change_pin_error_too_long">નવો પિન ખૂબ લાંબો છે.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">પિન બદલી શકાતો નથી</string>
   <string name="change_pin_title">વૉઇસમેઇલ પિન બદલો</string>
   <string name="change_pin_continue_label">આગળ વધો</string>
-  <string name="change_pin_cancel_label">રદ કરો</string>
-  <string name="change_pin_ok_label">ઓકે</string>
   <string name="change_pin_enter_old_pin_header">તમારા જૂના પિનની પુષ્ટિ કરો</string>
   <string name="change_pin_enter_old_pin_hint">ચાલુ રાખવા માટે તમારો વૉઇસમેઇલ પિન દાખલ કરો.</string>
   <string name="change_pin_enter_new_pin_header">એક નવો પિન સેટ કરો</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">પિન મેળ ખાતા નથી</string>
   <string name="change_pin_succeeded">વૉઇસમેઇલ પિન અપડેટ કર્યો</string>
   <string name="change_pin_system_error">પિન સેટ કરી શકાતો નથી</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">વૉઇસમેઇલ ટ્રાન્સક્રિપ્શન</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">વૉઇસમેઇલના ટ્રાન્સક્રિપ્શનનું વિશ્લેષણ</string>
   <string name="voicemail_activating_summary_info">વૉઇસમેઇલ સક્રિય કરી રહ્યાં છીએ</string>
-  <string name="voicemail_transcription_preference_summary_info">Googleની ટ્રાન્સક્રિપ્શન સેવાનો ઉપયોગ કરીને તમારા વૉઇસમેઇલની ટ્રાન્સક્રિપ્ટ મેળવો. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">ટ્રાન્સક્રિપ્શનની સચોટતા વધુ બહેતર બનાવવા માટે Googleને તમારા વૉઇસમેઇલ સંદેશાનો રિવ્યૂ કરવા દો. તમારા વૉઇસમેઇલ સંદેશા અજ્ઞાત રૂપે સ્ટોર કરવામાં આવે છે. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">વિઝ્યુઅલ વૉઇસમેઇલ બંધ કરો</string>
   <string name="confirm_disable_voicemail_dialog_message">આ ક્રિયા આ ઍપમાં સંગ્રહિત કોઈપણ વૉઇસમેઇલ અને Google ટ્રાન્સ્ક્રિપ્ટને ડિલીટ કરી નાખશે. તમારા કૅરિઅર તેમની કૉપિ કદાચ જાળવી રાખી શકે છે.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">બંધ કરો</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-hi/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-hi/strings.xml
index 89f09df..26fb428 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-hi/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-hi/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">वॉइसमेल (%s)</string>
   <string name="voicemail_settings_title">वॉइसमेल</string>
   <string name="voicemail_notifications_preference_title">सूचनाएं</string>
   <string name="voicemail_change_greeting_preference_title">वॉइसमेल अभिवादन</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">पिन बदलें</string>
   <string name="voicemail_change_pin_preference_summary_disable">पिन बदलने के लिए विज़ुअल वॉइसमेल चालू होना चाहिए</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">विज़ुअल वॉइसमेल अभी तक सक्रिय नहीं किया गया है, कृपया बाद में फिर कोशिश करें</string>
-  <string name="vm_change_pin_old_pin">पुराना पिन</string>
-  <string name="vm_change_pin_new_pin">नया पिन</string>
   <string name="vm_change_pin_progress_message">कृपया इंतज़ार करें.</string>
   <string name="vm_change_pin_error_too_short">नया पिन बहुत छोटा है.</string>
   <string name="vm_change_pin_error_too_long">नया पिन बहुत बड़ा है.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">पिन बदला नहीं जा सकता</string>
   <string name="change_pin_title">वॉइसमेल पिन बदलें</string>
   <string name="change_pin_continue_label">जारी रखें</string>
-  <string name="change_pin_cancel_label">अभी नहीं</string>
-  <string name="change_pin_ok_label">ठीक है</string>
   <string name="change_pin_enter_old_pin_header">अपने पुराने पिन की पुष्टि करें</string>
   <string name="change_pin_enter_old_pin_hint">जारी रखने के लिए अपना वॉइसमेल पिन डालें.</string>
   <string name="change_pin_enter_new_pin_header">एक नया पिन सेट करें</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">पिन मेल नहीं खाते</string>
   <string name="change_pin_succeeded">वॉइसमेल पिन अपडेट किया गया</string>
   <string name="change_pin_system_error">पिन सेट नहीं किया जा सकता</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">वॉइसमेल को लेख में बदलना</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">वॉइसमेल ट्रांसक्रिप्शन विश्लेषण</string>
   <string name="voicemail_activating_summary_info">वॉइसमेल सक्रिय किया जा रहा है</string>
-  <string name="voicemail_transcription_preference_summary_info">Google की वॉइसमेल को लेख में बदलने की सेवा का इस्तेमाल करके अपने वॉइसमेल को लेख में बदलें. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Google को आपके वॉइसमेल मैसेज की समीक्षा करने दें, ताकि वॉइसमेल को लेख में बदलने के काम को और भी सटीक बनाया जा सके. आपके वॉइसमेल मैसेज गुमनाम रूप से संग्रहित किए जाते हैं. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">विज़ुअल वॉइसमेल बंद करें</string>
   <string name="confirm_disable_voicemail_dialog_message">अगर आप इसे बंद करते हैं, तो इस ऐप में मौजूद वॉइसमेल और Google ट्रांसक्रिप्ट मिटा दिए जाएंगे. आपका वाहक अपने पास उनकी कॉपी रख सकता है.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">बंद करें</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-hr/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-hr/strings.xml
index 9c1037b..80357b4 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-hr/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-hr/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Govorna pošta (%s)</string>
   <string name="voicemail_settings_title">Govorna pošta</string>
   <string name="voicemail_notifications_preference_title">Obavijesti</string>
   <string name="voicemail_change_greeting_preference_title">Pozdravna poruka glasovne pošte</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Promjena PIN-a</string>
   <string name="voicemail_change_pin_preference_summary_disable">Za promjenu PIN-a potrebno je omogućiti vizualnu govornu poštu</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Vizualna govorna pošta još nije aktivirana, pokušajte ponovno kasnije</string>
-  <string name="vm_change_pin_old_pin">Stari PIN</string>
-  <string name="vm_change_pin_new_pin">Novi PIN</string>
   <string name="vm_change_pin_progress_message">Pričekajte.</string>
   <string name="vm_change_pin_error_too_short">Novi PIN je prekratak.</string>
   <string name="vm_change_pin_error_too_long">Novi PIN je predugačak.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN se ne može promijeniti</string>
   <string name="change_pin_title">Promjena PIN-a govorne pošte</string>
   <string name="change_pin_continue_label">Nastavi</string>
-  <string name="change_pin_cancel_label">Odustani</string>
-  <string name="change_pin_ok_label">U redu</string>
   <string name="change_pin_enter_old_pin_header">Potvrda starog PIN-a</string>
   <string name="change_pin_enter_old_pin_hint">Da biste nastavili, unesite PIN za govornu poštu.</string>
   <string name="change_pin_enter_new_pin_header">Postavljanje novog PIN-a</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-ovi se ne podudaraju</string>
   <string name="change_pin_succeeded">Ažuriran je PIN govorne pošte</string>
   <string name="change_pin_system_error">PIN se ne može postaviti</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Prijepis govorne pošte</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analiza prijepisa govorne pošte</string>
   <string name="voicemail_activating_summary_info">Aktivacija govorne pošte</string>
-  <string name="voicemail_transcription_preference_summary_info">Primajte prijepise poruka govorne pošte pomoću Googleove usluge prijepisa. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Dopustite da Google pregleda vaše poruke govorne pošte radi poboljšanja točnosti prijepisa. Vaše se poruke govorne pošte anonimno spremaju. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Isključivanje vizualne govorne pošte</string>
   <string name="confirm_disable_voicemail_dialog_message">Time će se izbrisati sve poruke govorne pošte i Googleovi prijepisi spremljeni u ovoj aplikaciji. Vaš mobilni operater može sačuvati vlastite kopije.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ISKLJUČI</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-hu/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-hu/strings.xml
index 5d65b29..cf69d32 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-hu/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-hu/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Hangposta (%s)</string>
   <string name="voicemail_settings_title">Hangposta</string>
   <string name="voicemail_notifications_preference_title">Értesítések</string>
   <string name="voicemail_change_greeting_preference_title">Üdvözlőüzenet</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN-kód módosítása</string>
   <string name="voicemail_change_pin_preference_summary_disable">A PIN-kód módosításához engedélyezni kell a vizuális hangpostát.</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">A vizuális hangposta még nincs aktiválva. Engedélyezze később.</string>
-  <string name="vm_change_pin_old_pin">Régi PIN-kód</string>
-  <string name="vm_change_pin_new_pin">Új PIN-kód</string>
   <string name="vm_change_pin_progress_message">Kérjük, várjon.</string>
   <string name="vm_change_pin_error_too_short">Az új PIN-kód túl rövid.</string>
   <string name="vm_change_pin_error_too_long">Az új PIN-kód túl hosszú.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Nem sikerült módosítani a PIN-kódot</string>
   <string name="change_pin_title">A hangposta PIN-kódjának módosítása</string>
   <string name="change_pin_continue_label">Tovább</string>
-  <string name="change_pin_cancel_label">Mégse</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">A régi PIN-kód megerősítése</string>
   <string name="change_pin_enter_old_pin_hint">A folytatáshoz írja be a hangpostához használt PIN-kódját.</string>
   <string name="change_pin_enter_new_pin_header">Új PIN-kód beállítása</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">A PIN-kódok nem egyeznek</string>
   <string name="change_pin_succeeded">A hangposta PIN-kódja megváltozott</string>
   <string name="change_pin_system_error">Nem sikerült beállítani a PIN-kódot</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Hangpostaüzenetek átírása</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Hangpostaüzenet-átirás elemzése</string>
   <string name="voicemail_activating_summary_info">Hangposta aktiválása</string>
-  <string name="voicemail_transcription_preference_summary_info">A Google átírási szolgáltatásával lekérheti a hangpostaüzenetek átiratát. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Engedélyezze, hogy a Google áttekinthesse a hangpostaüzeneteit az átiratok pontosságának javítása érdekében. A hangpostaüzeneteket anonim módon tároljuk. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">A vizuális hangposta kikapcsolása</string>
   <string name="confirm_disable_voicemail_dialog_message">Ezzel törli az alkalmazásban tárolt hangpostaüzeneteket és Google-átiratokat. A szolgáltató megtarthatja a saját másolatokat.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">KIKAPCSOLÁS</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-hy/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-hy/strings.xml
index 633539e..ffc36fd 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-hy/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-hy/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Ձայնային փոստ (%s)</string>
   <string name="voicemail_settings_title">Ձայնային փոստ</string>
   <string name="voicemail_notifications_preference_title">Ծանուցումներ</string>
   <string name="voicemail_change_greeting_preference_title">Ձայնային փոստի ողջույն</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Փոխեք PIN կոդը</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN կոդը փոխելու համար ձայնային փոստի ցուցադրումը պետք է միացված լինի</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Ձայնային փոստի ցուցադրումը դեռ ակտիվացված չէ: Փորձեք ավելի ուշ:</string>
-  <string name="vm_change_pin_old_pin">Հին PIN կոդ</string>
-  <string name="vm_change_pin_new_pin">Նոր PIN կոդ</string>
   <string name="vm_change_pin_progress_message">Սպասեք:</string>
   <string name="vm_change_pin_error_too_short">Նոր PIN կոդը չափազանց կարճ է:</string>
   <string name="vm_change_pin_error_too_long">Նոր PIN կոդը չափազանց երկար է:</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Չհաջողվեց փոխել PIN կոդը</string>
   <string name="change_pin_title">Փոխեք ձայնային փոստի PIN կոդը</string>
   <string name="change_pin_continue_label">Շարունակել</string>
-  <string name="change_pin_cancel_label">Չեղարկել</string>
-  <string name="change_pin_ok_label">Եղավ</string>
   <string name="change_pin_enter_old_pin_header">Հաստատեք հին PIN կոդը</string>
   <string name="change_pin_enter_old_pin_hint">Շարունակելու համար մուտքագրեք ձայնային փոստի PIN կոդը:</string>
   <string name="change_pin_enter_new_pin_header">Ընտրեք նոր PIN կոդ</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN կոդերը չեն համընկնում</string>
   <string name="change_pin_succeeded">Ձայնային փոստի PIN կոդը թարմացվեց</string>
   <string name="change_pin_system_error">Չհաջողվեց սահմանել PIN կոդ</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Ձայնային փոստի տառադրում</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Ձայնային փոստի տառադրման վերլուծություն</string>
   <string name="voicemail_activating_summary_info">Ձայնային փոստի ակտիվացում</string>
-  <string name="voicemail_transcription_preference_summary_info">Կատարեք ձայնային հաղորդագրությունների տառադրում Google-ի տառադրման ծառայության օգնությամբ: %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Թույլ տվեք Google-ին ստուգել ձեր ձայնային հաղորդագրությունները՝ տառադրման ճշգրտությունը բարելավելու համար: Ձեր ձայնային հաղորդագրությունները անանուն կերպով են պահվում: %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Անջատել ձայնային փոստի ցուցադրումը</string>
   <string name="confirm_disable_voicemail_dialog_message">Կջնջվեն այս հավելվածում պահված ամբողջ ձայնային փոստն ու ձայնագրությունների տեքստերը՝ տառադրված Google-ի հատուկ ծառայության միջոցով: Դրանց պատճենները հնարավոր է մնան ձեր օպերատորի մոտ:</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ԱՆՋԱՏԵԼ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-in/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-in/strings.xml
index a2b05e4..6ca65ec 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-in/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-in/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Pesan Suara (%s)</string>
   <string name="voicemail_settings_title">Pesan Suara</string>
   <string name="voicemail_notifications_preference_title">Notifikasi</string>
   <string name="voicemail_change_greeting_preference_title">Salam untuk pesan suara</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Ubah PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Pesan suara visual harus diaktifkan untuk mengubah PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Pesan suara visual belum diaktifkan, coba lagi nanti</string>
-  <string name="vm_change_pin_old_pin">PIN Lama</string>
-  <string name="vm_change_pin_new_pin">PIN Baru</string>
   <string name="vm_change_pin_progress_message">Harap tunggu.</string>
   <string name="vm_change_pin_error_too_short">PIN baru terlalu pendek.</string>
   <string name="vm_change_pin_error_too_long">PIN baru terlalu panjang.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Tidak dapat mengubah PIN</string>
   <string name="change_pin_title">Ubah PIN Pesan Suara</string>
   <string name="change_pin_continue_label">Lanjutkan</string>
-  <string name="change_pin_cancel_label">Batal</string>
-  <string name="change_pin_ok_label">Oke</string>
   <string name="change_pin_enter_old_pin_header">Konfirmasi PIN lama Anda</string>
   <string name="change_pin_enter_old_pin_hint">Masukkan PIN pesan suara Anda untuk melanjutkan.</string>
   <string name="change_pin_enter_new_pin_header">Setel PIN baru</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN tidak cocok</string>
   <string name="change_pin_succeeded">PIN pesan suara diupdate</string>
   <string name="change_pin_system_error">Tidak dapat menyetel PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transkripsi pesan suara</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analisis transkripsi pesan suara</string>
   <string name="voicemail_activating_summary_info">Mengaktifkan pesan suara</string>
-  <string name="voicemail_transcription_preference_summary_info">Dapatkan transkrip pesan suara Anda menggunakan layanan transkripsi Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Izinkan Google meninjau pesan suara Anda untuk menyempurnakan akurasi transkripsi. Pesan suara akan disimpan secara anonim. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Menonaktifkan pesan suara visual</string>
   <string name="confirm_disable_voicemail_dialog_message">Tindakan ini akan menghapus semua pesan suara dan transkrip Google yang tersimpan dalam aplikasi ini. Operator Anda mungkin menyimpan salinannya sendiri.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">NONAKTIFKAN</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-is/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-is/strings.xml
index 0572928..7bd6a6c 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-is/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-is/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Talhólf (%s)</string>
   <string name="voicemail_settings_title">Talhólf</string>
   <string name="voicemail_notifications_preference_title">Tilkynningar</string>
   <string name="voicemail_change_greeting_preference_title">Talhólfskveðja</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Breyta PIN-númeri</string>
   <string name="voicemail_change_pin_preference_summary_disable">Kveikt þarf að vera á myndrænu talhólfi til að breyta PIN-númeri</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Ekki er búið að virkja myndrænt talhólf. Reyndu aftur síðar</string>
-  <string name="vm_change_pin_old_pin">Gamla PIN-númerið</string>
-  <string name="vm_change_pin_new_pin">Nýtt PIN-númer</string>
   <string name="vm_change_pin_progress_message">Augnablik.</string>
   <string name="vm_change_pin_error_too_short">Nýja PIN-númerið er of stutt.</string>
   <string name="vm_change_pin_error_too_long">Nýja PIN-númerið er of langt.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Ekki var hægt að breyta PIN-númerinu</string>
   <string name="change_pin_title">Breyta PIN-númeri talhólfs</string>
   <string name="change_pin_continue_label">Áfram</string>
-  <string name="change_pin_cancel_label">Hætta við</string>
-  <string name="change_pin_ok_label">Í lagi</string>
   <string name="change_pin_enter_old_pin_header">Staðfestu gamla PIN-númerið</string>
   <string name="change_pin_enter_old_pin_hint">Sláðu inn PIN-númerið fyrir talhólf til að halda áfram.</string>
   <string name="change_pin_enter_new_pin_header">Veldu nýtt PIN-númer</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-númerin stemma ekki</string>
   <string name="change_pin_succeeded">PIN-númer fyrir talhólf uppfært</string>
   <string name="change_pin_system_error">Ekki hægt að stilla PIN-númer</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Uppskrift talhólfsskilaboða</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Greining á umritun talhólfsskilaboða</string>
   <string name="voicemail_activating_summary_info">Virkjar talhólf</string>
-  <string name="voicemail_transcription_preference_summary_info">Fáðu talhólfsskilaboðin skrifuð niður með uppskriftarþjónustu Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Leyfðu Google að fara yfir talhólfsskilaboðin þín til að fá nákvæmari uppskrift. Talhólfsskilaboð eru geymd nafnlaust. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Slökkva á myndrænu talhólfi</string>
   <string name="confirm_disable_voicemail_dialog_message">Þetta eyðir öllum talhólfsskilaboðum og textauppskrift Google sem forritið geymir. Símafyrirtækið þitt gæti geymt sín eigin afrit.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">SLÖKKVA</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-it/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-it/strings.xml
index 8644103..e05f2fb 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-it/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-it/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Segreteria (%s)</string>
   <string name="voicemail_settings_title">Segreteria</string>
   <string name="voicemail_notifications_preference_title">Notifiche</string>
   <string name="voicemail_change_greeting_preference_title">Annuncio della segreteria</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Modifica del PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">La lettura delle segreteria deve essere attivata per cambiare il PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Lettura della segreteria non attivata. Riprova più tardi</string>
-  <string name="vm_change_pin_old_pin">PIN attuale</string>
-  <string name="vm_change_pin_new_pin">Nuovo PIN</string>
   <string name="vm_change_pin_progress_message">Attendi.</string>
   <string name="vm_change_pin_error_too_short">Il nuovo PIN è troppo corto.</string>
   <string name="vm_change_pin_error_too_long">Il nuovo PIN è troppo lungo.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Impossibile cambiare il PIN</string>
   <string name="change_pin_title">Cambia PIN segreteria</string>
   <string name="change_pin_continue_label">Continua</string>
-  <string name="change_pin_cancel_label">Annulla</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Conferma il PIN attuale</string>
   <string name="change_pin_enter_old_pin_hint">Inserisci il PIN della segreteria per continuare.</string>
   <string name="change_pin_enter_new_pin_header">Imposta un nuovo PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">I PIN non corrispondono</string>
   <string name="change_pin_succeeded">PIN segreteria aggiornato</string>
   <string name="change_pin_system_error">Impossibile impostare il PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Trascrizione messaggio vocale</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analisi trascrizione segreteria</string>
   <string name="voicemail_activating_summary_info">Attivazione della segretaria</string>
-  <string name="voicemail_transcription_preference_summary_info">Ricevi la trascrizione dei tuoi messaggi vocali utilizzando il servizio di trascrizione di Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Consenti a Google di rivedere i messaggi della segreteria telefonica per migliorare la precisione della trascrizione. I messaggi della segreteria telefonica vengono memorizzati in modo anonimo. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Disattiva la lettura dei messaggi vocali</string>
   <string name="confirm_disable_voicemail_dialog_message">Tutti i messaggi vocali e le trascrizioni Google memorizzati all\'interno di questa app verranno eliminati. L\'operatore può conservare delle copie.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DISATTIVA</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-iw/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-iw/strings.xml
index c4920b6..4f4c76c 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-iw/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-iw/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">דואר קולי (%s)</string>
   <string name="voicemail_settings_title">דואר קולי</string>
   <string name="voicemail_notifications_preference_title">עדכונים</string>
   <string name="voicemail_change_greeting_preference_title">פתיח לתא הקולי</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">שינוי קוד הגישה</string>
   <string name="voicemail_change_pin_preference_summary_disable">צריך להפעיל את הדואר הקולי הוויזואלי כדי לשנות את קוד הגישה</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">הדואר הקולי הוויזואלי לא הופעל עדיין. אפשר לנסות שוב מאוחר יותר</string>
-  <string name="vm_change_pin_old_pin">קוד הגישה הישן</string>
-  <string name="vm_change_pin_new_pin">קוד הגישה החדש</string>
   <string name="vm_change_pin_progress_message">רק רגע בבקשה.</string>
   <string name="vm_change_pin_error_too_short">קוד הגישה החדש קצר מדי.</string>
   <string name="vm_change_pin_error_too_long">קוד הגישה החדש ארוך מדי.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">לא ניתן היה לשנות את קוד הגישה</string>
   <string name="change_pin_title">שינוי של קוד הגישה לדואר הקולי</string>
   <string name="change_pin_continue_label">המשך</string>
-  <string name="change_pin_cancel_label">ביטול</string>
-  <string name="change_pin_ok_label">אישור</string>
   <string name="change_pin_enter_old_pin_header">אישור קוד הגישה הישן</string>
   <string name="change_pin_enter_old_pin_hint">כדי להמשיך צריך להזין את קוד הגישה לדואר הקולי.</string>
   <string name="change_pin_enter_new_pin_header">הגדרת קוד גישה חדש</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">קודי הגישה אינם תואמים</string>
   <string name="change_pin_succeeded">קוד הגישה לדואר הקולי עודכן</string>
   <string name="change_pin_system_error">לא ניתן היה להגדיר את קוד הגישה</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">תמלול הודעות קוליות</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">ניתוח התמלולים של ההודעות הקוליות</string>
   <string name="voicemail_activating_summary_info">הפעלת הדואר הקולי מתבצעת</string>
-  <string name="voicemail_transcription_preference_summary_info">‏תמלול ההודעות הקוליות באמצעות שירותי התמלול של Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">‏אם נוכל לבדוק את ההודעות הקוליות שלך דיוק התמלול של Google ישתפר. ההודעות הקוליות נשמרות באופן אנונימי. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">השבתת הדואר הקולי הוויזואלי</string>
   <string name="confirm_disable_voicemail_dialog_message">‏כל ההודעות הקוליות והתמלולים של Google שנשמרו באפליקציה יימחקו. ייתכן שיישארו עותקים שלהם אצל הספק הסלולרי שלך.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">השבתה</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ja/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ja/strings.xml
index b69f03a..665c93c 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ja/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ja/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">ボイスメール（%s）</string>
   <string name="voicemail_settings_title">ボイスメール</string>
   <string name="voicemail_notifications_preference_title">通知</string>
   <string name="voicemail_change_greeting_preference_title">ボイスメール応答メッセージ</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN の変更</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN を変更するには、ビジュアル ボイスメールを有効にする必要があります</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">ビジュアル ボイスメールがまだ有効になっていません。しばらくしてからもう一度お試しください</string>
-  <string name="vm_change_pin_old_pin">古い PIN</string>
-  <string name="vm_change_pin_new_pin">新しい PIN</string>
   <string name="vm_change_pin_progress_message">お待ちください。</string>
   <string name="vm_change_pin_error_too_short">新しい PIN が短すぎます。</string>
   <string name="vm_change_pin_error_too_long">新しい PIN が長すぎます。</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN を変更できませんでした</string>
   <string name="change_pin_title">ボイスメール PIN の変更</string>
   <string name="change_pin_continue_label">続行</string>
-  <string name="change_pin_cancel_label">キャンセル</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">古い PIN の確認</string>
   <string name="change_pin_enter_old_pin_hint">続行するにはボイスメールの PIN を入力してください。</string>
   <string name="change_pin_enter_new_pin_header">新しい PIN の設定</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN が一致しません</string>
   <string name="change_pin_succeeded">ボイスメール PIN を更新しました</string>
   <string name="change_pin_system_error">PIN を設定できません</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">ボイスメールの音声文字変換</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">ボイスメールの音声文字変換結果の分析</string>
   <string name="voicemail_activating_summary_info">ボイスメールを有効にしています</string>
-  <string name="voicemail_transcription_preference_summary_info">Google の音声文字変換サービスを使用してボイスメールが文字に変換されます。%1$s</string>
-  <string name="voicemail_donate_preference_summary_info">よろしければ Google によるボイスメール メッセージの分析にご協力ください。分析結果は音声文字変換機能の精度改善に役立てさせていただきます。分析にあたっては、ボイスメールのメッセージを匿名で保存させていただきます。%1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">ビジュアル ボイスメールを OFF にします</string>
   <string name="confirm_disable_voicemail_dialog_message">OFF にすると、このアプリ内に保存されているボイスメールと Google による音声文字変換結果がすべて削除されます。ただし、ご利用の携帯通信会社がコピーを保存する可能性があります。</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">OFF にする</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ka/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ka/strings.xml
index 29a5f43..035f56b 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ka/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ka/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">ხმოვანი ფოსტა (%s)</string>
   <string name="voicemail_settings_title">ხმოვანი ფოსტა</string>
   <string name="voicemail_notifications_preference_title">შეტყობინებები</string>
   <string name="voicemail_change_greeting_preference_title">ხმოვანი ფოსტის მისალმება</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN-კოდის შეცვლა</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN-კოდის შესაცვლელად ჩართული უნდა იყოს ვიზუალური ხმოვანი ფოსტა</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">ვიზუალური ხმოვანი ფოსტა ჯერ გააქტიურებული არ არის. გთხოვთ, სცადოთ ხელახლა</string>
-  <string name="vm_change_pin_old_pin">ძველი PIN-კოდი</string>
-  <string name="vm_change_pin_new_pin">ახალი PIN-კოდი</string>
   <string name="vm_change_pin_progress_message">გთხოვთ, დაელოდოთ.</string>
   <string name="vm_change_pin_error_too_short">ახალი PIN-კოდი ძალიან მოკლეა.</string>
   <string name="vm_change_pin_error_too_long">ახალი PIN-კოდი ძალიან გრძელია.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN-კოდის შეცვლა შეუძლებელია</string>
   <string name="change_pin_title">ხმოვანი ფოსტის PIN-კოდის შეცვლა</string>
   <string name="change_pin_continue_label">გაგრძელება</string>
-  <string name="change_pin_cancel_label">გაუქმება</string>
-  <string name="change_pin_ok_label">კარგი</string>
   <string name="change_pin_enter_old_pin_header">დაადასტურეთ თქვენი ძველი PIN-კოდი</string>
   <string name="change_pin_enter_old_pin_hint">გასაგრძელებლად შეიყვანეთ თქვენი ხმოვანი ფოსტის PIN-კოდი.</string>
   <string name="change_pin_enter_new_pin_header">დააყენეთ ახალი PIN-კოდი</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-კოდები არ ემთხვევა</string>
   <string name="change_pin_succeeded">ხმოვანი ფოსტის PIN-კოდი განახლდა</string>
   <string name="change_pin_system_error">PIN-კოდის დაყენება შეუძლებელია</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">ხმოვანი ფოსტის ტრანსკრიბირება</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">ხმოვანი ფოსტის ტრანსკრიბირების ანალიზი</string>
   <string name="voicemail_activating_summary_info">მიმდინარეობს ხმოვანი ფოსტის აქტივაცია</string>
-  <string name="voicemail_transcription_preference_summary_info">მიიღეთ თქვენი ხმოვანი ფოსტის ტრანსკრიპტები Google-ის ტრანსკრიბირების სერვისის გამოყენებით. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">მიეცით უფლება Google-ს, განიხილოს თქვენი ხმოვანი ფოსტის შეტყობინებები ტრანსკრიბირების სიზუსტის გასაუმჯობესებლად. თქვენი ხმოვანი ფოსტის შეტყობინებები ანონიმურად შეინახება. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">ვიზუალური ხმოვანი ფოსტის გამორთვა</string>
   <string name="confirm_disable_voicemail_dialog_message">ეს წაშლის ამ აპში შენახულ ნებისმიერ ხმოვან შეტყობინებას და Google ტრანსკრიპტს. შესაძლოა თქვენმა ოპერატორმა შეინახოს თავისი ასლები.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">გამორთვა</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-kk/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-kk/strings.xml
index 873b36c..1fac144 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-kk/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-kk/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Дауыстық хабар (%s)</string>
   <string name="voicemail_settings_title">Дауыстық хабар</string>
   <string name="voicemail_notifications_preference_title">Хабарландырулар</string>
   <string name="voicemail_change_greeting_preference_title">Дауыстық поштаның сәлемдесу мәтіні</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN кодын өзгерту</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN кодын өзгерту үшін, визуалды дауыстық хабар функциясын қосу қажет</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Визуалды дауыстық хабар функциясы әлі қосылмаған. Кейінірек қайталап көріңіз</string>
-  <string name="vm_change_pin_old_pin">Ескі PIN коды</string>
-  <string name="vm_change_pin_new_pin">Жаңа PIN коды</string>
   <string name="vm_change_pin_progress_message">Күте тұрыңыз.</string>
   <string name="vm_change_pin_error_too_short">Жаңа PIN коды тым қысқа.</string>
   <string name="vm_change_pin_error_too_long">Жаңа PIN коды тым ұзын.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN кодын өзгерту мүмкін емес</string>
   <string name="change_pin_title">Дауыстық пошта PIN кодын өзгерту</string>
   <string name="change_pin_continue_label">Жалғастыру</string>
-  <string name="change_pin_cancel_label">Жабу</string>
-  <string name="change_pin_ok_label">Жарайды</string>
   <string name="change_pin_enter_old_pin_header">Ескі PIN кодын растау</string>
   <string name="change_pin_enter_old_pin_hint">Жалғастыру үшін дауыстық поштаның PIN кодын енгізіңіз.</string>
   <string name="change_pin_enter_new_pin_header">Жаңа PIN кодын орнату</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN кодтары сәйкес емес</string>
   <string name="change_pin_succeeded">Дауыстық пошта PIN коды жаңартылды</string>
   <string name="change_pin_system_error">PIN кодын орнату мүмкін болмады</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Дауыстық хабар транскрипциясы</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Дауыстық хабар транскрипциясын сараптау</string>
   <string name="voicemail_activating_summary_info">Дауыстық хабарды қосу</string>
-  <string name="voicemail_transcription_preference_summary_info">Google транскрипция қызметінің көмегімен дауыстық хабар транскрипцияларын оқыңыз.%1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Транскрипция сапасын арттыру мақсатында дауыстық хабарлардың Google тарапынан тексерілуіне рұқсат беріңіз. Дауыстық хабарлардың құпиялылығы сақталады.%1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Визуалдық дауыстық хабарды өшіру</string>
   <string name="confirm_disable_voicemail_dialog_message">Бұл әрекет осы қолданбада сақталған дауыстық хабарлар мен Google транскрипцияларын жояды. Оператор өз көшірмелерін сақтауы мүмкін.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ӨШІРУ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-km/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-km/strings.xml
index d4bf0f7..c1afd29 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-km/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-km/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">សារ​ជា​សំឡេង (%s)</string>
   <string name="voicemail_settings_title">សារ​ជា​សំឡេង</string>
   <string name="voicemail_notifications_preference_title">ការជូន​ដំណឹង</string>
   <string name="voicemail_change_greeting_preference_title">សារ​ស្វាគមន៍​ជា​សំឡេង​</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">ប្ដូរ​កូដ PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">សារ​ជា​សំឡេង​ដែល​អាច​មើល​ឃើញ​ត្រូវ​តែ​បើក​ដំណើរការ ដើម្បី​ផ្លាស់​ប្ដូរ​កូដ PIN បាន</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">សារ​ជា​សំឡេង​ដែល​អាច​មើល​ឃើញ​មិន​ទាន់​​ត្រូវ​បាន​បើក​ដំណើរការ​នៅ​ឡើយ​ទេ សូម​ព្យាយាម​ម្ដង​ទៀត​នៅ​ពេល​ក្រោយ</string>
-  <string name="vm_change_pin_old_pin">កូដ PIN ចាស់</string>
-  <string name="vm_change_pin_new_pin">កូដ PIN ថ្មី</string>
   <string name="vm_change_pin_progress_message">សូម​រង់ចាំ។</string>
   <string name="vm_change_pin_error_too_short">កូដ PIN ថ្មី​ខ្លី​ពេក។</string>
   <string name="vm_change_pin_error_too_long">កូដ PIN ថ្មី​វែង​ពេក។</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">មិន​អាច​ប្ដូរ​កូដ PIN បាន​ទេ</string>
   <string name="change_pin_title">ប្ដូរ​​កូដ PIN របស់​សារ​ជា​សំឡេង</string>
   <string name="change_pin_continue_label">បន្ត</string>
-  <string name="change_pin_cancel_label">បោះបង់</string>
-  <string name="change_pin_ok_label">យល់ព្រម</string>
   <string name="change_pin_enter_old_pin_header">បញ្ជាក់​កូដ PIN ចាស់​របស់​អ្នក</string>
   <string name="change_pin_enter_old_pin_hint">បញ្ចូល​កូដ PIN សម្រាប់​សារ​ជា​សំឡេង​របស់​អ្នក ​​ដើម្បី​បន្ត។</string>
   <string name="change_pin_enter_new_pin_header">កំណត់​កូដ PIN ថ្មី</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">កូដ PIN មិន​ត្រូវ​គ្នា</string>
   <string name="change_pin_succeeded">បាន​កែ​កូដ PIN របស់​សារ​ជា​សំឡេង</string>
   <string name="change_pin_system_error">មិន​អាច​កំណត់​កូដ PIN បាន​ទេ</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">​ប្រតិចារឹក​សារ​ជា​សំឡេង</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">ការវិភាគ​ប្រតិចារឹក​សារ​ជា​សំឡេង</string>
   <string name="voicemail_activating_summary_info">កំពុង​បើក​ដំណើរការ​សារ​ជា​សំឡេង</string>
-  <string name="voicemail_transcription_preference_summary_info">ទទួល​ប្រតិចារឹក​នៃ​សារ​ជា​សំឡេង​របស់​អ្នក​ដោយ​ប្រើប្រាស់​សេវាកម្ម​ប្រតិចារឹក​របស់ Google ។ %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">អនុញ្ញាត​ឲ្យ Google ពិនិត្យមើល​សារ​ជា​សំឡេង​របស់​អ្នក ដើម្បី​ធ្វើ​ឲ្យភាពត្រឹមត្រូវ​​នៃប្រតិចារឹក​ប្រសើរ​ឡើង។ សារ​ជា​សំឡេង​របស់​អ្នក​នឹង​ត្រូវបាន​រក្សាទុក​ជា​លក្ខណៈ​អនាមិក។ %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">បិទ​សារ​ជា​សំឡេង​ដែល​មើល​ឃើញ</string>
   <string name="confirm_disable_voicemail_dialog_message">វា​នឹង​លុប​​សារ​ជា​សំឡេង​ណាមួយ និង​ប្រតិចារឹក Google ដែល​បាន​រក្សាទុក​នៅ​ក្នុង​កម្មវិធីនេះ។ ក្រុមហ៊ុន​សេវា​ទូរសព្ទ​របស់​អ្នក​អាច​រក្សាទុក​ច្បាប់​ចម្លង​ផ្ទាល់ខ្លួន។</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">បិទ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-kn/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-kn/strings.xml
index b73b938..c583913 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-kn/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-kn/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">ಧ್ವನಿಮೇಲ್ (%s)</string>
   <string name="voicemail_settings_title">ಧ್ವನಿಮೇಲ್</string>
   <string name="voicemail_notifications_preference_title">ಅಧಿಸೂಚನೆಗಳು</string>
   <string name="voicemail_change_greeting_preference_title">ಧ್ವನಿಮೇಲ್ ಶುಭಾಶಯ</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">ಪಿನ್‌ ಬದಲಾಯಿಸಿ</string>
   <string name="voicemail_change_pin_preference_summary_disable">ಪಿನ್ ಬದಲಾಯಿಸಲು ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಸಕ್ರಿಯಗೊಳಿಸಬೇಕು</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಇನ್ನೂ ಸಕ್ರಿಯವಾಗಿಲ್ಲ, ದಯವಿಟ್ಟು ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ</string>
-  <string name="vm_change_pin_old_pin">ಹಳೆಯ ಪಿನ್</string>
-  <string name="vm_change_pin_new_pin">ಹೊಸ ಪಿನ್‌</string>
   <string name="vm_change_pin_progress_message">ದಯವಿಟ್ಟು ನಿರೀಕ್ಷಿಸಿ.</string>
   <string name="vm_change_pin_error_too_short">ಹೊಸ ಪಿನ್ ತುಂಬಾ ಚಿಕ್ಕದಾಗಿದೆ.</string>
   <string name="vm_change_pin_error_too_long">ಹೊಸ ಪಿನ್ ತುಂಬಾ ಉದ್ದವಾಗಿದೆ.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">ಪಿನ್ ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</string>
   <string name="change_pin_title">ಧ್ವನಿಮೇಲ್ ಪಿನ್‌ ಬದಲಾಯಿಸಿ</string>
   <string name="change_pin_continue_label">ಮುಂದುವರಿಸಿ</string>
-  <string name="change_pin_cancel_label">ರದ್ದು</string>
-  <string name="change_pin_ok_label">ಸರಿ</string>
   <string name="change_pin_enter_old_pin_header">ನಿಮ್ಮ ಹಳೆಯ ಪಿನ್‌ ಅನ್ನು ದೃಢೀಕರಿಸಿ</string>
   <string name="change_pin_enter_old_pin_hint">ಮುಂದುವರಿಸಲು ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಪಿನ್ ಅನ್ನು ನಮೂದಿಸಿ.</string>
   <string name="change_pin_enter_new_pin_header">ಹೊಸ ಪಿನ್ ಹೊಂದಿಸಿ</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN ಗಳು ಹೊಂದಾಣಿಕೆಯಾಗುತ್ತಿಲ್ಲ</string>
   <string name="change_pin_succeeded">ಧ್ವನಿಮೇಲ್ ಪಿನ್ ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲಾಗಿದೆ</string>
   <string name="change_pin_system_error">ಪಿನ್ ಹೊಂದಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">ಧ್ವನಿಮೇಲ್ ಪ್ರತಿಲೇಖನ</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">ಧ್ವನಿಮೇಲ್ ಟ್ರಾನ್ಸ್‌ಕ್ರಿಪ್ಷನ್ ವಿಶ್ಲೇಷಣೆ</string>
   <string name="voicemail_activating_summary_info">ಧ್ವನಿಮೇಲ್ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತಿದೆ</string>
-  <string name="voicemail_transcription_preference_summary_info">Google ನ ಪ್ರತಿಲೇಖನ ಸೇವೆ ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್‌ ಪ್ರತಿಲೇಖನಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">ಲಿಪ್ಯಂತರಗಳ ನಿಖರತೆಯನ್ನು ಸುಧಾರಿಸಲು ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಸಂದೇಶಗಳನ್ನು ಪರಿಶೀಲಿಸಲು Google ಗೆ ಅನುಮತಿಸಿ. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್ ಆಫ್ ಮಾಡಿ</string>
   <string name="confirm_disable_voicemail_dialog_message">ಈ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾದ ಯಾವುದೇ ಧ್ವನಿಮೇಲ್ ಮತ್ತು Google ಲಿಪ್ಯಂತರಗಳನ್ನು ಇದು ಅಳಿಸುತ್ತದೆ. ನಿಮ್ಮ ವಾಹಕವು ತನ್ನದೇ ಆದ ನಕಲುಗಳನ್ನು ಇರಿಸಿಕೊಳ್ಳಬಹುದು.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ಆಫ್</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ko/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ko/strings.xml
index 44823cb..de09b47 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ko/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ko/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">음성사서함(%s)</string>
   <string name="voicemail_settings_title">음성사서함</string>
   <string name="voicemail_notifications_preference_title">알림</string>
   <string name="voicemail_change_greeting_preference_title">음성사서함 인사말</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN 변경</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN을 변경하려면 시각적 음성사서함이 사용 설정되어 있어야 합니다</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">시각적 음성사서함이 아직 활성화되지 않았습니다. 나중에 다시 시도해 보세요</string>
-  <string name="vm_change_pin_old_pin">이전 PIN</string>
-  <string name="vm_change_pin_new_pin">새 PIN</string>
   <string name="vm_change_pin_progress_message">기다려 주세요.</string>
   <string name="vm_change_pin_error_too_short">새 PIN이 너무 짧습니다.</string>
   <string name="vm_change_pin_error_too_long">새 PIN이 너무 깁니다.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN을 변경할 수 없습니다</string>
   <string name="change_pin_title">음성사서함 PIN 변경</string>
   <string name="change_pin_continue_label">계속</string>
-  <string name="change_pin_cancel_label">취소</string>
-  <string name="change_pin_ok_label">확인</string>
   <string name="change_pin_enter_old_pin_header">이전 PIN 확인</string>
   <string name="change_pin_enter_old_pin_hint">계속하려면 음성사서함 PIN을 입력하세요.</string>
   <string name="change_pin_enter_new_pin_header">새 PIN 설정</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN이 일치하지 않습니다</string>
   <string name="change_pin_succeeded">음성사서함 PIN이 업데이트되었습니다</string>
   <string name="change_pin_system_error">PIN을 설정할 수 없습니다</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">음성사서함 메시지 텍스트 변환</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">음성메일 텍스트 변환 분석</string>
   <string name="voicemail_activating_summary_info">음성사서함 활성화 중</string>
-  <string name="voicemail_transcription_preference_summary_info">Google의 텍스트 변환 서비스를 통해 음성사서함 메시지가 스크립트로 제공됩니다. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">텍스트 변환 정확성을 개선하기 위해 Google에서 음성사서함 메시지를 검토하도록 허용해 주세요. 음성사서함 메시지는 익명으로 저장됩니다. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">시각적 음성사서함 사용 중지</string>
   <string name="confirm_disable_voicemail_dialog_message">이렇게 하면 이 앱에 저장된 모든 음성사서함 메시지와 Google 텍스트 변환 파일이 삭제됩니다. 내 이동통신사에서 별도로 사본을 보관할 수 있습니다.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">사용 중지</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ky/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ky/strings.xml
index a9d30c3..98fb928 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ky/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ky/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Үн почтасы (%s)</string>
   <string name="voicemail_settings_title">Үн почтасы</string>
   <string name="voicemail_notifications_preference_title">Эскертмелер</string>
   <string name="voicemail_change_greeting_preference_title">Үн почтасынын саламдашуусу</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN кодду өзгөртүү</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN кодду өзгөртүү үчүн визуалдык үн почтасын иштетүү керек</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Визуалдык үн почтаңыз күйгүзүлгөн жок. Кайра аракет кылыңыз.</string>
-  <string name="vm_change_pin_old_pin">Эски PIN код</string>
-  <string name="vm_change_pin_new_pin">Жаңы PIN код</string>
   <string name="vm_change_pin_progress_message">Күтө туруңуз.</string>
   <string name="vm_change_pin_error_too_short">Жаңы PIN код өтө эле кыска.</string>
   <string name="vm_change_pin_error_too_long">Жаңы PIN код өтө эле узун.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN код өзгөртүлгөн жок</string>
   <string name="change_pin_title">Үн почтасынын PIN кодун өзгөртүү</string>
   <string name="change_pin_continue_label">Улантуу</string>
-  <string name="change_pin_cancel_label">Жок</string>
-  <string name="change_pin_ok_label">Жарайт</string>
   <string name="change_pin_enter_old_pin_header">Эски PIN кодуңузду ырастаңыз</string>
   <string name="change_pin_enter_old_pin_hint">Улантуу үчүн үн почтаңыздын PIN кодун киргизиңиз.</string>
   <string name="change_pin_enter_new_pin_header">Жаңы PIN коюңуз</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN коддор дал келген жок</string>
   <string name="change_pin_succeeded">Үн почтасынын PIN коду жаңыртылды</string>
   <string name="change_pin_system_error">PIN код коюлбайт</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Үн почтасынын транскрипциясы</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Үн почтасынын транскрипциясын талдоо</string>
   <string name="voicemail_activating_summary_info">Үн почтасын иштетүү</string>
-  <string name="voicemail_transcription_preference_summary_info">Google\'дун транскрипция кызматы аркылуу үн почтаңыздын транскрипцияларын алуу. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Транскрипциянын тактыгын жакшыртуу үчүн үн почтаңыздын билдирүүлөрүн Google карап чыгышы керек. Үн почтаңыздын билдирүүлөрү жашыруун мүнөздө сакталат. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Визуалдык үн почтасын өчүрүңүз</string>
   <string name="confirm_disable_voicemail_dialog_message">Бул колдонмодо сакталган үн почтасын жана Google транскрипттерин жок кылат. Байланыш операторуңуз көчүрмөлөрүн өзүндө сактайт.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ӨЧҮРҮҮ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-lo/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-lo/strings.xml
index bfb8e79..f93c611 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-lo/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-lo/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">ຂໍ້​ຄວາມ​ສຽງ (%s)</string>
   <string name="voicemail_settings_title">ຂໍ້ຄວາມສຽງ</string>
   <string name="voicemail_notifications_preference_title">ການແຈ້ງເຕືອນ</string>
   <string name="voicemail_change_greeting_preference_title">ຄຳທັກທາຍຂໍ້ຄວາມສຽງ</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">​ປ່ຽນ​ລະຫັດ PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">ຈະຕ້ອງເປີດໃຊ້ຂໍ້ຄວາມສຽງສະເໝືອນເພື່ອປ່ຽນ PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">ຍັງບໍໄດ້ເປີດໃຊ້ຂໍ້ຄວາມສຽງສະເໝືອນເທື່ອ, ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ</string>
-  <string name="vm_change_pin_old_pin">ລະຫັດ PIN ເກົ່າ</string>
-  <string name="vm_change_pin_new_pin">ລະຫັດ PIN ໃໝ່</string>
   <string name="vm_change_pin_progress_message">ກະລຸນາລໍຖ້າ.</string>
   <string name="vm_change_pin_error_too_short">ລະຫັດ PIN ໃໝ່ສັ້ນເກີນໄປ.</string>
   <string name="vm_change_pin_error_too_long">ລະຫັດ PIN ໃໝ່ຍາວເກີນໄປ.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">ບໍ່ສາມາດປ່ຽນລະຫັດ PIN ໄດ້</string>
   <string name="change_pin_title">ປ່ຽນລະຫັດ PIN ຂໍ້ຄວາມສຽງ</string>
   <string name="change_pin_continue_label">ສືບຕໍ່</string>
-  <string name="change_pin_cancel_label">ຍົກເລີກ</string>
-  <string name="change_pin_ok_label">ຕົກລົງ</string>
   <string name="change_pin_enter_old_pin_header">ຢືນຢັນລະຫັດ PIN ເກົ່າຂອງທ່ານ</string>
   <string name="change_pin_enter_old_pin_hint">ໃສ່ລະຫັດ PIN ຂໍ້ຄວາມສຽງຂອງທ່ານເພື່ອດຳເນີນການຕໍ່.</string>
   <string name="change_pin_enter_new_pin_header">ຕັ້ງ​ເປັນ PIN ໃຫມ່</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">ລະຫັດ PIN ບໍ່ກົງກັນ</string>
   <string name="change_pin_succeeded">ອັບເດດລະຫັດ PIN ຂໍ້ຄວາມສຽງແລ້ວ</string>
   <string name="change_pin_system_error">ບໍ່ສາມາດຕັ້ງລະຫັດ PIN ໄດ້</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">ການຖອດຂໍ້ຄວາມສຽງ</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">ການວິເຄາະການຖອດຂໍ້ຄວາມສຽງ</string>
   <string name="voicemail_activating_summary_info">ກຳລັງເປີດໃຊ້ຂໍ້ຄວາມສຽງ</string>
-  <string name="voicemail_transcription_preference_summary_info">ຮັບການຖອດຂໍ້ຄວາມຂອງຂໍ້ຄວາມສຽງທ່ານໂດຍໃຊ້ບໍລິການຖອດຂໍ້ຄວາມຂອງ Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">ໃຫ້ Google ກວດສອບຂໍ້ຄວາມສຽງຂອງທ່ານເພື່ອປັບປຸງຄວາມຖືກຕ້ອງຂອງການຖອດຂໍ້ຄວາມ. ຂໍ້ຄວາມສຽງຂອງທ່ານຈະຖືກຈັດເກັບໂດຍບໍ່ລະບຸຊື່. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">ປິດຂໍ້ຄວາມສຽງສະເໝືອນ</string>
   <string name="confirm_disable_voicemail_dialog_message">ນີ້ຈະເປັນການລຶບຂໍ້ຄວາມສຽງໃດກໍຕາມທີ່ມີ ແລະ ການຖອດຂໍ້ຄວາມສຽງ Google ທີ່ບັນທຶກໄວ້ພາຍໃນແອັບນີ້. ຜູ້ໃຫ້ບໍລິການຂອງທ່ານອາດມີສຳເນົາຂອງຕົວເອງໄວ້ຢູ່.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ປິດ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-lt/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-lt/strings.xml
index 2439951..11a4a94 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-lt/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-lt/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Balso paštas (%s)</string>
   <string name="voicemail_settings_title">Balso paštas</string>
   <string name="voicemail_notifications_preference_title">Pranešimai</string>
   <string name="voicemail_change_greeting_preference_title">Balso pašto atsakiklio žinutė</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN kodo keitimas</string>
   <string name="voicemail_change_pin_preference_summary_disable">Vaizdinis balso paštas turi būti įgalintas, kad būtų galima pakeisti PIN kodą</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Vaizdinis balso paštas dar nesuaktyvintas, vėliau bandykite dar kartą</string>
-  <string name="vm_change_pin_old_pin">Senas PIN kodas</string>
-  <string name="vm_change_pin_new_pin">Naujas PIN kodas</string>
   <string name="vm_change_pin_progress_message">Palaukite.</string>
   <string name="vm_change_pin_error_too_short">Naujas PIN kodas per trumpas.</string>
   <string name="vm_change_pin_error_too_long">Naujas PIN kodas per ilgas.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Nepavyko pakeisti PIN kodo</string>
   <string name="change_pin_title">Balso pašto PIN kodo keitimas</string>
   <string name="change_pin_continue_label">Tęsti</string>
-  <string name="change_pin_cancel_label">Atšaukti</string>
-  <string name="change_pin_ok_label">Gerai</string>
   <string name="change_pin_enter_old_pin_header">Seno PIN kodo patvirtinimas</string>
   <string name="change_pin_enter_old_pin_hint">Įveskite balso pašto PIN kodą, kad galėtumėte tęsti.</string>
   <string name="change_pin_enter_new_pin_header">Naujo PIN kodo nustatymas</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN kodai nesutampa</string>
   <string name="change_pin_succeeded">Balso pašto PIN kodas atnaujintas</string>
   <string name="change_pin_system_error">Nepavyksta nustatyti PIN kodo</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Balso pašto pranešimų transkribavimas</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Balso pašto pranešimų transkrib. analizė</string>
   <string name="voicemail_activating_summary_info">Suaktyvinamas balso paštas</string>
-  <string name="voicemail_transcription_preference_summary_info">Gaukite balso pašto pranešimų nuorašus naudodami „Google“ transkribavimo paslaugą. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Leiskite „Google“ peržiūrėti balso pašto pranešimus, kad būtų galima patobulinti transkribavimo tikslumą. Jūsų balso pašto pranešimai saugomi anonimiškai. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Vaizdinio balso pašto išjungimas</string>
   <string name="confirm_disable_voicemail_dialog_message">Tai atlikus bus ištrinti visi balso pašto pranešimai ir „Google“ nuorašai, saugomi šioje programoje. Operatorius gali pasilikti savo kopijas.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">IŠJUNGTI</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-lv/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-lv/strings.xml
index 1563b1c..5029dcf 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-lv/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-lv/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Balss pasts (%s)</string>
   <string name="voicemail_settings_title">Balss pasts</string>
   <string name="voicemail_notifications_preference_title">Paziņojumi</string>
   <string name="voicemail_change_greeting_preference_title">Balss pasta sveiciens</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Mainīt PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Lai varētu mainīt PIN, ir jābūt iespējotam vizuālajam balss pastam.</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Vizuālais balss pasts vēl nav aktivizēts. Lūdzu, vēlāk mēģiniet vēlreiz.</string>
-  <string name="vm_change_pin_old_pin">Iepriekšējais PIN</string>
-  <string name="vm_change_pin_new_pin">Jaunais PIN</string>
   <string name="vm_change_pin_progress_message">Lūdzu, uzgaidiet!</string>
   <string name="vm_change_pin_error_too_short">Jaunais PIN ir pārāk īss.</string>
   <string name="vm_change_pin_error_too_long">Jaunais PIN ir pārāk garš.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Neizdevās nomainīt PIN.</string>
   <string name="change_pin_title">Balss pasta PIN mainīšana</string>
   <string name="change_pin_continue_label">Turpināt</string>
-  <string name="change_pin_cancel_label">Atcelt</string>
-  <string name="change_pin_ok_label">Labi</string>
   <string name="change_pin_enter_old_pin_header">Iepriekšējā PIN apstiprināšana</string>
   <string name="change_pin_enter_old_pin_hint">Lai turpinātu, ievadiet savu balss pasta PIN.</string>
   <string name="change_pin_enter_new_pin_header">Jauna PIN iestatīšana</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN kodi neatbilst.</string>
   <string name="change_pin_succeeded">Balss pasta PIN atjaunināts</string>
   <string name="change_pin_system_error">Nevar iestatīt PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Balss pasta transkripcija</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Balss pasta transkripcijas analīze</string>
   <string name="voicemail_activating_summary_info">Notiek balss pasta aktivizēšana.</string>
-  <string name="voicemail_transcription_preference_summary_info">Iegūstiet sava balss pasta transkripciju, izmantojot Google transkripcijas pakalpojumu. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Ļaujiet Google pārskatīt jūsu balss pasta ziņojumus, lai uzlabotu transkripcijas precizitāti. Jūsu balss pasta ziņojumi tiek glabāti anonīmi. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Vizuālā balss pasta izslēgšana</string>
   <string name="confirm_disable_voicemail_dialog_message">Tiks dzēsti visi balss pasta ziņojumi un Google transkripcijas, kas saglabātas šajā lietotnē. Iespējams, jūsu mobilo sakaru operators saglabās savas kopijas.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">IZSLĒGT</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-mk/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-mk/strings.xml
index 554dd2e..6c6be26 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-mk/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-mk/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Говорна пошта (%s)</string>
   <string name="voicemail_settings_title">Говорна пошта</string>
   <string name="voicemail_notifications_preference_title">Известувања</string>
   <string name="voicemail_change_greeting_preference_title">Поздрав за говорната пошта</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Променете PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">За променување на PIN-кодот, мора да се овозможи визуелна говорна пошта</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Визуелната говорна пошта сѐ уште не е активна. Обидете се повторно подоцна</string>
-  <string name="vm_change_pin_old_pin">Стар PIN</string>
-  <string name="vm_change_pin_new_pin">Нов PIN</string>
   <string name="vm_change_pin_progress_message">Почекајте.</string>
   <string name="vm_change_pin_error_too_short">Новиот PIN е премногу кус.</string>
   <string name="vm_change_pin_error_too_long">Новиот PIN е премногу долг.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN-кодот не може да се промени</string>
   <string name="change_pin_title">Променете го PIN-кодот на говорната пошта</string>
   <string name="change_pin_continue_label">Продолжи</string>
-  <string name="change_pin_cancel_label">Откажи</string>
-  <string name="change_pin_ok_label">Во ред</string>
   <string name="change_pin_enter_old_pin_header">Потврдете го стариот PIN</string>
   <string name="change_pin_enter_old_pin_hint">Внесете го PIN-кодот на говорната пошта за да продолжите.</string>
   <string name="change_pin_enter_new_pin_header">Поставете нов PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-кодовите не се совпаѓаат</string>
   <string name="change_pin_succeeded">PIN-кодот на говорната пошта е ажуриран</string>
   <string name="change_pin_system_error">Не може да се постави PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Транскрипција на говорна пошта</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Анализа на транскрипција на гов. пошта</string>
   <string name="voicemail_activating_summary_info">Се активира говорна пошта</string>
-  <string name="voicemail_transcription_preference_summary_info">Добивајте преписи од вашата говорна пошта со услугата за транскрипција на Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Дозволете Google да ги прегледува вашите пораки од говорната пошта за зголемување на прецизноста на преписот. Пораките во говорната пошта се складираат анонимно. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Исклучување визуелна говорна пошта</string>
   <string name="confirm_disable_voicemail_dialog_message">Со ова ќе се избришат сите говорни пораки и преписите на Google складирани во апликацијава. Вашиот оператор може да ги зачува своите копии.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ИСКЛУЧИ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ml/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ml/strings.xml
index 2b16d15..8c5a89a 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ml/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ml/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">വോയ്‌സ്‌മെയിൽ (%s)</string>
   <string name="voicemail_settings_title">വോയ്‌സ്‌മെയിൽ</string>
   <string name="voicemail_notifications_preference_title">അറിയിപ്പുകൾ</string>
   <string name="voicemail_change_greeting_preference_title">വോയ്‌സ്‌മെയിൽ ആശംസ</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">പിൻ മാറ്റുക</string>
   <string name="voicemail_change_pin_preference_summary_disable">പിൻ മാറ്റുന്നതിന് വിഷ്വൽ വോയ്‌സ്‌മെയിൽ പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട്</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">വിഷ്വൽ വോയ്‌സ്‌മെയിൽ ഇതുവരെ സജീവമാക്കിയിട്ടില്ല, പിന്നീട് വീണ്ടും ശ്രമിച്ചുനോക്കുക</string>
-  <string name="vm_change_pin_old_pin">പഴയ പിൻ</string>
-  <string name="vm_change_pin_new_pin">പുതിയ പിൻ</string>
   <string name="vm_change_pin_progress_message">കാത്തിരിക്കുക.</string>
   <string name="vm_change_pin_error_too_short">പുതിയ പിൻ വളരെ ചെറുതാണ്.</string>
   <string name="vm_change_pin_error_too_long">പുതിയ പിൻ വളരെ ദൈർഘ്യമേറിയതാണ്.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">പിൻ മാറ്റാനായില്ല</string>
   <string name="change_pin_title">വോയ്‌സ്മെയിൽ പിൻ മാറ്റുക</string>
   <string name="change_pin_continue_label">തുടരുക</string>
-  <string name="change_pin_cancel_label">റദ്ദാക്കുക</string>
-  <string name="change_pin_ok_label">ശരി</string>
   <string name="change_pin_enter_old_pin_header">നിങ്ങളുടെ പഴയ പിൻ സ്ഥിരീകരിക്കുക</string>
   <string name="change_pin_enter_old_pin_hint">തുടരാൻ നിങ്ങളുടെ വോയ്‌സ്മെയിൽ പിൻ നൽകുക.</string>
   <string name="change_pin_enter_new_pin_header">പുതിയ PIN സജ്ജമാക്കുക</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-കൾ പൊരുത്തപ്പെടുന്നില്ല</string>
   <string name="change_pin_succeeded">വോയ്‌സ്‌മെയിൽ പിൻ അപ്‌ഡേറ്റുചെയ്‌തു</string>
   <string name="change_pin_system_error">പിൻ സജ്ജമാക്കാൻ കഴിയുന്നില്ല</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">വോയ്‌സ്‌മെയിൽ ട്രാൻസ്‌ക്രിപ്ഷൻ</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">വോയ്‌സ്‌മെയിൽ ട്രാൻസ്‌ക്രിപ്ഷൻ അനാലിസിസ്</string>
   <string name="voicemail_activating_summary_info">വോയ്‌സ്‌മെയിൽ സജീവമാക്കുന്നു</string>
-  <string name="voicemail_transcription_preference_summary_info">Google-ന്റെ ട്രാൻസ്‌ക്രിപ്ഷൻ സേവനം ഉപയോഗിച്ച് നിങ്ങളുടെ വോയ്‌സ്‌മെയിലിന്റെ ട്രാൻസ്‌ക്രിപ്റ്റുകൾ നേടുക. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">ട്രാൻസ്‌ക്രിപ്ഷൻ നിലവാരം മെച്ചപ്പെടുത്താനായി, വോയ്‌സ്‌മെയിൽ സന്ദേശങ്ങൾ അവലോകനം ചെയ്യാൻ Google-നെ അനുവദിക്കുക. നിങ്ങളുടെ വോയ്‌സ്‌മെയിൽ സന്ദേശങ്ങൾ അജ്ഞാതമായി സംഭരിക്കപ്പെടും. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">വിഷ്വൽ വോയ്‌സ്‌മെയിൽ ഓഫാക്കുക</string>
   <string name="confirm_disable_voicemail_dialog_message">ഇത്, ഈ ആപ്പിനുള്ളിൽ സംഭരിച്ചിരിക്കുന്ന എല്ലാ വോയ്‌സ്‌മെയിലും Google ട്രാൻസ്‌ക്രിപ്റ്റുകളും ഇല്ലാതാക്കും. നിങ്ങളുടെ കാരിയർ അതിന്റെ തന്നെ പകർപ്പുകൾ സൂക്ഷിച്ചേക്കാം.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ഓഫാക്കുക</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-mn/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-mn/strings.xml
index 6415e75..e1f43a4 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-mn/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-mn/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Дуут шуудан (%s)</string>
   <string name="voicemail_settings_title">Дуут шуудан</string>
   <string name="voicemail_notifications_preference_title">Мэдэгдэл</string>
   <string name="voicemail_change_greeting_preference_title">Дуут шуудангийн мэндчилгээ</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN өөрчлөх</string>
   <string name="voicemail_change_pin_preference_summary_disable">Харагдах дуут шуудан PIN-г өөрчлөх боломжтой байх ёстой</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Харагдах дуут шуудан хараахан идэвхжээгүй байна, дараа дахин оролдоно уу</string>
-  <string name="vm_change_pin_old_pin">Хуучин PIN</string>
-  <string name="vm_change_pin_new_pin">Шинэ PIN</string>
   <string name="vm_change_pin_progress_message">Түр хүлээнэ үү.</string>
   <string name="vm_change_pin_error_too_short">Шинэ PIN хэт богино байна.</string>
   <string name="vm_change_pin_error_too_long">Шинэ PIN хэт урт байна.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN-г өөрчлөх боломжгүй</string>
   <string name="change_pin_title">Дуут шуудангийн PIN-г өөрчлөх</string>
   <string name="change_pin_continue_label">Үргэлжлүүлэх</string>
-  <string name="change_pin_cancel_label">Цуцлах</string>
-  <string name="change_pin_ok_label">Ок</string>
   <string name="change_pin_enter_old_pin_header">Хуучин PIN-ээ баталгаажуулна уу</string>
   <string name="change_pin_enter_old_pin_hint">Үргэлжлүүлэхийн тулд дуут шуудангийн PIN оруулна уу.</string>
   <string name="change_pin_enter_new_pin_header">Шинэ PIN тохируулах</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN код таарахгүй байна</string>
   <string name="change_pin_succeeded">Дуут шуудангийн PIN шинэчлэгдсэн</string>
   <string name="change_pin_system_error">PIN тохируулах боломжгүй</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Дуут шуудангийн сийрүүлэг</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Дуут шуудангийн сийрүүлгийн анализ</string>
   <string name="voicemail_activating_summary_info">Дуут шууданг идэвхжүүлж байна</string>
-  <string name="voicemail_transcription_preference_summary_info">Google сийрүүлгийн үйлчилгээ ашиглан өөрийн дуут шуудангийн сийрүүлгийг авна уу. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Сийрүүлгийн нарийвчлалыг сайжруулахын тулд Google-д өөрийн дуут шуудангийн зурвасыг хянахыг зөвшөөрнө үү. Таны дуут шуудангийн зурвасыг нэргүйгээр хадгална. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Уншиж болох дуут шууданг унтраах</string>
   <string name="confirm_disable_voicemail_dialog_message">Ингэснээр энэ апп дотор хадгалсан аливаа дуут шуудан болон Google сийрүүлгийг устгах болно. Таны үүрэн холбооны компанид өөрийнх нь хуулбар хадгалагдаж байж магадгүй.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">УНТРААХ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-mr/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-mr/strings.xml
index 16459cb..e29b021 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-mr/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-mr/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">व्हॉइसमेल (%s)</string>
   <string name="voicemail_settings_title">व्हॉइसमेल</string>
   <string name="voicemail_notifications_preference_title">सूचना</string>
   <string name="voicemail_change_greeting_preference_title">व्‍हॉइसमेल ग्रीटिंग</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">पिन बदला</string>
   <string name="voicemail_change_pin_preference_summary_disable">पिन बदलण्‍यासाठी व्हिज्युअल व्हॉइसमेल सुरू करणे आवश्‍यक आहे</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">व्हिज्युअल व्हॉइसमेल अजून चालू केले नाही, कृपया नंतर पुन्हा प्रयत्न करा</string>
-  <string name="vm_change_pin_old_pin">जुना पिन</string>
-  <string name="vm_change_pin_new_pin">नवीन पिन</string>
   <string name="vm_change_pin_progress_message">कृपया वाट पाहा.</string>
   <string name="vm_change_pin_error_too_short">नवीन पिन खूप लहान आहे.</string>
   <string name="vm_change_pin_error_too_long">नवीन पिन खूप मोठा आहे.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">पिन बदलू शकत नाही</string>
   <string name="change_pin_title">व्हॉइसमेल पिन बदला</string>
   <string name="change_pin_continue_label">सुरू ठेवा</string>
-  <string name="change_pin_cancel_label">रद्द करा</string>
-  <string name="change_pin_ok_label">ठीक आहे</string>
   <string name="change_pin_enter_old_pin_header">तुमच्या जुन्या पिनची खात्री पटवा</string>
   <string name="change_pin_enter_old_pin_hint">सुरू ठेवण्‍यासाठी तुमचा व्हॉइसमेल पिन टाका.</string>
   <string name="change_pin_enter_new_pin_header">नवीन पिन सेट करा</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">पिन जुळत नाहीत</string>
   <string name="change_pin_succeeded">व्हॉइसमेल पिन अपडेट केला</string>
   <string name="change_pin_system_error">पिन सेट करू शकत नाही</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">व्‍हॉइसमेल प्रतिलेखन</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">व्‍हॉइसमेल प्रतिलेख विश्‍लेषण</string>
   <string name="voicemail_activating_summary_info">व्‍हॉइसमेल सक्रिय करत आहे</string>
-  <string name="voicemail_transcription_preference_summary_info">Google च्‍या प्रतिलेखन सेवा वापरून प्रतिलेखने मिळवा. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">प्रतिलेखन अचूकता सुधारण्‍यासाठी Google ला तुमचे व्‍हॉइसमेल मेसेजांचे पुनरावलोकन करू द्या. तुमचे व्‍हॉइसमेल मेसेज निनावी स्‍टोअर केले आहेत. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">व्हिज्युअल व्हॉइसमेल बंद करा</string>
   <string name="confirm_disable_voicemail_dialog_message">हे या अ‍ॅपमध्ये स्टोअर केलेला प्रत्येक व्हॉइसमेल आणि Google प्रतिलेख हटवेल. तुमचा वाहक स्वत:साठी त्याच्या कॉपी ठेवून घेईल.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">बंद करा</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ms/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ms/strings.xml
index 720274d..0a13be4 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ms/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ms/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Mel suara (%s)</string>
   <string name="voicemail_settings_title">Mel suara</string>
   <string name="voicemail_notifications_preference_title">Pemberitahuan</string>
   <string name="voicemail_change_greeting_preference_title">Sapaan mel suara</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Tukar PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Mel suara visual mesti didayakan untuk menukar PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Mel suara visual belum diaktifkan. Sila cuba sebentar lagi</string>
-  <string name="vm_change_pin_old_pin">PIN lama</string>
-  <string name="vm_change_pin_new_pin">PIN baharu</string>
   <string name="vm_change_pin_progress_message">Sila tunggu.</string>
   <string name="vm_change_pin_error_too_short">PIN baharu terlalu pendek.</string>
   <string name="vm_change_pin_error_too_long">PIN baharu terlalu panjang.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Tidak dapat menukar PIN</string>
   <string name="change_pin_title">Tukar PIN Mel Suara</string>
   <string name="change_pin_continue_label">Teruskan</string>
-  <string name="change_pin_cancel_label">Batal</string>
-  <string name="change_pin_ok_label">Ok</string>
   <string name="change_pin_enter_old_pin_header">Sahkan PIN lama anda</string>
   <string name="change_pin_enter_old_pin_hint">Masukkan PIN mel suara anda untuk meneruskan.</string>
   <string name="change_pin_enter_new_pin_header">Tetapkan PIN baharu</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN tidak sepadan</string>
   <string name="change_pin_succeeded">PIN mel suara dikemas kini</string>
   <string name="change_pin_system_error">Tidak dapat menetapkan PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transkripsi mel suara</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analisis transkripsi mel suara</string>
   <string name="voicemail_activating_summary_info">Mengaktifkan mel suara</string>
-  <string name="voicemail_transcription_preference_summary_info">Dapatkan transkrip mel suara anda menggunakan perkhidmatan transkripsi Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Benarkan Google menyemak mesej mel suara anda bagi meningkatkan ketepatan transkripsi. Mesej mel suara anda disimpan secara awanama. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Matikan mel suara visual</string>
   <string name="confirm_disable_voicemail_dialog_message">Tindakan ini akan memadamkan sebarang mel suara dan transkrip Google yang disimpan dalam apl ini. Pembawa anda mungkin menyimpan salinannya sendiri.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">MATIKAN</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-my/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-my/strings.xml
index dd3e8d3..115092b 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-my/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-my/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">အသံမေးလ် (%s)</string>
   <string name="voicemail_settings_title">အသံမေးလ်</string>
   <string name="voicemail_notifications_preference_title">အသိပေးချက်များ</string>
   <string name="voicemail_change_greeting_preference_title">အသံမေးလ် နှုတ်ခွန်းဆက်သမှု</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">ပင်နံပါတ် ပြောင်းခြင်း</string>
   <string name="voicemail_change_pin_preference_summary_disable">ပင်နံပါတ်ပြောင်းရန် ကြည့်ရှုစီမံနိုင်သော အသံမေးလ်ကို ဖွင့်ထားရပါမည်</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">ကြည့်ရှုစီမံနိုင်သော အသံမေးလ်ကို မဖွင့်ရသေးပါ၊ နောက်မှ ထပ်ဖွင့်ကြည့်ပါ</string>
-  <string name="vm_change_pin_old_pin">ပင်နံပါတ်အဟောင်း</string>
-  <string name="vm_change_pin_new_pin">ပင်နံပါတ်အသစ်</string>
   <string name="vm_change_pin_progress_message">ခဏစောင့်ပါ။</string>
   <string name="vm_change_pin_error_too_short">ပင်နံပါတ်အသစ်မှာ တိုလွန်းနေပါသည်။</string>
   <string name="vm_change_pin_error_too_long">ပင်နံပါတ်အသစ်မှာ ရှည်လွန်းနေပါသည်။</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">ပင်နံပါတ်ကို ပြောင်း၍ မရပါ</string>
   <string name="change_pin_title">အသံမေးလ်ပင်နံပါတ်ကို ပြောင်းခြင်း</string>
   <string name="change_pin_continue_label">ဆက်လုပ်ရန်</string>
-  <string name="change_pin_cancel_label">မလုပ်တော့</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">သင့်ပင်နံပါတ်အဟောင်းကို အတည်ပြုခြင်း</string>
   <string name="change_pin_enter_old_pin_hint">ဆက်လုပ်ရန်အတွက် သင့်အသံမေးလ်ပင်နံပါတ်ကို ထည့်ပါ။</string>
   <string name="change_pin_enter_new_pin_header">ပင်နံပါတ်အသစ်ကို သတ်မှတ်ခြင်း</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">ပင်နံပါတ်များမှာ ထပ်တူမကျပါ</string>
   <string name="change_pin_succeeded">အသံမေးလ်ပင်နံပါတ်ကို အပ်ဒိတ်လုပ်လိုက်ပါပြီ</string>
   <string name="change_pin_system_error">ပင်နံပါတ်ကို သတ်မှတ်၍ မရပါ</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">အသံမေးလ် စာသားမှတ်တမ်း</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">အသံမေးလ်စာသားမှတ်တမ်း စိစစ်ခြင်း</string>
   <string name="voicemail_activating_summary_info">အသံမေးလ်ကို စတင်အသုံးပြုနေသည်</string>
-  <string name="voicemail_transcription_preference_summary_info">Google ၏ စာသားမှတ်တမ်း ဝန်ဆောင်မှုကို သုံးပြီး သင့်အသံမေးလ်၏ စာသားမှတ်တမ်းကို ရယူပါ %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">စာသားမှတ်တမ်းတိကျမှု ပိုမိုကောင်းမွန်လာစေရန် Google အား သင်၏ အသံမေးလ်မက်ဆေ့ဂျ်များကို သုံးသပ်ခွင့်ပေးလိုက်ပါ။ သင်၏ အသံမေးလ်မက်ဆေ့ဂျ်များကို အမည်မဖော်ဘဲ သိမ်းထားပါသည်။ %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">ကြည့်ရှုစီမံနိုင်သော အသံမေးလ်ကို ပိတ်ပါ</string>
   <string name="confirm_disable_voicemail_dialog_message">ဤသည်က ဤအက်ပ်အတွင်း သိမ်းဆည်းထားသော မည်သည့်အသံမေးလ်နှင့် Google စာသားမှတ်တမ်းကိုမဆို ဖျက်ပစ်ပါမည်။ သင့်ဖုန်းကုမ္ပဏီသည် ၎င်း၏ကိုယ်ပိုင်မိတ္တူများကို သိမ်းဆည်းထားနိုင်သည်။</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ပိတ်ရန်</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-nb/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-nb/strings.xml
index 7d11cc2..090fa0e 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-nb/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-nb/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Talepostkasse (%s)</string>
   <string name="voicemail_settings_title">Talepost</string>
   <string name="voicemail_notifications_preference_title">Varsler</string>
   <string name="voicemail_change_greeting_preference_title">Taleposthilsen</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Endre PIN-koden</string>
   <string name="voicemail_change_pin_preference_summary_disable">Du må slå på visuell talepost for å endre PIN-koden</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visuell talepost er ikke slått på ennå – prøv igjen senere</string>
-  <string name="vm_change_pin_old_pin">Gammel PIN-kode</string>
-  <string name="vm_change_pin_new_pin">Ny PIN-kode</string>
   <string name="vm_change_pin_progress_message">Vent litt.</string>
   <string name="vm_change_pin_error_too_short">Den nye PIN-koden er for kort.</string>
   <string name="vm_change_pin_error_too_long">Den nye PIN-koden er for lang.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Kan ikke bytte PIN-kode</string>
   <string name="change_pin_title">Endre PIN-kode for talemeldinger</string>
   <string name="change_pin_continue_label">Fortsett</string>
-  <string name="change_pin_cancel_label">Avbryt</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Bekreft den gamle PIN-koden din</string>
   <string name="change_pin_enter_old_pin_hint">Skriv inn PIN-koden for talemeldinger for å fortsette.</string>
   <string name="change_pin_enter_new_pin_header">Angi en ny PIN-kode</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-kodene stemmer ikke overens</string>
   <string name="change_pin_succeeded">PIN-koden for talemeldinger ble oppdatert</string>
   <string name="change_pin_system_error">Kan ikke angi PIN-kode</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transkripsjon av talepost</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analyse av transkripsjoner av talepost</string>
   <string name="voicemail_activating_summary_info">Slår på talepost</string>
-  <string name="voicemail_transcription_preference_summary_info">Få transkripsjoner av talemeldingene dine fra Googles transkripsjonstjeneste. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Tillat at Google går gjennom talemeldingene dine for å forbedre nøyaktigheten for transkripsjoner. Talemeldingene dine blir lagret anonymt. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Slå av visuell talepost</string>
   <string name="confirm_disable_voicemail_dialog_message">Dette sletter eventuelle talemeldinger og Google-transkripsjoner som er lagret i denne appen. Det kan hende mobiloperatøren din har lagret egne kopier.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">SLÅ AV</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ne/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ne/strings.xml
index b4536da..f2c01ed 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ne/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ne/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">भ्वाइस मेल (%s)</string>
   <string name="voicemail_settings_title">भ्वाइस मेल</string>
   <string name="voicemail_notifications_preference_title">सूचनाहरू</string>
   <string name="voicemail_change_greeting_preference_title">भ्वाइस मेलको अभिभावदन</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN परिवर्तन गर्नुहोस्</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN परिवर्तन गर्न  भिजुअल भ्वाइस मेल अनिवार्य रूपमा सक्षम पारिएको हुनु पर्छ</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">भिजुअल भ्वाइस मेल अझै सक्रिय गरिएको छैन, कृपया पछि फेरि प्रयास गर्नुहोस्</string>
-  <string name="vm_change_pin_old_pin">पुरानो PIN</string>
-  <string name="vm_change_pin_new_pin">नयाँ PIN</string>
   <string name="vm_change_pin_progress_message">कृपया प्रतीक्षा गर्नुहोस्।</string>
   <string name="vm_change_pin_error_too_short">नयाँ PIN अत्यन्त छोटो छ।</string>
   <string name="vm_change_pin_error_too_long">नयाँ PIN अत्यन्त लामो छ।</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN परिवर्तन गर्न सकिएन</string>
   <string name="change_pin_title">भ्वाइस मेलको PIN परिवर्तन गर्नुहोस्</string>
   <string name="change_pin_continue_label">जारी राख्नुहोस्</string>
-  <string name="change_pin_cancel_label">रद्द गर्नुहोस्</string>
-  <string name="change_pin_ok_label">ठिक छ</string>
   <string name="change_pin_enter_old_pin_header">आफ्नो पुरानो PIN को पुष्टि गर्नुहोस्</string>
   <string name="change_pin_enter_old_pin_hint">जारी राख्नका लागि आफ्नो भ्वाइस मेलको PIN प्रविष्ट गर्नुहोस्।</string>
   <string name="change_pin_enter_new_pin_header">कुनै नयाँ PIN सेट गर्नुहोस्</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN हरू मेल खाँदैनन्</string>
   <string name="change_pin_succeeded">भ्वाइस मेलको PIN अद्यावधिक गरियो</string>
   <string name="change_pin_system_error">PIN सेट गर्न सकिएन</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">भ्वाइस मेलको ट्रान्स्क्रिप्सन</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">भ्वाइस मेलको ट्रान्स्क्रिप्सनसम्बन्धी विश्लेषण</string>
   <string name="voicemail_activating_summary_info">भ्वाइस मेल सक्रिय गरिँदै छ</string>
-  <string name="voicemail_transcription_preference_summary_info">Google को ट्रान्स्क्रिप्सन सेवा प्रयोग गरी आफ्नो भ्वाइस मेलका ट्रान्स्क्रिप्टहरू प्राप्त गर्नुहोस्। %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">ट्रान्स्क्रिप्सनको शुद्धतामा सुधार गर्न Google लाई आफ्नो भ्वाइस मेलका सन्देशहरू समीक्षा गर्न दिनुहोस्। तपाईंको भ्वाइस मेलका सन्देशहरूलाई बेनामी रूपमा भण्डारण गरिन्छ। %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">भिजुअल भ्वाइस मेल निष्क्रिय पार्नुहोस्</string>
   <string name="confirm_disable_voicemail_dialog_message">यस कार्यले यो अनुप्रयोगमा भण्डारण गरिएको सबै भ्वाइस मेल र Google ट्रान्सक्रिप्टहरू मेट्नेछ। तपाईंको सेवा प्रदायकले आफ्ना प्रतिलिपिहरू आफूसँग राख्न पनि सक्नेछ।</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">निष्क्रिय पार्नु…</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-nl/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-nl/strings.xml
index b6d8e84..181ddc1 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-nl/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-nl/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Voicemail (%s)</string>
   <string name="voicemail_settings_title">Voicemail</string>
   <string name="voicemail_notifications_preference_title">Meldingen</string>
   <string name="voicemail_change_greeting_preference_title">Voicemailbegroeting</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Pincode wijzigen</string>
   <string name="voicemail_change_pin_preference_summary_disable">Visuele voicemail moet zijn ingeschakeld om de pincode te wijzigen</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visuele voicemail is nog niet geactiveerd. Probeer het later opnieuw.</string>
-  <string name="vm_change_pin_old_pin">Oude pincode</string>
-  <string name="vm_change_pin_new_pin">Nieuwe pincode</string>
   <string name="vm_change_pin_progress_message">Even geduld.</string>
   <string name="vm_change_pin_error_too_short">De nieuwe pincode is te kort.</string>
   <string name="vm_change_pin_error_too_long">De nieuwe pincode is te lang.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Kan pincode niet wijzigen</string>
   <string name="change_pin_title">Voicemailpincode wijzigen</string>
   <string name="change_pin_continue_label">Doorgaan</string>
-  <string name="change_pin_cancel_label">Annuleren</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Je oude pincode bevestigen</string>
   <string name="change_pin_enter_old_pin_hint">Geef je voicemailpincode op om door te gaan.</string>
   <string name="change_pin_enter_new_pin_header">Een nieuwe pincode instellen</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Pincodes komen niet overeen</string>
   <string name="change_pin_succeeded">Voicemailpincode geüpdatet</string>
   <string name="change_pin_system_error">Kan pincode niet instellen</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Voicemail-transcriptie</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analyse van voicemail-transcriptie</string>
   <string name="voicemail_activating_summary_info">Voicemail activeren</string>
-  <string name="voicemail_transcription_preference_summary_info">Ontvang transcripten van je voicemail met de transcriptieservice van Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Laat Google je voicemailberichten controleren om de nauwkeurigheid van transcripties te verbeteren. Je voicemailberichten worden anoniem opgeslagen. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Visuele voicemail uitschakelen</string>
   <string name="confirm_disable_voicemail_dialog_message">Hiermee worden voicemails en Google-transcripten verwijderd die zijn opgeslagen in deze app. Mogelijk bewaart uw provider zelf nog kopieën.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">UITSCHAKELEN</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-no/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-no/strings.xml
index 7d11cc2..090fa0e 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-no/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-no/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Talepostkasse (%s)</string>
   <string name="voicemail_settings_title">Talepost</string>
   <string name="voicemail_notifications_preference_title">Varsler</string>
   <string name="voicemail_change_greeting_preference_title">Taleposthilsen</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Endre PIN-koden</string>
   <string name="voicemail_change_pin_preference_summary_disable">Du må slå på visuell talepost for å endre PIN-koden</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visuell talepost er ikke slått på ennå – prøv igjen senere</string>
-  <string name="vm_change_pin_old_pin">Gammel PIN-kode</string>
-  <string name="vm_change_pin_new_pin">Ny PIN-kode</string>
   <string name="vm_change_pin_progress_message">Vent litt.</string>
   <string name="vm_change_pin_error_too_short">Den nye PIN-koden er for kort.</string>
   <string name="vm_change_pin_error_too_long">Den nye PIN-koden er for lang.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Kan ikke bytte PIN-kode</string>
   <string name="change_pin_title">Endre PIN-kode for talemeldinger</string>
   <string name="change_pin_continue_label">Fortsett</string>
-  <string name="change_pin_cancel_label">Avbryt</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Bekreft den gamle PIN-koden din</string>
   <string name="change_pin_enter_old_pin_hint">Skriv inn PIN-koden for talemeldinger for å fortsette.</string>
   <string name="change_pin_enter_new_pin_header">Angi en ny PIN-kode</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-kodene stemmer ikke overens</string>
   <string name="change_pin_succeeded">PIN-koden for talemeldinger ble oppdatert</string>
   <string name="change_pin_system_error">Kan ikke angi PIN-kode</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transkripsjon av talepost</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analyse av transkripsjoner av talepost</string>
   <string name="voicemail_activating_summary_info">Slår på talepost</string>
-  <string name="voicemail_transcription_preference_summary_info">Få transkripsjoner av talemeldingene dine fra Googles transkripsjonstjeneste. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Tillat at Google går gjennom talemeldingene dine for å forbedre nøyaktigheten for transkripsjoner. Talemeldingene dine blir lagret anonymt. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Slå av visuell talepost</string>
   <string name="confirm_disable_voicemail_dialog_message">Dette sletter eventuelle talemeldinger og Google-transkripsjoner som er lagret i denne appen. Det kan hende mobiloperatøren din har lagret egne kopier.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">SLÅ AV</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-pa/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-pa/strings.xml
index e983331..4c0f62d 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-pa/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-pa/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">ਵੌਇਸਮੇਲ (%s)</string>
   <string name="voicemail_settings_title">ਵੌਇਸਮੇਲ</string>
   <string name="voicemail_notifications_preference_title">ਸੂਚਨਾਵਾਂ</string>
   <string name="voicemail_change_greeting_preference_title">ਵੌਇਸਮੇਲ ਸੰਬੰਧੀ ਸੰਬੋਧਨ</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">ਪਿੰਨ ਬਦਲੋ</string>
   <string name="voicemail_change_pin_preference_summary_disable">ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ ਨੂੰ ਪਿੰਨ ਬਦਲਣ ਲਈ ਚਾਲੂ ਕੀਤਾ ਜਾਣਾ ਲਾਜ਼ਮੀ ਹੈ</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ ਹਾਲੇ ਸਰਗਰਮ ਨਹੀਂ ਹੈ, ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ</string>
-  <string name="vm_change_pin_old_pin">ਪੁਰਾਣਾ ਪਿੰਨ</string>
-  <string name="vm_change_pin_new_pin">ਨਵਾਂ ਪਿੰਨ</string>
   <string name="vm_change_pin_progress_message">ਕਿਰਪਾ ਕਰਕੇ ਉਡੀਕ ਕਰੋ।</string>
   <string name="vm_change_pin_error_too_short">ਨਵਾਂ ਪਿੰਨ ਬਹੁਤ ਹੀ ਛੋਟਾ ਹੈ।</string>
   <string name="vm_change_pin_error_too_long">ਨਵਾਂ ਪਿੰਨ ਬਹੁਤ ਹੀ ਵੱਡਾ ਹੈ।</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">ਪਿੰਨ ਨੂੰ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ</string>
   <string name="change_pin_title">ਵੌਇਸਮੇਲ ਪਿੰਨ ਬਦਲੋ</string>
   <string name="change_pin_continue_label">ਜਾਰੀ ਰੱਖੋ</string>
-  <string name="change_pin_cancel_label">ਰੱਦ ਕਰੋ</string>
-  <string name="change_pin_ok_label">ਠੀਕ ਹੈ</string>
   <string name="change_pin_enter_old_pin_header">ਆਪਣੇ ਪੁਰਾਣੇ ਪਿੰਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</string>
   <string name="change_pin_enter_old_pin_hint">ਜਾਰੀ ਰੱਖਣ ਲਈ ਆਪਣਾ ਵੌਇਸਮੇਲ ਪਿੰਨ ਦਾਖਲ ਕਰੋ।</string>
   <string name="change_pin_enter_new_pin_header">ਇੱਕ ਨਵਾਂ ਪਿੰਨ ਸੈੱਟ ਕਰੋ</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">ਪਿੰਨ ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ</string>
   <string name="change_pin_succeeded">ਵੌਇਸਮੇਲ ਪਿੰਨ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ</string>
   <string name="change_pin_system_error">ਪਿੰਨ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">ਵੌਇਸਮੇਲ ਦੀ ਪ੍ਰਤੀਲਿਪੀ</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">ਵੌਇਸਮੇਲ ਪ੍ਰਤਿਲਿਪੀ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ</string>
   <string name="voicemail_activating_summary_info">ਵੌਇਸਮੇਲ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</string>
-  <string name="voicemail_transcription_preference_summary_info">Google ਦੀ ਪ੍ਰਤੀਲਿਪੀ ਸੇਵਾ ਦੀ ਵਰਤੋਂ ਨਾਲ ਆਪਣੀ ਵੌਇਸਮੇਲ ਦੀਆਂ ਪ੍ਰਤੀਲਿਪੀਆਂ ਪ੍ਰਾਪਤ ਕਰੋ। %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">ਪ੍ਰਤੀਲਿਪੀਕਰਨ ਦੀ ਸਟੀਕਤਾ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ Google ਨੂੰ ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਸੁਨੇਹਿਆਂ ਦੀ ਸਮੀਖਿਆ ਕਰਨ ਦਿਓ। ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਸੁਨੇਹਿਆਂ ਨੂੰ ਗੁਮਨਾਮ ਤੌਰ \'ਤੇ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">ਦ੍ਰਿਸ਼ਟੀਗਤ ਵੌਇਸਮੇਲ ਨੂੰ ਬੰਦ ਕਰੋ</string>
   <string name="confirm_disable_voicemail_dialog_message">ਇਹ ਇਸ ਐਪ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਕਿਸੇ ਵੀ ਵੌਇਸਮੇਲ ਅਤੇ Google ਪ੍ਰਤਿਲਿਪੀਆਂ ਨੂੰ ਮਿਟਾ ਦੇਵੇਗਾ। ਤੁਹਾਡਾ ਕੈਰੀਅਰ ਇਸ ਦੀਆਂ ਕਾਪੀਆਂ ਆਪਣੇ ਕੋਲ ਰੱਖ ਸਕਦਾ ਹੈ।</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ਬੰਦ ਕਰੋ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-pl/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-pl/strings.xml
index e1e5e1c..231892f 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-pl/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-pl/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Poczta głosowa (%s)</string>
   <string name="voicemail_settings_title">Poczta głosowa</string>
   <string name="voicemail_notifications_preference_title">Powiadomienia</string>
   <string name="voicemail_change_greeting_preference_title">Powitanie w poczcie głosowej</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Zmień kod PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Aby można było zmienić kod PIN, wizualna poczta głosowa musi być włączona</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Wizualna poczta głosowa nie została jeszcze aktywowana – spróbuj ponownie później</string>
-  <string name="vm_change_pin_old_pin">Stary kod PIN</string>
-  <string name="vm_change_pin_new_pin">Nowy kod PIN</string>
   <string name="vm_change_pin_progress_message">Poczekaj.</string>
   <string name="vm_change_pin_error_too_short">Nowy kod PIN jest za krótki.</string>
   <string name="vm_change_pin_error_too_long">Nowy kod PIN jest za długi.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Nie udało się zmienić kodu PIN</string>
   <string name="change_pin_title">Zmień kod PIN poczty głosowej</string>
   <string name="change_pin_continue_label">Dalej</string>
-  <string name="change_pin_cancel_label">Anuluj</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Potwierdź stary kod PIN</string>
   <string name="change_pin_enter_old_pin_hint">Wpisz kod PIN poczty głosowej, aby przejść dalej.</string>
   <string name="change_pin_enter_new_pin_header">Ustaw nowy kod PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Kody PIN nie są identyczne.</string>
   <string name="change_pin_succeeded">Kod PIN poczty głosowej został zaktualizowany.</string>
   <string name="change_pin_system_error">Nie udało się ustawić kodu PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transkrypcja poczty głosowej</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analiza transkrypcji poczty głosowej</string>
   <string name="voicemail_activating_summary_info">Aktywuję pocztę głosową</string>
-  <string name="voicemail_transcription_preference_summary_info">Otrzymuj transkrypcje swojej poczty głosowej z usługi transkrypcji Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Pozwól Google na sprawdzanie Twoich wiadomości głosowych w celu ulepszania jakości transkrypcji. Wiadomości głosowe są przechowywane anonimowo. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Wyłączanie wizualnej poczty głosowej</string>
   <string name="confirm_disable_voicemail_dialog_message">Spowoduje to usunięcie wszystkich wiadomości głosowych i transkrypcji Google przechowywanych w tej aplikacji. Operator może mieć oddzielne kopie.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">WYŁĄCZ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-pt-rBR/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-pt-rBR/strings.xml
index 8b26ba1..6fe220c 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-pt-rBR/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-pt-rBR/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Correio de voz (%s)</string>
   <string name="voicemail_settings_title">Correio de voz</string>
   <string name="voicemail_notifications_preference_title">Notificações</string>
   <string name="voicemail_change_greeting_preference_title">Saudação do correio de voz</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Alterar PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">O correio de voz visual precisa ser ativado para alterar o PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">O correio de voz visual ainda não foi ativado, tente novamente mais tarde</string>
-  <string name="vm_change_pin_old_pin">PIN antigo</string>
-  <string name="vm_change_pin_new_pin">Novo PIN</string>
   <string name="vm_change_pin_progress_message">Aguarde.</string>
   <string name="vm_change_pin_error_too_short">O novo PIN é curto demais.</string>
   <string name="vm_change_pin_error_too_long">O novo PIN é longo demais.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Não foi possível alterar o PIN.</string>
   <string name="change_pin_title">Alterar o PIN do correio de voz</string>
   <string name="change_pin_continue_label">Continuar</string>
-  <string name="change_pin_cancel_label">Cancelar</string>
-  <string name="change_pin_ok_label">Ok</string>
   <string name="change_pin_enter_old_pin_header">Confirmar seu PIN antigo</string>
   <string name="change_pin_enter_old_pin_hint">Digite o PIN do correio de voz para continuar.</string>
   <string name="change_pin_enter_new_pin_header">Definir um novo PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Os PINs não correspondem</string>
   <string name="change_pin_succeeded">O PIN do correio de voz foi atualizado</string>
   <string name="change_pin_system_error">Não foi possível definir o PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transcrição do correio de voz</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Análise da transcrição do correio de voz</string>
   <string name="voicemail_activating_summary_info">Ativando correio de voz</string>
-  <string name="voicemail_transcription_preference_summary_info">Transcreva seu correio de voz com o serviço de transcrição do Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Permita que o Google analise suas mensagens do correio de voz para tornar a transcrição mais precisa. Essas mensagens são armazenadas anonimamente. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Desativar o correio de voz visual</string>
   <string name="confirm_disable_voicemail_dialog_message">Isto excluirá qualquer correio de voz e transcrição do Google armazenados neste aplicativo. Sua operadora talvez mantenha cópias.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DESATIVAR</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-pt-rPT/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-pt-rPT/strings.xml
index 476a635..0a7f570 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-pt-rPT/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-pt-rPT/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Correio de voz (%s)</string>
   <string name="voicemail_settings_title">Correio de voz</string>
   <string name="voicemail_notifications_preference_title">Notificações</string>
   <string name="voicemail_change_greeting_preference_title">Gravação do correio de voz</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Alterar PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">É necessário ativar o correio de voz visual para alterar o PIN.</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">O correio de voz visual ainda não está ativado. Tente novamente mais tarde.</string>
-  <string name="vm_change_pin_old_pin">PIN antigo</string>
-  <string name="vm_change_pin_new_pin">Novo PIN</string>
   <string name="vm_change_pin_progress_message">Aguarde.</string>
   <string name="vm_change_pin_error_too_short">O novo PIN é demasiado curto.</string>
   <string name="vm_change_pin_error_too_long">O novo PIN é demasiado longo.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Não é possível alterar o PIN.</string>
   <string name="change_pin_title">Alterar o PIN do correio de voz</string>
   <string name="change_pin_continue_label">Continuar</string>
-  <string name="change_pin_cancel_label">Cancelar</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Confirme o seu PIN antigo</string>
   <string name="change_pin_enter_old_pin_hint">Introduza o PIN do seu correio de voz para continuar.</string>
   <string name="change_pin_enter_new_pin_header">Defina um PIN novo</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Os PINs não correspondem.</string>
   <string name="change_pin_succeeded">O PIN do correio de voz foi atualizado</string>
   <string name="change_pin_system_error">Não é possível definir o PIN.</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transcrição de correio de voz</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Análise da transcrição de correio de voz</string>
   <string name="voicemail_activating_summary_info">A ativar correio de voz</string>
-  <string name="voicemail_transcription_preference_summary_info">Obter transcrições do correio de voz através do serviço de transcrição da Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Permitir que a Google reveja as suas mensagens de correio de voz para melhorar a precisão das transcrições. As suas mensagens de correio de voz são armazenadas anonimamente. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Desativar correio de voz visual</string>
   <string name="confirm_disable_voicemail_dialog_message">Esta ação irá eliminar correio de voz e transcrições do Google armazenados nesta aplicação. O seu operador pode manter as respetivas cópias.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DESATIVAR</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-pt/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-pt/strings.xml
index 8b26ba1..6fe220c 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-pt/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-pt/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Correio de voz (%s)</string>
   <string name="voicemail_settings_title">Correio de voz</string>
   <string name="voicemail_notifications_preference_title">Notificações</string>
   <string name="voicemail_change_greeting_preference_title">Saudação do correio de voz</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Alterar PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">O correio de voz visual precisa ser ativado para alterar o PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">O correio de voz visual ainda não foi ativado, tente novamente mais tarde</string>
-  <string name="vm_change_pin_old_pin">PIN antigo</string>
-  <string name="vm_change_pin_new_pin">Novo PIN</string>
   <string name="vm_change_pin_progress_message">Aguarde.</string>
   <string name="vm_change_pin_error_too_short">O novo PIN é curto demais.</string>
   <string name="vm_change_pin_error_too_long">O novo PIN é longo demais.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Não foi possível alterar o PIN.</string>
   <string name="change_pin_title">Alterar o PIN do correio de voz</string>
   <string name="change_pin_continue_label">Continuar</string>
-  <string name="change_pin_cancel_label">Cancelar</string>
-  <string name="change_pin_ok_label">Ok</string>
   <string name="change_pin_enter_old_pin_header">Confirmar seu PIN antigo</string>
   <string name="change_pin_enter_old_pin_hint">Digite o PIN do correio de voz para continuar.</string>
   <string name="change_pin_enter_new_pin_header">Definir um novo PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Os PINs não correspondem</string>
   <string name="change_pin_succeeded">O PIN do correio de voz foi atualizado</string>
   <string name="change_pin_system_error">Não foi possível definir o PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transcrição do correio de voz</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Análise da transcrição do correio de voz</string>
   <string name="voicemail_activating_summary_info">Ativando correio de voz</string>
-  <string name="voicemail_transcription_preference_summary_info">Transcreva seu correio de voz com o serviço de transcrição do Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Permita que o Google analise suas mensagens do correio de voz para tornar a transcrição mais precisa. Essas mensagens são armazenadas anonimamente. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Desativar o correio de voz visual</string>
   <string name="confirm_disable_voicemail_dialog_message">Isto excluirá qualquer correio de voz e transcrição do Google armazenados neste aplicativo. Sua operadora talvez mantenha cópias.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DESATIVAR</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ro/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ro/strings.xml
index 24a99ba..78ef3b2 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ro/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ro/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Mesagerie vocală (%s)</string>
   <string name="voicemail_settings_title">Mesagerie vocală</string>
   <string name="voicemail_notifications_preference_title">Notificări</string>
   <string name="voicemail_change_greeting_preference_title">Mesaj mesagerie vocală</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Schimbați codul PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Mesageria vocală vizuală trebuie activată pentru a schimba codul PIN.</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Mesageria vocală vizuală nu este activată încă. Încercați din nou mai târziu.</string>
-  <string name="vm_change_pin_old_pin">Codul PIN vechi</string>
-  <string name="vm_change_pin_new_pin">Codul PIN nou</string>
   <string name="vm_change_pin_progress_message">Așteptați.</string>
   <string name="vm_change_pin_error_too_short">Codul PIN nou este prea scurt.</string>
   <string name="vm_change_pin_error_too_long">Codul PIN nou este prea lung.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Nu se poate schimba codul PIN</string>
   <string name="change_pin_title">Schimbați codul PIN pentru mesageria vocală</string>
   <string name="change_pin_continue_label">Continuați</string>
-  <string name="change_pin_cancel_label">Anulați</string>
-  <string name="change_pin_ok_label">Ok</string>
   <string name="change_pin_enter_old_pin_header">Confirmați vechiul cod PIN</string>
   <string name="change_pin_enter_old_pin_hint">Introduceți codul PIN pentru mesageria vocală pentru a continua.</string>
   <string name="change_pin_enter_new_pin_header">Setați un cod PIN nou</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Codurile PIN nu corespund</string>
   <string name="change_pin_succeeded">Codul PIN pentru mesageria vocală a fost actualizat.</string>
   <string name="change_pin_system_error">Nu s-a putut seta codul PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transcrierea mesajelor vocale</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analiza transcrierii mesajelor vocale</string>
   <string name="voicemail_activating_summary_info">Se activează mesageria vocală</string>
-  <string name="voicemail_transcription_preference_summary_info">Obțineți transcrierile mesajelor vocale folosind serviciul de transcriere de la Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Permiteți serviciului Google să vă examineze mesajele vocale pentru a îmbunătăți calitatea transcrierilor. Mesajele vocale sunt stocate anonim. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Dezactivați mesageria vocală vizuală</string>
   <string name="confirm_disable_voicemail_dialog_message">Astfel, se vor șterge mesajele vocale și transcrierile Google stocate în această aplicație. E posibil ca operatorul să păstreze o copie.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">DEZACTIVAȚI</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ru/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ru/strings.xml
index 59f112f..f0ef7c8 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ru/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ru/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Голосовая почта (%s)</string>
   <string name="voicemail_settings_title">Голосовая почта</string>
   <string name="voicemail_notifications_preference_title">Уведомления</string>
   <string name="voicemail_change_greeting_preference_title">Приветствие в голосовой почте</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Изменение PIN-кода</string>
   <string name="voicemail_change_pin_preference_summary_disable">Чтобы изменить PIN-код, включите визуальную голосовую почту</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Визуальная голосовая почта пока не активирована, повторите попытку позже</string>
-  <string name="vm_change_pin_old_pin">Прежний PIN-код</string>
-  <string name="vm_change_pin_new_pin">Новый PIN-код</string>
   <string name="vm_change_pin_progress_message">Подождите…</string>
   <string name="vm_change_pin_error_too_short">Новый PIN-код слишком короткий.</string>
   <string name="vm_change_pin_error_too_long">Новый PIN-код слишком длинный.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Не удалось сменить PIN-код</string>
   <string name="change_pin_title">Сменить PIN-код голосовой почты</string>
   <string name="change_pin_continue_label">Далее</string>
-  <string name="change_pin_cancel_label">Отмена</string>
-  <string name="change_pin_ok_label">ОК</string>
   <string name="change_pin_enter_old_pin_header">Подтвердите предыдущий PIN-код</string>
   <string name="change_pin_enter_old_pin_hint">Чтобы продолжить, введите PIN-код голосовой почты.</string>
   <string name="change_pin_enter_new_pin_header">Задайте новый PIN-код</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-коды не совпадают.</string>
   <string name="change_pin_succeeded">PIN-код голосовой почты обновлен</string>
   <string name="change_pin_system_error">Не удалось установить PIN-код</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Транскрипция голосовой почты</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Анализ транскрипций голосовой почты</string>
   <string name="voicemail_activating_summary_info">Активация голосовой почты</string>
-  <string name="voicemail_transcription_preference_summary_info">Разрешить расшифровку голосовых сообщений с помощью специального сервиса Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Разрешить Google просматривать ваши расшифрованные сообщения голосовой почты, чтобы улучшить качество транскрипции. Сообщения хранятся анонимно. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Отключить визуальную голосовую почту?</string>
   <string name="confirm_disable_voicemail_dialog_message">Будут удалены все сохраненные в этом приложении голосовые сообщения и расшифровки аудиозаписей, которые были созданы с помощью специальной службы Google. У вашего оператора связи могут сохраниться копии этих данных.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ОТКЛЮЧИТЬ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-si/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-si/strings.xml
index 9e101ec..eae5601 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-si/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-si/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">හඬ තැපෑල (%s)</string>
   <string name="voicemail_settings_title">හඬ තැපෑල</string>
   <string name="voicemail_notifications_preference_title">දැනුම්දීම්</string>
   <string name="voicemail_change_greeting_preference_title">හඬ තැපැල් සුබ පැතුම</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN අංකය වෙනස් කරන්න</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN අංකය වෙනස් කිරීමට දෘශ්‍ය හඬ තැපෑල සබල කළ යුතුය</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">දෘශ්‍ය හඬ තැපෑල තවම සක්‍රිය කර නැත, කරුණාකර පසුව නැවත උත්සාහ කරන්න</string>
-  <string name="vm_change_pin_old_pin">පැරණි PIN අංකය</string>
-  <string name="vm_change_pin_new_pin">නව PIN අංකය</string>
   <string name="vm_change_pin_progress_message">කරුණාකර රැඳී සිටින්න.</string>
   <string name="vm_change_pin_error_too_short">නව PIN අංකය කෙටි වැඩිය.</string>
   <string name="vm_change_pin_error_too_long">නව PIN අංකය දිග වැඩිය.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN අංකය මාරු කිරීමට නොහැකිය</string>
   <string name="change_pin_title">හඬ තැපැල් PIN අංකය වෙනස් කරන්න</string>
   <string name="change_pin_continue_label">ඉදිරියට යන්න</string>
-  <string name="change_pin_cancel_label">අවලංගු කරන්න</string>
-  <string name="change_pin_ok_label">හරි</string>
   <string name="change_pin_enter_old_pin_header">ඔබේ පැරණි PIN අංකය තහවුරු කරන්න</string>
   <string name="change_pin_enter_old_pin_hint">දිගටම කරගෙන යාමට ඔබ හඬ තැපැල් PIN අංකය ඇතුළු කරන්න.</string>
   <string name="change_pin_enter_new_pin_header">නව PIN අංකයක් සකසන්න</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN අංක නොගැළපේ</string>
   <string name="change_pin_succeeded">හඬ තැපැල් PIN අංකය යාවත්කාලීන කරන ලදී</string>
   <string name="change_pin_system_error">PIN අංකය සැකසීමට නොහැකිය</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">හඬ තැපැල් පිටපත</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">හඬ තැපැල් පිටපත විශ්ලේෂණය</string>
   <string name="voicemail_activating_summary_info">හඬ තැපැල් ක්‍රියාත්මක කිරීම</string>
-  <string name="voicemail_transcription_preference_summary_info">Google පිටපත් කිරීමේ සේවාව භාවිතයෙන් ඔබේ හඬ තැපෑලෙහි පිටපත් ලබා ගන්න. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">පිටපත්වල නිරවද්‍යතාව වැඩි දියුණු කිරීම සඳහා Google හට ඔබේ හඬ තැපැල් පණිවිඩ සමාලෝචනය කිරීමට ඉඩ දෙන්න. ඔබගේ හඬ තැපැල් පණිවිඩ නිර්නාමිකව ගබඩා කරයි. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">දෘශ්‍ය හඬ තැපෑල ක්‍රියාවිරහිත කරන්න</string>
   <string name="confirm_disable_voicemail_dialog_message">මෙම යෙදුම තුළ ගබඩා කර ඇති ඕනෑම හඬ තැපැල් සහ Google පිටපත් මකනු ඇත. ඔබගේ වාහකය තමන්ගේම පිටපත් තබා ගත හැකිය.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ක්‍රියාවිරහිත කරන්න</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-sk/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-sk/strings.xml
index f7bbb03..84d4483 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-sk/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-sk/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Hlasová správa %s</string>
   <string name="voicemail_settings_title">Hlasová správa</string>
   <string name="voicemail_notifications_preference_title">Upozornenia</string>
   <string name="voicemail_change_greeting_preference_title">Pozdrav hlasovej schránky</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Zmena kódu PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN možno zmeniť až po povolení vizuálnej hlasovej schránky</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Vizuálna hlasová schránka ešte nie je aktivovaná, skúste to znova neskôr</string>
-  <string name="vm_change_pin_old_pin">Starý PIN</string>
-  <string name="vm_change_pin_new_pin">Nový PIN</string>
   <string name="vm_change_pin_progress_message">Čakajte.</string>
   <string name="vm_change_pin_error_too_short">Nový PIN je príliš krátky.</string>
   <string name="vm_change_pin_error_too_long">Nový PIN je príliš dlhý.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN sa nedá zmeniť</string>
   <string name="change_pin_title">Zmena kódu PIN hlasovej schránky</string>
   <string name="change_pin_continue_label">Pokračovať</string>
-  <string name="change_pin_cancel_label">Zrušiť</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Potvrďte starý PIN</string>
   <string name="change_pin_enter_old_pin_hint">Ak chcete pokračovať, zadajte PIN hlasovej schránky.</string>
   <string name="change_pin_enter_new_pin_header">Nastavte nový PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Kódy PIN sa nezhodujú</string>
   <string name="change_pin_succeeded">PIN hlasovej schránky bol aktualizovaný</string>
   <string name="change_pin_system_error">PIN sa nedá nastaviť</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Prepis hlasovej správy</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analýza prepisu hlasovej správy</string>
   <string name="voicemail_activating_summary_info">Aktivuje sa hlasová schránka</string>
-  <string name="voicemail_transcription_preference_summary_info">Získajte prepisy svojich hlasových správ vďaka prepisovacej službe od Googlu. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Umožnite Googlu kontrolovať vaše hlasové správy, aby mohol zlepšovať presnosť prepisov. Hlasové správy budú ukladané anonymne. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Vypnutie vizuálnej hlasovej schránky</string>
   <string name="confirm_disable_voicemail_dialog_message">Odstránite tým všetky hlasové správy a prepisy od Googlu uložené v tejto aplikácii. Váš operátor si môže uchovávať vlastné kópie.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">VYPNÚŤ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-sl/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-sl/strings.xml
index 943c0b9..f57ec02 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-sl/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-sl/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Sporočilo v odzivniku (%s)</string>
   <string name="voicemail_settings_title">Odzivnik</string>
   <string name="voicemail_notifications_preference_title">Obvestila</string>
   <string name="voicemail_change_greeting_preference_title">Pozdravno sporočilo v odzivniku</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Sprememba kode PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Če želite spremeniti kodo PIN, morajo biti vizualna sporočila v odzivniku omogočena</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Vizualna sporočila v odzivniku še niso aktivirana. Poskusite znova pozneje</string>
-  <string name="vm_change_pin_old_pin">Stara koda PIN</string>
-  <string name="vm_change_pin_new_pin">Nova koda PIN</string>
   <string name="vm_change_pin_progress_message">Počakajte.</string>
   <string name="vm_change_pin_error_too_short">Nova koda PIN je prekratka.</string>
   <string name="vm_change_pin_error_too_long">Nova koda PIN je predolga.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Ni mogoče spremeniti kode PIN</string>
   <string name="change_pin_title">Sprememba kode PIN za sporočila v odzivniku</string>
   <string name="change_pin_continue_label">Naprej</string>
-  <string name="change_pin_cancel_label">Prekliči</string>
-  <string name="change_pin_ok_label">V redu</string>
   <string name="change_pin_enter_old_pin_header">Potrditev stare kode PIN</string>
   <string name="change_pin_enter_old_pin_hint">Če želite nadaljevati, vnesite kodo PIN za sporočila v odzivniku.</string>
   <string name="change_pin_enter_new_pin_header">Nastavitev nove kode PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Kodi PIN se ne ujemata</string>
   <string name="change_pin_succeeded">Koda PIN za sporočila v odzivniku je posodobljena</string>
   <string name="change_pin_system_error">Kode PIN ni mogoče nastaviti</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Prepis sporočil v odzivniku</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analiza prepisa sporočil v odzivniku</string>
   <string name="voicemail_activating_summary_info">Aktiviranje sporočil v odzivniku</string>
-  <string name="voicemail_transcription_preference_summary_info">Za prepise sporočil v odzivniku uporabite Googlovo storitev za prepise. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Dovolite Googlu, da pregleda vaša sporočila v odzivniku in na podlagi njih izboljša natančnost prepisov. Sporočila v odzivniku so shranjena anonimno. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Izklop vizualnih sporočil v odzivniku</string>
   <string name="confirm_disable_voicemail_dialog_message">S tem bodo izbrisana vsa sporočila v odzivniku in Googlovi prepisi, shranjeni v tej aplikaciji. Operater bo morda obdržal svoje kopije.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">IZKLOPI</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-sq/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-sq/strings.xml
index fc4d273..3217335 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-sq/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-sq/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Posta zanore (%s)</string>
   <string name="voicemail_settings_title">Posta zanore</string>
   <string name="voicemail_notifications_preference_title">Njoftimet</string>
   <string name="voicemail_change_greeting_preference_title">Përshëndetja e postës zanore</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Ndrysho kodin PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Duhet të aktivizohet posta zanore vizuale për të ndryshuar kodin PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Posta zanore vizuale nuk është aktivizuar ende. Provo përsëri më vonë</string>
-  <string name="vm_change_pin_old_pin">Kodi PIN i vjetër</string>
-  <string name="vm_change_pin_new_pin">Kodi PIN i ri</string>
   <string name="vm_change_pin_progress_message">Prit...</string>
   <string name="vm_change_pin_error_too_short">Kodi i ri PIN është shumë i shkurtër.</string>
   <string name="vm_change_pin_error_too_long">Kodi i ri PIN është shumë i gjatë.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Kodi PIN nuk mund të ndryshohet.</string>
   <string name="change_pin_title">Ndrysho kodin PIN të postës zanore</string>
   <string name="change_pin_continue_label">Vazhdo</string>
-  <string name="change_pin_cancel_label">Anulo</string>
-  <string name="change_pin_ok_label">Në rregull</string>
   <string name="change_pin_enter_old_pin_header">Konfirmo kodin PIN të vjetër</string>
   <string name="change_pin_enter_old_pin_hint">Shkruaj kodin PIN të postës zanore për të vazhduar.</string>
   <string name="change_pin_enter_new_pin_header">Cakto një kod të ri PIN.</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Kodet PIN nuk përputhen</string>
   <string name="change_pin_succeeded">Kodi PIN i postës zanore u përditësua</string>
   <string name="change_pin_system_error">Kodi PIN nuk mund të caktohet</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transkriptimi i postës zanore</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Analiza e transkriptimit të postës zanore</string>
   <string name="voicemail_activating_summary_info">Posta zanore po aktivizohet</string>
-  <string name="voicemail_transcription_preference_summary_info">Merr transkriptet e postës zanore duke përdorur shërbimin e transkriptimit të Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Lejo që Google të rishikojë mesazhet e postës zanore për të përmirësuar saktësinë e transkriptimit. Mesazhet e tua të postës zanore ruhen në mënyrë anonime. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Çaktivizo postën zanore vizuale</string>
   <string name="confirm_disable_voicemail_dialog_message">Kjo do të fshijë çdo postë zanore dhe transkriptet e Google të ruajtura në këtë aplikacion. Operatori yt celular mund të mbajë kopjet e veta.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ÇAKTIVIZO</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-sr/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-sr/strings.xml
index 509e916..8f26e14 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-sr/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-sr/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Говорна пошта (%s)</string>
   <string name="voicemail_settings_title">Говорна пошта</string>
   <string name="voicemail_notifications_preference_title">Обавештења</string>
   <string name="voicemail_change_greeting_preference_title">Поздравна порука говорне поште</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Промените PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Морате да омогућите визуелну говорну пошту да бисте променили PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Визуелна говорна пошта још увек није активирана, пробајте поново касније</string>
-  <string name="vm_change_pin_old_pin">Стари PIN</string>
-  <string name="vm_change_pin_new_pin">Нови PIN</string>
   <string name="vm_change_pin_progress_message">Сачекајте.</string>
   <string name="vm_change_pin_error_too_short">Нови PIN је прекратак.</string>
   <string name="vm_change_pin_error_too_long">Нови PIN је предугачак.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Промена PIN-а није успела</string>
   <string name="change_pin_title">Промените PIN кôд говорне поште</string>
   <string name="change_pin_continue_label">Настави</string>
-  <string name="change_pin_cancel_label">Откажи</string>
-  <string name="change_pin_ok_label">Потврди</string>
   <string name="change_pin_enter_old_pin_header">Потврдите стари PIN</string>
   <string name="change_pin_enter_old_pin_hint">Унесите PIN кôд говорне поште да бисте наставили.</string>
   <string name="change_pin_enter_new_pin_header">Подесите нови PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-ови се не подударају</string>
   <string name="change_pin_succeeded">PIN кôд говорне поште је ажуриран</string>
   <string name="change_pin_system_error">Подешавање PIN-а није успело</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Транскрипција говорне поште</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Анализа транскрипције говорне поште</string>
   <string name="voicemail_activating_summary_info">Активира се визуелна говорна пошта</string>
-  <string name="voicemail_transcription_preference_summary_info">Добијајте транскрипте говорних порука помоћу Google-ове услуге транскрипције. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Дозволите Google-у да прегледа ваше говорне поруке да би побољшао тачност транскрипције. Говорне поруке чувамо анонимно. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Искључите визуелну говорну пошту</string>
   <string name="confirm_disable_voicemail_dialog_message">Ово ће избрисати све говорне поруке и Google транскрипте сачуване у овој апликацији. Мобилни оператер може да задржи своје копије.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ИСКЉУЧИ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-sv/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-sv/strings.xml
index ea66ca8..6e2c0ce 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-sv/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-sv/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Röstbrevlåda (%s)</string>
   <string name="voicemail_settings_title">Röstbrevlåda</string>
   <string name="voicemail_notifications_preference_title">Aviseringar</string>
   <string name="voicemail_change_greeting_preference_title">Hälsningsmeddelande</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Ändra pinkod</string>
   <string name="voicemail_change_pin_preference_summary_disable">Visuell röstbrevlåda måste vara aktiverad för att ändra pinkoden</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visuell röstbrevlåda är ännu inte aktiverad, försök igen senare</string>
-  <string name="vm_change_pin_old_pin">Gammal pinkod</string>
-  <string name="vm_change_pin_new_pin">Ny pinkod</string>
   <string name="vm_change_pin_progress_message">Vänta.</string>
   <string name="vm_change_pin_error_too_short">Den nya pinkoden är för kort.</string>
   <string name="vm_change_pin_error_too_long">Den nya pinkoden är för lång.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Det gick inte att ändra pinkoden</string>
   <string name="change_pin_title">Ändra röstbrevlådans pinkod</string>
   <string name="change_pin_continue_label">Fortsätt</string>
-  <string name="change_pin_cancel_label">Avbryt</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Bekräfta den gamla pinkoden</string>
   <string name="change_pin_enter_old_pin_hint">Ange pinkoden till röstbrevlådan för att fortsätta.</string>
   <string name="change_pin_enter_new_pin_header">Ange en ny pinkod</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Pinkoderna matchar inte</string>
   <string name="change_pin_succeeded">Röstbrevlådans pinkod bekräftad</string>
   <string name="change_pin_system_error">Det går inte att ställa in pinkod</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transkribering av röstmeddelanden</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Transkriptionsanalys för röstbrevlåda</string>
   <string name="voicemail_activating_summary_info">Aktiverar röstbrevlåda</string>
-  <string name="voicemail_transcription_preference_summary_info">Transkribera röstmeddelanden med Googles kostnadsfria transkriberingstjänst. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Låt Google granska dina röstmeddelanden för att förbättra transkriptionsnoggrannheten. Röstmeddelandena lagras anonymt. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Stäng av visuell röstbrevlåda</string>
   <string name="confirm_disable_voicemail_dialog_message">Det tar bort alla röstmeddelanden och lagrade Google-transkript i den här appen. Din operatör kanske behåller egna kopior.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">INAKTIVERA</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-sw/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-sw/strings.xml
index deaf531..6e08846 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-sw/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-sw/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Ujumbe wa sauti (%s)</string>
   <string name="voicemail_settings_title">Ujumbe wa sauti</string>
   <string name="voicemail_notifications_preference_title">Arifa</string>
   <string name="voicemail_change_greeting_preference_title">Salamu za ujumbe wa sauti</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Badilisha PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Lazima uruhusu kipengele cha ujumbe wa sauti unaoonekana ili ubadilishe PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Kipengele cha ujumbe wa sauti unaoonekana bado hakijawashwa, tafadhali jaribu tena baadaye</string>
-  <string name="vm_change_pin_old_pin">PIN ya zamani</string>
-  <string name="vm_change_pin_new_pin">PIN mpya</string>
   <string name="vm_change_pin_progress_message">Tafadhali subiri.</string>
   <string name="vm_change_pin_error_too_short">PIN mpya ni fupi mno.</string>
   <string name="vm_change_pin_error_too_long">PIN mpya ni ndefu mno.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Imeshindwa kubadilisha PIN</string>
   <string name="change_pin_title">Badilisha PIN ya Ujumbe wa Sauti</string>
   <string name="change_pin_continue_label">Endelea</string>
-  <string name="change_pin_cancel_label">Ghairi</string>
-  <string name="change_pin_ok_label">Sawa</string>
   <string name="change_pin_enter_old_pin_header">Thibitisha PIN yako ya awali</string>
   <string name="change_pin_enter_old_pin_hint">Weka PIN yako ya ujumbe wa sauti ili uendelee.</string>
   <string name="change_pin_enter_new_pin_header">Weka PIN mpya</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN hazilingani</string>
   <string name="change_pin_succeeded">PIN ya ujumbe wa sauti imesasishwa</string>
   <string name="change_pin_system_error">Imeshindwa kuweka PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Unukuzi wa ujumbe wa sauti</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Uchanganuzi wa nukuu za ujumbe wa sauti</string>
   <string name="voicemail_activating_summary_info">Inawasha kipengele cha ujumbe wa sauti</string>
-  <string name="voicemail_transcription_preference_summary_info">Pata manukuu ya ujumbe wako wa sauti ukitumia huduma ya manukuu kutoka Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Ruhusu Google ikague ujumbe wako wa sauti ili iimarishe usahihi wa manukuu. Ujumbe wako wa sauti huhifadhiwa bila maelezo yanayoweza kukutambulisha. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Zima ujumbe wa sauti unaoonekana</string>
   <string name="confirm_disable_voicemail_dialog_message">Huenda hii ikafuta ujumbe wa sauti na nukuu za Google zilizohifadhiwa kwenye programu hii. Mtoa huduma za mtandao unaotumia anaweza kuhifadhi nakala zake.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ZIMA</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ta/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ta/strings.xml
index b1bdc2b..19bffb1 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ta/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ta/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">குரலஞ்சல் (%s)</string>
   <string name="voicemail_settings_title">குரலஞ்சல்</string>
   <string name="voicemail_notifications_preference_title">அறிவிப்புகள்</string>
   <string name="voicemail_change_greeting_preference_title">குரலஞ்சல் வாழ்த்து</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">பின்னை மாற்று</string>
   <string name="voicemail_change_pin_preference_summary_disable">பின்னை மாற்ற, விஷுவல் குரலஞ்சலை இயக்க வேண்டும்</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">விஷுவல் குரலஞ்சல் இன்னும் இயக்கப்படவில்லை. பிறகு முயலவும்</string>
-  <string name="vm_change_pin_old_pin">பழைய பின்</string>
-  <string name="vm_change_pin_new_pin">புதிய பின்</string>
   <string name="vm_change_pin_progress_message">காத்திருக்கவும்.</string>
   <string name="vm_change_pin_error_too_short">புதிய பின் மிகவும் சிறியதாக உள்ளது.</string>
   <string name="vm_change_pin_error_too_long">புதிய பின் மிகவும் நீளமாக உள்ளது.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">பின்னை மாற்ற முடியவில்லை</string>
   <string name="change_pin_title">குரலஞ்சல் பின்னை மாற்றவும்</string>
   <string name="change_pin_continue_label">தொடர்க</string>
-  <string name="change_pin_cancel_label">ரத்துசெய்</string>
-  <string name="change_pin_ok_label">சரி</string>
   <string name="change_pin_enter_old_pin_header">பழைய பின்னை உறுதிப்படுத்தவும்</string>
   <string name="change_pin_enter_old_pin_hint">தொடர, குரலஞ்சல் பின்னை உள்ளிடவும்.</string>
   <string name="change_pin_enter_new_pin_header">புதிய பின்னை அமைக்கவும்</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">பின்கள் பொருந்தவில்லை</string>
   <string name="change_pin_succeeded">குரலஞ்சல் பின் மாற்றப்பட்டது</string>
   <string name="change_pin_system_error">பின்னை அமைக்க முடியவில்லை</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">குரலஞ்சல் டிரான்ஸ்கிரிப்ஷன்</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">குரலஞ்சல் டிரான்ஸ்கிரிப்ஷன் பகுப்பாய்வு</string>
   <string name="voicemail_activating_summary_info">குரலஞ்சலைச் செயல்படுத்துகிறது</string>
-  <string name="voicemail_transcription_preference_summary_info">Google இன் டிரான்ஸ்கிரிப்ஷன் சேவையைப் பயன்படுத்தி, உங்கள் குரலஞ்சலுக்கான டிரான்ஸ்கிரிப்ட்டுகளைப் பெறலாம். %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">டிரான்ஸ்கிரிப்ஷனின் துல்லியத்தன்மையை மேம்படுத்த, உங்கள் குரலஞ்சல் செய்திகளை மதிப்பாய்வு செய்வதற்கு Googleஐ அனுமதிக்கவும். உங்கள் குரலஞ்சல் செய்திகள் பெயரற்ற முறையில் சேமிக்கப்படும். %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">விஷூவல் குரலஞ்சலை முடக்கு</string>
   <string name="confirm_disable_voicemail_dialog_message">முடக்கினால், இந்தப் பயன்பாட்டில் சேமித்திருக்கும் குரலஞ்சல் மற்றும் Google டிரான்ஸ்கிரிப்ட்டுகள் அனைத்தும் நீக்கப்படும். உங்கள் தொலைத்தொடர்பு நிறுவனத்திடம் அவற்றின் சொந்த நகல்கள் இருக்கலாம்.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">முடக்கு</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-te/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-te/strings.xml
index e493022..aa26706 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-te/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-te/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">వాయిస్ మెయిల్ (%s)</string>
   <string name="voicemail_settings_title">వాయిస్ మెయిల్</string>
   <string name="voicemail_notifications_preference_title">నోటిఫికేషన్‌లు</string>
   <string name="voicemail_change_greeting_preference_title">వాయిస్‌మెయిల్ శుభాకాంక్షలు</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">పిన్‌ని మార్చండి</string>
   <string name="voicemail_change_pin_preference_summary_disable">పిన్‌ని మార్చడానికి తప్పనిసరిగా దృశ్యమాన వాయిస్ మెయిల్‌ను ప్రారంభించాలి</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">దృశ్యమాన వాయిస్ మెయిల్‌ ఇంకా సక్రియం కాలేదు, దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి</string>
-  <string name="vm_change_pin_old_pin">పాత పిన్</string>
-  <string name="vm_change_pin_new_pin">కొత్త పిన్</string>
   <string name="vm_change_pin_progress_message">దయచేసి వేచి ఉండండి.</string>
   <string name="vm_change_pin_error_too_short">కొత్త పిన్ చాలా చిన్నదిగా ఉంది.</string>
   <string name="vm_change_pin_error_too_long">కొత్త పిన్ చాలా పొడవుగా ఉంది.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">పిన్‌ని మార్చడం సాధ్యపడలేదు</string>
   <string name="change_pin_title">వాయిస్ మెయిల్ పిన్‌ని మార్చండి</string>
   <string name="change_pin_continue_label">కొనసాగించు</string>
-  <string name="change_pin_cancel_label">రద్దు చేయి</string>
-  <string name="change_pin_ok_label">సరే</string>
   <string name="change_pin_enter_old_pin_header">మీ పాత పిన్‌ని నిర్ధారించండి</string>
   <string name="change_pin_enter_old_pin_hint">కొనసాగించడానికి మీ వాయిస్ మెయిల్ పిన్‌ని నమోదు చేయండి.</string>
   <string name="change_pin_enter_new_pin_header">కొత్త పిన్‌ని సెట్ చేయండి</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">పిన్‌లు సరిపోలలేదు</string>
   <string name="change_pin_succeeded">వాయిస్ మెయిల్ పిన్ అప్‌డేట్ చేయబడింది</string>
   <string name="change_pin_system_error">పిన్‌ని సెట్ చేయడం సాధ్యపడలేదు</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">వాయిస్ మెయిల్ లిప్యంతరీకరణ</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">వాయిస్ మెయిల్ లిప్యంతరీకరణ విశ్లేషణ</string>
   <string name="voicemail_activating_summary_info">వాయిస్‌ మెయిల్‌ను యాక్టివేట్ చేస్తోంది</string>
-  <string name="voicemail_transcription_preference_summary_info">Google లిప్యంతరీకరణ సేవను ఉపయోగించి మీ వాయిస్‌ మెయిల్ యొక్క లిప్యంతరీకరణలను పొందండి. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">లిప్యంతరీకరణ నాణ్యతను మెరుగుపరచడం కోసం మీ వాయిస్ మెయిల్ సందేశాలను సమీక్షించడానికి Googleని అనుమతించండి. మీ వాయిస్ మెయిల్ సందేశాలు అనామకంగా నిల్వ చేయబడతాయి. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">దృశ్య వాయిస్ మెయిల్‌ని ఆఫ్ చేయండి</string>
   <string name="confirm_disable_voicemail_dialog_message">ఇది ఈ యాప్‌లో నిల్వ చేయబడిన ఏవైనా వాయిస్ మెయిల్‌ మరియు Google లిప్యంతరీకరణలను తొలగిస్తుంది. మీ క్యారియర్ దాని స్వంత కాపీలను భద్రపరచుకోవచ్చు.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ఆఫ్ చేయండి</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-th/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-th/strings.xml
index 727b536..dfd3e07 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-th/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-th/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">ข้อความเสียง (%s)</string>
   <string name="voicemail_settings_title">ข้อความเสียง</string>
   <string name="voicemail_notifications_preference_title">การแจ้งเตือน</string>
   <string name="voicemail_change_greeting_preference_title">คำทักทายผู้ฝากข้อความเสียง</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">เปลี่ยน PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">ต้องเปิดใช้ข้อความเสียงพร้อมภาพเพื่อเปลี่ยน PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">ยังไม่ได้เปิดใช้งานข้อความเสียงพร้อมภาพ โปรดลองอีกครั้งในภายหลัง</string>
-  <string name="vm_change_pin_old_pin">PIN เก่า</string>
-  <string name="vm_change_pin_new_pin">PIN ใหม่</string>
   <string name="vm_change_pin_progress_message">โปรดรอสักครู่</string>
   <string name="vm_change_pin_error_too_short">PIN ใหม่สั้นเกินไป</string>
   <string name="vm_change_pin_error_too_long">PIN ใหม่ยาวเกินไป</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">เปลี่ยน PIN ไม่ได้</string>
   <string name="change_pin_title">เปลี่ยน PIN ข้อความเสียง</string>
   <string name="change_pin_continue_label">ต่อไป</string>
-  <string name="change_pin_cancel_label">ยกเลิก</string>
-  <string name="change_pin_ok_label">ตกลง</string>
   <string name="change_pin_enter_old_pin_header">ยืนยัน PIN เก่า</string>
   <string name="change_pin_enter_old_pin_hint">ป้อน PIN ข้อความเสียงเพื่อดำเนินการต่อ</string>
   <string name="change_pin_enter_new_pin_header">ตั้งค่า PIN ใหม่</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN ไม่ตรงกัน</string>
   <string name="change_pin_succeeded">อัปเดต PIN ข้อความเสียงแล้ว</string>
   <string name="change_pin_system_error">ตั้งค่า PIN ไม่</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">การถอดข้อความเสียง</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">การวิเคราะห์การถอดข้อความเสียง</string>
   <string name="voicemail_activating_summary_info">กำลังเปิดใช้ข้อความเสียง</string>
-  <string name="voicemail_transcription_preference_summary_info">รับบริการถอดข้อความเสียงของคุณเมื่อใช้บริการถอดเสียงของ Google%1$s</string>
-  <string name="voicemail_donate_preference_summary_info">ให้ Google ตรวจสอบข้อความเสียงเพื่อปรับปรุงความถูกต้องของการถอดเสียง ระบบจะจัดเก็บข้อความเสียงของคุณในแบบไม่ระบุตัวตน%1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">ปิดข้อความเสียงพร้อมภาพ</string>
   <string name="confirm_disable_voicemail_dialog_message">วิธีนี้จะลบข้อความเสียงและการถอดเสียงของ Google ที่เก็บในแอปนี้ แต่ผู้ให้บริการอาจเก็บสำเนาของตนเองไว้ได้</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ปิด</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-tl/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-tl/strings.xml
index 756416a..a96df29 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-tl/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-tl/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Voicemail (%s)</string>
   <string name="voicemail_settings_title">Voicemail</string>
   <string name="voicemail_notifications_preference_title">Mga Notification</string>
   <string name="voicemail_change_greeting_preference_title">Voicemail greeting</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Palitan ang PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Dapat naka-enable ang visual na voicemail upang palitan ang PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Hindi pa naka-activate ang visual na voicemail, pakisubukang muli sa ibang pagkakataon</string>
-  <string name="vm_change_pin_old_pin">Lumang PIN</string>
-  <string name="vm_change_pin_new_pin">Bagong PIN</string>
   <string name="vm_change_pin_progress_message">Pakihintay.</string>
   <string name="vm_change_pin_error_too_short">Masyadong maikli ang bagong PIN.</string>
   <string name="vm_change_pin_error_too_long">Masyadong mahaba ang bagong PIN.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Hindi nabago ang PIN</string>
   <string name="change_pin_title">Baguhin ang PIN sa Voicemail</string>
   <string name="change_pin_continue_label">Magpatuloy</string>
-  <string name="change_pin_cancel_label">Kanselahin</string>
-  <string name="change_pin_ok_label">Ok</string>
   <string name="change_pin_enter_old_pin_header">Kumpirmahin ang luma mong PIN</string>
   <string name="change_pin_enter_old_pin_hint">Ilagay ang iyong PIN sa voicemail upang magpatuloy.</string>
   <string name="change_pin_enter_new_pin_header">Magtakda ng bagong PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Hindi tugma ang mga PIN</string>
   <string name="change_pin_succeeded">In-update ang PIN sa voicemail</string>
   <string name="change_pin_system_error">Hindi naitakda ang PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Transkripsyon ng voicemail</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Pagsusuri ng transkripsyon ng voicemail</string>
   <string name="voicemail_activating_summary_info">Ina-activate ang voicemail</string>
-  <string name="voicemail_transcription_preference_summary_info">Kumuha ng mga transcript ng iyong voicemail gamit ang serbisyo ng transcription ng Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Hayaang suriin ng Google ang iyong mga mensahe sa voicemail para mapaganda ang katumpakan ng transkripsyon. Ini-store nang anonymous ang iyong mga mensahe sa voicemail. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">I-off ang visual na voicemail</string>
   <string name="confirm_disable_voicemail_dialog_message">Ide-delete nito ang anumang voicemail at mga transcript ng Google na naka-store sa app na ito. Maaaring magpanatili ang iyong carrier ng sarili nitong mga kopya.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">I-OFF</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-tr/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-tr/strings.xml
index 30a9703..ab8cab9 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-tr/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-tr/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Sesli mesaj (%s)</string>
   <string name="voicemail_settings_title">Sesli mesaj</string>
   <string name="voicemail_notifications_preference_title">Bildirimler</string>
   <string name="voicemail_change_greeting_preference_title">Sesli karşılama mesajı</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN\'i değiştirin</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN\'i değiştirebilmek için görsel sesli mesaj etkinleştirilmelidir</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Görsel sesli mesaj henüz etkinleştirilmedi. Lütfen daha sonra tekrar deneyin.</string>
-  <string name="vm_change_pin_old_pin">Eski PIN</string>
-  <string name="vm_change_pin_new_pin">Yeni PIN</string>
   <string name="vm_change_pin_progress_message">Lütfen bekleyin.</string>
   <string name="vm_change_pin_error_too_short">Yeni PIN çok kısa.</string>
   <string name="vm_change_pin_error_too_long">Yeni PIN çok uzun.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN değiştirilemedi</string>
   <string name="change_pin_title">Sesli Mesaj PIN\'ini Değiştirin</string>
   <string name="change_pin_continue_label">Devam</string>
-  <string name="change_pin_cancel_label">İptal</string>
-  <string name="change_pin_ok_label">Tamam</string>
   <string name="change_pin_enter_old_pin_header">Eski PIN\'inizi onaylayın</string>
   <string name="change_pin_enter_old_pin_hint">Devam etmek için sesli mesaj PIN\'inizi girin.</string>
   <string name="change_pin_enter_new_pin_header">Yeni PIN belirleyin</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN\'ler eşleşmiyor</string>
   <string name="change_pin_succeeded">Sesli mesaj PIN\'i güncellendi</string>
   <string name="change_pin_system_error">PIN belirlenemedi</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Sesli mesaj çeviri yazısı</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Sesli mesaj çeviri yazısı analizi</string>
   <string name="voicemail_activating_summary_info">Sesli mesaj etkinleştiriliyor</string>
-  <string name="voicemail_transcription_preference_summary_info">Google\'ın çeviri yazı hizmetini kullanarak sesli mesajlarınızın çeviri yazılarını alın. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Çeviri yazı doğruluğunun iyileştirilmesi için Google\'a sesli mesajlarınızı inceleme izni verin. Sesli mesajlarınız anonim olarak depolanır. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Görsel sesli mesaj özelliğini kapatın</string>
   <string name="confirm_disable_voicemail_dialog_message">Bu işlemle, bu uygulamada depolanan tüm sesli mesajlar ve Google çeviri yazıları silinecek. Operatörünüz bunların birer kopyasını saklayabilir.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">KAPAT</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-uk/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-uk/strings.xml
index 0d9d7ac..fb6b8eb 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-uk/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-uk/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Голосова пошта (%s)</string>
   <string name="voicemail_settings_title">Голосова пошта</string>
   <string name="voicemail_notifications_preference_title">Сповіщення</string>
   <string name="voicemail_change_greeting_preference_title">Привітання в голосовій пошті</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Змінити PIN-код</string>
   <string name="voicemail_change_pin_preference_summary_disable">Щоб змінити PIN-код, потрібно ввімкнути візуальну голосову пошту</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Візуальну голосову пошту ще не активовано, повторіть спробу пізніше</string>
-  <string name="vm_change_pin_old_pin">Старий PIN-код</string>
-  <string name="vm_change_pin_new_pin">Новий PIN-код</string>
   <string name="vm_change_pin_progress_message">Зачекайте.</string>
   <string name="vm_change_pin_error_too_short">Новий PIN-код закороткий.</string>
   <string name="vm_change_pin_error_too_long">Новий PIN-код задовгий.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Не вдалося змінити PIN-код</string>
   <string name="change_pin_title">Зміна PIN-коду голосової пошти</string>
   <string name="change_pin_continue_label">Продовжити</string>
-  <string name="change_pin_cancel_label">Скасувати</string>
-  <string name="change_pin_ok_label">ОK</string>
   <string name="change_pin_enter_old_pin_header">Підтвердьте старий PIN-код</string>
   <string name="change_pin_enter_old_pin_hint">Щоб продовжити, введіть PIN-код голосової пошти.</string>
   <string name="change_pin_enter_new_pin_header">Введіть новий PIN-код</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN-коди не збігаються</string>
   <string name="change_pin_succeeded">PIN-код голосової пошти змінено</string>
   <string name="change_pin_system_error">Не вдалося встановити PIN-код</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Транскрипція голосової пошти</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Аналіз транскрипції голосової пошти</string>
   <string name="voicemail_activating_summary_info">Увімкнення голосової пошти</string>
-  <string name="voicemail_transcription_preference_summary_info">Отримуйте тексти повідомлень голосової пошти за допомогою сервісу транскрипції від Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Дозвольте Google перевіряти ваші повідомлення голосової пошти, щоб покращувати точність транскрипції. Ваші повідомлення голосової пошти зберігатимуться анонімно. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Вимкнути візуальну голосову пошту</string>
   <string name="confirm_disable_voicemail_dialog_message">Буде видалено всю голосову пошту та транскрипції Google, які зберігаються в цьому додатку. Ваш оператор може зберегти для себе копії.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">ВИМКНУТИ</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-ur/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-ur/strings.xml
index 69ab070..80ed7d7 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-ur/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-ur/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">صوتی میل (%s)</string>
   <string name="voicemail_settings_title">صوتی میل</string>
   <string name="voicemail_notifications_preference_title">اطلاعات</string>
   <string name="voicemail_change_greeting_preference_title">صوتی میل استقبالیہ</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">‏PIN تبدیل کریں</string>
   <string name="voicemail_change_pin_preference_summary_disable">‏PIN تبدیل کرنے کیلئے بصری صوتی میل کا فعال ہونا لازمی ہے</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">بصری صوتی میل ابھی فعال نہیں ہے، براہ کرم بعد میں دوبارہ کوشش کریں</string>
-  <string name="vm_change_pin_old_pin">‏پرانا PIN</string>
-  <string name="vm_change_pin_new_pin">‏نیا PIN</string>
   <string name="vm_change_pin_progress_message">براہ کرم انتظار کریں۔</string>
   <string name="vm_change_pin_error_too_short">‏نیا PIN بہت مختصر ہے۔</string>
   <string name="vm_change_pin_error_too_long">‏نیا PIN بہت طویل ہے۔</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">‏PIN تبدیل کرنے سے قاصر</string>
   <string name="change_pin_title">‏صوتی میل کا PIN تبدیل کریں</string>
   <string name="change_pin_continue_label">جاری رکھیں</string>
-  <string name="change_pin_cancel_label">منسوخ کریں</string>
-  <string name="change_pin_ok_label">ٹھیک ہے</string>
   <string name="change_pin_enter_old_pin_header">‏اپنے پرانے PIN کی تصدیق کریں</string>
   <string name="change_pin_enter_old_pin_hint">‏جاری رکھنے کیلئے اپنے صوتی میل کا PIN درج کریں۔</string>
   <string name="change_pin_enter_new_pin_header">‏ایک نیا PIN سیٹ کریں</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">‏PINs مماثل نہیں ہیں</string>
   <string name="change_pin_succeeded">‏صوتی میل کا PIN اپ ڈیٹ ہو گیا</string>
   <string name="change_pin_system_error">‏PIN سیٹ کرنے سے قاصر</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">صوتی میل کی ٹرانسکرپشن</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">صوتی میل کی نقل حرفی کا تجزیہ</string>
   <string name="voicemail_activating_summary_info">صوتی میل کو فعال کیا جا رہا ہے</string>
-  <string name="voicemail_transcription_preference_summary_info">‏Google کی ٹرانسکرپشن سروس کا استعمال کر کے اپنے صوتی میل کی ٹرانسکرپٹس حاصل کریں۔ %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">‏ٹرانسکرپشن کی درستگی بہتر بنانے کیلئے Google کو اپنے صوتی میل کے پیغامات کا جائزہ لینے دیں۔ آپ کے صوتی میل کے پیغامات گمنام طریقے سے اسٹور کئے جاتے ہیں۔ %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">بصری صوتی میل آف کریں</string>
   <string name="confirm_disable_voicemail_dialog_message">‏یہ اس ایپ میں اسٹور کردہ کسی بھی صوتی میل اور Google ٹرانسکرپٹ کو حذف کر دے گا۔ آپ کا کیریئر خود اپنی کاپیاں رکھ سکتا ہے۔</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">آف کریں</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-uz/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-uz/strings.xml
index a8ae303..89776e1 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-uz/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-uz/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Ovozli pochta (%s)</string>
   <string name="voicemail_settings_title">Ovozli pochta</string>
   <string name="voicemail_notifications_preference_title">Bildirishnomalar</string>
   <string name="voicemail_change_greeting_preference_title">Ovozli pochta salomlashuvi</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">PIN kodni o‘zgartirish</string>
   <string name="voicemail_change_pin_preference_summary_disable">PIN kodni o‘zgartirish uchun vizual ovozli pochtani yoqing.</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Vizual ovozli pochta hali yoqilmadi. Keyinroq qayta urining.</string>
-  <string name="vm_change_pin_old_pin">Eski PIN kod</string>
-  <string name="vm_change_pin_new_pin">Yangi PIN kod</string>
   <string name="vm_change_pin_progress_message">Iltimos, kuting…</string>
   <string name="vm_change_pin_error_too_short">Yangi PIN kod juda qisqa.</string>
   <string name="vm_change_pin_error_too_long">Yangi PIN kod juda uzun.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">PIN kodni o‘zgartirib bo‘lmadi.</string>
   <string name="change_pin_title">Ovozli pochta PIN kodini o‘zgartirish</string>
   <string name="change_pin_continue_label">Davom etish</string>
-  <string name="change_pin_cancel_label">Bekor qilish</string>
-  <string name="change_pin_ok_label">OK</string>
   <string name="change_pin_enter_old_pin_header">Eski PIN kodni tasdiqlang</string>
   <string name="change_pin_enter_old_pin_hint">Davom etish uchun ovozli pochta PIN kodini kiriting.</string>
   <string name="change_pin_enter_new_pin_header">Yangi PIN kod o‘rnatish</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN kodlar bir-biriga mos kelmayapti.</string>
   <string name="change_pin_succeeded">Ovozli pochta PIN kodi yangilandi.</string>
   <string name="change_pin_system_error">PIN kodni o‘rnatib bo‘lmadi.</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Ovozli xabarlar transkripsiyasi</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Ovozli xabarlar transkripsiyasi tahlili</string>
   <string name="voicemail_activating_summary_info">Ovozli pochta yoqilmoqda</string>
-  <string name="voicemail_transcription_preference_summary_info">Ovozli xabarlarni maxsus Google xizmati yordamida transkripsiya qilishga ruxsat berilsin. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Transkripsiya sifatini yaxshilash maqsadida Googlega ovozli xabarlaringizni tekshirishiga ruxsat bering. Ovozli xabarlar anonim saqlanadi.%1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Vizual ovozli pochtani o‘chirib qo‘yish</string>
   <string name="confirm_disable_voicemail_dialog_message">Shu ilovada saqlanayotgan barcha ovozli xabarlar va Google transkripsiyalari o‘chirib tashlanadi. Operatoringiz ularning nusxalarini saqlab qolishi mumkin.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">O‘CHIRIB QO‘YISH</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-vi/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-vi/strings.xml
index 3474853..cc196fc 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-vi/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-vi/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Thư thoại %s</string>
   <string name="voicemail_settings_title">Thư thoại</string>
   <string name="voicemail_notifications_preference_title">Thông báo</string>
   <string name="voicemail_change_greeting_preference_title">Lời chào thư thoại</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Thay đổi mã PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Phải bật thư thoại kèm theo hình ảnh để thay đổi mã PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Thư thoại kèm theo hình ảnh chưa được kích hoạt, hãy thử lại sau</string>
-  <string name="vm_change_pin_old_pin">Mã PIN cũ</string>
-  <string name="vm_change_pin_new_pin">Mã PIN mới</string>
   <string name="vm_change_pin_progress_message">Vui lòng đợi.</string>
   <string name="vm_change_pin_error_too_short">Mã PIN mới quá ngắn.</string>
   <string name="vm_change_pin_error_too_long">Mã PIN mới quá dài.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Không thể thay đổi mã PIN</string>
   <string name="change_pin_title">Thay đổi mã PIN thư thoại</string>
   <string name="change_pin_continue_label">Tiếp tục</string>
-  <string name="change_pin_cancel_label">Hủy</string>
-  <string name="change_pin_ok_label">Ok</string>
   <string name="change_pin_enter_old_pin_header">Xác nhận mã PIN cũ của bạn</string>
   <string name="change_pin_enter_old_pin_hint">Hãy nhập mã PIN thư thoại của bạn để tiếp tục.</string>
   <string name="change_pin_enter_new_pin_header">Đặt mã PIN mới</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Các mã PIN không khớp</string>
   <string name="change_pin_succeeded">Đã cập nhật mã PIN thư thoại</string>
   <string name="change_pin_system_error">Không thể đặt mã PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Bản chép lời thư thoại</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Phân tích bản ghi âm thư thoại</string>
   <string name="voicemail_activating_summary_info">Đang kích hoạt thư thoại</string>
-  <string name="voicemail_transcription_preference_summary_info">Nhận bản chép lời thư thoại của bạn bằng cách sử dụng dịch vụ chép lời của Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Cho phép Google xem xét thư thoại của bạn để cải thiện độ chính xác của bản chép lời. Thư thoại của bạn được lưu trữ ẩn danh. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Tắt thư thoại kèm theo hình ảnh</string>
   <string name="confirm_disable_voicemail_dialog_message">Thao tác này sẽ xóa bất kỳ thư thoại và bản ghi âm Google nào được lưu trữ trong ứng dụng này. Nhà mạng của bạn có thể giữ bản sao riêng.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">TẮT</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-zh-rCN/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-zh-rCN/strings.xml
index 33229ff..e22b231 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-zh-rCN/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-zh-rCN/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">语音邮件（%s）</string>
   <string name="voicemail_settings_title">语音邮件</string>
   <string name="voicemail_notifications_preference_title">通知</string>
   <string name="voicemail_change_greeting_preference_title">语音信箱问候语</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">更改 PIN 码</string>
   <string name="voicemail_change_pin_preference_summary_disable">必须启用可视语音信箱才能更改 PIN 码</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">可视语音信箱尚未激活，请稍后再试</string>
-  <string name="vm_change_pin_old_pin">旧 PIN 码</string>
-  <string name="vm_change_pin_new_pin">新 PIN 码</string>
   <string name="vm_change_pin_progress_message">请稍候。</string>
   <string name="vm_change_pin_error_too_short">新的 PIN 码太短。</string>
   <string name="vm_change_pin_error_too_long">新的 PIN 码太长。</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">无法更改 PIN 码</string>
   <string name="change_pin_title">更改语音信箱 PIN 码</string>
   <string name="change_pin_continue_label">继续</string>
-  <string name="change_pin_cancel_label">取消</string>
-  <string name="change_pin_ok_label">确定</string>
   <string name="change_pin_enter_old_pin_header">确认旧 PIN 码</string>
   <string name="change_pin_enter_old_pin_hint">输入语音信箱 PIN 码以继续操作。</string>
   <string name="change_pin_enter_new_pin_header">设置新 PIN 码</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN 码不一致</string>
   <string name="change_pin_succeeded">语音信箱 PIN 码已更新</string>
   <string name="change_pin_system_error">无法设置 PIN 码</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">语音邮件转录</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">语音邮件转录分析</string>
   <string name="voicemail_activating_summary_info">正在激活语音信箱</string>
-  <string name="voicemail_transcription_preference_summary_info">借助 Google 的转录服务获取语音邮件的转录文本。%1$s</string>
-  <string name="voicemail_donate_preference_summary_info">允许 Google 查看您的语音邮件，以提高转录准确度。您的语音邮件会以匿名形式存储。%1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">关闭可视语音信箱</string>
   <string name="confirm_disable_voicemail_dialog_message">这会删除此应用中存储的所有语音邮件和 Google 转录的内容。您的运营商可能会保留自己的副本。</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">关闭</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-zh-rHK/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-zh-rHK/strings.xml
index 3d160d8..afdc07d 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-zh-rHK/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-zh-rHK/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">留言 (%s)</string>
   <string name="voicemail_settings_title">留言</string>
   <string name="voicemail_notifications_preference_title">通知</string>
   <string name="voicemail_change_greeting_preference_title">留言信箱問候語</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">變更 PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">必須啟用視像留言才能變更 PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">視像留言尚未啟用，請稍後再試</string>
-  <string name="vm_change_pin_old_pin">舊的 PIN</string>
-  <string name="vm_change_pin_new_pin">新的 PIN</string>
   <string name="vm_change_pin_progress_message">請稍候。</string>
   <string name="vm_change_pin_error_too_short">新的 PIN 太短。</string>
   <string name="vm_change_pin_error_too_long">新的 PIN 太長。</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">無法變更 PIN</string>
   <string name="change_pin_title">變更留言 PIN</string>
   <string name="change_pin_continue_label">繼續</string>
-  <string name="change_pin_cancel_label">取消</string>
-  <string name="change_pin_ok_label">確定</string>
   <string name="change_pin_enter_old_pin_header">確認舊的 PIN</string>
   <string name="change_pin_enter_old_pin_hint">請輸入留言 PIN 以繼續。</string>
   <string name="change_pin_enter_new_pin_header">設定新的 PIN</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">PIN 不符</string>
   <string name="change_pin_succeeded">已更新留言 PIN</string>
   <string name="change_pin_system_error">無法設定 PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">留言轉錄</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">留言轉錄分析</string>
   <string name="voicemail_activating_summary_info">正在啟用留言</string>
-  <string name="voicemail_transcription_preference_summary_info">使用 Google 轉錄服務轉錄您的留言。%1$s</string>
-  <string name="voicemail_donate_preference_summary_info">讓 Google 審查您的留言訊息，以提高轉錄準確度。系統會以匿名方式儲存您的留言訊息。%1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">關閉視像留言</string>
   <string name="confirm_disable_voicemail_dialog_message">這樣會刪除所有儲存在這個應用程式中的留言和 Google 轉錄內容。您的流動網絡供應商可能會保留自己的副本。</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">關閉</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-zh-rTW/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-zh-rTW/strings.xml
index 1bacd7c..0cf06f7 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-zh-rTW/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-zh-rTW/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">語音信箱 (%s)</string>
   <string name="voicemail_settings_title">語音信箱</string>
   <string name="voicemail_notifications_preference_title">通知</string>
   <string name="voicemail_change_greeting_preference_title">語音信箱問候語</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">變更語音信箱密碼</string>
   <string name="voicemail_change_pin_preference_summary_disable">必須啟用視覺化語音信箱才能變更語音信箱密碼</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">尚未啟用視覺化語音信箱，請稍後再試</string>
-  <string name="vm_change_pin_old_pin">舊的語音信箱密碼</string>
-  <string name="vm_change_pin_new_pin">新的語音信箱密碼</string>
   <string name="vm_change_pin_progress_message">請稍候。</string>
   <string name="vm_change_pin_error_too_short">新的語音信箱密碼太短。</string>
   <string name="vm_change_pin_error_too_long">新的語音信箱密碼太長。</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">無法變更語音信箱密碼</string>
   <string name="change_pin_title">變更語音信箱密碼</string>
   <string name="change_pin_continue_label">繼續</string>
-  <string name="change_pin_cancel_label">取消</string>
-  <string name="change_pin_ok_label">確定</string>
   <string name="change_pin_enter_old_pin_header">確認舊的語音信箱密碼</string>
   <string name="change_pin_enter_old_pin_hint">請輸入你的語音信箱密碼，然後才能繼續接下來的步驟。</string>
   <string name="change_pin_enter_new_pin_header">設定新的語音信箱密碼</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">語音信箱密碼不符</string>
   <string name="change_pin_succeeded">已更新語音信箱密碼</string>
   <string name="change_pin_system_error">無法設定語音信箱密碼</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">語音留言轉錄</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">語音留言轉錄分析</string>
   <string name="voicemail_activating_summary_info">正在啟用語音信箱</string>
-  <string name="voicemail_transcription_preference_summary_info">使用 Google 的留言轉錄服務取得你的語音留言轉錄。%1$s</string>
-  <string name="voicemail_donate_preference_summary_info">允許 Google 聽取你的語音留言，以改善轉錄精確度。系統會以匿名方式儲存你的語音留言。%1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">停用視覺化語音信箱</string>
   <string name="confirm_disable_voicemail_dialog_message">這項操作將會刪除儲存在這個應用程式中的所有語音留言和 Google 留言轉錄。請注意，你的電信業者可能會保留複本。</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">停用</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values-zu/strings.xml b/java/com/android/dialer/voicemail/settings/res/values-zu/strings.xml
index 352f16e..10fdc67 100644
--- a/java/com/android/dialer/voicemail/settings/res/values-zu/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values-zu/strings.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string name="voicemail_settings_with_label">Ivoyisimeyili (%s)</string>
   <string name="voicemail_settings_title">Ivoyisimeyili</string>
   <string name="voicemail_notifications_preference_title">Izaziso</string>
   <string name="voicemail_change_greeting_preference_title">Ukubingelela kwevoyisimeyili</string>
@@ -14,8 +13,6 @@
   <string name="voicemail_change_pin_preference_title">Shintsha i-PIN</string>
   <string name="voicemail_change_pin_preference_summary_disable">Ivoyisimeyili ebonakalayo kumele inikwe amandla ukuze ishintshe i-PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Ivoyisimeyili ebonakalayo ayisebenzi okwamanje, sicela uzame futhi emuva kwesikhathi</string>
-  <string name="vm_change_pin_old_pin">I-PIN endala</string>
-  <string name="vm_change_pin_new_pin">I-PIN entsha</string>
   <string name="vm_change_pin_progress_message">Sicela ulinde.</string>
   <string name="vm_change_pin_error_too_short">I-PIN entsha imfushane kakhulu.</string>
   <string name="vm_change_pin_error_too_long">I-PIN entsha yinde kakhulu.</string>
@@ -25,8 +22,6 @@
   <string name="vm_change_pin_error_system_error">Ayikwazi ukushintsha i-PIN</string>
   <string name="change_pin_title">Shintsha IPHINI yevoyisimeyili</string>
   <string name="change_pin_continue_label">Qhubeka</string>
-  <string name="change_pin_cancel_label">Khansela</string>
-  <string name="change_pin_ok_label">Kulungile</string>
   <string name="change_pin_enter_old_pin_header">Qinisekisa i-PIN yakho endala</string>
   <string name="change_pin_enter_old_pin_hint">Faka i-PIN yakho yevoyisimeyili ukuze uqhubeke.</string>
   <string name="change_pin_enter_new_pin_header">Setha i-PIN entsha</string>
@@ -35,11 +30,7 @@
   <string name="change_pin_confirm_pins_dont_match">Ama-PIN awafani</string>
   <string name="change_pin_succeeded">I-PIN yevoyisimeyili ibuyekeziwe</string>
   <string name="change_pin_system_error">Ayikwazi ukusetha i-PIN</string>
-  <string name="voicemail_visual_voicemail_transcription_switch_title">Ukulotshwa kwevoyisimeyili</string>
-  <string name="voicemail_visual_voicemail_donation_switch_title">Ukuhlaziywa kokubhala ngokuloba kwevoyisimeyili</string>
   <string name="voicemail_activating_summary_info">Yenza kusebenze ivoyisimeyili</string>
-  <string name="voicemail_transcription_preference_summary_info">Thola ukuloba kwevoyisimeyili yakho usebenzisa isevisi yokuloba ye-Google. %1$s</string>
-  <string name="voicemail_donate_preference_summary_info">Vumela i-Google ibuyekeze imilayezo yakho yevoyisimeyili ukuze ithuthukise ukunemba kokuloba. Imilayezo yakho yevoyisimeyili igcinwa ngokungaziwa. %1$s</string>
   <string name="confirm_disable_voicemail_dialog_title">Vala ivoyisimeyili yokubuka</string>
   <string name="confirm_disable_voicemail_dialog_message">Lokhu kuzosula noma iyiphi ivoyisimeyili nemibhalo ye-Google elondolozwe ngaphakathi kwalolu hlelo lokusebenza. Inkampani yakho yenethiwekhi ikugcina kumakhophi ayo.</string>
   <string name="confirm_disable_voicemail_accept_dialog_label">VALA</string>
diff --git a/java/com/android/dialer/voicemail/settings/res/values/strings.xml b/java/com/android/dialer/voicemail/settings/res/values/strings.xml
index 971f37a..9a4f507 100644
--- a/java/com/android/dialer/voicemail/settings/res/values/strings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/values/strings.xml
@@ -15,10 +15,6 @@
 -->
 
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-
-  <!-- Title of the "Voicemail" settings screen, with a text label identifying which SIM the settings are for. -->
-  <string name="voicemail_settings_with_label">Voicemail (<xliff:g example="Mock Carrier" id="subscriptionlabel">%s</xliff:g>)</string>
-
   <!-- Call settings screen, setting option name -->
   <string name="voicemail_settings_title">Voicemail</string>
 
@@ -30,9 +26,6 @@
          [CHAR LIMIT=30] -->
   <string name="voicemail_notifications_preference_title">Notifications</string>
 
-  <!-- Internal key for a preference to change greeting -->
-  <string name="voicemail_change_greeting_key" translatable="false">voicemail_change_greeting_key</string>
-
   <!-- Title for changing voicemail greeting activity [CHAR LIMIT=40] -->
   <string name="voicemail_change_greeting_preference_title">Voicemail greeting</string>
 
@@ -79,11 +72,6 @@
   <string name="voicemail_change_pin_preference_summary_disable">Visual voicemail must be enabled to change PIN</string>
   <string name="voicemail_change_pin_preference_summary_not_activated">Visual voicemail is not activated yet, please try again later</string>
 
-  <!-- Hint for the old PIN field in the change vociemail PIN dialog -->
-  <string name="vm_change_pin_old_pin">Old PIN</string>
-  <!-- Hint for the new PIN field in the change vociemail PIN dialog -->
-  <string name="vm_change_pin_new_pin">New PIN</string>
-
   <!-- Message on the dialog when PIN changing is in progress -->
   <string name="vm_change_pin_progress_message">Please wait.</string>
   <!-- Error message for the voicemail PIN change if the PIN is too short -->
@@ -103,10 +91,6 @@
   <string name="change_pin_title">Change Voicemail PIN</string>
   <!-- The label for the continue button in change voicemail PIN activity -->
   <string name="change_pin_continue_label">Continue</string>
-  <!-- The label for the cancel button in change voicemail PIN activity -->
-  <string name="change_pin_cancel_label">Cancel</string>
-  <!-- The label for the ok button in change voicemail PIN activity -->
-  <string name="change_pin_ok_label">Ok</string>
   <!-- The title for the enter old pin step in change voicemail PIN activity -->
   <string name="change_pin_enter_old_pin_header">Confirm your old PIN</string>
   <!-- The hint for the enter old pin step in change voicemail PIN activity -->
@@ -124,27 +108,9 @@
   <!-- The error message to show if the server reported an error while attempting to change the voicemail PIN -->
   <string name="change_pin_system_error">Unable to set PIN</string>
 
-  <string name="voicemail_visual_voicemail_transcription_key" translatable="false">transcribe_voicemails</string>
-  <string name="voicemail_visual_voicemail_donation_key" translatable="false">donate_voicemails</string>
-
-  <!-- Title for visual voicemail setting that enables users voicemails to be transcribed by Google.
-       [CHAR LIMIT=40] -->
-  <string name="voicemail_visual_voicemail_transcription_switch_title">
-    Voicemail transcription
-  </string>
-  <!-- Title for visual voicemail setting that enables user to donate their voicemails for analysis.
-       [CHAR LIMIT=40] -->
-  <string name="voicemail_visual_voicemail_donation_switch_title">
-    Voicemail transcription analysis
-  </string>
   <!-- Summary information while visual voicemail is activating after turning it on [CHAR LIMIT=NONE] -->
   <string name="voicemail_activating_summary_info">Activating voicemail</string>
 
-  <!-- Summary information for visual voicemail transcription setting [CHAR LIMIT=NONE] -->
-  <string name="voicemail_transcription_preference_summary_info">Get transcripts of your voicemail using Google\'s transcription service. <xliff:g example="Learn more">%1$s</xliff:g></string>
-  <!-- Summary information for visual voicemail donation setting [CHAR LIMIT=NONE] -->
-  <string name="voicemail_donate_preference_summary_info">Let Google review your voicemail messages to improve transcription accuracy. Your voicemail messages are stored anonymously. <xliff:g example="Learn more">%1$s</xliff:g></string>
-
   <!-- Title for disable visual voicemail confirmation dialog [CHAR LIMIT=40] -->
   <string name="confirm_disable_voicemail_dialog_title">Turn off visual voicemail</string>
   <!-- Message explaining the implictions of disabling visual voicemail [CHAR LIMIT=NONE] -->
@@ -152,7 +118,4 @@
   <!-- The label for the confirm-disable-voicemail button [CHAR LIMIT=16] -->
   <string name="confirm_disable_voicemail_accept_dialog_label">TURN OFF</string>
 
-  <string name="transcription_learn_more_url" translatable="false">https://support.google.com/phoneapp/answer/2811844?hl=en%26ref_topic=7539039</string>
-  <string name="donation_learn_more_url" translatable="false">https://support.google.com/phoneapp/answer/2811844#voicemail_transcript</string>
-
 </resources>
diff --git a/java/com/android/dialer/voicemail/settings/res/xml/voicemail_settings.xml b/java/com/android/dialer/voicemail/settings/res/xml/voicemail_settings.xml
index 9dff2cb..194ddce 100644
--- a/java/com/android/dialer/voicemail/settings/res/xml/voicemail_settings.xml
+++ b/java/com/android/dialer/voicemail/settings/res/xml/voicemail_settings.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2014 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -20,40 +21,29 @@
 
   <Preference
       android:key="@string/voicemail_notifications_key"
-      android:title="@string/voicemail_notifications_preference_title"/>
+      android:title="@string/voicemail_notifications_preference_title"
+      app:iconSpaceReserved="false" />
 
-  <Preference
-    android:key="@string/voicemail_change_greeting_key"
-    android:title = "@string/voicemail_change_greeting_preference_title"/>
-
-  <SwitchPreference
+  <SwitchPreferenceCompat
       android:key="@string/voicemail_visual_voicemail_key"
-      android:title="@string/voicemail_visual_voicemail_switch_title"/>"
+      android:title="@string/voicemail_visual_voicemail_switch_title"
+      app:iconSpaceReserved="false" />"
 
-  <SwitchPreference
+  <SwitchPreferenceCompat
       android:dependency="@string/voicemail_visual_voicemail_key"
       android:key="@string/voicemail_visual_voicemail_archive_key"
-      android:title="@string/voicemail_visual_voicemail_auto_archive_switch_title"/>"
-
-  <com.android.dialer.common.preference.SwitchPreferenceWithClickableSummary
-      android:dependency="@string/voicemail_visual_voicemail_key"
-      android:key="@string/voicemail_visual_voicemail_transcription_key"
-      android:title="@string/voicemail_visual_voicemail_transcription_switch_title"
-      app:urlToOpen="@string/transcription_learn_more_url"/>
-
-  <com.android.dialer.common.preference.SwitchPreferenceWithClickableSummary
-      android:dependency="@string/voicemail_visual_voicemail_transcription_key"
-      android:key="@string/voicemail_visual_voicemail_donation_key"
-      android:title="@string/voicemail_visual_voicemail_donation_switch_title"
-      app:urlToOpen="@string/donation_learn_more_url"/>
+      android:title="@string/voicemail_visual_voicemail_auto_archive_switch_title"
+      app:iconSpaceReserved="false" />"
 
   <Preference
       android:key="@string/voicemail_change_pin_key"
-      android:title="@string/voicemail_change_pin_preference_title"/>
+      android:title="@string/voicemail_change_pin_preference_title"
+      app:iconSpaceReserved="false" />
 
   <PreferenceScreen
       android:key="@string/voicemail_advanced_settings_key"
-      android:title="@string/voicemail_advanced_settings_title">
+      android:title="@string/voicemail_advanced_settings_title"
+      app:iconSpaceReserved="false" >
   </PreferenceScreen>
 
 </PreferenceScreen>
diff --git a/java/com/android/dialer/voicemailstatus/AndroidManifest.xml b/java/com/android/dialer/voicemailstatus/AndroidManifest.xml
deleted file mode 100644
index a39894c..0000000
--- a/java/com/android/dialer/voicemailstatus/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.dialer.voicemailstatus">
-</manifest>
diff --git a/java/com/android/dialer/voicemailstatus/VisualVoicemailEnabledChecker.java b/java/com/android/dialer/voicemailstatus/VisualVoicemailEnabledChecker.java
index 8010e02..ca6c748 100644
--- a/java/com/android/dialer/voicemailstatus/VisualVoicemailEnabledChecker.java
+++ b/java/com/android/dialer/voicemailstatus/VisualVoicemailEnabledChecker.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,8 +20,10 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.database.Cursor;
-import android.preference.PreferenceManager;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceManager;
+
 import com.android.dialer.database.CallLogQueryHandler;
 
 /**
@@ -42,36 +45,16 @@
 
   public static final String PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER =
       "has_active_voicemail_provider";
-  private SharedPreferences prefs;
+  private final SharedPreferences prefs;
   private boolean hasActiveVoicemailProvider;
-  private CallLogQueryHandler callLogQueryHandler;
-  private Context context;
-  private Callback callback;
+  private final Callback callback;
 
   public VisualVoicemailEnabledChecker(Context context, @Nullable Callback callback) {
-    this.context = context;
     this.callback = callback;
-    prefs = PreferenceManager.getDefaultSharedPreferences(this.context);
+    prefs = PreferenceManager.getDefaultSharedPreferences(context);
     hasActiveVoicemailProvider = prefs.getBoolean(PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, false);
   }
 
-  /**
-   * @return whether visual voicemail is enabled. Result is cached, call asyncUpdate() to update the
-   *     result.
-   */
-  public boolean isVisualVoicemailEnabled() {
-    return hasActiveVoicemailProvider;
-  }
-
-  /**
-   * Perform an async query into the system to check the status of visual voicemail. If the status
-   * has changed, Callback.onVisualVoicemailEnabledStatusChanged() will be called.
-   */
-  public void asyncUpdate() {
-    callLogQueryHandler = new CallLogQueryHandler(context, context.getContentResolver(), this);
-    callLogQueryHandler.fetchVoicemailStatus();
-  }
-
   @Override
   public void onVoicemailStatusFetched(Cursor statusCursor) {
     boolean hasActiveVoicemailProvider =
diff --git a/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java b/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java
index 7264afe..20b073d 100644
--- a/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java
+++ b/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java
@@ -16,13 +16,7 @@
 
 package com.android.dialer.voicemailstatus;
 
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.provider.VoicemailContract.Status;
-import android.support.annotation.RequiresApi;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
 
 /** The query for the call voicemail status table. */
 public class VoicemailStatusQuery {
@@ -36,19 +30,11 @@
   public static final int NOTIFICATION_CHANNEL_STATE_INDEX = 5;
   public static final int QUOTA_OCCUPIED_INDEX = 6;
   public static final int QUOTA_TOTAL_INDEX = 7;
-
-  @RequiresApi(VERSION_CODES.N_MR1)
-  // The PHONE_ACCOUNT columns were added in M, but aren't queryable until N MR1
   public static final int PHONE_ACCOUNT_COMPONENT_NAME = 8;
-
-  @RequiresApi(VERSION_CODES.N_MR1)
   public static final int PHONE_ACCOUNT_ID = 9;
-
-  @RequiresApi(VERSION_CODES.N_MR1)
   public static final int SOURCE_TYPE_INDEX = 10;
 
-  @RequiresApi(VERSION_CODES.N)
-  private static final String[] PROJECTION_N =
+  private static final String[] PROJECTION =
       new String[] {
         Status.SOURCE_PACKAGE, // 0
         Status.SETTINGS_URI, // 1
@@ -57,21 +43,14 @@
         Status.DATA_CHANNEL_STATE, // 4
         Status.NOTIFICATION_CHANNEL_STATE, // 5
         Status.QUOTA_OCCUPIED, // 6
-        Status.QUOTA_TOTAL // 7
+        Status.QUOTA_TOTAL, // 7
+        Status.PHONE_ACCOUNT_COMPONENT_NAME, // 8
+        Status.PHONE_ACCOUNT_ID, // 9
+        Status.SOURCE_TYPE // 10
       };
 
-  @RequiresApi(VERSION_CODES.N_MR1)
-  private static final String[] PROJECTION_NMR1;
-
-  static {
-    List<String> projectionList = new ArrayList<>(Arrays.asList(PROJECTION_N));
-    projectionList.add(Status.PHONE_ACCOUNT_COMPONENT_NAME); // 8
-    projectionList.add(Status.PHONE_ACCOUNT_ID); // 9
-    projectionList.add(Status.SOURCE_TYPE); // 10
-    PROJECTION_NMR1 = projectionList.toArray(new String[projectionList.size()]);
-  }
 
   public static String[] getProjection() {
-    return VERSION.SDK_INT >= VERSION_CODES.N_MR1 ? PROJECTION_NMR1 : PROJECTION_N;
+    return PROJECTION;
   }
 }
diff --git a/java/com/android/dialer/widget/AndroidManifest.xml b/java/com/android/dialer/widget/AndroidManifest.xml
deleted file mode 100644
index f104cc1..0000000
--- a/java/com/android/dialer/widget/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.dialer.widget">
-</manifest>
diff --git a/java/com/android/dialer/widget/BidiTextView.java b/java/com/android/dialer/widget/BidiTextView.java
index 5dd15de..4d4a990 100644
--- a/java/com/android/dialer/widget/BidiTextView.java
+++ b/java/com/android/dialer/widget/BidiTextView.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,13 +18,15 @@
 package com.android.dialer.widget;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
-import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatTextView;
+
 import com.android.dialer.i18n.DialerBidiFormatter;
 
-/** A {@link TextView} that applies bidirectional formatting to its text. */
-public final class BidiTextView extends TextView {
+/** An {@link AppCompatTextView} that applies bidirectional formatting to its text. */
+public final class BidiTextView extends AppCompatTextView {
 
   public BidiTextView(Context context) {
     super(context);
diff --git a/java/com/android/dialer/widget/ContactPhotoView.java b/java/com/android/dialer/widget/ContactPhotoView.java
index c0c9be7..cc8f3dc 100644
--- a/java/com/android/dialer/widget/ContactPhotoView.java
+++ b/java/com/android/dialer/widget/ContactPhotoView.java
@@ -17,7 +17,6 @@
 package com.android.dialer.widget;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -25,6 +24,10 @@
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
+
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.glidephotomanager.GlidePhotoManager;
 import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent;
diff --git a/java/com/android/dialer/widget/DialerFloatingActionButton.java b/java/com/android/dialer/widget/DialerFloatingActionButton.java
index 17ad907..018c7cb 100644
--- a/java/com/android/dialer/widget/DialerFloatingActionButton.java
+++ b/java/com/android/dialer/widget/DialerFloatingActionButton.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,12 @@
 package com.android.dialer.widget;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
 import android.util.AttributeSet;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
 
 /**
  * Since {@link FloatingActionButton} is possibly the worst widget supported by the framework, we
diff --git a/java/com/android/dialer/widget/DialerToolbar.java b/java/com/android/dialer/widget/DialerToolbar.java
index 40dabe8..4b242eb 100644
--- a/java/com/android/dialer/widget/DialerToolbar.java
+++ b/java/com/android/dialer/widget/DialerToolbar.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,11 +19,14 @@
 
 import android.app.Activity;
 import android.content.Context;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.v7.widget.Toolbar;
 import android.util.AttributeSet;
 import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.appcompat.widget.Toolbar;
+
+import com.android.dialer.R;
 import com.android.dialer.theme.base.ThemeComponent;
 
 /** Toolbar widget for Dialer. */
@@ -39,7 +43,7 @@
 
     setElevation(getResources().getDimensionPixelSize(R.dimen.toolbar_elevation));
     setBackgroundColor(ThemeComponent.get(context).theme().getColorPrimary());
-    setNavigationIcon(R.drawable.quantum_ic_close_white_24);
+    setNavigationIcon(R.drawable.quantum_ic_close_vd_theme_24);
     setNavigationContentDescription(R.string.toolbar_close);
     setNavigationOnClickListener(v -> ((Activity) context).finish());
     setPaddingRelative(
diff --git a/java/com/android/dialer/widget/EmptyContentView.java b/java/com/android/dialer/widget/EmptyContentView.java
index c0f9c9c..10e3f99 100644
--- a/java/com/android/dialer/widget/EmptyContentView.java
+++ b/java/com/android/dialer/widget/EmptyContentView.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,13 +19,17 @@
 
 import android.content.Context;
 import android.content.res.ColorStateList;
-import android.support.annotation.StringRes;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
+
+import androidx.annotation.StringRes;
+
+import com.android.dialer.R;
 import com.android.dialer.theme.base.ThemeComponent;
 
 public class EmptyContentView extends LinearLayout implements View.OnClickListener {
@@ -37,9 +42,9 @@
   public static final int NO_LABEL = 0;
   public static final int NO_IMAGE = 0;
 
-  private ImageView imageView;
-  private TextView descriptionView;
-  private TextView actionView;
+  private final ImageView imageView;
+  private final TextView descriptionView;
+  private final Button actionView;
   private OnEmptyViewActionButtonClickedListener onActionButtonClickedListener;
 
   private @StringRes int actionLabel;
@@ -64,7 +69,7 @@
     setClickable(true);
     imageView = (ImageView) findViewById(R.id.empty_list_view_image);
     descriptionView = (TextView) findViewById(R.id.empty_list_view_message);
-    actionView = (TextView) findViewById(R.id.empty_list_view_action);
+    actionView = findViewById(R.id.empty_list_view_action);
     actionView.setOnClickListener(this);
 
     imageView.setImageTintList(
diff --git a/java/com/android/dialer/widget/FloatingActionButtonController.java b/java/com/android/dialer/widget/FloatingActionButtonController.java
index eea0b59..2ab4f82 100644
--- a/java/com/android/dialer/widget/FloatingActionButtonController.java
+++ b/java/com/android/dialer/widget/FloatingActionButtonController.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,13 +21,16 @@
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.content.res.Resources;
-import android.support.annotation.DrawableRes;
-import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener;
 import android.view.View;
 import android.view.animation.AnimationUtils;
 import android.view.animation.Interpolator;
+
+import androidx.annotation.ColorRes;
+import androidx.annotation.DrawableRes;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
 
 /** Controls the movement and appearance of the FAB (Floating Action Button). */
 public class FloatingActionButtonController {
@@ -87,8 +91,8 @@
   public void changeIcon(Context context, @DrawableRes int iconId, String description) {
     if (this.fabIconId != iconId) {
       fab.setImageResource(iconId);
-      fab.setImageTintList(
-          ColorStateList.valueOf(context.getResources().getColor(android.R.color.white)));
+      fab.setImageTintList(ColorStateList.valueOf(context.getResources().getColor(
+              android.R.color.white, context.getTheme())));
       this.fabIconId = iconId;
     }
     if (!fab.getContentDescription().equals(description)) {
@@ -96,6 +100,11 @@
     }
   }
 
+  public void changeIconColor(Context context, @ColorRes int color) {
+    fab.setImageTintList(ColorStateList.valueOf(context.getResources().getColor(color,
+            context.getTheme())));
+  }
+
   /**
    * Updates the FAB location (middle to right position) as the PageView scrolls.
    *
@@ -156,7 +165,7 @@
     fab.hide();
   }
 
-  public void scaleOut(OnVisibilityChangedListener listener) {
+  public void scaleOut(FloatingActionButton.OnVisibilityChangedListener listener) {
     fab.hide(listener);
   }
 
diff --git a/java/com/android/dialer/widget/LinearColorBar.java b/java/com/android/dialer/widget/LinearColorBar.java
new file mode 100644
index 0000000..6aa996e
--- /dev/null
+++ b/java/com/android/dialer/widget/LinearColorBar.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2013 Android Open Kang Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dialer.widget;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.Rect;
+import android.util.AttributeSet;
+import android.widget.LinearLayout;
+
+import com.android.dialer.R;
+
+public class LinearColorBar extends LinearLayout {
+  private float mFirstRatio;
+  private float mSecondRatio;
+  private float mThirdRatio;
+  private float mFourthRatio;
+
+  private int mBackgroundColor;
+  private int mBlueColor;
+  private int mGreenColor;
+  private int mRedColor;
+  private int mOrangeColor;
+
+  final Rect mRect = new Rect();
+  final Paint mPaint = new Paint();
+  final Path mClipPath = new Path();
+
+  int mLineWidth;
+
+  public LinearColorBar(Context context, AttributeSet attrs) {
+    super(context, attrs);
+    setWillNotDraw(false);
+
+    TypedArray a = context.obtainStyledAttributes(
+            attrs, R.styleable.LinearColorBar, 0, 0);
+    int n = a.getIndexCount();
+
+    for (int i = 0; i < n; i++) {
+      int attr = a.getIndex(i);
+
+      if (attr == R.styleable.LinearColorBar_backgroundColor) {
+        mBackgroundColor = a.getColor(attr, 0);
+      } else if (attr == R.styleable.LinearColorBar_redColor) {
+        mRedColor = a.getColor(attr, 0);
+      } else if (attr == R.styleable.LinearColorBar_greenColor) {
+        mGreenColor = a.getColor(attr, 0);
+      } else if (attr == R.styleable.LinearColorBar_blueColor) {
+        mBlueColor = a.getColor(attr, 0);
+      } else if (attr == R.styleable.LinearColorBar_orangeColor) {
+        mOrangeColor = a.getColor(attr, 0);
+      }
+    }
+
+    a.recycle();
+
+    mPaint.setStyle(Paint.Style.FILL);
+  }
+
+  public void setRatios(float blue, float green, float red, float orange) {
+    mFirstRatio = blue;
+    mSecondRatio = green;
+    mThirdRatio = red;
+    mFourthRatio = orange;
+    invalidate();
+  }
+
+  @Override
+  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+    super.onSizeChanged(w, h, oldw, oldh);
+
+    int off = Math.max(0, getPaddingTop() - getPaddingBottom());
+    mRect.top = off;
+    mRect.bottom = getHeight();
+
+    mClipPath.reset();
+    mClipPath.addRoundRect(0, 0, w, h, h / 2, h / 2, Path.Direction.CW);
+  }
+
+  @Override
+  protected void onDraw(Canvas canvas) {
+    super.onDraw(canvas);
+
+    int width = getWidth();
+
+    int left = 0;
+
+    int right = left + (int) (width * mFirstRatio);
+    int right2 = right + (int) (width * mSecondRatio);
+    int right3 = right2 + (int) (width * mThirdRatio);
+    int right4 = right3 + (int) (width * mFourthRatio);
+
+    int saveCount = canvas.save();
+    canvas.clipPath(mClipPath);
+
+    if (left < right) {
+      mRect.left = left;
+      mRect.right = right;
+      mPaint.setColor(mBlueColor);
+      canvas.drawRect(mRect, mPaint);
+      width -= (right - left);
+      left = right;
+    }
+
+    right = right2;
+
+    if (left < right) {
+      mRect.left = left;
+      mRect.right = right;
+      mPaint.setColor(mGreenColor);
+      canvas.drawRect(mRect, mPaint);
+      width -= (right - left);
+      left = right;
+    }
+
+    right = right3;
+
+    if (left < right) {
+      mRect.left = left;
+      mRect.right = right;
+      mPaint.setColor(mRedColor);
+      canvas.drawRect(mRect, mPaint);
+      width -= (right - left);
+      left = right;
+    }
+
+    right = right4;
+
+    if (left < right) {
+      mRect.left = left;
+      mRect.right = right;
+      mPaint.setColor(mOrangeColor);
+      canvas.drawRect(mRect, mPaint);
+      width -= (right - left);
+      left = right;
+    }
+
+    right = left + width;
+    if (left < right) {
+      mRect.left = left;
+      mRect.right = right;
+      mPaint.setColor(mBackgroundColor);
+      canvas.drawRect(mRect, mPaint);
+    }
+
+    canvas.restoreToCount(saveCount);
+  }
+}
diff --git a/java/com/android/dialer/widget/LockableViewPager.java b/java/com/android/dialer/widget/LockableViewPager.java
index b5d4022..1dc55e2 100644
--- a/java/com/android/dialer/widget/LockableViewPager.java
+++ b/java/com/android/dialer/widget/LockableViewPager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,11 @@
 package com.android.dialer.widget;
 
 import android.content.Context;
-import android.support.v4.view.ViewPager;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 
+import androidx.viewpager.widget.ViewPager;
+
 /** {@link ViewPager} useful for disabled swiping between pages. */
 public class LockableViewPager extends ViewPager {
 
diff --git a/java/com/android/dialer/widget/MaxHeightScrollView.java b/java/com/android/dialer/widget/MaxHeightScrollView.java
index cec8f8f..da8f006 100644
--- a/java/com/android/dialer/widget/MaxHeightScrollView.java
+++ b/java/com/android/dialer/widget/MaxHeightScrollView.java
@@ -18,10 +18,13 @@
 
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.widget.ScrollView;
 
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
+
 /** {@link ScrollView} with a max height attribute. */
 public class MaxHeightScrollView extends ScrollView {
 
diff --git a/java/com/android/dialer/widget/MessageFragment.java b/java/com/android/dialer/widget/MessageFragment.java
index 7a0fcfd..f8d1306 100644
--- a/java/com/android/dialer/widget/MessageFragment.java
+++ b/java/com/android/dialer/widget/MessageFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,9 +17,8 @@
 
 package com.android.dialer.widget;
 
+import android.annotation.SuppressLint;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.text.Editable;
 import android.text.InputFilter;
 import android.text.TextUtils;
@@ -33,6 +33,11 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 
@@ -102,6 +107,7 @@
     return view;
   }
 
+  @SuppressLint("CheckResult")
   @Override
   public void onClick(View view) {
     if (view == sendMessageContainer) {
@@ -112,7 +118,7 @@
       customMessage.setText(((TextView) view).getText());
       customMessage.setSelection(customMessage.getText().length());
     } else {
-      Assert.fail("Unknown view clicked");
+      Assert.createUnsupportedOperationFailException("Unknown view clicked");
     }
   }
 
@@ -129,7 +135,6 @@
     if (charLimit != NO_CHAR_LIMIT) {
       remainingChar.setText(Integer.toString(charLimit - s.length()));
     }
-    getListener().onMessageFragmentAfterTextChange(s.toString());
   }
 
   @Override
@@ -183,7 +188,5 @@
   /** Interface for parent activity to implement to listen for important events. */
   public interface Listener {
     void onMessageFragmentSendMessage(String message);
-
-    void onMessageFragmentAfterTextChange(String message);
   }
 }
diff --git a/java/com/android/dialer/widget/ResizingTextEditText.java b/java/com/android/dialer/widget/ResizingTextEditText.java
index 16b7552..a00638d 100644
--- a/java/com/android/dialer/widget/ResizingTextEditText.java
+++ b/java/com/android/dialer/widget/ResizingTextEditText.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,11 +20,13 @@
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.util.AttributeSet;
-import android.widget.EditText;
+
+import androidx.appcompat.widget.AppCompatEditText;
+
 import com.android.dialer.util.ViewUtil;
 
 /** EditText which resizes dynamically with respect to text length. */
-public class ResizingTextEditText extends EditText {
+public class ResizingTextEditText extends AppCompatEditText {
 
   private final int originalTextSize;
   private final int minTextSize;
diff --git a/java/com/android/dialer/widget/ResizingTextTextView.java b/java/com/android/dialer/widget/ResizingTextTextView.java
deleted file mode 100644
index 100b2ca..0000000
--- a/java/com/android/dialer/widget/ResizingTextTextView.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.widget;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.util.AttributeSet;
-import android.widget.TextView;
-import com.android.dialer.util.ViewUtil;
-
-/** TextView which resizes dynamically with respect to text length. */
-public class ResizingTextTextView extends TextView {
-
-  private final int originalTextSize;
-  private final int minTextSize;
-
-  public ResizingTextTextView(Context context, AttributeSet attrs) {
-    super(context, attrs);
-    originalTextSize = (int) getTextSize();
-    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ResizingText);
-    minTextSize =
-        (int) a.getDimension(R.styleable.ResizingText_resizing_text_min_size, originalTextSize);
-    a.recycle();
-  }
-
-  @Override
-  protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
-    super.onTextChanged(text, start, lengthBefore, lengthAfter);
-    ViewUtil.resizeText(this, originalTextSize, minTextSize);
-  }
-
-  @Override
-  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-    super.onSizeChanged(w, h, oldw, oldh);
-    ViewUtil.resizeText(this, originalTextSize, minTextSize);
-  }
-}
diff --git a/java/com/android/dialer/widget/TextViewPreference.java b/java/com/android/dialer/widget/TextViewPreference.java
deleted file mode 100644
index 1c479d4..0000000
--- a/java/com/android/dialer/widget/TextViewPreference.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.dialer.widget;
-
-import android.content.Context;
-import android.preference.Preference;
-import android.text.method.LinkMovementMethod;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.TextView;
-
-/**
- * Provides a {@link TextView} inside a preference. Useful for displaying static text which may
- * contain hyperlinks.
- */
-public class TextViewPreference extends Preference {
-
-  /**
-   * The resource ID of the text to be populated in the {@link TextView} when a resource ID is used.
-   */
-  private int textResourceId = 0;
-
-  /** The text to be populated in the {@link TextView} when a {@link CharSequence} is used. */
-  private CharSequence text;
-
-  /** The {@link TextView} containing the text. */
-  private TextView textView;
-
-  /**
-   * Instantiates the {@link TextViewPreference} instance.
-   *
-   * @param context The Context this is associated with, through which it can access the current
-   *     theme, resources, etc.
-   * @param attrs The attributes of the XML tag that is inflating the preference.
-   * @param defStyleAttr An attribute in the current theme that contains a reference to a style
-   *     resource that supplies default values for the view. Can be 0 to not look for defaults.
-   * @param defStyleRes A resource identifier of a style resource that supplies default values for
-   *     the view, used only if defStyleAttr is 0 or can not be found in the theme. Can be 0 to not
-   *     look for defaults.
-   */
-  public TextViewPreference(
-      Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-    super(context, attrs, defStyleAttr, defStyleRes);
-
-    setLayoutResource(R.layout.text_view_preference);
-  }
-
-  /**
-   * Instantiates the {@link TextViewPreference} instance.
-   *
-   * @param context The Context this is associated with, through which it can access the current
-   *     theme, resources, etc.
-   * @param attrs The attributes of the XML tag that is inflating the preference.
-   * @param defStyleAttr An attribute in the current theme that contains a reference to a style
-   *     resource that supplies default values for the view. Can be 0 to not look for defaults.
-   */
-  public TextViewPreference(Context context, AttributeSet attrs, int defStyleAttr) {
-    this(context, attrs, defStyleAttr, 0);
-  }
-
-  /**
-   * Instantiates the {@link TextViewPreference} instance.
-   *
-   * @param context The Context this is associated with, through which it can access the current
-   *     theme, resources, etc.
-   * @param attrs The attributes of the XML tag that is inflating the preference.
-   */
-  public TextViewPreference(Context context, AttributeSet attrs) {
-    this(context, attrs, android.R.attr.preferenceStyle, 0);
-  }
-
-  /**
-   * Instantiates the {@link TextViewPreference} instance.
-   *
-   * @param context The Context this is associated with, through which it can access the current
-   *     theme, resources, etc.
-   */
-  public TextViewPreference(Context context) {
-    super(context, null);
-
-    setLayoutResource(R.layout.text_view_preference);
-  }
-
-  /**
-   * Handles binding the preference.
-   *
-   * @param view The view.
-   */
-  @Override
-  protected void onBindView(View view) {
-    super.onBindView(view);
-    textView = (TextView) view.findViewById(R.id.text);
-    if (textResourceId != 0) {
-      setTitle(textResourceId);
-    } else if (text != null) {
-      setTitle(text);
-    } else if (getTitleRes() != 0) {
-      setTitle(getTitleRes());
-    }
-  }
-
-  /**
-   * Sets the preference title from a {@link CharSequence}.
-   *
-   * @param text The text.
-   */
-  @Override
-  public void setTitle(CharSequence text) {
-    textResourceId = 0;
-    this.text = text;
-    if (textView == null) {
-      return;
-    }
-
-    textView.setMovementMethod(LinkMovementMethod.getInstance());
-    textView.setText(text);
-  }
-
-  /**
-   * Sets the preference title from a resource id.
-   *
-   * @param textResId The string resource Id.
-   */
-  @Override
-  public void setTitle(int textResId) {
-    textResourceId = textResId;
-    setTitle(getContext().getString(textResId));
-  }
-}
diff --git a/java/com/android/dialer/widget/res/layout-land/empty_content_view.xml b/java/com/android/dialer/widget/res/layout-land/empty_content_view.xml
index 84e6fc8..f912130 100644
--- a/java/com/android/dialer/widget/res/layout-land/empty_content_view.xml
+++ b/java/com/android/dialer/widget/res/layout-land/empty_content_view.xml
@@ -35,19 +35,13 @@
       android:textColor="?android:attr/textColorSecondary"
       android:textSize="@dimen/empty_list_message_text_size"/>
 
-  <TextView
+  <Button
       android:id="@+id/empty_list_view_action"
-      style="@style/TextActionStyle"
+      style="@style/DialerPrimaryFlatButtonStyle"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
-      android:paddingTop="8dp"
-      android:paddingBottom="8dp"
-      android:paddingLeft="16dp"
-      android:paddingRight="16dp"
-      android:background="?android:attr/selectableItemBackground"
-      android:clickable="true"
-      android:gravity="center_horizontal"/>
+      android:layout_marginTop="16dp"/>
 
   <Space
       android:layout_width="match_parent"
diff --git a/java/com/android/dialer/widget/res/layout/contact_photo_view.xml b/java/com/android/dialer/widget/res/layout/contact_photo_view.xml
index e133886..51a92cd 100644
--- a/java/com/android/dialer/widget/res/layout/contact_photo_view.xml
+++ b/java/com/android/dialer/widget/res/layout/contact_photo_view.xml
@@ -1,5 +1,6 @@
 <!--
   ~ Copyright (C) 2018 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 <!-- A FrameLayout for displaying a contact photo and its optional badge -->
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="56dp"
     android:layout_height="48dp"
@@ -68,7 +70,7 @@
         android:layout_height="13dp"
         android:layout_gravity="center"
         android:src="@drawable/quantum_ic_rtt_vd_theme_24"
-        android:tint="?android:attr/colorBackground"
-        tools:ignore="ContentDescription"/>
+        tools:ignore="ContentDescription"
+        app:tint="?android:attr/colorBackground" />
   </FrameLayout>
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml b/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml
index 3b4d136..e900d16 100755
--- a/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml
+++ b/java/com/android/dialer/widget/res/layout/dialer_toolbar.xml
@@ -28,15 +28,15 @@
         android:layout_height="wrap_content"
         android:gravity="top"
         android:textSize="@dimen/toolbar_title_text_size"
-        android:textColor="?android:attr/textColorPrimaryInverse"
+        android:textColor="?android:attr/textColorPrimary"
         style="@style/Dialer.TextAppearance.Header2"/>
 
     <com.android.dialer.widget.BidiTextView
         android:id="@+id/subtitle"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textColor="?android:attr/textColorPrimaryInverse"
+        android:textColor="?android:attr/textColorPrimary"
         android:visibility="gone"
         style="@style/Dialer.TextAppearance.Secondary.Ellipsize"/>
   </LinearLayout>
-</merge>
\ No newline at end of file
+</merge>
diff --git a/java/com/android/dialer/widget/res/layout/empty_content_view.xml b/java/com/android/dialer/widget/res/layout/empty_content_view.xml
index 57bb2fd..7aef66b 100644
--- a/java/com/android/dialer/widget/res/layout/empty_content_view.xml
+++ b/java/com/android/dialer/widget/res/layout/empty_content_view.xml
@@ -33,19 +33,13 @@
     android:textColor="?android:attr/textColorSecondary"
     android:textSize="@dimen/empty_list_message_text_size"/>
 
-  <TextView
+  <Button
     android:id="@+id/empty_list_view_action"
-    style="@style/TextActionStyle"
+    style="@style/DialerPrimaryFlatButtonStyle"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_gravity="center_horizontal"
-    android:paddingTop="8dp"
-    android:paddingBottom="8dp"
-    android:paddingLeft="16dp"
-    android:paddingRight="16dp"
-    android:background="?android:attr/selectableItemBackground"
-    android:clickable="true"
-    android:gravity="center_horizontal"/>
+    android:layout_marginTop="16dp"/>
 
   <Space
     android:layout_width="match_parent"
diff --git a/java/com/android/dialer/widget/res/layout/fragment_message.xml b/java/com/android/dialer/widget/res/layout/fragment_message.xml
index 1004fa8..5e2a00e 100644
--- a/java/com/android/dialer/widget/res/layout/fragment_message.xml
+++ b/java/com/android/dialer/widget/res/layout/fragment_message.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2016 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
   -->
 <RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="?android:attr/colorBackground">
@@ -75,9 +77,9 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:visibility="gone"
-        android:src="@drawable/quantum_ic_send_white_24"
+        android:src="@drawable/quantum_ic_send_vd_theme_24"
         android:background="?android:attr/selectableItemBackgroundBorderless"
-        android:tint="@color/dialer_tint_state"/>
+        app:tint="@color/dialer_tint_state" />
 
       <TextView
         android:id="@+id/remaining_characters"
@@ -88,4 +90,4 @@
         android:textColor="?android:attr/textColorHint"/>
     </LinearLayout>
   </RelativeLayout>
-</RelativeLayout>
\ No newline at end of file
+</RelativeLayout>
diff --git a/java/com/android/dialer/widget/res/layout/text_view_preference.xml b/java/com/android/dialer/widget/res/layout/text_view_preference.xml
deleted file mode 100644
index 39b5506..0000000
--- a/java/com/android/dialer/widget/res/layout/text_view_preference.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/text"
-  android:layout_width="match_parent"
-  android:layout_height="wrap_content"
-  android:padding="16dp"
-  android:fontFamily="sans-serif"
-  android:linksClickable="true"
-  android:singleLine="false"/>
diff --git a/java/com/android/dialer/widget/res/values/animation_constants.xml b/java/com/android/dialer/widget/res/values/animation_constants.xml
deleted file mode 100644
index 9eec7d6..0000000
--- a/java/com/android/dialer/widget/res/values/animation_constants.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2014 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <integer name="floating_action_button_animation_duration">250</integer>
-</resources>
diff --git a/java/com/android/dialer/widget/res/values/dimens.xml b/java/com/android/dialer/widget/res/values/dimens.xml
index d29f0fa..0a39b61 100644
--- a/java/com/android/dialer/widget/res/values/dimens.xml
+++ b/java/com/android/dialer/widget/res/values/dimens.xml
@@ -23,8 +23,7 @@
   <dimen name="send_container_width">48dp</dimen>
 
   <dimen name="toolbar_title_text_size">20sp</dimen>
-  <dimen name="toolbar_subtitle_text_size">12sp</dimen>
-  <dimen name="toolbar_elevation">4dp</dimen>
+  <dimen name="toolbar_elevation">0dp</dimen>
   <dimen name="toolbar_end_padding">4dp</dimen>
 
   <!-- Empty List -->
@@ -33,4 +32,4 @@
   <!-- Floating Action Button -->
   <dimen name="floating_action_button_margin_right">16dp</dimen>
   <dimen name="floating_action_button_width">56dp</dimen>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/com/android/incallui/AccelerometerListener.java b/java/com/android/incallui/AccelerometerListener.java
index 92e62b0..3caa24b 100644
--- a/java/com/android/incallui/AccelerometerListener.java
+++ b/java/com/android/incallui/AccelerometerListener.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,7 +23,9 @@
 import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
 import android.os.Handler;
+import android.os.Looper;
 import android.os.Message;
+
 import com.android.dialer.common.LogUtil;
 
 /**
@@ -42,8 +45,8 @@
   private static final int VERTICAL_DEBOUNCE = 100;
   private static final int HORIZONTAL_DEBOUNCE = 500;
   private static final double VERTICAL_ANGLE = 50.0;
-  private SensorManager sensorManager;
-  private Sensor sensor;
+  private final SensorManager sensorManager;
+  private final Sensor sensor;
   // mOrientation is the orientation value most recently reported to the client.
   private int orientation;
   // mPendingOrientation is the latest orientation computed based on the sensor value.
@@ -51,31 +54,30 @@
   // mOrientation.
   private int pendingOrientation;
   private OrientationListener listener;
-  Handler handler =
-      new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-          switch (msg.what) {
-            case ORIENTATION_CHANGED:
-              synchronized (this) {
-                orientation = pendingOrientation;
-                if (DEBUG) {
-                  LogUtil.d(
-                      TAG,
-                      "orientation: "
-                          + (orientation == ORIENTATION_HORIZONTAL
-                              ? "horizontal"
-                              : (orientation == ORIENTATION_VERTICAL ? "vertical" : "unknown")));
-                }
-                if (listener != null) {
-                  listener.orientationChanged(orientation);
-                }
-              }
-              break;
+  final Handler handler = new Handler(Looper.getMainLooper()) {
+    @Override
+    public void handleMessage(Message msg) {
+      switch (msg.what) {
+        case ORIENTATION_CHANGED:
+          synchronized (this) {
+            orientation = pendingOrientation;
+            if (DEBUG) {
+              LogUtil.d(
+                  TAG,
+                  "orientation: "
+                      + (orientation == ORIENTATION_HORIZONTAL
+                          ? "horizontal"
+                          : (orientation == ORIENTATION_VERTICAL ? "vertical" : "unknown")));
+            }
+            if (listener != null) {
+              listener.orientationChanged(orientation);
+            }
           }
-        }
-      };
-  SensorEventListener sensorListener =
+          break;
+      }
+    }
+  };
+  final SensorEventListener sensorListener =
       new SensorEventListener() {
         @Override
         public void onSensorChanged(SensorEvent event) {
diff --git a/java/com/android/incallui/ActiveCallsCallListListener.java b/java/com/android/incallui/ActiveCallsCallListListener.java
index d94db88..b7f452e 100644
--- a/java/com/android/incallui/ActiveCallsCallListListener.java
+++ b/java/com/android/incallui/ActiveCallsCallListListener.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,17 +18,19 @@
 package com.android.incallui;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.activecalls.ActiveCallInfo;
 import com.android.dialer.activecalls.ActiveCallsComponent;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.state.DialerCallState;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
+import java.util.Optional;
+
 /** Updates {@link com.android.dialer.activecalls.ActiveCalls} */
-@SuppressWarnings("Guava")
 public class ActiveCallsCallListListener implements CallList.Listener {
 
   private final Context appContext;
diff --git a/java/com/android/incallui/AndroidManifest.xml b/java/com/android/incallui/AndroidManifest.xml
deleted file mode 100644
index 7283702..0000000
--- a/java/com/android/incallui/AndroidManifest.xml
+++ /dev/null
@@ -1,132 +0,0 @@
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.incallui">
-
-  <uses-sdk
-      android:minSdkVersion="24"
-      android:targetSdkVersion="30"/>
-
-  <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
-  <!-- We use this to disable the status bar buttons of home, back and recent
-  during an incoming call. By doing so this allows us to not show the user
-  is viewing the activity in full screen alert, on a fresh system/factory
-  reset state of the app. -->
-  <uses-permission android:name="android.permission.STATUS_BAR"/>
-  <uses-permission android:name="android.permission.CAMERA"/>
-
-  <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
-
-  <!-- Warning: setting the required boolean to true would prevent installation of Dialer on
-       devices which do not support a camera. -->
-  <uses-feature
-      android:name="android.hardware.camera.any"
-      android:required="false"/>
-
-  <!-- Testing location -->
-  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
-
-  <!-- Set Bluetooth device -->
-  <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
-
-  <!-- Set audio selector window type TYPE_APPLICATION_OVERLAY -->
-  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
-
-  <!-- Set android:taskAffinity="com.android.incallui" for all activities to ensure proper
-  navigation. Otherwise system could bring up MainActivity instead, e.g. when user unmerge a
-  call.
-       Set taskAffinity for application is not working because it will be merged and the result is
-  that all activities here still have same taskAffinity as activities under dialer. -->
-  <application>
-    <!-- Go variants need hardware acceleration for IMS video calls even though it is disabled at
-    the application level -->
-    <activity
-        android:directBootAware="true"
-        android:excludeFromRecents="true"
-        android:exported="false"
-        android:hardwareAccelerated="true"
-        android:label="@string/phoneAppLabel"
-        android:launchMode="singleInstance"
-        android:name="com.android.incallui.InCallActivity"
-        android:resizeableActivity="true"
-        android:screenOrientation="nosensor"
-        android:taskAffinity="com.android.incallui"
-        android:theme="@style/Theme.InCallScreen"
-        android:windowSoftInputMode="adjustResize">
-    </activity>
-
-    <activity
-        android:directBootAware="true"
-        android:excludeFromRecents="true"
-        android:exported="false"
-        android:label="@string/manageConferenceLabel"
-        android:launchMode="singleTask"
-        android:name="com.android.incallui.ManageConferenceActivity"
-        android:noHistory="true"
-        android:resizeableActivity="true"
-        android:taskAffinity="com.android.incallui"
-        android:theme="@style/Theme.InCallScreen.ManageConference"/>
-
-    <service
-        android:directBootAware="true"
-        android:exported="true"
-        android:name="com.android.incallui.InCallServiceImpl"
-        android:permission="android.permission.BIND_INCALL_SERVICE">
-      <meta-data
-          android:name="android.telecom.IN_CALL_SERVICE_UI"
-          android:value="true"/>
-      <meta-data
-          android:name="android.telecom.IN_CALL_SERVICE_RINGING"
-          android:value="false"/>
-      <meta-data
-          android:name="android.telecom.INCLUDE_EXTERNAL_CALLS"
-          android:value="true"/>
-
-      <intent-filter>
-        <action android:name="android.telecom.InCallService"/>
-      </intent-filter>
-    </service>
-
-    <activity
-        android:excludeFromRecents="true"
-        android:exported="false"
-        android:name=".AudioRouteSelectorActivity"
-        android:noHistory="true"
-        android:theme="@style/Theme.Incall.DialogHolder"
-        />
-
-    <activity
-        android:excludeFromRecents="true"
-        android:exported="false"
-        android:name="com.android.incallui.PostCharDialogActivity"
-        android:noHistory="true"
-        android:theme="@style/Theme.Incall.DialogHolder"/>
-
-    <!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
-    <receiver
-        android:directBootAware="true"
-        android:exported="false"
-        android:name="com.android.incallui.NotificationBroadcastReceiver"/>
-
-    <receiver
-        android:exported="false"
-        android:name=".ReturnToCallActionReceiver"/>
-
-  </application>
-
-</manifest>
-
diff --git a/java/com/android/incallui/AnswerScreenPresenter.java b/java/com/android/incallui/AnswerScreenPresenter.java
index 8b789f3..f49f5f8 100644
--- a/java/com/android/incallui/AnswerScreenPresenter.java
+++ b/java/com/android/incallui/AnswerScreenPresenter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,16 +19,16 @@
 
 import android.content.Context;
 import android.os.SystemClock;
-import android.support.annotation.FloatRange;
-import android.support.annotation.NonNull;
-import android.support.v4.os.UserManagerCompat;
 import android.telecom.VideoProfile;
+
+import androidx.annotation.FloatRange;
+import androidx.annotation.NonNull;
+import androidx.core.os.UserManagerCompat;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.incallui.answer.protocol.AnswerScreen;
 import com.android.incallui.answer.protocol.AnswerScreenDelegate;
 import com.android.incallui.answerproximitysensor.AnswerProximitySensor;
@@ -45,7 +46,8 @@
     implements AnswerScreenDelegate, DialerCall.CannedTextResponsesLoadedListener {
   private static final int ACCEPT_REJECT_CALL_TIME_OUT_IN_MILLIS = 5000;
 
-  @NonNull private final Context context;
+  @NonNull
+  private final Context context;
   @NonNull private final AnswerScreen answerScreen;
   @NonNull private final DialerCall call;
   private long actionPerformedTimeMillis;
@@ -94,17 +96,7 @@
 
   @Override
   public void onAnswer(boolean answerVideoAsAudio) {
-
-    DialerCall incomingCall = CallList.getInstance().getIncomingCall();
-    InCallActivity inCallActivity =
-        (InCallActivity) answerScreen.getAnswerScreenFragment().getActivity();
-    ListenableFuture<Void> answerPrecondition;
-
-    if (incomingCall != null && inCallActivity != null) {
-      answerPrecondition = inCallActivity.getSpeakEasyCallManager().onNewIncomingCall(incomingCall);
-    } else {
-      answerPrecondition = Futures.immediateFuture(null);
-    }
+    ListenableFuture<Void> answerPrecondition = Futures.immediateFuture(null);
 
     Futures.addCallback(
         answerPrecondition,
@@ -129,18 +121,8 @@
 
     if (answerScreen.isVideoUpgradeRequest()) {
       if (answerVideoAsAudio) {
-        Logger.get(context)
-            .logCallImpression(
-                DialerImpression.Type.VIDEO_CALL_REQUEST_ACCEPTED_AS_AUDIO,
-                call.getUniqueCallId(),
-                call.getTimeAddedMs());
         call.getVideoTech().acceptVideoRequestAsAudio();
       } else {
-        Logger.get(context)
-            .logCallImpression(
-                DialerImpression.Type.VIDEO_CALL_REQUEST_ACCEPTED,
-                call.getUniqueCallId(),
-                call.getTimeAddedMs());
         call.getVideoTech().acceptVideoRequest(context);
       }
     } else {
@@ -155,11 +137,6 @@
   @Override
   public void onReject() {
     if (answerScreen.isVideoUpgradeRequest()) {
-      Logger.get(context)
-          .logCallImpression(
-              DialerImpression.Type.VIDEO_CALL_REQUEST_DECLINED,
-              call.getUniqueCallId(),
-              call.getTimeAddedMs());
       call.getVideoTech().declineVideoRequest();
     } else {
       call.reject(false /* rejectWithMessage */, null);
@@ -168,17 +145,6 @@
   }
 
   @Override
-  public void onSpeakEasyCall() {
-    LogUtil.enterBlock("AnswerScreenPresenter.onSpeakEasyCall");
-    DialerCall incomingCall = CallList.getInstance().getIncomingCall();
-    if (incomingCall == null) {
-      LogUtil.i("AnswerScreenPresenter.onSpeakEasyCall", "incomingCall == null");
-      return;
-    }
-    incomingCall.setIsSpeakEasyCall(true);
-  }
-
-  @Override
   public void onAnswerAndReleaseCall() {
     LogUtil.enterBlock("AnswerScreenPresenter.onAnswerAndReleaseCall");
     DialerCall activeCall = CallList.getInstance().getActiveCall();
@@ -263,9 +229,6 @@
 
     @Override
     public void onInternationalCallOnWifi() {}
-
-    @Override
-    public void onEnrichedCallSessionUpdate() {}
   }
 
   private boolean isSmsResponseAllowed(DialerCall call) {
diff --git a/java/com/android/incallui/AnswerScreenPresenterStub.java b/java/com/android/incallui/AnswerScreenPresenterStub.java
index e85fdaa..15ebb4f 100644
--- a/java/com/android/incallui/AnswerScreenPresenterStub.java
+++ b/java/com/android/incallui/AnswerScreenPresenterStub.java
@@ -16,7 +16,8 @@
 
 package com.android.incallui;
 
-import android.support.annotation.FloatRange;
+import androidx.annotation.FloatRange;
+
 import com.android.incallui.answer.protocol.AnswerScreenDelegate;
 import com.android.incallui.incalluilock.InCallUiLock;
 
@@ -37,8 +38,6 @@
   @Override
   public void onReject() {}
 
-  @Override
-  public void onSpeakEasyCall() {}
 
   @Override
   public void onAnswerAndReleaseCall() {}
diff --git a/java/com/android/incallui/AudioRouteSelectorActivity.java b/java/com/android/incallui/AudioRouteSelectorActivity.java
index 7728cd5..2c84840 100644
--- a/java/com/android/incallui/AudioRouteSelectorActivity.java
+++ b/java/com/android/incallui/AudioRouteSelectorActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,12 +18,11 @@
 package com.android.incallui;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.FragmentActivity;
-import android.telecom.CallAudioState;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentActivity;
+
 import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter;
@@ -48,27 +48,6 @@
   public void onAudioRouteSelected(int audioRoute) {
     TelecomAdapter.getInstance().setAudioRoute(audioRoute);
     finish();
-
-    // Log the select action with audio route and call
-    DialerImpression.Type impressionType = null;
-    if ((audioRoute & CallAudioState.ROUTE_WIRED_OR_EARPIECE) != 0) {
-      impressionType = DialerImpression.Type.BUBBLE_V2_WIRED_OR_EARPIECE;
-    } else if (audioRoute == CallAudioState.ROUTE_SPEAKER) {
-      impressionType = DialerImpression.Type.BUBBLE_V2_SPEAKERPHONE;
-    } else if (audioRoute == CallAudioState.ROUTE_BLUETOOTH) {
-      impressionType = DialerImpression.Type.BUBBLE_V2_BLUETOOTH;
-    }
-    if (impressionType == null) {
-      return;
-    }
-
-    DialerCall call = getCall();
-    if (call != null) {
-      Logger.get(this)
-          .logCallImpression(impressionType, call.getUniqueCallId(), call.getTimeAddedMs());
-    } else {
-      Logger.get(this).logImpression(impressionType);
-    }
   }
 
   @Override
diff --git a/java/com/android/incallui/Bindings.java b/java/com/android/incallui/Bindings.java
index 4f142ff..8cabda5 100644
--- a/java/com/android/incallui/Bindings.java
+++ b/java/com/android/incallui/Bindings.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,11 @@
 package com.android.incallui;
 
 import android.content.Context;
+
 import com.android.incallui.bindings.InCallUiBindings;
 import com.android.incallui.bindings.InCallUiBindingsFactory;
 import com.android.incallui.bindings.InCallUiBindingsStub;
+
 import java.util.Objects;
 
 /** Accessor for the in call UI bindings. */
@@ -45,8 +48,4 @@
     }
     return instance;
   }
-
-  public static void setForTesting(InCallUiBindings testInstance) {
-    instance = testInstance;
-  }
 }
diff --git a/java/com/android/incallui/CallButtonPresenter.java b/java/com/android/incallui/CallButtonPresenter.java
index f2f7a40..13b4977 100644
--- a/java/com/android/incallui/CallButtonPresenter.java
+++ b/java/com/android/incallui/CallButtonPresenter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,20 +17,23 @@
 
 package com.android.incallui;
 
+import android.app.AlertDialog;
 import android.content.Context;
-import android.os.Bundle;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
 import android.os.Trace;
-import android.support.v4.app.Fragment;
-import android.support.v4.os.UserManagerCompat;
 import android.telecom.CallAudioState;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.core.os.UserManagerCompat;
+import androidx.fragment.app.Fragment;
+import androidx.preference.PreferenceManager;
+
 import com.android.contacts.common.compat.CallCompat;
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.DialerImpression.Type;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.incallui.InCallCameraManager.Listener;
 import com.android.incallui.InCallPresenter.CanAddCallListener;
@@ -40,6 +44,7 @@
 import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.audiomode.AudioModeProvider.AudioModeListener;
 import com.android.incallui.call.CallList;
+import com.android.incallui.call.CallRecorder;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCall.CameraDirection;
 import com.android.incallui.call.DialerCallListener;
@@ -62,12 +67,33 @@
         InCallButtonUiDelegate,
         DialerCallListener {
 
+  private static final String KEY_RECORDING_WARNING_PRESENTED = "recording_warning_presented";
+
   private final Context context;
   private InCallButtonUi inCallButtonUi;
   private DialerCall call;
   private boolean isInCallButtonUiReady;
   private PhoneAccountHandle otherAccount;
 
+  private final CallRecorder.RecordingProgressListener recordingProgressListener =
+      new CallRecorder.RecordingProgressListener() {
+    @Override
+    public void onStartRecording() {
+      inCallButtonUi.setCallRecordingState(true);
+      inCallButtonUi.setCallRecordingDuration(0);
+    }
+
+    @Override
+    public void onStopRecording() {
+      inCallButtonUi.setCallRecordingState(false);
+    }
+
+    @Override
+    public void onRecordingTimeProgress(final long elapsedTimeMs) {
+      inCallButtonUi.setCallRecordingDuration(elapsedTimeMs);
+    }
+  };
+
   public CallButtonPresenter(Context context) {
     this.context = context.getApplicationContext();
   }
@@ -86,6 +112,9 @@
     inCallPresenter.addCanAddCallListener(this);
     inCallPresenter.getInCallCameraManager().addCameraSelectionListener(this);
 
+    CallRecorder recorder = CallRecorder.getInstance();
+    recorder.addRecordingProgressListener(recordingProgressListener);
+
     // Update the buttons state immediately for the current call
     onStateChange(InCallState.NO_CALLS, inCallPresenter.getInCallState(), CallList.getInstance());
     isInCallButtonUiReady = true;
@@ -101,6 +130,10 @@
     InCallPresenter.getInstance().removeDetailsListener(this);
     InCallPresenter.getInstance().getInCallCameraManager().removeCameraSelectionListener(this);
     InCallPresenter.getInstance().removeCanAddCallListener(this);
+
+    CallRecorder recorder = CallRecorder.getInstance();
+    recorder.removeRecordingProgressListener(recordingProgressListener);
+
     isInCallButtonUiReady = false;
 
     if (call != null) {
@@ -208,22 +241,8 @@
     int newRoute;
     if (audioState.getRoute() == CallAudioState.ROUTE_SPEAKER) {
       newRoute = CallAudioState.ROUTE_WIRED_OR_EARPIECE;
-      if (call != null) {
-        Logger.get(context)
-                .logCallImpression(
-                        DialerImpression.Type.IN_CALL_SCREEN_TURN_ON_WIRED_OR_EARPIECE,
-                        call.getUniqueCallId(),
-                        call.getTimeAddedMs());
-      }
     } else {
       newRoute = CallAudioState.ROUTE_SPEAKER;
-      if (call != null) {
-        Logger.get(context)
-                .logCallImpression(
-                        DialerImpression.Type.IN_CALL_SCREEN_TURN_ON_SPEAKERPHONE,
-                        call.getUniqueCallId(),
-                        call.getTimeAddedMs());
-      }
     }
 
     setAudioRoute(newRoute);
@@ -233,15 +252,6 @@
   public void muteClicked(boolean checked, boolean clickedByUser) {
     LogUtil.i(
         "CallButtonPresenter", "turning on mute: %s, clicked by user: %s", checked, clickedByUser);
-    if (clickedByUser) {
-      Logger.get(context)
-          .logCallImpression(
-              checked
-                  ? DialerImpression.Type.IN_CALL_SCREEN_TURN_ON_MUTE
-                  : DialerImpression.Type.IN_CALL_SCREEN_TURN_OFF_MUTE,
-              call.getUniqueCallId(),
-              call.getTimeAddedMs());
-    }
     TelecomAdapter.getInstance().mute(checked);
   }
 
@@ -271,43 +281,69 @@
 
   @Override
   public void mergeClicked() {
-    Logger.get(context)
-        .logCallImpression(
-            DialerImpression.Type.IN_CALL_MERGE_BUTTON_PRESSED,
-            call.getUniqueCallId(),
-            call.getTimeAddedMs());
     TelecomAdapter.getInstance().merge(call.getId());
   }
 
   @Override
   public void addCallClicked() {
-    Logger.get(context)
-        .logCallImpression(
-            DialerImpression.Type.IN_CALL_ADD_CALL_BUTTON_PRESSED,
-            call.getUniqueCallId(),
-            call.getTimeAddedMs());
     InCallPresenter.getInstance().addCallClicked();
   }
 
   @Override
   public void showDialpadClicked(boolean checked) {
-    Logger.get(context)
-        .logCallImpression(
-            DialerImpression.Type.IN_CALL_SHOW_DIALPAD_BUTTON_PRESSED,
-            call.getUniqueCallId(),
-            call.getTimeAddedMs());
-    LogUtil.v("CallButtonPresenter", "show dialpad " + String.valueOf(checked));
+    LogUtil.v("CallButtonPresenter", "show dialpad " + checked);
     getActivity().showDialpadFragment(checked /* show */, true /* animate */);
   }
 
   @Override
+  public void callRecordClicked(boolean checked) {
+    CallRecorder recorder = CallRecorder.getInstance();
+    if (checked) {
+      final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+      boolean warningPresented = prefs.getBoolean(KEY_RECORDING_WARNING_PRESENTED, false);
+      if (!warningPresented) {
+        new AlertDialog.Builder(getActivity())
+            .setTitle(R.string.recording_warning_title)
+            .setMessage(R.string.recording_warning_text)
+            .setPositiveButton(R.string.onscreenCallRecordText, (dialog, which) -> {
+              prefs.edit()
+                  .putBoolean(KEY_RECORDING_WARNING_PRESENTED, true)
+                  .apply();
+              startCallRecordingOrAskForPermission();
+            })
+            .setNegativeButton(android.R.string.cancel, null)
+            .show();
+      } else {
+        startCallRecordingOrAskForPermission();
+      }
+    } else {
+      if (recorder.isRecording()) {
+        recorder.finishRecording();
+      }
+    }
+  }
+
+  private void startCallRecordingOrAskForPermission() {
+    if (hasAllPermissions(CallRecorder.REQUIRED_PERMISSIONS)) {
+      CallRecorder recorder = CallRecorder.getInstance();
+      recorder.startRecording(call.getNumber(), call.getCreationTimeMillis());
+    } else {
+      inCallButtonUi.requestCallRecordingPermissions(CallRecorder.REQUIRED_PERMISSIONS);
+    }
+  }
+
+  private boolean hasAllPermissions(String[] permissions) {
+    for (String p : permissions) {
+      if (context.checkSelfPermission(p) != PackageManager.PERMISSION_GRANTED) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  @Override
   public void changeToVideoClicked() {
     LogUtil.enterBlock("CallButtonPresenter.changeToVideoClicked");
-    Logger.get(context)
-        .logCallImpression(
-            DialerImpression.Type.VIDEO_CALL_UPGRADE_REQUESTED,
-            call.getUniqueCallId(),
-            call.getTimeAddedMs());
     call.getVideoTech().upgradeToVideo(context);
   }
 
@@ -333,7 +369,6 @@
   @Override
   public void swapSimClicked() {
     LogUtil.enterBlock("CallButtonPresenter.swapSimClicked");
-    Logger.get(getContext()).logImpression(Type.DUAL_SIM_CHANGE_SIM_PRESSED);
     SwapSimWorker worker =
         new SwapSimWorker(
             getContext(),
@@ -365,11 +400,6 @@
     if (call == null) {
       return;
     }
-    Logger.get(context)
-        .logCallImpression(
-            DialerImpression.Type.IN_CALL_SCREEN_SWAP_CAMERA,
-            call.getUniqueCallId(),
-            call.getTimeAddedMs());
     switchCameraClicked(
         !InCallPresenter.getInstance().getInCallCameraManager().isUsingFrontFacingCamera());
   }
@@ -384,14 +414,6 @@
   public void pauseVideoClicked(boolean pause) {
     LogUtil.i("CallButtonPresenter.pauseVideoClicked", "%s", pause ? "pause" : "unpause");
 
-    Logger.get(context)
-        .logCallImpression(
-            pause
-                ? DialerImpression.Type.IN_CALL_SCREEN_TURN_OFF_VIDEO
-                : DialerImpression.Type.IN_CALL_SCREEN_TURN_ON_VIDEO,
-            call.getUniqueCallId(),
-            call.getTimeAddedMs());
-
     if (pause) {
       call.getVideoTech().stopTransmission();
     } else {
@@ -426,11 +448,6 @@
       return;
     }
 
-    if (call != null) {
-      inCallButtonUi.updateInCallButtonUiColors(
-          InCallPresenter.getInstance().getThemeColorManager().getSecondaryColor());
-    }
-
     final boolean isEnabled =
         state.isConnectingOrConnected() && !state.isIncoming() && call != null;
     inCallButtonUi.setEnabled(isEnabled);
@@ -465,15 +482,7 @@
 
     final boolean showAddCall =
         TelecomAdapter.getInstance().canAddCall() && UserManagerCompat.isUserUnlocked(context);
-    // There can only be two calls so don't show the ability to merge when one of them
-    // is a speak easy call.
-    final boolean showMerge =
-        InCallPresenter.getInstance()
-                .getCallList()
-                .getAllCalls()
-                .stream()
-                .noneMatch(c -> c != null && c.isSpeakEasyCall())
-            && call.can(android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE);
+    final boolean showMerge = call.can(android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE);
     final boolean showUpgradeToVideo = !isVideo && (hasVideoCallCapabilities(call));
     final boolean showDowngradeToAudio = isVideo && isDowngradeToAudioSupported(call);
     final boolean showMute = call.can(android.telecom.Call.Details.CAPABILITY_MUTE);
@@ -486,6 +495,10 @@
             && call.getState() != DialerCallState.DIALING
             && call.getState() != DialerCallState.CONNECTING;
 
+    final CallRecorder recorder = CallRecorder.getInstance();
+    final boolean showCallRecordOption = recorder.canRecordInCurrentCountry()
+        && !isVideo && call.getState() == DialerCallState.ACTIVE;
+
     otherAccount = TelecomUtil.getOtherAccount(getContext(), call.getAccountHandle());
     boolean showSwapSim =
         !call.isEmergencyCall()
@@ -519,6 +532,7 @@
     }
     inCallButtonUi.showButton(InCallButtonIds.BUTTON_DIALPAD, true);
     inCallButtonUi.showButton(InCallButtonIds.BUTTON_MERGE, showMerge);
+    inCallButtonUi.showButton(InCallButtonIds.BUTTON_RECORD_CALL, showCallRecordOption);
 
     inCallButtonUi.updateButtonStates();
   }
@@ -541,12 +555,6 @@
   }
 
   @Override
-  public void onSaveInstanceState(Bundle outState) {}
-
-  @Override
-  public void onRestoreInstanceState(Bundle savedInstanceState) {}
-
-  @Override
   public void onCameraPermissionGranted() {
     if (call != null) {
       updateButtonsState(call);
@@ -594,9 +602,6 @@
   public void onInternationalCallOnWifi() {}
 
   @Override
-  public void onEnrichedCallSessionUpdate() {}
-
-  @Override
   public Context getContext() {
     return context;
   }
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index dd1fc4f..44f4d37 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,19 +21,13 @@
 
 import android.Manifest;
 import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
 import android.hardware.display.DisplayManager;
-import android.os.BatteryManager;
 import android.os.Handler;
+import android.os.Looper;
 import android.os.Trace;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.content.ContextCompat;
 import android.telecom.Call.Details;
 import android.telecom.StatusHints;
 import android.telecom.TelecomManager;
@@ -43,13 +38,16 @@
 import android.view.View;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityManager;
+
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
+
 import com.android.contacts.common.ContactsUtils;
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.contacts.ContactsComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.multimedia.MultimediaData;
 import com.android.dialer.oem.MotorolaUtils;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
@@ -66,8 +64,6 @@
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCallListener;
 import com.android.incallui.call.state.DialerCallState;
-import com.android.incallui.calllocation.CallLocation;
-import com.android.incallui.calllocation.CallLocationComponent;
 import com.android.incallui.incall.protocol.ContactPhotoType;
 import com.android.incallui.incall.protocol.InCallScreen;
 import com.android.incallui.incall.protocol.InCallScreenDelegate;
@@ -76,6 +72,7 @@
 import com.android.incallui.incall.protocol.PrimaryInfo;
 import com.android.incallui.incall.protocol.SecondaryInfo;
 import com.android.incallui.videotech.utils.SessionModificationState;
+
 import java.lang.ref.WeakReference;
 
 /**
@@ -98,23 +95,8 @@
    */
   private static final long ACCESSIBILITY_ANNOUNCEMENT_DELAY_MILLIS = 500;
 
-  /** Flag to allow the user's current location to be shown during emergency calls. */
-  private static final String CONFIG_ENABLE_EMERGENCY_LOCATION = "config_enable_emergency_location";
-
-  private static final boolean CONFIG_ENABLE_EMERGENCY_LOCATION_DEFAULT = true;
-
-  /**
-   * Make it possible to not get location during an emergency call if the battery is too low, since
-   * doing so could trigger gps and thus potentially cause the phone to die in the middle of the
-   * call.
-   */
-  private static final String CONFIG_MIN_BATTERY_PERCENT_FOR_EMERGENCY_LOCATION =
-      "min_battery_percent_for_emergency_location";
-
-  private static final long CONFIG_MIN_BATTERY_PERCENT_FOR_EMERGENCY_LOCATION_DEFAULT = 10;
-
   private final Context context;
-  private final Handler handler = new Handler();
+  private final Handler handler = new Handler(Looper.getMainLooper());
 
   private DialerCall primary;
   private String primaryNumber;
@@ -127,7 +109,6 @@
   private boolean isInCallScreenReady;
   private boolean shouldSendAccessibilityEvent;
 
-  @NonNull private final CallLocation callLocation;
   private final Runnable sendAccessibilityEventRunnable =
       new Runnable() {
         @Override
@@ -146,7 +127,6 @@
   public CallCardPresenter(Context context) {
     LogUtil.i("CallCardPresenter.constructor", null);
     this.context = Assert.isNotNull(context).getApplicationContext();
-    callLocation = CallLocationComponent.get(this.context).getCallLocation();
   }
 
   private static boolean hasCallSubject(DialerCall call) {
@@ -193,28 +173,6 @@
     InCallPresenter.getInstance().addDetailsListener(this);
     InCallPresenter.getInstance().addInCallEventListener(this);
     isInCallScreenReady = true;
-
-    // Log location impressions
-    if (isOutgoingEmergencyCall(primary)) {
-      Logger.get(context).logImpression(DialerImpression.Type.EMERGENCY_NEW_EMERGENCY_CALL);
-    } else if (isIncomingEmergencyCall(primary) || isIncomingEmergencyCall(secondary)) {
-      Logger.get(context).logImpression(DialerImpression.Type.EMERGENCY_CALLBACK);
-    }
-
-    // Showing the location may have been skipped if the UI wasn't ready during previous layout.
-    if (shouldShowLocation()) {
-      inCallScreen.showLocationUi(getLocationFragment());
-
-      // Log location impressions
-      if (!hasLocationPermission()) {
-        Logger.get(context).logImpression(DialerImpression.Type.EMERGENCY_NO_LOCATION_PERMISSION);
-      } else if (isBatteryTooLowForEmergencyLocation()) {
-        Logger.get(context)
-            .logImpression(DialerImpression.Type.EMERGENCY_BATTERY_TOO_LOW_TO_GET_LOCATION);
-      } else if (!callLocation.canGetLocation(context)) {
-        Logger.get(context).logImpression(DialerImpression.Type.EMERGENCY_CANT_GET_LOCATION);
-      }
-    }
   }
 
   @Override
@@ -231,8 +189,6 @@
       primary.removeListener(this);
     }
 
-    callLocation.close();
-
     primary = null;
     primaryContactInfo = null;
     secondaryContactInfo = null;
@@ -385,12 +341,6 @@
   @Override
   public void onInternationalCallOnWifi() {}
 
-  @Override
-  public void onEnrichedCallSessionUpdate() {
-    LogUtil.enterBlock("CallCardPresenter.onEnrichedCallSessionUpdate");
-    updatePrimaryDisplayInfo();
-  }
-
   /** Handles a change to the child number by refreshing the primary call info. */
   @Override
   public void onDialerCallChildNumberChange() {
@@ -547,28 +497,12 @@
   }
 
   @Override
-  public void onCallStateButtonClicked() {
-    Intent broadcastIntent = Bindings.get(context).getCallStateButtonBroadcastIntent(context);
-    if (broadcastIntent != null) {
-      LogUtil.v(
-          "CallCardPresenter.onCallStateButtonClicked",
-          "sending call state button broadcast: " + broadcastIntent);
-      context.sendBroadcast(broadcastIntent, Manifest.permission.READ_PHONE_STATE);
-    }
-  }
-
-  @Override
   public void onManageConferenceClicked() {
     InCallActivity activity =
         (InCallActivity) (inCallScreen.getInCallScreenFragment().getActivity());
     activity.showConferenceFragment(true);
   }
 
-  @Override
-  public void onShrinkAnimationComplete() {
-    InCallPresenter.getInstance().onShrinkAnimationComplete();
-  }
-
   private void maybeStartSearch(DialerCall call, boolean isPrimary) {
     // no need to start search for conference calls which show generic info.
     if (call != null && !call.isConferenceCall()) {
@@ -654,10 +588,6 @@
     boolean hasWorkCallProperty = primary.hasProperty(PROPERTY_ENTERPRISE_CALL);
 
     MultimediaData multimediaData = null;
-    if (primary.getEnrichedCallSession() != null) {
-      multimediaData = primary.getEnrichedCallSession().getMultimediaData();
-    }
-
     if (primary.isConferenceCall()) {
       LogUtil.v(
           "CallCardPresenter.updatePrimaryDisplayInfo",
@@ -676,7 +606,6 @@
               .setIsSpam(false)
               .setIsLocalContact(false)
               .setAnsweringDisconnectsOngoingCall(false)
-              .setShouldShowLocation(shouldShowLocation())
               .setShowInCallButtonGrid(true)
               .setNumberPresentation(primary.getNumberPresentation())
               .build());
@@ -726,7 +655,6 @@
               .setIsSpam(primary.isSpam())
               .setIsLocalContact(primaryContactInfo.isLocalContact())
               .setAnsweringDisconnectsOngoingCall(primary.answeringDisconnectsForegroundVideoCall())
-              .setShouldShowLocation(shouldShowLocation())
               .setContactInfoLookupKey(primaryContactInfo.lookupKey)
               .setMultimediaData(multimediaData)
               .setShowInCallButtonGrid(true)
@@ -738,7 +666,7 @@
     }
 
     if (isInCallScreenReady) {
-      inCallScreen.showLocationUi(getLocationFragment());
+      inCallScreen.showLocationUi(null);
     } else {
       LogUtil.i("CallCardPresenter.updatePrimaryDisplayInfo", "UI not ready, not showing location");
     }
@@ -755,99 +683,6 @@
     return false;
   }
 
-  private Fragment getLocationFragment() {
-    if (!shouldShowLocation()) {
-      return null;
-    }
-    LogUtil.i("CallCardPresenter.getLocationFragment", "returning location fragment");
-    return callLocation.getLocationFragment(context);
-  }
-
-  private boolean shouldShowLocation() {
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(CONFIG_ENABLE_EMERGENCY_LOCATION, CONFIG_ENABLE_EMERGENCY_LOCATION_DEFAULT)) {
-      LogUtil.i("CallCardPresenter.getLocationFragment", "disabled by config.");
-      return false;
-    }
-    if (!isPotentialEmergencyCall()) {
-      LogUtil.i("CallCardPresenter.getLocationFragment", "shouldn't show location");
-      return false;
-    }
-    if (!hasLocationPermission()) {
-      LogUtil.i("CallCardPresenter.getLocationFragment", "no location permission.");
-      return false;
-    }
-    if (isBatteryTooLowForEmergencyLocation()) {
-      LogUtil.i("CallCardPresenter.getLocationFragment", "low battery.");
-      return false;
-    }
-    if (inCallScreen.getInCallScreenFragment().getActivity().isInMultiWindowMode()) {
-      LogUtil.i("CallCardPresenter.getLocationFragment", "in multi-window mode");
-      return false;
-    }
-    if (primary.isVideoCall()) {
-      LogUtil.i("CallCardPresenter.getLocationFragment", "emergency video calls not supported");
-      return false;
-    }
-    if (!callLocation.canGetLocation(context)) {
-      LogUtil.i("CallCardPresenter.getLocationFragment", "can't get current location");
-      return false;
-    }
-    return true;
-  }
-
-  private boolean isPotentialEmergencyCall() {
-    if (isOutgoingEmergencyCall(primary)) {
-      LogUtil.i("CallCardPresenter.shouldShowLocation", "new emergency call");
-      return true;
-    } else if (isIncomingEmergencyCall(primary)) {
-      LogUtil.i("CallCardPresenter.shouldShowLocation", "potential emergency callback");
-      return true;
-    } else if (isIncomingEmergencyCall(secondary)) {
-      LogUtil.i("CallCardPresenter.shouldShowLocation", "has potential emergency callback");
-      return true;
-    }
-    return false;
-  }
-
-  private static boolean isOutgoingEmergencyCall(@Nullable DialerCall call) {
-    return call != null && !call.isIncoming() && call.isEmergencyCall();
-  }
-
-  private static boolean isIncomingEmergencyCall(@Nullable DialerCall call) {
-    return call != null && call.isIncoming() && call.isPotentialEmergencyCallback();
-  }
-
-  private boolean hasLocationPermission() {
-    return ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
-        == PackageManager.PERMISSION_GRANTED;
-  }
-
-  private boolean isBatteryTooLowForEmergencyLocation() {
-    Intent batteryStatus =
-        context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
-    int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
-    if (status == BatteryManager.BATTERY_STATUS_CHARGING
-        || status == BatteryManager.BATTERY_STATUS_FULL) {
-      // Plugged in or full battery
-      return false;
-    }
-    int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
-    int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
-    float batteryPercent = (100f * level) / scale;
-    long threshold =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong(
-                CONFIG_MIN_BATTERY_PERCENT_FOR_EMERGENCY_LOCATION,
-                CONFIG_MIN_BATTERY_PERCENT_FOR_EMERGENCY_LOCATION_DEFAULT);
-    LogUtil.i(
-        "CallCardPresenter.isBatteryTooLowForEmergencyLocation",
-        "percent charged: " + batteryPercent + ", min required charge: " + threshold);
-    return batteryPercent < threshold;
-  }
-
   private void updateSecondaryDisplayInfo() {
     if (inCallScreen == null) {
       return;
@@ -925,8 +760,9 @@
       // Return the label for the gateway app on outgoing calls.
       final PackageManager pm = context.getPackageManager();
       try {
-        ApplicationInfo info =
-            pm.getApplicationInfo(primary.getGatewayInfo().getGatewayProviderPackageName(), 0);
+        ApplicationInfo info = pm.getApplicationInfo(
+                primary.getGatewayInfo().getGatewayProviderPackageName(),
+                PackageManager.ApplicationInfoFlags.of(0));
         return pm.getApplicationLabel(info).toString();
       } catch (PackageManager.NameNotFoundException e) {
         LogUtil.e("CallCardPresenter.getConnectionLabel", "gateway Application Not Found.", e);
@@ -1002,11 +838,6 @@
       return;
     }
 
-    Logger.get(context)
-        .logCallImpression(
-            DialerImpression.Type.IN_CALL_SWAP_SECONDARY_BUTTON_PRESSED,
-            primary.getUniqueCallId(),
-            primary.getTimeAddedMs());
     LogUtil.i(
         "CallCardPresenter.onSecondaryInfoClicked", "swapping call to foreground: " + secondary);
     secondary.unhold();
@@ -1094,7 +925,7 @@
       return false;
     }
 
-    AccessibilityEvent event = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_ANNOUNCEMENT);
+    AccessibilityEvent event = new AccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT);
     inCallScreen.dispatchPopulateAccessibilityEvent(event);
     View view = inCallScreen.getInCallScreenFragment().getView();
     view.getParent().requestSendAccessibilityEvent(view, event);
@@ -1170,7 +1001,7 @@
     private final boolean isPrimary;
 
     public ContactLookupCallback(CallCardPresenter callCardPresenter, boolean isPrimary) {
-      this.callCardPresenter = new WeakReference<CallCardPresenter>(callCardPresenter);
+      this.callCardPresenter = new WeakReference<>(callCardPresenter);
       this.isPrimary = isPrimary;
     }
 
diff --git a/java/com/android/incallui/CallerInfo.java b/java/com/android/incallui/CallerInfo.java
index 3ab3a77..678bbfa 100644
--- a/java/com/android/incallui/CallerInfo.java
+++ b/java/com/android/incallui/CallerInfo.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2006 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,6 +30,7 @@
 import android.provider.ContactsContract.RawContacts;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
+
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.ContactsUtils.UserType;
 import com.android.contacts.common.util.TelephonyManagerUtils;
diff --git a/java/com/android/incallui/CallerInfoAsyncQuery.java b/java/com/android/incallui/CallerInfoAsyncQuery.java
index 35011cb..506aaf0 100644
--- a/java/com/android/incallui/CallerInfoAsyncQuery.java
+++ b/java/com/android/incallui/CallerInfoAsyncQuery.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2006 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,16 +30,19 @@
 import android.os.Trace;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Directory;
-import android.support.annotation.MainThread;
-import android.support.annotation.RequiresPermission;
-import android.support.annotation.WorkerThread;
 import android.text.TextUtils;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.RequiresPermission;
+import androidx.annotation.WorkerThread;
+
+import com.android.dialer.R;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService.CachedContactInfo;
 import com.android.dialer.phonenumbercache.ContactInfoHelper;
 import com.android.dialer.phonenumbercache.PhoneNumberCache;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.strictmode.StrictModeUtils;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -161,7 +165,7 @@
     cw.countryIso = info.countryIso;
 
     // check to see if these are recognized numbers, and use shortcuts if we can.
-    if (PhoneNumberHelper.isLocalEmergencyNumber(context, info.phoneNumber)) {
+    if (PhoneNumberHelper.isEmergencyNumber(context, info.phoneNumber)) {
       cw.event = EVENT_EMERGENCY_NUMBER;
     } else if (info.isVoiceMailNumber()) {
       cw.event = EVENT_VOICEMAIL_NUMBER;
@@ -188,7 +192,7 @@
       OnQueryCompleteListener listener,
       Object cookie) {
     Trace.beginSection("CallerInfoAsyncQuery.startOtherDirectoriesQuery");
-    long[] directoryIds = StrictModeUtils.bypass(() -> getDirectoryIds(context));
+    long[] directoryIds = getDirectoryIds(context);
     int size = directoryIds.length;
     if (size == 0) {
       Trace.endSection();
@@ -437,7 +441,7 @@
         Log.d(
             this,
             "notifying listener: "
-                + cw.listener.getClass().toString()
+                + cw.listener.getClass()
                 + " for token: "
                 + token
                 + callerInfo);
diff --git a/java/com/android/incallui/CallerInfoUtils.java b/java/com/android/incallui/CallerInfoUtils.java
index 38043ed..825635e 100644
--- a/java/com/android/incallui/CallerInfoUtils.java
+++ b/java/com/android/incallui/CallerInfoUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,13 +17,13 @@
 
 package com.android.incallui;
 
+import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+
 import android.content.Context;
-import android.content.Loader;
-import android.content.Loader.OnLoadCompleteListener;
 import android.net.Uri;
 import android.telecom.TelecomManager;
 import android.text.TextUtils;
-import com.android.contacts.common.model.Contact;
+
 import com.android.contacts.common.model.ContactLoader;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.phonenumbercache.CachedNumberLookupService;
@@ -31,6 +32,9 @@
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.incallui.call.DialerCall;
+
+import org.lineageos.lib.phone.SensitivePhoneNumbers;
+
 import java.util.Arrays;
 
 /** Utility methods for contact and caller info related functionality */
@@ -100,6 +104,7 @@
         }
         number = modifyForSpecialCnapCases(context, info, number, info.numberPresentation);
       }
+      number = modifyPossibleSensitiveNumber(context, info, number);
       info.phoneNumber = number;
     }
 
@@ -140,6 +145,19 @@
     return cacheInfo;
   }
 
+  static String modifyPossibleSensitiveNumber(Context context, CallerInfo ci, String number) {
+    if (ci == null || number == null) {
+      return number;
+    }
+    boolean isSensitiveNumber = SensitivePhoneNumbers.getInstance().isSensitiveNumber(context,
+        number, INVALID_SUBSCRIPTION_ID);
+    if (isSensitiveNumber) {
+      number = context.getString(R.string.unknown);
+      ci.numberPresentation = TelecomManager.PRESENTATION_UNKNOWN;
+    }
+    return number;
+  }
+
   /**
    * Handles certain "corner cases" for CNAP. When we receive weird phone numbers from the network
    * to indicate different number presentations, convert them to expected number and presentation
@@ -188,7 +206,7 @@
             && presentation == TelecomManager.PRESENTATION_ALLOWED)) {
       // For all special strings, change number & numberPrentation.
       if (isCnapSpecialCaseRestricted(number)) {
-        number = PhoneNumberHelper.getDisplayNameForRestrictedNumber(context).toString();
+        number = context.getString(R.string.private_num_non_verizon);
         ci.numberPresentation = TelecomManager.PRESENTATION_RESTRICTED;
       } else if (isCnapSpecialCaseUnknown(number)) {
         number = context.getString(R.string.unknown);
@@ -250,15 +268,11 @@
     final ContactLoader loader =
         new ContactLoader(context, contactUri, true /* postViewNotification */);
     loader.registerListener(
-        0,
-        new OnLoadCompleteListener<Contact>() {
-          @Override
-          public void onLoadComplete(Loader<Contact> loader, Contact contact) {
-            try {
-              loader.reset();
-            } catch (RuntimeException e) {
-              LogUtil.e("CallerInfoUtils.onLoadComplete", "Error resetting loader", e);
-            }
+        0, (loader1, contact) -> {
+          try {
+            loader1.reset();
+          } catch (RuntimeException e) {
+            LogUtil.e("CallerInfoUtils.onLoadComplete", "Error resetting loader", e);
           }
         });
     loader.startLoading();
diff --git a/java/com/android/incallui/ConferenceManagerFragment.java b/java/com/android/incallui/ConferenceManagerFragment.java
index 20625c4..ea52c9c 100644
--- a/java/com/android/incallui/ConferenceManagerFragment.java
+++ b/java/com/android/incallui/ConferenceManagerFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,13 +22,14 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ListView;
+
+import com.android.dialer.R;
 import com.android.dialer.contactphoto.ContactPhotoManager;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
 import com.android.incallui.ConferenceManagerPresenter.ConferenceManagerUi;
 import com.android.incallui.baseui.BaseFragment;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
+
 import java.util.List;
 
 /** Fragment that allows the user to manage a conference call. */
@@ -52,9 +54,6 @@
   @Override
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
-    if (savedInstanceState != null) {
-      Logger.get(getContext()).logScreenView(ScreenEvent.Type.CONFERENCE_MANAGEMENT, getActivity());
-    }
   }
 
   @Override
@@ -62,7 +61,7 @@
       LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     final View parent = inflater.inflate(R.layout.conference_manager_fragment, container, false);
 
-    conferenceParticipantList = (ListView) parent.findViewById(R.id.participantList);
+    conferenceParticipantList = parent.findViewById(R.id.participantList);
     contactPhotoManager = ContactPhotoManager.getInstance(getActivity().getApplicationContext());
 
     return parent;
diff --git a/java/com/android/incallui/ConferenceManagerPresenter.java b/java/com/android/incallui/ConferenceManagerPresenter.java
index 226741d..97a43cb 100644
--- a/java/com/android/incallui/ConferenceManagerPresenter.java
+++ b/java/com/android/incallui/ConferenceManagerPresenter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,6 +26,7 @@
 import com.android.incallui.baseui.Ui;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -57,7 +59,7 @@
         final DialerCall call = callList.getActiveOrBackgroundCall();
         if (call != null && call.isConferenceCall()) {
           Log.v(
-              this, "Number of existing calls is " + String.valueOf(call.getChildCallIds().size()));
+              this, "Number of existing calls is " + call.getChildCallIds().size());
           update(callList);
         } else {
           InCallPresenter.getInstance().showConferenceCallManager(false);
@@ -117,7 +119,7 @@
       calls.add(callList.getCallById(callerId));
     }
 
-    Log.d(this, "Number of calls is " + String.valueOf(calls.size()));
+    Log.d(this, "Number of calls is " + calls.size());
 
     // Users can split out a call from the conference call if either the active call or the
     // holding call is empty. If both are filled, users can not split out another call.
diff --git a/java/com/android/incallui/ConferenceParticipantListAdapter.java b/java/com/android/incallui/ConferenceParticipantListAdapter.java
index d13bd3d..f6f68a9 100644
--- a/java/com/android/incallui/ConferenceParticipantListAdapter.java
+++ b/java/com/android/incallui/ConferenceParticipantListAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,6 @@
 
 import android.content.Context;
 import android.net.Uri;
-import android.support.v4.util.ArrayMap;
 import android.telephony.PhoneNumberUtils;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
@@ -32,6 +32,10 @@
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.TextView;
+
+import androidx.collection.ArrayMap;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.contactphoto.ContactPhotoManager;
 import com.android.dialer.contactphoto.ContactPhotoManager.DefaultImageRequest;
@@ -40,10 +44,9 @@
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.state.DialerCallState;
+
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -60,32 +63,23 @@
   /** Contact photo manager to retrieve cached contact photo information. */
   private final ContactPhotoManager contactPhotoManager;
   /** Listener used to handle tap of the "disconnect' button for a participant. */
-  private View.OnClickListener disconnectListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View view) {
-          DialerCall call = getCallFromView(view);
-          LogUtil.i(
-              "ConferenceParticipantListAdapter.mDisconnectListener.onClick", "call: " + call);
-          if (call != null) {
-            call.disconnect();
-          }
-        }
-      };
+  private final View.OnClickListener disconnectListener = view -> {
+    DialerCall call = getCallFromView(view);
+    LogUtil.i("ConferenceParticipantListAdapter.mDisconnectListener.onClick", "call: " + call);
+    if (call != null) {
+      call.disconnect();
+    }
+  };
   /** Listener used to handle tap of the "separate' button for a participant. */
-  private View.OnClickListener separateListener =
-      new View.OnClickListener() {
-        @Override
-        public void onClick(View view) {
-          DialerCall call = getCallFromView(view);
-          LogUtil.i("ConferenceParticipantListAdapter.mSeparateListener.onClick", "call: " + call);
-          if (call != null) {
-            call.splitFromConference();
-          }
-        }
-      };
+  private final View.OnClickListener separateListener = view -> {
+    DialerCall call = getCallFromView(view);
+    LogUtil.i("ConferenceParticipantListAdapter.mSeparateListener.onClick", "call: " + call);
+    if (call != null) {
+      call.splitFromConference();
+    }
+  };
   /** The conference participants to show in the ListView. */
-  private List<ParticipantInfo> conferenceParticipants = new ArrayList<>();
+  private final List<ParticipantInfo> conferenceParticipants = new ArrayList<>();
   /** {@code True} if the conference parent supports separating calls from the conference. */
   private boolean parentCanSeparate;
 
@@ -425,29 +419,24 @@
 
   /** Sorts the participant list by contact name. */
   private void sortParticipantList() {
-    Collections.sort(
-        conferenceParticipants,
-        new Comparator<ParticipantInfo>() {
-          @Override
-          public int compare(ParticipantInfo p1, ParticipantInfo p2) {
-            // Contact names might be null, so replace with empty string.
-            ContactCacheEntry c1 = p1.getContactCacheEntry();
-            String p1Name =
-                ContactsComponent.get(getContext())
-                    .contactDisplayPreferences()
-                    .getSortName(c1.namePrimary, c1.nameAlternative);
-            p1Name = p1Name != null ? p1Name : "";
+    conferenceParticipants.sort((p1, p2) -> {
+      // Contact names might be null, so replace with empty string.
+      ContactCacheEntry c1 = p1.getContactCacheEntry();
+      String p1Name =
+              ContactsComponent.get(getContext())
+                      .contactDisplayPreferences()
+                      .getSortName(c1.namePrimary, c1.nameAlternative);
+      p1Name = p1Name != null ? p1Name : "";
 
-            ContactCacheEntry c2 = p2.getContactCacheEntry();
-            String p2Name =
-                ContactsComponent.get(getContext())
-                    .contactDisplayPreferences()
-                    .getSortName(c2.namePrimary, c2.nameAlternative);
-            p2Name = p2Name != null ? p2Name : "";
+      ContactCacheEntry c2 = p2.getContactCacheEntry();
+      String p2Name =
+              ContactsComponent.get(getContext())
+                      .contactDisplayPreferences()
+                      .getSortName(c2.namePrimary, c2.nameAlternative);
+      p2Name = p2Name != null ? p2Name : "";
 
-            return p1Name.compareToIgnoreCase(p2Name);
-          }
-        });
+      return p1Name.compareToIgnoreCase(p2Name);
+    });
   }
 
   private DialerCall getCallFromView(View view) {
diff --git a/java/com/android/incallui/ContactInfoCache.java b/java/com/android/incallui/ContactInfoCache.java
index f01bddd..3806b01 100644
--- a/java/com/android/incallui/ContactInfoCache.java
+++ b/java/com/android/incallui/ContactInfoCache.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,19 +28,22 @@
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.DisplayNameSources;
-import android.support.annotation.AnyThread;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.os.UserManagerCompat;
 import android.telecom.TelecomManager;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.ArraySet;
+
+import androidx.annotation.AnyThread;
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+import androidx.core.content.ContextCompat;
+import androidx.core.os.UserManagerCompat;
+
 import com.android.contacts.common.ContactsUtils;
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
@@ -59,12 +63,14 @@
 import com.android.incallui.bindings.PhoneNumberService;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.incall.protocol.ContactPhotoType;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import org.json.JSONException;
-import org.json.JSONObject;
 
 /**
  * Class responsible for querying Contact Information for DialerCall objects. Can perform
@@ -288,7 +294,7 @@
       return name;
     } else {
       if (presentation == TelecomManager.PRESENTATION_RESTRICTED) {
-        name = PhoneNumberHelper.getDisplayNameForRestrictedNumber(context);
+        name = context.getString(R.string.private_num_non_verizon);
       } else if (presentation == TelecomManager.PRESENTATION_PAYPHONE) {
         name = context.getString(R.string.payphone);
       }
diff --git a/java/com/android/incallui/ContactsAsyncHelper.java b/java/com/android/incallui/ContactsAsyncHelper.java
index abca924..84a5563 100644
--- a/java/com/android/incallui/ContactsAsyncHelper.java
+++ b/java/com/android/incallui/ContactsAsyncHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,12 +23,16 @@
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.support.annotation.MainThread;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
+
 import java.io.IOException;
 import java.io.InputStream;
 
diff --git a/java/com/android/incallui/DialpadFragment.java b/java/com/android/incallui/DialpadFragment.java
index 2ae2aca..147f5c0 100644
--- a/java/com/android/incallui/DialpadFragment.java
+++ b/java/com/android/incallui/DialpadFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -30,15 +31,15 @@
 import android.view.ViewGroup;
 import android.widget.EditText;
 import android.widget.LinearLayout;
-import android.widget.TextView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.dialpadview.DialpadKeyButton;
 import com.android.dialer.dialpadview.DialpadKeyButton.OnPressedListener;
 import com.android.dialer.dialpadview.DialpadView;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.incallui.DialpadPresenter.DialpadUi;
 import com.android.incallui.baseui.BaseFragment;
+
 import java.util.Map;
 
 /** Fragment for call control buttons */
@@ -48,7 +49,7 @@
   /** Hash Map to map a view id to a character */
   private static final Map<Integer, Character> displayMap = new ArrayMap<>();
 
-  /** Set up the static maps */
+  /* Set up the static maps */
   static {
     // Map the buttons to the display characters
     displayMap.put(R.id.one, '1');
@@ -84,15 +85,12 @@
   // KeyListener used with the "dialpad digits" EditText widget.
   private DtmfKeyListener dtmfKeyListener;
   private DialpadView dialpadView;
-  private int currentTextColor;
   private View endCallSpace;
   private boolean shouldShowEndCallSpace = true;
 
   @Override
   public void onClick(View v) {
     if (v.getId() == R.id.dialpad_back) {
-      Logger.get(getContext())
-          .logImpression(DialerImpression.Type.IN_CALL_DIALPAD_CLOSE_BUTTON_PRESSED);
       getActivity().onBackPressed();
     }
   }
@@ -140,10 +138,9 @@
     Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.Dialer_ThemeBase);
     LayoutInflater layoutInflater = inflater.cloneInContext(contextThemeWrapper);
     final View parent = layoutInflater.inflate(R.layout.incall_dialpad_fragment, container, false);
-    dialpadView = (DialpadView) parent.findViewById(R.id.dialpad_view);
+    dialpadView = parent.findViewById(R.id.dialpad_view);
     dialpadView.setCanDigitsBeEdited(false);
-    dialpadView.setBackgroundResource(R.color.incall_dialpad_background);
-    dtmfDialerField = (EditText) parent.findViewById(R.id.digits);
+    dtmfDialerField = parent.findViewById(R.id.digits);
     if (dtmfDialerField != null) {
       LogUtil.i("DialpadFragment.onCreateView", "creating dtmfKeyListener");
       dtmfKeyListener = new DtmfKeyListener(getPresenter());
@@ -165,26 +162,9 @@
   @Override
   public void onResume() {
     super.onResume();
-    updateColors();
     endCallSpace.setVisibility(shouldShowEndCallSpace ? View.VISIBLE : View.GONE);
   }
 
-  public void updateColors() {
-    int textColor = InCallPresenter.getInstance().getThemeColorManager().getPrimaryColor();
-
-    if (currentTextColor == textColor) {
-      return;
-    }
-
-    DialpadKeyButton dialpadKey;
-    for (int i = 0; i < buttonIds.length; i++) {
-      dialpadKey = (DialpadKeyButton) dialpadView.findViewById(buttonIds[i]);
-      ((TextView) dialpadKey.findViewById(R.id.dialpad_key_number)).setTextColor(textColor);
-    }
-
-    currentTextColor = textColor;
-  }
-
   @Override
   public void onDestroyView() {
     dtmfKeyListener = null;
@@ -211,7 +191,7 @@
 
   /** Starts the slide up animation for the Dialpad keys when the Dialpad is revealed. */
   public void animateShowDialpad() {
-    final DialpadView dialpadView = (DialpadView) getView().findViewById(R.id.dialpad_view);
+    final DialpadView dialpadView = getView().findViewById(R.id.dialpad_view);
     dialpadView.animateShow();
   }
 
@@ -254,7 +234,7 @@
   private void configureKeypadListeners() {
     DialpadKeyButton dialpadKey;
     for (int i = 0; i < buttonIds.length; i++) {
-      dialpadKey = (DialpadKeyButton) dialpadView.findViewById(buttonIds[i]);
+      dialpadKey = dialpadView.findViewById(buttonIds[i]);
       dialpadKey.setOnKeyListener(this);
       dialpadKey.setOnClickListener(this);
       dialpadKey.setOnPressedListener(this);
@@ -264,8 +244,6 @@
   @Override
   public void onPressed(View view, boolean pressed) {
     if (pressed && displayMap.containsKey(view.getId())) {
-      Logger.get(getContext())
-          .logImpression(DialerImpression.Type.IN_CALL_DIALPAD_NUMBER_BUTTON_PRESSED);
       Log.d(this, "onPressed: " + pressed + " " + displayMap.get(view.getId()));
       getPresenter().processDtmf(displayMap.get(view.getId()));
     }
diff --git a/java/com/android/incallui/DialpadPresenter.java b/java/com/android/incallui/DialpadPresenter.java
index e6fbdc2..c4a7106 100644
--- a/java/com/android/incallui/DialpadPresenter.java
+++ b/java/com/android/incallui/DialpadPresenter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project 
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.incallui;
 
 import android.telephony.PhoneNumberUtils;
+
 import com.android.incallui.DialpadPresenter.DialpadUi;
 import com.android.incallui.baseui.Presenter;
 import com.android.incallui.baseui.Ui;
diff --git a/java/com/android/incallui/DtmfKeyListener.java b/java/com/android/incallui/DtmfKeyListener.java
index 330630a..59c792f 100644
--- a/java/com/android/incallui/DtmfKeyListener.java
+++ b/java/com/android/incallui/DtmfKeyListener.java
@@ -16,13 +16,15 @@
 
 package com.android.incallui;
 
-import android.support.annotation.NonNull;
 import android.text.Editable;
 import android.text.Spannable;
 import android.text.SpannableString;
 import android.text.method.DialerKeyListener;
 import android.view.KeyEvent;
 import android.view.View;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.LogUtil;
 
 /**
diff --git a/java/com/android/incallui/ExternalCallNotifier.java b/java/com/android/incallui/ExternalCallNotifier.java
index 160e250..cdacd60 100644
--- a/java/com/android/incallui/ExternalCallNotifier.java
+++ b/java/com/android/incallui/ExternalCallNotifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,19 +17,15 @@
 
 package com.android.incallui;
 
-import android.annotation.TargetApi;
 import android.app.Notification;
 import android.app.PendingIntent;
+import android.app.Person;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.drawable.BitmapDrawable;
 import android.net.Uri;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.os.BuildCompat;
 import android.telecom.Call;
 import android.telecom.PhoneAccount;
 import android.telecom.VideoProfile;
@@ -36,8 +33,13 @@
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.compat.CallCompat;
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.contactphoto.BitmapUtil;
 import com.android.dialer.contacts.ContactsComponent;
@@ -45,10 +47,11 @@
 import com.android.dialer.notification.NotificationChannelId;
 import com.android.dialer.telecom.TelecomCallUtil;
 import com.android.dialer.theme.base.ThemeComponent;
+import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCallDelegate;
 import com.android.incallui.call.ExternalCallList;
-import com.android.incallui.latencyreport.LatencyReport;
+
 import java.util.Map;
 
 /**
@@ -75,12 +78,12 @@
 
   private final Context context;
   private final ContactInfoCache contactInfoCache;
-  private Map<Call, NotificationInfo> notifications = new ArrayMap<>();
+  private final Map<Call, NotificationInfo> notifications = new ArrayMap<>();
   private int nextUniqueNotificationId;
 
   /** Initializes a new instance of the external call notifier. */
   public ExternalCallNotifier(
-      @NonNull Context context, @NonNull ContactInfoCache contactInfoCache) {
+          @NonNull Context context, @NonNull ContactInfoCache contactInfoCache) {
     this.context = context;
     this.contactInfoCache = contactInfoCache;
   }
@@ -128,7 +131,6 @@
    * @param notificationId The notification ID associated with the external call which is to be
    *     pulled.
    */
-  @TargetApi(VERSION_CODES.N_MR1)
   public void pullExternalCall(int notificationId) {
     for (NotificationInfo info : notifications.values()) {
       if (info.getNotificationId() == notificationId
@@ -154,7 +156,6 @@
             context,
             new DialerCallDelegateStub(),
             info.getCall(),
-            new LatencyReport(),
             false /* registerCallback */);
 
     contactInfoCache.findInfo(
@@ -220,7 +221,7 @@
 
   /** Rebuild an existing or show a new notification given {@link NotificationInfo}. */
   private void postNotification(NotificationInfo info) {
-    Notification.Builder builder = new Notification.Builder(context);
+    Notification.Builder builder = new Notification.Builder(context, NotificationChannelId.DEFAULT);
     // Set notification as ongoing since calls are long-running versus a point-in-time notice.
     builder.setOngoing(true);
     // Make the notification prioritized over the other normal notifications.
@@ -234,14 +235,11 @@
             isVideoCall
                 ? R.string.notification_external_video_call
                 : R.string.notification_external_call));
-    builder.setSmallIcon(R.drawable.quantum_ic_call_white_24);
+    builder.setSmallIcon(R.drawable.quantum_ic_call_vd_theme_24);
     builder.setContentTitle(info.getContentTitle());
     builder.setLargeIcon(info.getLargeIcon());
-    builder.setColor(ThemeComponent.get(context).theme().getColorPrimary());
-    builder.addPerson(info.getPersonReference());
-    if (BuildCompat.isAtLeastO()) {
-      builder.setChannelId(NotificationChannelId.DEFAULT);
-    }
+    builder.setColor(ThemeComponent.get(context).theme().getColorCallNotificationBackground());
+    builder.addPerson(new Person.Builder().setUri(info.getPersonReference()).build());
 
     // Where the external call supports being transferred to the local device, add an action
     // to the notification to initiate the call pull process.
@@ -257,26 +255,26 @@
           NotificationBroadcastReceiver.EXTRA_NOTIFICATION_ID, info.getNotificationId());
       builder.addAction(
           new Notification.Action.Builder(
-                  R.drawable.quantum_ic_call_white_24,
+                  R.drawable.quantum_ic_call_vd_theme_24,
                   context.getString(
                       isVideoCall
                           ? R.string.notification_take_video_call
                           : R.string.notification_take_call),
-                  PendingIntent.getBroadcast(context, info.getNotificationId(), intent, 0))
+                  PendingIntent.getBroadcast(context, info.getNotificationId(), intent,
+                          PendingIntent.FLAG_IMMUTABLE))
               .build());
     }
 
-    /**
+    /*
      * This builder is used for the notification shown when the device is locked and the user has
      * set their notification settings to 'hide sensitive content' {@see
      * Notification.Builder#setPublicVersion}.
      */
     Notification.Builder publicBuilder = new Notification.Builder(context);
-    publicBuilder.setSmallIcon(R.drawable.quantum_ic_call_white_24);
-    publicBuilder.setColor(ThemeComponent.get(context).theme().getColorPrimary());
-    if (BuildCompat.isAtLeastO()) {
-      publicBuilder.setChannelId(NotificationChannelId.DEFAULT);
-    }
+    publicBuilder.setSmallIcon(R.drawable.quantum_ic_call_vd_theme_24);
+    publicBuilder.setColor(
+            ThemeComponent.get(context).theme().getColorCallNotificationBackground());
+    publicBuilder.setChannelId(NotificationChannelId.DEFAULT);
 
     builder.setPublicVersion(publicBuilder.build());
     Notification notification = builder.build();
@@ -450,10 +448,8 @@
     summary.setPriority(Notification.PRIORITY_HIGH);
     summary.setGroup(GROUP_KEY);
     summary.setGroupSummary(true);
-    summary.setSmallIcon(R.drawable.quantum_ic_call_white_24);
-    if (BuildCompat.isAtLeastO()) {
-      summary.setChannelId(NotificationChannelId.DEFAULT);
-    }
+    summary.setSmallIcon(R.drawable.quantum_ic_call_vd_theme_24);
+    summary.setChannelId(NotificationChannelId.DEFAULT);
     DialerNotificationManager.notify(
         context, GROUP_SUMMARY_NOTIFICATION_TAG, GROUP_SUMMARY_NOTIFICATION_ID, summary.build());
   }
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index 3ff1d26..0f1a156 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,21 +30,10 @@
 import android.graphics.drawable.GradientDrawable.Orientation;
 import android.os.Bundle;
 import android.os.Trace;
-import android.support.annotation.ColorInt;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.content.res.ResourcesCompat;
-import android.support.v4.graphics.ColorUtils;
 import android.telecom.Call;
 import android.telecom.CallAudioState;
 import android.telecom.PhoneAccountHandle;
+import android.telecom.PhoneAccountSuggestion;
 import android.telephony.TelephonyManager;
 import android.view.KeyEvent;
 import android.view.MenuItem;
@@ -54,19 +44,26 @@
 import android.view.animation.AnimationUtils;
 import android.widget.CheckBox;
 import android.widget.Toast;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.res.ResourcesCompat;
+import androidx.core.graphics.ColorUtils;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
 import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment;
+import com.android.dialer.R;
 import com.android.dialer.animation.AnimUtils;
 import com.android.dialer.animation.AnimationListenerAdapter;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.common.concurrent.UiListener;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ScreenEvent;
-import com.android.dialer.metrics.Metrics;
-import com.android.dialer.metrics.MetricsComponent;
+import com.android.dialer.common.concurrent.SupportUiListener;
 import com.android.dialer.preferredsim.PreferredAccountRecorder;
 import com.android.dialer.preferredsim.PreferredAccountWorker;
 import com.android.dialer.preferredsim.PreferredAccountWorker.Result;
@@ -95,18 +92,17 @@
 import com.android.incallui.rtt.protocol.RttCallScreen;
 import com.android.incallui.rtt.protocol.RttCallScreenDelegate;
 import com.android.incallui.rtt.protocol.RttCallScreenDelegateFactory;
-import com.android.incallui.speakeasy.SpeakEasyCallManager;
 import com.android.incallui.telecomeventui.InternationalCallOnWifiDialogFragment;
 import com.android.incallui.video.bindings.VideoBindings;
 import com.android.incallui.video.protocol.VideoCallScreen;
 import com.android.incallui.video.protocol.VideoCallScreenDelegate;
 import com.android.incallui.video.protocol.VideoCallScreenDelegateFactory;
 import com.google.common.util.concurrent.ListenableFuture;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
 
 /** Version of {@link InCallActivity} that shows the new UI */
 public class InCallActivity extends TransactionSafeFragmentActivity
@@ -129,10 +125,8 @@
   private static final int DIALPAD_REQUEST_SHOW = 2;
   private static final int DIALPAD_REQUEST_HIDE = 3;
 
-  private static Optional<Integer> audioRouteForTesting = Optional.empty();
-
   private SelectPhoneAccountListener selectPhoneAccountListener;
-  private UiListener<Result> preferredAccountWorkerResultListener;
+  private SupportUiListener<Result> preferredAccountWorkerResultListener;
 
   private Animation dialpadSlideInAnimation;
   private Animation dialpadSlideOutAnimation;
@@ -148,8 +142,6 @@
   private boolean didShowInCallScreen;
   private boolean didShowVideoCallScreen;
   private boolean didShowRttCallScreen;
-  private boolean didShowSpeakEasyScreen;
-  private String lastShownSpeakEasyScreenUniqueCallid = "";
   private boolean dismissKeyguard;
   private boolean isInShowMainInCallFragment;
   private boolean isRecreating; // whether the activity is going to be recreated
@@ -158,7 +150,6 @@
   private boolean touchDownWhenPseudoScreenOff;
   private int[] backgroundDrawableColors;
   @DialpadRequestType private int showDialpadRequest = DIALPAD_REQUEST_NONE;
-  private SpeakEasyCallManager speakEasyCallManager;
   private DialogFragment rttRequestDialogFragment;
 
   public static Intent getIntent(
@@ -189,7 +180,7 @@
 
     preferredAccountWorkerResultListener =
         DialerExecutorComponent.get(this)
-            .createUiListener(getFragmentManager(), "preferredAccountWorkerResultListener");
+            .createUiListener(getSupportFragmentManager(), "preferredAccountWorkerResultListener");
 
     selectPhoneAccountListener = new SelectPhoneAccountListener(getApplicationContext());
 
@@ -198,7 +189,6 @@
       didShowInCallScreen = bundle.getBoolean(KeysForSavedInstance.DID_SHOW_IN_CALL_SCREEN);
       didShowVideoCallScreen = bundle.getBoolean(KeysForSavedInstance.DID_SHOW_VIDEO_CALL_SCREEN);
       didShowRttCallScreen = bundle.getBoolean(KeysForSavedInstance.DID_SHOW_RTT_CALL_SCREEN);
-      didShowSpeakEasyScreen = bundle.getBoolean(KeysForSavedInstance.DID_SHOW_SPEAK_EASY_SCREEN);
     }
 
     setWindowFlags();
@@ -242,7 +232,7 @@
 
       SelectPhoneAccountDialogFragment selectPhoneAccountDialogFragment =
           (SelectPhoneAccountDialogFragment)
-              getFragmentManager().findFragmentByTag(Tags.SELECT_ACCOUNT_FRAGMENT);
+              getSupportFragmentManager().findFragmentByTag(Tags.SELECT_ACCOUNT_FRAGMENT);
       if (selectPhoneAccountDialogFragment != null) {
         selectPhoneAccountDialogFragment.setListener(selectPhoneAccountListener);
       }
@@ -258,12 +248,6 @@
     pseudoBlackScreenOverlay = findViewById(R.id.psuedo_black_screen_overlay);
     sendBroadcast(CallPendingActivity.getFinishBroadcast());
     Trace.endSection();
-    MetricsComponent.get(this)
-        .metrics()
-        .stopTimer(Metrics.ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_INCOMING);
-    MetricsComponent.get(this)
-        .metrics()
-        .stopTimer(Metrics.ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_OUTGOING);
   }
 
   private void setWindowFlags() {
@@ -285,18 +269,9 @@
   }
 
   private static int getAudioRoute() {
-    if (audioRouteForTesting.isPresent()) {
-      return audioRouteForTesting.get();
-    }
-
     return AudioModeProvider.getInstance().getAudioState().getRoute();
   }
 
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public static void setAudioRouteForTesting(int audioRoute) {
-    audioRouteForTesting = Optional.of(audioRoute);
-  }
-
   private void internalResolveIntent(Intent intent) {
     if (!intent.getAction().equals(Intent.ACTION_MAIN)) {
       return;
@@ -368,10 +343,17 @@
         PreferredSimComponent.get(this).preferredAccountWorker();
 
     Bundle extras = waitingForAccountCall.getIntentExtras();
-    List<PhoneAccountHandle> phoneAccountHandles =
+    List<PhoneAccountSuggestion> phoneAccountSuggestions =
         extras == null
             ? new ArrayList<>()
-            : extras.getParcelableArrayList(Call.AVAILABLE_PHONE_ACCOUNTS);
+            : extras.getParcelableArrayList(Call.EXTRA_SUGGESTED_PHONE_ACCOUNTS,
+                PhoneAccountSuggestion.class);
+    List<PhoneAccountHandle> phoneAccountHandles = new ArrayList<>();
+    if (phoneAccountSuggestions != null) {
+      for (PhoneAccountSuggestion suggestion : phoneAccountSuggestions) {
+        phoneAccountHandles.add(suggestion.getPhoneAccountHandle());
+      }
+    }
 
     ListenableFuture<PreferredAccountWorker.Result> preferredAccountFuture =
         preferredAccountWorker.selectAccount(
@@ -397,13 +379,14 @@
           waitingForAccountCall.setPreferredAccountRecorder(
               new PreferredAccountRecorder(
                   waitingForAccountCall.getNumber(),
-                  result.getSuggestion().orNull(),
-                  result.getDataId().orNull()));
+                  result.getSuggestion().orElse(null),
+                  result.getDataId().orElse(null)));
           selectPhoneAccountDialogFragment =
               SelectPhoneAccountDialogFragment.newInstance(
                   result.getDialogOptionsBuilder().get().setCallId(callId).build(),
                   selectPhoneAccountListener);
-          selectPhoneAccountDialogFragment.show(getFragmentManager(), Tags.SELECT_ACCOUNT_FRAGMENT);
+          selectPhoneAccountDialogFragment.show(getSupportFragmentManager(),
+                  Tags.SELECT_ACCOUNT_FRAGMENT);
         },
         throwable -> {
           throw new RuntimeException(throwable);
@@ -427,7 +410,6 @@
     out.putBoolean(KeysForSavedInstance.DID_SHOW_IN_CALL_SCREEN, didShowInCallScreen);
     out.putBoolean(KeysForSavedInstance.DID_SHOW_VIDEO_CALL_SCREEN, didShowVideoCallScreen);
     out.putBoolean(KeysForSavedInstance.DID_SHOW_RTT_CALL_SCREEN, didShowRttCallScreen);
-    out.putBoolean(KeysForSavedInstance.DID_SHOW_SPEAK_EASY_SCREEN, didShowSpeakEasyScreen);
 
     super.onSaveInstanceState(out);
     isVisible = false;
@@ -499,13 +481,6 @@
     pseudoScreenState.addListener(this);
     onPseudoScreenStateChanged(pseudoScreenState.isOn());
     Trace.endSection();
-    // add 1 sec delay to get memory snapshot so that dialer wont react slowly on resume.
-    ThreadUtil.postDelayedOnUiThread(
-        () ->
-            MetricsComponent.get(this)
-                .metrics()
-                .recordMemory(Metrics.INCALL_ACTIVITY_ON_RESUME_MEMORY_EVENT_NAME),
-        1000);
   }
 
   @Override
@@ -629,7 +604,6 @@
     }
   }
 
-  @VisibleForTesting
   void onNewIntent(Intent intent, boolean isRecreating) {
     this.isRecreating = isRecreating;
 
@@ -832,7 +806,6 @@
     transaction.commitAllowingStateLoss();
     dialpadFragmentManager.executePendingTransactions();
 
-    Logger.get(this).logScreenView(ScreenEvent.Type.INCALL_DIALPAD, this);
     getInCallOrRttCallScreen().onInCallScreenDialpadVisibilityChange(true);
   }
 
@@ -951,8 +924,7 @@
   public boolean getCallCardFragmentVisible() {
     return didShowInCallScreen
         || didShowVideoCallScreen
-        || didShowRttCallScreen
-        || didShowSpeakEasyScreen;
+        || didShowRttCallScreen;
   }
 
   public void dismissKeyguard(boolean dismiss) {
@@ -1064,7 +1036,7 @@
     List<AppTask> tasks = getSystemService(ActivityManager.class).getAppTasks();
     for (AppTask task : tasks) {
       try {
-        if (task.getTaskInfo().id == taskId) {
+        if (task.getTaskInfo().taskId == taskId) {
           task.setExcludeFromRecents(exclude);
         }
       } catch (RuntimeException e) {
@@ -1225,21 +1197,18 @@
     ShouldShowUiResult shouldShowAnswerUi = getShouldShowAnswerUi();
     ShouldShowUiResult shouldShowVideoUi = getShouldShowVideoUi();
     ShouldShowUiResult shouldShowRttUi = getShouldShowRttUi();
-    ShouldShowUiResult shouldShowSpeakEasyUi = getShouldShowSpeakEasyUi();
     LogUtil.i(
         "InCallActivity.showMainInCallFragment",
         "shouldShowAnswerUi: %b, shouldShowRttUi: %b, shouldShowVideoUi: %b, "
-            + "shouldShowSpeakEasyUi: %b, didShowAnswerScreen: %b, didShowInCallScreen: %b, "
-            + "didShowRttCallScreen: %b, didShowVideoCallScreen: %b, didShowSpeakEasyScreen: %b",
+            + "didShowAnswerScreen: %b, didShowInCallScreen: %b, "
+            + "didShowRttCallScreen: %b, didShowVideoCallScreen: %b",
         shouldShowAnswerUi.shouldShow,
         shouldShowRttUi.shouldShow,
         shouldShowVideoUi.shouldShow,
-        shouldShowSpeakEasyUi.shouldShow,
         didShowAnswerScreen,
         didShowInCallScreen,
         didShowRttCallScreen,
-        didShowVideoCallScreen,
-        didShowSpeakEasyScreen);
+        didShowVideoCallScreen);
     // Only video call ui allows orientation change.
     setAllowOrientationChange(shouldShowVideoUi.shouldShow);
 
@@ -1249,31 +1218,21 @@
       didChange = hideInCallScreenFragment(transaction);
       didChange |= hideVideoCallScreenFragment(transaction);
       didChange |= hideRttCallScreenFragment(transaction);
-      didChange |= hideSpeakEasyFragment(transaction);
       didChange |= showAnswerScreenFragment(transaction, shouldShowAnswerUi.call);
     } else if (shouldShowVideoUi.shouldShow) {
       didChange = hideInCallScreenFragment(transaction);
       didChange |= showVideoCallScreenFragment(transaction, shouldShowVideoUi.call);
       didChange |= hideRttCallScreenFragment(transaction);
-      didChange |= hideSpeakEasyFragment(transaction);
       didChange |= hideAnswerScreenFragment(transaction);
     } else if (shouldShowRttUi.shouldShow) {
       didChange = hideInCallScreenFragment(transaction);
       didChange |= hideVideoCallScreenFragment(transaction);
       didChange |= hideAnswerScreenFragment(transaction);
-      didChange |= hideSpeakEasyFragment(transaction);
       didChange |= showRttCallScreenFragment(transaction, shouldShowRttUi.call);
-    } else if (shouldShowSpeakEasyUi.shouldShow) {
-      didChange = hideInCallScreenFragment(transaction);
-      didChange |= hideVideoCallScreenFragment(transaction);
-      didChange |= hideAnswerScreenFragment(transaction);
-      didChange |= hideRttCallScreenFragment(transaction);
-      didChange |= showSpeakEasyFragment(transaction, shouldShowSpeakEasyUi.call);
     } else {
       didChange = showInCallScreenFragment(transaction);
       didChange |= hideVideoCallScreenFragment(transaction);
       didChange |= hideRttCallScreenFragment(transaction);
-      didChange |= hideSpeakEasyFragment(transaction);
       didChange |= hideAnswerScreenFragment(transaction);
     }
 
@@ -1281,110 +1240,14 @@
       Trace.beginSection("InCallActivity.commitTransaction");
       transaction.commitNow();
       Trace.endSection();
-      Logger.get(this).logScreenView(ScreenEvent.Type.INCALL, this);
     }
     isInShowMainInCallFragment = false;
     Trace.endSection();
   }
 
-  private boolean showSpeakEasyFragment(FragmentTransaction transaction, DialerCall call) {
-
-    if (didShowSpeakEasyScreen) {
-      if (lastShownSpeakEasyScreenUniqueCallid.equals(call.getUniqueCallId())) {
-        LogUtil.i("InCallActivity.showSpeakEasyFragment", "found existing fragment");
-        return false;
-      }
-      hideSpeakEasyFragment(transaction);
-      LogUtil.i("InCallActivity.showSpeakEasyFragment", "hid existing fragment");
-    }
-
-    Optional<Fragment> speakEasyFragment = speakEasyCallManager.getSpeakEasyFragment(call);
-    if (speakEasyFragment.isPresent()) {
-      transaction.add(R.id.main, speakEasyFragment.get(), Tags.SPEAK_EASY_SCREEN);
-      didShowSpeakEasyScreen = true;
-      lastShownSpeakEasyScreenUniqueCallid = call.getUniqueCallId();
-      LogUtil.i(
-          "InCallActivity.showSpeakEasyFragment",
-          "set fragment for call %s",
-          lastShownSpeakEasyScreenUniqueCallid);
-      return true;
-    }
-    return false;
-  }
-
-  private Fragment getSpeakEasyScreen() {
-    return getSupportFragmentManager().findFragmentByTag(Tags.SPEAK_EASY_SCREEN);
-  }
-
-  private boolean hideSpeakEasyFragment(FragmentTransaction transaction) {
-    if (!didShowSpeakEasyScreen) {
-      return false;
-    }
-
-    Fragment speakEasyFragment = getSpeakEasyScreen();
-
-    if (speakEasyFragment != null) {
-      transaction.remove(speakEasyFragment);
-      didShowSpeakEasyScreen = false;
-      return true;
-    }
-    return false;
-  }
-
-  @VisibleForTesting
-  public void setSpeakEasyCallManager(SpeakEasyCallManager speakEasyCallManager) {
-    this.speakEasyCallManager = speakEasyCallManager;
-  }
-
-  @Nullable
-  public SpeakEasyCallManager getSpeakEasyCallManager() {
-    if (this.speakEasyCallManager == null) {
-      this.speakEasyCallManager = InCallPresenter.getInstance().getSpeakEasyCallManager();
-    }
-    return speakEasyCallManager;
-  }
-
-  private ShouldShowUiResult getShouldShowSpeakEasyUi() {
-    SpeakEasyCallManager speakEasyCallManager = getSpeakEasyCallManager();
-
-    if (speakEasyCallManager == null) {
-      return new ShouldShowUiResult(false, null);
-    }
-
-    DialerCall call =
-        CallList.getInstance().getIncomingCall() != null
-            ? CallList.getInstance().getIncomingCall()
-            : CallList.getInstance().getActiveCall();
-
-    if (call == null) {
-      // This is a special case where the first call is not automatically resumed
-      // after the second active call is remotely disconnected.
-      DialerCall backgroundCall = CallList.getInstance().getBackgroundCall();
-      if (backgroundCall != null && backgroundCall.isSpeakEasyCall()) {
-        LogUtil.i("InCallActivity.getShouldShowSpeakEasyUi", "taking call off hold");
-
-        backgroundCall.unhold();
-        return new ShouldShowUiResult(true, backgroundCall);
-      }
-
-      return new ShouldShowUiResult(false, call);
-    }
-
-    if (!call.isSpeakEasyCall() || !call.isSpeakEasyEligible()) {
-      return new ShouldShowUiResult(false, call);
-    }
-
-    Optional<Fragment> speakEasyFragment = speakEasyCallManager.getSpeakEasyFragment(call);
-
-    if (!speakEasyFragment.isPresent()) {
-      return new ShouldShowUiResult(false, call);
-    }
-    return new ShouldShowUiResult(true, call);
-  }
-
   private ShouldShowUiResult getShouldShowAnswerUi() {
     DialerCall call = CallList.getInstance().getIncomingCall();
-    if (call != null && !call.isSpeakEasyCall()) {
+    if (call != null) {
       LogUtil.i("InCallActivity.getShouldShowAnswerUi", "found incoming call");
       return new ShouldShowUiResult(true, call);
     }
@@ -1494,12 +1357,8 @@
             isVideoUpgradeRequest,
             call.getVideoTech().isSelfManagedCamera(),
             shouldAllowAnswerAndRelease(call),
-            CallList.getInstance().getBackgroundCall() != null,
-            getSpeakEasyCallManager().isAvailable(getApplicationContext())
-                && call.isSpeakEasyEligible());
+            CallList.getInstance().getBackgroundCall() != null);
     transaction.add(R.id.main, answerScreen.getAnswerScreenFragment(), Tags.ANSWER_SCREEN);
-
-    Logger.get(this).logScreenView(ScreenEvent.Type.INCOMING_CALL, this);
     didShowAnswerScreen = true;
     return true;
   }
@@ -1518,12 +1377,6 @@
       LogUtil.i("InCallActivity.shouldAllowAnswerAndRelease", "video call");
       return false;
     }
-    if (!ConfigProviderComponent.get(this)
-        .getConfigProvider()
-        .getBoolean(ConfigNames.ANSWER_AND_RELEASE_ENABLED, true)) {
-      LogUtil.i("InCallActivity.shouldAllowAnswerAndRelease", "disabled by config");
-      return false;
-    }
 
     return true;
   }
@@ -1547,7 +1400,6 @@
     }
     InCallScreen inCallScreen = InCallBindings.createInCallScreen();
     transaction.add(R.id.main, inCallScreen.getInCallScreenFragment(), Tags.IN_CALL_SCREEN);
-    Logger.get(this).logScreenView(ScreenEvent.Type.INCALL, this);
     didShowInCallScreen = true;
     return true;
   }
@@ -1574,7 +1426,6 @@
     }
     RttCallScreen rttCallScreen = RttBindings.createRttCallScreen(call.getId());
     transaction.add(R.id.main, rttCallScreen.getRttCallScreenFragment(), Tags.RTT_CALL_SCREEN);
-    Logger.get(this).logScreenView(ScreenEvent.Type.INCALL, this);
     didShowRttCallScreen = true;
     // In some cases such as VZW, RTT request will be automatically accepted by modem. So the dialog
     // won't make any sense and should be dismissed if it's already switched to RTT.
@@ -1617,8 +1468,6 @@
             call.getId(), call.getVideoTech().shouldUseSurfaceView());
     transaction.add(
         R.id.main, videoCallScreen.getVideoCallScreenFragment(), Tags.VIDEO_CALL_SCREEN);
-
-    Logger.get(this).logScreenView(ScreenEvent.Type.INCALL, this);
     didShowVideoCallScreen = true;
     return true;
   }
@@ -1721,7 +1570,6 @@
     static final String DID_SHOW_IN_CALL_SCREEN = "did_show_in_call_screen";
     static final String DID_SHOW_VIDEO_CALL_SCREEN = "did_show_video_call_screen";
     static final String DID_SHOW_RTT_CALL_SCREEN = "did_show_rtt_call_screen";
-    static final String DID_SHOW_SPEAK_EASY_SCREEN = "did_show_speak_easy_screen";
   }
 
   /** Request codes for pending intents. */
@@ -1740,14 +1588,9 @@
     static final String VIDEO_CALL_SCREEN = "tag_video_call_screen";
     static final String RTT_CALL_SCREEN = "tag_rtt_call_screen";
     static final String POST_CHAR_DIALOG_FRAGMENT = "tag_post_char_dialog_fragment";
-    static final String SPEAK_EASY_SCREEN = "tag_speak_easy_screen";
     static final String RTT_REQUEST_DIALOG = "tag_rtt_request_dialog";
   }
 
-  private static final class ConfigNames {
-    static final String ANSWER_AND_RELEASE_ENABLED = "answer_and_release_enabled";
-  }
-
   private static final class SelectPhoneAccountListener
       extends SelectPhoneAccountDialogFragment.SelectPhoneAccountListener {
     private static final String TAG = SelectPhoneAccountListener.class.getCanonicalName();
diff --git a/java/com/android/incallui/InCallCameraManager.java b/java/com/android/incallui/InCallCameraManager.java
index b5a8f91..8bb7060 100644
--- a/java/com/android/incallui/InCallCameraManager.java
+++ b/java/com/android/incallui/InCallCameraManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
 import android.hardware.camera2.CameraAccessException;
 import android.hardware.camera2.CameraCharacteristics;
 import android.hardware.camera2.CameraManager;
+
 import java.util.Collections;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -28,7 +30,7 @@
 public class InCallCameraManager {
 
   private final Set<Listener> cameraSelectionListeners =
-      Collections.newSetFromMap(new ConcurrentHashMap<Listener, Boolean>(8, 0.9f, 1));
+      Collections.newSetFromMap(new ConcurrentHashMap<>(8, 0.9f, 1));
   /** The camera ID for the front facing camera. */
   private String frontFacingCameraId;
   /** The camera ID for the rear facing camera. */
@@ -41,7 +43,7 @@
    */
   private boolean isInitialized = false;
   /** The context. */
-  private Context context;
+  private final Context context;
 
   /**
    * Initializes the InCall CameraManager.
diff --git a/java/com/android/incallui/InCallDndHandler.java b/java/com/android/incallui/InCallDndHandler.java
new file mode 100644
index 0000000..5ea6eed
--- /dev/null
+++ b/java/com/android/incallui/InCallDndHandler.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2018-2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.incallui;
+
+import android.app.NotificationManager;
+import android.content.Context;
+import android.content.SharedPreferences;
+
+import androidx.preference.PreferenceManager;
+
+import com.android.incallui.InCallPresenter.InCallState;
+import com.android.incallui.call.CallList;
+import com.android.incallui.call.DialerCall;
+import com.android.incallui.call.state.DialerCallState;
+
+public class InCallDndHandler implements InCallPresenter.InCallStateListener {
+
+  private static final String KEY_ENABLE_DND = "incall_enable_dnd";
+
+  private final SharedPreferences prefs;
+  private DialerCall activeCall;
+  private final NotificationManager notificationManager;
+  private final int userSelectedDndMode;
+
+  public InCallDndHandler(Context context) {
+    prefs = PreferenceManager.getDefaultSharedPreferences(
+                context.createDeviceProtectedStorageContext());
+    notificationManager = context.getSystemService(NotificationManager.class);
+
+    // Save the user's Do Not Disturb mode so that it can be restored when the call ends
+    userSelectedDndMode = notificationManager.getCurrentInterruptionFilter();
+  }
+
+  @Override
+  public void onStateChange(InCallState oldState, InCallState newState, CallList callList) {
+    DialerCall activeCall = callList.getActiveCall();
+
+    if (activeCall != null && this.activeCall == null) {
+      Log.d(this, "Transition to active call " + activeCall);
+      handleDndState(activeCall);
+      this.activeCall = activeCall;
+    } else if (activeCall == null && this.activeCall != null) {
+      Log.d(this, "Transition from active call " + this.activeCall);
+      handleDndState(this.activeCall);
+      this.activeCall = null;
+    }
+  }
+
+  private void handleDndState(DialerCall call) {
+    if (!prefs.getBoolean(KEY_ENABLE_DND, false)) {
+      return;
+    }
+    if (DialerCallState.isConnectingOrConnected(call.getState())) {
+      Log.d(this, "Enabling Do Not Disturb mode");
+      setDoNotDisturbMode(NotificationManager.INTERRUPTION_FILTER_NONE);
+    } else {
+      Log.d(this, "Restoring previous Do Not Disturb mode");
+      setDoNotDisturbMode(userSelectedDndMode);
+    }
+  }
+
+  private void setDoNotDisturbMode(int newMode) {
+    if (notificationManager.isNotificationPolicyAccessGranted()) {
+      notificationManager.setInterruptionFilter(newMode);
+    } else {
+      Log.e(this, "Failed to set Do Not Disturb mode " + newMode + " due to lack of permissions");
+    }
+  }
+}
diff --git a/java/com/android/incallui/InCallOrientationEventListener.java b/java/com/android/incallui/InCallOrientationEventListener.java
index 854bdd1..8d5d072 100644
--- a/java/com/android/incallui/InCallOrientationEventListener.java
+++ b/java/com/android/incallui/InCallOrientationEventListener.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project 
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,9 +19,12 @@
 
 import android.content.Context;
 import android.content.pm.ActivityInfo;
-import android.support.annotation.IntDef;
 import android.view.OrientationEventListener;
+
+import androidx.annotation.IntDef;
+
 import com.android.dialer.common.LogUtil;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index 17af756..e3b4904 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,48 +17,42 @@
 
 package com.android.incallui;
 
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Point;
+import android.net.Uri;
 import android.os.Bundle;
-import android.os.Handler;
 import android.os.Trace;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.os.UserManagerCompat;
+import android.provider.BlockedNumberContract;
+import android.telecom.Call;
 import android.telecom.Call.Details;
 import android.telecom.CallAudioState;
 import android.telecom.DisconnectCause;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
+import android.telecom.PhoneAccountSuggestion;
 import android.telecom.TelecomManager;
 import android.telecom.VideoProfile;
-import android.telephony.PhoneStateListener;
+import android.telephony.PhoneNumberUtils;
 import android.telephony.TelephonyManager;
 import android.util.ArraySet;
 import android.view.Window;
 import android.view.WindowManager;
 import android.widget.Toast;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.contacts.common.compat.CallCompat;
-import com.android.dialer.CallConfiguration;
-import com.android.dialer.Mode;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener;
-import com.android.dialer.blocking.FilteredNumberCompat;
-import com.android.dialer.blocking.FilteredNumbersUtil;
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.location.GeoUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.InteractionEvent;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.postcall.PostCall;
-import com.android.dialer.telecom.TelecomCallUtil;
 import com.android.dialer.telecom.TelecomUtil;
+import com.android.dialer.util.EmergencyCallUtil;
 import com.android.dialer.util.TouchPointManager;
 import com.android.incallui.InCallOrientationEventListener.ScreenOrientation;
 import com.android.incallui.answerproximitysensor.PseudoScreenState;
@@ -69,23 +64,19 @@
 import com.android.incallui.call.state.DialerCallState;
 import com.android.incallui.disconnectdialog.DisconnectMessage;
 import com.android.incallui.incalluilock.InCallUiLock;
-import com.android.incallui.latencyreport.LatencyReport;
-import com.android.incallui.legacyblocking.BlockedNumberContentObserver;
 import com.android.incallui.spam.SpamCallListListener;
-import com.android.incallui.speakeasy.SpeakEasyCallManager;
 import com.android.incallui.telecomeventui.InternationalCallOnWifiDialogActivity;
 import com.android.incallui.telecomeventui.InternationalCallOnWifiDialogFragment;
 import com.android.incallui.videosurface.bindings.VideoSurfaceBindings;
 import com.android.incallui.videosurface.protocol.VideoSurfaceTexture;
 import com.android.incallui.videotech.utils.VideoUtils;
-import com.google.protobuf.InvalidProtocolBufferException;
+
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * Takes updates from the CallList and notifies the InCallActivity (UI) of the changes. Responsible
@@ -95,11 +86,6 @@
  * of a state machine at this point. Consider renaming.
  */
 public class InCallPresenter implements CallList.Listener, AudioModeProvider.AudioModeListener {
-  private static final String PIXEL2017_SYSTEM_FEATURE =
-      "com.google.android.feature.PIXEL_2017_EXPERIENCE";
-  private static final String CALL_CONFIGURATION_EXTRA = "call_configuration";
-
-  private static final long BLOCK_QUERY_TIMEOUT_MS = 1000;
 
   private static final Bundle EMPTY_EXTRAS = new Bundle();
 
@@ -110,36 +96,26 @@
    * resizing, 1 means we only expect a single thread to access the map so make only a single shard
    */
   private final Set<InCallStateListener> listeners =
-      Collections.newSetFromMap(new ConcurrentHashMap<InCallStateListener, Boolean>(8, 0.9f, 1));
+      Collections.newSetFromMap(new ConcurrentHashMap<>(8, 0.9f, 1));
 
   private final List<IncomingCallListener> incomingCallListeners = new CopyOnWriteArrayList<>();
   private final Set<InCallDetailsListener> detailsListeners =
-      Collections.newSetFromMap(new ConcurrentHashMap<InCallDetailsListener, Boolean>(8, 0.9f, 1));
+      Collections.newSetFromMap(new ConcurrentHashMap<>(8, 0.9f, 1));
   private final Set<CanAddCallListener> canAddCallListeners =
-      Collections.newSetFromMap(new ConcurrentHashMap<CanAddCallListener, Boolean>(8, 0.9f, 1));
+      Collections.newSetFromMap(new ConcurrentHashMap<>(8, 0.9f, 1));
   private final Set<InCallUiListener> inCallUiListeners =
-      Collections.newSetFromMap(new ConcurrentHashMap<InCallUiListener, Boolean>(8, 0.9f, 1));
+      Collections.newSetFromMap(new ConcurrentHashMap<>(8, 0.9f, 1));
   private final Set<InCallOrientationListener> orientationListeners =
-      Collections.newSetFromMap(
-          new ConcurrentHashMap<InCallOrientationListener, Boolean>(8, 0.9f, 1));
+      Collections.newSetFromMap(new ConcurrentHashMap<>(8, 0.9f, 1));
   private final Set<InCallEventListener> inCallEventListeners =
-      Collections.newSetFromMap(new ConcurrentHashMap<InCallEventListener, Boolean>(8, 0.9f, 1));
+      Collections.newSetFromMap(new ConcurrentHashMap<>(8, 0.9f, 1));
 
   private StatusBarNotifier statusBarNotifier;
   private ExternalCallNotifier externalCallNotifier;
+  private InCallVibrationHandler vibrationHandler;
+  private InCallDndHandler dndHandler;
   private ContactInfoCache contactInfoCache;
   private Context context;
-  private final OnCheckBlockedListener onCheckBlockedListener =
-      new OnCheckBlockedListener() {
-        @Override
-        public void onCheckComplete(final Integer id) {
-          if (id != null && id != FilteredNumberAsyncQueryHandler.INVALID_ID) {
-            // Silence the ringer now to prevent ringing and vibration before the call is
-            // terminated when Telecom attempts to add it.
-            TelecomUtil.silenceRinger(context);
-          }
-        }
-      };
   private CallList callList;
   private ExternalCallList externalCallList;
   private InCallActivity inCallActivity;
@@ -199,7 +175,6 @@
   private final PseudoScreenState pseudoScreenState = new PseudoScreenState();
   private boolean serviceConnected;
   private InCallCameraManager inCallCameraManager;
-  private FilteredNumberAsyncQueryHandler filteredQueryHandler;
   private CallList.Listener spamCallListListener;
   private CallList.Listener activeCallsListener;
   /** Whether or not we are currently bound and waiting for Telecom to send us a new call. */
@@ -209,22 +184,6 @@
 
   private boolean screenTimeoutEnabled = true;
 
-  private PhoneStateListener phoneStateListener =
-      new PhoneStateListener() {
-        @Override
-        public void onCallStateChanged(int state, String incomingNumber) {
-          if (state == TelephonyManager.CALL_STATE_RINGING) {
-            if (FilteredNumbersUtil.hasRecentEmergencyCall(context)) {
-              return;
-            }
-            // Check if the number is blocked, to silence the ringer.
-            String countryIso = GeoUtil.getCurrentCountryIso(context);
-            filteredQueryHandler.isBlockedNumber(
-                onCheckBlockedListener, incomingNumber, countryIso);
-          }
-        }
-      };
-
   /** Whether or not InCallService is bound to Telecom. */
   private boolean serviceBound = false;
 
@@ -238,16 +197,13 @@
 
   private boolean awaitingCallListUpdate = false;
 
-  private ExternalCallList.ExternalCallListener externalCallListener =
+  private final ExternalCallList.ExternalCallListener externalCallListener =
       new ExternalCallList.ExternalCallListener() {
 
         @Override
         public void onExternalCallPulled(android.telecom.Call call) {
-          // Note: keep this code in sync with InCallPresenter#onCallAdded
-          LatencyReport latencyReport = new LatencyReport(call);
-          latencyReport.onCallBlockingDone();
           // Note: External calls do not require spam checking.
-          callList.onCallAdded(context, call, latencyReport);
+          callList.onCallAdded(context, call);
           call.registerCallback(callCallback);
         }
 
@@ -271,13 +227,10 @@
   private VideoSurfaceTexture localVideoSurfaceTexture;
   private VideoSurfaceTexture remoteVideoSurfaceTexture;
 
-  private SpeakEasyCallManager speakEasyCallManager;
-
   private boolean addCallClicked = false;
   private boolean automaticallyMutedByAddCall = false;
 
   /** Inaccessible constructor. Must use getRunningInstance() to get this singleton. */
-  @VisibleForTesting
   InCallPresenter() {}
 
   public static synchronized InCallPresenter getInstance() {
@@ -289,11 +242,6 @@
     return inCallPresenter;
   }
 
-  @VisibleForTesting
-  public static synchronized void setInstanceForTesting(InCallPresenter inCallPresenter) {
-    InCallPresenter.inCallPresenter = inCallPresenter;
-  }
-
   /**
    * Determines whether or not a call has no valid phone accounts that can be used to make the call
    * with. Emergency calls do not require a phone account.
@@ -311,8 +259,9 @@
         extras = EMPTY_EXTRAS;
       }
 
-      final List<PhoneAccountHandle> phoneAccountHandles =
-          extras.getParcelableArrayList(android.telecom.Call.AVAILABLE_PHONE_ACCOUNTS);
+      final List<PhoneAccountSuggestion> phoneAccountHandles =
+          extras.getParcelableArrayList(android.telecom.Call.EXTRA_SUGGESTED_PHONE_ACCOUNTS,
+                  PhoneAccountSuggestion.class);
 
       if ((call.getAccountHandle() == null
           && (phoneAccountHandles == null || phoneAccountHandles.isEmpty()))) {
@@ -339,9 +288,7 @@
       StatusBarNotifier statusBarNotifier,
       ExternalCallNotifier externalCallNotifier,
       ContactInfoCache contactInfoCache,
-      ProximitySensor proximitySensor,
-      FilteredNumberAsyncQueryHandler filteredNumberQueryHandler,
-      @NonNull SpeakEasyCallManager speakEasyCallManager) {
+      ProximitySensor proximitySensor) {
     Trace.beginSection("InCallPresenter.setUp");
     if (serviceConnected) {
       LogUtil.i("InCallPresenter.setUp", "New service connection replacing existing one.");
@@ -360,9 +307,12 @@
     this.statusBarNotifier = statusBarNotifier;
     this.externalCallNotifier = externalCallNotifier;
     addListener(this.statusBarNotifier);
-    EnrichedCallComponent.get(this.context)
-        .getEnrichedCallManager()
-        .registerStateChangedListener(this.statusBarNotifier);
+
+    vibrationHandler = new InCallVibrationHandler(context);
+    addListener(vibrationHandler);
+
+    dndHandler = new InCallDndHandler(context);
+    addListener(dndHandler);
 
     this.proximitySensor = proximitySensor;
     addListener(this.proximitySensor);
@@ -393,12 +343,6 @@
 
     VideoPauseController.getInstance().setUp(this);
 
-    filteredQueryHandler = filteredNumberQueryHandler;
-    this.speakEasyCallManager = speakEasyCallManager;
-    this.context
-        .getSystemService(TelephonyManager.class)
-        .listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
-
     AudioModeProvider.getInstance().addListener(this);
 
     // Add listener to notify Telephony process when the incoming call screen is started or
@@ -413,66 +357,6 @@
   }
 
   /**
-   * Return whether we should start call in bubble mode and not show InCallActivity. The call mode
-   * should be set in CallConfiguration in EXTRA_OUTGOING_CALL_EXTRAS when starting a call intent.
-   */
-  public boolean shouldStartInBubbleMode() {
-    if (!ReturnToCallController.isEnabled(context)) {
-      return false;
-    }
-
-    // We only start in Bubble mode for outgoing call
-    DialerCall dialerCall = callList.getPendingOutgoingCall();
-    if (dialerCall == null) {
-      dialerCall = callList.getOutgoingCall();
-    }
-    // Outgoing call can be disconnected and reason will be shown in toast
-    if (dialerCall == null) {
-      dialerCall = callList.getDisconnectedCall();
-    }
-    if (dialerCall == null) {
-      return false;
-    }
-    if (dialerCall.isEmergencyCall()) {
-      return false;
-    }
-
-    Bundle extras = dialerCall.getIntentExtras();
-    boolean result = shouldStartInBubbleModeWithExtras(extras);
-    if (result) {
-      Logger.get(context)
-          .logCallImpression(
-              DialerImpression.Type.START_CALL_IN_BUBBLE_MODE,
-              dialerCall.getUniqueCallId(),
-              dialerCall.getTimeAddedMs());
-    }
-    return result;
-  }
-
-  private boolean shouldStartInBubbleModeWithExtras(Bundle outgoingExtras) {
-    if (!ReturnToCallController.isEnabled(context)) {
-      return false;
-    }
-
-    if (outgoingExtras == null) {
-      return false;
-    }
-    byte[] callConfigurationByteArray = outgoingExtras.getByteArray(CALL_CONFIGURATION_EXTRA);
-    if (callConfigurationByteArray == null) {
-      return false;
-    }
-    try {
-      CallConfiguration callConfiguration = CallConfiguration.parseFrom(callConfigurationByteArray);
-      LogUtil.i(
-          "InCallPresenter.shouldStartInBubbleMode",
-          "call mode: " + callConfiguration.getCallMode());
-      return callConfiguration.getCallMode() == Mode.BUBBLE;
-    } catch (InvalidProtocolBufferException e) {
-      return false;
-    }
-  }
-
-  /**
    * Called when the telephony service has disconnected from us. This will happen when there are no
    * more active calls. However, we may still want to continue showing the UI for certain cases like
    * showing "Call Ended". What we really want is to wait for the activity and the service to both
@@ -485,10 +369,6 @@
 
     serviceConnected = false;
 
-    context
-        .getSystemService(TelephonyManager.class)
-        .listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
-
     attemptCleanup();
     VideoPauseController.getInstance().tearDown();
     AudioModeProvider.getInstance().removeListener(this);
@@ -604,10 +484,6 @@
     Trace.endSection();
   }
 
-  public SpeakEasyCallManager getSpeakEasyCallManager() {
-    return this.speakEasyCallManager;
-  }
-
   public void setManageConferenceActivity(
       @Nullable ManageConferenceActivity manageConferenceActivity) {
     this.manageConferenceActivity = manageConferenceActivity;
@@ -620,141 +496,40 @@
 
   public void onCallAdded(final android.telecom.Call call) {
     Trace.beginSection("InCallPresenter.onCallAdded");
-    LatencyReport latencyReport = new LatencyReport(call);
-    if (shouldAttemptBlocking(call)) {
-      maybeBlockCall(call, latencyReport);
+    Call.Details callDetails = call.getDetails();
+    if (callDetails.hasProperty(CallCompat.Details.PROPERTY_IS_EXTERNAL_CALL)) {
+      externalCallList.onCallAdded(call);
     } else {
-      if (call.getDetails().hasProperty(CallCompat.Details.PROPERTY_IS_EXTERNAL_CALL)) {
-        externalCallList.onCallAdded(call);
-      } else {
-        latencyReport.onCallBlockingDone();
-        callList.onCallAdded(context, call, latencyReport);
+      callList.onCallAdded(context, call);
+    }
+
+    if (callDetails.getState() == Call.STATE_RINGING) {
+      if (EmergencyCallUtil.hasRecentEmergencyCall(context)) {
+        return;
+      }
+
+      TelephonyManager tm = context.getSystemService(TelephonyManager.class);
+      String countryIso = tm.getSimCountryIso().toUpperCase();
+      Uri handle = callDetails.getHandle();
+      if (handle != null) {
+        String incomingNumber = handle.getSchemeSpecificPart();
+
+        incomingNumber = PhoneNumberUtils.formatNumberToE164(incomingNumber, countryIso);
+
+        // Check if the number is blocked, to silence the ringer.
+        if (BlockedNumberContract.canCurrentUserBlockNumbers(context) &&
+                BlockedNumberContract.isBlocked(context, incomingNumber)) {
+          TelecomUtil.silenceRinger(context);
+        }
       }
     }
 
     // Since a call has been added we are no longer waiting for Telecom to send us a call.
     setBoundAndWaitingForOutgoingCall(false, null);
     call.registerCallback(callCallback);
-    // TODO(maxwelb): Return the future in recordPhoneLookupInfo and propagate.
-    PhoneLookupHistoryRecorder.recordPhoneLookupInfo(context.getApplicationContext(), call);
     Trace.endSection();
   }
 
-  private boolean shouldAttemptBlocking(android.telecom.Call call) {
-    if (call.getState() != android.telecom.Call.STATE_RINGING) {
-      return false;
-    }
-    if (!UserManagerCompat.isUserUnlocked(context)) {
-      LogUtil.i(
-          "InCallPresenter.shouldAttemptBlocking",
-          "not attempting to block incoming call because user is locked");
-      return false;
-    }
-    if (TelecomCallUtil.isEmergencyCall(call)) {
-      LogUtil.i(
-          "InCallPresenter.shouldAttemptBlocking",
-          "Not attempting to block incoming emergency call");
-      return false;
-    }
-    if (FilteredNumbersUtil.hasRecentEmergencyCall(context)) {
-      LogUtil.i(
-          "InCallPresenter.shouldAttemptBlocking",
-          "Not attempting to block incoming call due to recent emergency call");
-      return false;
-    }
-    if (call.getDetails().hasProperty(CallCompat.Details.PROPERTY_IS_EXTERNAL_CALL)) {
-      return false;
-    }
-    if (FilteredNumberCompat.useNewFiltering(context)) {
-      LogUtil.i(
-          "InCallPresenter.shouldAttemptBlocking",
-          "not attempting to block incoming call because framework blocking is in use");
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * Checks whether a call should be blocked, and blocks it if so. Otherwise, it adds the call to
-   * the CallList so it can proceed as normal. There is a timeout, so if the function for checking
-   * whether a function is blocked does not return in a reasonable time, we proceed with adding the
-   * call anyways.
-   */
-  private void maybeBlockCall(final android.telecom.Call call, final LatencyReport latencyReport) {
-    final String countryIso = GeoUtil.getCurrentCountryIso(context);
-    final String number = TelecomCallUtil.getNumber(call);
-    final long timeAdded = System.currentTimeMillis();
-
-    // Though AtomicBoolean's can be scary, don't fear, as in this case it is only used on the
-    // main UI thread. It is needed so we can change its value within different scopes, since
-    // that cannot be done with a final boolean.
-    final AtomicBoolean hasTimedOut = new AtomicBoolean(false);
-
-    final Handler handler = new Handler();
-
-    // Proceed if the query is slow; the call may still be blocked after the query returns.
-    final Runnable runnable =
-        new Runnable() {
-          @Override
-          public void run() {
-            hasTimedOut.set(true);
-            latencyReport.onCallBlockingDone();
-            callList.onCallAdded(context, call, latencyReport);
-          }
-        };
-    handler.postDelayed(runnable, BLOCK_QUERY_TIMEOUT_MS);
-
-    OnCheckBlockedListener onCheckBlockedListener =
-        new OnCheckBlockedListener() {
-          @Override
-          public void onCheckComplete(final Integer id) {
-            if (isReadyForTearDown()) {
-              LogUtil.i("InCallPresenter.onCheckComplete", "torn down, not adding call");
-              return;
-            }
-            if (!hasTimedOut.get()) {
-              handler.removeCallbacks(runnable);
-            }
-            if (id == null) {
-              if (!hasTimedOut.get()) {
-                latencyReport.onCallBlockingDone();
-                callList.onCallAdded(context, call, latencyReport);
-              }
-            } else if (id == FilteredNumberAsyncQueryHandler.INVALID_ID) {
-              LogUtil.d(
-                  "InCallPresenter.onCheckComplete", "invalid number, skipping block checking");
-              if (!hasTimedOut.get()) {
-                handler.removeCallbacks(runnable);
-
-                latencyReport.onCallBlockingDone();
-                callList.onCallAdded(context, call, latencyReport);
-              }
-            } else {
-              LogUtil.i(
-                  "InCallPresenter.onCheckComplete", "Rejecting incoming call from blocked number");
-              call.reject(false, null);
-              Logger.get(context).logInteraction(InteractionEvent.Type.CALL_BLOCKED);
-
-              /*
-               * If mContext is null, then the InCallPresenter was torn down before the
-               * block check had a chance to complete. The context is no longer valid, so
-               * don't attempt to remove the call log entry.
-               */
-              if (context == null) {
-                return;
-              }
-              // Register observer to update the call log.
-              // BlockedNumberContentObserver will unregister after successful log or timeout.
-              BlockedNumberContentObserver contentObserver =
-                  new BlockedNumberContentObserver(context, new Handler(), number, timeAdded);
-              contentObserver.register();
-            }
-          }
-        };
-
-    filteredQueryHandler.isBlockedNumber(onCheckBlockedListener, number, countryIso);
-  }
-
   public void onCallRemoved(android.telecom.Call call) {
     if (call.getDetails().hasProperty(CallCompat.Details.PROPERTY_IS_EXTERNAL_CALL)) {
       externalCallList.onCallRemoved(call);
@@ -996,13 +771,6 @@
   }
 
   @Override
-  public void onSpeakEasyStateChange() {
-    if (inCallActivity != null) {
-      inCallActivity.onPrimaryCallStateChanged();
-    }
-  }
-
-  @Override
   public void onSessionModificationStateChange(DialerCall call) {
     int newState = call.getVideoTech().getSessionModificationState();
     LogUtil.i("InCallPresenter.onSessionModificationStateChange", "state: %d", newState);
@@ -1034,7 +802,7 @@
     }
 
     if (call.isEmergencyCall()) {
-      FilteredNumbersUtil.recordLastEmergencyCallTime(context);
+      EmergencyCallUtil.recordLastEmergencyCallTime(context);
     }
 
     if (!callList.hasLiveCall()
@@ -1091,7 +859,6 @@
         "InCallPresenter.setBoundAndWaitingForOutgoingCall",
         "setBoundAndWaitingForOutgoingCall: " + isBound);
     boundAndWaitingForOutgoingCall = isBound;
-    themeColorManager.setPendingPhoneAccountHandle(handle);
     if (isBound && inCallState == InCallState.NO_CALLS) {
       inCallState = InCallState.PENDING_OUTGOING;
     }
@@ -1567,7 +1334,7 @@
       inCallActivity.dismissPendingDialogs();
     }
 
-    if ((showCallUi || showAccountPicker) && !shouldStartInBubbleMode()) {
+    if (showCallUi || showAccountPicker) {
       LogUtil.i("InCallPresenter.startOrFinishUi", "Start in call UI");
       showInCall(false /* showDialpad */, !showAccountPicker /* newOutgoingCall */);
     } else if (newState == InCallState.NO_CALLS) {
@@ -1593,10 +1360,11 @@
       extras = new Bundle();
     }
 
-    final List<PhoneAccountHandle> phoneAccountHandles =
-        extras.getParcelableArrayList(android.telecom.Call.AVAILABLE_PHONE_ACCOUNTS);
+    final List<PhoneAccountSuggestion> phoneAccountSuggestions =
+        extras.getParcelableArrayList(Call.EXTRA_SUGGESTED_PHONE_ACCOUNTS,
+                PhoneAccountSuggestion.class);
 
-    if (phoneAccountHandles == null || phoneAccountHandles.isEmpty()) {
+    if (phoneAccountSuggestions == null || phoneAccountSuggestions.isEmpty()) {
       String scheme = call.getHandle().getScheme();
       final String errorMsg =
           PhoneAccount.SCHEME_TEL.equals(scheme)
@@ -1643,9 +1411,6 @@
 
       if (statusBarNotifier != null) {
         removeListener(statusBarNotifier);
-        EnrichedCallComponent.get(context)
-            .getEnrichedCallManager()
-            .unregisterStateChangedListener(statusBarNotifier);
       }
 
       if (externalCallNotifier != null && externalCallList != null) {
@@ -1653,6 +1418,16 @@
       }
       statusBarNotifier = null;
 
+      if (vibrationHandler != null) {
+        removeListener(vibrationHandler);
+      }
+      vibrationHandler = null;
+
+      if (dndHandler != null) {
+        removeListener(dndHandler);
+      }
+      dndHandler = null;
+
       if (callList != null) {
         callList.removeListener(this);
         callList.removeListener(spamCallListListener);
@@ -1707,23 +1482,18 @@
       return;
     }
 
-    if (extras.containsKey(android.telecom.Call.AVAILABLE_PHONE_ACCOUNTS)) {
+    if (extras.containsKey(Call.EXTRA_SUGGESTED_PHONE_ACCOUNTS)) {
       // Account selection dialog will show up so don't show the animation.
       return;
     }
 
     final PhoneAccountHandle accountHandle =
-        intent.getParcelableExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE);
-    final Point touchPoint = extras.getParcelable(TouchPointManager.TOUCH_POINT);
+            intent.getParcelableExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE,
+                    PhoneAccountHandle.class);
+    final Point touchPoint = extras.getParcelable(TouchPointManager.TOUCH_POINT, Point.class);
 
     setBoundAndWaitingForOutgoingCall(true, accountHandle);
 
-    if (shouldStartInBubbleModeWithExtras(extras)) {
-      LogUtil.i("InCallPresenter.maybeStartRevealAnimation", "shouldStartInBubbleMode");
-      // Show bubble instead of in call UI
-      return;
-    }
-
     final Intent activityIntent =
         InCallActivity.getIntent(context, false, true, false /* forFullScreen */);
     activityIntent.putExtra(TouchPointManager.TOUCH_POINT, touchPoint);
@@ -1839,11 +1609,6 @@
     return themeColorManager;
   }
 
-  @VisibleForTesting
-  public void setThemeColorManager(ThemeColorManager themeColorManager) {
-    this.themeColorManager = themeColorManager;
-  }
-
   /** Called when the foreground call changes. */
   public void onForegroundCallChanged(DialerCall newForegroundCall) {
     themeColorManager.onForegroundCallChanged(context, newForegroundCall);
@@ -1874,22 +1639,14 @@
 
   VideoSurfaceTexture getLocalVideoSurfaceTexture() {
     if (localVideoSurfaceTexture == null) {
-      boolean isPixel2017 = false;
-      if (context != null) {
-        isPixel2017 = context.getPackageManager().hasSystemFeature(PIXEL2017_SYSTEM_FEATURE);
-      }
-      localVideoSurfaceTexture = VideoSurfaceBindings.createLocalVideoSurfaceTexture(isPixel2017);
+      localVideoSurfaceTexture = VideoSurfaceBindings.createLocalVideoSurfaceTexture();
     }
     return localVideoSurfaceTexture;
   }
 
   VideoSurfaceTexture getRemoteVideoSurfaceTexture() {
     if (remoteVideoSurfaceTexture == null) {
-      boolean isPixel2017 = false;
-      if (context != null) {
-        isPixel2017 = context.getPackageManager().hasSystemFeature(PIXEL2017_SYSTEM_FEATURE);
-      }
-      remoteVideoSurfaceTexture = VideoSurfaceBindings.createRemoteVideoSurfaceTexture(isPixel2017);
+      remoteVideoSurfaceTexture = VideoSurfaceBindings.createRemoteVideoSurfaceTexture();
     }
     return remoteVideoSurfaceTexture;
   }
@@ -1905,6 +1662,7 @@
     }
   }
 
+  @SuppressLint("MissingPermission")
   @Override
   public void onAudioStateChanged(CallAudioState audioState) {
     if (statusBarNotifier != null) {
diff --git a/java/com/android/incallui/InCallServiceImpl.java b/java/com/android/incallui/InCallServiceImpl.java
index b9d0ecc..5d0df24 100644
--- a/java/com/android/incallui/InCallServiceImpl.java
+++ b/java/com/android/incallui/InCallServiceImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,14 +24,12 @@
 import android.telecom.Call;
 import android.telecom.CallAudioState;
 import android.telecom.InCallService;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.feedback.FeedbackComponent;
+
 import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.call.CallList;
+import com.android.incallui.call.CallRecorder;
 import com.android.incallui.call.ExternalCallList;
 import com.android.incallui.call.TelecomAdapter;
-import com.android.incallui.speakeasy.SpeakEasyCallManager;
-import com.android.incallui.speakeasy.SpeakEasyComponent;
 
 /**
  * Used to receive updates about calls from the Telecom component. This service is bound to Telecom
@@ -40,14 +39,6 @@
  */
 public class InCallServiceImpl extends InCallService {
 
-  private ReturnToCallController returnToCallController;
-  private CallList.Listener feedbackListener;
-  // We only expect there to be one speakEasyCallManager to be instantiated at a time.
-  // We did not use a singleton SpeakEasyCallManager to avoid holding on to state beyond the
-  // lifecycle of this service, because the singleton is associated with the state of the
-  // Application, not this service.
-  private SpeakEasyCallManager speakEasyCallManager;
-
   @Override
   public void onCallAudioStateChanged(CallAudioState audioState) {
     Trace.beginSection("InCallServiceImpl.onCallAudioStateChanged");
@@ -72,7 +63,6 @@
   @Override
   public void onCallRemoved(Call call) {
     Trace.beginSection("InCallServiceImpl.onCallRemoved");
-    speakEasyCallManager.onCallRemoved(CallList.getInstance().getDialerCallFromTelecomCall(call));
 
     InCallPresenter.getInstance().onCallRemoved(call);
     Trace.endSection();
@@ -86,12 +76,6 @@
   }
 
   @Override
-  public void onCreate() {
-    super.onCreate();
-    this.speakEasyCallManager = SpeakEasyComponent.get(this).speakEasyCallManager();
-  }
-
-  @Override
   public IBinder onBind(Intent intent) {
     Trace.beginSection("InCallServiceImpl.onBind");
     final Context context = getApplicationContext();
@@ -106,16 +90,11 @@
             new ExternalCallNotifier(context, contactInfoCache),
             contactInfoCache,
             new ProximitySensor(
-                context, AudioModeProvider.getInstance(), new AccelerometerListener(context)),
-            new FilteredNumberAsyncQueryHandler(context),
-            speakEasyCallManager);
+                context, AudioModeProvider.getInstance(), new AccelerometerListener(context)));
     InCallPresenter.getInstance().onServiceBind();
     InCallPresenter.getInstance().maybeStartRevealAnimation(intent);
     TelecomAdapter.getInstance().setInCallService(this);
-    returnToCallController =
-        new ReturnToCallController(this, ContactInfoCache.getInstance(context));
-    feedbackListener = FeedbackComponent.get(context).getCallFeedbackListener();
-    CallList.getInstance().addListener(feedbackListener);
+    CallRecorder.getInstance().setUp(context);
 
     IBinder iBinder = super.onBind(intent);
     Trace.endSection();
@@ -140,14 +119,6 @@
     // Tear down the InCall system
     InCallPresenter.getInstance().tearDown();
     TelecomAdapter.getInstance().clearInCallService();
-    if (returnToCallController != null) {
-      returnToCallController.tearDown();
-      returnToCallController = null;
-    }
-    if (feedbackListener != null) {
-      CallList.getInstance().removeListener(feedbackListener);
-      feedbackListener = null;
-    }
     Trace.endSection();
   }
 }
diff --git a/java/com/android/incallui/InCallUIMaterialColorMapUtils.java b/java/com/android/incallui/InCallUIMaterialColorMapUtils.java
index c566f79..9e524a4 100644
--- a/java/com/android/incallui/InCallUIMaterialColorMapUtils.java
+++ b/java/com/android/incallui/InCallUIMaterialColorMapUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,8 +20,9 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
-import android.telecom.PhoneAccount;
+
 import com.android.contacts.common.util.MaterialColorMapUtils;
+import com.android.dialer.R;
 import com.android.dialer.theme.base.ThemeComponent;
 
 public class InCallUIMaterialColorMapUtils extends MaterialColorMapUtils {
@@ -41,7 +43,6 @@
   /**
    * {@link Resources#getColor(int) used for compatibility
    */
-  @SuppressWarnings("deprecation")
   public static MaterialPalette getDefaultPrimaryAndSecondaryColors(Context context) {
     final int primaryColor = ThemeComponent.get(context).theme().getColorPrimary();
     final int secondaryColor = ThemeComponent.get(context).theme().getColorPrimaryDark();
@@ -55,17 +56,6 @@
    */
   @Override
   public MaterialPalette calculatePrimaryAndSecondaryColor(int color) {
-    if (color == PhoneAccount.NO_HIGHLIGHT_COLOR) {
-      return getDefaultPrimaryAndSecondaryColors(context);
-    }
-
-    for (int i = 0; i < primaryColors.length(); i++) {
-      if (primaryColors.getColor(i, 0) == color) {
-        return new MaterialPalette(primaryColors.getColor(i, 0), secondaryColors.getColor(i, 0));
-      }
-    }
-
-    // The color isn't in the list, so use the superclass to find an approximate color.
-    return super.calculatePrimaryAndSecondaryColor(color);
+    return getDefaultPrimaryAndSecondaryColors(context);
   }
 }
diff --git a/java/com/android/incallui/InCallVibrationHandler.java b/java/com/android/incallui/InCallVibrationHandler.java
new file mode 100644
index 0000000..37244e3
--- /dev/null
+++ b/java/com/android/incallui/InCallVibrationHandler.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod Project
+ * Copyright (C) 2023-2024 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.incallui;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.os.VibrationAttributes;
+import android.os.VibrationEffect;
+import android.os.Vibrator;
+import android.os.VibratorManager;
+import android.telecom.DisconnectCause;
+
+import com.android.incallui.InCallPresenter.InCallState;
+import com.android.incallui.call.CallList;
+import com.android.incallui.call.DialerCall;
+import com.android.incallui.call.state.DialerCallState;
+
+public class InCallVibrationHandler extends Handler implements
+    InCallPresenter.InCallStateListener {
+
+  private static final int MSG_VIBRATE_45_SEC = 1;
+
+  private static final String KEY_VIBRATE_CALL_WAITING = "incall_vibrate_call_waiting";
+  private static final String KEY_VIBRATE_OUTGOING = "incall_vibrate_outgoing";
+  private static final String KEY_VIBRATE_45SECS = "incall_vibrate_45secs";
+  private static final String KEY_VIBRATE_HANGUP = "incall_vibrate_hangup";
+
+  private final SharedPreferences prefs;
+  private final Vibrator vibrator;
+  private DialerCall activeCall;
+
+  public InCallVibrationHandler(Context context) {
+    super(Looper.getMainLooper());
+    String name = context.getPackageName() + "_preferences";
+    prefs = context.createDeviceProtectedStorageContext()
+            .getSharedPreferences(name, Context.MODE_PRIVATE);
+    vibrator = context.getSystemService(VibratorManager.class).getDefaultVibrator();
+  }
+
+  @Override
+  public void handleMessage(Message msg) {
+    switch (msg.what) {
+      case MSG_VIBRATE_45_SEC:
+        vibrate(70, 0, 0);
+        sendEmptyMessageDelayed(MSG_VIBRATE_45_SEC, 60000);
+        break;
+    }
+  }
+
+  @Override
+  public void onStateChange(InCallState oldState, InCallState newState, CallList callList) {
+    DialerCall activeCall = callList.getActiveCall();
+
+    if (activeCall != null && this.activeCall == null) {
+      Log.d(this, "Transition to active call " + activeCall);
+      if (activeCall.isOutgoing()) {
+        handleOutgoingCallVibration(activeCall);
+      }
+      this.activeCall = activeCall;
+    } else if (activeCall != null && callList.getIncomingCall() != null
+        && !callList.getIncomingCall().equals(activeCall)) {
+      Log.d(this, "New incoming call" + callList.getIncomingCall());
+      handleCallWaitingVibration(activeCall);
+    } else if (activeCall == null && this.activeCall != null) {
+      Log.d(this, "Transition from active call " + this.activeCall);
+      handleCallEnd(this.activeCall);
+      this.activeCall = null;
+    }
+  }
+
+  private void handleOutgoingCallVibration(DialerCall call) {
+    long durationMillis = System.currentTimeMillis() - call.getConnectTimeMillis();
+    Log.d(this, "Start outgoing call: duration = " + durationMillis);
+
+    if (prefs.getBoolean(KEY_VIBRATE_OUTGOING, false) && durationMillis < 200) {
+      vibrate(100, 200, 0);
+    }
+    if (prefs.getBoolean(KEY_VIBRATE_45SECS, false)) {
+      start45SecondVibration(durationMillis);
+    }
+  }
+
+  private void handleCallWaitingVibration(DialerCall call) {
+    Log.d(this, "Start call waiting vibration");
+    if (prefs.getBoolean(KEY_VIBRATE_CALL_WAITING, false)) {
+      vibrate(200, 300, 500);
+    }
+  }
+
+  private void handleCallEnd(DialerCall call) {
+    long durationMillis = System.currentTimeMillis() - call.getConnectTimeMillis();
+    DisconnectCause cause = call.getDisconnectCause();
+    boolean localDisconnect =
+        // Disconnection not yet processed
+        call.getState() == DialerCallState.DISCONNECTING ||
+        // Disconnection already processed
+        (cause != null && cause.getCode() == DisconnectCause.LOCAL);
+
+    Log.d(this, "Ending active call: duration = " + durationMillis
+        + ", locally disconnected = " + localDisconnect);
+
+    if (prefs.getBoolean(KEY_VIBRATE_HANGUP, false)
+        && !localDisconnect && durationMillis > 500) {
+      vibrate(50, 100, 50);
+    }
+    // Stop 45-second vibration
+    removeMessages(MSG_VIBRATE_45_SEC);
+  }
+
+  private void start45SecondVibration(long callDurationMillis) {
+    callDurationMillis = callDurationMillis % 60000;
+    Log.d(this, "vibrate start @" + callDurationMillis);
+    removeMessages(MSG_VIBRATE_45_SEC);
+
+    long timer;
+    if (callDurationMillis > 45000) {
+        // Schedule the alarm at the next minute + 45 secs
+        timer = 45000 + 60000 - callDurationMillis;
+    } else {
+        // Schedule the alarm at the first 45 second mark
+        timer = 45000 - callDurationMillis;
+    }
+    sendEmptyMessageDelayed(MSG_VIBRATE_45_SEC, timer);
+  }
+
+  private void vibrate(int v1, int p1, int v2) {
+    long[] pattern = new long[] {
+      0, v1, p1, v2
+    };
+    VibrationEffect effect = VibrationEffect.createWaveform(pattern, -1);
+    VibrationAttributes attributes = VibrationAttributes.createForUsage(
+            VibrationAttributes.USAGE_COMMUNICATION_REQUEST);
+    vibrator.vibrate(effect, attributes);
+  }
+}
diff --git a/java/com/android/incallui/Log.java b/java/com/android/incallui/Log.java
index c63eccb..33be91b 100644
--- a/java/com/android/incallui/Log.java
+++ b/java/com/android/incallui/Log.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,7 +20,9 @@
 import android.net.Uri;
 import android.telecom.PhoneAccount;
 import android.telephony.PhoneNumberUtils;
+
 import com.android.dialer.common.LogUtil;
+
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 
diff --git a/java/com/android/incallui/ManageConferenceActivity.java b/java/com/android/incallui/ManageConferenceActivity.java
index 6584e4f..259d11a 100644
--- a/java/com/android/incallui/ManageConferenceActivity.java
+++ b/java/com/android/incallui/ManageConferenceActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,13 @@
 package com.android.incallui;
 
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v7.app.AppCompatActivity;
 import android.view.MenuItem;
 
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+
+import com.android.dialer.R;
+
 /** Shows the {@link ConferenceManagerFragment} */
 public class ManageConferenceActivity extends AppCompatActivity {
 
diff --git a/java/com/android/incallui/MotorolaInCallUiNotifier.java b/java/com/android/incallui/MotorolaInCallUiNotifier.java
index c3c7339..4291df9 100644
--- a/java/com/android/incallui/MotorolaInCallUiNotifier.java
+++ b/java/com/android/incallui/MotorolaInCallUiNotifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * This file is derived in part from code issued under the following license.
  *
@@ -20,7 +21,7 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.VisibleForTesting;
+
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
@@ -33,14 +34,12 @@
  */
 public class MotorolaInCallUiNotifier implements InCallUiListener, InCallStateListener {
 
-  @VisibleForTesting static final String EXTRA_VISIBLE_KEY = "visible";
+  private static final String EXTRA_VISIBLE_KEY = "visible";
 
-  @VisibleForTesting
-  static final String ACTION_INCOMING_CALL_VISIBILITY_CHANGED =
+  private static final String ACTION_INCOMING_CALL_VISIBILITY_CHANGED =
       "com.motorola.incallui.action.INCOMING_CALL_VISIBILITY_CHANGED";
 
-  @VisibleForTesting
-  static final String PERMISSION_INCOMING_CALL_VISIBILITY_CHANGED =
+  private static final String PERMISSION_INCOMING_CALL_VISIBILITY_CHANGED =
       "com.motorola.incallui.permission.INCOMING_CALL_VISIBILITY_CHANGED";
 
   private final Context context;
diff --git a/java/com/android/incallui/NotificationBroadcastReceiver.java b/java/com/android/incallui/NotificationBroadcastReceiver.java
index 91421ea..4c2977d 100644
--- a/java/com/android/incallui/NotificationBroadcastReceiver.java
+++ b/java/com/android/incallui/NotificationBroadcastReceiver.java
@@ -16,29 +16,25 @@
 
 package com.android.incallui;
 
+import android.annotation.SuppressLint;
 import android.app.BroadcastOptions;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.RequiresApi;
 import android.telecom.CallAudioState;
 import android.telecom.VideoProfile;
 
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.TelecomAdapter;
-import com.android.incallui.speakeasy.SpeakEasyCallManager;
 
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
 
 /**
  * Accepts broadcast Intents which will be prepared by {@link StatusBarNotifier} and thus sent from
@@ -67,16 +63,14 @@
   public static final String ACTION_TURN_ON_SPEAKER = "com.android.incallui.ACTION_TURN_ON_SPEAKER";
   public static final String ACTION_TURN_OFF_SPEAKER =
       "com.android.incallui.ACTION_TURN_OFF_SPEAKER";
-  public static final String ACTION_ANSWER_SPEAKEASY_CALL =
-      "com.android.incallui.ACTION_ANSWER_SPEAKEASY_CALL";
 
-  @RequiresApi(VERSION_CODES.N_MR1)
   public static final String ACTION_PULL_EXTERNAL_CALL =
       "com.android.incallui.ACTION_PULL_EXTERNAL_CALL";
 
   public static final String EXTRA_NOTIFICATION_ID =
       "com.android.incallui.extra.EXTRA_NOTIFICATION_ID";
 
+  @SuppressLint("MissingPermission")
   @Override
   public void onReceive(Context context, Intent intent) {
     final String action = intent.getAction();
@@ -87,12 +81,7 @@
       answerIncomingCall(VideoProfile.STATE_BIDIRECTIONAL, context);
     } else if (action.equals(ACTION_ANSWER_VOICE_INCOMING_CALL)) {
       answerIncomingCall(VideoProfile.STATE_AUDIO_ONLY, context);
-    } else if (action.equals(ACTION_ANSWER_SPEAKEASY_CALL)) {
-      markIncomingCallAsSpeakeasyCall();
-      answerIncomingCall(VideoProfile.STATE_AUDIO_ONLY, context);
     } else if (action.equals(ACTION_DECLINE_INCOMING_CALL)) {
-      Logger.get(context)
-          .logImpression(DialerImpression.Type.REJECT_INCOMING_CALL_FROM_NOTIFICATION);
       declineIncomingCall();
     } else if (action.equals(ACTION_HANG_UP_ONGOING_CALL)) {
       hangUpOngoingCall();
@@ -155,19 +144,6 @@
     }
   }
 
-  private void markIncomingCallAsSpeakeasyCall() {
-    CallList callList = InCallPresenter.getInstance().getCallList();
-    if (callList == null) {
-      LogUtil.e(
-          "NotificationBroadcastReceiver.markIncomingCallAsSpeakeasyCall", "call list is empty");
-    } else {
-      DialerCall call = callList.getIncomingCall();
-      if (call != null) {
-        call.setIsSpeakEasyCall(true);
-      }
-    }
-  }
-
   private void answerIncomingCall(int videoState, @NonNull Context context) {
     CallList callList = InCallPresenter.getInstance().getCallList();
     if (callList == null) {
@@ -177,18 +153,8 @@
       DialerCall call = callList.getIncomingCall();
       if (call != null) {
 
-        SpeakEasyCallManager speakEasyCallManager =
-            InCallPresenter.getInstance().getSpeakEasyCallManager();
-        ListenableFuture<Void> answerPrecondition;
-
-        if (speakEasyCallManager != null) {
-          answerPrecondition = speakEasyCallManager.onNewIncomingCall(call);
-        } else {
-          answerPrecondition = Futures.immediateFuture(null);
-        }
-
         Futures.addCallback(
-            answerPrecondition,
+            Futures.immediateFuture(null),
             new FutureCallback<Void>() {
               @Override
               public void onSuccess(Void result) {
diff --git a/java/com/android/incallui/PhoneLookupHistoryRecorder.java b/java/com/android/incallui/PhoneLookupHistoryRecorder.java
deleted file mode 100644
index 4c5cf8a..0000000
--- a/java/com/android/incallui/PhoneLookupHistoryRecorder.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.incallui;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.support.annotation.Nullable;
-import android.telecom.Call;
-import com.android.dialer.calllog.config.CallLogConfigComponent;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.phonelookup.PhoneLookupComponent;
-import com.android.dialer.phonelookup.PhoneLookupInfo;
-import com.android.dialer.phonelookup.database.contract.PhoneLookupHistoryContract.PhoneLookupHistory;
-import com.android.dialer.telecom.TelecomCallUtil;
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Fetches the current {@link PhoneLookupInfo} for the provided call and writes it to the
- * PhoneLookupHistory.
- */
-final class PhoneLookupHistoryRecorder {
-
-  /**
-   * If the call log framework is enabled, fetches the current {@link PhoneLookupInfo} for the
-   * provided call and writes it to the PhoneLookupHistory. Otherwise does nothing.
-   */
-  static void recordPhoneLookupInfo(Context appContext, Call call) {
-    if (!CallLogConfigComponent.get(appContext).callLogConfig().isCallLogFrameworkEnabled()) {
-      return;
-    }
-
-    ListenableFuture<PhoneLookupInfo> infoFuture =
-        PhoneLookupComponent.get(appContext).compositePhoneLookup().lookup(call);
-
-    Futures.addCallback(
-        infoFuture,
-        new FutureCallback<PhoneLookupInfo>() {
-          @Override
-          public void onSuccess(@Nullable PhoneLookupInfo result) {
-            Assert.checkArgument(result != null);
-            Optional<String> normalizedNumber =
-                TelecomCallUtil.getNormalizedNumber(appContext, call);
-            if (!normalizedNumber.isPresent()) {
-              LogUtil.w("PhoneLookupHistoryRecorder.onSuccess", "couldn't get a number");
-              return;
-            }
-            ContentValues contentValues = new ContentValues();
-            contentValues.put(PhoneLookupHistory.PHONE_LOOKUP_INFO, result.toByteArray());
-            contentValues.put(PhoneLookupHistory.LAST_MODIFIED, System.currentTimeMillis());
-            appContext
-                .getContentResolver()
-                .update(
-                    PhoneLookupHistory.contentUriForNumber(normalizedNumber.get()),
-                    contentValues,
-                    null,
-                    null);
-          }
-
-          @Override
-          public void onFailure(Throwable t) {
-            // TODO(zachh): Consider how to best handle this; take measures to repair call log?
-            LogUtil.w(
-                "PhoneLookupHistoryRecorder.onFailure", "could not write PhoneLookupHistory", t);
-          }
-        },
-        DialerExecutorComponent.get(appContext).backgroundExecutor());
-  }
-}
diff --git a/java/com/android/incallui/PostCharDialogActivity.java b/java/com/android/incallui/PostCharDialogActivity.java
index dcdc9d6..6ee755d 100644
--- a/java/com/android/incallui/PostCharDialogActivity.java
+++ b/java/com/android/incallui/PostCharDialogActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,11 @@
 package com.android.incallui;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 
diff --git a/java/com/android/incallui/PostCharDialogFragment.java b/java/com/android/incallui/PostCharDialogFragment.java
index 4bcc68e..42e3d34 100644
--- a/java/com/android/incallui/PostCharDialogFragment.java
+++ b/java/com/android/incallui/PostCharDialogFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,7 +21,10 @@
 import android.app.Dialog;
 import android.content.DialogInterface;
 import android.os.Bundle;
-import android.support.v4.app.DialogFragment;
+
+import androidx.fragment.app.DialogFragment;
+
+import com.android.dialer.R;
 import com.android.incallui.call.TelecomAdapter;
 
 /**
@@ -60,20 +64,8 @@
 
     builder.setPositiveButton(
         R.string.pause_prompt_yes,
-        new DialogInterface.OnClickListener() {
-          @Override
-          public void onClick(DialogInterface dialog, int whichButton) {
-            TelecomAdapter.getInstance().postDialContinue(callId, true);
-          }
-        });
-    builder.setNegativeButton(
-        R.string.pause_prompt_no,
-        new DialogInterface.OnClickListener() {
-          @Override
-          public void onClick(DialogInterface dialog, int whichButton) {
-            dialog.cancel();
-          }
-        });
+            (dialog, whichButton) -> TelecomAdapter.getInstance().postDialContinue(callId, true));
+    builder.setNegativeButton(R.string.pause_prompt_no, (dialog, whichButton) -> dialog.cancel());
 
     final AlertDialog dialog = builder.create();
     return dialog;
diff --git a/java/com/android/incallui/ProximitySensor.java b/java/com/android/incallui/ProximitySensor.java
index 9719e5d..c02ebf7 100644
--- a/java/com/android/incallui/ProximitySensor.java
+++ b/java/com/android/incallui/ProximitySensor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,9 +22,11 @@
 import android.hardware.display.DisplayManager.DisplayListener;
 import android.os.PowerManager;
 import android.os.Trace;
-import android.support.annotation.NonNull;
 import android.telecom.CallAudioState;
 import android.view.Display;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
@@ -165,16 +168,6 @@
     accelerometerListener.enable(isDisplayOn);
   }
 
-  /**
-   * TODO: There is no way to determine if a screen is off due to proximity or if it is legitimately
-   * off, but if ever we can do that in the future, it would be useful here. Until then, this
-   * function will simply return true of the screen is off. TODO: Investigate whether this can be
-   * replaced with the ProximityDisplayListener.
-   */
-  public boolean isScreenReallyOff() {
-    return !powerManager.isScreenOn();
-  }
-
   private void turnOnProximitySensor() {
     if (proximityWakeLock != null) {
       if (!proximityWakeLock.isHeld()) {
@@ -269,7 +262,7 @@
    */
   public class ProximityDisplayListener implements DisplayListener {
 
-    private DisplayManager displayManager;
+    private final DisplayManager displayManager;
     private boolean isDisplayOn = true;
 
     ProximityDisplayListener(DisplayManager displayManager) {
diff --git a/java/com/android/incallui/ReturnToCallActionReceiver.java b/java/com/android/incallui/ReturnToCallActionReceiver.java
deleted file mode 100644
index d6014aa..0000000
--- a/java/com/android/incallui/ReturnToCallActionReceiver.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.telecom.CallAudioState;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.incallui.audiomode.AudioModeProvider;
-import com.android.incallui.call.CallList;
-import com.android.incallui.call.DialerCall;
-import com.android.incallui.call.TelecomAdapter;
-
-/** Handles clicks on the return-to-call bubble */
-public class ReturnToCallActionReceiver extends BroadcastReceiver {
-
-  public static final String ACTION_RETURN_TO_CALL = "returnToCallV2";
-  public static final String ACTION_TOGGLE_SPEAKER = "toggleSpeakerV2";
-  public static final String ACTION_SHOW_AUDIO_ROUTE_SELECTOR = "showAudioRouteSelectorV2";
-  public static final String ACTION_TOGGLE_MUTE = "toggleMuteV2";
-  public static final String ACTION_END_CALL = "endCallV2";
-
-  @Override
-  public void onReceive(Context context, Intent intent) {
-    switch (intent.getAction()) {
-      case ACTION_RETURN_TO_CALL:
-        returnToCall(context);
-        break;
-      case ACTION_TOGGLE_SPEAKER:
-        toggleSpeaker(context);
-        break;
-      case ACTION_SHOW_AUDIO_ROUTE_SELECTOR:
-        showAudioRouteSelector(context);
-        break;
-      case ACTION_TOGGLE_MUTE:
-        toggleMute(context);
-        break;
-      case ACTION_END_CALL:
-        endCall(context);
-        break;
-      default:
-        throw Assert.createIllegalStateFailException(
-            "Invalid intent action: " + intent.getAction());
-    }
-  }
-
-  private void returnToCall(Context context) {
-    DialerCall call = getCall();
-    Logger.get(context)
-        .logCallImpression(
-            DialerImpression.Type.BUBBLE_V2_RETURN_TO_CALL,
-            call != null ? call.getUniqueCallId() : "",
-            call != null ? call.getTimeAddedMs() : 0);
-
-    Intent activityIntent = InCallActivity.getIntent(context, false, false, false);
-    activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-    context.startActivity(activityIntent);
-  }
-
-  private void toggleSpeaker(Context context) {
-    CallAudioState audioState = AudioModeProvider.getInstance().getAudioState();
-
-    if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH)
-        == CallAudioState.ROUTE_BLUETOOTH) {
-      LogUtil.w(
-          "ReturnToCallActionReceiver.toggleSpeaker",
-          "toggleSpeaker() called when bluetooth available."
-              + " Probably should have shown audio route selector");
-    }
-
-    DialerCall call = getCall();
-
-    int newRoute;
-    if (audioState.getRoute() == CallAudioState.ROUTE_SPEAKER) {
-      newRoute = CallAudioState.ROUTE_WIRED_OR_EARPIECE;
-      Logger.get(context)
-          .logCallImpression(
-              DialerImpression.Type.BUBBLE_V2_WIRED_OR_EARPIECE,
-              call != null ? call.getUniqueCallId() : "",
-              call != null ? call.getTimeAddedMs() : 0);
-    } else {
-      newRoute = CallAudioState.ROUTE_SPEAKER;
-      Logger.get(context)
-          .logCallImpression(
-              DialerImpression.Type.BUBBLE_V2_SPEAKERPHONE,
-              call != null ? call.getUniqueCallId() : "",
-              call != null ? call.getTimeAddedMs() : 0);
-    }
-    TelecomAdapter.getInstance().setAudioRoute(newRoute);
-  }
-
-  public void showAudioRouteSelector(Context context) {
-    Intent intent = new Intent(context, AudioRouteSelectorActivity.class);
-    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
-    context.startActivity(intent);
-  }
-
-  private void toggleMute(Context context) {
-    DialerCall call = getCall();
-    boolean shouldMute = !AudioModeProvider.getInstance().getAudioState().isMuted();
-    Logger.get(context)
-        .logCallImpression(
-            shouldMute
-                ? DialerImpression.Type.BUBBLE_V2_MUTE_CALL
-                : DialerImpression.Type.BUBBLE_V2_UNMUTE_CALL,
-            call != null ? call.getUniqueCallId() : "",
-            call != null ? call.getTimeAddedMs() : 0);
-    TelecomAdapter.getInstance().mute(shouldMute);
-  }
-
-  private void endCall(Context context) {
-    DialerCall call = getCall();
-
-    Logger.get(context)
-        .logCallImpression(
-            DialerImpression.Type.BUBBLE_V2_END_CALL,
-            call != null ? call.getUniqueCallId() : "",
-            call != null ? call.getTimeAddedMs() : 0);
-    if (call != null) {
-      call.disconnect();
-    }
-  }
-
-  private DialerCall getCall() {
-    CallList callList = InCallPresenter.getInstance().getCallList();
-    if (callList != null) {
-      DialerCall call = callList.getOutgoingCall();
-      if (call == null) {
-        call = callList.getActiveOrBackgroundCall();
-      }
-      if (call != null) {
-        return call;
-      }
-    }
-    return null;
-  }
-}
diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java
deleted file mode 100644
index addde55..0000000
--- a/java/com/android/incallui/ReturnToCallController.java
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui;
-
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.Icon;
-import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.telecom.CallAudioState;
-import android.text.TextUtils;
-import com.android.bubble.Bubble;
-import com.android.bubble.BubbleComponent;
-import com.android.bubble.BubbleInfo;
-import com.android.bubble.BubbleInfo.Action;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.contacts.ContactsComponent;
-import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.theme.base.ThemeComponent;
-import com.android.incallui.ContactInfoCache.ContactCacheEntry;
-import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
-import com.android.incallui.InCallPresenter.InCallState;
-import com.android.incallui.InCallPresenter.InCallUiListener;
-import com.android.incallui.audiomode.AudioModeProvider;
-import com.android.incallui.audiomode.AudioModeProvider.AudioModeListener;
-import com.android.incallui.call.CallList;
-import com.android.incallui.call.CallList.Listener;
-import com.android.incallui.call.DialerCall;
-import com.android.incallui.speakerbuttonlogic.SpeakerButtonInfo;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Listens for events relevant to the return-to-call bubble and updates the bubble's state as
- * necessary.
- *
- * <p>Bubble shows when one of following happens: 1. a new outgoing/ongoing call appears 2. leave
- * in-call UI with an outgoing/ongoing call
- *
- * <p>Bubble hides when one of following happens: 1. a call disconnect and there is no more
- * outgoing/ongoing call 2. show in-call UI
- */
-public class ReturnToCallController implements InCallUiListener, Listener, AudioModeListener {
-
-  private final Context context;
-
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  Bubble bubble;
-
-  private static Boolean canShowBubblesForTesting = null;
-
-  private CallAudioState audioState;
-
-  private final PendingIntent toggleSpeaker;
-  private final PendingIntent showSpeakerSelect;
-  private final PendingIntent toggleMute;
-  private final PendingIntent endCall;
-  private final PendingIntent fullScreen;
-
-  private final ContactInfoCache contactInfoCache;
-
-  private InCallState inCallState;
-
-  public static boolean isEnabled(Context context) {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("enable_return_to_call_bubble_v2", false);
-  }
-
-  public ReturnToCallController(Context context, ContactInfoCache contactInfoCache) {
-    this.context = context;
-    this.contactInfoCache = contactInfoCache;
-
-    toggleSpeaker = createActionIntent(ReturnToCallActionReceiver.ACTION_TOGGLE_SPEAKER);
-    showSpeakerSelect =
-        createActionIntent(ReturnToCallActionReceiver.ACTION_SHOW_AUDIO_ROUTE_SELECTOR);
-    toggleMute = createActionIntent(ReturnToCallActionReceiver.ACTION_TOGGLE_MUTE);
-    endCall = createActionIntent(ReturnToCallActionReceiver.ACTION_END_CALL);
-    fullScreen = createActionIntent(ReturnToCallActionReceiver.ACTION_RETURN_TO_CALL);
-
-    AudioModeProvider.getInstance().addListener(this);
-    audioState = AudioModeProvider.getInstance().getAudioState();
-    InCallPresenter.getInstance().addInCallUiListener(this);
-    CallList.getInstance().addListener(this);
-  }
-
-  public void tearDown() {
-    hide();
-    InCallPresenter.getInstance().removeInCallUiListener(this);
-    CallList.getInstance().removeListener(this);
-    AudioModeProvider.getInstance().removeListener(this);
-  }
-
-  @Override
-  public void onUiShowing(boolean showing) {
-    if (!isEnabled(context)) {
-      hide();
-      return;
-    }
-
-    LogUtil.i("ReturnToCallController.onUiShowing", "showing: " + showing);
-    if (showing) {
-      LogUtil.i("ReturnToCallController.onUiShowing", "going to hide");
-      hide();
-    } else {
-      if (getCall() != null) {
-        LogUtil.i("ReturnToCallController.onUiShowing", "going to show");
-        show();
-      }
-    }
-  }
-
-  private void hide() {
-    if (bubble != null) {
-      bubble.hide();
-    } else {
-      LogUtil.i("ReturnToCallController.hide", "hide() called without calling show()");
-    }
-  }
-
-  private void show() {
-    if (bubble == null) {
-      bubble = startBubble();
-    } else {
-      bubble.show();
-    }
-    startContactInfoSearch();
-  }
-
-  /**
-   * Determines whether bubbles can be shown based on permissions obtained. This should be checked
-   * before attempting to create a Bubble.
-   *
-   * @return true iff bubbles are able to be shown.
-   * @see Settings#canDrawOverlays(Context)
-   */
-  private static boolean canShowBubbles(@NonNull Context context) {
-    return canShowBubblesForTesting != null
-        ? canShowBubblesForTesting
-        : Settings.canDrawOverlays(context);
-  }
-
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  static void setCanShowBubblesForTesting(boolean canShowBubbles) {
-    canShowBubblesForTesting = canShowBubbles;
-  }
-
-  private Bubble startBubble() {
-    if (!canShowBubbles(context)) {
-      LogUtil.i("ReturnToCallController.startBubble", "can't show bubble, no permission");
-      return null;
-    }
-    Bubble returnToCallBubble = BubbleComponent.get(context).getBubble();
-    returnToCallBubble.setBubbleInfo(generateBubbleInfo());
-    returnToCallBubble.show();
-    return returnToCallBubble;
-  }
-
-  @Override
-  public void onIncomingCall(DialerCall call) {}
-
-  @Override
-  public void onUpgradeToVideo(DialerCall call) {}
-
-  @Override
-  public void onSessionModificationStateChange(DialerCall call) {}
-
-  @Override
-  public void onCallListChange(CallList callList) {
-    if (!isEnabled(context)) {
-      hide();
-      return;
-    }
-
-    boolean shouldStartInBubbleMode = InCallPresenter.getInstance().shouldStartInBubbleMode();
-    InCallState newInCallState =
-        InCallPresenter.getInstance().getPotentialStateFromCallList(callList);
-    boolean isNewBackgroundCall =
-        newInCallState != inCallState
-            && newInCallState == InCallState.OUTGOING
-            && shouldStartInBubbleMode;
-    boolean bubbleNeverVisible = (bubble == null || !(bubble.isVisible() || bubble.isDismissed()));
-    if (bubble != null && isNewBackgroundCall) {
-      // If new outgoing call is in bubble mode, update bubble info.
-      // We don't update if new call is not in bubble mode even if the existing call is.
-      bubble.setBubbleInfo(generateBubbleInfoForBackgroundCalling());
-    }
-    if (((bubbleNeverVisible && newInCallState != InCallState.OUTGOING) || isNewBackgroundCall)
-        && getCall() != null
-        && !InCallPresenter.getInstance().isShowingInCallUi()) {
-      LogUtil.i("ReturnToCallController.onCallListChange", "going to show bubble");
-      show();
-    } else {
-      // The call to display might be different for the existing bubble
-      startContactInfoSearch();
-    }
-    inCallState = newInCallState;
-  }
-
-  @Override
-  public void onDisconnect(DialerCall call) {
-    if (!isEnabled(context)) {
-      hide();
-      return;
-    }
-
-    LogUtil.enterBlock("ReturnToCallController.onDisconnect");
-    if (bubble != null && bubble.isVisible() && (getCall() == null)) {
-      // Show "Call ended" and hide bubble when there is no outgoing, active or background call
-      LogUtil.i("ReturnToCallController.onDisconnect", "show call ended and hide bubble");
-      // Don't show text if it's Duo upgrade
-      // It doesn't work for Duo fallback upgrade since we're not considered in call
-      if (!TelecomUtil.isInCall(context) || CallList.getInstance().getIncomingCall() != null) {
-        bubble.showText(context.getText(R.string.incall_call_ended));
-      }
-      hide();
-    } else {
-      startContactInfoSearch();
-    }
-  }
-
-  @Override
-  public void onWiFiToLteHandover(DialerCall call) {}
-
-  @Override
-  public void onHandoverToWifiFailed(DialerCall call) {}
-
-  @Override
-  public void onInternationalCallOnWifi(@NonNull DialerCall call) {}
-
-  @Override
-  public void onAudioStateChanged(CallAudioState audioState) {
-    if (!isEnabled(context)) {
-      hide();
-      return;
-    }
-
-    this.audioState = audioState;
-    if (bubble != null) {
-      bubble.updateActions(generateActions());
-    }
-  }
-
-  private void startContactInfoSearch() {
-    DialerCall dialerCall = getCall();
-    if (dialerCall != null) {
-      contactInfoCache.findInfo(
-          dialerCall, false /* isIncoming */, new ReturnToCallContactInfoCacheCallback(this));
-    }
-  }
-
-  private DialerCall getCall() {
-    DialerCall dialerCall = CallList.getInstance().getOutgoingCall();
-    if (dialerCall == null) {
-      dialerCall = CallList.getInstance().getActiveOrBackgroundCall();
-    }
-    return dialerCall;
-  }
-
-  private void onPhotoAvatarReceived(@NonNull Drawable photo) {
-    if (bubble != null) {
-      bubble.updatePhotoAvatar(photo);
-    }
-  }
-
-  private void onLetterTileAvatarReceived(@NonNull Drawable photo) {
-    if (bubble != null) {
-      bubble.updateAvatar(photo);
-    }
-  }
-
-  private BubbleInfo generateBubbleInfo() {
-    return BubbleInfo.builder()
-        .setPrimaryColor(ThemeComponent.get(context).theme().getColorPrimary())
-        .setPrimaryIcon(Icon.createWithResource(context, R.drawable.on_going_call))
-        .setStartingYPosition(
-            InCallPresenter.getInstance().shouldStartInBubbleMode()
-                ? context.getResources().getDisplayMetrics().heightPixels / 2
-                : context
-                    .getResources()
-                    .getDimensionPixelOffset(R.dimen.return_to_call_initial_offset_y))
-        .setActions(generateActions())
-        .build();
-  }
-
-  private BubbleInfo generateBubbleInfoForBackgroundCalling() {
-    return BubbleInfo.builder()
-        .setPrimaryColor(ThemeComponent.get(context).theme().getColorPrimary())
-        .setPrimaryIcon(Icon.createWithResource(context, R.drawable.on_going_call))
-        .setStartingYPosition(context.getResources().getDisplayMetrics().heightPixels / 2)
-        .setActions(generateActions())
-        .build();
-  }
-
-  @NonNull
-  private List<Action> generateActions() {
-    List<Action> actions = new ArrayList<>();
-    SpeakerButtonInfo speakerButtonInfo = new SpeakerButtonInfo(audioState);
-
-    // Return to call
-    actions.add(
-        Action.builder()
-            .setIconDrawable(
-                context.getDrawable(R.drawable.quantum_ic_exit_to_app_flip_vd_theme_24))
-            .setIntent(fullScreen)
-            .setName(context.getText(R.string.bubble_return_to_call))
-            .setCheckable(false)
-            .build());
-    // Mute/unmute
-    actions.add(
-        Action.builder()
-            .setIconDrawable(context.getDrawable(R.drawable.quantum_ic_mic_off_vd_theme_24))
-            .setChecked(audioState.isMuted())
-            .setIntent(toggleMute)
-            .setName(context.getText(R.string.incall_label_mute))
-            .build());
-    // Speaker/audio selector
-    actions.add(
-        Action.builder()
-            .setIconDrawable(context.getDrawable(speakerButtonInfo.icon))
-            .setSecondaryIconDrawable(
-                speakerButtonInfo.nonBluetoothMode
-                    ? null
-                    : context.getDrawable(R.drawable.quantum_ic_arrow_drop_down_vd_theme_24))
-            .setName(context.getText(speakerButtonInfo.label))
-            .setCheckable(speakerButtonInfo.nonBluetoothMode)
-            .setChecked(speakerButtonInfo.isChecked)
-            .setIntent(speakerButtonInfo.nonBluetoothMode ? toggleSpeaker : showSpeakerSelect)
-            .build());
-    // End call
-    actions.add(
-        Action.builder()
-            .setIconDrawable(context.getDrawable(R.drawable.quantum_ic_call_end_vd_theme_24))
-            .setIntent(endCall)
-            .setName(context.getText(R.string.incall_label_end_call))
-            .setCheckable(false)
-            .build());
-    return actions;
-  }
-
-  @NonNull
-  private PendingIntent createActionIntent(String action) {
-    Intent intent = new Intent(context, ReturnToCallActionReceiver.class);
-    intent.setAction(action);
-    return PendingIntent.getBroadcast(context, 0, intent, 0);
-  }
-
-  @NonNull
-  private LetterTileDrawable createLettleTileDrawable(
-      DialerCall dialerCall, ContactCacheEntry entry) {
-    String preferredName =
-        ContactsComponent.get(context)
-            .contactDisplayPreferences()
-            .getDisplayName(entry.namePrimary, entry.nameAlternative);
-    if (TextUtils.isEmpty(preferredName)) {
-      preferredName = entry.number;
-    }
-
-    LetterTileDrawable letterTile = new LetterTileDrawable(context.getResources());
-    letterTile.setCanonicalDialerLetterTileDetails(
-        dialerCall.updateNameIfRestricted(preferredName),
-        entry.lookupKey,
-        LetterTileDrawable.SHAPE_CIRCLE,
-        LetterTileDrawable.getContactTypeFromPrimitives(
-            dialerCall.isVoiceMailNumber(),
-            dialerCall.isSpam(),
-            entry.isBusiness,
-            dialerCall.getNumberPresentation(),
-            dialerCall.isConferenceCall()));
-    return letterTile;
-  }
-
-  private static class ReturnToCallContactInfoCacheCallback implements ContactInfoCacheCallback {
-
-    private final WeakReference<ReturnToCallController> returnToCallControllerWeakReference;
-
-    private ReturnToCallContactInfoCacheCallback(ReturnToCallController returnToCallController) {
-      returnToCallControllerWeakReference = new WeakReference<>(returnToCallController);
-    }
-
-    @Override
-    public void onContactInfoComplete(String callId, ContactCacheEntry entry) {
-      ReturnToCallController returnToCallController = returnToCallControllerWeakReference.get();
-      if (returnToCallController == null) {
-        return;
-      }
-      if (entry.photo != null) {
-        returnToCallController.onPhotoAvatarReceived(entry.photo);
-      } else {
-        DialerCall dialerCall = CallList.getInstance().getCallById(callId);
-        if (dialerCall != null) {
-          returnToCallController.onLetterTileAvatarReceived(
-              returnToCallController.createLettleTileDrawable(dialerCall, entry));
-        }
-      }
-    }
-
-    @Override
-    public void onImageLoadComplete(String callId, ContactCacheEntry entry) {
-      ReturnToCallController returnToCallController = returnToCallControllerWeakReference.get();
-      if (returnToCallController == null) {
-        return;
-      }
-      if (entry.photo != null) {
-        returnToCallController.onPhotoAvatarReceived(entry.photo);
-      } else {
-        DialerCall dialerCall = CallList.getInstance().getCallById(callId);
-        if (dialerCall != null) {
-          returnToCallController.onLetterTileAvatarReceived(
-              returnToCallController.createLettleTileDrawable(dialerCall, entry));
-        }
-      }
-    }
-  }
-}
diff --git a/java/com/android/incallui/RttCallPresenter.java b/java/com/android/incallui/RttCallPresenter.java
index 2114691..6066bba 100644
--- a/java/com/android/incallui/RttCallPresenter.java
+++ b/java/com/android/incallui/RttCallPresenter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +17,11 @@
 
 package com.android.incallui;
 
-import android.annotation.TargetApi;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Looper;
 import android.telecom.Call.RttCall;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.ThreadUtil;
 import com.android.dialer.rtt.RttTranscript;
@@ -30,13 +31,13 @@
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.rtt.protocol.RttCallScreen;
 import com.android.incallui.rtt.protocol.RttCallScreenDelegate;
+
 import java.io.IOException;
 
 /**
  * Logic related to the {@link RttCallScreen} and for managing changes to the RTT calling surfaces
  * based on other user interface events and incoming events.
  */
-@TargetApi(28)
 public class RttCallPresenter implements RttCallScreenDelegate, InCallStateListener {
 
   private RttCallScreen rttCallScreen;
diff --git a/java/com/android/incallui/RttRequestDialogFragment.java b/java/com/android/incallui/RttRequestDialogFragment.java
index 589625b..4722af0 100644
--- a/java/com/android/incallui/RttRequestDialogFragment.java
+++ b/java/com/android/incallui/RttRequestDialogFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,14 +21,17 @@
 import android.app.Dialog;
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.DialogFragment;
 import android.telephony.PhoneNumberUtils;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.DialogFragment;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.contacts.ContactsComponent;
@@ -35,6 +39,7 @@
 import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
+
 import java.lang.ref.WeakReference;
 
 /** Dialog that shown to user when receiving RTT request mid call. */
diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java
index 3942851..5394fc1 100644
--- a/java/com/android/incallui/StatusBarNotifier.java
+++ b/java/com/android/incallui/StatusBarNotifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,7 +23,6 @@
 import static com.android.dialer.app.DevicePolicyResources.NOTIFICATION_ONGOING_WORK_CALL_TITLE;
 import static com.android.dialer.app.DevicePolicyResources.NOTIFICATION_WIFI_WORK_CALL_LABEL;
 import static com.android.incallui.NotificationBroadcastReceiver.ACTION_ACCEPT_VIDEO_UPGRADE_REQUEST;
-import static com.android.incallui.NotificationBroadcastReceiver.ACTION_ANSWER_SPEAKEASY_CALL;
 import static com.android.incallui.NotificationBroadcastReceiver.ACTION_ANSWER_VIDEO_INCOMING_CALL;
 import static com.android.incallui.NotificationBroadcastReceiver.ACTION_ANSWER_VOICE_INCOMING_CALL;
 import static com.android.incallui.NotificationBroadcastReceiver.ACTION_DECLINE_INCOMING_CALL;
@@ -32,8 +32,10 @@
 import static com.android.incallui.NotificationBroadcastReceiver.ACTION_TURN_ON_SPEAKER;
 
 import android.Manifest;
+import android.annotation.SuppressLint;
 import android.app.Notification;
 import android.app.PendingIntent;
+import android.app.Person;
 import android.app.admin.DevicePolicyManager;
 import android.content.Context;
 import android.content.Intent;
@@ -44,16 +46,7 @@
 import android.graphics.drawable.Icon;
 import android.media.AudioAttributes;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.os.Trace;
-import android.support.annotation.ColorRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.RequiresPermission;
-import android.support.annotation.StringRes;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.os.BuildCompat;
 import android.telecom.Call.Details;
 import android.telecom.CallAudioState;
 import android.telecom.PhoneAccount;
@@ -62,22 +55,26 @@
 import android.text.BidiFormatter;
 import android.text.Spannable;
 import android.text.SpannableString;
-import android.text.Spanned;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 import android.text.style.ForegroundColorSpan;
+
+import androidx.annotation.ColorRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresPermission;
+import androidx.annotation.StringRes;
+import androidx.core.content.res.ResourcesCompat;
+
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.ContactsUtils.UserType;
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.contactphoto.BitmapUtil;
 import com.android.dialer.contacts.ContactsComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.enrichedcall.Session;
 import com.android.dialer.lettertile.LetterTileDrawable;
 import com.android.dialer.lettertile.LetterTileDrawable.ContactType;
-import com.android.dialer.multimedia.MultimediaData;
 import com.android.dialer.notification.NotificationChannelId;
 import com.android.dialer.oem.MotorolaUtils;
 import com.android.dialer.theme.base.ThemeComponent;
@@ -85,7 +82,7 @@
 import com.android.incallui.ContactInfoCache.ContactCacheEntry;
 import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
 import com.android.incallui.InCallPresenter.InCallState;
-import com.android.incallui.async.PausableExecutorImpl;
+import com.android.incallui.async.PausableExecutor;
 import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
@@ -95,15 +92,13 @@
 import com.android.incallui.ringtone.DialerRingtoneManager;
 import com.android.incallui.ringtone.InCallTonePlayer;
 import com.android.incallui.ringtone.ToneGeneratorFactory;
-import com.android.incallui.speakeasy.SpeakEasyComponent;
 import com.android.incallui.videotech.utils.SessionModificationState;
-import com.google.common.base.Optional;
+
 import java.util.Objects;
 
 /** This class adds Notifications to the status bar for the in-call experience. */
 public class StatusBarNotifier
     implements InCallPresenter.InCallStateListener,
-        EnrichedCallManager.StateChangedListener,
         ContactInfoCacheCallback {
 
   private static final int NOTIFICATION_ID = 1;
@@ -141,7 +136,7 @@
     this.contactInfoCache = contactInfoCache;
     dialerRingtoneManager =
         new DialerRingtoneManager(
-            new InCallTonePlayer(new ToneGeneratorFactory(), new PausableExecutorImpl()),
+            new InCallTonePlayer(new ToneGeneratorFactory(), new PausableExecutor()),
             CallList.getInstance());
     currentNotification = NOTIFICATION_NONE;
     Trace.endSection();
@@ -175,7 +170,7 @@
    */
   private static PendingIntent createNotificationPendingIntent(Context context, String action) {
     final Intent intent = new Intent(action, null, context, NotificationBroadcastReceiver.class);
-    return PendingIntent.getBroadcast(context, 0, intent, 0);
+    return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
   }
 
   /** Creates notifications according to the state we receive from {@link InCallPresenter}. */
@@ -186,12 +181,6 @@
     updateNotification();
   }
 
-  @Override
-  public void onEnrichedCallStateChanged() {
-    LogUtil.enterBlock("StatusBarNotifier.onEnrichedCallStateChanged");
-    updateNotification();
-  }
-
   /**
    * Updates the phone app's status bar notification *and* launches the incoming call UI in response
    * to a new incoming call.
@@ -297,20 +286,10 @@
     if (callState == DialerCallState.INCOMING
         || callState == DialerCallState.CALL_WAITING
         || isVideoUpgradeRequest) {
-      if (ConfigProviderComponent.get(context)
-          .getConfigProvider()
-          .getBoolean("quiet_incoming_call_if_ui_showing", true)) {
         notificationType =
             InCallPresenter.getInstance().isShowingInCallUi()
                 ? NOTIFICATION_INCOMING_CALL_QUIET
                 : NOTIFICATION_INCOMING_CALL;
-      } else {
-        boolean alreadyActive =
-            callList.getActiveOrBackgroundCall() != null
-                && InCallPresenter.getInstance().isShowingInCallUi();
-        notificationType =
-            alreadyActive ? NOTIFICATION_INCOMING_CALL_QUIET : NOTIFICATION_INCOMING_CALL;
-      }
     } else {
       notificationType = NOTIFICATION_IN_CALL;
     }
@@ -340,7 +319,7 @@
     Notification.Builder publicBuilder = new Notification.Builder(context);
     publicBuilder
         .setSmallIcon(iconResId)
-        .setColor(ThemeComponent.get(context).theme().getColorPrimary())
+        .setColor(ThemeComponent.get(context).theme().getColorCallNotificationBackground())
         // Hide work call state for the lock screen notification
         .setContentTitle(getContentString(call, ContactsUtils.USER_TYPE_CURRENT));
     setNotificationWhen(call, callState, publicBuilder);
@@ -356,15 +335,11 @@
     LogUtil.i("StatusBarNotifier.buildAndSendNotification", "notificationType=" + notificationType);
     switch (notificationType) {
       case NOTIFICATION_INCOMING_CALL:
-        if (BuildCompat.isAtLeastO()) {
-          builder.setChannelId(NotificationChannelId.INCOMING_CALL);
-        }
+        builder.setChannelId(NotificationChannelId.INCOMING_CALL);
         // Set the intent as a full screen intent as well if a call is incoming
         configureFullScreenIntent(builder, createLaunchPendingIntent(true /* isFullScreen */));
         // Set the notification category and bump the priority for incoming calls
         builder.setCategory(Notification.CATEGORY_CALL);
-        // This will be ignored on O+ and handled by the channel
-        builder.setPriority(Notification.PRIORITY_MAX);
         if (currentNotification != NOTIFICATION_INCOMING_CALL) {
           LogUtil.i(
               "StatusBarNotifier.buildAndSendNotification",
@@ -375,16 +350,12 @@
         }
         break;
       case NOTIFICATION_INCOMING_CALL_QUIET:
-        if (BuildCompat.isAtLeastO()) {
-          builder.setChannelId(NotificationChannelId.ONGOING_CALL);
-        }
+        builder.setChannelId(NotificationChannelId.ONGOING_CALL);
         break;
       case NOTIFICATION_IN_CALL:
-        if (BuildCompat.isAtLeastO()) {
-          publicBuilder.setColorized(true);
-          builder.setColorized(true);
-          builder.setChannelId(NotificationChannelId.ONGOING_CALL);
-        }
+        publicBuilder.setColorized(true);
+        builder.setColorized(true);
+        builder.setChannelId(NotificationChannelId.ONGOING_CALL);
         break;
       default:
         break;
@@ -395,7 +366,7 @@
     builder.setSmallIcon(iconResId);
     builder.setContentTitle(contentTitle);
     builder.setLargeIcon(largeIcon);
-    builder.setColor(InCallPresenter.getInstance().getThemeColorManager().getPrimaryColor());
+    builder.setColor(ThemeComponent.get(context).theme().getColorCallNotificationBackground());
 
     if (isVideoUpgradeRequest) {
       builder.setUsesChronometer(false);
@@ -435,7 +406,6 @@
     TelecomAdapter.getInstance().startForegroundNotification(NOTIFICATION_ID, notification);
 
     Trace.endSection();
-    call.getLatencyReport().onNotificationShown();
     currentNotification = notificationType;
     Trace.endSection();
   }
@@ -456,7 +426,6 @@
         addVideoCallAction(builder);
       } else {
         addAnswerAction(builder);
-        addSpeakeasyAnswerAction(builder, call);
       }
     }
   }
@@ -557,7 +526,6 @@
   }
 
   /** Returns the main string to use in the notification. */
-  @VisibleForTesting
   @Nullable
   String getContentTitle(ContactCacheEntry contactInfo, DialerCall call) {
     if (call.isConferenceCall()) {
@@ -583,10 +551,14 @@
     // Query {@link Contacts#CONTENT_LOOKUP_URI} directly with work lookup key is not allowed.
     // So, do not pass {@link Contacts#CONTENT_LOOKUP_URI} to NotificationManager to avoid
     // NotificationManager using it.
+    String uri = null;
     if (contactInfo.lookupUri != null && contactInfo.userType != ContactsUtils.USER_TYPE_WORK) {
-      builder.addPerson(contactInfo.lookupUri.toString());
+      uri = contactInfo.lookupUri.toString();
     } else if (!TextUtils.isEmpty(call.getNumber())) {
-      builder.addPerson(Uri.fromParts(PhoneAccount.SCHEME_TEL, call.getNumber(), null).toString());
+      uri = Uri.fromParts(PhoneAccount.SCHEME_TEL, call.getNumber(), null).toString();
+    }
+    if (uri != null) {
+      builder.addPerson(new Person.Builder().setUri(uri).build());
     }
   }
 
@@ -621,7 +593,8 @@
     }
 
     if (call.isSpam()) {
-      Drawable drawable = resources.getDrawable(R.drawable.blocked_contact, context.getTheme());
+      Drawable drawable = ResourcesCompat.getDrawable(resources, R.drawable.blocked_contact,
+              context.getTheme());
       largeIcon = DrawableConverter.drawableToBitmap(drawable);
     }
     Trace.endSection();
@@ -643,8 +616,7 @@
    * Returns the appropriate icon res Id to display based on the call for which we want to display
    * information.
    */
-  @VisibleForTesting
-  public int getIconToDisplay(DialerCall call) {
+  private int getIconToDisplay(DialerCall call) {
     // Even if both lines are in use, we only show a single item in
     // the expanded Notifications UI.  It's labeled "Ongoing call"
     // (or "On hold" if there's only one call, and it's on hold.)
@@ -658,21 +630,10 @@
             == SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST
         || call.isVideoCall()) {
       return R.drawable.quantum_ic_videocam_vd_white_24;
-    } else if (call.hasProperty(PROPERTY_HIGH_DEF_AUDIO)
-        && MotorolaUtils.shouldShowHdIconInNotification(context)) {
-      // Normally when a call is ongoing the status bar displays an icon of a phone. This is a
-      // helpful hint for users so they know how to get back to the call. For Sprint HD calls, we
-      // replace this icon with an icon of a phone with a HD badge. This is a carrier requirement.
-      return R.drawable.ic_hd_call;
     } else if (call.hasProperty(Details.PROPERTY_HAS_CDMA_VOICE_PRIVACY)) {
       return R.drawable.quantum_ic_phone_locked_vd_theme_24;
     }
-    // If ReturnToCall is enabled, use the static icon. The animated one will show in the bubble.
-    if (ReturnToCallController.isEnabled(context)) {
-      return R.drawable.quantum_ic_call_vd_theme_24;
-    } else {
-      return R.drawable.on_going_call;
-    }
+    return R.drawable.on_going_call;
   }
 
   /** Returns the message to use with the notification. */
@@ -707,8 +668,6 @@
     if (isIncomingOrWaiting) {
       if (call.isSpam()) {
         message = context.getString(R.string.notification_incoming_spam_call);
-      } else if (shouldShowEnrichedCallNotification(call.getEnrichedCallSession())) {
-        message = context.getString(getECIncomingCallText(call.getEnrichedCallSession()));
       } else if (call.hasProperty(Details.PROPERTY_WIFI)) {
         message = context.getString(R.string.notification_incoming_call_wifi_template, wifiBrand);
       } else if (call.getAccountHandle() != null && hasMultiplePhoneAccounts(call)) {
@@ -764,75 +723,6 @@
     }
   }
 
-  private boolean shouldShowEnrichedCallNotification(Session session) {
-    if (session == null) {
-      return false;
-    }
-    return session.getMultimediaData().hasData() || session.getMultimediaData().isImportant();
-  }
-
-  private int getECIncomingCallText(Session session) {
-    int resId;
-    MultimediaData data = session.getMultimediaData();
-    boolean hasImage = data.hasImageData();
-    boolean hasSubject = !TextUtils.isEmpty(data.getText());
-    boolean hasMap = data.getLocation() != null;
-    if (data.isImportant()) {
-      if (hasMap) {
-        if (hasImage) {
-          if (hasSubject) {
-            resId = R.string.important_notification_incoming_call_with_photo_message_location;
-          } else {
-            resId = R.string.important_notification_incoming_call_with_photo_location;
-          }
-        } else if (hasSubject) {
-          resId = R.string.important_notification_incoming_call_with_message_location;
-        } else {
-          resId = R.string.important_notification_incoming_call_with_location;
-        }
-      } else if (hasImage) {
-        if (hasSubject) {
-          resId = R.string.important_notification_incoming_call_with_photo_message;
-        } else {
-          resId = R.string.important_notification_incoming_call_with_photo;
-        }
-      } else if (hasSubject) {
-        resId = R.string.important_notification_incoming_call_with_message;
-      } else {
-        resId = R.string.important_notification_incoming_call;
-      }
-      if (context.getString(resId).length() > 50) {
-        resId = R.string.important_notification_incoming_call_attachments;
-      }
-    } else {
-      if (hasMap) {
-        if (hasImage) {
-          if (hasSubject) {
-            resId = R.string.notification_incoming_call_with_photo_message_location;
-          } else {
-            resId = R.string.notification_incoming_call_with_photo_location;
-          }
-        } else if (hasSubject) {
-          resId = R.string.notification_incoming_call_with_message_location;
-        } else {
-          resId = R.string.notification_incoming_call_with_location;
-        }
-      } else if (hasImage) {
-        if (hasSubject) {
-          resId = R.string.notification_incoming_call_with_photo_message;
-        } else {
-          resId = R.string.notification_incoming_call_with_photo;
-        }
-      } else {
-        resId = R.string.notification_incoming_call_with_message;
-      }
-    }
-    if (context.getString(resId).length() > 50) {
-      resId = R.string.notification_incoming_call_attachments;
-    }
-    return resId;
-  }
-
   private CharSequence getMultiSimIncomingText(DialerCall call) {
     PhoneAccount phoneAccount =
         context.getSystemService(TelecomManager.class).getPhoneAccount(call.getAccountHandle());
@@ -874,13 +764,11 @@
 
   private Spannable getActionText(@StringRes int stringRes, @ColorRes int colorRes) {
     Spannable spannable = new SpannableString(context.getText(stringRes));
-    if (VERSION.SDK_INT >= VERSION_CODES.N_MR1) {
-      // This will only work for cases where the Notification.Builder has a fullscreen intent set
-      // Notification.Builder that does not have a full screen intent will take the color of the
-      // app and the following leads to a no-op.
-      spannable.setSpan(
-          new ForegroundColorSpan(context.getColor(colorRes)), 0, spannable.length(), 0);
-    }
+    // This will only work for cases where the Notification.Builder has a fullscreen intent set
+    // Notification.Builder that does not have a full screen intent will take the color of the
+    // app and the following leads to a no-op.
+    spannable.setSpan(
+        new ForegroundColorSpan(context.getColor(colorRes)), 0, spannable.length(), 0);
     return spannable;
   }
 
@@ -892,55 +780,13 @@
         createNotificationPendingIntent(context, ACTION_ANSWER_VOICE_INCOMING_CALL);
     builder.addAction(
         new Notification.Action.Builder(
-                Icon.createWithResource(context, R.drawable.quantum_ic_call_white_24),
+                Icon.createWithResource(context, R.drawable.quantum_ic_call_vd_theme_24),
                 getActionText(
                     R.string.notification_action_answer, R.color.notification_action_accept),
                 answerVoicePendingIntent)
             .build());
   }
 
-  private void addSpeakeasyAnswerAction(Notification.Builder builder, DialerCall call) {
-    if (!call.isSpeakEasyEligible()) {
-      return;
-    }
-
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("enable_speakeasy_notification_button", false)) {
-      return;
-    }
-
-    if (!SpeakEasyComponent.get(context).speakEasyCallManager().isAvailable(context)) {
-      return;
-    }
-
-    Optional<Integer> buttonText = SpeakEasyComponent.get(context).speakEasyTextResource();
-    if (!buttonText.isPresent()) {
-      return;
-    }
-
-    LogUtil.d("StatusBarNotifier.addSpeakeasyAnswerAction", "showing button");
-    PendingIntent answerVoicePendingIntent =
-        createNotificationPendingIntent(context, ACTION_ANSWER_SPEAKEASY_CALL);
-
-    Spannable spannable = new SpannableString(context.getText(buttonText.get()));
-    // TODO(erfanian): Migrate these color values to somewhere more permanent in subsequent
-    // implementation.
-    spannable.setSpan(
-        new ForegroundColorSpan(
-            context.getColor(R.color.DO_NOT_USE_OR_I_WILL_BREAK_YOU_text_span_tertiary_button)),
-        0,
-        spannable.length(),
-        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-
-    builder.addAction(
-        new Notification.Action.Builder(
-                Icon.createWithResource(context, R.drawable.quantum_ic_call_white_24),
-                spannable,
-                answerVoicePendingIntent)
-            .build());
-  }
-
   private void addDismissAction(Notification.Builder builder) {
     LogUtil.d(
         "StatusBarNotifier.addDismissAction",
@@ -949,7 +795,7 @@
         createNotificationPendingIntent(context, ACTION_DECLINE_INCOMING_CALL);
     builder.addAction(
         new Notification.Action.Builder(
-                Icon.createWithResource(context, R.drawable.quantum_ic_close_white_24),
+                Icon.createWithResource(context, R.drawable.quantum_ic_close_vd_theme_24),
                 getActionText(
                     R.string.notification_action_dismiss, R.color.notification_action_dismiss),
                 declinePendingIntent)
@@ -964,7 +810,7 @@
         createNotificationPendingIntent(context, ACTION_HANG_UP_ONGOING_CALL);
     builder.addAction(
         new Notification.Action.Builder(
-                Icon.createWithResource(context, R.drawable.quantum_ic_call_end_white_24),
+                Icon.createWithResource(context, R.drawable.quantum_ic_call_end_vd_theme_24),
                 context.getText(R.string.notification_action_end_call),
                 hangupPendingIntent)
             .build());
@@ -1096,7 +942,7 @@
     // and clicks the notification's expanded view.  It's also used to
     // launch the InCallActivity immediately when when there's an incoming
     // call (see the "fullScreenIntent" field below).
-    return PendingIntent.getActivity(context, requestCode, intent, 0);
+    return PendingIntent.getActivity(context, requestCode, intent, PendingIntent.FLAG_IMMUTABLE);
   }
 
   private void setStatusBarCallListener(StatusBarCallListener listener) {
@@ -1134,7 +980,7 @@
 
   private class StatusBarCallListener implements DialerCallListener {
 
-    private DialerCall dialerCall;
+    private final DialerCall dialerCall;
 
     StatusBarCallListener(DialerCall dialerCall) {
       this.dialerCall = dialerCall;
@@ -1173,13 +1019,11 @@
     @Override
     public void onInternationalCallOnWifi() {}
 
-    @Override
-    public void onEnrichedCallSessionUpdate() {}
-
     /**
      * Responds to changes in the session modification state for the call by dismissing the status
      * bar notification as required.
      */
+    @SuppressLint("MissingPermission")
     @Override
     public void onDialerCallSessionModificationStateChange() {
       if (dialerCall.getVideoTech().getSessionModificationState()
diff --git a/java/com/android/incallui/ThemeColorManager.java b/java/com/android/incallui/ThemeColorManager.java
index 1d4c287..1b73354 100644
--- a/java/com/android/incallui/ThemeColorManager.java
+++ b/java/com/android/incallui/ThemeColorManager.java
@@ -16,16 +16,16 @@
 
 package com.android.incallui;
 
+import static android.telecom.PhoneAccount.NO_HIGHLIGHT_COLOR;
+
 import android.content.Context;
-import android.graphics.Color;
-import android.support.annotation.ColorInt;
-import android.support.annotation.Nullable;
-import android.support.v4.graphics.ColorUtils;
-import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.Nullable;
+
 import com.android.contacts.common.util.MaterialColorMapUtils;
 import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
+import com.android.dialer.R;
 import com.android.incallui.call.DialerCall;
 
 /**
@@ -41,32 +41,19 @@
   @ColorInt private int backgroundColorBottom;
   @ColorInt private int backgroundColorSolid;
 
-  /**
-   * If there is no actual call currently in the call list, this will be used as a fallback to
-   * determine the theme color for InCallUI.
-   */
-  @Nullable private PhoneAccountHandle pendingPhoneAccountHandle;
-
   public ThemeColorManager(MaterialColorMapUtils colorMap) {
     this.colorMap = colorMap;
   }
 
-  public void setPendingPhoneAccountHandle(@Nullable PhoneAccountHandle pendingPhoneAccountHandle) {
-    this.pendingPhoneAccountHandle = pendingPhoneAccountHandle;
-  }
-
   public void onForegroundCallChanged(Context context, @Nullable DialerCall newForegroundCall) {
     if (newForegroundCall == null) {
-      updateThemeColors(context, getHighlightColor(context, pendingPhoneAccountHandle), false);
+      updateThemeColors(context, false);
     } else {
-      updateThemeColors(
-          context,
-          getHighlightColor(context, newForegroundCall.getAccountHandle()),
-          newForegroundCall.isSpam());
+      updateThemeColors(context, newForegroundCall.isSpam());
     }
   }
 
-  private void updateThemeColors(Context context, @ColorInt int highlightColor, boolean isSpam) {
+  private void updateThemeColors(Context context, boolean isSpam) {
     MaterialPalette palette;
     if (isSpam) {
       palette =
@@ -76,19 +63,11 @@
       backgroundColorBottom = context.getColor(R.color.incall_background_gradient_spam_bottom);
       backgroundColorSolid = context.getColor(R.color.incall_background_multiwindow_spam);
     } else {
-      palette = colorMap.calculatePrimaryAndSecondaryColor(highlightColor);
+      palette = colorMap.calculatePrimaryAndSecondaryColor(NO_HIGHLIGHT_COLOR);
       backgroundColorTop = context.getColor(R.color.incall_background_gradient_top);
       backgroundColorMiddle = context.getColor(R.color.incall_background_gradient_middle);
       backgroundColorBottom = context.getColor(R.color.incall_background_gradient_bottom);
       backgroundColorSolid = context.getColor(R.color.incall_background_multiwindow);
-      if (highlightColor != PhoneAccount.NO_HIGHLIGHT_COLOR) {
-        // The default background gradient has a subtle alpha. We grab that alpha and apply it to
-        // the phone account color.
-        backgroundColorTop = applyAlpha(palette.mPrimaryColor, backgroundColorTop);
-        backgroundColorMiddle = applyAlpha(palette.mPrimaryColor, backgroundColorMiddle);
-        backgroundColorBottom = applyAlpha(palette.mPrimaryColor, backgroundColorBottom);
-        backgroundColorSolid = applyAlpha(palette.mPrimaryColor, backgroundColorSolid);
-      }
     }
 
     primaryColor = palette.mPrimaryColor;
@@ -96,17 +75,6 @@
   }
 
   @ColorInt
-  private int getHighlightColor(Context context, @Nullable PhoneAccountHandle handle) {
-    if (handle != null) {
-      PhoneAccount account = context.getSystemService(TelecomManager.class).getPhoneAccount(handle);
-      if (account != null) {
-        return account.getHighlightColor();
-      }
-    }
-    return PhoneAccount.NO_HIGHLIGHT_COLOR;
-  }
-
-  @ColorInt
   public int getPrimaryColor() {
     return primaryColor;
   }
@@ -135,9 +103,4 @@
   public int getBackgroundColorSolid() {
     return backgroundColorSolid;
   }
-
-  @ColorInt
-  private static int applyAlpha(@ColorInt int color, @ColorInt int sourceColorWithAlpha) {
-    return ColorUtils.setAlphaComponent(color, Color.alpha(sourceColorWithAlpha));
-  }
 }
diff --git a/java/com/android/incallui/TransactionSafeFragmentActivity.java b/java/com/android/incallui/TransactionSafeFragmentActivity.java
index 696ecf1..0e2c5af 100644
--- a/java/com/android/incallui/TransactionSafeFragmentActivity.java
+++ b/java/com/android/incallui/TransactionSafeFragmentActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,10 @@
 
 package com.android.incallui;
 
+import android.app.Activity;
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
+
+import androidx.fragment.app.FragmentActivity;
 
 /**
  * A common superclass that keeps track of whether an {@link Activity} has saved its state yet or
diff --git a/java/com/android/incallui/VideoCallPresenter.java b/java/com/android/incallui/VideoCallPresenter.java
index 0d1d1a5..31f620d 100644
--- a/java/com/android/incallui/VideoCallPresenter.java
+++ b/java/com/android/incallui/VideoCallPresenter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,16 +21,19 @@
 import android.content.Context;
 import android.graphics.Point;
 import android.os.Handler;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import android.os.Looper;
 import android.telecom.InCallService.VideoCall;
 import android.telecom.VideoProfile;
 import android.telecom.VideoProfile.CameraCapabilities;
 import android.view.Surface;
 import android.view.SurfaceView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.incallui.InCallPresenter.InCallDetailsListener;
 import com.android.incallui.InCallPresenter.InCallOrientationListener;
@@ -48,6 +52,7 @@
 import com.android.incallui.videosurface.protocol.VideoSurfaceTexture;
 import com.android.incallui.videotech.utils.SessionModificationState;
 import com.android.incallui.videotech.utils.VideoUtils;
+
 import java.util.Objects;
 
 /**
@@ -85,7 +90,7 @@
 
   private static boolean isVideoMode = false;
 
-  private final Handler handler = new Handler();
+  private final Handler handler = new Handler(Looper.getMainLooper());
   private VideoCallScreen videoCallScreen;
 
   /** The current context. */
@@ -127,24 +132,20 @@
    * enter fullscreen mode if the dialpad is visible (doing so would make it impossible to exit the
    * dialpad).
    */
-  private Runnable autoFullscreenRunnable =
-      new Runnable() {
-        @Override
-        public void run() {
-          if (autoFullScreenPending
-              && !InCallPresenter.getInstance().isDialpadVisible()
-              && isVideoMode) {
+  private final Runnable autoFullscreenRunnable = () -> {
+    if (autoFullScreenPending
+            && !InCallPresenter.getInstance().isDialpadVisible()
+            && isVideoMode) {
 
-            LogUtil.v("VideoCallPresenter.mAutoFullScreenRunnable", "entering fullscreen mode");
-            InCallPresenter.getInstance().setFullScreen(true);
-            autoFullScreenPending = false;
-          } else {
-            LogUtil.v(
-                "VideoCallPresenter.mAutoFullScreenRunnable",
-                "skipping scheduled fullscreen mode.");
-          }
-        }
-      };
+      LogUtil.v("VideoCallPresenter.mAutoFullScreenRunnable", "entering fullscreen mode");
+      InCallPresenter.getInstance().setFullScreen(true);
+      autoFullScreenPending = false;
+    } else {
+      LogUtil.v(
+              "VideoCallPresenter.mAutoFullScreenRunnable",
+              "skipping scheduled fullscreen mode.");
+    }
+  };
 
   private boolean isVideoCallScreenUiReady;
 
@@ -1101,12 +1102,6 @@
           "VideoCallPresenter.shouldShowCameraPermissionToast", "already shown for this call");
       return false;
     }
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("camera_permission_dialog_allowed", true)) {
-      LogUtil.i("VideoCallPresenter.shouldShowCameraPermissionToast", "disabled by config");
-      return false;
-    }
     return !VideoUtils.hasCameraPermission(context)
         || !PermissionsUtil.hasCameraPrivacyToastShown(context);
   }
@@ -1122,7 +1117,7 @@
     Activity activity = videoCallScreen.getVideoCallScreenFragment().getActivity();
     if (activity != null) {
       Point screenSize = new Point();
-      activity.getWindowManager().getDefaultDisplay().getSize(screenSize);
+      activity.getDisplay().getSize(screenSize);
       getRemoteVideoSurfaceTexture().setSurfaceDimensions(screenSize);
     }
   }
diff --git a/java/com/android/incallui/VideoPauseController.java b/java/com/android/incallui/VideoPauseController.java
index 2bdbce3..3a444c0 100644
--- a/java/com/android/incallui/VideoPauseController.java
+++ b/java/com/android/incallui/VideoPauseController.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +17,8 @@
 
 package com.android.incallui;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.InCallPresenter.InCallState;
@@ -25,6 +27,7 @@
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.state.DialerCallState;
+
 import java.util.Objects;
 
 /**
diff --git a/java/com/android/incallui/answer/bindings/AnswerBindings.java b/java/com/android/incallui/answer/bindings/AnswerBindings.java
index c370d74..9f4199b 100644
--- a/java/com/android/incallui/answer/bindings/AnswerBindings.java
+++ b/java/com/android/incallui/answer/bindings/AnswerBindings.java
@@ -29,8 +29,7 @@
       boolean isVideoUpgradeRequest,
       boolean isSelfManagedCamera,
       boolean allowAnswerAndRelease,
-      boolean hasCallOnHold,
-      boolean allowSpeakEasy) {
+      boolean hasCallOnHold) {
     return AnswerFragment.newInstance(
         callId,
         isRttCall,
@@ -38,7 +37,6 @@
         isVideoUpgradeRequest,
         isSelfManagedCamera,
         allowAnswerAndRelease,
-        hasCallOnHold,
-        allowSpeakEasy);
+        hasCallOnHold);
   }
 }
diff --git a/java/com/android/incallui/answer/impl/AffordanceHolderLayout.java b/java/com/android/incallui/answer/impl/AffordanceHolderLayout.java
index 1a8c956..a0833ff 100644
--- a/java/com/android/incallui/answer/impl/AffordanceHolderLayout.java
+++ b/java/com/android/incallui/answer/impl/AffordanceHolderLayout.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,11 +19,13 @@
 
 import android.content.Context;
 import android.content.res.Configuration;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
 import android.widget.FrameLayout;
+
+import androidx.annotation.Nullable;
+
 import com.android.incallui.answer.impl.affordance.SwipeButtonHelper;
 import com.android.incallui.answer.impl.affordance.SwipeButtonHelper.Callback;
 import com.android.incallui.answer.impl.affordance.SwipeButtonView;
@@ -31,7 +34,7 @@
 /** Layout that delegates touches to its SwipeButtonHelper */
 public class AffordanceHolderLayout extends FrameLayout {
 
-  private SwipeButtonHelper affordanceHelper;
+  private final SwipeButtonHelper affordanceHelper;
 
   private Callback affordanceCallback;
 
diff --git a/java/com/android/incallui/answer/impl/AndroidManifest.xml b/java/com/android/incallui/answer/impl/AndroidManifest.xml
deleted file mode 100644
index 482c716..0000000
--- a/java/com/android/incallui/answer/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.incallui.answer.impl">
-</manifest>
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index 2405b8e..d3ce392 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,45 +23,40 @@
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
 import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
 import android.app.KeyguardManager;
 import android.app.KeyguardManager.KeyguardDismissCallback;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.location.Location;
 import android.net.Uri;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Trace;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.FloatRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.Fragment;
 import android.text.TextUtils;
 import android.transition.TransitionManager;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.AccessibilityDelegate;
-import android.view.View.OnClickListener;
 import android.view.ViewGroup;
-import android.view.ViewTreeObserver.OnGlobalLayoutListener;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.FloatRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.fragment.app.Fragment;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.MathUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.multimedia.MultimediaData;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.ViewUtil;
@@ -85,15 +81,12 @@
 import com.android.incallui.incall.protocol.PrimaryInfo;
 import com.android.incallui.incall.protocol.SecondaryInfo;
 import com.android.incallui.incalluilock.InCallUiLock;
-import com.android.incallui.maps.MapsComponent;
 import com.android.incallui.sessiondata.AvatarPresenter;
 import com.android.incallui.sessiondata.MultimediaFragment;
-import com.android.incallui.speakeasy.Annotations.SpeakEasyChipResourceId;
-import com.android.incallui.speakeasy.SpeakEasyComponent;
 import com.android.incallui.util.AccessibilityUtil;
 import com.android.incallui.video.protocol.VideoCallScreen;
 import com.android.incallui.videotech.utils.VideoUtils;
-import com.google.common.base.Optional;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -108,25 +101,19 @@
         AnswerMethodHolder,
         MultimediaFragment.Holder {
 
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  static final String ARG_CALL_ID = "call_id";
+  private static final String ARG_CALL_ID = "call_id";
 
-  static final String ARG_IS_RTT_CALL = "is_rtt_call";
+  private static final String ARG_IS_RTT_CALL = "is_rtt_call";
 
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  static final String ARG_IS_VIDEO_CALL = "is_video_call";
+  private static final String ARG_IS_VIDEO_CALL = "is_video_call";
 
-  static final String ARG_ALLOW_ANSWER_AND_RELEASE = "allow_answer_and_release";
+  private static final String ARG_ALLOW_ANSWER_AND_RELEASE = "allow_answer_and_release";
 
-  static final String ARG_HAS_CALL_ON_HOLD = "has_call_on_hold";
+  private static final String ARG_HAS_CALL_ON_HOLD = "has_call_on_hold";
 
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  static final String ARG_IS_VIDEO_UPGRADE_REQUEST = "is_video_upgrade_request";
+  private static final String ARG_IS_VIDEO_UPGRADE_REQUEST = "is_video_upgrade_request";
 
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  static final String ARG_IS_SELF_MANAGED_CAMERA = "is_self_managed_camera";
-
-  static final String ARG_ALLOW_SPEAK_EASY = "allow_speak_easy";
+  private static final String ARG_IS_SELF_MANAGED_CAMERA = "is_self_managed_camera";
 
   private static final String STATE_HAS_ANIMATED_ENTRY = "hasAnimated";
 
@@ -169,11 +156,11 @@
   private SecondaryBehavior answerAndReleaseBehavior;
   private ContactGridManager contactGridManager;
   private VideoCallScreen answerVideoCallScreen;
-  private Handler handler = new Handler(Looper.getMainLooper());
+  private final Handler handler = new Handler(Looper.getMainLooper());
 
   private enum SecondaryBehavior {
     REJECT_WITH_SMS(
-        R.drawable.quantum_ic_message_white_24,
+        R.drawable.quantum_ic_message_vd_theme_24,
         R.string.a11y_description_incoming_call_reject_with_sms,
         R.string.a11y_incoming_call_reject_with_sms,
         R.string.call_incoming_swipe_to_decline_with_message) {
@@ -205,8 +192,10 @@
       }
     };
 
-    @DrawableRes public int icon;
-    @StringRes public final int contentDescription;
+    @DrawableRes
+    public final int icon;
+    @StringRes
+    public final int contentDescription;
     @StringRes public final int accessibilityLabel;
     @StringRes public final int hintText;
 
@@ -229,11 +218,6 @@
     }
   }
 
-  private void performSpeakEasy(View unused) {
-    answerScreenDelegate.onSpeakEasyCall();
-    buttonAcceptClicked = true;
-  }
-
   private void performAnswerAndRelease() {
     restoreAnswerAndReleaseButtonAnimation();
     answerScreenDelegate.onAnswerAndReleaseCall();
@@ -244,14 +228,10 @@
     answerAndReleaseButton
         .animate()
         .alpha(0)
-        .withEndAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                affordanceHolderLayout.reset(false);
-                secondaryButton.animate().alpha(1);
-              }
-            });
+        .withEndAction(() -> {
+          affordanceHolderLayout.reset(false);
+          secondaryButton.animate().alpha(1);
+        });
   }
 
   private final AccessibilityDelegate accessibilityDelegate =
@@ -350,7 +330,7 @@
         }
       };
 
-  private Runnable swipeHintRestoreTimer = this::restoreSwipeHintTexts;
+  private final Runnable swipeHintRestoreTimer = this::restoreSwipeHintTexts;
 
   private void performSecondaryButtonAction() {
     secondaryBehavior.performAction(this);
@@ -367,8 +347,7 @@
       boolean isVideoUpgradeRequest,
       boolean isSelfManagedCamera,
       boolean allowAnswerAndRelease,
-      boolean hasCallOnHold,
-      boolean allowSpeakEasy) {
+      boolean hasCallOnHold) {
     Bundle bundle = new Bundle();
     bundle.putString(ARG_CALL_ID, Assert.isNotNull(callId));
     bundle.putBoolean(ARG_IS_RTT_CALL, isRttCall);
@@ -377,7 +356,6 @@
     bundle.putBoolean(ARG_IS_SELF_MANAGED_CAMERA, isSelfManagedCamera);
     bundle.putBoolean(ARG_ALLOW_ANSWER_AND_RELEASE, allowAnswerAndRelease);
     bundle.putBoolean(ARG_HAS_CALL_ON_HOLD, hasCallOnHold);
-    bundle.putBoolean(ARG_ALLOW_SPEAK_EASY, allowSpeakEasy);
 
     AnswerFragment instance = new AnswerFragment();
     instance.setArguments(bundle);
@@ -426,13 +404,7 @@
             : SecondaryBehavior.REJECT_WITH_SMS;
     secondaryBehavior.applyToView(secondaryButton);
 
-    secondaryButton.setOnClickListener(
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            performSecondaryButtonAction();
-          }
-        });
+    secondaryButton.setOnClickListener(v -> performSecondaryButtonAction());
     secondaryButton.setClickable(AccessibilityUtil.isAccessibilityEnabled(getContext()));
     secondaryButton.setFocusable(AccessibilityUtil.isAccessibilityEnabled(getContext()));
     secondaryButton.setAccessibilityDelegate(accessibilityDelegate);
@@ -457,35 +429,12 @@
       answerAndReleaseButton.setVisibility(View.INVISIBLE);
       answerScreenDelegate.onAnswerAndReleaseButtonDisabled();
     }
-    answerAndReleaseButton.setOnClickListener(
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            performAnswerAndReleaseButtonAction();
-          }
-        });
+    answerAndReleaseButton.setOnClickListener(v -> performAnswerAndReleaseButtonAction());
   }
 
   /** Initialize chip buttons */
   private void initChips() {
-
-    if (!allowSpeakEasy()) {
-      chipContainer.setVisibility(View.GONE);
-      return;
-    }
-    chipContainer.setVisibility(View.VISIBLE);
-
-    @SpeakEasyChipResourceId
-    Optional<Integer> chipLayoutOptional = SpeakEasyComponent.get(getContext()).speakEasyChip();
-    if (chipLayoutOptional.isPresent()) {
-
-      LinearLayout chipLayout =
-          (LinearLayout) getLayoutInflater().inflate(chipLayoutOptional.get(), null);
-
-      chipLayout.setOnClickListener(this::performSpeakEasy);
-
-      chipContainer.addView(chipLayout);
-    }
+    chipContainer.setVisibility(View.GONE);
   }
 
   @Override
@@ -493,11 +442,6 @@
     return getArguments().getBoolean(ARG_ALLOW_ANSWER_AND_RELEASE);
   }
 
-  @Override
-  public boolean allowSpeakEasy() {
-    return getArguments().getBoolean(ARG_ALLOW_SPEAK_EASY);
-  }
-
   private boolean hasCallOnHold() {
     return getArguments().getBoolean(ARG_HAS_CALL_ON_HOLD);
   }
@@ -574,11 +518,6 @@
         .setContactPhoto(
             primaryInfo.photoType() == ContactPhotoType.CONTACT ? primaryInfo.photo() : null);
     updateDataFragment();
-
-    if (primaryInfo.shouldShowLocation()) {
-      // Hide the avatar to make room for location
-      contactGridManager.setAvatarHidden(true);
-    }
   }
 
   private void updateDataFragment() {
@@ -592,8 +531,7 @@
     MultimediaData multimediaData = getSessionData();
     if (multimediaData != null
         && (!TextUtils.isEmpty(multimediaData.getText())
-            || (multimediaData.getImageUri() != null)
-            || (multimediaData.getLocation() != null && canShowMap()))) {
+            || (multimediaData.getImageUri() != null))) {
       // Need message fragment
       String subject = multimediaData.getText();
       Uri imageUri = multimediaData.getImageUri();
@@ -639,10 +577,6 @@
     return !isVideoCall() && !isVideoUpgradeRequest();
   }
 
-  private boolean canShowMap() {
-    return MapsComponent.get(getContext()).getMaps().isAvailable();
-  }
-
   @Override
   public void updateAvatar(AvatarPresenter avatarContainer) {
     contactGridManager.setAvatarImageView(
@@ -703,11 +637,6 @@
   }
 
   @Override
-  public void onDestroy() {
-    super.onDestroy();
-  }
-
-  @Override
   public View onCreateView(
       LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     Trace.beginSection("AnswerFragment.onCreateView");
@@ -732,18 +661,14 @@
     importanceBadge = view.findViewById(R.id.incall_important_call_badge);
     importanceBadge
         .getViewTreeObserver()
-        .addOnGlobalLayoutListener(
-            new OnGlobalLayoutListener() {
-              @Override
-              public void onGlobalLayout() {
-                int leftRightPadding = importanceBadge.getHeight() / 2;
-                importanceBadge.setPadding(
-                    leftRightPadding,
-                    importanceBadge.getPaddingTop(),
-                    leftRightPadding,
-                    importanceBadge.getPaddingBottom());
-              }
-            });
+        .addOnGlobalLayoutListener(() -> {
+          int leftRightPadding = importanceBadge.getHeight() / 2;
+          importanceBadge.setPadding(
+              leftRightPadding,
+              importanceBadge.getPaddingTop(),
+              leftRightPadding,
+              importanceBadge.getPaddingBottom());
+        });
     updateImportanceBadgeVisibility();
 
     contactGridManager = new ContactGridManager(view, null, 0, false /* showAnonymousAvatar */);
@@ -998,10 +923,7 @@
       if (context == null) {
         LogUtil.w(
             "AnswerFragment.rejectCall",
-            "Null context when rejecting call. Logger call was skipped");
-      } else {
-        Logger.get(context)
-            .logImpression(DialerImpression.Type.REJECT_INCOMING_CALL_FROM_ANSWER_SCREEN);
+            "Null context when rejecting call");
       }
       buttonRejectClicked = true;
       answerScreenDelegate.onReject();
@@ -1039,14 +961,10 @@
     secondaryButton
         .animate()
         .alpha(0)
-        .withEndAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                affordanceHolderLayout.reset(false);
-                secondaryButton.animate().alpha(1);
-              }
-            });
+        .withEndAction(() -> {
+          affordanceHolderLayout.reset(false);
+          secondaryButton.animate().alpha(1);
+        });
 
     TelecomUtil.silenceRinger(getContext());
   }
@@ -1057,17 +975,11 @@
   }
 
   @Override
-  @TargetApi(VERSION_CODES.O)
   public void smsSelected(@Nullable CharSequence text) {
     LogUtil.i("AnswerFragment.smsSelected", null);
     textResponsesFragment = null;
 
     if (text == null) {
-      if (VERSION.SDK_INT < VERSION_CODES.O) {
-        LogUtil.i("AnswerFragment.smsSelected", "below O, showing dialog directly");
-        showCustomSmsDialog();
-        return;
-      }
       if (!getContext().getSystemService(KeyguardManager.class).isKeyguardLocked()) {
         LogUtil.i("AnswerFragment.smsSelected", "not locked, showing dialog directly");
         showCustomSmsDialog();
diff --git a/java/com/android/incallui/answer/impl/AnswerVideoCallScreen.java b/java/com/android/incallui/answer/impl/AnswerVideoCallScreen.java
index 7a21676..4b16666 100644
--- a/java/com/android/incallui/answer/impl/AnswerVideoCallScreen.java
+++ b/java/com/android/incallui/answer/impl/AnswerVideoCallScreen.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,10 +19,13 @@
 
 import android.content.res.Configuration;
 import android.graphics.Point;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
 import android.view.TextureView;
 import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
@@ -33,7 +37,8 @@
 /** Shows a video preview for an incoming call. */
 public class AnswerVideoCallScreen implements VideoCallScreen {
   @NonNull private final String callId;
-  @NonNull private final Fragment fragment;
+  @NonNull
+  private final Fragment fragment;
   @NonNull private final TextureView textureView;
   @NonNull private final VideoCallScreenDelegate delegate;
 
diff --git a/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java b/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java
index 73476f2..a6f09f0 100644
--- a/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java
+++ b/java/com/android/incallui/answer/impl/CreateCustomSmsDialogFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,17 +20,18 @@
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
-import android.content.DialogInterface.OnShowListener;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v7.app.AppCompatDialogFragment;
 import android.text.Editable;
 import android.text.TextWatcher;
 import android.view.View;
 import android.view.WindowManager.LayoutParams;
 import android.widget.Button;
 import android.widget.EditText;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatDialogFragment;
+
+import com.android.dialer.R;
 import com.android.dialer.common.FragmentUtils;
 import com.android.incallui.incalluilock.InCallUiLock;
 
@@ -53,7 +55,7 @@
     super.onCreateDialog(savedInstanceState);
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
     View view = View.inflate(builder.getContext(), R.layout.fragment_custom_sms_dialog, null);
-    editText = (EditText) view.findViewById(R.id.custom_sms_input);
+    editText = view.findViewById(R.id.custom_sms_input);
     if (savedInstanceState != null) {
       editText.setText(savedInstanceState.getCharSequence(ARG_ENTERED_TEXT));
     }
@@ -65,43 +67,21 @@
     builder
         .setCancelable(true)
         .setView(view)
-        .setPositiveButton(
-            R.string.call_incoming_custom_message_send,
-            new DialogInterface.OnClickListener() {
-              @Override
-              public void onClick(DialogInterface dialogInterface, int i) {
-                FragmentUtils.getParentUnsafe(
-                        CreateCustomSmsDialogFragment.this, CreateCustomSmsHolder.class)
+        .setPositiveButton(R.string.call_incoming_custom_message_send, (dialogInterface, i) -> {
+            FragmentUtils.getParentUnsafe(
+                    CreateCustomSmsDialogFragment.this, CreateCustomSmsHolder.class)
                     .customSmsCreated(editText.getText().toString().trim());
-                dismiss();
-              }
-            })
-        .setNegativeButton(
-            R.string.call_incoming_custom_message_cancel,
-            new DialogInterface.OnClickListener() {
-              @Override
-              public void onClick(DialogInterface dialogInterface, int i) {
-                dismiss();
-              }
-            })
-        .setOnCancelListener(
-            new OnCancelListener() {
-              @Override
-              public void onCancel(DialogInterface dialogInterface) {
-                dismiss();
-              }
-            })
+            dismiss();
+        })
+        .setNegativeButton(R.string.call_incoming_custom_message_cancel,
+                (dialogInterface, i) -> dismiss())
+        .setOnCancelListener(dialogInterface -> dismiss())
         .setTitle(R.string.call_incoming_respond_via_sms_custom_message);
     final AlertDialog customMessagePopup = builder.create();
     customMessagePopup.setOnShowListener(
-        new OnShowListener() {
-          @Override
-          public void onShow(DialogInterface dialogInterface) {
-            ((AlertDialog) dialogInterface)
-                .getButton(AlertDialog.BUTTON_POSITIVE)
-                .setEnabled(false);
-          }
-        });
+            dialogInterface -> ((AlertDialog) dialogInterface)
+                    .getButton(AlertDialog.BUTTON_POSITIVE)
+                    .setEnabled(false));
 
     editText.addTextChangedListener(
         new TextWatcher() {
diff --git a/java/com/android/incallui/answer/impl/FixedAspectSurfaceView.java b/java/com/android/incallui/answer/impl/FixedAspectSurfaceView.java
index 1f7e6fe..ed63a41 100644
--- a/java/com/android/incallui/answer/impl/FixedAspectSurfaceView.java
+++ b/java/com/android/incallui/answer/impl/FixedAspectSurfaceView.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,6 +22,7 @@
 import android.util.AttributeSet;
 import android.view.SurfaceView;
 import android.view.View;
+
 import com.android.dialer.common.Assert;
 
 /**
diff --git a/java/com/android/incallui/answer/impl/SelfManagedAnswerVideoCallScreen.java b/java/com/android/incallui/answer/impl/SelfManagedAnswerVideoCallScreen.java
index b74c1ec..f6df9c9 100644
--- a/java/com/android/incallui/answer/impl/SelfManagedAnswerVideoCallScreen.java
+++ b/java/com/android/incallui/answer/impl/SelfManagedAnswerVideoCallScreen.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -26,18 +27,22 @@
 import android.hardware.camera2.CameraMetadata;
 import android.hardware.camera2.CaptureRequest;
 import android.hardware.camera2.params.StreamConfigurationMap;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.util.Size;
 import android.view.Surface;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.video.protocol.VideoCallScreen;
-import java.util.Arrays;
+
+import java.util.Collections;
 
 /**
  * Shows the local preview for the incoming video call or video upgrade request. This class is used
@@ -50,7 +55,8 @@
   private static final float ASPECT_TOLERANCE = 0.1f;
   private static final float TARGET_ASPECT = 16.f / 9.f;
 
-  @NonNull private final String callId;
+  @NonNull
+  private final String callId;
   @NonNull private final Fragment fragment;
   @NonNull private final FixedAspectSurfaceView surfaceView;
   private final Context context;
@@ -133,7 +139,7 @@
 
     try {
       manager.openCamera(cameraId, this, null);
-    } catch (CameraAccessException e) {
+    } catch (CameraAccessException | SecurityException e) {
       LogUtil.e("SelfManagedAnswerVideoCallScreen.openCamera", "failed to open camera", e);
     }
   }
@@ -219,7 +225,8 @@
     try {
       captureRequestBuilder = camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
       captureRequestBuilder.addTarget(surface);
-      camera.createCaptureSession(Arrays.asList(surface), new CaptureSessionCallback(), null);
+      camera.createCaptureSession(Collections.singletonList(surface), new CaptureSessionCallback(),
+              null);
     } catch (CameraAccessException e) {
       LogUtil.e(
           "SelfManagedAnswerVideoCallScreen.createCameraPreview", "failed to create preview", e);
diff --git a/java/com/android/incallui/answer/impl/SmsBottomSheetFragment.java b/java/com/android/incallui/answer/impl/SmsBottomSheetFragment.java
index 6742e4a..d8b5ba4 100644
--- a/java/com/android/incallui/answer/impl/SmsBottomSheetFragment.java
+++ b/java/com/android/incallui/answer/impl/SmsBottomSheetFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,21 +23,24 @@
 import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.BottomSheetDialogFragment;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
 import android.view.WindowManager;
 import android.widget.LinearLayout;
 import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.DpUtil;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.incalluilock.InCallUiLock;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -58,7 +62,7 @@
   @Nullable
   @Override
   public View onCreateView(
-      LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) {
+          LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) {
     LinearLayout layout = new LinearLayout(getContext());
     layout.setOrientation(LinearLayout.VERTICAL);
     List<CharSequence> items = getArguments().getCharSequenceArrayList(ARG_OPTIONS);
@@ -111,14 +115,11 @@
     textView.setLayoutParams(params);
 
     textView.setOnClickListener(
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            FragmentUtils.getParentUnsafe(SmsBottomSheetFragment.this, SmsSheetHolder.class)
-                .smsSelected(text);
-            dismiss();
-          }
-        });
+            v -> {
+              FragmentUtils.getParentUnsafe(SmsBottomSheetFragment.this, SmsSheetHolder.class)
+                  .smsSelected(text);
+              dismiss();
+            });
     return textView;
   }
 
diff --git a/java/com/android/incallui/answer/impl/affordance/AndroidManifest.xml b/java/com/android/incallui/answer/impl/affordance/AndroidManifest.xml
deleted file mode 100644
index 960fd71..0000000
--- a/java/com/android/incallui/answer/impl/affordance/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.incallui.answer.impl.affordance">
-</manifest>
diff --git a/java/com/android/incallui/answer/impl/affordance/SwipeButtonHelper.java b/java/com/android/incallui/answer/impl/affordance/SwipeButtonHelper.java
index 6fb520c..7352d68 100644
--- a/java/com/android/incallui/answer/impl/affordance/SwipeButtonHelper.java
+++ b/java/com/android/incallui/answer/impl/affordance/SwipeButtonHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,11 +21,14 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.view.MotionEvent;
 import android.view.VelocityTracker;
 import android.view.View;
 import android.view.ViewConfiguration;
+
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.incallui.answer.impl.utils.FlingAnimationUtils;
 import com.android.incallui.answer.impl.utils.Interpolators;
 
@@ -51,7 +55,8 @@
   private int minTranslationAmount;
   private int minFlingVelocity;
   private int hintGrowAmount;
-  @Nullable private SwipeButtonView leftIcon;
+  @Nullable
+  private SwipeButtonView leftIcon;
   @Nullable private SwipeButtonView rightIcon;
   private Animator swipeAnimator;
   private int minBackgroundRadius;
@@ -59,7 +64,7 @@
   private int touchTargetSize;
   private View targetedView;
   private boolean touchSlopExeeded;
-  private AnimatorListenerAdapter flingEndListener =
+  private final AnimatorListenerAdapter flingEndListener =
       new AnimatorListenerAdapter() {
         @Override
         public void onAnimationEnd(Animator animation) {
@@ -80,7 +85,7 @@
     public void run() {
       callback.onAnimationToSideEnded(rightPage);
     }
-  };
+  }
 
   public SwipeButtonHelper(Callback callback, Context context) {
     this.context = context;
@@ -335,16 +340,13 @@
     }
     ValueAnimator animator = ValueAnimator.ofFloat(targetView.getCircleRadius(), radius);
     animator.addUpdateListener(
-        new ValueAnimator.AnimatorUpdateListener() {
-          @Override
-          public void onAnimationUpdate(ValueAnimator animation) {
-            float newRadius = (float) animation.getAnimatedValue();
-            targetView.setCircleRadiusWithoutAnimation(newRadius);
-            float translation = getTranslationFromRadius(newRadius);
-            SwipeButtonHelper.this.translation = right ? -translation : translation;
-            updateIconsFromTranslation(targetView);
-          }
-        });
+            animation -> {
+              float newRadius = (float) animation.getAnimatedValue();
+              targetView.setCircleRadiusWithoutAnimation(newRadius);
+              float translation = getTranslationFromRadius(newRadius);
+              SwipeButtonHelper.this.translation = right ? -translation : translation;
+              updateIconsFromTranslation(targetView);
+            });
     return animator;
   }
 
@@ -383,13 +385,7 @@
 
     ValueAnimator animator = ValueAnimator.ofFloat(translation, target);
     flingAnimationUtils.apply(animator, translation, target, vel);
-    animator.addUpdateListener(
-        new ValueAnimator.AnimatorUpdateListener() {
-          @Override
-          public void onAnimationUpdate(ValueAnimator animation) {
-            translation = (float) animation.getAnimatedValue();
-          }
-        });
+    animator.addUpdateListener(animation -> translation = (float) animation.getAnimatedValue());
     animator.addListener(flingEndListener);
     if (!snapBack) {
       startFinishingCircleAnimation(vel * 0.375f, new AnimationEndRunnable(right), right);
@@ -600,8 +596,7 @@
       updateIcon(otherView, 0.0f, 0, true, false, true, false);
     } else {
       callback.onAnimationToSideStarted(!left, translation, 0);
-      translation =
-          left ? callback.getMaxTranslationDistance() : callback.getMaxTranslationDistance();
+      translation = callback.getMaxTranslationDistance();
       updateIcon(otherView, 0.0f, 0.0f, false, false, true, false);
       targetView.instantFinishAnimation();
       flingEndListener.onAnimationEnd(null);
diff --git a/java/com/android/incallui/answer/impl/affordance/SwipeButtonView.java b/java/com/android/incallui/answer/impl/affordance/SwipeButtonView.java
index 249c47a..931edc3 100644
--- a/java/com/android/incallui/answer/impl/affordance/SwipeButtonView.java
+++ b/java/com/android/incallui/answer/impl/affordance/SwipeButtonView.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -26,18 +27,22 @@
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.graphics.PorterDuff;
+import android.graphics.PorterDuffColorFilter;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.ViewAnimationUtils;
 import android.view.animation.Interpolator;
-import android.widget.ImageView;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatImageView;
+
+import com.android.dialer.R;
 import com.android.incallui.answer.impl.utils.FlingAnimationUtils;
 import com.android.incallui.answer.impl.utils.Interpolators;
 
 /** Button that allows swiping to trigger */
-public class SwipeButtonView extends ImageView {
+public class SwipeButtonView extends AppCompatImageView {
 
   private static final long CIRCLE_APPEAR_DURATION = 80;
   private static final long CIRCLE_DISAPPEAR_MAX_DURATION = 200;
@@ -59,9 +64,9 @@
   private ValueAnimator scaleAnimator;
   private float circleStartValue;
   private boolean circleWillBeHidden;
-  private int[] tempPoint = new int[2];
+  private final int[] tempPoint = new int[2];
   private float tmageScale = 1f;
-  private int circleColor;
+  private final int circleColor;
   private View previewView;
   private float circleStartRadius;
   private float maxCircleSize;
@@ -70,28 +75,28 @@
   private boolean finishing;
   private boolean launchingAffordance;
 
-  private AnimatorListenerAdapter clipEndListener =
+  private final AnimatorListenerAdapter clipEndListener =
       new AnimatorListenerAdapter() {
         @Override
         public void onAnimationEnd(Animator animation) {
           previewClipper = null;
         }
       };
-  private AnimatorListenerAdapter circleEndListener =
+  private final AnimatorListenerAdapter circleEndListener =
       new AnimatorListenerAdapter() {
         @Override
         public void onAnimationEnd(Animator animation) {
           circleAnimator = null;
         }
       };
-  private AnimatorListenerAdapter scaleEndListener =
+  private final AnimatorListenerAdapter scaleEndListener =
       new AnimatorListenerAdapter() {
         @Override
         public void onAnimationEnd(Animator animation) {
           scaleAnimator = null;
         }
       };
-  private AnimatorListenerAdapter alphaEndListener =
+  private final AnimatorListenerAdapter alphaEndListener =
       new AnimatorListenerAdapter() {
         @Override
         public void onAnimationEnd(Animator animation) {
@@ -108,11 +113,7 @@
   }
 
   public SwipeButtonView(Context context, AttributeSet attrs, int defStyleAttr) {
-    this(context, attrs, defStyleAttr, 0);
-  }
-
-  public SwipeButtonView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-    super(context, attrs, defStyleAttr, defStyleRes);
+    super(context, attrs, defStyleAttr);
     circlePaint = new Paint();
     circlePaint.setAntiAlias(true);
     circleColor = 0xffffffff;
@@ -158,7 +159,7 @@
     float alpha = circleRadius / minBackgroundRadius;
     alpha = Math.min(1.0f, alpha);
     int color = (int) colorInterpolator.evaluate(alpha, normalColor, inverseColor);
-    drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
+    drawable.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP));
   }
 
   private void drawBackgroundCircle(Canvas canvas) {
@@ -332,15 +333,11 @@
     circleAnimator = animator;
     circleStartValue = this.circleRadius;
     circleWillBeHidden = circleRadius == 0.0f;
-    animator.addUpdateListener(
-        new ValueAnimator.AnimatorUpdateListener() {
-          @Override
-          public void onAnimationUpdate(ValueAnimator animation) {
-            SwipeButtonView.this.circleRadius = (float) animation.getAnimatedValue();
-            updateIconColor();
-            invalidate();
-          }
-        });
+    animator.addUpdateListener(animation -> {
+      SwipeButtonView.this.circleRadius = (float) animation.getAnimatedValue();
+      updateIconColor();
+      invalidate();
+    });
     animator.addListener(circleEndListener);
     return animator;
   }
@@ -373,14 +370,10 @@
     } else {
       ValueAnimator animator = ValueAnimator.ofFloat(tmageScale, imageScale);
       scaleAnimator = animator;
-      animator.addUpdateListener(
-          new ValueAnimator.AnimatorUpdateListener() {
-            @Override
-            public void onAnimationUpdate(ValueAnimator animation) {
-              tmageScale = (float) animation.getAnimatedValue();
-              invalidate();
-            }
-          });
+      animator.addUpdateListener(animation -> {
+        tmageScale = (float) animation.getAnimatedValue();
+        invalidate();
+      });
       animator.addListener(scaleEndListener);
       if (interpolator == null) {
         interpolator =
@@ -442,17 +435,13 @@
       int currentAlpha = getImageAlpha();
       ValueAnimator animator = ValueAnimator.ofInt(currentAlpha, endAlpha);
       alphaAnimator = animator;
-      animator.addUpdateListener(
-          new ValueAnimator.AnimatorUpdateListener() {
-            @Override
-            public void onAnimationUpdate(ValueAnimator animation) {
-              int alpha = (int) animation.getAnimatedValue();
-              if (background != null) {
-                background.mutate().setAlpha(alpha);
-              }
-              setImageAlpha(alpha);
-            }
-          });
+      animator.addUpdateListener(animation -> {
+        int alpha1 = (int) animation.getAnimatedValue();
+        if (background != null) {
+          background.mutate().setAlpha(alpha1);
+        }
+        setImageAlpha(alpha1);
+      });
       animator.addListener(alphaEndListener);
       if (interpolator == null) {
         interpolator =
diff --git a/java/com/android/incallui/answer/impl/answermethod/AndroidManifest.xml b/java/com/android/incallui/answer/impl/answermethod/AndroidManifest.xml
deleted file mode 100644
index 9082407..0000000
--- a/java/com/android/incallui/answer/impl/answermethod/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.incallui.answer.impl.answermethod">
-</manifest>
diff --git a/java/com/android/incallui/answer/impl/answermethod/AnswerMethod.java b/java/com/android/incallui/answer/impl/answermethod/AnswerMethod.java
index 5efd3f0..0862951 100644
--- a/java/com/android/incallui/answer/impl/answermethod/AnswerMethod.java
+++ b/java/com/android/incallui/answer/impl/answermethod/AnswerMethod.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,8 +19,10 @@
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.android.dialer.common.FragmentUtils;
 
 /** A fragment that can be used to answer/reject calls. */
diff --git a/java/com/android/incallui/answer/impl/answermethod/AnswerMethodFactory.java b/java/com/android/incallui/answer/impl/answermethod/AnswerMethodFactory.java
index f318f08..a05ac38 100644
--- a/java/com/android/incallui/answer/impl/answermethod/AnswerMethodFactory.java
+++ b/java/com/android/incallui/answer/impl/answermethod/AnswerMethodFactory.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,16 +18,15 @@
 package com.android.incallui.answer.impl.answermethod;
 
 import android.app.Activity;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.Fragment;
-import com.android.dialer.common.LogUtil;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.android.incallui.util.AccessibilityUtil;
 
 /** Creates the appropriate {@link AnswerMethod} for the circumstances. */
 public class AnswerMethodFactory {
-  private static boolean shouldUseTwoButtonMethodForTesting;
 
   @NonNull
   public static AnswerMethod createAnswerMethod(@NonNull Activity activity) {
@@ -47,17 +47,7 @@
     return !(answerMethod instanceof TwoButtonMethod) && needTwoButton(answerMethod.getActivity());
   }
 
-  @VisibleForTesting
-  public static void setShouldUseTwoButtonMethodForTesting(boolean shouldUse) {
-    shouldUseTwoButtonMethodForTesting = shouldUse;
-  }
-
   private static boolean needTwoButton(@NonNull Activity activity) {
-    if (shouldUseTwoButtonMethodForTesting) {
-      LogUtil.i("AnswerMethodFactory.needTwoButton", "enabled for testing");
-      return true;
-    }
-
     return AccessibilityUtil.isTouchExplorationEnabled(activity) || activity.isInMultiWindowMode();
   }
 }
diff --git a/java/com/android/incallui/answer/impl/answermethod/AnswerMethodHolder.java b/java/com/android/incallui/answer/impl/answermethod/AnswerMethodHolder.java
index 0f1455c..d89285c 100644
--- a/java/com/android/incallui/answer/impl/answermethod/AnswerMethodHolder.java
+++ b/java/com/android/incallui/answer/impl/answermethod/AnswerMethodHolder.java
@@ -16,7 +16,7 @@
 
 package com.android.incallui.answer.impl.answermethod;
 
-import android.support.annotation.FloatRange;
+import androidx.annotation.FloatRange;
 
 /** Defines callbacks {@link AnswerMethod AnswerMethods} may use to update their parent. */
 public interface AnswerMethodHolder {
diff --git a/java/com/android/incallui/answer/impl/answermethod/FlingUpDownMethod.java b/java/com/android/incallui/answer/impl/answermethod/FlingUpDownMethod.java
index 8928dd6..53080cb 100644
--- a/java/com/android/incallui/answer/impl/answermethod/FlingUpDownMethod.java
+++ b/java/com/android/incallui/answer/impl/answermethod/FlingUpDownMethod.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,17 +30,6 @@
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.Trace;
-import android.support.annotation.ColorInt;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.graphics.ColorUtils;
-import android.support.v4.view.animation.FastOutLinearInInterpolator;
-import android.support.v4.view.animation.FastOutSlowInInterpolator;
-import android.support.v4.view.animation.LinearOutSlowInInterpolator;
-import android.support.v4.view.animation.PathInterpolatorCompat;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
@@ -52,6 +42,19 @@
 import android.view.animation.Interpolator;
 import android.widget.ImageView;
 import android.widget.TextView;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.graphics.ColorUtils;
+import androidx.core.view.animation.PathInterpolatorCompat;
+import androidx.interpolator.view.animation.FastOutLinearInInterpolator;
+import androidx.interpolator.view.animation.FastOutSlowInInterpolator;
+import androidx.interpolator.view.animation.LinearOutSlowInInterpolator;
+
+import com.android.dialer.R;
 import com.android.dialer.common.DpUtil;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.MathUtil;
@@ -60,8 +63,8 @@
 import com.android.incallui.answer.impl.answermethod.FlingUpDownTouchHandler.OnProgressChangedListener;
 import com.android.incallui.answer.impl.classifier.FalsingManager;
 import com.android.incallui.answer.impl.hint.AnswerHint;
-import com.android.incallui.answer.impl.hint.AnswerHintFactory;
-import com.android.incallui.answer.impl.hint.PawImageLoaderImpl;
+import com.android.incallui.answer.impl.hint.EmptyAnswerHint;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -98,7 +101,6 @@
       AnimationState.COMPLETED
     }
   )
-  @VisibleForTesting
   @interface AnimationState {
 
     int NONE = 0;
@@ -240,9 +242,7 @@
 
     touchHandler = FlingUpDownTouchHandler.attach(view, this, falsingManager);
 
-    answerHint =
-        new AnswerHintFactory(new PawImageLoaderImpl())
-            .create(getContext(), ANIMATE_DURATION_LONG_MILLIS, BOUNCE_ANIMATION_DELAY);
+    answerHint = new EmptyAnswerHint();
     answerHint.onCreateView(
         layoutInflater,
         (ViewGroup) view.findViewById(R.id.hint_container),
@@ -338,7 +338,7 @@
     } else if (getParent().isRttCall()) {
       contactPuckIcon.setImageResource(R.drawable.quantum_ic_rtt_vd_theme_24);
     } else {
-      contactPuckIcon.setImageResource(R.drawable.quantum_ic_call_white_24);
+      contactPuckIcon.setImageResource(R.drawable.quantum_ic_call_vd_theme_24);
     }
 
     int size =
@@ -518,8 +518,7 @@
     contactPuckIcon.animate().alpha(shouldShowPhotoInPuck() ? 0 : alpha);
   }
 
-  @VisibleForTesting
-  void setAnimationState(@AnimationState int state) {
+  private void setAnimationState(@AnimationState int state) {
     if (state != AnimationState.HINT && animationState == state) {
       return;
     }
@@ -553,12 +552,6 @@
     }
   }
 
-  @AnimationState
-  @VisibleForTesting
-  int getAnimationState() {
-    return animationState;
-  }
-
   private void updateAnimationState() {
     switch (animationState) {
       case AnimationState.ENTRY:
@@ -694,8 +687,7 @@
     lockEntryAnim.start();
   }
 
-  @VisibleForTesting
-  void onEntryAnimationDone() {
+  private void onEntryAnimationDone() {
     LogUtil.i("FlingUpDownMethod.onEntryAnimationDone", "Swipe entry anim ends.");
     if (animationState == AnimationState.ENTRY) {
       setAnimationState(AnimationState.BOUNCE);
@@ -895,8 +887,7 @@
     lockSettleAnim.start();
   }
 
-  @VisibleForTesting
-  void onSettleAnimationDone() {
+  private void onSettleAnimationDone() {
     if (afterSettleAnimationState != AnimationState.NONE) {
       int nextState = afterSettleAnimationState;
       afterSettleAnimationState = AnimationState.NONE;
@@ -1043,7 +1034,6 @@
     rejectHintHide.start();
   }
 
-  @VisibleForTesting
   void onHintAnimationDone(boolean canceled) {
     if (!canceled && animationState == AnimationState.HINT) {
       setAnimationState(AnimationState.BOUNCE);
@@ -1147,8 +1137,8 @@
     private static final long RAMP_DOWN_END_MS = RAMP_DOWN_BEGIN_MS + RAMP_DOWN_DURATION_MS;
     private static final long RAMP_TOTAL_TIME_MS = RAMP_DOWN_END_MS;
     private final float ampMax;
-    private final float freqMax = 80;
-    private Interpolator sliderInterpolator = new FastOutSlowInInterpolator();
+    private static final float FREQ_MAX = 80;
+    private final Interpolator sliderInterpolator = new FastOutSlowInInterpolator();
 
     VibrateInterpolator(Context context) {
       ampMax = DpUtil.dpToPx(context, 1 /* dp */);
@@ -1178,7 +1168,7 @@
       }
 
       float ampNormalized = ampMax * slider;
-      float freqNormalized = freqMax * slider;
+      float freqNormalized = FREQ_MAX * slider;
 
       return (float) (ampNormalized * Math.sin(time * freqNormalized));
     }
diff --git a/java/com/android/incallui/answer/impl/answermethod/FlingUpDownTouchHandler.java b/java/com/android/incallui/answer/impl/answermethod/FlingUpDownTouchHandler.java
index a21073d..41e0328 100644
--- a/java/com/android/incallui/answer/impl/answermethod/FlingUpDownTouchHandler.java
+++ b/java/com/android/incallui/answer/impl/answermethod/FlingUpDownTouchHandler.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,23 +20,25 @@
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
-import android.animation.ValueAnimator.AnimatorUpdateListener;
 import android.annotation.SuppressLint;
 import android.content.Context;
-import android.support.annotation.FloatRange;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.view.MotionEvent;
 import android.view.VelocityTracker;
 import android.view.View;
 import android.view.View.OnTouchListener;
 import android.view.ViewConfiguration;
+
+import androidx.annotation.FloatRange;
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.DpUtil;
-import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.MathUtil;
 import com.android.incallui.answer.impl.classifier.FalsingManager;
 import com.android.incallui.answer.impl.utils.FlingAnimationUtils;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -140,7 +143,7 @@
   @NonNull private final OnProgressChangedListener listener;
 
   private VelocityTracker velocityTracker;
-  private FlingAnimationUtils flingAnimationUtils;
+  private final FlingAnimationUtils flingAnimationUtils;
 
   private boolean touchEnabled = true;
   private boolean flingEnabled = true;
@@ -153,15 +156,14 @@
   private int trackingPointer;
   private Animator progressAnimator;
 
-  private float touchSlop;
+  private final float touchSlop;
   private float initialTouchY;
   private float acceptThresholdY;
   private float rejectThresholdY;
   private float zeroY;
 
   private boolean touchAboveFalsingThreshold;
-  private float falsingThresholdPx;
-  private boolean touchUsesFalsing;
+  private final float falsingThresholdPx;
 
   private final float acceptThresholdPx;
   private final float rejectThresholdPx;
@@ -245,7 +247,6 @@
         motionAborted = false;
         startMotion(pointerY, false, currentProgress);
         touchAboveFalsingThreshold = false;
-        touchUsesFalsing = listener.shouldUseFalsing(event);
         if (velocityTracker == null) {
           initVelocityTracker();
         }
@@ -367,21 +368,6 @@
   }
 
   private boolean isFalseTouch() {
-    if (falsingManager != null && falsingManager.isEnabled()) {
-      if (falsingManager.isFalseTouch()) {
-        if (touchUsesFalsing) {
-          LogUtil.i("FlingUpDownTouchHandler.isFalseTouch", "rejecting false touch");
-          return true;
-        } else {
-          LogUtil.i(
-              "FlingUpDownTouchHandler.isFalseTouch",
-              "Suspected false touch, but not using false touch rejection for this gesture");
-          return false;
-        }
-      } else {
-        return false;
-      }
-    }
     return !touchAboveFalsingThreshold;
   }
 
@@ -436,13 +422,8 @@
 
   private ValueAnimator createProgressAnimator(float targetProgress) {
     ValueAnimator animator = ValueAnimator.ofFloat(currentProgress, targetProgress);
-    animator.addUpdateListener(
-        new AnimatorUpdateListener() {
-          @Override
-          public void onAnimationUpdate(ValueAnimator animation) {
-            setCurrentProgress((Float) animation.getAnimatedValue());
-          }
-        });
+    animator.addUpdateListener(animation ->
+            setCurrentProgress((Float) animation.getAnimatedValue()));
     return animator;
   }
 
diff --git a/java/com/android/incallui/answer/impl/answermethod/TwoButtonMethod.java b/java/com/android/incallui/answer/impl/answermethod/TwoButtonMethod.java
index 1086449..ba59691 100644
--- a/java/com/android/incallui/answer/impl/answermethod/TwoButtonMethod.java
+++ b/java/com/android/incallui/answer/impl/answermethod/TwoButtonMethod.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,10 +24,8 @@
 import android.animation.PropertyValuesHolder;
 import android.animation.ValueAnimator;
 import android.animation.ValueAnimator.AnimatorUpdateListener;
+import android.annotation.SuppressLint;
 import android.os.Bundle;
-import android.support.annotation.FloatRange;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -34,6 +33,12 @@
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.TextView;
+
+import androidx.annotation.FloatRange;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.answer.impl.answermethod.FlingUpDownTouchHandler.OnProgressChangedListener;
@@ -54,7 +59,8 @@
   private boolean incomingWillDisconnect;
   private boolean buttonClicked;
   private CharSequence hintText;
-  @Nullable private FlingUpDownTouchHandler touchHandler;
+  @Nullable
+  private FlingUpDownTouchHandler touchHandler;
 
   @Override
   public void onCreate(@Nullable Bundle bundle) {
@@ -168,6 +174,7 @@
     }
   }
 
+  @SuppressLint("CheckResult")
   @Override
   public void onClick(View view) {
     if (view == answerButton) {
@@ -177,7 +184,7 @@
       rejectCall();
       LogUtil.v("TwoButtonMethod.onClick", "two_buttonMethod Call rejected");
     } else {
-      Assert.fail("Unknown click from view: " + view);
+      throw Assert.createIllegalStateFailException("Unknown click from view: " + view);
     }
     buttonClicked = true;
   }
diff --git a/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml b/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml
index 2b3391d..ca7dfb3 100644
--- a/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml
+++ b/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2016 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -98,10 +100,12 @@
           android:elevation="16dp"
           android:focusable="false"
           android:outlineProvider="none"
-          android:src="@drawable/quantum_ic_call_white_24"
+          android:src="@drawable/quantum_ic_call_vd_theme_24"
           android:tint="@color/dialer_call_green"
           android:tintMode="src_atop"
-          tools:outlineProvider="background"/>
+          tools:outlineProvider="background"
+          tools:ignore="UseAppTint"
+          app:tint="@color/dialer_call_green" />
 
     </FrameLayout>
     <TextView
diff --git a/java/com/android/incallui/answer/impl/answermethod/res/layout/two_button_method.xml b/java/com/android/incallui/answer/impl/answermethod/res/layout/two_button_method.xml
index f92f3c4..8f751b0 100644
--- a/java/com/android/incallui/answer/impl/answermethod/res/layout/two_button_method.xml
+++ b/java/com/android/incallui/answer/impl/answermethod/res/layout/two_button_method.xml
@@ -51,7 +51,7 @@
         android:layout_width="@dimen/two_button_button_size"
         android:layout_height="@dimen/two_button_button_size"
         android:contentDescription="@string/a11y_call_incoming_decline_description"
-        android:src="@drawable/quantum_ic_call_end_white_24"/>
+        android:src="@drawable/quantum_ic_call_end_vd_theme_24"/>
 
       <TextView
         android:id="@+id/two_button_decline_label"
@@ -80,7 +80,7 @@
         android:layout_width="@dimen/two_button_button_size"
         android:layout_height="@dimen/two_button_button_size"
         android:contentDescription="@string/a11y_call_incoming_answer_description"
-        android:src="@drawable/quantum_ic_call_white_24"/>
+        android:src="@drawable/quantum_ic_call_vd_theme_24"/>
 
       <TextView
         android:id="@+id/two_button_answer_label"
diff --git a/java/com/android/incallui/answer/impl/classifier/AccelerationClassifier.java b/java/com/android/incallui/answer/impl/classifier/AccelerationClassifier.java
index ae0d1c8..3f9d76d 100644
--- a/java/com/android/incallui/answer/impl/classifier/AccelerationClassifier.java
+++ b/java/com/android/incallui/answer/impl/classifier/AccelerationClassifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.util.ArrayMap;
 import android.view.MotionEvent;
+
 import java.util.Map;
 
 /**
diff --git a/java/com/android/incallui/answer/impl/classifier/AnglesClassifier.java b/java/com/android/incallui/answer/impl/classifier/AnglesClassifier.java
index 24f04c4..cacb24d 100644
--- a/java/com/android/incallui/answer/impl/classifier/AnglesClassifier.java
+++ b/java/com/android/incallui/answer/impl/classifier/AnglesClassifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.util.ArrayMap;
 import android.view.MotionEvent;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -47,7 +49,7 @@
  * angels or right angles)
  */
 class AnglesClassifier extends StrokeClassifier {
-  private Map<Stroke, Data> strokeMap = new ArrayMap<>();
+  private final Map<Stroke, Data> strokeMap = new ArrayMap<>();
 
   public AnglesClassifier(ClassifierData classifierData) {
     this.classifierData = classifierData;
@@ -87,7 +89,7 @@
     private static final float ANGLE_DEVIATION = (float) Math.PI / 20.0f;
     private static final float MIN_MOVE_DIST_DP = .01f;
 
-    private List<Point> lastThreePoints = new ArrayList<>();
+    private final List<Point> lastThreePoints = new ArrayList<>();
     private float firstAngleVariance;
     private float previousAngle;
     private float biggestAngle;
diff --git a/java/com/android/incallui/answer/impl/classifier/ClassifierData.java b/java/com/android/incallui/answer/impl/classifier/ClassifierData.java
index fe3fbe0..da63b37 100644
--- a/java/com/android/incallui/answer/impl/classifier/ClassifierData.java
+++ b/java/com/android/incallui/answer/impl/classifier/ClassifierData.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.util.SparseArray;
 import android.view.MotionEvent;
+
 import java.util.ArrayList;
 import java.util.concurrent.TimeUnit;
 
@@ -26,8 +28,8 @@
  * example, provide information on the current touch state.
  */
 class ClassifierData {
-  private SparseArray<Stroke> currentStrokes = new SparseArray<>();
-  private ArrayList<Stroke> endingStrokes = new ArrayList<>();
+  private final SparseArray<Stroke> currentStrokes = new SparseArray<>();
+  private final ArrayList<Stroke> endingStrokes = new ArrayList<>();
   private final float dpi;
   private final float screenHeight;
 
diff --git a/java/com/android/incallui/answer/impl/classifier/HistoryEvaluator.java b/java/com/android/incallui/answer/impl/classifier/HistoryEvaluator.java
index c0256a5..cf3185a 100644
--- a/java/com/android/incallui/answer/impl/classifier/HistoryEvaluator.java
+++ b/java/com/android/incallui/answer/impl/classifier/HistoryEvaluator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.incallui.answer.impl.classifier;
 
 import android.os.SystemClock;
+
 import java.util.ArrayList;
 
 /**
@@ -103,7 +105,7 @@
    * to 1.0
    */
   private static class Data {
-    public float evaluation;
+    public final float evaluation;
     public float weight;
 
     public Data(float evaluation) {
diff --git a/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java b/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java
index 494a622..6e086ef 100644
--- a/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java
+++ b/java/com/android/incallui/answer/impl/classifier/HumanInteractionClassifier.java
@@ -20,18 +20,13 @@
 import android.hardware.SensorEvent;
 import android.util.DisplayMetrics;
 import android.view.MotionEvent;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 
 /** An classifier trying to determine whether it is a human interacting with the phone or not. */
 class HumanInteractionClassifier extends Classifier {
 
-  private static final String CONFIG_ANSWER_FALSE_TOUCH_DETECTION_ENABLED =
-      "answer_false_touch_detection_enabled";
-
   private final StrokeClassifier[] strokeClassifiers;
   private final GestureClassifier[] gestureClassifiers;
   private final HistoryEvaluator historyEvaluator;
-  private final boolean enabled;
 
   HumanInteractionClassifier(Context context) {
     DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
@@ -43,10 +38,6 @@
     float dpi = (displayMetrics.xdpi + displayMetrics.ydpi) / 2.0f;
     classifierData = new ClassifierData(dpi, displayMetrics.heightPixels);
     historyEvaluator = new HistoryEvaluator();
-    enabled =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean(CONFIG_ANSWER_FALSE_TOUCH_DETECTION_ENABLED, true);
 
     strokeClassifiers =
         new StrokeClassifier[] {
@@ -133,7 +124,7 @@
   }
 
   public boolean isEnabled() {
-    return enabled;
+    return true;
   }
 
   @Override
diff --git a/java/com/android/incallui/answer/impl/classifier/Point.java b/java/com/android/incallui/answer/impl/classifier/Point.java
index 5ea48b4..2919e79 100644
--- a/java/com/android/incallui/answer/impl/classifier/Point.java
+++ b/java/com/android/incallui/answer/impl/classifier/Point.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,9 @@
 package com.android.incallui.answer.impl.classifier;
 
 class Point {
-  public float x;
-  public float y;
-  public long timeOffsetNano;
+  public final float x;
+  public final float y;
+  public final long timeOffsetNano;
 
   public Point(float x, float y) {
     this.x = x;
diff --git a/java/com/android/incallui/answer/impl/classifier/ProximityClassifier.java b/java/com/android/incallui/answer/impl/classifier/ProximityClassifier.java
index b63f15d..9c5322e 100644
--- a/java/com/android/incallui/answer/impl/classifier/ProximityClassifier.java
+++ b/java/com/android/incallui/answer/impl/classifier/ProximityClassifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.hardware.Sensor;
 import android.hardware.SensorEvent;
 import android.view.MotionEvent;
+
 import java.util.concurrent.TimeUnit;
 
 /**
diff --git a/java/com/android/incallui/answer/impl/classifier/SpeedAnglesClassifier.java b/java/com/android/incallui/answer/impl/classifier/SpeedAnglesClassifier.java
index 034c4fe..69d9d05 100644
--- a/java/com/android/incallui/answer/impl/classifier/SpeedAnglesClassifier.java
+++ b/java/com/android/incallui/answer/impl/classifier/SpeedAnglesClassifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.util.ArrayMap;
 import android.view.MotionEvent;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -33,7 +35,7 @@
  * a good stroke is most often increases, so most of these angels should be in this interval.
  */
 class SpeedAnglesClassifier extends StrokeClassifier {
-  private Map<Stroke, Data> strokeMap = new ArrayMap<>();
+  private final Map<Stroke, Data> strokeMap = new ArrayMap<>();
 
   public SpeedAnglesClassifier(ClassifierData classifierData) {
     this.classifierData = classifierData;
@@ -79,7 +81,7 @@
     private static final float LENGTH_SCALE = 1.0f;
     private static final float ANGLE_DEVIATION = (float) Math.PI / 10.0f;
 
-    private List<Point> lastThreePoints = new ArrayList<>();
+    private final List<Point> lastThreePoints = new ArrayList<>();
     private Point previousPoint;
     private float previousAngle;
     private float sumSquares;
diff --git a/java/com/android/incallui/answer/impl/classifier/Stroke.java b/java/com/android/incallui/answer/impl/classifier/Stroke.java
index a334249..caba894 100644
--- a/java/com/android/incallui/answer/impl/classifier/Stroke.java
+++ b/java/com/android/incallui/answer/impl/classifier/Stroke.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -26,8 +27,8 @@
 
   private static final float NANOS_TO_SECONDS = 1e9f;
 
-  private ArrayList<Point> points = new ArrayList<>();
-  private long startTimeNano;
+  private final ArrayList<Point> points = new ArrayList<>();
+  private final long startTimeNano;
   private long endTimeNano;
   private float length;
   private final float dpi;
diff --git a/java/com/android/incallui/answer/impl/hint/AndroidManifest.xml b/java/com/android/incallui/answer/impl/hint/AndroidManifest.xml
deleted file mode 100644
index f0d0fef..0000000
--- a/java/com/android/incallui/answer/impl/hint/AndroidManifest.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<manifest
-  package="com.android.incallui.answer.impl.hint"
-  xmlns:android="http://schemas.android.com/apk/res/android">
-
-  <application>
-    <receiver android:name=".PawSecretCodeListener"
-        android:exported="true">
-      <intent-filter>
-        <action android:name="android.provider.Telephony.SECRET_CODE" />
-        <data android:scheme="android_secret_code" />
-      </intent-filter>
-    </receiver>
-  </application>
-</manifest>
diff --git a/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java b/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java
deleted file mode 100644
index 734fa96..0000000
--- a/java/com/android/incallui/answer/impl/hint/AnswerHintFactory.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.answer.impl.hint;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.storage.StorageComponent;
-import com.android.incallui.util.AccessibilityUtil;
-
-/**
- * Selects a AnswerHint to show. If there's no suitable hints {@link EmptyAnswerHint} will be used,
- * which does nothing.
- */
-public class AnswerHintFactory {
-
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  static final String CONFIG_ANSWER_HINT_ANSWERED_THRESHOLD_KEY = "answer_hint_answered_threshold";
-
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  static final String CONFIG_ANSWER_HINT_WHITELISTED_DEVICES_KEY =
-      "answer_hint_whitelisted_devices";
-  // Most popular devices released before NDR1 is whitelisted. Their user are likely to have seen
-  // the legacy UI.
-  private static final String DEFAULT_WHITELISTED_DEVICES_CSV =
-      "/hammerhead//bullhead//angler//shamu//gm4g//gm4g_s//AQ4501//gce_x86_phone//gm4gtkc_s/"
-          + "/Sparkle_V//Mi-498//AQ4502//imobileiq2//A65//H940//m8_google//m0xx//A10//ctih220/"
-          + "/Mi438S//bacon/";
-
-  @VisibleForTesting
-  static final String ANSWERED_COUNT_PREFERENCE_KEY = "answer_hint_answered_count";
-
-  private final PawImageLoader pawImageLoader;
-
-  public AnswerHintFactory(@NonNull PawImageLoader pawImageLoader) {
-    this.pawImageLoader = Assert.isNotNull(pawImageLoader);
-  }
-
-  @NonNull
-  public AnswerHint create(Context context, long puckUpDuration, long puckUpDelay) {
-    if (shouldShowAnswerHint(context, Build.PRODUCT)) {
-      return new DotAnswerHint(context, puckUpDuration, puckUpDelay);
-    }
-
-    // Display the event answer hint if the payload is available.
-    Drawable eventPayload = pawImageLoader.loadPayload(context);
-    if (eventPayload != null) {
-      return new PawAnswerHint(context, eventPayload, puckUpDuration, puckUpDelay);
-    }
-
-    return new EmptyAnswerHint();
-  }
-
-  public static void increaseAnsweredCount(Context context) {
-    SharedPreferences sharedPreferences = StorageComponent.get(context).unencryptedSharedPrefs();
-    int answeredCount = sharedPreferences.getInt(ANSWERED_COUNT_PREFERENCE_KEY, 0);
-    sharedPreferences.edit().putInt(ANSWERED_COUNT_PREFERENCE_KEY, answeredCount + 1).apply();
-  }
-
-  @VisibleForTesting
-  static boolean shouldShowAnswerHint(Context context, String device) {
-    if (AccessibilityUtil.isTouchExplorationEnabled(context)) {
-      return false;
-    }
-    // Devices that has the legacy dialer installed are whitelisted as they are likely to go through
-    // a UX change during updates.
-    if (!isDeviceWhitelisted(context, device)) {
-      return false;
-    }
-
-    // If the user has gone through the process a few times we can assume they have learnt the
-    // method.
-    int answeredCount =
-        StorageComponent.get(context)
-            .unencryptedSharedPrefs()
-            .getInt(ANSWERED_COUNT_PREFERENCE_KEY, 0);
-    long threshold =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong(CONFIG_ANSWER_HINT_ANSWERED_THRESHOLD_KEY, 3);
-    LogUtil.i(
-        "AnswerHintFactory.shouldShowAnswerHint",
-        "answerCount: %d, threshold: %d",
-        answeredCount,
-        threshold);
-    return answeredCount < threshold;
-  }
-
-  /**
-   * @param device should be the value of{@link Build#PRODUCT}.
-   * @param configProvider should provide a list of devices quoted with '/' concatenated to a
-   *     string.
-   */
-  private static boolean isDeviceWhitelisted(Context context, String device) {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getString(CONFIG_ANSWER_HINT_WHITELISTED_DEVICES_KEY, DEFAULT_WHITELISTED_DEVICES_CSV)
-        .contains("/" + device + "/");
-  }
-}
diff --git a/java/com/android/incallui/answer/impl/hint/DotAnswerHint.java b/java/com/android/incallui/answer/impl/hint/DotAnswerHint.java
deleted file mode 100644
index 70f3f73..0000000
--- a/java/com/android/incallui/answer/impl/hint/DotAnswerHint.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.answer.impl.hint;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
-import android.content.Context;
-import android.support.annotation.DimenRes;
-import android.support.v4.view.animation.FastOutSlowInInterpolator;
-import android.util.TypedValue;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.animation.Interpolator;
-import android.view.animation.LinearInterpolator;
-import android.widget.TextView;
-
-/** An Answer hint that uses a green swiping dot. */
-public class DotAnswerHint implements AnswerHint {
-
-  private static final float ANSWER_HINT_SMALL_ALPHA = 0.8f;
-  private static final float ANSWER_HINT_MID_ALPHA = 0.5f;
-  private static final float ANSWER_HINT_LARGE_ALPHA = 0.2f;
-
-  private static final long FADE_IN_DELAY_SCALE_MILLIS = 380;
-  private static final long FADE_IN_DURATION_SCALE_MILLIS = 200;
-  private static final long FADE_IN_DELAY_ALPHA_MILLIS = 340;
-  private static final long FADE_IN_DURATION_ALPHA_MILLIS = 50;
-
-  private static final long SWIPE_UP_DURATION_ALPHA_MILLIS = 500;
-
-  private static final long FADE_OUT_DELAY_SCALE_SMALL_MILLIS = 90;
-  private static final long FADE_OUT_DELAY_SCALE_MID_MILLIS = 70;
-  private static final long FADE_OUT_DELAY_SCALE_LARGE_MILLIS = 10;
-  private static final long FADE_OUT_DURATION_SCALE_MILLIS = 100;
-  private static final long FADE_OUT_DELAY_ALPHA_MILLIS = 130;
-  private static final long FADE_OUT_DURATION_ALPHA_MILLIS = 170;
-
-  private final Context context;
-  private final long puckUpDurationMillis;
-  private final long puckUpDelayMillis;
-
-  private View puck;
-
-  private View answerHintSmall;
-  private View answerHintMid;
-  private View answerHintLarge;
-  private View answerHintContainer;
-  private AnimatorSet answerGestureHintAnim;
-
-  public DotAnswerHint(Context context, long puckUpDurationMillis, long puckUpDelayMillis) {
-    this.context = context;
-    this.puckUpDurationMillis = puckUpDurationMillis;
-    this.puckUpDelayMillis = puckUpDelayMillis;
-  }
-
-  @Override
-  public void onCreateView(
-      LayoutInflater inflater, ViewGroup container, View puck, TextView hintText) {
-    this.puck = puck;
-    View view = inflater.inflate(R.layout.dot_hint, container, true);
-    answerHintContainer = view.findViewById(R.id.answer_hint_container);
-    answerHintSmall = view.findViewById(R.id.answer_hint_small);
-    answerHintMid = view.findViewById(R.id.answer_hint_mid);
-    answerHintLarge = view.findViewById(R.id.answer_hint_large);
-    hintText.setTextSize(
-        TypedValue.COMPLEX_UNIT_PX, context.getResources().getDimension(R.dimen.hint_text_size));
-  }
-
-  @Override
-  public void onBounceStart() {
-    if (answerGestureHintAnim == null) {
-      answerGestureHintAnim = new AnimatorSet();
-      int[] puckLocation = new int[2];
-      puck.getLocationInWindow(puckLocation);
-      answerHintContainer.setY(puckLocation[1] + getDimension(R.dimen.hint_initial_offset));
-
-      Animator fadeIn = createFadeIn();
-
-      Animator swipeUp =
-          ObjectAnimator.ofFloat(
-              answerHintContainer,
-              View.TRANSLATION_Y,
-              puckLocation[1] - getDimension(R.dimen.hint_offset));
-      swipeUp.setInterpolator(new FastOutSlowInInterpolator());
-      swipeUp.setDuration(SWIPE_UP_DURATION_ALPHA_MILLIS);
-
-      Animator fadeOut = createFadeOut();
-
-      answerGestureHintAnim.play(fadeIn).after(puckUpDelayMillis);
-      answerGestureHintAnim.play(swipeUp).after(fadeIn);
-      // The fade out should start fading the alpha just as the puck is dropping. Scaling will start
-      // a bit earlier.
-      answerGestureHintAnim
-          .play(fadeOut)
-          .after(puckUpDelayMillis + puckUpDurationMillis - FADE_OUT_DELAY_ALPHA_MILLIS);
-
-      fadeIn.addListener(
-          new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationStart(Animator animation) {
-              super.onAnimationStart(animation);
-              answerHintSmall.setAlpha(0);
-              answerHintSmall.setScaleX(1);
-              answerHintSmall.setScaleY(1);
-              answerHintMid.setAlpha(0);
-              answerHintMid.setScaleX(1);
-              answerHintMid.setScaleY(1);
-              answerHintLarge.setAlpha(0);
-              answerHintLarge.setScaleX(1);
-              answerHintLarge.setScaleY(1);
-              answerHintContainer.setY(puckLocation[1] + getDimension(R.dimen.hint_initial_offset));
-              answerHintContainer.setVisibility(View.VISIBLE);
-            }
-          });
-    }
-
-    answerGestureHintAnim.start();
-  }
-
-  private Animator createFadeIn() {
-    AnimatorSet set = new AnimatorSet();
-    set.play(
-            createFadeInScaleAndAlpha(
-                answerHintSmall,
-                R.dimen.hint_small_begin_size,
-                R.dimen.hint_small_end_size,
-                ANSWER_HINT_SMALL_ALPHA))
-        .with(
-            createFadeInScaleAndAlpha(
-                answerHintMid,
-                R.dimen.hint_mid_begin_size,
-                R.dimen.hint_mid_end_size,
-                ANSWER_HINT_MID_ALPHA))
-        .with(
-            createFadeInScaleAndAlpha(
-                answerHintLarge,
-                R.dimen.hint_large_begin_size,
-                R.dimen.hint_large_end_size,
-                ANSWER_HINT_LARGE_ALPHA));
-    return set;
-  }
-
-  private Animator createFadeInScaleAndAlpha(
-      View target, @DimenRes int beginSize, @DimenRes int endSize, float endAlpha) {
-    Animator scale =
-        createUniformScaleAnimator(
-            target,
-            getDimension(beginSize),
-            getDimension(beginSize),
-            getDimension(endSize),
-            FADE_IN_DURATION_SCALE_MILLIS,
-            FADE_IN_DELAY_SCALE_MILLIS,
-            new LinearInterpolator());
-    Animator alpha =
-        createAlphaAnimator(
-            target,
-            0f,
-            endAlpha,
-            FADE_IN_DURATION_ALPHA_MILLIS,
-            FADE_IN_DELAY_ALPHA_MILLIS,
-            new LinearInterpolator());
-    AnimatorSet set = new AnimatorSet();
-    set.play(scale).with(alpha);
-    return set;
-  }
-
-  private Animator createFadeOut() {
-    AnimatorSet set = new AnimatorSet();
-    set.play(
-            createFadeOutScaleAndAlpha(
-                answerHintSmall,
-                R.dimen.hint_small_begin_size,
-                R.dimen.hint_small_end_size,
-                FADE_OUT_DELAY_SCALE_SMALL_MILLIS,
-                ANSWER_HINT_SMALL_ALPHA))
-        .with(
-            createFadeOutScaleAndAlpha(
-                answerHintMid,
-                R.dimen.hint_mid_begin_size,
-                R.dimen.hint_mid_end_size,
-                FADE_OUT_DELAY_SCALE_MID_MILLIS,
-                ANSWER_HINT_MID_ALPHA))
-        .with(
-            createFadeOutScaleAndAlpha(
-                answerHintLarge,
-                R.dimen.hint_large_begin_size,
-                R.dimen.hint_large_end_size,
-                FADE_OUT_DELAY_SCALE_LARGE_MILLIS,
-                ANSWER_HINT_LARGE_ALPHA));
-    return set;
-  }
-
-  private Animator createFadeOutScaleAndAlpha(
-      View target,
-      @DimenRes int beginSize,
-      @DimenRes int endSize,
-      long scaleDelay,
-      float endAlpha) {
-    Animator scale =
-        createUniformScaleAnimator(
-            target,
-            getDimension(beginSize),
-            getDimension(endSize),
-            getDimension(beginSize),
-            FADE_OUT_DURATION_SCALE_MILLIS,
-            scaleDelay,
-            new LinearInterpolator());
-    Animator alpha =
-        createAlphaAnimator(
-            target,
-            endAlpha,
-            0.0f,
-            FADE_OUT_DURATION_ALPHA_MILLIS,
-            FADE_OUT_DELAY_ALPHA_MILLIS,
-            new LinearInterpolator());
-    AnimatorSet set = new AnimatorSet();
-    set.play(scale).with(alpha);
-    return set;
-  }
-
-  @Override
-  public void onBounceEnd() {
-    if (answerGestureHintAnim != null) {
-      answerGestureHintAnim.end();
-      answerGestureHintAnim = null;
-      answerHintContainer.setVisibility(View.GONE);
-    }
-  }
-
-  @Override
-  public void onAnswered() {
-    AnswerHintFactory.increaseAnsweredCount(context);
-  }
-
-  private float getDimension(@DimenRes int id) {
-    return context.getResources().getDimension(id);
-  }
-
-  private static Animator createUniformScaleAnimator(
-      View target,
-      float original,
-      float begin,
-      float end,
-      long duration,
-      long delay,
-      Interpolator interpolator) {
-    float scaleBegin = begin / original;
-    float scaleEnd = end / original;
-    Animator scaleX = ObjectAnimator.ofFloat(target, View.SCALE_X, scaleBegin, scaleEnd);
-    Animator scaleY = ObjectAnimator.ofFloat(target, View.SCALE_Y, scaleBegin, scaleEnd);
-    scaleX.setDuration(duration);
-    scaleY.setDuration(duration);
-    scaleX.setInterpolator(interpolator);
-    scaleY.setInterpolator(interpolator);
-    AnimatorSet set = new AnimatorSet();
-    set.play(scaleX).with(scaleY).after(delay);
-    return set;
-  }
-
-  private static Animator createAlphaAnimator(
-      View target, float begin, float end, long duration, long delay, Interpolator interpolator) {
-    Animator alpha = ObjectAnimator.ofFloat(target, View.ALPHA, begin, end);
-    alpha.setDuration(duration);
-    alpha.setInterpolator(interpolator);
-    alpha.setStartDelay(delay);
-    return alpha;
-  }
-}
diff --git a/java/com/android/incallui/answer/impl/hint/PawAnswerHint.java b/java/com/android/incallui/answer/impl/hint/PawAnswerHint.java
deleted file mode 100644
index 079f325..0000000
--- a/java/com/android/incallui/answer/impl/hint/PawAnswerHint.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.answer.impl.hint;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.support.annotation.DimenRes;
-import android.support.annotation.NonNull;
-import android.support.v4.view.animation.FastOutSlowInInterpolator;
-import android.util.TypedValue;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.animation.Interpolator;
-import android.view.animation.LinearInterpolator;
-import android.widget.ImageView;
-import android.widget.TextView;
-import com.android.dialer.common.Assert;
-
-/**
- * An Answer hint that animates a {@link Drawable} payload with animation similar to {@link
- * DotAnswerHint}.
- */
-public final class PawAnswerHint implements AnswerHint {
-
-  private static final long FADE_IN_DELAY_SCALE_MILLIS = 380;
-  private static final long FADE_IN_DURATION_SCALE_MILLIS = 200;
-  private static final long FADE_IN_DELAY_ALPHA_MILLIS = 340;
-  private static final long FADE_IN_DURATION_ALPHA_MILLIS = 50;
-
-  private static final long SWIPE_UP_DURATION_ALPHA_MILLIS = 500;
-
-  private static final long FADE_OUT_DELAY_SCALE_SMALL_MILLIS = 90;
-  private static final long FADE_OUT_DURATION_SCALE_MILLIS = 100;
-  private static final long FADE_OUT_DELAY_ALPHA_MILLIS = 130;
-  private static final long FADE_OUT_DURATION_ALPHA_MILLIS = 170;
-
-  private static final float IMAGE_SCALE = 1.5f;
-  private static final float FADE_SCALE = 2.0f;
-
-  private final Context context;
-  private final Drawable payload;
-  private final long puckUpDurationMillis;
-  private final long puckUpDelayMillis;
-
-  private View puck;
-  private View payloadView;
-  private View answerHintContainer;
-  private AnimatorSet answerGestureHintAnim;
-
-  public PawAnswerHint(
-      @NonNull Context context,
-      @NonNull Drawable payload,
-      long puckUpDurationMillis,
-      long puckUpDelayMillis) {
-    this.context = Assert.isNotNull(context);
-    this.payload = Assert.isNotNull(payload);
-    this.puckUpDurationMillis = puckUpDurationMillis;
-    this.puckUpDelayMillis = puckUpDelayMillis;
-  }
-
-  @Override
-  public void onCreateView(
-      LayoutInflater inflater, ViewGroup container, View puck, TextView hintText) {
-    this.puck = puck;
-    View view = inflater.inflate(R.layout.paw_hint, container, true);
-    answerHintContainer = view.findViewById(R.id.answer_hint_container);
-    payloadView = view.findViewById(R.id.paw_image);
-    hintText.setTextSize(
-        TypedValue.COMPLEX_UNIT_PX, context.getResources().getDimension(R.dimen.hint_text_size));
-    ((ImageView) payloadView).setImageDrawable(payload);
-  }
-
-  @Override
-  public void onBounceStart() {
-    if (answerGestureHintAnim == null) {
-      answerGestureHintAnim = new AnimatorSet();
-      int[] puckLocation = new int[2];
-      puck.getLocationInWindow(puckLocation);
-      answerHintContainer.setY(puckLocation[1] + getDimension(R.dimen.hint_initial_offset));
-
-      Animator fadeIn = createFadeIn();
-
-      Animator swipeUp =
-          ObjectAnimator.ofFloat(
-              answerHintContainer,
-              View.TRANSLATION_Y,
-              puckLocation[1] - getDimension(R.dimen.hint_offset));
-      swipeUp.setInterpolator(new FastOutSlowInInterpolator());
-      swipeUp.setDuration(SWIPE_UP_DURATION_ALPHA_MILLIS);
-
-      Animator fadeOut = createFadeOut();
-
-      answerGestureHintAnim.play(fadeIn).after(puckUpDelayMillis);
-      answerGestureHintAnim.play(swipeUp).after(fadeIn);
-      // The fade out should start fading the alpha just as the puck is dropping. Scaling will start
-      // a bit earlier.
-      answerGestureHintAnim
-          .play(fadeOut)
-          .after(puckUpDelayMillis + puckUpDurationMillis - FADE_OUT_DELAY_ALPHA_MILLIS);
-
-      fadeIn.addListener(
-          new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationStart(Animator animation) {
-              super.onAnimationStart(animation);
-              payloadView.setAlpha(0);
-              payloadView.setScaleX(1);
-              payloadView.setScaleY(1);
-              answerHintContainer.setY(puckLocation[1] + getDimension(R.dimen.hint_initial_offset));
-              answerHintContainer.setVisibility(View.VISIBLE);
-            }
-          });
-    }
-
-    answerGestureHintAnim.start();
-  }
-
-  private Animator createFadeIn() {
-    AnimatorSet set = new AnimatorSet();
-    set.play(createFadeInScaleAndAlpha(payloadView));
-    return set;
-  }
-
-  private static Animator createFadeInScaleAndAlpha(View target) {
-    Animator scale =
-        createUniformScaleAnimator(
-            target,
-            FADE_SCALE,
-            IMAGE_SCALE,
-            FADE_IN_DURATION_SCALE_MILLIS,
-            FADE_IN_DELAY_SCALE_MILLIS,
-            new LinearInterpolator());
-    Animator alpha =
-        createAlphaAnimator(
-            target,
-            0f,
-            1.0f,
-            FADE_IN_DURATION_ALPHA_MILLIS,
-            FADE_IN_DELAY_ALPHA_MILLIS,
-            new LinearInterpolator());
-    AnimatorSet set = new AnimatorSet();
-    set.play(scale).with(alpha);
-    return set;
-  }
-
-  private Animator createFadeOut() {
-    AnimatorSet set = new AnimatorSet();
-    set.play(createFadeOutScaleAndAlpha(payloadView, FADE_OUT_DELAY_SCALE_SMALL_MILLIS));
-    return set;
-  }
-
-  private static Animator createFadeOutScaleAndAlpha(View target, long scaleDelay) {
-    Animator scale =
-        createUniformScaleAnimator(
-            target,
-            IMAGE_SCALE,
-            FADE_SCALE,
-            FADE_OUT_DURATION_SCALE_MILLIS,
-            scaleDelay,
-            new LinearInterpolator());
-    Animator alpha =
-        createAlphaAnimator(
-            target,
-            1.0f,
-            0.0f,
-            FADE_OUT_DURATION_ALPHA_MILLIS,
-            FADE_OUT_DELAY_ALPHA_MILLIS,
-            new LinearInterpolator());
-    AnimatorSet set = new AnimatorSet();
-    set.play(scale).with(alpha);
-    return set;
-  }
-
-  @Override
-  public void onBounceEnd() {
-    if (answerGestureHintAnim != null) {
-      answerGestureHintAnim.end();
-      answerGestureHintAnim = null;
-      answerHintContainer.setVisibility(View.GONE);
-    }
-  }
-
-  @Override
-  public void onAnswered() {
-    // Do nothing
-  }
-
-  private float getDimension(@DimenRes int id) {
-    return context.getResources().getDimension(id);
-  }
-
-  private static Animator createUniformScaleAnimator(
-      View target,
-      float scaleBegin,
-      float scaleEnd,
-      long duration,
-      long delay,
-      Interpolator interpolator) {
-    Animator scaleX = ObjectAnimator.ofFloat(target, View.SCALE_X, scaleBegin, scaleEnd);
-    Animator scaleY = ObjectAnimator.ofFloat(target, View.SCALE_Y, scaleBegin, scaleEnd);
-    scaleX.setDuration(duration);
-    scaleY.setDuration(duration);
-    scaleX.setInterpolator(interpolator);
-    scaleY.setInterpolator(interpolator);
-    AnimatorSet set = new AnimatorSet();
-    set.play(scaleX).with(scaleY).after(delay);
-    return set;
-  }
-
-  private static Animator createAlphaAnimator(
-      View target, float begin, float end, long duration, long delay, Interpolator interpolator) {
-    Animator alpha = ObjectAnimator.ofFloat(target, View.ALPHA, begin, end);
-    alpha.setDuration(duration);
-    alpha.setInterpolator(interpolator);
-    alpha.setStartDelay(delay);
-    return alpha;
-  }
-}
diff --git a/java/com/android/incallui/answer/impl/hint/PawImageLoader.java b/java/com/android/incallui/answer/impl/hint/PawImageLoader.java
deleted file mode 100644
index 09e700f..0000000
--- a/java/com/android/incallui/answer/impl/hint/PawImageLoader.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.answer.impl.hint;
-
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-
-/** Loads a {@link Drawable} payload for the {@link PawAnswerHint} if it should be displayed. */
-public interface PawImageLoader {
-  @Nullable
-  Drawable loadPayload(@NonNull Context context);
-}
diff --git a/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java b/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java
deleted file mode 100644
index 6e91307..0000000
--- a/java/com/android/incallui/answer/impl/hint/PawImageLoaderImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.answer.impl.hint;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.storage.StorageComponent;
-import com.android.incallui.answer.impl.hint.PawSecretCodeListener.PawType;
-
-/** Decrypt the event payload to be shown if in a specific time range and the key is received. */
-public final class PawImageLoaderImpl implements PawImageLoader {
-
-  @Override
-  @Nullable
-  public Drawable loadPayload(@NonNull Context context) {
-    Assert.isNotNull(context);
-
-    SharedPreferences preferences = StorageComponent.get(context).unencryptedSharedPrefs();
-    if (!preferences.getBoolean(PawSecretCodeListener.PAW_ENABLED_WITH_SECRET_CODE_KEY, false)) {
-      return null;
-    }
-    @PawType
-    int pawType =
-        preferences.getInt(PawSecretCodeListener.PAW_TYPE, PawSecretCodeListener.PAW_TYPE_INVALID);
-
-    if (pawType == PawSecretCodeListener.PAW_TYPE_INVALID) {
-      LogUtil.i("PawImageLoaderImpl.loadPayload", "paw type not found, rerolling");
-      PawSecretCodeListener.selectPawType(preferences);
-      pawType =
-          preferences.getInt(
-              PawSecretCodeListener.PAW_TYPE, PawSecretCodeListener.PAW_TYPE_INVALID);
-    }
-
-    switch (pawType) {
-      case PawSecretCodeListener.PAW_TYPE_CAT:
-        return context.getDrawable(R.drawable.cat_paw);
-      case PawSecretCodeListener.PAW_TYPE_DOG:
-        return context.getDrawable(R.drawable.dog_paw);
-      default:
-        throw Assert.createAssertionFailException("unknown paw type " + pawType);
-    }
-  }
-}
diff --git a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java b/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
deleted file mode 100644
index e9d2c6f..0000000
--- a/java/com/android/incallui/answer/impl/hint/PawSecretCodeListener.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.answer.impl.hint;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.support.annotation.IntDef;
-import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
-import android.widget.Toast;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.logging.DialerImpression.Type;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.storage.StorageComponent;
-import java.util.Random;
-
-/**
- * Listen to the broadcast when the user dials "*#*#[number]#*#*" to toggle the event answer hint.
- */
-public class PawSecretCodeListener extends BroadcastReceiver {
-
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  static final String CONFIG_PAW_SECRET_CODE = "paw_secret_code";
-
-  public static final String PAW_ENABLED_WITH_SECRET_CODE_KEY = "paw_enabled_with_secret_code";
-
-  /** Which paw to show, must be {@link PawType} */
-  public static final String PAW_TYPE = "paw_type";
-
-  /** Resource id is not stable across app versions. Use {@link #PAW_TYPE} instead. */
-  @Deprecated public static final String PAW_DRAWABLE_ID_KEY = "paw_drawable_id";
-
-  /** Enum for all paws. */
-  @IntDef({PAW_TYPE_INVALID, PAW_TYPE_CAT, PAW_TYPE_DOG})
-  @interface PawType {}
-
-  public static final int PAW_TYPE_INVALID = 0;
-  public static final int PAW_TYPE_CAT = 1;
-  public static final int PAW_TYPE_DOG = 2;
-
-  @Override
-  public void onReceive(Context context, Intent intent) {
-    String host = intent.getData().getHost();
-    if (TextUtils.isEmpty(host)) {
-      return;
-    }
-    String secretCode =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getString(CONFIG_PAW_SECRET_CODE, "729");
-    if (secretCode == null) {
-      return;
-    }
-    if (!TextUtils.equals(secretCode, host)) {
-      return;
-    }
-    SharedPreferences preferences = StorageComponent.get(context).unencryptedSharedPrefs();
-    boolean wasEnabled = preferences.getBoolean(PAW_ENABLED_WITH_SECRET_CODE_KEY, false);
-    if (wasEnabled) {
-      preferences.edit().putBoolean(PAW_ENABLED_WITH_SECRET_CODE_KEY, false).apply();
-      Toast.makeText(context, R.string.event_deactivated, Toast.LENGTH_SHORT).show();
-      Logger.get(context).logImpression(Type.EVENT_ANSWER_HINT_DEACTIVATED);
-      LogUtil.i("PawSecretCodeListener.onReceive", "PawAnswerHint disabled");
-    } else {
-      selectPawType(preferences);
-      Toast.makeText(context, R.string.event_activated, Toast.LENGTH_SHORT).show();
-      Logger.get(context).logImpression(Type.EVENT_ANSWER_HINT_ACTIVATED);
-      LogUtil.i("PawSecretCodeListener.onReceive", "PawAnswerHint enabled");
-    }
-  }
-
-  public static void selectPawType(SharedPreferences preferences) {
-    @PawType int pawType;
-    if (new Random().nextBoolean()) {
-      pawType = PAW_TYPE_CAT;
-    } else {
-      pawType = PAW_TYPE_DOG;
-    }
-    preferences
-        .edit()
-        .putBoolean(PAW_ENABLED_WITH_SECRET_CODE_KEY, true)
-        .putInt(PAW_TYPE, pawType)
-        .apply();
-  }
-}
diff --git a/java/com/android/incallui/answer/impl/hint/res/drawable-xxhdpi/cat_paw.webp b/java/com/android/incallui/answer/impl/hint/res/drawable-xxhdpi/cat_paw.webp
deleted file mode 100644
index f7ff6eb..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/drawable-xxhdpi/cat_paw.webp
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/answer/impl/hint/res/drawable-xxhdpi/dog_paw.webp b/java/com/android/incallui/answer/impl/hint/res/drawable-xxhdpi/dog_paw.webp
deleted file mode 100644
index 3a23254..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/drawable-xxhdpi/dog_paw.webp
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/answer/impl/hint/res/drawable/answer_hint_large.xml b/java/com/android/incallui/answer/impl/hint/res/drawable/answer_hint_large.xml
deleted file mode 100644
index f585ce5..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/drawable/answer_hint_large.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
-  <solid android:color="#00C853"/>
-</shape>
\ No newline at end of file
diff --git a/java/com/android/incallui/answer/impl/hint/res/drawable/answer_hint_mid.xml b/java/com/android/incallui/answer/impl/hint/res/drawable/answer_hint_mid.xml
deleted file mode 100644
index f585ce5..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/drawable/answer_hint_mid.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
-  <solid android:color="#00C853"/>
-</shape>
\ No newline at end of file
diff --git a/java/com/android/incallui/answer/impl/hint/res/drawable/answer_hint_small.xml b/java/com/android/incallui/answer/impl/hint/res/drawable/answer_hint_small.xml
deleted file mode 100644
index 6a24d6a..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/drawable/answer_hint_small.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-  <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
-    <solid android:color="#00C853"/>
-    <stroke android:color="#00C853" android:width="2dp"/>
-  </shape>
\ No newline at end of file
diff --git a/java/com/android/incallui/answer/impl/hint/res/layout/dot_hint.xml b/java/com/android/incallui/answer/impl/hint/res/layout/dot_hint.xml
deleted file mode 100644
index 84b10e7..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/layout/dot_hint.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/answer_hint_container"
-  android:layout_width="160dp"
-  android:layout_height="160dp"
-  android:layout_gravity="center_horizontal"
-  android:visibility="gone">
-  <ImageView
-    android:id="@+id/answer_hint_large"
-    android:layout_width="@dimen/hint_large_begin_size"
-    android:layout_height="@dimen/hint_large_begin_size"
-    android:layout_gravity="center"
-    android:alpha="0"
-    android:src="@drawable/answer_hint_large"/>
-  <ImageView
-    android:id="@+id/answer_hint_mid"
-    android:layout_width="@dimen/hint_mid_begin_size"
-    android:layout_height="@dimen/hint_mid_begin_size"
-    android:src="@drawable/answer_hint_mid"
-    android:alpha="0"
-    android:layout_gravity="center"/>
-  <ImageView
-    android:id="@+id/answer_hint_small"
-    android:layout_width="@dimen/hint_small_begin_size"
-    android:layout_height="@dimen/hint_small_begin_size"
-    android:src="@drawable/answer_hint_small"
-    android:alpha="0"
-    android:layout_gravity="center" />
-</FrameLayout>
\ No newline at end of file
diff --git a/java/com/android/incallui/answer/impl/hint/res/layout/paw_hint.xml b/java/com/android/incallui/answer/impl/hint/res/layout/paw_hint.xml
deleted file mode 100644
index c3b12a0..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/layout/paw_hint.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<FrameLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/answer_hint_container"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:layout_gravity="center_horizontal"
-  android:clipChildren="false"
-  android:clipToPadding="false"
-  android:visibility="gone">
-  <ImageView
-    android:id="@+id/paw_image"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:src="@drawable/cat_paw"
-    android:layout_gravity="center"
-    android:alpha="0"
-    android:rotation="-30"
-    android:transformPivotY="90dp"
-    android:clipChildren="false"
-    android:clipToPadding="false"/>
-</FrameLayout>
\ No newline at end of file
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-af/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-af/strings.xml
deleted file mode 100644
index df8115f..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-af/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Troeteldiermodus af</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-am/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-am/strings.xml
deleted file mode 100644
index fb3d724..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-am/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">የቤት እንስሳ ሁነታ ጠፍቷል</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ar/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ar/strings.xml
deleted file mode 100644
index 4edc22a..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ar/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">وضع الحيوانات الأليفة قيد إيقاف التشغيل</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-az/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-az/strings.xml
deleted file mode 100644
index 66d8bca..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-az/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Sevimli rejim deaktivdir</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 9deaef4..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Režim ljubimca je isključen</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-be/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-be/strings.xml
deleted file mode 100644
index 637d598..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-be/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Рэжым хатняга гадаванца адключаны</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-bg/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-bg/strings.xml
deleted file mode 100644
index 111b015..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-bg/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Режимът за домашен любимец е изключен</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-bn/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-bn/strings.xml
deleted file mode 100644
index 48977d0..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-bn/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">পোষা প্রাণী মোড বন্ধ আছে</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-bs/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-bs/strings.xml
deleted file mode 100644
index 62efdce..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-bs/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Isključen je način kućnog ljubimca</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ca/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ca/strings.xml
deleted file mode 100644
index 7cf7d59..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ca/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Mode de mascota desactivat</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-cs/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-cs/strings.xml
deleted file mode 100644
index a96420a..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-cs/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Režim domácího mazlíčka vypnutý</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-da/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-da/strings.xml
deleted file mode 100644
index 6fad202..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-da/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Dyretilstand er slået fra</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-de/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-de/strings.xml
deleted file mode 100644
index 2fa60b0..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-de/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Tiermodus aus</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-el/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-el/strings.xml
deleted file mode 100644
index 2b9c10c..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-el/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Απενεργοποίηση λειτουργίας κατοικίδιου</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-en-rAU/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-en-rAU/strings.xml
deleted file mode 100644
index dafb46e..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Pet mode off</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-en-rGB/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-en-rGB/strings.xml
deleted file mode 100644
index dafb46e..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Pet mode off</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-en-rIN/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-en-rIN/strings.xml
deleted file mode 100644
index dafb46e..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Pet mode off</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-es-rUS/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-es-rUS/strings.xml
deleted file mode 100644
index 99e1d7d..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Modo de mascotas desactivado</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-es/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-es/strings.xml
deleted file mode 100644
index 99e1d7d..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-es/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Modo de mascotas desactivado</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-et/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-et/strings.xml
deleted file mode 100644
index 6362154..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-et/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Lemmikloomarežiim on väljas</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-eu/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-eu/strings.xml
deleted file mode 100644
index ea06326..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-eu/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Maskota modua desaktibatu da</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-fa/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-fa/strings.xml
deleted file mode 100644
index 7061ba0..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-fa/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">حالت حیوان خانگی خاموش</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-fi/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-fi/strings.xml
deleted file mode 100644
index fea1386..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-fi/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Lemmikkitila pois käytöstä</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-fr-rCA/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 4479c01..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Mode Animaux de compagnie désactivé</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-fr/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-fr/strings.xml
deleted file mode 100644
index dec59e6..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-fr/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Mode animal de compagnie désactivé</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-gl/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-gl/strings.xml
deleted file mode 100644
index 033dc5a..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-gl/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Desactivouse o modo mascota</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-gu/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-gu/strings.xml
deleted file mode 100644
index 8ccc5f9..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-gu/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">પાળતુ પ્રાણી મોડ બંધ</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-hi/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-hi/strings.xml
deleted file mode 100644
index 2baeb56..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-hi/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">पालतू मोड बंद है</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-hr/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-hr/strings.xml
deleted file mode 100644
index 00b95cf..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-hr/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Isključen je način animiranog ljubimca</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-hu/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-hu/strings.xml
deleted file mode 100644
index 7678457..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-hu/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Kisállat mód kikapcsolva</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-hy/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-hy/strings.xml
deleted file mode 100644
index 318c55f..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-hy/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Առանց թաթերի</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-in/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-in/strings.xml
deleted file mode 100644
index c045ab5..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-in/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Mode hewan peliharaan nonaktif</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-is/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-is/strings.xml
deleted file mode 100644
index a42efa3..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-is/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Slökkt á gæludýrastillingu</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-it/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-it/strings.xml
deleted file mode 100644
index d3d6808..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-it/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Modalità animale domestico disattivata</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-iw/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-iw/strings.xml
deleted file mode 100644
index 2d74a65..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-iw/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">מצב \'חיית מחמד\' מושבת</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ja/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ja/strings.xml
deleted file mode 100644
index 4ddd1d3..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ja/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">ペットモードは OFF になっています</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ka/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ka/strings.xml
deleted file mode 100644
index fe39888..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ka/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">ზოორეჟიმი გამორთულია</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-kk/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-kk/strings.xml
deleted file mode 100644
index 8e9d08c..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-kk/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Жануарлар режимі өшірулі</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-km/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-km/strings.xml
deleted file mode 100644
index 82d00e4..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-km/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">មុខងារ​សត្វចិញ្ចឹម​ត្រូវបាន​បិទ</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-kn/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-kn/strings.xml
deleted file mode 100644
index c73887d..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-kn/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">ಪೆಟ್ ಮೋಡ್ ಆಫ್ ಆಗಿದೆ</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ko/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ko/strings.xml
deleted file mode 100644
index 2a5b63b..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ko/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">펫 모드 사용 중지</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ky/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ky/strings.xml
deleted file mode 100644
index 8d77ecb..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ky/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Үй жаныбар режими өчүк</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-lo/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-lo/strings.xml
deleted file mode 100644
index 92c87bd..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-lo/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">ປິດໂໝດສັດລ້ຽງ</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-lt/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-lt/strings.xml
deleted file mode 100644
index f982c80..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-lt/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Naminių gyvūnėlių režimas išjungtas</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-lv/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-lv/strings.xml
deleted file mode 100644
index cc83d12..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-lv/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Mājdzīvnieka režīms izslēgts</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-mk/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-mk/strings.xml
deleted file mode 100644
index bb29a19..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-mk/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Режимот на милениче е исклучен</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ml/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ml/strings.xml
deleted file mode 100644
index 644adac..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ml/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">പെറ്റ് മോഡ് ഓഫാക്കി</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-mn/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-mn/strings.xml
deleted file mode 100644
index c46149f..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-mn/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Тэжээвэр амьтны горим идэвхгүй</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-mr/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-mr/strings.xml
deleted file mode 100644
index 4764b49..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-mr/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">पाळीव प्राणी मोड बंद</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ms/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ms/strings.xml
deleted file mode 100644
index 0425e4d..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ms/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Mod haiwan dimatikan</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-my/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-my/strings.xml
deleted file mode 100644
index ad2c1ce..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-my/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">အိမ်မွေးတိရိစ္ဆာန်မုဒ်ကို ပိတ်ထားပါသည်</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-nb/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-nb/strings.xml
deleted file mode 100644
index a35b7f9..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-nb/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Kjæledyrmodus er slått av</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ne/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ne/strings.xml
deleted file mode 100644
index fec875d..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ne/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">पेेट मोड निष्क्रिय छ</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-nl/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-nl/strings.xml
deleted file mode 100644
index d7ad9cd..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-nl/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Huisdiermodus uit</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-no/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-no/strings.xml
deleted file mode 100644
index a35b7f9..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-no/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Kjæledyrmodus er slått av</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-pa/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-pa/strings.xml
deleted file mode 100644
index e5f33d4..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-pa/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">ਪਾਲਤੂ ਮੋਡ ਬੰਦ ਹੈ</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-pl/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-pl/strings.xml
deleted file mode 100644
index 14aaa86..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-pl/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Tryb pupila wyłączony</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-pt-rBR/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 99c4f77..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Modo animal de estimação desativado</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-pt-rPT/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 99c4f77..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Modo animal de estimação desativado</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-pt/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-pt/strings.xml
deleted file mode 100644
index 99c4f77..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-pt/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Modo animal de estimação desativado</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ro/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ro/strings.xml
deleted file mode 100644
index 1fd228a..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ro/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Modul Animal de companie este dezactivat.</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ru/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ru/strings.xml
deleted file mode 100644
index c3094e0..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ru/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Режим домашнего любимца отключен</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-si/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-si/strings.xml
deleted file mode 100644
index 5856b58..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-si/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">සුරතලුන් ප්‍රකාරය ක්‍රියාවිරහිතයි</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-sk/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-sk/strings.xml
deleted file mode 100644
index 19262a2..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-sk/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Režim domáceho miláčika je vypnutý</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-sl/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-sl/strings.xml
deleted file mode 100644
index 0725d33..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-sl/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Živalski način je izklopljen</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-sq/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-sq/strings.xml
deleted file mode 100644
index 3922e1c..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-sq/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Modaliteti i kafshëzës është joaktiv</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-sr/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-sr/strings.xml
deleted file mode 100644
index 1dd17bc..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-sr/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Режим љубимца је искључен</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-sv/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-sv/strings.xml
deleted file mode 100644
index ae7544a..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-sv/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Djurläge är inaktiverat</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-sw/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-sw/strings.xml
deleted file mode 100644
index 51c89a5..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-sw/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Hali ya mnyama kipenzi imezimwa</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ta/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ta/strings.xml
deleted file mode 100644
index 01fee71..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ta/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">செல்லப்பிராணிப் பயன்முறை முடக்கப்பட்டது</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-te/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-te/strings.xml
deleted file mode 100644
index 5f01a50..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-te/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">పెంపుడు జంతువుల మోడ్ ఆఫ్‌లో ఉంది</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-th/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-th/strings.xml
deleted file mode 100644
index 5edc378..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-th/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">โหมดสัตว์เลี้ยงปิดอยู่</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-tl/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-tl/strings.xml
deleted file mode 100644
index 084a14e..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-tl/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Naka-off ang pet mode</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-tr/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-tr/strings.xml
deleted file mode 100644
index fb11fdf..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-tr/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Evcil hayvan modu kapalı</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-uk/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-uk/strings.xml
deleted file mode 100644
index 332ce22..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-uk/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Режим домашньої тварини вимкнено</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-ur/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-ur/strings.xml
deleted file mode 100644
index 10239d7..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-ur/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">پالتو موڈ آف ہے</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-uz/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-uz/strings.xml
deleted file mode 100644
index e9bd0fc..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-uz/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Uy hayvoni rejimi o‘chiq</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-vi/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-vi/strings.xml
deleted file mode 100644
index ad85e9d..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-vi/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Chế độ thú cưng bị tắt</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-zh-rCN/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 9d1a3dd..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">宠物模式已关闭</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-zh-rHK/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 2af5a34..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">已關閉寵物模式</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-zh-rTW/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 4a5f9b4..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">寵物模式已關閉</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values-zu/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values-zu/strings.xml
deleted file mode 100644
index 0b76317..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values-zu/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string name="event_deactivated">Imodi yesilwanyana ivaliwe</string>
-</resources>
diff --git a/java/com/android/incallui/answer/impl/hint/res/values/dimens.xml b/java/com/android/incallui/answer/impl/hint/res/values/dimens.xml
deleted file mode 100644
index d86084b..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values/dimens.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <dimen name="hint_text_size">18sp</dimen>
-  <dimen name="hint_initial_offset">-100dp</dimen>
-  <dimen name="hint_offset">300dp</dimen>
-  <dimen name="hint_small_begin_size">50dp</dimen>
-  <dimen name="hint_small_end_size">42dp</dimen>
-  <dimen name="hint_mid_begin_size">56dp</dimen>
-  <dimen name="hint_mid_end_size">64dp</dimen>
-  <dimen name="hint_large_begin_size">64dp</dimen>
-  <dimen name="hint_large_end_size">160dp</dimen>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/incallui/answer/impl/hint/res/values/strings.xml b/java/com/android/incallui/answer/impl/hint/res/values/strings.xml
deleted file mode 100644
index ef4f00d..0000000
--- a/java/com/android/incallui/answer/impl/hint/res/values/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-  <string translatable="false" name="event_activated">&#x1f408;&#x1F415;</string>
-  <!-- Toast to display when the incoming call easter egg is disabled. The easter egg shows a cat or\
-   dog paw animation swiping on the screen-->
-  <string name="event_deactivated">Pet mode off</string>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/incallui/answer/impl/proguard.flags b/java/com/android/incallui/answer/impl/proguard.flags
index 0163528..3704799 100644
--- a/java/com/android/incallui/answer/impl/proguard.flags
+++ b/java/com/android/incallui/answer/impl/proguard.flags
@@ -1,5 +1,5 @@
 # Used in com.android.dialer.answer.impl.SmsBottomSheetFragment
--keep class android.support.design.widget.BottomSheetBehavior {
+-keep class com.google.android.material.bottomsheet.BottomSheetBehavior {
     public <init>(android.content.Context, android.util.AttributeSet);
     public <init>();
 }
\ No newline at end of file
diff --git a/java/com/android/incallui/answer/impl/res/drawable-hdpi/ic_end_answer_32.png b/java/com/android/incallui/answer/impl/res/drawable-hdpi/ic_end_answer_32.png
deleted file mode 100644
index c1390dd..0000000
--- a/java/com/android/incallui/answer/impl/res/drawable-hdpi/ic_end_answer_32.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/answer/impl/res/drawable-mdpi/ic_end_answer_32.png b/java/com/android/incallui/answer/impl/res/drawable-mdpi/ic_end_answer_32.png
deleted file mode 100644
index 9f9a220..0000000
--- a/java/com/android/incallui/answer/impl/res/drawable-mdpi/ic_end_answer_32.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/answer/impl/res/drawable-xhdpi/ic_end_answer_32.png b/java/com/android/incallui/answer/impl/res/drawable-xhdpi/ic_end_answer_32.png
deleted file mode 100644
index 3869c3a..0000000
--- a/java/com/android/incallui/answer/impl/res/drawable-xhdpi/ic_end_answer_32.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/answer/impl/res/drawable-xxhdpi/ic_end_answer_32.png b/java/com/android/incallui/answer/impl/res/drawable-xxhdpi/ic_end_answer_32.png
deleted file mode 100644
index e6e046a..0000000
--- a/java/com/android/incallui/answer/impl/res/drawable-xxhdpi/ic_end_answer_32.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/answer/impl/res/drawable-xxxhdpi/ic_end_answer_32.png b/java/com/android/incallui/answer/impl/res/drawable-xxxhdpi/ic_end_answer_32.png
deleted file mode 100644
index 882a7ec..0000000
--- a/java/com/android/incallui/answer/impl/res/drawable-xxxhdpi/ic_end_answer_32.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/answer/impl/res/drawable/ic_end_answer_32.xml b/java/com/android/incallui/answer/impl/res/drawable/ic_end_answer_32.xml
new file mode 100644
index 0000000..e0a276a
--- /dev/null
+++ b/java/com/android/incallui/answer/impl/res/drawable/ic_end_answer_32.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M480,520L480,160Q480,143 491.5,131.5Q503,120 520,120L800,120Q817,120 828.5,131.5Q840,143 840,160L840,360Q840,377 828.5,388.5Q817,400 800,400L600,400L480,520ZM560,320L760,320L760,200L560,200L560,320ZM560,320L560,200L560,200L560,320L560,320ZM798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z"/>
+</vector>
diff --git a/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml b/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml
index 1672bf9..19ebf5d 100644
--- a/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml
+++ b/java/com/android/incallui/answer/impl/res/layout/fragment_incoming_call.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2016 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -68,11 +69,11 @@
         android:padding="64dp"
         android:accessibilityTraversalBefore="@+id/videocall_speaker_button"
         android:drawablePadding="8dp"
-        android:drawableTop="@drawable/quantum_ic_videocam_off_white_36"
         android:gravity="center"
         android:text="@string/call_incoming_video_is_off"
         android:textAppearance="@style/Dialer.Incall.TextAppearance"
-        android:visibility="gone"/>
+        android:visibility="gone"
+        app:drawableTopCompat="@drawable/quantum_ic_videocam_off_vd_theme_24" />
 
     <LinearLayout
         android:id="@+id/incall_contact_grid"
@@ -152,6 +153,7 @@
           android:layout_weight="1"
           android:clipChildren="false"
           android:clipToPadding="false">
+
         <LinearLayout
             android:id="@+id/incall_data_container_chip_container"
             android:layout_width="wrap_content"
@@ -177,7 +179,7 @@
       android:layout_height="56dp"
       android:layout_gravity="bottom|start"
       android:scaleType="center"
-      android:src="@drawable/quantum_ic_message_white_24"
+      android:src="@drawable/quantum_ic_message_vd_theme_24"
       android:visibility="invisible"
       tools:visibility="visible"/>
 
diff --git a/java/com/android/incallui/answer/impl/utils/FlingAnimationUtils.java b/java/com/android/incallui/answer/impl/utils/FlingAnimationUtils.java
index b30afa0..6d142de 100644
--- a/java/com/android/incallui/answer/impl/utils/FlingAnimationUtils.java
+++ b/java/com/android/incallui/answer/impl/utils/FlingAnimationUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -35,13 +36,13 @@
   /** Fancy math. http://en.wikipedia.org/wiki/B%C3%A9zier_curve */
   private static final float LINEAR_OUT_SLOW_IN_START_GRADIENT = 1.0f / LINEAR_OUT_SLOW_IN_X2;
 
-  private Interpolator linearOutSlowIn;
+  private final Interpolator linearOutSlowIn;
 
-  private float minVelocityPxPerSecond;
-  private float maxLengthSeconds;
-  private float highVelocityPxPerSecond;
+  private final float minVelocityPxPerSecond;
+  private final float maxLengthSeconds;
+  private final float highVelocityPxPerSecond;
 
-  private AnimatorProperties animatorProperties = new AnimatorProperties();
+  private final AnimatorProperties animatorProperties = new AnimatorProperties();
 
   public FlingAnimationUtils(Context ctx, float maxLengthSeconds) {
     this.maxLengthSeconds = maxLengthSeconds;
@@ -246,9 +247,9 @@
   /** An interpolator which interpolates two interpolators with an interpolator. */
   private static final class InterpolatorInterpolator implements Interpolator {
 
-    private Interpolator interpolator1;
-    private Interpolator interpolator2;
-    private Interpolator crossfader;
+    private final Interpolator interpolator1;
+    private final Interpolator interpolator2;
+    private final Interpolator crossfader;
 
     InterpolatorInterpolator(
         Interpolator interpolator1, Interpolator interpolator2, Interpolator crossfader) {
@@ -268,9 +269,9 @@
   /** An interpolator which interpolates with a fixed velocity. */
   private static final class VelocityInterpolator implements Interpolator {
 
-    private float durationSeconds;
-    private float velocity;
-    private float diff;
+    private final float durationSeconds;
+    private final float velocity;
+    private final float diff;
 
     private VelocityInterpolator(float durationSeconds, float velocity, float diff) {
       this.durationSeconds = durationSeconds;
diff --git a/java/com/android/incallui/answer/protocol/AnswerScreen.java b/java/com/android/incallui/answer/protocol/AnswerScreen.java
index 38e4dc5..83b1d7e 100644
--- a/java/com/android/incallui/answer/protocol/AnswerScreen.java
+++ b/java/com/android/incallui/answer/protocol/AnswerScreen.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +17,8 @@
 
 package com.android.incallui.answer.protocol;
 
-import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+
 import java.util.List;
 
 /** Interface for the answer module. */
@@ -32,8 +34,6 @@
 
   boolean allowAnswerAndRelease();
 
-  boolean allowSpeakEasy();
-
   boolean isActionTimeout();
 
   void setTextResponses(List<String> textResponses);
diff --git a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
index 172d964..2daf03d 100644
--- a/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
+++ b/java/com/android/incallui/answer/protocol/AnswerScreenDelegate.java
@@ -16,7 +16,8 @@
 
 package com.android.incallui.answer.protocol;
 
-import android.support.annotation.FloatRange;
+import androidx.annotation.FloatRange;
+
 import com.android.incallui.incalluilock.InCallUiLock;
 
 /** Callbacks implemented by the container app for this module. */
@@ -30,8 +31,6 @@
 
   void onReject();
 
-  void onSpeakEasyCall();
-
   void onAnswerAndReleaseCall();
 
   void onAnswerAndReleaseButtonEnabled();
diff --git a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
index 8aeb05f..f2316bc 100644
--- a/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
+++ b/java/com/android/incallui/answerproximitysensor/AnswerProximitySensor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,8 +22,9 @@
 import android.os.PowerManager;
 import android.os.Trace;
 import android.view.Display;
+
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
+import com.android.incallui.R;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCallListener;
 import com.android.incallui.call.state.DialerCallState;
@@ -35,11 +37,6 @@
 public class AnswerProximitySensor
     implements DialerCallListener, AnswerProximityWakeLock.ScreenOnListener {
 
-  private static final String CONFIG_ANSWER_PROXIMITY_SENSOR_ENABLED =
-      "answer_proximity_sensor_enabled";
-  private static final String CONFIG_ANSWER_PSEUDO_PROXIMITY_WAKE_LOCK_ENABLED =
-      "answer_pseudo_proximity_wake_lock_enabled";
-
   private final DialerCall call;
   private final AnswerProximityWakeLock answerProximityWakeLock;
 
@@ -53,11 +50,8 @@
       return false;
     }
 
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(CONFIG_ANSWER_PROXIMITY_SENSOR_ENABLED, true)) {
-      LogUtil.i("AnswerProximitySensor.shouldUse", "disabled by config");
-      Trace.endSection();
+    if (!context.getResources().getBoolean(R.bool.config_answer_proximity_sensor_enabled)) {
+      LogUtil.i("AnswerProximitySensor.shouldUse", "disabled by overlay");
       return false;
     }
 
@@ -85,17 +79,7 @@
     this.call = call;
 
     LogUtil.i("AnswerProximitySensor.constructor", "acquiring lock");
-    if (ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(CONFIG_ANSWER_PSEUDO_PROXIMITY_WAKE_LOCK_ENABLED, true)) {
-      answerProximityWakeLock = new PseudoProximityWakeLock(context, pseudoScreenState);
-    } else {
-      // TODO(twyen): choose a wake lock implementation base on framework/device.
-      // These bugs requires the PseudoProximityWakeLock workaround:
-      // a bug Proximity sensor not working on M
-      // a bug fautly touch input when screen is off on marlin/sailfish
-      answerProximityWakeLock = new SystemProximityWakeLock(context);
-    }
+    answerProximityWakeLock = new PseudoProximityWakeLock(context, pseudoScreenState);
     answerProximityWakeLock.setScreenOnListener(this);
     answerProximityWakeLock.acquire();
 
@@ -156,9 +140,6 @@
   public void onInternationalCallOnWifi() {}
 
   @Override
-  public void onEnrichedCallSessionUpdate() {}
-
-  @Override
   public void onDialerCallSessionModificationStateChange() {}
 
   @Override
diff --git a/java/com/android/incallui/answerproximitysensor/PseudoProximityWakeLock.java b/java/com/android/incallui/answerproximitysensor/PseudoProximityWakeLock.java
index c7844d4..631b9ff 100644
--- a/java/com/android/incallui/answerproximitysensor/PseudoProximityWakeLock.java
+++ b/java/com/android/incallui/answerproximitysensor/PseudoProximityWakeLock.java
@@ -21,7 +21,9 @@
 import android.hardware.SensorEvent;
 import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 
 /**
@@ -34,7 +36,8 @@
   private final PseudoScreenState pseudoScreenState;
   private final Sensor proximitySensor;
 
-  @Nullable private ScreenOnListener listener;
+  @Nullable
+  private ScreenOnListener listener;
   private boolean isHeld;
 
   public PseudoProximityWakeLock(Context context, PseudoScreenState pseudoScreenState) {
diff --git a/java/com/android/incallui/answerproximitysensor/PseudoScreenState.java b/java/com/android/incallui/answerproximitysensor/PseudoScreenState.java
index 676a1a3..53ddc91 100644
--- a/java/com/android/incallui/answerproximitysensor/PseudoScreenState.java
+++ b/java/com/android/incallui/answerproximitysensor/PseudoScreenState.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,9 @@
 package com.android.incallui.answerproximitysensor;
 
 import android.util.ArraySet;
+
+import com.android.incallui.InCallActivity;
+
 import java.util.Set;
 
 /**
diff --git a/java/com/android/incallui/answerproximitysensor/SystemProximityWakeLock.java b/java/com/android/incallui/answerproximitysensor/SystemProximityWakeLock.java
index 776e9a4..c30ffb5 100644
--- a/java/com/android/incallui/answerproximitysensor/SystemProximityWakeLock.java
+++ b/java/com/android/incallui/answerproximitysensor/SystemProximityWakeLock.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,19 +21,22 @@
 import android.hardware.display.DisplayManager;
 import android.hardware.display.DisplayManager.DisplayListener;
 import android.os.PowerManager;
-import android.support.annotation.Nullable;
 import android.view.Display;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 
 /** The normal PROXIMITY_SCREEN_OFF_WAKE_LOCK provided by the OS. */
 public class SystemProximityWakeLock implements AnswerProximityWakeLock, DisplayListener {
 
-  private static final String TAG = "SystemProximityWakeLock";
+  private static final String TAG = "SystemProximity:WakeLock";
 
   private final Context context;
   private final PowerManager.WakeLock wakeLock;
 
-  @Nullable private ScreenOnListener listener;
+  @Nullable
+  private ScreenOnListener listener;
 
   public SystemProximityWakeLock(Context context) {
     this.context = context;
diff --git a/java/com/android/incallui/async/PausableExecutor.java b/java/com/android/incallui/async/PausableExecutor.java
index e10757e..f6622fe 100644
--- a/java/com/android/incallui/async/PausableExecutor.java
+++ b/java/com/android/incallui/async/PausableExecutor.java
@@ -16,41 +16,11 @@
 
 package com.android.incallui.async;
 
-import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
 
-/**
- * Executor that can be used to easily synchronize testing and production code. Production code
- * should call {@link #milestone()} at points in the code where the state of the system is worthy of
- * testing. In a test scenario, this method will pause execution until the test acknowledges the
- * milestone through the use of {@link #ackMilestoneForTesting()}.
- */
-public interface PausableExecutor extends Executor {
-
-  /**
-   * Method called from asynchronous production code to inform this executor that it has reached a
-   * point that puts the system into a state worth testing. TestableExecutors intended for use in a
-   * testing environment should cause the calling thread to block. In the production environment
-   * this should be a no-op.
-   */
-  void milestone();
-
-  /**
-   * Method called from the test code to inform this executor that the state of the production
-   * system at the current milestone has been sufficiently tested. Every milestone must be
-   * acknowledged.
-   */
-  void ackMilestoneForTesting();
-
-  /**
-   * Method called from the test code to inform this executor that the tests are finished with all
-   * milestones. Future calls to {@link #milestone()} or {@link #awaitMilestoneForTesting()} should
-   * return immediately.
-   */
-  void ackAllMilestonesForTesting();
-
-  /**
-   * Method called from the test code to block until a milestone has been reached in the production
-   * code.
-   */
-  void awaitMilestoneForTesting() throws InterruptedException;
+/** {@link PausableExecutor} intended for use in production environments. */
+public class PausableExecutor {
+  public void execute(Runnable command) {
+    Executors.newSingleThreadExecutor().execute(command);
+  }
 }
diff --git a/java/com/android/incallui/async/PausableExecutorImpl.java b/java/com/android/incallui/async/PausableExecutorImpl.java
deleted file mode 100644
index 6876061..0000000
--- a/java/com/android/incallui/async/PausableExecutorImpl.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.incallui.async;
-
-import java.util.concurrent.Executors;
-
-/** {@link PausableExecutor} intended for use in production environments. */
-public class PausableExecutorImpl implements PausableExecutor {
-
-  @Override
-  public void milestone() {}
-
-  @Override
-  public void ackMilestoneForTesting() {}
-
-  @Override
-  public void ackAllMilestonesForTesting() {}
-
-  @Override
-  public void awaitMilestoneForTesting() {}
-
-  @Override
-  public void execute(Runnable command) {
-    Executors.newSingleThreadExecutor().execute(command);
-  }
-}
diff --git a/java/com/android/incallui/audiomode/AudioModeProvider.java b/java/com/android/incallui/audiomode/AudioModeProvider.java
index 47b021e..7b153a6 100644
--- a/java/com/android/incallui/audiomode/AudioModeProvider.java
+++ b/java/com/android/incallui/audiomode/AudioModeProvider.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,7 +21,9 @@
 import android.media.AudioDeviceInfo;
 import android.media.AudioManager;
 import android.telecom.CallAudioState;
+
 import com.android.dialer.common.LogUtil;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -89,6 +92,7 @@
           hasBluetooth = true;
           continue;
         case AudioDeviceInfo.TYPE_WIRED_HEADSET:
+        case AudioDeviceInfo.TYPE_USB_HEADSET:
           hasHeadset = true;
           continue;
         default:
diff --git a/java/com/android/incallui/audioroute/AndroidManifest.xml b/java/com/android/incallui/audioroute/AndroidManifest.xml
deleted file mode 100644
index 36431f1..0000000
--- a/java/com/android/incallui/audioroute/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.incallui.audioroute">
-</manifest>
diff --git a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
index 846834f..81b0bb3 100644
--- a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
+++ b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023-2024 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,26 +26,26 @@
 import android.graphics.PorterDuff.Mode;
 import android.os.Bundle;
 import android.provider.Settings;
-import android.support.annotation.Nullable;
-import android.support.design.widget.BottomSheetDialogFragment;
-import android.support.v4.os.BuildCompat;
 import android.telecom.CallAudioState;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.WindowManager;
 import android.widget.LinearLayout;
 import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.core.widget.TextViewCompat;
+
+import com.android.dialer.R;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.theme.base.ThemeComponent;
-import com.android.incallui.call.CallList;
-import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.TelecomAdapter;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
+import com.android.incallui.util.BluetoothUtil;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
+
 import java.util.Collection;
 
 /** Shows picker for audio routes */
@@ -79,13 +80,12 @@
     LogUtil.i("AudioRouteSelectorDialogFragment.onCreateDialog", null);
     Dialog dialog = super.onCreateDialog(savedInstanceState);
     dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
+    dialog.setCancelable(true);
+    dialog.setCanceledOnTouchOutside(true);
     if (Settings.canDrawOverlays(getContext())) {
       dialog
           .getWindow()
-          .setType(
-              BuildCompat.isAtLeastO()
-                  ? WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
-                  : WindowManager.LayoutParams.TYPE_PHONE);
+          .setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
     }
     return dialog;
   }
@@ -96,47 +96,31 @@
   public View onCreateView(
       LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) {
     View view = layoutInflater.inflate(R.layout.audioroute_selector, viewGroup, false);
-    CallAudioState audioState = getArguments().getParcelable(ARG_AUDIO_STATE);
+    CallAudioState audioState = getArguments().getParcelable(ARG_AUDIO_STATE, CallAudioState.class);
 
-    if (BuildCompat.isAtLeastP()) {
-      // Create items for all connected Bluetooth devices
-      Collection<BluetoothDevice> bluetoothDeviceSet = audioState.getSupportedBluetoothDevices();
-      for (BluetoothDevice device : bluetoothDeviceSet) {
-        boolean selected =
-            (audioState.getRoute() == CallAudioState.ROUTE_BLUETOOTH)
-                && (bluetoothDeviceSet.size() == 1
-                    || device.equals(audioState.getActiveBluetoothDevice()));
-        TextView textView = createBluetoothItem(device, selected);
-        ((LinearLayout) view).addView(textView, 0);
-      }
-    } else {
-      // Only create Bluetooth audio route
-      TextView textView =
-          (TextView) getLayoutInflater().inflate(R.layout.audioroute_item, null, false);
-      textView.setText(getString(R.string.audioroute_bluetooth));
-      initItem(
-          textView,
-          CallAudioState.ROUTE_BLUETOOTH,
-          audioState,
-          DialerImpression.Type.IN_CALL_SWITCH_AUDIO_ROUTE_BLUETOOTH);
+    // Create items for all connected Bluetooth devices
+    Collection<BluetoothDevice> bluetoothDeviceSet = audioState.getSupportedBluetoothDevices();
+    for (BluetoothDevice device : bluetoothDeviceSet) {
+      boolean selected =
+          (audioState.getRoute() == CallAudioState.ROUTE_BLUETOOTH)
+              && (bluetoothDeviceSet.size() == 1
+                  || device.equals(audioState.getActiveBluetoothDevice()));
+      TextView textView = createBluetoothItem(device, selected);
       ((LinearLayout) view).addView(textView, 0);
     }
 
     initItem(
-        (TextView) view.findViewById(R.id.audioroute_speaker),
+        view.findViewById(R.id.audioroute_speaker),
         CallAudioState.ROUTE_SPEAKER,
-        audioState,
-        DialerImpression.Type.IN_CALL_SWITCH_AUDIO_ROUTE_SPEAKER);
+        audioState);
     initItem(
-        (TextView) view.findViewById(R.id.audioroute_headset),
+        view.findViewById(R.id.audioroute_headset),
         CallAudioState.ROUTE_WIRED_HEADSET,
-        audioState,
-        DialerImpression.Type.IN_CALL_SWITCH_AUDIO_ROUTE_WIRED_HEADSET);
+        audioState);
     initItem(
-        (TextView) view.findViewById(R.id.audioroute_earpiece),
+        view.findViewById(R.id.audioroute_earpiece),
         CallAudioState.ROUTE_EARPIECE,
-        audioState,
-        DialerImpression.Type.IN_CALL_SWITCH_AUDIO_ROUTE_EARPIECE);
+        audioState);
 
     // TODO(a bug): set peak height correctly to fully expand it in landscape mode.
     return view;
@@ -153,20 +137,17 @@
   private void initItem(
       TextView item,
       final int itemRoute,
-      CallAudioState audioState,
-      DialerImpression.Type impressionType) {
-    int selectedColor = ThemeComponent.get(getContext()).theme().getColorPrimary();
+      CallAudioState audioState) {
     if ((audioState.getSupportedRouteMask() & itemRoute) == 0) {
       item.setVisibility(View.GONE);
     } else if (audioState.getRoute() == itemRoute) {
       item.setSelected(true);
-      item.setTextColor(selectedColor);
-      item.setCompoundDrawableTintList(ColorStateList.valueOf(selectedColor));
-      item.setCompoundDrawableTintMode(Mode.SRC_ATOP);
+      setColor(item, true);
+    } else {
+      setColor(item, false);
     }
     item.setOnClickListener(
         (v) -> {
-          logCallAudioRouteImpression(impressionType);
           FragmentUtils.getParentUnsafe(
                   AudioRouteSelectorDialogFragment.this, AudioRouteSelectorPresenter.class)
               .onAudioRouteSelected(itemRoute);
@@ -175,19 +156,19 @@
   }
 
   private TextView createBluetoothItem(BluetoothDevice bluetoothDevice, boolean selected) {
-    int selectedColor = ThemeComponent.get(getContext()).theme().getColorPrimary();
     TextView textView =
         (TextView) getLayoutInflater().inflate(R.layout.audioroute_item, null, false);
-    textView.setText(getAliasName(bluetoothDevice));
+    String alias = BluetoothUtil.getAliasName(bluetoothDevice);
+    if (TextUtils.isEmpty(alias)) {
+      alias = getString(R.string.audioroute_bluetooth);
+    }
+    textView.setText(alias);
     if (selected) {
       textView.setSelected(true);
-      textView.setTextColor(selectedColor);
-      textView.setCompoundDrawableTintList(ColorStateList.valueOf(selectedColor));
-      textView.setCompoundDrawableTintMode(Mode.SRC_ATOP);
     }
+    setColor(textView, selected);
     textView.setOnClickListener(
         (v) -> {
-          logCallAudioRouteImpression(DialerImpression.Type.IN_CALL_SWITCH_AUDIO_ROUTE_BLUETOOTH);
           // Set Bluetooth audio route
           FragmentUtils.getParentUnsafe(
                   AudioRouteSelectorDialogFragment.this, AudioRouteSelectorPresenter.class)
@@ -200,30 +181,12 @@
     return textView;
   }
 
-  @SuppressLint("PrivateApi")
-  private String getAliasName(BluetoothDevice bluetoothDevice) {
-    try {
-      Method getActiveDeviceMethod = bluetoothDevice.getClass().getDeclaredMethod("getAliasName");
-      getActiveDeviceMethod.setAccessible(true);
-      return (String) getActiveDeviceMethod.invoke(bluetoothDevice);
-    } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
-      e.printStackTrace();
-      return bluetoothDevice.getName();
-    }
-  }
-
-  private void logCallAudioRouteImpression(DialerImpression.Type impressionType) {
-    DialerCall dialerCall = CallList.getInstance().getOutgoingCall();
-    if (dialerCall == null) {
-      dialerCall = CallList.getInstance().getActiveOrBackgroundCall();
-    }
-
-    if (dialerCall != null) {
-      Logger.get(getContext())
-          .logCallImpression(
-              impressionType, dialerCall.getUniqueCallId(), dialerCall.getTimeAddedMs());
-    } else {
-      Logger.get(getContext()).logImpression(impressionType);
-    }
+  private void setColor(TextView item, boolean isSelected) {
+    int color = isSelected
+            ? ThemeComponent.get(requireContext()).theme().getColorAccent()
+            : requireContext().getColor(R.color.nav_item);
+    item.setTextColor(color);
+    TextViewCompat.setCompoundDrawableTintList(item, ColorStateList.valueOf(color));
+    TextViewCompat.setCompoundDrawableTintMode(item, Mode.SRC_ATOP);
   }
 }
diff --git a/java/com/android/incallui/audioroute/res/drawable-hdpi/ic_phone_audio_grey600_24dp.png b/java/com/android/incallui/audioroute/res/drawable-hdpi/ic_phone_audio_grey600_24dp.png
deleted file mode 100644
index 4ea921a..0000000
--- a/java/com/android/incallui/audioroute/res/drawable-hdpi/ic_phone_audio_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/audioroute/res/drawable-mdpi/ic_phone_audio_grey600_24dp.png b/java/com/android/incallui/audioroute/res/drawable-mdpi/ic_phone_audio_grey600_24dp.png
deleted file mode 100644
index acef550..0000000
--- a/java/com/android/incallui/audioroute/res/drawable-mdpi/ic_phone_audio_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/audioroute/res/drawable-xhdpi/ic_phone_audio_grey600_24dp.png b/java/com/android/incallui/audioroute/res/drawable-xhdpi/ic_phone_audio_grey600_24dp.png
deleted file mode 100644
index a30aa5c..0000000
--- a/java/com/android/incallui/audioroute/res/drawable-xhdpi/ic_phone_audio_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/audioroute/res/drawable-xxhdpi/ic_phone_audio_grey600_24dp.png b/java/com/android/incallui/audioroute/res/drawable-xxhdpi/ic_phone_audio_grey600_24dp.png
deleted file mode 100644
index beb85a8..0000000
--- a/java/com/android/incallui/audioroute/res/drawable-xxhdpi/ic_phone_audio_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/audioroute/res/layout/audioroute_item.xml b/java/com/android/incallui/audioroute/res/layout/audioroute_item.xml
index 844baa4..f4ca264 100644
--- a/java/com/android/incallui/audioroute/res/layout/audioroute_item.xml
+++ b/java/com/android/incallui/audioroute/res/layout/audioroute_item.xml
@@ -1,5 +1,6 @@
 <!--
 ~ Copyright (C) 2018 The Android Open Source Project
+~ Copyright (C) 2023 The LineageOS Project
 ~
 ~ Licensed under the Apache License, Version 2.0 (the "License");
 ~ you may not use this file except in compliance with the License.
@@ -14,9 +15,10 @@
 ~ limitations under the License
 -->
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     style="@style/AudioRouteItem"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:drawableStart="@drawable/quantum_ic_bluetooth_audio_vd_theme_24"
     android:gravity="start"
-    android:textAlignment="viewStart"/>
\ No newline at end of file
+    android:textAlignment="viewStart"
+    app:drawableStartCompat="@drawable/quantum_ic_bluetooth_audio_vd_theme_24" />
diff --git a/java/com/android/incallui/audioroute/res/layout/audioroute_selector.xml b/java/com/android/incallui/audioroute/res/layout/audioroute_selector.xml
index b63f387..f6d59ca 100644
--- a/java/com/android/incallui/audioroute/res/layout/audioroute_selector.xml
+++ b/java/com/android/incallui/audioroute/res/layout/audioroute_selector.xml
@@ -1,5 +1,6 @@
 <!--
 ~ Copyright (C) 2018 The Android Open Source Project
+~ Copyright (C) 2023 The LineageOS Project
 ~
 ~ Licensed under the Apache License, Version 2.0 (the "License");
 ~ you may not use this file except in compliance with the License.
@@ -14,34 +15,36 @@
 ~ limitations under the License
 -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical"
-    tools:layout_gravity="bottom">
+    tools:layout_gravity="bottom"
+    android:background="@drawable/rounded_dialpad_bg">
   <TextView
       android:id="@+id/audioroute_speaker"
       style="@style/AudioRouteItem"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
-      android:drawableStart="@drawable/quantum_ic_volume_up_grey600_24"
       android:text="@string/audioroute_speaker"
-      android:textAlignment="viewStart"/>
+      android:textAlignment="viewStart"
+      app:drawableStartCompat="@drawable/quantum_ic_volume_up_vd_theme_24" />
   <TextView
       android:id="@+id/audioroute_earpiece"
       style="@style/AudioRouteItem"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
-      android:drawableStart="@drawable/ic_phone_audio_grey600_24dp"
       android:text="@string/audioroute_phone"
-      android:textAlignment="viewStart"/>
+      android:textAlignment="viewStart"
+      app:drawableStartCompat="@drawable/quantum_ic_phone_in_talk_vd_theme_24" />
   <TextView
       android:id="@+id/audioroute_headset"
       style="@style/AudioRouteItem"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
-      android:drawableStart="@drawable/quantum_ic_headset_grey600_24"
       android:text="@string/audioroute_headset"
-      android:textAlignment="viewStart"/>
+      android:textAlignment="viewStart"
+      app:drawableStartCompat="@drawable/quantum_ic_headset_vd_theme_24" />
 
 </LinearLayout>
diff --git a/java/com/android/incallui/audioroute/res/values/styles.xml b/java/com/android/incallui/audioroute/res/values/styles.xml
index 5215bea..1a8b2a6 100644
--- a/java/com/android/incallui/audioroute/res/values/styles.xml
+++ b/java/com/android/incallui/audioroute/res/values/styles.xml
@@ -27,4 +27,10 @@
     <item name="android:textColor">?android:attr/textColorSecondary</item>
     <item name="android:drawableTint">?android:attr/textColorSecondary</item>
   </style>
+
+  <style name="TransparentBottomSheetDialogTheme" parent="Theme.AppCompat.Light">
+    <item name="android:background">@android:color/transparent</item>
+    <item name="android:windowBackground">@android:color/transparent</item>
+    <item name="android:statusBarColor">@android:color/transparent</item>
+  </style>
 </resources>
diff --git a/java/com/android/incallui/autoresizetext/AndroidManifest.xml b/java/com/android/incallui/autoresizetext/AndroidManifest.xml
deleted file mode 100644
index f66ee57..0000000
--- a/java/com/android/incallui/autoresizetext/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.incallui.autoresizetext">
-
-  <uses-sdk
-      android:minSdkVersion="24"
-      android:targetSdkVersion="30"/>
-
-  <application />
-</manifest>
diff --git a/java/com/android/incallui/autoresizetext/AutoResizeTextView.java b/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
index c8647fc..7784ce6 100644
--- a/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
+++ b/java/com/android/incallui/autoresizetext/AutoResizeTextView.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,7 +20,6 @@
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.RectF;
-import android.support.annotation.Nullable;
 import android.text.Layout.Alignment;
 import android.text.StaticLayout;
 import android.text.TextPaint;
@@ -27,7 +27,11 @@
 import android.util.DisplayMetrics;
 import android.util.SparseIntArray;
 import android.util.TypedValue;
-import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatTextView;
+
+import com.android.dialer.R;
 
 /**
  * A TextView that automatically scales its text to completely fill its allotted width.
@@ -37,7 +41,7 @@
  * found yet. A known workaround is the solution provided on StackOverflow:
  * http://stackoverflow.com/a/5535672
  */
-public class AutoResizeTextView extends TextView {
+public class AutoResizeTextView extends AppCompatTextView {
   private static final int NO_LINE_LIMIT = -1;
   private static final float DEFAULT_MIN_TEXT_SIZE = 16.0f;
   private static final int DEFAULT_RESIZE_STEP_UNIT = TypedValue.COMPLEX_UNIT_PX;
@@ -66,14 +70,8 @@
     initialize(context, attrs, defStyleAttr, 0);
   }
 
-  public AutoResizeTextView(
-      Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-    super(context, attrs, defStyleAttr, defStyleRes);
-    initialize(context, attrs, defStyleAttr, defStyleRes);
-  }
-
   private void initialize(
-      Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+          Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
     TypedArray typedArray = context.getTheme().obtainStyledAttributes(
         attrs, R.styleable.AutoResizeTextView, defStyleAttr, defStyleRes);
     readAttrs(typedArray);
diff --git a/java/com/android/incallui/baseui/BaseFragment.java b/java/com/android/incallui/baseui/BaseFragment.java
index c1b6148..0dfa28d 100644
--- a/java/com/android/incallui/baseui/BaseFragment.java
+++ b/java/com/android/incallui/baseui/BaseFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,14 +18,18 @@
 package com.android.incallui.baseui;
 
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
 
 /** Parent for all fragments that use Presenters and Ui design. */
 public abstract class BaseFragment<T extends Presenter<U>, U extends Ui> extends Fragment {
 
   private static final String KEY_FRAGMENT_HIDDEN = "key_fragment_hidden";
 
-  private T presenter;
+  private final T presenter;
 
   protected BaseFragment() {
     presenter = createPresenter();
@@ -44,8 +49,8 @@
   }
 
   @Override
-  public void onActivityCreated(Bundle savedInstanceState) {
-    super.onActivityCreated(savedInstanceState);
+  public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+    super.onViewCreated(view, savedInstanceState);
     presenter.onUiReady(getUi());
   }
 
@@ -53,9 +58,8 @@
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     if (savedInstanceState != null) {
-      presenter.onRestoreInstanceState(savedInstanceState);
       if (savedInstanceState.getBoolean(KEY_FRAGMENT_HIDDEN)) {
-        getFragmentManager().beginTransaction().hide(this).commit();
+        getParentFragmentManager().beginTransaction().hide(this).commit();
       }
     }
   }
@@ -69,7 +73,6 @@
   @Override
   public void onSaveInstanceState(Bundle outState) {
     super.onSaveInstanceState(outState);
-    presenter.onSaveInstanceState(outState);
     outState.putBoolean(KEY_FRAGMENT_HIDDEN, isHidden());
   }
 }
diff --git a/java/com/android/incallui/baseui/Presenter.java b/java/com/android/incallui/baseui/Presenter.java
index e4df938..ab67ea4 100644
--- a/java/com/android/incallui/baseui/Presenter.java
+++ b/java/com/android/incallui/baseui/Presenter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,6 @@
 
 package com.android.incallui.baseui;
 
-import android.os.Bundle;
-
 /** Base class for Presenters. */
 public abstract class Presenter<U extends Ui> {
 
@@ -44,10 +43,6 @@
    */
   public void onUiUnready(U ui) {}
 
-  public void onSaveInstanceState(Bundle outState) {}
-
-  public void onRestoreInstanceState(Bundle savedInstanceState) {}
-
   public U getUi() {
     return ui;
   }
diff --git a/java/com/android/incallui/bindings/ContactUtils.java b/java/com/android/incallui/bindings/ContactUtils.java
index d2d365d..3b5197d 100644
--- a/java/com/android/incallui/bindings/ContactUtils.java
+++ b/java/com/android/incallui/bindings/ContactUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.location.Address;
 import android.util.Pair;
+
 import java.util.Calendar;
 import java.util.List;
 
diff --git a/java/com/android/incallui/bindings/InCallUiBindings.java b/java/com/android/incallui/bindings/InCallUiBindings.java
index c15b68d..b191678 100644
--- a/java/com/android/incallui/bindings/InCallUiBindings.java
+++ b/java/com/android/incallui/bindings/InCallUiBindings.java
@@ -18,7 +18,8 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
 
 /** This interface allows the container application to customize the in call UI. */
 public interface InCallUiBindings {
diff --git a/java/com/android/incallui/bindings/InCallUiBindingsStub.java b/java/com/android/incallui/bindings/InCallUiBindingsStub.java
index 3a9e1dc..46656f4 100644
--- a/java/com/android/incallui/bindings/InCallUiBindingsStub.java
+++ b/java/com/android/incallui/bindings/InCallUiBindingsStub.java
@@ -18,7 +18,8 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
 
 /** Default implementation for InCallUi bindings. */
 public class InCallUiBindingsStub implements InCallUiBindings {
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index 634a302..2649da5 100644
--- a/java/com/android/incallui/call/CallList.java
+++ b/java/com/android/incallui/call/CallList.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,36 +19,26 @@
 
 import android.content.Context;
 import android.os.Handler;
+import android.os.Looper;
 import android.os.Message;
 import android.os.Trace;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
+import android.provider.BlockedNumberContract;
 import android.telecom.Call;
 import android.telecom.DisconnectCause;
 import android.telecom.PhoneAccount;
+import android.text.TextUtils;
 import android.util.ArrayMap;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.metrics.Metrics;
-import com.android.dialer.metrics.MetricsComponent;
 import com.android.dialer.promotion.impl.RttPromotion;
 import com.android.dialer.shortcuts.ShortcutUsageReporter;
-import com.android.dialer.spam.SpamComponent;
-import com.android.dialer.spam.status.SpamStatus;
-import com.android.dialer.telecom.TelecomCallUtil;
 import com.android.incallui.call.state.DialerCallState;
-import com.android.incallui.latencyreport.LatencyReport;
 import com.android.incallui.videotech.utils.SessionModificationState;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
+
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
@@ -69,7 +60,7 @@
 
   private static final int EVENT_DISCONNECTED_TIMEOUT = 1;
 
-  private static CallList instance = new CallList();
+  private static final CallList instance = new CallList();
 
   private final Map<String, DialerCall> callById = new ArrayMap<>();
   private final Map<android.telecom.Call, DialerCall> callByTelecomCall = new ArrayMap<>();
@@ -79,131 +70,59 @@
    * resizing, 1 means we only expect a single thread to access the map so make only a single shard
    */
   private final Set<Listener> listeners =
-      Collections.newSetFromMap(new ConcurrentHashMap<Listener, Boolean>(8, 0.9f, 1));
+      Collections.newSetFromMap(new ConcurrentHashMap<>(8, 0.9f, 1));
 
   private final Set<DialerCall> pendingDisconnectCalls =
-      Collections.newSetFromMap(new ConcurrentHashMap<DialerCall, Boolean>(8, 0.9f, 1));
+      Collections.newSetFromMap(new ConcurrentHashMap<>(8, 0.9f, 1));
 
   private UiListener uiListeners;
   /** Handles the timeout for destroying disconnected calls. */
-  private final Handler handler =
-      new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-          switch (msg.what) {
-            case EVENT_DISCONNECTED_TIMEOUT:
-              LogUtil.d("CallList.handleMessage", "EVENT_DISCONNECTED_TIMEOUT ", msg.obj);
-              finishDisconnectedCall((DialerCall) msg.obj);
-              break;
-            default:
-              LogUtil.e("CallList.handleMessage", "Message not expected: " + msg.what);
-              break;
-          }
-        }
-      };
+  private final Handler handler = new Handler(Looper.getMainLooper()) {
+    @Override
+    public void handleMessage(Message msg) {
+      switch (msg.what) {
+        case EVENT_DISCONNECTED_TIMEOUT:
+          LogUtil.d("CallList.handleMessage", "EVENT_DISCONNECTED_TIMEOUT ", msg.obj);
+          finishDisconnectedCall((DialerCall) msg.obj);
+          break;
+        default:
+          LogUtil.e("CallList.handleMessage", "Message not expected: " + msg.what);
+          break;
+      }
+    }
+  };
 
   /**
    * USED ONLY FOR TESTING Testing-only constructor. Instance should only be acquired through
    * getRunningInstance().
    */
-  @VisibleForTesting
   public CallList() {}
 
-  @VisibleForTesting
-  public static void setCallListInstance(CallList callList) {
-    instance = callList;
-  }
-
   /** Static singleton accessor method. */
   public static CallList getInstance() {
     return instance;
   }
 
   public void onCallAdded(
-      final Context context, final android.telecom.Call telecomCall, LatencyReport latencyReport) {
+      final Context context, final android.telecom.Call telecomCall) {
     Trace.beginSection("CallList.onCallAdded");
-    if (telecomCall.getState() == Call.STATE_CONNECTING) {
-      MetricsComponent.get(context)
-          .metrics()
-          .startTimer(Metrics.ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_OUTGOING);
-    } else if (telecomCall.getState() == Call.STATE_RINGING) {
-      MetricsComponent.get(context)
-          .metrics()
-          .startTimer(Metrics.ON_CALL_ADDED_TO_ON_INCALL_UI_SHOWN_INCOMING);
-    }
     if (uiListeners != null) {
       uiListeners.onCallAdded();
     }
     final DialerCall call =
-        new DialerCall(context, this, telecomCall, latencyReport, true /* registerCallback */);
-    if (getFirstCall() != null) {
-      logSecondIncomingCall(context, getFirstCall(), call);
-    }
-
-    EnrichedCallManager manager = EnrichedCallComponent.get(context).getEnrichedCallManager();
-    manager.registerCapabilitiesListener(call);
-    manager.registerStateChangedListener(call);
+        new DialerCall(context, this, telecomCall, true /* registerCallback */);
 
     Trace.beginSection("checkSpam");
     call.addListener(new DialerCallListenerImpl(call));
     LogUtil.d("CallList.onCallAdded", "callState=" + call.getState());
-    if (SpamComponent.get(context).spamSettings().isSpamEnabled()) {
-      String number = TelecomCallUtil.getNumber(telecomCall);
-      ListenableFuture<SpamStatus> futureSpamStatus =
-          SpamComponent.get(context).spam().checkSpamStatus(number, call.getCountryIso());
-
-      Futures.addCallback(
-          futureSpamStatus,
-          new FutureCallback<SpamStatus>() {
-            @Override
-            public void onSuccess(@Nullable SpamStatus result) {
-              boolean isIncomingCall =
-                  call.getState() == DialerCallState.INCOMING
-                      || call.getState() == DialerCallState.CALL_WAITING;
-              boolean isSpam = result.isSpam();
-              call.setSpamStatus(result);
-
-              if (isIncomingCall) {
-                Logger.get(context)
-                    .logCallImpression(
-                        isSpam
-                            ? DialerImpression.Type.INCOMING_SPAM_CALL
-                            : DialerImpression.Type.INCOMING_NON_SPAM_CALL,
-                        call.getUniqueCallId(),
-                        call.getTimeAddedMs());
-              }
-              onUpdateCall(call);
-              notifyGenericListeners();
-            }
-
-            @Override
-            public void onFailure(Throwable t) {
-              LogUtil.e("CallList.onFailure", "unable to query spam status", t);
-            }
-          },
-          DialerExecutorComponent.get(context).uiExecutor());
-
-      Trace.beginSection("updateUserMarkedSpamStatus");
-      Trace.endSection();
-    }
     Trace.endSection();
 
     Trace.beginSection("checkBlock");
-    FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler =
-        new FilteredNumberAsyncQueryHandler(context);
 
-    filteredNumberAsyncQueryHandler.isBlockedNumber(
-        new FilteredNumberAsyncQueryHandler.OnCheckBlockedListener() {
-          @Override
-          public void onCheckComplete(Integer id) {
-            if (id != null && id != FilteredNumberAsyncQueryHandler.INVALID_ID) {
-              call.setBlockedStatus(true);
-              // No need to update UI since it's only used for logging.
-            }
-          }
-        },
-        call.getNumber(),
-        call.getCountryIso());
+    if (BlockedNumberContract.canCurrentUserBlockNumbers(context) &&
+            BlockedNumberContract.isBlocked(context, call.getNumber())) {
+      call.setBlockedStatus(true);
+    }
     Trace.endSection();
 
     if (call.getState() == DialerCallState.INCOMING
@@ -212,21 +131,9 @@
         if (!call.isPhoneAccountRttCapable()) {
           RttPromotion.setEnabled(context);
         }
-        Logger.get(context)
-            .logCallImpression(
-                DialerImpression.Type.INCOMING_RTT_CALL,
-                call.getUniqueCallId(),
-                call.getTimeAddedMs());
       }
       onIncoming(call);
     } else {
-      if (call.isActiveRttCall()) {
-        Logger.get(context)
-            .logCallImpression(
-                DialerImpression.Type.OUTGOING_RTT_CALL,
-                call.getUniqueCallId(),
-                call.getTimeAddedMs());
-      }
       onUpdateCall(call);
       notifyGenericListeners();
     }
@@ -239,28 +146,6 @@
     Trace.endSection();
   }
 
-  private void logSecondIncomingCall(
-      @NonNull Context context, @NonNull DialerCall firstCall, @NonNull DialerCall incomingCall) {
-    DialerImpression.Type impression;
-    if (firstCall.isVideoCall()) {
-      if (incomingCall.isVideoCall()) {
-        impression = DialerImpression.Type.VIDEO_CALL_WITH_INCOMING_VIDEO_CALL;
-      } else {
-        impression = DialerImpression.Type.VIDEO_CALL_WITH_INCOMING_VOICE_CALL;
-      }
-    } else {
-      if (incomingCall.isVideoCall()) {
-        impression = DialerImpression.Type.VOICE_CALL_WITH_INCOMING_VIDEO_CALL;
-      } else {
-        impression = DialerImpression.Type.VOICE_CALL_WITH_INCOMING_VOICE_CALL;
-      }
-    }
-    Assert.checkArgument(impression != null);
-    Logger.get(context)
-        .logCallImpression(
-            impression, incomingCall.getUniqueCallId(), incomingCall.getTimeAddedMs());
-  }
-
   @Override
   public DialerCall getDialerCallFromTelecomCall(Call telecomCall) {
     return callByTelecomCall.get(telecomCall);
@@ -271,14 +156,9 @@
       DialerCall call = callByTelecomCall.get(telecomCall);
       Assert.checkArgument(!call.isExternalCall());
 
-      EnrichedCallManager manager = EnrichedCallComponent.get(context).getEnrichedCallManager();
-      manager.unregisterCapabilitiesListener(call);
-      manager.unregisterStateChangedListener(call);
-
       // Don't log an already logged call. logCall() might be called multiple times
       // for the same call due to a bug.
       if (call.getLogState() != null && !call.getLogState().isLogged) {
-        getLegacyBindings(context).logCall(call);
         call.getLogState().isLogged = true;
       }
 
@@ -295,21 +175,6 @@
     }
   }
 
-  InCallUiLegacyBindings getLegacyBindings(Context context) {
-    Objects.requireNonNull(context);
-
-    Context application = context.getApplicationContext();
-    InCallUiLegacyBindings legacyInstance = null;
-    if (application instanceof InCallUiLegacyBindingsFactory) {
-      legacyInstance = ((InCallUiLegacyBindingsFactory) application).newInCallUiLegacyBindings();
-    }
-
-    if (legacyInstance == null) {
-      legacyInstance = new InCallUiLegacyBindingsStub();
-    }
-    return legacyInstance;
-  }
-
   /**
    * Handles the case where an internal call has become an exteral call. We need to
    *
@@ -324,7 +189,6 @@
       // Don't log an already logged call. logCall() might be called multiple times
       // for the same call due to a bug.
       if (call.getLogState() != null && !call.getLogState().isLogged) {
-        getLegacyBindings(context).logCall(call);
         call.getLogState().isLogged = true;
       }
 
@@ -535,6 +399,15 @@
     return retval;
   }
 
+  public DialerCall getCallWithStateAndNumber(int state, String number) {
+    for (DialerCall call : callById.values()) {
+      if (TextUtils.equals(call.getNumber(), number) && call.getState() == state) {
+        return call;
+      }
+    }
+    return null;
+  }
+
   /**
    * Return if there is any active or background call which was not a parent call (never had a child
    * call)
@@ -590,7 +463,6 @@
    *
    * @param call The call to update.
    */
-  @VisibleForTesting
   void onUpdateCall(DialerCall call) {
     Trace.beginSection("CallList.onUpdateCall");
     LogUtil.d("CallList.onUpdateCall", String.valueOf(call));
@@ -722,9 +594,6 @@
   }
 
   public void onInCallUiShown(boolean forFullScreenIntent) {
-    for (DialerCall call : callById.values()) {
-      call.getLatencyReport().onInCallUiShown(forFullScreenIntent);
-    }
     if (uiListeners != null) {
       uiListeners.onInCallUiShown();
     }
@@ -753,9 +622,6 @@
      */
     default void onUpgradeToRtt(DialerCall call, int rttRequestId) {}
 
-    /** Called when the SpeakEasy state of a Dialer call is mutated. */
-    default void onSpeakEasyStateChange() {}
-
     /** Called when the session modification state of a call changes. */
     void onSessionModificationStateChange(DialerCall call);
 
@@ -834,13 +700,6 @@
     }
 
     @Override
-    public void onDialerCallSpeakEasyStateChange() {
-      for (Listener listener : listeners) {
-        listener.onSpeakEasyStateChange();
-      }
-    }
-
-    @Override
     public void onDialerCallUpgradeToVideo() {
       for (Listener listener : listeners) {
         listener.onUpgradeToVideo(call);
@@ -870,9 +729,6 @@
     }
 
     @Override
-    public void onEnrichedCallSessionUpdate() {}
-
-    @Override
     public void onDialerCallSessionModificationStateChange() {
       for (Listener listener : listeners) {
         listener.onSessionModificationStateChange(call);
diff --git a/java/com/android/incallui/call/CallRecorder.java b/java/com/android/incallui/call/CallRecorder.java
new file mode 100644
index 0000000..8388d75
--- /dev/null
+++ b/java/com/android/incallui/call/CallRecorder.java
@@ -0,0 +1,334 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod Project
+ * Copyright (C) 2023 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.incallui.call;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.content.res.XmlResourceParser;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.RemoteException;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.android.dialer.R;
+import com.android.dialer.callrecord.CallRecording;
+import com.android.dialer.callrecord.CallRecordingDataStore;
+import com.android.dialer.callrecord.ICallRecorderService;
+import com.android.dialer.callrecord.impl.CallRecorderService;
+import com.android.dialer.location.GeoUtil;
+import com.android.incallui.call.state.DialerCallState;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Locale;
+
+/**
+ * InCall UI's interface to the call recorder
+ *
+ * Manages the call recorder service lifecycle.  We bind to the service whenever an active call
+ * is established, and unbind when all calls have been disconnected.
+ */
+public class CallRecorder implements CallList.Listener {
+  public static final String TAG = "CallRecorder";
+
+  public static final String[] REQUIRED_PERMISSIONS = new String[] {
+    android.Manifest.permission.RECORD_AUDIO
+  };
+  private static final HashMap<String, Boolean> RECORD_ALLOWED_STATE_BY_COUNTRY = new HashMap<>();
+
+  private static CallRecorder instance = null;
+  private Context context;
+  private boolean initialized = false;
+  private ICallRecorderService service = null;
+
+  private final HashSet<RecordingProgressListener> progressListeners = new HashSet<>();
+  private final Handler handler = new Handler(Looper.getMainLooper());
+
+  private final ServiceConnection connection = new ServiceConnection() {
+    @Override
+    public void onServiceConnected(ComponentName name, IBinder service) {
+      CallRecorder.this.service = ICallRecorderService.Stub.asInterface(service);
+    }
+
+    @Override
+    public void onServiceDisconnected(ComponentName name) {
+      CallRecorder.this.service = null;
+    }
+  };
+
+  public static CallRecorder getInstance() {
+    if (instance == null) {
+      instance = new CallRecorder();
+    }
+    return instance;
+  }
+
+  public boolean isEnabled() {
+    return CallRecorderService.isEnabled(context);
+  }
+
+  public boolean canRecordInCurrentCountry() {
+      if (!isEnabled()) {
+          return false;
+      }
+      if (RECORD_ALLOWED_STATE_BY_COUNTRY.isEmpty()) {
+          loadAllowedStates();
+      }
+
+      String currentCountryIso = GeoUtil.getCurrentCountryIso(context);
+      Boolean allowedState = RECORD_ALLOWED_STATE_BY_COUNTRY.get(currentCountryIso);
+
+      return allowedState != null && allowedState;
+  }
+
+  private CallRecorder() {
+    CallList.getInstance().addListener(this);
+  }
+
+  public void setUp(Context context) {
+    this.context = context.getApplicationContext();
+  }
+
+  private void initialize() {
+    if (isEnabled() && !initialized) {
+      Intent serviceIntent = new Intent(context, CallRecorderService.class);
+      context.bindService(serviceIntent, connection, Context.BIND_AUTO_CREATE);
+      initialized = true;
+    }
+  }
+
+  private void uninitialize() {
+    if (initialized) {
+      context.unbindService(connection);
+      initialized = false;
+    }
+  }
+
+  public boolean startRecording(final String phoneNumber, final long creationTime) {
+    if (service == null) {
+      return false;
+    }
+
+    try {
+      if (service.startRecording(phoneNumber, creationTime)) {
+        for (RecordingProgressListener l : progressListeners) {
+          l.onStartRecording();
+        }
+        updateRecordingProgressTask.run();
+        return true;
+      } else {
+        Toast.makeText(context, R.string.call_recording_failed_message, Toast.LENGTH_SHORT)
+            .show();
+      }
+    } catch (RemoteException e) {
+      Log.w(TAG, "Failed to start recording " + phoneNumber + ", " + new Date(creationTime), e);
+    }
+
+    return false;
+  }
+
+  public boolean isRecording() {
+    if (service == null) {
+      return false;
+    }
+
+    try {
+      return service.isRecording();
+    } catch (RemoteException e) {
+      Log.w(TAG, "Exception checking recording status", e);
+    }
+    return false;
+  }
+
+  public CallRecording getActiveRecording() {
+    if (service == null) {
+      return null;
+    }
+
+    try {
+      return service.getActiveRecording();
+    } catch (RemoteException e) {
+      Log.w("Exception getting active recording", e);
+    }
+    return null;
+  }
+
+  public void finishRecording() {
+    if (service != null) {
+      try {
+        final CallRecording recording = service.stopRecording();
+        if (recording != null) {
+          if (!TextUtils.isEmpty(recording.phoneNumber)) {
+            new Thread(() -> {
+              CallRecordingDataStore dataStore = new CallRecordingDataStore();
+              dataStore.open(context);
+              dataStore.putRecording(recording);
+              dataStore.close();
+            }).start();
+          } else {
+            // Data store is an index by number so that we can link recordings in the
+            // call detail page.  If phone number is not available (conference call or
+            // unknown number) then just display a toast.
+            String msg = context.getResources().getString(
+                R.string.call_recording_file_location, recording.fileName);
+            Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
+          }
+        }
+      } catch (RemoteException e) {
+        Log.w(TAG, "Failed to stop recording", e);
+      }
+    }
+
+    for (RecordingProgressListener l : progressListeners) {
+      l.onStopRecording();
+    }
+    handler.removeCallbacks(updateRecordingProgressTask);
+  }
+
+  //
+  // Call list listener methods.
+  //
+  @Override
+  public void onIncomingCall(DialerCall call) {
+    // do nothing
+  }
+
+  @Override
+  public void onCallListChange(final CallList callList) {
+    if (!initialized && callList.getActiveCall() != null) {
+      // we'll come here if this is the first active call
+      initialize();
+    } else {
+      // we can come down this branch to resume a call that was on hold
+      CallRecording active = getActiveRecording();
+      if (active != null) {
+        DialerCall call =
+            callList.getCallWithStateAndNumber(DialerCallState.ONHOLD, active.phoneNumber);
+        if (call != null) {
+          // The call associated with the active recording has been placed
+          // on hold, so stop the recording.
+          finishRecording();
+        }
+      }
+    }
+  }
+
+  @Override
+  public void onDisconnect(final DialerCall call) {
+    CallRecording active = getActiveRecording();
+    if (active != null && TextUtils.equals(call.getNumber(), active.phoneNumber)) {
+      // finish the current recording if the call gets disconnected
+      finishRecording();
+    }
+
+    // tear down the service if there are no more active calls
+    if (CallList.getInstance().getActiveCall() == null) {
+      uninitialize();
+    }
+  }
+
+  @Override
+  public void onUpgradeToVideo(DialerCall call) {}
+
+  @Override
+  public void onSessionModificationStateChange(DialerCall call) {}
+
+  @Override
+  public void onWiFiToLteHandover(DialerCall call) {}
+
+  @Override
+  public void onHandoverToWifiFailed(DialerCall call) {}
+
+  @Override
+  public void onInternationalCallOnWifi(DialerCall call) {}
+
+  // allow clients to listen for recording progress updates
+  public interface RecordingProgressListener {
+    void onStartRecording();
+    void onStopRecording();
+    void onRecordingTimeProgress(long elapsedTimeMs);
+  }
+
+  public void addRecordingProgressListener(RecordingProgressListener listener) {
+    progressListeners.add(listener);
+  }
+
+  public void removeRecordingProgressListener(RecordingProgressListener listener) {
+    progressListeners.remove(listener);
+  }
+
+  private static final int UPDATE_INTERVAL = 500;
+
+  private final Runnable updateRecordingProgressTask = new Runnable() {
+    @Override
+    public void run() {
+      CallRecording active = getActiveRecording();
+      if (active != null) {
+        long elapsed = System.currentTimeMillis() - active.startRecordingTime;
+        for (RecordingProgressListener l : progressListeners) {
+          l.onRecordingTimeProgress(elapsed);
+        }
+      }
+      handler.postDelayed(this, UPDATE_INTERVAL);
+    }
+  };
+
+  private void loadAllowedStates() {
+    XmlResourceParser parser = context.getResources().getXml(R.xml.call_record_states);
+    try {
+        // Consume all START_DOCUMENT which can appear more than once.
+        while (parser.next() == XmlPullParser.START_DOCUMENT) {}
+
+        parser.require(XmlPullParser.START_TAG, null, "call-record-allowed-flags");
+
+        while (parser.next() != XmlPullParser.END_DOCUMENT) {
+            if (parser.getEventType() != XmlPullParser.START_TAG) {
+                continue;
+            }
+            parser.require(XmlPullParser.START_TAG, null, "country");
+
+            String iso = parser.getAttributeValue(null, "iso");
+            String allowed = parser.getAttributeValue(null, "allowed");
+            if (iso != null && ("true".equals(allowed) || "false".equals(allowed))) {
+                for (String splittedIso : iso.split(",")) {
+                    RECORD_ALLOWED_STATE_BY_COUNTRY.put(
+                            splittedIso.toUpperCase(Locale.US), Boolean.valueOf(allowed));
+                }
+            } else {
+                throw new XmlPullParserException("Unexpected country specification", parser, null);
+            }
+        }
+        Log.d(TAG, "Loaded " + RECORD_ALLOWED_STATE_BY_COUNTRY.size() + " country records");
+    } catch (XmlPullParserException | IOException e) {
+        Log.e(TAG, "Could not parse allowed country list", e);
+        RECORD_ALLOWED_STATE_BY_COUNTRY.clear();
+    } finally {
+        parser.close();
+    }
+  }
+}
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 76d3e8b..4a0bd6e 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,22 +19,13 @@
 
 import android.Manifest.permission;
 import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.hardware.camera2.CameraCharacteristics;
 import android.net.Uri;
-import android.os.Build;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.PersistableBundle;
 import android.os.SystemClock;
 import android.os.Trace;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.os.BuildCompat;
 import android.telecom.Call;
 import android.telecom.Call.Details;
 import android.telecom.Call.RttCall;
@@ -47,12 +39,18 @@
 import android.telecom.StatusHints;
 import android.telecom.TelecomManager;
 import android.telecom.VideoProfile;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.widget.Toast;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.contacts.common.compat.CallCompat;
-import com.android.dialer.assisteddialing.ConcreteCreator;
+import com.android.dialer.R;
 import com.android.dialer.assisteddialing.TransformationInfo;
-import com.android.dialer.blocking.FilteredNumbersUtil;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentParser;
 import com.android.dialer.callintent.CallSpecificAppData;
@@ -60,42 +58,26 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DefaultFutureCallback;
 import com.android.dialer.compat.telephony.TelephonyManagerCompat;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.EnrichedCallManager;
-import com.android.dialer.enrichedcall.EnrichedCallManager.CapabilitiesListener;
-import com.android.dialer.enrichedcall.EnrichedCallManager.Filter;
-import com.android.dialer.enrichedcall.EnrichedCallManager.StateChangedListener;
-import com.android.dialer.enrichedcall.Session;
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.logging.ContactLookupResult;
 import com.android.dialer.logging.ContactLookupResult.Type;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.preferredsim.PreferredAccountRecorder;
 import com.android.dialer.rtt.RttTranscript;
 import com.android.dialer.rtt.RttTranscriptUtil;
-import com.android.dialer.spam.status.SpamStatus;
 import com.android.dialer.telecom.TelecomCallUtil;
 import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.theme.common.R;
-import com.android.dialer.time.Clock;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.call.state.DialerCallState;
-import com.android.incallui.latencyreport.LatencyReport;
 import com.android.incallui.rtt.protocol.RttChatMessage;
 import com.android.incallui.videotech.VideoTech;
 import com.android.incallui.videotech.VideoTech.VideoTechListener;
-import com.android.incallui.videotech.duo.DuoVideoTech;
 import com.android.incallui.videotech.empty.EmptyVideoTech;
 import com.android.incallui.videotech.ims.ImsVideoTech;
 import com.android.incallui.videotech.utils.VideoUtils;
-import com.google.common.base.Optional;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.MoreExecutors;
+
 import java.io.IOException;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -108,7 +90,7 @@
 import java.util.concurrent.TimeUnit;
 
 /** Describes a single call and its state. */
-public class DialerCall implements VideoTechListener, StateChangedListener, CapabilitiesListener {
+public class DialerCall implements VideoTechListener {
 
   public static final int CALL_HISTORY_STATUS_UNKNOWN = 0;
   public static final int CALL_HISTORY_STATUS_PRESENT = 1;
@@ -120,10 +102,6 @@
 
   private static final String ID_PREFIX = "DialerCall_";
 
-  @VisibleForTesting
-  public static final String CONFIG_EMERGENCY_CALLBACK_WINDOW_MILLIS =
-      "emergency_callback_window_millis";
-
   private static int idCounter = 0;
 
   public static final int UNKNOWN_PEER_DIMENSIONS = -1;
@@ -142,7 +120,6 @@
   private final String uniqueCallId = UUID.randomUUID().toString();
 
   private final Call telecomCall;
-  private final LatencyReport latencyReport;
   private final String id;
   private final int hiddenId;
   private final List<String> childCallIds = new ArrayList<>();
@@ -153,8 +130,6 @@
   private final List<CannedTextResponsesLoadedListener> cannedTextResponsesLoadedListeners =
       new CopyOnWriteArrayList<>();
   private final VideoTechManager videoTechManager;
-
-  private boolean isSpeakEasyCall;
   private boolean isEmergencyCall;
   private Uri handle;
   private int state = DialerCallState.INVALID;
@@ -168,11 +143,12 @@
   private String lastForwardedNumber;
   private boolean isCallForwarded;
   private String callSubject;
-  @Nullable private PhoneAccountHandle phoneAccountHandle;
+  @Nullable
+  private PhoneAccountHandle phoneAccountHandle;
   @CallHistoryStatus private int callHistoryStatus = CALL_HISTORY_STATUS_UNKNOWN;
 
-  @Nullable private SpamStatus spamStatus;
   private boolean isBlocked;
+  private boolean isOutgoing;
 
   private boolean didShowCameraPermission;
   private boolean didDismissVideoChargesAlertDialog;
@@ -180,8 +156,6 @@
   private String callProviderLabel;
   private String callbackNumber;
   private int cameraDirection = CameraDirection.CAMERA_DIRECTION_UNKNOWN;
-  private EnrichedCallCapabilities enrichedCallCapabilities;
-  private Session enrichedCallSession;
 
   private int answerAndReleaseButtonDisplayedTimes = 0;
   private boolean releasedByAnsweringSecondCall = false;
@@ -190,16 +164,12 @@
   private int secondCallWithoutAnswerAndReleasedButtonTimes = 0;
   private VideoTech videoTech;
 
-  private com.android.dialer.logging.VideoTech.Type selectedAvailableVideoTechType =
-      com.android.dialer.logging.VideoTech.Type.NONE;
   private boolean isVoicemailNumber;
   private List<PhoneAccountHandle> callCapableAccounts;
   private String countryIso;
 
   private volatile boolean feedbackRequested = false;
 
-  private Clock clock = System::currentTimeMillis;
-
   @Nullable private PreferredAccountRecorder preferredAccountRecorder;
   private boolean isCallRemoved;
 
@@ -324,13 +294,6 @@
         @Override
         public void onRttStatusChanged(Call call, boolean enabled, RttCall rttCall) {
           LogUtil.v("TelecomCallCallback.onRttStatusChanged", "enabled=%b", enabled);
-          if (enabled) {
-            Logger.get(context)
-                .logCallImpression(
-                    DialerImpression.Type.RTT_MID_CALL_ENABLED,
-                    getUniqueCallId(),
-                    getTimeAddedMs());
-          }
           update();
         }
 
@@ -376,11 +339,8 @@
               isMergeInProcess = false;
               break;
             case TelephonyManagerCompat.EVENT_CALL_FORWARDED:
-              // Only handle this event for P+ since it's unreliable pre-P.
-              if (BuildCompat.isAtLeastP()) {
-                isCallForwarded = true;
-                update();
-              }
+              isCallForwarded = true;
+              update();
               break;
             default:
               break;
@@ -388,7 +348,7 @@
         }
       };
 
-  private long timeAddedMs;
+  private final long timeAddedMs;
   private int peerDimensionWidth = UNKNOWN_PEER_DIMENSIONS;
   private int peerDimensionHeight = UNKNOWN_PEER_DIMENSIONS;
 
@@ -396,14 +356,12 @@
       Context context,
       DialerCallDelegate dialerCallDelegate,
       Call telecomCall,
-      LatencyReport latencyReport,
       boolean registerCallback) {
     Assert.isNotNull(context);
     this.context = context;
     this.dialerCallDelegate = dialerCallDelegate;
     this.telecomCall = telecomCall;
-    this.latencyReport = latencyReport;
-    id = ID_PREFIX + Integer.toString(idCounter++);
+    id = ID_PREFIX + idCounter++;
 
     // Must be after assigning mTelecomCall
     videoTechManager = new VideoTechManager(this);
@@ -421,8 +379,6 @@
 
     timeAddedMs = System.currentTimeMillis();
     parseCallSpecificAppData();
-
-    updateEnrichedCallSession();
   }
 
   private static int translateState(int state) {
@@ -576,12 +532,6 @@
       for (DialerCallListener listener : listeners) {
         listener.onDialerCallDisconnect();
       }
-      EnrichedCallComponent.get(context)
-          .getEnrichedCallManager()
-          .unregisterCapabilitiesListener(this);
-      EnrichedCallComponent.get(context)
-          .getEnrichedCallManager()
-          .unregisterStateChangedListener(this);
     } else {
       for (DialerCallListener listener : listeners) {
         listener.onDialerCallUpdate();
@@ -595,9 +545,10 @@
     Trace.beginSection("DialerCall.updateFromTelecomCall");
     LogUtil.v("DialerCall.updateFromTelecomCall", telecomCall.toString());
 
-    videoTechManager.dispatchCallStateChanged(telecomCall.getState(), getAccountHandle());
+    videoTechManager.dispatchCallStateChanged(telecomCall.getDetails().getState(),
+            getAccountHandle());
 
-    final int translatedState = translateState(telecomCall.getState());
+    final int translatedState = translateState(telecomCall.getDetails().getState());
     if (state != DialerCallState.BLOCKED) {
       setState(translatedState);
       setDisconnectCause(telecomCall.getDetails().getDisconnectCause());
@@ -662,9 +613,6 @@
     if (!PermissionsUtil.hasPermission(context, permission.READ_PHONE_STATE)) {
       return;
     }
-    if (VERSION.SDK_INT < VERSION_CODES.O) {
-      return;
-    }
     // TODO(a bug): This may take several seconds to complete, revisit it to move it to worker
     // thread.
     carrierConfig =
@@ -826,12 +774,6 @@
       return true;
     }
 
-    // Call.EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS is available starting in O
-    if (VERSION.SDK_INT < VERSION_CODES.O) {
-      long timestampMillis = FilteredNumbersUtil.getLastEmergencyCallTimeMillis(context);
-      return isInEmergencyCallbackWindow(timestampMillis);
-    }
-
     // We want to treat any incoming call that arrives a short time after an outgoing emergency call
     // as a potential emergency callback.
     if (getExtras() != null
@@ -846,10 +788,7 @@
   }
 
   boolean isInEmergencyCallbackWindow(long timestampMillis) {
-    long emergencyCallbackWindowMillis =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong(CONFIG_EMERGENCY_CALLBACK_WINDOW_MILLIS, TimeUnit.MINUTES.toMillis(5));
+    long emergencyCallbackWindowMillis = TimeUnit.MINUTES.toMillis(5);
     return System.currentTimeMillis() - timestampMillis < emergencyCallbackWindowMillis;
   }
 
@@ -880,13 +819,13 @@
         LogUtil.i("DialerCall.updateCallTiming", "state is already active");
         return;
       }
-      logState.dialerConnectTimeMillis = clock.currentTimeMillis();
+      logState.dialerConnectTimeMillis = System.currentTimeMillis();
       logState.dialerConnectTimeMillisElapsedRealtime = SystemClock.elapsedRealtime();
     }
 
     if (newState == DialerCallState.DISCONNECTED) {
       long newDuration =
-          getConnectTimeMillis() == 0 ? 0 : clock.currentTimeMillis() - getConnectTimeMillis();
+          getConnectTimeMillis() == 0 ? 0 : System.currentTimeMillis() - getConnectTimeMillis();
       if (this.state == DialerCallState.DISCONNECTED) {
         LogUtil.i(
             "DialerCall.setState",
@@ -900,17 +839,18 @@
       logState.dialerDurationMillis =
           logState.dialerConnectTimeMillis == 0
               ? 0
-              : clock.currentTimeMillis() - logState.dialerConnectTimeMillis;
+              : System.currentTimeMillis() - logState.dialerConnectTimeMillis;
       logState.dialerDurationMillisElapsedRealtime =
           logState.dialerConnectTimeMillisElapsedRealtime == 0
               ? 0
               : SystemClock.elapsedRealtime() - logState.dialerConnectTimeMillisElapsedRealtime;
+    } else if (state == DialerCallState.DIALING || state == DialerCallState.CONNECTING) {
+      isOutgoing = true;
     }
   }
 
-  @VisibleForTesting
-  void setClock(Clock clock) {
-    this.clock = clock;
+  public boolean isOutgoing() {
+    return isOutgoing;
   }
 
   public int getNumberPresentation() {
@@ -982,7 +922,6 @@
   }
 
   /** Checks if the call supports the given set of capabilities supplied as a bit mask. */
-  @TargetApi(28)
   public boolean can(int capabilities) {
     int supportedCapabilities = telecomCall.getDetails().getCallCapabilities();
 
@@ -991,7 +930,7 @@
       // RTT call is not conferenceable, it's a bug (a bug) in Telecom and we work around it
       // here before it's fixed in Telecom.
       for (Call call : telecomCall.getConferenceableCalls()) {
-        if (!(BuildCompat.isAtLeastP() && call.isRttActive())) {
+        if (!call.isRttActive()) {
           hasConferenceableCall = true;
           break;
         }
@@ -1027,7 +966,6 @@
    * the same time that is logged as the start time in the Call Log (see {@link
    * android.provider.CallLog.Calls#DATE}).
    */
-  @TargetApi(VERSION_CODES.O)
   public long getCreationTimeMillis() {
     return telecomCall.getDetails().getCreationTimeMillis();
   }
@@ -1071,16 +1009,10 @@
     return getVideoTech().isTransmittingOrReceiving() || VideoProfile.isVideo(getVideoState());
   }
 
-  @TargetApi(28)
   public boolean isActiveRttCall() {
-    if (BuildCompat.isAtLeastP()) {
-      return getTelecomCall().isRttActive();
-    } else {
-      return false;
-    }
+    return getTelecomCall().isRttActive();
   }
 
-  @TargetApi(28)
   @Nullable
   public RttCall getRttCall() {
     if (!isActiveRttCall()) {
@@ -1089,7 +1021,6 @@
     return getTelecomCall().getRttCall();
   }
 
-  @TargetApi(28)
   public boolean isPhoneAccountRttCapable() {
     PhoneAccount phoneAccount = getPhoneAccount();
     if (phoneAccount == null) {
@@ -1101,7 +1032,6 @@
     return true;
   }
 
-  @TargetApi(28)
   public boolean canUpgradeToRttCall() {
     if (!isPhoneAccountRttCapable()) {
       return false;
@@ -1121,28 +1051,15 @@
     return true;
   }
 
-  @TargetApi(28)
   public void sendRttUpgradeRequest() {
     getTelecomCall().sendRttRequest();
   }
 
-  @TargetApi(28)
   public void respondToRttRequest(boolean accept, int rttRequestId) {
-    Logger.get(context)
-        .logCallImpression(
-            accept
-                ? DialerImpression.Type.RTT_MID_CALL_ACCEPTED
-                : DialerImpression.Type.RTT_MID_CALL_REJECTED,
-            getUniqueCallId(),
-            getTimeAddedMs());
     getTelecomCall().respondToRttRequest(rttRequestId, accept);
   }
 
-  @TargetApi(28)
   private void saveRttTranscript() {
-    if (!BuildCompat.isAtLeastP()) {
-      return;
-    }
     if (getRttCall() != null) {
       // Save any remaining text in the buffer that's not shown by UI yet.
       // This may happen when the call is switched to background before disconnect.
@@ -1183,7 +1100,8 @@
    * repeated calls to isEmergencyNumber.
    */
   private void updateEmergencyCallState() {
-    isEmergencyCall = TelecomCallUtil.isEmergencyCall(telecomCall);
+    TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+    isEmergencyCall = TelecomCallUtil.isEmergencyCall(telephonyManager, telecomCall);
   }
 
   public LogState getLogState() {
@@ -1293,28 +1211,8 @@
     didDismissVideoChargesAlertDialog = didDismiss;
   }
 
-  public void setSpamStatus(@Nullable SpamStatus spamStatus) {
-    this.spamStatus = spamStatus;
-  }
-
-  public Optional<SpamStatus> getSpamStatus() {
-    return Optional.fromNullable(spamStatus);
-  }
-
   public boolean isSpam() {
-    if (spamStatus == null || !spamStatus.isSpam()) {
-      return false;
-    }
-
-    if (!isIncoming()) {
-      return false;
-    }
-
-    if (isPotentialEmergencyCallback()) {
-      return false;
-    }
-
-    return true;
+    return false;
   }
 
   public boolean isBlocked() {
@@ -1346,19 +1244,6 @@
    * @return a boolean indicating assisted dialing may have been performed
    */
   public boolean isAssistedDialed() {
-    if (getIntentExtras() != null) {
-      // P and below uses the existence of USE_ASSISTED_DIALING to indicate assisted dialing
-      // was used. The Dialer client is responsible for performing assisted dialing before
-      // placing the outgoing call.
-      //
-      // The existence of the assisted dialing extras indicates that assisted dialing took place.
-      if (getIntentExtras().getBoolean(TelephonyManagerCompat.USE_ASSISTED_DIALING, false)
-          && getAssistedDialingExtras() != null
-          && Build.VERSION.SDK_INT <= ConcreteCreator.BUILD_CODE_CEILING) {
-        return true;
-      }
-    }
-
     return false;
   }
 
@@ -1377,10 +1262,6 @@
         getIntentExtras().getBundle(TelephonyManagerCompat.ASSISTED_DIALING_EXTRAS));
   }
 
-  public LatencyReport getLatencyReport() {
-    return latencyReport;
-  }
-
   public int getAnswerAndReleaseButtonDisplayedTimes() {
     return answerAndReleaseButtonDisplayedTimes;
   }
@@ -1405,25 +1286,6 @@
     secondCallWithoutAnswerAndReleasedButtonTimes++;
   }
 
-  @Nullable
-  public EnrichedCallCapabilities getEnrichedCallCapabilities() {
-    return enrichedCallCapabilities;
-  }
-
-  public void setEnrichedCallCapabilities(
-      @Nullable EnrichedCallCapabilities mEnrichedCallCapabilities) {
-    this.enrichedCallCapabilities = mEnrichedCallCapabilities;
-  }
-
-  @Nullable
-  public Session getEnrichedCallSession() {
-    return enrichedCallSession;
-  }
-
-  public void setEnrichedCallSession(@Nullable Session mEnrichedCallSession) {
-    this.enrichedCallSession = mEnrichedCallSession;
-  }
-
   public void unregisterCallback() {
     telecomCall.unregisterCallback(telecomCallCallback);
   }
@@ -1502,16 +1364,11 @@
   public VideoTech getVideoTech() {
     if (videoTech == null) {
       videoTech = videoTechManager.getVideoTech(getAccountHandle());
-
-      // Only store the first video tech type found to be available during the life of the call.
-      if (selectedAvailableVideoTechType == com.android.dialer.logging.VideoTech.Type.NONE) {
-        // Update the video tech.
-        selectedAvailableVideoTechType = videoTech.getVideoTechType();
-      }
     }
     return videoTech;
   }
 
+  @SuppressLint("MissingPermission")
   public String getCallbackNumber() {
     if (callbackNumber == null) {
       // Show the emergency callback number if either:
@@ -1521,8 +1378,13 @@
       boolean showCallbackNumber = hasProperty(Details.PROPERTY_EMERGENCY_CALLBACK_MODE);
 
       if (isEmergencyCall() || showCallbackNumber) {
-        callbackNumber =
-            context.getSystemService(TelecomManager.class).getLine1Number(getAccountHandle());
+        PhoneAccountHandle accountHandle = getAccountHandle();
+        if (accountHandle != null) {
+          int subId = context.getSystemService(TelephonyManager.class).getSubscriptionId(
+                  accountHandle);
+          SubscriptionManager subMgr = context.getSystemService(SubscriptionManager.class);
+          callbackNumber = subMgr.getPhoneNumber(subId);
+        }
       }
 
       if (callbackNumber == null) {
@@ -1577,10 +1439,6 @@
     }
 
     update();
-
-    Logger.get(context)
-        .logCallImpression(
-            DialerImpression.Type.VIDEO_CALL_REQUEST_RECEIVED, getUniqueCallId(), getTimeAddedMs());
   }
 
   @Override
@@ -1607,80 +1465,6 @@
     TelecomAdapter.getInstance().setAudioRoute(CallAudioState.ROUTE_SPEAKER);
   }
 
-  @Override
-  public void onCapabilitiesUpdated() {
-    if (getNumber() == null) {
-      return;
-    }
-    EnrichedCallCapabilities capabilities =
-        EnrichedCallComponent.get(context).getEnrichedCallManager().getCapabilities(getNumber());
-    if (capabilities != null) {
-      setEnrichedCallCapabilities(capabilities);
-      update();
-    }
-  }
-
-  @Override
-  public void onEnrichedCallStateChanged() {
-    updateEnrichedCallSession();
-  }
-
-  @Override
-  public void onImpressionLoggingNeeded(DialerImpression.Type impressionType) {
-    Logger.get(context).logCallImpression(impressionType, getUniqueCallId(), getTimeAddedMs());
-    if (impressionType == DialerImpression.Type.LIGHTBRINGER_UPGRADE_REQUESTED) {
-      if (getLogState().contactLookupResult == Type.NOT_FOUND) {
-        Logger.get(context)
-            .logCallImpression(
-                DialerImpression.Type.LIGHTBRINGER_NON_CONTACT_UPGRADE_REQUESTED,
-                getUniqueCallId(),
-                getTimeAddedMs());
-      }
-    }
-  }
-
-  private void updateEnrichedCallSession() {
-    if (getNumber() == null) {
-      return;
-    }
-    if (getEnrichedCallSession() != null) {
-      // State changes to existing sessions are currently handled by the UI components (which have
-      // their own listeners). Someday instead we could remove those and just call update() here and
-      // have the usual onDialerCallUpdate update the UI.
-      dispatchOnEnrichedCallSessionUpdate();
-      return;
-    }
-
-    EnrichedCallManager manager = EnrichedCallComponent.get(context).getEnrichedCallManager();
-
-    Filter filter =
-        isIncoming()
-            ? manager.createIncomingCallComposerFilter()
-            : manager.createOutgoingCallComposerFilter();
-
-    Session session = manager.getSession(getUniqueCallId(), getNumber(), filter);
-    if (session == null) {
-      return;
-    }
-
-    session.setUniqueDialerCallId(getUniqueCallId());
-    setEnrichedCallSession(session);
-
-    LogUtil.i(
-        "DialerCall.updateEnrichedCallSession",
-        "setting session %d's dialer id to %s",
-        session.getSessionId(),
-        getUniqueCallId());
-
-    dispatchOnEnrichedCallSessionUpdate();
-  }
-
-  private void dispatchOnEnrichedCallSessionUpdate() {
-    for (DialerCallListener listener : listeners) {
-      listener.onEnrichedCallSessionUpdate();
-    }
-  }
-
   void onRemovedFromCallList() {
     LogUtil.enterBlock("DialerCall.onRemovedFromCallList");
     // Ensure we clean up when this call is removed.
@@ -1694,10 +1478,6 @@
     isCallRemoved = true;
   }
 
-  public com.android.dialer.logging.VideoTech.Type getSelectedAvailableVideoTechType() {
-    return selectedAvailableVideoTechType;
-  }
-
   public void markFeedbackRequested() {
     feedbackRequested = true;
   }
@@ -1719,66 +1499,6 @@
     this.preferredAccountRecorder = preferredAccountRecorder;
   }
 
-  /** Indicates the call is eligible for SpeakEasy */
-  public boolean isSpeakEasyEligible() {
-
-    PhoneAccount phoneAccount = getPhoneAccount();
-
-    if (phoneAccount == null) {
-      return false;
-    }
-
-    if (!phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)) {
-      return false;
-    }
-
-    return !isPotentialEmergencyCallback()
-        && !isEmergencyCall()
-        && !isActiveRttCall()
-        && !isConferenceCall()
-        && !isVideoCall()
-        && !isVoiceMailNumber()
-        && !hasReceivedVideoUpgradeRequest()
-        && !isVoipCallNotSupportedBySpeakeasy();
-  }
-
-  private boolean isVoipCallNotSupportedBySpeakeasy() {
-    Bundle extras = getIntentExtras();
-
-    if (extras == null) {
-      return false;
-    }
-
-    // Indicates an VOIP call.
-    String callid = extras.getString("callid");
-
-    if (TextUtils.isEmpty(callid)) {
-      LogUtil.i("DialerCall.isVoipCallNotSupportedBySpeakeasy", "callid was empty");
-      return false;
-    }
-
-    LogUtil.i("DialerCall.isVoipCallNotSupportedBySpeakeasy", "call is not eligible");
-    return true;
-  }
-
-  /** Indicates the user has selected SpeakEasy */
-  public boolean isSpeakEasyCall() {
-    if (!isSpeakEasyEligible()) {
-      return false;
-    }
-    return isSpeakEasyCall;
-  }
-
-  /** Sets the user preference for SpeakEasy */
-  public void setIsSpeakEasyCall(boolean isSpeakEasyCall) {
-    this.isSpeakEasyCall = isSpeakEasyCall;
-    if (listeners != null) {
-      for (DialerCallListener listener : listeners) {
-        listener.onDialerCallSpeakEasyStateChange();
-      }
-    }
-  }
-
   /**
    * Specifies whether a number is in the call history or not. {@link #CALL_HISTORY_STATUS_UNKNOWN}
    * means there is no result.
@@ -1904,15 +1624,12 @@
   }
 
   /** Coordinates the available VideoTech implementations for a call. */
-  @VisibleForTesting
-  public static class VideoTechManager {
+  private static class VideoTechManager {
     private final Context context;
     private final EmptyVideoTech emptyVideoTech = new EmptyVideoTech();
-    private final VideoTech rcsVideoShare;
     private final List<VideoTech> videoTechs;
     private VideoTech savedTech;
 
-    @VisibleForTesting
     public VideoTechManager(DialerCall call) {
       this.context = call.context;
 
@@ -1923,25 +1640,11 @@
       // Insert order here determines the priority of that video tech option
       videoTechs = new ArrayList<>();
 
-      videoTechs.add(new ImsVideoTech(Logger.get(call.context), call, call.telecomCall));
-
-      rcsVideoShare =
-          EnrichedCallComponent.get(call.context)
-              .getRcsVideoShareFactory()
-              .newRcsVideoShare(
-                  EnrichedCallComponent.get(call.context).getEnrichedCallManager(),
-                  call,
-                  phoneNumber);
-      videoTechs.add(rcsVideoShare);
-
-      videoTechs.add(
-          new DuoVideoTech(
-              DuoComponent.get(call.context).getDuo(), call, call.telecomCall, phoneNumber));
+      videoTechs.add(new ImsVideoTech(call, call.telecomCall));
 
       savedTech = emptyVideoTech;
     }
 
-    @VisibleForTesting
     public VideoTech getVideoTech(PhoneAccountHandle phoneAccountHandle) {
       if (savedTech == emptyVideoTech) {
         for (VideoTech tech : videoTechs) {
@@ -1951,19 +1654,11 @@
             break;
           }
         }
-      } else if (savedTech instanceof DuoVideoTech
-          && rcsVideoShare.isAvailable(context, phoneAccountHandle)) {
-        // RCS Video Share will become available after the capability exchange which is slower than
-        // Duo reading local contacts for reachability. If Video Share becomes available and we are
-        // not in the middle of any session changes, let it take over.
-        savedTech = rcsVideoShare;
-        rcsVideoShare.becomePrimary();
       }
 
       return savedTech;
     }
 
-    @VisibleForTesting
     public void dispatchCallStateChanged(int newState, PhoneAccountHandle phoneAccountHandle) {
       for (VideoTech videoTech : videoTechs) {
         videoTech.onCallStateChanged(context, newState, phoneAccountHandle);
diff --git a/java/com/android/incallui/call/DialerCallListener.java b/java/com/android/incallui/call/DialerCallListener.java
index a42ccbd..350d0e4 100644
--- a/java/com/android/incallui/call/DialerCallListener.java
+++ b/java/com/android/incallui/call/DialerCallListener.java
@@ -31,8 +31,6 @@
 
   default void onDialerCallUpgradeToRtt(int rttRequestId) {}
 
-  default void onDialerCallSpeakEasyStateChange() {}
-
   void onDialerCallSessionModificationStateChange();
 
   void onWiFiToLteHandover();
@@ -40,6 +38,4 @@
   void onHandoverToWifiFailure();
 
   void onInternationalCallOnWifi();
-
-  void onEnrichedCallSessionUpdate();
 }
diff --git a/java/com/android/incallui/call/ExternalCallList.java b/java/com/android/incallui/call/ExternalCallList.java
index 603ebf7..cad4842 100644
--- a/java/com/android/incallui/call/ExternalCallList.java
+++ b/java/com/android/incallui/call/ExternalCallList.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,12 +19,15 @@
 
 import android.os.Handler;
 import android.os.Looper;
-import android.support.annotation.NonNull;
 import android.telecom.Call;
 import android.util.ArraySet;
+
+import androidx.annotation.NonNull;
+
 import com.android.contacts.common.compat.CallCompat;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+
 import java.util.Collections;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -37,7 +41,7 @@
 
   private final Set<Call> externalCalls = new ArraySet<>();
   private final Set<ExternalCallListener> externalCallListeners =
-      Collections.newSetFromMap(new ConcurrentHashMap<ExternalCallListener, Boolean>(8, 0.9f, 1));
+      Collections.newSetFromMap(new ConcurrentHashMap<>(8, 0.9f, 1));
   /** Handles {@link android.telecom.Call.Callback} callbacks. */
   private final Call.Callback telecomCallCallback =
       new Call.Callback() {
diff --git a/java/com/android/incallui/call/InCallUiLegacyBindings.java b/java/com/android/incallui/call/InCallUiLegacyBindings.java
deleted file mode 100644
index 1b0ed45..0000000
--- a/java/com/android/incallui/call/InCallUiLegacyBindings.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.call;
-
-/**
- * These are old bindings between InCallUi and the container application. All new bindings should be
- * added to the bindings module and not here.
- */
-public interface InCallUiLegacyBindings {
-
-  void logCall(DialerCall call);
-}
diff --git a/java/com/android/incallui/call/InCallUiLegacyBindingsFactory.java b/java/com/android/incallui/call/InCallUiLegacyBindingsFactory.java
deleted file mode 100644
index 8604976..0000000
--- a/java/com/android/incallui/call/InCallUiLegacyBindingsFactory.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.call;
-
-/**
- * This interface should be implementated by the Application subclass. It allows the in call UI
- * module to get references to the InCallUiLegacyBindings.
- */
-public interface InCallUiLegacyBindingsFactory {
-
-  InCallUiLegacyBindings newInCallUiLegacyBindings();
-}
diff --git a/java/com/android/incallui/call/InCallUiLegacyBindingsStub.java b/java/com/android/incallui/call/InCallUiLegacyBindingsStub.java
deleted file mode 100644
index 8869c64..0000000
--- a/java/com/android/incallui/call/InCallUiLegacyBindingsStub.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.call;
-
-/** Default implementation for in call UI legacy bindings. */
-public class InCallUiLegacyBindingsStub implements InCallUiLegacyBindings {
-
-  @Override
-  public void logCall(DialerCall call) {}
-}
diff --git a/java/com/android/incallui/call/InCallVideoCallCallbackNotifier.java b/java/com/android/incallui/call/InCallVideoCallCallbackNotifier.java
index 23a3dad..fd377b1 100644
--- a/java/com/android/incallui/call/InCallVideoCallCallbackNotifier.java
+++ b/java/com/android/incallui/call/InCallVideoCallCallbackNotifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,9 @@
 
 package com.android.incallui.call;
 
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import java.util.Collections;
 import java.util.Objects;
 import java.util.Set;
@@ -27,14 +29,15 @@
 public class InCallVideoCallCallbackNotifier {
 
   /** Singleton instance of this class. */
-  private static InCallVideoCallCallbackNotifier instance = new InCallVideoCallCallbackNotifier();
+  private static final InCallVideoCallCallbackNotifier instance =
+          new InCallVideoCallCallbackNotifier();
 
   /**
    * ConcurrentHashMap constructor params: 8 is initial table size, 0.9f is load factor before
    * resizing, 1 means we only expect a single thread to access the map so make only a single shard
    */
   private final Set<SurfaceChangeListener> surfaceChangeListeners =
-      Collections.newSetFromMap(new ConcurrentHashMap<SurfaceChangeListener, Boolean>(8, 0.9f, 1));
+      Collections.newSetFromMap(new ConcurrentHashMap<>(8, 0.9f, 1));
 
   /** Private constructor. Instance should only be acquired through getRunningInstance(). */
   private InCallVideoCallCallbackNotifier() {}
diff --git a/java/com/android/incallui/call/TelecomAdapter.java b/java/com/android/incallui/call/TelecomAdapter.java
index 4ae1bc1..a76cd17 100644
--- a/java/com/android/incallui/call/TelecomAdapter.java
+++ b/java/com/android/incallui/call/TelecomAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,17 +17,20 @@
 
 package com.android.incallui.call;
 
-import android.annotation.TargetApi;
 import android.app.Notification;
+import android.app.Service;
 import android.bluetooth.BluetoothDevice;
 import android.content.ActivityNotFoundException;
 import android.content.Intent;
+import android.content.pm.ServiceInfo;
 import android.os.Looper;
-import android.support.annotation.MainThread;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.InCallService;
+
+import androidx.annotation.MainThread;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+
 import java.util.List;
 
 /** Wrapper around Telecom APIs. */
@@ -50,10 +54,6 @@
     return instance;
   }
 
-  @VisibleForTesting(otherwise = VisibleForTesting.NONE)
-  public static void setInstanceForTesting(TelecomAdapter telecomAdapter) {
-    instance = telecomAdapter;
-  }
 
   @Override
   public void setInCallService(InCallService inCallService) {
@@ -180,7 +180,7 @@
   public void startForegroundNotification(int id, Notification notification) {
     Assert.isNotNull(
         inCallService, "No inCallService available for starting foreground notification");
-    inCallService.startForeground(id, notification);
+    inCallService.startForeground(id, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_PHONE_CALL);
   }
 
   /**
@@ -188,7 +188,7 @@
    */
   public void stopForegroundNotification() {
     if (inCallService != null) {
-      inCallService.stopForeground(true /*removeNotification*/);
+      inCallService.stopForeground(Service.STOP_FOREGROUND_REMOVE);
     } else {
       LogUtil.e(
           "TelecomAdapter.stopForegroundNotification",
@@ -196,7 +196,6 @@
     }
   }
 
-  @TargetApi(28)
   public void requestBluetoothAudio(BluetoothDevice bluetoothDevice) {
     if (inCallService != null) {
       inCallService.requestBluetoothAudio(bluetoothDevice);
diff --git a/java/com/android/incallui/calllocation/CallLocation.java b/java/com/android/incallui/calllocation/CallLocation.java
deleted file mode 100644
index 15a6a8e..0000000
--- a/java/com/android/incallui/calllocation/CallLocation.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
-
-/** Used to show the user's location during an emergency call. */
-public interface CallLocation {
-
-  boolean canGetLocation(@NonNull Context context);
-
-  @NonNull
-  Fragment getLocationFragment(@NonNull Context context);
-
-  void close();
-}
diff --git a/java/com/android/incallui/calllocation/CallLocationComponent.java b/java/com/android/incallui/calllocation/CallLocationComponent.java
deleted file mode 100644
index 46ca669..0000000
--- a/java/com/android/incallui/calllocation/CallLocationComponent.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation;
-
-import android.content.Context;
-import com.android.dialer.inject.HasRootComponent;
-import dagger.Subcomponent;
-
-/** Subcomponent that can be used to access the call location implementation. */
-@Subcomponent
-public abstract class CallLocationComponent {
-
-  public abstract CallLocation getCallLocation();
-
-  public static CallLocationComponent get(Context context) {
-    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
-        .callLocationComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  public interface HasComponent {
-    CallLocationComponent callLocationComponent();
-  }
-}
diff --git a/java/com/android/incallui/calllocation/impl/AndroidManifest.xml b/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
deleted file mode 100644
index 3e5a6d0..0000000
--- a/java/com/android/incallui/calllocation/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<manifest
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.incallui.calllocation.impl">
-
-  <application>
-    <!-- Fix for P -->
-    <uses-library android:name="org.apache.http.legacy" android:required="false" />
-
-    <meta-data
-      android:name="com.google.android.gms.version"
-      android:value="@integer/google_play_services_version"/>
-  </application>
-</manifest>
diff --git a/java/com/android/incallui/calllocation/impl/AuthException.java b/java/com/android/incallui/calllocation/impl/AuthException.java
deleted file mode 100644
index 26def2f..0000000
--- a/java/com/android/incallui/calllocation/impl/AuthException.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.impl;
-
-/** For detecting backend authorization errors */
-public class AuthException extends Exception {
-
-  public AuthException(String detailMessage) {
-    super(detailMessage);
-  }
-}
diff --git a/java/com/android/incallui/calllocation/impl/CallLocationImpl.java b/java/com/android/incallui/calllocation/impl/CallLocationImpl.java
deleted file mode 100644
index 20f5ffb..0000000
--- a/java/com/android/incallui/calllocation/impl/CallLocationImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.impl;
-
-import android.content.Context;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
-import com.android.dialer.common.Assert;
-import com.android.incallui.calllocation.CallLocation;
-import javax.inject.Inject;
-
-/** Uses Google Play Services to show the user's location during an emergency call. */
-public class CallLocationImpl implements CallLocation {
-
-  private LocationHelper locationHelper;
-  private LocationFragment locationFragment;
-
-  @Inject
-  public CallLocationImpl() {}
-
-  @MainThread
-  @Override
-  public boolean canGetLocation(@NonNull Context context) {
-    Assert.isMainThread();
-    return LocationHelper.canGetLocation(context);
-  }
-
-  @MainThread
-  @NonNull
-  @Override
-  public Fragment getLocationFragment(@NonNull Context context) {
-    Assert.isMainThread();
-    if (locationFragment == null) {
-      locationFragment = new LocationFragment();
-      locationHelper = new LocationHelper(context);
-      locationHelper.addLocationListener(locationFragment.getPresenter());
-    }
-    return locationFragment;
-  }
-
-  @MainThread
-  @Override
-  public void close() {
-    Assert.isMainThread();
-    if (locationFragment != null) {
-      locationHelper.removeLocationListener(locationFragment.getPresenter());
-      locationHelper.close();
-      locationFragment = null;
-      locationHelper = null;
-    }
-  }
-}
diff --git a/java/com/android/incallui/calllocation/impl/CallLocationModule.java b/java/com/android/incallui/calllocation/impl/CallLocationModule.java
deleted file mode 100644
index 73e8555..0000000
--- a/java/com/android/incallui/calllocation/impl/CallLocationModule.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.impl;
-
-import com.android.incallui.calllocation.CallLocation;
-import dagger.Binds;
-import dagger.Module;
-
-/** This module provides an instance of call location. */
-@Module
-public abstract class CallLocationModule {
-
-  @Binds
-  public abstract CallLocation bindCallLocation(CallLocationImpl callLocation);
-}
diff --git a/java/com/android/incallui/calllocation/impl/GoogleLocationSettingHelper.java b/java/com/android/incallui/calllocation/impl/GoogleLocationSettingHelper.java
deleted file mode 100644
index 0884c2f..0000000
--- a/java/com/android/incallui/calllocation/impl/GoogleLocationSettingHelper.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.impl;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.Settings.Secure;
-import android.provider.Settings.SettingNotFoundException;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.strictmode.StrictModeUtils;
-
-/**
- * Helper class to check if Google Location Services is enabled. This class is based on
-
- */
-public class GoogleLocationSettingHelper {
-
-  /** User has disagreed to use location for Google services. */
-  public static final int USE_LOCATION_FOR_SERVICES_OFF = 0;
-  /** User has agreed to use location for Google services. */
-  public static final int USE_LOCATION_FOR_SERVICES_ON = 1;
-  /** The user has neither agreed nor disagreed to use location for Google services yet. */
-  public static final int USE_LOCATION_FOR_SERVICES_NOT_SET = 2;
-
-  private static final String GOOGLE_SETTINGS_AUTHORITY = "com.google.settings";
-  private static final Uri GOOGLE_SETTINGS_CONTENT_URI =
-      Uri.parse("content://" + GOOGLE_SETTINGS_AUTHORITY + "/partner");
-  private static final String NAME = "name";
-  private static final String VALUE = "value";
-  private static final String USE_LOCATION_FOR_SERVICES = "use_location_for_services";
-
-  /** Determine if Google apps need to conform to the USE_LOCATION_FOR_SERVICES setting. */
-  private static boolean isEnforceable(Context context) {
-    final ResolveInfo ri =
-        context
-            .getPackageManager()
-            .resolveActivity(
-                new Intent("com.google.android.gsf.GOOGLE_APPS_LOCATION_SETTINGS"),
-                PackageManager.MATCH_DEFAULT_ONLY);
-    return ri != null;
-  }
-
-  /**
-   * Get the current value for the 'Use value for location' setting.
-   *
-   * @return One of {@link #USE_LOCATION_FOR_SERVICES_NOT_SET}, {@link
-   *     #USE_LOCATION_FOR_SERVICES_OFF} or {@link #USE_LOCATION_FOR_SERVICES_ON}.
-   */
-  private static int getUseLocationForServices(Context context) {
-    final ContentResolver resolver = context.getContentResolver();
-    Cursor c = null;
-    String stringValue = null;
-    try {
-      c =
-          resolver.query(
-              GOOGLE_SETTINGS_CONTENT_URI,
-              new String[] {VALUE},
-              NAME + "=?",
-              new String[] {USE_LOCATION_FOR_SERVICES},
-              null);
-      if (c != null && c.moveToNext()) {
-        stringValue = c.getString(0);
-      }
-    } catch (final RuntimeException e) {
-      LogUtil.e(
-          "GoogleLocationSettingHelper.getUseLocationForServices",
-          "Failed to get 'Use My Location' setting",
-          e);
-    } finally {
-      if (c != null) {
-        c.close();
-      }
-    }
-    if (stringValue == null) {
-      return USE_LOCATION_FOR_SERVICES_NOT_SET;
-    }
-    int value;
-    try {
-      value = Integer.parseInt(stringValue);
-    } catch (final NumberFormatException nfe) {
-      value = USE_LOCATION_FOR_SERVICES_NOT_SET;
-    }
-    return value;
-  }
-
-  /** Whether or not the system location setting is enable */
-  static boolean isSystemLocationSettingEnabled(Context context) {
-    try {
-      return Secure.getInt(context.getContentResolver(), Secure.LOCATION_MODE)
-          != Secure.LOCATION_MODE_OFF;
-    } catch (SettingNotFoundException e) {
-      LogUtil.e(
-          "GoogleLocationSettingHelper.isSystemLocationSettingEnabled",
-          "Failed to get System Location setting",
-          e);
-      return false;
-    }
-  }
-
-  /** Convenience method that returns true is GLS is ON or if it's not enforceable. */
-  static boolean isGoogleLocationServicesEnabled(Context context) {
-    if (!isEnforceable(context)) {
-      return true;
-    }
-    int locationServiceStatus = StrictModeUtils.bypass(() -> getUseLocationForServices(context));
-    return locationServiceStatus == USE_LOCATION_FOR_SERVICES_ON;
-  }
-}
diff --git a/java/com/android/incallui/calllocation/impl/HttpFetcher.java b/java/com/android/incallui/calllocation/impl/HttpFetcher.java
deleted file mode 100644
index c182fa1..0000000
--- a/java/com/android/incallui/calllocation/impl/HttpFetcher.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.impl;
-
-import android.content.Context;
-import android.net.Uri;
-import android.net.Uri.Builder;
-import android.os.SystemClock;
-import android.util.Pair;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.util.DialerUtils;
-import com.android.dialer.util.MoreStrings;
-import com.google.android.common.http.UrlRules;
-import java.io.ByteArrayOutputStream;
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.ProtocolException;
-import java.net.URL;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-
-/** Utility for making http requests. */
-public class HttpFetcher {
-
-  // Phone number
-  public static final String PARAM_ID = "id";
-  // auth token
-  public static final String PARAM_ACCESS_TOKEN = "access_token";
-  private static final String TAG = HttpFetcher.class.getSimpleName();
-
-  /**
-   * Send a http request to the given url.
-   *
-   * @param urlString The url to request.
-   * @return The response body as a byte array. Or {@literal null} if status code is not 2xx.
-   * @throws java.io.IOException when an error occurs.
-   */
-  public static byte[] sendRequestAsByteArray(
-      Context context, String urlString, String requestMethod, List<Pair<String, String>> headers)
-      throws IOException, AuthException {
-    Objects.requireNonNull(urlString);
-
-    URL url = reWriteUrl(context, urlString);
-    if (url == null) {
-      return null;
-    }
-
-    HttpURLConnection conn = null;
-    InputStream is = null;
-    boolean isError = false;
-    final long start = SystemClock.uptimeMillis();
-    try {
-      conn = (HttpURLConnection) url.openConnection();
-      setMethodAndHeaders(conn, requestMethod, headers);
-      int responseCode = conn.getResponseCode();
-      LogUtil.i("HttpFetcher.sendRequestAsByteArray", "response code: " + responseCode);
-      // All 2xx codes are successful.
-      if (responseCode / 100 == 2) {
-        is = conn.getInputStream();
-      } else {
-        is = conn.getErrorStream();
-        isError = true;
-      }
-
-      final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      final byte[] buffer = new byte[1024];
-      int bytesRead;
-
-      while ((bytesRead = is.read(buffer)) != -1) {
-        baos.write(buffer, 0, bytesRead);
-      }
-
-      if (isError) {
-        handleBadResponse(url.toString(), baos.toByteArray());
-        if (responseCode == 401) {
-          throw new AuthException("Auth error");
-        }
-        return null;
-      }
-
-      byte[] response = baos.toByteArray();
-      LogUtil.i("HttpFetcher.sendRequestAsByteArray", "received " + response.length + " bytes");
-      long end = SystemClock.uptimeMillis();
-      LogUtil.i("HttpFetcher.sendRequestAsByteArray", "fetch took " + (end - start) + " ms");
-      return response;
-    } finally {
-      DialerUtils.closeQuietly(is);
-      if (conn != null) {
-        conn.disconnect();
-      }
-    }
-  }
-
-  /**
-   * Send a http request to the given url.
-   *
-   * @return The response body as a InputStream. Or {@literal null} if status code is not 2xx.
-   * @throws java.io.IOException when an error occurs.
-   */
-  public static InputStream sendRequestAsInputStream(
-      Context context, String urlString, String requestMethod, List<Pair<String, String>> headers)
-      throws IOException, AuthException {
-    Objects.requireNonNull(urlString);
-
-    URL url = reWriteUrl(context, urlString);
-    if (url == null) {
-      return null;
-    }
-
-    HttpURLConnection httpUrlConnection = null;
-    boolean isSuccess = false;
-    try {
-      httpUrlConnection = (HttpURLConnection) url.openConnection();
-      setMethodAndHeaders(httpUrlConnection, requestMethod, headers);
-      int responseCode = httpUrlConnection.getResponseCode();
-      LogUtil.i("HttpFetcher.sendRequestAsInputStream", "response code: " + responseCode);
-
-      if (responseCode == 401) {
-        throw new AuthException("Auth error");
-      } else if (responseCode / 100 == 2) { // All 2xx codes are successful.
-        InputStream is = httpUrlConnection.getInputStream();
-        if (is != null) {
-          is = new HttpInputStreamWrapper(httpUrlConnection, is);
-          isSuccess = true;
-          return is;
-        }
-      }
-
-      return null;
-    } finally {
-      if (httpUrlConnection != null && !isSuccess) {
-        httpUrlConnection.disconnect();
-      }
-    }
-  }
-
-  /**
-   * Set http method and headers.
-   *
-   * @param conn The connection to add headers to.
-   * @param requestMethod request method
-   * @param headers http headers where the first item in the pair is the key and second item is the
-   *     value.
-   */
-  private static void setMethodAndHeaders(
-      HttpURLConnection conn, String requestMethod, List<Pair<String, String>> headers)
-      throws ProtocolException {
-    conn.setRequestMethod(requestMethod);
-    if (headers != null) {
-      for (Pair<String, String> pair : headers) {
-        conn.setRequestProperty(pair.first, pair.second);
-      }
-    }
-  }
-
-  private static String obfuscateUrl(String urlString) {
-    final Uri uri = Uri.parse(urlString);
-    final Builder builder =
-        new Builder().scheme(uri.getScheme()).authority(uri.getAuthority()).path(uri.getPath());
-    final Set<String> names = uri.getQueryParameterNames();
-    for (String name : names) {
-      if (PARAM_ACCESS_TOKEN.equals(name)) {
-        builder.appendQueryParameter(name, "token");
-      } else {
-        final String value = uri.getQueryParameter(name);
-        if (PARAM_ID.equals(name)) {
-          builder.appendQueryParameter(name, MoreStrings.toSafeString(value));
-        } else {
-          builder.appendQueryParameter(name, value);
-        }
-      }
-    }
-    return builder.toString();
-  }
-
-  /** Same as {@link #getRequestAsString(Context, String, String, List)} with null headers. */
-  public static String getRequestAsString(Context context, String urlString)
-      throws IOException, AuthException {
-    return getRequestAsString(context, urlString, "GET" /* Default to get. */, null);
-  }
-
-  /**
-   * Send a http request to the given url.
-   *
-   * @param context The android context.
-   * @param urlString The url to request.
-   * @param headers Http headers to pass in the request. {@literal null} is allowed.
-   * @return The response body as a String. Or {@literal null} if status code is not 2xx.
-   * @throws java.io.IOException when an error occurs.
-   */
-  public static String getRequestAsString(
-      Context context, String urlString, String requestMethod, List<Pair<String, String>> headers)
-      throws IOException, AuthException {
-    final byte[] byteArr = sendRequestAsByteArray(context, urlString, requestMethod, headers);
-    if (byteArr == null) {
-      // Encountered error response... just return.
-      return null;
-    }
-    final String response = new String(byteArr);
-    LogUtil.i("HttpFetcher.getRequestAsString", "response body: " + response);
-    return response;
-  }
-
-  /**
-   * Lookup up url re-write rules from gServices and apply to the given url.
-   *
-   * @return The new url.
-   */
-  private static URL reWriteUrl(Context context, String url) {
-    final UrlRules rules = UrlRules.getRules(context.getContentResolver());
-    final UrlRules.Rule rule = rules.matchRule(url);
-    final String newUrl = rule.apply(url);
-
-    if (newUrl == null) {
-      if (LogUtil.isDebugEnabled()) {
-        // Url is blocked by re-write.
-        LogUtil.i(
-            "HttpFetcher.reWriteUrl",
-            "url " + obfuscateUrl(url) + " is blocked.  Ignoring request.");
-      }
-      return null;
-    }
-
-    if (LogUtil.isDebugEnabled()) {
-      LogUtil.i("HttpFetcher.reWriteUrl", "fetching " + obfuscateUrl(newUrl));
-      if (!newUrl.equals(url)) {
-        LogUtil.i(
-            "HttpFetcher.reWriteUrl",
-            "Original url: " + obfuscateUrl(url) + ", after re-write: " + obfuscateUrl(newUrl));
-      }
-    }
-
-    URL urlObject = null;
-    try {
-      urlObject = new URL(newUrl);
-    } catch (MalformedURLException e) {
-      LogUtil.e("HttpFetcher.reWriteUrl", "failed to parse url: " + url, e);
-    }
-    return urlObject;
-  }
-
-  private static void handleBadResponse(String url, byte[] response) {
-    LogUtil.i("HttpFetcher.handleBadResponse", "Got bad response code from url: " + url);
-    LogUtil.i("HttpFetcher.handleBadResponse", new String(response));
-  }
-
-  /** Disconnect {@link HttpURLConnection} when InputStream is closed */
-  private static class HttpInputStreamWrapper extends FilterInputStream {
-
-    final HttpURLConnection httpUrlConnection;
-    final long startMillis = SystemClock.uptimeMillis();
-
-    public HttpInputStreamWrapper(HttpURLConnection conn, InputStream in) {
-      super(in);
-      httpUrlConnection = conn;
-    }
-
-    @Override
-    public void close() throws IOException {
-      super.close();
-      httpUrlConnection.disconnect();
-      if (LogUtil.isDebugEnabled()) {
-        long endMillis = SystemClock.uptimeMillis();
-        LogUtil.i("HttpFetcher.close", "fetch took " + (endMillis - startMillis) + " ms");
-      }
-    }
-  }
-}
diff --git a/java/com/android/incallui/calllocation/impl/LocationFragment.java b/java/com/android/incallui/calllocation/impl/LocationFragment.java
deleted file mode 100644
index 760829d..0000000
--- a/java/com/android/incallui/calllocation/impl/LocationFragment.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.impl;
-
-import android.animation.LayoutTransition;
-import android.content.Context;
-import android.location.Location;
-import android.os.Bundle;
-import android.os.Handler;
-import android.support.annotation.NonNull;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-import android.widget.ViewAnimator;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.incallui.baseui.BaseFragment;
-import com.google.android.gms.maps.CameraUpdateFactory;
-import com.google.android.gms.maps.GoogleMap;
-import com.google.android.gms.maps.MapView;
-import com.google.android.gms.maps.model.LatLng;
-import com.google.android.gms.maps.model.MarkerOptions;
-import java.util.Objects;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Fragment which shows location during E911 calls, to supplement the user with accurate location
- * information in case the user is asked for their location by the emergency responder.
- *
- * <p>If location data is inaccurate, stale, or unavailable, this should not be shown.
- */
-public class LocationFragment extends BaseFragment<LocationPresenter, LocationPresenter.LocationUi>
-    implements LocationPresenter.LocationUi {
-
-  private static final String ADDRESS_DELIMITER = ",";
-
-  // Indexes used to animate fading between views, 0 for LOADING_VIEW_INDEX
-  private static final int LOCATION_VIEW_INDEX = 1;
-  private static final int LOCATION_ERROR_INDEX = 2;
-
-  private static final long FIND_LOCATION_SPINNING_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(5);
-  private static final long LOAD_DATA_TIMEOUT_MILLIS = TimeUnit.SECONDS.toMillis(5);
-
-  private static final float MAP_ZOOM_LEVEL = 15f;
-
-  private ViewAnimator viewAnimator;
-  private MapView locationMapView;
-  private TextView addressLine1;
-  private TextView addressLine2;
-  private TextView latLongLine;
-  private Location location;
-  private ViewGroup locationLayout;
-  private GoogleMap savedGoogleMap;
-
-  private boolean isMapSet;
-  private boolean isAddressSet;
-  private boolean isLocationSet;
-  private boolean hasTimeoutStarted;
-
-  private final Handler handler = new Handler();
-  private final Runnable dataTimeoutRunnable =
-      () -> {
-        LogUtil.i(
-            "LocationFragment.dataTimeoutRunnable",
-            "timed out so animate any future layout changes");
-        locationLayout.setLayoutTransition(new LayoutTransition());
-        showLocationNow();
-      };
-
-  private final Runnable spinningTimeoutRunnable =
-      () -> {
-        if (!(isAddressSet || isLocationSet || isMapSet)) {
-          // No data received, show error
-          viewAnimator.setDisplayedChild(LOCATION_ERROR_INDEX);
-        }
-      };
-
-  @Override
-  public LocationPresenter createPresenter() {
-    return new LocationPresenter();
-  }
-
-  @Override
-  public LocationPresenter.LocationUi getUi() {
-    return this;
-  }
-
-  @Override
-  public View onCreateView(
-      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-    LogUtil.enterBlock("LocationFragment.onCreateView");
-    final View view = inflater.inflate(R.layout.location_fragment, container, false);
-    viewAnimator = (ViewAnimator) view.findViewById(R.id.location_view_animator);
-    addressLine1 = (TextView) view.findViewById(R.id.address_line_one);
-    addressLine2 = (TextView) view.findViewById(R.id.address_line_two);
-    latLongLine = (TextView) view.findViewById(R.id.lat_long_line);
-    locationLayout = (ViewGroup) view.findViewById(R.id.location_layout);
-    locationMapView = (MapView) view.findViewById(R.id.location_map_view);
-    locationMapView.onCreate(savedInstanceState);
-    return view;
-  }
-
-  @Override
-  public void onStart() {
-    super.onStart();
-    handler.postDelayed(spinningTimeoutRunnable, FIND_LOCATION_SPINNING_TIMEOUT_MILLIS);
-  }
-
-  @Override
-  public void onDestroy() {
-    super.onDestroy();
-    handler.removeCallbacks(dataTimeoutRunnable);
-    handler.removeCallbacks(spinningTimeoutRunnable);
-  }
-
-  private void setMap(@NonNull Location location) {
-    LogUtil.enterBlock("LocationFragment.setMap");
-    Assert.isNotNull(location);
-
-    if (savedGoogleMap == null) {
-      locationMapView.getMapAsync(
-          (googleMap) -> {
-            LogUtil.enterBlock("LocationFragment.onMapReady");
-            savedGoogleMap = googleMap;
-            savedGoogleMap.getUiSettings().setMapToolbarEnabled(false);
-            updateMap(location);
-            isMapSet = true;
-            locationMapView.setVisibility(View.VISIBLE);
-
-            // Hide Google logo
-            View child = locationMapView.getChildAt(0);
-            if (child instanceof ViewGroup) {
-              // Only the first child (View) is useful.
-              // Google logo can be in any other child (ViewGroup).
-              for (int i = 1; i < ((ViewGroup) child).getChildCount(); ++i) {
-                ((ViewGroup) child).getChildAt(i).setVisibility(View.GONE);
-              }
-            }
-          });
-    } else {
-      updateMap(location);
-    }
-    displayWhenReady();
-    Logger.get(getContext()).logImpression(DialerImpression.Type.EMERGENCY_GOT_MAP);
-  }
-
-  private void updateMap(@NonNull Location location) {
-    Assert.isNotNull(location);
-    Assert.isNotNull(savedGoogleMap);
-    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
-    savedGoogleMap.clear();
-    savedGoogleMap.addMarker(new MarkerOptions().position(latLng).flat(true).draggable(false));
-    savedGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, MAP_ZOOM_LEVEL));
-  }
-
-  @Override
-  public void setAddress(String address) {
-    LogUtil.i("LocationFragment.setAddress", address);
-    isAddressSet = true;
-    addressLine1.setVisibility(View.VISIBLE);
-    addressLine2.setVisibility(View.VISIBLE);
-    if (TextUtils.isEmpty(address)) {
-      addressLine1.setText(null);
-      addressLine2.setText(null);
-    } else {
-
-      // Split the address after the first delimiter for display, if present.
-      // For example, "1600 Amphitheatre Parkway, Mountain View, CA 94043"
-      //     => "1600 Amphitheatre Parkway"
-      //     => "Mountain View, CA 94043"
-      int splitIndex = address.indexOf(ADDRESS_DELIMITER);
-      if (splitIndex >= 0) {
-        updateText(addressLine1, address.substring(0, splitIndex).trim());
-        updateText(addressLine2, address.substring(splitIndex + 1).trim());
-      } else {
-        updateText(addressLine1, address);
-        updateText(addressLine2, null);
-      }
-
-      Logger.get(getContext()).logImpression(DialerImpression.Type.EMERGENCY_GOT_ADDRESS);
-    }
-    displayWhenReady();
-  }
-
-  @Override
-  public void setLocation(Location location) {
-    LogUtil.i("LocationFragment.setLocation", String.valueOf(location));
-    isLocationSet = true;
-    this.location = location;
-
-    if (location != null) {
-      latLongLine.setVisibility(View.VISIBLE);
-      latLongLine.setText(
-          getContext()
-              .getString(
-                  R.string.lat_long_format, location.getLatitude(), location.getLongitude()));
-
-      Logger.get(getContext()).logImpression(DialerImpression.Type.EMERGENCY_GOT_LOCATION);
-      setMap(location);
-    }
-    displayWhenReady();
-  }
-
-  private void displayWhenReady() {
-    // Show the location if all data has loaded, otherwise prime the timeout
-    if (isMapSet && isAddressSet && isLocationSet) {
-      showLocationNow();
-    } else if (!hasTimeoutStarted) {
-      handler.postDelayed(dataTimeoutRunnable, LOAD_DATA_TIMEOUT_MILLIS);
-      hasTimeoutStarted = true;
-    }
-  }
-
-  private void showLocationNow() {
-    handler.removeCallbacks(dataTimeoutRunnable);
-    handler.removeCallbacks(spinningTimeoutRunnable);
-    if (viewAnimator.getDisplayedChild() != LOCATION_VIEW_INDEX) {
-      viewAnimator.setDisplayedChild(LOCATION_VIEW_INDEX);
-      viewAnimator.setOnClickListener(v -> launchMap());
-    }
-  }
-
-  @Override
-  public Context getContext() {
-    return getActivity();
-  }
-
-  private void launchMap() {
-    if (location != null) {
-      startActivity(
-          LocationUrlBuilder.getShowMapIntent(
-              location, addressLine1.getText(), addressLine2.getText()));
-
-      Logger.get(getContext()).logImpression(DialerImpression.Type.EMERGENCY_LAUNCHED_MAP);
-    }
-  }
-
-  private static void updateText(TextView view, String text) {
-    if (!Objects.equals(text, view.getText())) {
-      view.setText(text);
-    }
-  }
-
-  @Override
-  public void onResume() {
-    super.onResume();
-    locationMapView.onResume();
-  }
-
-  @Override
-  public void onPause() {
-    locationMapView.onPause();
-    super.onPause();
-  }
-}
diff --git a/java/com/android/incallui/calllocation/impl/LocationHelper.java b/java/com/android/incallui/calllocation/impl/LocationHelper.java
deleted file mode 100644
index 5c105e4..0000000
--- a/java/com/android/incallui/calllocation/impl/LocationHelper.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.impl;
-
-import android.content.Context;
-import android.location.Location;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.os.Handler;
-import android.support.annotation.IntDef;
-import android.support.annotation.MainThread;
-import android.support.v4.os.UserManagerCompat;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.util.PermissionsUtil;
-import com.google.android.gms.location.FusedLocationProviderClient;
-import com.google.android.gms.location.LocationListener;
-import com.google.android.gms.location.LocationRequest;
-import com.google.android.gms.location.LocationServices;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.List;
-
-/** Uses the Fused location service to get location and pass updates on to listeners. */
-public class LocationHelper {
-
-  private static final int FAST_MIN_UPDATE_INTERVAL_MS = 5 * 1000;
-  private static final int SLOW_MIN_UPDATE_INTERVAL_MS = 30 * 1000;
-  private static final int LAST_UPDATE_THRESHOLD_MS = 60 * 1000;
-  private static final int LOCATION_ACCURACY_THRESHOLD_METERS = 100;
-
-  public static final int LOCATION_STATUS_UNKNOWN = 0;
-  public static final int LOCATION_STATUS_OK = 1;
-  public static final int LOCATION_STATUS_STALE = 2;
-  public static final int LOCATION_STATUS_INACCURATE = 3;
-  public static final int LOCATION_STATUS_NO_LOCATION = 4;
-  public static final int LOCATION_STATUS_MOCK = 5;
-
-  /** Possible return values for {@code checkLocation()} */
-  @IntDef({
-    LOCATION_STATUS_UNKNOWN,
-    LOCATION_STATUS_OK,
-    LOCATION_STATUS_STALE,
-    LOCATION_STATUS_INACCURATE,
-    LOCATION_STATUS_NO_LOCATION,
-    LOCATION_STATUS_MOCK
-  })
-  @Retention(RetentionPolicy.SOURCE)
-  public @interface LocationStatus {}
-
-  private final LocationHelperInternal locationHelperInternal;
-  private final List<LocationListener> listeners = new ArrayList<>();
-
-  @MainThread
-  LocationHelper(Context context) {
-    Assert.isMainThread();
-    Assert.checkArgument(canGetLocation(context));
-    locationHelperInternal = new LocationHelperInternal(context);
-  }
-
-  static boolean canGetLocation(Context context) {
-    if (!PermissionsUtil.hasLocationPermissions(context)) {
-      LogUtil.i("LocationHelper.canGetLocation", "no location permissions.");
-      return false;
-    }
-
-    // Ensure that both system location setting is on and google location services are enabled.
-    if (!GoogleLocationSettingHelper.isGoogleLocationServicesEnabled(context)
-        || !GoogleLocationSettingHelper.isSystemLocationSettingEnabled(context)) {
-      LogUtil.i("LocationHelper.canGetLocation", "location service is disabled.");
-      return false;
-    }
-
-    if (!UserManagerCompat.isUserUnlocked(context)) {
-      LogUtil.i("LocationHelper.canGetLocation", "location unavailable in FBE mode.");
-      return false;
-    }
-
-    return true;
-  }
-
-  /**
-   * Check whether the location is valid. We consider it valid if it was recorded within the
-   * specified time threshold of the present and has an accuracy less than the specified distance
-   * threshold.
-   *
-   * @param location The location to determine the validity of.
-   * @return {@code LocationStatus} indicating if the location is valid or the reason its not valid
-   */
-  static @LocationStatus int checkLocation(Location location) {
-    if (location == null) {
-      LogUtil.i("LocationHelper.checkLocation", "no location");
-      return LOCATION_STATUS_NO_LOCATION;
-    }
-
-    long locationTimeMs = location.getTime();
-    long elapsedTimeMs = System.currentTimeMillis() - locationTimeMs;
-    if (elapsedTimeMs > LAST_UPDATE_THRESHOLD_MS) {
-      LogUtil.i("LocationHelper.checkLocation", "stale location, age: " + elapsedTimeMs);
-      return LOCATION_STATUS_STALE;
-    }
-
-    if (location.getAccuracy() > LOCATION_ACCURACY_THRESHOLD_METERS) {
-      LogUtil.i("LocationHelper.checkLocation", "poor accuracy: " + location.getAccuracy());
-      return LOCATION_STATUS_INACCURATE;
-    }
-
-    if (location.isFromMockProvider()) {
-      LogUtil.i("LocationHelper.checkLocation", "from mock provider");
-      return LOCATION_STATUS_MOCK;
-    }
-
-    return LOCATION_STATUS_OK;
-  }
-
-  @MainThread
-  void addLocationListener(LocationListener listener) {
-    Assert.isMainThread();
-    listeners.add(listener);
-  }
-
-  @MainThread
-  void removeLocationListener(LocationListener listener) {
-    Assert.isMainThread();
-    listeners.remove(listener);
-  }
-
-  @MainThread
-  void close() {
-    Assert.isMainThread();
-    LogUtil.enterBlock("LocationHelper.close");
-    listeners.clear();
-    locationHelperInternal.close();
-  }
-
-  @MainThread
-  void onLocationChanged(Location location, boolean isConnected) {
-    Assert.isMainThread();
-    LogUtil.i("LocationHelper.onLocationChanged", "location: " + location);
-
-    for (LocationListener listener : listeners) {
-      listener.onLocationChanged(location);
-    }
-  }
-
-  /**
-   * This class contains all the asynchronous callbacks. It only posts location changes back to the
-   * outer class on the main thread.
-   */
-  private class LocationHelperInternal implements LocationListener {
-
-    private final FusedLocationProviderClient locationClient;
-    private final ConnectivityManager connectivityManager;
-    private final Handler mainThreadHandler = new Handler();
-    private boolean gotGoodLocation;
-
-    @MainThread
-    LocationHelperInternal(Context context) {
-      Assert.isMainThread();
-      locationClient = LocationServices.getFusedLocationProviderClient(context);
-      connectivityManager =
-          (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
-      requestUpdates();
-      getLocation();
-    }
-
-    void close() {
-      LogUtil.enterBlock("LocationHelperInternal.close");
-      locationClient.removeLocationUpdates(this);
-    }
-
-    private void requestUpdates() {
-      LogUtil.enterBlock("LocationHelperInternal.requestUpdates");
-
-      int interval = gotGoodLocation ? SLOW_MIN_UPDATE_INTERVAL_MS : FAST_MIN_UPDATE_INTERVAL_MS;
-      LocationRequest locationRequest =
-          LocationRequest.create()
-              .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
-              .setInterval(interval)
-              .setFastestInterval(interval);
-
-      locationClient
-          .requestLocationUpdates(locationRequest, this)
-          .addOnSuccessListener(
-              result -> LogUtil.i("LocationHelperInternal.requestUpdates", "onSuccess"))
-          .addOnFailureListener(
-              e -> LogUtil.e("LocationHelperInternal.requestUpdates", "onFailure", e));
-    }
-
-    private void getLocation() {
-      LogUtil.enterBlock("LocationHelperInternal.getLocation");
-
-      locationClient
-          .getLastLocation()
-          .addOnSuccessListener(
-              location -> {
-                LogUtil.i("LocationHelperInternal.getLocation", "onSuccess");
-                Assert.isMainThread();
-                LocationHelper.this.onLocationChanged(location, isConnected());
-                maybeAdjustUpdateInterval(location);
-              })
-          .addOnFailureListener(
-              e -> LogUtil.e("LocationHelperInternal.getLocation", "onFailure", e));
-    }
-
-    @Override
-    public void onLocationChanged(Location location) {
-      // Post new location on main thread
-      mainThreadHandler.post(
-          new Runnable() {
-            @Override
-            public void run() {
-              LocationHelper.this.onLocationChanged(location, isConnected());
-              maybeAdjustUpdateInterval(location);
-            }
-          });
-    }
-
-    private void maybeAdjustUpdateInterval(Location location) {
-      if (!gotGoodLocation && checkLocation(location) == LOCATION_STATUS_OK) {
-        LogUtil.i("LocationHelperInternal.maybeAdjustUpdateInterval", "got good location");
-        gotGoodLocation = true;
-        requestUpdates();
-      }
-    }
-
-    /** @return Whether the phone is connected to data. */
-    private boolean isConnected() {
-      if (connectivityManager == null) {
-        return false;
-      }
-      NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
-      return networkInfo != null && networkInfo.isConnectedOrConnecting();
-    }
-  }
-}
diff --git a/java/com/android/incallui/calllocation/impl/LocationPresenter.java b/java/com/android/incallui/calllocation/impl/LocationPresenter.java
deleted file mode 100644
index 94bd235..0000000
--- a/java/com/android/incallui/calllocation/impl/LocationPresenter.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.impl;
-
-import android.content.Context;
-import android.location.Location;
-import android.os.AsyncTask;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.incallui.baseui.Presenter;
-import com.android.incallui.baseui.Ui;
-import com.google.android.gms.location.LocationListener;
-import java.lang.ref.WeakReference;
-import java.util.Objects;
-
-/**
- * Presenter for the {@code LocationFragment}.
- *
- * <p>Performs lookup for the address and map image to show.
- */
-public class LocationPresenter extends Presenter<LocationPresenter.LocationUi>
-    implements LocationListener {
-
-  private Location lastLocation;
-  private AsyncTask reverseGeocodeTask;
-
-  LocationPresenter() {}
-
-  @Override
-  public void onUiReady(LocationUi ui) {
-    LogUtil.i("LocationPresenter.onUiReady", "");
-    super.onUiReady(ui);
-    updateLocation(lastLocation, true);
-  }
-
-  @Override
-  public void onUiUnready(LocationUi ui) {
-    LogUtil.i("LocationPresenter.onUiUnready", "");
-    super.onUiUnready(ui);
-
-    if (reverseGeocodeTask != null) {
-      reverseGeocodeTask.cancel(true);
-    }
-  }
-
-  @Override
-  public void onLocationChanged(Location location) {
-    LogUtil.i("LocationPresenter.onLocationChanged", "");
-    updateLocation(location, false);
-  }
-
-  private void updateLocation(Location location, boolean forceUpdate) {
-    LogUtil.i("LocationPresenter.updateLocation", "location: " + location);
-    if (forceUpdate || !Objects.equals(lastLocation, location)) {
-      lastLocation = location;
-      int status = LocationHelper.checkLocation(location);
-      LocationUi ui = getUi();
-      if (status == LocationHelper.LOCATION_STATUS_OK) {
-        reverseGeocodeTask = new ReverseGeocodeTask(new WeakReference<>(ui)).execute(location);
-        if (ui != null) {
-          ui.setLocation(location);
-        } else {
-          LogUtil.i("LocationPresenter.updateLocation", "no Ui");
-        }
-      } else if (status != LocationHelper.LOCATION_STATUS_NO_LOCATION) {
-        // Log impression indicating why the location is not valid
-        // Note: its possible for this to be called before the UI has been initialized.
-        Context context = (ui != null) ? ui.getContext() : null;
-        if (context != null) {
-          if (status == LocationHelper.LOCATION_STATUS_STALE) {
-            Logger.get(context).logImpression(DialerImpression.Type.EMERGENCY_STALE_LOCATION);
-          } else if (status == LocationHelper.LOCATION_STATUS_INACCURATE) {
-            Logger.get(context).logImpression(DialerImpression.Type.EMERGENCY_INACCURATE_LOCATION);
-          }
-        }
-      }
-    }
-  }
-
-  /** UI interface */
-  public interface LocationUi extends Ui {
-
-    void setAddress(String address);
-
-    void setLocation(Location location);
-
-    Context getContext();
-  }
-}
diff --git a/java/com/android/incallui/calllocation/impl/LocationUrlBuilder.java b/java/com/android/incallui/calllocation/impl/LocationUrlBuilder.java
deleted file mode 100644
index 14a9c76..0000000
--- a/java/com/android/incallui/calllocation/impl/LocationUrlBuilder.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.impl;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.location.Location;
-import android.net.Uri;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import java.util.Locale;
-
-class LocationUrlBuilder {
-
-  // Static Map API path constants.
-  private static final String HTTPS_SCHEME = "https";
-  private static final String MAPS_API_DOMAIN = "maps.googleapis.com";
-  private static final String MAPS_PATH = "maps";
-  private static final String API_PATH = "api";
-  private static final String STATIC_MAP_PATH = "staticmap";
-  private static final String GEOCODE_PATH = "geocode";
-  private static final String GEOCODE_OUTPUT_TYPE = "json";
-
-  // Static Map API parameter constants.
-  private static final String KEY_PARAM_KEY = "key";
-  private static final String CENTER_PARAM_KEY = "center";
-  private static final String ZOOM_PARAM_KEY = "zoom";
-  private static final String SCALE_PARAM_KEY = "scale";
-  private static final String SIZE_PARAM_KEY = "size";
-  private static final String MARKERS_PARAM_KEY = "markers";
-
-  private static final String ZOOM_PARAM_VALUE = Integer.toString(16);
-
-  private static final String LAT_LONG_DELIMITER = ",";
-
-  private static final String MARKER_DELIMITER = "|";
-  private static final String MARKER_STYLE_DELIMITER = ":";
-  private static final String MARKER_STYLE_COLOR = "color";
-  private static final String MARKER_STYLE_COLOR_RED = "red";
-
-  private static final String LAT_LNG_PARAM_KEY = "latlng";
-
-  private static final String ANDROID_API_KEY_VALUE = "AIzaSyAXdDnif6B7sBYxU8hzw9qAp3pRPVHs060";
-  private static final String BROWSER_API_KEY_VALUE = "AIzaSyBfLlvWYndiQ3RFEHli65qGQH36QIxdyCI";
-
-  /**
-   * Generates the URL to a static map image for the given location.
-   *
-   * <p>This image has the following characteristics:
-   *
-   * <p>- It is centered at the given latitude and longitutde. - It is scaled according to the
-   * device's pixel density. - There is a red marker at the given latitude and longitude.
-   *
-   * <p>Source: https://developers.google.com/maps/documentation/staticmaps/
-   *
-   * @param contxt The context.
-   * @param Location A location.
-   * @return The URL of a static map image url of the given location.
-   */
-  public static String getStaticMapUrl(Context context, Location location) {
-    final Uri.Builder builder = new Uri.Builder();
-    Resources res = context.getResources();
-    String size =
-        res.getDimensionPixelSize(R.dimen.location_map_width)
-            + "x"
-            + res.getDimensionPixelSize(R.dimen.location_map_height);
-
-    builder
-        .scheme(HTTPS_SCHEME)
-        .authority(MAPS_API_DOMAIN)
-        .appendPath(MAPS_PATH)
-        .appendPath(API_PATH)
-        .appendPath(STATIC_MAP_PATH)
-        .appendQueryParameter(CENTER_PARAM_KEY, getFormattedLatLng(location))
-        .appendQueryParameter(ZOOM_PARAM_KEY, ZOOM_PARAM_VALUE)
-        .appendQueryParameter(SIZE_PARAM_KEY, size)
-        .appendQueryParameter(SCALE_PARAM_KEY, Float.toString(res.getDisplayMetrics().density))
-        .appendQueryParameter(MARKERS_PARAM_KEY, getMarkerUrlParamValue(location))
-        .appendQueryParameter(KEY_PARAM_KEY, ANDROID_API_KEY_VALUE);
-
-    return builder.build().toString();
-  }
-
-  /**
-   * Generates the URL for a request to reverse geocode the given location.
-   *
-   * <p>Source: https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding
-   *
-   * @param Location A location.
-   */
-  public static String getReverseGeocodeUrl(Location location) {
-    final Uri.Builder builder = new Uri.Builder();
-
-    builder
-        .scheme(HTTPS_SCHEME)
-        .authority(MAPS_API_DOMAIN)
-        .appendPath(MAPS_PATH)
-        .appendPath(API_PATH)
-        .appendPath(GEOCODE_PATH)
-        .appendPath(GEOCODE_OUTPUT_TYPE)
-        .appendQueryParameter(LAT_LNG_PARAM_KEY, getFormattedLatLng(location))
-        .appendQueryParameter(KEY_PARAM_KEY, BROWSER_API_KEY_VALUE);
-
-    return builder.build().toString();
-  }
-
-  public static Intent getShowMapIntent(
-      Location location, @Nullable CharSequence addressLine1, @Nullable CharSequence addressLine2) {
-
-    String latLong = getFormattedLatLng(location);
-    String url = String.format(Locale.US, "geo: %s?q=%s", latLong, latLong);
-
-    // Add a map label
-    if (addressLine1 != null) {
-      if (addressLine2 != null) {
-        url +=
-            String.format(Locale.US, "(%s, %s)", addressLine1.toString(), addressLine2.toString());
-      } else {
-        url += String.format(Locale.US, "(%s)", addressLine1.toString());
-      }
-    } else {
-      // TODO(mdooley): i18n
-      url +=
-          String.format(
-              Locale.US,
-              "(Latitude: %f, Longitude: %f)",
-              location.getLatitude(),
-              location.getLongitude());
-    }
-
-    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
-    intent.setPackage("com.google.android.apps.maps");
-    return intent;
-  }
-
-  /**
-   * Returns a comma-separated latitude and longitude pair, formatted for use as a URL parameter
-   * value.
-   *
-   * @param location A location.
-   * @return The comma-separated latitude and longitude pair of that location.
-   */
-  @VisibleForTesting
-  static String getFormattedLatLng(Location location) {
-    return location.getLatitude() + LAT_LONG_DELIMITER + location.getLongitude();
-  }
-
-  /**
-   * Returns the URL parameter value for the marker, specifying its style and position.
-   *
-   * @param location A location.
-   * @return The URL parameter value for the marker.
-   */
-  @VisibleForTesting
-  static String getMarkerUrlParamValue(Location location) {
-    return MARKER_STYLE_COLOR
-        + MARKER_STYLE_DELIMITER
-        + MARKER_STYLE_COLOR_RED
-        + MARKER_DELIMITER
-        + getFormattedLatLng(location);
-  }
-}
diff --git a/java/com/android/incallui/calllocation/impl/ReverseGeocodeTask.java b/java/com/android/incallui/calllocation/impl/ReverseGeocodeTask.java
deleted file mode 100644
index f4592d4..0000000
--- a/java/com/android/incallui/calllocation/impl/ReverseGeocodeTask.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.impl;
-
-import android.location.Location;
-import android.net.TrafficStats;
-import android.os.AsyncTask;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.constants.TrafficStatsTags;
-import com.android.incallui.calllocation.impl.LocationPresenter.LocationUi;
-import java.lang.ref.WeakReference;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-class ReverseGeocodeTask extends AsyncTask<Location, Void, String> {
-
-  // Below are the JSON keys for the reverse geocode response.
-  // Source: https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding
-  private static final String JSON_KEY_RESULTS = "results";
-  private static final String JSON_KEY_ADDRESS = "formatted_address";
-  private static final String JSON_KEY_ADDRESS_COMPONENTS = "address_components";
-  private static final String JSON_KEY_PREMISE = "premise";
-  private static final String JSON_KEY_TYPES = "types";
-  private static final String JSON_KEY_LONG_NAME = "long_name";
-  private static final String JSON_KEY_SHORT_NAME = "short_name";
-
-  private WeakReference<LocationUi> uiReference;
-
-  public ReverseGeocodeTask(WeakReference<LocationUi> uiReference) {
-    this.uiReference = uiReference;
-  }
-
-  @Override
-  protected String doInBackground(Location... locations) {
-    LocationUi ui = uiReference.get();
-    if (ui == null) {
-      return null;
-    }
-    if (locations == null || locations.length == 0) {
-      LogUtil.e("ReverseGeocodeTask.onLocationChanged", "No location provided");
-      return null;
-    }
-
-    try {
-      String address = null;
-      String url = LocationUrlBuilder.getReverseGeocodeUrl(locations[0]);
-
-      TrafficStats.setThreadStatsTag(TrafficStatsTags.REVERSE_GEOCODE_TAG);
-      String jsonResponse = HttpFetcher.getRequestAsString(ui.getContext(), url);
-
-      // Parse the JSON response for the formatted address of the first result.
-      JSONObject responseObject = new JSONObject(jsonResponse);
-      if (responseObject != null) {
-        JSONArray results = responseObject.optJSONArray(JSON_KEY_RESULTS);
-        if (results != null && results.length() > 0) {
-          JSONObject topResult = results.optJSONObject(0);
-          if (topResult != null) {
-            address = topResult.getString(JSON_KEY_ADDRESS);
-
-            // Strip off the Premise component from the address, if present.
-            JSONArray components = topResult.optJSONArray(JSON_KEY_ADDRESS_COMPONENTS);
-            if (components != null) {
-              boolean stripped = false;
-              for (int i = 0; !stripped && i < components.length(); i++) {
-                JSONObject component = components.optJSONObject(i);
-                JSONArray types = component.optJSONArray(JSON_KEY_TYPES);
-                if (types != null) {
-                  for (int j = 0; !stripped && j < types.length(); j++) {
-                    if (JSON_KEY_PREMISE.equals(types.getString(j))) {
-                      String premise = null;
-                      if (component.has(JSON_KEY_SHORT_NAME)
-                          && address.startsWith(component.getString(JSON_KEY_SHORT_NAME))) {
-                        premise = component.getString(JSON_KEY_SHORT_NAME);
-                      } else if (component.has(JSON_KEY_LONG_NAME)
-                          && address.startsWith(component.getString(JSON_KEY_LONG_NAME))) {
-                        premise = component.getString(JSON_KEY_SHORT_NAME);
-                      }
-                      if (premise != null) {
-                        int index = address.indexOf(',', premise.length());
-                        if (index > 0 && index < address.length()) {
-                          address = address.substring(index + 1).trim();
-                        }
-                        stripped = true;
-                        break;
-                      }
-                    }
-                  }
-                }
-              }
-            }
-
-            // Strip off the country, if its USA.  Note: unfortunately the country in the formatted
-            // address field doesn't match the country in the address component fields (USA != US)
-            // so we can't easily strip off the country for all cases, thus this hack.
-            if (address.endsWith(", USA")) {
-              address = address.substring(0, address.length() - 5);
-            }
-          }
-        }
-      }
-
-      return address;
-    } catch (AuthException ex) {
-      LogUtil.e("ReverseGeocodeTask.onLocationChanged", "AuthException", ex);
-      return null;
-    } catch (JSONException ex) {
-      LogUtil.e("ReverseGeocodeTask.onLocationChanged", "JSONException", ex);
-      return null;
-    } catch (Exception ex) {
-      LogUtil.e("ReverseGeocodeTask.onLocationChanged", "Exception!!!", ex);
-      return null;
-    } finally {
-      TrafficStats.clearThreadStatsTag();
-    }
-  }
-
-  @Override
-  protected void onPostExecute(String address) {
-    LocationUi ui = uiReference.get();
-    if (ui == null) {
-      return;
-    }
-
-    try {
-      ui.setAddress(address);
-    } catch (Exception ex) {
-      LogUtil.e("ReverseGeocodeTask.onPostExecute", "Exception!!!", ex);
-    }
-  }
-}
diff --git a/java/com/android/incallui/calllocation/impl/res/values/dimens.xml b/java/com/android/incallui/calllocation/impl/res/values/dimens.xml
deleted file mode 100644
index 1f41816..0000000
--- a/java/com/android/incallui/calllocation/impl/res/values/dimens.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2014 Google Inc. All Rights Reserved. -->
-<resources>
-  <dimen name="location_map_width">92dp</dimen>
-  <dimen name="location_map_height">92dp</dimen>
-</resources>
diff --git a/java/com/android/incallui/calllocation/impl/res/values/strings.xml b/java/com/android/incallui/calllocation/impl/res/values/strings.xml
deleted file mode 100644
index 1d15dba..0000000
--- a/java/com/android/incallui/calllocation/impl/res/values/strings.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-~ Copyright (C) 2017 The Android Open Source Project
-~
-~ Licensed under the Apache License, Version 2.0 (the "License");
-~ you may not use this file except in compliance with the License.
-~ You may obtain a copy of the License at
-~
-~      http://www.apache.org/licenses/LICENSE-2.0
-~
-~ Unless required by applicable law or agreed to in writing, software
-~ distributed under the License is distributed on an "AS IS" BASIS,
-~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-~ See the License for the specific language governing permissions and
-~ limitations under the License
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-
-  <!-- Description for location map shown during emergency calls. [CHAR LIMIT=NONE] -->
-  <string name="location_map_description">Emergency Location Map</string>
-
-  <!-- Label for the address and map shown during emergency calls. [CHAR LIMIT=40] -->
-  <string name="location_title">Tell emergency services where you are</string>
-
-  <string name="lat_long_format"><xliff:g id="latitude">%1$f</xliff:g>, <xliff:g id="longitude">%2$f</xliff:g></string>
-
-  <!-- Progress indicator loading text. [CHAR LIMIT=20] -->
-  <string name="location_loading">Finding your location&#8230;</string>
-
-  <!-- Error message shown when we can't get device location. [CHAR LIMIT=NONE] -->
-  <string name="location_error">Error, could not retrieve your location</string>
-
-</resources>
diff --git a/java/com/android/incallui/calllocation/impl/res/values/styles.xml b/java/com/android/incallui/calllocation/impl/res/values/styles.xml
deleted file mode 100644
index 45e9c98..0000000
--- a/java/com/android/incallui/calllocation/impl/res/values/styles.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-
-  <style name="LocationAddressTitleTextStyle">
-    <item name="android:textSize">14sp</item>
-    <item name="android:textColor">#dd000000</item>
-    <item name="android:fontFamily">sans-serif-medium</item>
-  </style>
-
-  <style name="LocationAddressTextStyle">
-    <item name="android:textSize">16sp</item>
-    <item name="android:textColor">#dd000000</item>
-    <item name="android:fontFamily">sans-serif</item>
-  </style>
-
-  <style name="LocationLatLongTextStyle">
-    <item name="android:textSize">14sp</item>
-    <item name="android:textColor">#88000000</item>
-    <item name="android:fontFamily">sans-serif</item>
-  </style>
-
-  <style name="LocationLoadingTextStyle">
-    <item name="android:textSize">14sp</item>
-    <item name="android:textColor">#dd000000</item>
-    <item name="android:fontFamily">sans-serif</item>
-  </style>
-
-  <style name="LocationErrorTextStyle">
-    <item name="android:textSize">14sp</item>
-    <item name="android:textColor">#dd000000</item>
-    <item name="android:fontFamily">sans-serif</item>
-  </style>
-</resources>
diff --git a/java/com/android/incallui/calllocation/stub/StubCallLocationModule.java b/java/com/android/incallui/calllocation/stub/StubCallLocationModule.java
deleted file mode 100644
index c60663b..0000000
--- a/java/com/android/incallui/calllocation/stub/StubCallLocationModule.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.calllocation.stub;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
-import com.android.dialer.common.Assert;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.incallui.calllocation.CallLocation;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Inject;
-
-/** This module provides an instance of call location. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public abstract class StubCallLocationModule {
-
-  @Binds
-  public abstract CallLocation bindCallLocation(StubCallLocation callLocation);
-
-  static class StubCallLocation implements CallLocation {
-    @Inject
-    StubCallLocation() {}
-
-    @Override
-    public boolean canGetLocation(@NonNull Context context) {
-      return false;
-    }
-
-    @Override
-    @NonNull
-    public Fragment getLocationFragment(@NonNull Context context) {
-      throw Assert.createUnsupportedOperationFailException();
-    }
-
-    @Override
-    public void close() {
-    }
-  }
-}
diff --git a/java/com/android/incallui/callpending/AndroidManifest.xml b/java/com/android/incallui/callpending/AndroidManifest.xml
deleted file mode 100644
index aa316a3..0000000
--- a/java/com/android/incallui/callpending/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.incallui.callpending">
-  <application>
-  <!-- Identical to .InCallActivity except orientation is locked to portrait -->
-    <activity
-        android:directBootAware="true"
-        android:excludeFromRecents="true"
-        android:exported="false"
-        android:label="@string/phoneAppLabel"
-        android:name="com.android.incallui.callpending.CallPendingActivity"
-        android:resizeableActivity="true"
-        android:screenOrientation="portrait"
-        android:taskAffinity="com.android.incallui"
-        android:theme="@style/Theme.InCallScreen"/>
-  </application>
-</manifest>
diff --git a/java/com/android/incallui/callpending/CallPendingActivity.java b/java/com/android/incallui/callpending/CallPendingActivity.java
index 4086e14..7fba003 100644
--- a/java/com/android/incallui/callpending/CallPendingActivity.java
+++ b/java/com/android/incallui/callpending/CallPendingActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,13 +24,13 @@
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
 import android.telecom.CallAudioState;
 import android.telecom.TelecomManager;
+
+import androidx.fragment.app.FragmentActivity;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.enrichedcall.EnrichedCallComponent;
-import com.android.dialer.enrichedcall.Session;
-import com.android.dialer.multimedia.MultimediaData;
 import com.android.incallui.audiomode.AudioModeProvider;
 import com.android.incallui.call.state.DialerCallState;
 import com.android.incallui.incall.bindings.InCallBindings;
@@ -43,6 +44,7 @@
 import com.android.incallui.incall.protocol.InCallScreenDelegateFactory;
 import com.android.incallui.incall.protocol.PrimaryCallState;
 import com.android.incallui.incall.protocol.PrimaryInfo;
+
 import java.io.FileNotFoundException;
 import java.io.InputStream;
 
@@ -54,7 +56,6 @@
  * <ul>
  *   <li>Contact info
  *   <li>"Dialing..." call state
- *   <li>Enriched calling data
  * </ul>
  *
  * If the user presses the back or disconnect buttons, {@link #finish()} is called.
@@ -66,7 +67,6 @@
   private static final String ACTION_FINISH_BROADCAST =
       "dialer.intent.action.CALL_PENDING_ACTIVITY_FINISH";
 
-  private static final String EXTRA_SESSION_ID = "extra_session_id";
   private static final String EXTRA_NUMBER = "extra_number";
   private static final String EXTRA_NAME = "extra_name";
   private static final String EXTRA_LABEL = "extra_label";
@@ -96,8 +96,7 @@
       String label,
       String lookupKey,
       String callPendingLabel,
-      Uri photoUri,
-      long sessionId) {
+      Uri photoUri) {
     Intent intent = new Intent(context, CallPendingActivity.class);
     intent.putExtra(EXTRA_NAME, name);
     intent.putExtra(EXTRA_NUMBER, number);
@@ -105,7 +104,6 @@
     intent.putExtra(EXTRA_LOOKUP_KEY, lookupKey);
     intent.putExtra(EXTRA_CALL_PENDING_LABEL, callPendingLabel);
     intent.putExtra(EXTRA_PHOTO_URI, photoUri);
-    intent.putExtra(EXTRA_SESSION_ID, sessionId);
     return intent;
   }
 
@@ -117,7 +115,8 @@
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.pending_incall_screen);
-    registerReceiver(finishReceiver, new IntentFilter(ACTION_FINISH_BROADCAST));
+    registerReceiver(finishReceiver, new IntentFilter(ACTION_FINISH_BROADCAST),
+            RECEIVER_NOT_EXPORTED);
   }
 
   @Override
@@ -155,16 +154,6 @@
   }
 
   private PrimaryInfo createPrimaryInfo() {
-    Session session =
-        EnrichedCallComponent.get(this).getEnrichedCallManager().getSession(getSessionId());
-    MultimediaData multimediaData;
-    if (session == null) {
-      LogUtil.i("CallPendingActivity.createPrimaryInfo", "Null session.");
-      multimediaData = null;
-    } else {
-      multimediaData = session.getMultimediaData();
-    }
-
     Drawable photo = null;
     Uri photoUri = getPhotoUri();
     try {
@@ -193,9 +182,8 @@
         .setIsSpam(false)
         .setIsLocalContact(true)
         .setAnsweringDisconnectsOngoingCall(false)
-        .setShouldShowLocation(false)
         .setContactInfoLookupKey(getLookupKey())
-        .setMultimediaData(multimediaData)
+        .setMultimediaData(null)
         .setShowInCallButtonGrid(false)
         .setNumberPresentation(TelecomManager.PRESENTATION_ALLOWED)
         .build();
@@ -226,12 +214,6 @@
           public void onInCallButtonUiUnready() {}
 
           @Override
-          public void onSaveInstanceState(Bundle outState) {}
-
-          @Override
-          public void onRestoreInstanceState(Bundle savedInstanceState) {}
-
-          @Override
           public void addCallClicked() {}
 
           @Override
@@ -285,6 +267,9 @@
           public void swapSimClicked() {}
 
           @Override
+          public void callRecordClicked(boolean checked) {}
+
+          @Override
           public Context getContext() {
             return CallPendingActivity.this;
           }
@@ -317,15 +302,9 @@
           public void onSecondaryInfoClicked() {}
 
           @Override
-          public void onCallStateButtonClicked() {}
-
-          @Override
           public void onManageConferenceClicked() {}
 
           @Override
-          public void onShrinkAnimationComplete() {}
-
-          @Override
           public void onInCallScreenResumed() {}
 
           @Override
@@ -333,10 +312,6 @@
         };
   }
 
-  private long getSessionId() {
-    return getIntent().getLongExtra(EXTRA_SESSION_ID, -1);
-  }
-
   private String getNumber() {
     return getIntent().getStringExtra(EXTRA_NUMBER);
   }
@@ -358,6 +333,6 @@
   }
 
   private Uri getPhotoUri() {
-    return getIntent().getParcelableExtra(EXTRA_PHOTO_URI);
+    return getIntent().getParcelableExtra(EXTRA_PHOTO_URI, Uri.class);
   }
 }
diff --git a/java/com/android/incallui/commontheme/AndroidManifest.xml b/java/com/android/incallui/commontheme/AndroidManifest.xml
deleted file mode 100644
index 1d5914f..0000000
--- a/java/com/android/incallui/commontheme/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.incallui.commontheme">
-</manifest>
diff --git a/java/com/android/incallui/commontheme/res/animator/button_state.xml b/java/com/android/incallui/commontheme/res/animator/button_state.xml
index 70958d6..339d548 100644
--- a/java/com/android/incallui/commontheme/res/animator/button_state.xml
+++ b/java/com/android/incallui/commontheme/res/animator/button_state.xml
@@ -26,5 +26,4 @@
         android:valueType="floatType" />
     </set>
   </item>
-  ...
 </selector>
\ No newline at end of file
diff --git a/java/com/android/incallui/commontheme/res/color/incall_button_background.xml b/java/com/android/incallui/commontheme/res/color/incall_button_background.xml
new file mode 100644
index 0000000..79c8710
--- /dev/null
+++ b/java/com/android/incallui/commontheme/res/color/incall_button_background.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:color="@color/incall_button_background_color" android:state_enabled="true"/>
+  <item android:color="#99ffffff" android:state_enabled="false"/>
+</selector>
diff --git a/java/com/android/incallui/commontheme/res/color/incall_button_white.xml b/java/com/android/incallui/commontheme/res/color/incall_button_white.xml
deleted file mode 100644
index 5df441f..0000000
--- a/java/com/android/incallui/commontheme/res/color/incall_button_white.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:color="@android:color/white" android:state_enabled="true"/>
-  <item android:color="#99ffffff" android:state_enabled="false"/>
-</selector>
diff --git a/java/com/android/incallui/commontheme/res/drawable/answer_answer_background.xml b/java/com/android/incallui/commontheme/res/drawable/answer_answer_background.xml
index 090506a..7ad8020 100644
--- a/java/com/android/incallui/commontheme/res/drawable/answer_answer_background.xml
+++ b/java/com/android/incallui/commontheme/res/drawable/answer_answer_background.xml
@@ -4,7 +4,7 @@
   <item>
     <shape
       android:shape="oval">
-      <solid android:color="#09ad00"/>
+      <solid android:color="@color/dialer_call_green"/>
     </shape>
   </item>
 </ripple>
diff --git a/java/com/android/incallui/commontheme/res/drawable/incall_end_call_background.xml b/java/com/android/incallui/commontheme/res/drawable/incall_end_call_background.xml
index 3c9f4bc..3caa1fb 100644
--- a/java/com/android/incallui/commontheme/res/drawable/incall_end_call_background.xml
+++ b/java/com/android/incallui/commontheme/res/drawable/incall_end_call_background.xml
@@ -4,7 +4,7 @@
   <item>
     <shape
       android:shape="oval">
-      <solid android:color="#FFDF0000"/>
+      <solid android:color="@color/dialer_end_call_button_color"/>
     </shape>
   </item>
 </ripple>
diff --git a/java/com/android/incallui/commontheme/res/values-af/strings.xml b/java/com/android/incallui/commontheme/res/values-af/strings.xml
index 44d69d9..3a35eb5 100644
--- a/java/com/android/incallui/commontheme/res/values-af/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-af/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video af</string>
   <string name="incall_content_description_swap_video">Verwissel video</string>
   <string name="incall_label_speaker">Luidspreker</string>
-  <string name="incall_label_audio">Klank</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-am/strings.xml b/java/com/android/incallui/commontheme/res/values-am/strings.xml
index de239fc..4f04751 100644
--- a/java/com/android/incallui/commontheme/res/values-am/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-am/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">ቪዲዮ ጠፍቷል</string>
   <string name="incall_content_description_swap_video">ቪዲዮ አገላብጥ</string>
   <string name="incall_label_speaker">የድምጽ ማጉያ</string>
-  <string name="incall_label_audio">ድምፅ</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ar/strings.xml b/java/com/android/incallui/commontheme/res/values-ar/strings.xml
index 74104aa..f57bd82 100644
--- a/java/com/android/incallui/commontheme/res/values-ar/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ar/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">الفيديو ليس قيد التشغيل</string>
   <string name="incall_content_description_swap_video">تبديل الفيديو</string>
   <string name="incall_label_speaker">مكبر الصوت</string>
-  <string name="incall_label_audio">صوت</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-az/strings.xml b/java/com/android/incallui/commontheme/res/values-az/strings.xml
index 833ad04..391c088 100644
--- a/java/com/android/incallui/commontheme/res/values-az/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-az/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video deaktivdir</string>
   <string name="incall_content_description_swap_video">Videonu dəyişdirin</string>
   <string name="incall_label_speaker">Dinamik</string>
-  <string name="incall_label_audio">Səs</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml
index 41a7055..3f04906 100644
--- a/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-b+sr+Latn/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Isključi video</string>
   <string name="incall_content_description_swap_video">Zameni video</string>
   <string name="incall_label_speaker">Zvučnik</string>
-  <string name="incall_label_audio">Zvuk</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-be/strings.xml b/java/com/android/incallui/commontheme/res/values-be/strings.xml
index 1abe942..3e667db 100644
--- a/java/com/android/incallui/commontheme/res/values-be/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-be/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Відэа выкл.</string>
   <string name="incall_content_description_swap_video">Пераключыць відэа</string>
   <string name="incall_label_speaker">Вонк.дынамік</string>
-  <string name="incall_label_audio">Гук</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-bg/strings.xml b/java/com/android/incallui/commontheme/res/values-bg/strings.xml
index e12a7a1..5911d63 100644
--- a/java/com/android/incallui/commontheme/res/values-bg/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-bg/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Видеото е изключено</string>
   <string name="incall_content_description_swap_video">Размяна на видеото</string>
   <string name="incall_label_speaker">Високогов.</string>
-  <string name="incall_label_audio">Звук</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-bn/strings.xml b/java/com/android/incallui/commontheme/res/values-bn/strings.xml
index 050d90e..94762a3 100644
--- a/java/com/android/incallui/commontheme/res/values-bn/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-bn/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">ভিডিও বন্ধ আছে</string>
   <string name="incall_content_description_swap_video">ভিডিও অদল বদল করুন</string>
   <string name="incall_label_speaker">স্পিকার</string>
-  <string name="incall_label_audio">শব্দ</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-bs/strings.xml b/java/com/android/incallui/commontheme/res/values-bs/strings.xml
index 096bded..7bcd3ff 100644
--- a/java/com/android/incallui/commontheme/res/values-bs/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-bs/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Kamera je isključena</string>
   <string name="incall_content_description_swap_video">Zamijeni kameru</string>
   <string name="incall_label_speaker">Zvučnik</string>
-  <string name="incall_label_audio">Zvuk</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ca/strings.xml b/java/com/android/incallui/commontheme/res/values-ca/strings.xml
index e817bf4..ff5267f 100644
--- a/java/com/android/incallui/commontheme/res/values-ca/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ca/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Vídeo desactivat</string>
   <string name="incall_content_description_swap_video">Canvia de vídeo</string>
   <string name="incall_label_speaker">Altaveu</string>
-  <string name="incall_label_audio">So</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-cs/strings.xml b/java/com/android/incallui/commontheme/res/values-cs/strings.xml
index 93ae51d..ce03a0c 100644
--- a/java/com/android/incallui/commontheme/res/values-cs/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-cs/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Vypnuté video</string>
   <string name="incall_content_description_swap_video">Přepnout video</string>
   <string name="incall_label_speaker">Reproduktor</string>
-  <string name="incall_label_audio">Zvuk</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-da/strings.xml b/java/com/android/incallui/commontheme/res/values-da/strings.xml
index f06cf61..0003d1e 100644
--- a/java/com/android/incallui/commontheme/res/values-da/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-da/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video fra</string>
   <string name="incall_content_description_swap_video">Byt video</string>
   <string name="incall_label_speaker">Højttaler</string>
-  <string name="incall_label_audio">Lyd</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-de/strings.xml b/java/com/android/incallui/commontheme/res/values-de/strings.xml
index b6e9576..67f9bac 100644
--- a/java/com/android/incallui/commontheme/res/values-de/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-de/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video aus</string>
   <string name="incall_content_description_swap_video">Video wechseln</string>
   <string name="incall_label_speaker">Lautsprecher</string>
-  <string name="incall_label_audio">Tonausgabe</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-el/strings.xml b/java/com/android/incallui/commontheme/res/values-el/strings.xml
index 7564ee0..ad24fc0 100644
--- a/java/com/android/incallui/commontheme/res/values-el/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-el/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Εικόνα βίντεο απενεργοποιημένη</string>
   <string name="incall_content_description_swap_video">Εναλλαγή βίντεο</string>
   <string name="incall_label_speaker">Ηχείο</string>
-  <string name="incall_label_audio">Ήχος</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml b/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml
index afc4d2e..64a8061 100644
--- a/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-en-rAU/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video off</string>
   <string name="incall_content_description_swap_video">Swap video</string>
   <string name="incall_label_speaker">Speaker</string>
-  <string name="incall_label_audio">Sound</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml b/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml
index afc4d2e..64a8061 100644
--- a/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-en-rGB/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video off</string>
   <string name="incall_content_description_swap_video">Swap video</string>
   <string name="incall_label_speaker">Speaker</string>
-  <string name="incall_label_audio">Sound</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml b/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml
index afc4d2e..64a8061 100644
--- a/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-en-rIN/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video off</string>
   <string name="incall_content_description_swap_video">Swap video</string>
   <string name="incall_label_speaker">Speaker</string>
-  <string name="incall_label_audio">Sound</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml b/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml
index 5daf4ae..3873970 100644
--- a/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-es-rUS/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video desactivado</string>
   <string name="incall_content_description_swap_video">Intercambiar video</string>
   <string name="incall_label_speaker">Altavoz</string>
-  <string name="incall_label_audio">Sonido</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-es/strings.xml b/java/com/android/incallui/commontheme/res/values-es/strings.xml
index 2e1c40e..105c1f3 100644
--- a/java/com/android/incallui/commontheme/res/values-es/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-es/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Vídeo desactivado</string>
   <string name="incall_content_description_swap_video">Cambiar de vídeo</string>
   <string name="incall_label_speaker">Altavoz</string>
-  <string name="incall_label_audio">Sonido</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-et/strings.xml b/java/com/android/incallui/commontheme/res/values-et/strings.xml
index 67ff203..9af4b03 100644
--- a/java/com/android/incallui/commontheme/res/values-et/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-et/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video on väljas</string>
   <string name="incall_content_description_swap_video">Video vahetamine</string>
   <string name="incall_label_speaker">Kõlar</string>
-  <string name="incall_label_audio">Heli</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-eu/strings.xml b/java/com/android/incallui/commontheme/res/values-eu/strings.xml
index c9caab6..a14b366 100644
--- a/java/com/android/incallui/commontheme/res/values-eu/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-eu/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Desaktibatuta dago bideoa</string>
   <string name="incall_content_description_swap_video">Aldatu bideoa</string>
   <string name="incall_label_speaker">Bozgorailua</string>
-  <string name="incall_label_audio">Soinua</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-fa/strings.xml b/java/com/android/incallui/commontheme/res/values-fa/strings.xml
index 6193813..25d8c3c 100644
--- a/java/com/android/incallui/commontheme/res/values-fa/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-fa/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">ویدئو غیرفعال</string>
   <string name="incall_content_description_swap_video">جابه‌جایی ویدئو</string>
   <string name="incall_label_speaker">بلندگو</string>
-  <string name="incall_label_audio">صدا</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-fi/strings.xml b/java/com/android/incallui/commontheme/res/values-fi/strings.xml
index f14d82f..6d3b5a9 100644
--- a/java/com/android/incallui/commontheme/res/values-fi/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-fi/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Videokuva poissa käytöstä</string>
   <string name="incall_content_description_swap_video">Vaihda videota</string>
   <string name="incall_label_speaker">Kaiutin</string>
-  <string name="incall_label_audio">Ääni</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml b/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml
index 23b3adf..4e7651f 100644
--- a/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-fr-rCA/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Vidéo désactivée</string>
   <string name="incall_content_description_swap_video">Permuter la vidéo</string>
   <string name="incall_label_speaker">Haut-parleur</string>
-  <string name="incall_label_audio">Son</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-fr/strings.xml b/java/com/android/incallui/commontheme/res/values-fr/strings.xml
index 5cf106f..fdf00ad 100644
--- a/java/com/android/incallui/commontheme/res/values-fr/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-fr/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Vidéo désactivée</string>
   <string name="incall_content_description_swap_video">Permuter la vidéo</string>
   <string name="incall_label_speaker">Haut-parleur</string>
-  <string name="incall_label_audio">Audio</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-gl/strings.xml b/java/com/android/incallui/commontheme/res/values-gl/strings.xml
index ebb6dc3..9c7c905 100644
--- a/java/com/android/incallui/commontheme/res/values-gl/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-gl/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Vídeo desactivado</string>
   <string name="incall_content_description_swap_video">Alternar vídeo</string>
   <string name="incall_label_speaker">Altofalante</string>
-  <string name="incall_label_audio">Son</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-gu/strings.xml b/java/com/android/incallui/commontheme/res/values-gu/strings.xml
index 7097d10..6cdc42b 100644
--- a/java/com/android/incallui/commontheme/res/values-gu/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-gu/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">વિડિઓ બંધ</string>
   <string name="incall_content_description_swap_video">વિડિઓ સ્વેપ કરો</string>
   <string name="incall_label_speaker">સ્પીકર</string>
-  <string name="incall_label_audio">ધ્વનિ</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-hi/strings.xml b/java/com/android/incallui/commontheme/res/values-hi/strings.xml
index 5a344fc..a3926ed 100644
--- a/java/com/android/incallui/commontheme/res/values-hi/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-hi/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">वीडियो बंद</string>
   <string name="incall_content_description_swap_video">वीडियो स्वैप करें</string>
   <string name="incall_label_speaker">स्‍पीकर</string>
-  <string name="incall_label_audio">साउंड</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-hr/strings.xml b/java/com/android/incallui/commontheme/res/values-hr/strings.xml
index 96f1e16..9cc32e2 100644
--- a/java/com/android/incallui/commontheme/res/values-hr/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-hr/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Videopoziv isključen</string>
   <string name="incall_content_description_swap_video">Zamijeni videopoziv</string>
   <string name="incall_label_speaker">Zvučnik</string>
-  <string name="incall_label_audio">Zvuk</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-hu/strings.xml b/java/com/android/incallui/commontheme/res/values-hu/strings.xml
index 35ae2fe..f735907 100644
--- a/java/com/android/incallui/commontheme/res/values-hu/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-hu/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Videó ki</string>
   <string name="incall_content_description_swap_video">Videó cseréje</string>
   <string name="incall_label_speaker">Hangszóró</string>
-  <string name="incall_label_audio">Hang</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-hy/strings.xml b/java/com/android/incallui/commontheme/res/values-hy/strings.xml
index 7881c77..d5ed6fb 100644
--- a/java/com/android/incallui/commontheme/res/values-hy/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-hy/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Տեսախցիկն անջատած է</string>
   <string name="incall_content_description_swap_video">Փոխարկել խցիկը</string>
   <string name="incall_label_speaker">Բարձրախոս</string>
-  <string name="incall_label_audio">Ձայն</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-in/strings.xml b/java/com/android/incallui/commontheme/res/values-in/strings.xml
index b1bbab4..af45c17 100644
--- a/java/com/android/incallui/commontheme/res/values-in/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-in/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video nonaktif</string>
   <string name="incall_content_description_swap_video">Tukar Video</string>
   <string name="incall_label_speaker">Speaker</string>
-  <string name="incall_label_audio">Suara</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-is/strings.xml b/java/com/android/incallui/commontheme/res/values-is/strings.xml
index 736b79e..7651138 100644
--- a/java/com/android/incallui/commontheme/res/values-is/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-is/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Slökkva á mynd</string>
   <string name="incall_content_description_swap_video">Skipta um mynd</string>
   <string name="incall_label_speaker">Hátalari</string>
-  <string name="incall_label_audio">Hljóð</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-it/strings.xml b/java/com/android/incallui/commontheme/res/values-it/strings.xml
index 3fd31bd..00782c6 100644
--- a/java/com/android/incallui/commontheme/res/values-it/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-it/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video non attivo</string>
   <string name="incall_content_description_swap_video">Scambia video</string>
   <string name="incall_label_speaker">Altoparlante</string>
-  <string name="incall_label_audio">Suono</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-iw/strings.xml b/java/com/android/incallui/commontheme/res/values-iw/strings.xml
index b18cba0..94f09bb 100644
--- a/java/com/android/incallui/commontheme/res/values-iw/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-iw/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">הווידאו מושבת</string>
   <string name="incall_content_description_swap_video">החלף וידאו</string>
   <string name="incall_label_speaker">רמקול</string>
-  <string name="incall_label_audio">קול</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ja/strings.xml b/java/com/android/incallui/commontheme/res/values-ja/strings.xml
index d2b548f..6615bf4 100644
--- a/java/com/android/incallui/commontheme/res/values-ja/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ja/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">ビデオが OFF になっています</string>
   <string name="incall_content_description_swap_video">ビデオを切り替える</string>
   <string name="incall_label_speaker">スピーカー</string>
-  <string name="incall_label_audio">音声</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ka/strings.xml b/java/com/android/incallui/commontheme/res/values-ka/strings.xml
index 4be15eb..776f0cb 100644
--- a/java/com/android/incallui/commontheme/res/values-ka/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ka/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">ვიდეო გამორთულია</string>
   <string name="incall_content_description_swap_video">ვიდეოს შენაცვლება</string>
   <string name="incall_label_speaker">სპიკერი</string>
-  <string name="incall_label_audio">ხმა</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-kk/strings.xml b/java/com/android/incallui/commontheme/res/values-kk/strings.xml
index efd2423..d49146b 100644
--- a/java/com/android/incallui/commontheme/res/values-kk/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-kk/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Бейне өшірулі</string>
   <string name="incall_content_description_swap_video">Бейнені ауыстыру</string>
   <string name="incall_label_speaker">Динамик</string>
-  <string name="incall_label_audio">Дыбыс</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-km/strings.xml b/java/com/android/incallui/commontheme/res/values-km/strings.xml
index f2d27df..219a077 100644
--- a/java/com/android/incallui/commontheme/res/values-km/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-km/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">បិទ​វីដេអូ</string>
   <string name="incall_content_description_swap_video">ប្ដូរ​វីដេអូ</string>
   <string name="incall_label_speaker">ឧបករណ៍​បំពង​សំឡេង</string>
-  <string name="incall_label_audio">សំឡេង</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-kn/strings.xml b/java/com/android/incallui/commontheme/res/values-kn/strings.xml
index 2b8829c..fcb9ec8 100644
--- a/java/com/android/incallui/commontheme/res/values-kn/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-kn/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">ವೀಡಿಯೊ ಆಫ್</string>
   <string name="incall_content_description_swap_video">ವೀಡಿಯೊ ಬದಲಾಯಿಸಿ</string>
   <string name="incall_label_speaker">ಸ್ಪೀಕರ್‌</string>
-  <string name="incall_label_audio">ಶಬ್ದ</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ko/strings.xml b/java/com/android/incallui/commontheme/res/values-ko/strings.xml
index 2cc08c1..d42dc9a 100644
--- a/java/com/android/incallui/commontheme/res/values-ko/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ko/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">동영상 꺼짐</string>
   <string name="incall_content_description_swap_video">동영상 전환</string>
   <string name="incall_label_speaker">스피커</string>
-  <string name="incall_label_audio">소리</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ky/strings.xml b/java/com/android/incallui/commontheme/res/values-ky/strings.xml
index db56525..d77cd8e 100644
--- a/java/com/android/incallui/commontheme/res/values-ky/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ky/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Видео өчүк</string>
   <string name="incall_content_description_swap_video">Видеону иштетүү/өчүрүү</string>
   <string name="incall_label_speaker">Катуу сүйлөткүч</string>
-  <string name="incall_label_audio">Добуш</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-lo/strings.xml b/java/com/android/incallui/commontheme/res/values-lo/strings.xml
index 1b41dbd..7e50515 100644
--- a/java/com/android/incallui/commontheme/res/values-lo/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-lo/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">ວິດີໂອປິດ</string>
   <string name="incall_content_description_swap_video">ສະຫຼັບວິດີໂອ</string>
   <string name="incall_label_speaker">ລຳໂພງ</string>
-  <string name="incall_label_audio">ສຽງ</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-lt/strings.xml b/java/com/android/incallui/commontheme/res/values-lt/strings.xml
index 7bd6862..00462ca 100644
--- a/java/com/android/incallui/commontheme/res/values-lt/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-lt/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Vaizdas išjungtas</string>
   <string name="incall_content_description_swap_video">Sukeisti vaizdą</string>
   <string name="incall_label_speaker">Garsiakalbis</string>
-  <string name="incall_label_audio">Garsas</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-lv/strings.xml b/java/com/android/incallui/commontheme/res/values-lv/strings.xml
index 56fd270..f247122 100644
--- a/java/com/android/incallui/commontheme/res/values-lv/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-lv/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video izslēgts</string>
   <string name="incall_content_description_swap_video">Mainīt video</string>
   <string name="incall_label_speaker">Skaļrunis</string>
-  <string name="incall_label_audio">Skaņa</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-mk/strings.xml b/java/com/android/incallui/commontheme/res/values-mk/strings.xml
index 04f528d..616ec33 100644
--- a/java/com/android/incallui/commontheme/res/values-mk/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-mk/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Видеото е исклучено</string>
   <string name="incall_content_description_swap_video">Заменете го видеото</string>
   <string name="incall_label_speaker">Звучник</string>
-  <string name="incall_label_audio">Звук</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ml/strings.xml b/java/com/android/incallui/commontheme/res/values-ml/strings.xml
index 11dac6b..8023e76 100644
--- a/java/com/android/incallui/commontheme/res/values-ml/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ml/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">വീഡിയോ ഓഫാണ്</string>
   <string name="incall_content_description_swap_video">വീഡിയോ സ്വാപ്പുചെയ്യുക</string>
   <string name="incall_label_speaker">സ്പീക്കർ</string>
-  <string name="incall_label_audio">ശബ്‌ദം</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-mn/strings.xml b/java/com/android/incallui/commontheme/res/values-mn/strings.xml
index 1378fa2..1cb706c 100644
--- a/java/com/android/incallui/commontheme/res/values-mn/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-mn/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Видео идэвхгүй</string>
   <string name="incall_content_description_swap_video">Видеог солих</string>
   <string name="incall_label_speaker">Чанга яригч</string>
-  <string name="incall_label_audio">Дуу</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-mr/strings.xml b/java/com/android/incallui/commontheme/res/values-mr/strings.xml
index abfe102..ba20ee6 100644
--- a/java/com/android/incallui/commontheme/res/values-mr/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-mr/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">व्हिडिओ बंद</string>
   <string name="incall_content_description_swap_video">व्हिडिओ बदला</string>
   <string name="incall_label_speaker">स्पीकर</string>
-  <string name="incall_label_audio">ध्वनी</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ms/strings.xml b/java/com/android/incallui/commontheme/res/values-ms/strings.xml
index 08301d0..5040bb1 100644
--- a/java/com/android/incallui/commontheme/res/values-ms/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ms/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video dimatikan</string>
   <string name="incall_content_description_swap_video">Silih video</string>
   <string name="incall_label_speaker">Pmbsr suara</string>
-  <string name="incall_label_audio">Bunyi</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-my/strings.xml b/java/com/android/incallui/commontheme/res/values-my/strings.xml
index dce79ef..6fc6d1b 100644
--- a/java/com/android/incallui/commontheme/res/values-my/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-my/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">ဗီဒီယိုပိတ်ထားသည်</string>
   <string name="incall_content_description_swap_video">ဗီဒီယိုဖလှယ်ရန်</string>
   <string name="incall_label_speaker">စပီကာ</string>
-  <string name="incall_label_audio">အသံ</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-nb/strings.xml b/java/com/android/incallui/commontheme/res/values-nb/strings.xml
index 3cb069d..f9b8b8b 100644
--- a/java/com/android/incallui/commontheme/res/values-nb/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-nb/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video av</string>
   <string name="incall_content_description_swap_video">Bytt video</string>
   <string name="incall_label_speaker">Høyttaler</string>
-  <string name="incall_label_audio">Lyd</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ne/strings.xml b/java/com/android/incallui/commontheme/res/values-ne/strings.xml
index 02cb1c3..1e19036 100644
--- a/java/com/android/incallui/commontheme/res/values-ne/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ne/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">निष्क्रिय भिडियो</string>
   <string name="incall_content_description_swap_video">भिडियो साट्नुहोस्</string>
   <string name="incall_label_speaker">स्पिकर</string>
-  <string name="incall_label_audio">आवाज</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-night/colors.xml b/java/com/android/incallui/commontheme/res/values-night/colors.xml
new file mode 100644
index 0000000..c3f7228
--- /dev/null
+++ b/java/com/android/incallui/commontheme/res/values-night/colors.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="incall_button_background_color">@android:color/system_neutral1_50</color>
+    <color name="incall_end_call_icon_color">@android:color/black</color>
+</resources>
diff --git a/java/com/android/incallui/commontheme/res/values-nl/strings.xml b/java/com/android/incallui/commontheme/res/values-nl/strings.xml
index 377b97a..187b70e 100644
--- a/java/com/android/incallui/commontheme/res/values-nl/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-nl/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video uit</string>
   <string name="incall_content_description_swap_video">Video wisselen</string>
   <string name="incall_label_speaker">Luidspreker</string>
-  <string name="incall_label_audio">Geluid</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-no/strings.xml b/java/com/android/incallui/commontheme/res/values-no/strings.xml
index 3cb069d..f9b8b8b 100644
--- a/java/com/android/incallui/commontheme/res/values-no/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-no/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video av</string>
   <string name="incall_content_description_swap_video">Bytt video</string>
   <string name="incall_label_speaker">Høyttaler</string>
-  <string name="incall_label_audio">Lyd</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-pa/strings.xml b/java/com/android/incallui/commontheme/res/values-pa/strings.xml
index 37c1f5f..1f66a5d 100644
--- a/java/com/android/incallui/commontheme/res/values-pa/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-pa/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">ਵੀਡੀਓ ਬੰਦ</string>
   <string name="incall_content_description_swap_video">ਵੀਡੀਓ ਦੀ ਅਦਲਾ ਬਦਲੀ ਕਰੋ</string>
   <string name="incall_label_speaker">ਸਪੀਕਰ</string>
-  <string name="incall_label_audio">ਧੁਨੀ</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-pl/strings.xml b/java/com/android/incallui/commontheme/res/values-pl/strings.xml
index 6842fcd..876f5d0 100644
--- a/java/com/android/incallui/commontheme/res/values-pl/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-pl/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Wideo wyłączone</string>
   <string name="incall_content_description_swap_video">Przełącz wideo</string>
   <string name="incall_label_speaker">Głośnik</string>
-  <string name="incall_label_audio">Dźwięk</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml b/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml
index 1317763..cf636c6 100644
--- a/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-pt-rBR/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Vídeo desativado</string>
   <string name="incall_content_description_swap_video">Trocar vídeo</string>
   <string name="incall_label_speaker">Alto-falante</string>
-  <string name="incall_label_audio">Som</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml b/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml
index 43d1218..47b2cfd 100644
--- a/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-pt-rPT/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Vídeo desativado</string>
   <string name="incall_content_description_swap_video">Alternar vídeo</string>
   <string name="incall_label_speaker">Altifalante</string>
-  <string name="incall_label_audio">Som</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-pt/strings.xml b/java/com/android/incallui/commontheme/res/values-pt/strings.xml
index 1317763..cf636c6 100644
--- a/java/com/android/incallui/commontheme/res/values-pt/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-pt/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Vídeo desativado</string>
   <string name="incall_content_description_swap_video">Trocar vídeo</string>
   <string name="incall_label_speaker">Alto-falante</string>
-  <string name="incall_label_audio">Som</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ro/strings.xml b/java/com/android/incallui/commontheme/res/values-ro/strings.xml
index 61794f6..2854c39 100644
--- a/java/com/android/incallui/commontheme/res/values-ro/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ro/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Imaginea video este dezactivată</string>
   <string name="incall_content_description_swap_video">Schimbați imaginea video</string>
   <string name="incall_label_speaker">Difuzor</string>
-  <string name="incall_label_audio">Sunet</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ru/strings.xml b/java/com/android/incallui/commontheme/res/values-ru/strings.xml
index 9d43140..401075c 100644
--- a/java/com/android/incallui/commontheme/res/values-ru/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ru/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Камера выключена</string>
   <string name="incall_content_description_swap_video">Включить/выключить камеру</string>
   <string name="incall_label_speaker">Динамик</string>
-  <string name="incall_label_audio">Звук</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-si/strings.xml b/java/com/android/incallui/commontheme/res/values-si/strings.xml
index fb95fb5..01c1a97 100644
--- a/java/com/android/incallui/commontheme/res/values-si/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-si/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">වීඩියෝව ක්‍රියාවිරහිතයි</string>
   <string name="incall_content_description_swap_video">වීඩියෝව මාරු කරන්න</string>
   <string name="incall_label_speaker">ස්පීකරය</string>
-  <string name="incall_label_audio">හඬ</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-sk/strings.xml b/java/com/android/incallui/commontheme/res/values-sk/strings.xml
index 6d49fcc..f7a02aa 100644
--- a/java/com/android/incallui/commontheme/res/values-sk/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-sk/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video je vypnuté</string>
   <string name="incall_content_description_swap_video">Zameniť video</string>
   <string name="incall_label_speaker">Reproduktor</string>
-  <string name="incall_label_audio">Zvuk</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-sl/strings.xml b/java/com/android/incallui/commontheme/res/values-sl/strings.xml
index d61f6a4..88f9420 100644
--- a/java/com/android/incallui/commontheme/res/values-sl/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-sl/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Izklopi video</string>
   <string name="incall_content_description_swap_video">Zamenjaj video</string>
   <string name="incall_label_speaker">Zvočnik</string>
-  <string name="incall_label_audio">Zvok</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-sq/strings.xml b/java/com/android/incallui/commontheme/res/values-sq/strings.xml
index 6b0f4aa..720c7e5 100644
--- a/java/com/android/incallui/commontheme/res/values-sq/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-sq/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Videoja joaktive</string>
   <string name="incall_content_description_swap_video">Shkëmbe video</string>
   <string name="incall_label_speaker">Altoparlanti</string>
-  <string name="incall_label_audio">Tingulli</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-sr/strings.xml b/java/com/android/incallui/commontheme/res/values-sr/strings.xml
index d2722d8..f1b076b 100644
--- a/java/com/android/incallui/commontheme/res/values-sr/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-sr/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Искључи видео</string>
   <string name="incall_content_description_swap_video">Замени видео</string>
   <string name="incall_label_speaker">Звучник</string>
-  <string name="incall_label_audio">Звук</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-sv/strings.xml b/java/com/android/incallui/commontheme/res/values-sv/strings.xml
index b06a88c..945623f 100644
--- a/java/com/android/incallui/commontheme/res/values-sv/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-sv/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video av</string>
   <string name="incall_content_description_swap_video">Byt video</string>
   <string name="incall_label_speaker">Högtalare</string>
-  <string name="incall_label_audio">Ljud</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-sw/strings.xml b/java/com/android/incallui/commontheme/res/values-sw/strings.xml
index 4ec4a9f..4755b75 100644
--- a/java/com/android/incallui/commontheme/res/values-sw/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-sw/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Zima video</string>
   <string name="incall_content_description_swap_video">Badilisha video</string>
   <string name="incall_label_speaker">Spika</string>
-  <string name="incall_label_audio">Sauti</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ta/strings.xml b/java/com/android/incallui/commontheme/res/values-ta/strings.xml
index 34a66fb..8b647c7 100644
--- a/java/com/android/incallui/commontheme/res/values-ta/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ta/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">வீடியோ முடக்கப்பட்டது</string>
   <string name="incall_content_description_swap_video">வீடியோவிற்கு மாற்றும்</string>
   <string name="incall_label_speaker">ஸ்பீக்கர்</string>
-  <string name="incall_label_audio">ஒலி</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-te/strings.xml b/java/com/android/incallui/commontheme/res/values-te/strings.xml
index 0f63fd9..637f88f 100644
--- a/java/com/android/incallui/commontheme/res/values-te/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-te/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">వీడియో ఆఫ్‌లో ఉంది</string>
   <string name="incall_content_description_swap_video">వీడియోను మారుస్తుంది</string>
   <string name="incall_label_speaker">స్పీకర్</string>
-  <string name="incall_label_audio">ధ్వని</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-th/strings.xml b/java/com/android/incallui/commontheme/res/values-th/strings.xml
index c30f586..b7c940c 100644
--- a/java/com/android/incallui/commontheme/res/values-th/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-th/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">ปิดวิดีโอ</string>
   <string name="incall_content_description_swap_video">สลับวิดีโอ</string>
   <string name="incall_label_speaker">ลำโพง</string>
-  <string name="incall_label_audio">เสียง</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-tl/strings.xml b/java/com/android/incallui/commontheme/res/values-tl/strings.xml
index d91e26f..f200f97 100644
--- a/java/com/android/incallui/commontheme/res/values-tl/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-tl/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Naka-off ang video</string>
   <string name="incall_content_description_swap_video">Pagpalitin ang video</string>
   <string name="incall_label_speaker">Speaker</string>
-  <string name="incall_label_audio">Tunog</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-tr/strings.xml b/java/com/android/incallui/commontheme/res/values-tr/strings.xml
index ee65ed0..077f5cc 100644
--- a/java/com/android/incallui/commontheme/res/values-tr/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-tr/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video kapalı</string>
   <string name="incall_content_description_swap_video">Videoyu değiştirin</string>
   <string name="incall_label_speaker">Hoparlör</string>
-  <string name="incall_label_audio">Ses</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-uk/strings.xml b/java/com/android/incallui/commontheme/res/values-uk/strings.xml
index 3335750..bd55324 100644
--- a/java/com/android/incallui/commontheme/res/values-uk/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-uk/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Відео вимкнено</string>
   <string name="incall_content_description_swap_video">Поміняти відео</string>
   <string name="incall_label_speaker">Динамік</string>
-  <string name="incall_label_audio">Звук</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-ur/strings.xml b/java/com/android/incallui/commontheme/res/values-ur/strings.xml
index 9e0e817..2b5110c 100644
--- a/java/com/android/incallui/commontheme/res/values-ur/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-ur/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">ویڈیو آف ہے</string>
   <string name="incall_content_description_swap_video">ویڈیو کا تبادلہ کریں</string>
   <string name="incall_label_speaker">اسپیکر</string>
-  <string name="incall_label_audio">آواز</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-uz/strings.xml b/java/com/android/incallui/commontheme/res/values-uz/strings.xml
index bc47ad0..7ce1944 100644
--- a/java/com/android/incallui/commontheme/res/values-uz/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-uz/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Video o‘chiq</string>
   <string name="incall_content_description_swap_video">Videoni yoqish/ochirish</string>
   <string name="incall_label_speaker">Karnay</string>
-  <string name="incall_label_audio">Tovush</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-vi/strings.xml b/java/com/android/incallui/commontheme/res/values-vi/strings.xml
index 4969339..a810462 100644
--- a/java/com/android/incallui/commontheme/res/values-vi/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-vi/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Tắt video</string>
   <string name="incall_content_description_swap_video">Hoán đổi video</string>
   <string name="incall_label_speaker">Loa</string>
-  <string name="incall_label_audio">Âm báo</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-w260dp-h520dp/dimens.xml b/java/com/android/incallui/commontheme/res/values-w260dp-h520dp/dimens.xml
index e139059..830c87c 100644
--- a/java/com/android/incallui/commontheme/res/values-w260dp-h520dp/dimens.xml
+++ b/java/com/android/incallui/commontheme/res/values-w260dp-h520dp/dimens.xml
@@ -17,5 +17,4 @@
 
 <resources>
   <dimen name="incall_end_call_button_size">64dp</dimen>
-  <drawable name="incall_end_call_icon">@drawable/quantum_ic_call_end_white_36</drawable>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-w520dp-h260dp-land/dimens.xml b/java/com/android/incallui/commontheme/res/values-w520dp-h260dp-land/dimens.xml
index e139059..830c87c 100644
--- a/java/com/android/incallui/commontheme/res/values-w520dp-h260dp-land/dimens.xml
+++ b/java/com/android/incallui/commontheme/res/values-w520dp-h260dp-land/dimens.xml
@@ -17,5 +17,4 @@
 
 <resources>
   <dimen name="incall_end_call_button_size">64dp</dimen>
-  <drawable name="incall_end_call_icon">@drawable/quantum_ic_call_end_white_36</drawable>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml b/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml
index 56d7de2..cb5da2f 100644
--- a/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-zh-rCN/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">视频已关闭</string>
   <string name="incall_content_description_swap_video">切换视频</string>
   <string name="incall_label_speaker">免提</string>
-  <string name="incall_label_audio">音频路径</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml b/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml
index c19c99b..f8b25ef 100644
--- a/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-zh-rHK/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">視像已關閉</string>
   <string name="incall_content_description_swap_video">切換視像</string>
   <string name="incall_label_speaker">喇叭</string>
-  <string name="incall_label_audio">音效</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml b/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml
index 6d7ee6d..3f34148 100644
--- a/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-zh-rTW/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">關閉視訊畫面</string>
   <string name="incall_content_description_swap_video">切換視訊畫面</string>
   <string name="incall_label_speaker">擴音</string>
-  <string name="incall_label_audio">音訊</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values-zu/strings.xml b/java/com/android/incallui/commontheme/res/values-zu/strings.xml
index d8fee2a..20e8432 100644
--- a/java/com/android/incallui/commontheme/res/values-zu/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values-zu/strings.xml
@@ -16,5 +16,4 @@
   <string name="incall_content_description_video_off">Ividiyo ivaliwe</string>
   <string name="incall_content_description_swap_video">Shintsha ividiyo</string>
   <string name="incall_label_speaker">Isipikha</string>
-  <string name="incall_label_audio">Umsindo</string>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values/colors.xml b/java/com/android/incallui/commontheme/res/values/colors.xml
index 50b0617..3c328b6 100644
--- a/java/com/android/incallui/commontheme/res/values/colors.xml
+++ b/java/com/android/incallui/commontheme/res/values/colors.xml
@@ -21,4 +21,7 @@
 
   <!-- Background color for spam. This color must match one of background_colors_dark in call UI. -->
   <color name="incall_call_spam_background_color">@color/blocked_contact_background</color>
+
+  <color name="incall_button_background_color">@android:color/system_neutral1_50</color>
+  <color name="incall_end_call_icon_color">@android:color/white</color>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values/dimens.xml b/java/com/android/incallui/commontheme/res/values/dimens.xml
index 649ba2c..d5d429f 100644
--- a/java/com/android/incallui/commontheme/res/values/dimens.xml
+++ b/java/com/android/incallui/commontheme/res/values/dimens.xml
@@ -18,5 +18,4 @@
 <resources>
   <dimen name="incall_end_call_button_size">48dp</dimen>
   <dimen name="incall_call_button_elevation">8dp</dimen>
-  <drawable name="incall_end_call_icon">@drawable/quantum_ic_call_end_white_24</drawable>
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values/strings.xml b/java/com/android/incallui/commontheme/res/values/strings.xml
index f366a86..78afd4f 100644
--- a/java/com/android/incallui/commontheme/res/values/strings.xml
+++ b/java/com/android/incallui/commontheme/res/values/strings.xml
@@ -54,6 +54,5 @@
   <string name="incall_label_speaker">Speaker</string>
   <!-- Button shown during a phone to switch the audio route.
      [CHAR LIMIT=12] -->
-  <string name="incall_label_audio">Sound</string>
 
 </resources>
diff --git a/java/com/android/incallui/commontheme/res/values/styles.xml b/java/com/android/incallui/commontheme/res/values/styles.xml
index 464eda5..41e7146 100644
--- a/java/com/android/incallui/commontheme/res/values/styles.xml
+++ b/java/com/android/incallui/commontheme/res/values/styles.xml
@@ -47,7 +47,8 @@
     <item name="android:layout_height">@dimen/incall_end_call_button_size</item>
     <item name="android:layout_width">@dimen/incall_end_call_button_size</item>
     <item name="android:padding">8dp</item>
-    <item name="android:src">@drawable/incall_end_call_icon</item>
+    <item name="android:src">@drawable/quantum_ic_call_end_vd_theme_36</item>
+    <item name="android:tint">@color/incall_end_call_icon_color</item>
     <item name="android:stateListAnimator">@animator/disabled_alpha</item>
   </style>
 
@@ -60,7 +61,7 @@
   </style>
 
   <style name="Answer.Button.Decline">
-    <item name="android:background">@drawable/answer_decline_background</item>
+    <item name="android:background">@drawable/incall_end_call_background</item>
   </style>
 
 </resources>
diff --git a/java/com/android/incallui/contactgrid/AndroidManifest.xml b/java/com/android/incallui/contactgrid/AndroidManifest.xml
deleted file mode 100644
index 5200105..0000000
--- a/java/com/android/incallui/contactgrid/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.incallui.contactgrid">
-</manifest>
diff --git a/java/com/android/incallui/contactgrid/BottomRow.java b/java/com/android/incallui/contactgrid/BottomRow.java
index 767d666..ab48bc3 100644
--- a/java/com/android/incallui/contactgrid/BottomRow.java
+++ b/java/com/android/incallui/contactgrid/BottomRow.java
@@ -17,8 +17,10 @@
 package com.android.incallui.contactgrid;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+
 import com.android.incallui.call.state.DialerCallState;
 import com.android.incallui.incall.protocol.PrimaryCallState;
 import com.android.incallui.incall.protocol.PrimaryInfo;
@@ -38,7 +40,8 @@
   /** Content of the bottom row. */
   public static class Info {
 
-    @Nullable public final CharSequence label;
+    @Nullable
+    public final CharSequence label;
     public final boolean isTimerVisible;
     public final boolean isWorkIconVisible;
     public final boolean isHdAttemptingIconVisible;
diff --git a/java/com/android/incallui/contactgrid/ContactGridManager.java b/java/com/android/incallui/contactgrid/ContactGridManager.java
index 189f6fe..27142c8 100644
--- a/java/com/android/incallui/contactgrid/ContactGridManager.java
+++ b/java/com/android/incallui/contactgrid/ContactGridManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,8 +21,6 @@
 import android.graphics.drawable.Animatable;
 import android.graphics.drawable.Drawable;
 import android.os.SystemClock;
-import android.support.annotation.Nullable;
-import android.support.v4.view.ViewCompat;
 import android.telephony.PhoneNumberUtils;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
@@ -33,17 +32,20 @@
 import android.widget.Space;
 import android.widget.TextView;
 import android.widget.ViewAnimator;
+
+import androidx.annotation.Nullable;
+import androidx.core.view.ViewCompat;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.glidephotomanager.GlidePhotoManagerComponent;
 import com.android.dialer.glidephotomanager.PhotoInfo;
-import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.util.DrawableConverter;
 import com.android.dialer.widget.BidiTextView;
 import com.android.incallui.incall.protocol.ContactPhotoType;
 import com.android.incallui.incall.protocol.PrimaryCallState;
 import com.android.incallui.incall.protocol.PrimaryInfo;
+
 import java.util.List;
 
 /** Utility to manage the Contact grid */
@@ -93,11 +95,10 @@
 
   private PrimaryInfo primaryInfo = PrimaryInfo.empty();
   private PrimaryCallState primaryCallState = PrimaryCallState.empty();
-  private final LetterTileDrawable letterTile;
   private boolean isInMultiWindowMode;
 
-  public ContactGridManager(
-      View view, @Nullable ImageView avatarImageView, int avatarSize, boolean showAnonymousAvatar) {
+  public ContactGridManager(View view, @Nullable ImageView avatarImageView, int avatarSize,
+                            boolean showAnonymousAvatar) {
     context = view.getContext();
     Assert.isNotNull(context);
 
@@ -118,7 +119,6 @@
     topRowSpace = view.findViewById(R.id.contactgrid_top_row_space);
 
     contactGridLayout = (View) contactNameTextView.getParent();
-    letterTile = new LetterTileDrawable(context.getResources());
     isTimerStarted = false;
 
     deviceNumberTextView = view.findViewById(R.id.contactgrid_device_number_text);
@@ -302,13 +302,7 @@
       if (hideAvatar) {
         avatarImageView.setVisibility(View.GONE);
       } else if (avatarSize > 0 && updateAvatarVisibility()) {
-        if (ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean("enable_glide_photo", false)) {
-          loadPhotoWithGlide();
-        } else {
-          loadPhotoWithLegacy();
-        }
+        loadPhotoWithGlide();
       }
     }
   }
@@ -345,33 +339,6 @@
         .loadContactPhoto(avatarImageView, photoInfoBuilder.build());
   }
 
-  private void loadPhotoWithLegacy() {
-    boolean hasPhoto =
-        primaryInfo.photo() != null && primaryInfo.photoType() == ContactPhotoType.CONTACT;
-    if (hasPhoto) {
-      avatarImageView.setBackground(
-          DrawableConverter.getRoundedDrawable(
-              context, primaryInfo.photo(), avatarSize, avatarSize));
-    } else {
-      // Contact has a photo, don't render a letter tile.
-      letterTile.setCanonicalDialerLetterTileDetails(
-          primaryInfo.name(),
-          primaryInfo.contactInfoLookupKey(),
-          LetterTileDrawable.SHAPE_CIRCLE,
-          LetterTileDrawable.getContactTypeFromPrimitives(
-              primaryCallState.isVoiceMailNumber(),
-              primaryInfo.isSpam(),
-              primaryCallState.isBusinessNumber(),
-              primaryInfo.numberPresentation(),
-              primaryCallState.isConference()));
-      // By invalidating the avatarImageView we force a redraw of the letter tile.
-      // This is required to properly display the updated letter tile iconography based on the
-      // contact type, because the background drawable reference cached in the view, and the
-      // view is not aware of the mutations made to the background.
-      avatarImageView.invalidate();
-      avatarImageView.setBackground(letterTile);
-    }
-  }
   /**
    * Updates row 2. For example:
    *
@@ -467,8 +434,5 @@
             BidiFormatter.getInstance()
                 .unicodeWrap(primaryCallState.callbackNumber(), TextDirectionHeuristics.LTR)));
     deviceNumberTextView.setVisibility(View.VISIBLE);
-    if (primaryInfo.shouldShowLocation()) {
-      deviceNumberDivider.setVisibility(View.VISIBLE);
-    }
   }
 }
diff --git a/java/com/android/incallui/contactgrid/TopRow.java b/java/com/android/incallui/contactgrid/TopRow.java
index 213a3c6..51dca28 100644
--- a/java/com/android/incallui/contactgrid/TopRow.java
+++ b/java/com/android/incallui/contactgrid/TopRow.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,7 +19,6 @@
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.Nullable;
 import android.telephony.PhoneNumberUtils;
 import android.text.BidiFormatter;
 import android.text.Spannable;
@@ -27,6 +27,10 @@
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 import android.text.style.ForegroundColorSpan;
+
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.call.state.DialerCallState;
@@ -51,7 +55,8 @@
   /** Content of the top row. */
   public static class Info {
 
-    @Nullable public final CharSequence label;
+    @Nullable
+    public final CharSequence label;
     @Nullable public final Drawable icon;
     public final boolean labelIsSingleLine;
 
@@ -173,18 +178,10 @@
 
   private static CharSequence getLabelForIncomingVideo(
       Context context, @SessionModificationState int sessionModificationState, boolean isWifi) {
-    if (sessionModificationState == SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST) {
-      if (isWifi) {
-        return context.getString(R.string.contact_grid_incoming_wifi_video_call);
-      } else {
-        return context.getString(R.string.contact_grid_incoming_video_call);
-      }
+    if (isWifi) {
+      return context.getString(R.string.contact_grid_incoming_wifi_video_call);
     } else {
-      if (isWifi) {
-        return context.getString(R.string.contact_grid_incoming_wifi_video_call);
-      } else {
-        return context.getString(R.string.contact_grid_incoming_video_call);
-      }
+      return context.getString(R.string.contact_grid_incoming_video_call);
     }
   }
 
@@ -270,8 +267,7 @@
         return getLabelForIncomingVideo(context, state.sessionModificationState(), state.isWifi());
       case SessionModificationState.NO_REQUEST:
       default:
-        Assert.fail();
-        return null;
+        throw Assert.createIllegalStateFailException();
     }
   }
 
diff --git a/java/com/android/incallui/disconnectdialog/AndroidManifest.xml b/java/com/android/incallui/disconnectdialog/AndroidManifest.xml
deleted file mode 100644
index eec9807..0000000
--- a/java/com/android/incallui/disconnectdialog/AndroidManifest.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<manifest
-  package="com.android.incallui.disconnectdialog">
-</manifest>
diff --git a/java/com/android/incallui/disconnectdialog/DefaultErrorDialog.java b/java/com/android/incallui/disconnectdialog/DefaultErrorDialog.java
index 2ce2387..c033a2f 100644
--- a/java/com/android/incallui/disconnectdialog/DefaultErrorDialog.java
+++ b/java/com/android/incallui/disconnectdialog/DefaultErrorDialog.java
@@ -19,10 +19,12 @@
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
-import android.support.annotation.NonNull;
 import android.telecom.DisconnectCause;
 import android.text.TextUtils;
 import android.util.Pair;
+
+import androidx.annotation.NonNull;
+
 import com.android.incallui.call.DialerCall;
 
 /** Default error dialog shown to user after disconnect. */
diff --git a/java/com/android/incallui/disconnectdialog/DisconnectDialog.java b/java/com/android/incallui/disconnectdialog/DisconnectDialog.java
index 0b2b8cc..ac0ce12 100644
--- a/java/com/android/incallui/disconnectdialog/DisconnectDialog.java
+++ b/java/com/android/incallui/disconnectdialog/DisconnectDialog.java
@@ -18,9 +18,11 @@
 
 import android.app.Dialog;
 import android.content.Context;
-import android.support.annotation.NonNull;
 import android.telecom.DisconnectCause;
 import android.util.Pair;
+
+import androidx.annotation.NonNull;
+
 import com.android.incallui.call.DialerCall;
 
 /** Interface for disconnect dialog. */
diff --git a/java/com/android/incallui/disconnectdialog/DisconnectMessage.java b/java/com/android/incallui/disconnectdialog/DisconnectMessage.java
index 97d58f2..0a2beb0 100644
--- a/java/com/android/incallui/disconnectdialog/DisconnectMessage.java
+++ b/java/com/android/incallui/disconnectdialog/DisconnectMessage.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,7 +21,9 @@
 import android.content.Context;
 import android.telecom.DisconnectCause;
 import android.util.Pair;
+
 import com.android.incallui.call.DialerCall;
+
 import java.util.Locale;
 
 /**
diff --git a/java/com/android/incallui/disconnectdialog/EnableWifiCallingPrompt.java b/java/com/android/incallui/disconnectdialog/EnableWifiCallingPrompt.java
index a0ca8cd..ea5424d 100644
--- a/java/com/android/incallui/disconnectdialog/EnableWifiCallingPrompt.java
+++ b/java/com/android/incallui/disconnectdialog/EnableWifiCallingPrompt.java
@@ -21,9 +21,12 @@
 import android.content.Context;
 import android.content.DialogInterface.OnClickListener;
 import android.content.Intent;
-import android.support.annotation.NonNull;
 import android.telecom.DisconnectCause;
 import android.util.Pair;
+
+import androidx.annotation.NonNull;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.call.DialerCall;
diff --git a/java/com/android/incallui/disconnectdialog/VideoCallNotAvailablePrompt.java b/java/com/android/incallui/disconnectdialog/VideoCallNotAvailablePrompt.java
index 099450a..e9a740c 100644
--- a/java/com/android/incallui/disconnectdialog/VideoCallNotAvailablePrompt.java
+++ b/java/com/android/incallui/disconnectdialog/VideoCallNotAvailablePrompt.java
@@ -19,11 +19,13 @@
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
-import android.support.annotation.NonNull;
 import android.telecom.DisconnectCause;
 import android.telecom.PhoneAccountHandle;
 import android.util.Pair;
-import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
+
+import androidx.annotation.NonNull;
+
+import com.android.dialer.R;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.common.LogUtil;
@@ -36,7 +38,7 @@
   @Override
   public boolean shouldShow(DisconnectCause disconnectCause) {
     if (disconnectCause.getCode() == DisconnectCause.ERROR
-        && TelecomManagerCompat.REASON_IMS_ACCESS_BLOCKED.equals(disconnectCause.getReason())) {
+        && DisconnectCause.REASON_IMS_ACCESS_BLOCKED.equals(disconnectCause.getReason())) {
       LogUtil.i(
           "VideoCallNotAvailablePrompt.shouldShowPrompt",
           "showing prompt for disconnect cause: %s",
diff --git a/java/com/android/incallui/hold/AndroidManifest.xml b/java/com/android/incallui/hold/AndroidManifest.xml
deleted file mode 100644
index 2aedce9..0000000
--- a/java/com/android/incallui/hold/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.incallui.hold">
-</manifest>
diff --git a/java/com/android/incallui/hold/OnHoldFragment.java b/java/com/android/incallui/hold/OnHoldFragment.java
index bddb9ba..0304185 100644
--- a/java/com/android/incallui/hold/OnHoldFragment.java
+++ b/java/com/android/incallui/hold/OnHoldFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,9 +18,6 @@
 package com.android.incallui.hold;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.telephony.PhoneNumberUtils;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
@@ -28,8 +26,15 @@
 import android.view.View;
 import android.view.View.OnAttachStateChangeListener;
 import android.view.ViewGroup;
+import android.view.WindowInsets;
 import android.widget.ImageView;
 import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.incallui.incall.protocol.SecondaryInfo;
 
@@ -54,7 +59,7 @@
       LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) {
     final View view = layoutInflater.inflate(R.layout.incall_on_hold_banner, viewGroup, false);
 
-    SecondaryInfo secondaryInfo = getArguments().getParcelable(ARG_INFO);
+    SecondaryInfo secondaryInfo = getArguments().getParcelable(ARG_INFO, SecondaryInfo.class);
     secondaryInfo = Assert.isNotNull(secondaryInfo);
 
     ((TextView) view.findViewById(R.id.hold_contact_name))
@@ -67,13 +72,13 @@
     ((ImageView) view.findViewById(R.id.hold_phone_icon))
         .setImageResource(
             secondaryInfo.isVideoCall()
-                ? R.drawable.quantum_ic_videocam_white_18
+                ? R.drawable.quantum_ic_videocam_vd_white_24
                 : R.drawable.quantum_ic_phone_paused_vd_theme_24);
     view.addOnAttachStateChangeListener(
         new OnAttachStateChangeListener() {
           @Override
           public void onViewAttachedToWindow(View v) {
-            topInset = v.getRootWindowInsets().getSystemWindowInsetTop();
+            topInset = v.getRootWindowInsets().getInsets(WindowInsets.Type.systemBars()).top;
             applyInset();
           }
 
diff --git a/java/com/android/incallui/incall/impl/AndroidManifest.xml b/java/com/android/incallui/incall/impl/AndroidManifest.xml
deleted file mode 100644
index 3d64650..0000000
--- a/java/com/android/incallui/incall/impl/AndroidManifest.xml
+++ /dev/null
@@ -1 +0,0 @@
-<manifest package="com.android.incallui.incall.impl"/>
diff --git a/java/com/android/incallui/incall/impl/ButtonChooser.java b/java/com/android/incallui/incall/impl/ButtonChooser.java
index 095a8be..d27bca7 100644
--- a/java/com/android/incallui/incall/impl/ButtonChooser.java
+++ b/java/com/android/incallui/incall/impl/ButtonChooser.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,14 +17,17 @@
 
 package com.android.incallui.incall.impl;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.incallui.incall.impl.MappedButtonConfig.MappingInfo;
 import com.android.incallui.incall.protocol.InCallButtonIds;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
+
 import javax.annotation.concurrent.Immutable;
 
 /**
@@ -82,7 +86,7 @@
     for (int i = 0; i < configuredSlots.size() && placedButtons.size() < numUiButtons; ++i) {
       int slotNumber = configuredSlots.get(i);
       List<Integer> potentialButtons = config.getButtonsForSlot(slotNumber);
-      Collections.sort(potentialButtons, config.getSlotComparator());
+      potentialButtons.sort(config.getSlotComparator());
       for (int j = 0; j < potentialButtons.size(); ++j) {
         if (allowedButtons.contains(potentialButtons.get(j))) {
           placedButtons.add(potentialButtons.get(j));
@@ -99,7 +103,7 @@
       @NonNull Set<Integer> disabledButtons,
       @NonNull List<Integer> placedButtons,
       @NonNull List<Integer> conflicts) {
-    Collections.sort(conflicts, config.getConflictComparator());
+    conflicts.sort(config.getConflictComparator());
     for (Integer conflict : conflicts) {
       if (placedButtons.size() >= numUiButtons) {
         return;
diff --git a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
index 757d813..ae84ad8 100644
--- a/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
+++ b/java/com/android/incallui/incall/impl/ButtonChooserFactory.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,13 @@
 
 package com.android.incallui.incall.impl;
 
-import android.support.v4.util.ArrayMap;
 import android.telephony.TelephonyManager;
+
+import androidx.collection.ArrayMap;
+
 import com.android.incallui.incall.impl.MappedButtonConfig.MappingInfo;
 import com.android.incallui.incall.protocol.InCallButtonIds;
+
 import java.util.Map;
 
 /**
@@ -117,9 +121,10 @@
     mapping.put(InCallButtonIds.BUTTON_MUTE, MappingInfo.builder(0).build());
     mapping.put(InCallButtonIds.BUTTON_DIALPAD, MappingInfo.builder(1).build());
     mapping.put(InCallButtonIds.BUTTON_AUDIO, MappingInfo.builder(2).build());
-    mapping.put(InCallButtonIds.BUTTON_MERGE, MappingInfo.builder(3).setSlotOrder(5).build());
-    mapping.put(InCallButtonIds.BUTTON_ADD_CALL, MappingInfo.builder(3).build());
-    mapping.put(InCallButtonIds.BUTTON_SWAP_SIM, MappingInfo.builder(4).build());
+    mapping.put(InCallButtonIds.BUTTON_RECORD_CALL, MappingInfo.builder(3).build());
+    mapping.put(InCallButtonIds.BUTTON_MERGE, MappingInfo.builder(4).setSlotOrder(5).build());
+    mapping.put(InCallButtonIds.BUTTON_ADD_CALL, MappingInfo.builder(4).build());
+    mapping.put(InCallButtonIds.BUTTON_SWAP_SIM, MappingInfo.builder(5).build());
     return mapping;
   }
 }
diff --git a/java/com/android/incallui/incall/impl/ButtonController.java b/java/com/android/incallui/incall/impl/ButtonController.java
index 328ebbe..d77ec84 100644
--- a/java/com/android/incallui/incall/impl/ButtonController.java
+++ b/java/com/android/incallui/incall/impl/ButtonController.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,15 +17,20 @@
 
 package com.android.incallui.incall.impl;
 
+import android.annotation.SuppressLint;
+import android.content.res.Resources;
 import android.graphics.drawable.AnimationDrawable;
-import android.support.annotation.CallSuper;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.StringRes;
 import android.telecom.CallAudioState;
 import android.text.TextUtils;
+import android.text.format.DateUtils;
 import android.view.View;
 import android.view.View.OnClickListener;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.StringRes;
+
 import com.android.dialer.common.Assert;
 import com.android.incallui.incall.impl.CheckableLabeledButton.OnCheckedChangeListener;
 import com.android.incallui.incall.protocol.InCallButtonIds;
@@ -62,10 +68,12 @@
 
   abstract class CheckableButtonController implements ButtonController, OnCheckedChangeListener {
 
-    @NonNull protected final InCallButtonUiDelegate delegate;
+    @NonNull
+    protected final InCallButtonUiDelegate delegate;
     @InCallButtonIds protected final int buttonId;
     @StringRes protected final int checkedDescription;
-    @StringRes protected final int uncheckedDescription;
+    @StringRes
+    protected final int uncheckedDescription;
     protected boolean isEnabled;
     protected boolean isAllowed;
     protected boolean isChecked;
@@ -154,7 +162,8 @@
   abstract class SimpleCheckableButtonController extends CheckableButtonController {
 
     @StringRes private final int label;
-    @DrawableRes private final int icon;
+    @DrawableRes
+    private final int icon;
 
     protected SimpleCheckableButtonController(
         @NonNull InCallButtonUiDelegate delegate,
@@ -227,9 +236,10 @@
       }
     }
 
+    @SuppressLint("CheckResult")
     @Override
     public void setChecked(boolean isChecked) {
-      Assert.fail();
+      Assert.createAssertionFailException("Fail");
     }
 
     @Override
@@ -316,6 +326,7 @@
     private CharSequence contentDescription;
     private CharSequence isOnContentDescription;
     private CharSequence isOffContentDescription;
+    private CharSequence deviceName;
 
     public SpeakerButtonController(@NonNull InCallButtonUiDelegate delegate) {
       this.delegate = delegate;
@@ -374,6 +385,9 @@
         button.setContentDescription(
             (nonBluetoothMode && !isChecked) ? isOffContentDescription : isOnContentDescription);
         button.setShouldShowMoreIndicator(!nonBluetoothMode);
+        if (!TextUtils.isEmpty(deviceName)) {
+          button.setLabelText(deviceName);
+        }
       }
     }
 
@@ -385,6 +399,7 @@
       label = info.label;
       icon = info.icon;
       @StringRes int contentDescriptionResId = info.contentDescription;
+      deviceName = info.deviceName;
 
       contentDescription = delegate.getContext().getText(contentDescriptionResId);
       isOnContentDescription =
@@ -411,6 +426,95 @@
     }
   }
 
+  class CallRecordButtonController implements ButtonController, OnClickListener {
+    @NonNull private final InCallButtonUiDelegate delegate;
+    private boolean isEnabled;
+    private boolean isAllowed;
+    private boolean isChecked;
+    private long recordingSeconds;
+    private CheckableLabeledButton button;
+
+    public CallRecordButtonController(@NonNull InCallButtonUiDelegate delegate) {
+      this.delegate = delegate;
+    }
+
+    @Override
+    public boolean isEnabled() {
+      return isEnabled;
+    }
+
+    @Override
+    public void setEnabled(boolean isEnabled) {
+      this.isEnabled = isEnabled;
+      if (button != null) {
+        button.setEnabled(isEnabled);
+      }
+    }
+
+    @Override
+    public boolean isAllowed() {
+      return isAllowed;
+    }
+
+    @Override
+    public void setAllowed(boolean isAllowed) {
+      this.isAllowed = isAllowed;
+      if (button != null) {
+        button.setVisibility(isAllowed ? View.VISIBLE : View.INVISIBLE);
+      }
+    }
+
+    @Override
+    public void setChecked(boolean isChecked) {
+      this.isChecked = isChecked;
+      if (button != null) {
+        button.setChecked(isChecked);
+      }
+    }
+
+    @Override
+    public int getInCallButtonId() {
+      return InCallButtonIds.BUTTON_RECORD_CALL;
+    }
+
+    @Override
+    public void setButton(CheckableLabeledButton button) {
+      this.button = button;
+      if (button != null) {
+        final Resources res = button.getContext().getResources();
+        if (isChecked) {
+          CharSequence duration = DateUtils.formatElapsedTime(recordingSeconds);
+          button.setLabelText(res.getString(R.string.onscreenCallRecordingText, duration));
+        } else {
+          button.setLabelText(R.string.onscreenCallRecordText);
+        }
+        button.setEnabled(isEnabled);
+        button.setVisibility(isAllowed ? View.VISIBLE : View.INVISIBLE);
+        button.setChecked(isChecked);
+        button.setOnClickListener(this);
+        button.setIconDrawable(R.drawable.quantum_ic_record_white_36);
+        button.setContentDescription(res.getText(
+            isChecked ? R.string.onscreenStopCallRecordText : R.string.onscreenCallRecordText));
+        button.setShouldShowMoreIndicator(false);
+      }
+    }
+
+    public void setRecordingState(boolean recording) {
+      isChecked = recording;
+      setButton(button);
+    }
+
+    public void setRecordingDuration(long durationMs) {
+      recordingSeconds = (durationMs + 500) / 1000;
+      setButton(button);
+    }
+
+    @Override
+    public void onClick(View v) {
+      delegate.callRecordClicked(!isChecked);
+    }
+  }
+
   class DialpadButtonController extends SimpleCheckableButtonController {
 
     public DialpadButtonController(@NonNull InCallButtonUiDelegate delegate) {
diff --git a/java/com/android/incallui/incall/impl/CheckableLabeledButton.java b/java/com/android/incallui/incall/impl/CheckableLabeledButton.java
index bfc2781..4cb8132 100644
--- a/java/com/android/incallui/incall/impl/CheckableLabeledButton.java
+++ b/java/com/android/incallui/incall/impl/CheckableLabeledButton.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,9 +26,6 @@
 import android.graphics.drawable.Drawable;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.support.annotation.ColorInt;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.StringRes;
 import android.text.TextUtils.TruncateAt;
 import android.util.AttributeSet;
 import android.view.Gravity;
@@ -37,6 +35,13 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import androidx.annotation.ColorInt;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.StringRes;
+import androidx.core.content.res.ResourcesCompat;
+
+import com.android.dialer.R;
+
 /** A button to show on the incall screen */
 public class CheckableLabeledButton extends LinearLayout implements Checkable {
 
@@ -46,7 +51,8 @@
   private boolean isChecked;
   private OnCheckedChangeListener onCheckedChangeListener;
   private ImageView iconView;
-  @DrawableRes private int iconResource = 0;
+  @DrawableRes
+  private int iconResource = 0;
   private TextView labelView;
   private Drawable background;
   private Drawable backgroundMore;
@@ -67,10 +73,10 @@
     CharSequence labelText;
     boolean enabled;
 
-    backgroundMore =
-        getResources().getDrawable(R.drawable.incall_button_background_more, context.getTheme());
-    background =
-        getResources().getDrawable(R.drawable.incall_button_background, context.getTheme());
+    backgroundMore = ResourcesCompat.getDrawable(getResources(),
+            R.drawable.incall_button_background_more, context.getTheme());
+    background = ResourcesCompat.getDrawable(getResources(),
+            R.drawable.incall_button_background, context.getTheme());
 
     TypedArray typedArray =
         context.obtainStyledAttributes(attrs, R.styleable.CheckableLabeledButton);
@@ -156,6 +162,10 @@
     labelView.setText(stringRes);
   }
 
+  public void setLabelText(CharSequence label) {
+    labelView.setText(label);
+  }
+
   /** Shows or hides a little down arrow to indicate that the button will pop up a menu. */
   public void setShouldShowMoreIndicator(boolean shouldShow) {
     iconView.setBackground(shouldShow ? backgroundMore : background);
diff --git a/java/com/android/incallui/incall/impl/InCallButtonGridFragment.java b/java/com/android/incallui/incall/impl/InCallButtonGridFragment.java
index a0eead1..1d0ebc8 100644
--- a/java/com/android/incallui/incall/impl/InCallButtonGridFragment.java
+++ b/java/com/android/incallui/incall/impl/InCallButtonGridFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,16 +18,19 @@
 package com.android.incallui.incall.impl;
 
 import android.os.Bundle;
-import android.support.annotation.ColorInt;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
 import android.util.ArraySet;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.incallui.incall.protocol.InCallButtonIds;
+
 import java.util.List;
 import java.util.Set;
 
@@ -36,7 +40,7 @@
   private static final int BUTTON_COUNT = 6;
   private static final int BUTTONS_PER_ROW = 3;
 
-  private CheckableLabeledButton[] buttons = new CheckableLabeledButton[BUTTON_COUNT];
+  private final CheckableLabeledButton[] buttons = new CheckableLabeledButton[BUTTON_COUNT];
   private OnButtonGridCreatedListener buttonGridListener;
 
   public static Fragment newInstance() {
@@ -128,12 +132,6 @@
     return numVisibleButtons;
   }
 
-  public void updateButtonColor(@ColorInt int color) {
-    for (CheckableLabeledButton button : buttons) {
-      button.setCheckedColor(color);
-    }
-  }
-
   /** Interface to let the listener know the status of the button grid. */
   public interface OnButtonGridCreatedListener {
     void onButtonGridCreated(InCallButtonGridFragment inCallButtonGridFragment);
diff --git a/java/com/android/incallui/incall/impl/InCallFragment.java b/java/com/android/incallui/incall/impl/InCallFragment.java
index 3062069..ed194f4 100644
--- a/java/com/android/incallui/incall/impl/InCallFragment.java
+++ b/java/com/android/incallui/incall/impl/InCallFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023-2024 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,19 +17,16 @@
 
 package com.android.incallui.incall.impl;
 
+import android.Manifest;
 import android.Manifest.permission;
 import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.graphics.Insets;
 import android.os.Bundle;
 import android.os.Handler;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.content.ContextCompat;
+import android.os.Looper;
 import android.telecom.CallAudioState;
 import android.telephony.TelephonyManager;
 import android.transition.TransitionManager;
@@ -38,22 +36,30 @@
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.view.Window;
+import android.view.WindowInsets;
 import android.view.accessibility.AccessibilityEvent;
 import android.widget.ImageView;
-import android.widget.RelativeLayout;
 import android.widget.Toast;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.multimedia.MultimediaData;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.android.dialer.widget.LockableViewPager;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment;
 import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter;
 import com.android.incallui.contactgrid.ContactGridManager;
 import com.android.incallui.hold.OnHoldFragment;
+import com.android.incallui.incall.impl.ButtonController.CallRecordButtonController;
 import com.android.incallui.incall.impl.ButtonController.SpeakerButtonController;
 import com.android.incallui.incall.impl.ButtonController.UpgradeToRttButtonController;
 import com.android.incallui.incall.impl.InCallButtonGridFragment.OnButtonGridCreatedListener;
@@ -69,6 +75,7 @@
 import com.android.incallui.incall.protocol.PrimaryCallState.ButtonState;
 import com.android.incallui.incall.protocol.PrimaryInfo;
 import com.android.incallui.incall.protocol.SecondaryInfo;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -80,7 +87,7 @@
         AudioRouteSelectorPresenter,
         OnButtonGridCreatedListener {
 
-  private List<ButtonController> buttonControllers = new ArrayList<>();
+  private final List<ButtonController> buttonControllers = new ArrayList<>();
   private View endCallButton;
   private InCallPaginator paginator;
   private LockableViewPager pager;
@@ -89,15 +96,37 @@
   private InCallScreenDelegate inCallScreenDelegate;
   private InCallButtonUiDelegate inCallButtonUiDelegate;
   private InCallButtonGridFragment inCallButtonGridFragment;
-  @Nullable private ButtonChooser buttonChooser;
+  @Nullable
+  private ButtonChooser buttonChooser;
   private SecondaryInfo savedSecondaryInfo;
   private int voiceNetworkType;
   private int phoneType;
   private boolean stateRestored;
+  private boolean userDeniedBluetooth;
+
+  private final ActivityResultLauncher<String[]> permissionLauncher = registerForActivityResult(
+          new ActivityResultContracts.RequestMultiplePermissions(),
+          grantResults -> {
+            boolean allGranted = grantResults.values().stream().allMatch(x -> x);
+            if (allGranted) {
+              inCallButtonUiDelegate.callRecordClicked(true);
+            }
+          });
+
+  private final ActivityResultLauncher<String[]> bluetoothPermissionLauncher =
+          registerForActivityResult(
+                  new ActivityResultContracts.RequestMultiplePermissions(),
+                  grantResults -> {
+                    boolean allGranted = grantResults.values().stream().allMatch(x -> x);
+                    inCallButtonUiDelegate.showAudioRouteSelector();
+                    if (!allGranted) {
+                      userDeniedBluetooth = true;
+                    }
+                  });
 
   // Add animation to educate users. If a call has enriched calling attachments then we'll
   // initially show the attachment page. After a delay seconds we'll animate to the button grid.
-  private final Handler handler = new Handler();
+  private final Handler handler = new Handler(Looper.getMainLooper());
   private final Runnable pagerRunnable =
       new Runnable() {
         @Override
@@ -117,7 +146,8 @@
         || id == InCallButtonIds.BUTTON_MERGE
         || id == InCallButtonIds.BUTTON_MANAGE_VOICE_CONFERENCE
         || id == InCallButtonIds.BUTTON_SWAP_SIM
-        || id == InCallButtonIds.BUTTON_UPGRADE_TO_RTT;
+        || id == InCallButtonIds.BUTTON_UPGRADE_TO_RTT
+        || id == InCallButtonIds.BUTTON_RECORD_CALL;
   }
 
   @Override
@@ -135,7 +165,6 @@
         FragmentUtils.getParent(this, InCallButtonUiDelegateFactory.class)
             .newInCallButtonUiDelegate();
     if (savedInstanceState != null) {
-      inCallButtonUiDelegate.onRestoreInstanceState(savedInstanceState);
       stateRestored = true;
     }
   }
@@ -150,9 +179,7 @@
     LogUtil.i("InCallFragment.onCreateView", null);
     getActivity().setTheme(R.style.Theme_InCallScreen);
     // Bypass to avoid StrictModeResourceMismatchViolation
-    final View view =
-        StrictModeUtils.bypass(
-            () -> layoutInflater.inflate(R.layout.frag_incall_voice, viewGroup, false));
+    final View view = layoutInflater.inflate(R.layout.frag_incall_voice, viewGroup, false);
     contactGridManager =
         new ContactGridManager(
             view,
@@ -189,8 +216,9 @@
           @Override
           public void onViewAttachedToWindow(View v) {
             View container = v.findViewById(R.id.incall_ui_container);
-            int topInset = v.getRootWindowInsets().getSystemWindowInsetTop();
-            int bottomInset = v.getRootWindowInsets().getSystemWindowInsetBottom();
+            Insets insets = v.getRootWindowInsets().getInsets(WindowInsets.Type.systemBars());
+            int topInset = insets.top;
+            int bottomInset = insets.bottom;
             if (topInset != container.getPaddingTop()) {
               TransitionManager.beginDelayedTransition(((ViewGroup) container.getParent()));
               container.setPadding(0, topInset, 0, bottomInset);
@@ -232,6 +260,7 @@
         new ButtonController.ManageConferenceButtonController(inCallScreenDelegate));
     buttonControllers.add(
         new ButtonController.SwitchToSecondaryButtonController(inCallScreenDelegate));
+    buttonControllers.add(new ButtonController.CallRecordButtonController(inCallButtonUiDelegate));
 
     inCallScreenDelegate.onInCallScreenDelegateInit(this);
     inCallScreenDelegate.onInCallScreenReady();
@@ -250,21 +279,13 @@
   }
 
   @Override
-  public void onSaveInstanceState(Bundle outState) {
-    super.onSaveInstanceState(outState);
-    inCallButtonUiDelegate.onSaveInstanceState(outState);
-  }
-
-  @Override
   public void onClick(View view) {
     if (view == endCallButton) {
       LogUtil.i("InCallFragment.onClick", "end call button clicked");
-      Logger.get(getContext())
-          .logImpression(DialerImpression.Type.IN_CALL_DIALPAD_HANG_UP_BUTTON_PRESSED);
       inCallScreenDelegate.onEndCallClicked();
     } else {
       LogUtil.e("InCallFragment.onClick", "unknown view: " + view);
-      Assert.fail();
+      Assert.createAssertionFailException("");
     }
   }
 
@@ -273,19 +294,6 @@
     LogUtil.i("InCallFragment.setPrimary", primaryInfo.toString());
     setAdapterMedia(primaryInfo.multimediaData(), primaryInfo.showInCallButtonGrid());
     contactGridManager.setPrimary(primaryInfo);
-
-    if (primaryInfo.shouldShowLocation()) {
-      // Hide the avatar to make room for location
-      contactGridManager.setAvatarHidden(true);
-
-      // Need to let the dialpad move up a little further when location info is being shown
-      View dialpadView = getView().findViewById(R.id.incall_dialpad_container);
-      ViewGroup.LayoutParams params = dialpadView.getLayoutParams();
-      if (params instanceof RelativeLayout.LayoutParams) {
-        ((RelativeLayout.LayoutParams) params).removeRule(RelativeLayout.BELOW);
-      }
-      dialpadView.setLayoutParams(params);
-    }
   }
 
   private void setAdapterMedia(MultimediaData multimediaData, boolean showInCallButtonGrid) {
@@ -420,10 +428,6 @@
         show);
     if (isSupportedButton(buttonId)) {
       getButtonController(buttonId).setAllowed(show);
-      if (buttonId == InCallButtonIds.BUTTON_UPGRADE_TO_VIDEO && show) {
-        Logger.get(getContext())
-            .logImpression(DialerImpression.Type.UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN);
-      }
     }
   }
 
@@ -467,6 +471,23 @@
   }
 
   @Override
+  public void setCallRecordingState(boolean isRecording) {
+    ((CallRecordButtonController) getButtonController(InCallButtonIds.BUTTON_RECORD_CALL))
+        .setRecordingState(isRecording);
+  }
+
+  @Override
+  public void setCallRecordingDuration(long durationMs) {
+    ((CallRecordButtonController) getButtonController(InCallButtonIds.BUTTON_RECORD_CALL))
+        .setRecordingDuration(durationMs);
+  }
+
+  @Override
+  public void requestCallRecordingPermissions(String[] permissions) {
+    permissionLauncher.launch(permissions);
+  }
+
+  @Override
   public void updateButtonStates() {
     // When the incall screen is ready, this method is called from #setSecondary, even though the
     // incall button ui is not ready yet. This method is called again once the incall button ui is
@@ -495,19 +516,28 @@
   }
 
   @Override
-  public void updateInCallButtonUiColors(@ColorInt int color) {
-    inCallButtonGridFragment.updateButtonColor(color);
-  }
-
-  @Override
   public Fragment getInCallButtonUiFragment() {
     return this;
   }
 
   @Override
   public void showAudioRouteSelector() {
-    AudioRouteSelectorDialogFragment.newInstance(inCallButtonUiDelegate.getCurrentAudioState())
-        .show(getChildFragmentManager(), null);
+    String[] permissions = new String[]{Manifest.permission.BLUETOOTH_CONNECT};
+    if (hasAllPermissions(permissions) || userDeniedBluetooth) {
+      AudioRouteSelectorDialogFragment.newInstance(inCallButtonUiDelegate.getCurrentAudioState())
+              .show(getChildFragmentManager(), null);
+    } else {
+      bluetoothPermissionLauncher.launch(permissions);
+    }
+  }
+
+  private boolean hasAllPermissions(String[] permissions) {
+    for (String p : permissions) {
+      if (requireContext().checkSelfPermission(p) != PackageManager.PERMISSION_GRANTED) {
+        return false;
+      }
+    }
+    return true;
   }
 
   @Override
@@ -526,7 +556,7 @@
         return buttonController;
       }
     }
-    Assert.fail();
+    Assert.createAssertionFailException("");
     return null;
   }
 
diff --git a/java/com/android/incallui/incall/impl/InCallPagerAdapter.java b/java/com/android/incallui/incall/impl/InCallPagerAdapter.java
index ead3534..dc62478 100644
--- a/java/com/android/incallui/incall/impl/InCallPagerAdapter.java
+++ b/java/com/android/incallui/incall/impl/InCallPagerAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +17,12 @@
 
 package com.android.incallui.incall.impl;
 
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentStatePagerAdapter;
-import android.support.v4.view.PagerAdapter;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentStatePagerAdapter;
+import androidx.viewpager.widget.PagerAdapter;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.multimedia.MultimediaData;
 import com.android.incallui.sessiondata.MultimediaFragment;
@@ -28,7 +30,8 @@
 /** View pager adapter for in call ui. */
 public class InCallPagerAdapter extends FragmentStatePagerAdapter {
 
-  @Nullable private MultimediaData attachments;
+  @Nullable
+  private MultimediaData attachments;
   private final boolean showInCallButtonGrid;
 
   public InCallPagerAdapter(
diff --git a/java/com/android/incallui/incall/impl/InCallPaginator.java b/java/com/android/incallui/incall/impl/InCallPaginator.java
index 8ebbd76..2f6a35a 100644
--- a/java/com/android/incallui/incall/impl/InCallPaginator.java
+++ b/java/com/android/incallui/incall/impl/InCallPaginator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,18 +22,19 @@
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Path;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.view.ViewPager;
-import android.support.v4.view.ViewPager.OnPageChangeListener;
 import android.util.AttributeSet;
 import android.view.View;
+
+import androidx.viewpager.widget.ViewPager;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 
 /**
  * This is the view class for incall paginator visible when a user has EC data attached to their
  * call. It contains animation methods when the swipe gesture is performed.
  */
-public class InCallPaginator extends View implements OnPageChangeListener {
+public class InCallPaginator extends View implements ViewPager.OnPageChangeListener {
 
   private int dotRadius;
   private int dotsSeparation;
@@ -76,8 +78,7 @@
     transitionAnimator.addUpdateListener(animation -> invalidate());
   }
 
-  @VisibleForTesting
-  public void setProgress(float progress, boolean toFirstPage) {
+  private void setProgress(float progress, boolean toFirstPage) {
     this.progress = progress;
     this.toFirstPage = toFirstPage;
 
diff --git a/java/com/android/incallui/incall/impl/MappedButtonConfig.java b/java/com/android/incallui/incall/impl/MappedButtonConfig.java
index 67c4137..f313b00 100644
--- a/java/com/android/incallui/incall/impl/MappedButtonConfig.java
+++ b/java/com/android/incallui/incall/impl/MappedButtonConfig.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,13 +17,16 @@
 
 package com.android.incallui.incall.impl;
 
-import android.support.annotation.NonNull;
-import android.support.v4.util.ArrayMap;
 import android.util.ArraySet;
+
+import androidx.annotation.NonNull;
+import androidx.collection.ArrayMap;
+
 import com.android.dialer.common.Assert;
 import com.android.incallui.incall.protocol.InCallButtonIds;
 import com.android.incallui.incall.protocol.InCallButtonIdsExtension;
 import com.google.auto.value.AutoValue;
+
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -30,6 +34,7 @@
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
+
 import javax.annotation.concurrent.Immutable;
 
 /**
@@ -46,7 +51,8 @@
 @Immutable
 final class MappedButtonConfig {
 
-  @NonNull private final Map<Integer, MappingInfo> mapping;
+  @NonNull
+  private final Map<Integer, MappingInfo> mapping;
   @NonNull private final List<Integer> orderedMappedSlots;
 
   /**
@@ -106,16 +112,13 @@
    */
   @NonNull
   public Comparator<Integer> getSlotComparator() {
-    return new Comparator<Integer>() {
-      @Override
-      public int compare(Integer lhs, Integer rhs) {
-        MappingInfo lhsInfo = lookupMappingInfo(lhs);
-        MappingInfo rhsInfo = lookupMappingInfo(rhs);
-        if (lhsInfo.getSlot() != rhsInfo.getSlot()) {
-          throw new IllegalArgumentException("lhs and rhs don't go in the same slot");
-        }
-        return lhsInfo.getSlotOrder() - rhsInfo.getSlotOrder();
+    return (lhs, rhs) -> {
+      MappingInfo lhsInfo = lookupMappingInfo(lhs);
+      MappingInfo rhsInfo = lookupMappingInfo(rhs);
+      if (lhsInfo.getSlot() != rhsInfo.getSlot()) {
+        throw new IllegalArgumentException("lhs and rhs don't go in the same slot");
       }
+      return lhsInfo.getSlotOrder() - rhsInfo.getSlotOrder();
     };
   }
 
@@ -130,13 +133,10 @@
    */
   @NonNull
   public Comparator<Integer> getConflictComparator() {
-    return new Comparator<Integer>() {
-      @Override
-      public int compare(Integer lhs, Integer rhs) {
-        MappingInfo lhsInfo = lookupMappingInfo(lhs);
-        MappingInfo rhsInfo = lookupMappingInfo(rhs);
-        return lhsInfo.getConflictOrder() - rhsInfo.getConflictOrder();
-      }
+    return (lhs, rhs) -> {
+      MappingInfo lhsInfo = lookupMappingInfo(lhs);
+      MappingInfo rhsInfo = lookupMappingInfo(rhs);
+      return lhsInfo.getConflictOrder() - rhsInfo.getConflictOrder();
     };
   }
 
diff --git a/java/com/android/incallui/incall/impl/res/color/incall_button_icon.xml b/java/com/android/incallui/incall/impl/res/color/incall_button_icon.xml
index 000525f..a24ae70 100644
--- a/java/com/android/incallui/incall/impl/res/color/incall_button_icon.xml
+++ b/java/com/android/incallui/incall/impl/res/color/incall_button_icon.xml
@@ -16,6 +16,6 @@
   -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:color="?android:attr/colorPrimaryDark" android:state_checked="true"/>
+  <item android:color="@color/incall_button_icon_color" android:state_checked="true"/>
   <item android:color="?android:attr/textColorPrimary"/>
 </selector>
diff --git a/java/com/android/incallui/incall/impl/res/drawable-mdpi/ic_addcall_white.png b/java/com/android/incallui/incall/impl/res/drawable-mdpi/ic_addcall_white.png
deleted file mode 100644
index a608052..0000000
--- a/java/com/android/incallui/incall/impl/res/drawable-mdpi/ic_addcall_white.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable-xhdpi/ic_addcall_white.png b/java/com/android/incallui/incall/impl/res/drawable-xhdpi/ic_addcall_white.png
deleted file mode 100644
index d2a843c..0000000
--- a/java/com/android/incallui/incall/impl/res/drawable-xhdpi/ic_addcall_white.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/incall/impl/res/drawable/ic_addcall_white.xml b/java/com/android/incallui/incall/impl/res/drawable/ic_addcall_white.xml
new file mode 100644
index 0000000..8cb64e8
--- /dev/null
+++ b/java/com/android/incallui/incall/impl/res/drawable/ic_addcall_white.xml
@@ -0,0 +1,14 @@
+<!--
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M640,440L640,320L520,320L520,240L640,240L640,120L720,120L720,240L840,240L840,320L720,320L720,440L640,440ZM798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840ZM241,360L307,294Q307,294 307,294Q307,294 307,294L290,200Q290,200 290,200Q290,200 290,200L201,200Q201,200 201,200Q201,200 201,200Q206,241 215,281Q224,321 241,360ZM599,718Q638,735 678.5,745Q719,755 760,758Q760,758 760,758Q760,758 760,758L760,670Q760,670 760,670Q760,670 760,670L666,651Q666,651 666,651Q666,651 666,651L599,718ZM241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360Q241,360 241,360Q241,360 241,360L241,360ZM599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718L599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Q599,718 599,718Z"/>
+</vector>
diff --git a/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_checked.xml b/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_checked.xml
index 73c6947..b0f310b 100644
--- a/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_checked.xml
+++ b/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_checked.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="oval">
-  <solid android:color="@color/incall_button_white"/>
+  <solid android:color="@color/incall_button_background"/>
 </shape>
diff --git a/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_more.xml b/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_more.xml
index 8faa35b..10fe297 100644
--- a/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_more.xml
+++ b/java/com/android/incallui/incall/impl/res/drawable/incall_button_background_more.xml
@@ -34,12 +34,9 @@
     </ripple>
   </item>
 
-  <!-- This adds a little down arrow to indicate that the button will pop up a menu. Use an explicit
-    <bitmap> to avoid scaling the icon up to the full size of the button. -->
-  <item>
-    <bitmap
-      android:gravity="end"
-      android:tint="@color/incall_button_icon"
-      android:src="@drawable/quantum_ic_arrow_drop_down_white_18"/>
-  </item>
+  <!-- This adds a little down arrow to indicate that the button will pop up a menu. -->
+  <item
+    android:drawable="@drawable/incall_button_background_checked"
+    android:gravity="end"
+    android:tint="@color/incall_button_icon"/>
 </layer-list>
diff --git a/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml b/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml
index 9cc599d..45870f3 100644
--- a/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml
+++ b/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml
@@ -113,7 +113,7 @@
     <ImageButton
         android:id="@+id/incall_end_call"
         style="@style/Incall.Button.End"
-        android:layout_marginTop="16dp"
+        android:layout_marginTop="36dp"
         android:layout_marginBottom="36dp"
         android:layout_alignParentBottom="true"
         android:layout_centerHorizontal="true"
diff --git a/java/com/android/incallui/incall/impl/res/values-af/strings.xml b/java/com/android/incallui/incall/impl/res/values-af/strings.xml
index 1739c25..1c73ae7 100644
--- a/java/com/android/incallui/incall/impl/res/values-af/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-af/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Hou aan</string>
   <string name="incall_label_add_call">Voeg oproep by</string>
   <string name="incall_label_mute">Demp</string>
-  <string name="incall_label_end_call">Beëindig oproep</string>
   <string name="incall_label_dialpad">Sleutelblok</string>
   <string name="incall_talkback_speaker_on">, is aan</string>
   <string name="incall_talkback_speaker_off">, is af</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-am/strings.xml b/java/com/android/incallui/incall/impl/res/values-am/strings.xml
index b1b0bd3..78972a2 100644
--- a/java/com/android/incallui/incall/impl/res/values-am/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-am/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">ይዘህ ቆይ</string>
   <string name="incall_label_add_call">ጥሪ ያክሉ</string>
   <string name="incall_label_mute">ድምፀ-ከል አድርግ</string>
-  <string name="incall_label_end_call">ጥሪ ጨርስ</string>
   <string name="incall_label_dialpad">ቁልፍ ሰሌዳ</string>
   <string name="incall_talkback_speaker_on">፣ በርቷል</string>
   <string name="incall_talkback_speaker_off">፣ ጠፍቷል</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ar/strings.xml b/java/com/android/incallui/incall/impl/res/values-ar/strings.xml
index 3d513b7..45530b2 100644
--- a/java/com/android/incallui/incall/impl/res/values-ar/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ar/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">انتظار</string>
   <string name="incall_label_add_call">إضافة مكالمة</string>
   <string name="incall_label_mute">كتم</string>
-  <string name="incall_label_end_call">إنهاء المكالمة</string>
   <string name="incall_label_dialpad">لوحة مفاتيح</string>
   <string name="incall_talkback_speaker_on">، مشغل</string>
   <string name="incall_talkback_speaker_off">، غير مشغل</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-az/strings.xml b/java/com/android/incallui/incall/impl/res/values-az/strings.xml
index 7eb4d78..8f5fa6a 100644
--- a/java/com/android/incallui/incall/impl/res/values-az/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-az/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Xətdə axlayın</string>
   <string name="incall_label_add_call">Zəng əlavə edin</string>
   <string name="incall_label_mute">Susdurun</string>
-  <string name="incall_label_end_call">Zəngi bitirin</string>
   <string name="incall_label_dialpad">Klaviatura</string>
   <string name="incall_talkback_speaker_on">, aktivdir</string>
   <string name="incall_talkback_speaker_off">, deaktivdir</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml
index 2cbce6a..33fdf07 100644
--- a/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-b+sr+Latn/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Na čekanje</string>
   <string name="incall_label_add_call">Dodaj poziv</string>
   <string name="incall_label_mute">Isključi zvuk</string>
-  <string name="incall_label_end_call">Završi poziv</string>
   <string name="incall_label_dialpad">Tastatura</string>
   <string name="incall_talkback_speaker_on">, uključen</string>
   <string name="incall_talkback_speaker_off">, isključen</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-be/strings.xml b/java/com/android/incallui/incall/impl/res/values-be/strings.xml
index b629cb7..f5e0364 100644
--- a/java/com/android/incallui/incall/impl/res/values-be/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-be/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Утрымліваць</string>
   <string name="incall_label_add_call">Дадаць выклік</string>
   <string name="incall_label_mute">Адключыць мікрафон</string>
-  <string name="incall_label_end_call">Сконч. выкл.</string>
   <string name="incall_label_dialpad">Клавіятура</string>
   <string name="incall_talkback_speaker_on">, уключана</string>
   <string name="incall_talkback_speaker_off">, выключана</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-bg/strings.xml b/java/com/android/incallui/incall/impl/res/values-bg/strings.xml
index 7034850..40b34a4 100644
--- a/java/com/android/incallui/incall/impl/res/values-bg/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-bg/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Задържане</string>
   <string name="incall_label_add_call">Ново обажд.</string>
   <string name="incall_label_mute">Без звук</string>
-  <string name="incall_label_end_call">Затваряне</string>
   <string name="incall_label_dialpad">Клавиатура</string>
   <string name="incall_talkback_speaker_on">е включено</string>
   <string name="incall_talkback_speaker_off">е изключено</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-bn/strings.xml b/java/com/android/incallui/incall/impl/res/values-bn/strings.xml
index e51f506..09842bc 100644
--- a/java/com/android/incallui/incall/impl/res/values-bn/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-bn/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">ধরে থাকুন</string>
   <string name="incall_label_add_call">কল যোগ করুন</string>
   <string name="incall_label_mute">নিঃশব্দ করুন</string>
-  <string name="incall_label_end_call">কল শেষ করুন</string>
   <string name="incall_label_dialpad">কীপ্যাড</string>
   <string name="incall_talkback_speaker_on">, চালু রয়েছে</string>
   <string name="incall_talkback_speaker_off">, বন্ধ রয়েছে</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-bs/strings.xml b/java/com/android/incallui/incall/impl/res/values-bs/strings.xml
index e67d395..4cb7b90 100644
--- a/java/com/android/incallui/incall/impl/res/values-bs/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-bs/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Na čekanju</string>
   <string name="incall_label_add_call">Dodaj poziv</string>
   <string name="incall_label_mute">Isključi</string>
-  <string name="incall_label_end_call">Prekini poziv</string>
   <string name="incall_label_dialpad">Telefonska tastatura</string>
   <string name="incall_talkback_speaker_on">, uključen</string>
   <string name="incall_talkback_speaker_off">, isključen</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ca/strings.xml b/java/com/android/incallui/incall/impl/res/values-ca/strings.xml
index 1dc8a88..85d068f 100644
--- a/java/com/android/incallui/incall/impl/res/values-ca/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ca/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Posa en espera</string>
   <string name="incall_label_add_call">Afeg. trucada</string>
   <string name="incall_label_mute">Silencia</string>
-  <string name="incall_label_end_call">Penja</string>
   <string name="incall_label_dialpad">Teclat</string>
   <string name="incall_talkback_speaker_on">, activat</string>
   <string name="incall_talkback_speaker_off">, desactivat</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-cs/strings.xml b/java/com/android/incallui/incall/impl/res/values-cs/strings.xml
index 85c3964..ebedf00 100644
--- a/java/com/android/incallui/incall/impl/res/values-cs/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-cs/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Podržet</string>
   <string name="incall_label_add_call">Přidat hovor</string>
   <string name="incall_label_mute">Vyp. mikrof.</string>
-  <string name="incall_label_end_call">Zavěsit</string>
   <string name="incall_label_dialpad">Klávesnice</string>
   <string name="incall_talkback_speaker_on">– zapnuto</string>
   <string name="incall_talkback_speaker_off">– vypnuto</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-da/strings.xml b/java/com/android/incallui/incall/impl/res/values-da/strings.xml
index 873ffe7..028d21d 100644
--- a/java/com/android/incallui/incall/impl/res/values-da/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-da/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Parkér</string>
   <string name="incall_label_add_call">Tilføj opkald</string>
   <string name="incall_label_mute">Slå lyden fra</string>
-  <string name="incall_label_end_call">Læg på</string>
   <string name="incall_label_dialpad">Tastatur</string>
   <string name="incall_talkback_speaker_on">, er til</string>
   <string name="incall_talkback_speaker_off">, er fra</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-de/strings.xml b/java/com/android/incallui/incall/impl/res/values-de/strings.xml
index 797a1b2..2877852 100644
--- a/java/com/android/incallui/incall/impl/res/values-de/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-de/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Halten</string>
   <string name="incall_label_add_call">Hinzufügen</string>
   <string name="incall_label_mute">Stumm</string>
-  <string name="incall_label_end_call">Beenden</string>
   <string name="incall_label_dialpad">Wähltasten</string>
   <string name="incall_talkback_speaker_on">, ist an</string>
   <string name="incall_talkback_speaker_off">, ist aus</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-el/strings.xml b/java/com/android/incallui/incall/impl/res/values-el/strings.xml
index bc4f94f..5f7c065 100644
--- a/java/com/android/incallui/incall/impl/res/values-el/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-el/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Αναμονή</string>
   <string name="incall_label_add_call">Προσθ. κλήσ.</string>
   <string name="incall_label_mute">Σίγαση</string>
-  <string name="incall_label_end_call">Τερματισμός</string>
   <string name="incall_label_dialpad">Πληκτρολόγιο</string>
   <string name="incall_talkback_speaker_on">, ενεργό</string>
   <string name="incall_talkback_speaker_off">, ανενεργό</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml b/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml
index 7e2c667..7afb1de 100644
--- a/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-en-rAU/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Hold</string>
   <string name="incall_label_add_call">Add call</string>
   <string name="incall_label_mute">Mute</string>
-  <string name="incall_label_end_call">End call</string>
   <string name="incall_label_dialpad">Keypad</string>
   <string name="incall_talkback_speaker_on">, is on</string>
   <string name="incall_talkback_speaker_off">, is off</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml b/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml
index 7e2c667..7afb1de 100644
--- a/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-en-rGB/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Hold</string>
   <string name="incall_label_add_call">Add call</string>
   <string name="incall_label_mute">Mute</string>
-  <string name="incall_label_end_call">End call</string>
   <string name="incall_label_dialpad">Keypad</string>
   <string name="incall_talkback_speaker_on">, is on</string>
   <string name="incall_talkback_speaker_off">, is off</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml b/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml
index 7e2c667..7afb1de 100644
--- a/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-en-rIN/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Hold</string>
   <string name="incall_label_add_call">Add call</string>
   <string name="incall_label_mute">Mute</string>
-  <string name="incall_label_end_call">End call</string>
   <string name="incall_label_dialpad">Keypad</string>
   <string name="incall_talkback_speaker_on">, is on</string>
   <string name="incall_talkback_speaker_off">, is off</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml b/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml
index 52f4128..c7c006f 100644
--- a/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-es-rUS/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Retener</string>
   <string name="incall_label_add_call">Agregar llamada</string>
   <string name="incall_label_mute">Silenciar</string>
-  <string name="incall_label_end_call">Finalizar llamada</string>
   <string name="incall_label_dialpad">Teclado</string>
   <string name="incall_talkback_speaker_on">, activado</string>
   <string name="incall_talkback_speaker_off">, desactivado</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-es/strings.xml b/java/com/android/incallui/incall/impl/res/values-es/strings.xml
index ed2b5cb..145e686 100644
--- a/java/com/android/incallui/incall/impl/res/values-es/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-es/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Retener</string>
   <string name="incall_label_add_call">Añadir</string>
   <string name="incall_label_mute">Silenciar</string>
-  <string name="incall_label_end_call">Finalizar</string>
   <string name="incall_label_dialpad">Teclado</string>
   <string name="incall_talkback_speaker_on">, activado</string>
   <string name="incall_talkback_speaker_off">, desactivado</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-et/strings.xml b/java/com/android/incallui/incall/impl/res/values-et/strings.xml
index 9b2ab07..7494119 100644
--- a/java/com/android/incallui/incall/impl/res/values-et/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-et/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Ootele</string>
   <string name="incall_label_add_call">Lisa kõne</string>
   <string name="incall_label_mute">Vaigista</string>
-  <string name="incall_label_end_call">Lõpeta kõne</string>
   <string name="incall_label_dialpad">Klaviatuur</string>
   <string name="incall_talkback_speaker_on">, on sees</string>
   <string name="incall_talkback_speaker_off">, on väljas</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-eu/strings.xml b/java/com/android/incallui/incall/impl/res/values-eu/strings.xml
index 966a6e3..2c24c0c 100644
--- a/java/com/android/incallui/incall/impl/res/values-eu/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-eu/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Utzi zain</string>
   <string name="incall_label_add_call">Gehitu deia</string>
   <string name="incall_label_mute">Des. audioa</string>
-  <string name="incall_label_end_call">Amaitu deia</string>
   <string name="incall_label_dialpad">Teklatua</string>
   <string name="incall_talkback_speaker_on">, aktibatuta</string>
   <string name="incall_talkback_speaker_off">, desaktib.</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-fa/strings.xml b/java/com/android/incallui/incall/impl/res/values-fa/strings.xml
index f939926..8555ff3 100644
--- a/java/com/android/incallui/incall/impl/res/values-fa/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-fa/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">درحال انتظار</string>
   <string name="incall_label_add_call">افزودن تماس</string>
   <string name="incall_label_mute">بی‌صدا کردن</string>
-  <string name="incall_label_end_call">پایان تماس</string>
   <string name="incall_label_dialpad">صفحه کلید</string>
   <string name="incall_talkback_speaker_on">، فعال است</string>
   <string name="incall_talkback_speaker_off">، غیرفعال است</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-fi/strings.xml b/java/com/android/incallui/incall/impl/res/values-fi/strings.xml
index f08869d..8350250 100644
--- a/java/com/android/incallui/incall/impl/res/values-fi/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-fi/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Pitoon</string>
   <string name="incall_label_add_call">Lisää puhelu</string>
   <string name="incall_label_mute">Mykistä</string>
-  <string name="incall_label_end_call">Päätä puhelu</string>
   <string name="incall_label_dialpad">Näppäimistö</string>
   <string name="incall_talkback_speaker_on">, käytössä</string>
   <string name="incall_talkback_speaker_off">, ei käytössä</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml b/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml
index 39ca48e..9125904 100644
--- a/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-fr-rCA/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">En attente</string>
   <string name="incall_label_add_call">Autre appel</string>
   <string name="incall_label_mute">Couper son</string>
-  <string name="incall_label_end_call">Raccrocher</string>
   <string name="incall_label_dialpad">Clavier</string>
   <string name="incall_talkback_speaker_on">, activé</string>
   <string name="incall_talkback_speaker_off">, désactivé</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-fr/strings.xml b/java/com/android/incallui/incall/impl/res/values-fr/strings.xml
index 8fca0fe..99d4fe1 100644
--- a/java/com/android/incallui/incall/impl/res/values-fr/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-fr/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">En attente</string>
   <string name="incall_label_add_call">Autre appel</string>
   <string name="incall_label_mute">Couper micro</string>
-  <string name="incall_label_end_call">Raccrocher</string>
   <string name="incall_label_dialpad">Clavier</string>
   <string name="incall_talkback_speaker_on">, activé</string>
   <string name="incall_talkback_speaker_off">, désactivé</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-gl/strings.xml b/java/com/android/incallui/incall/impl/res/values-gl/strings.xml
index 519572b..3a003bc 100644
--- a/java/com/android/incallui/incall/impl/res/values-gl/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-gl/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">En espera</string>
   <string name="incall_label_add_call">Eng. chamada</string>
   <string name="incall_label_mute">Ignorar</string>
-  <string name="incall_label_end_call">Finalizar chamada</string>
   <string name="incall_label_dialpad">Teclado</string>
   <string name="incall_talkback_speaker_on">activado</string>
   <string name="incall_talkback_speaker_off">desactivado</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-gu/strings.xml b/java/com/android/incallui/incall/impl/res/values-gu/strings.xml
index 4299283..6610f12 100644
--- a/java/com/android/incallui/incall/impl/res/values-gu/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-gu/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">હોલ્ડ કરો</string>
   <string name="incall_label_add_call">કૉલ ઉમેરો</string>
   <string name="incall_label_mute">મ્યૂટ કરો</string>
-  <string name="incall_label_end_call">કૉલ સમાપ્ત કરો</string>
   <string name="incall_label_dialpad">કીપેડ</string>
   <string name="incall_talkback_speaker_on">, ચાલુ છે</string>
   <string name="incall_talkback_speaker_off">, બંધ છે</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-hi/strings.xml b/java/com/android/incallui/incall/impl/res/values-hi/strings.xml
index 9360c15..d3b0c10 100644
--- a/java/com/android/incallui/incall/impl/res/values-hi/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-hi/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">होल्ड करें</string>
   <string name="incall_label_add_call">कॉल जोड़ें</string>
   <string name="incall_label_mute">म्यूट करें</string>
-  <string name="incall_label_end_call">कॉल समाप्त करें</string>
   <string name="incall_label_dialpad">कीपैड</string>
   <string name="incall_talkback_speaker_on">, चालू है</string>
   <string name="incall_talkback_speaker_off">, बंद है</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-hr/strings.xml b/java/com/android/incallui/incall/impl/res/values-hr/strings.xml
index 2634c6a..445f6d3 100644
--- a/java/com/android/incallui/incall/impl/res/values-hr/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-hr/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Pauziraj</string>
   <string name="incall_label_add_call">Dodaj poziv</string>
   <string name="incall_label_mute">Isklj. zvuk</string>
-  <string name="incall_label_end_call">Prekini poziv</string>
   <string name="incall_label_dialpad">Tipkovnica</string>
   <string name="incall_talkback_speaker_on">, uključeno</string>
   <string name="incall_talkback_speaker_off">, isključeno</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-hu/strings.xml b/java/com/android/incallui/incall/impl/res/values-hu/strings.xml
index 609908f..94ed5ed 100644
--- a/java/com/android/incallui/incall/impl/res/values-hu/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-hu/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Várakoztatás</string>
   <string name="incall_label_add_call">Hívás felv.</string>
   <string name="incall_label_mute">Némítás</string>
-  <string name="incall_label_end_call">Hívás vége</string>
   <string name="incall_label_dialpad">Billentyűzet</string>
   <string name="incall_talkback_speaker_on">, be</string>
   <string name="incall_talkback_speaker_off">, ki</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-hy/strings.xml b/java/com/android/incallui/incall/impl/res/values-hy/strings.xml
index 479b543..899efdf 100644
--- a/java/com/android/incallui/incall/impl/res/values-hy/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-hy/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Պահել զանգը</string>
   <string name="incall_label_add_call">Ավելացնել զանգ</string>
   <string name="incall_label_mute">Անջատել</string>
-  <string name="incall_label_end_call">Ավարտել զանգը</string>
   <string name="incall_label_dialpad">Ստեղնաշար</string>
   <string name="incall_talkback_speaker_on">, միացած է</string>
   <string name="incall_talkback_speaker_off">, անջատած է</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-in/strings.xml b/java/com/android/incallui/incall/impl/res/values-in/strings.xml
index 321d22c..50dea9f 100644
--- a/java/com/android/incallui/incall/impl/res/values-in/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-in/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Tahan</string>
   <string name="incall_label_add_call">Tambahkan panggilan</string>
   <string name="incall_label_mute">Bisukan</string>
-  <string name="incall_label_end_call">Akhiri panggilan</string>
   <string name="incall_label_dialpad">Keypad</string>
   <string name="incall_talkback_speaker_on">, aktif</string>
   <string name="incall_talkback_speaker_off">, Nonaktif</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-is/strings.xml b/java/com/android/incallui/incall/impl/res/values-is/strings.xml
index a77795e..149926c 100644
--- a/java/com/android/incallui/incall/impl/res/values-is/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-is/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Setja í bið</string>
   <string name="incall_label_add_call">Bæta við</string>
   <string name="incall_label_mute">Hljóð af</string>
-  <string name="incall_label_end_call">Ljúka</string>
   <string name="incall_label_dialpad">Talnaborð</string>
   <string name="incall_talkback_speaker_on">, kveikt</string>
   <string name="incall_talkback_speaker_off">, slökkt</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-it/strings.xml b/java/com/android/incallui/incall/impl/res/values-it/strings.xml
index 0957bd4..cc035d4 100644
--- a/java/com/android/incallui/incall/impl/res/values-it/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-it/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">In attesa</string>
   <string name="incall_label_add_call">Aggiungi chiamata</string>
   <string name="incall_label_mute">Disattiva</string>
-  <string name="incall_label_end_call">Termina chiamata</string>
   <string name="incall_label_dialpad">Tastierino</string>
   <string name="incall_talkback_speaker_on">, attivo</string>
   <string name="incall_talkback_speaker_off">, non attivo</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-iw/strings.xml b/java/com/android/incallui/incall/impl/res/values-iw/strings.xml
index db702ef..7764639 100644
--- a/java/com/android/incallui/incall/impl/res/values-iw/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-iw/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">המתנה</string>
   <string name="incall_label_add_call">הוסף שיחה</string>
   <string name="incall_label_mute">השתק</string>
-  <string name="incall_label_end_call">סיום השיחה</string>
   <string name="incall_label_dialpad">לוח חיוג</string>
   <string name="incall_talkback_speaker_on">, מופעל</string>
   <string name="incall_talkback_speaker_off">, מושבת</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ja/strings.xml b/java/com/android/incallui/incall/impl/res/values-ja/strings.xml
index 041a427..c495a26 100644
--- a/java/com/android/incallui/incall/impl/res/values-ja/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ja/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">保留</string>
   <string name="incall_label_add_call">通話を追加</string>
   <string name="incall_label_mute">ミュート</string>
-  <string name="incall_label_end_call">通話を終了</string>
   <string name="incall_label_dialpad">キーパッド</string>
   <string name="incall_talkback_speaker_on">がオンです</string>
   <string name="incall_talkback_speaker_off">がオフです</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ka/strings.xml b/java/com/android/incallui/incall/impl/res/values-ka/strings.xml
index 6d7e460..ced569d 100644
--- a/java/com/android/incallui/incall/impl/res/values-ka/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ka/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">შეყოვნება</string>
   <string name="incall_label_add_call">ზარის დამატ.</string>
   <string name="incall_label_mute">დადუმება</string>
-  <string name="incall_label_end_call">ზარის დასრ.</string>
   <string name="incall_label_dialpad">კლავიატურა</string>
   <string name="incall_talkback_speaker_on">, ჩართულია</string>
   <string name="incall_talkback_speaker_off">, გამორთულია</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-kk/strings.xml b/java/com/android/incallui/incall/impl/res/values-kk/strings.xml
index 3785e1c..78db16c 100644
--- a/java/com/android/incallui/incall/impl/res/values-kk/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-kk/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Күттіру</string>
   <string name="incall_label_add_call">Қоңырау қосу</string>
   <string name="incall_label_mute">Дыбысын өшіру</string>
-  <string name="incall_label_end_call">Қоңырауды аяқтау</string>
   <string name="incall_label_dialpad">Пернетақта</string>
   <string name="incall_talkback_speaker_on">, қосулы</string>
   <string name="incall_talkback_speaker_off">, өшірулі</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-km/strings.xml b/java/com/android/incallui/incall/impl/res/values-km/strings.xml
index 4c758c2..78be4f5 100644
--- a/java/com/android/incallui/incall/impl/res/values-km/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-km/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">រង់ចាំ</string>
   <string name="incall_label_add_call">បន្ថែម​ការ​ហៅ</string>
   <string name="incall_label_mute">បិទ​សំឡេង</string>
-  <string name="incall_label_end_call">បញ្ចប់​ការ​ហៅ</string>
   <string name="incall_label_dialpad">បន្ទះ​​ចុច​លេខ</string>
   <string name="incall_talkback_speaker_on">, បាន​បើក</string>
   <string name="incall_talkback_speaker_off">, បានបិទ</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-kn/strings.xml b/java/com/android/incallui/incall/impl/res/values-kn/strings.xml
index 7015655..4e25a3e 100644
--- a/java/com/android/incallui/incall/impl/res/values-kn/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-kn/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">ಹೋಲ್ಡ್‌‌ ಮಾಡು</string>
   <string name="incall_label_add_call">ಕರೆಯನ್ನು ಸೇರಿಸಿ</string>
   <string name="incall_label_mute">ಮ್ಯೂಟ್ ಮಾಡಿ</string>
-  <string name="incall_label_end_call">ಕರೆ ಅಂತ್ಯಗೊಳಿಸಿ</string>
   <string name="incall_label_dialpad">ಕೀಪ್ಯಾಡ್‌</string>
   <string name="incall_talkback_speaker_on">, ಆನ್ ಆಗಿದೆ</string>
   <string name="incall_talkback_speaker_off">, ಆಫ್ ಆಗಿದೆ</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ko/strings.xml b/java/com/android/incallui/incall/impl/res/values-ko/strings.xml
index c96909a..a19fb24 100644
--- a/java/com/android/incallui/incall/impl/res/values-ko/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ko/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">대기</string>
   <string name="incall_label_add_call">통화 추가</string>
   <string name="incall_label_mute">음소거</string>
-  <string name="incall_label_end_call">통화 종료</string>
   <string name="incall_label_dialpad">키패드</string>
   <string name="incall_talkback_speaker_on">, 켜짐</string>
   <string name="incall_talkback_speaker_off">, 꺼짐</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ky/strings.xml b/java/com/android/incallui/incall/impl/res/values-ky/strings.xml
index 281159a..a5f0120 100644
--- a/java/com/android/incallui/incall/impl/res/values-ky/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ky/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Күттүрүү</string>
   <string name="incall_label_add_call">Чалууну кошуу</string>
   <string name="incall_label_mute">Үнүн өчүрүү</string>
-  <string name="incall_label_end_call">Чалууну бүтүрүү</string>
   <string name="incall_label_dialpad">Ном. тергич</string>
   <string name="incall_talkback_speaker_on">, күйүк</string>
   <string name="incall_talkback_speaker_off">, өчүк</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-lo/strings.xml b/java/com/android/incallui/incall/impl/res/values-lo/strings.xml
index 8233ee6..356e489 100644
--- a/java/com/android/incallui/incall/impl/res/values-lo/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-lo/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">ພັກສາຍຊົ່ວຄາວ</string>
   <string name="incall_label_add_call">ເພີ່ມການໂທ</string>
   <string name="incall_label_mute">ປີດສຽງ</string>
-  <string name="incall_label_end_call">ວາງສາຍ</string>
   <string name="incall_label_dialpad">ແປ້ນກົດ</string>
   <string name="incall_talkback_speaker_on">, ເປີດຢູ່</string>
   <string name="incall_talkback_speaker_off">, ປິດຢູ່</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-lt/strings.xml b/java/com/android/incallui/incall/impl/res/values-lt/strings.xml
index 35dd940..5edaefd 100644
--- a/java/com/android/incallui/incall/impl/res/values-lt/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-lt/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Sulaikyti</string>
   <string name="incall_label_add_call">Pr. skambutį</string>
   <string name="incall_label_mute">Nutildyti</string>
-  <string name="incall_label_end_call">Baig. skamb.</string>
   <string name="incall_label_dialpad">Klaviatūra</string>
   <string name="incall_talkback_speaker_on">, įjungtas</string>
   <string name="incall_talkback_speaker_off">, išjungtas</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-lv/strings.xml b/java/com/android/incallui/incall/impl/res/values-lv/strings.xml
index 1b1bec4..b6949d4 100644
--- a/java/com/android/incallui/incall/impl/res/values-lv/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-lv/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Aizturēt</string>
   <string name="incall_label_add_call">Pievienot zvanu</string>
   <string name="incall_label_mute">Izslēgt</string>
-  <string name="incall_label_end_call">Beigt zvanu</string>
   <string name="incall_label_dialpad">Cipartast.</string>
   <string name="incall_talkback_speaker_on">, ieslēgts</string>
   <string name="incall_talkback_speaker_off">, izslēgts</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-mk/strings.xml b/java/com/android/incallui/incall/impl/res/values-mk/strings.xml
index f98789e..cfaff7d 100644
--- a/java/com/android/incallui/incall/impl/res/values-mk/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-mk/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">На чекање</string>
   <string name="incall_label_add_call">Додај повик</string>
   <string name="incall_label_mute">Исклучи звук</string>
-  <string name="incall_label_end_call">Заврши повик</string>
   <string name="incall_label_dialpad">Тастатура</string>
   <string name="incall_talkback_speaker_on">, е вклучен</string>
   <string name="incall_talkback_speaker_off">, е исклучен</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ml/strings.xml b/java/com/android/incallui/incall/impl/res/values-ml/strings.xml
index 81ccd1a..b406ccd 100644
--- a/java/com/android/incallui/incall/impl/res/values-ml/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ml/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">ഹോള്‍ഡുചെയ്യുക</string>
   <string name="incall_label_add_call">കോൾ ചേർക്കുക</string>
   <string name="incall_label_mute">മ്യൂട്ടുചെയ്യുക</string>
-  <string name="incall_label_end_call">കോള്‍ അവസാനിപ്പിക്കൂ</string>
   <string name="incall_label_dialpad">കീപാഡ്</string>
   <string name="incall_talkback_speaker_on">, ഓണാണ്</string>
   <string name="incall_talkback_speaker_off">, ഓഫാണ്</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-mn/strings.xml b/java/com/android/incallui/incall/impl/res/values-mn/strings.xml
index 6e8e17e..c65865f 100644
--- a/java/com/android/incallui/incall/impl/res/values-mn/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-mn/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Саатуулах</string>
   <string name="incall_label_add_call">Дуудлага нэмэх</string>
   <string name="incall_label_mute">Дууг хаах</string>
-  <string name="incall_label_end_call">Дуудлагыг таслах</string>
   <string name="incall_label_dialpad">Товчлуур</string>
   <string name="incall_talkback_speaker_on">, асаатай</string>
   <string name="incall_talkback_speaker_off">, унтраатай</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-mr/strings.xml b/java/com/android/incallui/incall/impl/res/values-mr/strings.xml
index 4d41417..a6a4ef8 100644
--- a/java/com/android/incallui/incall/impl/res/values-mr/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-mr/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">होल्ड करा</string>
   <string name="incall_label_add_call">कॉल जोडा</string>
   <string name="incall_label_mute">नि:शब्द करा</string>
-  <string name="incall_label_end_call">कॉल समाप्त करा</string>
   <string name="incall_label_dialpad">कीपॅड</string>
   <string name="incall_talkback_speaker_on">, सुरू आहे</string>
   <string name="incall_talkback_speaker_off">, बंद आहे</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ms/strings.xml b/java/com/android/incallui/incall/impl/res/values-ms/strings.xml
index 6d17304..86def52 100644
--- a/java/com/android/incallui/incall/impl/res/values-ms/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ms/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Tunda</string>
   <string name="incall_label_add_call">Tambah pgln</string>
   <string name="incall_label_mute">Redam</string>
-  <string name="incall_label_end_call">Tamatkn pgln</string>
   <string name="incall_label_dialpad">Pad kekunci</string>
   <string name="incall_talkback_speaker_on">, dihidupkan</string>
   <string name="incall_talkback_speaker_off">, Dimatikan</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-my/strings.xml b/java/com/android/incallui/incall/impl/res/values-my/strings.xml
index dcbd89b..70c9aba 100644
--- a/java/com/android/incallui/incall/impl/res/values-my/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-my/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">ခဏရပ်ထားရန်</string>
   <string name="incall_label_add_call">ထပ်ခေါ်ရန်</string>
   <string name="incall_label_mute">အသံပိတ်ရန်</string>
-  <string name="incall_label_end_call">ဖုန်းချရန်</string>
   <string name="incall_label_dialpad">ခလုတ်ခုံ</string>
   <string name="incall_talkback_speaker_on">၊ ပွင့်နေသည်</string>
   <string name="incall_talkback_speaker_off">၊ ပိတ်နေသည်</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-nb/strings.xml b/java/com/android/incallui/incall/impl/res/values-nb/strings.xml
index 004eb30..3748a06 100644
--- a/java/com/android/incallui/incall/impl/res/values-nb/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-nb/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Sett på vent</string>
   <string name="incall_label_add_call">Nytt anrop</string>
   <string name="incall_label_mute">Ignorer</string>
-  <string name="incall_label_end_call">Avslutt samtalen</string>
   <string name="incall_label_dialpad">Tastatur</string>
   <string name="incall_talkback_speaker_on">er på</string>
   <string name="incall_talkback_speaker_off">er av</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ne/strings.xml b/java/com/android/incallui/incall/impl/res/values-ne/strings.xml
index afe00e4..d0bed04 100644
--- a/java/com/android/incallui/incall/impl/res/values-ne/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ne/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">होल्ड गर्ने</string>
   <string name="incall_label_add_call">कल थप्नुहोस्</string>
   <string name="incall_label_mute">म्यूट गर्ने</string>
-  <string name="incall_label_end_call">कल अन्त्य गर्ने</string>
   <string name="incall_label_dialpad">किप्याड</string>
   <string name="incall_talkback_speaker_on">, खुला छ</string>
   <string name="incall_talkback_speaker_off">, बन्द छ</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-nl/strings.xml b/java/com/android/incallui/incall/impl/res/values-nl/strings.xml
index 05c6cec..ee0c652 100644
--- a/java/com/android/incallui/incall/impl/res/values-nl/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-nl/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">In wacht</string>
   <string name="incall_label_add_call">Oproep toev.</string>
   <string name="incall_label_mute">Dempen</string>
-  <string name="incall_label_end_call">Oproep beëindigen</string>
   <string name="incall_label_dialpad">Toetsenblok</string>
   <string name="incall_talkback_speaker_on">, is aan</string>
   <string name="incall_talkback_speaker_off">, is uit</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-no/strings.xml b/java/com/android/incallui/incall/impl/res/values-no/strings.xml
index 004eb30..3748a06 100644
--- a/java/com/android/incallui/incall/impl/res/values-no/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-no/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Sett på vent</string>
   <string name="incall_label_add_call">Nytt anrop</string>
   <string name="incall_label_mute">Ignorer</string>
-  <string name="incall_label_end_call">Avslutt samtalen</string>
   <string name="incall_label_dialpad">Tastatur</string>
   <string name="incall_talkback_speaker_on">er på</string>
   <string name="incall_talkback_speaker_off">er av</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-pa/strings.xml b/java/com/android/incallui/incall/impl/res/values-pa/strings.xml
index e7bebd1..b2865f4 100644
--- a/java/com/android/incallui/incall/impl/res/values-pa/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-pa/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">ਰੋਕ ਕੇ ਰੱਖੋ</string>
   <string name="incall_label_add_call">ਕਾਲ ਸ਼ਾਮਲ ਕਰੋ</string>
   <string name="incall_label_mute">ਮਿਊਟ ਕਰੋ</string>
-  <string name="incall_label_end_call">ਕਾਲ ਖਤਮ ਕਰੋ</string>
   <string name="incall_label_dialpad">ਕੀਪੈਡ</string>
   <string name="incall_talkback_speaker_on">, ਚਾਲੂ ਹੈ</string>
   <string name="incall_talkback_speaker_off">, ਬੰਦ ਹੈ</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-pl/strings.xml b/java/com/android/incallui/incall/impl/res/values-pl/strings.xml
index f647ca0..049bab0 100644
--- a/java/com/android/incallui/incall/impl/res/values-pl/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-pl/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Wstrzymaj</string>
   <string name="incall_label_add_call">Dodaj poł.</string>
   <string name="incall_label_mute">Wycisz</string>
-  <string name="incall_label_end_call">Zakończ</string>
   <string name="incall_label_dialpad">Klawiatura</string>
   <string name="incall_talkback_speaker_on">– włączony</string>
   <string name="incall_talkback_speaker_off">– wyłączony</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml b/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml
index 215ce28..22ff58a 100644
--- a/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-pt-rBR/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Em espera</string>
   <string name="incall_label_add_call">Nova chamada</string>
   <string name="incall_label_mute">Mudo</string>
-  <string name="incall_label_end_call">Encerrar</string>
   <string name="incall_label_dialpad">Teclado</string>
   <string name="incall_talkback_speaker_on">ativado</string>
   <string name="incall_talkback_speaker_off">desativado</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml b/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml
index cd8e0c0..8abbfd0 100644
--- a/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-pt-rPT/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Em espera</string>
   <string name="incall_label_add_call">Adic. cham.</string>
   <string name="incall_label_mute">Desativ. som</string>
-  <string name="incall_label_end_call">Terminar chamada</string>
   <string name="incall_label_dialpad">Teclado</string>
   <string name="incall_talkback_speaker_on">, ativado</string>
   <string name="incall_talkback_speaker_off">, desativado</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-pt/strings.xml b/java/com/android/incallui/incall/impl/res/values-pt/strings.xml
index 215ce28..22ff58a 100644
--- a/java/com/android/incallui/incall/impl/res/values-pt/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-pt/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Em espera</string>
   <string name="incall_label_add_call">Nova chamada</string>
   <string name="incall_label_mute">Mudo</string>
-  <string name="incall_label_end_call">Encerrar</string>
   <string name="incall_label_dialpad">Teclado</string>
   <string name="incall_talkback_speaker_on">ativado</string>
   <string name="incall_talkback_speaker_off">desativado</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ro/strings.xml b/java/com/android/incallui/incall/impl/res/values-ro/strings.xml
index 4e67a60..27352f7 100644
--- a/java/com/android/incallui/incall/impl/res/values-ro/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ro/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">În așteptare</string>
   <string name="incall_label_add_call">Încă un apel</string>
   <string name="incall_label_mute">Dezactivați</string>
-  <string name="incall_label_end_call">Încheiați</string>
   <string name="incall_label_dialpad">Tastatură</string>
   <string name="incall_talkback_speaker_on">, e activat</string>
   <string name="incall_talkback_speaker_off">, dezactivat</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ru/strings.xml b/java/com/android/incallui/incall/impl/res/values-ru/strings.xml
index 2081fbe..87607e9 100644
--- a/java/com/android/incallui/incall/impl/res/values-ru/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ru/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Удерживать</string>
   <string name="incall_label_add_call">Добавить вызов</string>
   <string name="incall_label_mute">Выкл. микрофон</string>
-  <string name="incall_label_end_call">Завершить вызов</string>
   <string name="incall_label_dialpad">Клавиатура</string>
   <string name="incall_talkback_speaker_on">, включен</string>
   <string name="incall_talkback_speaker_off">, отключен</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-si/strings.xml b/java/com/android/incallui/incall/impl/res/values-si/strings.xml
index f4c3011..49d494c 100644
--- a/java/com/android/incallui/incall/impl/res/values-si/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-si/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">රඳවා ගන්න</string>
   <string name="incall_label_add_call">ඇමතුම එක් ක.</string>
   <string name="incall_label_mute">නිහඬ කරන්න</string>
-  <string name="incall_label_end_call">ඇමතුම නිම ක.</string>
   <string name="incall_label_dialpad">යතුරු පුවරුව</string>
   <string name="incall_talkback_speaker_on">, සක්‍රියයි</string>
   <string name="incall_talkback_speaker_off">, අක්‍රියයි</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-sk/strings.xml b/java/com/android/incallui/incall/impl/res/values-sk/strings.xml
index 9ceef6e..1960a4c 100644
--- a/java/com/android/incallui/incall/impl/res/values-sk/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-sk/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Podržať</string>
   <string name="incall_label_add_call">Pridať hovor</string>
   <string name="incall_label_mute">Vypnúť zvuk</string>
-  <string name="incall_label_end_call">Ukonč. hovor</string>
   <string name="incall_label_dialpad">Klávesnica</string>
   <string name="incall_talkback_speaker_on">, je zapnutý</string>
   <string name="incall_talkback_speaker_off">, je vypnutý</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-sl/strings.xml b/java/com/android/incallui/incall/impl/res/values-sl/strings.xml
index 3a89cf1..0d3c39f 100644
--- a/java/com/android/incallui/incall/impl/res/values-sl/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-sl/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Zadrži</string>
   <string name="incall_label_add_call">Dodaj klic</string>
   <string name="incall_label_mute">Izklopi zvok</string>
-  <string name="incall_label_end_call">Končaj klic</string>
   <string name="incall_label_dialpad">Tipkovnica</string>
   <string name="incall_talkback_speaker_on">, vklopljen</string>
   <string name="incall_talkback_speaker_off">, izklopljen</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-sq/strings.xml b/java/com/android/incallui/incall/impl/res/values-sq/strings.xml
index 2c1148a..3965dd0 100644
--- a/java/com/android/incallui/incall/impl/res/values-sq/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-sq/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Në pritje</string>
   <string name="incall_label_add_call">Shto telef.</string>
   <string name="incall_label_mute">Hiqi zërin</string>
-  <string name="incall_label_end_call">Mbyll tel.</string>
   <string name="incall_label_dialpad">Blloku i tasteve</string>
   <string name="incall_talkback_speaker_on">, është aktiv</string>
   <string name="incall_talkback_speaker_off">, është joaktiv</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-sr/strings.xml b/java/com/android/incallui/incall/impl/res/values-sr/strings.xml
index e295bfb..a45e0f4 100644
--- a/java/com/android/incallui/incall/impl/res/values-sr/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-sr/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">На чекање</string>
   <string name="incall_label_add_call">Додај позив</string>
   <string name="incall_label_mute">Искључи звук</string>
-  <string name="incall_label_end_call">Заврши позив</string>
   <string name="incall_label_dialpad">Тастатура</string>
   <string name="incall_talkback_speaker_on">, укључен</string>
   <string name="incall_talkback_speaker_off">, искључен</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-sv/strings.xml b/java/com/android/incallui/incall/impl/res/values-sv/strings.xml
index 01b0b07..bb0274c 100644
--- a/java/com/android/incallui/incall/impl/res/values-sv/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-sv/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Parkera</string>
   <string name="incall_label_add_call">Lägg t samt.</string>
   <string name="incall_label_mute">Ljud av</string>
-  <string name="incall_label_end_call">Avsl. samtal</string>
   <string name="incall_label_dialpad">Knappsats</string>
   <string name="incall_talkback_speaker_on">, är på</string>
   <string name="incall_talkback_speaker_off">, är av</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-sw/strings.xml b/java/com/android/incallui/incall/impl/res/values-sw/strings.xml
index ae7fa63..d1d0a22 100644
--- a/java/com/android/incallui/incall/impl/res/values-sw/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-sw/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Shikilia</string>
   <string name="incall_label_add_call">Ongeza simu</string>
   <string name="incall_label_mute">Zima maikrofoni</string>
-  <string name="incall_label_end_call">Kata simu</string>
   <string name="incall_label_dialpad">Vitufe vya Simu</string>
   <string name="incall_talkback_speaker_on">, kimewashwa</string>
   <string name="incall_talkback_speaker_off">, kimezimwa</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ta/strings.xml b/java/com/android/incallui/incall/impl/res/values-ta/strings.xml
index e5a07bf..72c11c6 100644
--- a/java/com/android/incallui/incall/impl/res/values-ta/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ta/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">ஹோல்டில் வை</string>
   <string name="incall_label_add_call">அழைப்பை சேர்</string>
   <string name="incall_label_mute">முடக்கு</string>
-  <string name="incall_label_end_call">அழைப்பை முடி</string>
   <string name="incall_label_dialpad">விசைத்தளம்</string>
   <string name="incall_talkback_speaker_on">, ஆன்</string>
   <string name="incall_talkback_speaker_off">, ஆஃப்</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-te/strings.xml b/java/com/android/incallui/incall/impl/res/values-te/strings.xml
index 5cabef0..8f8ad2d 100644
--- a/java/com/android/incallui/incall/impl/res/values-te/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-te/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">హోల్డ్ చేయి</string>
   <string name="incall_label_add_call">కాల్ జోడించు</string>
   <string name="incall_label_mute">మ్యూట్ చేయి</string>
-  <string name="incall_label_end_call">కాల్ ముగించు</string>
   <string name="incall_label_dialpad">కీప్యాడ్</string>
   <string name="incall_talkback_speaker_on">, ఆన్‌లో ఉంది</string>
   <string name="incall_talkback_speaker_off">, ఆఫ్‌లో ఉంది</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-th/strings.xml b/java/com/android/incallui/incall/impl/res/values-th/strings.xml
index 33ff527..b69c993 100644
--- a/java/com/android/incallui/incall/impl/res/values-th/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-th/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">พักสาย</string>
   <string name="incall_label_add_call">เพิ่มการโทร</string>
   <string name="incall_label_mute">ปิดเสียง</string>
-  <string name="incall_label_end_call">วางสาย</string>
   <string name="incall_label_dialpad">ปุ่มกด</string>
   <string name="incall_talkback_speaker_on">เปิดอยู่</string>
   <string name="incall_talkback_speaker_off">ปิดอยู่</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-tl/strings.xml b/java/com/android/incallui/incall/impl/res/values-tl/strings.xml
index 356f5e3..b2eaba1 100644
--- a/java/com/android/incallui/incall/impl/res/values-tl/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-tl/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">I-hold</string>
   <string name="incall_label_add_call">Mag-add: tawag </string>
   <string name="incall_label_mute">I-mute</string>
-  <string name="incall_label_end_call">Tapusin ang tawag</string>
   <string name="incall_label_dialpad">Keypad</string>
   <string name="incall_talkback_speaker_on">,ay On</string>
   <string name="incall_talkback_speaker_off">, ay Off</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-tr/strings.xml b/java/com/android/incallui/incall/impl/res/values-tr/strings.xml
index 362d850..3f34973 100644
--- a/java/com/android/incallui/incall/impl/res/values-tr/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-tr/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Beklemeye al</string>
   <string name="incall_label_add_call">Çağrı ekle</string>
   <string name="incall_label_mute">Sesi kapat</string>
-  <string name="incall_label_end_call">Çğryı sonldr</string>
   <string name="incall_label_dialpad">Tuş takımı</string>
   <string name="incall_talkback_speaker_on">, Açık</string>
   <string name="incall_talkback_speaker_off">, Kapalı</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-uk/strings.xml b/java/com/android/incallui/incall/impl/res/values-uk/strings.xml
index cf0e679..1879626 100644
--- a/java/com/android/incallui/incall/impl/res/values-uk/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-uk/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Утримувати</string>
   <string name="incall_label_add_call">Дод. виклик</string>
   <string name="incall_label_mute">Без звуку</string>
-  <string name="incall_label_end_call">Завер. викл.</string>
   <string name="incall_label_dialpad">Клавіатура</string>
   <string name="incall_talkback_speaker_on">, увімкнено</string>
   <string name="incall_talkback_speaker_off">, вимкнено</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-ur/strings.xml b/java/com/android/incallui/incall/impl/res/values-ur/strings.xml
index fb2feb5..2642987 100644
--- a/java/com/android/incallui/incall/impl/res/values-ur/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-ur/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">ہولڈ کریں</string>
   <string name="incall_label_add_call">کال شامل کریں</string>
   <string name="incall_label_mute">خاموش کریں</string>
-  <string name="incall_label_end_call">کال ختم کریں</string>
   <string name="incall_label_dialpad">کی پیڈ</string>
   <string name="incall_talkback_speaker_on">، آن ہے</string>
   <string name="incall_talkback_speaker_off">، آف ہے</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-uz/strings.xml b/java/com/android/incallui/incall/impl/res/values-uz/strings.xml
index b2ba16e..d58e410 100644
--- a/java/com/android/incallui/incall/impl/res/values-uz/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-uz/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Pauza</string>
   <string name="incall_label_add_call">Chaqiruv</string>
   <string name="incall_label_mute">Ovozsiz</string>
-  <string name="incall_label_end_call">Tugatish</string>
   <string name="incall_label_dialpad">Klaviatura</string>
   <string name="incall_talkback_speaker_on">, yoniq</string>
   <string name="incall_talkback_speaker_off">, o‘chiq</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-vi/strings.xml b/java/com/android/incallui/incall/impl/res/values-vi/strings.xml
index f7d0eaf..f2fbe69 100644
--- a/java/com/android/incallui/incall/impl/res/values-vi/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-vi/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Giữ</string>
   <string name="incall_label_add_call">Thêm cuộc gọi</string>
   <string name="incall_label_mute">Tắt tiếng</string>
-  <string name="incall_label_end_call">Kết thúc cuộc gọi</string>
   <string name="incall_label_dialpad">Bàn phím</string>
   <string name="incall_talkback_speaker_on">, đang bật</string>
   <string name="incall_talkback_speaker_off">, đang tắt</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml b/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml
index 1b0dab5..efe5cd0 100644
--- a/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-zh-rCN/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">保持</string>
   <string name="incall_label_add_call">添加通话</string>
   <string name="incall_label_mute">静音</string>
-  <string name="incall_label_end_call">结束通话</string>
   <string name="incall_label_dialpad">拨号键盘</string>
   <string name="incall_talkback_speaker_on">，已开启</string>
   <string name="incall_talkback_speaker_off">，已关闭</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml b/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml
index e5e4305..130029f 100644
--- a/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-zh-rHK/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">保留</string>
   <string name="incall_label_add_call">新增通話</string>
   <string name="incall_label_mute">靜音</string>
-  <string name="incall_label_end_call">結束通話</string>
   <string name="incall_label_dialpad">小鍵盤</string>
   <string name="incall_talkback_speaker_on">，已開啟</string>
   <string name="incall_talkback_speaker_off">，已關閉</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml b/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml
index 5f6aec8..2166dbb 100644
--- a/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-zh-rTW/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">保留</string>
   <string name="incall_label_add_call">新增通話</string>
   <string name="incall_label_mute">靜音</string>
-  <string name="incall_label_end_call">結束通話</string>
   <string name="incall_label_dialpad">撥號鍵盤</string>
   <string name="incall_talkback_speaker_on">，已開啟</string>
   <string name="incall_talkback_speaker_off">，已關閉</string>
diff --git a/java/com/android/incallui/incall/impl/res/values-zu/strings.xml b/java/com/android/incallui/incall/impl/res/values-zu/strings.xml
index 4ff6faf..b468120 100644
--- a/java/com/android/incallui/incall/impl/res/values-zu/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values-zu/strings.xml
@@ -5,7 +5,6 @@
   <string name="incall_label_hold">Bamba</string>
   <string name="incall_label_add_call">Engeza ikholi</string>
   <string name="incall_label_mute">Thulisa</string>
-  <string name="incall_label_end_call">Qeda ikholi</string>
   <string name="incall_label_dialpad">Ikhiphedi</string>
   <string name="incall_talkback_speaker_on">, ivuliwe</string>
   <string name="incall_talkback_speaker_off">, ivaliwe</string>
diff --git a/java/com/android/incallui/incall/impl/res/values/strings.xml b/java/com/android/incallui/incall/impl/res/values/strings.xml
index c4c40a1..7f87ee4 100644
--- a/java/com/android/incallui/incall/impl/res/values/strings.xml
+++ b/java/com/android/incallui/incall/impl/res/values/strings.xml
@@ -36,10 +36,6 @@
      [CHAR LIMIT=12] -->
   <string name="incall_label_mute">Mute</string>
 
-  <!-- Button shown during a phone call to end the call.
-     [CHAR LIMIT=12] -->
-  <string name="incall_label_end_call">End call</string>
-
   <!-- Button shown during a phone call to show the dialpad.
      [CHAR LIMIT=12] -->
   <string name="incall_label_dialpad">Keypad</string>
diff --git a/java/com/android/incallui/incall/protocol/ContactPhotoType.java b/java/com/android/incallui/incall/protocol/ContactPhotoType.java
index d79b755..307c0cb 100644
--- a/java/com/android/incallui/incall/protocol/ContactPhotoType.java
+++ b/java/com/android/incallui/incall/protocol/ContactPhotoType.java
@@ -16,7 +16,8 @@
 
 package com.android.incallui.incall.protocol;
 
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
diff --git a/java/com/android/incallui/incall/protocol/InCallButtonIds.java b/java/com/android/incallui/incall/protocol/InCallButtonIds.java
index 80ea75e..37dc071 100644
--- a/java/com/android/incallui/incall/protocol/InCallButtonIds.java
+++ b/java/com/android/incallui/incall/protocol/InCallButtonIds.java
@@ -16,7 +16,8 @@
 
 package com.android.incallui.incall.protocol;
 
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -38,6 +39,7 @@
   InCallButtonIds.BUTTON_MANAGE_VOICE_CONFERENCE,
   InCallButtonIds.BUTTON_SWITCH_TO_SECONDARY,
   InCallButtonIds.BUTTON_SWAP_SIM,
+  InCallButtonIds.BUTTON_RECORD_CALL,
   InCallButtonIds.BUTTON_COUNT,
   InCallButtonIds.BUTTON_UPGRADE_TO_RTT
 })
@@ -58,6 +60,7 @@
   int BUTTON_MANAGE_VOICE_CONFERENCE = 12;
   int BUTTON_SWITCH_TO_SECONDARY = 13;
   int BUTTON_SWAP_SIM = 14;
-  int BUTTON_COUNT = 15;
+  int BUTTON_RECORD_CALL = 15;
   int BUTTON_UPGRADE_TO_RTT = 16;
+  int BUTTON_COUNT = 17;
 }
diff --git a/java/com/android/incallui/incall/protocol/InCallButtonIdsExtension.java b/java/com/android/incallui/incall/protocol/InCallButtonIdsExtension.java
index 5239d9d..ee03c3d 100644
--- a/java/com/android/incallui/incall/protocol/InCallButtonIdsExtension.java
+++ b/java/com/android/incallui/incall/protocol/InCallButtonIdsExtension.java
@@ -58,6 +58,8 @@
       return "SWAP_SIM";
     } else if (id == InCallButtonIds.BUTTON_UPGRADE_TO_RTT) {
       return "UPGRADE_TO_RTT";
+    } else if (id == InCallButtonIds.BUTTON_RECORD_CALL) {
+      return "RECORD_CALL";
     } else {
       return "INVALID_BUTTON: " + id;
     }
diff --git a/java/com/android/incallui/incall/protocol/InCallButtonUi.java b/java/com/android/incallui/incall/protocol/InCallButtonUi.java
index 28dd84c..19a55ee 100644
--- a/java/com/android/incallui/incall/protocol/InCallButtonUi.java
+++ b/java/com/android/incallui/incall/protocol/InCallButtonUi.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,10 @@
 
 package com.android.incallui.incall.protocol;
 
-import android.support.annotation.ColorInt;
-import android.support.v4.app.Fragment;
 import android.telecom.CallAudioState;
 
+import androidx.fragment.app.Fragment;
+
 /** Interface for the call button UI. */
 public interface InCallButtonUi {
 
@@ -37,14 +38,18 @@
 
   void setAudioState(CallAudioState audioState);
 
+  void setCallRecordingState(boolean isRecording);
+
+  void setCallRecordingDuration(long durationMs);
+
+  void requestCallRecordingPermissions(String[] permissions);
+
   /**
    * Once showButton() has been called on each of the individual buttons in the UI, call this to
    * configure the overflow menu appropriately.
    */
   void updateButtonStates();
 
-  void updateInCallButtonUiColors(@ColorInt int color);
-
   Fragment getInCallButtonUiFragment();
 
   void showAudioRouteSelector();
diff --git a/java/com/android/incallui/incall/protocol/InCallButtonUiDelegate.java b/java/com/android/incallui/incall/protocol/InCallButtonUiDelegate.java
index 4cf40ef..341aacf 100644
--- a/java/com/android/incallui/incall/protocol/InCallButtonUiDelegate.java
+++ b/java/com/android/incallui/incall/protocol/InCallButtonUiDelegate.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,6 @@
 package com.android.incallui.incall.protocol;
 
 import android.content.Context;
-import android.os.Bundle;
 import android.telecom.CallAudioState;
 
 /** Callbacks from the module out to the container. */
@@ -27,10 +27,6 @@
 
   void onInCallButtonUiUnready();
 
-  void onSaveInstanceState(Bundle outState);
-
-  void onRestoreInstanceState(Bundle savedInstanceState);
-
   void addCallClicked();
 
   void muteClicked(boolean checked, boolean clickedByUser);
@@ -65,5 +61,7 @@
 
   void swapSimClicked();
 
+  void callRecordClicked(boolean checked);
+
   Context getContext();
 }
diff --git a/java/com/android/incallui/incall/protocol/InCallScreen.java b/java/com/android/incallui/incall/protocol/InCallScreen.java
index 612ad26..06397cd 100644
--- a/java/com/android/incallui/incall/protocol/InCallScreen.java
+++ b/java/com/android/incallui/incall/protocol/InCallScreen.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,11 @@
 
 package com.android.incallui.incall.protocol;
 
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
 import android.view.accessibility.AccessibilityEvent;
 
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+
 /** Interface for the call card module. */
 public interface InCallScreen {
 
diff --git a/java/com/android/incallui/incall/protocol/InCallScreenDelegate.java b/java/com/android/incallui/incall/protocol/InCallScreenDelegate.java
index c491eab..32d8ddd 100644
--- a/java/com/android/incallui/incall/protocol/InCallScreenDelegate.java
+++ b/java/com/android/incallui/incall/protocol/InCallScreenDelegate.java
@@ -29,12 +29,8 @@
 
   void onSecondaryInfoClicked();
 
-  void onCallStateButtonClicked();
-
   void onManageConferenceClicked();
 
-  void onShrinkAnimationComplete();
-
   void onInCallScreenResumed();
 
   void onInCallScreenPaused();
diff --git a/java/com/android/incallui/incall/protocol/PrimaryCallState.java b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
index e07caf1..ba9c524 100644
--- a/java/com/android/incallui/incall/protocol/PrimaryCallState.java
+++ b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,17 +18,20 @@
 package com.android.incallui.incall.protocol;
 
 import android.graphics.drawable.Drawable;
-import android.support.annotation.ColorInt;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
 import android.telecom.DisconnectCause;
 import android.text.TextUtils;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.assisteddialing.TransformationInfo;
 import com.android.dialer.common.Assert;
 import com.android.dialer.preferredsim.suggestion.SuggestionProvider;
 import com.android.incallui.call.state.DialerCallState;
 import com.android.incallui.videotech.utils.SessionModificationState;
 import com.google.auto.value.AutoValue;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Locale;
diff --git a/java/com/android/incallui/incall/protocol/PrimaryInfo.java b/java/com/android/incallui/incall/protocol/PrimaryInfo.java
index 5e40cd1..fbd16e1 100644
--- a/java/com/android/incallui/incall/protocol/PrimaryInfo.java
+++ b/java/com/android/incallui/incall/protocol/PrimaryInfo.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,10 +19,13 @@
 
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.multimedia.MultimediaData;
 import com.google.auto.value.AutoValue;
+
 import java.util.Locale;
 
 /** Information about the primary call. */
@@ -62,7 +66,6 @@
 
   public abstract boolean answeringDisconnectsOngoingCall();
 
-  public abstract boolean shouldShowLocation();
   // Used for consistent LetterTile coloring.
   @Nullable
   public abstract String contactInfoLookupKey();
@@ -110,8 +113,6 @@
     public abstract Builder setAnsweringDisconnectsOngoingCall(
         boolean answeringDisconnectsOngoingCall);
 
-    public abstract Builder setShouldShowLocation(boolean shouldShowLocation);
-
     public abstract Builder setContactInfoLookupKey(String contactInfoLookupKey);
 
     public abstract Builder setMultimediaData(MultimediaData multimediaData);
@@ -133,7 +134,6 @@
         .setIsSpam(false)
         .setIsLocalContact(false)
         .setAnsweringDisconnectsOngoingCall(false)
-        .setShouldShowLocation(false)
         .setShowInCallButtonGrid(true)
         .setNumberPresentation(-1)
         .build();
diff --git a/java/com/android/incallui/incall/protocol/SecondaryInfo.java b/java/com/android/incallui/incall/protocol/SecondaryInfo.java
index 2dfd220..76eeecf 100644
--- a/java/com/android/incallui/incall/protocol/SecondaryInfo.java
+++ b/java/com/android/incallui/incall/protocol/SecondaryInfo.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,9 +19,12 @@
 
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.LogUtil;
 import com.google.auto.value.AutoValue;
+
 import java.util.Locale;
 
 /** Information about the secondary call. */
diff --git a/java/com/android/incallui/latencyreport/LatencyReport.java b/java/com/android/incallui/latencyreport/LatencyReport.java
deleted file mode 100644
index 8ea66f9..0000000
--- a/java/com/android/incallui/latencyreport/LatencyReport.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.latencyreport;
-
-import android.os.Bundle;
-import android.os.SystemClock;
-
-/** Tracks latency information for a call. */
-public class LatencyReport {
-
-  public static final long INVALID_TIME = -1;
-  // The following are hidden constants from android.telecom.TelecomManager.
-  private static final String EXTRA_CALL_CREATED_TIME_MILLIS =
-      "android.telecom.extra.CALL_CREATED_TIME_MILLIS";
-  private static final String EXTRA_CALL_TELECOM_ROUTING_START_TIME_MILLIS =
-      "android.telecom.extra.CALL_TELECOM_ROUTING_START_TIME_MILLIS";
-  private static final String EXTRA_CALL_TELECOM_ROUTING_END_TIME_MILLIS =
-      "android.telecom.extra.CALL_TELECOM_ROUTING_END_TIME_MILLIS";
-  private final boolean wasIncoming;
-
-  // Time elapsed since boot when the call was created by the connection service.
-  private final long createdTimeMillis;
-
-  // Time elapsed since boot when telecom began processing the call.
-  private final long telecomRoutingStartTimeMillis;
-
-  // Time elapsed since boot when telecom finished processing the call. This includes things like
-  // looking up contact info and call blocking but before showing any UI.
-  private final long telecomRoutingEndTimeMillis;
-
-  // Time elapsed since boot when the call was added to the InCallUi.
-  private final long callAddedTimeMillis;
-
-  // Time elapsed since boot when the call was added and call blocking evaluation was completed.
-  private long callBlockingTimeMillis = INVALID_TIME;
-
-  // Time elapsed since boot when the call notification was shown.
-  private long callNotificationTimeMillis = INVALID_TIME;
-
-  // Time elapsed since boot when the InCallUI was shown.
-  private long inCallUiShownTimeMillis = INVALID_TIME;
-
-  // Whether the call was shown to the user as a heads up notification instead of a full screen
-  // UI.
-  private boolean didDisplayHeadsUpNotification;
-
-  public LatencyReport() {
-    wasIncoming = false;
-    createdTimeMillis = INVALID_TIME;
-    telecomRoutingStartTimeMillis = INVALID_TIME;
-    telecomRoutingEndTimeMillis = INVALID_TIME;
-    callAddedTimeMillis = SystemClock.elapsedRealtime();
-  }
-
-  public LatencyReport(android.telecom.Call telecomCall) {
-    wasIncoming = telecomCall.getState() == android.telecom.Call.STATE_RINGING;
-    Bundle extras = telecomCall.getDetails().getIntentExtras();
-    if (extras == null) {
-      createdTimeMillis = INVALID_TIME;
-      telecomRoutingStartTimeMillis = INVALID_TIME;
-      telecomRoutingEndTimeMillis = INVALID_TIME;
-    } else {
-      createdTimeMillis = extras.getLong(EXTRA_CALL_CREATED_TIME_MILLIS, INVALID_TIME);
-      telecomRoutingStartTimeMillis =
-          extras.getLong(EXTRA_CALL_TELECOM_ROUTING_START_TIME_MILLIS, INVALID_TIME);
-      telecomRoutingEndTimeMillis =
-          extras.getLong(EXTRA_CALL_TELECOM_ROUTING_END_TIME_MILLIS, INVALID_TIME);
-    }
-    callAddedTimeMillis = SystemClock.elapsedRealtime();
-  }
-
-  public boolean getWasIncoming() {
-    return wasIncoming;
-  }
-
-  public long getCreatedTimeMillis() {
-    return createdTimeMillis;
-  }
-
-  public long getTelecomRoutingStartTimeMillis() {
-    return telecomRoutingStartTimeMillis;
-  }
-
-  public long getTelecomRoutingEndTimeMillis() {
-    return telecomRoutingEndTimeMillis;
-  }
-
-  public long getCallAddedTimeMillis() {
-    return callAddedTimeMillis;
-  }
-
-  public long getCallBlockingTimeMillis() {
-    return callBlockingTimeMillis;
-  }
-
-  public void onCallBlockingDone() {
-    if (callBlockingTimeMillis == INVALID_TIME) {
-      callBlockingTimeMillis = SystemClock.elapsedRealtime();
-    }
-  }
-
-  public long getCallNotificationTimeMillis() {
-    return callNotificationTimeMillis;
-  }
-
-  public void onNotificationShown() {
-    if (callNotificationTimeMillis == INVALID_TIME) {
-      callNotificationTimeMillis = SystemClock.elapsedRealtime();
-    }
-  }
-
-  public long getInCallUiShownTimeMillis() {
-    return inCallUiShownTimeMillis;
-  }
-
-  public void onInCallUiShown(boolean forFullScreenIntent) {
-    if (inCallUiShownTimeMillis == INVALID_TIME) {
-      inCallUiShownTimeMillis = SystemClock.elapsedRealtime();
-      didDisplayHeadsUpNotification = wasIncoming && !forFullScreenIntent;
-    }
-  }
-
-  public boolean getDidDisplayHeadsUpNotification() {
-    return didDisplayHeadsUpNotification;
-  }
-}
diff --git a/java/com/android/incallui/legacyblocking/BlockedNumberContentObserver.java b/java/com/android/incallui/legacyblocking/BlockedNumberContentObserver.java
deleted file mode 100644
index d774fc3..0000000
--- a/java/com/android/incallui/legacyblocking/BlockedNumberContentObserver.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.incallui.legacyblocking;
-
-import android.content.Context;
-import android.database.ContentObserver;
-import android.os.Handler;
-import android.provider.CallLog;
-import android.support.annotation.NonNull;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.AsyncTaskExecutor;
-import com.android.dialer.common.concurrent.AsyncTaskExecutors;
-import com.android.dialer.util.PermissionsUtil;
-import java.util.Objects;
-
-/**
- * Observes the {@link CallLog} to delete the CallLog entry for a blocked call after it is added.
- * Automatically de-registers itself {@link #TIMEOUT_MS} ms after registration or if the entry is
- * found and deleted.
- */
-public class BlockedNumberContentObserver extends ContentObserver
-    implements DeleteBlockedCallTask.Listener {
-
-  /**
-   * The time after which a {@link BlockedNumberContentObserver} will be automatically unregistered.
-   */
-  public static final int TIMEOUT_MS = 5000;
-
-  @NonNull private final Context context;
-  @NonNull private final Handler handler;
-  private final String number;
-  private final long timeAddedMillis;
-  private final Runnable timeoutRunnable =
-      new Runnable() {
-        @Override
-        public void run() {
-          unregister();
-        }
-      };
-
-  private final AsyncTaskExecutor asyncTaskExecutor = AsyncTaskExecutors.createThreadPoolExecutor();
-
-  /**
-   * Creates the BlockedNumberContentObserver to delete the new {@link CallLog} entry from the given
-   * blocked number.
-   *
-   * @param number The blocked number.
-   * @param timeAddedMillis The time at which the call from the blocked number was placed.
-   */
-  public BlockedNumberContentObserver(
-      @NonNull Context context, @NonNull Handler handler, String number, long timeAddedMillis) {
-    super(handler);
-    this.context = Objects.requireNonNull(context, "context").getApplicationContext();
-    this.handler = Objects.requireNonNull(handler);
-    this.number = number;
-    this.timeAddedMillis = timeAddedMillis;
-  }
-
-  @Override
-  public void onChange(boolean selfChange) {
-    LogUtil.i(
-        "BlockedNumberContentObserver.onChange",
-        "attempting to remove call log entry from blocked number");
-    asyncTaskExecutor.submit(
-        DeleteBlockedCallTask.IDENTIFIER,
-        new DeleteBlockedCallTask(context, this, number, timeAddedMillis));
-  }
-
-  @Override
-  public void onDeleteBlockedCallTaskComplete(boolean didFindEntry) {
-    if (didFindEntry) {
-      unregister();
-    }
-  }
-
-  /**
-   * Registers this {@link ContentObserver} to listen for changes to the {@link CallLog}. If the
-   * CallLog entry is not found before {@link #TIMEOUT_MS}, this ContentObserver automatically
-   * un-registers itself.
-   */
-  public void register() {
-    LogUtil.i("BlockedNumberContentObserver.register", null);
-    if (PermissionsUtil.hasCallLogReadPermissions(context)
-        && PermissionsUtil.hasCallLogWritePermissions(context)) {
-      context.getContentResolver().registerContentObserver(CallLog.CONTENT_URI, true, this);
-      handler.postDelayed(timeoutRunnable, TIMEOUT_MS);
-    } else {
-      LogUtil.w("BlockedNumberContentObserver.register", "no call log read/write permissions.");
-    }
-  }
-
-  private void unregister() {
-    LogUtil.i("BlockedNumberContentObserver.unregister", null);
-    handler.removeCallbacks(timeoutRunnable);
-    context.getContentResolver().unregisterContentObserver(this);
-  }
-}
diff --git a/java/com/android/incallui/legacyblocking/DeleteBlockedCallTask.java b/java/com/android/incallui/legacyblocking/DeleteBlockedCallTask.java
deleted file mode 100644
index 309e994..0000000
--- a/java/com/android/incallui/legacyblocking/DeleteBlockedCallTask.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.incallui.legacyblocking;
-
-import android.Manifest.permission;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.database.Cursor;
-import android.os.AsyncTask;
-import android.provider.CallLog;
-import android.support.v4.content.ContextCompat;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.telecom.TelecomUtil;
-import java.util.Objects;
-
-/**
- * Deletes a blocked call from the call log. This is only used on Android Marshmallow. On later
- * versions of the OS, call blocking is implemented in the system and there's no need to mess with
- * the call log.
- */
-public class DeleteBlockedCallTask extends AsyncTask<Void, Void, Long> {
-
-  public static final String IDENTIFIER = "DeleteBlockedCallTask";
-
-  // Try to identify if a call log entry corresponds to a number which was blocked. We match by
-  // by comparing its creation time to the time it was added in the InCallUi and seeing if they
-  // fall within a certain threshold.
-  private static final int MATCH_BLOCKED_CALL_THRESHOLD_MS = 3000;
-
-  private final Context context;
-  private final Listener listener;
-  private final String number;
-  private final long timeAddedMillis;
-
-  /**
-   * Creates the task to delete the new {@link CallLog} entry from the given blocked number.
-   *
-   * @param number The blocked number.
-   * @param timeAddedMillis The time at which the call from the blocked number was placed.
-   */
-  public DeleteBlockedCallTask(
-      Context context, Listener listener, String number, long timeAddedMillis) {
-    this.context = Objects.requireNonNull(context);
-    this.listener = Objects.requireNonNull(listener);
-    this.number = number;
-    this.timeAddedMillis = timeAddedMillis;
-  }
-
-  @Override
-  public Long doInBackground(Void... params) {
-    if (ContextCompat.checkSelfPermission(context, permission.READ_CALL_LOG)
-            != PackageManager.PERMISSION_GRANTED
-        || ContextCompat.checkSelfPermission(context, permission.WRITE_CALL_LOG)
-            != PackageManager.PERMISSION_GRANTED) {
-      LogUtil.i("DeleteBlockedCallTask.doInBackground", "missing call log permissions");
-      return -1L;
-    }
-
-    // First, lookup the call log entry of the most recent call with this number.
-    try (Cursor cursor =
-        context
-            .getContentResolver()
-            .query(
-                TelecomUtil.getCallLogUri(context),
-                CallLogDeleteBlockedCallQuery.PROJECTION,
-                CallLog.Calls.NUMBER + "= ?",
-                new String[] {number},
-                CallLog.Calls.DATE + " DESC LIMIT 1")) {
-
-      // If match is found, delete this call log entry and return the call log entry id.
-      if (cursor != null && cursor.moveToFirst()) {
-        long creationTime = cursor.getLong(CallLogDeleteBlockedCallQuery.DATE_COLUMN_INDEX);
-        if (timeAddedMillis > creationTime
-            && timeAddedMillis - creationTime < MATCH_BLOCKED_CALL_THRESHOLD_MS) {
-          long callLogEntryId = cursor.getLong(CallLogDeleteBlockedCallQuery.ID_COLUMN_INDEX);
-          context
-              .getContentResolver()
-              .delete(
-                  TelecomUtil.getCallLogUri(context),
-                  CallLog.Calls._ID + " IN (" + callLogEntryId + ")",
-                  null);
-          return callLogEntryId;
-        }
-      }
-    }
-    return -1L;
-  }
-
-  @Override
-  public void onPostExecute(Long callLogEntryId) {
-    listener.onDeleteBlockedCallTaskComplete(callLogEntryId >= 0);
-  }
-
-  /** Callback invoked when delete is complete. */
-  public interface Listener {
-
-    void onDeleteBlockedCallTaskComplete(boolean didFindEntry);
-  }
-
-  private static class CallLogDeleteBlockedCallQuery {
-
-    static final String[] PROJECTION = new String[] {CallLog.Calls._ID, CallLog.Calls.DATE};
-
-    static final int ID_COLUMN_INDEX = 0;
-    static final int DATE_COLUMN_INDEX = 1;
-  }
-}
diff --git a/java/com/android/incallui/maps/Maps.java b/java/com/android/incallui/maps/Maps.java
deleted file mode 100644
index 648cf9f..0000000
--- a/java/com/android/incallui/maps/Maps.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.maps;
-
-import android.location.Location;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
-
-/** Used to create a fragment that can display a static map at the given location. */
-public interface Maps {
-  /**
-   * Used to check if maps is available. This will return false if Dialer was compiled without
-   * support for Google Play Services.
-   */
-  boolean isAvailable();
-
-  @NonNull
-  Fragment createStaticMapFragment(@NonNull Location location);
-}
diff --git a/java/com/android/incallui/maps/MapsComponent.java b/java/com/android/incallui/maps/MapsComponent.java
deleted file mode 100644
index 796abaa..0000000
--- a/java/com/android/incallui/maps/MapsComponent.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.maps;
-
-import android.content.Context;
-import com.android.dialer.inject.HasRootComponent;
-import dagger.Subcomponent;
-
-/** Subcomponent that can be used to access the maps implementation. */
-@Subcomponent
-public abstract class MapsComponent {
-
-  public abstract Maps getMaps();
-
-  public static MapsComponent get(Context context) {
-    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
-        .mapsComponent();
-  }
-
-  /** Used to refer to the root application component. */
-  public interface HasComponent {
-    MapsComponent mapsComponent();
-  }
-}
diff --git a/java/com/android/incallui/maps/impl/AndroidManifest.xml b/java/com/android/incallui/maps/impl/AndroidManifest.xml
deleted file mode 100644
index 4c17f33..0000000
--- a/java/com/android/incallui/maps/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<manifest
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.incallui.maps.impl">
-
-  <application>
-    <!-- Fix for P -->
-    <uses-library android:name="org.apache.http.legacy" android:required="false" />
-
-    <meta-data
-      android:name="com.google.android.gms.version"
-      android:value="@integer/google_play_services_version"/>
-  </application>
-</manifest>
diff --git a/java/com/android/incallui/maps/impl/MapsImpl.java b/java/com/android/incallui/maps/impl/MapsImpl.java
deleted file mode 100644
index 2cecee9..0000000
--- a/java/com/android/incallui/maps/impl/MapsImpl.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.maps.impl;
-
-import android.location.Location;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
-import com.android.incallui.maps.Maps;
-import javax.inject.Inject;
-
-/** Uses Google Play Services APIs to create a static map fragment. */
-final class MapsImpl implements Maps {
-  @Inject
-  public MapsImpl() {}
-
-  @Override
-  public boolean isAvailable() {
-    return true;
-  }
-
-  @Override
-  @NonNull
-  public Fragment createStaticMapFragment(@NonNull Location location) {
-    return StaticMapFragment.newInstance(location);
-  }
-}
diff --git a/java/com/android/incallui/maps/impl/MapsModule.java b/java/com/android/incallui/maps/impl/MapsModule.java
deleted file mode 100644
index 22f2f32..0000000
--- a/java/com/android/incallui/maps/impl/MapsModule.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.maps.impl;
-
-import com.android.incallui.maps.Maps;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Singleton;
-
-/** This module provides an instance of maps. */
-@Module
-public abstract class MapsModule {
-
-  @Binds
-  @Singleton
-  public abstract Maps bindMaps(MapsImpl maps);
-}
diff --git a/java/com/android/incallui/maps/impl/StaticMapFragment.java b/java/com/android/incallui/maps/impl/StaticMapFragment.java
deleted file mode 100644
index 38a4c15..0000000
--- a/java/com/android/incallui/maps/impl/StaticMapFragment.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.maps.impl;
-
-import android.location.Location;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.google.android.gms.maps.CameraUpdateFactory;
-import com.google.android.gms.maps.GoogleMap;
-import com.google.android.gms.maps.OnMapReadyCallback;
-import com.google.android.gms.maps.SupportMapFragment;
-import com.google.android.gms.maps.model.LatLng;
-import com.google.android.gms.maps.model.MarkerOptions;
-
-/** Shows a static map centered on a specified location */
-public class StaticMapFragment extends Fragment implements OnMapReadyCallback {
-
-  private static final String ARG_LOCATION = "location";
-
-  public static StaticMapFragment newInstance(@NonNull Location location) {
-    Bundle args = new Bundle();
-    args.putParcelable(ARG_LOCATION, Assert.isNotNull(location));
-    StaticMapFragment fragment = new StaticMapFragment();
-    fragment.setArguments(args);
-    return fragment;
-  }
-
-  @Nullable
-  @Override
-  public View onCreateView(
-      LayoutInflater layoutInflater, @Nullable ViewGroup viewGroup, @Nullable Bundle bundle) {
-    return layoutInflater.inflate(R.layout.static_map_fragment, viewGroup, false);
-  }
-
-  @Override
-  public void onViewCreated(View view, @Nullable Bundle bundle) {
-    super.onViewCreated(view, bundle);
-    SupportMapFragment mapFragment =
-        (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.static_map);
-    if (mapFragment != null) {
-      mapFragment.getMapAsync(this);
-    } else {
-      LogUtil.w("StaticMapFragment.onViewCreated", "No map fragment found!");
-    }
-  }
-
-  @Override
-  public void onMapReady(GoogleMap googleMap) {
-    Location location = getArguments().getParcelable(ARG_LOCATION);
-    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
-    googleMap.addMarker(new MarkerOptions().position(latLng).flat(true).draggable(false));
-    googleMap.getUiSettings().setMapToolbarEnabled(false);
-    googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15f));
-  }
-}
diff --git a/java/com/android/incallui/maps/impl/res/layout/static_map_fragment.xml b/java/com/android/incallui/maps/impl/res/layout/static_map_fragment.xml
deleted file mode 100644
index 54f41cb..0000000
--- a/java/com/android/incallui/maps/impl/res/layout/static_map_fragment.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  xmlns:map="http://schemas.android.com/apk/res-auto"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent">
-  <fragment
-    android:id="@+id/static_map"
-    class="com.google.android.gms.maps.SupportMapFragment"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    map:liteMode="true"
-    map:mapType="normal"/>
-</FrameLayout>
diff --git a/java/com/android/incallui/maps/stub/StubMapsModule.java b/java/com/android/incallui/maps/stub/StubMapsModule.java
deleted file mode 100644
index 3a193b1..0000000
--- a/java/com/android/incallui/maps/stub/StubMapsModule.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.maps.stub;
-
-import android.location.Location;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
-import com.android.dialer.common.Assert;
-import com.android.incallui.maps.Maps;
-import dagger.Binds;
-import dagger.Module;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-/** Stub for the maps module for build variants that don't support Google Play Services. */
-@Module
-public abstract class StubMapsModule {
-
-  @Binds
-  @Singleton
-  public abstract Maps bindMaps(StubMaps maps);
-
-  static final class StubMaps implements Maps {
-    @Inject
-    public StubMaps() {}
-
-    @Override
-    public boolean isAvailable() {
-      return false;
-    }
-
-    @NonNull
-    @Override
-    public Fragment createStaticMapFragment(@NonNull Location location) {
-      throw Assert.createUnsupportedOperationFailException();
-    }
-  }
-}
diff --git a/java/com/android/incallui/multisim/SwapSimWorker.java b/java/com/android/incallui/multisim/SwapSimWorker.java
index 1014d82..6aca4d6 100644
--- a/java/com/android/incallui/multisim/SwapSimWorker.java
+++ b/java/com/android/incallui/multisim/SwapSimWorker.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,14 +20,15 @@
 import android.content.Context;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
@@ -37,6 +39,7 @@
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCallListener;
 import com.android.incallui.incalluilock.InCallUiLock;
+
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
@@ -62,8 +65,6 @@
 
   private final int timeoutMillis;
 
-  private CountDownLatch latchForTest;
-
   @MainThread
   public SwapSimWorker(
       Context context,
@@ -74,7 +75,6 @@
     this(context, call, callList, otherAccount, lock, DEFAULT_TIMEOUT_MILLIS);
   }
 
-  @VisibleForTesting
   SwapSimWorker(
       Context context,
       DialerCall call,
@@ -118,9 +118,6 @@
       extras.putParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, otherAccount);
       callList.addListener(this);
       telecomManager.placeCall(Uri.fromParts(PhoneAccount.SCHEME_TEL, number, null), extras);
-      if (latchForTest != null) {
-        latchForTest.countDown();
-      }
       if (!dialingLatch.await(timeoutMillis, TimeUnit.MILLISECONDS)) {
         LogUtil.e("SwapSimWorker.doInBackground", "timeout waiting for call to dial");
       }
@@ -152,11 +149,6 @@
     }
   }
 
-  @VisibleForTesting
-  void setLatchForTest(CountDownLatch latch) {
-    latchForTest = latch;
-  }
-
   @Override
   public void onDialerCallUpdate() {}
 
@@ -182,9 +174,6 @@
   public void onInternationalCallOnWifi() {}
 
   @Override
-  public void onEnrichedCallSessionUpdate() {}
-
-  @Override
   public void onIncomingCall(DialerCall call) {}
 
   @Override
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_call_split_white_24dp.png b/java/com/android/incallui/res/drawable-hdpi/ic_call_split_white_24dp.png
deleted file mode 100644
index 4e3dbf5..0000000
--- a/java/com/android/incallui/res/drawable-hdpi/ic_call_split_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_01.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_01.png
deleted file mode 100644
index e4ff6db..0000000
--- a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_01.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_02.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_02.png
deleted file mode 100644
index bc2b3d2..0000000
--- a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_02.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_03.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_03.png
deleted file mode 100644
index fa936cb..0000000
--- a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_03.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_04.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_04.png
deleted file mode 100644
index ef51379..0000000
--- a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_04.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_05.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_05.png
deleted file mode 100644
index 3712d16..0000000
--- a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_05.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_06.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_06.png
deleted file mode 100644
index c6a4216..0000000
--- a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_06.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_07.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_07.png
deleted file mode 100644
index e4ff6db..0000000
--- a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_07.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_08.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_08.png
deleted file mode 100644
index e4ff6db..0000000
--- a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_08.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_09.png b/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_09.png
deleted file mode 100644
index e4ff6db..0000000
--- a/java/com/android/incallui/res/drawable-hdpi/ic_ongoing_phone_24px_09.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-mdpi/ic_call_split_white_24dp.png b/java/com/android/incallui/res/drawable-mdpi/ic_call_split_white_24dp.png
deleted file mode 100644
index cb7ee1f..0000000
--- a/java/com/android/incallui/res/drawable-mdpi/ic_call_split_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_01.png b/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_01.png
deleted file mode 100644
index ae31e04..0000000
--- a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_01.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_02.png b/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_02.png
deleted file mode 100644
index 67b2b16..0000000
--- a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_02.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_03.png b/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_03.png
deleted file mode 100644
index 46abea3..0000000
--- a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_03.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_04.png b/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_04.png
deleted file mode 100644
index 0d787ff..0000000
--- a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_04.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_05.png b/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_05.png
deleted file mode 100644
index 2da4b40..0000000
--- a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_05.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_06.png b/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_06.png
deleted file mode 100644
index a34cf4d..0000000
--- a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_06.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_07.png b/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_07.png
deleted file mode 100644
index ae31e04..0000000
--- a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_07.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_08.png b/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_08.png
deleted file mode 100644
index ae31e04..0000000
--- a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_08.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_09.png b/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_09.png
deleted file mode 100644
index ae31e04..0000000
--- a/java/com/android/incallui/res/drawable-mdpi/ic_ongoing_phone_24px_09.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xhdpi/ic_call_split_white_24dp.png b/java/com/android/incallui/res/drawable-xhdpi/ic_call_split_white_24dp.png
deleted file mode 100644
index 218cb12..0000000
--- a/java/com/android/incallui/res/drawable-xhdpi/ic_call_split_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_01.png b/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_01.png
deleted file mode 100644
index 80ad50b..0000000
--- a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_01.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_02.png b/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_02.png
deleted file mode 100644
index 1fb69a4..0000000
--- a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_02.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_03.png b/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_03.png
deleted file mode 100644
index 2578be1..0000000
--- a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_03.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_04.png b/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_04.png
deleted file mode 100644
index 9a5b91f..0000000
--- a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_04.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_05.png b/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_05.png
deleted file mode 100644
index 69b472b..0000000
--- a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_05.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_06.png b/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_06.png
deleted file mode 100644
index 118ea33..0000000
--- a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_06.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_07.png b/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_07.png
deleted file mode 100644
index 80ad50b..0000000
--- a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_07.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_08.png b/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_08.png
deleted file mode 100644
index 80ad50b..0000000
--- a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_08.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_09.png b/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_09.png
deleted file mode 100644
index 80ad50b..0000000
--- a/java/com/android/incallui/res/drawable-xhdpi/ic_ongoing_phone_24px_09.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xxhdpi/ic_call_split_white_24dp.png b/java/com/android/incallui/res/drawable-xxhdpi/ic_call_split_white_24dp.png
deleted file mode 100644
index 5ea5777..0000000
--- a/java/com/android/incallui/res/drawable-xxhdpi/ic_call_split_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_01.png b/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_01.png
deleted file mode 100644
index 871a1ee..0000000
--- a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_01.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_02.png b/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_02.png
deleted file mode 100644
index 028e43b..0000000
--- a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_02.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_03.png b/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_03.png
deleted file mode 100644
index b7dd070..0000000
--- a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_03.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_04.png b/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_04.png
deleted file mode 100644
index 887c803..0000000
--- a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_04.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_05.png b/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_05.png
deleted file mode 100644
index c6ec168..0000000
--- a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_05.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_06.png b/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_06.png
deleted file mode 100644
index d0b1e86..0000000
--- a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_06.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_07.png b/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_07.png
deleted file mode 100644
index 871a1ee..0000000
--- a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_07.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_08.png b/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_08.png
deleted file mode 100644
index 871a1ee..0000000
--- a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_08.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_09.png b/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_09.png
deleted file mode 100644
index 871a1ee..0000000
--- a/java/com/android/incallui/res/drawable-xxhdpi/ic_ongoing_phone_24px_09.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable-xxxhdpi/ic_call_split_white_24dp.png b/java/com/android/incallui/res/drawable-xxxhdpi/ic_call_split_white_24dp.png
deleted file mode 100644
index 600cec8..0000000
--- a/java/com/android/incallui/res/drawable-xxxhdpi/ic_call_split_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/res/drawable/ic_hd_call.xml b/java/com/android/incallui/res/drawable/ic_hd_call.xml
deleted file mode 100644
index b887d3f..0000000
--- a/java/com/android/incallui/res/drawable/ic_hd_call.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<!-- This is came from Motorola which is requested by Sprint for HD call. -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-  android:height="24dp"
-  android:viewportHeight="24.0"
-  android:viewportWidth="24.0"
-  android:width="24dp">
-
-  <path
-    android:fillColor="#fff"
-    android:pathData="M4.54,12.9A14.83,14.83 0,0 0,11 19.35l2.15,-2.15a1,1 0,0 1,1 -0.23,11.17 11.17,0 0,0 3.5,0.56 1,1 0,0 1,1 1v3.42a1,1 0,0 1,-1 1A16.64,16.64 0,0 1,1 6.25a1,1 0,0 1,1 -1H5.41a1,1 0,0 1,1 1,11.12 11.12,0 0,0 0.56,3.5 1,1 0,0 1,-0.24 1Z"/>
-  <path
-    android:fillColor="#fff"
-    android:pathData="M15.38,12.67H14.22V8.44H10.54v4.23H9.38V3.51h1.15V7.45h3.69V3.51h1.16Z"/>
-  <path
-    android:fillColor="#fff"
-    android:pathData="M17.37,12.67V3.51h2.18a3.15,3.15 0,0 1,2.49 1,4.12 4.12,0 0,1 0.89,2.82V8.87a4,4 0,0 1,-0.9 2.81,3.35 3.35,0 0,1 -2.61,1ZM18.52,4.5v7.18h0.92a2.14,2.14 0,0 0,1.77 -0.7,3.28 3.28,0 0,0 0.57,-2.06V7.3a3.32,3.32 0,0 0,-0.56 -2.12,2.05 2.05,0 0,0 -1.68,-0.68Z"/>
-</vector>
\ No newline at end of file
diff --git a/java/com/android/incallui/res/drawable/on_going_call.xml b/java/com/android/incallui/res/drawable/on_going_call.xml
index 438ba82..664e473 100644
--- a/java/com/android/incallui/res/drawable/on_going_call.xml
+++ b/java/com/android/incallui/res/drawable/on_going_call.xml
@@ -1,47 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
-  android:oneshot="false">
-  <item
-    android:drawable="@drawable/ic_ongoing_phone_24px_01"
-    android:duration="200"/>
-  <item
-    android:drawable="@drawable/ic_ongoing_phone_24px_02"
-    android:duration="200"/>
-  <item
-    android:drawable="@drawable/ic_ongoing_phone_24px_03"
-    android:duration="200"/>
-  <item
-    android:drawable="@drawable/ic_ongoing_phone_24px_04"
-    android:duration="200"/>
-  <item
-    android:drawable="@drawable/ic_ongoing_phone_24px_05"
-    android:duration="200"/>
-  <item
-    android:drawable="@drawable/ic_ongoing_phone_24px_06"
-    android:duration="200"/>
-  <item
-    android:drawable="@drawable/ic_ongoing_phone_24px_07"
-    android:duration="200"/>
-  <item
-    android:drawable="@drawable/ic_ongoing_phone_24px_08"
-    android:duration="200"/>
-  <item
-    android:drawable="@drawable/ic_ongoing_phone_24px_09"
-    android:duration="200"/>
-</animation-list>
+  SPDX-FileCopyrightText: Material Design Authors / Google LLC
+  SPDX-License-Identifier: Apache-2.0
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M760,478Q760,361 678.5,279.5Q597,198 480,198L480,118Q555,118 620.5,146.5Q686,175 734.5,223.5Q783,272 811.5,337.5Q840,403 840,478L760,478ZM600,478Q600,428 565,393Q530,358 480,358L480,278Q563,278 621.5,336.5Q680,395 680,478L600,478ZM798,840Q673,840 551,785.5Q429,731 329,631Q229,531 174.5,409Q120,287 120,162Q120,144 132,132Q144,120 162,120L324,120Q338,120 349,129.5Q360,139 362,152L388,292Q390,308 387,319Q384,330 376,338L279,436Q299,473 326.5,507.5Q354,542 387,574Q418,605 452,631.5Q486,658 524,680L618,586Q627,577 641.5,572.5Q656,568 670,570L808,598Q822,602 831,612.5Q840,623 840,636L840,798Q840,816 828,828Q816,840 798,840Z"/>
+</vector>
diff --git a/java/com/android/incallui/res/layout/caller_in_conference.xml b/java/com/android/incallui/res/layout/caller_in_conference.xml
index 3f660c5..6c86d8c 100644
--- a/java/com/android/incallui/res/layout/caller_in_conference.xml
+++ b/java/com/android/incallui/res/layout/caller_in_conference.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
+<!--
+     Copyright (C) 2008 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -16,6 +18,7 @@
 
 <LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
   android:layout_width="match_parent"
   android:layout_height="64dp"
   android:paddingStart="16dp"
@@ -97,8 +100,8 @@
     android:clickable="true"
     android:contentDescription="@string/goPrivate"
     android:scaleType="center"
-    android:src="@drawable/ic_call_split_white_24dp"
-    android:tint="?colorIcon"/>
+    android:src="@drawable/quantum_ic_call_split_vd_theme_24"
+    app:tint="?colorIcon" />
 
   <!-- "Disconnect" button which terminates the connection with this caller. -->
   <ImageButton
@@ -110,7 +113,7 @@
     android:clickable="true"
     android:contentDescription="@string/conference_caller_disconnect_content_description"
     android:scaleType="center"
-    android:src="@drawable/quantum_ic_call_end_white_24"
-    android:tint="?colorIcon"/>
+    android:src="@drawable/quantum_ic_call_end_vd_theme_24"
+    app:tint="?colorIcon" />
 
 </LinearLayout>  <!-- End of single list element -->
diff --git a/java/com/android/incallui/res/values-af/strings.xml b/java/com/android/incallui/res/values-af/strings.xml
index 77e447d..bf56f9b 100644
--- a/java/com/android/incallui/res/values-af/strings.xml
+++ b/java/com/android/incallui/res/values-af/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Inkomende oproep</string>
   <string name="notification_incoming_video_call">Inkomende video-oproep</string>
   <string name="notification_incoming_call_mutli_sim">Inkomende oproep via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Inkomende oproep met foto</string>
-  <string name="notification_incoming_call_with_message">Inkomende oproep met boodskap</string>
-  <string name="notification_incoming_call_with_location">Inkomende oproep met ligging</string>
-  <string name="notification_incoming_call_with_photo_message">Inkomende oproep met foto en boodskap</string>
-  <string name="notification_incoming_call_with_photo_location">Inkomende oproep met foto en ligging</string>
-  <string name="notification_incoming_call_with_message_location">Inkomende oproep met boodskap en ligging</string>
-  <string name="notification_incoming_call_with_photo_message_location">Inkomende oproep met foto, boodskap en ligging</string>
-  <string name="notification_incoming_call_attachments">Inkomende oproep met aanhegsels</string>
-  <string name="important_notification_incoming_call">Belangrike inkomende oproep</string>
-  <string name="important_notification_incoming_call_with_photo">Belangrike inkomende oproep met foto</string>
-  <string name="important_notification_incoming_call_with_message">Belangrike inkomende oproep met boodskap</string>
-  <string name="important_notification_incoming_call_with_location">Belangrike inkomende oproep met ligging</string>
-  <string name="important_notification_incoming_call_with_photo_message">Belangrike inkomende oproep met foto en boodskap</string>
-  <string name="important_notification_incoming_call_with_photo_location">Belangrike inkomende oproep met foto en ligging</string>
-  <string name="important_notification_incoming_call_with_message_location">Belangrike inkomende oproep met boodskap en ligging</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Belangrike inkomende oproep met foto, boodskap en ligging</string>
-  <string name="important_notification_incoming_call_attachments">Belangrike inkomende oproep met aanhegsels</string>
   <string name="notification_incoming_work_call">Inkomende werkoproep</string>
   <string name="notification_incoming_spam_call">Inkomende verdagte strooipos-oproep</string>
   <string name="notification_requesting_video_call">Inkomende videoversoek</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Kon nie na Wi-Fi-netwerk oorskakel nie</string>
   <string name="video_call_lte_to_wifi_failed_message">Video-oproep sal op mobiele netwerk bly. Standaard datakoste kan dalk geld.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Moenie dit weer wys nie</string>
-  <string name="bubble_return_to_call">Terug na oproep</string>
-  <string name="rtt_request_dialog_title">Sluit by RTT-oproep aan?</string>
+    <string name="rtt_request_dialog_title">Sluit by RTT-oproep aan?</string>
   <string name="rtt_request_dialog_details">%1$s wil boodskappe binne jou stemoproep gebruik.</string>
   <string name="rtt_request_dialog_more_information">RTT help bellers wat doof of gehoorgestremd is, \'n spraakgestremdheid het, of meer as net spraak benodig.</string>
   <string name="rtt_button_decline_request">Nee, dankie</string>
diff --git a/java/com/android/incallui/res/values-am/strings.xml b/java/com/android/incallui/res/values-am/strings.xml
index fd8ca2f..b53758a 100644
--- a/java/com/android/incallui/res/values-am/strings.xml
+++ b/java/com/android/incallui/res/values-am/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">ገቢ ጥሪ</string>
   <string name="notification_incoming_video_call">ገቢ የቪዲዮ ጥሪ</string>
   <string name="notification_incoming_call_mutli_sim">በ%1$s በኩል ገቢ ጥሪ</string>
-  <string name="notification_incoming_call_with_photo">ገቢ ጥሪ ከፎቶ ጋር</string>
-  <string name="notification_incoming_call_with_message">ገቢ ጥሪ ከመልዕክት ጋር</string>
-  <string name="notification_incoming_call_with_location">ገቢ ጥሪ ከአካባቢ ጋር</string>
-  <string name="notification_incoming_call_with_photo_message">ገቢ ጥሪ ከፎቶ እና መልዕክት ጋር</string>
-  <string name="notification_incoming_call_with_photo_location">ገቢ ጥሪ ከፎቶ እና አካባቢ ጋር</string>
-  <string name="notification_incoming_call_with_message_location">ገቢ ጥሪ ከመልዕክት እና አካባቢ ጋር</string>
-  <string name="notification_incoming_call_with_photo_message_location">ገቢ ጥሪ ከፎቶ፣ መልዕክት እና አካባቢ ጋር</string>
-  <string name="notification_incoming_call_attachments">ገቢ ጥሪ ከአባሪዎች ጋር</string>
-  <string name="important_notification_incoming_call">አስፈላጊ ገቢ ጥሪ</string>
-  <string name="important_notification_incoming_call_with_photo">አስፈላጊ ገቢ ጥሪ ከፎቶ ጋር</string>
-  <string name="important_notification_incoming_call_with_message">አስፈላጊ ገቢ ጥሪ ከመልዕክት ጋር</string>
-  <string name="important_notification_incoming_call_with_location">አስፈላጊ ገቢ ጥሪ ከአካባቢ ጋር</string>
-  <string name="important_notification_incoming_call_with_photo_message">አስፈላጊ ገቢ ጥሪ ከፎቶ እና መልዕክት ጋር</string>
-  <string name="important_notification_incoming_call_with_photo_location">አስፈላጊ ገቢ ጥሪ ከፎቶ እና አካባቢ ጋር</string>
-  <string name="important_notification_incoming_call_with_message_location">አስፈላጊ ገቢ ጥሪ ከመልዕክት እና አካባቢ ጋር</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">አስፈላጊ ገቢ ጥሪ ከፎቶ፣ መልዕክት እና አካባቢ ጋር</string>
-  <string name="important_notification_incoming_call_attachments">አስፈላጊ ገቢ ጥሪ ከአባሪ ጋር</string>
   <string name="notification_incoming_work_call">ገቢ የሥራ ጥሪ</string>
   <string name="notification_incoming_spam_call">መጪ የተጠረጠረ የአይፈለጌ መልዕክት ጥሪ</string>
   <string name="notification_requesting_video_call">ገቢ የቪዲዮ ጥያቄ</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">ወደ Wi-Fi አውታረ መረብ መቀየር አልተቻለም</string>
   <string name="video_call_lte_to_wifi_failed_message">የቪዲዮ ጥሪ በተንቀሳቃሽ ስልክ አውታረ መረብ ላይ ይቆያል። መደበኛ የውሂብ ክፍያዎች ተፈጻሚ ሊሆኑ ይችላሉ።</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">ይህን በድጋሚ አታሳይ</string>
-  <string name="bubble_return_to_call">ወደ ጥሪ ተመለስ</string>
-  <string name="rtt_request_dialog_title">አርቲቲ ጥሪን ይቀላቀሉ?</string>
+    <string name="rtt_request_dialog_title">አርቲቲ ጥሪን ይቀላቀሉ?</string>
   <string name="rtt_request_dialog_details">%1$s በድምጽ ጥሪዎ ውስጥ መልዕክት መላላክን መጠቀም ይፈልጋሉ።</string>
   <string name="rtt_request_dialog_more_information">አርቲቲ መስማት የተሳናቸው፣ የመስማት ችግር ያለባቸው እና የንግግር አካል ጉዳት ያለባቸው ወይም ከድምጽ ብቻ በላይ የሚያስፈልጋቸውን ደዋዮች ያግዛል።</string>
   <string name="rtt_button_decline_request">አይ አመሰግናለሁ</string>
diff --git a/java/com/android/incallui/res/values-ar/cm_strings.xml b/java/com/android/incallui/res/values-ar/cm_strings.xml
new file mode 100644
index 0000000..5c0a22b
--- /dev/null
+++ b/java/com/android/incallui/res/values-ar/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">فشل في بدء تسجيل المكالمة</string>
+    <string name="call_recording_file_location">تم حفظ المكالمة المسجلة في <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">تسجيل المكالمة</string>
+    <string name="onscreenCallRecordingText">تسجيل المكالمة - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">إيقاف التسجيل</string>
+    <string name="recording_warning_title">تمكين تسجيل المكالمات؟</string>
+    <string name="recording_warning_text">إشعار: أنت مسؤول عن الامتثال لأي من القوانين والأنظمة والقواعد التي تنطبق على استخدام خاصية تسجيل المكالمات واستخدام أو توزيع تلك التسجيلات.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-ar/strings.xml b/java/com/android/incallui/res/values-ar/strings.xml
index 95c399f..c903fdf 100644
--- a/java/com/android/incallui/res/values-ar/strings.xml
+++ b/java/com/android/incallui/res/values-ar/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">مكالمة واردة</string>
   <string name="notification_incoming_video_call">مكالمة فيديو واردة</string>
   <string name="notification_incoming_call_mutli_sim">مكالمة واردة عبر %1$s</string>
-  <string name="notification_incoming_call_with_photo">مكالمة واردة مع صورة</string>
-  <string name="notification_incoming_call_with_message">مكالمة واردة مع رسالة</string>
-  <string name="notification_incoming_call_with_location">مكالمة واردة مع موقع</string>
-  <string name="notification_incoming_call_with_photo_message">مكالمة واردة مع صورة ورسالة</string>
-  <string name="notification_incoming_call_with_photo_location">مكالمة واردة مع صورة وموقع</string>
-  <string name="notification_incoming_call_with_message_location">مكالمة واردة مع رسالة وموقع</string>
-  <string name="notification_incoming_call_with_photo_message_location">مكالمة واردة مع صورة ورسالة وموقع</string>
-  <string name="notification_incoming_call_attachments">مكالمة واردة مع مرفقات</string>
-  <string name="important_notification_incoming_call">مكالمة واردة مهمة</string>
-  <string name="important_notification_incoming_call_with_photo">مكالمة واردة مهمة مع صورة</string>
-  <string name="important_notification_incoming_call_with_message">مكالمة واردة مهمة مع رسالة</string>
-  <string name="important_notification_incoming_call_with_location">مكالمة واردة مهمة مع موقع</string>
-  <string name="important_notification_incoming_call_with_photo_message">مكالمة واردة مهمة مع صورة ورسالة</string>
-  <string name="important_notification_incoming_call_with_photo_location">مكالمة واردة مهمة مع صورة وموقع</string>
-  <string name="important_notification_incoming_call_with_message_location">مكالمة واردة مهمة مع رسالة وموقع</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">مكالمة واردة مهمة مع صورة ورسالة وموقع</string>
-  <string name="important_notification_incoming_call_attachments">مكالمة واردة مهمة مع مرفقات</string>
   <string name="notification_incoming_work_call">مكالمة عمل واردة</string>
   <string name="notification_incoming_spam_call">مكالمة واردة يشتبه في كونها غير مرغوب فيها</string>
   <string name="notification_requesting_video_call">طلب فيديو وارد</string>
@@ -59,7 +42,6 @@
   <string name="video_call_lte_to_wifi_failed_title">‏تعذر التبديل إلى شبكة Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">ستظل مكالمة الفيديو جارية على شبكة الجوال. قد يتم تطبيق رسوم قياسية على استخدام البيانات.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">عدم إظهار هذا مرة أخرى</string>
-  <string name="bubble_return_to_call">رجوع إلى المكالمة</string>
   <string name="rtt_request_dialog_title">هل تريد الانضام إلى مكالمة باستخدام ميزة \"المراسلة النصية في الوقت الفعلي\"؟</string>
   <string name="rtt_request_dialog_details">يريد %1$s استخدام المراسلة في مكالمتك الصوتية.</string>
   <string name="rtt_request_dialog_more_information">تساعد ميزة \"المراسلة النصية في الوقت الفعلي\" المتصلين الذين يعانون من فقدان حاسة السمع أو من ضعف في السمع أو ليست لديهم القدرة على التحدث أو يحتاجون إلى ما هو أكثر من الصوت فقط.</string>
diff --git a/java/com/android/incallui/res/values-ast-rES/cm_strings.xml b/java/com/android/incallui/res/values-ast-rES/cm_strings.xml
new file mode 100644
index 0000000..d7e65aa
--- /dev/null
+++ b/java/com/android/incallui/res/values-ast-rES/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Hebo un fallu al aniciar la grabación de la llamada</string>
+    <string name="call_recording_file_location">La grabación de la llamada guardóse en: <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Grabar la llamada</string>
+    <string name="onscreenCallRecordingText">Grabación d\'una llamada - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Dexar de grabar</string>
+    <string name="recording_warning_title">¿Quies activar la grabación de llamaes?</string>
+    <string name="recording_warning_text">Nota: Yes responsable del cumplimientu de cualesquier llei, regulación y regles que s\'apliquen al usar la función de grabación de llamaes y de la distrubución y usu d\'eses grabaciones.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-az/cm_strings.xml b/java/com/android/incallui/res/values-az/cm_strings.xml
new file mode 100644
index 0000000..2ccb889
--- /dev/null
+++ b/java/com/android/incallui/res/values-az/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Zəng səsyazması başladılmadı</string>
+    <string name="call_recording_file_location">Zəng səsyazmasının saxlanıldığı yer: <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Zəngin səsini yaz</string>
+    <string name="onscreenCallRecordingText">Zəngin səsi yazılır - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Səsyazmanı dayandır</string>
+    <string name="recording_warning_title">Zəng səsyazması fəallaşdırılsın?</string>
+    <string name="recording_warning_text">Xəbərdarlıq: Zəng səsyazma funksiyasının istifadəsi, bu yazıların istifadəsi və yayılması ilə əlaqadər qanun, müddəa və qaydalara uymaq sizin məsuliyyətinizdədir.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-az/strings.xml b/java/com/android/incallui/res/values-az/strings.xml
index 2ee6c94..7c7adc1 100644
--- a/java/com/android/incallui/res/values-az/strings.xml
+++ b/java/com/android/incallui/res/values-az/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Gələn zəng</string>
   <string name="notification_incoming_video_call">Gələn video zəng</string>
   <string name="notification_incoming_call_mutli_sim">%1$s ilə gələn zəng</string>
-  <string name="notification_incoming_call_with_photo">Foto ilə gələn zəng</string>
-  <string name="notification_incoming_call_with_message">Mesaj ilə gələn zəng</string>
-  <string name="notification_incoming_call_with_location">Məkan ilə gələn zəng</string>
-  <string name="notification_incoming_call_with_photo_message">Foto və mesaj ilə gələn zəng</string>
-  <string name="notification_incoming_call_with_photo_location">Foto və məkan ilə gələn zəng</string>
-  <string name="notification_incoming_call_with_message_location">Mesaj və məkan ilə gələn zəng</string>
-  <string name="notification_incoming_call_with_photo_message_location">Foto, mesaj və məkan ilə gələn zəng</string>
-  <string name="notification_incoming_call_attachments">Qoşma ilə gələn zəng</string>
-  <string name="important_notification_incoming_call">Vacib gələn zəng</string>
-  <string name="important_notification_incoming_call_with_photo">Foto ilə gələn vacib zəng</string>
-  <string name="important_notification_incoming_call_with_message">Mesaj ilə gələn vacib zəng</string>
-  <string name="important_notification_incoming_call_with_location">Məkan ilə gələn vacib zəng</string>
-  <string name="important_notification_incoming_call_with_photo_message">Foto və mesaj ilə gələn vacib zəng</string>
-  <string name="important_notification_incoming_call_with_photo_location">Foto və məkan ilə gələn vacib zəng</string>
-  <string name="important_notification_incoming_call_with_message_location">Mesaj və məkan ilə gələn vacib zəng</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Foto, mesaj və məkan ilə gələn vacib zəng</string>
-  <string name="important_notification_incoming_call_attachments">Qoşma ilə gələn vacib zəng</string>
   <string name="notification_incoming_work_call">Daxil olan iş çağrısı</string>
   <string name="notification_incoming_spam_call">Şübhəli spam zəngi</string>
   <string name="notification_requesting_video_call">Gələn video çağrı</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi şəbəkəsinə qoşulmaq olmadı</string>
   <string name="video_call_lte_to_wifi_failed_message">Video zəng mobil şəbəkədə qalacaq. Standard data xərcləri tətbiq edilə bilər.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Bunu bi rdaha göstərməyin</string>
-  <string name="bubble_return_to_call">Zəngə geri qayıdın</string>
-  <string name="rtt_request_dialog_title">RTT zənginə qoşulsun?</string>
+    <string name="rtt_request_dialog_title">RTT zənginə qoşulsun?</string>
   <string name="rtt_request_dialog_details">%1$s səsli zəng daxilində mesajlaşmadan istifadə etmək istəyir.</string>
   <string name="rtt_request_dialog_more_information">RTT kar və ya eşitmə problemi, danışma qüsuru olan və ya səsdən daha çoxuna ehtiyac duyan şəxslərə dəstək olur.</string>
   <string name="rtt_button_decline_request">Xeyr, təşəkkürlər</string>
diff --git a/java/com/android/incallui/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/res/values-b+sr+Latn/strings.xml
index a5a753f..ac71483 100644
--- a/java/com/android/incallui/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/incallui/res/values-b+sr+Latn/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Dolazni poziv</string>
   <string name="notification_incoming_video_call">Dolazni video poziv</string>
   <string name="notification_incoming_call_mutli_sim">Dolazni poziv preko %1$s</string>
-  <string name="notification_incoming_call_with_photo">Dolazni poziv sa slikom</string>
-  <string name="notification_incoming_call_with_message">Dolazni poziv sa porukom</string>
-  <string name="notification_incoming_call_with_location">Dolazni poziv sa lokacijom</string>
-  <string name="notification_incoming_call_with_photo_message">Dolazni poziv sa slikom i porukom</string>
-  <string name="notification_incoming_call_with_photo_location">Dolazni poziv sa slikom i lokacijom</string>
-  <string name="notification_incoming_call_with_message_location">Dolazni poziv sa porukom i lokacijom</string>
-  <string name="notification_incoming_call_with_photo_message_location">Dolazni poziv sa slikom, porukom i lokacijom</string>
-  <string name="notification_incoming_call_attachments">Dolazni poziv sa prilozima</string>
-  <string name="important_notification_incoming_call">Važan dolazni poziv</string>
-  <string name="important_notification_incoming_call_with_photo">Važan dolazni poziv sa slikom</string>
-  <string name="important_notification_incoming_call_with_message">Važan dolazni poziv sa porukom</string>
-  <string name="important_notification_incoming_call_with_location">Važan dolazni poziv sa lokacijom</string>
-  <string name="important_notification_incoming_call_with_photo_message">Važan dolazni poziv sa slikom i porukom</string>
-  <string name="important_notification_incoming_call_with_photo_location">Važan dolazni poziv sa slikom i lokacijom</string>
-  <string name="important_notification_incoming_call_with_message_location">Važan dolazni poziv sa porukom i lokacijom</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Važan dolazni poziv sa slikom, porukom i lokacijom</string>
-  <string name="important_notification_incoming_call_attachments">Važan dolazni poziv sa prilozima</string>
   <string name="notification_incoming_work_call">Dolazni poziv za Work</string>
   <string name="notification_incoming_spam_call">Sumnja na nepoželjan dolazni poziv</string>
   <string name="notification_requesting_video_call">Zahtev za dolazni video poziv</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Prebacivanje na Wi‑Fi mrežu nije uspelo</string>
   <string name="video_call_lte_to_wifi_failed_message">Video poziv će ostati na mobilnoj mreži. Važe standardne naknade za prenos podataka.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ne prikazuj ovo ponovo</string>
-  <string name="bubble_return_to_call">Nazad u poziv</string>
-  <string name="rtt_request_dialog_title">Želite li da uđete u RTT poziv?</string>
+    <string name="rtt_request_dialog_title">Želite li da uđete u RTT poziv?</string>
   <string name="rtt_request_dialog_details">%1$s želi da koristi razmenu poruka u audio pozivu.</string>
   <string name="rtt_request_dialog_more_information">Tekst u realnom vremenu (RTT) pomaže pozivaocima koji su gluvi, slabo čuju, imaju teškoće u govoru ili kojima nije dovoljan samo glas.</string>
   <string name="rtt_button_decline_request">Ne, hvala</string>
diff --git a/java/com/android/incallui/res/values-be/cm_strings.xml b/java/com/android/incallui/res/values-be/cm_strings.xml
new file mode 100644
index 0000000..efac152
--- /dev/null
+++ b/java/com/android/incallui/res/values-be/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Не ўдалося пачаць запіс размовы</string>
+    <string name="call_recording_file_location">Запіс выкліку захаваны ў <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Запісаць выклік</string>
+    <string name="onscreenCallRecordingText">Запіс выкліку - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Спыніць запіс</string>
+    <string name="recording_warning_title">Уключыць запіс выклікаў?</string>
+    <string name="recording_warning_text">Заўвага: Вы поўнасцю адказваеце за выкананне любых законаў, палажэнняў і правіл, якія распаўсюджваюцца на выкарыстанне функцыі запісу тэлефонных размоў і выкарыстанне або распаўсюджванне гэтых запісаў.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-be/strings.xml b/java/com/android/incallui/res/values-be/strings.xml
index 040da93..3c5fcce 100644
--- a/java/com/android/incallui/res/values-be/strings.xml
+++ b/java/com/android/incallui/res/values-be/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Уваходны выклік</string>
   <string name="notification_incoming_video_call">Уваходны відэавыклік</string>
   <string name="notification_incoming_call_mutli_sim">Уваходны выклік праз %1$s</string>
-  <string name="notification_incoming_call_with_photo">Уваходны выклік з фота</string>
-  <string name="notification_incoming_call_with_message">Уваходны выклік з паведамленнем</string>
-  <string name="notification_incoming_call_with_location">Уваходны выклік з месцам</string>
-  <string name="notification_incoming_call_with_photo_message">Уваходны выклік з фота і паведамленнем</string>
-  <string name="notification_incoming_call_with_photo_location">Уваходны выклік з фота і месцам</string>
-  <string name="notification_incoming_call_with_message_location">Уваходны выклік з паведамленнем і месцам</string>
-  <string name="notification_incoming_call_with_photo_message_location">Уваходны выклік з фота, паведамленнем і месцам</string>
-  <string name="notification_incoming_call_attachments">Уваходны выклік з далучэннямі</string>
-  <string name="important_notification_incoming_call">Важны ўваходны выклік</string>
-  <string name="important_notification_incoming_call_with_photo">Важны ўваходны выклік з фота</string>
-  <string name="important_notification_incoming_call_with_message">Важны ўваходны выклік з паведамленнем</string>
-  <string name="important_notification_incoming_call_with_location">Важны ўваходны выклік з месцам</string>
-  <string name="important_notification_incoming_call_with_photo_message">Важны ўваходны выклік з фота і паведамленнем</string>
-  <string name="important_notification_incoming_call_with_photo_location">Важны ўваходны выклік з фота і месцам</string>
-  <string name="important_notification_incoming_call_with_message_location">Важны ўваходны выклік з паведамленнем і месцам</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Важны выклік з фота, паведамленнем і месцам</string>
-  <string name="important_notification_incoming_call_attachments">Важны ўваходны выклік з далучэннямі</string>
   <string name="notification_incoming_work_call">Уваходны выклік па працы</string>
   <string name="notification_incoming_spam_call">Уваходны выклiк ад абанента, якога падазраваюць у спаме</string>
   <string name="notification_requesting_video_call">Запыт уваходнага відэавыкліку</string>
@@ -59,7 +42,6 @@
   <string name="video_call_lte_to_wifi_failed_title">Немагчыма пераключыцца на сетку Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Відэавыклік застанецца ў мабільнай сетцы. Можа спаганяцца стандартная аплата за перадачу даных.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Больш не паказваць</string>
-  <string name="bubble_return_to_call">Вярнуцца да выкліку</string>
   <string name="rtt_request_dialog_title">Далучыцца да выкліку RTT?</string>
   <string name="rtt_request_dialog_details">Абанент %1$s хоча выкарыстоўваць абмен паведамленнямі ў межах галасавога выкліку.</string>
   <string name="rtt_request_dialog_more_information">RTT дапамагае абанентам з парушэннямі слыху і маўлення.</string>
diff --git a/java/com/android/incallui/res/values-bg/cm_strings.xml b/java/com/android/incallui/res/values-bg/cm_strings.xml
new file mode 100644
index 0000000..aac6b7b
--- /dev/null
+++ b/java/com/android/incallui/res/values-bg/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Неуспешен опит за записване на разговора</string>
+    <string name="call_recording_file_location">Записания разговор е запазен в <xliff:g id="filename">%s </xliff:g></string>
+    <string name="onscreenCallRecordText">Запис на разговор</string>
+    <string name="onscreenCallRecordingText">Запис разговор - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Спри записването</string>
+    <string name="recording_warning_title">Разреши записването на разговори?</string>
+    <string name="recording_warning_text">Забележка: Вие сте отговорни за спазването на всички закони, наредби и правила, които важат за използването на записани разговори или разпространение на тези записи.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-bg/strings.xml b/java/com/android/incallui/res/values-bg/strings.xml
index 3aea844..98940a5 100644
--- a/java/com/android/incallui/res/values-bg/strings.xml
+++ b/java/com/android/incallui/res/values-bg/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Вх. обаждане</string>
   <string name="notification_incoming_video_call">Входящо видеообаждане</string>
   <string name="notification_incoming_call_mutli_sim">Входящо обаждане през %1$s</string>
-  <string name="notification_incoming_call_with_photo">Входящо обаждане със снимка</string>
-  <string name="notification_incoming_call_with_message">Входящо обаждане със съобщение</string>
-  <string name="notification_incoming_call_with_location">Входящо обаждане с местоположение</string>
-  <string name="notification_incoming_call_with_photo_message">Входящо обаждане със снимка и съобщение</string>
-  <string name="notification_incoming_call_with_photo_location">Входящо обаждане със снимка и местоположение</string>
-  <string name="notification_incoming_call_with_message_location">Входящо обаждане със съобщение и местоположение</string>
-  <string name="notification_incoming_call_with_photo_message_location">Обаждане със снимка, съобщение и местоположение</string>
-  <string name="notification_incoming_call_attachments">Входящо обаждане с прикачени файлове</string>
-  <string name="important_notification_incoming_call">Важно входящо обаждане</string>
-  <string name="important_notification_incoming_call_with_photo">Важно входящо обаждане със снимка</string>
-  <string name="important_notification_incoming_call_with_message">Важно входящо обаждане със съобщение</string>
-  <string name="important_notification_incoming_call_with_location">Важно входящо обаждане с местоположение</string>
-  <string name="important_notification_incoming_call_with_photo_message">Важно входящо обаждане със снимка и съобщение</string>
-  <string name="important_notification_incoming_call_with_photo_location">Важно входящо обаждане със снимка и местоположение</string>
-  <string name="important_notification_incoming_call_with_message_location">Важно обаждане със съобщение и местоположение</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Важно обаждане с местоположение, снимка, съобщение</string>
-  <string name="important_notification_incoming_call_attachments">Важно входящо обаждане с прикачени файлове</string>
   <string name="notification_incoming_work_call">Входящо служебно обаждане</string>
   <string name="notification_incoming_spam_call">Входящо обаждане – възможен спам</string>
   <string name="notification_requesting_video_call">Входяща заявка за видеовръзка</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Превключването към Wi-Fi мрежа не бе възможно</string>
   <string name="video_call_lte_to_wifi_failed_message">Видеообаждането ще остане в мобилната мрежа. Важат стандартните тарифи за данни.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Това да не се показва отново</string>
-  <string name="bubble_return_to_call">Назад към обаждането</string>
-  <string name="rtt_request_dialog_title">Ще се присъедините ли към обаждането с ТСРВ?</string>
+    <string name="rtt_request_dialog_title">Ще се присъедините ли към обаждането с ТСРВ?</string>
   <string name="rtt_request_dialog_details">%1$s иска да използва съобщения в гласовото ви обаждане.</string>
   <string name="rtt_request_dialog_more_information">ТСРВ подпомага обаждащите се, които са глухи, с влошен слух, имат проблеми с говора или се нуждаят от повече от само глас.</string>
   <string name="rtt_button_decline_request">Не, благодаря</string>
diff --git a/java/com/android/incallui/res/values-bn/strings.xml b/java/com/android/incallui/res/values-bn/strings.xml
index cae92af..a864641 100644
--- a/java/com/android/incallui/res/values-bn/strings.xml
+++ b/java/com/android/incallui/res/values-bn/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">ইনকামিং কল</string>
   <string name="notification_incoming_video_call">ইনকামিং ভিডিও কল</string>
   <string name="notification_incoming_call_mutli_sim">%1$s এ কল আসছে</string>
-  <string name="notification_incoming_call_with_photo">ফটো সহ ইনকামিং কল</string>
-  <string name="notification_incoming_call_with_message">বার্তা সহ ইনকামিং কল</string>
-  <string name="notification_incoming_call_with_location">লোকেশন সহ ইনকামিং কল</string>
-  <string name="notification_incoming_call_with_photo_message">ফটো এবং বার্তা সহ ইনকামিং কল</string>
-  <string name="notification_incoming_call_with_photo_location">ফটো এবং লোকেশন সহ ইনকামিং কল</string>
-  <string name="notification_incoming_call_with_message_location">বার্তা এবং লোকেশন সহ ইনকামিং কল</string>
-  <string name="notification_incoming_call_with_photo_message_location">ফটো, বার্তা এবং লোকেশন সহ ইনকামিং কল</string>
-  <string name="notification_incoming_call_attachments">সংযুক্তিগুলি সহ ইনকামিং কল</string>
-  <string name="important_notification_incoming_call">গুরুত্বপূর্ণ ইনকামিং কল</string>
-  <string name="important_notification_incoming_call_with_photo">ফটো সহ গুরুত্বপূর্ণ ইনকামিং কল</string>
-  <string name="important_notification_incoming_call_with_message">বার্তা সহ গুরুত্বপূর্ণ ইনকামিং কল</string>
-  <string name="important_notification_incoming_call_with_location">লোকেশন সহ গুরুত্বপূর্ণ ইনকামিং কল</string>
-  <string name="important_notification_incoming_call_with_photo_message">ফটো এবং বার্তা সহ গুরুত্বপূর্ণ ইনকামিং কল</string>
-  <string name="important_notification_incoming_call_with_photo_location">ফটো এবং লোকেশন সহ গুরুত্বপূর্ণ ইনকামিং কল</string>
-  <string name="important_notification_incoming_call_with_message_location">বার্তা এবং লোকেশন সহ গুরুত্বপূর্ণ ইনকামিং কল</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">ফটো, বার্তা এবং লোকেশন সহ গুরুত্বপূর্ণ ইনকামিং কল</string>
-  <string name="important_notification_incoming_call_attachments">সংযুক্তিগুলি সহ গুরুত্বপূর্ণ ইনকামিং কল</string>
   <string name="notification_incoming_work_call">আগত কাজের কল</string>
   <string name="notification_incoming_spam_call">আগত সন্দেহভাজন স্প্যাম কল</string>
   <string name="notification_requesting_video_call">আগত ভিডিও অনুরোধ</string>
@@ -59,7 +42,6 @@
   <string name="video_call_lte_to_wifi_failed_title">ওয়াই-ফাই নেটওয়ার্কে পাল্টানো গেল না</string>
   <string name="video_call_lte_to_wifi_failed_message">ভিডিও কল মোবাইল নেটওয়ার্কেই থাকবে৷ স্ট্যান্ডার্ড ডেটা চার্জ প্রযোজ্য হতে পারে৷</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">এটি আমাকে আর দেখাবেন না</string>
-  <string name="bubble_return_to_call">কলে ফিরে যান</string>
   <string name="rtt_request_dialog_title">RTT কলে যোগ দেবেন?</string>
   <string name="rtt_request_dialog_details">%1$s আপনার ভয়েস কলে মেসেজ পাঠাতে চান।</string>
   <string name="rtt_request_dialog_more_information">যে কলাররা বধির, কানে কম শোনেন, যাদের কথা বলতে অসুবিধা হয় অথবা যারা কণ্ঠস্বরের সাথে অন্য কোনও উপায়ে নিজেদের প্রকাশ করেন, RTT বৈশিষ্ট্যটি তাদের সাহায্য করে।</string>
diff --git a/java/com/android/incallui/res/values-bs/strings.xml b/java/com/android/incallui/res/values-bs/strings.xml
index 101930d..7cc15b9 100644
--- a/java/com/android/incallui/res/values-bs/strings.xml
+++ b/java/com/android/incallui/res/values-bs/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Dolazni poziv</string>
   <string name="notification_incoming_video_call">Dolazni video poziv</string>
   <string name="notification_incoming_call_mutli_sim">Dolazni poziv sa SIM kartice %1$s</string>
-  <string name="notification_incoming_call_with_photo">Dolazni poziv s fotografijom</string>
-  <string name="notification_incoming_call_with_message">Dolazni poziv s porukom</string>
-  <string name="notification_incoming_call_with_location">Dolazni poziv s lokacijom</string>
-  <string name="notification_incoming_call_with_photo_message">Dolazni poziv s fotografijom i porukom</string>
-  <string name="notification_incoming_call_with_photo_location">Dolazni poziv s fotografijom i lokacijom</string>
-  <string name="notification_incoming_call_with_message_location">Dolazni poziv s porukom i lokacijom</string>
-  <string name="notification_incoming_call_with_photo_message_location">Dolazni poziv s fotografijom, porukom i lokacijom</string>
-  <string name="notification_incoming_call_attachments">Dolazni poziv s prilozima</string>
-  <string name="important_notification_incoming_call">Važan dolazni poziv</string>
-  <string name="important_notification_incoming_call_with_photo">Važan dolazni poziv s fotografijom</string>
-  <string name="important_notification_incoming_call_with_message">Važan dolazni poziv s porukom</string>
-  <string name="important_notification_incoming_call_with_location">Važan dolazni poziv s lokacijom</string>
-  <string name="important_notification_incoming_call_with_photo_message">Važan dolazni poziv s fotografijom i porukom</string>
-  <string name="important_notification_incoming_call_with_photo_location">Važan dolazni poziv s fotografijom i lokacijom</string>
-  <string name="important_notification_incoming_call_with_message_location">Važan dolazni poziv s porukom i lokacijom</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Važan poziv s fotografijom, porukom i lokacijom</string>
-  <string name="important_notification_incoming_call_attachments">Važan dolazni poziv s prilozima</string>
   <string name="notification_incoming_work_call">Dolazni poslovni poziv</string>
   <string name="notification_incoming_spam_call">Mogući neželjeni dolazni poziv</string>
   <string name="notification_requesting_video_call">Zahtjev za dolazni video poziv</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Prebacivanje na WiFi mrežu nije moguće</string>
   <string name="video_call_lte_to_wifi_failed_message">Video poziv će ostati na mobilnoj mreži. Mogu nastati standardni troškovi prijenosa podataka.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ne prikazuj ponovo</string>
-  <string name="bubble_return_to_call">Nazad na poziv</string>
-  <string name="rtt_request_dialog_title">Želite li se pridružiti RTT pozivu?</string>
+    <string name="rtt_request_dialog_title">Želite li se pridružiti RTT pozivu?</string>
   <string name="rtt_request_dialog_details">%1$s želi koristiti poruke u vašem glasovnom pozivu.</string>
   <string name="rtt_request_dialog_more_information">RTT pomaže pozivaocima koji su gluhi, imaju probleme sa sluhom ili govorom te onima kojima treba više od samog glasa.</string>
   <string name="rtt_button_decline_request">Ne, hvala</string>
diff --git a/java/com/android/incallui/res/values-ca/cm_strings.xml b/java/com/android/incallui/res/values-ca/cm_strings.xml
new file mode 100644
index 0000000..6fa383e
--- /dev/null
+++ b/java/com/android/incallui/res/values-ca/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">No s\'ha pogut començar l\'enregistrament de la trucada</string>
+    <string name="call_recording_file_location">La trucada enregistrada s\'ha desat a <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Enregistra la trucada</string>
+    <string name="onscreenCallRecordingText">Enregistrament de trucada - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Aturar l\'enregistrament</string>
+    <string name="recording_warning_title">Voleu activar l\'enregistrament de trucades?</string>
+    <string name="recording_warning_text">Avís: Sou el responsable del compliment de les lleis, reglaments i regles que s\'apliquen a l\'ús de la funcionalitat d\'enregistrament de trucades i l\'ús o distribució d\'aquests enregistraments.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-ca/strings.xml b/java/com/android/incallui/res/values-ca/strings.xml
index 17c1e61..f838f75 100644
--- a/java/com/android/incallui/res/values-ca/strings.xml
+++ b/java/com/android/incallui/res/values-ca/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Trucada entrant</string>
   <string name="notification_incoming_video_call">Videotrucada entrant</string>
   <string name="notification_incoming_call_mutli_sim">Trucada entrant per la %1$s</string>
-  <string name="notification_incoming_call_with_photo">Trucada entrant amb foto</string>
-  <string name="notification_incoming_call_with_message">Trucada entrant amb missatge</string>
-  <string name="notification_incoming_call_with_location">Trucada entrant amb ubicació</string>
-  <string name="notification_incoming_call_with_photo_message">Trucada entrant amb foto i missatge</string>
-  <string name="notification_incoming_call_with_photo_location">Trucada entrant amb foto i ubicació</string>
-  <string name="notification_incoming_call_with_message_location">Trucada entrant amb missatge i ubicació</string>
-  <string name="notification_incoming_call_with_photo_message_location">Trucada entrant amb foto, missatge i ubicació</string>
-  <string name="notification_incoming_call_attachments">Trucada entrant amb fitxers adjunts</string>
-  <string name="important_notification_incoming_call">Trucada entrant important</string>
-  <string name="important_notification_incoming_call_with_photo">Trucada entrant important amb foto</string>
-  <string name="important_notification_incoming_call_with_message">Trucada entrant important amb missatge</string>
-  <string name="important_notification_incoming_call_with_location">Trucada entrant important amb ubicació</string>
-  <string name="important_notification_incoming_call_with_photo_message">Trucada entrant important amb foto i missatge</string>
-  <string name="important_notification_incoming_call_with_photo_location">Trucada entrant important amb foto i ubicació</string>
-  <string name="important_notification_incoming_call_with_message_location">Trucada entrant important amb missatge i ubicació</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Trucada entrant important amb foto, missatge i ubicació</string>
-  <string name="important_notification_incoming_call_attachments">Trucada entrant important amb fitxers adjunts</string>
   <string name="notification_incoming_work_call">Trucada de feina entrant</string>
   <string name="notification_incoming_spam_call">Presumpta trucada brossa entrant</string>
   <string name="notification_requesting_video_call">Sol·licitud de vídeo entrant</string>
@@ -59,7 +42,6 @@
   <string name="video_call_lte_to_wifi_failed_title">No s\'ha pogut canviar a la xarxa Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">La videotrucada continuarà a la xarxa mòbil. És possible que s\'hi apliquin càrrecs de dades estàndard.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">No ho tornis a mostrar</string>
-  <string name="bubble_return_to_call">Torna a la trucada</string>
   <string name="rtt_request_dialog_title">Vols entrar a la trucada RTT?</string>
   <string name="rtt_request_dialog_details">%1$s vol utilitzar missatges durant la trucada de veu.</string>
   <string name="rtt_request_dialog_more_information">La funció RTT ofereix assistència als usuaris que són sords, tenen problemes d\'audició o alteracions de la parla, o bé que necessiten un text a banda de la veu.</string>
diff --git a/java/com/android/incallui/res/values-cs/cm_strings.xml b/java/com/android/incallui/res/values-cs/cm_strings.xml
new file mode 100644
index 0000000..6b4d9e3
--- /dev/null
+++ b/java/com/android/incallui/res/values-cs/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Selhalo spuštění pořízení záznamu</string>
+    <string name="call_recording_file_location">Hovor uložen do <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Nahrát hovor</string>
+    <string name="onscreenCallRecordingText">Nahrávání hovoru - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Zastavit nahrávání</string>
+    <string name="recording_warning_title">Povolit nahrávání hovoru?</string>
+    <string name="recording_warning_text">Poznámka: Jste zodpovědní za dodržování zákonů, předpisů a pravidel, které se vztahují k použití funkce nahrávání nebo distribuce těchto nahrávek.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-cs/strings.xml b/java/com/android/incallui/res/values-cs/strings.xml
index 0eb57ae..cc9249f 100644
--- a/java/com/android/incallui/res/values-cs/strings.xml
+++ b/java/com/android/incallui/res/values-cs/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Příchozí hovor</string>
   <string name="notification_incoming_video_call">Příchozí videohovor</string>
   <string name="notification_incoming_call_mutli_sim">Příchozí hovor přes %1$s</string>
-  <string name="notification_incoming_call_with_photo">Příchozí hovor s fotkou</string>
-  <string name="notification_incoming_call_with_message">Příchozí hovor se zprávou</string>
-  <string name="notification_incoming_call_with_location">Příchozí hovor s polohou</string>
-  <string name="notification_incoming_call_with_photo_message">Příchozí hovor s fotkou a zprávou</string>
-  <string name="notification_incoming_call_with_photo_location">Příchozí hovor s fotkou a polohou</string>
-  <string name="notification_incoming_call_with_message_location">Příchozí hovor se zprávou a polohou</string>
-  <string name="notification_incoming_call_with_photo_message_location">Příchozí hovor s fotkou, zprávou a polohou</string>
-  <string name="notification_incoming_call_attachments">Příchozí hovor s přílohami</string>
-  <string name="important_notification_incoming_call">Důležitý příchozí hovor</string>
-  <string name="important_notification_incoming_call_with_photo">Důležitý příchozí hovor s fotkou</string>
-  <string name="important_notification_incoming_call_with_message">Důležitý příchozí hovor se zprávou</string>
-  <string name="important_notification_incoming_call_with_location">Důležitý příchozí hovor s polohou</string>
-  <string name="important_notification_incoming_call_with_photo_message">Důležitý příchozí hovor s fotkou a zprávou</string>
-  <string name="important_notification_incoming_call_with_photo_location">Důležitý příchozí hovor s fotkou a polohou</string>
-  <string name="important_notification_incoming_call_with_message_location">Důležitý příchozí hovor se zprávou a polohou</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Důležitý přích. hovor s fotkou, zprávou a polohou</string>
-  <string name="important_notification_incoming_call_attachments">Důležitý příchozí hovor s přílohami</string>
   <string name="notification_incoming_work_call">Příchozí pracovní hovor</string>
   <string name="notification_incoming_spam_call">U příchozího hovoru máme podezření, že se jedná o spam</string>
   <string name="notification_requesting_video_call">Příchozí žádost o videohovor</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Přepnutí na síť Wi-Fi se nezdařilo</string>
   <string name="video_call_lte_to_wifi_failed_message">Videohovor zůstane na mobilní síti. Za datový přenos mohou být účtovány standardní poplatky.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Tuto zprávu příště nezobrazovat</string>
-  <string name="bubble_return_to_call">Zpět k hovoru</string>
-  <string name="rtt_request_dialog_title">Připojit se k hovoru se zprávami (RTT)?</string>
+    <string name="rtt_request_dialog_title">Připojit se k hovoru se zprávami (RTT)?</string>
   <string name="rtt_request_dialog_details">%1$s chce při hlasovém hovoru posílat zprávy.</string>
   <string name="rtt_request_dialog_more_information">Funkce SMS během hovoru (RTT) pomáhá volajícím, kteří neslyší, jsou nedoslýchaví, mají řečovou vadu, případně potřebují víc než jen hlas z jiného důvodu.</string>
   <string name="rtt_button_decline_request">Ne, díky</string>
diff --git a/java/com/android/incallui/res/values-cy/cm_strings.xml b/java/com/android/incallui/res/values-cy/cm_strings.xml
new file mode 100644
index 0000000..476b0d6
--- /dev/null
+++ b/java/com/android/incallui/res/values-cy/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Methwyd â dechrau recordio\'r galwad</string>
+    <string name="call_recording_file_location">Wedi cadw recordiad yr alwad i <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Recordio\'r galwad</string>
+    <string name="onscreenCallRecordingText">Yn recordio\'r galwad - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Stopio recordio</string>
+    <string name="recording_warning_title">Galluogi recordio galwadau?</string>
+    <string name="recording_warning_text">Nodyn: Ti sy\'n gyfrifol am gydymffurfio gydag unrhyw gyfreithiau, rheoliadau neu reolau sy\'n berthnasol wrth ddefnyddio\'r nodwedd recordio galwadau a hefyd am unrhyw ddefnydd neu rannu o\'r recordiadau.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-da/cm_strings.xml b/java/com/android/incallui/res/values-da/cm_strings.xml
new file mode 100644
index 0000000..a363bef
--- /dev/null
+++ b/java/com/android/incallui/res/values-da/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Start på opkaldsoptagelse fejlede</string>
+    <string name="call_recording_file_location">Gemte opkaldsoptagelse til <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Optag opkald</string>
+    <string name="onscreenCallRecordingText">Optager opkald - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Stop optagelse</string>
+    <string name="recording_warning_title">Aktivér opkaldoptagelse?</string>
+    <string name="recording_warning_text">Bemærk: Du er ansvarlig for overholdelse af alle love, reguleringer og regler, som gælder for brugen af opkaldsoptagelsesfunktionalitet, og brugen, eller distributionen af de optagelser.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-da/strings.xml b/java/com/android/incallui/res/values-da/strings.xml
index 3f7e97a..ffba39a 100644
--- a/java/com/android/incallui/res/values-da/strings.xml
+++ b/java/com/android/incallui/res/values-da/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Indgående opkald</string>
   <string name="notification_incoming_video_call">Indgående videoopkald</string>
   <string name="notification_incoming_call_mutli_sim">Indgående opkald via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Indgående opkald med billede</string>
-  <string name="notification_incoming_call_with_message">Indgående opkald med besked</string>
-  <string name="notification_incoming_call_with_location">Indgående opkald med placering</string>
-  <string name="notification_incoming_call_with_photo_message">Indgående opkald med billede og besked</string>
-  <string name="notification_incoming_call_with_photo_location">Indgående opkald med billede og placering</string>
-  <string name="notification_incoming_call_with_message_location">Indgående opkald med besked og placering</string>
-  <string name="notification_incoming_call_with_photo_message_location">Indgående opkald med billede, besked og placering</string>
-  <string name="notification_incoming_call_attachments">Indgående opkald med vedhæftede filer</string>
-  <string name="important_notification_incoming_call">Vigtigt indgående opkald</string>
-  <string name="important_notification_incoming_call_with_photo">Vigtigt indgående opkald med billede</string>
-  <string name="important_notification_incoming_call_with_message">Vigtigt indgående opkald med besked</string>
-  <string name="important_notification_incoming_call_with_location">Vigtigt indgående opkald med placering</string>
-  <string name="important_notification_incoming_call_with_photo_message">Vigtigt indgående opkald med billede og besked</string>
-  <string name="important_notification_incoming_call_with_photo_location">Vigtigt indgående opkald med billede og placering</string>
-  <string name="important_notification_incoming_call_with_message_location">Vigtigt indgående opkald med besked og placering</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Vigtigt opkald med billede, besked og placering</string>
-  <string name="important_notification_incoming_call_attachments">Vigtigt indgående opkald med vedhæftede filer</string>
   <string name="notification_incoming_work_call">Indgående opkald i forbindelse med arbejde</string>
   <string name="notification_incoming_spam_call">Indgående formodet spamopkald</string>
   <string name="notification_requesting_video_call">Indgående videoanmodning</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Du kunne ikke skifte til Wi-Fi-netværk</string>
   <string name="video_call_lte_to_wifi_failed_message">Videoopkaldet bliver ved med at bruge mobilnetværket. Du skal muligvis betale et standardgebyr for data.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Vis ikke dette igen</string>
-  <string name="bubble_return_to_call">Tilbage til opkald</string>
-  <string name="rtt_request_dialog_title">Vil du deltage i RTT-opkaldet?</string>
+    <string name="rtt_request_dialog_title">Vil du deltage i RTT-opkaldet?</string>
   <string name="rtt_request_dialog_details">%1$s vil gerne bruge beskeder i dit taleopkald.</string>
   <string name="rtt_request_dialog_more_information">RTT hjælper personer, som er døve, hørehæmmede, talehandicappede, eller som har brug for mere end bare tale, med at foretage opkald.</string>
   <string name="rtt_button_decline_request">Nej tak</string>
diff --git a/java/com/android/incallui/res/values-de/cm_strings.xml b/java/com/android/incallui/res/values-de/cm_strings.xml
new file mode 100644
index 0000000..3edb61b
--- /dev/null
+++ b/java/com/android/incallui/res/values-de/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Starten der Anrufaufzeichnung fehlgeschlagen</string>
+    <string name="call_recording_file_location">Anrufaufzeichnung gespeichert unter <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Anruf aufnehmen</string>
+    <string name="onscreenCallRecordingText">Aufnahme - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Aufnahme beenden</string>
+    <string name="recording_warning_title">Anrufaufzeichnung aktivieren?</string>
+    <string name="recording_warning_text">Hinweis: Du bist dafür verantwortlich, dass alle Gesetze, Verordnungen und Vorschriften für die Verwendung der Anrufaufnahme und die Verwendung oder Verteilung dieser Aufnahmen eingehalten werden.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-de/strings.xml b/java/com/android/incallui/res/values-de/strings.xml
index 4713882..45c7790 100644
--- a/java/com/android/incallui/res/values-de/strings.xml
+++ b/java/com/android/incallui/res/values-de/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Eingehender Anruf</string>
   <string name="notification_incoming_video_call">Eingehender Videoanruf</string>
   <string name="notification_incoming_call_mutli_sim">Eingehender Anruf über %1$s</string>
-  <string name="notification_incoming_call_with_photo">Eingehender Anruf mit Foto</string>
-  <string name="notification_incoming_call_with_message">Eingehender Anruf mit Nachricht</string>
-  <string name="notification_incoming_call_with_location">Eingehender Anruf mit Standort</string>
-  <string name="notification_incoming_call_with_photo_message">Eingehender Anruf mit Foto und Nachricht</string>
-  <string name="notification_incoming_call_with_photo_location">Eingehender Anruf mit Foto und Standort</string>
-  <string name="notification_incoming_call_with_message_location">Eingehender Anruf mit Nachricht und Standort</string>
-  <string name="notification_incoming_call_with_photo_message_location">Eingehender Anruf mit Foto, Nachricht und Standort</string>
-  <string name="notification_incoming_call_attachments">Eingehender Anruf mit Anhängen</string>
-  <string name="important_notification_incoming_call">Wichtiger eingehender Anruf</string>
-  <string name="important_notification_incoming_call_with_photo">Wichtiger eingehender Anruf mit Foto</string>
-  <string name="important_notification_incoming_call_with_message">Wichtiger eingehender Anruf mit Nachricht</string>
-  <string name="important_notification_incoming_call_with_location">Wichtiger eingehender Anruf mit Standort</string>
-  <string name="important_notification_incoming_call_with_photo_message">Wichtiger eingehender Anruf mit Foto und Nachricht</string>
-  <string name="important_notification_incoming_call_with_photo_location">Wichtiger eingehender Anruf mit Foto und Standort</string>
-  <string name="important_notification_incoming_call_with_message_location">Wichtiger eingehender Anruf mit Nachricht und Standort</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Wichtiger eingehender Anruf mit Foto, Nachricht und Standort</string>
-  <string name="important_notification_incoming_call_attachments">Wichtiger eingehender Anruf mit Anhängen</string>
   <string name="notification_incoming_work_call">Eingehender geschäftlicher Anruf</string>
   <string name="notification_incoming_spam_call">Verdacht auf eingehenden Spam-Anruf</string>
   <string name="notification_requesting_video_call">Eingehende Videoanfrage</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wechseln zu WLAN nicht möglich</string>
   <string name="video_call_lte_to_wifi_failed_message">Der Videoanruf erfolgt weiter über das Mobilfunknetz. Es können Standardgebühren für die Datenübertragung anfallen.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Meldung nicht mehr anzeigen</string>
-  <string name="bubble_return_to_call">Zurück zum Anruf</string>
-  <string name="rtt_request_dialog_title">An RTT-Anruf teilnehmen?</string>
+    <string name="rtt_request_dialog_title">An RTT-Anruf teilnehmen?</string>
   <string name="rtt_request_dialog_details">%1$s möchte innerhalb des Sprachanrufs Textnachrichten nutzen.</string>
   <string name="rtt_request_dialog_more_information">Echtzeittext (Real-Time Text, RTT) dient als Unterstützung für Anrufer, die gehörlos, schwerhörig oder sprachgeschädigt sind oder zusätzlich zur gesprochenen Sprache weitere Informationen benötigen.</string>
   <string name="rtt_button_decline_request">Nein danke</string>
diff --git a/java/com/android/incallui/res/values-el/cm_strings.xml b/java/com/android/incallui/res/values-el/cm_strings.xml
new file mode 100644
index 0000000..c5c492f
--- /dev/null
+++ b/java/com/android/incallui/res/values-el/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Αποτυχία έναρξης της καταγραφής κλήσης</string>
+    <string name="call_recording_file_location">Η εγγραφή αποθηκεύτηκε στο <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Καταγραφή κλήσης</string>
+    <string name="onscreenCallRecordingText">Καταγραφή κλήσης - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Διακοπή καταγραφής</string>
+    <string name="recording_warning_title">Ενεργοποίηση καταγραφής κλήσεων;</string>
+    <string name="recording_warning_text">Προσοχή: Είστε υπεύθυνοι για τη συμμόρφωση με οποιουσδήποτε νόμους, κανονισμούς και κανόνες που ισχύουν για τη χρήση της λειτουργίας καταγραφής κλήσεων και τη χρήση ή διανομή των καταγραφών αυτών.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-el/strings.xml b/java/com/android/incallui/res/values-el/strings.xml
index 10687f5..385c518 100644
--- a/java/com/android/incallui/res/values-el/strings.xml
+++ b/java/com/android/incallui/res/values-el/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Εισερχόμενη κλήση</string>
   <string name="notification_incoming_video_call">Εισερχόμενη βιντεοκλήση</string>
   <string name="notification_incoming_call_mutli_sim">Εισερχόμενη κλήση μέσω %1$s</string>
-  <string name="notification_incoming_call_with_photo">Εισερχόμενη κλήση με φωτογραφία</string>
-  <string name="notification_incoming_call_with_message">Εισερχόμενη κλήση με μήνυμα</string>
-  <string name="notification_incoming_call_with_location">Εισερχόμενη κλήση με τοποθεσία</string>
-  <string name="notification_incoming_call_with_photo_message">Εισερχόμενη κλήση με φωτογραφία και μήνυμα</string>
-  <string name="notification_incoming_call_with_photo_location">Εισερχόμενη κλήση με φωτογραφία και τοποθεσία</string>
-  <string name="notification_incoming_call_with_message_location">Εισερχόμενη κλήση με μήνυμα και τοποθεσία</string>
-  <string name="notification_incoming_call_with_photo_message_location">Εισερχόμενη κλήση με φωτο, μήνυμα και τοποθεσία</string>
-  <string name="notification_incoming_call_attachments">Εισερχόμενη κλήση με συνημμένα</string>
-  <string name="important_notification_incoming_call">Σημαντική εισερχόμενη κλήση</string>
-  <string name="important_notification_incoming_call_with_photo">Σημαντική εισερχόμενη κλήση με φωτογραφία</string>
-  <string name="important_notification_incoming_call_with_message">Σημαντική εισερχόμενη κλήση με μήνυμα</string>
-  <string name="important_notification_incoming_call_with_location">Σημαντική εισερχόμενη κλήση με τοποθεσία</string>
-  <string name="important_notification_incoming_call_with_photo_message">Σημαντική εισερχόμενη κλήση με φωτο και μήνυμα</string>
-  <string name="important_notification_incoming_call_with_photo_location">Σημαντική εισερχόμενη κλήση με φωτο και τοποθεσία</string>
-  <string name="important_notification_incoming_call_with_message_location">Σημαντική εισερχόμ. κλήση με μήνυμα και τοποθεσία</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Σημαντική εισερχ. κλήση με φωτο, μήνυμα, τοποθεσία</string>
-  <string name="important_notification_incoming_call_attachments">Σημαντική εισερχόμενη κλήση με συνημμένα</string>
   <string name="notification_incoming_work_call">Εισερχόμενη κλήση εργασίας</string>
   <string name="notification_incoming_spam_call">Πιθανώς ανεπιθύμητη εισερχόμενη κλήση</string>
   <string name="notification_requesting_video_call">Αίτημα εισερχόμενου βίντεο</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Δεν ήταν δυνατή η εναλλαγή σε δίκτυο Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Η βιντεοκλήση θα παραμείνει σε δίκτυο δεδομένων κινητής τηλεφωνίας; Ενδέχεται να ισχύουν βασικές χρεώσεις δεδομένων.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Να μην εμφανιστεί ξανά αυτό</string>
-  <string name="bubble_return_to_call">Επιστροφή στην κλήση</string>
-  <string name="rtt_request_dialog_title">Συμμετοχή σε κλήση RTT;</string>
+    <string name="rtt_request_dialog_title">Συμμετοχή σε κλήση RTT;</string>
   <string name="rtt_request_dialog_details">Ο χρήστης %1$s θέλει να χρησιμοποιήσει ανταλλαγή μηνυμάτων κατά τη διάρκεια της φωνητικής κλήσης.</string>
   <string name="rtt_request_dialog_more_information">Το RTT υποβοηθά καλούντες που είναι κωφοί ή αντιμετωπίζουν προβλήματα ακοής ή ομιλίας, καθώς και όσους χρειάζονται κάτι περισσότερο από απλή φωνητική επικοινωνία.</string>
   <string name="rtt_button_decline_request">Όχι, ευχαριστώ</string>
diff --git a/java/com/android/incallui/res/values-en-rAU/cm_strings.xml b/java/com/android/incallui/res/values-en-rAU/cm_strings.xml
new file mode 100644
index 0000000..07455a6
--- /dev/null
+++ b/java/com/android/incallui/res/values-en-rAU/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Failed to start call recording</string>
+    <string name="call_recording_file_location">Saved call recording to <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Record call</string>
+    <string name="onscreenCallRecordingText">Recording call - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Stop recording</string>
+    <string name="recording_warning_title">Enable call recording?</string>
+    <string name="recording_warning_text">Notice: You are responsible for compliance with any laws, regulations and rules that apply to the use of call recording functionality and the use or distribution of those recordings.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-en-rAU/strings.xml b/java/com/android/incallui/res/values-en-rAU/strings.xml
index 8fc9c42..82f6ecd 100644
--- a/java/com/android/incallui/res/values-en-rAU/strings.xml
+++ b/java/com/android/incallui/res/values-en-rAU/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Incoming call</string>
   <string name="notification_incoming_video_call">Incoming video call</string>
   <string name="notification_incoming_call_mutli_sim">Incoming call via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Incoming call with photo</string>
-  <string name="notification_incoming_call_with_message">Incoming call with message</string>
-  <string name="notification_incoming_call_with_location">Incoming call with location</string>
-  <string name="notification_incoming_call_with_photo_message">Incoming call with photo and message</string>
-  <string name="notification_incoming_call_with_photo_location">Incoming call with photo and location</string>
-  <string name="notification_incoming_call_with_message_location">Incoming call with message and location</string>
-  <string name="notification_incoming_call_with_photo_message_location">Incoming call with photo, message and location</string>
-  <string name="notification_incoming_call_attachments">Incoming call with attachments</string>
-  <string name="important_notification_incoming_call">Important incoming call</string>
-  <string name="important_notification_incoming_call_with_photo">Important incoming call with photo</string>
-  <string name="important_notification_incoming_call_with_message">Important incoming call with message</string>
-  <string name="important_notification_incoming_call_with_location">Important incoming call with location</string>
-  <string name="important_notification_incoming_call_with_photo_message">Important incoming call with photo and message</string>
-  <string name="important_notification_incoming_call_with_photo_location">Important incoming call with photo and location</string>
-  <string name="important_notification_incoming_call_with_message_location">Important incoming call with message and location</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Important call with photo, message and location</string>
-  <string name="important_notification_incoming_call_attachments">Important incoming call with attachments</string>
   <string name="notification_incoming_work_call">Incoming work call</string>
   <string name="notification_incoming_spam_call">Incoming suspected spam call</string>
   <string name="notification_requesting_video_call">Incoming video request</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Couldn\'t switch to Wi‑Fi network</string>
   <string name="video_call_lte_to_wifi_failed_message">Video call will remain on the mobile network. Standard data charges may apply.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Do not show this again</string>
-  <string name="bubble_return_to_call">Back to call</string>
-  <string name="rtt_request_dialog_title">Join RTT call?</string>
+    <string name="rtt_request_dialog_title">Join RTT call?</string>
   <string name="rtt_request_dialog_details">%1$s wants to use messaging within your voice call.</string>
   <string name="rtt_request_dialog_more_information">RTT assists callers who are deaf, hard of hearing, have a speech disability or need more than voice alone.</string>
   <string name="rtt_button_decline_request">No, thanks</string>
diff --git a/java/com/android/incallui/res/values-en-rCA/cm_strings.xml b/java/com/android/incallui/res/values-en-rCA/cm_strings.xml
new file mode 100644
index 0000000..07455a6
--- /dev/null
+++ b/java/com/android/incallui/res/values-en-rCA/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Failed to start call recording</string>
+    <string name="call_recording_file_location">Saved call recording to <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Record call</string>
+    <string name="onscreenCallRecordingText">Recording call - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Stop recording</string>
+    <string name="recording_warning_title">Enable call recording?</string>
+    <string name="recording_warning_text">Notice: You are responsible for compliance with any laws, regulations and rules that apply to the use of call recording functionality and the use or distribution of those recordings.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-en-rGB/cm_strings.xml b/java/com/android/incallui/res/values-en-rGB/cm_strings.xml
new file mode 100644
index 0000000..07455a6
--- /dev/null
+++ b/java/com/android/incallui/res/values-en-rGB/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Failed to start call recording</string>
+    <string name="call_recording_file_location">Saved call recording to <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Record call</string>
+    <string name="onscreenCallRecordingText">Recording call - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Stop recording</string>
+    <string name="recording_warning_title">Enable call recording?</string>
+    <string name="recording_warning_text">Notice: You are responsible for compliance with any laws, regulations and rules that apply to the use of call recording functionality and the use or distribution of those recordings.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-en-rGB/strings.xml b/java/com/android/incallui/res/values-en-rGB/strings.xml
index 8fc9c42..82f6ecd 100644
--- a/java/com/android/incallui/res/values-en-rGB/strings.xml
+++ b/java/com/android/incallui/res/values-en-rGB/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Incoming call</string>
   <string name="notification_incoming_video_call">Incoming video call</string>
   <string name="notification_incoming_call_mutli_sim">Incoming call via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Incoming call with photo</string>
-  <string name="notification_incoming_call_with_message">Incoming call with message</string>
-  <string name="notification_incoming_call_with_location">Incoming call with location</string>
-  <string name="notification_incoming_call_with_photo_message">Incoming call with photo and message</string>
-  <string name="notification_incoming_call_with_photo_location">Incoming call with photo and location</string>
-  <string name="notification_incoming_call_with_message_location">Incoming call with message and location</string>
-  <string name="notification_incoming_call_with_photo_message_location">Incoming call with photo, message and location</string>
-  <string name="notification_incoming_call_attachments">Incoming call with attachments</string>
-  <string name="important_notification_incoming_call">Important incoming call</string>
-  <string name="important_notification_incoming_call_with_photo">Important incoming call with photo</string>
-  <string name="important_notification_incoming_call_with_message">Important incoming call with message</string>
-  <string name="important_notification_incoming_call_with_location">Important incoming call with location</string>
-  <string name="important_notification_incoming_call_with_photo_message">Important incoming call with photo and message</string>
-  <string name="important_notification_incoming_call_with_photo_location">Important incoming call with photo and location</string>
-  <string name="important_notification_incoming_call_with_message_location">Important incoming call with message and location</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Important call with photo, message and location</string>
-  <string name="important_notification_incoming_call_attachments">Important incoming call with attachments</string>
   <string name="notification_incoming_work_call">Incoming work call</string>
   <string name="notification_incoming_spam_call">Incoming suspected spam call</string>
   <string name="notification_requesting_video_call">Incoming video request</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Couldn\'t switch to Wi‑Fi network</string>
   <string name="video_call_lte_to_wifi_failed_message">Video call will remain on the mobile network. Standard data charges may apply.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Do not show this again</string>
-  <string name="bubble_return_to_call">Back to call</string>
-  <string name="rtt_request_dialog_title">Join RTT call?</string>
+    <string name="rtt_request_dialog_title">Join RTT call?</string>
   <string name="rtt_request_dialog_details">%1$s wants to use messaging within your voice call.</string>
   <string name="rtt_request_dialog_more_information">RTT assists callers who are deaf, hard of hearing, have a speech disability or need more than voice alone.</string>
   <string name="rtt_button_decline_request">No, thanks</string>
diff --git a/java/com/android/incallui/res/values-en-rIN/cm_strings.xml b/java/com/android/incallui/res/values-en-rIN/cm_strings.xml
new file mode 100644
index 0000000..07455a6
--- /dev/null
+++ b/java/com/android/incallui/res/values-en-rIN/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Failed to start call recording</string>
+    <string name="call_recording_file_location">Saved call recording to <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Record call</string>
+    <string name="onscreenCallRecordingText">Recording call - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Stop recording</string>
+    <string name="recording_warning_title">Enable call recording?</string>
+    <string name="recording_warning_text">Notice: You are responsible for compliance with any laws, regulations and rules that apply to the use of call recording functionality and the use or distribution of those recordings.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-en-rIN/strings.xml b/java/com/android/incallui/res/values-en-rIN/strings.xml
index 8fc9c42..82f6ecd 100644
--- a/java/com/android/incallui/res/values-en-rIN/strings.xml
+++ b/java/com/android/incallui/res/values-en-rIN/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Incoming call</string>
   <string name="notification_incoming_video_call">Incoming video call</string>
   <string name="notification_incoming_call_mutli_sim">Incoming call via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Incoming call with photo</string>
-  <string name="notification_incoming_call_with_message">Incoming call with message</string>
-  <string name="notification_incoming_call_with_location">Incoming call with location</string>
-  <string name="notification_incoming_call_with_photo_message">Incoming call with photo and message</string>
-  <string name="notification_incoming_call_with_photo_location">Incoming call with photo and location</string>
-  <string name="notification_incoming_call_with_message_location">Incoming call with message and location</string>
-  <string name="notification_incoming_call_with_photo_message_location">Incoming call with photo, message and location</string>
-  <string name="notification_incoming_call_attachments">Incoming call with attachments</string>
-  <string name="important_notification_incoming_call">Important incoming call</string>
-  <string name="important_notification_incoming_call_with_photo">Important incoming call with photo</string>
-  <string name="important_notification_incoming_call_with_message">Important incoming call with message</string>
-  <string name="important_notification_incoming_call_with_location">Important incoming call with location</string>
-  <string name="important_notification_incoming_call_with_photo_message">Important incoming call with photo and message</string>
-  <string name="important_notification_incoming_call_with_photo_location">Important incoming call with photo and location</string>
-  <string name="important_notification_incoming_call_with_message_location">Important incoming call with message and location</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Important call with photo, message and location</string>
-  <string name="important_notification_incoming_call_attachments">Important incoming call with attachments</string>
   <string name="notification_incoming_work_call">Incoming work call</string>
   <string name="notification_incoming_spam_call">Incoming suspected spam call</string>
   <string name="notification_requesting_video_call">Incoming video request</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Couldn\'t switch to Wi‑Fi network</string>
   <string name="video_call_lte_to_wifi_failed_message">Video call will remain on the mobile network. Standard data charges may apply.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Do not show this again</string>
-  <string name="bubble_return_to_call">Back to call</string>
-  <string name="rtt_request_dialog_title">Join RTT call?</string>
+    <string name="rtt_request_dialog_title">Join RTT call?</string>
   <string name="rtt_request_dialog_details">%1$s wants to use messaging within your voice call.</string>
   <string name="rtt_request_dialog_more_information">RTT assists callers who are deaf, hard of hearing, have a speech disability or need more than voice alone.</string>
   <string name="rtt_button_decline_request">No, thanks</string>
diff --git a/java/com/android/incallui/res/values-es-rUS/cm_strings.xml b/java/com/android/incallui/res/values-es-rUS/cm_strings.xml
new file mode 100644
index 0000000..9778e22
--- /dev/null
+++ b/java/com/android/incallui/res/values-es-rUS/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Error al iniciar la grabación de la llamada</string>
+    <string name="call_recording_file_location">Grabación de llamada guardada en <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Grabar llamada</string>
+    <string name="onscreenCallRecordingText">Grabación de llamada - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Parar grabación</string>
+    <string name="recording_warning_title">¿Activar la grabación de llamada?</string>
+    <string name="recording_warning_text">Aviso: Eres responsable de cumplir con todas las leyes, regulaciones y reglas que se aplican al uso de la funcionalidad de grabación de llamadas y al uso o distribución de esas grabaciones.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-es-rUS/strings.xml b/java/com/android/incallui/res/values-es-rUS/strings.xml
index 27218c0..37d498f 100644
--- a/java/com/android/incallui/res/values-es-rUS/strings.xml
+++ b/java/com/android/incallui/res/values-es-rUS/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Llamada entrante</string>
   <string name="notification_incoming_video_call">Videollamada entrante</string>
   <string name="notification_incoming_call_mutli_sim">Llamada entrante por %1$s</string>
-  <string name="notification_incoming_call_with_photo">Llamada entrante con foto</string>
-  <string name="notification_incoming_call_with_message">Llamada entrante con mensaje</string>
-  <string name="notification_incoming_call_with_location">Llamada entrante con ubicación</string>
-  <string name="notification_incoming_call_with_photo_message">Llamada entrante con foto y mensaje</string>
-  <string name="notification_incoming_call_with_photo_location">Llamada entrante con foto y ubicación</string>
-  <string name="notification_incoming_call_with_message_location">Llamada entrante con mensaje y ubicación</string>
-  <string name="notification_incoming_call_with_photo_message_location">Llamada entrante con foto, mensaje y ubicación</string>
-  <string name="notification_incoming_call_attachments">Llamada entrante con archivos adjuntos</string>
-  <string name="important_notification_incoming_call">Llamada entrante importante</string>
-  <string name="important_notification_incoming_call_with_photo">Llamada entrante importante con foto</string>
-  <string name="important_notification_incoming_call_with_message">Llamada entrante importante con mensaje</string>
-  <string name="important_notification_incoming_call_with_location">Llamada entrante importante con ubicación</string>
-  <string name="important_notification_incoming_call_with_photo_message">Llamada entrante importante con foto y mensaje</string>
-  <string name="important_notification_incoming_call_with_photo_location">Llamada entrante importante con foto y ubicación</string>
-  <string name="important_notification_incoming_call_with_message_location">Llamada importante con mensaje y ubicación</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Llamada importante con foto, mensaje y ubicación</string>
-  <string name="important_notification_incoming_call_attachments">Llamada entrante importante con archivos adjuntos</string>
   <string name="notification_incoming_work_call">Llamada de trabajo entrante</string>
   <string name="notification_incoming_spam_call">Posible llamada entrante de spam</string>
   <string name="notification_requesting_video_call">Solicitud de videollamada entrante</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">No se pudo cambiar a la red Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">La videollamada permanecerá en la red móvil. Es posible que se te cobren cargos estándar por el uso de datos.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">No volver a mostrar esto</string>
-  <string name="bubble_return_to_call">Volver a la llamada</string>
-  <string name="rtt_request_dialog_title">¿Quieres unirte a la llamada de RTT?</string>
+    <string name="rtt_request_dialog_title">¿Quieres unirte a la llamada de RTT?</string>
   <string name="rtt_request_dialog_details">%1$s quiere usar mensajes en tu llamada de voz.</string>
   <string name="rtt_request_dialog_more_information">El RTT brinda asistencia a las personas sordas o hipoacúsicas, que tienen algún trastorno del habla o necesitan una transcripción además de la voz.</string>
   <string name="rtt_button_decline_request">No, gracias</string>
diff --git a/java/com/android/incallui/res/values-es/cm_strings.xml b/java/com/android/incallui/res/values-es/cm_strings.xml
new file mode 100644
index 0000000..7e54937
--- /dev/null
+++ b/java/com/android/incallui/res/values-es/cm_strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="onscreenCallRecordText">Grabar llamada</string>
+    <string name="onscreenCallRecordingText">Grabación de llamada - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Detener grabación</string>
+    <string name="recording_warning_title">¿Activar la grabación de llamada?</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-es/strings.xml b/java/com/android/incallui/res/values-es/strings.xml
index e186c57..44f0808 100644
--- a/java/com/android/incallui/res/values-es/strings.xml
+++ b/java/com/android/incallui/res/values-es/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Llamada entrante</string>
   <string name="notification_incoming_video_call">Videollamada entrante</string>
   <string name="notification_incoming_call_mutli_sim">Llamada entrante a través de %1$s</string>
-  <string name="notification_incoming_call_with_photo">Llamada entrante con foto</string>
-  <string name="notification_incoming_call_with_message">Llamada entrante con mensaje</string>
-  <string name="notification_incoming_call_with_location">Llamada entrante con ubicación</string>
-  <string name="notification_incoming_call_with_photo_message">Llamada entrante con foto y mensaje</string>
-  <string name="notification_incoming_call_with_photo_location">Llamada entrante con foto y ubicación</string>
-  <string name="notification_incoming_call_with_message_location">Llamada entrante con mensaje y ubicación</string>
-  <string name="notification_incoming_call_with_photo_message_location">Llamada entrante con foto, mensaje y ubicación</string>
-  <string name="notification_incoming_call_attachments">Llamada entrante con archivos adjuntos</string>
-  <string name="important_notification_incoming_call">Llamada entrante importante</string>
-  <string name="important_notification_incoming_call_with_photo">Llamada entrante importante con foto</string>
-  <string name="important_notification_incoming_call_with_message">Llamada entrante importante con mensaje</string>
-  <string name="important_notification_incoming_call_with_location">Llamada entrante importante con ubicación</string>
-  <string name="important_notification_incoming_call_with_photo_message">Llamada entrante importante con foto y mensaje</string>
-  <string name="important_notification_incoming_call_with_photo_location">Llamada entrante importante con foto y ubicación</string>
-  <string name="important_notification_incoming_call_with_message_location">Llamada importante con mensaje y ubicación</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Llamada importante con foto, mensaje y ubicación</string>
-  <string name="important_notification_incoming_call_attachments">Llamada entrante importante con archivos adjuntos</string>
   <string name="notification_incoming_work_call">Llamada de trabajo entrante</string>
   <string name="notification_incoming_spam_call">Llamada entrante sospechosa de spam</string>
   <string name="notification_requesting_video_call">Solicitud de videollamada entrante</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">No se ha podido cambiar a la red Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">La videollamada seguirá a través de la red móvil. Es posible que se apliquen cargos por el uso de datos.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">No volver a mostrar</string>
-  <string name="bubble_return_to_call">Volver a la llamada</string>
-  <string name="rtt_request_dialog_title">¿Quieres unirte a la llamada de TTR?</string>
+    <string name="rtt_request_dialog_title">¿Quieres unirte a la llamada de TTR?</string>
   <string name="rtt_request_dialog_details">%1$s quiere enviarte mensajes durante la llamada de voz.</string>
   <string name="rtt_request_dialog_more_information">La función TTR (texto en tiempo real) ofrece asistencia a las personas sordas o con discapacidades auditivas, que tienen algún trastorno del habla o que necesitan una transcripción además de la voz para comunicarse.</string>
   <string name="rtt_button_decline_request">No, gracias</string>
diff --git a/java/com/android/incallui/res/values-et/cm_strings.xml b/java/com/android/incallui/res/values-et/cm_strings.xml
new file mode 100644
index 0000000..6a8c6bc
--- /dev/null
+++ b/java/com/android/incallui/res/values-et/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Kõne salvestuse alustamine nurjus</string>
+    <string name="call_recording_file_location">Kõne salvestatud kohta <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Salvesta kõne</string>
+    <string name="onscreenCallRecordingText">Kõne salvestamine - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Lõpeta salvestus</string>
+    <string name="recording_warning_title">Lubad kõne salvestamise?</string>
+    <string name="recording_warning_text">Märkus: Teie olete kohustatud järgima seaduseid, määruseid ja reegleid, mis käivad kõnede salvestamise funktsiooni ja nende salvestiste jagamise kohta.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-et/strings.xml b/java/com/android/incallui/res/values-et/strings.xml
index 1cb357e..1fdc492 100644
--- a/java/com/android/incallui/res/values-et/strings.xml
+++ b/java/com/android/incallui/res/values-et/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Sissetulev kõne</string>
   <string name="notification_incoming_video_call">Sissetulev videokõne</string>
   <string name="notification_incoming_call_mutli_sim">Sissetulev kõne SIM-kaardi %1$s kaudu</string>
-  <string name="notification_incoming_call_with_photo">Sissetulev kõne koos fotoga</string>
-  <string name="notification_incoming_call_with_message">Sissetulev kõne koos sõnumiga</string>
-  <string name="notification_incoming_call_with_location">Sissetulev kõne koos asukohaga</string>
-  <string name="notification_incoming_call_with_photo_message">Sissetulev kõne koos foto ja sõnumiga</string>
-  <string name="notification_incoming_call_with_photo_location">Sissetulev kõne koos foto ja asukohaga</string>
-  <string name="notification_incoming_call_with_message_location">Sissetulev kõne koos sõnumi ja asukohaga</string>
-  <string name="notification_incoming_call_with_photo_message_location">Sissetulev kõne koos foto, sõnumi ja asukohaga</string>
-  <string name="notification_incoming_call_attachments">Sissetulev kõne koos manustega</string>
-  <string name="important_notification_incoming_call">Tähtis sissetulev kõne</string>
-  <string name="important_notification_incoming_call_with_photo">Tähtis sissetulev kõne koos fotoga</string>
-  <string name="important_notification_incoming_call_with_message">Tähtis sissetulev kõne koos sõnumiga</string>
-  <string name="important_notification_incoming_call_with_location">Tähtis sissetulev kõne koos asukohaga</string>
-  <string name="important_notification_incoming_call_with_photo_message">Tähtis sissetulev kõne koos foto ja sõnumiga</string>
-  <string name="important_notification_incoming_call_with_photo_location">Tähtis sissetulev kõne koos foto ja asukohaga</string>
-  <string name="important_notification_incoming_call_with_message_location">Tähtis sissetulev kõne koos sõnumi ja asukohaga</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Tähtis sisset. kõne koos foto, sõnumi ja asukohaga</string>
-  <string name="important_notification_incoming_call_attachments">Tähtis sissetulev kõne koos manustega</string>
   <string name="notification_incoming_work_call">Sissetulev töökõne</string>
   <string name="notification_incoming_spam_call">Arvatav sissetulev rämpskõne</string>
   <string name="notification_requesting_video_call">Sissetulev videotaotlus</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">WiFi-võrgule ei saanud lülituda</string>
   <string name="video_call_lte_to_wifi_failed_message">Videokõne jääb mobiilsidevõrku. Rakenduda võivad tavapärased andmesidetasud.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ära seda enam näita</string>
-  <string name="bubble_return_to_call">Tagasi kõne juurde</string>
-  <string name="rtt_request_dialog_title">Kas liituda RTT-kõnega?</string>
+    <string name="rtt_request_dialog_title">Kas liituda RTT-kõnega?</string>
   <string name="rtt_request_dialog_details">%1$s soovib teie häälkõnes kasutada sõnumsidet.</string>
   <string name="rtt_request_dialog_more_information">RTT aitab kurte, kuulmis- või kõnepuudega helistajaid või neid, kes vajavad lisaks häälele muud abi.</string>
   <string name="rtt_button_decline_request">Tänan, ei</string>
diff --git a/java/com/android/incallui/res/values-eu/cm_strings.xml b/java/com/android/incallui/res/values-eu/cm_strings.xml
new file mode 100644
index 0000000..38e6502
--- /dev/null
+++ b/java/com/android/incallui/res/values-eu/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Huts egin du deia grabatzen hasteak</string>
+    <string name="call_recording_file_location">Deiaren grabaketa hemen gorde da: <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Grabatu deia</string>
+    <string name="onscreenCallRecordingText">Deia grabatzen - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Gelditu grabaketa</string>
+    <string name="recording_warning_title">Gaitu deien grabaketa?</string>
+    <string name="recording_warning_text">Oharra: Zu zara deien grabaketei eta hauek erabili edo banatzeari dagozkien legeak edo bestelako arauak betetzearen erantzulea.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-eu/strings.xml b/java/com/android/incallui/res/values-eu/strings.xml
index eaba884..15c592e 100644
--- a/java/com/android/incallui/res/values-eu/strings.xml
+++ b/java/com/android/incallui/res/values-eu/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Sarrerako deia</string>
   <string name="notification_incoming_video_call">Sarrerako bideo-deia</string>
   <string name="notification_incoming_call_mutli_sim">%1$s bidezko sarrerako deia</string>
-  <string name="notification_incoming_call_with_photo">Jasotako deia, argazkia duena</string>
-  <string name="notification_incoming_call_with_message">Jasoka deia, mezua duena</string>
-  <string name="notification_incoming_call_with_location">Jasotako deia, kokapena duena</string>
-  <string name="notification_incoming_call_with_photo_message">Jasotako deia, argazkia eta mezua dituena</string>
-  <string name="notification_incoming_call_with_photo_location">Jasotako deia, argazkia eta kokapena dituena</string>
-  <string name="notification_incoming_call_with_message_location">Jasotako deia, mezua eta kokapena dituena</string>
-  <string name="notification_incoming_call_with_photo_message_location">Jasotako deia, argazkia, mezua eta kokap. dituena</string>
-  <string name="notification_incoming_call_attachments">Jasotako deia, eranskinak dituena</string>
-  <string name="important_notification_incoming_call">Jasotako dei garrantzitsua</string>
-  <string name="important_notification_incoming_call_with_photo">Jasotako dei garrantzitsua, argazkia duena</string>
-  <string name="important_notification_incoming_call_with_message">Jasotako dei garrantzitsua, mezua duena</string>
-  <string name="important_notification_incoming_call_with_location">Jasotako dei garrantzitsua, kokapena duena</string>
-  <string name="important_notification_incoming_call_with_photo_message">Jasotako dei garrantz., argazkia eta mezua dituena</string>
-  <string name="important_notification_incoming_call_with_photo_location">Jasotako dei garrantz., argazkia eta kok. dituena</string>
-  <string name="important_notification_incoming_call_with_message_location">Jasotako dei garrantz., mezua eta kokapena dituena</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Jasotako dei garrant., arg., mez. eta kok. dituena</string>
-  <string name="important_notification_incoming_call_attachments">Jasotako dei garrantzitsua, eranskinak dituena</string>
   <string name="notification_incoming_work_call">Laneko dei bat jaso da</string>
   <string name="notification_incoming_spam_call">Ustezko spam-deia jaso duzu</string>
   <string name="notification_requesting_video_call">Sarrerako bideo-eskaera</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Ezin izan da aldatu Wi-Fi sarera</string>
   <string name="video_call_lte_to_wifi_failed_message">Datu-konexioaren bidez egiten jarraituko da bideo-deia. Baliteke datuak erabiltzearen ondorioz ohiko kostuak kobratzea.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ez erakutsi berriro</string>
-  <string name="bubble_return_to_call">Itzuli deira</string>
-  <string name="rtt_request_dialog_title">Testua bidaltzeko eginbidea duen deian sartu nahi duzu?</string>
+    <string name="rtt_request_dialog_title">Testua bidaltzeko eginbidea duen deian sartu nahi duzu?</string>
   <string name="rtt_request_dialog_details">%1$s erabiltzaileak mezuak erabili nahi ditu ahots-deian.</string>
   <string name="rtt_request_dialog_more_information">Deietan testua bidaltzeko eginbideak (RTT) deitzaile gorrei, entzumen-arazoak dituztenei, hitz egiteko ezintasunen bat dutenei edota, ahotsaz gain, beste makuluren bat behar dutenei laguntzen die.</string>
   <string name="rtt_button_decline_request">Ez, eskerrik asko</string>
diff --git a/java/com/android/incallui/res/values-fa/strings.xml b/java/com/android/incallui/res/values-fa/strings.xml
index 8178543..3afd6b0 100644
--- a/java/com/android/incallui/res/values-fa/strings.xml
+++ b/java/com/android/incallui/res/values-fa/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">تماس ورودی</string>
   <string name="notification_incoming_video_call">تماس ویدئویی ورودی</string>
   <string name="notification_incoming_call_mutli_sim">تماس ورودی ازطریق %1$s</string>
-  <string name="notification_incoming_call_with_photo">تماس ورودی به همراه عکس</string>
-  <string name="notification_incoming_call_with_message">تماس ورودی به همراه پیام</string>
-  <string name="notification_incoming_call_with_location">تماس ورودی به همراه مکان</string>
-  <string name="notification_incoming_call_with_photo_message">تماس ورودی به همراه عکس و پیام</string>
-  <string name="notification_incoming_call_with_photo_location">تماس ورودی به همراه عکس و مکان</string>
-  <string name="notification_incoming_call_with_message_location">تماس ورودی به همراه پیام و مکان</string>
-  <string name="notification_incoming_call_with_photo_message_location">تماس ورودی به همراه عکس، پیام و مکان</string>
-  <string name="notification_incoming_call_attachments">تماس ورودی به همراه پیوست</string>
-  <string name="important_notification_incoming_call">تماس ورودی مهم</string>
-  <string name="important_notification_incoming_call_with_photo">تماس ورودی مهم به همراه عکس</string>
-  <string name="important_notification_incoming_call_with_message">تماس ورودی مهم به همراه پیام</string>
-  <string name="important_notification_incoming_call_with_location">تماس ورودی مهم به همراه مکان</string>
-  <string name="important_notification_incoming_call_with_photo_message">تماس ورودی مهم به همراه عکس و پیام</string>
-  <string name="important_notification_incoming_call_with_photo_location">تماس ورودی مهم به همراه عکس و مکان</string>
-  <string name="important_notification_incoming_call_with_message_location">تماس ورودی مهم به همراه پیام و مکان</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">تماس ورودی مهم به همراه عکس، پیام و مکان</string>
-  <string name="important_notification_incoming_call_attachments">تماس ورودی مهم به همراه پیوست</string>
   <string name="notification_incoming_work_call">تماس کاری ورودی</string>
   <string name="notification_incoming_spam_call">تماس هرزنامه احتمالی ورودی</string>
   <string name="notification_requesting_video_call">درخواست تماس ویدئویی ورودی</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">‏جابجایی به شبکه Wi-Fi انجام نشد</string>
   <string name="video_call_lte_to_wifi_failed_message">تماس ویدیویی همچنان ازطریق شبکه تلفن همراه انجام می‌شود. ممکن است هزینه‌های استاندارد داده اعمال شود.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">دوباره نشان داده نشود</string>
-  <string name="bubble_return_to_call">برگشت به تماس</string>
-  <string name="rtt_request_dialog_title">به تماس نوشتار هم‌زمان می‌پیوندید؟</string>
+    <string name="rtt_request_dialog_title">به تماس نوشتار هم‌زمان می‌پیوندید؟</string>
   <string name="rtt_request_dialog_details">%1$s می‌خواهد در تماس صوتی شما از پیام‌رسانی استفاده کند.</string>
   <string name="rtt_request_dialog_more_information">نوشتار هم‌زمان به تماس گیرندگان ناشنوا، دارای مشکل شنوایی، دارای ناتوانی گفتاری یا افرادی که به چیزی بیش از صدا نیاز دارند کمک می‌کند.</string>
   <string name="rtt_button_decline_request">نه متشکرم</string>
diff --git a/java/com/android/incallui/res/values-fi/cm_strings.xml b/java/com/android/incallui/res/values-fi/cm_strings.xml
new file mode 100644
index 0000000..1b0559c
--- /dev/null
+++ b/java/com/android/incallui/res/values-fi/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Puhelun nauhoitus epäonnistui</string>
+    <string name="call_recording_file_location">Puhelu tallennettu nimellä <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Aloita nauhoitus</string>
+    <string name="onscreenCallRecordingText">Nauhoitetaan puhelua - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Lopeta tallennus</string>
+    <string name="recording_warning_title">Ota puheluiden nauhoitus käyttöön?</string>
+    <string name="recording_warning_text">Huomautus: Olet vastuussa lakien, asetuksien ja sääntöjen noudattamisesta, jotka koskevat puheluiden nauhoittamista ja näiden nauhoitteiden käytöstä ja jakelusta.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-fi/strings.xml b/java/com/android/incallui/res/values-fi/strings.xml
index 2da803e..4d9aa72 100644
--- a/java/com/android/incallui/res/values-fi/strings.xml
+++ b/java/com/android/incallui/res/values-fi/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Saapuva puhelu</string>
   <string name="notification_incoming_video_call">Saapuva videopuhelu</string>
   <string name="notification_incoming_call_mutli_sim">Saapuva puhelu %1$s ‑kortin kautta</string>
-  <string name="notification_incoming_call_with_photo">Kuvan sisältävä saapuva puhelu</string>
-  <string name="notification_incoming_call_with_message">Viestin sisältävä saapuva puhelu</string>
-  <string name="notification_incoming_call_with_location">Sijainnin sisältävä saapuva puhelu</string>
-  <string name="notification_incoming_call_with_photo_message">Kuvan ja viestin sisältävä saapuva puhelu</string>
-  <string name="notification_incoming_call_with_photo_location">Kuvan ja sijainnin sisältävä saapuva puhelu</string>
-  <string name="notification_incoming_call_with_message_location">Viestin ja sijainnin sisältävä saapuva puhelu</string>
-  <string name="notification_incoming_call_with_photo_message_location">Kuvan, viestin ja sijainnin sisältävä puhelu</string>
-  <string name="notification_incoming_call_attachments">Liitteitä sisältävä saapuva puhelu</string>
-  <string name="important_notification_incoming_call">Tärkeä saapuva puhelu</string>
-  <string name="important_notification_incoming_call_with_photo">Tärkeä kuvan sisältävä saapuva puhelu</string>
-  <string name="important_notification_incoming_call_with_message">Tärkeä viestin sisältävä saapuva puhelu</string>
-  <string name="important_notification_incoming_call_with_location">Tärkeä sijainnin sisältävä saapuva puhelu</string>
-  <string name="important_notification_incoming_call_with_photo_message">Tärkeä kuvan ja viestin sisältävä saapuva puhelu</string>
-  <string name="important_notification_incoming_call_with_photo_location">Tärkeä kuvan ja sijainnin sisältävä saapuva puhelu</string>
-  <string name="important_notification_incoming_call_with_message_location">Tärkeä viestin ja sijainnin sisältävä puhelu</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Tärkeä liitteitä sisältävä saapuva puhelu</string>
-  <string name="important_notification_incoming_call_attachments">Tärkeä liitteitä sisältävä saapuva puhelu</string>
   <string name="notification_incoming_work_call">Saapuva työpuhelu</string>
   <string name="notification_incoming_spam_call">Tämä puhelu saattaa olla häirikköpuhelu.</string>
   <string name="notification_requesting_video_call">Saapuva videopyyntö</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Vaihto Wi-Fi-verkkoon epäonnistui.</string>
   <string name="video_call_lte_to_wifi_failed_message">Videopuhelu soitetaan mobiilidatayhteyden kautta. Operaattori voi veloittaa tiedonsiirrosta.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Älä näytä tätä uudelleen</string>
-  <string name="bubble_return_to_call">Palaa puheluun</string>
-  <string name="rtt_request_dialog_title">Haluatko liittyä RTT-puheluun?</string>
+    <string name="rtt_request_dialog_title">Haluatko liittyä RTT-puheluun?</string>
   <string name="rtt_request_dialog_details">%1$s haluaa lähettää viestejä äänipuhelun aikana.</string>
   <string name="rtt_request_dialog_more_information">RTT-toiminto auttaa kuuroja sekä käyttäjiä, joilla on kuulo‑ tai puhehäiriöitä tai jotka tarvitsevat muuta tukea pelkän puheen lisäksi.</string>
   <string name="rtt_button_decline_request">Ei kiitos</string>
diff --git a/java/com/android/incallui/res/values-fr-rCA/strings.xml b/java/com/android/incallui/res/values-fr-rCA/strings.xml
index 94d029a..75835b8 100644
--- a/java/com/android/incallui/res/values-fr-rCA/strings.xml
+++ b/java/com/android/incallui/res/values-fr-rCA/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Appel entrant</string>
   <string name="notification_incoming_video_call">Appel vidéo entrant</string>
   <string name="notification_incoming_call_mutli_sim">Appel entrant par %1$s</string>
-  <string name="notification_incoming_call_with_photo">Appel entrant avec photo</string>
-  <string name="notification_incoming_call_with_message">Appel entrant avec message</string>
-  <string name="notification_incoming_call_with_location">Appel entrant avec position</string>
-  <string name="notification_incoming_call_with_photo_message">Appel entrant avec photo et message</string>
-  <string name="notification_incoming_call_with_photo_location">Appel entrant avec photo et position</string>
-  <string name="notification_incoming_call_with_message_location">Appel entrant avec message et position</string>
-  <string name="notification_incoming_call_with_photo_message_location">Appel entrant avec photo, message et position</string>
-  <string name="notification_incoming_call_attachments">Appel entrant avec pièces jointes</string>
-  <string name="important_notification_incoming_call">Appel entrant important</string>
-  <string name="important_notification_incoming_call_with_photo">Appel entrant important avec photo</string>
-  <string name="important_notification_incoming_call_with_message">Appel entrant important avec message</string>
-  <string name="important_notification_incoming_call_with_location">Appel entrant important avec position</string>
-  <string name="important_notification_incoming_call_with_photo_message">Appel entrant important avec photo et message</string>
-  <string name="important_notification_incoming_call_with_photo_location">Appel entrant important avec photo et position</string>
-  <string name="important_notification_incoming_call_with_message_location">Appel entrant important avec message et position</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Appel important avec photo, message et position</string>
-  <string name="important_notification_incoming_call_attachments">Appel entrant important avec pièces jointes</string>
   <string name="notification_incoming_work_call">Appel entrant - travail</string>
   <string name="notification_incoming_spam_call">L\'appel entrant est suspect</string>
   <string name="notification_requesting_video_call">Demande de vidéo reçue</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Impossible de passer à un réseau Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">L\'appel vidéo restera sur le réseau cellulaire. Des frais de données standards peuvent s\'appliquer.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ne plus afficher</string>
-  <string name="bubble_return_to_call">Retour à l\'appel</string>
-  <string name="rtt_request_dialog_title">Se joindre à l\'appel TTR?</string>
+    <string name="rtt_request_dialog_title">Se joindre à l\'appel TTR?</string>
   <string name="rtt_request_dialog_details">%1$s veut utiliser la messagerie lors de votre appel vocal.</string>
   <string name="rtt_request_dialog_more_information">La fonctionnalité TTR aide les appelants qui sont sourds ou malentendants, qui ont un trouble de la parole ou pour qui la voix ne suffit pas.</string>
   <string name="rtt_button_decline_request">Non, merci</string>
diff --git a/java/com/android/incallui/res/values-fr/cm_strings.xml b/java/com/android/incallui/res/values-fr/cm_strings.xml
new file mode 100644
index 0000000..78c863d
--- /dev/null
+++ b/java/com/android/incallui/res/values-fr/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Impossible de démarrer l\'enregistrement de l\'appel</string>
+    <string name="call_recording_file_location">Enregistrement de l\'appel sauvegardé dans <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Enregistrer l\'appel</string>
+    <string name="onscreenCallRecordingText">Enregistrement de l\'appel - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Arrêter l\'enregistrement</string>
+    <string name="recording_warning_title">Activer l\'enregistrement d\'appel ?</string>
+    <string name="recording_warning_text">Avertissement : Vous êtes responsable de la conformité à la législation, à la réglementation et aux règles applicables à l\'enregistrement d\'appel, ainsi qu\'à l\'utilisation ou à la distribution de ces enregistrements.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-fr/strings.xml b/java/com/android/incallui/res/values-fr/strings.xml
index 5a9a0c7..ae9bc73 100644
--- a/java/com/android/incallui/res/values-fr/strings.xml
+++ b/java/com/android/incallui/res/values-fr/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Appel entrant</string>
   <string name="notification_incoming_video_call">Appel vidéo entrant</string>
   <string name="notification_incoming_call_mutli_sim">Appel entrant via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Appel entrant avec photo</string>
-  <string name="notification_incoming_call_with_message">Appel entrant avec message</string>
-  <string name="notification_incoming_call_with_location">Appel entrant avec position</string>
-  <string name="notification_incoming_call_with_photo_message">Appel entrant avec photo et message</string>
-  <string name="notification_incoming_call_with_photo_location">Appel entrant avec photo et position</string>
-  <string name="notification_incoming_call_with_message_location">Appel entrant avec message et position</string>
-  <string name="notification_incoming_call_with_photo_message_location">Appel entrant avec photo, message et position</string>
-  <string name="notification_incoming_call_attachments">Appel entrant avec pièces jointes</string>
-  <string name="important_notification_incoming_call">Appel entrant important</string>
-  <string name="important_notification_incoming_call_with_photo">Appel entrant important avec photo</string>
-  <string name="important_notification_incoming_call_with_message">Appel entrant important avec message</string>
-  <string name="important_notification_incoming_call_with_location">Appel entrant important avec position</string>
-  <string name="important_notification_incoming_call_with_photo_message">Appel entrant important avec photo et message</string>
-  <string name="important_notification_incoming_call_with_photo_location">Appel entrant important avec photo et position</string>
-  <string name="important_notification_incoming_call_with_message_location">Appel entrant important avec message et position</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Appel important avec photo, message et position</string>
-  <string name="important_notification_incoming_call_attachments">Appel entrant important avec pièces jointes</string>
   <string name="notification_incoming_work_call">Appel professionnel entrant</string>
   <string name="notification_incoming_spam_call">Appel entrant indésirable suspecté</string>
   <string name="notification_requesting_video_call">Demande de vidéo reçue</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Impossible de passer au réseau Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">L\'appel vidéo va continuer sur le réseau mobile. Des frais standards liés à la consommation de données peuvent être facturés.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ne plus afficher</string>
-  <string name="bubble_return_to_call">Retour à l\'appel</string>
-  <string name="rtt_request_dialog_title">Participer à l\'appel texte en temps réel ?</string>
+    <string name="rtt_request_dialog_title">Participer à l\'appel texte en temps réel ?</string>
   <string name="rtt_request_dialog_details">%1$s souhaite échanger des SMS/MMS pendant l\'appel vidéo.</string>
   <string name="rtt_request_dialog_more_information">Le texte en temps réel (RTT) vient en aide aux personnes sourdes, malentendantes, qui ont un trouble de la parole, ou qui ont besoin d\'une transcription en plus de la voix.</string>
   <string name="rtt_button_decline_request">Non, merci</string>
diff --git a/java/com/android/incallui/res/values-fur-rIT/cm_strings.xml b/java/com/android/incallui/res/values-fur-rIT/cm_strings.xml
new file mode 100644
index 0000000..f35475e
--- /dev/null
+++ b/java/com/android/incallui/res/values-fur-rIT/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Impussibil scomençâ la regjistrazion de clamade</string>
+    <string name="call_recording_file_location">Regjistrazions di clamadis salvadis su <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Regjistre la clamade</string>
+    <string name="onscreenCallRecordingText">Regjistrazion clamade - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Ferme di regjistrâ</string>
+    <string name="recording_warning_title">Ativâ la regjistrazion de clamade?</string>
+    <string name="recording_warning_text">Avîs: continuant tu ti declaris responsabil de conformitât cun eventuâls leçs, regolaments e normis che si aplichin ae utilizazion, condivision e distribuzion des regjistrazions des clamadis.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-fy-rNL/cm_strings.xml b/java/com/android/incallui/res/values-fy-rNL/cm_strings.xml
new file mode 100644
index 0000000..73b1454
--- /dev/null
+++ b/java/com/android/incallui/res/values-fy-rNL/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Petearopname starte mislearre</string>
+    <string name="call_recording_file_location">Petearopname bewarre as <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Petear opnimme</string>
+    <string name="onscreenCallRecordingText">Petear oan it opnimmen - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Opnimmen stopje</string>
+    <string name="recording_warning_title">Petearopname ynskeakelje?</string>
+    <string name="recording_warning_text">Let op: jo binne sels ferantwurdlik om de wetten, feroarderingen en rigels te folgjen dy\'t fan tapassing binne by it opnimmen fan petearen en it gebrûk of fersprieding fan soksoarte opnamen.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-gd/cm_strings.xml b/java/com/android/incallui/res/values-gd/cm_strings.xml
new file mode 100644
index 0000000..a193eeb
--- /dev/null
+++ b/java/com/android/incallui/res/values-gd/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Cha deach leinn tòiseachadh air a’ ghairm a chlàradh</string>
+    <string name="call_recording_file_location">Chaidh clàradh na gairme a shàbhaladh gu <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Clàraich a’ ghairm</string>
+    <string name="onscreenCallRecordingText">A’ clàradh na gairme – <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Cuir stad air a’ chlàradh</string>
+    <string name="recording_warning_title">A bheil thu airson clàradh gairme a chur an comas?</string>
+    <string name="recording_warning_text">An aire: ’S ann an urra dhut fhèin a th’ ann gun gèill thu ri lagh, riaghladh is riaghailt sam bith a bhios an sàs a thaobh cleachdadh gleus a’ chlàraidh agus cleachdadh no sgaoileadh nan clàraidhean a rinn thu leis.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-gl/cm_strings.xml b/java/com/android/incallui/res/values-gl/cm_strings.xml
new file mode 100644
index 0000000..4465bac
--- /dev/null
+++ b/java/com/android/incallui/res/values-gl/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Produciuse un erro ao iniciar a gravación da chamada</string>
+    <string name="call_recording_file_location">Gardouse a gravación da chamada en <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Gravar chamada</string>
+    <string name="onscreenCallRecordingText">Gravando a chamada - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Deter a gravación</string>
+    <string name="recording_warning_title">Activar a gravación de chamadas?</string>
+    <string name="recording_warning_text">Aviso: O cumprimento das leis, regulacións e regras que se aplican ao uso das gravacións de chamadas, súa distribución e o uso das mesmas é responsabilidade túa.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-gl/strings.xml b/java/com/android/incallui/res/values-gl/strings.xml
index a7e213e..a32e7af 100644
--- a/java/com/android/incallui/res/values-gl/strings.xml
+++ b/java/com/android/incallui/res/values-gl/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Chamada entrante</string>
   <string name="notification_incoming_video_call">Videochamada entrante</string>
   <string name="notification_incoming_call_mutli_sim">Chamada entrante a través de %1$s</string>
-  <string name="notification_incoming_call_with_photo">Chamada entrante con foto</string>
-  <string name="notification_incoming_call_with_message">Chamada entrante con mensaxe</string>
-  <string name="notification_incoming_call_with_location">Chamada entrante con localización</string>
-  <string name="notification_incoming_call_with_photo_message">Chamada entrante con foto e mensaxe</string>
-  <string name="notification_incoming_call_with_photo_location">Chamada entrante con foto e localización</string>
-  <string name="notification_incoming_call_with_message_location">Chamada entrante con mensaxe e localización</string>
-  <string name="notification_incoming_call_with_photo_message_location">Chamada entrante con foto, mensaxe e localización</string>
-  <string name="notification_incoming_call_attachments">Chamada entrante con anexos</string>
-  <string name="important_notification_incoming_call">Chamada entrante importante</string>
-  <string name="important_notification_incoming_call_with_photo">Chamada entrante importante con foto</string>
-  <string name="important_notification_incoming_call_with_message">Chamada entrante importante con mensaxe</string>
-  <string name="important_notification_incoming_call_with_location">Chamada entrante importante con localización</string>
-  <string name="important_notification_incoming_call_with_photo_message">Chamada entrante importante con foto e mensaxe</string>
-  <string name="important_notification_incoming_call_with_photo_location">Chamada entrante importante con foto e localización</string>
-  <string name="important_notification_incoming_call_with_message_location">Chamada entrante importante con mensaxe e localización</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Chamada entrante importante con foto, mensaxe e localización</string>
-  <string name="important_notification_incoming_call_attachments">Chamada entrante importante con anexos</string>
   <string name="notification_incoming_work_call">Chamada de traballo entrante</string>
   <string name="notification_incoming_spam_call">Chamada entrante sospeitosa de spam</string>
   <string name="notification_requesting_video_call">Solicitude de vídeo entrante</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Non se puido cambiar á rede wifi</string>
   <string name="video_call_lte_to_wifi_failed_message">A videochamada permanecerá na rede móbil. É posible que se apliquen tarifas de datos estándar.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Non mostrar de novo</string>
-  <string name="bubble_return_to_call">Volver á chamada</string>
-  <string name="rtt_request_dialog_title">Queres unirte á chamada RTT?</string>
+    <string name="rtt_request_dialog_title">Queres unirte á chamada RTT?</string>
   <string name="rtt_request_dialog_details">%1$s quere usar a mensaxaría na túa chamada de voz.</string>
   <string name="rtt_request_dialog_more_information">A función RTT constitúe unha axuda para todos aqueles emisores de chamadas que padezan xordeira ou outros problemas auditivos, teñan algún trastorno da fala ou necesiten algo máis que a voz para comunicarse.</string>
   <string name="rtt_button_decline_request">Non, grazas</string>
diff --git a/java/com/android/incallui/res/values-gu/strings.xml b/java/com/android/incallui/res/values-gu/strings.xml
index 6c946f5..78c9b89 100644
--- a/java/com/android/incallui/res/values-gu/strings.xml
+++ b/java/com/android/incallui/res/values-gu/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">ઇનકમિંગ કૉલ</string>
   <string name="notification_incoming_video_call">ઇન્કમિંગ વિડિઓ કૉલ</string>
   <string name="notification_incoming_call_mutli_sim">%1$s મારફતે ઇનકમિંગ કૉલ</string>
-  <string name="notification_incoming_call_with_photo">ફોટો સાથે ઇનકમિંગ કૉલ</string>
-  <string name="notification_incoming_call_with_message">સંદેશ સાથે ઇનકમિંગ કૉલ</string>
-  <string name="notification_incoming_call_with_location">સ્થાન સાથે ઇનકમિંગ કૉલ</string>
-  <string name="notification_incoming_call_with_photo_message">ફોટો અને સંદેશ સાથે ઇનકમિંગ કૉલ</string>
-  <string name="notification_incoming_call_with_photo_location">ફોટો અને સ્થાન સાથે ઇનકમિંગ કૉલ</string>
-  <string name="notification_incoming_call_with_message_location">સંદેશ અને સ્થાન સાથે ઇનકમિંગ કૉલ</string>
-  <string name="notification_incoming_call_with_photo_message_location">ફોટો, સંદેશ અને સ્થાન સાથે ઇનકમિંગ કૉલ</string>
-  <string name="notification_incoming_call_attachments">જોડાણો સાથે ઇનકમિંગ કૉલ</string>
-  <string name="important_notification_incoming_call">મહત્વનો ઇનકમિંગ કૉલ</string>
-  <string name="important_notification_incoming_call_with_photo">ફોટો સાથે મહત્વનો ઇનકમિંગ કૉલ</string>
-  <string name="important_notification_incoming_call_with_message">સંદેશ સાથે મહત્વનો ઇનકમિંગ કૉલ</string>
-  <string name="important_notification_incoming_call_with_location">સ્થાન સાથે મહત્વનો ઇનકમિંગ કૉલ</string>
-  <string name="important_notification_incoming_call_with_photo_message">ફોટો અને સંદેશ સાથે મહત્વનો ઇનકમિંગ કૉલ</string>
-  <string name="important_notification_incoming_call_with_photo_location">ફોટો અને સ્થાન સાથે મહત્વનો ઇનકમિંગ કૉલ</string>
-  <string name="important_notification_incoming_call_with_message_location">સંદેશ અને સ્થાન સાથે મહત્વનો ઇનકમિંગ કૉલ</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">ફોટો, સંદેશ અને સ્થાન સાથે મહત્વનો ઇનકમિંગ કૉલ</string>
-  <string name="important_notification_incoming_call_attachments">જોડાણો સાથે મહત્વનો ઇનકમિંગ કૉલ</string>
   <string name="notification_incoming_work_call">ઇનકમિંગ કાર્ય કૉલ</string>
   <string name="notification_incoming_spam_call">ઇનકમિંગ શંકાસ્પદ સ્પામ કૉલ</string>
   <string name="notification_requesting_video_call">આવનાર વિડિઓ વિનંતી</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi નેટવર્ક પર સ્વિચ કરી શક્યાં નથી</string>
   <string name="video_call_lte_to_wifi_failed_message">વિડિઓ કૉલ, મોબાઇલ નેટવર્ક પર રહેશે. માનક ડેટા શુલ્ક લાગુ થઈ શકે છે.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">આ ફરીથી બતાવશો નહીં</string>
-  <string name="bubble_return_to_call">કૉલ પર પાછા</string>
-  <string name="rtt_request_dialog_title">RTT કૉલમાં જોડાઈએ?</string>
+    <string name="rtt_request_dialog_title">RTT કૉલમાં જોડાઈએ?</string>
   <string name="rtt_request_dialog_details">તમારા વૉઇસ કૉલમાંથી જ %1$s મેસેજિંગનો ઉપયોગ કરવા માગે છે.</string>
   <string name="rtt_request_dialog_more_information">જેઓ બહેરા, ઓછું સાંભળતા, બોલવામાં તકલીફવાળા અથવા જેમને માત્ર વૉઇસ કરતાં પણ કંઈક વધુની જરૂર હોય એવા કૉલરોને RTT સહાય કરે છે.</string>
   <string name="rtt_button_decline_request">ના, આભાર</string>
diff --git a/java/com/android/incallui/res/values-hi/strings.xml b/java/com/android/incallui/res/values-hi/strings.xml
index 7993734..8d98ab0 100644
--- a/java/com/android/incallui/res/values-hi/strings.xml
+++ b/java/com/android/incallui/res/values-hi/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">इनकमिंग कॉल</string>
   <string name="notification_incoming_video_call">इनकमिंग वीडियो कॉल</string>
   <string name="notification_incoming_call_mutli_sim">%1$s पर कॉल आ रहा है</string>
-  <string name="notification_incoming_call_with_photo">फ़ोटो के साथ इनकमिंग कॉल</string>
-  <string name="notification_incoming_call_with_message">संदेश के साथ इनकमिंग कॉल</string>
-  <string name="notification_incoming_call_with_location">स्थान के साथ इनकमिंग कॉल</string>
-  <string name="notification_incoming_call_with_photo_message">फ़ोटो और संदेश के साथ इनकमिंग कॉल</string>
-  <string name="notification_incoming_call_with_photo_location">फ़ोटो और स्थान के साथ इनकमिंग कॉल</string>
-  <string name="notification_incoming_call_with_message_location">संदेश और स्थान के साथ इनकमिंग कॉल</string>
-  <string name="notification_incoming_call_with_photo_message_location">फ़ोटो, संदेश और स्थान के साथ इनकमिंग कॉल</string>
-  <string name="notification_incoming_call_attachments">अटैचमेंट के साथ इनकमिंग कॉल</string>
-  <string name="important_notification_incoming_call">महत्वपूर्ण इनकमिंग कॉल</string>
-  <string name="important_notification_incoming_call_with_photo">फ़ोटो के साथ महत्वपूर्ण इनकमिंग कॉल</string>
-  <string name="important_notification_incoming_call_with_message">संदेश के साथ महत्वपूर्ण इनकमिंग कॉल</string>
-  <string name="important_notification_incoming_call_with_location">स्थान के साथ महत्वपूर्ण इनकमिंग कॉल</string>
-  <string name="important_notification_incoming_call_with_photo_message">फ़ोटो और संदेश के साथ महत्वपूर्ण इनकमिंग कॉल</string>
-  <string name="important_notification_incoming_call_with_photo_location">फ़ोटो और स्थान के साथ महत्वपूर्ण इनकमिंग कॉल</string>
-  <string name="important_notification_incoming_call_with_message_location">संदेश और स्थान के साथ महत्वपूर्ण इनकमिंग कॉल</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">फोटो, संदेश और स्थान के साथ महत्वपूर्ण इनकमिंग कॉल</string>
-  <string name="important_notification_incoming_call_attachments">अटैचमेंट के साथ महत्वपूर्ण इनकमिंग कॉल</string>
   <string name="notification_incoming_work_call">कार्यस्थल की आवक कॉल</string>
   <string name="notification_incoming_spam_call">संदिग्ध आवक स्पैम कॉल</string>
   <string name="notification_requesting_video_call">इनकमिंग वीडियो अनुरोध</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi‑Fi नेटवर्क पर स्विच नहीं कर सका</string>
   <string name="video_call_lte_to_wifi_failed_message">वीडियो कॉल मोबाइल नेटवर्क पर बना रहेगा. मानक डेटा शुल्क लागू हो सकते हैं.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">इसे दोबारा न दिखाएं</string>
-  <string name="bubble_return_to_call">कॉल पर वापस जाएं</string>
-  <string name="rtt_request_dialog_title">आरटीटी कॉल में शामिल हों?</string>
+    <string name="rtt_request_dialog_title">आरटीटी कॉल में शामिल हों?</string>
   <string name="rtt_request_dialog_details">%1$s को आपके वॉइस कॉल में मैसेज सेवा का उपयोग करना है.</string>
   <string name="rtt_request_dialog_more_information">आरटीटी सुविधा ऐसे कॉल करने वालों (कॉलर) की मदद करती है, जो बधिर हैं, ऊंचा सुनते हैं, ठीक से बोल नहीं पाते या जिनके लिए सिर्फ़ आवाज़ काफ़ी नहीं होती.</string>
   <string name="rtt_button_decline_request">नहीं, धन्यवाद</string>
diff --git a/java/com/android/incallui/res/values-hr/strings.xml b/java/com/android/incallui/res/values-hr/strings.xml
index c84b208..d087346 100644
--- a/java/com/android/incallui/res/values-hr/strings.xml
+++ b/java/com/android/incallui/res/values-hr/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Dolazni poziv</string>
   <string name="notification_incoming_video_call">Dolazni videopoziv</string>
   <string name="notification_incoming_call_mutli_sim">Dolazni poziv putem %1$s</string>
-  <string name="notification_incoming_call_with_photo">Dolazni poziv s fotografijom</string>
-  <string name="notification_incoming_call_with_message">Dolazni poziv s porukom</string>
-  <string name="notification_incoming_call_with_location">Dolazni poziv s lokacijom</string>
-  <string name="notification_incoming_call_with_photo_message">Dolazni poziv s fotografijom i porukom</string>
-  <string name="notification_incoming_call_with_photo_location">Dolazni poziv s fotografijom i lokacijom</string>
-  <string name="notification_incoming_call_with_message_location">Dolazni poziv s porukom i lokacijom</string>
-  <string name="notification_incoming_call_with_photo_message_location">Dolazni poziv s fotografijom, porukom i lokacijom</string>
-  <string name="notification_incoming_call_attachments">Dolazni poziv s privicima</string>
-  <string name="important_notification_incoming_call">Važan dolazni poziv</string>
-  <string name="important_notification_incoming_call_with_photo">Važan dolazni poziv s fotografijom</string>
-  <string name="important_notification_incoming_call_with_message">Važan dolazni poziv s porukom</string>
-  <string name="important_notification_incoming_call_with_location">Važan dolazni poziv s lokacijom</string>
-  <string name="important_notification_incoming_call_with_photo_message">Važan dolazni poziv s fotografijom i porukom</string>
-  <string name="important_notification_incoming_call_with_photo_location">Važan dolazni poziv s fotografijom i lokacijom</string>
-  <string name="important_notification_incoming_call_with_message_location">Važan dolazni poziv s porukom i lokacijom</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Važan poziv s fotografijom, porukom i lokacijom</string>
-  <string name="important_notification_incoming_call_attachments">Važan dolazni poziv s privicima</string>
   <string name="notification_incoming_work_call">Dolazni poslovni poziv</string>
   <string name="notification_incoming_spam_call">Mogući neželjeni dolazni poziv</string>
   <string name="notification_requesting_video_call">Dolazni zahtjev za videopoziv</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Prebacivanje na Wi-Fi mrežu nije moguće</string>
   <string name="video_call_lte_to_wifi_failed_message">Videopoziv će ostati na mobilnoj mreži. Možda ćete morati platiti podatkovni promet.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ne prikazuj ponovno</string>
-  <string name="bubble_return_to_call">Natrag na poziv</string>
-  <string name="rtt_request_dialog_title">Želite li se pridružiti RTT pozivu?</string>
+    <string name="rtt_request_dialog_title">Želite li se pridružiti RTT pozivu?</string>
   <string name="rtt_request_dialog_details">%1$s želi slati poruke u vašem glasovnom pozivu.</string>
   <string name="rtt_request_dialog_more_information">RTT pomaže pozivateljima koji su gluhi, nagluhi, imaju govornu manu ili im je potrebno nešto više od glasa.</string>
   <string name="rtt_button_decline_request">Ne, hvala</string>
diff --git a/java/com/android/incallui/res/values-hu/cm_strings.xml b/java/com/android/incallui/res/values-hu/cm_strings.xml
new file mode 100644
index 0000000..caf4598
--- /dev/null
+++ b/java/com/android/incallui/res/values-hu/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Nem sikerült a hívásrögzítést elindítani</string>
+    <string name="call_recording_file_location">Hívások mentése ide: <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Hívásrögzítés</string>
+    <string name="onscreenCallRecordingText">Hívásrögzítés - <xliff:g id="duration" example="00:10">%1$s-</xliff:g></string>
+    <string name="onscreenStopCallRecordText">A rögzítés leállítása</string>
+    <string name="recording_warning_title">Engedélyezi a hívásrögzítést?</string>
+    <string name="recording_warning_text">Figyelmeztetés: A hívás rögzítésére és a hangfelvétel felhasználására vonatkozó törvények, rendeletek és szabályozások betartásáért Ön tartozik felelősséggel.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-hu/strings.xml b/java/com/android/incallui/res/values-hu/strings.xml
index da152f4..42af3cc 100644
--- a/java/com/android/incallui/res/values-hu/strings.xml
+++ b/java/com/android/incallui/res/values-hu/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Bejövő hívás</string>
   <string name="notification_incoming_video_call">Bejövő videohívás</string>
   <string name="notification_incoming_call_mutli_sim">Bejövő hívás a következőn: %1$s</string>
-  <string name="notification_incoming_call_with_photo">Bejövő hívás fotóval</string>
-  <string name="notification_incoming_call_with_message">Bejövő hívás üzenettel</string>
-  <string name="notification_incoming_call_with_location">Bejövő hívás hellyel</string>
-  <string name="notification_incoming_call_with_photo_message">Bejövő hívás fotóval és üzenettel</string>
-  <string name="notification_incoming_call_with_photo_location">Bejövő hívás fotóval és hellyel</string>
-  <string name="notification_incoming_call_with_message_location">Bejövő hívás üzenettel és hellyel</string>
-  <string name="notification_incoming_call_with_photo_message_location">Bejövő hívás fotóval, üzenettel és hellyel</string>
-  <string name="notification_incoming_call_attachments">Bejövő hívás mellékletekkel</string>
-  <string name="important_notification_incoming_call">Fontos bejövő hívás</string>
-  <string name="important_notification_incoming_call_with_photo">Fontos bejövő hívás fotóval</string>
-  <string name="important_notification_incoming_call_with_message">Fontos bejövő hívás üzenettel</string>
-  <string name="important_notification_incoming_call_with_location">Fontos bejövő hívás hellyel</string>
-  <string name="important_notification_incoming_call_with_photo_message">Fontos bejövő hívás fotóval és üzenettel</string>
-  <string name="important_notification_incoming_call_with_photo_location">Fontos bejövő hívás fotóval és hellyel</string>
-  <string name="important_notification_incoming_call_with_message_location">Fontos bejövő hívás üzenettel és hellyel</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Fontos bejövő hívás fotóval, üzenettel és hellyel</string>
-  <string name="important_notification_incoming_call_attachments">Fontos bejövő hívás mellékletekkel</string>
   <string name="notification_incoming_work_call">Bejövő munkahelyi hívás</string>
   <string name="notification_incoming_spam_call">Bejövő gyanús spamhívás</string>
   <string name="notification_requesting_video_call">Bejövő videokérés</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Nem sikerült Wi-Fi-hálózatra váltani</string>
   <string name="video_call_lte_to_wifi_failed_message">A videohívást továbbra is a mobilhálózaton folytatja. A mobilszolgáltató a normál adatforgalmi díjat számítja fel.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ne jelenjen meg többé</string>
-  <string name="bubble_return_to_call">Vissza a híváshoz</string>
-  <string name="rtt_request_dialog_title">Csatlakozik az RTT-híváshoz?</string>
+    <string name="rtt_request_dialog_title">Csatlakozik az RTT-híváshoz?</string>
   <string name="rtt_request_dialog_details">%1$s szeretne üzenetet váltani a hanghívásban.</string>
   <string name="rtt_request_dialog_more_information">Az RTT funkció a siket, hallássérült, beszédzavaros vagy a hangalapú kommunikáción kívül más kommunikációt is igénylő hívóknak lehet segítségére.</string>
   <string name="rtt_button_decline_request">Nem, köszönöm</string>
diff --git a/java/com/android/incallui/res/values-hy/strings.xml b/java/com/android/incallui/res/values-hy/strings.xml
index 5657308..a6a5c0e 100644
--- a/java/com/android/incallui/res/values-hy/strings.xml
+++ b/java/com/android/incallui/res/values-hy/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Մուտքային զանգ</string>
   <string name="notification_incoming_video_call">Մուտքային տեսազանգ</string>
   <string name="notification_incoming_call_mutli_sim">Մուտքային զանգ (%1$s)</string>
-  <string name="notification_incoming_call_with_photo">Մուտքային զանգ՝ լուսանկարով</string>
-  <string name="notification_incoming_call_with_message">Մուտքային զանգ՝ հաղորդագրությամբ</string>
-  <string name="notification_incoming_call_with_location">Մուտքային զանգ՝ տեղադրության տվյալներով</string>
-  <string name="notification_incoming_call_with_photo_message">Մուտքային զանգ՝ լուսանկարով և հաղորդագրությամբ</string>
-  <string name="notification_incoming_call_with_photo_location">Զանգ՝ լուսանկարով և տեղադրության տվյալներով</string>
-  <string name="notification_incoming_call_with_message_location">Զանգ՝ հաղորդագրությամբ և տեղադրության տվյալներով</string>
-  <string name="notification_incoming_call_with_photo_message_location">Մուտքային զանգ՝ կցորդներով</string>
-  <string name="notification_incoming_call_attachments">Մուտքային զանգ՝ կցորդներով</string>
-  <string name="important_notification_incoming_call">Կարևոր մուտքային զանգ</string>
-  <string name="important_notification_incoming_call_with_photo">Կարևոր մուտքային զանգ՝ լուսանկարով</string>
-  <string name="important_notification_incoming_call_with_message">Կարևոր մուտքային զանգ՝ հողորդագրությամբ</string>
-  <string name="important_notification_incoming_call_with_location">Կարևոր մուտքային զանգ՝ տեղադրության տվյալներով</string>
-  <string name="important_notification_incoming_call_with_photo_message">Կարևոր զանգ՝ լուսանկարով և հաղորդագրությամբ</string>
-  <string name="important_notification_incoming_call_with_photo_location">Կարևոր զանգ՝ լուսանկարով և տեղադրության տվյալներով</string>
-  <string name="important_notification_incoming_call_with_message_location">Կարևոր մուտքային զանգ՝ կցորդներով</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Կարևոր մուտքային զանգ՝ կցորդներով</string>
-  <string name="important_notification_incoming_call_attachments">Կարևոր մուտքային զանգ՝ կցորդներով</string>
   <string name="notification_incoming_work_call">Մուտքային աշխատանքային զանգ</string>
   <string name="notification_incoming_spam_call">Մուտքային զանգը հավանաբար սպամ է</string>
   <string name="notification_requesting_video_call">Մուտքային տեսազանգի հայցում</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Չհաջողվեց միանալ Wi-Fi ցանցին</string>
   <string name="video_call_lte_to_wifi_failed_message">Տեսազանգը կշարունակվի բջջային ցանցով: Գանձումը կկատարվի ըստ ձեր սակագնային պլանի:</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Այլևս ցույց չտալ</string>
-  <string name="bubble_return_to_call">Վերադառնալ զանգին</string>
-  <string name="rtt_request_dialog_title">Միանա՞լ RTT զանգին</string>
+    <string name="rtt_request_dialog_title">Միանա՞լ RTT զանգին</string>
   <string name="rtt_request_dialog_details">%1$s օգտատերը զանգի ընթացքում ուզում է օգտվել հաղորդագրման ծառայությունից:</string>
   <string name="rtt_request_dialog_more_information">RTT-ն օգնում է այն բաժանորդներին, ովքեր լսողության և խոսքի դժվարություններ ունեն, կամ ովքեր լոկ ձայնով չեն բավարարվում:</string>
   <string name="rtt_button_decline_request">Ոչ</string>
diff --git a/java/com/android/incallui/res/values-in/cm_strings.xml b/java/com/android/incallui/res/values-in/cm_strings.xml
new file mode 100644
index 0000000..006c51b
--- /dev/null
+++ b/java/com/android/incallui/res/values-in/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Gagal memulai perekaman panggilan</string>
+    <string name="call_recording_file_location">Rekaman panggilan disimpan ke <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Rekam panggilan</string>
+    <string name="onscreenCallRecordingText">Merekam panggilan - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Berhenti merekam</string>
+    <string name="recording_warning_title">Hidupkan perekam panggilan?</string>
+    <string name="recording_warning_text">Perhatian: Anda akan bertanggung jawab untuk mematuhi setiap hukum, peraturan dan aturan yang berlaku untuk penggunaan fungsi perekaman panggilan dan penggunaan atau distribusi dari rekaman tersebut.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-in/strings.xml b/java/com/android/incallui/res/values-in/strings.xml
index c5162d3..d7f89e7 100644
--- a/java/com/android/incallui/res/values-in/strings.xml
+++ b/java/com/android/incallui/res/values-in/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Panggilan masuk</string>
   <string name="notification_incoming_video_call">Video call masuk</string>
   <string name="notification_incoming_call_mutli_sim">Panggilan masuk via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Panggilan masuk dengan foto</string>
-  <string name="notification_incoming_call_with_message">Panggilan masuk dengan pesan</string>
-  <string name="notification_incoming_call_with_location">Panggilan masuk dengan lokasi</string>
-  <string name="notification_incoming_call_with_photo_message">Panggilan masuk dengan foto dan pesan</string>
-  <string name="notification_incoming_call_with_photo_location">Panggilan masuk dengan foto dan lokasi</string>
-  <string name="notification_incoming_call_with_message_location">Panggilan masuk dengan pesan dan lokasi</string>
-  <string name="notification_incoming_call_with_photo_message_location">Panggilan masuk dengan foto, pesan, dan lokasi</string>
-  <string name="notification_incoming_call_attachments">Panggilan masuk dengan lampiran</string>
-  <string name="important_notification_incoming_call">Panggilan masuk penting</string>
-  <string name="important_notification_incoming_call_with_photo">Panggilan masuk penting dengan foto</string>
-  <string name="important_notification_incoming_call_with_message">Panggilan masuk penting dengan pesan</string>
-  <string name="important_notification_incoming_call_with_location">Panggilan masuk penting dengan lokasi</string>
-  <string name="important_notification_incoming_call_with_photo_message">Panggilan masuk penting dengan foto dan pesan</string>
-  <string name="important_notification_incoming_call_with_photo_location">Panggilan masuk penting dengan foto dan lokasi</string>
-  <string name="important_notification_incoming_call_with_message_location">Panggilan masuk penting dengan pesan dan lokasi</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Panggilan penting dengan foto, pesan, dan lokasi</string>
-  <string name="important_notification_incoming_call_attachments">Panggilan masuk penting dengan lampiran</string>
   <string name="notification_incoming_work_call">Panggilan telepon kerja yang masuk</string>
   <string name="notification_incoming_spam_call">Panggilan masuk yang diduga spam</string>
   <string name="notification_requesting_video_call">Permintaan video masuk</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Tidak dapat beralih ke jaringan Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Video call akan tetap di jaringan seluler. Tarif data standar mungkin berlaku.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Jangan tampilkan ini lagi</string>
-  <string name="bubble_return_to_call">Kembali ke panggilan</string>
-  <string name="rtt_request_dialog_title">Ingin bergabung ke panggilan RTT?</string>
+    <string name="rtt_request_dialog_title">Ingin bergabung ke panggilan RTT?</string>
   <string name="rtt_request_dialog_details">%1$s ingin menggunakan pengiriman pesan dalam panggilan suara Anda.</string>
   <string name="rtt_request_dialog_more_information">RTT membantu penelepon yang tunarungu, kesulitan mendengar, memiliki gangguan berbicara, atau memerlukan lebih dari sekadar suara.</string>
   <string name="rtt_button_decline_request">Tidak</string>
diff --git a/java/com/android/incallui/res/values-is/cm_strings.xml b/java/com/android/incallui/res/values-is/cm_strings.xml
new file mode 100644
index 0000000..997bc56
--- /dev/null
+++ b/java/com/android/incallui/res/values-is/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Tókst ekki að ræsa hljóðritun símtals</string>
+    <string name="call_recording_file_location">Vistaði hljóðritun í <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Taka upp símtal</string>
+    <string name="onscreenCallRecordingText">Hljóðrita símtal - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Stöðva upptöku</string>
+    <string name="recording_warning_title">Virkja hljóðritun símtala?</string>
+    <string name="recording_warning_text">Áminning: Þú berð ábyrgð á því að farið sé eftir öllum lögum, reglugerðum og reglum sem gætu átt við um hljóðritun símtala og notkun eða dreifingu á slíkum upptökum.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-is/strings.xml b/java/com/android/incallui/res/values-is/strings.xml
index 35f21f7..7e47fa5 100644
--- a/java/com/android/incallui/res/values-is/strings.xml
+++ b/java/com/android/incallui/res/values-is/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Móttekið símtal</string>
   <string name="notification_incoming_video_call">Myndsímtal berst</string>
   <string name="notification_incoming_call_mutli_sim">Símtal berst í gegnum %1$s</string>
-  <string name="notification_incoming_call_with_photo">Móttekið símtal með mynd</string>
-  <string name="notification_incoming_call_with_message">Móttekið símtal með skilaboðum</string>
-  <string name="notification_incoming_call_with_location">Móttekið símtal með staðsetningu</string>
-  <string name="notification_incoming_call_with_photo_message">Móttekið símtal með mynd og skilaboðum</string>
-  <string name="notification_incoming_call_with_photo_location">Móttekið símtal með mynd og staðsetningu</string>
-  <string name="notification_incoming_call_with_message_location">Móttekið símtal með skilaboðum og staðsetningu</string>
-  <string name="notification_incoming_call_with_photo_message_location">Móttekið símtal með mynd, skilaboðum og staðsetningu</string>
-  <string name="notification_incoming_call_attachments">Móttekið símtal með viðhengjum</string>
-  <string name="important_notification_incoming_call">Mikilvægt móttekið símtal</string>
-  <string name="important_notification_incoming_call_with_photo">Mikilvægt móttekið símtal með mynd</string>
-  <string name="important_notification_incoming_call_with_message">Mikilvægt móttekið símtal með skilaboðum</string>
-  <string name="important_notification_incoming_call_with_location">Mikilvægt móttekið símtal með staðsetningu</string>
-  <string name="important_notification_incoming_call_with_photo_message">Mikilvægt móttekið símtal með mynd og skilaboðum</string>
-  <string name="important_notification_incoming_call_with_photo_location">Mikilvægt móttekið símtal með mynd og staðsetningu</string>
-  <string name="important_notification_incoming_call_with_message_location">Mikilvægt móttekið símtal með skilaboðum og staðsetningu</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Mikilvægt móttekið símtal með mynd, skilaboðum og staðsetningu</string>
-  <string name="important_notification_incoming_call_attachments">Mikilvægt móttekið símtal með viðhengjum</string>
   <string name="notification_incoming_work_call">Vinnusímtal berst</string>
   <string name="notification_incoming_spam_call">Símtal sem berst er hugsanlega úr ruslnúmeri</string>
   <string name="notification_requesting_video_call">Myndbeiðni berst</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Ekki var hægt að skipta yfir á Wi-Fi-net</string>
   <string name="video_call_lte_to_wifi_failed_message">Myndsímtal verður áfram á farsímaneti. Stöðluð gjöld fyrir gagnaflutning kunna að eiga við.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ekki birta þetta aftur</string>
-  <string name="bubble_return_to_call">Aftur í símtal</string>
-  <string name="rtt_request_dialog_title">Taka þátt í RTT-símtali?</string>
+    <string name="rtt_request_dialog_title">Taka þátt í RTT-símtali?</string>
   <string name="rtt_request_dialog_details">%1$s vill nota skilaboð í símtalinu.</string>
   <string name="rtt_request_dialog_more_information">RTT (símtöl með texta í rauntíma) aðstoðar heyrnarlausa og fólk með heyrnarskerðingu eða skerta talgetu og þá sem þurfa að styðja sig við meira en bara hljóð.</string>
   <string name="rtt_button_decline_request">Nei, takk</string>
diff --git a/java/com/android/incallui/res/values-it/cm_strings.xml b/java/com/android/incallui/res/values-it/cm_strings.xml
new file mode 100644
index 0000000..0e019ad
--- /dev/null
+++ b/java/com/android/incallui/res/values-it/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Impossibile avviare la registrazione della chiamata</string>
+    <string name="call_recording_file_location">Registrazione chiamata salvata su <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Registra chiamata</string>
+    <string name="onscreenCallRecordingText">Registrazione chiamata - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Interrompi registrazione</string>
+    <string name="recording_warning_title">Registrazione chiamata</string>
+    <string name="recording_warning_text">Avviso: continuando ti dichiari responsabile della conformità con eventuali leggi, regolamenti e norme che si applicano all\'utilizzo, condivisione e distribuzione sulle registrazioni delle chiamate.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-it/strings.xml b/java/com/android/incallui/res/values-it/strings.xml
index 5132a17..114bab7 100644
--- a/java/com/android/incallui/res/values-it/strings.xml
+++ b/java/com/android/incallui/res/values-it/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Chiamata in arrivo</string>
   <string name="notification_incoming_video_call">Videochiamata in arrivo</string>
   <string name="notification_incoming_call_mutli_sim">Chiamata in arrivo tramite %1$s</string>
-  <string name="notification_incoming_call_with_photo">Chiamata in arrivo con foto</string>
-  <string name="notification_incoming_call_with_message">Chiamata in arrivo con messaggio</string>
-  <string name="notification_incoming_call_with_location">Chiamata in arrivo con posizione</string>
-  <string name="notification_incoming_call_with_photo_message">Chiamata in arrivo con foto e messaggio</string>
-  <string name="notification_incoming_call_with_photo_location">Chiamata in arrivo con foto e posizione</string>
-  <string name="notification_incoming_call_with_message_location">Chiamata in arrivo con messaggio e posizione</string>
-  <string name="notification_incoming_call_with_photo_message_location">Chiamata in arrivo con foto, messaggio e posizione</string>
-  <string name="notification_incoming_call_attachments">Chiamata in arrivo con allegato</string>
-  <string name="important_notification_incoming_call">Chiamata in arrivo importante</string>
-  <string name="important_notification_incoming_call_with_photo">Chiamata in arrivo importante con foto</string>
-  <string name="important_notification_incoming_call_with_message">Chiamata in arrivo importante con messaggio</string>
-  <string name="important_notification_incoming_call_with_location">Chiamata in arrivo importante con posizione</string>
-  <string name="important_notification_incoming_call_with_photo_message">Chiamata in arrivo importante con foto e messaggio</string>
-  <string name="important_notification_incoming_call_with_photo_location">Chiamata importante in arrivo con foto e posizione</string>
-  <string name="important_notification_incoming_call_with_message_location">Chiamata importante in arrivo con messaggio e posizione</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Chiamata importante in arrivo con foto, messaggio e posizione</string>
-  <string name="important_notification_incoming_call_attachments">Chiamata importante in arrivo con allegati</string>
   <string name="notification_incoming_work_call">Chiamata di lavoro in arrivo</string>
   <string name="notification_incoming_spam_call">Chiamata di presunto spam in arrivo</string>
   <string name="notification_requesting_video_call">Richiesta video in arrivo</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Impossibile passare alla rete Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">La videochiamata rimarrà sulla rete mobile. Potrebbero essere applicati costi standard per il traffico dati.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Non mostrare più questo messaggio</string>
-  <string name="bubble_return_to_call">Torna a chiamata</string>
-  <string name="rtt_request_dialog_title">Partecipare alla chiamata RTT?</string>
+    <string name="rtt_request_dialog_title">Partecipare alla chiamata RTT?</string>
   <string name="rtt_request_dialog_details">%1$s vuole utilizzare la messaggistica durante la chiamata vocale.</string>
   <string name="rtt_request_dialog_more_information">RTT aiuta i chiamanti con disabilità uditive o del linguaggio e le persone che hanno bisogno di un supporto scritto oltre alla voce.</string>
   <string name="rtt_button_decline_request">No grazie</string>
diff --git a/java/com/android/incallui/res/values-iw/cm_strings.xml b/java/com/android/incallui/res/values-iw/cm_strings.xml
new file mode 100644
index 0000000..f51dd0d
--- /dev/null
+++ b/java/com/android/incallui/res/values-iw/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">התחלת הקלטת השיחה נכשלה</string>
+    <string name="call_recording_file_location">הקלטת השיחה נשמרה ב־<xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">הקלט שיחה</string>
+    <string name="onscreenCallRecordingText">מקליט שיחה – <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">הפסק להקליט</string>
+    <string name="recording_warning_title">להפעיל הקלטת שיחה?</string>
+    <string name="recording_warning_text">לתשומת לבך: באחריותך לציית לכל חוקים, התקנות והכללים החלים על השימוש באפשרות הקלטת השיחות, על השימוש ו/או ההפצה של הקלטות אלה.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-iw/strings.xml b/java/com/android/incallui/res/values-iw/strings.xml
index 931c113..c3da949 100644
--- a/java/com/android/incallui/res/values-iw/strings.xml
+++ b/java/com/android/incallui/res/values-iw/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">שיחה נכנסת</string>
   <string name="notification_incoming_video_call">שיחת וידאו נכנסת</string>
   <string name="notification_incoming_call_mutli_sim">שיחה נכנסת באמצעות %1$s</string>
-  <string name="notification_incoming_call_with_photo">שיחה נכנסת עם תמונה</string>
-  <string name="notification_incoming_call_with_message">שיחה נכנסת עם הודעה</string>
-  <string name="notification_incoming_call_with_location">שיחה נכנסת עם מיקום</string>
-  <string name="notification_incoming_call_with_photo_message">שיחה נכנסת עם תמונה והודעה</string>
-  <string name="notification_incoming_call_with_photo_location">שיחה נכנסת עם תמונה ומיקום</string>
-  <string name="notification_incoming_call_with_message_location">שיחה נכנסת עם הודעה ומיקום</string>
-  <string name="notification_incoming_call_with_photo_message_location">שיחה נכנסת עם תמונה, הודעה ומיקום</string>
-  <string name="notification_incoming_call_attachments">שיחה נכנסת עם קבצים מצורפים</string>
-  <string name="important_notification_incoming_call">שיחה נכנסת חשובה</string>
-  <string name="important_notification_incoming_call_with_photo">שיחה נכנסת חשובה עם תמונה</string>
-  <string name="important_notification_incoming_call_with_message">שיחה נכנסת חשובה עם הודעה</string>
-  <string name="important_notification_incoming_call_with_location">שיחה נכנסת חשובה עם מיקום</string>
-  <string name="important_notification_incoming_call_with_photo_message">שיחה נכנסת חשובה עם תמונה והודעה</string>
-  <string name="important_notification_incoming_call_with_photo_location">שיחה נכנסת חשובה עם תמונה ומיקום</string>
-  <string name="important_notification_incoming_call_with_message_location">שיחה נכנסת חשובה עם הודעה ומיקום</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">שיחה נכנסת חשובה עם תמונה, הודעה ומיקום</string>
-  <string name="important_notification_incoming_call_attachments">שיחה נכנסת חשובה עם קבצים מצורפים</string>
   <string name="notification_incoming_work_call">שיחת עבודה נכנסת</string>
   <string name="notification_incoming_spam_call">השיחה הנכנסת חשודה כספאם</string>
   <string name="notification_requesting_video_call">בקשת וידאו נכנסת</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">‏לא ניתן לעבור לרשת Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">שיחת הווידאו תמשיך להיות ברשת הסלולרית. ייתכן שתחויב על שימוש בנתונים.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">אל תציג זאת שוב</string>
-  <string name="bubble_return_to_call">חזרה לשיחה</string>
-  <string name="rtt_request_dialog_title">‏רוצה להצטרף לשיחת RTT?</string>
+    <string name="rtt_request_dialog_title">‏רוצה להצטרף לשיחת RTT?</string>
   <string name="rtt_request_dialog_details">%1$s רוצה להשתמש בהודעות בשיחה.</string>
   <string name="rtt_request_dialog_more_information">‏RTT (טקסט בזמן אמת) היא תכונת נגישות שעוזרת לחרשים, לקויי שמיעה, לקויי דיבור או אנשים שלא יכולים להסתפק רק בקול במהלך השיחה.</string>
   <string name="rtt_button_decline_request">לא תודה</string>
diff --git a/java/com/android/incallui/res/values-ja/cm_strings.xml b/java/com/android/incallui/res/values-ja/cm_strings.xml
new file mode 100644
index 0000000..524a04c
--- /dev/null
+++ b/java/com/android/incallui/res/values-ja/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">通話録音を開始できませんでした</string>
+    <string name="call_recording_file_location"><xliff:g id="filename">%s</xliff:g>に録音した通話を保存しました</string>
+    <string name="onscreenCallRecordText">通話を録音</string>
+    <string name="onscreenCallRecordingText">通話の録音中 - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">録音を停止</string>
+    <string name="recording_warning_title">通話の録音を有効にしますか？</string>
+    <string name="recording_warning_text">注意: あなたには通話録音機能とその録音データの配布に準用する法令・条例・規範を遵守する責任があります。</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-ja/strings.xml b/java/com/android/incallui/res/values-ja/strings.xml
index 626035c..0f41210 100644
--- a/java/com/android/incallui/res/values-ja/strings.xml
+++ b/java/com/android/incallui/res/values-ja/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">通話着信</string>
   <string name="notification_incoming_video_call">ビデオハングアウト着信</string>
   <string name="notification_incoming_call_mutli_sim">%1$s 経由で着信中</string>
-  <string name="notification_incoming_call_with_photo">着信（写真あり）</string>
-  <string name="notification_incoming_call_with_message">着信（メッセージあり）</string>
-  <string name="notification_incoming_call_with_location">着信（位置情報あり）</string>
-  <string name="notification_incoming_call_with_photo_message">着信（写真、メッセージあり）</string>
-  <string name="notification_incoming_call_with_photo_location">着信（写真、位置情報あり）</string>
-  <string name="notification_incoming_call_with_message_location">着信（メッセージ、位置情報あり）</string>
-  <string name="notification_incoming_call_with_photo_message_location">着信（写真、メッセージ、位置情報あり）</string>
-  <string name="notification_incoming_call_attachments">着信（添付ファイルあり）</string>
-  <string name="important_notification_incoming_call">重要な着信</string>
-  <string name="important_notification_incoming_call_with_photo">重要な着信（写真あり）</string>
-  <string name="important_notification_incoming_call_with_message">重要な着信（メッセージあり）</string>
-  <string name="important_notification_incoming_call_with_location">重要な着信（位置情報あり）</string>
-  <string name="important_notification_incoming_call_with_photo_message">重要な着信（写真、メッセージあり）</string>
-  <string name="important_notification_incoming_call_with_photo_location">重要な着信（写真、位置情報あり）</string>
-  <string name="important_notification_incoming_call_with_message_location">重要な着信（メッセージ、位置情報あり）</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">重要な着信（写真、メッセージ、位置情報あり）</string>
-  <string name="important_notification_incoming_call_attachments">重要な着信（添付ファイルあり）</string>
   <string name="notification_incoming_work_call">仕事の通話が着信中</string>
   <string name="notification_incoming_spam_call">迷惑電話の疑いがある通話を着信しています</string>
   <string name="notification_requesting_video_call">ビデオハングアウトリクエスト着信</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi ネットワークに切り替えることができませんでした</string>
   <string name="video_call_lte_to_wifi_failed_message">引き続きモバイル ネットワークを使用してビデオハングアウトを続行します。通常のデータ通信料が適用される場合があります。</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">今後このメッセージを表示しない</string>
-  <string name="bubble_return_to_call">通話に戻る</string>
-  <string name="rtt_request_dialog_title">RTT 通話に参加しますか？</string>
+    <string name="rtt_request_dialog_title">RTT 通話に参加しますか？</string>
   <string name="rtt_request_dialog_details">%1$s さんが、音声通話中に発話がテキスト表示される機能の利用をリクエストしています。</string>
   <string name="rtt_request_dialog_more_information">RTT は、聴覚障害や言語障害があるなど、音声だけではコミュニケーションを取ることが困難なユーザーをサポートする機能です。</string>
   <string name="rtt_button_decline_request">参加しない</string>
diff --git a/java/com/android/incallui/res/values-ka/cm_strings.xml b/java/com/android/incallui/res/values-ka/cm_strings.xml
new file mode 100644
index 0000000..9368433
--- /dev/null
+++ b/java/com/android/incallui/res/values-ka/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">საუბრის ჩაწერის დაწყება ვერ მოხერხდა</string>
+    <string name="call_recording_file_location">საუბრის ჩანაწერი შენახულია – <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">საუბრის ჩაწერა</string>
+    <string name="onscreenCallRecordingText">საუბარი იწერება – <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">ჩაწერის შეწყვეტა</string>
+    <string name="recording_warning_title">გსურთ საუბრის ჩაწერა?</string>
+    <string name="recording_warning_text">გაითვალისწინეთ: თავად იქნებით პასუხისმგებელი ყველა იმ კანონის, დადგენილებისა თუ წესის წინაშე, რომელიც ეხება საუბრის ჩაწერასა და ამ ჩანაწერების გამოყენებას ან გავრცელებას.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-ka/strings.xml b/java/com/android/incallui/res/values-ka/strings.xml
index 923e8d6..537ee85 100644
--- a/java/com/android/incallui/res/values-ka/strings.xml
+++ b/java/com/android/incallui/res/values-ka/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">შემომავალი ზარი</string>
   <string name="notification_incoming_video_call">შემომავალი ვიდეოზარი</string>
   <string name="notification_incoming_call_mutli_sim">შემომავალი ზარი %1$s-დან</string>
-  <string name="notification_incoming_call_with_photo">შემომავალი ზარი ფოტოთი</string>
-  <string name="notification_incoming_call_with_message">შემომავალი ზარი შეტყობინებით</string>
-  <string name="notification_incoming_call_with_location">შემომავალი ზარი მდებარეობით</string>
-  <string name="notification_incoming_call_with_photo_message">შემომავალი ზარი ფოტოთი და შეტყობინებით</string>
-  <string name="notification_incoming_call_with_photo_location">შემომავალი ზარი ფოტოთი და მდებარეობით</string>
-  <string name="notification_incoming_call_with_message_location">შემომავალი ზარი შეტყობინებით და მდებარეობით</string>
-  <string name="notification_incoming_call_with_photo_message_location">შემომავ. ზარი ფოტოთი, შეტყობინებით და მდებარეობით</string>
-  <string name="notification_incoming_call_attachments">შემომავალი ზარი დანართებით</string>
-  <string name="important_notification_incoming_call">მნიშვნელოვანი შემომავალი ზარი</string>
-  <string name="important_notification_incoming_call_with_photo">მნიშვნელოვანი შემომავალი ზარი ფოტოთი</string>
-  <string name="important_notification_incoming_call_with_message">მნიშვნელოვანი ზარი შეტყობინებით</string>
-  <string name="important_notification_incoming_call_with_location">მნიშვნელოვანი შემომავალი ზარი მდებარეობით</string>
-  <string name="important_notification_incoming_call_with_photo_message">მნიშვნელოვანი ზარი ფოტოთი და შეტყობინებით</string>
-  <string name="important_notification_incoming_call_with_photo_location">მნიშვნელოვანი ზარი ფოტოთი და მდებარეობით</string>
-  <string name="important_notification_incoming_call_with_message_location">მნიშვნელოვანი ზარი შეტყობინებით და მდებარეობით</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">ზარი ფოტოთი, შეტყობინებით და მდებარეობით</string>
-  <string name="important_notification_incoming_call_attachments">მნიშვნელოვანი შემომავალი ზარი დანართებით</string>
   <string name="notification_incoming_work_call">შემომავალი ზარი (სამსახური)</string>
   <string name="notification_incoming_spam_call">შემომავალი ზარი - სავარაუდოდ სპამი</string>
   <string name="notification_requesting_video_call">შემომავალი ვიდეოს მოთხოვნა</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi ქსელზე გადართვა ვერ მოხერხდა</string>
   <string name="video_call_lte_to_wifi_failed_message">ვიდეოზარი მობილური ინტერნეტის ქსელში დარჩება. შესაძლოა მოგიწიოთ მობილური ინტერნეტის სტანდარტული საფასურის გადახდა.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">აღარ მაჩვენო</string>
-  <string name="bubble_return_to_call">ზარში დაბრუნება</string>
-  <string name="rtt_request_dialog_title">გსურთ, შეუერთდეთ RTT ზარს?</string>
+    <string name="rtt_request_dialog_title">გსურთ, შეუერთდეთ RTT ზარს?</string>
   <string name="rtt_request_dialog_details">%1$s-ს სურს, გამოიყენოს შეტყობინებები თქვენს ხმოვან ზარში.</string>
   <string name="rtt_request_dialog_more_information">RTT დახმარებას უწევს ყრუ, სმენადაქვეითებულ, შეზღუდული მეტყველების მქონე აბონენტებს, ან მათ, ვისაც სჭირდება მეტი, ვიდრე მხოლოდ ხმაა.</string>
   <string name="rtt_button_decline_request">არა, გმადლობთ</string>
diff --git a/java/com/android/incallui/res/values-kab-rDZ/cm_strings.xml b/java/com/android/incallui/res/values-kab-rDZ/cm_strings.xml
new file mode 100644
index 0000000..7e9ce44
--- /dev/null
+++ b/java/com/android/incallui/res/values-kab-rDZ/cm_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Ur yezmir ara ad yebdu asekles n usiwel</string>
+    <string name="call_recording_file_location">Asiwel yettwasekles di <xliff:g id="filename">%s </xliff:g></string>
+    <string name="onscreenCallRecordText">Sekles asiwel</string>
+    <string name="onscreenStopCallRecordText">Seḥbes asekles</string>
+    <string name="recording_warning_title">Rmed asekles n isawalen?</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-kk/strings.xml b/java/com/android/incallui/res/values-kk/strings.xml
index eaa7c45..c3a97ff 100644
--- a/java/com/android/incallui/res/values-kk/strings.xml
+++ b/java/com/android/incallui/res/values-kk/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Келген қоңырау</string>
   <string name="notification_incoming_video_call">Кіріс бейне қоңырау</string>
   <string name="notification_incoming_call_mutli_sim">%1$s кіріс қоңырауы</string>
-  <string name="notification_incoming_call_with_photo">Сурет тіркелген кіріс қоңырау</string>
-  <string name="notification_incoming_call_with_message">Хабар тіркелген кіріс қоңырау</string>
-  <string name="notification_incoming_call_with_location">Орын дерегі тіркелген кіріс қоңырау</string>
-  <string name="notification_incoming_call_with_photo_message">Сурет және хабар тіркелген кіріс қоңырау</string>
-  <string name="notification_incoming_call_with_photo_location">Сурет және орын дерегі тіркелген кіріс қоңырау</string>
-  <string name="notification_incoming_call_with_message_location">Хабар және орын дерегі тіркелген кіріс қоңырау</string>
-  <string name="notification_incoming_call_with_photo_message_location">Сурет, хабар және орын дерегі тіркелген кіріс қоңырау</string>
-  <string name="notification_incoming_call_attachments">Тіркемелері бар кіріс қоңырау</string>
-  <string name="important_notification_incoming_call">Маңызды кіріс қоңырау</string>
-  <string name="important_notification_incoming_call_with_photo">Сурет тіркелген маңызды қоңырау</string>
-  <string name="important_notification_incoming_call_with_message">Хабар тіркелген маңызды кіріс қоңырауы</string>
-  <string name="important_notification_incoming_call_with_location">Орын дерегі көрсетілген маңызды кіріс қоңырау</string>
-  <string name="important_notification_incoming_call_with_photo_message">Сурет және хабар тіркелген маңызды кіріс қоңырау</string>
-  <string name="important_notification_incoming_call_with_photo_location">Сурет және орын дерегі тіркелген маңызды кіріс қоңырау</string>
-  <string name="important_notification_incoming_call_with_message_location">Хабар және орын дерегі тіркелген маңызды кіріс қоңырау</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Сурет, хабар және орын дерегі тіркелген маңызды кіріс қоңырау</string>
-  <string name="important_notification_incoming_call_attachments">Тіркемелері бар маңызды кіріс қоңырау</string>
   <string name="notification_incoming_work_call">Кіріс жұмыс қоңырауы</string>
   <string name="notification_incoming_spam_call">Кіріс қоңырауы спам болуы мүмкін</string>
   <string name="notification_requesting_video_call">Кіріс бейне сұрау</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi желісіне қосылу мүмкін болмады</string>
   <string name="video_call_lte_to_wifi_failed_message">Бейне қоңырау мобильдік желіде қалады. Стандартты мобильдік байланыс ақысы алынуы мүмкін.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Мұны қайтадан көрсетпеу</string>
-  <string name="bubble_return_to_call">Қоңырауға оралу</string>
-  <string name="rtt_request_dialog_title">RTT қоңырауына қосыласыз ба?</string>
+    <string name="rtt_request_dialog_title">RTT қоңырауына қосыласыз ба?</string>
   <string name="rtt_request_dialog_details">%1$s дауыстық қоңырау кезінде хабар жіберу функциясын қолданғысы келеді.</string>
   <string name="rtt_request_dialog_more_information">RTT қызметі мүлдем естімейтін, есту немесе сөйлеу қабілеті нашар немесе дыбысқа қосымша басқа қызметтерді қажет ететін адамдарға көмек ретінде қолданылады.</string>
   <string name="rtt_button_decline_request">Жоқ, рақмет</string>
diff --git a/java/com/android/incallui/res/values-km/strings.xml b/java/com/android/incallui/res/values-km/strings.xml
index 00b9c42..be5dc02 100644
--- a/java/com/android/incallui/res/values-km/strings.xml
+++ b/java/com/android/incallui/res/values-km/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">ការ​ហៅ​ចូល</string>
   <string name="notification_incoming_video_call">ការ​ហៅចូលជា​វីដេអូ​</string>
   <string name="notification_incoming_call_mutli_sim">ការហៅ​ចូល​តាមរយៈ %1$s</string>
-  <string name="notification_incoming_call_with_photo">ការហៅ​ចូល​​ដែល​មាន​រូបថត</string>
-  <string name="notification_incoming_call_with_message">ការ​ហោ​ចូល​ដែល​មាន​​សារ</string>
-  <string name="notification_incoming_call_with_location">ការ​ហៅ​ចូល​ដែល​មាន​​ទីតាំង</string>
-  <string name="notification_incoming_call_with_photo_message">ការ​ហៅ​ចូល​ដែល​មាន​រូបថត និង​សារ</string>
-  <string name="notification_incoming_call_with_photo_location">ការ​ហៅ​ចូល​ដែល​មាន​រូបថត និង​ទីតាំង</string>
-  <string name="notification_incoming_call_with_message_location">ការ​ហៅ​ចូល​ដែល​សារ និង​ទីតាំង</string>
-  <string name="notification_incoming_call_with_photo_message_location">ការ​ហៅ​ចូល​ដែល​មាន​រូបថត សារ និង​ទីតាំង</string>
-  <string name="notification_incoming_call_attachments">ការ​ហៅ​ចូល​ដែល​មាន​ឯកសារ​ភ្ជាប់</string>
-  <string name="important_notification_incoming_call">ការ​ហៅ​ចូល​ដែល​សំខាន់</string>
-  <string name="important_notification_incoming_call_with_photo">ការ​ហៅ​ចូល​ដែល​សំខាន់​​មាន​រូបថត</string>
-  <string name="important_notification_incoming_call_with_message">ការហៅ​ចូល​ដែល​សំខាន់​​​មាន​សារ</string>
-  <string name="important_notification_incoming_call_with_location">ការ​ហៅ​ចូល​ដែល​សំខាន់​មាន​ទីតាំង</string>
-  <string name="important_notification_incoming_call_with_photo_message">ការ​ហៅ​ចូល​ដែល​សំខាន់​មាន​រូបថត និង​សារ</string>
-  <string name="important_notification_incoming_call_with_photo_location">ការ​ហៅ​ចូល​ដែល​សំខាន់​មាន​​រូបថត និង​ទីតាំង</string>
-  <string name="important_notification_incoming_call_with_message_location">ការ​ហៅ​ចូល​ដែល​សំខាន់​មាន​សារ និង​ទីតាំង</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">ការ​ហៅ​ចូល​ដែល​សំខាន់​មាន​រូបថត សារ និង​ទីតាំង</string>
-  <string name="important_notification_incoming_call_attachments">ការហៅ​​ចូល​ដែល​សំខាន់​មាន​ឯកសារ​ភ្ជាប់</string>
   <string name="notification_incoming_work_call">កំពុងហៅចូលពីកន្លែងការងារ</string>
   <string name="notification_incoming_spam_call">ការ​ហៅ​បន្លំ​​ចូល​​​ដែល​សង្ស័យ</string>
   <string name="notification_requesting_video_call">សំណើ​ការ​ហៅ​ជា​វីដេអូ​ចូល</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">មិន​អាច​ប្ដូរ​ទៅ​បណ្ដាញ Wi-Fi បាន​ទេ</string>
   <string name="video_call_lte_to_wifi_failed_message">ការហៅ​តាម​វីដេអូ​នឹង​នៅតែ​មាន​នៅ​លើ​បណ្ដាញ​ទូរសព្ទចល័ត។ អាច​នឹង​គិតថ្លៃ​ទិន្នន័យ​តាម​តម្លៃ​ស្តង់ដារ។</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">កុំ​បង្ហាញ​វា​ម្ដង​ទៀត</string>
-  <string name="bubble_return_to_call">ហៅ​ទូរសព្ទ​ទៅ​វិញ</string>
-  <string name="rtt_request_dialog_title">ចូលរួម​ការហៅ RTT ?</string>
+    <string name="rtt_request_dialog_title">ចូលរួម​ការហៅ RTT ?</string>
   <string name="rtt_request_dialog_details">%1$s ចង់​ប្រើប្រាស់​ការផ្ញើ​សារ​នៅ​ក្នុង​ការហៅ​ជា​សំឡេង​របស់​អ្នក។</string>
   <string name="rtt_request_dialog_more_information">RTT ជួយ​អ្នក​ហៅ​ទូរសព្ទ​ដែល​​ថ្លង់ ពិបាក​ក្នុង​ការស្ដាប់ មិន​អាច​និយាយ​បាន ឬ​មាន​តម្រូវការ​ក្រៅ​ពី​​សំឡេង។</string>
   <string name="rtt_button_decline_request">ទេ អរគុណ</string>
diff --git a/java/com/android/incallui/res/values-kn/cm_strings.xml b/java/com/android/incallui/res/values-kn/cm_strings.xml
new file mode 100644
index 0000000..87aee00
--- /dev/null
+++ b/java/com/android/incallui/res/values-kn/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">ಕರೆ ಧ್ವನಿಮುದ್ರಣ ಪ್ರಾರಂಭ ವಿಫಲವಾಯಿತು</string>
+    <string name="call_recording_file_location">ಕರೆಯ ಧ್ವನಿಮುದ್ರಣವನ್ನು <xliff:g id="filename">%s</xliff:g>ನಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ</string>
+    <string name="onscreenCallRecordText">ಕರೆ ಧ್ವನಿಮುದ್ರಣ</string>
+    <string name="onscreenCallRecordingText">ಕರೆಯ ಧ್ವನಿಮುದ್ರಣ - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">ಧ್ವನಿಮುದ್ರಣವನ್ನು ನಿಲ್ಲಿಸು</string>
+    <string name="recording_warning_title">ಕರೆ ಧ್ವನಿಮುದ್ರಣ ಸಶಕ್ತಿಸಲೇ?</string>
+    <string name="recording_warning_text">ಸೂಚನೆ: ಕರೆ ಧ್ವನಿಮುದ್ರಣ ಮತ್ತು ಆ ಧ್ವನಿಮುದ್ರಣಗಳ ಬಳಕೆ ಅಥವಾ ವಿತರಣೆಗೆ ಅನ್ವಯಿಸುವ ಯಾವುದೇ ಕಾನೂನು, ಕಾಯಿದೆ ಮತ್ತು ನಿಯಮಗಳ ಅನುಸರಣೆಯ ಜವಾಬ್ದಾರಿ ನಿಮ್ಮದಾಗಿರುತ್ತದೆ.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-kn/strings.xml b/java/com/android/incallui/res/values-kn/strings.xml
index b0768c0..3e5e62d 100644
--- a/java/com/android/incallui/res/values-kn/strings.xml
+++ b/java/com/android/incallui/res/values-kn/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">ಒಳಬರುವ ಕರೆ</string>
   <string name="notification_incoming_video_call">ಒಳಬರುವ ವೀಡಿಯೊ ಕರೆ</string>
   <string name="notification_incoming_call_mutli_sim">%1$s ಮೂಲಕ ಒಳಬರುವ ಕರೆ</string>
-  <string name="notification_incoming_call_with_photo">ಫೋಟೋದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಕರೆ</string>
-  <string name="notification_incoming_call_with_message">ಸಂದೇಶದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಕರೆ</string>
-  <string name="notification_incoming_call_with_location">ಸ್ಥಳದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಕರೆ</string>
-  <string name="notification_incoming_call_with_photo_message">ಫೋಟೋ ಮತ್ತು ಸಂದೇಶದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಕರೆ</string>
-  <string name="notification_incoming_call_with_photo_location">ಫೋಟೋ ಮತ್ತು ಸ್ಥಳದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಕರೆ</string>
-  <string name="notification_incoming_call_with_message_location">ಸಂದೇಶ ಮತ್ತು ಸ್ಥಳದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಕರೆ</string>
-  <string name="notification_incoming_call_with_photo_message_location">ಪೋಟೋ, ಸಂದೇಶ ಮತ್ತು ಸ್ಥಳದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಕರೆ</string>
-  <string name="notification_incoming_call_attachments">ಲಗತ್ತುಗಳೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಕರೆ</string>
-  <string name="important_notification_incoming_call">ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ</string>
-  <string name="important_notification_incoming_call_with_photo">ಫೋಟೋದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ</string>
-  <string name="important_notification_incoming_call_with_message">ಸಂದೇಶದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ</string>
-  <string name="important_notification_incoming_call_with_location">ಸ್ಥಳದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ</string>
-  <string name="important_notification_incoming_call_with_photo_message">ಫೋಟೋ ಮತ್ತು ಸಂದೇಶದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ</string>
-  <string name="important_notification_incoming_call_with_photo_location">ಫೋಟೋ ಮತ್ತು ಸ್ಥಳದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ</string>
-  <string name="important_notification_incoming_call_with_message_location">ಸಂದೇಶ ಮತ್ತು ಸ್ಥಳದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">ಪೋಟೋ, ಸಂದೇಶ ಮತ್ತು ಸ್ಥಳದೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ</string>
-  <string name="important_notification_incoming_call_attachments">ಲಗತ್ತುಗಳೊಂದಿಗೆ ಒಳಬರುತ್ತಿರುವ ಪ್ರಮುಖ ಕರೆ</string>
   <string name="notification_incoming_work_call">ಒಳಬರುವ ಕೆಲಸದ ಕರೆ</string>
   <string name="notification_incoming_spam_call">ಒಳಬರುವ ಶಂಕಿತ ಸ್ಪ್ಯಾಮ್ ಕರೆ</string>
   <string name="notification_requesting_video_call">ಒಳಬರುವ ವೀಡಿಯೊ ವಿನಂತಿ</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">ವೈ-ಫೈ ನೆಟ್‍ವರ್ಕ್‌ಗೆ ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</string>
   <string name="video_call_lte_to_wifi_failed_message">ವೀಡಿಯೊ ಕರೆ ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಹಾಗೆಯೇ ಉಳಿಯುತ್ತದೆ. ಪ್ರಮಾಣಿತ ಡೇಟಾ ಶುಲ್ಕಗಳು ಅನ್ವಯಿಸಬಹುದು.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">ಮತ್ತೆ ಇದನ್ನು ತೋರಿಸಬೇಡ</string>
-  <string name="bubble_return_to_call">ಕರೆಗೆ ಹಿಂತಿರುಗಿ</string>
-  <string name="rtt_request_dialog_title">RTT ಕರೆಗೆ ಸೇರುವುದೇ?</string>
+    <string name="rtt_request_dialog_title">RTT ಕರೆಗೆ ಸೇರುವುದೇ?</string>
   <string name="rtt_request_dialog_details">%1$s ಅವರು ನಿಮ್ಮ ಧ್ವನಿ ಕರೆಯೊಂದಿಗೆ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಲು ಬಯಸಿದ್ದಾರೆ.</string>
   <string name="rtt_request_dialog_more_information">ಯಾರು ಕಿವುಡರು, ಆಲಿಸಲು ಕಷ್ಟಪಡುವವರು, ಆಲಿಸಲು ಅಸಾಮರ್ಥ್ಯವಾಗಿರುವವರು, ಮಾತಿನ ಸಮಸ್ಯೆಯನ್ನು ಹೊಂದಿರುವವರು ಅಥವಾ ಧ್ವನಿಗಿಂತ ಇನ್ನಷ್ಟು ಬಯಸುವವರು RTT ಸಹಾಯಕ ಕರೆಮಾಡುವವರು.</string>
   <string name="rtt_button_decline_request">ಬೇಡ</string>
diff --git a/java/com/android/incallui/res/values-ko/cm_strings.xml b/java/com/android/incallui/res/values-ko/cm_strings.xml
new file mode 100644
index 0000000..e1d22d2
--- /dev/null
+++ b/java/com/android/incallui/res/values-ko/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">통화 녹음을 시작하지 못했습니다.</string>
+    <string name="call_recording_file_location"><xliff:g id="filename">%s</xliff:g> 파일로 통화 녹음을 저장했습니다.</string>
+    <string name="onscreenCallRecordText">통화 녹음</string>
+    <string name="onscreenCallRecordingText">통화 녹음 - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">녹음 중지</string>
+    <string name="recording_warning_title">통화 녹음을 사용하시겠습니까?</string>
+    <string name="recording_warning_text">주의 사항: 통화 녹음 기능의 사용과 녹음된 파일의 사용 및 배포에 적용되는 모든 법, 규정 및 규칙을 준수해야 합니다.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-ko/strings.xml b/java/com/android/incallui/res/values-ko/strings.xml
index ecb58f2..dd048fd 100644
--- a/java/com/android/incallui/res/values-ko/strings.xml
+++ b/java/com/android/incallui/res/values-ko/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">수신전화</string>
   <string name="notification_incoming_video_call">수신 화상 통화</string>
   <string name="notification_incoming_call_mutli_sim">%1$s을(를) 통해 통화 수신 중</string>
-  <string name="notification_incoming_call_with_photo">사진이 있는 수신 전화</string>
-  <string name="notification_incoming_call_with_message">메시지가 있는 수신 전화</string>
-  <string name="notification_incoming_call_with_location">위치가 있는 수신 전화</string>
-  <string name="notification_incoming_call_with_photo_message">사진과 메시지가 있는 수신 전화</string>
-  <string name="notification_incoming_call_with_photo_location">사진과 위치가 있는 수신 전화</string>
-  <string name="notification_incoming_call_with_message_location">메시지와 위치가 있는 수신 전화</string>
-  <string name="notification_incoming_call_with_photo_message_location">사진, 메시지, 위치가 있는 수신 전화</string>
-  <string name="notification_incoming_call_attachments">첨부파일이 있는 수신 전화</string>
-  <string name="important_notification_incoming_call">중요한 수신 전화</string>
-  <string name="important_notification_incoming_call_with_photo">사진이 있는 중요한 수신 전화</string>
-  <string name="important_notification_incoming_call_with_message">메시지가 있는 중요한 수신 전화</string>
-  <string name="important_notification_incoming_call_with_location">위치가 있는 중요한 수신 전화</string>
-  <string name="important_notification_incoming_call_with_photo_message">사진과 메시지가 있는 중요한 수신 전화</string>
-  <string name="important_notification_incoming_call_with_photo_location">사진과 위치가 있는 중요한 수신 전화</string>
-  <string name="important_notification_incoming_call_with_message_location">메시지와 위치가 있는 중요한 수신 전화</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">사진, 메시지, 위치가 있는 중요한 수신 전화</string>
-  <string name="important_notification_incoming_call_attachments">첨부파일이 있는 중요한 수신 전화</string>
   <string name="notification_incoming_work_call">수신 업무 전화</string>
   <string name="notification_incoming_spam_call">의심스러운 스팸 발신자로부터 온 전화</string>
   <string name="notification_requesting_video_call">수신 동영상 요청</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi 네트워크로 전환할 수 없습니다.</string>
   <string name="video_call_lte_to_wifi_failed_message">화상 통화가 모바일 네트워크에서 계속됩니다. 표준 데이터 요금이 부과될 수 있습니다.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">다시 표시하지 않음</string>
-  <string name="bubble_return_to_call">통화로 돌아가기</string>
-  <string name="rtt_request_dialog_title">RTT 통화에 참여하시겠습니까?</string>
+    <string name="rtt_request_dialog_title">RTT 통화에 참여하시겠습니까?</string>
   <string name="rtt_request_dialog_details">%1$s님이 음성 통화 중에 메시지를 사용하려고 합니다.</string>
   <string name="rtt_request_dialog_more_information">RTT는 청각 장애, 난청, 언어 장애가 있거나 음성 이외의 의사소통 수단이 필요한 발신자에게 도움이 됩니다.</string>
   <string name="rtt_button_decline_request">사용 안함</string>
diff --git a/java/com/android/incallui/res/values-ky/strings.xml b/java/com/android/incallui/res/values-ky/strings.xml
index 137bb03..2394028 100644
--- a/java/com/android/incallui/res/values-ky/strings.xml
+++ b/java/com/android/incallui/res/values-ky/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Кирүүчү чалуу</string>
   <string name="notification_incoming_video_call">Келип жаткан видео чалуу</string>
   <string name="notification_incoming_call_mutli_sim">%1$s картасы аркылуу кириш чалуу</string>
-  <string name="notification_incoming_call_with_photo">Сүрөтү бар кирүүчү чалуу</string>
-  <string name="notification_incoming_call_with_message">Билдирүүсү бар кирүүчү чалуу</string>
-  <string name="notification_incoming_call_with_location">Жайгашкан жери бар кирүүчү чалуу</string>
-  <string name="notification_incoming_call_with_photo_message">Сүрөт менен билдирүүсү бар кирүүчү чалуу</string>
-  <string name="notification_incoming_call_with_photo_location">Сүрөт жана жайгашкан жери бар кирүүчү чалуу</string>
-  <string name="notification_incoming_call_with_message_location">Билдирүү менен жайгашкан жери бар кирүүчү чалуу</string>
-  <string name="notification_incoming_call_with_photo_message_location">Сүрөт, билдирүү жана жайгашкан жери бар чалуу</string>
-  <string name="notification_incoming_call_attachments">Тиркемеси бар кирүүчү чалуу</string>
-  <string name="important_notification_incoming_call">Маанилүү кирүүчү чалуу</string>
-  <string name="important_notification_incoming_call_with_photo">Сүрөтү бар маанилүү кирүүчү чалуу</string>
-  <string name="important_notification_incoming_call_with_message">Билдирүүсү бар маанилүү кирүүчү чалуу</string>
-  <string name="important_notification_incoming_call_with_location">Жайгашкан жери бар маанилүү кирүүчү чалуу</string>
-  <string name="important_notification_incoming_call_with_photo_message">Сүрөт жана билдирүүсү бар маанилүү кирүүчү чалуу</string>
-  <string name="important_notification_incoming_call_with_photo_location">Сүрөт жана жайгашкан жери бар маанилүү чалуу</string>
-  <string name="important_notification_incoming_call_with_message_location">Билдирүү жана жайгашкан жери бар маанилүү чалуу</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Сүрөт, билдирүү жана жайгашкан жер бар маанилүү чалуу</string>
-  <string name="important_notification_incoming_call_attachments">Тиркемелери бар маанилүү кирүүчү чалуу</string>
   <string name="notification_incoming_work_call">Жумуш боюнча келип жаткан чалуу</string>
   <string name="notification_incoming_spam_call">Келип жаткан чалуу спам окшойт</string>
   <string name="notification_requesting_video_call">Келип жаткан видео сурамы</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi тармагына туташа албай койдук</string>
   <string name="video_call_lte_to_wifi_failed_message">Видео чалуу мобилдик тармак аркылуу аткарылат. Стандарттык тариф боюнча акы алынышы мүмкүн.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Экинчи көрсөтүлбөсүн</string>
-  <string name="bubble_return_to_call">Чалууга кайтуу</string>
-  <string name="rtt_request_dialog_title">RTT чалууга кошуласызбы?</string>
+    <string name="rtt_request_dialog_title">RTT чалууга кошуласызбы?</string>
   <string name="rtt_request_dialog_details">%1$s үн чалууңуздун убагында SMS/MMS жазышууну пайдалангысы келип жатат.</string>
   <string name="rtt_request_dialog_more_information">RTT функциясы угуу жана сүйлөө жөндөмдүүлүгү бузулган адамдарга арналат.</string>
   <string name="rtt_button_decline_request">Жок, рахмат</string>
diff --git a/java/com/android/incallui/res/values-lo/strings.xml b/java/com/android/incallui/res/values-lo/strings.xml
index b96930e..7aef284 100644
--- a/java/com/android/incallui/res/values-lo/strings.xml
+++ b/java/com/android/incallui/res/values-lo/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">ສາຍໂທເຂົ້າ</string>
   <string name="notification_incoming_video_call">ສາຍ​ວິດີໂອ​ເຂົ້າ</string>
   <string name="notification_incoming_call_mutli_sim">ສາຍໂທເຂົ້າຜ່ານ %1$s</string>
-  <string name="notification_incoming_call_with_photo">ສາຍໂທເຂົ້າພ້ອມຮູບພາບ</string>
-  <string name="notification_incoming_call_with_message">ສາຍໂທເຂົ້າພ້ອມຂໍ້ຄວາມ</string>
-  <string name="notification_incoming_call_with_location">ສາຍໂທເຂົ້າພ້ອມສະຖານທີ່</string>
-  <string name="notification_incoming_call_with_photo_message">ສາຍໂທເຂົ້າພ້ອມຮູບພາບ ແລະ ຂໍ້ຄວາມ</string>
-  <string name="notification_incoming_call_with_photo_location">ສາຍໂທເຂົ້າພ້ອມຮູບພາບ ແລະ ສະຖານທີ່</string>
-  <string name="notification_incoming_call_with_message_location">ສາຍໂທເຂົ້າພ້ອມຂໍ້ຄວາມ ແລະ ສະຖານທີ່</string>
-  <string name="notification_incoming_call_with_photo_message_location">ສາຍໂທເຂົ້າພ້ອມຮູບພາບ, ຂໍ້ຄວາມ ແລະ ສະຖານທີ່</string>
-  <string name="notification_incoming_call_attachments">ສາຍໂທເຂົ້າພ້ອມໄຟລ໌ແນບ</string>
-  <string name="important_notification_incoming_call">ສາຍໂທເຂົ້າສຳຄັນ</string>
-  <string name="important_notification_incoming_call_with_photo">ສາຍໂທເຂົ້າສຳຄັນພ້ອມຮູບພາບ</string>
-  <string name="important_notification_incoming_call_with_message">ສາຍໂທເຂົ້າສຳຄັນພ້ອມຂໍ້ຄວາມ</string>
-  <string name="important_notification_incoming_call_with_location">ສາຍໂທເຂົ້າສຳຄັນພ້ອມສະຖານທີ່</string>
-  <string name="important_notification_incoming_call_with_photo_message">ສາຍໂທເຂົ້າສຳຄັນພ້ອມຮູບພາບ ແລະ ຂໍ້ຄວາມ</string>
-  <string name="important_notification_incoming_call_with_photo_location">ສາຍໂທເຂົ້າສຳຄັນພ້ອມຮູບພາບ ແລະ ສະຖານທີ່</string>
-  <string name="important_notification_incoming_call_with_message_location">ສາຍໂທເຂົ້າສຳຄັນພ້ອມຂໍ້ຄວາມ ແລະ ສະຖານທີ່</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">ສາຍໂທເຂົ້າສຳຄັນພ້ອມຮູບພາບ, ຂໍ້ຄວາມ ແລະ ສະຖານທີ່</string>
-  <string name="important_notification_incoming_call_attachments">ສາຍໂທເຂົ້າສຳຄັນພ້ອມໄຟລ໌ແນບ</string>
   <string name="notification_incoming_work_call">ສາຍໂທເຂົ້າຈາກບ່ອນເຮັດວຽກ</string>
   <string name="notification_incoming_spam_call">ມີການໂທທີ່ຄາດວ່າເປັນສະແປມໂທເຂົ້າມາ</string>
   <string name="notification_requesting_video_call">​ຄຳ​ຮ້ອງ​ຂໍ​ວິ​ດີ​ໂອ​ເຂົ້າ​ມາ</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">ບໍ່ສາມາດສະຫຼັບໄປໃຊ້ເຄືອຂ່າຍ Wi-Fi ໄດ້</string>
   <string name="video_call_lte_to_wifi_failed_message">ການໂທວິດີໂອຈະຍັງຄົງຢູ່ໃນເຄືອຂ່າຍມືຖືຕໍ່ໄປ. ອາດມີການຮຽກເກັບຄ່າບໍລິການມາດຕະຖານ.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">ບໍ່ຕ້ອງສະແດງຂໍ້ຄວາມນີ້ອີກ</string>
-  <string name="bubble_return_to_call">ກັບໄປຫາການໂທ</string>
-  <string name="rtt_request_dialog_title">ເຂົ້າຮ່ວມການໂທ RTT ບໍ?</string>
+    <string name="rtt_request_dialog_title">ເຂົ້າຮ່ວມການໂທ RTT ບໍ?</string>
   <string name="rtt_request_dialog_details">%1$s ຕ້ອງການສົ່ງຂໍ້ຄວາມພາຍໃນການໂທສຽງຂອງທ່ານ.</string>
   <string name="rtt_request_dialog_more_information">RTT ຈະຊ່ວຍເຫຼືອຜູ້ໂທທີ່ຫູໜວກ, ມີບັນຫາໃນການໄດ້ຍິນ, ບໍ່ສາມາດເວົ້າໄດ້ ຫຼື ຕ້ອງການໃຊ້ຫຼາຍກວ່າສຽງ.</string>
   <string name="rtt_button_decline_request">ບໍ່, ຂອບໃຈ</string>
diff --git a/java/com/android/incallui/res/values-lt/strings.xml b/java/com/android/incallui/res/values-lt/strings.xml
index 0ea55a3..7d8d83d 100644
--- a/java/com/android/incallui/res/values-lt/strings.xml
+++ b/java/com/android/incallui/res/values-lt/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Gaunamasis skambutis</string>
   <string name="notification_incoming_video_call">Gaunamas vaizdo skambutis</string>
   <string name="notification_incoming_call_mutli_sim">Gaunamasis skambutis per „%1$s“</string>
-  <string name="notification_incoming_call_with_photo">Gaunamasis skambutis su nuotrauka</string>
-  <string name="notification_incoming_call_with_message">Gaunamasis skambutis su pranešimu</string>
-  <string name="notification_incoming_call_with_location">Gaunamasis skambutis su vietove</string>
-  <string name="notification_incoming_call_with_photo_message">Gaunamasis skambutis su nuotrauka ir pranešimu</string>
-  <string name="notification_incoming_call_with_photo_location">Gaunamasis skambutis su nuotrauka ir vietove</string>
-  <string name="notification_incoming_call_with_message_location">Gaunamasis skambutis su pranešimu ir vietove</string>
-  <string name="notification_incoming_call_with_photo_message_location">Gaunamasis skamb. su nuotrauka, praneš. ir vietove</string>
-  <string name="notification_incoming_call_attachments">Gaunamasis skambutis su priedais</string>
-  <string name="important_notification_incoming_call">Svarbus gaunamasis skambutis</string>
-  <string name="important_notification_incoming_call_with_photo">Svarbus gaunamasis skambutis su nuotrauka</string>
-  <string name="important_notification_incoming_call_with_message">Svarbus gaunamasis skambutis su pranešimu</string>
-  <string name="important_notification_incoming_call_with_location">Svarbus gaunamasis skambutis su vietove</string>
-  <string name="important_notification_incoming_call_with_photo_message">Svarbus gaunamasis skamb. su nuotrauka ir praneš.</string>
-  <string name="important_notification_incoming_call_with_photo_location">Svarbus gaunamasis skamb. su nuotrauka ir vietove</string>
-  <string name="important_notification_incoming_call_with_message_location">Svarbus gaunamasis skamb. su pranešimu ir vietove</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Svarbus gaunam. skamb. su nuotr., praneš. ir viet.</string>
-  <string name="important_notification_incoming_call_attachments">Svarbus gaunamasis skambutis su priedais</string>
   <string name="notification_incoming_work_call">Gaunamasis darbo skambutis</string>
   <string name="notification_incoming_spam_call">Gaunamasis įtartinas šlamšto skambutis</string>
   <string name="notification_requesting_video_call">Gaunama vaizdo skambučio užklausa</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Nepavyko prisijungti prie „Wi-Fi“ tinklo</string>
   <string name="video_call_lte_to_wifi_failed_message">Vaizdo skambutis ir toliau bus vykdomas naudojant mobiliojo ryšio tinklą. Gali būti taikomi įprasti duomenų mokesčiai.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Daugiau to nerodyti</string>
-  <string name="bubble_return_to_call">Atgal į skambutį</string>
-  <string name="rtt_request_dialog_title">Prisijungti prie RTT skambučio?</string>
+    <string name="rtt_request_dialog_title">Prisijungti prie RTT skambučio?</string>
   <string name="rtt_request_dialog_details">%1$s nori susirašinėti dalyvaudamas (-a) balso skambutyje.</string>
   <string name="rtt_request_dialog_more_information">RTT padeda skambintojams, kurie yra kurti, neprigirdintys, sunkiai kalba arba kuriems reikia ne tik kalbėti.</string>
   <string name="rtt_button_decline_request">Ne, ačiū</string>
diff --git a/java/com/android/incallui/res/values-lv/strings.xml b/java/com/android/incallui/res/values-lv/strings.xml
index d426243..18d00ce 100644
--- a/java/com/android/incallui/res/values-lv/strings.xml
+++ b/java/com/android/incallui/res/values-lv/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Ienākošais zvans</string>
   <string name="notification_incoming_video_call">Ienākošs videozvans</string>
   <string name="notification_incoming_call_mutli_sim">Ienākošs zvans, izmantojot: %1$s</string>
-  <string name="notification_incoming_call_with_photo">Ienākošais zvans ar fotoattēlu</string>
-  <string name="notification_incoming_call_with_message">Ienākošais zvans ar ziņojumu</string>
-  <string name="notification_incoming_call_with_location">Ienākošais zvans ar atrašanās vietu</string>
-  <string name="notification_incoming_call_with_photo_message">Ienākošais zvans ar fotoattēlu un ziņojumu</string>
-  <string name="notification_incoming_call_with_photo_location">Ienākošais zvans ar fotoattēlu un atrašanās vietu</string>
-  <string name="notification_incoming_call_with_message_location">Ienākošais zvans ar ziņojumu un atrašanās vietu</string>
-  <string name="notification_incoming_call_with_photo_message_location">Zvans ar fotoattēlu, ziņojumu un atrašanās vietu</string>
-  <string name="notification_incoming_call_attachments">Ienākošais zvans ar pielikumiem</string>
-  <string name="important_notification_incoming_call">Svarīgs ienākošais zvans</string>
-  <string name="important_notification_incoming_call_with_photo">Svarīgs ienākošais zvans ar fotoattēlu</string>
-  <string name="important_notification_incoming_call_with_message">Svarīgs ienākošais zvans ar ziņojumu</string>
-  <string name="important_notification_incoming_call_with_location">Svarīgs ienākošais zvans ar atrašanās vietu</string>
-  <string name="important_notification_incoming_call_with_photo_message">Svarīgs ienākošais zvans ar fotoattēlu un ziņojumu</string>
-  <string name="important_notification_incoming_call_with_photo_location">Svarīgs zvans ar fotoattēlu un atrašanās vietu</string>
-  <string name="important_notification_incoming_call_with_message_location">Svarīgs zvans ar ziņojumu un atrašanās vietu</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Zvans ar fotoattēlu, ziņojumu un atrašanās vietu</string>
-  <string name="important_notification_incoming_call_attachments">Svarīgs ienākošais zvans ar pielikumiem</string>
   <string name="notification_incoming_work_call">Ienākošs darba zvans</string>
   <string name="notification_incoming_spam_call">Ienākošs, iespējams, nevēlams zvans</string>
   <string name="notification_requesting_video_call">Ienākošs video pieprasījums</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Nevarēja pārslēgt uz Wi-Fi tīklu</string>
   <string name="video_call_lte_to_wifi_failed_message">Videozvans tiks turpināts mobilo sakaru tīklā. Var tikt piemērota standarta maksa par datu pārraidi.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Vairs nerādīt šo ziņojumu</string>
-  <string name="bubble_return_to_call">Atpakaļ pie zvana</string>
-  <string name="rtt_request_dialog_title">Vai pievienoties RTT zvanam?</string>
+    <string name="rtt_request_dialog_title">Vai pievienoties RTT zvanam?</string>
   <string name="rtt_request_dialog_details">%1$s vēlas izmantot ziņojumapmaiņu jūsu balss zvanā.</string>
   <string name="rtt_request_dialog_more_information">RTT funkcionalitāte palīdz nedzirdīgiem un vājdzirdīgiem zvanītājiem, kā arī zvanītājiem, kuriem ir runas traucējumi vai ir nepieciešama ne tikai balss skaņa.</string>
   <string name="rtt_button_decline_request">Nē, paldies</string>
diff --git a/java/com/android/incallui/res/values-mcc262-mnc02/strings.xml b/java/com/android/incallui/res/values-mcc262-mnc02/strings.xml
index 75b3004..f3f4693 100644
--- a/java/com/android/incallui/res/values-mcc262-mnc02/strings.xml
+++ b/java/com/android/incallui/res/values-mcc262-mnc02/strings.xml
@@ -18,8 +18,8 @@
 <!-- Specific brand names for mcc262-mnc02. See b/64487733 -->
 <resources>
   <!-- "Brand name" for WiFi calls. Will be overridden for specific mcc-mnc combinations [CHAR LIMIT=40] -->
-  <string name="notification_call_wifi_brand" translatable="false">Wi\u2011Fi call</string>
+  <string name="notification_call_wifi_brand">Wi\u2011Fi call</string>
 
   <!-- "Brand name" for WiFi work calls. Will be overridden for specific mcc-mnc combinations [CHAR LIMIT=40] -->
-  <string name="notification_call_wifi_work_brand" translatable="false">Wi\u2011Fi work call</string>
-</resources>
\ No newline at end of file
+  <string name="notification_call_wifi_work_brand">Wi\u2011Fi work call</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-mk/strings.xml b/java/com/android/incallui/res/values-mk/strings.xml
index ce35005..4c12cce 100644
--- a/java/com/android/incallui/res/values-mk/strings.xml
+++ b/java/com/android/incallui/res/values-mk/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Дојдовен повик</string>
   <string name="notification_incoming_video_call">Дојдовен видеоповик</string>
   <string name="notification_incoming_call_mutli_sim">Дојдовен повик преку %1$s</string>
-  <string name="notification_incoming_call_with_photo">Дојдовен повик со фотографија</string>
-  <string name="notification_incoming_call_with_message">Дојдовен повик со порака</string>
-  <string name="notification_incoming_call_with_location">Дојдовен повик со локација</string>
-  <string name="notification_incoming_call_with_photo_message">Дојдовен повик со фотографија и порака</string>
-  <string name="notification_incoming_call_with_photo_location">Дојдовен повик со фотографија и локација</string>
-  <string name="notification_incoming_call_with_message_location">Дојдовен повик со порака и локација</string>
-  <string name="notification_incoming_call_with_photo_message_location">Дојдовен повик со фотографија, порака и локација</string>
-  <string name="notification_incoming_call_attachments">Дојдовен повик со прилози</string>
-  <string name="important_notification_incoming_call">Важен дојдовен повик</string>
-  <string name="important_notification_incoming_call_with_photo">Важен дојдовен повик со фотографија</string>
-  <string name="important_notification_incoming_call_with_message">Важен дојдовен повик со порака</string>
-  <string name="important_notification_incoming_call_with_location">Важен дојдовен повик со локација</string>
-  <string name="important_notification_incoming_call_with_photo_message">Важен дојдовен повик со фотографија и порака</string>
-  <string name="important_notification_incoming_call_with_photo_location">Важен дојдовен повик со фотографија и локација</string>
-  <string name="important_notification_incoming_call_with_message_location">Важен дојдовен повик со порака и локација</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Важен дојдовен повик со фото., порака и локација</string>
-  <string name="important_notification_incoming_call_attachments">Важен дојдовен повик со прилози</string>
   <string name="notification_incoming_work_call">Дојдовен работен повик</string>
   <string name="notification_incoming_spam_call">Дојдовниот повик може да е спам</string>
   <string name="notification_requesting_video_call">Дојдовно побарување за видео</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Не можеше да се префрли на Wi-Fi-мрежа</string>
   <string name="video_call_lte_to_wifi_failed_message">Видеоповикот ќе остане на мобилната мрежа. Може да се наплати за мобилен интернет.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Не го прикажувај ова повторно</string>
-  <string name="bubble_return_to_call">Назад на повикот</string>
-  <string name="rtt_request_dialog_title">Ќе се придружите на RTT-повик?</string>
+    <string name="rtt_request_dialog_title">Ќе се придружите на RTT-повик?</string>
   <string name="rtt_request_dialog_details">%1$s сака да користи пораки во рамките на гласовниот повик.</string>
   <string name="rtt_request_dialog_more_information">RTT им помага на повикувачи коишто се глуви, слабо слушаат, имаат говорна мана или пак, им е потребно многу повеќе од глас.</string>
   <string name="rtt_button_decline_request">Не, фала</string>
diff --git a/java/com/android/incallui/res/values-ml/strings.xml b/java/com/android/incallui/res/values-ml/strings.xml
index 8517def..e6afec3 100644
--- a/java/com/android/incallui/res/values-ml/strings.xml
+++ b/java/com/android/incallui/res/values-ml/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">ഇന്‍കമിംഗ് കോള്‍</string>
   <string name="notification_incoming_video_call">ഇൻകമിംഗ് വീഡിയോ കോൾ</string>
   <string name="notification_incoming_call_mutli_sim">%1$s വഴി കോൾ വരുന്നു</string>
-  <string name="notification_incoming_call_with_photo">ഫോട്ടോ ഉൾപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="notification_incoming_call_with_message">സന്ദേശം ഉൾപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="notification_incoming_call_with_location">ലൊക്കേഷൻ ഉൾപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="notification_incoming_call_with_photo_message">ഫോട്ടോയും സന്ദേശവും ഉൾപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="notification_incoming_call_with_photo_location">ഫോട്ടോയും ലൊക്കേഷനും ഉൾപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="notification_incoming_call_with_message_location">സന്ദേശവും ലൊക്കേഷനും ഉൾപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="notification_incoming_call_with_photo_message_location">ഫോട്ടോയും സന്ദേശവും ലൊക്കേഷനും ഉൾപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="notification_incoming_call_attachments">അറ്റാച്ച്‌മെന്റുകൾ ഉൾപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="important_notification_incoming_call">പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="important_notification_incoming_call_with_photo">ഫോട്ടോ ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="important_notification_incoming_call_with_message">സന്ദേശം ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="important_notification_incoming_call_with_location">ലൊക്കേഷൻ ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="important_notification_incoming_call_with_photo_message">ഫോട്ടോയും സന്ദേശവും ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="important_notification_incoming_call_with_photo_location">ഫോട്ടോയും ലൊക്കേഷനും ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="important_notification_incoming_call_with_message_location">സന്ദേശവും ലൊക്കേഷനും ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">ഫോട്ടോയും സന്ദേശവും ലൊക്കേഷനും ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
-  <string name="important_notification_incoming_call_attachments">അറ്റാച്ച്‌മെന്റുകൾ ഉൾപ്പെട്ട പ്രധാനപ്പെട്ട ഇൻകമിംഗ് കോൾ</string>
   <string name="notification_incoming_work_call">ഇൻകമിംഗ് ഔദ്യോഗിക കോൾ</string>
   <string name="notification_incoming_spam_call">സംശയാസ്‌പദമായ ഇൻകമിംഗ് സ്‌പാം കോൾ</string>
   <string name="notification_requesting_video_call">ഇൻകമിംഗ് വീഡിയോ അഭ്യർത്ഥന</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">വൈഫൈ നെറ്റ്‌വർക്കിലേക്ക് മാറാനായില്ല</string>
   <string name="video_call_lte_to_wifi_failed_message">മൊബൈൽ നെറ്റ്‌വർക്കിൽത്തന്നെ വീഡിയോ കോൾ തുടരും. സാധാരണ ഡാറ്റ നിരക്കുകൾ ബാധകമാകാം.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">ഇത് വീണ്ടും കാണിക്കരുത്</string>
-  <string name="bubble_return_to_call">കോളിലേക്ക് മടങ്ങുക</string>
-  <string name="rtt_request_dialog_title">RTT കോളിൽ ചേരണോ?</string>
+    <string name="rtt_request_dialog_title">RTT കോളിൽ ചേരണോ?</string>
   <string name="rtt_request_dialog_details">നിങ്ങളുടെ വോയ്‌സ് കോളിൽ %1$s സന്ദേശമയയ്‌ക്കൽ ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുന്നു.</string>
   <string name="rtt_request_dialog_more_information">ബധിരർ, കേൾവി ശക്തി കുറഞ്ഞവർ, സംഭാഷണ വൈകല്യമുള്ളവർ അല്ലെങ്കിൽ ശബ്‌ദത്തിന് പുറമേ മറ്റ് സഹായവും ആവശ്യമുള്ള, വിളിക്കുന്ന ആളുകളെ RTT സഹായിക്കുന്നു.</string>
   <string name="rtt_button_decline_request">വേണ്ട</string>
diff --git a/java/com/android/incallui/res/values-mn/strings.xml b/java/com/android/incallui/res/values-mn/strings.xml
index a911dba..281ee49 100644
--- a/java/com/android/incallui/res/values-mn/strings.xml
+++ b/java/com/android/incallui/res/values-mn/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Ирж буй дуудлага</string>
   <string name="notification_incoming_video_call">Ирж буй видео дуудлага</string>
   <string name="notification_incoming_call_mutli_sim">%1$s-р ирж буй дуудлага</string>
-  <string name="notification_incoming_call_with_photo">Зураг бүхий орж ирсэн дуудлага</string>
-  <string name="notification_incoming_call_with_message">Зурвас бүхий орж ирсэн дуудлага</string>
-  <string name="notification_incoming_call_with_location">Байршил бүхий орж ирсэн дуудлага</string>
-  <string name="notification_incoming_call_with_photo_message">Зураг болон зурвас бүхий орж ирсэн дуудлага</string>
-  <string name="notification_incoming_call_with_photo_location">Зураг болон байршил бүхий орж ирсэн дуудлага</string>
-  <string name="notification_incoming_call_with_message_location">Зурвас болон байршил бүхий орж ирсэн дуудлага</string>
-  <string name="notification_incoming_call_with_photo_message_location">Зураг, зурвас, байршил бүхий орж ирсэн дуудлага</string>
-  <string name="notification_incoming_call_attachments">Хавсралт бүхий орж ирсэн дуудлага</string>
-  <string name="important_notification_incoming_call">Орж ирсэн чухал дуудлага</string>
-  <string name="important_notification_incoming_call_with_photo">Зураг бүхий орж ирсэн чухал дуудлага</string>
-  <string name="important_notification_incoming_call_with_message">Зурвас бүхий орж ирсэн чухал дуудлага</string>
-  <string name="important_notification_incoming_call_with_location">Байршил бүхий орж ирсэн чухал дуудлага</string>
-  <string name="important_notification_incoming_call_with_photo_message">Зураг, зурвас бүхий орж ирсэн чухал дуудлага</string>
-  <string name="important_notification_incoming_call_with_photo_location">Зураг, байршил бүхий орж ирсэн чухал дуудлага</string>
-  <string name="important_notification_incoming_call_with_message_location">Зурвас, байршил бүхий орж ирсэн чухал дуудлага</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Зураг, зурвас, байршилтай орж ирсэн чухал дуудлага</string>
-  <string name="important_notification_incoming_call_attachments">Хавсралт бүхий орж ирсэн чухал дуудлага</string>
   <string name="notification_incoming_work_call">Ирж буй албаны дуудлага</string>
   <string name="notification_incoming_spam_call">Орж ирсэн сэжигтэй спам дуудлага</string>
   <string name="notification_requesting_video_call">Ирж буй видео хүсэлт</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi сүлжээ рүү сэлгэж чадсангүй</string>
   <string name="video_call_lte_to_wifi_failed_message">Видео дуудлага мобайл сүлжээнд үлдэнэ. Стандарт датаны төлбөр тооцогдож магадгүй.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Үүнийг дахин бүү үзүүл</string>
-  <string name="bubble_return_to_call">Дуудлага руу буцах</string>
-  <string name="rtt_request_dialog_title">RTT дуудлагад оролцох уу?</string>
+    <string name="rtt_request_dialog_title">RTT дуудлагад оролцох уу?</string>
   <string name="rtt_request_dialog_details">%1$s таны дуудлага дотор мессеж бичихийг хүсч байна.</string>
   <string name="rtt_request_dialog_more_information">RTT нь дүлий, хатуу чихтэй, хэл ярианы хөгжлийн бэрхшээлтэй, эсвэл хэн нэгний тусламжтай ярьдаг дуудлага хийгчдэд тусладаг.</string>
   <string name="rtt_button_decline_request">Үгүй</string>
diff --git a/java/com/android/incallui/res/values-mr/strings.xml b/java/com/android/incallui/res/values-mr/strings.xml
index 586f08b..e910d69 100644
--- a/java/com/android/incallui/res/values-mr/strings.xml
+++ b/java/com/android/incallui/res/values-mr/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">येणारा कॉल</string>
   <string name="notification_incoming_video_call">येणारा व्हिडिओ कॉल</string>
   <string name="notification_incoming_call_mutli_sim">%1$s वरून इनकमिंग कॉल</string>
-  <string name="notification_incoming_call_with_photo">फोटोसह येणारा कॉल</string>
-  <string name="notification_incoming_call_with_message">संदेशासह येणारा कॉल</string>
-  <string name="notification_incoming_call_with_location">स्थानासह येणारा कॉल</string>
-  <string name="notification_incoming_call_with_photo_message">फोटो आणि संदेशासह येणारा कॉल</string>
-  <string name="notification_incoming_call_with_photo_location">फोटो आणि स्थानासह येणारा कॉल</string>
-  <string name="notification_incoming_call_with_message_location">मेसेज आणि स्थानासह येणारा कॉल</string>
-  <string name="notification_incoming_call_with_photo_message_location">फोटो, मेसेज आणि स्थानासह येणारा कॉल</string>
-  <string name="notification_incoming_call_attachments">संलग्नकांसह येणारा कॉल</string>
-  <string name="important_notification_incoming_call">महत्त्वाचा येणारा कॉल</string>
-  <string name="important_notification_incoming_call_with_photo">फोटोसह महत्त्वाचा येणारा कॉल</string>
-  <string name="important_notification_incoming_call_with_message">संदेशासह महत्त्वाचा येणारा कॉल</string>
-  <string name="important_notification_incoming_call_with_location">स्थानासह महत्त्वाचा येणारा कॉल</string>
-  <string name="important_notification_incoming_call_with_photo_message">फोटो आणि संदेशासह महत्त्वाचा येणारा कॉल</string>
-  <string name="important_notification_incoming_call_with_photo_location">फोटो आणि स्थानासह महत्त्वाचा येणारा कॉल</string>
-  <string name="important_notification_incoming_call_with_message_location">मेसेज आणि स्थानासह महत्त्वाचा येणारा कॉल</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">फोटो, मेसेज आणि स्थानासह महत्त्वाचा येणारा कॉल</string>
-  <string name="important_notification_incoming_call_attachments">संलग्नकांसह महत्त्वाचा येणारा कॉल</string>
   <string name="notification_incoming_work_call">येणारा कार्य कॉल</string>
   <string name="notification_incoming_spam_call">येणारा संशयित स्पॅम कॉल</string>
   <string name="notification_requesting_video_call">येणारी व्हिडिओ विनंती</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">वाय-फाय नेटवर्कवर स्विच करणे शक्य झाले नाही</string>
   <string name="video_call_lte_to_wifi_failed_message">व्हिडिओ कॉल मोबाइल नेटवर्कवर असेल. मानक डेटा शुल्क लागू शकतात.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">हे पुन्हा दर्शवू नका</string>
-  <string name="bubble_return_to_call">कॉलवर परत जा</string>
-  <string name="rtt_request_dialog_title">RTT कॉलमध्‍ये सामील व्‍हायचे?</string>
+    <string name="rtt_request_dialog_title">RTT कॉलमध्‍ये सामील व्‍हायचे?</string>
   <string name="rtt_request_dialog_details">%1$s ला तुमच्‍या व्‍हॉइस कॉलमध्‍ये मेसेजिंग वापरायचे आहे.</string>
   <string name="rtt_request_dialog_more_information">RTT अशा कॉलरना साहाय्य करते जे बहिरे असतात, कमी ऐकू येते किंवा बोलताना अडखळतात किंवा ज्‍यांना फक्‍त आवाज पुरेसा नसतो.</string>
   <string name="rtt_button_decline_request">नाही नको</string>
diff --git a/java/com/android/incallui/res/values-ms/strings.xml b/java/com/android/incallui/res/values-ms/strings.xml
index bd72120..925c72b 100644
--- a/java/com/android/incallui/res/values-ms/strings.xml
+++ b/java/com/android/incallui/res/values-ms/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Panggilan masuk</string>
   <string name="notification_incoming_video_call">Panggilan video masuk</string>
   <string name="notification_incoming_call_mutli_sim">Panggilan masuk melalui %1$s</string>
-  <string name="notification_incoming_call_with_photo">Panggilan masuk dengan foto</string>
-  <string name="notification_incoming_call_with_message">Panggilan masuk dengan mesej</string>
-  <string name="notification_incoming_call_with_location">Panggilan masuk dengan lokasi</string>
-  <string name="notification_incoming_call_with_photo_message">Panggilan masuk dengan foto dan mesej</string>
-  <string name="notification_incoming_call_with_photo_location">Panggilan masuk dengan foto dan lokasi</string>
-  <string name="notification_incoming_call_with_message_location">Panggilan masuk dengan mesej dan lokasi</string>
-  <string name="notification_incoming_call_with_photo_message_location">Panggilan masuk dengan foto, mesej dan lokasi</string>
-  <string name="notification_incoming_call_attachments">Panggilan masuk dengan lampiran</string>
-  <string name="important_notification_incoming_call">Panggilan masuk penting</string>
-  <string name="important_notification_incoming_call_with_photo">Panggilan masuk penting dengan foto</string>
-  <string name="important_notification_incoming_call_with_message">Panggilan masuk penting dengan mesej</string>
-  <string name="important_notification_incoming_call_with_location">Panggilan masuk penting dengan lokasi</string>
-  <string name="important_notification_incoming_call_with_photo_message">Panggilan masuk penting dengan foto dan mesej</string>
-  <string name="important_notification_incoming_call_with_photo_location">Panggilan masuk penting dengan foto dan lokasi</string>
-  <string name="important_notification_incoming_call_with_message_location">Panggilan masuk penting dengan mesej dan lokasi</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Panggilan masuk penting dengan foto, mesej dan lokasi</string>
-  <string name="important_notification_incoming_call_attachments">Panggilan masuk penting dengan lampiran</string>
   <string name="notification_incoming_work_call">Panggilan masuk daripada tempat kerja</string>
   <string name="notification_incoming_spam_call">Disyaki panggilan spam masuk</string>
   <string name="notification_requesting_video_call">Permintaan video masuk</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Tidak dapat beralih ke rangkaian Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Panggilan video akan menggunakan rangkaian mudah alih. Caj data standard boleh dikenakan.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Jangan tunjukkan ini lagi</string>
-  <string name="bubble_return_to_call">Kembali ke panggilan</string>
-  <string name="rtt_request_dialog_title">Sertai panggilan RTT?</string>
+    <string name="rtt_request_dialog_title">Sertai panggilan RTT?</string>
   <string name="rtt_request_dialog_details">%1$s mahu menggunakan pemesejan dalam panggilan suara anda.</string>
   <string name="rtt_request_dialog_more_information">RTT membantu pemanggil yang pekak, kurang pendengaran, mengalami kesukaran bertutur atau memerlukan ciri selain suara.</string>
   <string name="rtt_button_decline_request">Tidak perlu</string>
diff --git a/java/com/android/incallui/res/values-my/strings.xml b/java/com/android/incallui/res/values-my/strings.xml
index d543708..200620d 100644
--- a/java/com/android/incallui/res/values-my/strings.xml
+++ b/java/com/android/incallui/res/values-my/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">အဝင်ခေါ်ဆိုမှု</string>
   <string name="notification_incoming_video_call">ဝင်လာသည့် ဗီဒီယို ခေါ်ဆိုမှု</string>
   <string name="notification_incoming_call_mutli_sim">%1$s မှတစ်ဆင့် အဝင်ခေါ်ဆိုမှု</string>
-  <string name="notification_incoming_call_with_photo">ဓာတ်ပုံဖြင့် အဝင်ခေါ်ဆိုမှု</string>
-  <string name="notification_incoming_call_with_message">မက်ဆေ့ဂျ်ဖြင့် အဝင်ခေါ်ဆိုမှု</string>
-  <string name="notification_incoming_call_with_location">တည်နေရာဖြင့် အဝင်ခေါ်ဆိုမှု</string>
-  <string name="notification_incoming_call_with_photo_message">ဓာတ်ပုံနှင့် မက်ဆေ့ဂျ်တို့ဖြင့် အဝင်ခေါ်ဆိုမှု</string>
-  <string name="notification_incoming_call_with_photo_location">ဓာတ်ပုံနှင့် တည်နေရာတို့ဖြင့် အဝင်ခေါ်ဆိုမှု</string>
-  <string name="notification_incoming_call_with_message_location">မက်ဆေ့ဂျ်နှင့် တည်နေရာတို့ဖြင့် အဝင်ခေါ်ဆိုမှု</string>
-  <string name="notification_incoming_call_with_photo_message_location">ဓာတ်ပုံ၊ မက်ဆေ့ဂျ်၊ တည်နေရာဖြင့် အဝင်ခေါ်ဆိုမှု</string>
-  <string name="notification_incoming_call_attachments">ပူးတွဲပါဖိုင်များဖြင့် အဝင်ခေါ်ဆိုမှု</string>
-  <string name="important_notification_incoming_call">အရေးကြီးသော အဝင်ခေါ်ဆိုမှု</string>
-  <string name="important_notification_incoming_call_with_photo">ဓာတ်ပုံဖြင့် အရေးကြီးသော အဝင်ခေါ်ဆိုမှု</string>
-  <string name="important_notification_incoming_call_with_message">မက်ဆေ့ဂျ်ဖြင့် အရေးကြီးသော အဝင်ခေါ်ဆိုမှု</string>
-  <string name="important_notification_incoming_call_with_location">တည်နေရာဖြင့် အရေးကြီးသော အဝင်ခေါ်ဆိုမှု</string>
-  <string name="important_notification_incoming_call_with_photo_message">ဓာတ်ပုံနှင့် မက်ဆေ့ဂျ်ဖြင့် အရေးကြီးသောခေါ်ဆိုမှု</string>
-  <string name="important_notification_incoming_call_with_photo_location">ဓာတ်ပုံနှင့် တည်နေရာဖြင့် အရေးကြီးသောခေါ်ဆိုမှု</string>
-  <string name="important_notification_incoming_call_with_message_location">မက်ဆေ့ဂျ်နှင့် တည်နေရာဖြင့် အရေးကြီးသောခေါ်ဆိုမှု</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">ဓာတ်ပုံ၊မက်ဆေ့ဂျ်၊တည်နေရာဖြင့် အရေးကြီးခေါ်ဆိုမှု</string>
-  <string name="important_notification_incoming_call_attachments">ပူးတွဲပါဖိုင်များဖြင့် အရေးကြီးသော အဝင်ခေါ်ဆိုမှု</string>
   <string name="notification_incoming_work_call">အဝင် ခေါ်ဆိုမှု</string>
   <string name="notification_incoming_spam_call">ခေါ်နေသော မသင်္ကာဖွယ်ရာ စပမ်းခေါ်ဆိုမှု</string>
   <string name="notification_requesting_video_call">အသံ ခေါ်ဆိုမှုအဖြစ် တောင်းဆိုမှု</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi‑Fi ကွန်ရက်သို့ မပြောင်းနိုင်ပါ</string>
   <string name="video_call_lte_to_wifi_failed_message">ဗီဒီယိုခေါ်ဆိုမှုသည် မိုဘိုင်းကွန်ရက်တွင် ဆက်ရှိနေပါမည်။ ပုံမှန်ဒေတာသုံးစွဲခများ ကျသင့်နိုင်ပါသည်။</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">ဤသည်ကို ထပ်မပြပါနှင့်</string>
-  <string name="bubble_return_to_call">ခေါ်ဆိုမှုသို့ ပြန်သွားရန်</string>
-  <string name="rtt_request_dialog_title">RTT ခေါ်ဆိုမှုကို ချိတ်ဆက်မလား။</string>
+    <string name="rtt_request_dialog_title">RTT ခေါ်ဆိုမှုကို ချိတ်ဆက်မလား။</string>
   <string name="rtt_request_dialog_details">%1$s သည် သင် အသံခေါ်ဆိုချိန်အတွင်း မက်ဆေ့ဂျ်ပို့ခြင်းကို အသုံးပြုလိုပါသည်။</string>
   <string name="rtt_request_dialog_more_information">RTT သည် နားမကြားသူ၊ နားလေးသူ၊ စကားချို့ယွင်းသူ (သို့) အသံတစ်မျိုးတည်းထက် ပိုမို၍ လိုအပ်သူများကို ကူညီပေးပါသည်။</string>
   <string name="rtt_button_decline_request">မလိုပါ</string>
diff --git a/java/com/android/incallui/res/values-nb/strings.xml b/java/com/android/incallui/res/values-nb/strings.xml
index f032573..25c15d9 100644
--- a/java/com/android/incallui/res/values-nb/strings.xml
+++ b/java/com/android/incallui/res/values-nb/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Innkommende samtale</string>
   <string name="notification_incoming_video_call">Innkommende videoanrop</string>
   <string name="notification_incoming_call_mutli_sim">Innkommende anrop via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Innkommende anrop med bilde</string>
-  <string name="notification_incoming_call_with_message">Innkommende anrop med melding</string>
-  <string name="notification_incoming_call_with_location">Innkommende anrop med posisjon</string>
-  <string name="notification_incoming_call_with_photo_message">Innkommende anrop med bilde og melding</string>
-  <string name="notification_incoming_call_with_photo_location">Innkommende anrop med bilde og posisjon</string>
-  <string name="notification_incoming_call_with_message_location">Innkommende anrop med melding og posisjon</string>
-  <string name="notification_incoming_call_with_photo_message_location">Innkommende anrop med bilde, melding og posisjon</string>
-  <string name="notification_incoming_call_attachments">Innkommende anrop med vedlegg</string>
-  <string name="important_notification_incoming_call">Viktig innkommende anrop</string>
-  <string name="important_notification_incoming_call_with_photo">Viktig innkommende anrop med bilde</string>
-  <string name="important_notification_incoming_call_with_message">Viktig innkommende anrop med melding</string>
-  <string name="important_notification_incoming_call_with_location">Viktig innkommende anrop med posisjon</string>
-  <string name="important_notification_incoming_call_with_photo_message">Viktig innkommende anrop med bilde og melding</string>
-  <string name="important_notification_incoming_call_with_photo_location">Viktig innkommende anrop med bilde og posisjon</string>
-  <string name="important_notification_incoming_call_with_message_location">Viktig innkommende anrop med melding og posisjon</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Viktig anrop med bilde, melding og posisjon</string>
-  <string name="important_notification_incoming_call_attachments">Viktig innkommende anrop med vedlegg</string>
   <string name="notification_incoming_work_call">Innkommende jobbanrop</string>
   <string name="notification_incoming_spam_call">Innkommende anrop fra en mulig useriøs oppringer</string>
   <string name="notification_requesting_video_call">Innkommende videoforespørsel</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Kunne ikke bytte til Wi-Fi-nettverk</string>
   <string name="video_call_lte_to_wifi_failed_message">Videosamtalen blir værende på mobilnettverket. Standard datakostnader kan påløpe.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ikke vis dette igjen</string>
-  <string name="bubble_return_to_call">Tilbake til samtalen</string>
-  <string name="rtt_request_dialog_title">Bli med i STT-samtale?</string>
+    <string name="rtt_request_dialog_title">Bli med i STT-samtale?</string>
   <string name="rtt_request_dialog_details">%1$s vil bruke meldinger inne i talesamtalen deres.</string>
   <string name="rtt_request_dialog_more_information">STT er til hjelp for anropsdeltakere som er døve eller tunghørte, har talefunksjonshemninger eller trenger mer enn bare tale.</string>
   <string name="rtt_button_decline_request">Nei takk</string>
diff --git a/java/com/android/incallui/res/values-ne/strings.xml b/java/com/android/incallui/res/values-ne/strings.xml
index 65b6341..73aa999 100644
--- a/java/com/android/incallui/res/values-ne/strings.xml
+++ b/java/com/android/incallui/res/values-ne/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">आगमन कल</string>
   <string name="notification_incoming_video_call">आगमन भिडियो कल</string>
   <string name="notification_incoming_call_mutli_sim">%1$s मा आगमन कल</string>
-  <string name="notification_incoming_call_with_photo">तस्बिरसहितको आगमन कल</string>
-  <string name="notification_incoming_call_with_message">सन्देशसहितको आगमन कल</string>
-  <string name="notification_incoming_call_with_location">स्थानसहितको आगमन कल</string>
-  <string name="notification_incoming_call_with_photo_message">तस्बिर र सन्देशसहितको आगमन कल</string>
-  <string name="notification_incoming_call_with_photo_location">तस्बिर र स्थानसहितको आगमन कल</string>
-  <string name="notification_incoming_call_with_message_location">सन्देश र स्थानसहितको आगमन कल</string>
-  <string name="notification_incoming_call_with_photo_message_location">तस्बिर, सन्देश र स्थानसहितको आगमन कल</string>
-  <string name="notification_incoming_call_attachments">समावेश गरिएको वस्तुसहितको आगमन कल</string>
-  <string name="important_notification_incoming_call">महत्त्वपूर्ण आगमन कल</string>
-  <string name="important_notification_incoming_call_with_photo">तस्बिरसहितको महत्त्वपूर्ण आगमन कल</string>
-  <string name="important_notification_incoming_call_with_message">सन्देशसहितको महत्त्वपूर्ण आगमन कल</string>
-  <string name="important_notification_incoming_call_with_location">स्थानसहितको महत्त्वपूर्ण आगमन कल</string>
-  <string name="important_notification_incoming_call_with_photo_message">तस्बिर र सन्देशसहितको महत्त्वपूर्ण आगमन कल</string>
-  <string name="important_notification_incoming_call_with_photo_location">तस्बिर र स्थानसहितको महत्त्वपूर्ण आगमन कल</string>
-  <string name="important_notification_incoming_call_with_message_location">सन्देश र स्थानसहितको महत्त्वपूर्ण आगमन कल</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">तस्बिर, सन्देश र स्थानसहितको महत्त्वपूर्ण आगमन कल</string>
-  <string name="important_notification_incoming_call_attachments">समावेश गरिएको वस्तुसहितको महत्त्वपूर्ण आगमन कल</string>
   <string name="notification_incoming_work_call">आगमन कार्यको कल</string>
   <string name="notification_incoming_spam_call">शंकास्पद आगमन स्प्याम कल</string>
   <string name="notification_requesting_video_call">आगमन भिडियो अनुरोध</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi नेटवर्कमा स्विच गर्न सकिएन</string>
   <string name="video_call_lte_to_wifi_failed_message">भिडियो कल मोबाइल नेटवर्कमा रहने छ। मानक डेटा शुल्क लाग्न सक्छ।</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">यसलाई फेरि नदेखाउनुहोस्</string>
-  <string name="bubble_return_to_call">कलमा फर्कनुहोस्</string>
-  <string name="rtt_request_dialog_title">RTT कलमा सामेल हुने हो?</string>
+    <string name="rtt_request_dialog_title">RTT कलमा सामेल हुने हो?</string>
   <string name="rtt_request_dialog_details">%1$s तपाईंको भ्वाइस कलमै रहेर सन्देश प्रवाह प्रयोग गर्न चाहनुहुन्छ।</string>
   <string name="rtt_request_dialog_more_information">RTT ले बहिरा, सुन्नमा कठिन हुने, बोल्न नसक्ने र कल गर्दा आवाजका साथै अरू कुराहरूको आवश्यकता पर्ने मान्छेहरूलाई सहायता गर्छ।</string>
   <string name="rtt_button_decline_request">पर्दैन, धन्यवाद</string>
diff --git a/java/com/android/incallui/res/values-nl/cm_strings.xml b/java/com/android/incallui/res/values-nl/cm_strings.xml
new file mode 100644
index 0000000..c1fb45f
--- /dev/null
+++ b/java/com/android/incallui/res/values-nl/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Gespreksopname starten mislukt</string>
+    <string name="call_recording_file_location">Gespreksopname opgeslagen als <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Gesprek opnemen</string>
+    <string name="onscreenCallRecordingText">Oproep aan het opnemen - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Opname stoppen</string>
+    <string name="recording_warning_title">Gespreksopname inschakelen?</string>
+    <string name="recording_warning_text">Let op: u bent zelf verantwoordelijk om de wetten, verordeningen en regels na te leven die van toepassing zijn bij het opnemen van gesprekken en het gebruik of verspreiding van zulke opnamen.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-nl/strings.xml b/java/com/android/incallui/res/values-nl/strings.xml
index 39d3799..fed1aef 100644
--- a/java/com/android/incallui/res/values-nl/strings.xml
+++ b/java/com/android/incallui/res/values-nl/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Inkomende oproep</string>
   <string name="notification_incoming_video_call">Binnenkomend videogesprek</string>
   <string name="notification_incoming_call_mutli_sim">Inkomende oproep via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Inkomende oproep met foto</string>
-  <string name="notification_incoming_call_with_message">Inkomende oproep met bericht</string>
-  <string name="notification_incoming_call_with_location">Inkomende oproep met locatie</string>
-  <string name="notification_incoming_call_with_photo_message">Inkomende oproep met foto en bericht</string>
-  <string name="notification_incoming_call_with_photo_location">Inkomende oproep met foto en locatie</string>
-  <string name="notification_incoming_call_with_message_location">Inkomende oproep met bericht en locatie</string>
-  <string name="notification_incoming_call_with_photo_message_location">Inkomende oproep met foto, bericht en locatie</string>
-  <string name="notification_incoming_call_attachments">Inkomende oproep met bijlagen</string>
-  <string name="important_notification_incoming_call">Belangrijke inkomende oproep</string>
-  <string name="important_notification_incoming_call_with_photo">Belangrijke inkomende oproep met foto</string>
-  <string name="important_notification_incoming_call_with_message">Belangrijke inkomende oproep met bericht</string>
-  <string name="important_notification_incoming_call_with_location">Belangrijke inkomende oproep met locatie</string>
-  <string name="important_notification_incoming_call_with_photo_message">Belangrijke inkomende oproep met foto en bericht</string>
-  <string name="important_notification_incoming_call_with_photo_location">Belangrijke inkomende oproep met foto en locatie</string>
-  <string name="important_notification_incoming_call_with_message_location">Belangrijke oproep met bericht en locatie</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Belangrijke oproep met foto, bericht en locatie</string>
-  <string name="important_notification_incoming_call_attachments">Belangrijke inkomende oproep met bijlagen</string>
   <string name="notification_incoming_work_call">Inkomende zakelijke oproep</string>
   <string name="notification_incoming_spam_call">Inkomende vermoedelijke spamoproep</string>
   <string name="notification_requesting_video_call">Binnenkomend videoverzoek</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Overschakelen naar wifi-netwerk mislukt</string>
   <string name="video_call_lte_to_wifi_failed_message">Videogesprek loopt via mobiel netwerk. Er kunnen standaard datakosten in rekening worden gebracht.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Dit niet meer weergeven</string>
-  <string name="bubble_return_to_call">Terug naar oproep</string>
-  <string name="rtt_request_dialog_title">Deelnemen aan RTT-gesprek?</string>
+    <string name="rtt_request_dialog_title">Deelnemen aan RTT-gesprek?</string>
   <string name="rtt_request_dialog_details">%1$s wil berichten gebruiken in je spraakoproep.</string>
   <string name="rtt_request_dialog_more_information">RTT helpt dove en slechthorende bellers en bellers met een spraakbeperking. Deze functie kan ook handig zijn voor bellers die meer dan alleen gesproken communicatie nodig hebben.</string>
   <string name="rtt_button_decline_request">Nee</string>
diff --git a/java/com/android/incallui/res/values-no/strings.xml b/java/com/android/incallui/res/values-no/strings.xml
index f032573..25c15d9 100644
--- a/java/com/android/incallui/res/values-no/strings.xml
+++ b/java/com/android/incallui/res/values-no/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Innkommende samtale</string>
   <string name="notification_incoming_video_call">Innkommende videoanrop</string>
   <string name="notification_incoming_call_mutli_sim">Innkommende anrop via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Innkommende anrop med bilde</string>
-  <string name="notification_incoming_call_with_message">Innkommende anrop med melding</string>
-  <string name="notification_incoming_call_with_location">Innkommende anrop med posisjon</string>
-  <string name="notification_incoming_call_with_photo_message">Innkommende anrop med bilde og melding</string>
-  <string name="notification_incoming_call_with_photo_location">Innkommende anrop med bilde og posisjon</string>
-  <string name="notification_incoming_call_with_message_location">Innkommende anrop med melding og posisjon</string>
-  <string name="notification_incoming_call_with_photo_message_location">Innkommende anrop med bilde, melding og posisjon</string>
-  <string name="notification_incoming_call_attachments">Innkommende anrop med vedlegg</string>
-  <string name="important_notification_incoming_call">Viktig innkommende anrop</string>
-  <string name="important_notification_incoming_call_with_photo">Viktig innkommende anrop med bilde</string>
-  <string name="important_notification_incoming_call_with_message">Viktig innkommende anrop med melding</string>
-  <string name="important_notification_incoming_call_with_location">Viktig innkommende anrop med posisjon</string>
-  <string name="important_notification_incoming_call_with_photo_message">Viktig innkommende anrop med bilde og melding</string>
-  <string name="important_notification_incoming_call_with_photo_location">Viktig innkommende anrop med bilde og posisjon</string>
-  <string name="important_notification_incoming_call_with_message_location">Viktig innkommende anrop med melding og posisjon</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Viktig anrop med bilde, melding og posisjon</string>
-  <string name="important_notification_incoming_call_attachments">Viktig innkommende anrop med vedlegg</string>
   <string name="notification_incoming_work_call">Innkommende jobbanrop</string>
   <string name="notification_incoming_spam_call">Innkommende anrop fra en mulig useriøs oppringer</string>
   <string name="notification_requesting_video_call">Innkommende videoforespørsel</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Kunne ikke bytte til Wi-Fi-nettverk</string>
   <string name="video_call_lte_to_wifi_failed_message">Videosamtalen blir værende på mobilnettverket. Standard datakostnader kan påløpe.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ikke vis dette igjen</string>
-  <string name="bubble_return_to_call">Tilbake til samtalen</string>
-  <string name="rtt_request_dialog_title">Bli med i STT-samtale?</string>
+    <string name="rtt_request_dialog_title">Bli med i STT-samtale?</string>
   <string name="rtt_request_dialog_details">%1$s vil bruke meldinger inne i talesamtalen deres.</string>
   <string name="rtt_request_dialog_more_information">STT er til hjelp for anropsdeltakere som er døve eller tunghørte, har talefunksjonshemninger eller trenger mer enn bare tale.</string>
   <string name="rtt_button_decline_request">Nei takk</string>
diff --git a/java/com/android/incallui/res/values-pa/strings.xml b/java/com/android/incallui/res/values-pa/strings.xml
index 45462b5..22d21a7 100644
--- a/java/com/android/incallui/res/values-pa/strings.xml
+++ b/java/com/android/incallui/res/values-pa/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">ਇਨਕਮਿੰਗ ਕਾਲ</string>
   <string name="notification_incoming_video_call">ਇਨਕਮਿੰਗ ਵੀਡੀਓ ਕਾਲ</string>
   <string name="notification_incoming_call_mutli_sim">%1$s ਰਾਹੀਂ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="notification_incoming_call_with_photo">ਫ਼ੋਟੋ ਨਾਲ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="notification_incoming_call_with_message">ਸੁਨੇਹੇ ਨਾਲ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="notification_incoming_call_with_location">ਟਿਕਾਣੇ ਨਾਲ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="notification_incoming_call_with_photo_message">ਫ਼ੋਟੋ ਅਤੇ ਸੁਨੇਹੇ ਨਾਲ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="notification_incoming_call_with_photo_location">ਫ਼ੋਟੋ ਅਤੇ ਟਿਕਾਣੇ ਨਾਲ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="notification_incoming_call_with_message_location">ਸੁਨੇਹੇ ਅਤੇ ਟਿਕਾਣੇ ਨਾਲ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="notification_incoming_call_with_photo_message_location">ਫ਼ੋਟੋ, ਸੁਨੇਹੇ ਅਤੇ ਟਿਕਾਣੇ ਨਾਲ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="notification_incoming_call_attachments">ਅਟੈਚਮੈਂਟਾਂ ਨਾਲ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="important_notification_incoming_call">ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="important_notification_incoming_call_with_photo">ਫ਼ੋਟੋ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="important_notification_incoming_call_with_message">ਸੁਨੇਹੇ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="important_notification_incoming_call_with_location">ਟਿਕਾਣੇ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="important_notification_incoming_call_with_photo_message">ਫ਼ੋਟੋ ਅਤੇ ਸੁਨੇਹੇ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="important_notification_incoming_call_with_photo_location">ਫ਼ੋਟੋ ਅਤੇ ਟਿਕਾਣੇ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="important_notification_incoming_call_with_message_location">ਸੁਨੇਹੇ ਅਤੇ ਟਿਕਾਣੇ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">ਫ਼ੋਟੋ, ਸੁਨੇਹੇ ਅਤੇ ਟਿਕਾਣੇ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ</string>
-  <string name="important_notification_incoming_call_attachments">ਅਟੈਚਮੈਂਟਾਂ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਇਨਕਮਿੰਗ ਕਾਲ</string>
   <string name="notification_incoming_work_call">ਕੰਮ ਸਬੰਧਿਤ ਆ ਰਹੀ ਕਾਲ</string>
   <string name="notification_incoming_spam_call">ਸ਼ੱਕੀ ਸਪੈਮ ਕਾਲ ਆ ਰਹੀ ਹੈ</string>
   <string name="notification_requesting_video_call">ਇਨਕਮਿੰਗ ਵੀਡੀਓ ਬੇਨਤੀ</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi‑Fi ਨੈੱਟਵਰਕ \'ਤੇ ਬਦਲੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ</string>
   <string name="video_call_lte_to_wifi_failed_message">ਵੀਡੀਓ ਕਾਲ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ \'ਤੇ ਜਾਰੀ ਰਹੇਗੀ। ਮਿਆਰੀ  ਡਾਟਾ  ਖਰਚੇ ਲਾਗੂ ਹੋ ਸਕਦੇ ਹਨ।</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">ਇਸ ਨੂੰ ਦੁਬਾਰਾ ਨਾ  ਦਿਖਾਓ </string>
-  <string name="bubble_return_to_call">ਕਾਲ \'ਤੇ ਵਾਪਸ ਜਾਓ</string>
-  <string name="rtt_request_dialog_title">ਕੀ RTT ਕਾਲ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣਾ ਹੈ?</string>
+    <string name="rtt_request_dialog_title">ਕੀ RTT ਕਾਲ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣਾ ਹੈ?</string>
   <string name="rtt_request_dialog_details">%1$s ਤੁਹਾਡੀ ਅਵਾਜ਼ੀ ਕਾਲ ਦੌਰਾਨ ਸੁਨੇਹੇ ਭੇਜਣ ਦਾ ਚਾਹਵਾਨ ਹੈ।</string>
   <string name="rtt_request_dialog_more_information">RTT ਬੋਲੇ, ਗੂੰਗੇ, ਸੁਣਨ ਸੰਬੰਧੀ ਪਰੇਸ਼ਾਨੀਆਂ ਵਾਲੇ ਕਾਲਰਾਂ ਜਾਂ ਚੀਜ਼ਾਂ ਨੂੰ ਸਮਝਣ ਲਈ ਅਵਾਜ਼ ਤੋਂ ਇਲਾਵਾ ਹੋਰ ਚੀਜ਼ਾਂ \'ਤੇ ਨਿਰਭਰ ਕਰਨ ਵਾਲੇ ਕਾਲਰਾਂ ਦੀ ਸਹਾਇਤਾ ਕਰਦਾ ਹੈ।</string>
   <string name="rtt_button_decline_request">ਨਹੀਂ ਧੰਨਵਾਦ</string>
diff --git a/java/com/android/incallui/res/values-pl/cm_strings.xml b/java/com/android/incallui/res/values-pl/cm_strings.xml
new file mode 100644
index 0000000..e1a7294
--- /dev/null
+++ b/java/com/android/incallui/res/values-pl/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Nie udało się rozpocząć nagrywania rozmowy</string>
+    <string name="call_recording_file_location">Zapisano nagranie rozmowy do <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Nagraj rozmowę</string>
+    <string name="onscreenCallRecordingText">Nagrywanie rozmowy - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Zatrzymaj nagrywanie</string>
+    <string name="recording_warning_title">Włączyć nagrywanie rozmów?</string>
+    <string name="recording_warning_text">Uwaga: Ponosisz odpowiedzialność za wszelkie komplikacje z prawem związane z nagrywaniem rozmów i ich udostępnianiem bądź rozpowszechnianiem tych nagrań.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-pl/strings.xml b/java/com/android/incallui/res/values-pl/strings.xml
index 80c4ec0..df7b34c 100644
--- a/java/com/android/incallui/res/values-pl/strings.xml
+++ b/java/com/android/incallui/res/values-pl/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Połączenie</string>
   <string name="notification_incoming_video_call">Przychodząca rozmowa wideo</string>
   <string name="notification_incoming_call_mutli_sim">Połączenie przychodzące przez %1$s</string>
-  <string name="notification_incoming_call_with_photo">Połączenie przychodzące ze zdjęciem</string>
-  <string name="notification_incoming_call_with_message">Połączenie przychodzące z wiadomością</string>
-  <string name="notification_incoming_call_with_location">Połączenie przychodzące z lokalizacją</string>
-  <string name="notification_incoming_call_with_photo_message">Połączenie przychodzące ze zdjęciem i wiadomością</string>
-  <string name="notification_incoming_call_with_photo_location">Połączenie przychodzące ze zdjęciem i lokalizacją</string>
-  <string name="notification_incoming_call_with_message_location">Połączenie z wiadomością i lokalizacją</string>
-  <string name="notification_incoming_call_with_photo_message_location">Połączenie ze zdjęciem, wiadomością i lokalizacją</string>
-  <string name="notification_incoming_call_attachments">Połączenie przychodzące z załącznikami</string>
-  <string name="important_notification_incoming_call">Ważne połączenie przychodzące</string>
-  <string name="important_notification_incoming_call_with_photo">Ważne połączenie przychodzące ze zdjęciem</string>
-  <string name="important_notification_incoming_call_with_message">Ważne połączenie przychodzące z wiadomością</string>
-  <string name="important_notification_incoming_call_with_location">Ważne połączenie przychodzące z lokalizacją</string>
-  <string name="important_notification_incoming_call_with_photo_message">Ważne połączenie ze zdjęciem i wiadomością</string>
-  <string name="important_notification_incoming_call_with_photo_location">Ważne połączenie ze zdjęciem i lokalizacją</string>
-  <string name="important_notification_incoming_call_with_message_location">Ważne połączenie z wiadomością i lokalizacją</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Ważne połączenie przychodzące z załącznikami</string>
-  <string name="important_notification_incoming_call_attachments">Ważne połączenie przychodzące z załącznikami</string>
   <string name="notification_incoming_work_call">Przychodzące połączenie służbowe</string>
   <string name="notification_incoming_spam_call">Przychodzące połączenie podejrzanie o spam</string>
   <string name="notification_requesting_video_call">Przychodzące żądanie wideo</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Nie udało się przełączyć na sieć Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Rozmowa wideo będzie nadal prowadzona przez sieć komórkową. Za transfer danych może zostać pobrana opłata.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Nie pokazuj ponownie tego komunikatu</string>
-  <string name="bubble_return_to_call">Powrót do połączenia</string>
-  <string name="rtt_request_dialog_title">Dołączyć do połączenia RTT?</string>
+    <string name="rtt_request_dialog_title">Dołączyć do połączenia RTT?</string>
   <string name="rtt_request_dialog_details">%1$s chce używać czatu podczas rozmowy głosowej.</string>
   <string name="rtt_request_dialog_more_information">RTT pomaga osobom niesłyszącym, niedosłyszącym, mającym problemy z mówieniem oraz potrzebującym czegoś więcej oprócz głosu.</string>
   <string name="rtt_button_decline_request">Nie</string>
diff --git a/java/com/android/incallui/res/values-pt-rBR/cm_strings.xml b/java/com/android/incallui/res/values-pt-rBR/cm_strings.xml
new file mode 100644
index 0000000..947b87f
--- /dev/null
+++ b/java/com/android/incallui/res/values-pt-rBR/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Falha ao iniciar a gravação da chamada</string>
+    <string name="call_recording_file_location">A gravação da chamada foi salva em <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Gravar chamada</string>
+    <string name="onscreenCallRecordingText">Gravando chamada - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Parar a gravação</string>
+    <string name="recording_warning_title">Ativar a gravação de chamadas?</string>
+    <string name="recording_warning_text">Aviso: Você é responsável por cumprir as leis, regulamentações e regras que se aplicam ao uso do recurso de gravação de chamadas e da utilização ou distribuição dessas gravações.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-pt-rBR/strings.xml b/java/com/android/incallui/res/values-pt-rBR/strings.xml
index 8bd2cb8..3578c4e 100644
--- a/java/com/android/incallui/res/values-pt-rBR/strings.xml
+++ b/java/com/android/incallui/res/values-pt-rBR/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Chamada recebida</string>
   <string name="notification_incoming_video_call">Recebendo videochamada</string>
   <string name="notification_incoming_call_mutli_sim">Chamada recebida via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Chamada recebida com foto</string>
-  <string name="notification_incoming_call_with_message">Chamada recebida com mensagem</string>
-  <string name="notification_incoming_call_with_location">Chamada recebida com local</string>
-  <string name="notification_incoming_call_with_photo_message">Chamada recebida com foto e mensagem</string>
-  <string name="notification_incoming_call_with_photo_location">Chamada recebida com foto e local</string>
-  <string name="notification_incoming_call_with_message_location">Chamada recebida com mensagem e local</string>
-  <string name="notification_incoming_call_with_photo_message_location">Chamada recebida com foto, mensagem e local</string>
-  <string name="notification_incoming_call_attachments">Chamada recebida com anexos</string>
-  <string name="important_notification_incoming_call">Chamada recebida importante</string>
-  <string name="important_notification_incoming_call_with_photo">Chamada recebida importante com foto</string>
-  <string name="important_notification_incoming_call_with_message">Chamada recebida importante com mensagem</string>
-  <string name="important_notification_incoming_call_with_location">Chamada recebida importante com local</string>
-  <string name="important_notification_incoming_call_with_photo_message">Chamada recebida importante com foto e mensagem</string>
-  <string name="important_notification_incoming_call_with_photo_location">Chamada recebida importante com foto e local</string>
-  <string name="important_notification_incoming_call_with_message_location">Chamada recebida importante com mensagem e local</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Chamada recebida importante com foto, mensagem e local</string>
-  <string name="important_notification_incoming_call_attachments">Chamada recebida importante com anexos</string>
   <string name="notification_incoming_work_call">Chamada de trabalho recebida</string>
   <string name="notification_incoming_spam_call">Chamada recebida suspeita (spam)</string>
   <string name="notification_requesting_video_call">Recebendo solicitação de vídeo</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Não foi possível alternar para a rede Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">A videochamada continuará via rede móvel. O uso de dados está sujeito a cobranças padrão.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Não exibir novamente</string>
-  <string name="bubble_return_to_call">Voltar à chamada</string>
-  <string name="rtt_request_dialog_title">Participar da chamada RTT?</string>
+    <string name="rtt_request_dialog_title">Participar da chamada RTT?</string>
   <string name="rtt_request_dialog_details">%1$s quer usar mensagens de texto com sua chamada de voz.</string>
   <string name="rtt_request_dialog_more_information">A RTT ajuda os autores das chamadas com deficiências como surdez, dificuldade de audição ou fala ou que precisam de outros recursos além de voz.</string>
   <string name="rtt_button_decline_request">Não</string>
diff --git a/java/com/android/incallui/res/values-pt-rPT/cm_strings.xml b/java/com/android/incallui/res/values-pt-rPT/cm_strings.xml
new file mode 100644
index 0000000..d2d6655
--- /dev/null
+++ b/java/com/android/incallui/res/values-pt-rPT/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Falha ao iniciar a gravação da chamada</string>
+    <string name="call_recording_file_location">A gravação da chamada foi guardada em <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Gravar chamada</string>
+    <string name="onscreenCallRecordingText">A gravar a chamada - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Parar de gravar</string>
+    <string name="recording_warning_title">Ativar a gravação de chamadas?</string>
+    <string name="recording_warning_text">Aviso: Você é responsável pela conformidade com quaisquer leis, regulamentos e regras que se apliquem ao uso da funcionalidade e à utilização ou distribuição dessas gravações de chamadas.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-pt-rPT/strings.xml b/java/com/android/incallui/res/values-pt-rPT/strings.xml
index cbdab42..30da2d7 100644
--- a/java/com/android/incallui/res/values-pt-rPT/strings.xml
+++ b/java/com/android/incallui/res/values-pt-rPT/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Chamada recebida</string>
   <string name="notification_incoming_video_call">A receber videochamada</string>
   <string name="notification_incoming_call_mutli_sim">Chamada recebida através de %1$s</string>
-  <string name="notification_incoming_call_with_photo">Chamada recebida com foto</string>
-  <string name="notification_incoming_call_with_message">Chamada recebida com mensagem</string>
-  <string name="notification_incoming_call_with_location">Chamada recebida com localização</string>
-  <string name="notification_incoming_call_with_photo_message">Chamada recebida com foto e mensagem</string>
-  <string name="notification_incoming_call_with_photo_location">Chamada recebida com foto e localização</string>
-  <string name="notification_incoming_call_with_message_location">Chamada recebida com mensagem e localização</string>
-  <string name="notification_incoming_call_with_photo_message_location">Chamada recebida com foto, mensagem e localização</string>
-  <string name="notification_incoming_call_attachments">Chamada recebida com anexos</string>
-  <string name="important_notification_incoming_call">Chamada recebida importante</string>
-  <string name="important_notification_incoming_call_with_photo">Chamada recebida importante com foto</string>
-  <string name="important_notification_incoming_call_with_message">Chama recebida importante com mensagem</string>
-  <string name="important_notification_incoming_call_with_location">Chamada recebida importante com localização</string>
-  <string name="important_notification_incoming_call_with_photo_message">Chamada recebida importante com foto e mensagem</string>
-  <string name="important_notification_incoming_call_with_photo_location">Chamada recebida importante com foto e localização</string>
-  <string name="important_notification_incoming_call_with_message_location">Chamada recebida importante c/ mensagem e localiz.</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">.</string>
-  <string name="important_notification_incoming_call_attachments">Chamada recebida importante com anexos</string>
   <string name="notification_incoming_work_call">Chamada de trabalho recebida</string>
   <string name="notification_incoming_spam_call">A receber chamada spam suspeita</string>
   <string name="notification_requesting_video_call">Pedido de vídeo recebido</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Não foi possível mudar para a rede Wi-Fi.</string>
   <string name="video_call_lte_to_wifi_failed_message">As videochamadas irão continuar a ser efetuadas através da rede móvel. Poderão ser aplicados custos de dados padrão.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Não voltar a mostrar este aviso</string>
-  <string name="bubble_return_to_call">Voltar à chamada</string>
-  <string name="rtt_request_dialog_title">Pretende participar na chamada RTT?</string>
+    <string name="rtt_request_dialog_title">Pretende participar na chamada RTT?</string>
   <string name="rtt_request_dialog_details">%1$s pretende utilizar mensagens na sua chamada de voz.</string>
   <string name="rtt_request_dialog_more_information">A RTT assiste os autores de chamadas surdos, com deficiências auditivas, dificuldades da fala ou que precisem de mais do que apenas a voz.</string>
   <string name="rtt_button_decline_request">Não, obrigado</string>
diff --git a/java/com/android/incallui/res/values-pt/strings.xml b/java/com/android/incallui/res/values-pt/strings.xml
index 8bd2cb8..3578c4e 100644
--- a/java/com/android/incallui/res/values-pt/strings.xml
+++ b/java/com/android/incallui/res/values-pt/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Chamada recebida</string>
   <string name="notification_incoming_video_call">Recebendo videochamada</string>
   <string name="notification_incoming_call_mutli_sim">Chamada recebida via %1$s</string>
-  <string name="notification_incoming_call_with_photo">Chamada recebida com foto</string>
-  <string name="notification_incoming_call_with_message">Chamada recebida com mensagem</string>
-  <string name="notification_incoming_call_with_location">Chamada recebida com local</string>
-  <string name="notification_incoming_call_with_photo_message">Chamada recebida com foto e mensagem</string>
-  <string name="notification_incoming_call_with_photo_location">Chamada recebida com foto e local</string>
-  <string name="notification_incoming_call_with_message_location">Chamada recebida com mensagem e local</string>
-  <string name="notification_incoming_call_with_photo_message_location">Chamada recebida com foto, mensagem e local</string>
-  <string name="notification_incoming_call_attachments">Chamada recebida com anexos</string>
-  <string name="important_notification_incoming_call">Chamada recebida importante</string>
-  <string name="important_notification_incoming_call_with_photo">Chamada recebida importante com foto</string>
-  <string name="important_notification_incoming_call_with_message">Chamada recebida importante com mensagem</string>
-  <string name="important_notification_incoming_call_with_location">Chamada recebida importante com local</string>
-  <string name="important_notification_incoming_call_with_photo_message">Chamada recebida importante com foto e mensagem</string>
-  <string name="important_notification_incoming_call_with_photo_location">Chamada recebida importante com foto e local</string>
-  <string name="important_notification_incoming_call_with_message_location">Chamada recebida importante com mensagem e local</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Chamada recebida importante com foto, mensagem e local</string>
-  <string name="important_notification_incoming_call_attachments">Chamada recebida importante com anexos</string>
   <string name="notification_incoming_work_call">Chamada de trabalho recebida</string>
   <string name="notification_incoming_spam_call">Chamada recebida suspeita (spam)</string>
   <string name="notification_requesting_video_call">Recebendo solicitação de vídeo</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Não foi possível alternar para a rede Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">A videochamada continuará via rede móvel. O uso de dados está sujeito a cobranças padrão.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Não exibir novamente</string>
-  <string name="bubble_return_to_call">Voltar à chamada</string>
-  <string name="rtt_request_dialog_title">Participar da chamada RTT?</string>
+    <string name="rtt_request_dialog_title">Participar da chamada RTT?</string>
   <string name="rtt_request_dialog_details">%1$s quer usar mensagens de texto com sua chamada de voz.</string>
   <string name="rtt_request_dialog_more_information">A RTT ajuda os autores das chamadas com deficiências como surdez, dificuldade de audição ou fala ou que precisam de outros recursos além de voz.</string>
   <string name="rtt_button_decline_request">Não</string>
diff --git a/java/com/android/incallui/res/values-ro/cm_strings.xml b/java/com/android/incallui/res/values-ro/cm_strings.xml
new file mode 100644
index 0000000..5133035
--- /dev/null
+++ b/java/com/android/incallui/res/values-ro/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Inițializarea înregistrării apelului a eșuat</string>
+    <string name="call_recording_file_location">S-a salvat înregistrarea apelului în <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Înregistrare apel</string>
+    <string name="onscreenCallRecordingText">Înregistrare apel - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Oprire înregistrare</string>
+    <string name="recording_warning_title">Activați înregistrarea apelurilor?</string>
+    <string name="recording_warning_text">Anunț: Sunteți responsabil pentru respectarea oricărei legi, regulament și normă care se aplică la utilizarea funcției de înregistrare apel și folosirea sau distribuirea acestor înregistrări.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-ro/strings.xml b/java/com/android/incallui/res/values-ro/strings.xml
index cea7e51..a9ac609 100644
--- a/java/com/android/incallui/res/values-ro/strings.xml
+++ b/java/com/android/incallui/res/values-ro/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Apel de intrare</string>
   <string name="notification_incoming_video_call">Apel video primit</string>
   <string name="notification_incoming_call_mutli_sim">Apel primit prin %1$s</string>
-  <string name="notification_incoming_call_with_photo">Apel primit cu fotografie</string>
-  <string name="notification_incoming_call_with_message">Apel primit cu mesaj</string>
-  <string name="notification_incoming_call_with_location">Apel primit cu locație</string>
-  <string name="notification_incoming_call_with_photo_message">Apel primit cu fotografie și mesaj</string>
-  <string name="notification_incoming_call_with_photo_location">Apel primit cu fotografie și locație</string>
-  <string name="notification_incoming_call_with_message_location">Apel primit cu mesaj și locație</string>
-  <string name="notification_incoming_call_with_photo_message_location">Apel primit cu fotografie, mesaj și locație</string>
-  <string name="notification_incoming_call_attachments">Apel primit cu atașamente</string>
-  <string name="important_notification_incoming_call">Apel primit important</string>
-  <string name="important_notification_incoming_call_with_photo">Apel primit important cu fotografie</string>
-  <string name="important_notification_incoming_call_with_message">Apel primit important cu mesaj</string>
-  <string name="important_notification_incoming_call_with_location">Apel primit important cu locație</string>
-  <string name="important_notification_incoming_call_with_photo_message">Apel primit important cu fotografie și mesaj</string>
-  <string name="important_notification_incoming_call_with_photo_location">Apel primit important cu fotografie și locație</string>
-  <string name="important_notification_incoming_call_with_message_location">Apel primit important cu mesaj și locație</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Apel primit important cu poză, mesaj și locație</string>
-  <string name="important_notification_incoming_call_attachments">Apel primit important cu atașamente</string>
   <string name="notification_incoming_work_call">Apel de serviciu primit</string>
   <string name="notification_incoming_spam_call">Un apel primit posibil spam</string>
   <string name="notification_requesting_video_call">Solicitare de trecere la apel video</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Nu s-a putut comuta la rețeaua Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Apelul video continuă prin rețeaua mobilă. Se pot aplica tarife standard pentru date.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Nu mai afișa acest mesaj</string>
-  <string name="bubble_return_to_call">Înapoi la apel</string>
-  <string name="rtt_request_dialog_title">Vă conectați la apelul TTR?</string>
+    <string name="rtt_request_dialog_title">Vă conectați la apelul TTR?</string>
   <string name="rtt_request_dialog_details">%1$s vrea să folosească mesajele text în timpul apelului vocal.</string>
   <string name="rtt_request_dialog_more_information">TTR oferă asistență apelanților fără auz, cu deficiențe de auz, care au dizabilități de vorbire sau care au nevoie de mai mult decât vocea.</string>
   <string name="rtt_button_decline_request">Nu</string>
diff --git a/java/com/android/incallui/res/values-ru/cm_strings.xml b/java/com/android/incallui/res/values-ru/cm_strings.xml
new file mode 100644
index 0000000..71d8391
--- /dev/null
+++ b/java/com/android/incallui/res/values-ru/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Не удалось начать запись разговора</string>
+    <string name="call_recording_file_location">Запись разговора сохранена в <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Запись разговора</string>
+    <string name="onscreenCallRecordingText">Запись разговора - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Остановить запись</string>
+    <string name="recording_warning_title">Включить запись разговоров?</string>
+    <string name="recording_warning_text">Уведомление: вы несете ответственность за соблюдение любых законов, постановлений и правил, которые применяются к функции записи разговоров, а также к использованию или распространению этих записей.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-ru/strings.xml b/java/com/android/incallui/res/values-ru/strings.xml
index 41a5cb0..9b7a1b5 100644
--- a/java/com/android/incallui/res/values-ru/strings.xml
+++ b/java/com/android/incallui/res/values-ru/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Входящий вызов</string>
   <string name="notification_incoming_video_call">Входящий видеовызов</string>
   <string name="notification_incoming_call_mutli_sim">Входящий вызов, SIM-карта %1$s</string>
-  <string name="notification_incoming_call_with_photo">Входящий вызов с фотографией</string>
-  <string name="notification_incoming_call_with_message">Входящий вызов с сообщением</string>
-  <string name="notification_incoming_call_with_location">Входящий вызов с геоданными</string>
-  <string name="notification_incoming_call_with_photo_message">Входящий вызов с фотографией и сообщением</string>
-  <string name="notification_incoming_call_with_photo_location">Входящий вызов с фотографией и геоданными</string>
-  <string name="notification_incoming_call_with_message_location">Входящий вызов с сообщением и геоданными</string>
-  <string name="notification_incoming_call_with_photo_message_location">Входящий вызов с фото, сообщением и геоданными</string>
-  <string name="notification_incoming_call_attachments">Входящий вызов с прикрепленными файлами</string>
-  <string name="important_notification_incoming_call">Важный входящий вызов</string>
-  <string name="important_notification_incoming_call_with_photo">Важный входящий вызов с фотографией</string>
-  <string name="important_notification_incoming_call_with_message">Важный входящий вызов с сообщением</string>
-  <string name="important_notification_incoming_call_with_location">Важный входящий вызов с геоданными</string>
-  <string name="important_notification_incoming_call_with_photo_message">Важный входящий вызов с фотографией и сообщением</string>
-  <string name="important_notification_incoming_call_with_photo_location">Важный входящий вызов с фотографией и геоданными</string>
-  <string name="important_notification_incoming_call_with_message_location">Важный входящий вызов с сообщением и геоданными</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Важный вызов с фото, сообщением и геоданными</string>
-  <string name="important_notification_incoming_call_attachments">Важный входящий вызов с прикрепленными файлами</string>
   <string name="notification_incoming_work_call">Входящий звонок (работа)</string>
   <string name="notification_incoming_spam_call">Входящий вызов: подозрение на спам</string>
   <string name="notification_requesting_video_call">Входящий видеовызов</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Не удалось переключиться на сеть Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Видеовызов будет выполняться по мобильной сети. Может взиматься стандартная плата за передачу данных.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Больше не показывать</string>
-  <string name="bubble_return_to_call">Вернуться к вызову</string>
-  <string name="rtt_request_dialog_title">Присоединиться к вызову RTT?</string>
+    <string name="rtt_request_dialog_title">Присоединиться к вызову RTT?</string>
   <string name="rtt_request_dialog_details">%1$s хочет использовать обмен сообщениями в рамках голосового вызова.</string>
   <string name="rtt_request_dialog_more_information">Функция RTT предназначена для пользователей с нарушениями слуха и речи.</string>
   <string name="rtt_button_decline_request">Нет</string>
diff --git a/java/com/android/incallui/res/values-si/strings.xml b/java/com/android/incallui/res/values-si/strings.xml
index cca5bad..cd5d7e2 100644
--- a/java/com/android/incallui/res/values-si/strings.xml
+++ b/java/com/android/incallui/res/values-si/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">එන ඇමතුම</string>
   <string name="notification_incoming_video_call">පැමිණෙන වීඩියෝ ඇමතුම</string>
   <string name="notification_incoming_call_mutli_sim">%1$s හරහා එන ඇමතුම</string>
-  <string name="notification_incoming_call_with_photo">ඡායාරූපය සමග එන ඇමතුම</string>
-  <string name="notification_incoming_call_with_message">පණිවිඩය සමග එන ඇමතුම</string>
-  <string name="notification_incoming_call_with_location">ස්ථානය සමග එන ඇමතුම</string>
-  <string name="notification_incoming_call_with_photo_message">ඡායාරූපය සහ පණිවිඩය සමග එන ඇමතුම</string>
-  <string name="notification_incoming_call_with_photo_location">ඡායාරූපය සහ ස්ථානය සමග එන ඇමතුම</string>
-  <string name="notification_incoming_call_with_message_location">පණිවිඩය සහ ස්ථානය සමග එන ඇමතුම</string>
-  <string name="notification_incoming_call_with_photo_message_location">ඡායාරූපය, පණිවිඩය සහ ස්ථානය සමග එන ඇමතුම</string>
-  <string name="notification_incoming_call_attachments">ඇමුණුම් සමග එන ඇමතුම</string>
-  <string name="important_notification_incoming_call">වැදගත් එන ඇමතුම</string>
-  <string name="important_notification_incoming_call_with_photo">ඡායාරූපය සමග වැදගත් එන ඇමතුම</string>
-  <string name="important_notification_incoming_call_with_message">පණිවිඩය සමග වැදගත් එන ඇමතුම</string>
-  <string name="important_notification_incoming_call_with_location">ස්ථානය සමග වැදගත් එන ඇමතුම</string>
-  <string name="important_notification_incoming_call_with_photo_message">ඡායාරූපය සහ පණිවිඩය සමග වැදගත් එන ඇමතුම</string>
-  <string name="important_notification_incoming_call_with_photo_location">ඡායාරූපය සහ ස්ථානය සමග වැදගත් එන ඇමතුම</string>
-  <string name="important_notification_incoming_call_with_message_location">පණිවිඩය සහ ස්ථානය සමග වැදගත් එන ඇමතුම</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">ඡායාරූපය, පණිවිඩය සහ ස්ථානය සමග වැදගත් එන ඇමතුම</string>
-  <string name="important_notification_incoming_call_attachments">ඇමුණුම් සමග වැදගත් එන ඇමතුම</string>
   <string name="notification_incoming_work_call">පැමිණෙන කාර්යාල ඇමතුම</string>
   <string name="notification_incoming_spam_call">එන සැකසහිත අයාචිත තැපැල් ඇමතුම</string>
   <string name="notification_requesting_video_call">පැමිණෙන වීඩියෝ ඉල්ලීම</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi ජාලය වෙත මාරු කිරීමට නොහැකි විය</string>
   <string name="video_call_lte_to_wifi_failed_message">වීඩියෝ ඇමතුම ජංගම ජාලයේ පවතිනු ඇත. සම්මත දත්ත ගාස්තු අදාළ විය හැකිය.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">නැවත මෙය නොපෙන්වන්න</string>
-  <string name="bubble_return_to_call">ආපසු ඇමතුමට</string>
-  <string name="rtt_request_dialog_title">RTT ඇමතුම හා එක් වන්නද?</string>
+    <string name="rtt_request_dialog_title">RTT ඇමතුම හා එක් වන්නද?</string>
   <string name="rtt_request_dialog_details">%1$s හට ඔබේ හඬ ඇමතුම තුළ පණිවිඩ යැවීම භාවිත කිරීමට අවශ්‍යය.</string>
   <string name="rtt_request_dialog_more_information">බිහිරි, ශ්‍රවණ දුර්වලතා, කථන ආබාධයක් හෝ හඬට වඩා වැඩි දෙයක් අවශ්‍ය අමතන්නන්ට RTT සහාය දක්වයි.</string>
   <string name="rtt_button_decline_request">එපා ස්තූතියි</string>
diff --git a/java/com/android/incallui/res/values-sk/cm_strings.xml b/java/com/android/incallui/res/values-sk/cm_strings.xml
new file mode 100644
index 0000000..b7ad3dc
--- /dev/null
+++ b/java/com/android/incallui/res/values-sk/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Nepodarilo sa spustiť nahrávanie hovoru</string>
+    <string name="call_recording_file_location">Nahrávka hovoru bola uložená do <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Nahrať hovor</string>
+    <string name="onscreenCallRecordingText">Nahrávanie hovoru - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Zastaviť nahrávanie</string>
+    <string name="recording_warning_title">Povoliť nahrávanie hovorov?</string>
+    <string name="recording_warning_text">Upozornenie: Ste zodpovedný za dodržiavanie všetkých zákonov, predpisov a pravidiel, ktoré sa vzťahujú na nahrávanie hovorov a použitie alebo distribúciu týchto nahrávok.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-sk/strings.xml b/java/com/android/incallui/res/values-sk/strings.xml
index 8848193..23ee5bb 100644
--- a/java/com/android/incallui/res/values-sk/strings.xml
+++ b/java/com/android/incallui/res/values-sk/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Prichádzajúci hovor</string>
   <string name="notification_incoming_video_call">Prichádzajúci videohovor</string>
   <string name="notification_incoming_call_mutli_sim">Prichádzajúci hovor cez %1$s</string>
-  <string name="notification_incoming_call_with_photo">Prichádzajúci hovor s fotkou</string>
-  <string name="notification_incoming_call_with_message">Prichádzajúci hovor so správou</string>
-  <string name="notification_incoming_call_with_location">Prichádzajúci hovor s polohou</string>
-  <string name="notification_incoming_call_with_photo_message">Prichádzajúci hovor s fotkou a správou</string>
-  <string name="notification_incoming_call_with_photo_location">Prichádzajúci hovor s fotkou a polohou</string>
-  <string name="notification_incoming_call_with_message_location">Prichádzajúci hovor so správou a polohou</string>
-  <string name="notification_incoming_call_with_photo_message_location">Prichádzajúci hovor s fotkou, správou a polohou</string>
-  <string name="notification_incoming_call_attachments">Prichádzajúci hovor s prílohami</string>
-  <string name="important_notification_incoming_call">Dôležitý prichádzajúci hovor</string>
-  <string name="important_notification_incoming_call_with_photo">Dôležitý prichádzajúci hovor s fotkou</string>
-  <string name="important_notification_incoming_call_with_message">Dôležitý prichádzajúci hovor so správou</string>
-  <string name="important_notification_incoming_call_with_location">Dôležitý prichádzajúci hovor s polohou</string>
-  <string name="important_notification_incoming_call_with_photo_message">Dôležitý prichádzajúci hovor s fotkou a správou</string>
-  <string name="important_notification_incoming_call_with_photo_location">Dôležitý prichádzajúci hovor s fotkou a polohou</string>
-  <string name="important_notification_incoming_call_with_message_location">Dôležitý prichádzajúci hovor so správou a polohou</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Dôležitý prich. hovor s fotkou, správou a polohou</string>
-  <string name="important_notification_incoming_call_attachments">Dôležitý prichádzajúci hovor s prílohami</string>
   <string name="notification_incoming_work_call">Prichádzajúci pracovný hovor</string>
   <string name="notification_incoming_spam_call">Prichádzajúci hovor, pri ktorom je podozrenie, že ide o spam</string>
   <string name="notification_requesting_video_call">Prichádzajúca žiadosť o video</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Nepodarilo sa prepnúť na sieť Wi‑Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Videohovor bude pokračovať v mobilnej sieti. Môžu sa účtovať štandardné poplatky za prenos dát.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Informácie nabudúce nezobrazovať</string>
-  <string name="bubble_return_to_call">Späť na hovor</string>
-  <string name="rtt_request_dialog_title">Chcete sa pripojiť k hovoru s okamžitým textom?</string>
+    <string name="rtt_request_dialog_title">Chcete sa pripojiť k hovoru s okamžitým textom?</string>
   <string name="rtt_request_dialog_details">%1$s chce pri hlasovom hovore používať okamžitý text.</string>
   <string name="rtt_request_dialog_more_information">Okamžitý text pomáha volajúcim, ktorí nepočujú, majú problémy so sluchom, rečovú poruchu alebo potrebujú viac ako samotný hlas.</string>
   <string name="rtt_button_decline_request">Nie, ďakujem</string>
diff --git a/java/com/android/incallui/res/values-sl/cm_strings.xml b/java/com/android/incallui/res/values-sl/cm_strings.xml
new file mode 100644
index 0000000..a5157de
--- /dev/null
+++ b/java/com/android/incallui/res/values-sl/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Začetek snemanja klica je spodletel</string>
+    <string name="call_recording_file_location">Posnetek klica shranjen v <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Snemaj klic</string>
+    <string name="onscreenCallRecordingText">Snemanje klica - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Ustavi snemanje</string>
+    <string name="recording_warning_title">Omogoči snemanje klicev?</string>
+    <string name="recording_warning_text">Obvestilo: Odgovorni ste za skladnost z zakoni, predpisi in pravili, ki veljajo za uporabo funkcionalnosti snemanja klicev in uporabo ali distribucijo teh posnetkov.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-sl/strings.xml b/java/com/android/incallui/res/values-sl/strings.xml
index fa9986c..297ec2a 100644
--- a/java/com/android/incallui/res/values-sl/strings.xml
+++ b/java/com/android/incallui/res/values-sl/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Dohodni klic</string>
   <string name="notification_incoming_video_call">Dohodni videoklic</string>
   <string name="notification_incoming_call_mutli_sim">Dohodni klic prek kartice SIM %1$s</string>
-  <string name="notification_incoming_call_with_photo">Dohodni klic s fotografijo</string>
-  <string name="notification_incoming_call_with_message">Dohodni klic s sporočilom</string>
-  <string name="notification_incoming_call_with_location">Dohodni klic z lokacijo</string>
-  <string name="notification_incoming_call_with_photo_message">Dohodni klic s fotografijo in sporočilom</string>
-  <string name="notification_incoming_call_with_photo_location">Dohodni klic s fotografijo in lokacijo</string>
-  <string name="notification_incoming_call_with_message_location">Dohodni klic s sporočilom in lokacijo</string>
-  <string name="notification_incoming_call_with_photo_message_location">Dohodni klic s fotografijo, sporočilom in lokacijo</string>
-  <string name="notification_incoming_call_attachments">Dohodni klic s prilogami</string>
-  <string name="important_notification_incoming_call">Pomemben dohodni klic</string>
-  <string name="important_notification_incoming_call_with_photo">Pomemben dohodni klic s fotografijo</string>
-  <string name="important_notification_incoming_call_with_message">Pomemben dohodni klic s sporočilom</string>
-  <string name="important_notification_incoming_call_with_location">Pomemben dohodni klic z lokacijo</string>
-  <string name="important_notification_incoming_call_with_photo_message">Pomemben dohodni klic s fotografijo in sporočilom</string>
-  <string name="important_notification_incoming_call_with_photo_location">Pomemben dohodni klic s fotografijo in lokacijo</string>
-  <string name="important_notification_incoming_call_with_message_location">Pomemben dohodni klic s sporočilom in lokacijo</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Pomemben klic s fotografijo, sporočilom, lokacijo</string>
-  <string name="important_notification_incoming_call_attachments">Pomemben dohodni klic s prilogami</string>
   <string name="notification_incoming_work_call">Dohodni delovni klic</string>
   <string name="notification_incoming_spam_call">Domnevno neželeni dohodni klic</string>
   <string name="notification_requesting_video_call">Dohodna zahteva za video</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Ni bilo mogoče preklopiti v omrežje Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Videoklic bo še naprej potekal v mobilnem omrežju. Morda boste morali plačati standardne stroške prenosa podatkov.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Tega ne kaži več</string>
-  <string name="bubble_return_to_call">Nazaj na klic</string>
-  <string name="rtt_request_dialog_title">Se želite pridružiti klicu RTT?</string>
+    <string name="rtt_request_dialog_title">Se želite pridružiti klicu RTT?</string>
   <string name="rtt_request_dialog_details">%1$s želi uporabljati sporočila v glasovnem klicu.</string>
   <string name="rtt_request_dialog_more_information">Funkcija RTT pomaga klicateljem, ki so gluhi, naglušni, imajo govorno motnjo ali potrebujejo več kot samo glas.</string>
   <string name="rtt_button_decline_request">Ne, hvala</string>
diff --git a/java/com/android/incallui/res/values-sq/cm_strings.xml b/java/com/android/incallui/res/values-sq/cm_strings.xml
new file mode 100644
index 0000000..b561d77
--- /dev/null
+++ b/java/com/android/incallui/res/values-sq/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Dështoi të fillojë inçizimin e telefonatës</string>
+    <string name="call_recording_file_location">Inçizimi u ruajt në <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Inçizo telefonatën</string>
+    <string name="onscreenCallRecordingText">Duke inçizuar telefonatën - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Ndalo inçizimin</string>
+    <string name="recording_warning_title">Aktivizo inçizimin e telefonatave?</string>
+    <string name="recording_warning_text">Lajmërim: Ju jeni përgjegjës konfort çdo ligji apo rregull që ka lidhje me regjistrimin e telefonatave si dhe me përdorimin apo shpërndarjen e këtyre telefonatave.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-sq/strings.xml b/java/com/android/incallui/res/values-sq/strings.xml
index e4440db..6368996 100644
--- a/java/com/android/incallui/res/values-sq/strings.xml
+++ b/java/com/android/incallui/res/values-sq/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Telefonatë hyrëse</string>
   <string name="notification_incoming_video_call">Telefonatë me video hyrëse</string>
   <string name="notification_incoming_call_mutli_sim">Telefonatë hyrëse nëpërmjet %1$s</string>
-  <string name="notification_incoming_call_with_photo">Telefonatë hyrëse me fotografi</string>
-  <string name="notification_incoming_call_with_message">Telefonatë hyrëse me mesazh</string>
-  <string name="notification_incoming_call_with_location">Telefonatë hyrëse me vendndodhje</string>
-  <string name="notification_incoming_call_with_photo_message">Telefonatë hyrëse me fotografi dhe mesazh</string>
-  <string name="notification_incoming_call_with_photo_location">Telefonatë hyrëse me fotografi dhe vendndodhje</string>
-  <string name="notification_incoming_call_with_message_location">Telefonatë hyrëse me mesazh dhe vendndodhje</string>
-  <string name="notification_incoming_call_with_photo_message_location">Telefonatë me fotografi, mesazh dhe vendndodhje</string>
-  <string name="notification_incoming_call_attachments">Telefonatë hyrëse me bashkëngjitje</string>
-  <string name="important_notification_incoming_call">Telefonatë hyrëse e rëndësishme</string>
-  <string name="important_notification_incoming_call_with_photo">Telefonatë hyrëse e rëndësishme me fotografi</string>
-  <string name="important_notification_incoming_call_with_message">Telefonatë hyrëse e rëndësishme me mesazh</string>
-  <string name="important_notification_incoming_call_with_location">Telefonatë hyrëse e rëndësishme me vendndodhje</string>
-  <string name="important_notification_incoming_call_with_photo_message">Telefonatë e rëndësishme me fotografi dhe mesazh</string>
-  <string name="important_notification_incoming_call_with_photo_location">Telefonatë e rëndësishme me foto dhe vendndodhje</string>
-  <string name="important_notification_incoming_call_with_message_location">Telefonatë e rëndësishme me mesazh e vendndodhje</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Tel. e rëndësishme me foto, mesazh e vendndodhje</string>
-  <string name="important_notification_incoming_call_attachments">Telefonatë hyrëse e rëndësishme me bashkëngjitje</string>
   <string name="notification_incoming_work_call">Telefonatë pune hyrëse</string>
   <string name="notification_incoming_spam_call">Telefonatë e dyshuar si e padëshiruar</string>
   <string name="notification_requesting_video_call">Kërkesë për video hyrëse</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Nuk mund të kalonte në rrjetin Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Telefonata me video do të mbetet në rrjetin celular. Mund të zbatohen tarifat standarde të të dhënave.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Mos e shfaq më këtë</string>
-  <string name="bubble_return_to_call">Kthehu te telefonata</string>
-  <string name="rtt_request_dialog_title">Do të bashkohesh në telefonatën RTT?</string>
+    <string name="rtt_request_dialog_title">Do të bashkohesh në telefonatën RTT?</string>
   <string name="rtt_request_dialog_details">%1$s dëshiron të përdorë mesazhet brenda telefonatës zanore.</string>
   <string name="rtt_request_dialog_more_information">Funksioni RTT ndihmon telefonuesit që janë të shurdhër, kanë vështirësi dëgjimi, kanë një aftësi të kufizuar të të folurit ose që kanë nevojë për më shumë se thjesht zërin.</string>
   <string name="rtt_button_decline_request">Jo</string>
diff --git a/java/com/android/incallui/res/values-sr/cm_strings.xml b/java/com/android/incallui/res/values-sr/cm_strings.xml
new file mode 100644
index 0000000..3ce89b0
--- /dev/null
+++ b/java/com/android/incallui/res/values-sr/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Неуспешно започињање снимања позива</string>
+    <string name="call_recording_file_location">Снимак позива сачуван у <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Сними позив</string>
+    <string name="onscreenCallRecordingText">Снимање позива - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Заустави снимање</string>
+    <string name="recording_warning_title">Омогући снимање позива?</string>
+    <string name="recording_warning_text">Белешка: Ви сте одговорни за сагласност са законима, регулацијама и правилима који се примењују за коришћење функције снимања позива и дистрибуције тих снимака.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-sr/strings.xml b/java/com/android/incallui/res/values-sr/strings.xml
index 5f81faf..9fb98d1 100644
--- a/java/com/android/incallui/res/values-sr/strings.xml
+++ b/java/com/android/incallui/res/values-sr/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Долазни позив</string>
   <string name="notification_incoming_video_call">Долазни видео позив</string>
   <string name="notification_incoming_call_mutli_sim">Долазни позив преко %1$s</string>
-  <string name="notification_incoming_call_with_photo">Долазни позив са сликом</string>
-  <string name="notification_incoming_call_with_message">Долазни позив са поруком</string>
-  <string name="notification_incoming_call_with_location">Долазни позив са локацијом</string>
-  <string name="notification_incoming_call_with_photo_message">Долазни позив са сликом и поруком</string>
-  <string name="notification_incoming_call_with_photo_location">Долазни позив са сликом и локацијом</string>
-  <string name="notification_incoming_call_with_message_location">Долазни позив са поруком и локацијом</string>
-  <string name="notification_incoming_call_with_photo_message_location">Долазни позив са сликом, поруком и локацијом</string>
-  <string name="notification_incoming_call_attachments">Долазни позив са прилозима</string>
-  <string name="important_notification_incoming_call">Важан долазни позив</string>
-  <string name="important_notification_incoming_call_with_photo">Важан долазни позив са сликом</string>
-  <string name="important_notification_incoming_call_with_message">Важан долазни позив са поруком</string>
-  <string name="important_notification_incoming_call_with_location">Важан долазни позив са локацијом</string>
-  <string name="important_notification_incoming_call_with_photo_message">Важан долазни позив са сликом и поруком</string>
-  <string name="important_notification_incoming_call_with_photo_location">Важан долазни позив са сликом и локацијом</string>
-  <string name="important_notification_incoming_call_with_message_location">Важан долазни позив са поруком и локацијом</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Важан долазни позив са сликом, поруком и локацијом</string>
-  <string name="important_notification_incoming_call_attachments">Важан долазни позив са прилозима</string>
   <string name="notification_incoming_work_call">Долазни позив за Work</string>
   <string name="notification_incoming_spam_call">Сумња на непожељан долазни позив</string>
   <string name="notification_requesting_video_call">Захтев за долазни видео позив</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Пребацивање на Wi‑Fi мрежу није успело</string>
   <string name="video_call_lte_to_wifi_failed_message">Видео позив ће остати на мобилној мрежи. Важе стандардне накнаде за пренос података.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Не приказуј ово поново</string>
-  <string name="bubble_return_to_call">Назад у позив</string>
-  <string name="rtt_request_dialog_title">Желите ли да уђете у RTT позив?</string>
+    <string name="rtt_request_dialog_title">Желите ли да уђете у RTT позив?</string>
   <string name="rtt_request_dialog_details">%1$s жели да користи размену порука у аудио позиву.</string>
   <string name="rtt_request_dialog_more_information">Текст у реалном времену (RTT) помаже позиваоцима који су глуви, слабо чују, имају тешкоће у говору или којима није довољан само глас.</string>
   <string name="rtt_button_decline_request">Не, хвала</string>
diff --git a/java/com/android/incallui/res/values-sv/cm_strings.xml b/java/com/android/incallui/res/values-sv/cm_strings.xml
new file mode 100644
index 0000000..00a71a9
--- /dev/null
+++ b/java/com/android/incallui/res/values-sv/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Det gick inte att starta samtalsinspelningen</string>
+    <string name="call_recording_file_location">Sparade samtalsinspelning till <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Spela in samtalet</string>
+    <string name="onscreenCallRecordingText">Spelar in samtalet - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Stoppa inspelningen</string>
+    <string name="recording_warning_title">Aktivera samtalsinspelning?</string>
+    <string name="recording_warning_text">Observera: Du är ansvarig för att följa alla lagar och regler som gäller vid samtalsinspelning samt användning och distribution av inspelningarna.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-sv/strings.xml b/java/com/android/incallui/res/values-sv/strings.xml
index ff46b14..913efb8 100644
--- a/java/com/android/incallui/res/values-sv/strings.xml
+++ b/java/com/android/incallui/res/values-sv/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Inkommande samtal</string>
   <string name="notification_incoming_video_call">Inkommande videosamtal</string>
   <string name="notification_incoming_call_mutli_sim">Inkommande samtal på %1$s</string>
-  <string name="notification_incoming_call_with_photo">Inkommande samtal med foto</string>
-  <string name="notification_incoming_call_with_message">Inkommande samtal med meddelande</string>
-  <string name="notification_incoming_call_with_location">Inkommande samtal med plats</string>
-  <string name="notification_incoming_call_with_photo_message">Inkommande samtal med foto och meddelande</string>
-  <string name="notification_incoming_call_with_photo_location">Inkommande samtal med foto och plats</string>
-  <string name="notification_incoming_call_with_message_location">Inkommande samtal med meddelande och plats</string>
-  <string name="notification_incoming_call_with_photo_message_location">Inkommande samtal med foto, meddelande och plats</string>
-  <string name="notification_incoming_call_attachments">Inkommande samtal med bilagor</string>
-  <string name="important_notification_incoming_call">Viktigt inkommande samtal</string>
-  <string name="important_notification_incoming_call_with_photo">Viktigt inkommande samtal med foto</string>
-  <string name="important_notification_incoming_call_with_message">Viktigt inkommande samtal med meddelande</string>
-  <string name="important_notification_incoming_call_with_location">Viktigt inkommande samtal med plats</string>
-  <string name="important_notification_incoming_call_with_photo_message">Viktigt inkommande samtal med foto och meddelande</string>
-  <string name="important_notification_incoming_call_with_photo_location">Viktigt inkommande samtal med foto och plats</string>
-  <string name="important_notification_incoming_call_with_message_location">Viktigt inkommande samtal med meddelande och plats</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Viktigt inkommande samtal med foto, meddelande och plats</string>
-  <string name="important_notification_incoming_call_attachments">Viktigt inkommande samtal med bilagor</string>
   <string name="notification_incoming_work_call">Inkommande jobbsamtal</string>
   <string name="notification_incoming_spam_call">Inkommande misstänkt spamsamtal</string>
   <string name="notification_requesting_video_call">Inkommande begäran om videosamtal</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Det gick inte att växla till Wi-Fi-nätverk</string>
   <string name="video_call_lte_to_wifi_failed_message">Videosamtalet förblir i mobilnätverket. Vanliga dataavgifter kan tillkomma.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Visa inte detta igen</string>
-  <string name="bubble_return_to_call">Tillbaka till samtal</string>
-  <string name="rtt_request_dialog_title">Gå med i RTT-samtal?</string>
+    <string name="rtt_request_dialog_title">Gå med i RTT-samtal?</string>
   <string name="rtt_request_dialog_details">%1$s vill använda meddelanden i ditt röstsamtal.</string>
   <string name="rtt_request_dialog_more_information">RTT hjälper döva, hörselskadade, personer med talsvårigheter eller behöver mer än endast röst.</string>
   <string name="rtt_button_decline_request">Nej tack</string>
diff --git a/java/com/android/incallui/res/values-sw/strings.xml b/java/com/android/incallui/res/values-sw/strings.xml
index c8190b5..e3d02a4 100644
--- a/java/com/android/incallui/res/values-sw/strings.xml
+++ b/java/com/android/incallui/res/values-sw/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Unapigiwa simu</string>
   <string name="notification_incoming_video_call">Hangout ya Video inayoingia</string>
   <string name="notification_incoming_call_mutli_sim">Simu inayoingia kupitia %1$s</string>
-  <string name="notification_incoming_call_with_photo">Simu inayoingia yenye picha</string>
-  <string name="notification_incoming_call_with_message">Simu inayoingia yenye ujumbe</string>
-  <string name="notification_incoming_call_with_location">Simu inayoingia yenye mahali</string>
-  <string name="notification_incoming_call_with_photo_message">Simu inayoingia yenye picha na ujumbe</string>
-  <string name="notification_incoming_call_with_photo_location">Simu inayoingia yenye picha na mahali</string>
-  <string name="notification_incoming_call_with_message_location">Simu inayoingia yenye ujumbe na mahali</string>
-  <string name="notification_incoming_call_with_photo_message_location">Simu inayoingia yenye picha, ujumbe na mahali</string>
-  <string name="notification_incoming_call_attachments">Simu inayoingia yenye viambatisho</string>
-  <string name="important_notification_incoming_call">Simu muhimu inayoingia</string>
-  <string name="important_notification_incoming_call_with_photo">Simu muhimu inayoingia yenye picha</string>
-  <string name="important_notification_incoming_call_with_message">Simu muhimu inayoingia yenye ujumbe</string>
-  <string name="important_notification_incoming_call_with_location">Simu muhimu inayoingia yenye mahali</string>
-  <string name="important_notification_incoming_call_with_photo_message">Simu muhimu inayoingia yenye picha na ujumbe</string>
-  <string name="important_notification_incoming_call_with_photo_location">Simu muhimu inayoingia yenye picha na mahali</string>
-  <string name="important_notification_incoming_call_with_message_location">Simu muhimu inayoingia yenye ujumbe na mahali</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Simu muhimu yenye picha, ujumbe na mahali</string>
-  <string name="important_notification_incoming_call_attachments">Simu muhimu inayoingia yenye viambatisho</string>
   <string name="notification_incoming_work_call">Simu ya kazi inayoingia</string>
   <string name="notification_incoming_spam_call">Simu inayoingia inashukiwa kuwa taka</string>
   <string name="notification_requesting_video_call">Ombi  linaloingia la video</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Imeshindwa kuhamia mtandao wa Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Hangout ya video itaendelea kwenye mtandao wa simu. Huenda ukatozwa gharama za kawaida za data.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Usiionyeshe tena</string>
-  <string name="bubble_return_to_call">Rudi nyuma upige simu</string>
-  <string name="rtt_request_dialog_title">Je, ungependa kujiunga kwenye simu ya RTT?</string>
+    <string name="rtt_request_dialog_title">Je, ungependa kujiunga kwenye simu ya RTT?</string>
   <string name="rtt_request_dialog_details">%1$s anataka kutuma ujumbe wakati simu yako ya sauti inaendelea.</string>
   <string name="rtt_request_dialog_more_information">RTT huwasaidia wapigaji simu ambao ni viziwi, wasioweza kuskia vyema, wenye matatizo ya kuzungumza au wanaohitaji kufanya zaidi ya kuzungumza tu.</string>
   <string name="rtt_button_decline_request">Hapana, asante</string>
diff --git a/java/com/android/incallui/res/values-ta/strings.xml b/java/com/android/incallui/res/values-ta/strings.xml
index ddd364e..0177638 100644
--- a/java/com/android/incallui/res/values-ta/strings.xml
+++ b/java/com/android/incallui/res/values-ta/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">உள்வரும் அழைப்பு</string>
   <string name="notification_incoming_video_call">உள்வரும் வீடியோ அழைப்பு</string>
   <string name="notification_incoming_call_mutli_sim">%1$s மூலம் உள்வரும் அழைப்பு</string>
-  <string name="notification_incoming_call_with_photo">படத்துடன் உள்வரும் அழைப்பு</string>
-  <string name="notification_incoming_call_with_message">செய்தியுடன் உள்வரும் அழைப்பு</string>
-  <string name="notification_incoming_call_with_location">இருப்பிடத் தகவலுடன் உள்வரும் அழைப்பு</string>
-  <string name="notification_incoming_call_with_photo_message">படம், செய்தியுடன் உள்வரும் அழைப்பு</string>
-  <string name="notification_incoming_call_with_photo_location">படம், இருப்பிடத் தகவலுடன் உள்வரும் அழைப்பு</string>
-  <string name="notification_incoming_call_with_message_location">செய்தி, இருப்பிடத் தகவலுடன் உள்வரும் அழைப்பு</string>
-  <string name="notification_incoming_call_with_photo_message_location">படம், செய்தி, இருப்பிடத் தகவலுடன் உள்வரும் அழைப்பு</string>
-  <string name="notification_incoming_call_attachments">இணைப்புகளுடன் உள்வரும் அழைப்பு</string>
-  <string name="important_notification_incoming_call">உள்வரும் முக்கியமான அழைப்பு</string>
-  <string name="important_notification_incoming_call_with_photo">படத்துடன் உள்வரும் முக்கியமான அழைப்பு</string>
-  <string name="important_notification_incoming_call_with_message">செய்தியுடன் உள்வரும் முக்கியமான அழைப்பு</string>
-  <string name="important_notification_incoming_call_with_location">இருப்பிடத் தகவலுடன் உள்வரும் முக்கியமான அழைப்பு</string>
-  <string name="important_notification_incoming_call_with_photo_message">படம், செய்தியுடன் உள்வரும் முக்கியமான அழைப்பு</string>
-  <string name="important_notification_incoming_call_with_photo_location">படம், இருப்பிடத்துடன் உள்வரும் முக்கியமான அழைப்பு</string>
-  <string name="important_notification_incoming_call_with_message_location">செய்தி, இருப்பிடத்துடன் உள்வரும் முக்கியமான அழைப்பு</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">படம், செய்தி, இருப்பிடத்துடன் உள்வரும் முக்கியமான அழைப்பு</string>
-  <string name="important_notification_incoming_call_attachments">இணைப்புகளுடன் உள்வரும் முக்கியமான அழைப்பு</string>
   <string name="notification_incoming_work_call">உள்வரும் அழைப்பு (பணி)</string>
   <string name="notification_incoming_spam_call">உள்வரும் சந்தேகத்திற்குரிய ஸ்பேம் அழைப்பு</string>
   <string name="notification_requesting_video_call">உள்வரும் வீடியோ கோரிக்கை</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">வைஃபை நெட்வொர்க்கிற்கு மாற முடியவில்லை</string>
   <string name="video_call_lte_to_wifi_failed_message">மொபைல் நெட்வொர்க்கைப் பயன்படுத்தி தொடர்ந்து வீடியோ அழைப்பைச் செய்யலாம். வழக்கமான தரவுக் பேமெண்ட்கள் விதிக்கப்படக்கூடும்.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">இதை மீண்டும் காட்டாதே</string>
-  <string name="bubble_return_to_call">அழைப்பிற்குச் செல்</string>
-  <string name="rtt_request_dialog_title">RTT அழைப்பில் சேர்க்கவா?</string>
+    <string name="rtt_request_dialog_title">RTT அழைப்பில் சேர்க்கவா?</string>
   <string name="rtt_request_dialog_details">உங்கள் குரல் அழைப்பிற்குள் செய்தியிடலைப் பயன்படுத்த, %1$s விரும்புகிறார்.</string>
   <string name="rtt_request_dialog_more_information">காது கேட்காதவர்கள், கேட்பதில் பிரச்சனை உள்ளவர்கள், பேச முடியாதவர்கள் அல்லது குரலுடன் கூடுதல் சேவை தேவைப்படும் அழைப்பாளர்களுக்கு RTT உதவுகிறது.</string>
   <string name="rtt_button_decline_request">வேண்டாம்</string>
diff --git a/java/com/android/incallui/res/values-te/strings.xml b/java/com/android/incallui/res/values-te/strings.xml
index 5e261dc..7089002 100644
--- a/java/com/android/incallui/res/values-te/strings.xml
+++ b/java/com/android/incallui/res/values-te/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">ఇన్‌కమింగ్ కాల్</string>
   <string name="notification_incoming_video_call">ఇన్‌కమింగ్ వీడియో కాల్</string>
   <string name="notification_incoming_call_mutli_sim">%1$s ద్వారా కాల్ వస్తోంది</string>
-  <string name="notification_incoming_call_with_photo">ఫోటోతో ఇన్‌కమింగ్ కాల్</string>
-  <string name="notification_incoming_call_with_message">సందేశంతో ఇన్‌కమింగ్ కాల్</string>
-  <string name="notification_incoming_call_with_location">స్థానంతో ఇన్‌కమింగ్ కాల్</string>
-  <string name="notification_incoming_call_with_photo_message">ఫోటో మరియు సందేశంతో ఇన్‌కమింగ్ కాల్</string>
-  <string name="notification_incoming_call_with_photo_location">ఫోటో మరియు స్థానంతో ఇన్‌కమింగ్ కాల్</string>
-  <string name="notification_incoming_call_with_message_location">సందేశం మరియు స్థానంతో ఇన్‌కమింగ్ కాల్</string>
-  <string name="notification_incoming_call_with_photo_message_location">ఫోటో, సందేశం మరియు స్థానంతో ఇన్‌కమింగ్ కాల్</string>
-  <string name="notification_incoming_call_attachments">జోడింపులతో ఇన్‌కమింగ్ కాల్</string>
-  <string name="important_notification_incoming_call">ముఖ్యమైన ఇన్‌కమింగ్ కాల్</string>
-  <string name="important_notification_incoming_call_with_photo">ఫోటోతో ముఖ్యమైన ఇన్‌కమింగ్ కాల్</string>
-  <string name="important_notification_incoming_call_with_message">సందేశంతో ముఖ్యమైన ఇన్‌కమింగ్ కాల్</string>
-  <string name="important_notification_incoming_call_with_location">స్థానంతో ముఖ్యమైన ఇన్‌కమింగ్ కాల్</string>
-  <string name="important_notification_incoming_call_with_photo_message">ఫోటో మరియు సందేశంతో ముఖ్యమైన ఇన్‌కమింగ్ కాల్</string>
-  <string name="important_notification_incoming_call_with_photo_location">ఫోటో మరియు స్థానంతో ముఖ్యమైన ఇన్‌కమింగ్ కాల్</string>
-  <string name="important_notification_incoming_call_with_message_location">సందేశం మరియు స్థానంతో ముఖ్యమైన ఇన్‌కమింగ్ కాల్</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">ఫోటో, సందేశం, స్థానంతో ముఖ్యమైన ఇన్‌కమింగ్ కాల్</string>
-  <string name="important_notification_incoming_call_attachments">జోడింపులతో ముఖ్యమైన ఇన్‌కమింగ్ కాల్</string>
   <string name="notification_incoming_work_call">ఇన్‌కమింగ్ కార్యాలయ కాల్</string>
   <string name="notification_incoming_spam_call">అనుమానాస్పద స్పామ్ కాల్ వస్తోంది</string>
   <string name="notification_requesting_video_call">ఇన్‌కమింగ్ వీడియో అభ్యర్థన</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi నెట్‌వర్క్‌కి మార్చడం సాధ్యపడలేదు</string>
   <string name="video_call_lte_to_wifi_failed_message">వీడియో కాల్ మొబైల్ నెట్‌వర్క్‌లో కొనసాగుతుంది. ప్రామాణిక డేటా ఛార్జీలు వర్తించవచ్చు.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">దీన్ని మళ్లీ చూపవద్దు</string>
-  <string name="bubble_return_to_call">కాల్ చేయడానికి తిరిగి వెళ్ళు</string>
-  <string name="rtt_request_dialog_title">RTT కాల్‌లో చేరాలనుకుంటున్నారా?</string>
+    <string name="rtt_request_dialog_title">RTT కాల్‌లో చేరాలనుకుంటున్నారా?</string>
   <string name="rtt_request_dialog_details">%1$s మీ వాయిస్ కాల్‌లో సందేశాన్ని ఉపయోగించాలనుకుంటున్నారు.</string>
   <string name="rtt_request_dialog_more_information">చెవిటివారు, వినికిడి సమస్యలు ఉన్న వారు, మాట్లాడటంలో సమస్యలు ఉన్న వారు లేదా కేవలం వాయిస్‌తో అర్థం చేసుకోలేని కాలర్‌లకు RTT సహాయపడుతుంది.</string>
   <string name="rtt_button_decline_request">వద్దు, ధన్యవాదాలు</string>
diff --git a/java/com/android/incallui/res/values-th/cm_strings.xml b/java/com/android/incallui/res/values-th/cm_strings.xml
new file mode 100644
index 0000000..8a05932
--- /dev/null
+++ b/java/com/android/incallui/res/values-th/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">ไม่สามารถเริ่มบันทึกการสนทนาได้</string>
+    <string name="call_recording_file_location">บันทึกการสนทนาไปยัง <xliff:g id="filename">%s</xliff:g> แล้ว</string>
+    <string name="onscreenCallRecordText">บันทึกการสนทนา</string>
+    <string name="onscreenCallRecordingText">กำลังบันทึกการโทร - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">หยุดการบันทึก</string>
+    <string name="recording_warning_title">เปิดใช้การบันทึกเสียงสนทนาหรือไม่</string>
+    <string name="recording_warning_text">หมายเหตุ: คุณต้องรับผิดชอบต่อการปฏิบัติตามกฎหมายระเบียบข้อบังคับและกฎระเบียบที่เกี่ยวข้องกับการใช้ฟังก์ชันการบันทึกการโทรและการใช้หรือการแจกจ่ายข้อมูลการบันทึกเหล่านั้น</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-th/strings.xml b/java/com/android/incallui/res/values-th/strings.xml
index 2312234..f1a986d 100644
--- a/java/com/android/incallui/res/values-th/strings.xml
+++ b/java/com/android/incallui/res/values-th/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">สายเรียกเข้า</string>
   <string name="notification_incoming_video_call"> Hangouts วิดีโอเรียกเข้า</string>
   <string name="notification_incoming_call_mutli_sim">สายเรียกเข้าผ่าน %1$s</string>
-  <string name="notification_incoming_call_with_photo">สายเรียกเข้าพร้อมรูปภาพ</string>
-  <string name="notification_incoming_call_with_message">สายเรียกเข้าพร้อมข้อความ</string>
-  <string name="notification_incoming_call_with_location">สายเรียกเข้าพร้อมตำแหน่ง</string>
-  <string name="notification_incoming_call_with_photo_message">สายเรียกเข้าพร้อมรูปภาพและข้อความ</string>
-  <string name="notification_incoming_call_with_photo_location">สายเรียกเข้าพร้อมรูปภาพและตำแหน่ง</string>
-  <string name="notification_incoming_call_with_message_location">สายเรียกเข้าพร้อมข้อความและตำแหน่ง</string>
-  <string name="notification_incoming_call_with_photo_message_location">สายเรียกเข้าพร้อมรูปภาพ ข้อความ และตำแหน่ง</string>
-  <string name="notification_incoming_call_attachments">สายเรียกเข้าพร้อมไฟล์แนบ</string>
-  <string name="important_notification_incoming_call">สายเรียกเข้าที่สำคัญ</string>
-  <string name="important_notification_incoming_call_with_photo">สายเรียกเข้าที่สำคัญพร้อมรูปภาพ</string>
-  <string name="important_notification_incoming_call_with_message">สายเรียกเข้าที่สำคัญพร้อมข้อความ</string>
-  <string name="important_notification_incoming_call_with_location">สายเรียกเข้าที่สำคัญพร้อมตำแหน่ง</string>
-  <string name="important_notification_incoming_call_with_photo_message">สายเรียกเข้าที่สำคัญพร้อมรูปภาพและข้อความ</string>
-  <string name="important_notification_incoming_call_with_photo_location">สายเรียกเข้าที่สำคัญพร้อมรูปภาพและตำแหน่ง</string>
-  <string name="important_notification_incoming_call_with_message_location">สายเรียกเข้าที่สำคัญพร้อมข้อความและตำแหน่ง</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">สายเรียกเข้าที่สำคัญพร้อมรูปภาพ ข้อความ และตำแหน่ง</string>
-  <string name="important_notification_incoming_call_attachments">สายเรียกเข้าที่สำคัญพร้อมไฟล์แนบ</string>
   <string name="notification_incoming_work_call">มีสายเรียกเข้าจากที่ทำงาน</string>
   <string name="notification_incoming_spam_call">สายเรียกเข้าที่สงสัยว่าเป็นสแปม</string>
   <string name="notification_requesting_video_call">คำขอโทรเข้าเป็นวิดีโอ</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">ไม่สามารถเปลี่ยนไปใช้เครือข่าย Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message"> Hangouts วิดีโอจะยังคงอยู่ในเครือข่ายมือถือ อาจมีการเรียกเก็บค่าบริการข้อมูลมาตรฐาน</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">อย่าแสดงสิ่งนี้อีก</string>
-  <string name="bubble_return_to_call">กลับไปที่การโทร</string>
-  <string name="rtt_request_dialog_title">เข้าร่วมการโทรแบบ RTT ใช่ไหม</string>
+    <string name="rtt_request_dialog_title">เข้าร่วมการโทรแบบ RTT ใช่ไหม</string>
   <string name="rtt_request_dialog_details">%1$s ต้องการใช้การรับส่งข้อความภายในการโทรด้วยเสียงของคุณ</string>
   <string name="rtt_request_dialog_more_information">RTT ช่วยเหลือผู้โทรที่หูหนวก ได้ยินไม่ชัด มีความบกพร่องในการพูด หรือต้องการการสื่อสารที่นอกเหนือจากเสียงพูด</string>
   <string name="rtt_button_decline_request">ไม่เป็นไร</string>
diff --git a/java/com/android/incallui/res/values-tl/strings.xml b/java/com/android/incallui/res/values-tl/strings.xml
index 9a2dd13..9d3b61b 100644
--- a/java/com/android/incallui/res/values-tl/strings.xml
+++ b/java/com/android/incallui/res/values-tl/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Papasok na tawag</string>
   <string name="notification_incoming_video_call">Papasok na video call</string>
   <string name="notification_incoming_call_mutli_sim">Papasok na tawag sa pamamagitan ng %1$s</string>
-  <string name="notification_incoming_call_with_photo">Papasok na tawag na may larawan</string>
-  <string name="notification_incoming_call_with_message">Papasok na tawag na may mensahe</string>
-  <string name="notification_incoming_call_with_location">Papasok na tawag na may lokasyon</string>
-  <string name="notification_incoming_call_with_photo_message">Papasok na tawag na may larawan at mensahe</string>
-  <string name="notification_incoming_call_with_photo_location">Papasok na tawag na may larawan at lokasyon</string>
-  <string name="notification_incoming_call_with_message_location">Papasok na tawag na may mensahe at lokasyon</string>
-  <string name="notification_incoming_call_with_photo_message_location">Papasok na tawag na may larawan, mensahe, at lokasyon</string>
-  <string name="notification_incoming_call_attachments">Papasok na tawag na may mga attachment</string>
-  <string name="important_notification_incoming_call">Mahalagang papasok na tawag</string>
-  <string name="important_notification_incoming_call_with_photo">Mahalagang papasok na tawag na may larawan</string>
-  <string name="important_notification_incoming_call_with_message">Mahalagang papasok na tawag na may mensahe</string>
-  <string name="important_notification_incoming_call_with_location">Mahalagang papasok na tawag na may lokasyon</string>
-  <string name="important_notification_incoming_call_with_photo_message">Mahalagang papasok na tawag na may larawan at mensahe</string>
-  <string name="important_notification_incoming_call_with_photo_location">Mahalagang papasok na tawag na may larawan at lokasyon</string>
-  <string name="important_notification_incoming_call_with_message_location">Mahalagang papasok na tawag na may mensahe at lokasyon</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Mahalagang papasok na tawag na may larawan, mensahe, at lokasyon</string>
-  <string name="important_notification_incoming_call_attachments">Mahalagang papasok na tawag na may mga attachment</string>
   <string name="notification_incoming_work_call">Papasok na tawag sa trabaho</string>
   <string name="notification_incoming_spam_call">Papasok na pinaghihinalaang spam na tawag</string>
   <string name="notification_requesting_video_call">Papasok na kahilingan ng video</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Hindi makalipat sa Wi-Fi network</string>
   <string name="video_call_lte_to_wifi_failed_message">Mananatili sa mobile network ang video call. Maaaring may mga babayaran sa data.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Huwag itong ipakitang muli</string>
-  <string name="bubble_return_to_call">Bumalik sa tawag</string>
-  <string name="rtt_request_dialog_title">Sumali sa RTT na tawag?</string>
+    <string name="rtt_request_dialog_title">Sumali sa RTT na tawag?</string>
   <string name="rtt_request_dialog_details">Gustong gamitin ni %1$s ang pagmemensahe sa iyong voice call.</string>
   <string name="rtt_request_dialog_more_information">Tinutulungan ng RTT ang mga tumatawag na bingi, mahina ang pandinig, mayroong kapansanan sa pagsasalita, o kailangan ng higit pa sa boses lang.</string>
   <string name="rtt_button_decline_request">Hindi, salamat</string>
diff --git a/java/com/android/incallui/res/values-tr/cm_strings.xml b/java/com/android/incallui/res/values-tr/cm_strings.xml
new file mode 100644
index 0000000..a2daf7e
--- /dev/null
+++ b/java/com/android/incallui/res/values-tr/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Arama ses kaydı başlatılamadı</string>
+    <string name="call_recording_file_location">Arama kaydı <xliff:g id="filename">%s</xliff:g> konumuna kaydedildi</string>
+    <string name="onscreenCallRecordText">Aramayı kaydet</string>
+    <string name="onscreenCallRecordingText">Arama kaydı - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Kaydı durdur</string>
+    <string name="recording_warning_title">Arama kaydı etkinleştirilsin mi?</string>
+    <string name="recording_warning_text">Dikkat: Arama kaydı işlevini kullanırken veya bu kayıtları dağıtırken ilgili yasa, düzenleme ve kurallara uyulmasından siz sorumlusunuz.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-tr/strings.xml b/java/com/android/incallui/res/values-tr/strings.xml
index 3769b4e..197c90f 100644
--- a/java/com/android/incallui/res/values-tr/strings.xml
+++ b/java/com/android/incallui/res/values-tr/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Gelen çağrı</string>
   <string name="notification_incoming_video_call">Gelen video görüşmesi isteği</string>
   <string name="notification_incoming_call_mutli_sim">%1$s üzerinden gelen arama</string>
-  <string name="notification_incoming_call_with_photo">Fotoğraf eklenmiş gelen çağrı</string>
-  <string name="notification_incoming_call_with_message">Mesaj eklenmiş gelen çağrı</string>
-  <string name="notification_incoming_call_with_location">Konum eklenmiş gelen çağrı</string>
-  <string name="notification_incoming_call_with_photo_message">Fotoğraf ve mesaj eklenmiş gelen çağrı</string>
-  <string name="notification_incoming_call_with_photo_location">Fotoğraf ve konum eklenmiş gelen çağrı</string>
-  <string name="notification_incoming_call_with_message_location">Mesaj ve konum eklenmiş gelen çağrı</string>
-  <string name="notification_incoming_call_with_photo_message_location">Fotoğraf, mesaj ve konum eklenmiş gelen çağrı</string>
-  <string name="notification_incoming_call_attachments">Ek iliştirilmiş gelen çağrı</string>
-  <string name="important_notification_incoming_call">Önemli gelen çağrı</string>
-  <string name="important_notification_incoming_call_with_photo">Fotoğraf eklenmiş önemli gelen çağrı</string>
-  <string name="important_notification_incoming_call_with_message">Mesaj eklenmiş önemli gelen çağrı</string>
-  <string name="important_notification_incoming_call_with_location">Konum eklenmiş önemli gelen çağrı</string>
-  <string name="important_notification_incoming_call_with_photo_message">Fotoğraf ve mesaj eklenmiş önemli gelen çağrı</string>
-  <string name="important_notification_incoming_call_with_photo_location">Fotoğraf ve konum eklenmiş önemli gelen çağrı</string>
-  <string name="important_notification_incoming_call_with_message_location">Mesaj ve konum eklenmiş önemli gelen çağrı</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Fotoğraf, mesaj ve konum eklenmiş önemli çağrı</string>
-  <string name="important_notification_incoming_call_attachments">Ek iliştirilmiş önemli gelen çağrı</string>
   <string name="notification_incoming_work_call">Gelen iş çağrısı</string>
   <string name="notification_incoming_spam_call">Spam olabilecek gelen arama</string>
   <string name="notification_requesting_video_call">Gelen video isteği</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Kablosuz ağa geçilemedi</string>
   <string name="video_call_lte_to_wifi_failed_message">Görüntülü görüşme mobil ağda devam edecek. Standart veri ücretleri alınabilir.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Bunu bir daha gösterme</string>
-  <string name="bubble_return_to_call">Çağrıya dön</string>
-  <string name="rtt_request_dialog_title">RTT çağrısına katılınsın mı?</string>
+    <string name="rtt_request_dialog_title">RTT çağrısına katılınsın mı?</string>
   <string name="rtt_request_dialog_details">%1$s, yaptığınız sesli çağrıda mesajlaşma özelliğini kullanmak istiyor.</string>
   <string name="rtt_request_dialog_more_information">RTT; tam veya kısmi işitme engelli, konuşma engeli olan veya sesten fazlasına ihtiyaç duyan arayanlara yardımcı olur.</string>
   <string name="rtt_button_decline_request">Hayır, teşekkürler</string>
diff --git a/java/com/android/incallui/res/values-uk/cm_strings.xml b/java/com/android/incallui/res/values-uk/cm_strings.xml
new file mode 100644
index 0000000..5675baa
--- /dev/null
+++ b/java/com/android/incallui/res/values-uk/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Не вдалося записати виклик</string>
+    <string name="call_recording_file_location">Запис виклику збережено до <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Записати виклик</string>
+    <string name="onscreenCallRecordingText">Запис виклику — <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Зупинити запис</string>
+    <string name="recording_warning_title">Дозволити запис викликів?</string>
+    <string name="recording_warning_text">Увага: ви несете відповідальність за дотримання всіх законів, правил та обмежень, що стосуються використання функції запису викликів і використання або розповсюдження цих записів.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-uk/strings.xml b/java/com/android/incallui/res/values-uk/strings.xml
index c7fdec3..535defe 100644
--- a/java/com/android/incallui/res/values-uk/strings.xml
+++ b/java/com/android/incallui/res/values-uk/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Вхідний виклик</string>
   <string name="notification_incoming_video_call">Вхідний відеодзвінок</string>
   <string name="notification_incoming_call_mutli_sim">Вхідний виклик через %1$s</string>
-  <string name="notification_incoming_call_with_photo">Вхідний дзвінок із фото</string>
-  <string name="notification_incoming_call_with_message">Вхідний дзвінок із повідомленням</string>
-  <string name="notification_incoming_call_with_location">Вхідний дзвінок з указанням адреси</string>
-  <string name="notification_incoming_call_with_photo_message">Вхідний дзвінок із фото та повідомленням</string>
-  <string name="notification_incoming_call_with_photo_location">Вхідний дзвінок із фото й адресою</string>
-  <string name="notification_incoming_call_with_message_location">Вхідний дзвінок з указанням адреси й повідомленням</string>
-  <string name="notification_incoming_call_with_photo_message_location">Вхідний дзвінок із фото, повідомленням й адресою</string>
-  <string name="notification_incoming_call_attachments">Вхідний дзвінок із вкладеними файлами</string>
-  <string name="important_notification_incoming_call">Важливий вхідний дзвінок</string>
-  <string name="important_notification_incoming_call_with_photo">Важливий вхідний дзвінок із фото</string>
-  <string name="important_notification_incoming_call_with_message">Важливий вхідний дзвінок із повідомленням</string>
-  <string name="important_notification_incoming_call_with_location">Важливий вхідний дзвінок з адресою</string>
-  <string name="important_notification_incoming_call_with_photo_message">Важливий вхідний дзвінок із фото та повідомленням</string>
-  <string name="important_notification_incoming_call_with_photo_location">Важливий вхідний дзвінок із фото й адресою</string>
-  <string name="important_notification_incoming_call_with_message_location">Важливий вхідний дзвінок з адресою й повідомленням</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Важливий дзвінок із фото, повідомленням і адресою</string>
-  <string name="important_notification_incoming_call_attachments">Важливий вхідний дзвінок із вкладеними файлами</string>
   <string name="notification_incoming_work_call">Вхідний дзвінок на робочий телефон</string>
   <string name="notification_incoming_spam_call">Цей дзвінок може бути спамом</string>
   <string name="notification_requesting_video_call">Запит на вхідний відеодзвінок</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Не вдалося перейти на мережу Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Відеодзвінок продовжиться з використанням мобільного Інтернету. Діють стандартні тарифи.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Більше не показувати це</string>
-  <string name="bubble_return_to_call">Назад до дзвінка</string>
-  <string name="rtt_request_dialog_title">Приєднатися до виклику RTT?</string>
+    <string name="rtt_request_dialog_title">Приєднатися до виклику RTT?</string>
   <string name="rtt_request_dialog_details">%1$s хоче використовувати повідомлення під час вашого голосового виклику.</string>
   <string name="rtt_request_dialog_more_information">RTT допомагає користувачам із вадами слуху, мовлення та іншим користувачам, для яких голосового спілкування недостатньо.</string>
   <string name="rtt_button_decline_request">Ні, дякую</string>
diff --git a/java/com/android/incallui/res/values-ur/strings.xml b/java/com/android/incallui/res/values-ur/strings.xml
index e1ac42e..3db73c6 100644
--- a/java/com/android/incallui/res/values-ur/strings.xml
+++ b/java/com/android/incallui/res/values-ur/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">آنے والی کال</string>
   <string name="notification_incoming_video_call">اِن کمنگ ویڈیو کال</string>
   <string name="notification_incoming_call_mutli_sim">%1$s کی معرفت کال آ رہی ہے</string>
-  <string name="notification_incoming_call_with_photo">تصویر کے ساتھ آنے والی کال</string>
-  <string name="notification_incoming_call_with_message">پیغام کے ساتھ آنے والی کال</string>
-  <string name="notification_incoming_call_with_location">مقام کے ساتھ آنے والی کال</string>
-  <string name="notification_incoming_call_with_photo_message">تصویر اور پیغام کے ساتھ آنے والی کال</string>
-  <string name="notification_incoming_call_with_photo_location">تصویر اور مقام کے ساتھ آنے والی کال</string>
-  <string name="notification_incoming_call_with_message_location">پیغام اور مقام کے ساتھ آنے والی کال</string>
-  <string name="notification_incoming_call_with_photo_message_location">تصویر، پیغام اور مقام کے ساتھ آنے والی کال</string>
-  <string name="notification_incoming_call_attachments">منسلکات کے ساتھ آنے والی کال</string>
-  <string name="important_notification_incoming_call">اہم آنے والی کال</string>
-  <string name="important_notification_incoming_call_with_photo">تصویر کے ساتھ آنے والی اہم کال</string>
-  <string name="important_notification_incoming_call_with_message">پیغام کے ساتھ آنے والی اہم کال</string>
-  <string name="important_notification_incoming_call_with_location">مقام کے ساتھ آنے والی اہم کال</string>
-  <string name="important_notification_incoming_call_with_photo_message">تصویر اور پیغام کے ساتھ آنے والی اہم کال</string>
-  <string name="important_notification_incoming_call_with_photo_location">تصویر اور مقام کے ساتھ آنے والی اہم کال</string>
-  <string name="important_notification_incoming_call_with_message_location">پیغام اور مقام کے ساتھ آنے والی اہم کال</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">تصویر، پیغام اور مقام کے ساتھ آنے والی اہم کال</string>
-  <string name="important_notification_incoming_call_attachments">منسلکات کے ساتھ آنے والی اہم کال</string>
   <string name="notification_incoming_work_call">کام سے متعلق آنے والی کال</string>
   <string name="notification_incoming_spam_call">آنے والی مشتبہ سپام کال</string>
   <string name="notification_requesting_video_call">اِن کمنگ ویڈیو درخواست</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">‏Wi-Fi نیٹ ورک پر سوئچ نہیں ہو سکا</string>
   <string name="video_call_lte_to_wifi_failed_message">ویڈیو کال موبائل نیٹ ورک پر رہے گی۔ ڈیٹا کے معیاری چارجز کا اطلاق ہو سکتا ہے۔</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">اسے دوبارہ مت دکھائیں</string>
-  <string name="bubble_return_to_call">کال بٹن پر واپس جائیں</string>
-  <string name="rtt_request_dialog_title">‏RTT کال میں شامل ہوں؟</string>
+    <string name="rtt_request_dialog_title">‏RTT کال میں شامل ہوں؟</string>
   <string name="rtt_request_dialog_details">%1$s آپ کی صوتی کال کے اندر پیغام رسانی استعمال کرنا چاہتا ہے۔</string>
   <string name="rtt_request_dialog_more_information">‏RTT ایسے کالرز کی معاونت کرتا ہے جو بہرے ہیں، اونچا سنتے ہیں، بولنے سے معزور ہیں یا ان کیلئے صرف آواز ہی کافی نہیں ہے۔</string>
   <string name="rtt_button_decline_request">نہیں شکریہ</string>
diff --git a/java/com/android/incallui/res/values-uz/strings.xml b/java/com/android/incallui/res/values-uz/strings.xml
index 5bfd6e0..1381671 100644
--- a/java/com/android/incallui/res/values-uz/strings.xml
+++ b/java/com/android/incallui/res/values-uz/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Kiruvchi chaqiruv</string>
   <string name="notification_incoming_video_call">Kiruvchi videoqo‘ng‘iroq</string>
   <string name="notification_incoming_call_mutli_sim">%1$s SIM kartasiga kiruvchi chaqiruv</string>
-  <string name="notification_incoming_call_with_photo">Suratga ega kiruvchi chaqiruv</string>
-  <string name="notification_incoming_call_with_message">Xabarga ega kiruvchi chaqiruv</string>
-  <string name="notification_incoming_call_with_location">Joylashuv axborotiga ega kiruvchi chaqiruv</string>
-  <string name="notification_incoming_call_with_photo_message">Surat va xabarga ega kiruvchi chaqiruv</string>
-  <string name="notification_incoming_call_with_photo_location">Surat va joylash. axborotiga ega kiruvchi chaqiruv</string>
-  <string name="notification_incoming_call_with_message_location">Xabar va joylash. axborotiga ega kiruvchi chaqiruv</string>
-  <string name="notification_incoming_call_with_photo_message_location">Surat, xabar va joyl. axbor. ega kiruvchi chaqiruv</string>
-  <string name="notification_incoming_call_attachments">Biriktirmalarga ega kiruvchi chaqiruv</string>
-  <string name="important_notification_incoming_call">Muhim kiruvchi chaqiruv</string>
-  <string name="important_notification_incoming_call_with_photo">Suratga ega muhim kiruvchi chaqiruv</string>
-  <string name="important_notification_incoming_call_with_message">Xabarga ega muhim kiruvchi chaqiruv</string>
-  <string name="important_notification_incoming_call_with_location">Joylashuv axborotiga ega muhim kiruvchi chaqiruv</string>
-  <string name="important_notification_incoming_call_with_photo_message">Surat va xabarga ega muhim kiruvchi chaqiruv</string>
-  <string name="important_notification_incoming_call_with_photo_location">Surat va joy. axborot. ega muhim kiruvchi chaqiruv</string>
-  <string name="important_notification_incoming_call_with_message_location">Xabar va joy. axborot. ega muhim kiruvchi chaqiruv</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Surat, xabar va joy. ax. ega muhim kiruv. chaqiruv</string>
-  <string name="important_notification_incoming_call_attachments">Biriktirmalarga ega muhim kiruvchi chaqiruv</string>
   <string name="notification_incoming_work_call">Kiruvchi ishchi qo‘ng‘irog‘i</string>
   <string name="notification_incoming_spam_call">Kiruvchi chaqiruv: shubhali spam</string>
   <string name="notification_requesting_video_call">Kiruvchi video so\'rovi</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Wi-Fi tarmog‘iga o‘tib bo‘lmadi</string>
   <string name="video_call_lte_to_wifi_failed_message">Video qo‘ng‘iroq mobil internet orqali davom ettiriladi. Internet uchun operator tarifi bo‘yicha haq olinishi mumkin.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Bu xabar boshqa ko‘rsatilmasin</string>
-  <string name="bubble_return_to_call">Chaqiruvga qaytish</string>
-  <string name="rtt_request_dialog_title">RTT chaqiruviga qo‘shilasizmi?</string>
+    <string name="rtt_request_dialog_title">RTT chaqiruviga qo‘shilasizmi?</string>
   <string name="rtt_request_dialog_details">%1$s ovozli chaqiruvingiz doirasida xabar almashinuvdan foydalanmoqchi.</string>
   <string name="rtt_request_dialog_more_information">RTT kar, eshitish qobiliyati va nutqiy faoliyati buzilgan shaxslarga mo‘ljallangan funksiyadir.</string>
   <string name="rtt_button_decline_request">Kerak emas</string>
diff --git a/java/com/android/incallui/res/values-vi/cm_strings.xml b/java/com/android/incallui/res/values-vi/cm_strings.xml
new file mode 100644
index 0000000..52a6af5
--- /dev/null
+++ b/java/com/android/incallui/res/values-vi/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Không thể bắt đầu ghi âm cuộc gọi</string>
+    <string name="call_recording_file_location">Đã lưu ghi âm cuộc gọi vào <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Ghi âm cuộc gọi</string>
+    <string name="onscreenCallRecordingText">Ghi âm cuộc gọi - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Dừng ghi âm</string>
+    <string name="recording_warning_title">Cho phép ghi âm cuộc gọi?</string>
+    <string name="recording_warning_text">Thông báo: Bạn có trách nhiệm tuân thủ bất kỳ luật pháp, quy định và quy tắc nào áp dụng cho việc sử dụng chức năng ghi âm cuộc gọi và sử dụng hay phân phối các bản ghi âm đó.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-vi/strings.xml b/java/com/android/incallui/res/values-vi/strings.xml
index 5b45426..861b919 100644
--- a/java/com/android/incallui/res/values-vi/strings.xml
+++ b/java/com/android/incallui/res/values-vi/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Cuộc gọi đến</string>
   <string name="notification_incoming_video_call">Cuộc gọi điện video đến</string>
   <string name="notification_incoming_call_mutli_sim">Cuộc gọi đến qua %1$s</string>
-  <string name="notification_incoming_call_with_photo">Cuộc gọi đến có ảnh</string>
-  <string name="notification_incoming_call_with_message">Cuộc gọi đến có tin nhắn</string>
-  <string name="notification_incoming_call_with_location">Cuộc gọi đến có vị trí</string>
-  <string name="notification_incoming_call_with_photo_message">Cuộc gọi đến có ảnh và tin nhắn</string>
-  <string name="notification_incoming_call_with_photo_location">Cuộc gọi đến có ảnh và vị trí</string>
-  <string name="notification_incoming_call_with_message_location">Cuộc gọi đến có tin nhắn và vị trí</string>
-  <string name="notification_incoming_call_with_photo_message_location">Cuộc gọi đến có ảnh, tin nhắn và vị trí</string>
-  <string name="notification_incoming_call_attachments">Cuộc gọi đến có tệp đính kèm</string>
-  <string name="important_notification_incoming_call">Cuộc gọi đến quan trọng</string>
-  <string name="important_notification_incoming_call_with_photo">Cuộc gọi đến quan trọng có ảnh</string>
-  <string name="important_notification_incoming_call_with_message">Cuộc gọi đến quan trọng có tin nhắn</string>
-  <string name="important_notification_incoming_call_with_location">Cuộc gọi đến quan trọng có vị trí</string>
-  <string name="important_notification_incoming_call_with_photo_message">Cuộc gọi đến quan trọng có ảnh và tin nhắn</string>
-  <string name="important_notification_incoming_call_with_photo_location">Cuộc gọi đến quan trọng có ảnh và vị trí</string>
-  <string name="important_notification_incoming_call_with_message_location">Cuộc gọi đến quan trọng có tin nhắn và vị trí</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Cuộc gọi đến quan trọng có ảnh, tin nhắn và vị trí</string>
-  <string name="important_notification_incoming_call_attachments">Cuộc gọi đến quan trọng có tệp đính kèm</string>
   <string name="notification_incoming_work_call">Cuộc gọi đến về công việc</string>
   <string name="notification_incoming_spam_call">Cuộc gọi spam đến bị nghi ngờ</string>
   <string name="notification_requesting_video_call">Yêu cầu video đến</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Không thể chuyển sang mạng Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Cuộc gọi điện video sẽ tiếp tục trên mạng di động. Bạn có thể phải trả phí dữ liệu chuẩn.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Không hiển thị lại</string>
-  <string name="bubble_return_to_call">Quay lại cuộc gọi</string>
-  <string name="rtt_request_dialog_title">Tham gia cuộc gọi bằng Tin nhắn theo thời gian thực (RTT)?</string>
+    <string name="rtt_request_dialog_title">Tham gia cuộc gọi bằng Tin nhắn theo thời gian thực (RTT)?</string>
   <string name="rtt_request_dialog_details">%1$s muốn sử dụng tính năng nhắn tin trong cuộc gọi thoại của bạn.</string>
   <string name="rtt_request_dialog_more_information">Tin nhắn theo thời gian thực (RTT) trợ giúp những người gọi khiếm thính, bị suy giảm thính lực, không có khả năng nói hoặc cần thêm hỗ trợ khác ngoài giọng nói.</string>
   <string name="rtt_button_decline_request">Không, cảm ơn</string>
diff --git a/java/com/android/incallui/res/values-zh-rCN/cm_strings.xml b/java/com/android/incallui/res/values-zh-rCN/cm_strings.xml
new file mode 100644
index 0000000..c530675
--- /dev/null
+++ b/java/com/android/incallui/res/values-zh-rCN/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">开启通话录音失败</string>
+    <string name="call_recording_file_location">通话录音已保存到 <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">通话录音</string>
+    <string name="onscreenCallRecordingText">录音中 - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">停止录音</string>
+    <string name="recording_warning_title">启用通话录音？</string>
+    <string name="recording_warning_text">注意：您有责任遵守有关通话录音以及录音使用、分发相关的任何法律、法规和规定。</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-zh-rCN/strings.xml b/java/com/android/incallui/res/values-zh-rCN/strings.xml
index 7995f1e..65058f0 100644
--- a/java/com/android/incallui/res/values-zh-rCN/strings.xml
+++ b/java/com/android/incallui/res/values-zh-rCN/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">来电</string>
   <string name="notification_incoming_video_call">有视频通话来电</string>
   <string name="notification_incoming_call_mutli_sim">通过 %1$s 接到的来电</string>
-  <string name="notification_incoming_call_with_photo">包含照片的来电</string>
-  <string name="notification_incoming_call_with_message">包含讯息的来电</string>
-  <string name="notification_incoming_call_with_location">包含位置信息的来电</string>
-  <string name="notification_incoming_call_with_photo_message">包含照片和讯息的来电</string>
-  <string name="notification_incoming_call_with_photo_location">包含照片和位置信息的来电</string>
-  <string name="notification_incoming_call_with_message_location">包含讯息和位置信息的来电</string>
-  <string name="notification_incoming_call_with_photo_message_location">包含照片、讯息和位置信息的来电</string>
-  <string name="notification_incoming_call_attachments">包含附件的来电</string>
-  <string name="important_notification_incoming_call">重要来电</string>
-  <string name="important_notification_incoming_call_with_photo">包含照片的重要来电</string>
-  <string name="important_notification_incoming_call_with_message">包含讯息的重要来电</string>
-  <string name="important_notification_incoming_call_with_location">包含位置信息的重要来电</string>
-  <string name="important_notification_incoming_call_with_photo_message">包含照片和讯息的重要来电</string>
-  <string name="important_notification_incoming_call_with_photo_location">包含照片和位置信息的重要来电</string>
-  <string name="important_notification_incoming_call_with_message_location">包含讯息和位置信息的重要来电</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">包含照片、讯息和位置信息的重要来电</string>
-  <string name="important_notification_incoming_call_attachments">包含附件的重要来电</string>
   <string name="notification_incoming_work_call">工作来电</string>
   <string name="notification_incoming_spam_call">有疑似骚扰来电</string>
   <string name="notification_requesting_video_call">收到视频通话邀请</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">无法切换到 WLAN 网络</string>
   <string name="video_call_lte_to_wifi_failed_message">系统将使用移动网络继续视频通话。这可能会产生标准数据流量费。</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">不再显示</string>
-  <string name="bubble_return_to_call">返回通话</string>
-  <string name="rtt_request_dialog_title">要加入 RTT 通话吗？</string>
+    <string name="rtt_request_dialog_title">要加入 RTT 通话吗？</string>
   <string name="rtt_request_dialog_details">%1$s想要在语音通话期间收发信息。</string>
   <string name="rtt_request_dialog_more_information">RTT 可为以下类型的来电者提供协助：失聪者、听力障碍人士、语言障碍人士或需要语音以外服务的人。</string>
   <string name="rtt_button_decline_request">不用了</string>
diff --git a/java/com/android/incallui/res/values-zh-rHK/strings.xml b/java/com/android/incallui/res/values-zh-rHK/strings.xml
index cc3ed13..0a881e5 100644
--- a/java/com/android/incallui/res/values-zh-rHK/strings.xml
+++ b/java/com/android/incallui/res/values-zh-rHK/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">來電</string>
   <string name="notification_incoming_video_call">視像通話來電</string>
   <string name="notification_incoming_call_mutli_sim">正待接聽經由 %1$s 的來電</string>
-  <string name="notification_incoming_call_with_photo">附有相片的來電</string>
-  <string name="notification_incoming_call_with_message">附有訊息的來電</string>
-  <string name="notification_incoming_call_with_location">附有位置的來電</string>
-  <string name="notification_incoming_call_with_photo_message">附有相片和訊息的來電</string>
-  <string name="notification_incoming_call_with_photo_location">附有相片和位置的來電</string>
-  <string name="notification_incoming_call_with_message_location">附有訊息和位置的來電</string>
-  <string name="notification_incoming_call_with_photo_message_location">附有相片、訊息和位置的來電</string>
-  <string name="notification_incoming_call_attachments">附有附件的來電</string>
-  <string name="important_notification_incoming_call">重要來電</string>
-  <string name="important_notification_incoming_call_with_photo">附有相片的重要來電</string>
-  <string name="important_notification_incoming_call_with_message">附有訊息的重要來電</string>
-  <string name="important_notification_incoming_call_with_location">附有位置的重要來電</string>
-  <string name="important_notification_incoming_call_with_photo_message">附有相片和訊息的重要來電</string>
-  <string name="important_notification_incoming_call_with_photo_location">附有相片和位置的重要來電</string>
-  <string name="important_notification_incoming_call_with_message_location">附有訊息和位置的重要來電</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">附有相片、訊息和位置的重要來電</string>
-  <string name="important_notification_incoming_call_attachments">附有附件的重要來電</string>
   <string name="notification_incoming_work_call">工作來電</string>
   <string name="notification_incoming_spam_call">疑似收到垃圾來電</string>
   <string name="notification_requesting_video_call">收到視像要求</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">無法切換為 Wi-Fi 網絡</string>
   <string name="video_call_lte_to_wifi_failed_message">視像通話仍會使用流動網絡 (可能需要支付標準數據用量費用)。</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">不要再顯示此訊息</string>
-  <string name="bubble_return_to_call">返回通話</string>
-  <string name="rtt_request_dialog_title">要加入即時文字短訊 (RTT) 通話嗎？</string>
+    <string name="rtt_request_dialog_title">要加入即時文字短訊 (RTT) 通話嗎？</string>
   <string name="rtt_request_dialog_details">%1$s想在與您進行語音通話期間使用短訊功能。</string>
   <string name="rtt_request_dialog_more_information">即時文字短訊 (RTT) 功能可協助失聰、有聽力障礙、語言失能或需要語音以外更多功能的通話者。</string>
   <string name="rtt_button_decline_request">不，謝謝</string>
diff --git a/java/com/android/incallui/res/values-zh-rTW/cm_strings.xml b/java/com/android/incallui/res/values-zh-rTW/cm_strings.xml
new file mode 100644
index 0000000..83b6110
--- /dev/null
+++ b/java/com/android/incallui/res/values-zh-rTW/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">無法啟動通話錄音</string>
+    <string name="call_recording_file_location">已將電話錄音儲存至「 <xliff:g id="filename">%s</xliff:g>」</string>
+    <string name="onscreenCallRecordText">錄製通話</string>
+    <string name="onscreenCallRecordingText">通話錄音 - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">停止錄製</string>
+    <string name="recording_warning_title">啟用通話錄音？</string>
+    <string name="recording_warning_text">注意：您有責任遵守任何適用於規管通話錄音功能的使用和分發這些錄音的法律、法規或規章。</string>
+</resources>
diff --git a/java/com/android/incallui/res/values-zh-rTW/strings.xml b/java/com/android/incallui/res/values-zh-rTW/strings.xml
index 28d3242..0789fd1 100644
--- a/java/com/android/incallui/res/values-zh-rTW/strings.xml
+++ b/java/com/android/incallui/res/values-zh-rTW/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">來電</string>
   <string name="notification_incoming_video_call">視訊通話來電</string>
   <string name="notification_incoming_call_mutli_sim">透過 %1$s 撥打的來電</string>
-  <string name="notification_incoming_call_with_photo">包含相片的來電</string>
-  <string name="notification_incoming_call_with_message">包含訊息的來電</string>
-  <string name="notification_incoming_call_with_location">包含位置資訊的來電</string>
-  <string name="notification_incoming_call_with_photo_message">包含相片和訊息的來電</string>
-  <string name="notification_incoming_call_with_photo_location">包含相片和位置資訊的來電</string>
-  <string name="notification_incoming_call_with_message_location">包含訊息和位置資訊的來電</string>
-  <string name="notification_incoming_call_with_photo_message_location">包含相片、訊息和位置資訊的來電</string>
-  <string name="notification_incoming_call_attachments">包含附件的來電</string>
-  <string name="important_notification_incoming_call">重要來電</string>
-  <string name="important_notification_incoming_call_with_photo">包含相片的重要來電</string>
-  <string name="important_notification_incoming_call_with_message">包含訊息的重要來電</string>
-  <string name="important_notification_incoming_call_with_location">包含位置資訊的重要來電</string>
-  <string name="important_notification_incoming_call_with_photo_message">包含相片和訊息的重要來電</string>
-  <string name="important_notification_incoming_call_with_photo_location">包含相片和位置資訊的重要來電</string>
-  <string name="important_notification_incoming_call_with_message_location">包含訊息和位置資訊的重要來電</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">包含相片、訊息和位置資訊的重要來電</string>
-  <string name="important_notification_incoming_call_attachments">包含附件的重要來電</string>
   <string name="notification_incoming_work_call">公司來電</string>
   <string name="notification_incoming_spam_call">可疑的騷擾/廣告來電</string>
   <string name="notification_requesting_video_call">收到視訊要求</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">無法切換至 Wi-Fi 網路</string>
   <string name="video_call_lte_to_wifi_failed_message">視訊通話將繼續透過行動網路進行 (可能需支付一般數據傳輸費用)。</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">不要再顯示這項說明</string>
-  <string name="bubble_return_to_call">返回通話</string>
-  <string name="rtt_request_dialog_title">要加入即時文字訊息通話嗎？</string>
+    <string name="rtt_request_dialog_title">要加入即時文字訊息通話嗎？</string>
   <string name="rtt_request_dialog_details">%1$s想在與你進行語音通話期間使用訊息功能。</string>
   <string name="rtt_request_dialog_more_information">即時文字訊息功能可為以下類型的來電者提供協助：聽障人士、聽力受損者、語言障礙者，或需要語音服務以外的使用者。</string>
   <string name="rtt_button_decline_request">不用了，謝謝</string>
diff --git a/java/com/android/incallui/res/values-zu/strings.xml b/java/com/android/incallui/res/values-zu/strings.xml
index b4d85c9..31410fc 100644
--- a/java/com/android/incallui/res/values-zu/strings.xml
+++ b/java/com/android/incallui/res/values-zu/strings.xml
@@ -16,23 +16,6 @@
   <string name="notification_incoming_call">Ikholi engenayo</string>
   <string name="notification_incoming_video_call">Ikholi yevidiyo engenayo</string>
   <string name="notification_incoming_call_mutli_sim">Ikholi engenayo nge-%1$s</string>
-  <string name="notification_incoming_call_with_photo">Ikholi engenayo enesithombe</string>
-  <string name="notification_incoming_call_with_message">Ikholi engenayo enomlayezo</string>
-  <string name="notification_incoming_call_with_location">Ikholi engenayo enendawo</string>
-  <string name="notification_incoming_call_with_photo_message">Ikholi engenayo enesithombe nomlayezo</string>
-  <string name="notification_incoming_call_with_photo_location">Ikholi engenayo enesithombe nendawo</string>
-  <string name="notification_incoming_call_with_message_location">Ikholi engenayo enomlayezo nendawo</string>
-  <string name="notification_incoming_call_with_photo_message_location">Ikholi engenayo enesithombe, umlayezo nendawo</string>
-  <string name="notification_incoming_call_attachments">Ikholi engenayo enokunamathiselwe kwi-imeyili</string>
-  <string name="important_notification_incoming_call">Ikholi engenayo ebalulekile</string>
-  <string name="important_notification_incoming_call_with_photo">Ikholi engenayo ebalulekile enesithombe</string>
-  <string name="important_notification_incoming_call_with_message">Ikholi engenayo ebalulekile enomlayezo</string>
-  <string name="important_notification_incoming_call_with_location">Ikholi engenayo ebalulekile enendawo</string>
-  <string name="important_notification_incoming_call_with_photo_message">Ikholi engenayo ebalulekile enesithombe nomlayezo</string>
-  <string name="important_notification_incoming_call_with_photo_location">Ikholi engenayo ebalulekile enesithombe nendawo</string>
-  <string name="important_notification_incoming_call_with_message_location">Ikholi engenayo ebalulekile enomlayezo nendawo</string>
-  <string name="important_notification_incoming_call_with_photo_message_location">Ikholi engenayo ebalulekile enesithombe, umlayezo nendawo</string>
-  <string name="important_notification_incoming_call_attachments">Ikholi engenayo ebalulekile enokunamathiselwe kwi-imeyili</string>
   <string name="notification_incoming_work_call">Ikholi engenayo yomsebenzi</string>
   <string name="notification_incoming_spam_call">Ikholi engenayo osolisayo kagaxekile</string>
   <string name="notification_requesting_video_call">Isicelo sevidiyo engenayo</string>
@@ -59,8 +42,7 @@
   <string name="video_call_lte_to_wifi_failed_title">Ayikwazanga ukushintshela kunethiwekhi ye-Wi-Fi</string>
   <string name="video_call_lte_to_wifi_failed_message">Ikholi yevidiyo izohlala ikunethiwekhi yeselula. Amashaji edatha avamile angasebenza.</string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Ungabonisi lokhu futhi</string>
-  <string name="bubble_return_to_call">Buyela ocingweni</string>
-  <string name="rtt_request_dialog_title">Joyina ikholi ye-RTT?</string>
+    <string name="rtt_request_dialog_title">Joyina ikholi ye-RTT?</string>
   <string name="rtt_request_dialog_details">%1$s ufuna ukusebenzisa imilayezo ngaphakathi kwekholi yakho yezwi.</string>
   <string name="rtt_request_dialog_more_information">I-RTT isiza abashayi abangezwa, abezwa kanzima, abakhubazeke ngokwenkulumo, noma abadinga ngaphezu kwezwi nje kuphela.</string>
   <string name="rtt_button_decline_request">Cha ngiyabonga</string>
diff --git a/java/com/android/incallui/res/values/cm_strings.xml b/java/com/android/incallui/res/values/cm_strings.xml
new file mode 100644
index 0000000..dc36f9a
--- /dev/null
+++ b/java/com/android/incallui/res/values/cm_strings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+     Copyright (C) 2013-2014 The CyanogenMod Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="call_recording_failed_message">Failed to start call recording</string>
+    <string name="call_recording_file_location">Saved call recording to <xliff:g id="filename">%s</xliff:g></string>
+    <string name="onscreenCallRecordText">Record call</string>
+    <string name="onscreenCallRecordingText">Recording call - <xliff:g id="duration" example="00:10">%1$s</xliff:g></string>
+    <string name="onscreenStopCallRecordText">Stop recording</string>
+    <string name="recording_warning_title">Enable call recording?</string>
+    <string name="recording_warning_text">Notice: You are responsible for compliance with any laws, regulations and rules that apply to the use of call recording functionality and the use or distribution of those recordings.</string>
+</resources>
diff --git a/java/com/android/incallui/res/values/colors.xml b/java/com/android/incallui/res/values/colors.xml
deleted file mode 100644
index d53a86b..0000000
--- a/java/com/android/incallui/res/values/colors.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources>
-  <color name="DO_NOT_USE_OR_I_WILL_BREAK_YOU_text_span_tertiary_button">#1A73E8</color>
-</resources>
\ No newline at end of file
diff --git a/java/com/android/incallui/res/values/lineage_config.xml b/java/com/android/incallui/res/values/lineage_config.xml
new file mode 100644
index 0000000..e9a958d
--- /dev/null
+++ b/java/com/android/incallui/res/values/lineage_config.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <!-- Whether to check that the proximity is unblocked before showing the incoming call UI. -->
+  <bool name="config_answer_proximity_sensor_enabled">true</bool>
+</resources>
diff --git a/java/com/android/incallui/res/values/strings.xml b/java/com/android/incallui/res/values/strings.xml
index c18ee49..687ae14 100644
--- a/java/com/android/incallui/res/values/strings.xml
+++ b/java/com/android/incallui/res/values/strings.xml
@@ -64,41 +64,6 @@
   <string name="notification_incoming_video_call">Incoming video call</string>
   <!-- The "label" of the in-call Notification for an incoming ringing call on a device with multiple SIMs. [CHAR LIMIT=60] -->
   <string name="notification_incoming_call_mutli_sim">Incoming call via <xliff:g id="sim_label" example="SIM 1">%1$s</xliff:g></string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] -->
-  <string name="notification_incoming_call_with_photo">Incoming call with photo</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] -->
-  <string name="notification_incoming_call_with_message">Incoming call with message</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] -->
-  <string name="notification_incoming_call_with_location">Incoming call with location</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". If still can't meet, replace with "Incoming call with attachments." -->
-  <string name="notification_incoming_call_with_photo_message">Incoming call with photo and message</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". If still can't meet, replace with "Incoming call with attachments." -->
-  <string name="notification_incoming_call_with_photo_location">Incoming call with photo and location</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". If still can't meet, replace with "Incoming call with attachments." -->
-  <string name="notification_incoming_call_with_message_location">Incoming call with message and location</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". If still can't meet, replace with "Incoming call with attachments." -->
-  <string name="notification_incoming_call_with_photo_message_location">Incoming call with photo, message and location</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] -->
-  <string name="notification_incoming_call_attachments">Incoming call with attachments</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] -->
-  <string name="important_notification_incoming_call">Important incoming call</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". -->
-  <string name="important_notification_incoming_call_with_photo">Important incoming call with photo</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". -->
-  <string name="important_notification_incoming_call_with_message">Important incoming call with message</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". -->
-  <string name="important_notification_incoming_call_with_location">Important incoming call with location</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". If still can't meet, replace with "Incoming call with attachments." -->
-  <string name="important_notification_incoming_call_with_photo_message">Important incoming call with photo and message</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". If still can't meet, replace with "Incoming call with attachments." -->
-  <string name="important_notification_incoming_call_with_photo_location">Important incoming call with photo and location</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". If still can't meet, replace with "Incoming call with attachments." -->
-  <string name="important_notification_incoming_call_with_message_location">Important incoming call with message and location</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". If still can't meet, replace with "Incoming call with attachments." -->
-  <string name="important_notification_incoming_call_with_photo_message_location">Important incoming call with photo, message and location</string>
-  <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=50] If can't meet limit, remove "Incoming". -->
-  <string name="important_notification_incoming_call_attachments">Important incoming call with attachments</string>
-
 
   <!-- The "label" of the in-call Notification for an incoming ringing call. [CHAR LIMIT=60] -->
   <string name="notification_incoming_work_call">Incoming work call</string>
@@ -194,9 +159,6 @@
   </string>
   <string name="video_call_lte_to_wifi_failed_do_not_show">Do not show this again</string>
 
-  <!-- Text for bubble return-to-call button -->
-  <string name="bubble_return_to_call">Back to call</string>
-
   <!-- Title for RTT request dialog. [CHAR LIMIT=60] -->
   <string name="rtt_request_dialog_title">Join RTT call?</string>
 
diff --git a/java/com/android/incallui/ringtone/DialerRingtoneManager.java b/java/com/android/incallui/ringtone/DialerRingtoneManager.java
index 777133e..6356be2 100644
--- a/java/com/android/incallui/ringtone/DialerRingtoneManager.java
+++ b/java/com/android/incallui/ringtone/DialerRingtoneManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,10 +20,14 @@
 import android.content.ContentResolver;
 import android.net.Uri;
 import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.incallui.call.CallList;
+import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.state.DialerCallState;
+
 import java.util.Objects;
 
 /**
@@ -38,7 +43,6 @@
   private static final boolean IS_DIALER_RINGING_ENABLED = false;
   private final InCallTonePlayer inCallTonePlayer;
   private final CallList callList;
-  private Boolean isDialerRingingEnabledForTesting;
 
   /**
    * Creates the DialerRingtoneManager with the given {@link InCallTonePlayer}.
@@ -48,7 +52,7 @@
    * @throws NullPointerException if inCallTonePlayer or callList are null
    */
   public DialerRingtoneManager(
-      @NonNull InCallTonePlayer inCallTonePlayer, @NonNull CallList callList) {
+          @NonNull InCallTonePlayer inCallTonePlayer, @NonNull CallList callList) {
     this.inCallTonePlayer = Objects.requireNonNull(inCallTonePlayer);
     this.callList = Objects.requireNonNull(callList);
   }
@@ -92,9 +96,7 @@
   }
 
   private boolean isDialerRingingEnabled() {
-    return isDialerRingingEnabledForTesting != null
-        ? isDialerRingingEnabledForTesting
-        : IS_DIALER_RINGING_ENABLED;
+    return IS_DIALER_RINGING_ENABLED;
   }
 
   /**
@@ -125,8 +127,4 @@
     }
     inCallTonePlayer.stop();
   }
-
-  void setDialerRingingEnabledForTesting(boolean status) {
-    isDialerRingingEnabledForTesting = status;
-  }
 }
diff --git a/java/com/android/incallui/ringtone/InCallTonePlayer.java b/java/com/android/incallui/ringtone/InCallTonePlayer.java
index dac244d..0d4bb2c 100644
--- a/java/com/android/incallui/ringtone/InCallTonePlayer.java
+++ b/java/com/android/incallui/ringtone/InCallTonePlayer.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,10 +19,13 @@
 
 import android.media.AudioManager;
 import android.media.ToneGenerator;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.incallui.Log;
 import com.android.incallui.async.PausableExecutor;
+
 import java.util.Objects;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -36,7 +40,8 @@
 
   public static final int VOLUME_RELATIVE_HIGH_PRIORITY = 80;
 
-  @NonNull private final ToneGeneratorFactory toneGeneratorFactory;
+  @NonNull
+  private final ToneGeneratorFactory toneGeneratorFactory;
   @NonNull private final PausableExecutor executor;
   private @Nullable CountDownLatch numPlayingTones;
 
@@ -73,13 +78,7 @@
     }
     final ToneGeneratorInfo info = getToneGeneratorInfo(tone);
     numPlayingTones = new CountDownLatch(1);
-    executor.execute(
-        new Runnable() {
-          @Override
-          public void run() {
-            playOnBackgroundThread(info);
-          }
-        });
+    executor.execute(() -> playOnBackgroundThread(info));
   }
 
   private ToneGeneratorInfo getToneGeneratorInfo(int tone) {
@@ -108,15 +107,8 @@
       Log.v(this, "Starting tone " + info);
       toneGenerator = toneGeneratorFactory.newInCallToneGenerator(info.stream, info.volume);
       toneGenerator.startTone(info.tone);
-      /*
-       * During tests, this will block until the tests call mExecutor.ackMilestone. This call
-       * allows for synchronization to the point where the tone has started playing.
-       */
-      executor.milestone();
       if (numPlayingTones != null) {
         numPlayingTones.await(info.toneLengthMillis, TimeUnit.MILLISECONDS);
-        // Allows for synchronization to the point where the tone has completed playing.
-        executor.milestone();
       }
     } catch (InterruptedException e) {
       Log.w(this, "Interrupted while playing in-call tone.");
@@ -127,8 +119,6 @@
       if (numPlayingTones != null) {
         numPlayingTones.countDown();
       }
-      // Allows for synchronization to the point where this background thread has cleaned up.
-      executor.milestone();
     }
   }
 
diff --git a/java/com/android/incallui/rtt/impl/AdvisoryViewHolder.java b/java/com/android/incallui/rtt/impl/AdvisoryViewHolder.java
index 8f081be..377b63b 100644
--- a/java/com/android/incallui/rtt/impl/AdvisoryViewHolder.java
+++ b/java/com/android/incallui/rtt/impl/AdvisoryViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,12 +17,13 @@
 
 package com.android.incallui.rtt.impl;
 
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.view.View;
 
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
 /** ViewHolder class for RTT advisory text. */
-public class AdvisoryViewHolder extends ViewHolder {
+public class AdvisoryViewHolder extends RecyclerView.ViewHolder {
 
   public AdvisoryViewHolder(@NonNull View itemView) {
     super(itemView);
diff --git a/java/com/android/incallui/rtt/impl/AndroidManifest.xml b/java/com/android/incallui/rtt/impl/AndroidManifest.xml
deleted file mode 100644
index 7f58f71..0000000
--- a/java/com/android/incallui/rtt/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest package="com.android.incallui.rtt.impl">
-</manifest>
diff --git a/java/com/android/incallui/rtt/impl/AudioSelectMenu.java b/java/com/android/incallui/rtt/impl/AudioSelectMenu.java
index 1c83637..cc2866a 100644
--- a/java/com/android/incallui/rtt/impl/AudioSelectMenu.java
+++ b/java/com/android/incallui/rtt/impl/AudioSelectMenu.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
 import android.telecom.CallAudioState;
 import android.view.View;
 import android.widget.PopupWindow;
+
 import com.android.incallui.incall.protocol.InCallButtonUiDelegate;
 
 /** Audio select menu for RTT call. */
@@ -71,10 +73,7 @@
     } else if (audioState.getRoute() == itemRoute) {
       item.setChecked(true);
     }
-    item.setOnClickListener(
-        (v) -> {
-          inCallButtonUiDelegate.setAudioRoute(itemRoute);
-        });
+    item.setOnClickListener(v -> inCallButtonUiDelegate.setAudioRoute(itemRoute));
   }
 
   void setAudioState(CallAudioState audioState) {
diff --git a/java/com/android/incallui/rtt/impl/RttChatAdapter.java b/java/com/android/incallui/rtt/impl/RttChatAdapter.java
index 1603778..dd1eaab 100644
--- a/java/com/android/incallui/rtt/impl/RttChatAdapter.java
+++ b/java/com/android/incallui/rtt/impl/RttChatAdapter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,25 +19,28 @@
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.IntDef;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.rtt.RttTranscript;
 import com.android.dialer.rtt.RttTranscriptMessage;
 import com.android.incallui.rtt.protocol.RttChatMessage;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.List;
 
 /** Adapter class for holding RTT chat data. */
-public class RttChatAdapter extends RecyclerView.Adapter<ViewHolder> {
+public class RttChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
 
   /** IntDef for the different types of rows that can be shown in the call log. */
   @Retention(RetentionPolicy.SOURCE)
@@ -74,7 +78,7 @@
   }
 
   @Override
-  public ViewHolder onCreateViewHolder(ViewGroup parent, @RowType int viewType) {
+  public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, @RowType int viewType) {
     LayoutInflater layoutInflater = LayoutInflater.from(context);
     switch (viewType) {
       case RowType.ADVISORY:
@@ -98,7 +102,7 @@
   }
 
   @Override
-  public void onBindViewHolder(ViewHolder viewHolder, int itemPosition) {
+  public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int itemPosition) {
     switch (getItemViewType(itemPosition)) {
       case RowType.ADVISORY:
         return;
diff --git a/java/com/android/incallui/rtt/impl/RttChatFragment.java b/java/com/android/incallui/rtt/impl/RttChatFragment.java
index 649e808..5715c14 100644
--- a/java/com/android/incallui/rtt/impl/RttChatFragment.java
+++ b/java/com/android/incallui/rtt/impl/RttChatFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,13 +21,6 @@
 import android.content.Context;
 import android.os.Bundle;
 import android.os.SystemClock;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.OnScrollListener;
 import android.telecom.CallAudioState;
 import android.text.Editable;
 import android.text.TextUtils;
@@ -44,13 +38,20 @@
 import android.widget.ImageButton;
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.UiUtil;
 import com.android.dialer.lettertile.LetterTileDrawable;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
 import com.android.dialer.rtt.RttTranscript;
 import com.android.dialer.rtt.RttTranscriptMessage;
 import com.android.dialer.util.DrawableConverter;
@@ -73,6 +74,7 @@
 import com.android.incallui.rtt.protocol.RttCallScreen;
 import com.android.incallui.rtt.protocol.RttCallScreenDelegate;
 import com.android.incallui.rtt.protocol.RttCallScreenDelegateFactory;
+
 import java.util.List;
 
 /** RTT chat fragment to show chat bubbles. */
@@ -130,9 +132,6 @@
     inCallButtonUiDelegate =
         FragmentUtils.getParent(this, InCallButtonUiDelegateFactory.class)
             .newInCallButtonUiDelegate();
-    if (savedInstanceState != null) {
-      inCallButtonUiDelegate.onRestoreInstanceState(savedInstanceState);
-    }
     inCallScreenDelegate =
         FragmentUtils.getParentUnsafe(this, InCallScreenDelegateFactory.class)
             .newInCallScreenDelegate();
@@ -202,7 +201,7 @@
     adapter = new RttChatAdapter(getContext(), this);
     recyclerView.setAdapter(adapter);
     recyclerView.addOnScrollListener(
-        new OnScrollListener() {
+        new RecyclerView.OnScrollListener() {
           @Override
           public void onScrollStateChanged(RecyclerView recyclerView, int i) {
             if (i == RecyclerView.SCROLL_STATE_DRAGGING) {
@@ -225,7 +224,6 @@
     submitButton = view.findViewById(R.id.rtt_chat_submit_button);
     submitButton.setOnClickListener(
         v -> {
-          Logger.get(getContext()).logImpression(DialerImpression.Type.RTT_SEND_BUTTON_CLICKED);
           adapter.submitLocalMessage();
           resumeInput("");
           rttCallScreenDelegate.onLocalMessage(Constants.BUBBLE_BREAKER);
@@ -261,8 +259,6 @@
   public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
     if (actionId == EditorInfo.IME_ACTION_SEND) {
       if (!TextUtils.isEmpty(editText.getText())) {
-        Logger.get(getContext())
-            .logImpression(DialerImpression.Type.RTT_KEYBOARD_SEND_BUTTON_CLICKED);
         submitButton.performClick();
       }
       return true;
@@ -571,9 +567,6 @@
   public void updateButtonStates() {}
 
   @Override
-  public void updateInCallButtonUiColors(int color) {}
-
-  @Override
   public Fragment getInCallButtonUiFragment() {
     return this;
   }
@@ -595,4 +588,13 @@
 
   @Override
   public void onAudioRouteSelectorDismiss() {}
+
+  @Override
+  public void requestCallRecordingPermissions(String[] permissions) {}
+
+  @Override
+  public void setCallRecordingDuration(long duration) {}
+
+  @Override
+  public void setCallRecordingState(boolean isRecording) {}
 }
diff --git a/java/com/android/incallui/rtt/impl/RttChatMessageViewHolder.java b/java/com/android/incallui/rtt/impl/RttChatMessageViewHolder.java
index 56161ec..59e85c5 100644
--- a/java/com/android/incallui/rtt/impl/RttChatMessageViewHolder.java
+++ b/java/com/android/incallui/rtt/impl/RttChatMessageViewHolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,17 +19,20 @@
 
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.view.Gravity;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.LinearLayout.LayoutParams;
 import android.widget.TextView;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.dialer.R;
 import com.android.incallui.rtt.protocol.RttChatMessage;
 
 /** ViewHolder class for RTT chat message bubble. */
-public class RttChatMessageViewHolder extends ViewHolder {
+public class RttChatMessageViewHolder extends RecyclerView.ViewHolder {
 
   private final TextView messageTextView;
   private final Resources resources;
diff --git a/java/com/android/incallui/rtt/impl/RttCheckableButton.java b/java/com/android/incallui/rtt/impl/RttCheckableButton.java
index c0c8599..5bb8600 100644
--- a/java/com/android/incallui/rtt/impl/RttCheckableButton.java
+++ b/java/com/android/incallui/rtt/impl/RttCheckableButton.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,11 +23,12 @@
 import android.os.Parcelable;
 import android.util.AttributeSet;
 import android.view.SoundEffectConstants;
-import android.widget.Button;
 import android.widget.Checkable;
 
+import androidx.appcompat.widget.AppCompatButton;
+
 /** Image button that maintains a checked state. */
-public class RttCheckableButton extends Button implements Checkable {
+public class RttCheckableButton extends AppCompatButton implements Checkable {
 
   private static final int[] CHECKED_STATE_SET = {android.R.attr.state_checked};
 
@@ -51,12 +53,7 @@
   }
 
   public RttCheckableButton(Context context, AttributeSet attrs, int defStyleAttr) {
-    this(context, attrs, defStyleAttr, 0);
-  }
-
-  public RttCheckableButton(
-      Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-    super(context, attrs, defStyleAttr, defStyleRes);
+    super(context, attrs, defStyleAttr);
     init(context, attrs);
   }
 
diff --git a/java/com/android/incallui/rtt/impl/RttOverflowMenu.java b/java/com/android/incallui/rtt/impl/RttOverflowMenu.java
index e9f9d04..4654b0a 100644
--- a/java/com/android/incallui/rtt/impl/RttOverflowMenu.java
+++ b/java/com/android/incallui/rtt/impl/RttOverflowMenu.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
 import android.telecom.CallAudioState;
 import android.view.View;
 import android.widget.PopupWindow;
+
 import com.android.incallui.incall.protocol.InCallButtonUiDelegate;
 import com.android.incallui.incall.protocol.InCallScreenDelegate;
 import com.android.incallui.rtt.impl.RttCheckableButton.OnCheckedChangeListener;
diff --git a/java/com/android/incallui/rtt/impl/res/layout/frag_rtt_chat.xml b/java/com/android/incallui/rtt/impl/res/layout/frag_rtt_chat.xml
index cff2b3f..9fc4e76 100644
--- a/java/com/android/incallui/rtt/impl/res/layout/frag_rtt_chat.xml
+++ b/java/com/android/incallui/rtt/impl/res/layout/frag_rtt_chat.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2018 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -15,11 +16,12 @@
   ~ limitations under the License
   -->
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:fitsSystemWindows="true">
 
-  <android.support.v7.widget.RecyclerView
+  <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/rtt_recycler_view"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
@@ -66,8 +68,8 @@
         android:backgroundTintMode="multiply"
         android:contentDescription="@string/content_description_rtt_check_button"
         android:src="@drawable/quantum_ic_done_vd_theme_24"
-        android:tint="@color/submit_button_color"
-        android:visibility="gone"/>
+        android:visibility="gone"
+        app:tint="@color/submit_button_color" />
   </LinearLayout>
 
   <FrameLayout
diff --git a/java/com/android/incallui/rtt/impl/res/layout/rtt_banner.xml b/java/com/android/incallui/rtt/impl/res/layout/rtt_banner.xml
index 065aa8c..b8e1a21 100644
--- a/java/com/android/incallui/rtt/impl/res/layout/rtt_banner.xml
+++ b/java/com/android/incallui/rtt/impl/res/layout/rtt_banner.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2018 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -15,6 +16,7 @@
   ~ limitations under the License
   -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -36,7 +38,7 @@
         android:contentDescription="@string/incall_content_description_end_call"
         android:scaleType="fitXY"
         android:src="@drawable/quantum_ic_call_end_vd_theme_24"
-        android:tint="@color/dialer_end_call_button_color"/>
+        app:tint="@color/dialer_end_call_button_color" />
     <LinearLayout
         android:layout_width="0dp"
         android:layout_height="match_parent"
@@ -75,7 +77,7 @@
         android:contentDescription="@string/content_description_overflow"
         android:scaleType="fitXY"
         android:src="@drawable/quantum_ic_more_vert_vd_theme_24"
-        android:tint="?colorIconOnUnthemedDarkBackground"/>
+        app:tint="?colorIconOnUnthemedDarkBackground" />
 
   </LinearLayout>
   <FrameLayout
@@ -93,4 +95,4 @@
       android:textColor="#DD000000"
       android:textSize="14sp"/>
 
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/java/com/android/incallui/rtt/impl/res/layout/rtt_transcript_advisory.xml b/java/com/android/incallui/rtt/impl/res/layout/rtt_transcript_advisory.xml
index a2cf3e7..aa20f1c 100644
--- a/java/com/android/incallui/rtt/impl/res/layout/rtt_transcript_advisory.xml
+++ b/java/com/android/incallui/rtt/impl/res/layout/rtt_transcript_advisory.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2018 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -15,6 +16,7 @@
   ~ limitations under the License
   -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:paddingTop="24dp"
@@ -25,8 +27,8 @@
       android:layout_height="16dp"
       android:layout_gravity="center_horizontal"
       android:src="@drawable/quantum_ic_question_answer_vd_theme_24"
-      android:tint="#DEFFFFFF"
-      android:tintMode="src_in"/>
+      android:tintMode="src_in"
+      app:tint="#DEFFFFFF" />
   <TextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
@@ -38,4 +40,4 @@
       android:text="@string/rtt_transcript_advisory"
       android:textColor="#FFFFFF"
       android:textSize="12sp"/>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/java/com/android/incallui/rtt/protocol/AndroidManifest.xml b/java/com/android/incallui/rtt/protocol/AndroidManifest.xml
deleted file mode 100644
index 05f4757..0000000
--- a/java/com/android/incallui/rtt/protocol/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.incallui.rtt.protocol">
-  <uses-sdk
-      android:minSdkVersion="24"
-      android:targetSdkVersion="30"/>
-</manifest>
\ No newline at end of file
diff --git a/java/com/android/incallui/rtt/protocol/RttCallScreen.java b/java/com/android/incallui/rtt/protocol/RttCallScreen.java
index 420274c..6a4622d 100644
--- a/java/com/android/incallui/rtt/protocol/RttCallScreen.java
+++ b/java/com/android/incallui/rtt/protocol/RttCallScreen.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,12 @@
 
 package com.android.incallui.rtt.protocol;
 
-import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
+
 import com.android.dialer.rtt.RttTranscript;
 import com.android.dialer.rtt.RttTranscriptMessage;
 import com.android.incallui.incall.protocol.InCallScreen;
+
 import java.util.List;
 
 /** Interface for call RTT call module. */
diff --git a/java/com/android/incallui/rtt/protocol/RttChatMessage.java b/java/com/android/incallui/rtt/protocol/RttChatMessage.java
index 5680529..c9f3e2b 100644
--- a/java/com/android/incallui/rtt/protocol/RttChatMessage.java
+++ b/java/com/android/incallui/rtt/protocol/RttChatMessage.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +17,13 @@
 
 package com.android.incallui.rtt.protocol;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.rtt.RttTranscript;
 import com.android.dialer.rtt.RttTranscriptMessage;
 import com.google.common.base.Splitter;
+
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
diff --git a/java/com/android/incallui/sessiondata/AndroidManifest.xml b/java/com/android/incallui/sessiondata/AndroidManifest.xml
deleted file mode 100644
index 11babd9..0000000
--- a/java/com/android/incallui/sessiondata/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
- ~ Copyright (C) 2016 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~      http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest
-  package="com.android.incallui.sessiondata">
-</manifest>
diff --git a/java/com/android/incallui/sessiondata/AvatarPresenter.java b/java/com/android/incallui/sessiondata/AvatarPresenter.java
index e7303b9..948dd75 100644
--- a/java/com/android/incallui/sessiondata/AvatarPresenter.java
+++ b/java/com/android/incallui/sessiondata/AvatarPresenter.java
@@ -16,9 +16,10 @@
 
 package com.android.incallui.sessiondata;
 
-import android.support.annotation.Nullable;
 import android.widget.ImageView;
 
+import androidx.annotation.Nullable;
+
 /** Interface for interacting with Fragments that can be put in the data container */
 public interface AvatarPresenter {
 
diff --git a/java/com/android/incallui/sessiondata/MultimediaFragment.java b/java/com/android/incallui/sessiondata/MultimediaFragment.java
index ec3a6ff..8e7ab8f 100644
--- a/java/com/android/incallui/sessiondata/MultimediaFragment.java
+++ b/java/com/android/incallui/sessiondata/MultimediaFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,10 +21,6 @@
 import android.location.Location;
 import android.net.Uri;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.Fragment;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -31,11 +28,16 @@
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.dialer.R;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.multimedia.MultimediaData;
 import com.android.dialer.theme.base.ThemeComponent;
-import com.android.incallui.maps.MapsComponent;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.DataSource;
 import com.bumptech.glide.load.engine.GlideException;
@@ -76,8 +78,7 @@
         isSpam);
   }
 
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  public static MultimediaFragment newInstance(
+  private static MultimediaFragment newInstance(
       @Nullable String subject,
       @Nullable Uri imageUri,
       @Nullable Location location,
@@ -118,25 +119,7 @@
 
     boolean hasImage = getImageUri() != null;
     boolean hasSubject = !TextUtils.isEmpty(getSubject());
-    boolean hasMap = getLocation() != null;
-    if (hasMap && MapsComponent.get(getContext()).getMaps().isAvailable()) {
-      if (hasImage) {
-        if (hasSubject) {
-          LogUtil.i("MultimediaFragment.onCreateView", "show text, image, location layout");
-          return layoutInflater.inflate(
-              R.layout.fragment_composer_text_image_frag, viewGroup, false);
-        } else {
-          LogUtil.i("MultimediaFragment.onCreateView", "show image, location layout");
-          return layoutInflater.inflate(R.layout.fragment_composer_image_frag, viewGroup, false);
-        }
-      } else if (hasSubject) {
-        LogUtil.i("MultimediaFragment.onCreateView", "show text, location layout");
-        return layoutInflater.inflate(R.layout.fragment_composer_text_frag, viewGroup, false);
-      } else {
-        LogUtil.i("MultimediaFragment.onCreateView", "show location layout");
-        return layoutInflater.inflate(R.layout.fragment_composer_frag, viewGroup, false);
-      }
-    } else if (hasImage) {
+    if (hasImage) {
       if (hasSubject) {
         LogUtil.i("MultimediaFragment.onCreateView", "show text, image layout");
         return layoutInflater.inflate(R.layout.fragment_composer_text_image, viewGroup, false);
@@ -164,7 +147,7 @@
         && getImageUri() == null
         && !TextUtils.isEmpty(getSubject())) {
       ((ImageView) view.findViewById(R.id.spam_image))
-          .setImageResource(R.drawable.quantum_ic_message_white_24);
+          .setImageResource(R.drawable.quantum_ic_message_vd_theme_24);
       ((TextView) view.findViewById(R.id.spam_text)).setText(R.string.spam_message_text);
     }
 
@@ -209,12 +192,6 @@
     FrameLayout fragmentHolder = view.findViewById(R.id.answer_message_frag);
     if (fragmentHolder != null) {
       fragmentHolder.setClipToOutline(true);
-      Fragment mapFragment =
-          MapsComponent.get(getContext()).getMaps().createStaticMapFragment(getLocation());
-      getChildFragmentManager()
-          .beginTransaction()
-          .replace(R.id.answer_message_frag, mapFragment)
-          .commitNow();
     }
     avatarImageView = view.findViewById(R.id.answer_message_avatar);
     if (avatarImageView != null) {
@@ -250,12 +227,12 @@
 
   @Nullable
   public Uri getImageUri() {
-    return getArguments().getParcelable(ARG_IMAGE);
+    return getArguments().getParcelable(ARG_IMAGE, Uri.class);
   }
 
   @Nullable
   public Location getLocation() {
-    return getArguments().getParcelable(ARG_LOCATION);
+    return getArguments().getParcelable(ARG_LOCATION, Location.class);
   }
 
   /** Interface for notifying the fragment parent of changes. */
diff --git a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_frag.xml b/java/com/android/incallui/sessiondata/res/layout/fragment_composer_frag.xml
deleted file mode 100644
index e5c8798..0000000
--- a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_frag.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="16dp"
-    android:paddingStart="@dimen/answer_message_margin_start_end"
-    android:paddingEnd="@dimen/answer_message_margin_start_end">
-
-  <FrameLayout
-      android:id="@id/answer_message_frag"
-      android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      android:layout_marginTop="@dimen/answer_message_contents_margin_top"
-      android:layout_marginBottom="4dp"
-      android:layout_alignTop="@+id/answer_message_avatar"
-      android:background="@drawable/answer_data_background"
-      android:elevation="@dimen/answer_data_elevation"
-      android:outlineProvider="background"/>
-
-  <ImageView
-      android:id="@id/answer_message_avatar"
-      android:layout_width="@dimen/answer_message_avatar_size"
-      android:layout_height="@dimen/answer_message_avatar_size"
-      android:layout_centerHorizontal="true"
-      android:elevation="@dimen/answer_avatar_elevation"/>
-</RelativeLayout>
diff --git a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_image_frag.xml b/java/com/android/incallui/sessiondata/res/layout/fragment_composer_image_frag.xml
deleted file mode 100644
index 1cb2347..0000000
--- a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_image_frag.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="16dp"
-    android:paddingStart="@dimen/answer_message_margin_start_end"
-    android:paddingEnd="@dimen/answer_message_margin_start_end">
-
-  <LinearLayout
-      android:id="@id/answer_message_container"
-      android:orientation="horizontal"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:layout_marginTop="@dimen/answer_message_contents_margin_top"
-      android:layout_alignTop="@+id/answer_message_avatar"
-      android:layout_marginBottom="@dimen/answer_data_elevation"
-      android:elevation="@dimen/answer_data_elevation"
-      android:background="@drawable/answer_data_background"
-      android:outlineProvider="background">
-
-    <ImageView
-        android:id="@id/answer_message_image"
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:scaleType="centerCrop"/>
-
-    <FrameLayout
-        android:id="@id/answer_message_frag"
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_weight="1"/>
-  </LinearLayout>
-
-  <ProgressBar
-      android:id="@+id/loading_spinner"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_centerInParent="true"
-      android:elevation="@dimen/answer_data_elevation"/>
-
-  <ImageView
-      android:id="@id/answer_message_avatar"
-      android:layout_width="@dimen/answer_message_avatar_size"
-      android:layout_height="@dimen/answer_message_avatar_size"
-      android:layout_centerHorizontal="true"
-      android:elevation="@dimen/answer_avatar_elevation"/>
-</RelativeLayout>
diff --git a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_text.xml b/java/com/android/incallui/sessiondata/res/layout/fragment_composer_text.xml
index 5da3cc4..fc5ab9d 100644
--- a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_text.xml
+++ b/java/com/android/incallui/sessiondata/res/layout/fragment_composer_text.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2016 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -23,7 +24,7 @@
     android:paddingStart="@dimen/answer_message_margin_start_end"
     android:paddingEnd="@dimen/answer_message_margin_start_end">
 
-  <android.support.v7.widget.AppCompatTextView
+  <androidx.appcompat.widget.AppCompatTextView
       android:id="@id/answer_message_text"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
diff --git a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_text_frag.xml b/java/com/android/incallui/sessiondata/res/layout/fragment_composer_text_frag.xml
deleted file mode 100644
index 4a73ef6..0000000
--- a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_text_frag.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="16dp"
-    android:paddingStart="@dimen/answer_message_margin_start_end"
-    android:paddingEnd="@dimen/answer_message_margin_start_end">
-
-  <LinearLayout
-      android:id="@id/answer_message_container"
-      android:orientation="vertical"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:layout_marginTop="@dimen/answer_message_contents_margin_top"
-      android:layout_alignTop="@+id/answer_message_avatar"
-      android:layout_marginBottom="@dimen/answer_data_elevation"
-      android:elevation="@dimen/answer_data_elevation"
-      android:background="@drawable/answer_data_background"
-      android:outlineProvider="background">
-
-    <FrameLayout
-        android:id="@id/answer_message_frag"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="3"/>
-
-    <TextView
-        android:id="@id/answer_message_text"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="2"
-        android:paddingStart="18dp"
-        android:paddingEnd="18dp"
-        android:gravity="center"
-        android:maxLines="2"
-        android:textAppearance="@style/Dialer.Incall.TextAppearance.Message"/>
-  </LinearLayout>
-
-  <ImageView
-      android:id="@id/answer_message_avatar"
-      android:layout_width="@dimen/answer_message_avatar_size"
-      android:layout_height="@dimen/answer_message_avatar_size"
-      android:layout_centerHorizontal="true"
-      android:elevation="@dimen/answer_avatar_elevation"/>
-</RelativeLayout>
\ No newline at end of file
diff --git a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_text_image_frag.xml b/java/com/android/incallui/sessiondata/res/layout/fragment_composer_text_image_frag.xml
deleted file mode 100644
index 4abdbb2..0000000
--- a/java/com/android/incallui/sessiondata/res/layout/fragment_composer_text_image_frag.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="16dp"
-    android:paddingStart="@dimen/answer_message_margin_start_end"
-    android:paddingEnd="@dimen/answer_message_margin_start_end">
-
-  <LinearLayout
-      android:id="@id/answer_message_container"
-      android:orientation="vertical"
-      android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      android:layout_marginTop="@dimen/answer_message_contents_margin_top"
-      android:layout_alignTop="@+id/answer_message_avatar"
-      android:layout_marginBottom="@dimen/answer_data_elevation"
-      android:elevation="@dimen/answer_data_elevation"
-      android:background="@drawable/answer_data_background"
-      android:outlineProvider="background">
-
-    <LinearLayout
-        android:orientation="horizontal"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="3">
-
-      <ImageView
-          android:id="@id/answer_message_image"
-          android:layout_width="0dp"
-          android:layout_height="match_parent"
-          android:layout_weight="1"
-          android:scaleType="centerCrop"/>
-
-      <FrameLayout
-          android:id="@id/answer_message_frag"
-          android:layout_width="0dp"
-          android:layout_height="match_parent"
-          android:layout_weight="1"/>
-    </LinearLayout>
-
-    <TextView
-        android:id="@id/answer_message_text"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="2"
-        android:paddingStart="18dp"
-        android:paddingEnd="18dp"
-        android:gravity="center"
-        android:maxLines="2"
-        android:textAppearance="@style/Dialer.Incall.TextAppearance.Message"/>
-  </LinearLayout>
-
-  <ProgressBar
-      android:id="@+id/loading_spinner"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_centerInParent="true"
-      android:elevation="@dimen/answer_data_elevation"/>
-
-  <ImageView
-      android:id="@id/answer_message_avatar"
-      android:layout_width="@dimen/answer_message_avatar_size"
-      android:layout_height="@dimen/answer_message_avatar_size"
-      android:layout_centerHorizontal="true"
-      android:elevation="@dimen/answer_avatar_elevation"/>
-</RelativeLayout>
\ No newline at end of file
diff --git a/java/com/android/incallui/sessiondata/res/layout/fragment_spam.xml b/java/com/android/incallui/sessiondata/res/layout/fragment_spam.xml
index 65535b1..d068985 100644
--- a/java/com/android/incallui/sessiondata/res/layout/fragment_spam.xml
+++ b/java/com/android/incallui/sessiondata/res/layout/fragment_spam.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -15,6 +16,7 @@
   ~ limitations under the License
   -->
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingTop="16dp"
@@ -37,8 +39,8 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginBottom="18dp"
-        android:src="@drawable/quantum_ic_image_white_24"
-        android:tint="?colorIcon"/>
+        android:src="@drawable/quantum_ic_image_vd_theme_24"
+        app:tint="?colorIcon" />
 
     <TextView
         android:id="@+id/spam_text"
@@ -47,4 +49,4 @@
         android:text="@string/spam_photo_text"
         style="@style/Dialer.TextAppearance.Secondary2"/>
   </LinearLayout>
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/java/com/android/incallui/spam/AndroidManifest.xml b/java/com/android/incallui/spam/AndroidManifest.xml
deleted file mode 100644
index 66c9983..0000000
--- a/java/com/android/incallui/spam/AndroidManifest.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.incallui.spam">
-
-  <application>
-    <!--
-       Comments for attributes in SpamNotificationActivity:
-       taskAffinity=""             -> Open the dialog without opening the dialer app behind it
-       noHistory="true"            -> Navigating away finishes activity
-       excludeFromRecents="true"   -> Don't show in "recent apps" screen
-       -->
-    <activity
-        android:excludeFromRecents="true"
-        android:exported="false"
-        android:name=".SpamNotificationActivity"
-        android:noHistory="true"
-        android:taskAffinity=""
-        android:theme="@style/AfterCallNotificationTheme">
-    </activity>
-
-    <service
-        android:exported="false"
-        android:name=".SpamNotificationService"/>
-
-  </application>
-</manifest>
diff --git a/java/com/android/incallui/spam/SpamAlternativeExperimentUtil.java b/java/com/android/incallui/spam/SpamAlternativeExperimentUtil.java
deleted file mode 100644
index 27942d8..0000000
--- a/java/com/android/incallui/spam/SpamAlternativeExperimentUtil.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.spam;
-
-import android.content.Context;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-
-/** Returns resource id based on experiment number. */
-public final class SpamAlternativeExperimentUtil {
-
-  /**
-   * Returns the resource id using a resource name for an experiment where we want to use
-   * alternative words for the keyword spam.
-   */
-  public static int getResourceIdByName(String resourceName, Context context) {
-    long experiment =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong("experiment_for_alternative_spam_word", 230150);
-    LogUtil.i(
-        "SpamAlternativeExperimentUtil.getResourceIdByName", "using experiment %d", experiment);
-    String modifiedResourceName = resourceName;
-    if (experiment != 230150) {
-      modifiedResourceName = resourceName + "_" + experiment;
-    }
-    int resourceId =
-        context
-            .getResources()
-            .getIdentifier(modifiedResourceName, "string", context.getPackageName());
-    if (resourceId == 0) {
-      LogUtil.i(
-          "SpamAlternativeExperimentUtil.getResourceIdByName",
-          "not found experiment %d",
-          experiment);
-      return context.getResources().getIdentifier(resourceName, "string", context.getPackageName());
-    }
-    return resourceId;
-  }
-}
diff --git a/java/com/android/incallui/spam/SpamCallListListener.java b/java/com/android/incallui/spam/SpamCallListListener.java
index 7fd41f9..cc05509 100644
--- a/java/com/android/incallui/spam/SpamCallListListener.java
+++ b/java/com/android/incallui/spam/SpamCallListListener.java
@@ -16,72 +16,37 @@
 
 package com.android.incallui.spam;
 
-import android.app.Notification;
-import android.app.Notification.Builder;
-import android.app.PendingIntent;
 import android.content.Context;
-import android.content.Intent;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteException;
-import android.graphics.drawable.Icon;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.os.BuildCompat;
-import android.telecom.DisconnectCause;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
-import com.android.dialer.blocking.FilteredNumberCompat;
-import com.android.dialer.blocking.FilteredNumbersUtil;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorFactory;
-import com.android.dialer.location.GeoUtil;
-import com.android.dialer.logging.ContactLookupResult;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.notification.DialerNotificationManager;
-import com.android.dialer.notification.NotificationChannelId;
-import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.spam.SpamComponent;
 import com.android.dialer.telecom.TelecomUtil;
-import com.android.dialer.theme.base.ThemeComponent;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCall.CallHistoryStatus;
-import java.util.Random;
 
 /**
  * Creates notifications after a call ends if the call matched the criteria (incoming, accepted,
  * etc).
  */
 public class SpamCallListListener implements CallList.Listener {
-  /** Common ID for all spam notifications. */
-  static final int NOTIFICATION_ID = 1;
-  /** Prefix used to generate a unique tag for each spam notification. */
-  static final String NOTIFICATION_TAG_PREFIX = "SpamCall_";
-  /**
-   * Key used to associate all spam notifications into a single group. Note, unlike other group
-   * notifications in Dialer, spam notifications don't have a top level group summary notification.
-   * The group is still useful for things like rate limiting on a per group basis.
-   */
-  private static final String GROUP_KEY = "SpamCallGroup";
-
   private final Context context;
-  private final Random random;
   private final DialerExecutorFactory dialerExecutorFactory;
 
   public SpamCallListListener(Context context, @NonNull DialerExecutorFactory factory) {
-    this(context, new Random(), factory);
-  }
-
-  public SpamCallListListener(
-      Context context, Random rand, @NonNull DialerExecutorFactory factory) {
     this.context = context;
-    this.random = rand;
     this.dialerExecutorFactory = Assert.isNotNull(factory);
   }
 
@@ -151,7 +116,7 @@
         new NumberInCallHistoryWorker(context, number, call.getCountryIso());
     dialerExecutorFactory
         .createNonUiTaskBuilder(historyTask)
-        .onSuccess((result) -> call.setCallHistoryStatus(result))
+        .onSuccess(call::setCallHistoryStatus)
         .build()
         .executeParallel(null);
   }
@@ -175,297 +140,5 @@
   public void onInternationalCallOnWifi(@NonNull DialerCall call) {}
 
   @Override
-  public void onDisconnect(DialerCall call) {
-    if (!shouldShowAfterCallNotification(call)) {
-      return;
-    }
-    String e164Number =
-        PhoneNumberUtils.formatNumberToE164(
-            call.getNumber(), GeoUtil.getCurrentCountryIso(context));
-    if (!FilteredNumbersUtil.canBlockNumber(context, e164Number, call.getNumber())
-        || !FilteredNumberCompat.canAttemptBlockOperations(context)) {
-      return;
-    }
-    if (e164Number == null) {
-      return;
-    }
-    showNotification(call);
-  }
-
-  /** Posts the intent for displaying the after call spam notification to the user. */
-  private void showNotification(DialerCall call) {
-    if (call.isSpam()) {
-      maybeShowSpamCallNotification(call);
-    } else {
-      maybeShowNonSpamCallNotification(call);
-    }
-  }
-
-  /** Determines if the after call notification should be shown for the specified call. */
-  private boolean shouldShowAfterCallNotification(DialerCall call) {
-    if (!SpamComponent.get(context).spamSettings().isSpamNotificationEnabled()) {
-      return false;
-    }
-
-    String number = call.getNumber();
-    if (TextUtils.isEmpty(number)) {
-      return false;
-    }
-
-    DialerCall.LogState logState = call.getLogState();
-    if (!logState.isIncoming) {
-      return false;
-    }
-
-    if (logState.telecomDurationMillis <= 0) {
-      return false;
-    }
-
-    if (logState.contactLookupResult != ContactLookupResult.Type.NOT_FOUND
-        && logState.contactLookupResult != ContactLookupResult.Type.UNKNOWN_LOOKUP_RESULT_TYPE) {
-      return false;
-    }
-
-    int callHistoryStatus = call.getCallHistoryStatus();
-    if (callHistoryStatus == DialerCall.CALL_HISTORY_STATUS_PRESENT) {
-      return false;
-    } else if (callHistoryStatus == DialerCall.CALL_HISTORY_STATUS_UNKNOWN) {
-      LogUtil.i("SpamCallListListener.shouldShowAfterCallNotification", "history status unknown");
-      return false;
-    }
-
-    // Check if call disconnected because of either user hanging up
-    int disconnectCause = call.getDisconnectCause().getCode();
-    if (disconnectCause != DisconnectCause.LOCAL && disconnectCause != DisconnectCause.REMOTE) {
-      return false;
-    }
-
-    LogUtil.i("SpamCallListListener.shouldShowAfterCallNotification", "returning true");
-    return true;
-  }
-
-  /**
-   * Creates a notification builder with properties common among the two after call notifications.
-   */
-  private Notification.Builder createAfterCallNotificationBuilder(DialerCall call) {
-    Notification.Builder builder =
-        new Builder(context)
-            .setContentIntent(
-                createActivityPendingIntent(call, SpamNotificationActivity.ACTION_SHOW_DIALOG))
-            .setCategory(Notification.CATEGORY_STATUS)
-            .setPriority(Notification.PRIORITY_DEFAULT)
-            .setColor(ThemeComponent.get(context).theme().getColorPrimary())
-            .setSmallIcon(R.drawable.quantum_ic_call_end_vd_theme_24)
-            .setGroup(GROUP_KEY);
-    if (BuildCompat.isAtLeastO()) {
-      builder.setChannelId(NotificationChannelId.DEFAULT);
-    }
-    return builder;
-  }
-
-  private CharSequence getDisplayNumber(DialerCall call) {
-    String formattedNumber =
-        PhoneNumberHelper.formatNumber(
-            context, call.getNumber(), GeoUtil.getCurrentCountryIso(context));
-    return PhoneNumberUtils.createTtsSpannable(formattedNumber);
-  }
-
-  /** Display a notification with two actions: "add contact" and "report spam". */
-  private void showNonSpamCallNotification(DialerCall call) {
-    Notification.Builder notificationBuilder =
-        createAfterCallNotificationBuilder(call)
-            .setContentText(
-                context.getString(
-                    SpamAlternativeExperimentUtil.getResourceIdByName(
-                        "spam_notification_non_spam_call_collapsed_text", context)))
-            .setStyle(
-                new Notification.BigTextStyle()
-                    .bigText(
-                        context.getString(
-                            SpamAlternativeExperimentUtil.getResourceIdByName(
-                                "spam_notification_non_spam_call_expanded_text", context))))
-            // Add contact
-            .addAction(
-                new Notification.Action.Builder(
-                        R.drawable.quantum_ic_person_add_vd_theme_24,
-                        context.getString(R.string.spam_notification_add_contact_action_text),
-                        createActivityPendingIntent(
-                            call, SpamNotificationActivity.ACTION_ADD_TO_CONTACTS))
-                    .build())
-            // Block/report spam
-            .addAction(
-                new Notification.Action.Builder(
-                        R.drawable.quantum_ic_block_vd_theme_24,
-                        context.getString(R.string.spam_notification_report_spam_action_text),
-                        createBlockReportSpamPendingIntent(call))
-                    .build())
-            .setContentTitle(
-                context.getString(R.string.non_spam_notification_title, getDisplayNumber(call)));
-    DialerNotificationManager.notify(
-        context, getNotificationTagForCall(call), NOTIFICATION_ID, notificationBuilder.build());
-  }
-
-  private boolean shouldThrottleSpamNotification() {
-    int randomNumber = random.nextInt(100);
-    int thresholdForShowing =
-        SpamComponent.get(context).spamSettings().percentOfSpamNotificationsToShow();
-    if (thresholdForShowing == 0) {
-      LogUtil.d(
-          "SpamCallListListener.shouldThrottleSpamNotification",
-          "not showing - percentOfSpamNotificationsToShow is 0");
-      return true;
-    } else if (randomNumber < thresholdForShowing) {
-      LogUtil.d(
-          "SpamCallListListener.shouldThrottleSpamNotification",
-          "showing " + randomNumber + " < " + thresholdForShowing);
-      return false;
-    } else {
-      LogUtil.d(
-          "SpamCallListListener.shouldThrottleSpamNotification",
-          "not showing %d >= %d",
-          randomNumber,
-          thresholdForShowing);
-      return true;
-    }
-  }
-
-  private boolean shouldThrottleNonSpamNotification() {
-    int randomNumber = random.nextInt(100);
-    int thresholdForShowing =
-        SpamComponent.get(context).spamSettings().percentOfNonSpamNotificationsToShow();
-    if (thresholdForShowing == 0) {
-      LogUtil.d(
-          "SpamCallListListener.shouldThrottleNonSpamNotification",
-          "not showing non spam notification: percentOfNonSpamNotificationsToShow is 0");
-      return true;
-    } else if (randomNumber < thresholdForShowing) {
-      LogUtil.d(
-          "SpamCallListListener.shouldThrottleNonSpamNotification",
-          "showing non spam notification: %d < %d",
-          randomNumber,
-          thresholdForShowing);
-      return false;
-    } else {
-      LogUtil.d(
-          "SpamCallListListener.shouldThrottleNonSpamNotification",
-          "not showing non spam notification: %d >= %d",
-          randomNumber,
-          thresholdForShowing);
-      return true;
-    }
-  }
-
-  private void maybeShowSpamCallNotification(DialerCall call) {
-    if (shouldThrottleSpamNotification()) {
-      Logger.get(context)
-          .logCallImpression(
-              DialerImpression.Type.SPAM_NOTIFICATION_NOT_SHOWN_AFTER_THROTTLE,
-              call.getUniqueCallId(),
-              call.getTimeAddedMs());
-    } else {
-      Logger.get(context)
-          .logCallImpression(
-              DialerImpression.Type.SPAM_NOTIFICATION_SHOWN_AFTER_THROTTLE,
-              call.getUniqueCallId(),
-              call.getTimeAddedMs());
-      showSpamCallNotification(call);
-    }
-  }
-
-  private void maybeShowNonSpamCallNotification(DialerCall call) {
-    if (shouldThrottleNonSpamNotification()) {
-      Logger.get(context)
-          .logCallImpression(
-              DialerImpression.Type.NON_SPAM_NOTIFICATION_NOT_SHOWN_AFTER_THROTTLE,
-              call.getUniqueCallId(),
-              call.getTimeAddedMs());
-    } else {
-      Logger.get(context)
-          .logCallImpression(
-              DialerImpression.Type.NON_SPAM_NOTIFICATION_SHOWN_AFTER_THROTTLE,
-              call.getUniqueCallId(),
-              call.getTimeAddedMs());
-      showNonSpamCallNotification(call);
-    }
-  }
-
-  /** Display a notification with the action "not spam". */
-  private void showSpamCallNotification(DialerCall call) {
-    Notification.Builder notificationBuilder =
-        createAfterCallNotificationBuilder(call)
-            .setLargeIcon(Icon.createWithResource(context, R.drawable.spam_notification_icon))
-            .setContentText(
-                context.getString(
-                    SpamAlternativeExperimentUtil.getResourceIdByName(
-                        "spam_notification_spam_call_collapsed_text", context)))
-            // Not spam
-            .addAction(
-                new Notification.Action.Builder(
-                        R.drawable.quantum_ic_close_vd_theme_24,
-                        context.getString(
-                            SpamAlternativeExperimentUtil.getResourceIdByName(
-                                "spam_notification_was_not_spam_action_text", context)),
-                        createNotSpamPendingIntent(call))
-                    .build())
-            // Block/report spam
-            .addAction(
-                new Notification.Action.Builder(
-                        R.drawable.quantum_ic_block_vd_theme_24,
-                        context.getString(R.string.spam_notification_block_spam_action_text),
-                        createBlockReportSpamPendingIntent(call))
-                    .build())
-            .setContentTitle(
-                context.getString(
-                    SpamAlternativeExperimentUtil.getResourceIdByName(
-                        "spam_notification_title", context),
-                    getDisplayNumber(call)));
-    DialerNotificationManager.notify(
-        context, getNotificationTagForCall(call), NOTIFICATION_ID, notificationBuilder.build());
-  }
-
-
-
-  /**
-   * Creates a pending intent for block/report spam action. If enabled, this intent is forwarded to
-   * the {@link SpamNotificationActivity}, otherwise to the {@link SpamNotificationService}.
-   */
-  private PendingIntent createBlockReportSpamPendingIntent(DialerCall call) {
-    String action = SpamNotificationActivity.ACTION_MARK_NUMBER_AS_SPAM;
-    return SpamComponent.get(context).spamSettings().isDialogEnabledForSpamNotification()
-        ? createActivityPendingIntent(call, action)
-        : createServicePendingIntent(call, action);
-  }
-
-  /**
-   * Creates a pending intent for not spam action. If enabled, this intent is forwarded to the
-   * {@link SpamNotificationActivity}, otherwise to the {@link SpamNotificationService}.
-   */
-  private PendingIntent createNotSpamPendingIntent(DialerCall call) {
-    String action = SpamNotificationActivity.ACTION_MARK_NUMBER_AS_NOT_SPAM;
-    return SpamComponent.get(context).spamSettings().isDialogEnabledForSpamNotification()
-        ? createActivityPendingIntent(call, action)
-        : createServicePendingIntent(call, action);
-  }
-
-  /** Creates a pending intent for {@link SpamNotificationService}. */
-  private PendingIntent createServicePendingIntent(DialerCall call, String action) {
-    Intent intent =
-        SpamNotificationService.createServiceIntent(
-            context, call, action, getNotificationTagForCall(call), NOTIFICATION_ID);
-    return PendingIntent.getService(
-        context, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT);
-  }
-
-  /** Creates a pending intent for {@link SpamNotificationActivity}. */
-  private PendingIntent createActivityPendingIntent(DialerCall call, String action) {
-    Intent intent =
-        SpamNotificationActivity.createActivityIntent(
-            context, call, action, getNotificationTagForCall(call), NOTIFICATION_ID);
-    return PendingIntent.getActivity(
-        context, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT);
-  }
-
-  static String getNotificationTagForCall(@NonNull DialerCall call) {
-    return NOTIFICATION_TAG_PREFIX + call.getUniqueCallId();
-  }
+  public void onDisconnect(DialerCall call) {}
 }
diff --git a/java/com/android/incallui/spam/SpamNotificationActivity.java b/java/com/android/incallui/spam/SpamNotificationActivity.java
index 4c0c67c..6c39028 100644
--- a/java/com/android/incallui/spam/SpamNotificationActivity.java
+++ b/java/com/android/incallui/spam/SpamNotificationActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,34 +18,25 @@
 package com.android.incallui.spam;
 
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
-import android.provider.CallLog;
 import android.provider.ContactsContract;
-import android.support.annotation.Nullable;
-import android.support.v4.app.FragmentActivity;
-import android.support.v7.app.AlertDialog;
 import android.telephony.PhoneNumberUtils;
-import com.android.dialer.blocking.BlockedNumbersMigrator;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.FragmentActivity;
+
+import com.android.dialer.R;
 import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.blocking.FilteredNumberCompat;
-import com.android.dialer.blockreportspam.BlockReportSpamDialogs;
-import com.android.dialer.blockreportspam.BlockReportSpamDialogs.DialogFragmentForBlockingNumberAndOptionallyReportingAsSpam;
-import com.android.dialer.blockreportspam.BlockReportSpamDialogs.DialogFragmentForReportingNotSpam;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.location.GeoUtil;
 import com.android.dialer.logging.ContactLookupResult;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ReportingLocation;
 import com.android.dialer.notification.DialerNotificationManager;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
-import com.android.dialer.spam.SpamComponent;
-import com.android.dialer.spam.SpamSettings;
-import com.android.dialer.spam.promo.SpamBlockingPromoHelper;
 import com.android.incallui.call.DialerCall;
 
 /** Creates the after call notification dialogs. */
@@ -61,12 +53,6 @@
   static final String ACTION_MARK_NUMBER_AS_NOT_SPAM =
       "com.android.incallui.spam.ACTION_MARK_NUMBER_AS_NOT_SPAM";
 
-  static final String ACTION_ENABLE_SPAM_BLOCKING =
-      "com.android.incallui.spam.ACTION_ENABLE_SPAM_BLOCKING";
-
-  static final String ACTION_SHOW_SPAM_BLOCKING_PROMO_DIALOG =
-      "com.android.incallui.spam.ACTION_SHOW_SPAM_BLOCKING_PROMO_DIALOG";
-
   private static final String TAG = "SpamNotifications";
   private static final String EXTRA_NOTIFICATION_TAG = "notification_tag";
   private static final String EXTRA_NOTIFICATION_ID = "notification_id";
@@ -77,18 +63,7 @@
   private static final String CALL_INFO_KEY_CALL_ID = "call_id";
   private static final String CALL_INFO_KEY_START_TIME_MILLIS = "call_start_time_millis";
   private static final String CALL_INFO_CONTACT_LOOKUP_RESULT_TYPE = "contact_lookup_result_type";
-  private final DialogInterface.OnDismissListener dismissListener =
-      new DialogInterface.OnDismissListener() {
-        @Override
-        public void onDismiss(DialogInterface dialog) {
-          if (!isFinishing()) {
-            finish();
-          }
-        }
-      };
   private FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
-  private SpamSettings spamSettings;
-  private SpamBlockingPromoHelper spamBlockingPromoHelper;
 
   /**
    * Creates an intent to start this activity.
@@ -133,19 +108,6 @@
     return PhoneNumberUtils.createTtsSpannable(formattedNumber).toString();
   }
 
-  private void logCallImpression(DialerImpression.Type impression) {
-    logCallImpression(this, getCallInfo(), impression);
-  }
-
-  private static void logCallImpression(
-      Context context, Bundle bundle, DialerImpression.Type impression) {
-    Logger.get(context)
-        .logCallImpression(
-            impression,
-            bundle.getString(CALL_INFO_KEY_CALL_ID),
-            bundle.getLong(CALL_INFO_KEY_START_TIME_MILLIS, 0));
-  }
-
   private static Bundle newCallInfoBundle(DialerCall call) {
     Bundle bundle = new Bundle();
     bundle.putString(CALL_INFO_KEY_PHONE_NUMBER, call.getNumber());
@@ -163,8 +125,6 @@
     super.onCreate(savedInstanceState);
     setFinishOnTouchOutside(true);
     filteredNumberAsyncQueryHandler = new FilteredNumberAsyncQueryHandler(this);
-    spamSettings = SpamComponent.get(this).spamSettings();
-    spamBlockingPromoHelper = new SpamBlockingPromoHelper(getApplicationContext(), spamSettings);
     cancelNotification();
   }
 
@@ -180,7 +140,6 @@
             getCallInfo().getInt(CALL_INFO_CONTACT_LOOKUP_RESULT_TYPE, 0));
     switch (intent.getAction()) {
       case ACTION_ADD_TO_CONTACTS:
-        logCallImpression(DialerImpression.Type.SPAM_AFTER_CALL_NOTIFICATION_ADD_TO_CONTACTS);
         startActivity(createInsertContactsIntent(number));
         finish();
         break;
@@ -199,9 +158,6 @@
           showNonSpamDialog();
         }
         break;
-      case ACTION_SHOW_SPAM_BLOCKING_PROMO_DIALOG:
-        showSpamBlockingPromoDialog();
-        break;
       default: // fall out
     }
   }
@@ -220,51 +176,13 @@
   /** Creates and displays the dialog for whitelisting a number. */
   private void maybeShowNotSpamDialog(
       final String number, final ContactLookupResult.Type contactLookupResultType) {
-    if (SpamComponent.get(this).spamSettings().isDialogEnabledForSpamNotification()) {
-      DialogFragmentForReportingNotSpam.newInstance(
-              getFormattedNumber(number, this),
-              new BlockReportSpamDialogs.OnConfirmListener() {
-                @Override
-                public void onClick() {
-                  reportNotSpamAndFinish(number, contactLookupResultType);
-                }
-              },
-              dismissListener)
-          .show(getSupportFragmentManager(), BlockReportSpamDialogs.NOT_SPAM_DIALOG_TAG);
-    } else {
-      reportNotSpamAndFinish(number, contactLookupResultType);
-    }
+    reportNotSpamAndFinish(number, contactLookupResultType);
   }
 
   /** Creates and displays the dialog for blocking/reporting a number as spam. */
   private void maybeShowBlockReportSpamDialog(
       final String number, final ContactLookupResult.Type contactLookupResultType) {
-    if (SpamComponent.get(this).spamSettings().isDialogEnabledForSpamNotification()) {
-      String displayNumber = getFormattedNumber(number, this);
-      maybeShowBlockNumberMigrationDialog(
-          new BlockedNumbersMigrator.Listener() {
-            @Override
-            public void onComplete() {
-              DialogFragmentForBlockingNumberAndOptionallyReportingAsSpam.newInstance(
-                      displayNumber,
-                      SpamComponent.get(SpamNotificationActivity.this)
-                          .spamSettings()
-                          .isDialogReportSpamCheckedByDefault(),
-                      new BlockReportSpamDialogs.OnSpamDialogClickListener() {
-                        @Override
-                        public void onClick(boolean isSpamChecked) {
-                          blockReportNumber(number, isSpamChecked, contactLookupResultType);
-                        }
-                      },
-                      dismissListener)
-                  .show(
-                      getSupportFragmentManager(),
-                      BlockReportSpamDialogs.BLOCK_REPORT_SPAM_DIALOG_TAG);
-            }
-          });
-    } else {
-      blockReportNumber(number, true, contactLookupResultType);
-    }
+    blockReportNumber(number, true, contactLookupResultType);
   }
 
   /**
@@ -272,59 +190,27 @@
    * spam", and "Dismiss".
    */
   private void showNonSpamDialog() {
-    logCallImpression(DialerImpression.Type.SPAM_AFTER_CALL_NOTIFICATION_SHOW_NON_SPAM_DIALOG);
     FirstTimeNonSpamCallDialogFragment.newInstance(getCallInfo())
-        .show(getFragmentManager(), FirstTimeNonSpamCallDialogFragment.TAG);
+        .show(getSupportFragmentManager(), FirstTimeNonSpamCallDialogFragment.TAG);
   }
 
   /**
    * Displays the dialog for first time spam calls with actions "Not spam", "Block", and "Dismiss".
    */
   private void showSpamFullDialog() {
-    logCallImpression(DialerImpression.Type.SPAM_AFTER_CALL_NOTIFICATION_SHOW_SPAM_DIALOG);
     FirstTimeSpamCallDialogFragment.newInstance(getCallInfo())
-        .show(getFragmentManager(), FirstTimeSpamCallDialogFragment.TAG);
-  }
-
-  /** Checks if the user has migrated to the new blocking and display a dialog if necessary. */
-  private void maybeShowBlockNumberMigrationDialog(BlockedNumbersMigrator.Listener listener) {
-    if (!FilteredNumberCompat.maybeShowBlockNumberMigrationDialog(
-        this, getFragmentManager(), listener)) {
-      listener.onComplete();
-    }
+        .show(getSupportFragmentManager(), FirstTimeSpamCallDialogFragment.TAG);
   }
 
   /** Block and report the number as spam. */
   private void blockReportNumber(
       String number, boolean reportAsSpam, ContactLookupResult.Type contactLookupResultType) {
-    if (reportAsSpam) {
-      logCallImpression(DialerImpression.Type.SPAM_AFTER_CALL_NOTIFICATION_MARKED_NUMBER_AS_SPAM);
-      SpamComponent.get(this)
-          .spam()
-          .reportSpamFromAfterCallNotification(
-              number,
-              getCountryIso(),
-              CallLog.Calls.INCOMING_TYPE,
-              ReportingLocation.Type.FEEDBACK_PROMPT,
-              contactLookupResultType);
-    }
-
-    logCallImpression(DialerImpression.Type.SPAM_AFTER_CALL_NOTIFICATION_BLOCK_NUMBER);
-    filteredNumberAsyncQueryHandler.blockNumber(null, number, getCountryIso());
+    filteredNumberAsyncQueryHandler.blockNumber(null, number);
   }
 
   /** Report the number as not spam. */
   private void reportNotSpamAndFinish(
       String number, ContactLookupResult.Type contactLookupResultType) {
-    logCallImpression(DialerImpression.Type.SPAM_AFTER_CALL_NOTIFICATION_REPORT_NUMBER_AS_NOT_SPAM);
-    SpamComponent.get(this)
-        .spam()
-        .reportNotSpamFromAfterCallNotification(
-            number,
-            getCountryIso(),
-            CallLog.Calls.INCOMING_TYPE,
-            ReportingLocation.Type.FEEDBACK_PROMPT,
-            contactLookupResultType);
     // TODO: DialerCall finish() after async task completes (a bug)
     finish();
   }
@@ -341,10 +227,8 @@
   }
 
   private void assertDialogsEnabled() {
-    if (!SpamComponent.get(this).spamSettings().isDialogEnabledForSpamNotification()) {
-      throw new IllegalStateException(
-          "Cannot start this activity with given action because dialogs are not enabled.");
-    }
+    throw new IllegalStateException(
+        "Cannot start this activity with given action because dialogs are not enabled.");
   }
 
   private Bundle getCallInfo() {
@@ -375,10 +259,6 @@
 
     @Override
     public void onDismiss(DialogInterface dialog) {
-      logCallImpression(
-          applicationContext,
-          getArguments(),
-          DialerImpression.Type.SPAM_AFTER_CALL_NOTIFICATION_ON_DISMISS_SPAM_DIALOG);
       super.onDismiss(dialog);
       // If dialog was not dismissed by user pressing one of the buttons, finish activity
       if (!dismissed && getActivity() != null && !getActivity().isFinishing()) {
@@ -404,43 +284,25 @@
 
       return new AlertDialog.Builder(getActivity())
           .setCancelable(false)
-          .setTitle(
-              getString(
-                  SpamAlternativeExperimentUtil.getResourceIdByName(
-                      "spam_notification_title", applicationContext),
+          .setTitle(getString(R.string.spam_notification_title,
                   getFormattedNumber(number, applicationContext)))
-          .setNeutralButton(
-              getString(R.string.spam_notification_action_dismiss),
-              new DialogInterface.OnClickListener() {
-                @Override
-                public void onClick(DialogInterface dialog, int which) {
-                  dismiss();
-                }
-              })
-          .setPositiveButton(
-              getString(R.string.spam_notification_block_spam_action_text),
-              new DialogInterface.OnClickListener() {
-                @Override
-                public void onClick(DialogInterface dialog, int which) {
-                  dismissed = true;
-                  dismiss();
-                  spamNotificationActivity.maybeShowBlockReportSpamDialog(
-                      number, contactLookupResultType);
-                  spamNotificationActivity.maybeShowSpamBlockingPromoAndFinish();
-                }
-              })
-          .setNegativeButton(
-              getString(
-                  SpamAlternativeExperimentUtil.getResourceIdByName(
-                      "spam_notification_was_not_spam_action_text", applicationContext)),
-              new DialogInterface.OnClickListener() {
-                @Override
-                public void onClick(DialogInterface dialog, int which) {
-                  dismissed = true;
-                  dismiss();
-                  spamNotificationActivity.maybeShowNotSpamDialog(number, contactLookupResultType);
-                }
-              })
+          .setNeutralButton(getString(R.string.spam_notification_action_dismiss),
+                  (dialog, which) -> dismiss())
+          .setPositiveButton(getString(R.string.spam_notification_block_spam_action_text),
+                  (dialog, which) -> {
+                    dismissed = true;
+                    dismiss();
+                    spamNotificationActivity.maybeShowBlockReportSpamDialog(
+                        number, contactLookupResultType);
+                    spamNotificationActivity.maybeShowSpamBlockingPromoAndFinish();
+                  })
+          .setNegativeButton(getString(R.string.spam_notification_was_not_spam_action_text),
+                  (dialog, which) -> {
+                    dismissed = true;
+                    dismiss();
+                    spamNotificationActivity.maybeShowNotSpamDialog(number,
+                            contactLookupResultType);
+                  })
           .create();
     }
   }
@@ -469,10 +331,6 @@
     @Override
     public void onDismiss(DialogInterface dialog) {
       super.onDismiss(dialog);
-      logCallImpression(
-          context,
-          getArguments(),
-          DialerImpression.Type.SPAM_AFTER_CALL_NOTIFICATION_ON_DISMISS_NON_SPAM_DIALOG);
       // If dialog was not dismissed by user pressing one of the buttons, finish activity
       if (!dismissed && getActivity() != null && !getActivity().isFinishing()) {
         getActivity().finish();
@@ -498,76 +356,31 @@
           .setTitle(
               getString(R.string.non_spam_notification_title, getFormattedNumber(number, context)))
           .setCancelable(false)
-          .setMessage(
-              getString(
-                  SpamAlternativeExperimentUtil.getResourceIdByName(
-                      "spam_notification_non_spam_call_expanded_text", context)))
+          .setMessage(getString(R.string.spam_notification_non_spam_call_expanded_text))
           .setNeutralButton(
               getString(R.string.spam_notification_action_dismiss),
-              new DialogInterface.OnClickListener() {
-                @Override
-                public void onClick(DialogInterface dialog, int which) {
-                  dismiss();
-                }
-              })
+                  (dialog, which) -> dismiss())
           .setPositiveButton(
               getString(R.string.spam_notification_dialog_add_contact_action_text),
-              new DialogInterface.OnClickListener() {
-                @Override
-                public void onClick(DialogInterface dialog, int which) {
-                  dismissed = true;
-                  dismiss();
-                  startActivity(createInsertContactsIntent(number));
-                }
-              })
+                  (dialog, which) -> {
+                    dismissed = true;
+                    dismiss();
+                    startActivity(createInsertContactsIntent(number));
+                  })
           .setNegativeButton(
-              getString(
-                  SpamAlternativeExperimentUtil.getResourceIdByName(
-                      "spam_notification_dialog_block_report_spam_action_text", context)),
-              new DialogInterface.OnClickListener() {
-                @Override
-                public void onClick(DialogInterface dialog, int which) {
-                  dismissed = true;
-                  dismiss();
-                  spamNotificationActivity.maybeShowBlockReportSpamDialog(
-                      number, contactLookupResultType);
-                  spamNotificationActivity.maybeShowSpamBlockingPromoAndFinish();
-                }
-              })
+                  getString(R.string.spam_notification_dialog_block_report_spam_action_text),
+                  (dialog, which) -> {
+                    dismissed = true;
+                    dismiss();
+                    spamNotificationActivity.maybeShowBlockReportSpamDialog(
+                        number, contactLookupResultType);
+                    spamNotificationActivity.maybeShowSpamBlockingPromoAndFinish();
+                  })
           .create();
     }
   }
 
   private void maybeShowSpamBlockingPromoAndFinish() {
-    if (!spamBlockingPromoHelper.shouldShowAfterCallSpamBlockingPromo()) {
-      finish();
-      return;
-    }
-    Logger.get(this)
-        .logImpression(DialerImpression.Type.SPAM_BLOCKING_AFTER_CALL_NOTIFICATION_PROMO_SHOWN);
-    showSpamBlockingPromoDialog();
-  }
-
-  private void showSpamBlockingPromoDialog() {
-    spamBlockingPromoHelper.showSpamBlockingPromoDialog(
-        getSupportFragmentManager(),
-        () -> {
-          Logger.get(this)
-              .logImpression(
-                  DialerImpression.Type
-                      .SPAM_BLOCKING_ENABLED_THROUGH_AFTER_CALL_NOTIFICATION_PROMO);
-          spamSettings.modifySpamBlockingSetting(
-              true,
-              success -> {
-                if (!success) {
-                  Logger.get(this)
-                      .logImpression(
-                          DialerImpression.Type
-                              .SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_AFTER_CALL_NOTIFICATION_PROMO);
-                }
-                spamBlockingPromoHelper.showModifySettingOnCompleteToast(success);
-              });
-        },
-        dialog -> finish());
+    finish();
   }
 }
diff --git a/java/com/android/incallui/spam/SpamNotificationService.java b/java/com/android/incallui/spam/SpamNotificationService.java
deleted file mode 100644
index f7deae1..0000000
--- a/java/com/android/incallui/spam/SpamNotificationService.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.spam;
-
-import android.app.PendingIntent;
-import android.app.Service;
-import android.content.Context;
-import android.content.Intent;
-import android.os.IBinder;
-import android.provider.CallLog;
-import android.support.annotation.Nullable;
-import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.location.GeoUtil;
-import com.android.dialer.logging.ContactLookupResult;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.dialer.logging.ReportingLocation;
-import com.android.dialer.notification.DialerNotificationManager;
-import com.android.dialer.spam.SpamComponent;
-import com.android.dialer.spam.SpamSettings;
-import com.android.dialer.spam.promo.SpamBlockingPromoHelper;
-import com.android.incallui.call.DialerCall;
-
-/**
- * This service determines if the device is locked/unlocked and takes an action based on the state.
- * A service is used to to determine this, as opposed to an activity, because the user must unlock
- * the device before a notification can start an activity. This is not the case for a service, and
- * intents can be sent to this service even from the lock screen. This allows users to quickly
- * report a number as spam or not spam from their lock screen.
- */
-public class SpamNotificationService extends Service {
-
-  private static final String TAG = "SpamNotificationSvc";
-
-  private static final String EXTRA_PHONE_NUMBER = "service_phone_number";
-  private static final String EXTRA_CALL_ID = "service_call_id";
-  private static final String EXTRA_CALL_START_TIME_MILLIS = "service_call_start_time_millis";
-  private static final String EXTRA_NOTIFICATION_TAG = "service_notification_tag";
-  private static final String EXTRA_NOTIFICATION_ID = "service_notification_id";
-  private static final String EXTRA_CONTACT_LOOKUP_RESULT_TYPE =
-      "service_contact_lookup_result_type";
-
-  private String notificationTag;
-  private int notificationId;
-
-  /** Creates an intent to start this service. */
-  public static Intent createServiceIntent(
-      Context context,
-      @Nullable DialerCall call,
-      String action,
-      String notificationTag,
-      int notificationId) {
-    Intent intent = new Intent(context, SpamNotificationService.class);
-    intent.setAction(action);
-    intent.putExtra(EXTRA_NOTIFICATION_TAG, notificationTag);
-    intent.putExtra(EXTRA_NOTIFICATION_ID, notificationId);
-
-    if (call != null) {
-      intent.putExtra(EXTRA_PHONE_NUMBER, call.getNumber());
-      intent.putExtra(EXTRA_CALL_ID, call.getUniqueCallId());
-      intent.putExtra(EXTRA_CALL_START_TIME_MILLIS, call.getTimeAddedMs());
-      intent.putExtra(
-          EXTRA_CONTACT_LOOKUP_RESULT_TYPE, call.getLogState().contactLookupResult.getNumber());
-    }
-    return intent;
-  }
-
-  @Nullable
-  @Override
-  public IBinder onBind(Intent intent) {
-    // Return null because clients cannot bind to this service
-    return null;
-  }
-
-  @Override
-  public int onStartCommand(Intent intent, int flags, int startId) {
-    LogUtil.d(TAG, "onStartCommand");
-    if (intent == null) {
-      LogUtil.d(TAG, "Null intent");
-      stopSelf();
-      // Return {@link #START_NOT_STICKY} so service is not restarted.
-      return START_NOT_STICKY;
-    }
-    String number = intent.getStringExtra(EXTRA_PHONE_NUMBER);
-    notificationTag = intent.getStringExtra(EXTRA_NOTIFICATION_TAG);
-    notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, 1);
-    String countryIso = GeoUtil.getCurrentCountryIso(this);
-    ContactLookupResult.Type contactLookupResultType =
-        ContactLookupResult.Type.forNumber(intent.getIntExtra(EXTRA_CONTACT_LOOKUP_RESULT_TYPE, 0));
-
-    SpamSettings spamSettings = SpamComponent.get(this).spamSettings();
-    SpamBlockingPromoHelper spamBlockingPromoHelper =
-        new SpamBlockingPromoHelper(this, SpamComponent.get(this).spamSettings());
-    boolean shouldShowSpamBlockingPromo =
-        SpamNotificationActivity.ACTION_MARK_NUMBER_AS_SPAM.equals(intent.getAction())
-            && spamBlockingPromoHelper.shouldShowAfterCallSpamBlockingPromo();
-
-    // Cancel notification only if we are not showing spam blocking promo. Otherwise we will show
-    // spam blocking promo notification in place.
-    if (!shouldShowSpamBlockingPromo) {
-      DialerNotificationManager.cancel(this, notificationTag, notificationId);
-    }
-
-    switch (intent.getAction()) {
-      case SpamNotificationActivity.ACTION_MARK_NUMBER_AS_SPAM:
-        logCallImpression(
-            intent, DialerImpression.Type.SPAM_NOTIFICATION_SERVICE_ACTION_MARK_NUMBER_AS_SPAM);
-        SpamComponent.get(this)
-            .spam()
-            .reportSpamFromAfterCallNotification(
-                number,
-                countryIso,
-                CallLog.Calls.INCOMING_TYPE,
-                ReportingLocation.Type.FEEDBACK_PROMPT,
-                contactLookupResultType);
-        new FilteredNumberAsyncQueryHandler(this).blockNumber(null, number, countryIso);
-        if (shouldShowSpamBlockingPromo) {
-          spamBlockingPromoHelper.showSpamBlockingPromoNotification(
-              notificationTag,
-              notificationId,
-              createPromoActivityPendingIntent(),
-              createEnableSpamBlockingPendingIntent());
-        }
-        break;
-      case SpamNotificationActivity.ACTION_MARK_NUMBER_AS_NOT_SPAM:
-        logCallImpression(
-            intent, DialerImpression.Type.SPAM_NOTIFICATION_SERVICE_ACTION_MARK_NUMBER_AS_NOT_SPAM);
-        SpamComponent.get(this)
-            .spam()
-            .reportNotSpamFromAfterCallNotification(
-                number,
-                countryIso,
-                CallLog.Calls.INCOMING_TYPE,
-                ReportingLocation.Type.FEEDBACK_PROMPT,
-                contactLookupResultType);
-        break;
-      case SpamNotificationActivity.ACTION_ENABLE_SPAM_BLOCKING:
-        Logger.get(this)
-            .logImpression(
-                DialerImpression.Type.SPAM_BLOCKING_ENABLED_THROUGH_AFTER_CALL_NOTIFICATION_PROMO);
-        spamSettings.modifySpamBlockingSetting(
-            true,
-            success -> {
-              if (!success) {
-                Logger.get(this)
-                    .logImpression(
-                        DialerImpression.Type
-                            .SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_AFTER_CALL_NOTIFICATION_PROMO);
-              }
-              spamBlockingPromoHelper.showModifySettingOnCompleteToast(success);
-            });
-        break;
-      default: // fall out
-    }
-    // TODO: call stopSelf() after async tasks complete (a bug)
-    stopSelf();
-    return START_NOT_STICKY;
-  }
-
-  @Override
-  public void onDestroy() {
-    super.onDestroy();
-    LogUtil.d(TAG, "onDestroy");
-  }
-
-  private void logCallImpression(Intent intent, DialerImpression.Type impression) {
-    Logger.get(this)
-        .logCallImpression(
-            impression,
-            intent.getStringExtra(EXTRA_CALL_ID),
-            intent.getLongExtra(EXTRA_CALL_START_TIME_MILLIS, 0));
-  }
-
-  private PendingIntent createPromoActivityPendingIntent() {
-    Intent intent =
-        SpamNotificationActivity.createActivityIntent(
-            this,
-            null,
-            SpamNotificationActivity.ACTION_SHOW_SPAM_BLOCKING_PROMO_DIALOG,
-            notificationTag,
-            notificationId);
-    return PendingIntent.getActivity(
-        this, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT);
-  }
-
-  private PendingIntent createEnableSpamBlockingPendingIntent() {
-    Intent intent =
-        SpamNotificationService.createServiceIntent(
-            this,
-            null,
-            SpamNotificationActivity.ACTION_ENABLE_SPAM_BLOCKING,
-            notificationTag,
-            notificationId);
-    return PendingIntent.getService(
-        this, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT);
-  }
-}
diff --git a/java/com/android/incallui/spam/res/drawable/spam_notification_icon.xml b/java/com/android/incallui/spam/res/drawable/spam_notification_icon.xml
deleted file mode 100644
index a414428..0000000
--- a/java/com/android/incallui/spam/res/drawable/spam_notification_icon.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-
-  <item>
-    <shape android:shape="oval">
-      <solid android:color="@color/incall_call_spam_background_color"/>
-      <size
-        android:height="@android:dimen/notification_large_icon_height"
-        android:width="@android:dimen/notification_large_icon_width"/>
-    </shape>
-  </item>
-
-  <item
-    android:drawable="@drawable/quantum_ic_report_white_36"
-    android:gravity="center"/>
-
-</layer-list>
diff --git a/java/com/android/incallui/spam/res/raw/keep_spam.xml b/java/com/android/incallui/spam/res/raw/keep_spam.xml
deleted file mode 100644
index 0361e51..0000000
--- a/java/com/android/incallui/spam/res/raw/keep_spam.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<resources xmlns:tools="http://schemas.android.com/tools"
-    tools:keep="
-    @string/spam_notification_title,
-    @string/spam_notification_title_230151,
-    @string/spam_notification_title_230152,
-    @string/spam_notification_title_230153,
-    @string/spam_notification_title_230154,
-    @string/spam_notification_title_230155,
-    @string/spam_notification_block_report_toast_text,
-    @string/spam_notification_block_report_toast_text_230151,
-    @string/spam_notification_block_report_toast_text_230152,
-    @string/spam_notification_block_report_toast_text_230153,
-    @string/spam_notification_block_report_toast_text_230154,
-    @string/spam_notification_block_report_toast_text_230155,
-    @string/spam_notification_not_spam_toast_text,
-    @string/spam_notification_not_spam_toast_text_230151,
-    @string/spam_notification_not_spam_toast_text_230152,
-    @string/spam_notification_not_spam_toast_text_230153,
-    @string/spam_notification_not_spam_toast_text_230154,
-    @string/spam_notification_not_spam_toast_text_230155,
-    @string/spam_notification_non_spam_call_collapsed_text,
-    @string/spam_notification_non_spam_call_collapsed_text_230151,
-    @string/spam_notification_non_spam_call_collapsed_text_230152,
-    @string/spam_notification_non_spam_call_collapsed_text_230153,
-    @string/spam_notification_non_spam_call_collapsed_text_230154,
-    @string/spam_notification_non_spam_call_collapsed_text_230155,
-    @string/spam_notification_non_spam_call_expanded_text,
-    @string/spam_notification_non_spam_call_expanded_text_230151,
-    @string/spam_notification_non_spam_call_expanded_text_230152,
-    @string/spam_notification_non_spam_call_expanded_text_230153,
-    @string/spam_notification_non_spam_call_expanded_text_230154,
-    @string/spam_notification_non_spam_call_expanded_text_230155,
-    @string/spam_notification_spam_call_collapsed_text,
-    @string/spam_notification_spam_call_collapsed_text_230151,
-    @string/spam_notification_spam_call_collapsed_text_230152,
-    @string/spam_notification_spam_call_collapsed_text_230153,
-    @string/spam_notification_spam_call_collapsed_text_230154,
-    @string/spam_notification_spam_call_collapsed_text_230155,
-    @string/spam_notification_dialog_block_report_spam_action_text,
-    @string/spam_notification_dialog_block_report_spam_action_text_230151,
-    @string/spam_notification_dialog_block_report_spam_action_text_230152,
-    @string/spam_notification_dialog_block_report_spam_action_text_230153,
-    @string/spam_notification_dialog_block_report_spam_action_text_230154,
-    @string/spam_notification_dialog_block_report_spam_action_text_230155,
-    @string/spam_notification_was_not_spam_action_text,
-    @string/spam_notification_was_not_spam_action_text_230151,
-    @string/spam_notification_was_not_spam_action_text_230152,
-    @string/spam_notification_was_not_spam_action_text_230153,
-    @string/spam_notification_was_not_spam_action_text_230154,
-    @string/spam_notification_was_not_spam_action_text_230155"/>
\ No newline at end of file
diff --git a/java/com/android/incallui/spam/res/values-af/strings.xml b/java/com/android/incallui/spam/res/values-af/strings.xml
index 95e1bcb..d998169 100644
--- a/java/com/android/incallui/spam/res/values-af/strings.xml
+++ b/java/com/android/incallui/spam/res/values-af/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Ken jy %1$s?</string>
   <string name="spam_notification_title">Was %1$s \'n strooiposbeller?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s is geblokkeer en oproep is as strooipos aangegee.</string>
-  <string name="spam_notification_not_spam_toast_text">Oproep vanaf %1$s is as nie strooipos nie aangegee.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Tik om by kontakte te voeg of strooiposnommer te blokkeer.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Dit is die eerste keer wat hierdie nommer jou bel. As hierdie oproep strooipos was, kan jy hierdie nommer blokkeer en dit aangee.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Tik om as nie strooipos nie aan te gee, of dit te blokkeer</string>
-  <string name="spam_notification_report_spam_action_text">Blokkeer en gee aan</string>
-  <string name="spam_notification_add_contact_action_text">Voeg kontak by</string>
   <string name="spam_notification_dialog_add_contact_action_text">Voeg by kontakte</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokkeer en gee strooipos aan</string>
   <string name="spam_notification_was_not_spam_action_text">Nee, nie strooipos nie</string>
diff --git a/java/com/android/incallui/spam/res/values-am/strings.xml b/java/com/android/incallui/spam/res/values-am/strings.xml
index 50dece5..d94ca4b 100644
--- a/java/com/android/incallui/spam/res/values-am/strings.xml
+++ b/java/com/android/incallui/spam/res/values-am/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$sን ያውቁታል?</string>
   <string name="spam_notification_title">%1$s አይፈለጌ ደዋይ ነበር?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s ታግደዋል ጥሪውም እንደ አይፈለጌ መልዕክት ሪፖርት ተደርጓል።</string>
-  <string name="spam_notification_not_spam_toast_text">ከ%1$s የመጣው ጥሪ አይፈለጌ እንዳልሆነ ሪፖርት ተደርጓል።</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">እውቂያዎችን ለማከል ወይም አይፈለጌ ቁጥር ለማገድ መታ ያድርጉ።</string>
   <string name="spam_notification_non_spam_call_expanded_text">ይህ ቁጥር ሲደውልልዎ ይህ የመጀመሪያ ጊዜ ነው። ይህ ጥሪ አይፈለጌ ነበር፣ ይህን ቁጥር ማገድ እና ሪፖርት ማድረግ ይችላሉ።</string>
-  <string name="spam_notification_spam_call_collapsed_text">አይፈለጌ እንዳልሆነ ሪፖርት ለማድረግ ወይም ለማገድ መታ ያድርጉ</string>
-  <string name="spam_notification_report_spam_action_text">አግድ እና ሪፖርት አድርግ</string>
-  <string name="spam_notification_add_contact_action_text">እውቂያ ያክሉ</string>
   <string name="spam_notification_dialog_add_contact_action_text">ወደ እውቂያዎች ያክሉ</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">አግድ እና አይፈለጌ ሪፖርት አድርግ</string>
   <string name="spam_notification_was_not_spam_action_text">አይ፣ አይፈለጌ አይደለም</string>
diff --git a/java/com/android/incallui/spam/res/values-ar/strings.xml b/java/com/android/incallui/spam/res/values-ar/strings.xml
index 3443651..7cc76fd 100644
--- a/java/com/android/incallui/spam/res/values-ar/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ar/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">هل تعرف %1$s؟</string>
   <string name="spam_notification_title">هل كان المتصل %1$s غير مرغوب فيه؟</string>
-  <string name="spam_notification_block_report_toast_text">تم حظر %1$s والإبلاغ عن المكالمة باعتبرها غير مرغوب فيها.</string>
-  <string name="spam_notification_not_spam_toast_text">تم الإبلاغ عن أن مكالمة %1$s ليست من النوع غير المرغوب فيه.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">انقر للإضافة إلى جهات الاتصال أو لحظر الرقم غير المرغوب فيه.</string>
   <string name="spam_notification_non_spam_call_expanded_text">هذه هي المرة الأولى التي تتلقى فيها اتصالاً من هذا الرقم. إذا كانت هذه المكالمة غير مرغوب فيها، يمكنك حظر هذا الرقم والإبلاغ عنه.</string>
-  <string name="spam_notification_spam_call_collapsed_text">انقر للإبلاغ عن المكالمة باعتبارها مرغوب فيها أو احظرها.</string>
-  <string name="spam_notification_report_spam_action_text">حظر وإبلاغ</string>
-  <string name="spam_notification_add_contact_action_text">إضافة جهة اتصال</string>
   <string name="spam_notification_dialog_add_contact_action_text">إضافة إلى جهات الاتصال</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">حظر الرقم والإبلاغ عنه كرقم غير مرغوب فيه</string>
   <string name="spam_notification_was_not_spam_action_text">لا، مرغوب فيها</string>
diff --git a/java/com/android/incallui/spam/res/values-az/strings.xml b/java/com/android/incallui/spam/res/values-az/strings.xml
index 353ee0b..2e1c9f4 100644
--- a/java/com/android/incallui/spam/res/values-az/strings.xml
+++ b/java/com/android/incallui/spam/res/values-az/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s nömrəsini tanıyırsınız?</string>
   <string name="spam_notification_title">%1$s spam zəngi idi?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s blok edilib və zəng spam olaraq bildirilib.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s nömrəsindən gələn zəng spam olaraq bildirilib.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Klikləyərək kontaktlara əlavə edin və ya spam nömrə kimi blok edin.</string>
   <string name="spam_notification_non_spam_call_expanded_text">İlk dəfədir ki, bu nömrədən Sizə zəng gəlir. Bu zəng spamdırsa, nömrəni blok edə və ya şikayət edə bilərsiniz.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Spam deyil seçiminə klikləyin və ya blok edin</string>
-  <string name="spam_notification_report_spam_action_text">Blok/şikayət edin</string>
-  <string name="spam_notification_add_contact_action_text">Kontakt əlavə edin</string>
   <string name="spam_notification_dialog_add_contact_action_text">Kontaktlara əlavə edin</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blok edin və ya spamı bildirin</string>
   <string name="spam_notification_was_not_spam_action_text">Xeyr, spam deyil</string>
diff --git a/java/com/android/incallui/spam/res/values-b+sr+Latn/strings.xml b/java/com/android/incallui/spam/res/values-b+sr+Latn/strings.xml
index 4cfee80..e15f229 100644
--- a/java/com/android/incallui/spam/res/values-b+sr+Latn/strings.xml
+++ b/java/com/android/incallui/spam/res/values-b+sr+Latn/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Poznat vam je broj %1$s?</string>
   <string name="spam_notification_title">Da li vam je sa %1$s upućen nepoželjan poziv?</string>
-  <string name="spam_notification_block_report_toast_text">Blokirali ste %1$s, a poziv ste prijavili kao nepoželjan.</string>
-  <string name="spam_notification_not_spam_toast_text">Prijavili ste da poziv sa %1$s nije nepoželjan.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Dodirnite da biste dodali kontakte ili blokirali nepoželjan broj.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Prvi put ste primili poziv sa ovog broja. Ako je nepoželjan, možete da ga blokirate i prijavite.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Dodirnite da biste prijavili da poziv nije nepoželjan ili blokirali broj</string>
-  <string name="spam_notification_report_spam_action_text">Blokiraj i prijavi</string>
-  <string name="spam_notification_add_contact_action_text">Dodaj kontakt</string>
   <string name="spam_notification_dialog_add_contact_action_text">Dodaj u kontakte</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokiraj i prijavi nepoželjan poziv</string>
   <string name="spam_notification_was_not_spam_action_text">Ne, nije nepoželjan</string>
diff --git a/java/com/android/incallui/spam/res/values-be/strings.xml b/java/com/android/incallui/spam/res/values-be/strings.xml
index 0e3d48e..d51f62f 100644
--- a/java/com/android/incallui/spam/res/values-be/strings.xml
+++ b/java/com/android/incallui/spam/res/values-be/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Вы ведаеце нумар %1$s?</string>
   <string name="spam_notification_title">З нумара %1$s званіў спамер?</string>
-  <string name="spam_notification_block_report_toast_text">Нумар %1$s заблакіраваны, а выклік быў заяўлены як спамерскі.</string>
-  <string name="spam_notification_not_spam_toast_text">Выклік з нумара %1$s заяўлены як няспамерскі.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Дакраніцеся, каб дадаць да кантактаў ці заблакіраваць спамерскі нумар.</string>
   <string name="spam_notification_non_spam_call_expanded_text">З гэтага нумара вас выклікалі ўпершыню. Калі гэта быў спамерскі выклік, вы можаце заблакіраваць гэты нумар і паведаміць аб гэтым.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Дакраніцеся, каб заявіць, што гэта не спам, ці заблакіраваць нумар</string>
-  <string name="spam_notification_report_spam_action_text">Заблак. і паведаміць</string>
-  <string name="spam_notification_add_contact_action_text">Дадаць кантакт</string>
   <string name="spam_notification_dialog_add_contact_action_text">Дадаць у кантакты</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Заблакіраваць і паведаміць пра спам</string>
   <string name="spam_notification_was_not_spam_action_text">Не спам</string>
diff --git a/java/com/android/incallui/spam/res/values-bg/strings.xml b/java/com/android/incallui/spam/res/values-bg/strings.xml
index 54a0036..d529962 100644
--- a/java/com/android/incallui/spam/res/values-bg/strings.xml
+++ b/java/com/android/incallui/spam/res/values-bg/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s известен ли ви е?</string>
   <string name="spam_notification_title">Обаждането от %1$s спам ли беше?</string>
-  <string name="spam_notification_block_report_toast_text">Блокирахте %1$s и за обаждането бе подаден сигнал, че е спам.</string>
-  <string name="spam_notification_not_spam_toast_text">За обаждането от %1$s бе подаден сигнал, че не е спам.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Докоснете, за да добавите към контактите или да блокирате номера със спам.</string>
   <string name="spam_notification_non_spam_call_expanded_text">За първи път ви се обаждат от този номер. Ако обаждането е било спам, можете да блокирате номера и да подадете сигнал за него.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Докоснете за подаване на сигнал, че не е спам, или за блокиране</string>
-  <string name="spam_notification_report_spam_action_text">Блокиране и сигнал</string>
-  <string name="spam_notification_add_contact_action_text">Добавяне на контакт</string>
   <string name="spam_notification_dialog_add_contact_action_text">Добавяне към контактите</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Блокиране и подаване на сигнал за спам</string>
   <string name="spam_notification_was_not_spam_action_text">Не, не е спам</string>
diff --git a/java/com/android/incallui/spam/res/values-bn/strings.xml b/java/com/android/incallui/spam/res/values-bn/strings.xml
index 53bcda2..0661f40 100644
--- a/java/com/android/incallui/spam/res/values-bn/strings.xml
+++ b/java/com/android/incallui/spam/res/values-bn/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s নম্বরটি জানেন?</string>
   <string name="spam_notification_title">%1$s কি স্প্যাম কলার?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s নম্বরটিকে ব্লক করা হয়েছে এবং কলটিকে স্প্যাম হিসেবে রিপোর্ট করা হয়েছে।</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s নম্বর থেকে আসা কলটিকে স্প্যাম হিসেবে রিপোর্ট করা হয়েছে।</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">পরিচিতিগুলিতে যোগ করার জন্য ট্যাপ করুন অথবা স্প্যাম নম্বর ব্লক করুন।</string>
   <string name="spam_notification_non_spam_call_expanded_text">এই প্রথমবার এই নম্বর থেকে আপনাকে কল করা হয়েছে। যদি এই কলটি স্প্যাম হয় তাহলে এই নম্বরটিকে ব্লক করে এটির বিষয়ে রিপোর্ট করুন।</string>
-  <string name="spam_notification_spam_call_collapsed_text">\"স্প্যাম নয়\" হিসেবে চিহ্নিত করতে ট্যাপ করুন অথবা ব্লক করুন</string>
-  <string name="spam_notification_report_spam_action_text">ব্লক করে রিপোর্ট করুন</string>
-  <string name="spam_notification_add_contact_action_text">পরিচিতি যোগ করুন</string>
   <string name="spam_notification_dialog_add_contact_action_text">পরিচিতিগুলিতে যোগ করুন</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">ব্লক করে স্প্যাম হিসেবে রিপোর্ট করুন</string>
   <string name="spam_notification_was_not_spam_action_text">না, স্প্যাম নয়</string>
diff --git a/java/com/android/incallui/spam/res/values-bs/strings.xml b/java/com/android/incallui/spam/res/values-bs/strings.xml
index d16c5af..2382651 100644
--- a/java/com/android/incallui/spam/res/values-bs/strings.xml
+++ b/java/com/android/incallui/spam/res/values-bs/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Poznajete %1$s?</string>
   <string name="spam_notification_title">Je li poziv s broja %1$s neželjen?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s je blokiran i poziv je prijavljen kao neželjen.</string>
-  <string name="spam_notification_not_spam_toast_text">Poziv s broja %1$s je prijavljen kao neželjen.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Dodirnite da biste dodali u kontakte ili blokirani neželjeni broj.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Ovo je prvi poziv koji ste primili s ovog broja. Ako je poziv neželjen, možete blokirati ovaj broj i prijaviti ga.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Dodirnite kako biste prijavili da poziv nije neželjen ili ga blokirajte</string>
-  <string name="spam_notification_report_spam_action_text">Blokiraj i prijavi</string>
-  <string name="spam_notification_add_contact_action_text">Dodaj kontakt</string>
   <string name="spam_notification_dialog_add_contact_action_text">Dodaj u kontakte</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokiraj i prijavi neželjeni poziv</string>
   <string name="spam_notification_was_not_spam_action_text">Ne, nije neželjeni poziv</string>
diff --git a/java/com/android/incallui/spam/res/values-ca/strings.xml b/java/com/android/incallui/spam/res/values-ca/strings.xml
index 93801b2..d3cb672 100644
--- a/java/com/android/incallui/spam/res/values-ca/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ca/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Saps de qui és el número %1$s?</string>
   <string name="spam_notification_title">%1$s era una trucada brossa?</string>
-  <string name="spam_notification_block_report_toast_text">El %1$s s\'ha bloquejat i la trucada s\'ha marcat com a brossa.</string>
-  <string name="spam_notification_not_spam_toast_text">S\'ha indicat que la trucada del %1$s no és brossa.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Toca per afegir el número als contactes o bé per marcar-lo com a brossa i bloquejar-lo.</string>
   <string name="spam_notification_non_spam_call_expanded_text">És la primera vegada que aquest número t\'ha trucat. Si era una trucada brossa, pots bloquejar-lo i informar-ne.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Toca per indicar que no és una trucada brossa o per bloquejar el número</string>
-  <string name="spam_notification_report_spam_action_text">Bloqueja i marca</string>
-  <string name="spam_notification_add_contact_action_text">Afegeix als contactes</string>
   <string name="spam_notification_dialog_add_contact_action_text">Afegeix als contactes</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloqueja i marca com a brossa</string>
   <string name="spam_notification_was_not_spam_action_text">No, no és una trucada brossa</string>
diff --git a/java/com/android/incallui/spam/res/values-cs/strings.xml b/java/com/android/incallui/spam/res/values-cs/strings.xml
index 9e682f8..1e2dc40 100644
--- a/java/com/android/incallui/spam/res/values-cs/strings.xml
+++ b/java/com/android/incallui/spam/res/values-cs/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Znáte číslo %1$s?</string>
   <string name="spam_notification_title">Byl hovor z čísla %1$s spam?</string>
-  <string name="spam_notification_block_report_toast_text">Číslo %1$s bylo zablokováno a hovor byl nahlášen jako spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Bylo nahlášeno, že hovor z čísla %1$s nebyl spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Klepnutím číslo přidáte do kontaktů nebo zablokujete jako spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Toto číslo vám volalo poprvé. Pokud se jednalo o spam, můžete číslo zablokovat a nahlásit.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Klepnutím nahlásíte, že toto číslo není spam, nebo ho zablokujete.</string>
-  <string name="spam_notification_report_spam_action_text">Blokovat a nahlásit</string>
-  <string name="spam_notification_add_contact_action_text">Přidat kontakt</string>
   <string name="spam_notification_dialog_add_contact_action_text">Přidat do kontaktů</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Zablokovat a nahlásit spam</string>
   <string name="spam_notification_was_not_spam_action_text">Ne, nešlo o spam</string>
diff --git a/java/com/android/incallui/spam/res/values-da/strings.xml b/java/com/android/incallui/spam/res/values-da/strings.xml
index 87986d4..5cb58b7 100644
--- a/java/com/android/incallui/spam/res/values-da/strings.xml
+++ b/java/com/android/incallui/spam/res/values-da/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Kender du %1$s?</string>
   <string name="spam_notification_title">Var %1$s et spamopkald?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s blev blokeret, og opkaldet blev rapporteret som spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Opkaldet fra %1$s blev ikke rapporteret som spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Tryk for at føje til kontaktpersoner eller for at blokere spamnummeret.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Dette er første gang, at dette nummer har ringet til dig. Hvis det var et spamopkald, kan du blokere nummeret og rapportere det.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Tryk for at fjerne spammarkeringen, eller bloker nummeret</string>
-  <string name="spam_notification_report_spam_action_text">Bloker og rapportér</string>
-  <string name="spam_notification_add_contact_action_text">Tilføj kontaktperson</string>
   <string name="spam_notification_dialog_add_contact_action_text">Føj til kontaktpersoner</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloker og rapportér spam</string>
   <string name="spam_notification_was_not_spam_action_text">Nej, ikke spam</string>
diff --git a/java/com/android/incallui/spam/res/values-de/strings.xml b/java/com/android/incallui/spam/res/values-de/strings.xml
index 94d1c09..6fae5a7 100644
--- a/java/com/android/incallui/spam/res/values-de/strings.xml
+++ b/java/com/android/incallui/spam/res/values-de/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Kennst du %1$s?</string>
   <string name="spam_notification_title">War %1$s ein Spamanrufer?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s wurde blockiert und der Anruf wurde als Spam gemeldet.</string>
-  <string name="spam_notification_not_spam_toast_text">Anruf von %1$s wurde als kein Spam gemeldet.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Tippen, um die Nummer deinen Kontakten hinzuzufügen oder sie als Spam zu blockieren.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Du wurdest das erste Mal von dieser Nummer angerufen. Wenn dieser Anruf Spam war, kannst du die Nummer blockieren und melden.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Tippen, um die Nummer als kein Spam zu melden oder sie zu blockieren</string>
-  <string name="spam_notification_report_spam_action_text">Blockieren und melden</string>
-  <string name="spam_notification_add_contact_action_text">Kontakt hinzufügen</string>
   <string name="spam_notification_dialog_add_contact_action_text">Zu Kontakten hinzufügen</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blockieren und als Spam melden</string>
   <string name="spam_notification_was_not_spam_action_text">Nein, kein Spam</string>
diff --git a/java/com/android/incallui/spam/res/values-el/strings.xml b/java/com/android/incallui/spam/res/values-el/strings.xml
index 64f5c37..702d33c 100644
--- a/java/com/android/incallui/spam/res/values-el/strings.xml
+++ b/java/com/android/incallui/spam/res/values-el/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Γνωρίζετε τον αριθμό %1$s;</string>
   <string name="spam_notification_title">Ήταν η κλήση από το %1$s ανεπιθύμητη;</string>
-  <string name="spam_notification_block_report_toast_text">Ο αριθμός %1$s αποκλείστηκε και η κλήση αναφέρθηκε ως ανεπιθύμητη.</string>
-  <string name="spam_notification_not_spam_toast_text">Η κλήση από τον αριθμό %1$s αναφέρθηκε ως μη ανεπιθύμητη.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Πατήστε για προσθήκη στις επαφές ή αποκλεισμό αριθμού ως ανεπιθύμητο.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Αυτή είναι η πρώτη φορά που σας καλεί αυτός ο αριθμός. Αν η κλήση αυτή ήταν ανεπιθύμητη, μπορείτε να αποκλείσετε αυτόν τον αριθμό και να τον αναφέρετε.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Πατήστε για αναφορά ως μη ανεπιθύμητης ή για αποκλεισμό της.</string>
-  <string name="spam_notification_report_spam_action_text">Αποκλεισμός και αναφορά</string>
-  <string name="spam_notification_add_contact_action_text">Προσθήκη επαφής</string>
   <string name="spam_notification_dialog_add_contact_action_text">Προσθήκη στις επαφές</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Αποκλεισμός και αναφορά ως ανεπιθύμητης</string>
   <string name="spam_notification_was_not_spam_action_text">Όχι, δεν ήταν ανεπιθύμητη</string>
diff --git a/java/com/android/incallui/spam/res/values-en-rAU/strings.xml b/java/com/android/incallui/spam/res/values-en-rAU/strings.xml
index f8b7564..186d516 100644
--- a/java/com/android/incallui/spam/res/values-en-rAU/strings.xml
+++ b/java/com/android/incallui/spam/res/values-en-rAU/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Do you know %1$s?</string>
   <string name="spam_notification_title">Was %1$s a spam caller?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s blocked and call was reported as spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Call from %1$s reported as not spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Tap to add to contacts or block spam number.</string>
   <string name="spam_notification_non_spam_call_expanded_text">This is the first time that this number has called you. If this call was spam, you can block this number and report it.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Tap to report as not spam or block it</string>
-  <string name="spam_notification_report_spam_action_text">Block &amp; report</string>
-  <string name="spam_notification_add_contact_action_text">Add contact</string>
   <string name="spam_notification_dialog_add_contact_action_text">Add to contacts</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Block &amp; report spam</string>
   <string name="spam_notification_was_not_spam_action_text">No, not spam</string>
diff --git a/java/com/android/incallui/spam/res/values-en-rGB/strings.xml b/java/com/android/incallui/spam/res/values-en-rGB/strings.xml
index f8b7564..186d516 100644
--- a/java/com/android/incallui/spam/res/values-en-rGB/strings.xml
+++ b/java/com/android/incallui/spam/res/values-en-rGB/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Do you know %1$s?</string>
   <string name="spam_notification_title">Was %1$s a spam caller?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s blocked and call was reported as spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Call from %1$s reported as not spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Tap to add to contacts or block spam number.</string>
   <string name="spam_notification_non_spam_call_expanded_text">This is the first time that this number has called you. If this call was spam, you can block this number and report it.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Tap to report as not spam or block it</string>
-  <string name="spam_notification_report_spam_action_text">Block &amp; report</string>
-  <string name="spam_notification_add_contact_action_text">Add contact</string>
   <string name="spam_notification_dialog_add_contact_action_text">Add to contacts</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Block &amp; report spam</string>
   <string name="spam_notification_was_not_spam_action_text">No, not spam</string>
diff --git a/java/com/android/incallui/spam/res/values-en-rIN/strings.xml b/java/com/android/incallui/spam/res/values-en-rIN/strings.xml
index f8b7564..186d516 100644
--- a/java/com/android/incallui/spam/res/values-en-rIN/strings.xml
+++ b/java/com/android/incallui/spam/res/values-en-rIN/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Do you know %1$s?</string>
   <string name="spam_notification_title">Was %1$s a spam caller?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s blocked and call was reported as spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Call from %1$s reported as not spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Tap to add to contacts or block spam number.</string>
   <string name="spam_notification_non_spam_call_expanded_text">This is the first time that this number has called you. If this call was spam, you can block this number and report it.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Tap to report as not spam or block it</string>
-  <string name="spam_notification_report_spam_action_text">Block &amp; report</string>
-  <string name="spam_notification_add_contact_action_text">Add contact</string>
   <string name="spam_notification_dialog_add_contact_action_text">Add to contacts</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Block &amp; report spam</string>
   <string name="spam_notification_was_not_spam_action_text">No, not spam</string>
diff --git a/java/com/android/incallui/spam/res/values-es-rUS/strings.xml b/java/com/android/incallui/spam/res/values-es-rUS/strings.xml
index b462a1a..cd43435 100644
--- a/java/com/android/incallui/spam/res/values-es-rUS/strings.xml
+++ b/java/com/android/incallui/spam/res/values-es-rUS/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">¿Sabes quién es %1$s?</string>
   <string name="spam_notification_title">¿La llamada que recibiste de %1$s era una llamada de spam?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s bloqueado. La llamada se marcó como spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Se indicó que la llamada de %1$s no es spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Presiona para agregar a los contactos o para bloquear el número marcado como spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Esta es la primera vez que este número te llama. Si la llamada fue spam, puedes bloquear este número y denunciarlo.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Presiona para informar que no es spam o para bloquearlo</string>
-  <string name="spam_notification_report_spam_action_text">Bloquear y denunciar</string>
-  <string name="spam_notification_add_contact_action_text">Agregar contacto</string>
   <string name="spam_notification_dialog_add_contact_action_text">Agregar a contactos</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloquear y marcar como spam</string>
   <string name="spam_notification_was_not_spam_action_text">No, no es spam</string>
diff --git a/java/com/android/incallui/spam/res/values-es/strings.xml b/java/com/android/incallui/spam/res/values-es/strings.xml
index a384649..ef6c24d 100644
--- a/java/com/android/incallui/spam/res/values-es/strings.xml
+++ b/java/com/android/incallui/spam/res/values-es/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">¿Conoces el número %1$s?</string>
   <string name="spam_notification_title">¿La llamada del %1$s era spam?</string>
-  <string name="spam_notification_block_report_toast_text">Se ha bloqueado el número %1$s y se ha marcado la llamada como Spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Se ha marcado la llamada del %1$s como No es spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Toca el número para añadirlo a los contactos o bloquearlo como spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Es la primera vez que recibes una llamada de este número. Si se trata de spam, puedes bloquear el número y denunciarlo.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Toca el número para marcarlo como que no es spam o bloquearlo</string>
-  <string name="spam_notification_report_spam_action_text">Bloquear y denunciar</string>
-  <string name="spam_notification_add_contact_action_text">Añadir contacto</string>
   <string name="spam_notification_dialog_add_contact_action_text">Añadir a contactos</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloquear y marcar como spam</string>
   <string name="spam_notification_was_not_spam_action_text">No, no es spam</string>
diff --git a/java/com/android/incallui/spam/res/values-et/strings.xml b/java/com/android/incallui/spam/res/values-et/strings.xml
index e2bb399..a91ef48 100644
--- a/java/com/android/incallui/spam/res/values-et/strings.xml
+++ b/java/com/android/incallui/spam/res/values-et/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Kas teate numbrit %1$s?</string>
   <string name="spam_notification_title">Kas kõne numbrilt %1$s oli rämpskõnetegijalt?</string>
-  <string name="spam_notification_block_report_toast_text">Number %1$s blokeeriti ja kõne liigitati rämpspostiks.</string>
-  <string name="spam_notification_not_spam_toast_text">Kõnet numbrilt %1$s ei liigitatud rämpspostiks.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Puudutage kontaktide lisamiseks või rämpsposti saatva numbri blokeerimiseks.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Teile helistati sellelt numbrilt esimest korda. Kui see kõne oli rämpspost, blokeerige see number ja teavitage meid sellest.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Puudutage, kui see pole rämpskõne, või blokeerige see</string>
-  <string name="spam_notification_report_spam_action_text">Blokeeri ja teavita</string>
-  <string name="spam_notification_add_contact_action_text">Lisa kontakt</string>
   <string name="spam_notification_dialog_add_contact_action_text">Lisa kontaktidesse</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokeeri ja teavita rämpspostist</string>
   <string name="spam_notification_was_not_spam_action_text">Ei, see pole rämpskõne</string>
diff --git a/java/com/android/incallui/spam/res/values-eu/strings.xml b/java/com/android/incallui/spam/res/values-eu/strings.xml
index 1d075f8..fb02525 100644
--- a/java/com/android/incallui/spam/res/values-eu/strings.xml
+++ b/java/com/android/incallui/spam/res/values-eu/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Ezagutzen duzu %1$s?</string>
   <string name="spam_notification_title">Spam-deia izan al da %1$s zenbakitik jasotakoa?</string>
-  <string name="spam_notification_block_report_toast_text">Blokeatu da %1$s, eta spama dela salatu da.</string>
-  <string name="spam_notification_not_spam_toast_text">Ez-spam gisa markatu da %1$s.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Sakatu kontaktuetan gehitzeko edo blokeatu spam-zenbakia.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Zenbaki honek deitu dizun lehenengo aldia izan da. Spama bada, blokeatu eta salatu egin dezakezu.</string>
-  <string name="spam_notification_spam_call_collapsed_text">\"Ez da spama\" gisa markatzeko edo zenbakia blokeatzeko, sakatu hau</string>
-  <string name="spam_notification_report_spam_action_text">Blokeatu eta salatu</string>
-  <string name="spam_notification_add_contact_action_text">Gehitu kontaktua</string>
   <string name="spam_notification_dialog_add_contact_action_text">Gehitu kontaktuetan</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokeatu eta salatu spama dela</string>
   <string name="spam_notification_was_not_spam_action_text">Ez, ez da spama</string>
diff --git a/java/com/android/incallui/spam/res/values-fa/strings.xml b/java/com/android/incallui/spam/res/values-fa/strings.xml
index bc09175..bdfda38 100644
--- a/java/com/android/incallui/spam/res/values-fa/strings.xml
+++ b/java/com/android/incallui/spam/res/values-fa/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s را می‌شناسید؟</string>
   <string name="spam_notification_title">%1$s تماس‌گیرنده هرزنامه بود؟</string>
-  <string name="spam_notification_block_report_toast_text">%1$s مسدود شد و تماس به‌عنوان هرزنامه گزارش شد.</string>
-  <string name="spam_notification_not_spam_toast_text">تماس از %1$s به‌عنوان غیرهرزنامه گزارش شد.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">برای افزودن مخاطبین یا مسدود کردن شماره هرزنامه، ضربه بزنید.</string>
   <string name="spam_notification_non_spam_call_expanded_text">اولین بار است که این شماره با شما تماس گرفته است. اگر این تماس هرزنامه است می‌توانید شماره را مسدود کنید و آن را گزارش کنید.</string>
-  <string name="spam_notification_spam_call_collapsed_text">برای گزارش به‌عنوان «غیرهرزنامه» ضربه بزنید یا آن را مسدود کنید</string>
-  <string name="spam_notification_report_spam_action_text">مسدود کردن و گزارش کردن</string>
-  <string name="spam_notification_add_contact_action_text">افزودن مخاطب</string>
   <string name="spam_notification_dialog_add_contact_action_text">افزودن به مخاطبین</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">مسدود کردن و گزارش هرزنامه</string>
   <string name="spam_notification_was_not_spam_action_text">نه، هرزنامه نیست</string>
diff --git a/java/com/android/incallui/spam/res/values-fi/strings.xml b/java/com/android/incallui/spam/res/values-fi/strings.xml
index f0b72e9..ce51ecd 100644
--- a/java/com/android/incallui/spam/res/values-fi/strings.xml
+++ b/java/com/android/incallui/spam/res/values-fi/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Onko %1$s sinulle tuttu?</string>
   <string name="spam_notification_title">Oliko %1$s häirikkösoittaja?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s estettiin ja puhelu ilmoitettiin häirikköpuheluksi.</string>
-  <string name="spam_notification_not_spam_toast_text">Numerosta %1$s saapunut puhelu ei ole häirikköpuhelu.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Lisää yhteystietoihin tai estä häirikkönumero napauttamalla.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Tästä numerosta soitettiin sinulle ensimmäisen kerran. Jos kyseessä oli häirikköpuhelu, voit estää numeron ja ilmoittaa siitä.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Valitse tilaksi Ei ole häirikkösoittaja tai estä numero napauttamalla</string>
-  <string name="spam_notification_report_spam_action_text">Estä ja ilmoita</string>
-  <string name="spam_notification_add_contact_action_text">Lisää yhteystieto</string>
   <string name="spam_notification_dialog_add_contact_action_text">Lisää yhteystietoihin</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Estä ja ilmoita häirikkösoittajaksi</string>
   <string name="spam_notification_was_not_spam_action_text">Ei ole häirikkösoittaja</string>
diff --git a/java/com/android/incallui/spam/res/values-fr-rCA/strings.xml b/java/com/android/incallui/spam/res/values-fr-rCA/strings.xml
index 9c075cb..ab42df9 100644
--- a/java/com/android/incallui/spam/res/values-fr-rCA/strings.xml
+++ b/java/com/android/incallui/spam/res/values-fr-rCA/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Connaissez-vous le numéro %1$s?</string>
   <string name="spam_notification_title">L\'appel provenant du numéro %1$s était-il importun?</string>
-  <string name="spam_notification_block_report_toast_text">Le numéro %1$s a été bloqué, et l\'appel a été signalé comme pourriel.</string>
-  <string name="spam_notification_not_spam_toast_text">L\'appel provenant du numéro %1$s a été signalé comme n\'étant pas un pourriel.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Touchez pour ajouter aux contacts, ou bloquez le numéro source de pourriel.</string>
   <string name="spam_notification_non_spam_call_expanded_text">C\'est la première fois que ce numéro vous appelle. Si cet appel était un pourriel, vous pouvez le signaler et bloquer le numéro.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Touchez pour signaler que l\'appel n\'est pas importun, ou bloquez le numéro</string>
-  <string name="spam_notification_report_spam_action_text">Bloquer et signaler</string>
-  <string name="spam_notification_add_contact_action_text">Ajouter le contact</string>
   <string name="spam_notification_dialog_add_contact_action_text">Ajouter aux contacts</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloquer le numéro et signaler le pourriel</string>
   <string name="spam_notification_was_not_spam_action_text">Non, ce n\'est pas un appel importun</string>
diff --git a/java/com/android/incallui/spam/res/values-fr/strings.xml b/java/com/android/incallui/spam/res/values-fr/strings.xml
index 766dae4..068b09d 100644
--- a/java/com/android/incallui/spam/res/values-fr/strings.xml
+++ b/java/com/android/incallui/spam/res/values-fr/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Vous connaissez le propriétaire du %1$s ?</string>
   <string name="spam_notification_title">L\'appel reçu du %1$s était-il indésirable ?</string>
-  <string name="spam_notification_block_report_toast_text">Le numéro %1$s a été bloqué et l\'appel a été signalé comme indésirable.</string>
-  <string name="spam_notification_not_spam_toast_text">Les appels provenant du %1$s sont signalés comme fiables.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Appuyez pour ajouter le numéro à vos contacts ou le bloquer s\'il s\'agit d\'un numéro indésirable.</string>
   <string name="spam_notification_non_spam_call_expanded_text">C\'est la première fois que vous recevez un appel de ce numéro. S\'il s\'agit d\'un appel indésirable, vous pouvez bloquer le numéro et signaler ce dernier.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Appuyez pour signaler ce numéro comme fiable ou pour le bloquer</string>
-  <string name="spam_notification_report_spam_action_text">Bloquer et signaler</string>
-  <string name="spam_notification_add_contact_action_text">Ajouter</string>
   <string name="spam_notification_dialog_add_contact_action_text">Ajouter aux contacts</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloquer et signaler comme indésirable</string>
   <string name="spam_notification_was_not_spam_action_text">Non, le numéro est fiable</string>
diff --git a/java/com/android/incallui/spam/res/values-gl/strings.xml b/java/com/android/incallui/spam/res/values-gl/strings.xml
index 126113a..8443711 100644
--- a/java/com/android/incallui/spam/res/values-gl/strings.xml
+++ b/java/com/android/incallui/spam/res/values-gl/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Coñeces o %1$s?</string>
   <string name="spam_notification_title">Era spam a chamada do %1$s?</string>
-  <string name="spam_notification_block_report_toast_text">Bloqueouse o %1$s e informouse de que a chamada era spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Informouse de que a chamada do %1$s non era spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Toca para engadir o número a contactos ou bloquéao se é spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">É a primeira vez que te chama este número. Se a chamada era spam, podes bloquear o número e marcalo como inadecuado.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Toca para informar de que non era spam ou bloquear o número</string>
-  <string name="spam_notification_report_spam_action_text">Bloquear e informar</string>
-  <string name="spam_notification_add_contact_action_text">Engadir contacto</string>
   <string name="spam_notification_dialog_add_contact_action_text">Engadir a contactos</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloquear e informar de spam</string>
   <string name="spam_notification_was_not_spam_action_text">Non era spam</string>
diff --git a/java/com/android/incallui/spam/res/values-gu/strings.xml b/java/com/android/incallui/spam/res/values-gu/strings.xml
index ab3a111..e99b76c 100644
--- a/java/com/android/incallui/spam/res/values-gu/strings.xml
+++ b/java/com/android/incallui/spam/res/values-gu/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s ને જાણો છો?</string>
   <string name="spam_notification_title">શું %1$s એક સ્પામ કૉલર હતો?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s ને અવરોધિત કર્યો અને કૉલની સ્પામ તરીકે જાણ કરવામાં આવી.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s ના કૉલની સ્પામ નથી તરીકે જાણ કરવામાં આવી.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">સંપર્કોમાં ઉમેરવા માટે ટૅપ કરો અથવા સ્પામ નંબરને અવરોધિત કરો.</string>
   <string name="spam_notification_non_spam_call_expanded_text">આ નંબરથી તમને પહેલી વાર કૉલ કરવામાં આવ્યો છે. જો આ કૉલ સ્પામ હોય, તો તમે આ નંબરને અવરોધિત કરી અને તેની જાણ કરી શકો છો.</string>
-  <string name="spam_notification_spam_call_collapsed_text">સ્પામ નથી તરીકે જાણ કરવા માટે ટૅપ કરો અથવા તેને બ્લૉક કરો</string>
-  <string name="spam_notification_report_spam_action_text">અવરોધિત અને જાણ કરો</string>
-  <string name="spam_notification_add_contact_action_text">સંપર્ક ઉમેરો</string>
   <string name="spam_notification_dialog_add_contact_action_text">સંપર્કોમાં ઉમેરો</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">અવરોધિત કરો અને સ્પામ તરીકે જાણ કરો</string>
   <string name="spam_notification_was_not_spam_action_text">ના, આ સ્પામ નથી</string>
diff --git a/java/com/android/incallui/spam/res/values-hi/strings.xml b/java/com/android/incallui/spam/res/values-hi/strings.xml
index d30f16a..fb59059 100644
--- a/java/com/android/incallui/spam/res/values-hi/strings.xml
+++ b/java/com/android/incallui/spam/res/values-hi/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">क्या आप %1$s से परिचित हैं?</string>
   <string name="spam_notification_title">क्या %1$s एक स्पैम कॉलर था?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s ब्लॉक कर दिया गया और कॉल को स्पैम के रूप में रिपोर्ट किया गया.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s से आए कॉल की स्पैम के रूप में रिपोर्ट नहीं की गई.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">संपर्कों में जोड़ने के लिए टैप करें या स्पैम नंबर ब्लॉक करें.</string>
   <string name="spam_notification_non_spam_call_expanded_text">इस नंबर से आपको पहली बार कॉल किया गया है. अगर यह कॉल स्पैम था, तो आप इस नंबर को ब्लॉक कर सकते हैं और उसकी रिपोर्ट कर सकते हैं.</string>
-  <string name="spam_notification_spam_call_collapsed_text">उसे स्पैम नहीं के रूप में रिपोर्ट करने या ब्लॉक करने के लिए टैप करें</string>
-  <string name="spam_notification_report_spam_action_text">ब्लॉक व रिपोर्ट करें</string>
-  <string name="spam_notification_add_contact_action_text">संपर्क जोड़ें</string>
   <string name="spam_notification_dialog_add_contact_action_text">संपर्क में जोड़ें</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">स्पैम को ब्लॉक करके उसकी रिपोर्ट करें</string>
   <string name="spam_notification_was_not_spam_action_text">नहीं, स्पैम नहीं है</string>
diff --git a/java/com/android/incallui/spam/res/values-hr/strings.xml b/java/com/android/incallui/spam/res/values-hr/strings.xml
index e0a2634..423f8ac 100644
--- a/java/com/android/incallui/spam/res/values-hr/strings.xml
+++ b/java/com/android/incallui/spam/res/values-hr/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Poznajete li broj %1$s?</string>
   <string name="spam_notification_title">Je li poziv s broja %1$s bio neželjeni?</string>
-  <string name="spam_notification_block_report_toast_text">Broj %1$s blokiran je, a poziv je prijavljen kao neželjeni.</string>
-  <string name="spam_notification_not_spam_toast_text">Poziv s broja %1$s prijavljen je kao željeni.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Dodirnite za dodavanje kontakata ili blokiranje neželjenih brojeva.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Prvi put ste primili poziv s tog broja. Ako je poziv bio neželjen, broj možete blokirati i prijaviti ga.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Dodirnite kako biste prijavili da poziv nije neželjeni ili ga blokirajte</string>
-  <string name="spam_notification_report_spam_action_text">Blokiranje i prijava</string>
-  <string name="spam_notification_add_contact_action_text">Dodaj kontakt</string>
   <string name="spam_notification_dialog_add_contact_action_text">Dodaj u kontakte</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokiranje i prijava neželjenog poziva</string>
   <string name="spam_notification_was_not_spam_action_text">Ne, nije neželjeni poziv</string>
diff --git a/java/com/android/incallui/spam/res/values-hu/strings.xml b/java/com/android/incallui/spam/res/values-hu/strings.xml
index 124f7ab..64e5c66 100644
--- a/java/com/android/incallui/spam/res/values-hu/strings.xml
+++ b/java/com/android/incallui/spam/res/values-hu/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Ismeri a következő számot: %1$s?</string>
   <string name="spam_notification_title">Spamhívás érkezett erről a számról: %1$s?</string>
-  <string name="spam_notification_block_report_toast_text">Letiltotta a(z) %1$s számot, és bejelentette a hívást spamként.</string>
-  <string name="spam_notification_not_spam_toast_text">A(z) %1$s számról érkező hívást bejelentette nem spamként.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Koppintson a névjegyekhez való hozzáadáshoz vagy a spamszám letiltásához.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Ez az első alkalom, hogy erről a számról hívása érkezett. Ha a hívás spam, letilthatja és bejelentheti a számot.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Koppintson a nem spamként való bejelentéshez vagy a letiltáshoz</string>
-  <string name="spam_notification_report_spam_action_text">Tiltás és bejelentés</string>
-  <string name="spam_notification_add_contact_action_text">Névjegy hozzáadása</string>
   <string name="spam_notification_dialog_add_contact_action_text">Hozzáadás a névjegyekhez</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Letiltás és spam bejelentése</string>
   <string name="spam_notification_was_not_spam_action_text">Nem, nem spam volt</string>
diff --git a/java/com/android/incallui/spam/res/values-hy/strings.xml b/java/com/android/incallui/spam/res/values-hy/strings.xml
index 25fad84..6f16f80 100644
--- a/java/com/android/incallui/spam/res/values-hy/strings.xml
+++ b/java/com/android/incallui/spam/res/values-hy/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s համարը ծանո՞թ է</string>
   <string name="spam_notification_title">%1$s համարից ստացված զանգը սպա՞մ էր</string>
-  <string name="spam_notification_block_report_toast_text">%1$s համարն արգելափակվեց, և զանգը նշվեց որպես սպամ:</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s համարից ստացված զանգը նշվեց որպես ոչ սպամ:</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Հպեք՝ կոնտակտներում ավելացնելու համար, կամ արգելափակեք լցոնային համարը:</string>
   <string name="spam_notification_non_spam_call_expanded_text">Այս համարից առաջին անգամ եք զանգ ստանում: Եթե այս զանգը սպամ էր, դուք կարող եք արգելափակել այս համարը և նշել այն որպես սպամ:</string>
-  <string name="spam_notification_spam_call_collapsed_text">Հպեք «սպամ չէ» կոճակին՝ համարը որպես ոչ սպամ նշելու համար, կամ արգելափակեք այն</string>
-  <string name="spam_notification_report_spam_action_text">Արգելափակել և նշել սպամ</string>
-  <string name="spam_notification_add_contact_action_text">Ավելացնել կոնտակտ</string>
   <string name="spam_notification_dialog_add_contact_action_text">Ավելացնել կոնտակտներում</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Արգելափակել և նշել որպես սպամ</string>
   <string name="spam_notification_was_not_spam_action_text">Ոչ, սպամ չէ</string>
diff --git a/java/com/android/incallui/spam/res/values-in/strings.xml b/java/com/android/incallui/spam/res/values-in/strings.xml
index ed1df02..7db8481 100644
--- a/java/com/android/incallui/spam/res/values-in/strings.xml
+++ b/java/com/android/incallui/spam/res/values-in/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Tahu nomor %1$s?</string>
   <string name="spam_notification_title">Apakah panggilan dari %1$s merupakan spam?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s diblokir dan panggilan dilaporkan sebagai spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Panggilan dari %1$s dilaporkan sebagai bukan spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Tap untuk menambahkan ke kontak atau memblokir nomor spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Nomor ini baru pertama kali menghubungi Anda. Jika panggilan termasuk spam, Anda dapat memblokir nomor ini dan melaporkannya.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Tap untuk melaporkan sebagai bukan spam, atau blokir</string>
-  <string name="spam_notification_report_spam_action_text">Blokir &amp; laporkan</string>
-  <string name="spam_notification_add_contact_action_text">Tambahkan kontak</string>
   <string name="spam_notification_dialog_add_contact_action_text">Tambahkan ke kontak</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokir &amp; laporkan sebagai spam</string>
   <string name="spam_notification_was_not_spam_action_text">Tidak, bukan spam</string>
diff --git a/java/com/android/incallui/spam/res/values-is/strings.xml b/java/com/android/incallui/spam/res/values-is/strings.xml
index aef77a8..6adad24 100644
--- a/java/com/android/incallui/spam/res/values-is/strings.xml
+++ b/java/com/android/incallui/spam/res/values-is/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Þekkirðu %1$s?</string>
   <string name="spam_notification_title">Var %1$s ruslnúmer?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s var sett á bannlista og símtalið tilkynnt.</string>
-  <string name="spam_notification_not_spam_toast_text">Símtal frá %1$s var ekki tilkynnt.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Ýttu til að bæta í tengiliði eða setja á bannlista.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Þetta er í fyrsta sinn sem hringt er í þig úr þessu númeri. Ef þetta símtal var úr ruslnúmeri geturðu sett það á bannlista og tilkynnt það.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Ýttu til að tilkynna að þetta sé ekki ruslnúmer eða til að setja það á bannlista</string>
-  <string name="spam_notification_report_spam_action_text">Banna og tilkynna</string>
-  <string name="spam_notification_add_contact_action_text">Bæta tengilið við</string>
   <string name="spam_notification_dialog_add_contact_action_text">Bæta við tengiliði</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Banna og tilkynna sem ruslnúmer</string>
   <string name="spam_notification_was_not_spam_action_text">Nei, ekki ruslnúmer</string>
diff --git a/java/com/android/incallui/spam/res/values-it/strings.xml b/java/com/android/incallui/spam/res/values-it/strings.xml
index 89075c0..2d49211 100644
--- a/java/com/android/incallui/spam/res/values-it/strings.xml
+++ b/java/com/android/incallui/spam/res/values-it/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Conosci %1$s?</string>
   <string name="spam_notification_title">La chiamata di %1$s era spam?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s è stato bloccato e la chiamata è stata segnalata come spam.</string>
-  <string name="spam_notification_not_spam_toast_text">La chiamata da %1$s è stata segnalata come non spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Tocca per aggiungere ai contatti o per bloccare il numero come spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">È la prima volta che vieni chiamato da questo numero. Se la chiamata era spam, puoi bloccare il numero e segnalarlo.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Tocca per segnalare il numero come non spam o per bloccarlo.</string>
-  <string name="spam_notification_report_spam_action_text">Blocca e segnala</string>
-  <string name="spam_notification_add_contact_action_text">Aggiungi contatto</string>
   <string name="spam_notification_dialog_add_contact_action_text">Aggiungi a contatti</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blocca e segnala spam</string>
   <string name="spam_notification_was_not_spam_action_text">No, non era spam</string>
diff --git a/java/com/android/incallui/spam/res/values-iw/strings.xml b/java/com/android/incallui/spam/res/values-iw/strings.xml
index 788bb9c..d3cb18e 100644
--- a/java/com/android/incallui/spam/res/values-iw/strings.xml
+++ b/java/com/android/incallui/spam/res/values-iw/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">האם %1$s מוכר לך?</string>
   <string name="spam_notification_title">האם השיחה מ-%1$s הייתה ספאם?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s נחסם והשיחה דווחה כספאם.</string>
-  <string name="spam_notification_not_spam_toast_text">השיחה מ-%1$s דווחה שהיא אינה ספאם.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">ניתן להקיש כדי להוסיף את המספר לאנשי הקשר או לחסום אותו כספאם.</string>
   <string name="spam_notification_non_spam_call_expanded_text">זוהי הפעם הראשונה שמתקשרים אליך מהמספר הזה. אם השיחה הזו הייתה ספאם, באפשרותך לחסום את המספר הזה ולדווח עליו.</string>
-  <string name="spam_notification_spam_call_collapsed_text">ניתן להקיש כדי לדווח שזה לא ספאם או כדי לחסום את המספר.</string>
-  <string name="spam_notification_report_spam_action_text">חסימה ודיווח</string>
-  <string name="spam_notification_add_contact_action_text">הוספת איש קשר</string>
   <string name="spam_notification_dialog_add_contact_action_text">הוספה לאנשי הקשר</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">חסימה ודיווח כספאם</string>
   <string name="spam_notification_was_not_spam_action_text">לא, זה לא ספאם</string>
diff --git a/java/com/android/incallui/spam/res/values-ja/strings.xml b/java/com/android/incallui/spam/res/values-ja/strings.xml
index 6de844f..3481692 100644
--- a/java/com/android/incallui/spam/res/values-ja/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ja/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">発信者（%1$s）をご存知ですか？</string>
   <string name="spam_notification_title">%1$s は迷惑電話でしたか？</string>
-  <string name="spam_notification_block_report_toast_text">「%1$s」をブロックして、迷惑電話として報告しました。</string>
-  <string name="spam_notification_not_spam_toast_text">「%1$s」からの通話は迷惑電話ではないと報告しました。</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">タップして連絡先に追加するか、迷惑電話としてこの番号をブロックできます。</string>
   <string name="spam_notification_non_spam_call_expanded_text">この番号からの通話を着信したのはこれが初めてです。迷惑電話だった場合は、この番号をブロックして報告してください。</string>
-  <string name="spam_notification_spam_call_collapsed_text">タップして「迷惑電話ではない」と報告するか、この番号をブロックできます</string>
-  <string name="spam_notification_report_spam_action_text">ブロックして報告</string>
-  <string name="spam_notification_add_contact_action_text">連絡先に追加</string>
   <string name="spam_notification_dialog_add_contact_action_text">連絡先に追加</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">ブロックして迷惑電話として報告</string>
   <string name="spam_notification_was_not_spam_action_text">迷惑電話ではない</string>
diff --git a/java/com/android/incallui/spam/res/values-ka/strings.xml b/java/com/android/incallui/spam/res/values-ka/strings.xml
index 3732abb..0019192 100644
--- a/java/com/android/incallui/spam/res/values-ka/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ka/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s ნაცნობია?</string>
   <string name="spam_notification_title">%1$s სპამერი აბონენტი იყო?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s დაიბლოკა და ზარი სპამად მოინიშნა.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s-დან ზარზე გაიგზავნა სპამის გაუქმების შეტყობინება.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">შეეხეთ კონტაქტებში დასამატებლად ან სპამის ნომრის დასაბლოკად.</string>
   <string name="spam_notification_non_spam_call_expanded_text">ამ ნომრიდან პირველად დაგირეკეს. თუ ეს ზარი სპამი იყო, შეგიძლიათ დაბლოკოთ ეს ნომერი და შეგვატყობინოთ.</string>
-  <string name="spam_notification_spam_call_collapsed_text">შეეხეთ, რათა გვაცნობოთ, რომ „სპამი არ არის“, ან დაბლოკოთ</string>
-  <string name="spam_notification_report_spam_action_text">დაბლოკვა და შეტყობ.</string>
-  <string name="spam_notification_add_contact_action_text">კონტაქტის დამატება</string>
   <string name="spam_notification_dialog_add_contact_action_text">კონტაქტებში დამატება</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">დაბლოკვა და სპამის შესახებ შეტყობინება</string>
   <string name="spam_notification_was_not_spam_action_text">არა, სპამი არ არის</string>
diff --git a/java/com/android/incallui/spam/res/values-kk/strings.xml b/java/com/android/incallui/spam/res/values-kk/strings.xml
index 0e83098..4b011c5 100644
--- a/java/com/android/incallui/spam/res/values-kk/strings.xml
+++ b/java/com/android/incallui/spam/res/values-kk/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s таныс па?</string>
   <string name="spam_notification_title">%1$s қоңырауы спам болды ма?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s бөгеліп, \"спам\" деп белгіленді.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s қоңырауы \"спам емес\" деп белгіленді.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Контактілерге қосу немесе спам нөмірді бөгеу үшін түртіңіз.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Бұл нөмір сізге алғаш рет қоңырау шалып тұр. Егер қоңырау спам болса, нөмірді бөгеп, \"спам\" деп белгілеуге болады.</string>
-  <string name="spam_notification_spam_call_collapsed_text">\"Спам емес\" деп белгілеу не бөгеу үшін түртіңіз</string>
-  <string name="spam_notification_report_spam_action_text">Бөгеу және хабарлау</string>
-  <string name="spam_notification_add_contact_action_text">Контакт қосу</string>
   <string name="spam_notification_dialog_add_contact_action_text">Контактілерге қосу</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Бөгеу және спам туралы хабарлау</string>
   <string name="spam_notification_was_not_spam_action_text">Жоқ, спам емес</string>
diff --git a/java/com/android/incallui/spam/res/values-km/strings.xml b/java/com/android/incallui/spam/res/values-km/strings.xml
index 60c51cb..ddd7efe 100644
--- a/java/com/android/incallui/spam/res/values-km/strings.xml
+++ b/java/com/android/incallui/spam/res/values-km/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">ស្គាល់ %1$s?</string>
   <string name="spam_notification_title">តើ %1$s ជា​អ្នក​ហៅ​ដែល​ឥត​បាន​ការ​មែនទេ?</string>
-  <string name="spam_notification_block_report_toast_text">បាន​បិទ %1$s និង​បាន​រាយការណ៍​ការ​ហៅ​ថា​ជា​​ការហៅ​ឥត​បានការ។</string>
-  <string name="spam_notification_not_spam_toast_text">ការ​ហៅ​ពី %1$s ត្រូវបាន​រាយការណ៍​ថា​ មិន​មែន​ជា​ការហៅ​​ឥត​បានការ។</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">ចុច ​ដើម្បី​បញ្ចូល​​ទំនាក់ទំនង ឬ​​បិទលេខ​ដែល​​ឥត​បាន​​ការ។</string>
   <string name="spam_notification_non_spam_call_expanded_text">នេះ​គឺ​ជា​លើក​ដំបូង​ហើយ​ដែល​លេខ​នេះ​បាន​ហៅ​មក​អ្នក។ បើ​ការ​ហៅ​នេះ​ជា​ការហៅ​​ឥត​បានការ អ្នក​អាច​ទប់ស្កាត់​លេខ​​នេះ និង​រាយការណ៍​បញ្ហា​នេះ។</string>
-  <string name="spam_notification_spam_call_collapsed_text">ចុចដើម្បី​រាយការណ៍​​ថា​មិន​មែន​ជា​ការហៅ​​ឥត​បានការ ឬ​ទប់ស្កាត់​វា។</string>
-  <string name="spam_notification_report_spam_action_text">ទប់ស្កាត់និងរាយការណ៍</string>
-  <string name="spam_notification_add_contact_action_text">បញ្ចូល​​ទំនាក់ទំនង</string>
   <string name="spam_notification_dialog_add_contact_action_text">បញ្ចូល​ទៅ​ក្នុង​ទំនាក់ទំនង</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">ទប់ស្កាត់ និងរាយការណ៍​ការហៅ​ឥត​បានការ</string>
   <string name="spam_notification_was_not_spam_action_text">ទេ មិន​មែន​ជា​ការហៅ​ឥត​បាន​ការទេ</string>
diff --git a/java/com/android/incallui/spam/res/values-kn/strings.xml b/java/com/android/incallui/spam/res/values-kn/strings.xml
index 7c87636..f2c1f8b 100644
--- a/java/com/android/incallui/spam/res/values-kn/strings.xml
+++ b/java/com/android/incallui/spam/res/values-kn/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s ತಿಳಿದಿದೆಯೇ?</string>
   <string name="spam_notification_title">%1$s ಇದು ಸ್ಪ್ಯಾಮ್ ಕರೆಯೇ?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ ಮತ್ತು ಕರೆಯನ್ನು ಸ್ಪ್ಯಾಮ್ ಎಂದು ವರದಿ ಮಾಡಲಾಗಿದೆ.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s ನಿಂದ ಕರೆಯನ್ನು ಸ್ಪ್ಯಾಮ್ ಅಲ್ಲ ಎಂದು ವರದಿಮಾಡಲಾಗಿದೆ.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">ಸಂಪರ್ಕಗಳಿಗೆ ಸೇರಿಸಲು ಅಥವಾ ಸ್ಪ್ಯಾಮ್ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಬಂಧಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ.</string>
   <string name="spam_notification_non_spam_call_expanded_text">ಇದೇ ಮೊದಲ ಬಾರಿಗೆ ಈ ಸಂಖ್ಯೆಯಿಂದ ನಿಮಗೆ ಕರೆ ಮಾಡಲಾಗಿದೆ. ಈ ಕರೆಯು ಸ್ಪ್ಯಾಮ್ ಎನಿಸಿದರೆ, ನೀವು ಈ ಕರೆಯನ್ನು ನಿರ್ಬಂಧಿಸಬಹುದು ಮತ್ತು ವರದಿ ಮಾಡಿ.</string>
-  <string name="spam_notification_spam_call_collapsed_text">ಸ್ಪ್ಯಾಮ್ ಅಲ್ಲ ಎಂದು ವರದಿ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ ಅಥವಾ ಇದನ್ನು ನಿರ್ಬಂಧಿಸಿ.</string>
-  <string name="spam_notification_report_spam_action_text">ನಿರ್ಬಂಧಿಸಿ ಮತ್ತು ವರದಿ ಮಾಡಿ</string>
-  <string name="spam_notification_add_contact_action_text">ಸಂಪರ್ಕ ಸೇರಿಸಿ</string>
   <string name="spam_notification_dialog_add_contact_action_text">ಸಂಪರ್ಕಗಳಿಗೆ ಸೇರಿಸಿ</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">ನಿರ್ಬಂಧಿಸಿ ಮತ್ತು ಸ್ಪ್ಯಾಮ್ ವರದಿ ಮಾಡಿ</string>
   <string name="spam_notification_was_not_spam_action_text">ಇಲ್ಲ, ಸ್ಪ್ಯಾಮ್‌ ಅಲ್ಲ</string>
diff --git a/java/com/android/incallui/spam/res/values-ko/strings.xml b/java/com/android/incallui/spam/res/values-ko/strings.xml
index 28a8fb5..3b5c795 100644
--- a/java/com/android/incallui/spam/res/values-ko/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ko/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s번은 알고 있는 전화번호인가요?</string>
   <string name="spam_notification_title">%1$s번이 스팸 발신자였나요?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s번을 차단하고 스팸으로 신고했습니다.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s번으로 걸려온 전화는 스팸이 아닌 것으로 신고했습니다.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">탭하여 연락처에 추가하거나 스팸 전화번호를 차단합니다.</string>
   <string name="spam_notification_non_spam_call_expanded_text">이 번호에서 처음으로 걸려온 전화입니다. 이 전화가 스팸이라면 이 전화번호를 차단하고 신고할 수 있습니다.</string>
-  <string name="spam_notification_spam_call_collapsed_text">탭하여 스팸이 아닌 것으로 보고하거나 차단하세요.</string>
-  <string name="spam_notification_report_spam_action_text">차단 및 신고</string>
-  <string name="spam_notification_add_contact_action_text">연락처 추가</string>
   <string name="spam_notification_dialog_add_contact_action_text">연락처에 추가</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">스팸 차단 및 신고</string>
   <string name="spam_notification_was_not_spam_action_text">아니요, 스팸이 아닙니다.</string>
diff --git a/java/com/android/incallui/spam/res/values-ky/strings.xml b/java/com/android/incallui/spam/res/values-ky/strings.xml
index dad6eef..af321ee 100644
--- a/java/com/android/incallui/spam/res/values-ky/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ky/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s билесизби?</string>
   <string name="spam_notification_title">%1$s спам чалуу болдубу?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s бөгөттөлдү жана бул чалуу спам деп кабарланды.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s номеринен келген чалуу спам эмес деп кабарланды.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Номерди байланыштарга кошуу үчүн таптап коюңуз же спам деп бөгөттөңүз</string>
   <string name="spam_notification_non_spam_call_expanded_text">Бул номер сизге биринчи жолу чалып жатат. Ал спам болсо, номерди бөгөттөп, ал жөнүндө кабарлап койсоңуз болот.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Спам эмес деп кабарлоо үчүн таптап коюңуз же аны бөгөттөңүз</string>
-  <string name="spam_notification_report_spam_action_text">Бөгөттөө жана кабарлоо</string>
-  <string name="spam_notification_add_contact_action_text">Байланыш кошуу</string>
   <string name="spam_notification_dialog_add_contact_action_text">Байланыштарга кошуу</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Бөгөттөө жана спам тууралуу кабарлоо</string>
   <string name="spam_notification_was_not_spam_action_text">Жок, спам эмес</string>
diff --git a/java/com/android/incallui/spam/res/values-lo/strings.xml b/java/com/android/incallui/spam/res/values-lo/strings.xml
index 6683e65..3005be8 100644
--- a/java/com/android/incallui/spam/res/values-lo/strings.xml
+++ b/java/com/android/incallui/spam/res/values-lo/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">ຮູ້ຈັກ %1$s ບໍ?</string>
   <string name="spam_notification_title">%1$s ເປັນການໂທສະແປມບໍ?</string>
-  <string name="spam_notification_block_report_toast_text">ບລັອກ %1$s ແລະ ລາຍງານການໂທວ່າເປັນສະແປມແລ້ວ.</string>
-  <string name="spam_notification_not_spam_toast_text">ໝາຍການໂທຈາກ %1$s ວ່າບໍ່ແມ່ນສະແປມແລ້ວ.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">ແຕະເພື່ອເພີ່ມໃສ່ລາຍຊື່ຜູ້ຕິດຕໍ່ ຫຼື ບລັອກເບີໂທສະແປມ.</string>
   <string name="spam_notification_non_spam_call_expanded_text">ນີ້ເປັນເທື່ອທຳອິດທີ່ເບີນີ້ໂທຫາທ່ານ. ຫາກນີ້ເປັນການໂທສະແປມ, ທ່ານສາມາດບລັອກເບີນີ້ ແລະ ລາຍງານມັນໄດ້.</string>
-  <string name="spam_notification_spam_call_collapsed_text">ແຕະເພື່ອລາຍງານວ່າບໍ່ແມ່ນສະແປມ ຫຼື ບລັອກມັນ</string>
-  <string name="spam_notification_report_spam_action_text">ບລັອກ ແລະ ລາຍງານ</string>
-  <string name="spam_notification_add_contact_action_text">ເພີ່ມລາຍຊື່ຜູ້ຕິດຕໍ່</string>
   <string name="spam_notification_dialog_add_contact_action_text">ເພີ່ມໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">ບລັອກ ແລະ ລາຍງານສະແປມ</string>
   <string name="spam_notification_was_not_spam_action_text">ບໍ່, ບໍ່ແມ່ນສະແປມ</string>
diff --git a/java/com/android/incallui/spam/res/values-lt/strings.xml b/java/com/android/incallui/spam/res/values-lt/strings.xml
index cb5c004..bfcb5e6 100644
--- a/java/com/android/incallui/spam/res/values-lt/strings.xml
+++ b/java/com/android/incallui/spam/res/values-lt/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Pažįstate numerį %1$s?</string>
   <string name="spam_notification_title">Ar %1$s atliko šlamšto skambutį?</string>
-  <string name="spam_notification_block_report_toast_text">Numeris %1$s užblokuotas ir apie skambutį buvo pranešta kaip apie šlamštą.</string>
-  <string name="spam_notification_not_spam_toast_text">Apie skambutį iš numerio %1$s buvo pranešta kaip ne apie šlamštą.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Palieskite, kad pridėtumėte prie kontaktų arba blokuotumėte numerį kaip šlamšto siuntėją.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Tai pirmas kartas, kai jums buvo skambinama iš šio numerio. Jei šis skambutis buvo šlamštas, galite užblokuoti šį numerį ir apie jį pranešti.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Palieskite, kad praneštumėte kaip apie ne šlamštą arba užblokuotumėte</string>
-  <string name="spam_notification_report_spam_action_text">Blokuoti ir pranešti</string>
-  <string name="spam_notification_add_contact_action_text">Pridėti kontaktą</string>
   <string name="spam_notification_dialog_add_contact_action_text">Pridėti prie kontaktų</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokuoti ir pranešti apie šlamštą</string>
   <string name="spam_notification_was_not_spam_action_text">Ne, ne šlamštas</string>
diff --git a/java/com/android/incallui/spam/res/values-lv/strings.xml b/java/com/android/incallui/spam/res/values-lv/strings.xml
index 80697aa..c2bb42a 100644
--- a/java/com/android/incallui/spam/res/values-lv/strings.xml
+++ b/java/com/android/incallui/spam/res/values-lv/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Vai saglabāt numuru %1$s?</string>
   <string name="spam_notification_title">Vai zvanītājs %1$s bija nevēlams?</string>
-  <string name="spam_notification_block_report_toast_text">Numurs %1$s ir bloķēts, un zvans tika atzīmēts kā nevēlams.</string>
-  <string name="spam_notification_not_spam_toast_text">Zvans no numura %1$s netika atzīmēts kā nevēlams.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Pieskarieties, lai numuru pievienotu kontaktpersonām vai bloķētu nevēlamu numuru.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Šis jums ir pirmais zvans no šī numura. Ja šis zvans bija nevēlams, varat bloķēt šo numuru un ziņot par to.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Pieskarieties, lai ziņotu, ka zvans nebija nevēlams, vai bloķētu numuru.</string>
-  <string name="spam_notification_report_spam_action_text">Bloķēt un ziņot</string>
-  <string name="spam_notification_add_contact_action_text">Pievienot kontaktp.</string>
   <string name="spam_notification_dialog_add_contact_action_text">Pievienot kontaktpersonām</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloķēt numuru un ziņot par to</string>
   <string name="spam_notification_was_not_spam_action_text">Nē, tas nebija nevēlams zvans</string>
diff --git a/java/com/android/incallui/spam/res/values-mk/strings.xml b/java/com/android/incallui/spam/res/values-mk/strings.xml
index 882a155..dca1096 100644
--- a/java/com/android/incallui/spam/res/values-mk/strings.xml
+++ b/java/com/android/incallui/spam/res/values-mk/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Го знаете %1$s?</string>
   <string name="spam_notification_title">Дали повикот од %1$s беше спам?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s е блокиран и повикот е пријавен како спам.</string>
-  <string name="spam_notification_not_spam_toast_text">Повикот од %1$s е пријавен дека не е спам.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Допрете за додавање контакти или блокирање спам број.</string>
   <string name="spam_notification_non_spam_call_expanded_text">За првпат добивте повик од бројов. Ако повикот е спам, бројот може да го блокирате и да го пријавите.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Допрете за да пријавите дека не е спам или за да го блокирате.</string>
-  <string name="spam_notification_report_spam_action_text">Блокирај и пријави</string>
-  <string name="spam_notification_add_contact_action_text">Додај контакт</string>
   <string name="spam_notification_dialog_add_contact_action_text">Додај во контакти</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Блокирај и пријави спам</string>
   <string name="spam_notification_was_not_spam_action_text">Не, не е спам</string>
diff --git a/java/com/android/incallui/spam/res/values-ml/strings.xml b/java/com/android/incallui/spam/res/values-ml/strings.xml
index ff7983e..445983c 100644
--- a/java/com/android/incallui/spam/res/values-ml/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ml/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s അറിയാമോ?</string>
   <string name="spam_notification_title">%1$s സ്‌പാം കോളർ ആയിരുന്നോ?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s ബ്ലോക്കുചെയ്‌ത്, കോൾ സ്‌പാം ആയി റിപ്പോർട്ടുചെയ്‌തു.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s എന്ന നമ്പറിൽ നിന്നുള്ള കോളിനെ സ്‌പാം അല്ലെന്ന് റിപ്പോർട്ടുചെയ്‌തു.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">കോൺടാക്‌റ്റുകളിലേക്ക് ചേർക്കാനോ സ്‌പാം നമ്പർ ബ്ലോക്കുചെയ്യാനോ ടാപ്പുചെയ്യുക.</string>
   <string name="spam_notification_non_spam_call_expanded_text">ഈ നമ്പറിൽ നിന്ന് ആദ്യമായാണ് നിങ്ങൾക്ക് കോൾ വരുന്നത്. ഈ കോൾ സ്‌പാം ആയിരുന്നെങ്കിൽ, ഈ നമ്പർ ബ്ലോക്കുചെയ്‌ത് റിപ്പോർട്ടുചെയ്യാനാകും.</string>
-  <string name="spam_notification_spam_call_collapsed_text">സ്‌പാം അല്ല എന്ന് റിപ്പോർട്ട് ചെയ്യാൻ ടാപ്പ് ചെയ്യുക, അല്ലെങ്കിൽ അത് ബ്ലോക്ക് ചെയ്യുക</string>
-  <string name="spam_notification_report_spam_action_text">ബ്ലോക്കുചെയ്‌ത്, റിപ്പോർട്ടുചെയ്യുക</string>
-  <string name="spam_notification_add_contact_action_text">കോൺടാക്റ്റ് ചേർക്കുക</string>
   <string name="spam_notification_dialog_add_contact_action_text">കോൺടാക്‌റ്റുകളിൽ ചേർക്കുക</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">ബ്ലോക്കുചെയ്‌ത്, സ്‌പാമെന്ന് റിപ്പോർട്ടുചെയ്യുക</string>
   <string name="spam_notification_was_not_spam_action_text">അല്ല, സ്‌പാം അല്ല</string>
diff --git a/java/com/android/incallui/spam/res/values-mn/strings.xml b/java/com/android/incallui/spam/res/values-mn/strings.xml
index 5b902c1..cfd65fe 100644
--- a/java/com/android/incallui/spam/res/values-mn/strings.xml
+++ b/java/com/android/incallui/spam/res/values-mn/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s-г мэдэх үү?</string>
   <string name="spam_notification_title">%1$s спам дуудлага хийгч байсан уу?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s-г хориглож, дуудлагыг спам гэж мэдээлсэн.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s-с ирсэн дуудлагыг спам гэж мэдээлсэн.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Харилцагчдад нэмэх буюу спам дугаарыг хориглох бол товшино уу.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Энэ дугаараас танд анх удаа дуудлага ирсэн. Хэрэв энэ дуудлага спам бол та энэ дугаарыг хориглож, спамаар мэдээлэх боломжтой.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Спам биш гэж мэдээлэх эсвэл хориглох бол товшино уу</string>
-  <string name="spam_notification_report_spam_action_text">Хориглож, мэдээлэх</string>
-  <string name="spam_notification_add_contact_action_text">Харилцагч нэмэх</string>
   <string name="spam_notification_dialog_add_contact_action_text">Харилцагчдад нэмэх</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Хориглож, спам гэж мэдээлэх</string>
   <string name="spam_notification_was_not_spam_action_text">Үгүй, спам биш</string>
diff --git a/java/com/android/incallui/spam/res/values-mr/strings.xml b/java/com/android/incallui/spam/res/values-mr/strings.xml
index d18c16b..d8d252c 100644
--- a/java/com/android/incallui/spam/res/values-mr/strings.xml
+++ b/java/com/android/incallui/spam/res/values-mr/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s माहीत आहे का?</string>
   <string name="spam_notification_title">%1$s स्‍पॅम कॉलर होता?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s ब्लॉक केला आणि कॉल स्पॅम असल्याचे कळवले.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s वरील कॉल स्पॅम नसल्याचे कळवले.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">संपर्कांमध्ये जोडण्यासाठी किंवा स्पॅम नंबर ब्लॉक करण्यासाठी टॅप करा.</string>
   <string name="spam_notification_non_spam_call_expanded_text">तुम्हाला पहिल्यांदाच या नंबरवरून कॉल आला होता. हा कॉल स्पॅम असल्यास, तुम्ही हा नंबर ब्लॉक करू शकता आणि आणि तसे कळवू शकता.</string>
-  <string name="spam_notification_spam_call_collapsed_text">स्पॅम नसल्याचे कळवण्यासाठी किंवा तो ब्लॉक करण्यासाठी टॅप करा</string>
-  <string name="spam_notification_report_spam_action_text">ब्लॉक करा आणि अहवाल द्या</string>
-  <string name="spam_notification_add_contact_action_text">संपर्क जोडा</string>
   <string name="spam_notification_dialog_add_contact_action_text">संपर्कांमध्ये जोडा</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">ब्लॉक करा आणि स्पॅमचा असल्याचे कळवा</string>
   <string name="spam_notification_was_not_spam_action_text">नाही, स्‍पॅम नाही</string>
diff --git a/java/com/android/incallui/spam/res/values-ms/strings.xml b/java/com/android/incallui/spam/res/values-ms/strings.xml
index 410f8cf..c5d4c19 100644
--- a/java/com/android/incallui/spam/res/values-ms/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ms/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Anda mengenali %1$s?</string>
   <string name="spam_notification_title">Adakah %1$s pemanggil spam?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s disekat dan panggilan telah dilaporkan sebagai spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Panggilan daripada %1$s dilaporkan sebagai bukan spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Ketik untuk menambahkan nombor pada kenalan atau sekat nombor spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Ini merupakan kali pertama nombor ini memanggil anda. Jika panggilan ini spam, anda boleh menyekat nombor ini dan melaporkannya.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Ketik untuk melaporkan sebagai bukan spam atau sekat nombor</string>
-  <string name="spam_notification_report_spam_action_text">Sekat &amp; lapor</string>
-  <string name="spam_notification_add_contact_action_text">Tambah kenalan</string>
   <string name="spam_notification_dialog_add_contact_action_text">Tambahkan pada kenalan</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Sekat &amp; laporkan spam</string>
   <string name="spam_notification_was_not_spam_action_text">Tidak, bukan spam</string>
diff --git a/java/com/android/incallui/spam/res/values-my/strings.xml b/java/com/android/incallui/spam/res/values-my/strings.xml
index 56cf579..5492706 100644
--- a/java/com/android/incallui/spam/res/values-my/strings.xml
+++ b/java/com/android/incallui/spam/res/values-my/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s ကို သိပါသလား။</string>
   <string name="spam_notification_title">%1$s က စပမ်းခေါ်ဆိုမှု ဟုတ်ပါသလား။</string>
-  <string name="spam_notification_block_report_toast_text">%1$s ကို ပိတ်ဆို့လိုက်ပြီး ခေါ်ဆိုမှုကို စပမ်းအဖြစ် သတင်းပို့ပြီးပါပြီ။</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s ထံမှ ခေါ်ဆိုမှုကို စပမ်းမဟုတ်ကြောင်း သတင်းပို့ပြီးပါပြီ။</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">အဆက်အသွယ်များသို့ ထည့်ရန် (သို့) စပမ်းနံပါတ်ကို ပိတ်ဆို့ရန် နှိပ်ပါ</string>
   <string name="spam_notification_non_spam_call_expanded_text">ဤနံပါတ်သည် သင့်ထံသို့ ပထမဆုံးခေါ်ဖူးခြင်းဖြစ်သည်။ ဤခေါ်ဆိုမှုသည် စပမ်းဖြစ်ပါက ဤနံပါတ်ကို ပိတ်ဆို့၍ သတင်းပို့နိုင်ပါသည်။</string>
-  <string name="spam_notification_spam_call_collapsed_text">စပမ်းမဟုတ်ကြောင်း သတင်းပို့ရန် နှိပ်ပါ (သို့) ၎င်းကို ပိတ်ပါ</string>
-  <string name="spam_notification_report_spam_action_text">ပိတ်ဆို့ပြီး သတင်းပို့ပါ</string>
-  <string name="spam_notification_add_contact_action_text">အဆက်အသွယ်ထည့်ရန်</string>
   <string name="spam_notification_dialog_add_contact_action_text">အဆက်အသွယ်များထဲသို့ ထည့်ရန်</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">စပမ်းကို ပိတ်ဆို့ပြီး သတင်းပို့ပါ</string>
   <string name="spam_notification_was_not_spam_action_text">စပမ်း မဟုတ်ပါ</string>
diff --git a/java/com/android/incallui/spam/res/values-nb/strings.xml b/java/com/android/incallui/spam/res/values-nb/strings.xml
index 697000c..20b40c1 100644
--- a/java/com/android/incallui/spam/res/values-nb/strings.xml
+++ b/java/com/android/incallui/spam/res/values-nb/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Kjenner du %1$s?</string>
   <string name="spam_notification_title">Var %1$s en useriøs oppringer?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s ble blokkert, og anropet ble rapportert som useriøst.</string>
-  <string name="spam_notification_not_spam_toast_text">Anropet fra %1$s ble rapportert som ikke useriøst.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Trykk for å legge til kontakter eller blokkere det useriøse nummeret.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Dette er den første gangen du blir oppringt fra dette nummeret. Hvis dette anropet var useriøst, kan du blokkere nummeret og rapportere det.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Trykk for å rapportere nummeret som ikke useriøst eller blokkere det.</string>
-  <string name="spam_notification_report_spam_action_text">Blokkér og rapportér</string>
-  <string name="spam_notification_add_contact_action_text">Legg til kontakt</string>
   <string name="spam_notification_dialog_add_contact_action_text">Legg til i kontakter</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokkér og rapportér som useriøst</string>
   <string name="spam_notification_was_not_spam_action_text">Nei, ikke useriøst</string>
diff --git a/java/com/android/incallui/spam/res/values-ne/strings.xml b/java/com/android/incallui/spam/res/values-ne/strings.xml
index 2afdf6a..e3e241e 100644
--- a/java/com/android/incallui/spam/res/values-ne/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ne/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s लाई चिन्नुहुन्छ?</string>
   <string name="spam_notification_title">%1$s स्प्याम कल गर्ने व्यक्ति थिए?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s माथि रोक लगाइयो र कललाई स्प्याम भनी रिपोर्ट गरियो।</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s बाट आएको कललाई स्प्याम होइन भनी रिपोर्ट गरियो।</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">सम्पर्कहरूमा थप्न वा स्प्याम नम्बरमाथि रोक लगाउन ट्याप गर्नुहोस्।</string>
   <string name="spam_notification_non_spam_call_expanded_text">यस नम्बरबाट तपाईंलाई कल आएको यो पहिलोपटक हो। यो कल स्प्याम हो भने तपाईं यो नम्बरमाथि रोक लगाउन र यसबारे रिपोर्ट गर्न सक्नुहुन्छ।</string>
-  <string name="spam_notification_spam_call_collapsed_text">स्प्याम होइन भनी रिपोर्ट गर्न ट्याप गर्नुहोस् वा यसमाथि रोक लगाउनुहोस्</string>
-  <string name="spam_notification_report_spam_action_text">रोक लगाउनुहोस्‌ र रिपोर्ट गर्नुहोस्‌</string>
-  <string name="spam_notification_add_contact_action_text">सम्पर्क थप्नुहोस्</string>
   <string name="spam_notification_dialog_add_contact_action_text">सम्पर्कहरूमा थप्नुहोस्‌</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">रोक लगाउनुहोस्‌ र स्प्याम भनी रिपोर्ट गर्नुहोस्‌</string>
   <string name="spam_notification_was_not_spam_action_text">स्प्याम होइन</string>
diff --git a/java/com/android/incallui/spam/res/values-nl/strings.xml b/java/com/android/incallui/spam/res/values-nl/strings.xml
index f395078..7794e6d 100644
--- a/java/com/android/incallui/spam/res/values-nl/strings.xml
+++ b/java/com/android/incallui/spam/res/values-nl/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Ken je %1$s?</string>
   <string name="spam_notification_title">Was %1$s een spambeller?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s is geblokkeerd en de oproep wordt gemeld als spam.</string>
-  <string name="spam_notification_not_spam_toast_text">De oproep van %1$s wordt niet gemeld als spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Tik om contacten toe te voegen of om dit spamnummer te blokkeren.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Dit is de eerste keer dat je bent gebeld door dit nummer. Als deze oproep spam is, kun je dit nummer blokkeren en melden.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Tik om dit gesprek te melden als GEEN SPAM of om het te blokkeren</string>
-  <string name="spam_notification_report_spam_action_text">Blokkeren en melden</string>
-  <string name="spam_notification_add_contact_action_text">Contact toevoegen</string>
   <string name="spam_notification_dialog_add_contact_action_text">Toevoegen aan contacten</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokkeren en spam melden</string>
   <string name="spam_notification_was_not_spam_action_text">Nee, geen spam</string>
diff --git a/java/com/android/incallui/spam/res/values-no/strings.xml b/java/com/android/incallui/spam/res/values-no/strings.xml
index 697000c..20b40c1 100644
--- a/java/com/android/incallui/spam/res/values-no/strings.xml
+++ b/java/com/android/incallui/spam/res/values-no/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Kjenner du %1$s?</string>
   <string name="spam_notification_title">Var %1$s en useriøs oppringer?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s ble blokkert, og anropet ble rapportert som useriøst.</string>
-  <string name="spam_notification_not_spam_toast_text">Anropet fra %1$s ble rapportert som ikke useriøst.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Trykk for å legge til kontakter eller blokkere det useriøse nummeret.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Dette er den første gangen du blir oppringt fra dette nummeret. Hvis dette anropet var useriøst, kan du blokkere nummeret og rapportere det.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Trykk for å rapportere nummeret som ikke useriøst eller blokkere det.</string>
-  <string name="spam_notification_report_spam_action_text">Blokkér og rapportér</string>
-  <string name="spam_notification_add_contact_action_text">Legg til kontakt</string>
   <string name="spam_notification_dialog_add_contact_action_text">Legg til i kontakter</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokkér og rapportér som useriøst</string>
   <string name="spam_notification_was_not_spam_action_text">Nei, ikke useriøst</string>
diff --git a/java/com/android/incallui/spam/res/values-pa/strings.xml b/java/com/android/incallui/spam/res/values-pa/strings.xml
index c9dc4c0..22aed87 100644
--- a/java/com/android/incallui/spam/res/values-pa/strings.xml
+++ b/java/com/android/incallui/spam/res/values-pa/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">ਕੀ %1$s ਨੂੰ ਜਾਣਦੇ ਹੋ?</string>
   <string name="spam_notification_title">ਕੀ %1$s ਸਪੈਮ ਕਾਲਰ ਸੀ?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s ਨੂੰ ਬਲੌਕ ਕੀਤਾ ਅਤੇ ਕਾਲ ਸਪੈਮ ਵਜੋਂ ਰਿਪੋਰਟ ਕੀਤੀ ਗਈ।</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s ਤੋਂ ਕਾਲ ਸਪੈਮ ਨਹੀਂ ਵਜੋਂ ਰਿਪੋਰਟ ਕੀਤੀ ਗਈ।</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">ਸੰਪਰਕਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਜਾਂ ਸਪੈਮ ਨੰਬਰ ਨੂੰ ਬਲੌਕ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।</string>
   <string name="spam_notification_non_spam_call_expanded_text">ਇਸ ਨੰਬਰ ਤੋਂ ਤੁਹਾਨੂੰ ਪਹਿਲੀ ਵਾਰ ਤੁਹਾਨੂੰ ਕਾਲ ਆਈ ਹੈ, ਜੇਕਰ ਇਹ ਕਾਲ ਸਪੈਮ ਸੀ, ਤਾਂ ਤੁਸੀਂ ਇਹ ਨੰਬਰ ਬਲੌਕ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਇਸਦੀ ਰਿਪੋਰਟ ਕਰ ਸਕਦੇ ਹੋ।</string>
-  <string name="spam_notification_spam_call_collapsed_text">ਸਪੈਮ ਨਹੀਂ ਵਜੋਂ ਰਿਪੋਰਟ ਕਰਨ ਜਾਂ ਇਸ ਨੂੰ ਬਲਾਕ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ</string>
-  <string name="spam_notification_report_spam_action_text">ਬਲੌਕ ਕਰੋ ਅਤੇ ਰਿਪੋਰਟ ਕਰੋ</string>
-  <string name="spam_notification_add_contact_action_text">ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ</string>
   <string name="spam_notification_dialog_add_contact_action_text">ਸੰਪਰਕਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">ਸਪੈਮ ਨੂੰ ਬਲੌਕ ਕਰੋ ਅਤੇ ਇਸਦੀ ਰਿਪੋਰਟ ਕਰੋ</string>
   <string name="spam_notification_was_not_spam_action_text">ਨਹੀਂ, ਸਪੈਮ ਕਾਲ ਨਹੀਂ</string>
diff --git a/java/com/android/incallui/spam/res/values-pl/strings.xml b/java/com/android/incallui/spam/res/values-pl/strings.xml
index bf15192..ec774b0 100644
--- a/java/com/android/incallui/spam/res/values-pl/strings.xml
+++ b/java/com/android/incallui/spam/res/values-pl/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Znasz numer %1$s?</string>
   <string name="spam_notification_title">Czy połączenie z numeru %1$s to spam?</string>
-  <string name="spam_notification_block_report_toast_text">Numer %1$s został zablokowany, a połączenie zgłoszone jako spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Połączenie z numeru %1$s zostało zgłoszone jako niebędące spamem.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Kliknij, aby dodać do kontaktów lub zablokować jako spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">To pierwsze połączenie z tego numeru. Jeśli to spam, możesz zablokować ten numer i zgłosić go.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Kliknij, aby zgłosić to połączenie jako niebędące spamem lub zablokować je</string>
-  <string name="spam_notification_report_spam_action_text">Zablokuj i zgłoś</string>
-  <string name="spam_notification_add_contact_action_text">Dodaj kontakt</string>
   <string name="spam_notification_dialog_add_contact_action_text">Dodaj do kontaktów</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Zablokuj i zgłoś spam</string>
   <string name="spam_notification_was_not_spam_action_text">To nie spam</string>
diff --git a/java/com/android/incallui/spam/res/values-pt-rBR/strings.xml b/java/com/android/incallui/spam/res/values-pt-rBR/strings.xml
index 79810fa..413651c 100644
--- a/java/com/android/incallui/spam/res/values-pt-rBR/strings.xml
+++ b/java/com/android/incallui/spam/res/values-pt-rBR/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Você conhece o número %1$s?</string>
   <string name="spam_notification_title">A chamada do número %1$s era spam?</string>
-  <string name="spam_notification_block_report_toast_text">O número %1$s foi bloqueado, e a chamada foi denunciada como spam.</string>
-  <string name="spam_notification_not_spam_toast_text">A chamada do número %1$s foi informada como não sendo spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Toque para adicionar aos contatos ou bloquear o número do spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Esta é a primeira vez que este número ligou para você. Se a chamada for spam, você poderá bloquear o número e denunciá-lo.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Toque para informar que não é spam ou bloquear</string>
-  <string name="spam_notification_report_spam_action_text">Bloquear e denunciar</string>
-  <string name="spam_notification_add_contact_action_text">Adicionar contato</string>
   <string name="spam_notification_dialog_add_contact_action_text">Adicionar aos contatos</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloquear e denunciar spam</string>
   <string name="spam_notification_was_not_spam_action_text">Não é spam</string>
diff --git a/java/com/android/incallui/spam/res/values-pt-rPT/strings.xml b/java/com/android/incallui/spam/res/values-pt-rPT/strings.xml
index b748032..ee3a699 100644
--- a/java/com/android/incallui/spam/res/values-pt-rPT/strings.xml
+++ b/java/com/android/incallui/spam/res/values-pt-rPT/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Conhece %1$s?</string>
   <string name="spam_notification_title">A chamada de %1$s foi spam?</string>
-  <string name="spam_notification_block_report_toast_text">O número %1$s foi bloqueado e a chamada foi denunciada como spam.</string>
-  <string name="spam_notification_not_spam_toast_text">A chamada de %1$s não é considerada spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Toque para adicionar aos contactos ou bloquear um número considerado spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">É a primeira vez que este número lhe liga. Se esta chamada foi considerada spam, pode bloquear o número e denunciá-lo.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Toque para denunciar como não sendo spam ou para bloquear</string>
-  <string name="spam_notification_report_spam_action_text">Bloquear e denunciar</string>
-  <string name="spam_notification_add_contact_action_text">Adicionar contacto</string>
   <string name="spam_notification_dialog_add_contact_action_text">Adicionar aos contactos</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloquear e denunciar como spam</string>
   <string name="spam_notification_was_not_spam_action_text">Não, não é spam</string>
diff --git a/java/com/android/incallui/spam/res/values-pt/strings.xml b/java/com/android/incallui/spam/res/values-pt/strings.xml
index 79810fa..413651c 100644
--- a/java/com/android/incallui/spam/res/values-pt/strings.xml
+++ b/java/com/android/incallui/spam/res/values-pt/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Você conhece o número %1$s?</string>
   <string name="spam_notification_title">A chamada do número %1$s era spam?</string>
-  <string name="spam_notification_block_report_toast_text">O número %1$s foi bloqueado, e a chamada foi denunciada como spam.</string>
-  <string name="spam_notification_not_spam_toast_text">A chamada do número %1$s foi informada como não sendo spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Toque para adicionar aos contatos ou bloquear o número do spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Esta é a primeira vez que este número ligou para você. Se a chamada for spam, você poderá bloquear o número e denunciá-lo.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Toque para informar que não é spam ou bloquear</string>
-  <string name="spam_notification_report_spam_action_text">Bloquear e denunciar</string>
-  <string name="spam_notification_add_contact_action_text">Adicionar contato</string>
   <string name="spam_notification_dialog_add_contact_action_text">Adicionar aos contatos</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloquear e denunciar spam</string>
   <string name="spam_notification_was_not_spam_action_text">Não é spam</string>
diff --git a/java/com/android/incallui/spam/res/values-ro/strings.xml b/java/com/android/incallui/spam/res/values-ro/strings.xml
index 775c3f9..b4a34b0 100644
--- a/java/com/android/incallui/spam/res/values-ro/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ro/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Cunoașteți numărul %1$s?</string>
   <string name="spam_notification_title">%1$s a fost un apel spam?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s a fost blocat și apelul a fost raportat ca spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Apelul primit de la %1$s a fost raportat ca nefiind spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Atingeți pentru a adăuga numărul în agendă sau pentru a-l raporta ca spam și a-l bloca.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Aceasta este prima dată când ați primit apel de la acest număr. Dacă apelul a fost spam, puteți să blocați numărul și să îl raportați.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Atingeți pentru a raporta ca nu este spam sau blocați-l.</string>
-  <string name="spam_notification_report_spam_action_text">Blocați și raportați</string>
-  <string name="spam_notification_add_contact_action_text">Adăugați o persoană</string>
   <string name="spam_notification_dialog_add_contact_action_text">Adăugați în agendă</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blocați și raportați spam</string>
   <string name="spam_notification_was_not_spam_action_text">Nu, nu este spam</string>
diff --git a/java/com/android/incallui/spam/res/values-ru/strings.xml b/java/com/android/incallui/spam/res/values-ru/strings.xml
index a949de3..48aba07 100644
--- a/java/com/android/incallui/spam/res/values-ru/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ru/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Вы знаете, кому принадлежит номер %1$s?</string>
   <string name="spam_notification_title">Вызов с номера %1$s: это был спам?</string>
-  <string name="spam_notification_block_report_toast_text">Номер %1$s заблокирован. Вы сообщили, что вызов использовался для распространения спама.</string>
-  <string name="spam_notification_not_spam_toast_text">Вы сообщили, что вызов с номера %1$s не использовался для распространения спама</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Нажмите, чтобы добавить номер в контакты или заблокировать его за распространение спама.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Это был первый вызов с указанного номера. Если он использовался для распространения спама, вы можете сообщить об этом и заблокировать этот номер.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Нажмите, чтобы сообщить, что это не спам, или заблокировать номер</string>
-  <string name="spam_notification_report_spam_action_text">Блокировать/сообщить</string>
-  <string name="spam_notification_add_contact_action_text">Добавить в контакты</string>
   <string name="spam_notification_dialog_add_contact_action_text">Добавить в контакты</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Заблокировать и сообщить о спаме</string>
   <string name="spam_notification_was_not_spam_action_text">Это не спам</string>
diff --git a/java/com/android/incallui/spam/res/values-si/strings.xml b/java/com/android/incallui/spam/res/values-si/strings.xml
index a991afa..f846d14 100644
--- a/java/com/android/incallui/spam/res/values-si/strings.xml
+++ b/java/com/android/incallui/spam/res/values-si/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s දන්නවද?</string>
   <string name="spam_notification_title">%1$s අයාචිත අමතන්නෙක් වූයේද?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s අවහිර කර ඇමතුම අයාචිත ලෙස ලකුණු කර ඇත.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s අංකයෙන් ඇමතුම අයාචිත නැති ලෙස වාර්තා කරන ලදී.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">සම්බන්ධතාවලට එක් කිරීමට හෝ අයාචිත අංක අවහිර කිරීමට තට්ටු කරන්න.</string>
   <string name="spam_notification_non_spam_call_expanded_text">මෙම අංකය ඔබට අමතන ලද පළමු අවස්ථාව මෙයයි. මෙම ඇමතුම අයාචිත නම්, ඔබට මෙම අංකය අවහිර කර ඒ පිළිබඳ පැමිණිලි කළ හැකිය.</string>
-  <string name="spam_notification_spam_call_collapsed_text">එය අයාචිත නැති ලෙස වාර්තා කිරීමට හෝ අවහිර කිරීමට තට්ටු කරන්න</string>
-  <string name="spam_notification_report_spam_action_text">අවහිර කර වාර්තා කර.</string>
-  <string name="spam_notification_add_contact_action_text">සම්බන්ධතාව එක් කරන්න</string>
   <string name="spam_notification_dialog_add_contact_action_text">සම්බන්ධතාවලට එක් කරන්න</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">අයාචිත තැපැල් අවහිර කර වාර්තා කරන්න</string>
   <string name="spam_notification_was_not_spam_action_text">නැත, අයාචිත නොවේ</string>
diff --git a/java/com/android/incallui/spam/res/values-sk/strings.xml b/java/com/android/incallui/spam/res/values-sk/strings.xml
index bd9aaa5..6b4c82c 100644
--- a/java/com/android/incallui/spam/res/values-sk/strings.xml
+++ b/java/com/android/incallui/spam/res/values-sk/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Poznáte číslo %1$s?</string>
   <string name="spam_notification_title">Bol hovor z čísla %1$s spam?</string>
-  <string name="spam_notification_block_report_toast_text">Číslo %1$s bolo zablokované a hovor bol nahlásený ako spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Hovor z čísla %1$s bol nahlásený, že nie je spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Klepnutím pridáte číslo medzi kontakty alebo zablokujte ako spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Toto bol prvý hovor z tohto čísla. Ak bol tento hovor spam, môžete toto číslo zablokovať a nahlásiť ho.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Klepnutím môžete nahlásiť, že číslo nie je spam, alebo ho môžete zablokovať</string>
-  <string name="spam_notification_report_spam_action_text">Blokovať a nahlásiť</string>
-  <string name="spam_notification_add_contact_action_text">Pridať kontakt</string>
   <string name="spam_notification_dialog_add_contact_action_text">Pridať medzi kontakty</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokovať a nahlásiť spam</string>
   <string name="spam_notification_was_not_spam_action_text">Nie, nebol to spam</string>
diff --git a/java/com/android/incallui/spam/res/values-sl/strings.xml b/java/com/android/incallui/spam/res/values-sl/strings.xml
index 9e19a73..29b4cf6 100644
--- a/java/com/android/incallui/spam/res/values-sl/strings.xml
+++ b/java/com/android/incallui/spam/res/values-sl/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Poznate številko %1$s?</string>
   <string name="spam_notification_title">Ali vas je s številke %1$s poklical neželeni klicatelj?</string>
-  <string name="spam_notification_block_report_toast_text">Številka %1$s je blokirana, klic pa je bil prijavljen kot neželen.</string>
-  <string name="spam_notification_not_spam_toast_text">Klic s številke %1$s ni več prijavljen kot neželen.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Dotaknite se, da dodate med stike ali blokirate neželeno številko.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Klic s te številke ste prejeli prvič. Če je bil ta klic neželen, lahko blokirate številko in jo prijavite.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Dotaknite se, da klic prijavite kot »ni neželeni klic« ali ga blokirate</string>
-  <string name="spam_notification_report_spam_action_text">Blokiraj in prijavi</string>
-  <string name="spam_notification_add_contact_action_text">Dodaj stik</string>
   <string name="spam_notification_dialog_add_contact_action_text">Dodaj med stike</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blokiraj in prijavi neželeni klic</string>
   <string name="spam_notification_was_not_spam_action_text">Ne, ni neželeni klic</string>
diff --git a/java/com/android/incallui/spam/res/values-sq/strings.xml b/java/com/android/incallui/spam/res/values-sq/strings.xml
index ac72c7f..72b451c 100644
--- a/java/com/android/incallui/spam/res/values-sq/strings.xml
+++ b/java/com/android/incallui/spam/res/values-sq/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">E njeh %1$s?</string>
   <string name="spam_notification_title">A ishte %1$s një telefonues i padëshiruar?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s u bllokua dhe telefonata u raportua si e padëshiruar.</string>
-  <string name="spam_notification_not_spam_toast_text">Telefonata nga %1$s u raportua si e padëshiruar.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Trokit për ta shtuar te kontaktet ose për të bllokuar numrin e padëshiruar.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Kjo është hera e parë që ky numër ka telefonuar. Nëse telefonata ishte e padëshiruar, mund ta bllokosh këtë numër dhe ta raportosh.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Trokit për ta raportuar si jo të padëshiruar ose për ta bllokuar</string>
-  <string name="spam_notification_report_spam_action_text">Blloko dhe raporto</string>
-  <string name="spam_notification_add_contact_action_text">Shto një kontakt</string>
   <string name="spam_notification_dialog_add_contact_action_text">Shto te kontaktet</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blloko dhe raporto si e padëshiruar</string>
   <string name="spam_notification_was_not_spam_action_text">Jo, nuk ishte e padëshiruar</string>
diff --git a/java/com/android/incallui/spam/res/values-sr/strings.xml b/java/com/android/incallui/spam/res/values-sr/strings.xml
index 3766b03..1eaa4e3 100644
--- a/java/com/android/incallui/spam/res/values-sr/strings.xml
+++ b/java/com/android/incallui/spam/res/values-sr/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Познат вам је број %1$s?</string>
   <string name="spam_notification_title">Да ли вам је са %1$s упућен непожељан позив?</string>
-  <string name="spam_notification_block_report_toast_text">Блокирали сте %1$s, а позив сте пријавили као непожељан.</string>
-  <string name="spam_notification_not_spam_toast_text">Пријавили сте да позив са %1$s није непожељан.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Додирните да бисте додали контакте или блокирали непожељан број.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Први пут сте примили позив са овог броја. Ако је непожељан, можете да га блокирате и пријавите.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Додирните да бисте пријавили да позив није непожељан или блокирали број</string>
-  <string name="spam_notification_report_spam_action_text">Блокирај и пријави</string>
-  <string name="spam_notification_add_contact_action_text">Додај контакт</string>
   <string name="spam_notification_dialog_add_contact_action_text">Додај у контакте</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Блокирај и пријави непожељан позив</string>
   <string name="spam_notification_was_not_spam_action_text">Не, није непожељан</string>
diff --git a/java/com/android/incallui/spam/res/values-sv/strings.xml b/java/com/android/incallui/spam/res/values-sv/strings.xml
index d950e44..07d0010 100644
--- a/java/com/android/incallui/spam/res/values-sv/strings.xml
+++ b/java/com/android/incallui/spam/res/values-sv/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Känner du %1$s?</string>
   <string name="spam_notification_title">Var %1$s ett spamsamtal?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s blockerat och samtalet rapporterat som spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Samtal från %1$s rapporterat som spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Tryck för att lägga till kontakter eller blockera spamnummer.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Det här var första gången det här numret ringde dig. Om det var spam går det att blockera numret och rapportera det.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Tryck för att rapportera som inte spam eller blockera det</string>
-  <string name="spam_notification_report_spam_action_text">Blockera, rapportera</string>
-  <string name="spam_notification_add_contact_action_text">Lägg till kontakt</string>
   <string name="spam_notification_dialog_add_contact_action_text">Lägg till i Kontakter</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Blockera och rapportera spam</string>
   <string name="spam_notification_was_not_spam_action_text">Nej, inte spam</string>
diff --git a/java/com/android/incallui/spam/res/values-sw/strings.xml b/java/com/android/incallui/spam/res/values-sw/strings.xml
index 3a3c692..e7944bf 100644
--- a/java/com/android/incallui/spam/res/values-sw/strings.xml
+++ b/java/com/android/incallui/spam/res/values-sw/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Je, unaitambua %1$s?</string>
   <string name="spam_notification_title">Je, %1$s alipiga simu taka?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s imezuiwa na simu ikaripotiwa kuwa taka.</string>
-  <string name="spam_notification_not_spam_toast_text">Simu kutoka %1$s imeripotiwa kuwa si taka.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Gusa ili uongeze kwenye anwani au uzuie nambari taka.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Hii ndiyo mara ya kwanza nambari hii imekupigia. Ikiwa ilikuwa simu taka, unaweza kuzuia nambari hii na uiripoti.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Gusa ili uripoti kuwa si taka au uizuie</string>
-  <string name="spam_notification_report_spam_action_text">Zuia na uripoti</string>
-  <string name="spam_notification_add_contact_action_text">Ongeza anwani</string>
   <string name="spam_notification_dialog_add_contact_action_text">Ongeza kwenye anwani</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Zuia na uripoti taka</string>
   <string name="spam_notification_was_not_spam_action_text">Hapana, si taka</string>
diff --git a/java/com/android/incallui/spam/res/values-ta/strings.xml b/java/com/android/incallui/spam/res/values-ta/strings.xml
index dfc9915..5315626 100644
--- a/java/com/android/incallui/spam/res/values-ta/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ta/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s - தெரிந்த எண்ணா?</string>
   <string name="spam_notification_title">%1$s, ஸ்பேம் அழைப்பாளரா?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s தடுக்கப்பட்டு, அழைப்பு ஸ்பேம் எனப் புகாரளிக்கப்பட்டது.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s இன் அழைப்பு ஸ்பேம் இல்லை எனத் தெரிவிக்கப்பட்டது.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">தொடர்புகளில் சேர்க்க அல்லது ஸ்பேம் எண்ணைத் தடுக்க, தட்டவும்.</string>
   <string name="spam_notification_non_spam_call_expanded_text">இந்த எண்ணிலிருந்து உங்களுக்கு அழைப்பு வந்தது இதுவே முதல் முறை. இந்த அழைப்பு ஸ்பேமாக இருந்தால், எண்ணைத் தடுத்துப் புகாரளிக்கலாம்.</string>
-  <string name="spam_notification_spam_call_collapsed_text">\"ஸ்பேம் இல்லை\" எனத் தெரிவிக்க அல்லது தடுக்க, தட்டவும்</string>
-  <string name="spam_notification_report_spam_action_text">தடுத்துப் புகாரளி</string>
-  <string name="spam_notification_add_contact_action_text">தொடர்பைச் சேர்</string>
   <string name="spam_notification_dialog_add_contact_action_text">தொடர்புகளில் சேர்</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">தடுத்து, ஸ்பேமெனப் புகாரளி</string>
   <string name="spam_notification_was_not_spam_action_text">இல்லை, ஸ்பேம் இல்லை</string>
diff --git a/java/com/android/incallui/spam/res/values-te/strings.xml b/java/com/android/incallui/spam/res/values-te/strings.xml
index 2efe36e..b98d1ee 100644
--- a/java/com/android/incallui/spam/res/values-te/strings.xml
+++ b/java/com/android/incallui/spam/res/values-te/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s తెలుసా?</string>
   <string name="spam_notification_title">%1$s స్పామ్ కాలరా?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s బ్లాక్ చేయబడింది మరియు కాల్ స్పామ్ అని నివేదించబడింది.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s నుండి కాల్ స్పామ్ కాదని నివేదించబడింది.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">స్పామ్ నంబర్‌ను పరిచయాలకు జోడించడానికి లేదా బ్లాక్ చేయడానికి నొక్కండి.</string>
   <string name="spam_notification_non_spam_call_expanded_text">ఈ నంబర్ నుండి మీకు కాల్ రావడం ఇదే మొదటిసారి. ఈ కాల్ స్పామ్ అయితే, మీరు ఈ నంబర్‌ను బ్లాక్ చేసి, నివేదించవచ్చు.</string>
-  <string name="spam_notification_spam_call_collapsed_text">స్పామ్ కాదని నివేదించడానికి లేదా దాన్ని బ్లాక్ చేయడానికి నొక్కండి</string>
-  <string name="spam_notification_report_spam_action_text">బ్లాక్ చేసి, నివేదించండి</string>
-  <string name="spam_notification_add_contact_action_text">పరిచయాన్ని జోడించండి</string>
   <string name="spam_notification_dialog_add_contact_action_text">పరిచయాలకు జోడించండి</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">బ్లాక్ చేసి, స్పామ్ అని నివేదించండి</string>
   <string name="spam_notification_was_not_spam_action_text">లేదు, స్పామ్ కాదు</string>
diff --git a/java/com/android/incallui/spam/res/values-th/strings.xml b/java/com/android/incallui/spam/res/values-th/strings.xml
index 75fce76..2498723 100644
--- a/java/com/android/incallui/spam/res/values-th/strings.xml
+++ b/java/com/android/incallui/spam/res/values-th/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">รู้จัก %1$s ไหม</string>
   <string name="spam_notification_title">หมายเลข %1$s เป็นสแปมใช่ไหม</string>
-  <string name="spam_notification_block_report_toast_text">บล็อก %1$s และรายงานสายนี้ว่าเป็นสแปมแล้ว</string>
-  <string name="spam_notification_not_spam_toast_text">รายงานสายจาก %1$s ว่าไม่ใช่สแปมแล้ว</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">แตะเพื่อเพิ่มลงในรายชื่อติดต่อหรือบล็อกหมายเลขสแปม</string>
   <string name="spam_notification_non_spam_call_expanded_text">หมายเลขนี้โทรหาคุณเป็นครั้งแรก หากเป็นสแปม คุณสามารถบล็อกและรายงานหมายเลขนี้ได้</string>
-  <string name="spam_notification_spam_call_collapsed_text">แตะเพื่อรายงานว่าไม่ใช่สแปมหรือบล็อก</string>
-  <string name="spam_notification_report_spam_action_text">บล็อกและรายงาน</string>
-  <string name="spam_notification_add_contact_action_text">เพิ่มผู้ติดต่อ</string>
   <string name="spam_notification_dialog_add_contact_action_text">เพิ่มในรายชื่อติดต่อ</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">บล็อกและรายงานสแปม</string>
   <string name="spam_notification_was_not_spam_action_text">ไม่ใช่สแปม</string>
diff --git a/java/com/android/incallui/spam/res/values-tl/strings.xml b/java/com/android/incallui/spam/res/values-tl/strings.xml
index 057f378..ff43b08 100644
--- a/java/com/android/incallui/spam/res/values-tl/strings.xml
+++ b/java/com/android/incallui/spam/res/values-tl/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Kilala mo ba ang %1$s?</string>
   <string name="spam_notification_title">Spam caller ba ang %1$s?</string>
-  <string name="spam_notification_block_report_toast_text">Na-block ang %1$s at inulat ang tawag bilang spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Inulat ang tawag mula sa %1$s bilang hindi spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">I-tap upang idagdag sa mga contact o i-block ang spam na numero.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Ito ang unang beses na tumawag sa iyo ang numerong ito. Kung spam ang tawag na ito, maaari mong i-block ang numerong ito at iulat ito.</string>
-  <string name="spam_notification_spam_call_collapsed_text">I-tap para iulat na hindi spam o i-block ito</string>
-  <string name="spam_notification_report_spam_action_text">I-block at iulat</string>
-  <string name="spam_notification_add_contact_action_text">Magdagdag ng contact</string>
   <string name="spam_notification_dialog_add_contact_action_text">Idagdag sa mga contact</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">I-block at iulat ang spam</string>
   <string name="spam_notification_was_not_spam_action_text">Hindi, hindi spam</string>
diff --git a/java/com/android/incallui/spam/res/values-tr/strings.xml b/java/com/android/incallui/spam/res/values-tr/strings.xml
index 7b7991b..d0ef946 100644
--- a/java/com/android/incallui/spam/res/values-tr/strings.xml
+++ b/java/com/android/incallui/spam/res/values-tr/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s tanıdık bir numara mı?</string>
   <string name="spam_notification_title">%1$s spam olan bir arayan mıydı?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s engellendi ve çağrı spam olarak bildirildi.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s numaralı telefondan gelen çağrının spam olmadığı bildirildi.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Kişilere eklemek veya spam numarasını engellemek için dokunun.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Bu numaradan ilk kez arandınız. Bu çağrı spam amaçlı olarak yapıldıysa numarayı engelleyip bildirebilirsiniz.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Spam değil bildirimi göndermek için dokunun veya numarayı engelleyin</string>
-  <string name="spam_notification_report_spam_action_text">Engelle ve bildir</string>
-  <string name="spam_notification_add_contact_action_text">Kişi olarak ekle</string>
   <string name="spam_notification_dialog_add_contact_action_text">Kişilere ekle</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Engelle ve spam olarak bildir</string>
   <string name="spam_notification_was_not_spam_action_text">Hayır, spam değil</string>
diff --git a/java/com/android/incallui/spam/res/values-uk/strings.xml b/java/com/android/incallui/spam/res/values-uk/strings.xml
index 23e8428..0afceaa 100644
--- a/java/com/android/incallui/spam/res/values-uk/strings.xml
+++ b/java/com/android/incallui/spam/res/values-uk/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Знаєте номер %1$s?</string>
   <string name="spam_notification_title">Виклик із номера %1$s був спамом?</string>
-  <string name="spam_notification_block_report_toast_text">Номер %1$s заблоковано, а виклик із нього позначено як спам.</string>
-  <string name="spam_notification_not_spam_toast_text">Виклик із номера %1$s позначено як не спам.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Торкніться, щоб додати до контактів або заблокувати номер як спам.</string>
   <string name="spam_notification_non_spam_call_expanded_text">З цього номера вам телефонують уперше. Якщо це спам, заблокуйте номер і поскаржтеся.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Торкніться, щоб позначити як не спам або заблокувати номер</string>
-  <string name="spam_notification_report_spam_action_text">Блокувати й поскарж.</string>
-  <string name="spam_notification_add_contact_action_text">Додати контакт</string>
   <string name="spam_notification_dialog_add_contact_action_text">Додати в контакти</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Блокувати й позначити як спам</string>
   <string name="spam_notification_was_not_spam_action_text">Ні, не спам</string>
diff --git a/java/com/android/incallui/spam/res/values-ur/strings.xml b/java/com/android/incallui/spam/res/values-ur/strings.xml
index fb2c970..4a7d84c 100644
--- a/java/com/android/incallui/spam/res/values-ur/strings.xml
+++ b/java/com/android/incallui/spam/res/values-ur/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s سے واقف ہیں؟</string>
   <string name="spam_notification_title">کیا %1$s اسپام کالر تھا؟</string>
-  <string name="spam_notification_block_report_toast_text">%1$s مسدود ہو گیا اور کال کی بطور اسپام اطلاع ہو گئی۔</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s سے کال کی اطلاع \'اسپام نہیں\' کے بطور ہو گئی۔</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">رابطوں میں شامل کرنے یا اسپام نمبر کو مسدود کرنے کیلئے تھپتھپائیں۔</string>
   <string name="spam_notification_non_spam_call_expanded_text">آپ کو اس نمبر سے پہلی بار کال آئی ہے۔ اگر یہ کال اسپام تھی، تو آپ اس نمبر کو مسدود کر سکتے ہیں اور اس کی اطلاع دے سکتے ہیں۔</string>
-  <string name="spam_notification_spam_call_collapsed_text">اسپام نہیں ہے کے بطور اطلاع دینے کیلئے تھپتھپائیں یا اسے مسدود کریں</string>
-  <string name="spam_notification_report_spam_action_text">مسدود کریں اور اطلاع دیں</string>
-  <string name="spam_notification_add_contact_action_text">رابطہ شامل کریں</string>
   <string name="spam_notification_dialog_add_contact_action_text">رابطوں میں شامل کریں</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">مسدود کریں اور اسپام کی اطلاع دیں</string>
   <string name="spam_notification_was_not_spam_action_text">نہیں، اسپام نہیں ہے</string>
diff --git a/java/com/android/incallui/spam/res/values-uz/strings.xml b/java/com/android/incallui/spam/res/values-uz/strings.xml
index 2a0f6b9..36ba827 100644
--- a/java/com/android/incallui/spam/res/values-uz/strings.xml
+++ b/java/com/android/incallui/spam/res/values-uz/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s sizga tanish raqammi?</string>
   <string name="spam_notification_title">%1$s raqamidan spam chaqiruv keldimi?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s raqami bloklandi va undan keluvchi qo‘ng‘iroqlar spam deb belgilandi.</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s raqamidan keluvchi qo‘ng‘iroqlar spam emas deb belgilandi.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Raqamni kontaktlarga qo‘shish yoki uni spam tarqatuvchi deb bloklash uchun bosing.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Bu raqamdan sizga birinchi marta qo‘ng‘iroq qilindi. Agar u spam bo‘lsa, uni spam deb belgilang va raqamni bloklang.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Chaqiruvni spam emas deb belgilash yoki raqamni bloklash uchun bosing.</string>
-  <string name="spam_notification_report_spam_action_text">Bloklash/xabar ber.</string>
-  <string name="spam_notification_add_contact_action_text">Kontaktl-ga qo‘shish</string>
   <string name="spam_notification_dialog_add_contact_action_text">Kontaktlarga saqlash</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Bloklash va spam haqida xabar berish</string>
   <string name="spam_notification_was_not_spam_action_text">Spam emas</string>
diff --git a/java/com/android/incallui/spam/res/values-vi/strings.xml b/java/com/android/incallui/spam/res/values-vi/strings.xml
index a9a7ca7..622b8b7 100644
--- a/java/com/android/incallui/spam/res/values-vi/strings.xml
+++ b/java/com/android/incallui/spam/res/values-vi/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Bạn có biết %1$s không?</string>
   <string name="spam_notification_title">%1$s có phải là người gọi spam không?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s bị chặn và cuộc gọi đã bị báo cáo là spam.</string>
-  <string name="spam_notification_not_spam_toast_text">Cuộc gọi từ %1$s được báo cáo là không phải spam.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Nhấn để thêm vào danh bạ hoặc chặn số spam.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Đây là lần đầu tiên số này gọi cho bạn. Nếu cuộc gọi này là spam, bạn có thể chặn và báo cáo số này.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Nhấn để báo cáo không phải là spam hoặc chặn số</string>
-  <string name="spam_notification_report_spam_action_text">Chặn và báo cáo</string>
-  <string name="spam_notification_add_contact_action_text">Thêm liên hệ</string>
   <string name="spam_notification_dialog_add_contact_action_text">Thêm vào danh bạ</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Chặn và báo cáo spam</string>
   <string name="spam_notification_was_not_spam_action_text">Không, không phải spam</string>
diff --git a/java/com/android/incallui/spam/res/values-zh-rCN/strings.xml b/java/com/android/incallui/spam/res/values-zh-rCN/strings.xml
index a9e1a1e..dd3cf02 100644
--- a/java/com/android/incallui/spam/res/values-zh-rCN/strings.xml
+++ b/java/com/android/incallui/spam/res/values-zh-rCN/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s 是陌生号码吗？</string>
   <string name="spam_notification_title">%1$s 是骚扰电话号码吗？</string>
-  <string name="spam_notification_block_report_toast_text">已屏蔽 %1$s，并将来电举报为骚扰电话。</string>
-  <string name="spam_notification_not_spam_toast_text">已取消将 %1$s 的来电举报为骚扰电话。</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">点按即可添加到通讯录或屏蔽骚扰电话号码。</string>
   <string name="spam_notification_non_spam_call_expanded_text">这是此号码的第一次来电。如果是骚扰电话，您可以屏蔽此号码并举报。</string>
-  <string name="spam_notification_spam_call_collapsed_text">点按即可列为非骚扰电话号码，或将其屏蔽</string>
-  <string name="spam_notification_report_spam_action_text">屏蔽并举报</string>
-  <string name="spam_notification_add_contact_action_text">添加联系人</string>
   <string name="spam_notification_dialog_add_contact_action_text">添加到通讯录</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">屏蔽并举报骚扰电话号码</string>
   <string name="spam_notification_was_not_spam_action_text">不，这不是骚扰电话</string>
diff --git a/java/com/android/incallui/spam/res/values-zh-rHK/strings.xml b/java/com/android/incallui/spam/res/values-zh-rHK/strings.xml
index dcb0d1c..3448e60 100644
--- a/java/com/android/incallui/spam/res/values-zh-rHK/strings.xml
+++ b/java/com/android/incallui/spam/res/values-zh-rHK/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s 是已知號碼？</string>
   <string name="spam_notification_title">%1$s 是垃圾來電嗎？</string>
-  <string name="spam_notification_block_report_toast_text">已將 %1$s 封鎖並舉報為垃圾號碼。</string>
-  <string name="spam_notification_not_spam_toast_text">%1$s 的來電已舉報為非垃圾來電。</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">輕按以新增至通訊錄，或封鎖垃圾號碼。</string>
   <string name="spam_notification_non_spam_call_expanded_text">這是此號碼的第一次來電，如果是垃圾來電，您可以封鎖並舉報此號碼。</string>
-  <string name="spam_notification_spam_call_collapsed_text">輕按以舉報為非垃圾來電，或加以封鎖</string>
-  <string name="spam_notification_report_spam_action_text">封鎖並舉報</string>
-  <string name="spam_notification_add_contact_action_text">新增聯絡人</string>
   <string name="spam_notification_dialog_add_contact_action_text">加入通訊錄</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">封鎖並舉報垃圾來電</string>
   <string name="spam_notification_was_not_spam_action_text">否，不是垃圾來電</string>
diff --git a/java/com/android/incallui/spam/res/values-zh-rTW/strings.xml b/java/com/android/incallui/spam/res/values-zh-rTW/strings.xml
index 010a307..a0d3638 100644
--- a/java/com/android/incallui/spam/res/values-zh-rTW/strings.xml
+++ b/java/com/android/incallui/spam/res/values-zh-rTW/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">%1$s 是你熟悉的電話號碼嗎？</string>
   <string name="spam_notification_title">%1$s 是騷擾/廣告來電者嗎？</string>
-  <string name="spam_notification_block_report_toast_text">已封鎖 %1$s 並將本次來電回報為騷擾/廣告電話。</string>
-  <string name="spam_notification_not_spam_toast_text">已將 %1$s 的來電回報為非騷擾/廣告電話。</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">輕觸這裡即可加到通訊錄或封鎖騷擾/廣告電話號碼。</string>
   <string name="spam_notification_non_spam_call_expanded_text">這組號碼是首次致電給你。如果本次來電為騷擾/廣告電話，你可以封鎖並檢舉這組號碼。</string>
-  <string name="spam_notification_spam_call_collapsed_text">輕觸即可回報為非騷擾/廣告電話或封鎖這組號碼</string>
-  <string name="spam_notification_report_spam_action_text">封鎖並回報</string>
-  <string name="spam_notification_add_contact_action_text">新增聯絡人</string>
   <string name="spam_notification_dialog_add_contact_action_text">新增為聯絡人</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">封鎖並回報為騷擾/廣告電話</string>
   <string name="spam_notification_was_not_spam_action_text">否，這不是騷擾/廣告電話</string>
diff --git a/java/com/android/incallui/spam/res/values-zu/strings.xml b/java/com/android/incallui/spam/res/values-zu/strings.xml
index 503471d..325cd82 100644
--- a/java/com/android/incallui/spam/res/values-zu/strings.xml
+++ b/java/com/android/incallui/spam/res/values-zu/strings.xml
@@ -2,13 +2,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string name="non_spam_notification_title">Uyayazi i-%1$s?</string>
   <string name="spam_notification_title">Ingabe i-%1$s umshayi wogaxekile?</string>
-  <string name="spam_notification_block_report_toast_text">%1$s ivinjelwe futhi ikholi ibikwe njengogaxekile.</string>
-  <string name="spam_notification_not_spam_toast_text">Ikholi esuka ku-%1$s ibikwe njengokungeyena ugaxekile.</string>
-  <string name="spam_notification_non_spam_call_collapsed_text">Thepha ukwengeza koxhumana nabo noma ukuvimbela inombolo engugaxekile.</string>
   <string name="spam_notification_non_spam_call_expanded_text">Okokuqala le nombolo ikushayela. Uma le kholi kade ingugaxekile, ungakwazi ukuvimbela le nombolo futhi uyibike.</string>
-  <string name="spam_notification_spam_call_collapsed_text">Thepha ukubika njengokungeyena ugaxekile noma vimbela</string>
-  <string name="spam_notification_report_spam_action_text">Vimba futhi ubike</string>
-  <string name="spam_notification_add_contact_action_text">Engeza oxhumana naye</string>
   <string name="spam_notification_dialog_add_contact_action_text">Engeza koxhumana nabo</string>
   <string name="spam_notification_dialog_block_report_spam_action_text">Vimba futhi ubike ugaxekile</string>
   <string name="spam_notification_was_not_spam_action_text">Cha, akuyena ugaxekile</string>
diff --git a/java/com/android/incallui/spam/res/values/strings.xml b/java/com/android/incallui/spam/res/values/strings.xml
index 7626754..6bd914e 100644
--- a/java/com/android/incallui/spam/res/values/strings.xml
+++ b/java/com/android/incallui/spam/res/values/strings.xml
@@ -21,20 +21,8 @@
   <string name="non_spam_notification_title">Know <xliff:g id="number">%1$s</xliff:g>?</string>
   <!-- Title for the notification to the user after a call from an spammer ends. [CHAR LIMIT=100] -->
   <string name="spam_notification_title">Was <xliff:g id="number">%1$s</xliff:g> a spam caller?</string>
-  <!-- Text for the toast shown after the user presses block/report spam. [CHAR LIMIT=100] -->
-  <string name="spam_notification_block_report_toast_text"><xliff:g id="number">%1$s</xliff:g> blocked and call was reported as spam.</string>
-  <!-- Text for the toast shown after the user presses not spam. [CHAR LIMIT=100] -->
-  <string name="spam_notification_not_spam_toast_text">Call from <xliff:g id="number">%1$s</xliff:g> reported as not spam.</string>
-  <!-- Text displayed in the collapsed notification to the user after a non-spam call ends. [CHAR LIMIT=100] -->
-  <string name="spam_notification_non_spam_call_collapsed_text">Tap to add to contacts or block spam number.</string>
   <!-- Text displayed in the expanded notification to the user after a non-spam call ends. [CHAR LIMIT=NONE] -->
   <string name="spam_notification_non_spam_call_expanded_text">This is the first time this number called you. If this call was spam, you can block this number and report it.</string>
-  <!-- Text displayed in the collapsed notification to the user after a spam call ends. [CHAR LIMIT=100] -->
-  <string name="spam_notification_spam_call_collapsed_text">Tap to report as not spam or block it</string>
-  <!-- Text for the reporting spam action in the after call prompt. [CHAR LIMIT=20] -->
-  <string name="spam_notification_report_spam_action_text">Block &amp; report</string>
-  <!-- Text for the adding to contacts action in the after call prompt. [CHAR LIMIT=20] -->
-  <string name="spam_notification_add_contact_action_text">Add contact</string>
   <!-- Text for the adding to contacts action in the after call dialog. [CHAR LIMIT=40] -->
   <string name="spam_notification_dialog_add_contact_action_text">Add to contacts</string>
   <!-- Text for the blocking and reporting spam action in the after call dialog. [CHAR LIMIT=40] -->
@@ -44,97 +32,6 @@
   <!-- Text for the blocking spam action in the after call prompt. [CHAR LIMIT=40] -->
   <string name="spam_notification_block_spam_action_text">Yes, block number</string>
 
-  <!-- Strings for 'junk' spam word alternative-->
-  <!-- Title for the notification to the user after a call from an spammer ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_title_230151">Was <xliff:g id="number">%1$s</xliff:g> a junk caller?</string>
-  <!-- Text for the toast shown after the user presses block/report spam. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_block_report_toast_text_230151"><xliff:g id="number">%1$s</xliff:g> blocked and call was reported as junk.</string>
-  <!-- Text for the toast shown after the user presses not spam. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_not_spam_toast_text_230151">Call from <xliff:g id="number">%1$s</xliff:g> reported as not junk.</string>
-  <!-- Text displayed in the collapsed notification to the user after a non-spam call ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_non_spam_call_collapsed_text_230151">Tap to add to contacts or block junk number.</string>
-  <!-- Text displayed in the expanded notification to the user after a non-spam call ends. [CHAR LIMIT=NONE] -->
-  <string translatable="false" name="spam_notification_non_spam_call_expanded_text_230151">This is the first time this number called you. If this call was junk, you can block this number and report it.</string>
-  <!-- Text displayed in the collapsed notification to the user after a spam call ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_spam_call_collapsed_text_230151">Tap to report as not junk or block it</string>
-  <!-- Text for the blocking and reporting spam action in the after call dialog. [CHAR LIMIT=40] -->
-  <string translatable="false" name="spam_notification_dialog_block_report_spam_action_text_230151">Block &amp; report junk</string>
-  <!-- Text for the marking a call as not spam in the after call prompt. [CHAR LIMIT=40] -->
-  <string translatable="false" name="spam_notification_was_not_spam_action_text_230151">No, not junk</string>
-
-  <!-- Strings for 'junk/spam' spam word alternative-->
-  <!-- Title for the notification to the user after a call from an spammer ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_title_230152">Was <xliff:g id="number">%1$s</xliff:g> a junk/spam caller?</string>
-  <!-- Text for the toast shown after the user presses block/report spam. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_block_report_toast_text_230152"><xliff:g id="number">%1$s</xliff:g> blocked and call was reported as junk/spam.</string>
-  <!-- Text for the toast shown after the user presses not spam. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_not_spam_toast_text_230152">Call from <xliff:g id="number">%1$s</xliff:g> reported as not junk/spam.</string>
-  <!-- Text displayed in the collapsed notification to the user after a non-spam call ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_non_spam_call_collapsed_text_230152">Tap to add to contacts or block junk/spam number.</string>
-  <!-- Text displayed in the expanded notification to the user after a non-spam call ends. [CHAR LIMIT=NONE] -->
-  <string translatable="false" name="spam_notification_non_spam_call_expanded_text_230152">This is the first time this number called you. If this call was junk/spam, you can block this number and report it.</string>
-  <!-- Text displayed in the collapsed notification to the user after a spam call ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_spam_call_collapsed_text_230152">Tap to report as not junk/spam or block it</string>
-  <!-- Text for the blocking and reporting spam action in the after call dialog. [CHAR LIMIT=40] -->
-  <string translatable="false" name="spam_notification_dialog_block_report_spam_action_text_230152">Block &amp; report junk/spam</string>
-  <!-- Text for the marking a call as not spam in the after call prompt. [CHAR LIMIT=40] -->
-  <string translatable="false" name="spam_notification_was_not_spam_action_text_230152">No, not junk/spam</string>
-
-  <!-- Strings for 'unwanted' spam word alternative-->
-  <!-- Title for the notification to the user after a call from an spammer ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_title_230153">Was <xliff:g id="number">%1$s</xliff:g> an unwanted caller?</string>
-  <!-- Text for the toast shown after the user presses block/report spam. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_block_report_toast_text_230153"><xliff:g id="number">%1$s</xliff:g> blocked and call was reported as unwanted.</string>
-  <!-- Text for the toast shown after the user presses not spam. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_not_spam_toast_text_230153">Call from <xliff:g id="number">%1$s</xliff:g> reported as useful.</string>
-  <!-- Text displayed in the collapsed notification to the user after a non-spam call ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_non_spam_call_collapsed_text_230153">Tap to add to contacts or block unwanted number.</string>
-  <!-- Text displayed in the expanded notification to the user after a non-spam call ends. [CHAR LIMIT=NONE] -->
-  <string translatable="false" name="spam_notification_non_spam_call_expanded_text_230153">This is the first time this number called you. If this call was unwanted, you can block this number and report it.</string>
-  <!-- Text displayed in the collapsed notification to the user after a spam call ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_spam_call_collapsed_text_230153">Tap to report as useful or block it</string>
-  <!-- Text for the blocking and reporting spam action in the after call dialog. [CHAR LIMIT=40] -->
-  <string translatable="false" name="spam_notification_dialog_block_report_spam_action_text_230153">Block &amp; report unwanted</string>
-  <!-- Text for the marking a call as not spam in the after call prompt. [CHAR LIMIT=40] -->
-  <string translatable="false" name="spam_notification_was_not_spam_action_text_230153">No, not unwanted</string>
-
-  <!-- Strings for 'spam/unwanted' spam word alternative-->
-  <!-- Title for the notification to the user after a call from an spammer ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_title_230154">Was <xliff:g id="number">%1$s</xliff:g> a spam/unwanted caller?</string>
-  <!-- Text for the toast shown after the user presses block/report spam. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_block_report_toast_text_230154"><xliff:g id="number">%1$s</xliff:g> blocked and call was reported as spam/unwanted.</string>
-  <!-- Text for the toast shown after the user presses not spam. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_not_spam_toast_text_230154">Call from <xliff:g id="number">%1$s</xliff:g> reported as not spam/unwanted.</string>
-  <!-- Text displayed in the collapsed notification to the user after a non-spam call ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_non_spam_call_collapsed_text_230154">Tap to add to contacts or block spam/unwanted number.</string>
-  <!-- Text displayed in the expanded notification to the user after a non-spam call ends. [CHAR LIMIT=NONE] -->
-  <string translatable="false" name="spam_notification_non_spam_call_expanded_text_230154">This is the first time this number called you. If this call was spam/unwanted, you can block this number and report it.</string>
-  <!-- Text displayed in the collapsed notification to the user after a spam call ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_spam_call_collapsed_text_230154">Tap to report as not spam/unwanted or block it</string>
-  <!-- Text for the blocking and reporting spam action in the after call dialog. [CHAR LIMIT=40] -->
-  <string translatable="false" name="spam_notification_dialog_block_report_spam_action_text_230154">Block &amp; report spam/unwanted</string>
-  <!-- Text for the marking a call as not spam in the after call prompt. [CHAR LIMIT=40] -->
-  <string translatable="false" name="spam_notification_was_not_spam_action_text_230154">No, not spam/unwanted</string>
-
-  <!-- Strings for 'junk/unwanted' spam word alternative-->
-  <!-- Title for the notification to the user after a call from an spammer ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_title_230155">Was <xliff:g id="number">%1$s</xliff:g> a junk/unwanted caller?</string>
-  <!-- Text for the toast shown after the user presses block/report spam. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_block_report_toast_text_230155"><xliff:g id="number">%1$s</xliff:g> blocked and call was reported as junk/unwanted.</string>
-  <!-- Text for the toast shown after the user presses not spam. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_not_spam_toast_text_230155">Call from <xliff:g id="number">%1$s</xliff:g> reported as not junk/unwanted.</string>
-  <!-- Text displayed in the collapsed notification to the user after a non-spam call ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_non_spam_call_collapsed_text_230155">Tap to add to contacts or block junk/unwanted number.</string>
-  <!-- Text displayed in the expanded notification to the user after a non-spam call ends. [CHAR LIMIT=NONE] -->
-  <string translatable="false" name="spam_notification_non_spam_call_expanded_text_230155">This is the first time this number called you. If this call was junk/unwanted, you can block this number and report it.</string>
-  <!-- Text displayed in the collapsed notification to the user after a spam call ends. [CHAR LIMIT=100] -->
-  <string translatable="false" name="spam_notification_spam_call_collapsed_text_230155">Tap to report as not junk/unwanted or block it</string>
-  <!-- Text for the blocking and reporting spam action in the after call dialog. [CHAR LIMIT=40] -->
-  <string translatable="false" name="spam_notification_dialog_block_report_spam_action_text_230155">Block &amp; report junk/unwanted</string>
-  <!-- Text for the marking a call as not spam in the after call prompt. [CHAR LIMIT=40] -->
-  <string translatable="false" name="spam_notification_was_not_spam_action_text_230155">No, not junk/unwanted</string>
-
-
   <!-- Label for "Dismiss" dialog action. [CHAR LIMIT=12] -->
   <string name="spam_notification_action_dismiss">Dismiss</string>
 
diff --git a/java/com/android/incallui/speakeasy/Annotations.java b/java/com/android/incallui/speakeasy/Annotations.java
deleted file mode 100644
index c66fe94..0000000
--- a/java/com/android/incallui/speakeasy/Annotations.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.speakeasy;
-
-import javax.inject.Qualifier;
-
-/** Annotations for Speakeasy providers. */
-public final class Annotations {
-
-  /** A Speakeasy settings fragment */
-  @Qualifier
-  public @interface SpeakEasySettingsActivity {}
-
-  /** A Speakeasy settings object */
-  @Qualifier
-  public @interface SpeakEasySettingsObject {}
-
-  /** A Speakeasy chip */
-  @Qualifier
-  public @interface SpeakEasyChipResourceId {}
-
-  /** A Speakeasy text resource */
-  @Qualifier
-  public @interface SpeakEasyTextResourceId {}
-}
diff --git a/java/com/android/incallui/speakeasy/SpeakEasyCallManager.java b/java/com/android/incallui/speakeasy/SpeakEasyCallManager.java
deleted file mode 100644
index 55905ce..0000000
--- a/java/com/android/incallui/speakeasy/SpeakEasyCallManager.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.speakeasy;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v4.app.Fragment;
-import com.android.incallui.call.DialerCall;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.Optional;
-
-/** Provides operations necessary to SpeakEasy. */
-public interface SpeakEasyCallManager {
-
-  /**
-   * Returns the Fragment used to display data.
-   *
-   * <p>An absent optional indicates the feature is unavailable.
-   */
-  Optional<Fragment> getSpeakEasyFragment(@NonNull DialerCall call);
-
-  /**
-   * Indicates a call has been removed.
-   *
-   * @param call The call which has been removed.
-   */
-  void onCallRemoved(@NonNull DialerCall call);
-
-  /**
-   * Indicates there is a new incoming call that is about to be answered.
-   *
-   * @param call The call which is about to become active.
-   */
-  ListenableFuture<Void> onNewIncomingCall(@NonNull DialerCall call);
-
-  /**
-   * Indicates the feature is available.
-   *
-   * @param context The application context.
-   */
-  boolean isAvailable(@NonNull Context context);
-
-  /**
-   * Optional: Performs work necessary to happen-before callers use other methods on this interface.
-   *
-   * @apiNote Use of this API is completely optional, and callers are NOT required to invoke this
-   *     method prior to using other methods on the interface.
-   * @implSpec Other members of this interface always promise to do any required initialization work
-   *     at the time they are invoked. This method will always be idempotent.
-   */
-  default void performManualInitialization() {}
-
-  /** Returns the config provider flag associated with the feature. */
-  @NonNull
-  String getConfigProviderFlag();
-}
diff --git a/java/com/android/incallui/speakeasy/SpeakEasyCallManagerStub.java b/java/com/android/incallui/speakeasy/SpeakEasyCallManagerStub.java
deleted file mode 100644
index 4eebc80..0000000
--- a/java/com/android/incallui/speakeasy/SpeakEasyCallManagerStub.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.speakeasy;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import com.android.incallui.call.DialerCall;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.Optional;
-import javax.inject.Inject;
-
-/** Default implementation of SpeakEasyCallManager. */
-public class SpeakEasyCallManagerStub implements SpeakEasyCallManager {
-
-  @Inject
-  public SpeakEasyCallManagerStub() {}
-
-  /** Returns an absent optional. */
-  @Override
-  @Nullable
-  public Optional<Fragment> getSpeakEasyFragment(DialerCall call) {
-    return Optional.empty();
-  }
-
-  /** Always inert in the stub. */
-  @Override
-  public void onCallRemoved(DialerCall call) {}
-
-  @Override
-  public ListenableFuture<Void> onNewIncomingCall(@NonNull DialerCall call) {
-    return Futures.immediateFuture(null);
-  }
-
-  /** Always returns false. */
-  @Override
-  public boolean isAvailable(@NonNull Context unused) {
-    return false;
-  }
-
-  /** Always returns a stub string. */
-  @NonNull
-  @Override
-  public String getConfigProviderFlag() {
-    return "not_yet_implmented";
-  }
-}
diff --git a/java/com/android/incallui/speakeasy/SpeakEasyComponent.java b/java/com/android/incallui/speakeasy/SpeakEasyComponent.java
deleted file mode 100644
index 422ebd6..0000000
--- a/java/com/android/incallui/speakeasy/SpeakEasyComponent.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.incallui.speakeasy;
-
-import android.content.Context;
-import android.preference.PreferenceActivity;
-import com.android.dialer.inject.HasRootComponent;
-import com.android.incallui.speakeasy.Annotations.SpeakEasyChipResourceId;
-import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsActivity;
-import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsObject;
-import com.android.incallui.speakeasy.Annotations.SpeakEasyTextResourceId;
-import com.google.common.base.Optional;
-import dagger.Subcomponent;
-
-/** Dagger component to get SpeakEasyCallManager. */
-@Subcomponent
-public abstract class SpeakEasyComponent {
-
-  public static SpeakEasyComponent get(Context context) {
-    return ((SpeakEasyComponent.HasComponent)
-            ((HasRootComponent) context.getApplicationContext()).component())
-        .speakEasyComponent();
-  }
-
-  public abstract SpeakEasyCallManager speakEasyCallManager();
-
-  public abstract @SpeakEasySettingsActivity Optional<PreferenceActivity>
-      speakEasySettingsActivity();
-
-  public abstract @SpeakEasySettingsObject Optional<Object> speakEasySettingsObject();
-
-  public abstract @SpeakEasyChipResourceId Optional<Integer> speakEasyChip();
-
-  public abstract @SpeakEasyTextResourceId Optional<Integer> speakEasyTextResource();
-
-  /** Used to refer to the root application component. */
-  public interface HasComponent {
-    SpeakEasyComponent speakEasyComponent();
-  }
-}
diff --git a/java/com/android/incallui/speakeasy/StubSpeakEasyModule.java b/java/com/android/incallui/speakeasy/StubSpeakEasyModule.java
deleted file mode 100644
index 5441075..0000000
--- a/java/com/android/incallui/speakeasy/StubSpeakEasyModule.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.speakeasy;
-
-import android.preference.PreferenceActivity;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
-import com.android.incallui.speakeasy.Annotations.SpeakEasyChipResourceId;
-import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsActivity;
-import com.android.incallui.speakeasy.Annotations.SpeakEasySettingsObject;
-import com.android.incallui.speakeasy.Annotations.SpeakEasyTextResourceId;
-import com.google.common.base.Optional;
-import dagger.Binds;
-import dagger.Module;
-import dagger.Provides;
-
-/** Module which binds {@link SpeakEasyCallManagerStub}. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
-@Module
-public abstract class StubSpeakEasyModule {
-
-  @Binds
-  abstract SpeakEasyCallManager bindsSpeakEasy(SpeakEasyCallManagerStub stub);
-
-  @Provides
-  static @SpeakEasySettingsActivity Optional<PreferenceActivity>
-      provideSpeakEasySettingsActivity() {
-    return Optional.absent();
-  }
-
-  @Provides
-  static @SpeakEasySettingsObject Optional<Object> provideSpeakEasySettingsObject() {
-    return Optional.absent();
-  }
-
-  @Provides
-  static @SpeakEasyChipResourceId Optional<Integer> provideSpeakEasyChip() {
-    return Optional.absent();
-  }
-
-  @Provides
-  static @SpeakEasyTextResourceId Optional<Integer> provideSpeakEasyTextResource() {
-    return Optional.absent();
-  }
-}
diff --git a/java/com/android/incallui/speakerbuttonlogic/AndroidManifest.xml b/java/com/android/incallui/speakerbuttonlogic/AndroidManifest.xml
deleted file mode 100644
index 9557d03..0000000
--- a/java/com/android/incallui/speakerbuttonlogic/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest
-    package="com.android.incallui.speakerbuttonlogic">
-</manifest>
diff --git a/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java b/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java
index 0c873b2..9fb96dc 100644
--- a/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java
+++ b/java/com/android/incallui/speakerbuttonlogic/SpeakerButtonInfo.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2024 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,15 @@
 
 package com.android.incallui.speakerbuttonlogic;
 
-import android.support.annotation.DrawableRes;
-import android.support.annotation.IntDef;
-import android.support.annotation.StringRes;
 import android.telecom.CallAudioState;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.IntDef;
+import androidx.annotation.StringRes;
+
+import com.android.dialer.R;
+import com.android.incallui.util.BluetoothUtil;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -36,37 +42,41 @@
     int SIZE_36_DP = 2;
   }
 
-  @DrawableRes public final int icon;
+  @DrawableRes
+  public final int icon;
   @StringRes public final int contentDescription;
-  @StringRes public final int label;
+  @StringRes
+  public final int label;
   public final boolean nonBluetoothMode;
   public final boolean isChecked;
+  public String deviceName;
 
   public SpeakerButtonInfo(CallAudioState audioState) {
     if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH)
         == CallAudioState.ROUTE_BLUETOOTH) {
       nonBluetoothMode = false;
-      label = R.string.incall_label_audio;
+      isChecked = true;
 
       if ((audioState.getRoute() & CallAudioState.ROUTE_BLUETOOTH)
           == CallAudioState.ROUTE_BLUETOOTH) {
-        icon = R.drawable.volume_bluetooth;
+        icon = R.drawable.quantum_ic_phone_bluetooth_vd_theme_24;
         contentDescription = R.string.incall_content_description_bluetooth;
-        isChecked = true;
+        label = R.string.audioroute_bluetooth;
+        deviceName = BluetoothUtil.getAliasName(audioState.getActiveBluetoothDevice());
       } else if ((audioState.getRoute() & CallAudioState.ROUTE_SPEAKER)
           == CallAudioState.ROUTE_SPEAKER) {
         icon = R.drawable.quantum_ic_volume_up_vd_theme_24;
         contentDescription = R.string.incall_content_description_speaker;
-        isChecked = true;
+        label = R.string.audioroute_speaker;
       } else if ((audioState.getRoute() & CallAudioState.ROUTE_WIRED_HEADSET)
           == CallAudioState.ROUTE_WIRED_HEADSET) {
         icon = R.drawable.quantum_ic_headset_vd_theme_24;
         contentDescription = R.string.incall_content_description_headset;
-        isChecked = true;
+        label = R.string.audioroute_headset;
       } else {
         icon = R.drawable.quantum_ic_phone_in_talk_vd_theme_24;
         contentDescription = R.string.incall_content_description_earpiece;
-        isChecked = false;
+        label = R.string.audioroute_phone;
       }
     } else {
       nonBluetoothMode = true;
diff --git a/java/com/android/incallui/speakerbuttonlogic/res/drawable/volume_bluetooth.xml b/java/com/android/incallui/speakerbuttonlogic/res/drawable/volume_bluetooth.xml
deleted file mode 100644
index 59dfdf3..0000000
--- a/java/com/android/incallui/speakerbuttonlogic/res/drawable/volume_bluetooth.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:width="24dp"
-    android:height="24dp">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M3 9l0 6 4 0 5 5 0 -16 -5 5 -4 0zm11.71 6.5l2.29 -2.29 0 3.79 0.5 0 2.85 -2.85L18.12 12 20.36 9.85 17.5 7l-0.5 0 0 3.79L14.71 8.5 14 9.21 16.79 12 14 14.79 14.71 15.5ZM18 8.91l0.94 0.94 -0.94 0.94 0 -1.88zm0 4.3l0.94 0.94 -0.94 0.94 0 -1.88z"/>
-</vector>
\ No newline at end of file
diff --git a/java/com/android/incallui/telecomeventui/AndroidManifest.xml b/java/com/android/incallui/telecomeventui/AndroidManifest.xml
deleted file mode 100644
index a2134a3..0000000
--- a/java/com/android/incallui/telecomeventui/AndroidManifest.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.incallui.telecomeventui">
-  <application>
-    <activity
-        android:excludeFromRecents="true"
-        android:exported="true"
-        android:name="com.android.incallui.telecomeventui.InternationalCallOnWifiDialogActivity"
-        android:noHistory="true"
-        android:theme="@style/Theme.Incall.DialogHolder"/>
-  </application>
-</manifest>
diff --git a/java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogActivity.java b/java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogActivity.java
index 192c160..d5d0b59 100644
--- a/java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogActivity.java
+++ b/java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,12 @@
 package com.android.incallui.telecomeventui;
 
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
 
diff --git a/java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogFragment.java b/java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogFragment.java
index cd53f26..688494a 100644
--- a/java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogFragment.java
+++ b/java/com/android/incallui/telecomeventui/InternationalCallOnWifiDialogFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,12 +22,14 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.os.UserManagerCompat;
 import android.view.View;
 import android.widget.CheckBox;
+
+import androidx.annotation.NonNull;
+import androidx.core.os.UserManagerCompat;
+import androidx.fragment.app.DialogFragment;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
@@ -80,8 +83,7 @@
    * Key to the preference used to determine if the user wants to see {@link
    * InternationalCallOnWifiDialogFragment InternationalCallOnWifiDialogFragments}.
    */
-  @VisibleForTesting
-  public static final String ALWAYS_SHOW_WARNING_PREFERENCE_KEY =
+  private static final String ALWAYS_SHOW_WARNING_PREFERENCE_KEY =
       "ALWAYS_SHOW_INTERNATIONAL_CALL_ON_WIFI_WARNING";
 
   /** Key in the arguments bundle for call id. */
diff --git a/java/com/android/incallui/theme/AndroidManifest.xml b/java/com/android/incallui/theme/AndroidManifest.xml
deleted file mode 100644
index 3b1a459..0000000
--- a/java/com/android/incallui/theme/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest package="com.android.incallui.theme"/>
diff --git a/java/com/android/incallui/theme/res/drawable/incall_background_gradient.xml b/java/com/android/incallui/theme/res/drawable/incall_background_gradient.xml
deleted file mode 100644
index 996f172..0000000
--- a/java/com/android/incallui/theme/res/drawable/incall_background_gradient.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
-  <gradient
-    android:angle="270"
-    android:startColor="@color/incall_background_gradient_top"
-    android:centerColor="@color/incall_background_gradient_middle"
-    android:endColor="@color/incall_background_gradient_bottom"/>
-</shape>
diff --git a/java/com/android/incallui/theme/res/values-night/colors.xml b/java/com/android/incallui/theme/res/values-night/colors.xml
new file mode 100644
index 0000000..09c3a4e
--- /dev/null
+++ b/java/com/android/incallui/theme/res/values-night/colors.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="incall_background_gradient_top">@color/dialer_theme_color_dark</color>
+    <color name="incall_background_gradient_middle">@color/dialer_theme_color_dark</color>
+    <color name="incall_background_gradient_bottom">@color/dialer_theme_color_dark</color>
+    <color name="incall_background_multiwindow">@color/dialer_theme_color_dark</color>
+    <color name="incall_button_icon_color">@android:color/black</color>
+</resources>
diff --git a/java/com/android/incallui/theme/res/values/colors.xml b/java/com/android/incallui/theme/res/values/colors.xml
index 059fe59..e6376be 100644
--- a/java/com/android/incallui/theme/res/values/colors.xml
+++ b/java/com/android/incallui/theme/res/values/colors.xml
@@ -20,8 +20,6 @@
   <!-- Used with some smaller texts in manage conference screen. -->
   <color name="conference_call_manager_secondary_text_color">#999999</color>
 
-  <color name="incall_dialpad_background">#ffffff</color>
-
   <!-- Background color for status bar. For portrait this will be ignored. -->
   <color name="statusbar_background_color">?android:attr/colorPrimary</color>
 
@@ -53,15 +51,17 @@
     <item>#841F10</item>
   </array>
 
-  <color name="incall_background_gradient_top">#E91141BB</color>
-  <color name="incall_background_gradient_middle">#E91141BB</color>
-  <color name="incall_background_gradient_bottom">#CC229FEB</color>
+  <color name="incall_background_gradient_top">@android:color/system_accent1_600</color>
+  <color name="incall_background_gradient_middle">@android:color/system_accent1_500</color>
+  <color name="incall_background_gradient_bottom">@android:color/system_accent1_400</color>
 
-  <color name="incall_background_multiwindow">#E91141BB</color>
+  <color name="incall_background_multiwindow">@android:color/system_accent1_500</color>
 
   <color name="incall_background_gradient_spam_top">#E5A30B0B</color>
   <color name="incall_background_gradient_spam_middle">#D6C01111</color>
   <color name="incall_background_gradient_spam_bottom">#B8E55135</color>
 
   <color name="incall_background_multiwindow_spam">#E9C22E2E</color>
+
+  <color name="incall_button_icon_color">@android:color/black</color>
 </resources>
diff --git a/java/com/android/incallui/theme/res/values/dimens.xml b/java/com/android/incallui/theme/res/values/dimens.xml
index a84d819..c340677 100644
--- a/java/com/android/incallui/theme/res/values/dimens.xml
+++ b/java/com/android/incallui/theme/res/values/dimens.xml
@@ -35,8 +35,6 @@
 
   <dimen name="conference_call_manager_button_dimension">48dp</dimen>
 
-  <dimen name="return_to_call_initial_offset_y">120dp</dimen>
-
   <!-- Whether or not the landscape mode layout is currently being used -->
   <bool name="is_layout_landscape">false</bool>
 
diff --git a/java/com/android/incallui/theme/res/values/styles.xml b/java/com/android/incallui/theme/res/values/styles.xml
index 5b65cc3..bfedd14 100644
--- a/java/com/android/incallui/theme/res/values/styles.xml
+++ b/java/com/android/incallui/theme/res/values/styles.xml
@@ -16,23 +16,6 @@
   -->
 
 <resources>
-  <!-- Theme for the InCallActivity activity. Should have a transparent background for the
-       circular reveal animation for a new outgoing call to work correctly. We don't just use
-       Theme.Black.NoTitleBar directly, since we want any popups or dialogs from the
-       InCallActivity to have the correct Material style. -->
-  <style name="Theme.InCallScreen.Light" parent="@style/Dialer.ThemeBase.NoActionBar">
-    <item name="android:statusBarColor">@android:color/transparent</item>
-    <item name="android:navigationBarColor">@android:color/transparent</item>
-    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
-
-    <item name="dialpad_key_button_touch_tint">?attr/colorPrimary20pct</item>
-    <item name="dialpad_style">@style/InCallDialpad</item>
-    <item name="android:windowAnimationStyle">@null</item>
-
-    <item name="android:windowBackground">@drawable/incall_background_gradient</item>
-    <item name="android:windowShowWallpaper">true</item>
-  </style>
-
   <style name="Theme.InCallScreen" parent="@style/Dialer.Dark.ThemeBase.NoActionBar">
     <item name="android:textColorPrimary">@android:color/white</item>
     <item name="android:textColorSecondary">#DDFFFFFF</item>
@@ -41,41 +24,28 @@
     <item name="android:windowDrawsSystemBarBackgrounds">true</item>
     <item name="android:colorPrimaryDark">@color/dialer_theme_color_dark</item>
     <item name="colorPrimaryDark">@color/dialer_theme_color_dark</item>
-
-    <item name="dialpad_key_button_touch_tint">?attr/colorPrimary20pct</item>
     <item name="dialpad_style">@style/InCallDialpad</item>
     <item name="android:windowAnimationStyle">@null</item>
-
-    <item name="android:windowBackground">@drawable/incall_background_gradient</item>
+    <item name="android:windowBackground">@color/dialer_theme_color_dark</item>
     <item name="android:windowShowWallpaper">true</item>
+    <item name="bottomSheetDialogTheme">@style/TransparentBottomSheetDialogTheme</item>
   </style>
 
   <style name="Theme.InCallScreen.ManageConference" parent="Dialer.ThemeBase.ActionBar">
   </style>
 
   <style name="InCallDialpad" parent="Dialpad.Themed">
-    <item name="dialpad_key_number_margin_bottom">
-      @dimen/incall_dialpad_key_number_margin_bottom
-    </item>
-    <item name="dialpad_digits_adjustable_text_size">
-      @dimen/incall_dialpad_digits_adjustable_text_size
-    </item>
-    <item name="dialpad_digits_adjustable_height">
-      @dimen/incall_dialpad_digits_adjustable_height
-    </item>
-    <item name="dialpad_key_letters_size_for_dual_alphabets">
-      @dimen/incall_dialpad_key_letters_size_for_dual_alphabets
-    </item>
-    <item name="dialpad_key_letters_size_for_single_alphabet">
-      @dimen/incall_dialpad_key_letters_size_for_single_alphabet
-    </item>
-    <item name="dialpad_key_numbers_size">
-      @dimen/incall_dialpad_key_numbers_size
-    </item>
-    <item name="dialpad_end_key_spacing">
-      @dimen/incall_end_call_spacing
-    </item>
+    <item name="dialpad_key_number_margin_bottom">@dimen/incall_dialpad_key_number_margin_bottom</item>
+    <item name="dialpad_digits_adjustable_text_size">@dimen/incall_dialpad_digits_adjustable_text_size</item>
+    <item name="dialpad_digits_adjustable_height">@dimen/incall_dialpad_digits_adjustable_height</item>
+    <item name="dialpad_key_letters_size_for_dual_alphabets">@dimen/incall_dialpad_key_letters_size_for_dual_alphabets</item>
+    <item name="dialpad_key_letters_size_for_single_alphabet">@dimen/incall_dialpad_key_letters_size_for_single_alphabet</item>
+    <item name="dialpad_key_numbers_size">@dimen/incall_dialpad_key_numbers_size</item>
+    <item name="dialpad_end_key_spacing">@dimen/incall_end_call_spacing</item>
     <item name="dialpad_elevation">10dp</item>
+    <item name="dialpad_text_color">@color/dialer_theme_color_light</item>
+    <item name="dialpad_text_color_primary">@color/dialer_theme_color_light</item>
+    <item name="dialpad_text_color_secondary">@color/dialer_secondary_text_color</item>
   </style>
 
   <style name="AfterCallNotificationTheme" parent="Dialer.ThemeBase.NoActionBar">
@@ -86,11 +56,6 @@
     <item name="android:windowAnimationStyle">@android:style/Animation</item>
   </style>
 
-  <style name="AfterCallDialogStyle" parent="@android:style/Theme.Material.Light.Dialog">
-    <!-- This colorAccent is to style text in the dialogs -->
-    <item name="android:colorAccent">?android:attr/colorPrimary</item>
-  </style>
-
   <style name="Theme.Incall.DialogHolder" parent="Theme.AppCompat.Translucent">
     <item name="android:windowBackground">@android:color/transparent</item>
     <item name="android:windowActivityTransitions">false</item>
@@ -98,6 +63,8 @@
     <item name="android:statusBarColor">@android:color/transparent</item>
     <item name="android:navigationBarColor">@android:color/transparent</item>
     <item name="android:windowDrawsSystemBarBackgrounds">true</item>
+
+    <item name="bottomSheetDialogTheme">@style/TransparentBottomSheetDialogTheme</item>
   </style>
 
 </resources>
diff --git a/java/com/android/incallui/util/BluetoothUtil.java b/java/com/android/incallui/util/BluetoothUtil.java
new file mode 100644
index 0000000..82aec8f
--- /dev/null
+++ b/java/com/android/incallui/util/BluetoothUtil.java
@@ -0,0 +1,17 @@
+/*
+ * SPDX-FileCopyrightText: The LineageOS Project
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.android.incallui.util;
+
+import android.bluetooth.BluetoothDevice;
+
+public class BluetoothUtil {
+    public static String getAliasName(BluetoothDevice bluetoothDevice) {
+        try {
+            return bluetoothDevice == null ? "" : bluetoothDevice.getAlias();
+        } catch (SecurityException ignored) {
+            return "";
+        }
+    }
+}
diff --git a/java/com/android/incallui/video/impl/AndroidManifest.xml b/java/com/android/incallui/video/impl/AndroidManifest.xml
deleted file mode 100644
index a36828e..0000000
--- a/java/com/android/incallui/video/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<manifest
-  package="com.android.incallui.video.impl">
-</manifest>
diff --git a/java/com/android/incallui/video/impl/CheckableImageButton.java b/java/com/android/incallui/video/impl/CheckableImageButton.java
index 320f057..6be86f5 100644
--- a/java/com/android/incallui/video/impl/CheckableImageButton.java
+++ b/java/com/android/incallui/video/impl/CheckableImageButton.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,10 +24,11 @@
 import android.util.AttributeSet;
 import android.view.SoundEffectConstants;
 import android.widget.Checkable;
-import android.widget.ImageButton;
+
+import androidx.appcompat.widget.AppCompatImageButton;
 
 /** Image button that maintains a checked state. */
-public class CheckableImageButton extends ImageButton implements Checkable {
+public class CheckableImageButton extends AppCompatImageButton implements Checkable {
 
   private static final int[] CHECKED_STATE_SET = {android.R.attr.state_checked};
 
diff --git a/java/com/android/incallui/video/impl/SpeakerButtonController.java b/java/com/android/incallui/video/impl/SpeakerButtonController.java
index 4ae746b..6efc089 100644
--- a/java/com/android/incallui/video/impl/SpeakerButtonController.java
+++ b/java/com/android/incallui/video/impl/SpeakerButtonController.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,12 +17,15 @@
 
 package com.android.incallui.video.impl;
 
-import android.support.annotation.DrawableRes;
-import android.support.annotation.NonNull;
-import android.support.annotation.StringRes;
 import android.telecom.CallAudioState;
 import android.view.View;
 import android.view.View.OnClickListener;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.StringRes;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.incall.protocol.InCallButtonUiDelegate;
@@ -34,9 +38,11 @@
   @NonNull private final InCallButtonUiDelegate inCallButtonUiDelegate;
   @NonNull private final VideoCallScreenDelegate videoCallScreenDelegate;
 
-  @NonNull private CheckableImageButton button;
+  @NonNull
+  private final CheckableImageButton button;
 
-  @DrawableRes private int icon = R.drawable.quantum_ic_volume_up_vd_theme_24;
+  @DrawableRes
+  private int icon = R.drawable.quantum_ic_volume_up_vd_theme_24;
 
   private boolean isChecked;
   private boolean checkable;
diff --git a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
index 89db079..3490dca 100644
--- a/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
+++ b/java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,19 +18,12 @@
 package com.android.incallui.video.impl;
 
 import android.Manifest.permission;
+import android.annotation.SuppressLint;
 import android.content.Context;
-import android.content.pm.PackageManager;
+import android.graphics.Insets;
 import android.graphics.Point;
 import android.graphics.drawable.Animatable;
 import android.os.Bundle;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.view.animation.FastOutLinearInInterpolator;
-import android.support.v4.view.animation.LinearOutSlowInInterpolator;
 import android.telecom.CallAudioState;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
@@ -41,12 +35,24 @@
 import android.view.ViewGroup;
 import android.view.ViewGroup.MarginLayoutParams;
 import android.view.ViewTreeObserver;
+import android.view.WindowInsets;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.animation.AccelerateDecelerateInterpolator;
 import android.view.animation.Interpolator;
 import android.widget.FrameLayout;
 import android.widget.ImageButton;
 import android.widget.TextView;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.interpolator.view.animation.FastOutLinearInInterpolator;
+import androidx.interpolator.view.animation.LinearOutSlowInInterpolator;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
@@ -87,10 +93,8 @@
         AudioRouteSelectorPresenter,
         OnSystemUiVisibilityChangeListener {
 
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  static final String ARG_CALL_ID = "call_id";
+  private static final String ARG_CALL_ID = "call_id";
 
-  private static final int CAMERA_PERMISSION_REQUEST_CODE = 1;
   private static final long CAMERA_PERMISSION_DIALOG_DELAY_IN_MILLIS = 2000L;
   private static final long VIDEO_OFF_VIEW_FADE_OUT_DELAY_IN_MILLIS = 2000L;
 
@@ -136,6 +140,19 @@
         }
       };
 
+  private final ActivityResultLauncher<String> cameraPermissionLauncher = registerForActivityResult(
+          new ActivityResultContracts.RequestPermission(),
+          grantResults -> {
+            if (grantResults) {
+              LogUtil.i("SurfaceViewVideoCallFragment.onRequestPermissionsResult",
+                      "Camera permission granted.");
+              videoCallScreenDelegate.onCameraPermissionGranted();
+            } else {
+              LogUtil.i("SurfaceViewVideoCallFragment.onRequestPermissionsResult",
+                      "Camera permission denied.");
+            }
+          });
+
   public static SurfaceViewVideoCallFragment newInstance(String callId) {
     Bundle bundle = new Bundle();
     bundle.putString(ARG_CALL_ID, Assert.isNotNull(callId));
@@ -153,26 +170,6 @@
     inCallButtonUiDelegate =
         FragmentUtils.getParent(this, InCallButtonUiDelegateFactory.class)
             .newInCallButtonUiDelegate();
-    if (savedInstanceState != null) {
-      inCallButtonUiDelegate.onRestoreInstanceState(savedInstanceState);
-    }
-  }
-
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
-    if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) {
-      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-        LogUtil.i(
-            "SurfaceViewVideoCallFragment.onRequestPermissionsResult",
-            "Camera permission granted.");
-        videoCallScreenDelegate.onCameraPermissionGranted();
-      } else {
-        LogUtil.i(
-            "SurfaceViewVideoCallFragment.onRequestPermissionsResult", "Camera permission denied.");
-      }
-    }
-    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
   }
 
   @Nullable
@@ -188,33 +185,27 @@
     controls = view.findViewById(R.id.videocall_video_controls);
     controls.setVisibility(getActivity().isInMultiWindowMode() ? View.GONE : View.VISIBLE);
     controlsContainer = view.findViewById(R.id.videocall_video_controls_container);
-    speakerButton = (CheckableImageButton) view.findViewById(R.id.videocall_speaker_button);
-    muteButton = (CheckableImageButton) view.findViewById(R.id.videocall_mute_button);
+    speakerButton = view.findViewById(R.id.videocall_speaker_button);
+    muteButton = view.findViewById(R.id.videocall_mute_button);
     muteButton.setOnCheckedChangeListener(this);
     mutePreviewOverlay = view.findViewById(R.id.videocall_video_preview_mute_overlay);
-    cameraOffButton = (CheckableImageButton) view.findViewById(R.id.videocall_mute_video);
+    cameraOffButton = view.findViewById(R.id.videocall_mute_video);
     cameraOffButton.setOnCheckedChangeListener(this);
     previewOffOverlay = view.findViewById(R.id.videocall_video_preview_off_overlay);
-    swapCameraButton = (ImageButton) view.findViewById(R.id.videocall_switch_video);
+    swapCameraButton = view.findViewById(R.id.videocall_switch_video);
     swapCameraButton.setOnClickListener(this);
     view.findViewById(R.id.videocall_switch_controls)
         .setVisibility(getActivity().isInMultiWindowMode() ? View.GONE : View.VISIBLE);
     switchOnHoldButton = view.findViewById(R.id.videocall_switch_on_hold);
     onHoldContainer = view.findViewById(R.id.videocall_on_hold_banner);
-    remoteVideoOff = (TextView) view.findViewById(R.id.videocall_remote_video_off);
+    remoteVideoOff = view.findViewById(R.id.videocall_remote_video_off);
     remoteVideoOff.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
     endCallButton = view.findViewById(R.id.videocall_end_call);
     endCallButton.setOnClickListener(this);
-    previewSurfaceView = (SurfaceView) view.findViewById(R.id.videocall_video_preview);
+    previewSurfaceView = view.findViewById(R.id.videocall_video_preview);
     previewSurfaceView.setZOrderMediaOverlay(true);
-    previewOffOverlay.setOnClickListener(
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            checkCameraPermission();
-          }
-        });
-    remoteSurfaceView = (SurfaceView) view.findViewById(R.id.videocall_video_remote);
+    previewOffOverlay.setOnClickListener(v -> checkCameraPermission());
+    remoteSurfaceView = view.findViewById(R.id.videocall_video_remote);
     remoteSurfaceView.setOnClickListener(
         surfaceView -> {
           videoCallScreenDelegate.resetAutoFullscreenTimer();
@@ -228,7 +219,7 @@
         });
     greenScreenBackgroundView = view.findViewById(R.id.videocall_green_screen_background);
     fullscreenBackgroundView = view.findViewById(R.id.videocall_fullscreen_background);
-    previewRoot = (FrameLayout) view.findViewById(R.id.videocall_preview_root);
+    previewRoot = view.findViewById(R.id.videocall_preview_root);
 
     // We need the texture view size to be able to scale the remote video. At this point the view
     // layout won't be complete so add a layout listener.
@@ -278,12 +269,6 @@
   }
 
   @Override
-  public void onSaveInstanceState(Bundle outState) {
-    super.onSaveInstanceState(outState);
-    inCallButtonUiDelegate.onSaveInstanceState(outState);
-  }
-
-  @Override
   public void onDestroyView() {
     super.onDestroyView();
     LogUtil.i("SurfaceViewVideoCallFragment.onDestroyView", null);
@@ -367,13 +352,7 @@
         .translationY(0)
         .setInterpolator(linearOutSlowInInterpolator)
         .alpha(1)
-        .withStartAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                switchOnHoldCallController.setOnScreen();
-              }
-            });
+        .withStartAction(() -> switchOnHoldCallController.setOnScreen());
 
     View contactGridView = contactGridManager.getContainerView();
     // Animate contact grid to the shown state.
@@ -383,13 +362,7 @@
         .translationY(0)
         .setInterpolator(linearOutSlowInInterpolator)
         .alpha(1)
-        .withStartAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                contactGridManager.show();
-              }
-            });
+        .withStartAction(() -> contactGridManager.show());
 
     endCallButton
         .animate()
@@ -397,13 +370,7 @@
         .translationY(0)
         .setInterpolator(linearOutSlowInInterpolator)
         .alpha(1)
-        .withStartAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                endCallButton.setVisibility(View.VISIBLE);
-              }
-            })
+        .withStartAction(() -> endCallButton.setVisibility(View.VISIBLE))
         .start();
 
     // Animate all the preview controls up to make room for the navigation bar.
@@ -474,17 +441,22 @@
 
   private Point getPreviewOffsetStartShown() {
     // No insets in multiwindow mode, and rootWindowInsets will get the display's insets.
-    if (getActivity().isInMultiWindowMode()) {
+    if (requireActivity().isInMultiWindowMode()) {
       return new Point();
     }
+    if (getView() == null) {
+      return null;
+    }
+    Insets insets = getView().getRootWindowInsets().getInsetsIgnoringVisibility(
+            WindowInsets.Type.systemBars());
     if (isLandscape()) {
       int stableInsetEnd =
           getView().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL
-              ? getView().getRootWindowInsets().getStableInsetLeft()
-              : -getView().getRootWindowInsets().getStableInsetRight();
+              ? insets.left
+              : -insets.right;
       return new Point(stableInsetEnd, 0);
     } else {
-      return new Point(0, -getView().getRootWindowInsets().getStableInsetBottom());
+      return new Point(0, -insets.bottom);
     }
   }
 
@@ -562,13 +534,7 @@
         .translationY(offset.y)
         .setInterpolator(fastOutLinearInInterpolator)
         .alpha(0)
-        .withEndAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                endCallButton.setVisibility(View.INVISIBLE);
-              }
-            })
+        .withEndAction(() -> endCallButton.setVisibility(View.INVISIBLE))
         .setInterpolator(new FastOutLinearInInterpolator())
         .start();
 
@@ -797,6 +763,18 @@
   }
 
   @Override
+  public void setCallRecordingState(boolean isRecording) {
+  }
+
+  @Override
+  public void setCallRecordingDuration(long durationMs) {
+  }
+
+  @Override
+  public void requestCallRecordingPermissions(String[] permissions) {
+  }
+
+  @Override
   public void updateButtonStates() {
     LogUtil.i("SurfaceViewVideoCallFragment.updateButtonState", null);
     speakerButtonController.updateButtonState();
@@ -804,9 +782,6 @@
   }
 
   @Override
-  public void updateInCallButtonUiColors(@ColorInt int color) {}
-
-  @Override
   public Fragment getInCallButtonUiFragment() {
     return this;
   }
@@ -924,7 +899,7 @@
 
   private boolean isLandscape() {
     // Choose orientation based on display orientation, not window orientation
-    int rotation = getActivity().getWindowManager().getDefaultDisplay().getRotation();
+    int rotation = requireActivity().getDisplay().getRotation();
     return rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270;
   }
 
@@ -960,13 +935,7 @@
           wasRemoteVideoOff
               ? R.string.videocall_remote_video_on
               : R.string.videocall_remotely_resumed);
-      remoteVideoOff.postDelayed(
-          new Runnable() {
-            @Override
-            public void run() {
-              remoteVideoOff.setVisibility(View.GONE);
-            }
-          },
+      remoteVideoOff.postDelayed(() -> remoteVideoOff.setVisibility(View.GONE),
           VIDEO_OFF_VIEW_FADE_OUT_DELAY_IN_MILLIS);
     } else {
       remoteVideoOff.setText(
@@ -1000,6 +969,7 @@
         muteButton.isChecked() && !isInGreenScreenMode ? View.VISIBLE : View.GONE);
   }
 
+  @SuppressLint("CheckResult")
   private static void animateSetVisibility(final View view, final int visibility) {
     if (view.getVisibility() == visibility) {
       return;
@@ -1014,21 +984,14 @@
       startAlpha = 0;
       endAlpha = 1;
     } else {
-      Assert.fail();
-      return;
+      throw Assert.createIllegalStateFailException();
     }
 
     view.setAlpha(startAlpha);
     view.setVisibility(View.VISIBLE);
     view.animate()
         .alpha(endAlpha)
-        .withEndAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                view.setVisibility(visibility);
-              }
-            })
+        .withEndAction(() -> view.setVisibility(visibility))
         .start();
   }
 
@@ -1054,7 +1017,8 @@
     if (!VideoUtils.hasCameraPermissionAndShownPrivacyToast(getContext())) {
       videoCallScreenDelegate.onCameraPermissionDialogShown();
       if (!VideoUtils.hasCameraPermission(getContext())) {
-        requestPermissions(new String[] {permission.CAMERA}, CAMERA_PERMISSION_REQUEST_CODE);
+        cameraPermissionLauncher.launch(permission.CAMERA);
+
       } else {
         PermissionsUtil.showCameraPermissionToast(getContext());
         videoCallScreenDelegate.onCameraPermissionGranted();
diff --git a/java/com/android/incallui/video/impl/SwitchOnHoldCallController.java b/java/com/android/incallui/video/impl/SwitchOnHoldCallController.java
index 3efdfd7..a90850f 100644
--- a/java/com/android/incallui/video/impl/SwitchOnHoldCallController.java
+++ b/java/com/android/incallui/video/impl/SwitchOnHoldCallController.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,10 +17,12 @@
 
 package com.android.incallui.video.impl;
 
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.view.View;
 import android.view.View.OnClickListener;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.incallui.incall.protocol.InCallScreenDelegate;
 import com.android.incallui.incall.protocol.SecondaryInfo;
@@ -28,18 +31,23 @@
 /** Manages the swap button and on hold banner. */
 public class SwitchOnHoldCallController implements OnClickListener {
 
-  @NonNull private InCallScreenDelegate inCallScreenDelegate;
-  @NonNull private VideoCallScreenDelegate videoCallScreenDelegate;
+  @NonNull
+  private final InCallScreenDelegate inCallScreenDelegate;
+  @NonNull
+  private final VideoCallScreenDelegate videoCallScreenDelegate;
 
-  @NonNull private View switchOnHoldButton;
+  @NonNull
+  private final View switchOnHoldButton;
 
-  @NonNull private View onHoldBanner;
+  @NonNull
+  private final View onHoldBanner;
 
   private boolean isVisible;
 
   private boolean isEnabled;
 
-  @Nullable private SecondaryInfo secondaryInfo;
+  @Nullable
+  private SecondaryInfo secondaryInfo;
 
   public SwitchOnHoldCallController(
       @NonNull View switchOnHoldButton,
diff --git a/java/com/android/incallui/video/impl/VideoCallFragment.java b/java/com/android/incallui/video/impl/VideoCallFragment.java
index edfc17c..3b11743 100644
--- a/java/com/android/incallui/video/impl/VideoCallFragment.java
+++ b/java/com/android/incallui/video/impl/VideoCallFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,9 +19,9 @@
 
 import android.Manifest.permission;
 import android.content.Context;
-import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
+import android.graphics.Insets;
 import android.graphics.Outline;
 import android.graphics.Point;
 import android.graphics.drawable.Animatable;
@@ -30,14 +31,6 @@
 import android.renderscript.Element;
 import android.renderscript.RenderScript;
 import android.renderscript.ScriptIntrinsicBlur;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.view.animation.FastOutLinearInInterpolator;
-import android.support.v4.view.animation.LinearOutSlowInInterpolator;
 import android.telecom.CallAudioState;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
@@ -50,6 +43,7 @@
 import android.view.ViewGroup;
 import android.view.ViewGroup.MarginLayoutParams;
 import android.view.ViewOutlineProvider;
+import android.view.WindowInsets;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.animation.AccelerateDecelerateInterpolator;
 import android.view.animation.Interpolator;
@@ -57,6 +51,17 @@
 import android.widget.ImageView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
+
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.interpolator.view.animation.FastOutLinearInInterpolator;
+import androidx.interpolator.view.animation.LinearOutSlowInInterpolator;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
@@ -95,13 +100,12 @@
         AudioRouteSelectorPresenter,
         OnSystemUiVisibilityChangeListener {
 
-  @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-  static final String ARG_CALL_ID = "call_id";
+  private static final String ARG_CALL_ID = "call_id";
 
   private static final String TAG_VIDEO_CHARGES_ALERT = "tag_video_charges_alert";
 
-  @VisibleForTesting static final float BLUR_PREVIEW_RADIUS = 16.0f;
-  @VisibleForTesting static final float BLUR_PREVIEW_SCALE_FACTOR = 1.0f;
+  private static final float BLUR_PREVIEW_RADIUS = 16.0f;
+  private static final float BLUR_PREVIEW_SCALE_FACTOR = 1.0f;
   private static final float BLUR_REMOTE_RADIUS = 25.0f;
   private static final float BLUR_REMOTE_SCALE_FACTOR = 0.25f;
   private static final float ASPECT_RATIO_MATCH_THRESHOLD = 0.2f;
@@ -182,6 +186,19 @@
         }
       };
 
+  private final ActivityResultLauncher<String> cameraPermissionLauncher = registerForActivityResult(
+          new ActivityResultContracts.RequestPermission(),
+          grantResult -> {
+            if (grantResult) {
+              LogUtil.i("VideoCallFragment.onRequestPermissionsResult",
+                      "Camera permission granted.");
+              videoCallScreenDelegate.onCameraPermissionGranted();
+            } else {
+              LogUtil.i("VideoCallFragment.onRequestPermissionsResult",
+                      "Camera permission denied.");
+            }
+          });
+
   public static VideoCallFragment newInstance(String callId) {
     Bundle bundle = new Bundle();
     bundle.putString(ARG_CALL_ID, Assert.isNotNull(callId));
@@ -199,23 +216,6 @@
     inCallButtonUiDelegate =
         FragmentUtils.getParent(this, InCallButtonUiDelegateFactory.class)
             .newInCallButtonUiDelegate();
-    if (savedInstanceState != null) {
-      inCallButtonUiDelegate.onRestoreInstanceState(savedInstanceState);
-    }
-  }
-
-  @Override
-  public void onRequestPermissionsResult(
-      int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
-    if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) {
-      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-        LogUtil.i("VideoCallFragment.onRequestPermissionsResult", "Camera permission granted.");
-        videoCallScreenDelegate.onCameraPermissionGranted();
-      } else {
-        LogUtil.i("VideoCallFragment.onRequestPermissionsResult", "Camera permission denied.");
-      }
-    }
-    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
   }
 
   @Nullable
@@ -252,60 +252,29 @@
     onHoldContainer = view.findViewById(R.id.videocall_on_hold_banner);
     remoteVideoOff = (TextView) view.findViewById(R.id.videocall_remote_video_off);
     remoteVideoOff.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
-    remoteOffBlurredImageView =
-        (ImageView) view.findViewById(R.id.videocall_remote_off_blurred_image_view);
+    remoteOffBlurredImageView = view.findViewById(R.id.videocall_remote_off_blurred_image_view);
     endCallButton = view.findViewById(R.id.videocall_end_call);
     endCallButton.setOnClickListener(this);
-    previewTextureView = (TextureView) view.findViewById(R.id.videocall_video_preview);
+    previewTextureView = view.findViewById(R.id.videocall_video_preview);
     previewTextureView.setClipToOutline(true);
-    previewOffOverlay.setOnClickListener(
-        new OnClickListener() {
-          @Override
-          public void onClick(View v) {
-            checkCameraPermission();
-          }
-        });
-    remoteTextureView = (TextureView) view.findViewById(R.id.videocall_video_remote);
+    previewOffOverlay.setOnClickListener(v -> checkCameraPermission());
+    remoteTextureView = view.findViewById(R.id.videocall_video_remote);
     greenScreenBackgroundView = view.findViewById(R.id.videocall_green_screen_background);
     fullscreenBackgroundView = view.findViewById(R.id.videocall_fullscreen_background);
 
     remoteTextureView.addOnLayoutChangeListener(
-        new OnLayoutChangeListener() {
-          @Override
-          public void onLayoutChange(
-              View v,
-              int left,
-              int top,
-              int right,
-              int bottom,
-              int oldLeft,
-              int oldTop,
-              int oldRight,
-              int oldBottom) {
-            LogUtil.i("VideoCallFragment.onLayoutChange", "remoteTextureView layout changed");
-            updateRemoteVideoScaling();
-            updateRemoteOffView();
-          }
-        });
+            (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
+              LogUtil.i("VideoCallFragment.onLayoutChange", "remoteTextureView layout changed");
+              updateRemoteVideoScaling();
+              updateRemoteOffView();
+            });
 
     previewTextureView.addOnLayoutChangeListener(
-        new OnLayoutChangeListener() {
-          @Override
-          public void onLayoutChange(
-              View v,
-              int left,
-              int top,
-              int right,
-              int bottom,
-              int oldLeft,
-              int oldTop,
-              int oldRight,
-              int oldBottom) {
-            LogUtil.i("VideoCallFragment.onLayoutChange", "previewTextureView layout changed");
-            updatePreviewVideoScaling();
-            updatePreviewOffView();
-          }
-        });
+            (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
+              LogUtil.i("VideoCallFragment.onLayoutChange", "previewTextureView layout changed");
+              updatePreviewVideoScaling();
+              updatePreviewOffView();
+            });
 
     controls.addOnLayoutChangeListener(
         new OnLayoutChangeListener() {
@@ -367,12 +336,6 @@
   }
 
   @Override
-  public void onSaveInstanceState(Bundle outState) {
-    super.onSaveInstanceState(outState);
-    inCallButtonUiDelegate.onSaveInstanceState(outState);
-  }
-
-  @Override
   public void onDestroyView() {
     super.onDestroyView();
     LogUtil.i("VideoCallFragment.onDestroyView", null);
@@ -450,13 +413,7 @@
         .translationY(0)
         .setInterpolator(linearOutSlowInInterpolator)
         .alpha(1)
-        .withStartAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                controls.setVisibility(View.VISIBLE);
-              }
-            })
+        .withStartAction(() -> controls.setVisibility(View.VISIBLE))
         .start();
 
     // Animate onHold to the shown state.
@@ -466,13 +423,7 @@
         .translationY(0)
         .setInterpolator(linearOutSlowInInterpolator)
         .alpha(1)
-        .withStartAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                switchOnHoldCallController.setOnScreen();
-              }
-            });
+        .withStartAction(() -> switchOnHoldCallController.setOnScreen());
 
     View contactGridView = contactGridManager.getContainerView();
     // Animate contact grid to the shown state.
@@ -482,13 +433,7 @@
         .translationY(0)
         .setInterpolator(linearOutSlowInInterpolator)
         .alpha(1)
-        .withStartAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                contactGridManager.show();
-              }
-            });
+        .withStartAction(() -> contactGridManager.show());
 
     endCallButton
         .animate()
@@ -496,13 +441,7 @@
         .translationY(0)
         .setInterpolator(linearOutSlowInInterpolator)
         .alpha(1)
-        .withStartAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                endCallButton.setVisibility(View.VISIBLE);
-              }
-            })
+        .withStartAction(() -> endCallButton.setVisibility(View.VISIBLE))
         .start();
 
     // Animate all the preview controls up to make room for the navigation bar.
@@ -527,7 +466,6 @@
     View view = getView();
     if (view != null) {
       // Code is more expressive with all flags present, even though some may be combined
-      // noinspection PointlessBitwiseExpression
       view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
     }
   }
@@ -576,14 +514,15 @@
     if (getActivity().isInMultiWindowMode()) {
       return new Point();
     }
+    Insets insets = getView().getRootWindowInsets().getInsets(WindowInsets.Type.systemBars());
     if (isLandscape()) {
       int systemWindowInsetEnd =
           getView().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL
-              ? getView().getRootWindowInsets().getSystemWindowInsetLeft()
-              : -getView().getRootWindowInsets().getSystemWindowInsetRight();
+              ? insets.left
+              : -insets.right;
       return new Point(systemWindowInsetEnd, 0);
     } else {
-      return new Point(0, -getView().getRootWindowInsets().getSystemWindowInsetBottom());
+      return new Point(0, -insets.bottom);
     }
   }
 
@@ -663,13 +602,7 @@
         .translationY(offset.y)
         .setInterpolator(fastOutLinearInInterpolator)
         .alpha(0)
-        .withEndAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                endCallButton.setVisibility(View.INVISIBLE);
-              }
-            })
+        .withEndAction(() -> endCallButton.setVisibility(View.INVISIBLE))
         .setInterpolator(new FastOutLinearInInterpolator())
         .start();
 
@@ -909,6 +842,18 @@
   }
 
   @Override
+  public void setCallRecordingState(boolean isRecording) {
+  }
+
+  @Override
+  public void setCallRecordingDuration(long durationMs) {
+  }
+
+  @Override
+  public void requestCallRecordingPermissions(String[] permissions) {
+  }
+
+  @Override
   public void updateButtonStates() {
     LogUtil.i("VideoCallFragment.updateButtonState", null);
     speakerButtonController.updateButtonState();
@@ -916,9 +861,6 @@
   }
 
   @Override
-  public void updateInCallButtonUiColors(@ColorInt int color) {}
-
-  @Override
   public Fragment getInCallButtonUiFragment() {
     return this;
   }
@@ -1090,7 +1032,7 @@
 
   private boolean isLandscape() {
     // Choose orientation based on display orientation, not window orientation
-    int rotation = getActivity().getWindowManager().getDefaultDisplay().getRotation();
+    int rotation = getActivity().getDisplay().getRotation();
     return rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270;
   }
 
@@ -1169,13 +1111,7 @@
           wasRemoteVideoOff
               ? R.string.videocall_remote_video_on
               : R.string.videocall_remotely_resumed);
-      remoteVideoOff.postDelayed(
-          new Runnable() {
-            @Override
-            public void run() {
-              remoteVideoOff.setVisibility(View.GONE);
-            }
-          },
+      remoteVideoOff.postDelayed(() -> remoteVideoOff.setVisibility(View.GONE),
           VIDEO_OFF_VIEW_FADE_OUT_DELAY_IN_MILLIS);
     } else {
       remoteVideoOff.setText(
@@ -1190,7 +1126,6 @@
         BLUR_REMOTE_SCALE_FACTOR);
   }
 
-  @VisibleForTesting
   void updateBlurredImageView(
       TextureView textureView,
       ImageView blurredImageView,
@@ -1294,13 +1229,7 @@
     view.setVisibility(View.VISIBLE);
     view.animate()
         .alpha(endAlpha)
-        .withEndAction(
-            new Runnable() {
-              @Override
-              public void run() {
-                view.setVisibility(visibility);
-              }
-            })
+        .withEndAction(() -> view.setVisibility(visibility))
         .start();
   }
 
@@ -1334,7 +1263,7 @@
     if (!VideoUtils.hasCameraPermissionAndShownPrivacyToast(getContext())) {
       videoCallScreenDelegate.onCameraPermissionDialogShown();
       if (!VideoUtils.hasCameraPermission(getContext())) {
-        requestPermissions(new String[] {permission.CAMERA}, CAMERA_PERMISSION_REQUEST_CODE);
+        cameraPermissionLauncher.launch(permission.CAMERA);
       } else {
         PermissionsUtil.showCameraPermissionToast(getContext());
         videoCallScreenDelegate.onCameraPermissionGranted();
diff --git a/java/com/android/incallui/video/impl/VideoChargesAlertDialogFragment.java b/java/com/android/incallui/video/impl/VideoChargesAlertDialogFragment.java
index 7993452..01744a7 100644
--- a/java/com/android/incallui/video/impl/VideoChargesAlertDialogFragment.java
+++ b/java/com/android/incallui/video/impl/VideoChargesAlertDialogFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,14 +22,16 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.v4.app.DialogFragment;
-import android.support.v4.os.UserManagerCompat;
 import android.telecom.Call.Details;
 import android.view.View;
 import android.widget.CheckBox;
+
+import androidx.annotation.NonNull;
+import androidx.core.os.UserManagerCompat;
+import androidx.fragment.app.DialogFragment;
+import androidx.preference.PreferenceManager;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.call.CallList;
@@ -38,8 +41,8 @@
 public class VideoChargesAlertDialogFragment extends DialogFragment {
 
   /** Preference key for whether to show the alert dialog for video charges next time. */
-  @VisibleForTesting
-  static final String KEY_DO_NOT_SHOW_VIDEO_CHARGES_ALERT = "key_do_not_show_video_charges_alert";
+  private static final String KEY_DO_NOT_SHOW_VIDEO_CHARGES_ALERT =
+          "key_do_not_show_video_charges_alert";
 
   /** Key in the arguments bundle for call id. */
   private static final String ARG_CALL_ID = "call_id";
diff --git a/java/com/android/incallui/video/impl/res/drawable-hdpi/ic_switch_camera.png b/java/com/android/incallui/video/impl/res/drawable-hdpi/ic_switch_camera.png
deleted file mode 100644
index b5c6f0a..0000000
--- a/java/com/android/incallui/video/impl/res/drawable-hdpi/ic_switch_camera.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/video/impl/res/drawable-mdpi/ic_switch_camera.png b/java/com/android/incallui/video/impl/res/drawable-mdpi/ic_switch_camera.png
deleted file mode 100644
index f3427a0..0000000
--- a/java/com/android/incallui/video/impl/res/drawable-mdpi/ic_switch_camera.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/video/impl/res/drawable-xhdpi/ic_switch_camera.png b/java/com/android/incallui/video/impl/res/drawable-xhdpi/ic_switch_camera.png
deleted file mode 100644
index 4915471..0000000
--- a/java/com/android/incallui/video/impl/res/drawable-xhdpi/ic_switch_camera.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/video/impl/res/drawable-xxhdpi/ic_switch_camera.png b/java/com/android/incallui/video/impl/res/drawable-xxhdpi/ic_switch_camera.png
deleted file mode 100644
index 19a9344..0000000
--- a/java/com/android/incallui/video/impl/res/drawable-xxhdpi/ic_switch_camera.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/video/impl/res/drawable-xxxhdpi/ic_switch_camera.png b/java/com/android/incallui/video/impl/res/drawable-xxxhdpi/ic_switch_camera.png
deleted file mode 100644
index 529c0a4..0000000
--- a/java/com/android/incallui/video/impl/res/drawable-xxxhdpi/ic_switch_camera.png
+++ /dev/null
Binary files differ
diff --git a/java/com/android/incallui/video/impl/res/drawable/videocall_background_circle_white.xml b/java/com/android/incallui/video/impl/res/drawable/videocall_background_circle_white.xml
index ee514c7..4675f75 100644
--- a/java/com/android/incallui/video/impl/res/drawable/videocall_background_circle_white.xml
+++ b/java/com/android/incallui/video/impl/res/drawable/videocall_background_circle_white.xml
@@ -4,7 +4,7 @@
   <item>
     <shape
       android:shape="oval">
-      <solid android:color="@color/incall_button_white"/>
+      <solid android:color="@color/incall_button_background"/>
     </shape>
   </item>
 </ripple>
diff --git a/java/com/android/incallui/video/impl/res/layout-v21/switch_camera_button.xml b/java/com/android/incallui/video/impl/res/layout-v21/switch_camera_button.xml
deleted file mode 100644
index 6660283..0000000
--- a/java/com/android/incallui/video/impl/res/layout-v21/switch_camera_button.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/videocall_switch_video"
-  style="@style/Incall.Button.VideoCall"
-  android:contentDescription="@string/incall_content_description_swap_video"
-  android:scaleType="center"
-  android:src="@drawable/front_back_switch_button_animation"/>
diff --git a/java/com/android/incallui/video/impl/res/layout/frag_videocall.xml b/java/com/android/incallui/video/impl/res/layout/frag_videocall.xml
index 6349a28..3370203 100644
--- a/java/com/android/incallui/video/impl/res/layout/frag_videocall.xml
+++ b/java/com/android/incallui/video/impl/res/layout/frag_videocall.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 The Android Open Source Project
+<!--
+     Copyright (C) 2018 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,6 +16,7 @@
      limitations under the License.
 -->
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
@@ -44,12 +47,12 @@
     android:layout_centerInParent="true"
     android:accessibilityTraversalBefore="@+id/videocall_speaker_button"
     android:drawablePadding="8dp"
-    android:drawableTop="@drawable/quantum_ic_videocam_off_white_36"
-    android:drawableTint="?colorIcon"
+    android:drawableTop="@drawable/quantum_ic_videocam_off_vd_theme_24"
     android:padding="64dp"
     android:text="@string/videocall_remote_video_off"
     android:textAppearance="@style/Dialer.Incall.TextAppearance"
     android:visibility="gone"
+    app:drawableTint="?colorIcon"
     tools:visibility="visible"/>
 
   <View
@@ -95,30 +98,30 @@
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignBottom="@+id/videocall_video_preview"
-    android:layout_alignLeft="@+id/videocall_video_preview"
-    android:layout_alignRight="@+id/videocall_video_preview"
+    android:layout_alignStart="@+id/videocall_video_preview"
+    android:layout_alignEnd="@+id/videocall_video_preview"
     android:layout_alignTop="@+id/videocall_video_preview"
     android:scaleType="center"
     android:src="@drawable/quantum_ic_videocam_off_vd_theme_24"
-    android:tint="?colorIcon"
     android:tintMode="src_in"
     android:visibility="gone"
     android:importantForAccessibility="no"
-    tools:visibility="visible"/>
+    tools:visibility="visible"
+    app:tint="?colorIcon" />
 
   <ImageView
     android:id="@+id/videocall_video_preview_mute_overlay"
     android:layout_width="32dp"
     android:layout_height="32dp"
     android:layout_alignBottom="@+id/videocall_video_preview"
-    android:layout_alignRight="@+id/videocall_video_preview"
+    android:layout_alignEnd="@+id/videocall_video_preview"
     android:background="@drawable/videocall_background_circle_white"
     android:contentDescription="@string/incall_content_description_muted"
     android:scaleType="center"
     android:src="@drawable/quantum_ic_mic_off_vd_theme_24"
-    android:tint="@android:color/black"
     android:visibility="gone"
-    tools:visibility="visible"/>
+    tools:visibility="visible"
+    app:tint="@android:color/black" />
 
   <include
     layout="@layout/videocall_controls"
diff --git a/java/com/android/incallui/video/impl/res/layout/frag_videocall_land.xml b/java/com/android/incallui/video/impl/res/layout/frag_videocall_land.xml
index f744569..663f98c 100644
--- a/java/com/android/incallui/video/impl/res/layout/frag_videocall_land.xml
+++ b/java/com/android/incallui/video/impl/res/layout/frag_videocall_land.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 The Android Open Source Project
+<!--
+     Copyright (C) 2018 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,6 +16,7 @@
      limitations under the License.
 -->
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
@@ -43,7 +46,7 @@
     android:layout_centerInParent="true"
     android:accessibilityTraversalBefore="@+id/videocall_speaker_button"
     android:drawablePadding="8dp"
-    android:drawableTop="@drawable/quantum_ic_videocam_off_white_36"
+    android:drawableTop="@drawable/quantum_ic_videocam_off_vd_theme_24"
     android:padding="64dp"
     android:text="@string/videocall_remote_video_off"
     android:textAppearance="@style/Dialer.Incall.TextAppearance"
@@ -89,8 +92,8 @@
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignBottom="@+id/videocall_video_preview"
-    android:layout_alignLeft="@+id/videocall_video_preview"
-    android:layout_alignRight="@+id/videocall_video_preview"
+    android:layout_alignStart="@+id/videocall_video_preview"
+    android:layout_alignEnd="@+id/videocall_video_preview"
     android:layout_alignTop="@+id/videocall_video_preview"
     android:scaleType="center"
     android:src="@drawable/quantum_ic_videocam_off_vd_theme_24"
@@ -103,14 +106,14 @@
     android:layout_width="32dp"
     android:layout_height="32dp"
     android:layout_alignBottom="@+id/videocall_video_preview"
-    android:layout_alignRight="@+id/videocall_video_preview"
+    android:layout_alignEnd="@+id/videocall_video_preview"
     android:background="@drawable/videocall_background_circle_white"
     android:contentDescription="@string/incall_content_description_muted"
     android:scaleType="center"
     android:src="@drawable/quantum_ic_mic_off_vd_theme_24"
-    android:tint="@android:color/black"
     android:visibility="gone"
-    tools:visibility="visible"/>
+    tools:visibility="visible"
+    app:tint="@android:color/black" />
 
   <include
     layout="@layout/videocall_controls_land"
diff --git a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml
index 5191898..95ae340 100644
--- a/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml
+++ b/java/com/android/incallui/video/impl/res/layout/frag_videocall_surfaceview.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
   ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2023 The LineageOS Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -15,6 +16,7 @@
   ~ limitations under the License
   -->
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
@@ -35,7 +37,7 @@
     android:layout_centerInParent="true"
     android:accessibilityTraversalBefore="@+id/videocall_speaker_button"
     android:drawablePadding="8dp"
-    android:drawableTop="@drawable/quantum_ic_videocam_off_white_36"
+    android:drawableTop="@drawable/quantum_ic_videocam_off_vd_theme_24"
     android:drawableTint="?colorIcon"
     android:padding="64dp"
     android:text="@string/videocall_remote_video_off"
@@ -66,11 +68,11 @@
       android:layout_gravity="center"
       android:scaleType="center"
       android:src="@drawable/quantum_ic_videocam_off_vd_theme_24"
-      android:tint="?colorIcon"
       android:tintMode="src_in"
       android:visibility="gone"
       android:importantForAccessibility="no"
-      tools:visibility="visible"/>
+      tools:visibility="visible"
+      app:tint="?colorIcon" />
   </FrameLayout>
 
   <ImageView
@@ -85,9 +87,9 @@
     android:contentDescription="@string/incall_content_description_muted"
     android:scaleType="center"
     android:src="@drawable/quantum_ic_mic_off_vd_theme_24"
-    android:tint="@android:color/black"
     android:visibility="gone"
-    tools:visibility="visible"/>
+    tools:visibility="visible"
+    app:tint="@android:color/black" />
 
   <View
     android:id="@+id/videocall_green_screen_background"
diff --git a/java/com/android/incallui/video/impl/res/layout/switch_camera_button.xml b/java/com/android/incallui/video/impl/res/layout/switch_camera_button.xml
index f473dd8..0764445 100644
--- a/java/com/android/incallui/video/impl/res/layout/switch_camera_button.xml
+++ b/java/com/android/incallui/video/impl/res/layout/switch_camera_button.xml
@@ -14,7 +14,8 @@
      limitations under the License.
 -->
 <ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/videocall_switch_video"
-  style="@style/Incall.Button.VideoCall"
-  android:contentDescription="@string/incall_content_description_swap_video"
-  android:src="@drawable/ic_switch_camera"/>
+    android:id="@+id/videocall_switch_video"
+    style="@style/Incall.Button.VideoCall"
+    android:contentDescription="@string/incall_content_description_swap_video"
+    android:scaleType="center"
+    android:src="@drawable/front_back_switch_button_animation"/>
diff --git a/java/com/android/incallui/video/protocol/AndroidManifest.xml b/java/com/android/incallui/video/protocol/AndroidManifest.xml
deleted file mode 100644
index 8548e99..0000000
--- a/java/com/android/incallui/video/protocol/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.incallui.video.protocol">
-  <uses-sdk
-      android:minSdkVersion="24"
-      android:targetSdkVersion="30"/>
-</manifest>
diff --git a/java/com/android/incallui/video/protocol/VideoCallScreen.java b/java/com/android/incallui/video/protocol/VideoCallScreen.java
index 582d4c6..68ec496 100644
--- a/java/com/android/incallui/video/protocol/VideoCallScreen.java
+++ b/java/com/android/incallui/video/protocol/VideoCallScreen.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +17,7 @@
 
 package com.android.incallui.video.protocol;
 
-import android.support.v4.app.Fragment;
+import androidx.fragment.app.Fragment;
 
 /** Interface for call video call module. */
 public interface VideoCallScreen {
diff --git a/java/com/android/incallui/video/protocol/VideoCallScreenDelegate.java b/java/com/android/incallui/video/protocol/VideoCallScreenDelegate.java
index 9dd5450..24f6627 100644
--- a/java/com/android/incallui/video/protocol/VideoCallScreenDelegate.java
+++ b/java/com/android/incallui/video/protocol/VideoCallScreenDelegate.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.content.Context;
 import android.view.SurfaceView;
+
 import com.android.incallui.videosurface.protocol.VideoSurfaceTexture;
 
 /** Callbacks from the module out to the container. */
diff --git a/java/com/android/incallui/videosurface/bindings/VideoSurfaceBindings.java b/java/com/android/incallui/videosurface/bindings/VideoSurfaceBindings.java
index 1cb26bd..656cf07 100644
--- a/java/com/android/incallui/videosurface/bindings/VideoSurfaceBindings.java
+++ b/java/com/android/incallui/videosurface/bindings/VideoSurfaceBindings.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.incallui.videosurface.bindings;
 
 import android.view.TextureView;
+
 import com.android.incallui.videosurface.impl.VideoScale;
 import com.android.incallui.videosurface.impl.VideoSurfaceTextureImpl;
 import com.android.incallui.videosurface.protocol.VideoSurfaceTexture;
@@ -24,12 +26,12 @@
 /** Bindings for video surface module. */
 public class VideoSurfaceBindings {
 
-  public static VideoSurfaceTexture createLocalVideoSurfaceTexture(boolean isPixel2017) {
-    return new VideoSurfaceTextureImpl(isPixel2017, VideoSurfaceTexture.SURFACE_TYPE_LOCAL);
+  public static VideoSurfaceTexture createLocalVideoSurfaceTexture() {
+    return new VideoSurfaceTextureImpl(VideoSurfaceTexture.SURFACE_TYPE_LOCAL);
   }
 
-  public static VideoSurfaceTexture createRemoteVideoSurfaceTexture(boolean isPixel2017) {
-    return new VideoSurfaceTextureImpl(isPixel2017, VideoSurfaceTexture.SURFACE_TYPE_REMOTE);
+  public static VideoSurfaceTexture createRemoteVideoSurfaceTexture() {
+    return new VideoSurfaceTextureImpl(VideoSurfaceTexture.SURFACE_TYPE_REMOTE);
   }
 
   public static void scaleVideoAndFillView(
diff --git a/java/com/android/incallui/videosurface/impl/VideoScale.java b/java/com/android/incallui/videosurface/impl/VideoScale.java
index 1444f59..8094cdc 100644
--- a/java/com/android/incallui/videosurface/impl/VideoScale.java
+++ b/java/com/android/incallui/videosurface/impl/VideoScale.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.graphics.Matrix;
 import android.view.TextureView;
+
 import com.android.dialer.common.LogUtil;
 
 /** Utilities to scale the preview and remote video. */
diff --git a/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java b/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java
index fa75724..61382c6 100644
--- a/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java
+++ b/java/com/android/incallui/videosurface/impl/VideoSurfaceTextureImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,14 +19,14 @@
 
 import android.graphics.Point;
 import android.graphics.SurfaceTexture;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
 import android.view.Surface;
 import android.view.TextureView;
 import android.view.View;
+
 import com.android.dialer.common.LogUtil;
 import com.android.incallui.videosurface.protocol.VideoSurfaceDelegate;
 import com.android.incallui.videosurface.protocol.VideoSurfaceTexture;
+
 import java.util.Locale;
 import java.util.Objects;
 
@@ -35,7 +36,6 @@
  */
 public class VideoSurfaceTextureImpl implements VideoSurfaceTexture {
   @SurfaceType private final int surfaceType;
-  private final boolean isPixel2017;
 
   private VideoSurfaceDelegate delegate;
   private TextureView textureView;
@@ -45,14 +45,13 @@
   private Point sourceVideoDimensions;
   private boolean isDoneWithSurface;
 
-  public VideoSurfaceTextureImpl(boolean isPixel2017, @SurfaceType int surfaceType) {
-    this.isPixel2017 = isPixel2017;
+  public VideoSurfaceTextureImpl(@SurfaceType int surfaceType) {
     this.surfaceType = surfaceType;
   }
 
   @Override
   public void setDelegate(VideoSurfaceDelegate delegate) {
-    LogUtil.i("VideoSurfaceTextureImpl.setDelegate", "delegate: " + delegate + " " + toString());
+    LogUtil.i("VideoSurfaceTextureImpl.setDelegate", "delegate: " + delegate + " " + this);
     this.delegate = delegate;
   }
 
@@ -70,16 +69,9 @@
   public void setSurfaceDimensions(Point surfaceDimensions) {
     LogUtil.i(
         "VideoSurfaceTextureImpl.setSurfaceDimensions",
-        "surfaceDimensions: " + surfaceDimensions + " " + toString());
+        "surfaceDimensions: " + surfaceDimensions + " " + this);
     this.surfaceDimensions = surfaceDimensions;
     if (surfaceDimensions != null && savedSurfaceTexture != null) {
-      // Only do this on O (not at least O) because we expect this issue to be fixed in OMR1
-      if (VERSION.SDK_INT == VERSION_CODES.O && isPixel2017) {
-        LogUtil.i(
-            "VideoSurfaceTextureImpl.setSurfaceDimensions",
-            "skip setting default buffer size on Pixel 2017 ODR");
-        return;
-      }
       savedSurfaceTexture.setDefaultBufferSize(surfaceDimensions.x, surfaceDimensions.y);
     }
   }
@@ -147,7 +139,7 @@
   private boolean createSurface(int width, int height) {
     LogUtil.i(
         "VideoSurfaceTextureImpl.createSurface",
-        "width: " + width + ", height: " + height + " " + toString());
+        "width: " + width + ", height: " + height + " " + this);
     savedSurfaceTexture.setDefaultBufferSize(width, height);
     if (savedSurface != null) {
       savedSurface.release();
@@ -160,7 +152,7 @@
     if (delegate != null) {
       delegate.onSurfaceCreated(this);
     } else {
-      LogUtil.e("VideoSurfaceTextureImpl.onSurfaceCreated", "delegate is null. " + toString());
+      LogUtil.e("VideoSurfaceTextureImpl.onSurfaceCreated", "delegate is null. " + this);
     }
   }
 
@@ -168,7 +160,7 @@
     if (delegate != null) {
       delegate.onSurfaceReleased(this);
     } else {
-      LogUtil.e("VideoSurfaceTextureImpl.onSurfaceReleased", "delegate is null. " + toString());
+      LogUtil.e("VideoSurfaceTextureImpl.onSurfaceReleased", "delegate is null. " + this);
     }
   }
 
@@ -193,7 +185,7 @@
           "newSurfaceTexture: "
               + newSurfaceTexture
               + " "
-              + VideoSurfaceTextureImpl.this.toString());
+              + VideoSurfaceTextureImpl.this);
 
       // Where there is no saved {@link SurfaceTexture} available, use the newly created one.
       // If a saved {@link SurfaceTexture} is available, we are re-creating after an
diff --git a/java/com/android/incallui/videosurface/protocol/VideoSurfaceTexture.java b/java/com/android/incallui/videosurface/protocol/VideoSurfaceTexture.java
index 411b45f..5841578 100644
--- a/java/com/android/incallui/videosurface/protocol/VideoSurfaceTexture.java
+++ b/java/com/android/incallui/videosurface/protocol/VideoSurfaceTexture.java
@@ -17,9 +17,11 @@
 package com.android.incallui.videosurface.protocol;
 
 import android.graphics.Point;
-import android.support.annotation.IntDef;
 import android.view.Surface;
 import android.view.TextureView;
+
+import androidx.annotation.IntDef;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
diff --git a/java/com/android/incallui/videotech/VideoTech.java b/java/com/android/incallui/videotech/VideoTech.java
index 9870302..187375b 100644
--- a/java/com/android/incallui/videotech/VideoTech.java
+++ b/java/com/android/incallui/videotech/VideoTech.java
@@ -17,10 +17,11 @@
 package com.android.incallui.videotech;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
-import com.android.dialer.logging.DialerImpression;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.incallui.video.protocol.VideoCallScreen;
 import com.android.incallui.video.protocol.VideoCallScreenDelegate;
 import com.android.incallui.videotech.utils.SessionModificationState;
@@ -86,8 +87,6 @@
    */
   void becomePrimary();
 
-  com.android.dialer.logging.VideoTech.Type getVideoTechType();
-
   /** Listener for video call events. */
   interface VideoTechListener {
 
@@ -102,7 +101,5 @@
     void onVideoUpgradeRequestReceived();
 
     void onUpgradedToVideo(boolean switchToSpeaker);
-
-    void onImpressionLoggingNeeded(DialerImpression.Type impressionType);
   }
 }
diff --git a/java/com/android/incallui/videotech/duo/DuoVideoTech.java b/java/com/android/incallui/videotech/duo/DuoVideoTech.java
deleted file mode 100644
index 47f0757..0000000
--- a/java/com/android/incallui/videotech/duo/DuoVideoTech.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.incallui.videotech.duo;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.telecom.Call;
-import android.telecom.PhoneAccountHandle;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.DefaultFutureCallback;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import com.android.dialer.duo.Duo;
-import com.android.dialer.duo.DuoListener;
-import com.android.dialer.logging.DialerImpression;
-import com.android.incallui.video.protocol.VideoCallScreen;
-import com.android.incallui.video.protocol.VideoCallScreenDelegate;
-import com.android.incallui.videotech.VideoTech;
-import com.android.incallui.videotech.utils.SessionModificationState;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.MoreExecutors;
-
-public class DuoVideoTech implements VideoTech, DuoListener {
-  private final Duo duo;
-  private final VideoTechListener listener;
-  private final Call call;
-  private final String callingNumber;
-  private int callState = Call.STATE_NEW;
-  private boolean isRemoteUpgradeAvailabilityQueried;
-
-  public DuoVideoTech(
-      @NonNull Duo duo,
-      @NonNull VideoTechListener listener,
-      @NonNull Call call,
-      @NonNull String callingNumber) {
-    this.duo = Assert.isNotNull(duo);
-    this.listener = Assert.isNotNull(listener);
-    this.call = Assert.isNotNull(call);
-    this.callingNumber = Assert.isNotNull(callingNumber);
-
-    duo.registerListener(this);
-  }
-
-  @Override
-  public boolean isAvailable(Context context, PhoneAccountHandle phoneAccountHandle) {
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("enable_lightbringer_video_upgrade", true)) {
-      LogUtil.v("DuoVideoTech.isAvailable", "upgrade disabled by flag");
-      return false;
-    }
-
-    if (callState != Call.STATE_ACTIVE) {
-      LogUtil.v("DuoVideoTech.isAvailable", "upgrade unavailable, call must be active");
-      return false;
-    }
-    Optional<Boolean> localResult = duo.supportsUpgrade(context, callingNumber, phoneAccountHandle);
-    if (localResult.isPresent()) {
-      LogUtil.v(
-          "DuoVideoTech.isAvailable", "upgrade supported in local cache: " + localResult.get());
-      return localResult.get();
-    }
-
-    if (!isRemoteUpgradeAvailabilityQueried) {
-      LogUtil.v("DuoVideoTech.isAvailable", "reachability unknown, starting remote query");
-      isRemoteUpgradeAvailabilityQueried = true;
-      Futures.addCallback(
-          duo.updateReachability(context, ImmutableList.of(callingNumber)),
-          new DefaultFutureCallback<>(),
-          MoreExecutors.directExecutor());
-    }
-
-    return false;
-  }
-
-  @Override
-  public boolean isTransmittingOrReceiving() {
-    return false;
-  }
-
-  @Override
-  public boolean isSelfManagedCamera() {
-    return false;
-  }
-
-  @Override
-  public boolean shouldUseSurfaceView() {
-    return false;
-  }
-
-  @Override
-  public boolean isPaused() {
-    return false;
-  }
-
-  @Override
-  public VideoCallScreenDelegate createVideoCallScreenDelegate(
-      Context context, VideoCallScreen videoCallScreen) {
-    throw Assert.createUnsupportedOperationFailException();
-  }
-
-  @Override
-  public void onCallStateChanged(
-      Context context, int newState, PhoneAccountHandle phoneAccountHandle) {
-    if (newState == Call.STATE_DISCONNECTING) {
-      duo.unregisterListener(this);
-    }
-
-    callState = newState;
-  }
-
-  @Override
-  public void onRemovedFromCallList() {
-    duo.unregisterListener(this);
-  }
-
-  @Override
-  public int getSessionModificationState() {
-    return SessionModificationState.NO_REQUEST;
-  }
-
-  @Override
-  public void upgradeToVideo(@NonNull Context context) {
-    listener.onImpressionLoggingNeeded(DialerImpression.Type.LIGHTBRINGER_UPGRADE_REQUESTED);
-    duo.requestUpgrade(context, call);
-  }
-
-  @Override
-  public void acceptVideoRequest(@NonNull Context context) {
-    throw Assert.createUnsupportedOperationFailException();
-  }
-
-  @Override
-  public void acceptVideoRequestAsAudio() {
-    throw Assert.createUnsupportedOperationFailException();
-  }
-
-  @Override
-  public void declineVideoRequest() {
-    throw Assert.createUnsupportedOperationFailException();
-  }
-
-  @Override
-  public boolean isTransmitting() {
-    return false;
-  }
-
-  @Override
-  public void stopTransmission() {
-    throw Assert.createUnsupportedOperationFailException();
-  }
-
-  @Override
-  public void resumeTransmission(@NonNull Context context) {
-    throw Assert.createUnsupportedOperationFailException();
-  }
-
-  @Override
-  public void pause() {}
-
-  @Override
-  public void unpause() {}
-
-  @Override
-  public void setCamera(@Nullable String cameraId) {
-    throw Assert.createUnsupportedOperationFailException();
-  }
-
-  @Override
-  public void becomePrimary() {
-    listener.onImpressionLoggingNeeded(
-        DialerImpression.Type.UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_LIGHTBRINGER);
-  }
-
-  @Override
-  public void setDeviceOrientation(int rotation) {}
-
-  @Override
-  public void onDuoStateChanged() {
-    listener.onVideoTechStateChanged();
-  }
-
-  @Override
-  public com.android.dialer.logging.VideoTech.Type getVideoTechType() {
-    return com.android.dialer.logging.VideoTech.Type.LIGHTBRINGER_VIDEO_TECH;
-  }
-}
diff --git a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
index 9f6211d..a32160d 100644
--- a/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
+++ b/java/com/android/incallui/videotech/empty/EmptyVideoTech.java
@@ -17,9 +17,11 @@
 package com.android.incallui.videotech.empty;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.incallui.video.protocol.VideoCallScreen;
 import com.android.incallui.video.protocol.VideoCallScreenDelegate;
@@ -109,9 +111,4 @@
 
   @Override
   public void becomePrimary() {}
-
-  @Override
-  public com.android.dialer.logging.VideoTech.Type getVideoTechType() {
-    return com.android.dialer.logging.VideoTech.Type.NONE;
-  }
 }
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java b/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java
index 3e6f441..deff1d8 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,23 +19,22 @@
 
 import android.content.Context;
 import android.os.Handler;
+import android.os.Looper;
 import android.telecom.Call;
 import android.telecom.Connection;
 import android.telecom.Connection.VideoProvider;
 import android.telecom.InCallService.VideoCall;
 import android.telecom.VideoProfile;
 import android.telecom.VideoProfile.CameraCapabilities;
+
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.LoggingBindings;
 import com.android.incallui.videotech.VideoTech.VideoTechListener;
 import com.android.incallui.videotech.utils.SessionModificationState;
 
 /** Receives IMS video call state updates. */
 public class ImsVideoCallCallback extends VideoCall.Callback {
   private static final int CLEAR_FAILED_REQUEST_TIMEOUT_MILLIS = 4000;
-  private final Handler handler = new Handler();
-  private final LoggingBindings logger;
+  private final Handler handler = new Handler(Looper.getMainLooper());
   private final Call call;
   private final ImsVideoTech videoTech;
   private final VideoTechListener listener;
@@ -42,12 +42,10 @@
   private int requestedVideoState = VideoProfile.STATE_AUDIO_ONLY;
 
   ImsVideoCallCallback(
-      final LoggingBindings logger,
       final Call call,
       ImsVideoTech videoTech,
       VideoTechListener listener,
       Context context) {
-    this.logger = logger;
     this.call = call;
     this.videoTech = videoTech;
     this.listener = listener;
@@ -74,7 +72,6 @@
         videoTech.setSessionModificationState(
             SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST);
         listener.onVideoUpgradeRequestReceived();
-        logger.logImpression(DialerImpression.Type.IMS_VIDEO_REQUEST_RECEIVED);
       } else {
         LogUtil.i(
             "ImsVideoTech.onSessionModifyRequestReceived", "call updated to %d", newVideoState);
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoTech.java b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
index 1d4fe76..f71f2fd 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoTech.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,17 +18,16 @@
 package com.android.incallui.videotech.ims;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.Call;
 import android.telecom.Call.Details;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.VideoProfile;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.LoggingBindings;
 import com.android.dialer.util.CallUtil;
 import com.android.incallui.video.protocol.VideoCallScreen;
 import com.android.incallui.video.protocol.VideoCallScreenDelegate;
@@ -36,10 +36,9 @@
 
 /** ViLTE implementation */
 public class ImsVideoTech implements VideoTech {
-  private final LoggingBindings logger;
   private final Call call;
   private final VideoTechListener listener;
-  @VisibleForTesting ImsVideoCallCallback callback;
+  private ImsVideoCallCallback callback;
   private @SessionModificationState int sessionModificationState =
       SessionModificationState.NO_REQUEST;
   private int previousVideoState = VideoProfile.STATE_AUDIO_ONLY;
@@ -52,8 +51,7 @@
   // unpause() will send the incorrect VideoProfile.
   private boolean transmissionStopped = false;
 
-  public ImsVideoTech(LoggingBindings logger, VideoTechListener listener, Call call) {
-    this.logger = logger;
+  public ImsVideoTech(VideoTechListener listener, Call call) {
     this.listener = listener;
     this.call = call;
   }
@@ -129,7 +127,7 @@
     }
 
     if (callback == null) {
-      callback = new ImsVideoCallCallback(logger, call, this, listener, context);
+      callback = new ImsVideoCallCallback(call, this, listener, context);
       call.getVideoCall().registerCallback(callback);
     }
 
@@ -182,7 +180,6 @@
         .sendSessionModifyRequest(
             new VideoProfile(unpausedVideoState | VideoProfile.STATE_BIDIRECTIONAL));
     setSessionModificationState(SessionModificationState.WAITING_FOR_UPGRADE_TO_VIDEO_RESPONSE);
-    logger.logImpression(DialerImpression.Type.IMS_VIDEO_UPGRADE_REQUESTED);
   }
 
   @Override
@@ -193,14 +190,12 @@
     call.getVideoCall().sendSessionModifyResponse(new VideoProfile(requestedVideoState));
     // Telecom manages audio route for us
     listener.onUpgradedToVideo(false /* switchToSpeaker */);
-    logger.logImpression(DialerImpression.Type.IMS_VIDEO_REQUEST_ACCEPTED);
   }
 
   @Override
   public void acceptVideoRequestAsAudio() {
     LogUtil.enterBlock("ImsVideoTech.acceptVideoRequestAsAudio");
     call.getVideoCall().sendSessionModifyResponse(new VideoProfile(VideoProfile.STATE_AUDIO_ONLY));
-    logger.logImpression(DialerImpression.Type.IMS_VIDEO_REQUEST_ACCEPTED_AS_AUDIO);
   }
 
   @Override
@@ -209,7 +204,6 @@
     call.getVideoCall()
         .sendSessionModifyResponse(new VideoProfile(call.getDetails().getVideoState()));
     setSessionModificationState(SessionModificationState.NO_REQUEST);
-    logger.logImpression(DialerImpression.Type.IMS_VIDEO_REQUEST_DECLINED);
   }
 
   @Override
@@ -245,7 +239,7 @@
 
   @Override
   public void pause() {
-    if (call.getState() != Call.STATE_ACTIVE) {
+    if (call.getDetails().getState() != Call.STATE_ACTIVE) {
       LogUtil.i("ImsVideoTech.pause", "not pausing because call is not active");
       return;
     }
@@ -279,7 +273,7 @@
 
   @Override
   public void unpause() {
-    if (call.getState() != Call.STATE_ACTIVE) {
+    if (call.getDetails().getState() != Call.STATE_ACTIVE) {
       LogUtil.i("ImsVideoTech.unpause", "not unpausing because call is not active");
       return;
     }
@@ -329,13 +323,6 @@
 
   @Override
   public void becomePrimary() {
-    listener.onImpressionLoggingNeeded(
-        DialerImpression.Type.UPGRADE_TO_VIDEO_CALL_BUTTON_SHOWN_FOR_IMS);
-  }
-
-  @Override
-  public com.android.dialer.logging.VideoTech.Type getVideoTechType() {
-    return com.android.dialer.logging.VideoTech.Type.IMS_VIDEO_TECH;
   }
 
   private boolean canPause() {
diff --git a/java/com/android/incallui/videotech/utils/SessionModificationState.java b/java/com/android/incallui/videotech/utils/SessionModificationState.java
index 9272f8f..bacc9f3 100644
--- a/java/com/android/incallui/videotech/utils/SessionModificationState.java
+++ b/java/com/android/incallui/videotech/utils/SessionModificationState.java
@@ -16,7 +16,8 @@
 
 package com.android.incallui.videotech.utils;
 
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
diff --git a/java/com/android/incallui/videotech/utils/VideoUtils.java b/java/com/android/incallui/videotech/utils/VideoUtils.java
index 9dfc687..d55505b 100644
--- a/java/com/android/incallui/videotech/utils/VideoUtils.java
+++ b/java/com/android/incallui/videotech/utils/VideoUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,8 +19,10 @@
 
 import android.content.Context;
 import android.content.pm.PackageManager;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
+
+import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
+
 import com.android.dialer.util.PermissionsUtil;
 
 public class VideoUtils {
diff --git a/java/com/android/voicemail/AndroidManifest.xml b/java/com/android/voicemail/AndroidManifest.xml
deleted file mode 100644
index d5c9a2d..0000000
--- a/java/com/android/voicemail/AndroidManifest.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.voicemail">
-
-  <uses-sdk
-    android:minSdkVersion="24"
-    android:targetSdkVersion="30"/>
-
-  <!-- Applications using this module should merge these permissions using android_manifest_merge -->
-
-  <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL"/>
-  <uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL"/>
-  <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL"/>
-  <uses-permission android:name="android.permission.WAKE_LOCK"/>
-  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
-  <uses-permission android:name="android.permission.SEND_SMS"/>
-  <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
-  <uses-permission android:name="android.permission.INTERNET"/>
-  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
-
-  <application>
-    <receiver
-        android:name=".VoicemailSecretCodeReceiver"
-        android:exported="true">
-      <intent-filter>
-        <action android:name="android.provider.Telephony.SECRET_CODE" />
-        <data android:scheme="android_secret_code" />
-      </intent-filter>
-    </receiver>
-
-    <receiver android:name="com.android.voicemail.VoicemailPowerCycleReceiver"
-        android:exported="false">
-      <intent-filter>
-        <action android:name="android.intent.action.BOOT_COMPLETED" />
-        <action android:name="android.intent.action.ACTION_SHUTDOWN" />
-      </intent-filter>
-    </receiver>
-  </application>
-</manifest>
diff --git a/java/com/android/voicemail/PinChanger.java b/java/com/android/voicemail/PinChanger.java
index f58c96b..a6b192f 100644
--- a/java/com/android/voicemail/PinChanger.java
+++ b/java/com/android/voicemail/PinChanger.java
@@ -16,8 +16,9 @@
 
 package com.android.voicemail;
 
-import android.support.annotation.IntDef;
-import android.support.annotation.WorkerThread;
+import androidx.annotation.IntDef;
+import androidx.annotation.WorkerThread;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
diff --git a/java/com/android/voicemail/VisualVoicemailTypeExtensions.java b/java/com/android/voicemail/VisualVoicemailTypeExtensions.java
index 0564810..051f393 100644
--- a/java/com/android/voicemail/VisualVoicemailTypeExtensions.java
+++ b/java/com/android/voicemail/VisualVoicemailTypeExtensions.java
@@ -26,4 +26,6 @@
 
   // Protocol used by Verizon wireless
   public static final String VVM_TYPE_VVM3 = "vvm_type_vvm3";
+  // Protocol used by AT&T
+  public static final String VVM_TYPE_ADVVM = "vvm_type_advvm";
 }
diff --git a/java/com/android/voicemail/VoicemailClient.java b/java/com/android/voicemail/VoicemailClient.java
index 5b382f1..d69c3c1 100644
--- a/java/com/android/voicemail/VoicemailClient.java
+++ b/java/com/android/voicemail/VoicemailClient.java
@@ -19,11 +19,13 @@
 import android.content.Context;
 import android.os.PersistableBundle;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import java.util.List;
 
 /** Public interface for the voicemail module */
@@ -118,28 +120,6 @@
       Context context, PhoneAccountHandle phoneAccountHandle, boolean value);
 
   /**
-   * @return if the voicemail transcription feature is available on the current device. This depends
-   *     on whether the server side flag is turned on for the feature, visual voicemail is activated
-   *     and enabled and if the OS meets the requirement for this feature.
-   */
-  boolean isVoicemailTranscriptionAvailable(Context context, PhoneAccountHandle account);
-
-  /** @return if the voicemail transcription setting has been enabled by the user. */
-  boolean isVoicemailTranscriptionEnabled(Context context, PhoneAccountHandle account);
-
-  /** @return if the voicemail donation feature is available. */
-  boolean isVoicemailDonationAvailable(Context context, PhoneAccountHandle account);
-
-  /** @return if the voicemail donation setting has been enabled by the user. */
-  boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account);
-
-  void setVoicemailTranscriptionEnabled(
-      Context context, PhoneAccountHandle phoneAccountHandle, boolean enabled);
-
-  void setVoicemailDonationEnabled(
-      Context context, PhoneAccountHandle phoneAccountHandle, boolean enabled);
-
-  /**
    * Whether the client is activated and handling visual voicemail for the {@code
    * phoneAccountHandle}. "Enable" is the intention to use VVM. For example VVM can be enabled but
    * prevented from working because the carrier blocked it, or a connection problem is blocking the
diff --git a/java/com/android/voicemail/VoicemailComponent.java b/java/com/android/voicemail/VoicemailComponent.java
index 0e09627..e2963e8 100644
--- a/java/com/android/voicemail/VoicemailComponent.java
+++ b/java/com/android/voicemail/VoicemailComponent.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,8 +18,10 @@
 package com.android.voicemail;
 
 import android.content.Context;
+
 import com.android.dialer.inject.HasRootComponent;
 import com.android.dialer.inject.IncludeInDialerRoot;
+
 import dagger.Subcomponent;
 
 /** Subcomponent that can be used to access the voicemail implementation. */
diff --git a/java/com/android/voicemail/VoicemailPermissionHelper.java b/java/com/android/voicemail/VoicemailPermissionHelper.java
index 1a09d45..b8b0d90 100644
--- a/java/com/android/voicemail/VoicemailPermissionHelper.java
+++ b/java/com/android/voicemail/VoicemailPermissionHelper.java
@@ -19,7 +19,9 @@
 import android.Manifest.permission;
 import android.content.Context;
 import android.content.pm.PackageManager;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -35,6 +37,7 @@
     permission.WRITE_VOICEMAIL,
     permission.READ_VOICEMAIL,
     permission.READ_PHONE_STATE,
+    permission.RECEIVE_SMS,
     permission.SEND_SMS
   };
 
diff --git a/java/com/android/voicemail/VoicemailPowerCycleReceiver.java b/java/com/android/voicemail/VoicemailPowerCycleReceiver.java
index e9362b4..ed0905b 100644
--- a/java/com/android/voicemail/VoicemailPowerCycleReceiver.java
+++ b/java/com/android/voicemail/VoicemailPowerCycleReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+
 import com.android.dialer.common.Assert;
 
 /** Receives {@link Intent#ACTION_BOOT_COMPLETED} and {@link Intent#ACTION_SHUTDOWN} */
diff --git a/java/com/android/voicemail/VoicemailSecretCodeReceiver.java b/java/com/android/voicemail/VoicemailSecretCodeReceiver.java
index 6d14241..3bbf5c6 100644
--- a/java/com/android/voicemail/VoicemailSecretCodeReceiver.java
+++ b/java/com/android/voicemail/VoicemailSecretCodeReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,14 +17,17 @@
 
 package com.android.voicemail;
 
+import android.annotation.SuppressLint;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+
 import com.android.dialer.common.LogUtil;
 
 /** Receives android.provider.Telephony.SECRET_CODE */
 public class VoicemailSecretCodeReceiver extends BroadcastReceiver {
 
+  @SuppressLint("UnsafeProtectedBroadcastReceiver")
   @Override
   public void onReceive(Context context, Intent intent) {
     String host = intent.getData().getHost();
diff --git a/java/com/android/voicemail/impl/ActivationTask.java b/java/com/android/voicemail/impl/ActivationTask.java
index d8ec4e2..5476111 100644
--- a/java/com/android/voicemail/impl/ActivationTask.java
+++ b/java/com/android/voicemail/impl/ActivationTask.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,19 +17,18 @@
 
 package com.android.voicemail.impl;
 
-import android.annotation.TargetApi;
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.provider.Settings;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.ServiceState;
 import android.telephony.TelephonyManager;
-import com.android.dialer.logging.DialerImpression;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.impl.protocol.VisualVoicemailProtocol;
@@ -39,7 +39,7 @@
 import com.android.voicemail.impl.sms.StatusSmsFetcher;
 import com.android.voicemail.impl.sync.SyncTask;
 import com.android.voicemail.impl.sync.VvmAccountManager;
-import com.android.voicemail.impl.utils.LoggerUtils;
+
 import java.io.IOException;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
@@ -52,7 +52,6 @@
  * boots, the SIM is inserted, signal returned when VVM is not activated yet, and when the carrier
  * spontaneously sent a STATUS SMS.
  */
-@TargetApi(VERSION_CODES.O)
 @UsedByReflection(value = "Tasks.java")
 public class ActivationTask extends BaseTask {
 
@@ -61,12 +60,10 @@
   private static final int RETRY_TIMES = 4;
   private static final int RETRY_INTERVAL_MILLIS = 5_000;
 
-  @VisibleForTesting static final String EXTRA_MESSAGE_DATA_BUNDLE = "extra_message_data_bundle";
+  private static final String EXTRA_MESSAGE_DATA_BUNDLE = "extra_message_data_bundle";
 
   private final RetryPolicy retryPolicy;
 
-  @Nullable private OmtpVvmCarrierConfigHelper configForTest;
-
   private Bundle messageData;
 
   public ActivationTask() {
@@ -108,13 +105,11 @@
   @Override
   public void onCreate(Context context, Bundle extras) {
     super.onCreate(context, extras);
-    messageData = extras.getParcelable(EXTRA_MESSAGE_DATA_BUNDLE);
+    messageData = extras.getParcelable(EXTRA_MESSAGE_DATA_BUNDLE, Bundle.class);
   }
 
   @Override
   public Intent createRestartIntent() {
-    LoggerUtils.logImpressionOnMainThread(
-        getContext(), DialerImpression.Type.VVM_AUTO_RETRY_ACTIVATION);
     Intent intent = super.createRestartIntent();
     // mMessageData is discarded, request a fresh STATUS SMS for retries.
     return intent;
@@ -124,8 +119,6 @@
   @WorkerThread
   public void onExecuteInBackgroundThread() {
     Assert.isNotMainThread();
-    LoggerUtils.logImpressionOnMainThread(
-        getContext(), DialerImpression.Type.VVM_ACTIVATION_STARTED);
     PhoneAccountHandle phoneAccountHandle = getPhoneAccountHandle();
     if (phoneAccountHandle == null) {
       // This should never happen
@@ -133,14 +126,8 @@
       return;
     }
 
-    PreOMigrationHandler.migrate(getContext(), phoneAccountHandle);
-
-    OmtpVvmCarrierConfigHelper helper;
-    if (configForTest != null) {
-      helper = configForTest;
-    } else {
-      helper = new OmtpVvmCarrierConfigHelper(getContext(), phoneAccountHandle);
-    }
+    OmtpVvmCarrierConfigHelper helper = new OmtpVvmCarrierConfigHelper(getContext(),
+            phoneAccountHandle);
     if (!helper.isValid()) {
       VvmLog.i(TAG, "VVM not supported on phoneAccountHandle " + phoneAccountHandle);
       VvmAccountManager.removeAccount(getContext(), phoneAccountHandle);
@@ -251,8 +238,6 @@
         helper.handleEvent(status, OmtpEvents.CONFIG_SERVICE_NOT_AVAILABLE);
       }
     }
-    LoggerUtils.logImpressionOnMainThread(
-        getContext(), DialerImpression.Type.VVM_ACTIVATION_COMPLETED);
   }
 
   private static void updateSource(
@@ -290,6 +275,7 @@
     context.sendBroadcast(intent);
   }
 
+  @SuppressLint("MissingPermission")
   private static boolean hasSignal(Context context, PhoneAccountHandle phoneAccountHandle) {
     TelephonyManager telephonyManager =
         context
@@ -297,9 +283,4 @@
             .createForPhoneAccountHandle(phoneAccountHandle);
     return telephonyManager.getServiceState().getState() == ServiceState.STATE_IN_SERVICE;
   }
-
-  @VisibleForTesting
-  void setConfigForTest(OmtpVvmCarrierConfigHelper config) {
-    configForTest = config;
-  }
 }
diff --git a/java/com/android/voicemail/impl/AndroidManifest.xml b/java/com/android/voicemail/impl/AndroidManifest.xml
deleted file mode 100644
index 3a2bfcb..0000000
--- a/java/com/android/voicemail/impl/AndroidManifest.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.voicemail.impl">
-
-  <application
-    android:supportsRtl="true">
-
-    <receiver
-      android:name="com.android.voicemail.impl.sms.OmtpMessageReceiver"
-      android:exported="false"
-      android:directBootAware="true">
-      <intent-filter>
-        <action android:name="com.android.vociemailomtp.sms.sms_received"/>
-      </intent-filter>
-    </receiver>
-
-    <receiver android:name="com.android.voicemail.impl.VoicemailClientReceiver"
-      android:exported="false">
-      <intent-filter>
-        <action android:name="com.android.voicemail.VoicemailClient.ACTION_UPLOAD"/>
-      </intent-filter>
-    </receiver>
-
-    <receiver
-      android:name="com.android.voicemail.impl.fetch.FetchVoicemailReceiver"
-      android:exported="true"
-      android:permission="com.android.voicemail.permission.READ_VOICEMAIL">
-      <intent-filter>
-        <action android:name="android.intent.action.FETCH_VOICEMAIL"/>
-        <data
-          android:scheme="content"
-          android:host="com.android.voicemail"
-          android:mimeType="vnd.android.cursor.item/voicemail"/>
-      </intent-filter>
-    </receiver>
-    <receiver
-      android:name="com.android.voicemail.impl.sync.OmtpVvmSyncReceiver"
-      android:exported="true"
-      android:permission="com.android.voicemail.permission.READ_VOICEMAIL">
-      <intent-filter>
-        <action android:name="android.provider.action.SYNC_VOICEMAIL"/>
-      </intent-filter>
-    </receiver>
-    <receiver
-      android:name="com.android.voicemail.impl.sync.VoicemailProviderChangeReceiver"
-      android:exported="true">
-      <intent-filter>
-        <action android:name="android.intent.action.PROVIDER_CHANGED"/>
-        <data
-          android:scheme="content"
-          android:host="com.android.voicemail"
-          android:mimeType="vnd.android.cursor.dir/voicemails"/>
-      </intent-filter>
-    </receiver>
-
-    <receiver
-      android:name="com.android.voicemail.impl.scheduling.TaskReceiver"
-      android:exported="false"/>
-
-    <service
-        android:name="com.android.voicemail.impl.scheduling.TaskSchedulerJobService"
-        android:permission="android.permission.BIND_JOB_SERVICE"
-        android:exported="false"/>
-
-    <service
-        android:name="com.android.voicemail.impl.StatusCheckJobService"
-        android:permission="android.permission.BIND_JOB_SERVICE"
-        android:exported="false"/>
-
-    <service
-        android:name="com.android.voicemail.impl.DeviceProvisionedJobService"
-        android:permission="android.permission.BIND_JOB_SERVICE"
-        android:exported="false"/>
-
-    <service
-        android:name="com.android.voicemail.impl.transcribe.TranscriptionService"
-        android:permission="android.permission.BIND_JOB_SERVICE"
-        android:exported="false"/>
-
-    <service
-        android:name="com.android.voicemail.impl.transcribe.TranscriptionBackfillService"
-        android:permission="android.permission.BIND_JOB_SERVICE"
-        android:exported="false"/>
-
-    <service
-        android:name="com.android.voicemail.impl.transcribe.TranscriptionRatingService"
-        android:permission="android.permission.BIND_JOB_SERVICE"
-        android:exported="false"/>
-
-    <service
-        android:name="com.android.voicemail.impl.OmtpService"
-        android:permission="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"
-        android:exported="true"
-        android:directBootAware="true">
-      <intent-filter>
-        <action android:name="android.telephony.VisualVoicemailService"/>
-      </intent-filter>
-    </service>
-
-    <activity
-      android:name="com.android.voicemail.impl.settings.VoicemailChangePinActivity"
-      android:exported="false"
-      android:windowSoftInputMode="stateVisible|adjustResize">
-    </activity>
-
-    <receiver android:name="com.android.voicemail.impl.PackageReplacedReceiver"
-        android:exported="false">
-      <intent-filter>
-        <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
-      </intent-filter>
-    </receiver>
-
-    <receiver android:name="com.android.voicemail.impl.CarrierVvmPackageInstalledReceiver"
-        android:permission="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"
-        android:exported="true">
-      <intent-filter>
-        <!-- system dialer only broadcast -->
-        <action
-            android:name="com.android.internal.telephony.CARRIER_VVM_PACKAGE_INSTALLED" />
-      </intent-filter>
-    </receiver>
-
-    <receiver android:name="com.android.voicemail.impl.transcribe.GetTranscriptReceiver"
-        android:exported="false">
-      <intent-filter>
-        <action
-            android:name="com.android.voicemail.impl.transcribe.GetTranscriptReceiver.POLL_ALARM" />
-      </intent-filter>
-    </receiver>
-  </application>
-</manifest>
diff --git a/java/com/android/voicemail/impl/Assert.java b/java/com/android/voicemail/impl/Assert.java
index 0e9e4dc..6d87f17 100644
--- a/java/com/android/voicemail/impl/Assert.java
+++ b/java/com/android/voicemail/impl/Assert.java
@@ -21,8 +21,6 @@
 /** Assertions which will result in program termination. */
 public class Assert {
 
-  private static Boolean isMainThreadForTest;
-
   public static void isTrue(boolean condition) {
     if (!condition) {
       throw new AssertionError("Expected condition to be true");
@@ -30,28 +28,14 @@
   }
 
   public static void isMainThread() {
-    if (isMainThreadForTest != null) {
-      isTrue(isMainThreadForTest);
-      return;
-    }
     isTrue(Looper.getMainLooper().equals(Looper.myLooper()));
   }
 
   public static void isNotMainThread() {
-    if (isMainThreadForTest != null) {
-      isTrue(!isMainThreadForTest);
-      return;
-    }
     isTrue(!Looper.getMainLooper().equals(Looper.myLooper()));
   }
 
   public static void fail() {
     throw new AssertionError("Fail");
   }
-
-  /** Override the main thread status for tests. Set to null to revert to normal behavior */
-  @NeededForTesting
-  public static void setIsMainThreadForTesting(Boolean isMainThread) {
-    isMainThreadForTest = isMainThread;
-  }
 }
diff --git a/java/com/android/voicemail/impl/CarrierIdentifier.java b/java/com/android/voicemail/impl/CarrierIdentifier.java
index 7788b7d..81f8193 100644
--- a/java/com/android/voicemail/impl/CarrierIdentifier.java
+++ b/java/com/android/voicemail/impl/CarrierIdentifier.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,18 +17,18 @@
 
 package com.android.voicemail.impl;
 
-import android.annotation.TargetApi;
 import android.content.Context;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
+
+import androidx.annotation.Nullable;
+
 import com.google.auto.value.AutoValue;
+
 import java.util.Optional;
 
 /** Identifies a carrier. */
 @AutoValue
-@TargetApi(VERSION_CODES.O)
 @SuppressWarnings({"missingpermission"})
 public abstract class CarrierIdentifier {
 
diff --git a/java/com/android/voicemail/impl/CarrierIdentifierMatcher.java b/java/com/android/voicemail/impl/CarrierIdentifierMatcher.java
index 5953755..2f57b1e 100644
--- a/java/com/android/voicemail/impl/CarrierIdentifierMatcher.java
+++ b/java/com/android/voicemail/impl/CarrierIdentifierMatcher.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,7 +18,8 @@
 package com.android.voicemail.impl;
 
 import com.google.auto.value.AutoValue;
-import com.google.common.base.Optional;
+
+import java.util.Optional;
 
 /**
  * Matches a {@link CarrierIdentifier}. Full equality check on CarrierIdentifiers is often unfit
diff --git a/java/com/android/voicemail/impl/CarrierVvmPackageInstalledReceiver.java b/java/com/android/voicemail/impl/CarrierVvmPackageInstalledReceiver.java
index c9c09b3..bd3af3b 100644
--- a/java/com/android/voicemail/impl/CarrierVvmPackageInstalledReceiver.java
+++ b/java/com/android/voicemail/impl/CarrierVvmPackageInstalledReceiver.java
@@ -16,6 +16,7 @@
 
 package com.android.voicemail.impl;
 
+import android.annotation.SuppressLint;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -27,6 +28,7 @@
  */
 public class CarrierVvmPackageInstalledReceiver extends BroadcastReceiver {
 
+  @SuppressLint("UnsafeProtectedBroadcastReceiver")
   @Override
   public void onReceive(Context context, Intent intent) {
     String packageName = intent.getStringExtra(Intent.EXTRA_PACKAGE_NAME);
diff --git a/java/com/android/voicemail/impl/DefaultOmtpEventHandler.java b/java/com/android/voicemail/impl/DefaultOmtpEventHandler.java
index 13aaf05..d595467 100644
--- a/java/com/android/voicemail/impl/DefaultOmtpEventHandler.java
+++ b/java/com/android/voicemail/impl/DefaultOmtpEventHandler.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.content.Context;
 import android.provider.VoicemailContract;
 import android.provider.VoicemailContract.Status;
+
 import com.android.voicemail.impl.OmtpEvents.Type;
 
 public class DefaultOmtpEventHandler {
diff --git a/java/com/android/voicemail/impl/DeviceProvisionedJobService.java b/java/com/android/voicemail/impl/DeviceProvisionedJobService.java
index 20993d0..1540f5b 100644
--- a/java/com/android/voicemail/impl/DeviceProvisionedJobService.java
+++ b/java/com/android/voicemail/impl/DeviceProvisionedJobService.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +17,6 @@
 
 package com.android.voicemail.impl;
 
-import android.annotation.TargetApi;
 import android.app.job.JobInfo;
 import android.app.job.JobInfo.TriggerContentUri;
 import android.app.job.JobParameters;
@@ -26,21 +26,19 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Build.VERSION_CODES;
 import android.provider.Settings;
 import android.provider.Settings.Global;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccountHandle;
+
 import com.android.dialer.constants.ScheduledJobIds;
 
 /**
  * JobService triggered when the setup wizard is completed, and rerun all {@link ActivationTask}
  * scheduled during the setup.
  */
-@TargetApi(VERSION_CODES.O)
 public class DeviceProvisionedJobService extends JobService {
 
-  @VisibleForTesting static final String EXTRA_PHONE_ACCOUNT_HANDLE = "EXTRA_PHONE_ACCOUNT_HANDLE";
+  private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "EXTRA_PHONE_ACCOUNT_HANDLE";
 
   /** Queue the phone account to be reactivated after the setup wizard has completed. */
   public static void activateAfterProvisioned(
@@ -62,7 +60,7 @@
     VvmLog.i("DeviceProvisionedJobService.onStartJob", "device provisioned");
     for (JobWorkItem item = params.dequeueWork(); item != null; item = params.dequeueWork()) {
       PhoneAccountHandle phoneAccountHandle =
-          item.getIntent().getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE);
+          item.getIntent().getParcelableExtra(EXTRA_PHONE_ACCOUNT_HANDLE, PhoneAccountHandle.class);
       VvmLog.i(
           "DeviceProvisionedJobService.onStartJob",
           "restarting activation for " + phoneAccountHandle);
diff --git a/java/com/android/voicemail/impl/DialerVvmConfigManager.java b/java/com/android/voicemail/impl/DialerVvmConfigManager.java
index 99c95dd..2f6858f 100644
--- a/java/com/android/voicemail/impl/DialerVvmConfigManager.java
+++ b/java/com/android/voicemail/impl/DialerVvmConfigManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,21 +20,24 @@
 import android.content.Context;
 import android.net.Uri;
 import android.os.PersistableBundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.util.ArrayMap;
-import com.android.dialer.configprovider.ConfigProviderComponent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.dialer.R;
 import com.android.voicemail.impl.utils.XmlUtils;
 import com.google.common.collect.ComparisonChain;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.SortedSet;
 import java.util.TreeSet;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
 
 /** Load and caches dialer vvm config from res/xml/vvm_config.xml */
 public class DialerVvmConfigManager {
@@ -81,7 +85,7 @@
    *
    * @see #KEY_GID1
    */
-  @VisibleForTesting static final String KEY_MCCMNC = "mccmnc";
+  private static final String KEY_MCCMNC = "mccmnc";
 
   /**
    * Additional query parameter in {@link #KEY_MCCMNC} to filter by the Group ID level 1.
@@ -103,11 +107,6 @@
     configs = cachedConfigs;
   }
 
-  @VisibleForTesting
-  DialerVvmConfigManager(Context context, XmlPullParser parser) {
-    configs = loadConfigs(context, parser);
-  }
-
   @Nullable
   public PersistableBundle getConfig(CarrierIdentifier carrierIdentifier) {
     if (!configs.containsKey(carrierIdentifier.mccMnc())) {
@@ -132,10 +131,7 @@
         }
         PersistableBundle bundle = (PersistableBundle) object;
 
-        if (bundle.containsKey(KEY_FEATURE_FLAG_NAME)
-            && !ConfigProviderComponent.get(context)
-                .getConfigProvider()
-                .getBoolean(bundle.getString(KEY_FEATURE_FLAG_NAME), false)) {
+        if (bundle.containsKey(KEY_FEATURE_FLAG_NAME)) {
           continue;
         }
 
diff --git a/java/com/android/voicemail/impl/NeededForTesting.java b/java/com/android/voicemail/impl/NeededForTesting.java
deleted file mode 100644
index 70e7383..0000000
--- a/java/com/android/voicemail/impl/NeededForTesting.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.voicemail.impl;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.SOURCE)
-public @interface NeededForTesting {}
diff --git a/java/com/android/voicemail/impl/OmtpConstants.java b/java/com/android/voicemail/impl/OmtpConstants.java
index c04f5e2..593cc98 100644
--- a/java/com/android/voicemail/impl/OmtpConstants.java
+++ b/java/com/android/voicemail/impl/OmtpConstants.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -115,23 +116,14 @@
   public static final String PROVISIONING_STATUS = "st";
   /** See {@link OmtpConstants#RETURN_CODE_VALUES} */
   public static final String RETURN_CODE = "rc";
-  /** URL to send users to for activation VVM */
-  public static final String SUBSCRIPTION_URL = "rs";
   /** IMAP4/SMTP server IP address or fully qualified domain name */
   public static final String SERVER_ADDRESS = "srv";
-  /** Phone number to access voicemails through Telephony User Interface */
-  public static final String TUI_ACCESS_NUMBER = "tui";
 
   public static final String TUI_PASSWORD_LENGTH = "pw_len";
-  /** Number to send client origination SMS */
-  public static final String CLIENT_SMS_DESTINATION_NUMBER = "dn";
 
   public static final String IMAP_PORT = "ipt";
   public static final String IMAP_USER_NAME = "u";
   public static final String IMAP_PASSWORD = "pw";
-  public static final String SMTP_PORT = "spt";
-  public static final String SMTP_USER_NAME = "smtp_u";
-  public static final String SMTP_PASSWORD = "smtp_pw";
 
   /**
    * User provisioning status values.
@@ -241,7 +233,7 @@
     return String.format("%s.%s.%s", manufacturer, model, version);
   }
 
-  private static final String truncate(String string, int length) {
+  private static String truncate(String string, int length) {
     return string.substring(0, Math.min(length, string.length()));
   }
 
diff --git a/java/com/android/voicemail/impl/OmtpEvents.java b/java/com/android/voicemail/impl/OmtpEvents.java
index ddca80f..fc692aa 100644
--- a/java/com/android/voicemail/impl/OmtpEvents.java
+++ b/java/com/android/voicemail/impl/OmtpEvents.java
@@ -16,7 +16,8 @@
 
 package com.android.voicemail.impl;
 
-import android.support.annotation.IntDef;
+import androidx.annotation.IntDef;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
diff --git a/java/com/android/voicemail/impl/OmtpService.java b/java/com/android/voicemail/impl/OmtpService.java
index e10a275..bc3d7b8 100644
--- a/java/com/android/voicemail/impl/OmtpService.java
+++ b/java/com/android/voicemail/impl/OmtpService.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,27 +17,24 @@
 
 package com.android.voicemail.impl;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Build.VERSION_CODES;
 import android.os.UserManager;
-import android.preference.PreferenceManager;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
 import android.telephony.VisualVoicemailService;
 import android.telephony.VisualVoicemailSms;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.preference.PreferenceManager;
+
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
 import com.android.voicemail.impl.sms.LegacyModeSmsHandler;
 import com.android.voicemail.impl.sync.VvmAccountManager;
 
 /** Implements {@link VisualVoicemailService} to receive visual voicemail events */
-@TargetApi(VERSION_CODES.O)
 public class OmtpService extends VisualVoicemailService {
 
   private static final String TAG = "VvmOmtpService";
@@ -69,7 +67,6 @@
       return;
     }
 
-    Logger.get(this).logImpression(DialerImpression.Type.VVM_UNBUNDLED_EVENT_RECEIVED);
     ActivationTask.start(OmtpService.this, phoneAccountHandle, null);
     task.finish();
   }
@@ -96,8 +93,6 @@
     }
 
     // isUserUnlocked() is not checked. OmtpMessageReceiver will handle the locked case.
-
-    Logger.get(this).logImpression(DialerImpression.Type.VVM_UNBUNDLED_EVENT_RECEIVED);
     Intent intent = new Intent(ACTION_SMS_RECEIVED);
     intent.setPackage(getPackageName());
     intent.putExtra(EXTRA_VOICEMAIL_SMS, sms);
@@ -126,8 +121,6 @@
       task.finish();
       return;
     }
-
-    Logger.get(this).logImpression(DialerImpression.Type.VVM_UNBUNDLED_EVENT_RECEIVED);
     VvmAccountManager.removeAccount(this, phoneAccountHandle);
     task.finish();
   }
@@ -145,7 +138,6 @@
       task.finish();
       return;
     }
-    Logger.get(this).logImpression(DialerImpression.Type.VVM_UNBUNDLED_EVENT_RECEIVED);
   }
 
   @MainThread
diff --git a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
index e5263f4..1224789 100644
--- a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
+++ b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,29 +16,30 @@
  */
 package com.android.voicemail.impl;
 
-import android.annotation.TargetApi;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.PersistableBundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.CarrierConfigManager;
 import android.telephony.TelephonyManager;
 import android.telephony.VisualVoicemailSmsFilterSettings;
 import android.text.TextUtils;
 import android.util.ArraySet;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.voicemail.impl.configui.ConfigOverrideFragment;
 import com.android.voicemail.impl.protocol.VisualVoicemailProtocol;
 import com.android.voicemail.impl.protocol.VisualVoicemailProtocolFactory;
 import com.android.voicemail.impl.sms.StatusMessage;
 import com.android.voicemail.impl.sync.VvmAccountManager;
+
 import java.util.Collections;
 import java.util.Optional;
 import java.util.Set;
@@ -55,7 +57,6 @@
  *
  * <p>TODO(twyen): refactor this to an interface.
  */
-@TargetApi(VERSION_CODES.O)
 @SuppressWarnings({"missingpermission"})
 public class OmtpVvmCarrierConfigHelper {
 
@@ -90,8 +91,7 @@
 
   public static final String KEY_VVM_CLIENT_PREFIX_STRING = "vvm_client_prefix_string";
   private static final String KEY_IGNORE_TRANSCRIPTION_BOOL = "vvm_ignore_transcription";
-
-  @Nullable private static PersistableBundle overrideConfigForTest;
+  private static final String KEY_USE_DIRECT_TLS_CONNECTION_BOOL = "vvm_use_direct_tls_connection";
 
   private final Context context;
   private final PersistableBundle carrierConfig;
@@ -99,58 +99,38 @@
   private final VisualVoicemailProtocol protocol;
   private final PersistableBundle telephonyConfig;
 
-  @Nullable private final PersistableBundle overrideConfig;
+  @Nullable
+  private final PersistableBundle overrideConfig;
 
-  private PhoneAccountHandle phoneAccountHandle;
+  private final PhoneAccountHandle phoneAccountHandle;
 
   public OmtpVvmCarrierConfigHelper(Context context, @Nullable PhoneAccountHandle handle) {
     this.context = context;
     phoneAccountHandle = handle;
-    if (overrideConfigForTest != null) {
-      overrideConfig = overrideConfigForTest;
-      carrierConfig = new PersistableBundle();
-      telephonyConfig = new PersistableBundle();
+    Optional<CarrierIdentifier> carrierIdentifier = CarrierIdentifier.forHandle(context, handle);
+    TelephonyManager telephonyManager =
+        context
+            .getSystemService(TelephonyManager.class)
+            .createForPhoneAccountHandle(phoneAccountHandle);
+    if (telephonyManager == null || !carrierIdentifier.isPresent()) {
+      VvmLog.e(TAG, "PhoneAccountHandle is invalid");
+      carrierConfig = null;
+      telephonyConfig = null;
+      overrideConfig = null;
+      vvmType = null;
+      protocol = null;
+      return;
+    }
+    if (ConfigOverrideFragment.isOverridden(context)) {
+      overrideConfig = ConfigOverrideFragment.getConfig(context);
+      VvmLog.w(TAG, "Config override is activated: " + overrideConfig);
     } else {
-      Optional<CarrierIdentifier> carrierIdentifier = CarrierIdentifier.forHandle(context, handle);
-      TelephonyManager telephonyManager =
-          context
-              .getSystemService(TelephonyManager.class)
-              .createForPhoneAccountHandle(phoneAccountHandle);
-      if (telephonyManager == null || !carrierIdentifier.isPresent()) {
-        VvmLog.e(TAG, "PhoneAccountHandle is invalid");
-        carrierConfig = null;
-        telephonyConfig = null;
-        overrideConfig = null;
-        vvmType = null;
-        protocol = null;
-        return;
-      }
-      if (ConfigOverrideFragment.isOverridden(context)) {
-        overrideConfig = ConfigOverrideFragment.getConfig(context);
-        VvmLog.w(TAG, "Config override is activated: " + overrideConfig);
-      } else {
-        overrideConfig = null;
-      }
-
-      carrierConfig = getCarrierConfig(telephonyManager);
-      telephonyConfig = new DialerVvmConfigManager(context).getConfig(carrierIdentifier.get());
+      overrideConfig = null;
     }
 
-    vvmType = getVvmType();
-    protocol = VisualVoicemailProtocolFactory.create(this.context.getResources(), vvmType);
-  }
+    carrierConfig = getCarrierConfig(telephonyManager);
+    telephonyConfig = new DialerVvmConfigManager(context).getConfig(carrierIdentifier.get());
 
-  @VisibleForTesting
-  OmtpVvmCarrierConfigHelper(
-      Context context,
-      PersistableBundle carrierConfig,
-      PersistableBundle telephonyConfig,
-      @Nullable PhoneAccountHandle phoneAccountHandle) {
-    this.context = context;
-    this.carrierConfig = carrierConfig;
-    this.telephonyConfig = telephonyConfig;
-    this.phoneAccountHandle = phoneAccountHandle;
-    overrideConfig = null;
     vvmType = getVvmType();
     protocol = VisualVoicemailProtocolFactory.create(this.context.getResources(), vvmType);
   }
@@ -181,10 +161,7 @@
    * known protocol.
    */
   public boolean isValid() {
-    if (protocol == null) {
-      return false;
-    }
-    return true;
+    return protocol != null;
   }
 
   @Nullable
@@ -278,6 +255,10 @@
   /** @return Port to start a SSL IMAP connection directly. */
   public int getSslPort() {
     Assert.checkArgument(isValid());
+    if (useDirectTlsConnection()) {
+      VvmLog.i(TAG, "vvm_use_direct_tls_connection = true");
+      return 993;
+    }
     return (int) getValue(KEY_VVM_SSL_PORT_NUMBER_INT, 0);
   }
 
@@ -498,11 +479,6 @@
     return defaultValue;
   }
 
-  @VisibleForTesting
-  public static void setOverrideConfigForTest(PersistableBundle config) {
-    overrideConfigForTest = config;
-  }
-
   /** Checks if the carrier VVM app is installed. */
   public boolean isCarrierAppInstalled() {
     Set<String> carrierPackages = getCarrierVvmPackageNamesWithoutValidation();
@@ -511,13 +487,13 @@
     }
     for (String packageName : carrierPackages) {
       try {
-        ApplicationInfo info = getContext().getPackageManager().getApplicationInfo(packageName, 0);
+        ApplicationInfo info = getContext().getPackageManager().getApplicationInfo(packageName,
+                PackageManager.ApplicationInfoFlags.of(0));
         if (!info.enabled) {
           continue;
         }
         return true;
-      } catch (NameNotFoundException e) {
-        continue;
+      } catch (NameNotFoundException ignored) {
       }
     }
     return false;
@@ -531,4 +507,12 @@
     Assert.checkArgument(isValid());
     return (boolean) getValue(KEY_IGNORE_TRANSCRIPTION_BOOL, false);
   }
+
+  /**
+   * Allow forcing direct TLS, default to false.
+   */
+  public boolean useDirectTlsConnection() {
+    Assert.checkArgument(isValid());
+    return (boolean) getValue(KEY_USE_DIRECT_TLS_CONNECTION_BOOL, false);
+  }
 }
diff --git a/java/com/android/voicemail/impl/PackageReplacedReceiver.java b/java/com/android/voicemail/impl/PackageReplacedReceiver.java
index c60fbe7..148257f 100644
--- a/java/com/android/voicemail/impl/PackageReplacedReceiver.java
+++ b/java/com/android/voicemail/impl/PackageReplacedReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,17 +17,20 @@
 
 package com.android.voicemail.impl;
 
+import android.annotation.SuppressLint;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.database.Cursor;
 import android.net.Uri;
-import android.preference.PreferenceManager;
 import android.provider.CallLog.Calls;
 import android.provider.VoicemailContract.Voicemails;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
+
+import androidx.preference.PreferenceManager;
+
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
@@ -38,6 +42,7 @@
  */
 public class PackageReplacedReceiver extends BroadcastReceiver {
 
+  @SuppressLint({"MissingPermission", "UnsafeProtectedBroadcastReceiver"})
   @Override
   public void onReceive(Context context, Intent intent) {
     VvmLog.i("PackageReplacedReceiver.onReceive", "package replaced, starting activation");
diff --git a/java/com/android/voicemail/impl/PinChangerImpl.java b/java/com/android/voicemail/impl/PinChangerImpl.java
index 8735a26..d1f6945 100644
--- a/java/com/android/voicemail/impl/PinChangerImpl.java
+++ b/java/com/android/voicemail/impl/PinChangerImpl.java
@@ -16,12 +16,12 @@
 
 package com.android.voicemail.impl;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.net.Network;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.common.Assert;
 import com.android.voicemail.PinChanger;
 import com.android.voicemail.impl.imap.ImapHelper;
@@ -31,7 +31,6 @@
 import com.android.voicemail.impl.sync.VvmNetworkRequest.NetworkWrapper;
 import com.android.voicemail.impl.sync.VvmNetworkRequest.RequestFailedException;
 
-@TargetApi(VERSION_CODES.O)
 class PinChangerImpl implements PinChanger {
 
   private final Context context;
diff --git a/java/com/android/voicemail/impl/PreOMigrationHandler.java b/java/com/android/voicemail/impl/PreOMigrationHandler.java
deleted file mode 100644
index 2c45471..0000000
--- a/java/com/android/voicemail/impl/PreOMigrationHandler.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.voicemail.impl;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
-import android.telecom.PhoneAccountHandle;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import com.android.voicemail.VoicemailComponent;
-import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
-import java.lang.reflect.Method;
-
-/** Handles migration of data from the visual voicemail client in telephony before O. */
-public final class PreOMigrationHandler {
-
-  // Hidden system APIs to access pre O VVM data
-  // Bundle getVisualVoicemailSettings()
-  private static final String METHOD_GET_VISUAL_VOICEMAIL_SETTINGS = "getVisualVoicemailSettings";
-
-  /**
-   * Key in bundle returned by {@link #METHOD_GET_VISUAL_VOICEMAIL_SETTINGS}, indicating whether
-   * visual voicemail was enabled or disabled by the user. If the user never explicitly changed this
-   * setting, this key will not exist.
-   */
-  private static final String EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL =
-      "android.telephony.extra.VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL";
-
-  /**
-   * Key in bundle returned by {@link #METHOD_GET_VISUAL_VOICEMAIL_SETTINGS}, indicating the
-   * voicemail access PIN scrambled during the auto provisioning process. The user is expected to
-   * reset their PIN if this value is not {@code null}.
-   */
-  private static final String EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING =
-      "android.telephony.extra.VOICEMAIL_SCRAMBLED_PIN_STRING";
-
-  @VisibleForTesting static final String PRE_O_MIGRATION_FINISHED = "pre_o_migration_finished";
-
-  @WorkerThread
-  public static void migrate(Context context, PhoneAccountHandle phoneAccountHandle) {
-    Assert.isNotMainThread();
-    VisualVoicemailPreferences preferences =
-        new VisualVoicemailPreferences(context, phoneAccountHandle);
-    if (preferences.getBoolean(PRE_O_MIGRATION_FINISHED, false)) {
-      VvmLog.i("PreOMigrationHandler", phoneAccountHandle + " already migrated");
-      return;
-    }
-    VvmLog.i("PreOMigrationHandler", "migrating " + phoneAccountHandle);
-    migrateSettings(context, phoneAccountHandle);
-
-    preferences.edit().putBoolean(PRE_O_MIGRATION_FINISHED, true).apply();
-  }
-
-  private static void migrateSettings(Context context, PhoneAccountHandle phoneAccountHandle) {
-    VvmLog.i("PreOMigrationHandler.migrateSettings", "migrating settings");
-    TelephonyManager telephonyManager =
-        context
-            .getSystemService(TelephonyManager.class)
-            .createForPhoneAccountHandle(phoneAccountHandle);
-    if (telephonyManager == null) {
-      VvmLog.e("PreOMigrationHandler.migrateSettings", "invalid PhoneAccountHandle");
-      return;
-    }
-    Bundle legacySettings;
-    try {
-      Method method = TelephonyManager.class.getMethod(METHOD_GET_VISUAL_VOICEMAIL_SETTINGS);
-      legacySettings = (Bundle) method.invoke(telephonyManager);
-    } catch (ReflectiveOperationException | ClassCastException e) {
-      VvmLog.i("PreOMigrationHandler.migrateSettings", "unable to retrieve settings from system");
-      return;
-    }
-
-    if (legacySettings.containsKey(EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL)) {
-      boolean enabled = legacySettings.getBoolean(EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL);
-      VvmLog.i("PreOMigrationHandler.migrateSettings", "setting VVM enabled to " + enabled);
-      VisualVoicemailSettingsUtil.setEnabled(context, phoneAccountHandle, enabled);
-    }
-
-    if (legacySettings.containsKey(EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING)) {
-      String scrambledPin = legacySettings.getString(EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING);
-      if (!TextUtils.isEmpty(scrambledPin)) {
-        VvmLog.i("PreOMigrationHandler.migrateSettings", "migrating scrambled PIN");
-        VoicemailComponent.get(context)
-            .getVoicemailClient()
-            .createPinChanger(context, phoneAccountHandle)
-            .setScrambledPin(scrambledPin);
-      }
-    }
-  }
-}
diff --git a/java/com/android/voicemail/impl/StatusCheckJobService.java b/java/com/android/voicemail/impl/StatusCheckJobService.java
index 870c5b4..bae1a7d 100644
--- a/java/com/android/voicemail/impl/StatusCheckJobService.java
+++ b/java/com/android/voicemail/impl/StatusCheckJobService.java
@@ -1,30 +1,34 @@
-/**
+/*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
- * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
- * <p>http://www.apache.org/licenses/LICENSE-2.0
+ *      http://www.apache.org/licenses/LICENSE-2.0
  *
- * <p>Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing permissions and
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
  * limitations under the License
  */
 package com.android.voicemail.impl;
 
-import android.annotation.TargetApi;
+import android.annotation.SuppressLint;
 import android.app.job.JobInfo;
 import android.app.job.JobParameters;
 import android.app.job.JobScheduler;
 import android.app.job.JobService;
 import android.content.ComponentName;
 import android.content.Context;
-import android.os.Build.VERSION_CODES;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
+
 import com.android.dialer.constants.ScheduledJobIds;
 import com.android.voicemail.impl.sync.VvmAccountManager;
+
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -33,7 +37,6 @@
  * scheduled for each active voicemail account. The status is expected to be always in sync, the
  * check is a failsafe to mimic the previous status check on signal return behavior.
  */
-@TargetApi(VERSION_CODES.O)
 public class StatusCheckJobService extends JobService {
 
   public static void schedule(Context context) {
@@ -53,6 +56,7 @@
             .build());
   }
 
+  @SuppressLint("MissingPermission")
   @Override
   public boolean onStartJob(JobParameters params) {
     for (PhoneAccountHandle phoneAccountHandle :
diff --git a/java/com/android/voicemail/impl/StatusCheckTask.java b/java/com/android/voicemail/impl/StatusCheckTask.java
index e59eb3b..aca9b1f 100644
--- a/java/com/android/voicemail/impl/StatusCheckTask.java
+++ b/java/com/android/voicemail/impl/StatusCheckTask.java
@@ -1,33 +1,35 @@
-/**
+/*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
- * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
- * <p>http://www.apache.org/licenses/LICENSE-2.0
+ *      http://www.apache.org/licenses/LICENSE-2.0
  *
- * <p>Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing permissions and
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
  * limitations under the License
  */
 package com.android.voicemail.impl;
 
-import android.annotation.TargetApi;
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.ServiceState;
 import android.telephony.TelephonyManager;
-import com.android.dialer.logging.DialerImpression;
+
 import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.scheduling.BaseTask;
 import com.android.voicemail.impl.sms.StatusMessage;
 import com.android.voicemail.impl.sms.StatusSmsFetcher;
 import com.android.voicemail.impl.sync.VvmAccountManager;
-import com.android.voicemail.impl.utils.LoggerUtils;
+
 import java.io.IOException;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
@@ -41,7 +43,6 @@
  * com.android.voicemail.impl.sms.OmtpMessageReceiver}). If the provisioning status is not ready an
  * {@link ActivationTask} will be launched to attempt to correct it.
  */
-@TargetApi(VERSION_CODES.O)
 @UsedByReflection(value = "Tasks.java")
 public class StatusCheckTask extends BaseTask {
 
@@ -54,6 +55,7 @@
     context.sendBroadcast(intent);
   }
 
+  @SuppressLint("MissingPermission")
   @Override
   public void onExecuteInBackgroundThread() {
     TelephonyManager telephonyManager =
@@ -112,16 +114,12 @@
       VvmLog.i(
           "StatusCheckTask.onExecuteInBackgroundThread",
           "subscriber ready, no activation required");
-      LoggerUtils.logImpressionOnMainThread(
-          getContext(), DialerImpression.Type.VVM_STATUS_CHECK_READY);
       VvmAccountManager.addAccount(getContext(), getPhoneAccountHandle(), message);
     } else {
       VvmLog.i(
           "StatusCheckTask.onExecuteInBackgroundThread",
           "subscriber not ready, attempting reactivation");
       VvmAccountManager.removeAccount(getContext(), getPhoneAccountHandle());
-      LoggerUtils.logImpressionOnMainThread(
-          getContext(), DialerImpression.Type.VVM_STATUS_CHECK_REACTIVATION);
       ActivationTask.start(getContext(), getPhoneAccountHandle(), data);
     }
   }
diff --git a/java/com/android/voicemail/impl/VisualVoicemailPreferences.java b/java/com/android/voicemail/impl/VisualVoicemailPreferences.java
index 1d7204e..c73ce4c 100644
--- a/java/com/android/voicemail/impl/VisualVoicemailPreferences.java
+++ b/java/com/android/voicemail/impl/VisualVoicemailPreferences.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,10 @@
 package com.android.voicemail.impl;
 
 import android.content.Context;
-import android.preference.PreferenceManager;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.preference.PreferenceManager;
+
 import com.android.dialer.common.PerAccountSharedPreferences;
 
 /**
diff --git a/java/com/android/voicemail/impl/Voicemail.java b/java/com/android/voicemail/impl/Voicemail.java
index a2282a9..ff8d01b 100644
--- a/java/com/android/voicemail/impl/Voicemail.java
+++ b/java/com/android/voicemail/impl/Voicemail.java
@@ -163,7 +163,7 @@
       builderId = builderId == null ? -1 : builderId;
       builderTimestamp = builderTimestamp == null ? 0 : builderTimestamp;
       builderDuration = builderDuration == null ? 0 : builderDuration;
-      builderIsRead = builderIsRead == null ? false : builderIsRead;
+      builderIsRead = builderIsRead != null && builderIsRead;
       return new Voicemail(
           builderTimestamp,
           builderNumber,
@@ -326,8 +326,8 @@
     } else {
       uri = null;
     }
-    isRead = in.readInt() > 0 ? true : false;
-    hasContent = in.readInt() > 0 ? true : false;
+    isRead = in.readInt() > 0;
+    hasContent = in.readInt() > 0;
     transcription = (String) readCharSequence(in);
   }
 
diff --git a/java/com/android/voicemail/impl/VoicemailClientImpl.java b/java/com/android/voicemail/impl/VoicemailClientImpl.java
index 36e5a6c..65181d6 100644
--- a/java/com/android/voicemail/impl/VoicemailClientImpl.java
+++ b/java/com/android/voicemail/impl/VoicemailClientImpl.java
@@ -1,36 +1,37 @@
-/**
+/*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
- * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
- * <p>http://www.apache.org/licenses/LICENSE-2.0
+ *      http://www.apache.org/licenses/LICENSE-2.0
  *
- * <p>Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing permissions and
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
  * limitations under the License
  */
 package com.android.voicemail.impl;
 
-import android.annotation.TargetApi;
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.os.Build.VERSION_CODES;
 import android.os.PersistableBundle;
-import android.preference.PreferenceManager;
 import android.provider.VoicemailContract.Status;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.os.BuildCompat;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
-import com.android.dialer.common.Assert;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.PreferenceManager;
+
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.voicemail.PinChanger;
 import com.android.voicemail.VisualVoicemailTypeExtensions;
 import com.android.voicemail.VoicemailClient;
@@ -38,9 +39,9 @@
 import com.android.voicemail.impl.configui.VoicemailSecretCodeActivity;
 import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
 import com.android.voicemail.impl.sync.VvmAccountManager;
-import com.android.voicemail.impl.transcribe.TranscriptionBackfillService;
-import com.android.voicemail.impl.transcribe.TranscriptionConfigProvider;
+
 import java.util.List;
+
 import javax.inject.Inject;
 
 /**
@@ -67,9 +68,7 @@
   };
 
   @Inject
-  public VoicemailClientImpl() {
-    Assert.checkArgument(BuildCompat.isAtLeastO());
-  }
+  public VoicemailClientImpl() { }
 
   @Override
   public boolean isVoicemailModuleEnabled() {
@@ -100,22 +99,11 @@
 
   @Override
   public boolean isVoicemailArchiveAvailable(Context context) {
-    if (!BuildCompat.isAtLeastO()) {
-      LogUtil.i("VoicemailClientImpl.isVoicemailArchiveAllowed", "not running on O or later");
-      return false;
-    }
-
-    if (!ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean(ALLOW_VOICEMAIL_ARCHIVE, false)) {
-      LogUtil.i(
-          "VoicemailClientImpl.isVoicemailArchiveAllowed",
-          "feature disabled by config: %s",
-          ALLOW_VOICEMAIL_ARCHIVE);
-      return false;
-    }
-
-    return true;
+    LogUtil.i(
+        "VoicemailClientImpl.isVoicemailArchiveAllowed",
+        "feature disabled by config: %s",
+        ALLOW_VOICEMAIL_ARCHIVE);
+    return false;
   }
 
   @Override
@@ -125,108 +113,6 @@
   }
 
   @Override
-  public boolean isVoicemailTranscriptionAvailable(
-      Context context, PhoneAccountHandle phoneAccountHandle) {
-    if (phoneAccountHandle == null) {
-      LogUtil.i(
-          "VoicemailClientImpl.isVoicemailTranscriptionAvailable", "phone account handle is null");
-    }
-
-    if (!BuildCompat.isAtLeastO()) {
-      LogUtil.i(
-          "VoicemailClientImpl.isVoicemailTranscriptionAvailable", "not running on O or later");
-      return false;
-    }
-
-    if (!isVoicemailEnabled(context, phoneAccountHandle)) {
-      LogUtil.i(
-          "VoicemailClientImpl.isVoicemailTranscriptionAvailable",
-          "visual voicemail is not enabled");
-      return false;
-    }
-
-    if (!isActivated(context, phoneAccountHandle)) {
-      LogUtil.i(
-          "VoicemailClientImpl.isVoicemailTranscriptionAvailable",
-          "visual voicemail is not activated");
-      return false;
-    }
-
-    TranscriptionConfigProvider provider = new TranscriptionConfigProvider(context);
-    if (!provider.isVoicemailTranscriptionAvailable()) {
-      LogUtil.i(
-          "VoicemailClientImpl.isVoicemailTranscriptionAvailable", "feature disabled by config");
-      return false;
-    }
-
-    return true;
-  }
-
-  @Override
-  public boolean isVoicemailTranscriptionEnabled(Context context, PhoneAccountHandle account) {
-    return isVoicemailTranscriptionAvailable(context, account)
-        && VisualVoicemailSettingsUtil.isVoicemailTranscriptionEnabled(context, account);
-  }
-
-  @Override
-  public boolean isVoicemailDonationAvailable(
-      Context context, PhoneAccountHandle phoneAccountHandle) {
-    if (!isVoicemailTranscriptionAvailable(context, phoneAccountHandle)) {
-      LogUtil.i("VoicemailClientImpl.isVoicemailDonationAvailable", "transcription not available");
-      return false;
-    }
-
-    if (!isVoicemailTranscriptionEnabled(context, phoneAccountHandle)) {
-      LogUtil.i("VoicemailClientImpl.isVoicemailDonationAvailable", "transcription not enabled");
-      return false;
-    }
-
-    TranscriptionConfigProvider provider = new TranscriptionConfigProvider(context);
-    if (!provider.isVoicemailDonationAvailable()) {
-      LogUtil.i("VoicemailClientImpl.isVoicemailDonationAvailable", "feature disabled by config");
-      return false;
-    }
-
-    return true;
-  }
-
-  @Override
-  public boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account) {
-    return isVoicemailTranscriptionEnabled(context, account)
-        && isVoicemailDonationAvailable(context, account)
-        && VisualVoicemailSettingsUtil.isVoicemailDonationEnabled(context, account);
-  }
-
-  @Override
-  public void setVoicemailTranscriptionEnabled(
-      Context context, PhoneAccountHandle phoneAccountHandle, boolean enabled) {
-    Assert.checkArgument(
-        isVoicemailTranscriptionAvailable(context, phoneAccountHandle),
-        "transcription must be available before enabling/disabling it");
-    VisualVoicemailSettingsUtil.setVoicemailTranscriptionEnabled(
-        context, phoneAccountHandle, enabled);
-    if (enabled) {
-      TranscriptionBackfillService.scheduleTask(context, phoneAccountHandle);
-    }
-  }
-
-  @Override
-  public void setVoicemailDonationEnabled(
-      Context context, PhoneAccountHandle phoneAccountHandle, boolean enabled) {
-    if (enabled) {
-      Assert.checkArgument(
-          isVoicemailTranscriptionAvailable(context, phoneAccountHandle)
-              && isVoicemailTranscriptionEnabled(context, phoneAccountHandle),
-          "should not be able to enable donation without transcription "
-              + "available(value: %b) and enabled (value:%b) for account:%s",
-          isVoicemailTranscriptionAvailable(context, phoneAccountHandle),
-          isVoicemailTranscriptionEnabled(context, phoneAccountHandle),
-          phoneAccountHandle.toString());
-    }
-    VisualVoicemailSettingsUtil.setVoicemailDonationEnabled(context, phoneAccountHandle, enabled);
-  }
-
-  @Override
   public boolean isActivated(Context context, PhoneAccountHandle phoneAccountHandle) {
     return VvmAccountManager.isAccountActivated(context, phoneAccountHandle);
   }
@@ -271,7 +157,7 @@
     return new PinChangerImpl(context, phoneAccountHandle);
   }
 
-  @TargetApi(VERSION_CODES.O)
+  @SuppressLint("MissingPermission")
   @Override
   public void appendOmtpVoicemailSelectionClause(
       Context context, StringBuilder where, List<String> selectionArgs) {
@@ -303,7 +189,7 @@
     }
   }
 
-  @TargetApi(VERSION_CODES.O)
+  @SuppressLint("MissingPermission")
   @Override
   public void appendOmtpVoicemailStatusSelectionClause(
       Context context, StringBuilder where, List<String> selectionArgs) {
@@ -349,8 +235,6 @@
 
   @Override
   public void onTosAccepted(Context context, PhoneAccountHandle account) {
-    LogUtil.i("VoicemailClientImpl.onTosAccepted", "try backfilling voicemail transcriptions");
-    TranscriptionBackfillService.scheduleTask(context, account);
   }
 
   @Override
diff --git a/java/com/android/voicemail/impl/VoicemailClientReceiver.java b/java/com/android/voicemail/impl/VoicemailClientReceiver.java
index 688636e..0f1804b 100644
--- a/java/com/android/voicemail/impl/VoicemailClientReceiver.java
+++ b/java/com/android/voicemail/impl/VoicemailClientReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.telecom.PhoneAccountHandle;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.voicemail.VoicemailClient;
diff --git a/java/com/android/voicemail/impl/VoicemailModule.java b/java/com/android/voicemail/impl/VoicemailModule.java
index c4c72d3..2d11946 100644
--- a/java/com/android/voicemail/impl/VoicemailModule.java
+++ b/java/com/android/voicemail/impl/VoicemailModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,30 +18,24 @@
 package com.android.voicemail.impl;
 
 import android.content.Context;
-import android.support.v4.os.BuildCompat;
+
 import com.android.dialer.inject.ApplicationContext;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
 import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.VoicemailPermissionHelper;
 import com.android.voicemail.stub.StubVoicemailClient;
-import dagger.Module;
-import dagger.Provides;
+
 import javax.inject.Singleton;
 
+import dagger.Module;
+import dagger.Provides;
+
 /** This module provides an instance of the voicemail client. */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module
 public final class VoicemailModule {
 
   @Provides
   @Singleton
   static VoicemailClient provideVoicemailClient(@ApplicationContext Context context) {
-    if (!BuildCompat.isAtLeastO()) {
-      VvmLog.i("VoicemailModule.provideVoicemailClient", "SDK below O");
-      return new StubVoicemailClient();
-    }
-
     if (!VoicemailPermissionHelper.hasPermissions(context)) {
       VvmLog.i(
           "VoicemailModule.provideVoicemailClient",
diff --git a/java/com/android/voicemail/impl/VoicemailStatus.java b/java/com/android/voicemail/impl/VoicemailStatus.java
index 2ebc49b..0599977 100644
--- a/java/com/android/voicemail/impl/VoicemailStatus.java
+++ b/java/com/android/voicemail/impl/VoicemailStatus.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,9 +23,9 @@
 import android.net.Uri;
 import android.provider.VoicemailContract;
 import android.provider.VoicemailContract.Status;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
-import com.android.dialer.strictmode.StrictModeUtils;
+
+import androidx.annotation.Nullable;
 
 public class VoicemailStatus {
 
@@ -33,9 +34,10 @@
   public static class Editor {
 
     private final Context context;
-    @Nullable private final PhoneAccountHandle phoneAccountHandle;
+    @Nullable
+    private final PhoneAccountHandle phoneAccountHandle;
 
-    private ContentValues values = new ContentValues();
+    private final ContentValues values = new ContentValues();
 
     private Editor(Context context, PhoneAccountHandle phoneAccountHandle) {
       this.context = context;
@@ -100,7 +102,7 @@
       ContentResolver contentResolver = context.getContentResolver();
       Uri statusUri = VoicemailContract.Status.buildSourceUri(context.getPackageName());
       try {
-        StrictModeUtils.bypass(() -> contentResolver.insert(statusUri, values));
+        contentResolver.insert(statusUri, values);
       } catch (IllegalArgumentException iae) {
         VvmLog.e(TAG, "apply :: failed to insert content resolver ", iae);
         values.clear();
diff --git a/java/com/android/voicemail/impl/VoicemailTranscriptionServiceGrpc.java b/java/com/android/voicemail/impl/VoicemailTranscriptionServiceGrpc.java
deleted file mode 100644
index f6a00f6..0000000
--- a/java/com/android/voicemail/impl/VoicemailTranscriptionServiceGrpc.java
+++ /dev/null
@@ -1,458 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.google.internal.communications.voicemailtranscription.v1;
-
-import static io.grpc.stub.ClientCalls.asyncUnaryCall;
-import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;
-import static io.grpc.stub.ClientCalls.asyncClientStreamingCall;
-import static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;
-import static io.grpc.stub.ClientCalls.blockingUnaryCall;
-import static io.grpc.stub.ClientCalls.blockingServerStreamingCall;
-import static io.grpc.stub.ClientCalls.futureUnaryCall;
-import static io.grpc.MethodDescriptor.generateFullMethodName;
-import static io.grpc.stub.ServerCalls.asyncUnaryCall;
-import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
-import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
-import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
-import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
-import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
-
-/**
- * <pre>
- * RPC service for transcribing voicemails.
- * </pre>
- */
-@javax.annotation.Generated(
-    value = "by gRPC proto compiler (version 1.0.3)",
-    comments = "Source: voicemail_transcription.proto")
-public class VoicemailTranscriptionServiceGrpc {
-
-  private VoicemailTranscriptionServiceGrpc() {}
-
-  public static final String SERVICE_NAME = "google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionService";
-
-  // Static method descriptors that strictly reflect the proto.
-  @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901")
-  public static final io.grpc.MethodDescriptor<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest,
-      com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> METHOD_TRANSCRIBE_VOICEMAIL =
-      io.grpc.MethodDescriptor.create(
-          io.grpc.MethodDescriptor.MethodType.UNARY,
-          generateFullMethodName(
-              "google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionService", "TranscribeVoicemail"),
-          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest.getDefaultInstance()),
-          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse.getDefaultInstance()));
-  @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901")
-  public static final io.grpc.MethodDescriptor<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncRequest,
-      com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncResponse> METHOD_TRANSCRIBE_VOICEMAIL_ASYNC =
-      io.grpc.MethodDescriptor.create(
-          io.grpc.MethodDescriptor.MethodType.UNARY,
-          generateFullMethodName(
-              "google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionService", "TranscribeVoicemailAsync"),
-          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncRequest.getDefaultInstance()),
-          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncResponse.getDefaultInstance()));
-  @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901")
-  public static final io.grpc.MethodDescriptor<com.google.internal.communications.voicemailtranscription.v1.GetTranscriptRequest,
-      com.google.internal.communications.voicemailtranscription.v1.GetTranscriptResponse> METHOD_GET_TRANSCRIPT =
-      io.grpc.MethodDescriptor.create(
-          io.grpc.MethodDescriptor.MethodType.UNARY,
-          generateFullMethodName(
-              "google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionService", "GetTranscript"),
-          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.GetTranscriptRequest.getDefaultInstance()),
-          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.GetTranscriptResponse.getDefaultInstance()));
-  @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901")
-  public static final io.grpc.MethodDescriptor<com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackRequest,
-      com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackResponse> METHOD_SEND_TRANSCRIPTION_FEEDBACK =
-      io.grpc.MethodDescriptor.create(
-          io.grpc.MethodDescriptor.MethodType.UNARY,
-          generateFullMethodName(
-              "google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionService", "SendTranscriptionFeedback"),
-          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackRequest.getDefaultInstance()),
-          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackResponse.getDefaultInstance()));
-
-  /**
-   * Creates a new async stub that supports all call types for the service
-   */
-  public static VoicemailTranscriptionServiceStub newStub(io.grpc.Channel channel) {
-    return new VoicemailTranscriptionServiceStub(channel);
-  }
-
-  /**
-   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
-   */
-  public static VoicemailTranscriptionServiceBlockingStub newBlockingStub(
-      io.grpc.Channel channel) {
-    return new VoicemailTranscriptionServiceBlockingStub(channel);
-  }
-
-  /**
-   * Creates a new ListenableFuture-style stub that supports unary and streaming output calls on the service
-   */
-  public static VoicemailTranscriptionServiceFutureStub newFutureStub(
-      io.grpc.Channel channel) {
-    return new VoicemailTranscriptionServiceFutureStub(channel);
-  }
-
-  /**
-   * <pre>
-   * RPC service for transcribing voicemails.
-   * </pre>
-   */
-  public static abstract class VoicemailTranscriptionServiceImplBase implements io.grpc.BindableService {
-
-    /**
-     * <pre>
-     * Returns a transcript of the given voicemail.
-     * </pre>
-     */
-    public void transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request,
-        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> responseObserver) {
-      asyncUnimplementedUnaryCall(METHOD_TRANSCRIBE_VOICEMAIL, responseObserver);
-    }
-
-    /**
-     * <pre>
-     * Schedules a transcription of the given voicemail. The transcript can be
-     * retrieved using the returned ID.
-     * </pre>
-     */
-    public void transcribeVoicemailAsync(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncRequest request,
-        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncResponse> responseObserver) {
-      asyncUnimplementedUnaryCall(METHOD_TRANSCRIBE_VOICEMAIL_ASYNC, responseObserver);
-    }
-
-    /**
-     * <pre>
-     * Returns the transcript corresponding to the given ID, which was returned
-     * by TranscribeVoicemailAsync.
-     * </pre>
-     */
-    public void getTranscript(com.google.internal.communications.voicemailtranscription.v1.GetTranscriptRequest request,
-        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.GetTranscriptResponse> responseObserver) {
-      asyncUnimplementedUnaryCall(METHOD_GET_TRANSCRIPT, responseObserver);
-    }
-
-    /**
-     * <pre>
-     * Uploads user's transcription feedback. Feedback will only be collected from
-     * user's who have consented to donate their voicemails.
-     * </pre>
-     */
-    public void sendTranscriptionFeedback(com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackRequest request,
-        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackResponse> responseObserver) {
-      asyncUnimplementedUnaryCall(METHOD_SEND_TRANSCRIPTION_FEEDBACK, responseObserver);
-    }
-
-    @java.lang.Override public io.grpc.ServerServiceDefinition bindService() {
-      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
-          .addMethod(
-            METHOD_TRANSCRIBE_VOICEMAIL,
-            asyncUnaryCall(
-              new MethodHandlers<
-                com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest,
-                com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse>(
-                  this, METHODID_TRANSCRIBE_VOICEMAIL)))
-          .addMethod(
-            METHOD_TRANSCRIBE_VOICEMAIL_ASYNC,
-            asyncUnaryCall(
-              new MethodHandlers<
-                com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncRequest,
-                com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncResponse>(
-                  this, METHODID_TRANSCRIBE_VOICEMAIL_ASYNC)))
-          .addMethod(
-            METHOD_GET_TRANSCRIPT,
-            asyncUnaryCall(
-              new MethodHandlers<
-                com.google.internal.communications.voicemailtranscription.v1.GetTranscriptRequest,
-                com.google.internal.communications.voicemailtranscription.v1.GetTranscriptResponse>(
-                  this, METHODID_GET_TRANSCRIPT)))
-          .addMethod(
-            METHOD_SEND_TRANSCRIPTION_FEEDBACK,
-            asyncUnaryCall(
-              new MethodHandlers<
-                com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackRequest,
-                com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackResponse>(
-                  this, METHODID_SEND_TRANSCRIPTION_FEEDBACK)))
-          .build();
-    }
-  }
-
-  /**
-   * <pre>
-   * RPC service for transcribing voicemails.
-   * </pre>
-   */
-  public static final class VoicemailTranscriptionServiceStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceStub> {
-    private VoicemailTranscriptionServiceStub(io.grpc.Channel channel) {
-      super(channel);
-    }
-
-    private VoicemailTranscriptionServiceStub(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
-
-    @java.lang.Override
-    protected VoicemailTranscriptionServiceStub build(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      return new VoicemailTranscriptionServiceStub(channel, callOptions);
-    }
-
-    /**
-     * <pre>
-     * Returns a transcript of the given voicemail.
-     * </pre>
-     */
-    public void transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request,
-        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> responseObserver) {
-      asyncUnaryCall(
-          getChannel().newCall(METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions()), request, responseObserver);
-    }
-
-    /**
-     * <pre>
-     * Schedules a transcription of the given voicemail. The transcript can be
-     * retrieved using the returned ID.
-     * </pre>
-     */
-    public void transcribeVoicemailAsync(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncRequest request,
-        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncResponse> responseObserver) {
-      asyncUnaryCall(
-          getChannel().newCall(METHOD_TRANSCRIBE_VOICEMAIL_ASYNC, getCallOptions()), request, responseObserver);
-    }
-
-    /**
-     * <pre>
-     * Returns the transcript corresponding to the given ID, which was returned
-     * by TranscribeVoicemailAsync.
-     * </pre>
-     */
-    public void getTranscript(com.google.internal.communications.voicemailtranscription.v1.GetTranscriptRequest request,
-        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.GetTranscriptResponse> responseObserver) {
-      asyncUnaryCall(
-          getChannel().newCall(METHOD_GET_TRANSCRIPT, getCallOptions()), request, responseObserver);
-    }
-
-    /**
-     * <pre>
-     * Uploads user's transcription feedback. Feedback will only be collected from
-     * user's who have consented to donate their voicemails.
-     * </pre>
-     */
-    public void sendTranscriptionFeedback(com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackRequest request,
-        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackResponse> responseObserver) {
-      asyncUnaryCall(
-          getChannel().newCall(METHOD_SEND_TRANSCRIPTION_FEEDBACK, getCallOptions()), request, responseObserver);
-    }
-  }
-
-  /**
-   * <pre>
-   * RPC service for transcribing voicemails.
-   * </pre>
-   */
-  public static final class VoicemailTranscriptionServiceBlockingStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceBlockingStub> {
-    private VoicemailTranscriptionServiceBlockingStub(io.grpc.Channel channel) {
-      super(channel);
-    }
-
-    private VoicemailTranscriptionServiceBlockingStub(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
-
-    @java.lang.Override
-    protected VoicemailTranscriptionServiceBlockingStub build(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      return new VoicemailTranscriptionServiceBlockingStub(channel, callOptions);
-    }
-
-    /**
-     * <pre>
-     * Returns a transcript of the given voicemail.
-     * </pre>
-     */
-    public com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request) {
-      return blockingUnaryCall(
-          getChannel(), METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions(), request);
-    }
-
-    /**
-     * <pre>
-     * Schedules a transcription of the given voicemail. The transcript can be
-     * retrieved using the returned ID.
-     * </pre>
-     */
-    public com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncResponse transcribeVoicemailAsync(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncRequest request) {
-      return blockingUnaryCall(
-          getChannel(), METHOD_TRANSCRIBE_VOICEMAIL_ASYNC, getCallOptions(), request);
-    }
-
-    /**
-     * <pre>
-     * Returns the transcript corresponding to the given ID, which was returned
-     * by TranscribeVoicemailAsync.
-     * </pre>
-     */
-    public com.google.internal.communications.voicemailtranscription.v1.GetTranscriptResponse getTranscript(com.google.internal.communications.voicemailtranscription.v1.GetTranscriptRequest request) {
-      return blockingUnaryCall(
-          getChannel(), METHOD_GET_TRANSCRIPT, getCallOptions(), request);
-    }
-
-    /**
-     * <pre>
-     * Uploads user's transcription feedback. Feedback will only be collected from
-     * user's who have consented to donate their voicemails.
-     * </pre>
-     */
-    public com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackResponse sendTranscriptionFeedback(com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackRequest request) {
-      return blockingUnaryCall(
-          getChannel(), METHOD_SEND_TRANSCRIPTION_FEEDBACK, getCallOptions(), request);
-    }
-  }
-
-  /**
-   * <pre>
-   * RPC service for transcribing voicemails.
-   * </pre>
-   */
-  public static final class VoicemailTranscriptionServiceFutureStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceFutureStub> {
-    private VoicemailTranscriptionServiceFutureStub(io.grpc.Channel channel) {
-      super(channel);
-    }
-
-    private VoicemailTranscriptionServiceFutureStub(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
-
-    @java.lang.Override
-    protected VoicemailTranscriptionServiceFutureStub build(io.grpc.Channel channel,
-        io.grpc.CallOptions callOptions) {
-      return new VoicemailTranscriptionServiceFutureStub(channel, callOptions);
-    }
-
-    /**
-     * <pre>
-     * Returns a transcript of the given voicemail.
-     * </pre>
-     */
-    public com.google.common.util.concurrent.ListenableFuture<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> transcribeVoicemail(
-        com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request) {
-      return futureUnaryCall(
-          getChannel().newCall(METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions()), request);
-    }
-
-    /**
-     * <pre>
-     * Schedules a transcription of the given voicemail. The transcript can be
-     * retrieved using the returned ID.
-     * </pre>
-     */
-    public com.google.common.util.concurrent.ListenableFuture<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncResponse> transcribeVoicemailAsync(
-        com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncRequest request) {
-      return futureUnaryCall(
-          getChannel().newCall(METHOD_TRANSCRIBE_VOICEMAIL_ASYNC, getCallOptions()), request);
-    }
-
-    /**
-     * <pre>
-     * Returns the transcript corresponding to the given ID, which was returned
-     * by TranscribeVoicemailAsync.
-     * </pre>
-     */
-    public com.google.common.util.concurrent.ListenableFuture<com.google.internal.communications.voicemailtranscription.v1.GetTranscriptResponse> getTranscript(
-        com.google.internal.communications.voicemailtranscription.v1.GetTranscriptRequest request) {
-      return futureUnaryCall(
-          getChannel().newCall(METHOD_GET_TRANSCRIPT, getCallOptions()), request);
-    }
-
-    /**
-     * <pre>
-     * Uploads user's transcription feedback. Feedback will only be collected from
-     * user's who have consented to donate their voicemails.
-     * </pre>
-     */
-    public com.google.common.util.concurrent.ListenableFuture<com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackResponse> sendTranscriptionFeedback(
-        com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackRequest request) {
-      return futureUnaryCall(
-          getChannel().newCall(METHOD_SEND_TRANSCRIPTION_FEEDBACK, getCallOptions()), request);
-    }
-  }
-
-  private static final int METHODID_TRANSCRIBE_VOICEMAIL = 0;
-  private static final int METHODID_TRANSCRIBE_VOICEMAIL_ASYNC = 1;
-  private static final int METHODID_GET_TRANSCRIPT = 2;
-  private static final int METHODID_SEND_TRANSCRIPTION_FEEDBACK = 3;
-
-  private static class MethodHandlers<Req, Resp> implements
-      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
-    private final VoicemailTranscriptionServiceImplBase serviceImpl;
-    private final int methodId;
-
-    public MethodHandlers(VoicemailTranscriptionServiceImplBase serviceImpl, int methodId) {
-      this.serviceImpl = serviceImpl;
-      this.methodId = methodId;
-    }
-
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        case METHODID_TRANSCRIBE_VOICEMAIL:
-          serviceImpl.transcribeVoicemail((com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest) request,
-              (io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse>) responseObserver);
-          break;
-        case METHODID_TRANSCRIBE_VOICEMAIL_ASYNC:
-          serviceImpl.transcribeVoicemailAsync((com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncRequest) request,
-              (io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncResponse>) responseObserver);
-          break;
-        case METHODID_GET_TRANSCRIPT:
-          serviceImpl.getTranscript((com.google.internal.communications.voicemailtranscription.v1.GetTranscriptRequest) request,
-              (io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.GetTranscriptResponse>) responseObserver);
-          break;
-        case METHODID_SEND_TRANSCRIPTION_FEEDBACK:
-          serviceImpl.sendTranscriptionFeedback((com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackRequest) request,
-              (io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackResponse>) responseObserver);
-          break;
-        default:
-          throw new AssertionError();
-      }
-    }
-
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public io.grpc.stub.StreamObserver<Req> invoke(
-        io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        default:
-          throw new AssertionError();
-      }
-    }
-  }
-
-  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
-    return new io.grpc.ServiceDescriptor(SERVICE_NAME,
-        METHOD_TRANSCRIBE_VOICEMAIL,
-        METHOD_TRANSCRIBE_VOICEMAIL_ASYNC,
-        METHOD_GET_TRANSCRIPT,
-        METHOD_SEND_TRANSCRIPTION_FEEDBACK);
-  }
-
-}
diff --git a/java/com/android/voicemail/impl/VvmLog.java b/java/com/android/voicemail/impl/VvmLog.java
index 7d47904..c9e82ac 100644
--- a/java/com/android/voicemail/impl/VvmLog.java
+++ b/java/com/android/voicemail/impl/VvmLog.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +17,8 @@
 package com.android.voicemail.impl;
 
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.persistentlog.PersistentLogger;
 import com.android.voicemail.impl.utils.IndentingPrintWriter;
+
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.ArrayDeque;
@@ -32,10 +33,6 @@
 
   private static final LocalLog localLog = new LocalLog(MAX_OMTP_VVM_LOGS);
 
-  public static void log(String tag, String log) {
-    PersistentLogger.logText(tag, log);
-  }
-
   public static void dump(FileDescriptor fd, PrintWriter printwriter, String[] args) {
     IndentingPrintWriter indentingPrintWriter = new IndentingPrintWriter(printwriter, "  ");
     indentingPrintWriter.increaseIndent();
@@ -44,62 +41,50 @@
   }
 
   public static void e(String tag, String log) {
-    log(tag, log);
     LogUtil.e(tag, log);
   }
 
   public static void e(String tag, String log, Throwable e) {
-    log(tag, log + " " + e);
     LogUtil.e(tag, log, e);
   }
 
   public static void w(String tag, String log) {
-    log(tag, log);
     LogUtil.w(tag, log);
   }
 
   public static void w(String tag, String log, Throwable e) {
-    log(tag, log + " " + e);
     LogUtil.w(tag, log, e);
   }
 
   public static void i(String tag, String log) {
-    log(tag, log);
     LogUtil.i(tag, log);
   }
 
   public static void i(String tag, String log, Throwable e) {
-    log(tag, log + " " + e);
     LogUtil.i(tag, log, e);
   }
 
   public static void d(String tag, String log) {
-    log(tag, log);
     LogUtil.d(tag, log);
   }
 
   public static void d(String tag, String log, Throwable e) {
-    log(tag, log + " " + e);
     LogUtil.d(tag, log, e);
   }
 
   public static void v(String tag, String log) {
-    log(tag, log);
     LogUtil.v(tag, log);
   }
 
   public static void v(String tag, String log, Throwable e) {
-    log(tag, log + " " + e);
     LogUtil.v(tag, log, e);
   }
 
   public static void wtf(String tag, String log) {
-    log(tag, log);
     LogUtil.e(tag, log);
   }
 
   public static void wtf(String tag, String log, Throwable e) {
-    log(tag, log + " " + e);
     LogUtil.e(tag, log, e);
   }
 
diff --git a/java/com/android/voicemail/impl/VvmPackageInstallHandler.java b/java/com/android/voicemail/impl/VvmPackageInstallHandler.java
index ee8b722..db61845 100644
--- a/java/com/android/voicemail/impl/VvmPackageInstallHandler.java
+++ b/java/com/android/voicemail/impl/VvmPackageInstallHandler.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +17,11 @@
 
 package com.android.voicemail.impl;
 
-import android.annotation.TargetApi;
+import android.annotation.SuppressLint;
 import android.content.Context;
-import android.os.Build.VERSION_CODES;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
+
 import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
 
 /**
@@ -33,13 +34,13 @@
  * when a VVM SMS is received instead, as it can be a result of the carrier VVM app trying to run
  * activation.
  */
-@TargetApi(VERSION_CODES.O)
 public final class VvmPackageInstallHandler {
 
   /**
    * Iterates through all phone account and disable VVM on a account if {@code packageName} is
    * listed as a carrier VVM package.
    */
+  @SuppressLint("MissingPermission")
   public static void handlePackageInstalled(Context context) {
     // This get called every time an app is installed and will be noisy. Don't log until the app
     // is identified as a carrier VVM app.
diff --git a/java/com/android/voicemail/impl/VvmPhoneStateListener.java b/java/com/android/voicemail/impl/VvmPhoneStateListener.java
index a9082e8..cabaea3 100644
--- a/java/com/android/voicemail/impl/VvmPhoneStateListener.java
+++ b/java/com/android/voicemail/impl/VvmPhoneStateListener.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.telecom.PhoneAccountHandle;
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
+
 import com.android.voicemail.impl.sync.SyncTask;
 import com.android.voicemail.impl.sync.VoicemailStatusQueryHelper;
 import com.android.voicemail.impl.sync.VvmAccountManager;
@@ -31,8 +33,8 @@
 
   private static final String TAG = "VvmPhoneStateListener";
 
-  private PhoneAccountHandle phoneAccount;
-  private Context context;
+  private final PhoneAccountHandle phoneAccount;
+  private final Context context;
   private int previousState = -1;
 
   public VvmPhoneStateListener(Context context, PhoneAccountHandle accountHandle) {
diff --git a/java/com/android/voicemail/impl/configui/AndroidManifest.xml b/java/com/android/voicemail/impl/configui/AndroidManifest.xml
deleted file mode 100644
index 95796f9..0000000
--- a/java/com/android/voicemail/impl/configui/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.voicemail.impl.configui">
-
-  <application>
-    <activity android:name="com.android.voicemail.impl.configui.VoicemailSecretCodeActivity"
-        android:exported="false">
-    </activity>
-  </application>
-</manifest>
diff --git a/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java b/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
index d05940a..6597593 100644
--- a/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
+++ b/java/com/android/voicemail/impl/configui/ConfigOverrideFragment.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,41 +17,41 @@
 
 package com.android.voicemail.impl.configui;
 
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.os.PersistableBundle;
-import android.preference.EditTextPreference;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceChangeListener;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceManager;
-import android.preference.PreferenceScreen;
-import android.preference.SwitchPreference;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+import androidx.preference.EditTextPreference;
+import androidx.preference.Preference;
+import androidx.preference.Preference.OnPreferenceChangeListener;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceManager;
+import androidx.preference.SwitchPreferenceCompat;
+
+import com.android.dialer.R;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.android.voicemail.VoicemailComponent;
 
 /**
  * Fragment to edit the override values for the {@link import
  * com.android.voicemail.impl.OmtpVvmCarrierConfigHelper}
  */
-public class ConfigOverrideFragment extends PreferenceFragment
+public class ConfigOverrideFragment extends PreferenceFragmentCompat
     implements OnPreferenceChangeListener {
 
   /**
    * Any preference with key that starts with this prefix will be written to the dialer carrier
    * config.
    */
-  @VisibleForTesting
-  public static final String CONFIG_OVERRIDE_KEY_PREFIX = "vvm_config_override_key_";
+  private static final String CONFIG_OVERRIDE_KEY_PREFIX = "vvm_config_override_key_";
 
   @Override
   public void onCreate(@Nullable Bundle savedInstanceState) {
@@ -81,20 +82,32 @@
   }
 
   @Override
-  public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
-    if (TextUtils.equals(
-        preference.getKey(), getString(R.string.vvm_config_override_load_current_key))) {
-      loadCurrentConfig();
-    }
-    return super.onPreferenceTreeClick(preferenceScreen, preference);
+  public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+      setPreferencesFromResource(R.xml.vvm_config_override, rootKey);
+
+      for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) {
+        Preference preference = getPreferenceScreen().getPreference(i);
+        preference.setOnPreferenceChangeListener(this);
+        updatePreference(preference);
+      }
+  }
+
+  @Override
+  public boolean onPreferenceTreeClick(Preference preference) {
+      if (TextUtils.equals(
+          preference.getKey(), getString(R.string.vvm_config_override_load_current_key))) {
+        loadCurrentConfig();
+      }
+      return super.onPreferenceTreeClick(preference);
   }
 
   /**
    * Loads the config for the currently carrier into the override values, from the dialer or the
    * carrier config app. This is a "reset" button to load the defaults.
    */
+  @SuppressLint("MissingPermission")
   private void loadCurrentConfig() {
-    Context context = getActivity();
+    Context context = requireActivity();
     PhoneAccountHandle phoneAccountHandle =
         context
             .getSystemService(TelecomManager.class)
@@ -113,7 +126,7 @@
       String configKey = key.substring(CONFIG_OVERRIDE_KEY_PREFIX.length());
 
       if (configKey.endsWith("bool")) {
-        ((SwitchPreference) preference).setChecked(config.getBoolean(configKey));
+        ((SwitchPreferenceCompat) preference).setChecked(config.getBoolean(configKey));
       } else if (configKey.endsWith("int")) {
         ((EditTextPreference) preference).setText(String.valueOf(config.getInt(configKey)));
       } else if (configKey.endsWith("string")) {
@@ -128,10 +141,8 @@
   }
 
   public static boolean isOverridden(Context context) {
-    return StrictModeUtils.bypass(
-        () ->
-            PreferenceManager.getDefaultSharedPreferences(context)
-                .getBoolean(context.getString(R.string.vvm_config_override_enabled_key), false));
+    return PreferenceManager.getDefaultSharedPreferences(context)
+            .getBoolean(context.getString(R.string.vvm_config_override_enabled_key), false);
   }
 
   public static PersistableBundle getConfig(Context context) {
diff --git a/java/com/android/voicemail/impl/configui/VoicemailSecretCodeActivity.java b/java/com/android/voicemail/impl/configui/VoicemailSecretCodeActivity.java
index beeb956..d6b0c4b 100644
--- a/java/com/android/voicemail/impl/configui/VoicemailSecretCodeActivity.java
+++ b/java/com/android/voicemail/impl/configui/VoicemailSecretCodeActivity.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.content.Intent;
 import android.preference.PreferenceActivity;
 import android.provider.VoicemailContract;
+
 import java.util.List;
 
 /** Activity launched by simulator->voicemail, provides debug features. */
diff --git a/java/com/android/voicemail/impl/configui/res/xml/vvm_config_override.xml b/java/com/android/voicemail/impl/configui/res/xml/vvm_config_override.xml
index c4a23c7..2b5fa58 100644
--- a/java/com/android/voicemail/impl/configui/res/xml/vvm_config_override.xml
+++ b/java/com/android/voicemail/impl/configui/res/xml/vvm_config_override.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2017 The Android Open Source Project
+     Copyright (C) 2023 The LineageOS Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -19,7 +20,7 @@
     android:key="@string/vvm_config_override_load_current_key"
     android:title="Load current"/>
 
-  <SwitchPreference
+  <SwitchPreferenceCompat
       android:key="@string/vvm_config_override_enabled_key"
       android:title="Override enabled"
       android:defaultValue="false"/>
@@ -45,12 +46,12 @@
       android:title="vvm package name (CSV)"
       />
 
-  <SwitchPreference
+  <SwitchPreferenceCompat
       android:key="vvm_config_override_key_vvm_prefetch_bool"
       android:title="prefetch"
       android:defaultValue="true"/>
 
-  <SwitchPreference
+  <SwitchPreferenceCompat
       android:key="vvm_config_override_key_vvm_cellular_data_required_bool"
       android:title="cellular data required"
       android:defaultValue="false"/>
@@ -59,7 +60,7 @@
       android:title="SSL port"
       />
 
-  <SwitchPreference
+  <SwitchPreferenceCompat
       android:key="vvm_config_override_key_vvm_legacy_mode_enabled_bool"
       android:title="legacy mode"
       android:defaultValue="false"/>
@@ -73,4 +74,4 @@
       android:key="vvm_config_override_key_vvm_client_prefix_string"
       android:title="client prefix"
       />
-</PreferenceScreen>
\ No newline at end of file
+</PreferenceScreen>
diff --git a/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java b/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java
index 7be22e4..f7a6084 100644
--- a/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java
+++ b/java/com/android/voicemail/impl/fetch/FetchVoicemailReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,7 +16,7 @@
  */
 package com.android.voicemail.impl.fetch;
 
-import android.annotation.TargetApi;
+import android.annotation.SuppressLint;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.ContentResolver;
@@ -24,16 +25,16 @@
 import android.database.Cursor;
 import android.net.Network;
 import android.net.Uri;
-import android.os.Build.VERSION_CODES;
 import android.provider.VoicemailContract;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.os.BuildCompat;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.VoicemailStatus;
 import com.android.voicemail.impl.VvmLog;
@@ -41,11 +42,11 @@
 import com.android.voicemail.impl.imap.ImapHelper.InitializingException;
 import com.android.voicemail.impl.sync.VvmAccountManager;
 import com.android.voicemail.impl.sync.VvmNetworkRequestCallback;
+
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 
 /** handles {@link VoicemailContract#ACTION_FETCH_VOICEMAIL} */
-@TargetApi(VERSION_CODES.O)
 public class FetchVoicemailReceiver extends BroadcastReceiver {
 
   private static final String TAG = "FetchVoicemailReceiver";
@@ -116,14 +117,15 @@
             }
           }
 
-          phoneAccount =
-              new PhoneAccountHandle(
-                  ComponentName.unflattenFromString(cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME)),
-                  cursor.getString(PHONE_ACCOUNT_ID));
-          TelephonyManager telephonyManager =
-              context
-                  .getSystemService(TelephonyManager.class)
-                  .createForPhoneAccountHandle(phoneAccount);
+          TelephonyManager telephonyManager = null;
+          ComponentName componentName = ComponentName.unflattenFromString(
+                  cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME));
+          if (componentName != null) {
+            phoneAccount =
+                    new PhoneAccountHandle(componentName, cursor.getString(PHONE_ACCOUNT_ID));
+            telephonyManager = context.getSystemService(TelephonyManager.class)
+                    .createForPhoneAccountHandle(phoneAccount);
+          }
           if (telephonyManager == null) {
             // can happen when trying to fetch voicemails from a SIM that is no longer on the
             // device
@@ -154,12 +156,10 @@
    * format. There's a chance of M phone account collisions on multi-SIM devices, but visual
    * voicemail is not supported on M multi-SIM.
    */
+  @SuppressLint("MissingPermission")
   @Nullable
   private static PhoneAccountHandle getAccountFromMarshmallowAccount(
       Context context, PhoneAccountHandle oldAccount) {
-    if (!BuildCompat.isAtLeastN()) {
-      return null;
-    }
     for (PhoneAccountHandle handle :
         context.getSystemService(TelecomManager.class).getCallCapablePhoneAccounts()) {
       if (getIccSerialNumberFromFullIccSerialNumber(handle.getId()).equals(oldAccount.getId())) {
@@ -198,38 +198,34 @@
 
   private void fetchVoicemail(final Network network, final VoicemailStatus.Editor status) {
     Executor executor = Executors.newCachedThreadPool();
-    executor.execute(
-        new Runnable() {
-          @Override
-          public void run() {
-            if (networkCallback != null) {
-                networkCallback.waitForIpv4();
+    executor.execute(() -> {
+      if (networkCallback != null) {
+          networkCallback.waitForIpv4();
+      }
+      try {
+        while (retryCount > 0) {
+          VvmLog.i(TAG, "fetching voicemail, retry count=" + retryCount);
+          try (ImapHelper imapHelper =
+              new ImapHelper(context, phoneAccount, network, status)) {
+            boolean success =
+                imapHelper.fetchVoicemailPayload(
+                    new VoicemailFetchedCallback(context, uri, phoneAccount), uid);
+            if (!success && retryCount > 0) {
+              VvmLog.i(TAG, "fetch voicemail failed, retrying");
+              retryCount--;
+            } else {
+              return;
             }
-            try {
-              while (retryCount > 0) {
-                VvmLog.i(TAG, "fetching voicemail, retry count=" + retryCount);
-                try (ImapHelper imapHelper =
-                    new ImapHelper(context, phoneAccount, network, status)) {
-                  boolean success =
-                      imapHelper.fetchVoicemailPayload(
-                          new VoicemailFetchedCallback(context, uri, phoneAccount), uid);
-                  if (!success && retryCount > 0) {
-                    VvmLog.i(TAG, "fetch voicemail failed, retrying");
-                    retryCount--;
-                  } else {
-                    return;
-                  }
-                } catch (InitializingException e) {
-                  VvmLog.w(TAG, "Can't retrieve Imap credentials ", e);
-                  return;
-                }
-              }
-            } finally {
-              if (networkCallback != null) {
-                networkCallback.releaseNetwork();
-              }
-            }
+          } catch (InitializingException e) {
+            VvmLog.w(TAG, "Can't retrieve Imap credentials ", e);
+            return;
           }
-        });
+        }
+      } finally {
+        if (networkCallback != null) {
+          networkCallback.releaseNetwork();
+        }
+      }
+    });
   }
 }
diff --git a/java/com/android/voicemail/impl/fetch/VoicemailFetchedCallback.java b/java/com/android/voicemail/impl/fetch/VoicemailFetchedCallback.java
index 78dbdc0..61e0669 100644
--- a/java/com/android/voicemail/impl/fetch/VoicemailFetchedCallback.java
+++ b/java/com/android/voicemail/impl/fetch/VoicemailFetchedCallback.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,23 +16,26 @@
  */
 package com.android.voicemail.impl.fetch;
 
+import android.annotation.SuppressLint;
 import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.content.Context;
 import android.net.Uri;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
-import com.android.dialer.common.concurrent.ThreadUtil;
 import com.android.voicemail.impl.R;
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.imap.VoicemailPayload;
-import com.android.voicemail.impl.transcribe.TranscriptionService;
+
+import org.apache.commons.io.IOUtils;
+
 import java.io.IOException;
 import java.io.OutputStream;
-import org.apache.commons.io.IOUtils;
 
 /**
  * Callback for when a voicemail payload is fetched. It copies the returned stream to the data file
@@ -58,6 +62,7 @@
    *
    * @param voicemailPayload The object containing the content data for the voicemail
    */
+  @SuppressLint("MissingPermission")
   public void setVoicemailContent(@Nullable VoicemailPayload voicemailPayload) {
     Assert.isWorkerThread();
     if (voicemailPayload == null) {
@@ -94,15 +99,7 @@
     ContentValues values = new ContentValues();
     values.put(Voicemails.MIME_TYPE, voicemailPayload.getMimeType());
     values.put(Voicemails.HAS_CONTENT, true);
-    if (updateVoicemail(values)) {
-      ThreadUtil.postOnUiThread(
-          () -> {
-            if (!TranscriptionService.scheduleNewVoicemailTranscriptionJob(
-                context, uri, phoneAccountHandle, true)) {
-              VvmLog.w(TAG, String.format("Failed to schedule transcription for %s", uri));
-            }
-          });
-    }
+    updateVoicemail(values);
   }
 
   private boolean updateVoicemail(ContentValues values) {
diff --git a/java/com/android/voicemail/impl/imap/ImapHelper.java b/java/com/android/voicemail/impl/imap/ImapHelper.java
index 02453f7..955eba9 100644
--- a/java/com/android/voicemail/impl/imap/ImapHelper.java
+++ b/java/com/android/voicemail/impl/imap/ImapHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,10 +19,12 @@
 import android.content.Context;
 import android.net.ConnectivityManager;
 import android.net.Network;
-import android.net.NetworkInfo;
-import android.support.annotation.Nullable;
+import android.net.NetworkCapabilities;
 import android.telecom.PhoneAccountHandle;
 import android.util.Base64;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.PinChanger;
 import com.android.voicemail.PinChanger.ChangePinResult;
 import com.android.voicemail.impl.OmtpConstants;
@@ -51,6 +54,9 @@
 import com.android.voicemail.impl.mail.store.imap.ImapResponse;
 import com.android.voicemail.impl.mail.utils.LogUtils;
 import com.android.voicemail.impl.sync.OmtpVvmSyncService.TranscriptionFetchedCallback;
+
+import org.apache.commons.io.IOUtils;
+
 import java.io.BufferedOutputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.Closeable;
@@ -59,7 +65,6 @@
 import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
-import org.apache.commons.io.IOUtils;
 
 /** A helper interface to abstract commands sent across IMAP interface for a given account. */
 public class ImapHelper implements Closeable {
@@ -67,7 +72,7 @@
   private static final String TAG = "ImapHelper";
 
   private ImapFolder folder;
-  private ImapStore imapStore;
+  private final ImapStore imapStore;
 
   private final Context context;
   private final PhoneAccountHandle phoneAccount;
@@ -120,6 +125,10 @@
       int port = Integer.parseInt(prefs.getString(OmtpConstants.IMAP_PORT, null));
       int auth = ImapStore.FLAG_NONE;
 
+      if (serverName != null) {
+        serverName = serverName.replaceFirst("[12]:", "");
+      }
+
       int sslPort = this.config.getSslPort();
       if (sslPort != 0) {
         port = sslPort;
@@ -130,7 +139,7 @@
     } catch (NumberFormatException e) {
       handleEvent(OmtpEvents.DATA_INVALID_PORT);
       LogUtils.w(TAG, "Could not parse port number");
-      throw new InitializingException("cannot initialize ImapHelper:" + e.toString());
+      throw new InitializingException("cannot initialize ImapHelper:" + e);
     }
   }
 
@@ -142,11 +151,12 @@
   public boolean isRoaming() {
     ConnectivityManager connectivityManager =
         (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
-    NetworkInfo info = connectivityManager.getNetworkInfo(network);
-    if (info == null) {
+    NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
+    if (capabilities == null) {
       return false;
     }
-    return info.isRoaming();
+    return !capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING);
+
   }
 
   public OmtpVvmCarrierConfigHelper getConfig() {
@@ -203,7 +213,7 @@
    * @return A list of voicemail objects containing data about voicemails stored on the server.
    */
   public List<Voicemail> fetchAllVoicemails() {
-    List<Voicemail> result = new ArrayList<Voicemail>();
+    List<Voicemail> result = new ArrayList<>();
     Message[] messages;
     try {
       folder = openImapFolder(ImapFolder.MODE_READ_WRITE);
@@ -324,7 +334,7 @@
       VoicemailPayload voicemailPayload = fetchVoicemailPayload(message);
       callback.setVoicemailContent(voicemailPayload);
       return true;
-    } catch (MessagingException e) {
+    } catch (MessagingException ignored) {
     } finally {
       closeImapFolder();
     }
diff --git a/java/com/android/voicemail/impl/mail/Address.java b/java/com/android/voicemail/impl/mail/Address.java
index 7556e4d..c92cb9e 100644
--- a/java/com/android/voicemail/impl/mail/Address.java
+++ b/java/com/android/voicemail/impl/mail/Address.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,18 +18,17 @@
 
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.support.annotation.VisibleForTesting;
-import android.text.Html;
 import android.text.TextUtils;
 import android.text.util.Rfc822Token;
 import android.text.util.Rfc822Tokenizer;
-import com.android.voicemail.impl.mail.utils.LogUtils;
-import java.util.ArrayList;
-import java.util.regex.Pattern;
+
 import org.apache.james.mime4j.codec.DecodeMonitor;
 import org.apache.james.mime4j.codec.DecoderUtil;
 import org.apache.james.mime4j.codec.EncoderUtil;
 
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+
 /**
  * This class represent email address.
  *
@@ -47,12 +47,6 @@
    */
   private String personal;
 
-  /**
-   * When personal is set, it will return the first token of the personal string. Otherwise, it will
-   * return the e-mail address up to the '@' sign.
-   */
-  private String simplifiedName;
-
   // Regex that matches address surrounded by '<>' optionally. '^<?([^>]+)>?$'
   private static final Pattern REMOVE_OPTIONAL_BRACKET = Pattern.compile("^<?([^>]+)>?$");
   // Regex that matches personal name surrounded by '""' optionally. '^"?([^"]+)"?$'
@@ -75,13 +69,6 @@
 
   private static final Address[] EMPTY_ADDRESS_ARRAY = new Address[0];
 
-  // delimiters are chars that do not appear in an email address, used by fromHeader
-  private static final char LIST_DELIMITER_EMAIL = '\1';
-  private static final char LIST_DELIMITER_PERSONAL = '\2';
-
-  private static final String LOG_TAG = "Email Address";
-
-  @VisibleForTesting
   public Address(String address) {
     setAddress(address);
   }
@@ -91,51 +78,6 @@
     setAddress(address);
   }
 
-  /**
-   * Returns a simplified string for this e-mail address. When a name is known, it will return the
-   * first token of that name. Otherwise, it will return the e-mail address up to the '@' sign.
-   */
-  public String getSimplifiedName() {
-    if (simplifiedName == null) {
-      if (TextUtils.isEmpty(personal) && !TextUtils.isEmpty(address)) {
-        int atSign = address.indexOf('@');
-        simplifiedName = (atSign != -1) ? address.substring(0, atSign) : "";
-      } else if (!TextUtils.isEmpty(personal)) {
-
-        // TODO: use Contacts' NameSplitter for more reliable first-name extraction
-
-        int end = personal.indexOf(' ');
-        while (end > 0 && personal.charAt(end - 1) == ',') {
-          end--;
-        }
-        simplifiedName = (end < 1) ? personal : personal.substring(0, end);
-
-      } else {
-        LogUtils.w(LOG_TAG, "Unable to get a simplified name");
-        simplifiedName = "";
-      }
-    }
-    return simplifiedName;
-  }
-
-  public static synchronized Address getEmailAddress(String rawAddress) {
-    if (TextUtils.isEmpty(rawAddress)) {
-      return null;
-    }
-    String name;
-    String address;
-    final Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(rawAddress);
-    if (tokens.length > 0) {
-      final String tokenizedName = tokens[0].getName();
-      name = tokenizedName != null ? Html.fromHtml(tokenizedName.trim()).toString() : "";
-      address = Html.fromHtml(tokens[0].getAddress()).toString();
-    } else {
-      name = "";
-      address = rawAddress == null ? "" : Html.fromHtml(rawAddress).toString();
-    }
-    return new Address(address, name);
-  }
-
   public String getAddress() {
     return address;
   }
@@ -145,15 +87,6 @@
   }
 
   /**
-   * Get name part as UTF-16 string. No surrounding double quote, and no MIME/base64 encoding.
-   *
-   * @return Name part of email address. Returns null if it is omitted.
-   */
-  public String getPersonal() {
-    return personal;
-  }
-
-  /**
    * Set personal part from UTF-16 string. Optional surrounding double quote will be removed. It
    * will be also unquoted and MIME/base64 decoded.
    *
@@ -182,27 +115,6 @@
   }
 
   /**
-   * This method is used to check that all the addresses that the user entered in a list (e.g. To:)
-   * are valid, so that none is dropped.
-   */
-  @VisibleForTesting
-  public static boolean isAllValid(String addressList) {
-    // This code mimics the parse() method below.
-    // I don't know how to better avoid the code-duplication.
-    if (addressList != null && addressList.length() > 0) {
-      Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(addressList);
-      for (int i = 0, length = tokens.length; i < length; ++i) {
-        Rfc822Token token = tokens[i];
-        String address = token.getAddress();
-        if (!TextUtils.isEmpty(address) && !isValidAddress(address)) {
-          return false;
-        }
-      }
-    }
-    return true;
-  }
-
-  /**
    * Parse a comma-delimited list of addresses in RFC822 format and return an array of Address
    * objects.
    *
@@ -214,7 +126,7 @@
       return EMPTY_ADDRESS_ARRAY;
     }
     Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(addressList);
-    ArrayList<Address> addresses = new ArrayList<Address>();
+    ArrayList<Address> addresses = new ArrayList<>();
     for (int i = 0, length = tokens.length; i < length; ++i) {
       Rfc822Token token = tokens[i];
       String address = token.getAddress();
@@ -228,11 +140,10 @@
         }
       }
     }
-    return addresses.toArray(new Address[addresses.size()]);
+    return addresses.toArray(new Address[0]);
   }
 
   /** Checks whether a string email address is valid. E.g. name@domain.com is valid. */
-  @VisibleForTesting
   static boolean isValidAddress(final String address) {
     return EMAIL_ADDRESS.matcher(address).find();
   }
@@ -296,40 +207,6 @@
   }
 
   /**
-   * Get human readable comma-delimited address string.
-   *
-   * @param addresses Address array
-   * @return Human readable comma-delimited address string.
-   */
-  @VisibleForTesting
-  public static String toString(Address[] addresses) {
-    return toString(addresses, ADDRESS_DELIMETER);
-  }
-
-  /**
-   * Get human readable address strings joined with the specified separator.
-   *
-   * @param addresses Address array
-   * @param separator Separator
-   * @return Human readable comma-delimited address string.
-   */
-  public static String toString(Address[] addresses, String separator) {
-    if (addresses == null || addresses.length == 0) {
-      return null;
-    }
-    if (addresses.length == 1) {
-      return addresses[0].toString();
-    }
-    StringBuilder sb = new StringBuilder(addresses[0].toString());
-    for (int i = 1; i < addresses.length; i++) {
-      sb.append(separator);
-      // TODO: investigate why this .trim() is needed.
-      sb.append(addresses[i].toString().trim());
-    }
-    return sb.toString();
-  }
-
-  /**
    * Get RFC822/MIME compatible address string.
    *
    * @return RFC822/MIME compatible address string. It may be surrounded by double quote or quoted
@@ -343,154 +220,6 @@
     }
   }
 
-  /**
-   * Get RFC822/MIME compatible comma-delimited address string.
-   *
-   * @param addresses Address array
-   * @return RFC822/MIME compatible comma-delimited address string. it may be surrounded by double
-   *     quoted or quoted and MIME/base64 encoded if necessary.
-   */
-  public static String toHeader(Address[] addresses) {
-    if (addresses == null || addresses.length == 0) {
-      return null;
-    }
-    if (addresses.length == 1) {
-      return addresses[0].toHeader();
-    }
-    StringBuilder sb = new StringBuilder(addresses[0].toHeader());
-    for (int i = 1; i < addresses.length; i++) {
-      // We need space character to be able to fold line.
-      sb.append(", ");
-      sb.append(addresses[i].toHeader());
-    }
-    return sb.toString();
-  }
-
-  /**
-   * Get Human friendly address string.
-   *
-   * @return the personal part of this Address, or the address part if the personal part is not
-   *     available
-   */
-  @VisibleForTesting
-  public String toFriendly() {
-    if (personal != null && personal.length() > 0) {
-      return personal;
-    } else {
-      return address;
-    }
-  }
-
-  /**
-   * Creates a comma-delimited list of addresses in the "friendly" format (see toFriendly() for
-   * details on the per-address conversion).
-   *
-   * @param addresses Array of Address[] values
-   * @return A comma-delimited string listing all of the addresses supplied. Null if source was null
-   *     or empty.
-   */
-  @VisibleForTesting
-  public static String toFriendly(Address[] addresses) {
-    if (addresses == null || addresses.length == 0) {
-      return null;
-    }
-    if (addresses.length == 1) {
-      return addresses[0].toFriendly();
-    }
-    StringBuilder sb = new StringBuilder(addresses[0].toFriendly());
-    for (int i = 1; i < addresses.length; i++) {
-      sb.append(", ");
-      sb.append(addresses[i].toFriendly());
-    }
-    return sb.toString();
-  }
-
-  /** Returns exactly the same result as Address.toString(Address.fromHeader(addressList)). */
-  @VisibleForTesting
-  public static String fromHeaderToString(String addressList) {
-    return toString(fromHeader(addressList));
-  }
-
-  /** Returns exactly the same result as Address.toHeader(Address.parse(addressList)). */
-  @VisibleForTesting
-  public static String parseToHeader(String addressList) {
-    return Address.toHeader(Address.parse(addressList));
-  }
-
-  /**
-   * Returns null if the addressList has 0 addresses, otherwise returns the first address. The same
-   * as Address.fromHeader(addressList)[0] for non-empty list. This is an utility method that offers
-   * some performance optimization opportunities.
-   */
-  @VisibleForTesting
-  public static Address firstAddress(String addressList) {
-    Address[] array = fromHeader(addressList);
-    return array.length > 0 ? array[0] : null;
-  }
-
-  /**
-   * This method exists to convert an address list formatted in a deprecated legacy format to the
-   * standard RFC822 header format. {@link #fromHeader(String)} is capable of reading the legacy
-   * format and the RFC822 format. {@link #toHeader()} always produces the RFC822 format.
-   *
-   * <p>This implementation is brute-force, and could be replaced with a more efficient version if
-   * desired.
-   */
-  public static String reformatToHeader(String addressList) {
-    return toHeader(fromHeader(addressList));
-  }
-
-  /**
-   * @param addressList a CSV of RFC822 addresses or the deprecated legacy string format
-   * @return array of addresses parsed from <code>addressList</code>
-   */
-  @VisibleForTesting
-  public static Address[] fromHeader(String addressList) {
-    if (addressList == null || addressList.length() == 0) {
-      return EMPTY_ADDRESS_ARRAY;
-    }
-    // IF we're CSV, just parse
-    if ((addressList.indexOf(LIST_DELIMITER_PERSONAL) == -1)
-        && (addressList.indexOf(LIST_DELIMITER_EMAIL) == -1)) {
-      return Address.parse(addressList);
-    }
-    // Otherwise, do backward-compatible unpack
-    ArrayList<Address> addresses = new ArrayList<Address>();
-    int length = addressList.length();
-    int pairStartIndex = 0;
-    int pairEndIndex;
-
-    /* addressEndIndex is only re-scanned (indexOf()) when a LIST_DELIMITER_PERSONAL
-       is used, not for every email address; i.e. not for every iteration of the while().
-       This reduces the theoretical complexity from quadratic to linear,
-       and provides some speed-up in practice by removing redundant scans of the string.
-    */
-    int addressEndIndex = addressList.indexOf(LIST_DELIMITER_PERSONAL);
-
-    while (pairStartIndex < length) {
-      pairEndIndex = addressList.indexOf(LIST_DELIMITER_EMAIL, pairStartIndex);
-      if (pairEndIndex == -1) {
-        pairEndIndex = length;
-      }
-      Address address;
-      if (addressEndIndex == -1 || pairEndIndex <= addressEndIndex) {
-        // in this case the DELIMITER_PERSONAL is in a future pair,
-        // so don't use personal, and don't update addressEndIndex
-        address = new Address(addressList.substring(pairStartIndex, pairEndIndex), null);
-      } else {
-        address =
-            new Address(
-                addressList.substring(pairStartIndex, addressEndIndex),
-                addressList.substring(addressEndIndex + 1, pairEndIndex));
-        // only update addressEndIndex when we use the LIST_DELIMITER_PERSONAL
-        addressEndIndex = addressList.indexOf(LIST_DELIMITER_PERSONAL, pairEndIndex + 1);
-      }
-      addresses.add(address);
-      pairStartIndex = pairEndIndex + 1;
-    }
-    return addresses.toArray(new Address[addresses.size()]);
-  }
-
   public static final Creator<Address> CREATOR =
       new Creator<Address>() {
         @Override
diff --git a/java/com/android/voicemail/impl/mail/Base64Body.java b/java/com/android/voicemail/impl/mail/Base64Body.java
index 5c14296..82d6d8b 100644
--- a/java/com/android/voicemail/impl/mail/Base64Body.java
+++ b/java/com/android/voicemail/impl/mail/Base64Body.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,12 @@
 
 import android.util.Base64;
 import android.util.Base64OutputStream;
+
+import org.apache.commons.io.IOUtils;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import org.apache.commons.io.IOUtils;
 
 public class Base64Body implements Body {
   private final InputStream source;
diff --git a/java/com/android/voicemail/impl/mail/Body.java b/java/com/android/voicemail/impl/mail/Body.java
index 3ad81bc..d4b04fc 100644
--- a/java/com/android/voicemail/impl/mail/Body.java
+++ b/java/com/android/voicemail/impl/mail/Body.java
@@ -20,7 +20,7 @@
 import java.io.OutputStream;
 
 public interface Body {
-  public InputStream getInputStream() throws MessagingException;
+  InputStream getInputStream() throws MessagingException;
 
-  public void writeTo(OutputStream out) throws IOException, MessagingException;
+  void writeTo(OutputStream out) throws IOException, MessagingException;
 }
diff --git a/java/com/android/voicemail/impl/mail/MailTransport.java b/java/com/android/voicemail/impl/mail/MailTransport.java
index a2a6a69..1598058 100644
--- a/java/com/android/voicemail/impl/mail/MailTransport.java
+++ b/java/com/android/voicemail/impl/mail/MailTransport.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,12 +19,13 @@
 import android.content.Context;
 import android.net.Network;
 import android.net.TrafficStats;
-import android.support.annotation.VisibleForTesting;
+
 import com.android.dialer.constants.TrafficStatsTags;
 import com.android.voicemail.impl.OmtpEvents;
 import com.android.voicemail.impl.imap.ImapHelper;
 import com.android.voicemail.impl.mail.store.ImapStore;
 import com.android.voicemail.impl.mail.utils.LogUtils;
+
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
 import java.io.IOException;
@@ -34,6 +36,7 @@
 import java.net.Socket;
 import java.util.ArrayList;
 import java.util.List;
+
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.HttpsURLConnection;
 import javax.net.ssl.SSLException;
@@ -61,7 +64,6 @@
   private BufferedInputStream in;
   private BufferedOutputStream out;
   private final int flags;
-  private SocketCreator socketCreator;
   private InetSocketAddress address;
 
   public MailTransport(
@@ -101,9 +103,9 @@
    * SSL connection if indicated.
    */
   public void open() throws MessagingException {
-    LogUtils.d(TAG, "*** IMAP open " + host + ":" + String.valueOf(port));
+    LogUtils.d(TAG, "*** IMAP open " + host + ":" + port);
 
-    List<InetSocketAddress> socketAddresses = new ArrayList<InetSocketAddress>();
+    List<InetSocketAddress> socketAddresses = new ArrayList<>();
 
     if (network == null) {
       socketAddresses.add(new InetSocketAddress(host, port));
@@ -166,23 +168,7 @@
     }
   }
 
-  // For testing. We need something that can replace the behavior of "new Socket()"
-  @VisibleForTesting
-  interface SocketCreator {
-
-    Socket createSocket() throws MessagingException;
-  }
-
-  @VisibleForTesting
-  void setSocketCreator(SocketCreator creator) {
-    socketCreator = creator;
-  }
-
   protected Socket createSocket() throws MessagingException {
-    if (socketCreator != null) {
-      return socketCreator.createSocket();
-    }
-
     if (network == null) {
       LogUtils.v(TAG, "createSocket: network not specified");
       return new Socket();
diff --git a/java/com/android/voicemail/impl/mail/Message.java b/java/com/android/voicemail/impl/mail/Message.java
index 4e2c642..9b7f168 100644
--- a/java/com/android/voicemail/impl/mail/Message.java
+++ b/java/com/android/voicemail/impl/mail/Message.java
@@ -15,8 +15,8 @@
  */
 package com.android.voicemail.impl.mail;
 
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
+import androidx.annotation.Nullable;
+
 import java.util.Date;
 import java.util.HashSet;
 
@@ -51,39 +51,19 @@
 
   public abstract void setSubject(String subject) throws MessagingException;
 
-  public Date getInternalDate() {
-    return internalDate;
-  }
-
   public void setInternalDate(Date internalDate) {
     this.internalDate = internalDate;
   }
 
-  public abstract Date getReceivedDate() throws MessagingException;
-
   public abstract Date getSentDate() throws MessagingException;
 
-  public abstract void setSentDate(Date sentDate) throws MessagingException;
-
   @Nullable
   public abstract Long getDuration() throws MessagingException;
 
-  public abstract Address[] getRecipients(String type) throws MessagingException;
-
-  public abstract void setRecipients(String type, Address[] addresses) throws MessagingException;
-
-  public void setRecipient(String type, Address address) throws MessagingException {
-    setRecipients(type, new Address[] {address});
-  }
-
   public abstract Address[] getFrom() throws MessagingException;
 
   public abstract void setFrom(Address from) throws MessagingException;
 
-  public abstract Address[] getReplyTo() throws MessagingException;
-
-  public abstract void setReplyTo(Address[] from) throws MessagingException;
-
   // Always use these instead of getHeader("Message-ID") or setHeader("Message-ID");
   public abstract void setMessageId(String messageId) throws MessagingException;
 
@@ -96,7 +76,7 @@
 
   private HashSet<String> getFlagSet() {
     if (flags == null) {
-      flags = new HashSet<String>();
+      flags = new HashSet<>();
     }
     return flags;
   }
@@ -108,22 +88,7 @@
     return getFlagSet().toArray(new String[] {});
   }
 
-  /**
-   * Set/clear a flag directly, without involving overrides of {@link #setFlag} in subclasses. Only
-   * used for testing.
-   */
-  @VisibleForTesting
-  private final void setFlagDirectlyForTest(String flag, boolean set) throws MessagingException {
-    if (set) {
-      getFlagSet().add(flag);
-    } else {
-      getFlagSet().remove(flag);
-    }
-  }
-
-  public void setFlag(String flag, boolean set) throws MessagingException {
-    setFlagDirectlyForTest(flag, set);
-  }
+  public void setFlag(String flag, boolean set) throws MessagingException { }
 
   /**
    * This method calls setFlag(String, boolean)
@@ -137,12 +102,6 @@
     }
   }
 
-  public boolean isSet(String flag) {
-    return getFlagSet().contains(flag);
-  }
-
-  public abstract void saveChanges() throws MessagingException;
-
   @Override
   public String toString() {
     return getClass().getSimpleName() + ':' + uid;
diff --git a/java/com/android/voicemail/impl/mail/MessagingException.java b/java/com/android/voicemail/impl/mail/MessagingException.java
index fda5fbc..8522769 100644
--- a/java/com/android/voicemail/impl/mail/MessagingException.java
+++ b/java/com/android/voicemail/impl/mail/MessagingException.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -70,9 +71,9 @@
   /** The server indicates it experienced an internal error */
   public static final int SERVER_ERROR = 19;
 
-  protected int exceptionType;
+  protected final int exceptionType;
   // Exception type-specific data
-  protected Object exceptionData;
+  protected final Object exceptionData;
 
   public MessagingException(String message, Throwable throwable) {
     this(UNSPECIFIED_EXCEPTION, message, throwable);
diff --git a/java/com/android/voicemail/impl/mail/Multipart.java b/java/com/android/voicemail/impl/mail/Multipart.java
index c226ca5..429a262 100644
--- a/java/com/android/voicemail/impl/mail/Multipart.java
+++ b/java/com/android/voicemail/impl/mail/Multipart.java
@@ -20,7 +20,7 @@
 public abstract class Multipart implements Body {
   protected Part parent;
 
-  protected ArrayList<BodyPart> parts = new ArrayList<BodyPart>();
+  protected final ArrayList<BodyPart> parts = new ArrayList<>();
 
   protected String contentType;
 
diff --git a/java/com/android/voicemail/impl/mail/PackedString.java b/java/com/android/voicemail/impl/mail/PackedString.java
index de04b6b..66b5512 100644
--- a/java/com/android/voicemail/impl/mail/PackedString.java
+++ b/java/com/android/voicemail/impl/mail/PackedString.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
 package com.android.voicemail.impl.mail;
 
 import android.util.ArrayMap;
+
 import java.util.Map;
 
 /**
@@ -36,9 +38,9 @@
 
   private static final char DELIMITER_TAG = '\2';
 
-  private String string;
+  private final String string;
   private ArrayMap<String, String> exploded;
-  private static final ArrayMap<String, String> EMPTY_MAP = new ArrayMap<String, String>();
+  private static final ArrayMap<String, String> EMPTY_MAP = new ArrayMap<>();
 
   /**
    * Create a packed string using an already-packed string (e.g. from database)
@@ -73,7 +75,7 @@
     if (exploded == null) {
       exploded = explode(string);
     }
-    return new ArrayMap<String, String>(exploded);
+    return new ArrayMap<>(exploded);
   }
 
   /** Read out all values into a map. */
@@ -81,7 +83,7 @@
     if (packed == null || packed.length() == 0) {
       return EMPTY_MAP;
     }
-    ArrayMap<String, String> map = new ArrayMap<String, String>();
+    ArrayMap<String, String> map = new ArrayMap<>();
 
     int length = packed.length();
     int elementStartIndex = 0;
@@ -118,11 +120,11 @@
    * PackedString representations.
    */
   public static class Builder {
-    ArrayMap<String, String> map;
+    final ArrayMap<String, String> map;
 
     /** Create a builder that's empty (for filling) */
     public Builder() {
-      map = new ArrayMap<String, String>();
+      map = new ArrayMap<>();
     }
 
     /** Create a builder using the values of an existing PackedString (for editing). */
diff --git a/java/com/android/voicemail/impl/mail/Part.java b/java/com/android/voicemail/impl/mail/Part.java
index 3be5c57..4a681b6 100644
--- a/java/com/android/voicemail/impl/mail/Part.java
+++ b/java/com/android/voicemail/impl/mail/Part.java
@@ -19,33 +19,33 @@
 import java.io.OutputStream;
 
 public interface Part extends Fetchable {
-  public void addHeader(String name, String value) throws MessagingException;
+  void addHeader(String name, String value) throws MessagingException;
 
-  public void removeHeader(String name) throws MessagingException;
+  void removeHeader(String name) throws MessagingException;
 
-  public void setHeader(String name, String value) throws MessagingException;
+  void setHeader(String name, String value) throws MessagingException;
 
-  public Body getBody() throws MessagingException;
+  Body getBody() throws MessagingException;
 
-  public String getContentType() throws MessagingException;
+  String getContentType() throws MessagingException;
 
-  public String getDisposition() throws MessagingException;
+  String getDisposition() throws MessagingException;
 
-  public String getContentId() throws MessagingException;
+  String getContentId() throws MessagingException;
 
-  public String[] getHeader(String name) throws MessagingException;
+  String[] getHeader(String name) throws MessagingException;
 
-  public void setExtendedHeader(String name, String value) throws MessagingException;
+  void setExtendedHeader(String name, String value) throws MessagingException;
 
-  public String getExtendedHeader(String name) throws MessagingException;
+  String getExtendedHeader(String name) throws MessagingException;
 
-  public int getSize() throws MessagingException;
+  int getSize() throws MessagingException;
 
-  public boolean isMimeType(String mimeType) throws MessagingException;
+  boolean isMimeType(String mimeType) throws MessagingException;
 
-  public String getMimeType() throws MessagingException;
+  String getMimeType() throws MessagingException;
 
-  public void setBody(Body body) throws MessagingException;
+  void setBody(Body body) throws MessagingException;
 
-  public void writeTo(OutputStream out) throws IOException, MessagingException;
+  void writeTo(OutputStream out) throws IOException, MessagingException;
 }
diff --git a/java/com/android/voicemail/impl/mail/TempDirectory.java b/java/com/android/voicemail/impl/mail/TempDirectory.java
index f12e45b..e8151d5 100644
--- a/java/com/android/voicemail/impl/mail/TempDirectory.java
+++ b/java/com/android/voicemail/impl/mail/TempDirectory.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
 package com.android.voicemail.impl.mail;
 
 import android.content.Context;
+
 import java.io.File;
 
 /**
diff --git a/java/com/android/voicemail/impl/mail/internet/BinaryTempFileBody.java b/java/com/android/voicemail/impl/mail/internet/BinaryTempFileBody.java
index d1521bd..ccecff2 100644
--- a/java/com/android/voicemail/impl/mail/internet/BinaryTempFileBody.java
+++ b/java/com/android/voicemail/impl/mail/internet/BinaryTempFileBody.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,17 +18,19 @@
 
 import android.util.Base64;
 import android.util.Base64OutputStream;
+
 import com.android.voicemail.impl.mail.Body;
 import com.android.voicemail.impl.mail.MessagingException;
 import com.android.voicemail.impl.mail.TempDirectory;
+
+import org.apache.commons.io.IOUtils;
+
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import org.apache.commons.io.IOUtils;
+import java.nio.file.Files;
 
 /**
  * A Body that is backed by a temp file. The Body exposes a getOutputStream method that allows the
@@ -51,13 +54,13 @@
   public OutputStream getOutputStream() throws IOException {
     file = File.createTempFile("body", null, TempDirectory.getTempDirectory());
     file.deleteOnExit();
-    return new FileOutputStream(file);
+    return Files.newOutputStream(file.toPath());
   }
 
   @Override
   public InputStream getInputStream() throws MessagingException {
     try {
-      return new BinaryTempFileBodyInputStream(new FileInputStream(file));
+      return new BinaryTempFileBodyInputStream(Files.newInputStream(file.toPath()));
     } catch (IOException ioe) {
       throw new MessagingException("Unable to open body", ioe);
     }
diff --git a/java/com/android/voicemail/impl/mail/internet/MimeBodyPart.java b/java/com/android/voicemail/impl/mail/internet/MimeBodyPart.java
index 12a2b0b..f80afb3 100644
--- a/java/com/android/voicemail/impl/mail/internet/MimeBodyPart.java
+++ b/java/com/android/voicemail/impl/mail/internet/MimeBodyPart.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import com.android.voicemail.impl.mail.BodyPart;
 import com.android.voicemail.impl.mail.MessagingException;
 import com.android.voicemail.impl.mail.Multipart;
+
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -27,7 +29,7 @@
 
 /** TODO this is a close approximation of Message, need to update along with Message. */
 public class MimeBodyPart extends BodyPart {
-  protected MimeHeader header = new MimeHeader();
+  protected final MimeHeader header = new MimeHeader();
   protected MimeHeader extendedHeader;
   protected Body body;
   protected int size;
@@ -112,12 +114,7 @@
 
   @Override
   public String getDisposition() throws MessagingException {
-    String contentDisposition = getFirstHeader(MimeHeader.HEADER_CONTENT_DISPOSITION);
-    if (contentDisposition == null) {
-      return null;
-    } else {
-      return contentDisposition;
-    }
+    return getFirstHeader(MimeHeader.HEADER_CONTENT_DISPOSITION);
   }
 
   @Override
diff --git a/java/com/android/voicemail/impl/mail/internet/MimeHeader.java b/java/com/android/voicemail/impl/mail/internet/MimeHeader.java
index 00a9ecc..101b5ab 100644
--- a/java/com/android/voicemail/impl/mail/internet/MimeHeader.java
+++ b/java/com/android/voicemail/impl/mail/internet/MimeHeader.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,6 +17,7 @@
 package com.android.voicemail.impl.mail.internet;
 
 import com.android.voicemail.impl.mail.MessagingException;
+
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -45,7 +47,7 @@
     HEADER_ANDROID_ATTACHMENT_STORE_DATA
   };
 
-  protected final ArrayList<Field> fields = new ArrayList<Field>();
+  protected final ArrayList<Field> fields = new ArrayList<>();
 
   public void clear() {
     fields.clear();
@@ -72,7 +74,7 @@
   }
 
   public String[] getHeader(String name) throws MessagingException {
-    ArrayList<String> values = new ArrayList<String>();
+    ArrayList<String> values = new ArrayList<>();
     for (Field field : fields) {
       if (field.name.equalsIgnoreCase(name)) {
         values.add(field.value);
@@ -85,7 +87,7 @@
   }
 
   public void removeHeader(String name) throws MessagingException {
-    ArrayList<Field> removeFields = new ArrayList<Field>();
+    ArrayList<Field> removeFields = new ArrayList<>();
     for (Field field : fields) {
       if (field.name.equalsIgnoreCase(name)) {
         removeFields.add(field);
@@ -143,12 +145,12 @@
     return (fields == null) ? null : fields.toString();
   }
 
-  public static final boolean arrayContains(Object[] a, Object o) {
+  public static boolean arrayContains(Object[] a, Object o) {
     int index = arrayIndex(a, o);
     return (index >= 0);
   }
 
-  public static final int arrayIndex(Object[] a, Object o) {
+  public static int arrayIndex(Object[] a, Object o) {
     for (int i = 0, count = a.length; i < count; i++) {
       if (a[i].equals(o)) {
         return i;
diff --git a/java/com/android/voicemail/impl/mail/internet/MimeMessage.java b/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
index 2997ad8..9ca3d58 100644
--- a/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
+++ b/java/com/android/voicemail/impl/mail/internet/MimeMessage.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,8 +16,10 @@
  */
 package com.android.voicemail.impl.mail.internet;
 
-import android.support.annotation.Nullable;
 import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.mail.Address;
 import com.android.voicemail.impl.mail.Body;
@@ -26,6 +29,16 @@
 import com.android.voicemail.impl.mail.Multipart;
 import com.android.voicemail.impl.mail.Part;
 import com.android.voicemail.impl.mail.utils.LogUtils;
+
+import org.apache.james.mime4j.MimeException;
+import org.apache.james.mime4j.dom.field.DateTimeField;
+import org.apache.james.mime4j.field.DefaultFieldParser;
+import org.apache.james.mime4j.io.EOLConvertingInputStream;
+import org.apache.james.mime4j.parser.ContentHandler;
+import org.apache.james.mime4j.parser.MimeStreamParser;
+import org.apache.james.mime4j.stream.BodyDescriptor;
+import org.apache.james.mime4j.stream.Field;
+
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.InputStream;
@@ -36,14 +49,6 @@
 import java.util.Locale;
 import java.util.Stack;
 import java.util.regex.Pattern;
-import org.apache.james.mime4j.MimeException;
-import org.apache.james.mime4j.dom.field.DateTimeField;
-import org.apache.james.mime4j.field.DefaultFieldParser;
-import org.apache.james.mime4j.io.EOLConvertingInputStream;
-import org.apache.james.mime4j.parser.ContentHandler;
-import org.apache.james.mime4j.parser.MimeStreamParser;
-import org.apache.james.mime4j.stream.BodyDescriptor;
-import org.apache.james.mime4j.stream.Field;
 
 /**
  * An implementation of Message that stores all of its metadata in RFC 822 and RFC 2045 style
@@ -105,7 +110,7 @@
       sb.append(c);
     }
     sb.append(".");
-    sb.append(Long.toString(System.currentTimeMillis()));
+    sb.append(System.currentTimeMillis());
     sb.append("@email.android.com>");
     return sb.toString();
   }
@@ -156,11 +161,6 @@
   }
 
   @Override
-  public Date getReceivedDate() throws MessagingException {
-    return null;
-  }
-
-  @Override
   public Date getSentDate() throws MessagingException {
     if (sentDate == null) {
       try {
@@ -193,12 +193,6 @@
   }
 
   @Override
-  public void setSentDate(Date sentDate) throws MessagingException {
-    setHeader("Date", DATE_FORMAT.format(sentDate));
-    this.sentDate = sentDate;
-  }
-
-  @Override
   @Nullable
   public Long getDuration() {
     String durationHeader = null;
@@ -256,66 +250,6 @@
     return size;
   }
 
-  /**
-   * Returns a list of the given recipient type from this message. If no addresses are found the
-   * method returns an empty array.
-   */
-  @Override
-  public Address[] getRecipients(String type) throws MessagingException {
-    if (type == RECIPIENT_TYPE_TO) {
-      if (to == null) {
-        to = Address.parse(MimeUtility.unfold(getFirstHeader("To")));
-      }
-      return to;
-    } else if (type == RECIPIENT_TYPE_CC) {
-      if (cc == null) {
-        cc = Address.parse(MimeUtility.unfold(getFirstHeader("CC")));
-      }
-      return cc;
-    } else if (type == RECIPIENT_TYPE_BCC) {
-      if (bcc == null) {
-        bcc = Address.parse(MimeUtility.unfold(getFirstHeader("BCC")));
-      }
-      return bcc;
-    } else {
-      throw new MessagingException("Unrecognized recipient type.");
-    }
-  }
-
-  @Override
-  public void setRecipients(String type, Address[] addresses) throws MessagingException {
-    final int toLength = 4; // "To: "
-    final int ccLength = 4; // "Cc: "
-    final int bccLength = 5; // "Bcc: "
-    if (type == RECIPIENT_TYPE_TO) {
-      if (addresses == null || addresses.length == 0) {
-        removeHeader("To");
-        this.to = null;
-      } else {
-        setHeader("To", MimeUtility.fold(Address.toHeader(addresses), toLength));
-        this.to = addresses;
-      }
-    } else if (type == RECIPIENT_TYPE_CC) {
-      if (addresses == null || addresses.length == 0) {
-        removeHeader("CC");
-        this.cc = null;
-      } else {
-        setHeader("CC", MimeUtility.fold(Address.toHeader(addresses), ccLength));
-        this.cc = addresses;
-      }
-    } else if (type == RECIPIENT_TYPE_BCC) {
-      if (addresses == null || addresses.length == 0) {
-        removeHeader("BCC");
-        this.bcc = null;
-      } else {
-        setHeader("BCC", MimeUtility.fold(Address.toHeader(addresses), bccLength));
-        this.bcc = addresses;
-      }
-    } else {
-      throw new MessagingException("Unrecognized recipient type.");
-    }
-  }
-
   /** Returns the unfolded, decoded value of the Subject header. */
   @Override
   public String getSubject() throws MessagingException {
@@ -351,26 +285,6 @@
     }
   }
 
-  @Override
-  public Address[] getReplyTo() throws MessagingException {
-    if (replyTo == null) {
-      replyTo = Address.parse(MimeUtility.unfold(getFirstHeader("Reply-to")));
-    }
-    return replyTo;
-  }
-
-  @Override
-  public void setReplyTo(Address[] replyTo) throws MessagingException {
-    final int replyToLength = 10; // "Reply-to: "
-    if (replyTo == null || replyTo.length == 0) {
-      removeHeader("Reply-to");
-      this.replyTo = null;
-    } else {
-      setHeader("Reply-to", MimeUtility.fold(Address.toHeader(replyTo), replyToLength));
-      this.replyTo = replyTo;
-    }
-  }
-
   /**
    * Set the mime "Message-ID" header
    *
@@ -400,11 +314,6 @@
   }
 
   @Override
-  public void saveChanges() throws MessagingException {
-    throw new MessagingException("saveChanges not yet implemented");
-  }
-
-  @Override
   public Body getBody() throws MessagingException {
     return body;
   }
@@ -547,7 +456,7 @@
   }
 
   class MimeMessageBuilder implements ContentHandler {
-    private final Stack<Object> stack = new Stack<Object>();
+    private final Stack<Object> stack = new Stack<>();
 
     public MimeMessageBuilder() {}
 
diff --git a/java/com/android/voicemail/impl/mail/internet/MimeMultipart.java b/java/com/android/voicemail/impl/mail/internet/MimeMultipart.java
index 6cb2c27..0ff3ce0 100644
--- a/java/com/android/voicemail/impl/mail/internet/MimeMultipart.java
+++ b/java/com/android/voicemail/impl/mail/internet/MimeMultipart.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 import com.android.voicemail.impl.mail.BodyPart;
 import com.android.voicemail.impl.mail.MessagingException;
 import com.android.voicemail.impl.mail.Multipart;
+
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/java/com/android/voicemail/impl/mail/internet/MimeUtility.java b/java/com/android/voicemail/impl/mail/internet/MimeUtility.java
index bd85e47..0d9e0dc 100644
--- a/java/com/android/voicemail/impl/mail/internet/MimeUtility.java
+++ b/java/com/android/voicemail/impl/mail/internet/MimeUtility.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.util.Base64;
 import android.util.Base64DataException;
 import android.util.Base64InputStream;
+
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.mail.Body;
 import com.android.voicemail.impl.mail.BodyPart;
@@ -26,6 +28,14 @@
 import com.android.voicemail.impl.mail.MessagingException;
 import com.android.voicemail.impl.mail.Multipart;
 import com.android.voicemail.impl.mail.Part;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.james.mime4j.codec.DecodeMonitor;
+import org.apache.james.mime4j.codec.DecoderUtil;
+import org.apache.james.mime4j.codec.EncoderUtil;
+import org.apache.james.mime4j.codec.QuotedPrintableInputStream;
+import org.apache.james.mime4j.util.CharsetUtil;
+
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -33,12 +43,6 @@
 import java.util.ArrayList;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import org.apache.commons.io.IOUtils;
-import org.apache.james.mime4j.codec.DecodeMonitor;
-import org.apache.james.mime4j.codec.DecoderUtil;
-import org.apache.james.mime4j.codec.EncoderUtil;
-import org.apache.james.mime4j.codec.QuotedPrintableInputStream;
-import org.apache.james.mime4j.util.CharsetUtil;
 
 public class MimeUtility {
   private static final String LOG_TAG = "Email";
@@ -253,18 +257,12 @@
         }
       }
 
-    } catch (OutOfMemoryError oom) {
+    } catch (OutOfMemoryError | Exception oom) {
       /*
        * If we are not able to process the body there's nothing we can do about it. Return
        * null and let the upper layers handle the missing content.
        */
-      VvmLog.e(LOG_TAG, "Unable to getTextFromPart " + oom.toString());
-    } catch (Exception e) {
-      /*
-       * If we are not able to process the body there's nothing we can do about it. Return
-       * null and let the upper layers handle the missing content.
-       */
-      VvmLog.e(LOG_TAG, "Unable to getTextFromPart " + e.toString());
+      VvmLog.e(LOG_TAG, "Unable to getTextFromPart " + oom);
     }
     return null;
   }
diff --git a/java/com/android/voicemail/impl/mail/internet/TextBody.java b/java/com/android/voicemail/impl/mail/internet/TextBody.java
index 506e1f5..c778bc9 100644
--- a/java/com/android/voicemail/impl/mail/internet/TextBody.java
+++ b/java/com/android/voicemail/impl/mail/internet/TextBody.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,16 +17,18 @@
 package com.android.voicemail.impl.mail.internet;
 
 import android.util.Base64;
+
 import com.android.voicemail.impl.mail.Body;
 import com.android.voicemail.impl.mail.MessagingException;
+
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 
 public class TextBody implements Body {
-  String body;
+  final String body;
 
   public TextBody(String body) {
     this.body = body;
@@ -33,7 +36,7 @@
 
   @Override
   public void writeTo(OutputStream out) throws IOException, MessagingException {
-    byte[] bytes = body.getBytes("UTF-8");
+    byte[] bytes = body.getBytes(StandardCharsets.UTF_8);
     out.write(Base64.encode(bytes, Base64.CRLF));
   }
 
@@ -49,11 +52,7 @@
   /** Returns an InputStream that reads this body's text in UTF-8 format. */
   @Override
   public InputStream getInputStream() throws MessagingException {
-    try {
-      byte[] b = body.getBytes("UTF-8");
-      return new ByteArrayInputStream(b);
-    } catch (UnsupportedEncodingException usee) {
-      return null;
-    }
+    byte[] b = body.getBytes(StandardCharsets.UTF_8);
+    return new ByteArrayInputStream(b);
   }
 }
diff --git a/java/com/android/voicemail/impl/mail/store/ImapConnection.java b/java/com/android/voicemail/impl/mail/store/ImapConnection.java
index ac43f8d..8b1ee83 100644
--- a/java/com/android/voicemail/impl/mail/store/ImapConnection.java
+++ b/java/com/android/voicemail/impl/mail/store/ImapConnection.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 
 import android.util.ArraySet;
 import android.util.Base64;
+
 import com.android.voicemail.impl.OmtpEvents;
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.mail.AuthenticationFailedException;
@@ -30,12 +32,14 @@
 import com.android.voicemail.impl.mail.store.imap.ImapResponseParser;
 import com.android.voicemail.impl.mail.store.imap.ImapUtility;
 import com.android.voicemail.impl.mail.utils.LogUtils;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
+
 import javax.net.ssl.SSLException;
 
 /** A cacheable class that stores the details for a single IMAP connection. */
@@ -46,7 +50,7 @@
   private ImapStore imapStore;
   private MailTransport transport;
   private ImapResponseParser parser;
-  private Set<String> capabilities = new ArraySet<>();
+  private final Set<String> capabilities = new ArraySet<>();
 
   static final String IMAP_REDACTED_LOG = "[IMAP command redacted]";
 
@@ -167,6 +171,9 @@
 
   /** Attempts to convert the connection into secure connection. */
   private void maybeDoStartTls() throws IOException, MessagingException {
+    if (imapStore.getImapHelper().getConfig().useDirectTlsConnection()) {
+      return;
+    }
     // STARTTLS is required in the OMTP standard but not every implementation support it.
     // Make sure the server does have this capability
     if (hasCapability(ImapConstants.CAPABILITY_STARTTLS)) {
@@ -179,7 +186,7 @@
   }
 
   /** Logs into the IMAP server */
-  private void doLogin() throws IOException, MessagingException, AuthenticationFailedException {
+  private void doLogin() throws IOException, MessagingException {
     try {
       if (capabilities.contains(ImapConstants.CAPABILITY_AUTH_DIGEST_MD5)) {
         doDigestMd5Auth();
@@ -300,7 +307,7 @@
       }
     }
 
-    LogUtils.d(TAG, "Capabilities: " + capabilities.toString());
+    LogUtils.d(TAG, "Capabilities: " + capabilities);
   }
 
   private boolean hasCapability(String capability) {
@@ -379,7 +386,7 @@
    * @throws MessagingException
    */
   List<ImapResponse> getCommandResponses() throws IOException, MessagingException {
-    final List<ImapResponse> responses = new ArrayList<ImapResponse>();
+    final List<ImapResponse> responses = new ArrayList<>();
     ImapResponse response;
     do {
       response = parser.readResponse(false);
diff --git a/java/com/android/voicemail/impl/mail/store/ImapFolder.java b/java/com/android/voicemail/impl/mail/store/ImapFolder.java
index cd3803d..8bf4756 100644
--- a/java/com/android/voicemail/impl/mail/store/ImapFolder.java
+++ b/java/com/android/voicemail/impl/mail/store/ImapFolder.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +17,12 @@
 package com.android.voicemail.impl.mail.store;
 
 import android.content.Context;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.Base64DataException;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.impl.OmtpEvents;
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.mail.AuthenticationFailedException;
@@ -43,6 +45,7 @@
 import com.android.voicemail.impl.mail.store.imap.ImapResponse;
 import com.android.voicemail.impl.mail.store.imap.ImapString;
 import com.android.voicemail.impl.mail.utils.Utility;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -78,7 +81,7 @@
 
   /** Callback for each message retrieval. */
   public interface MessageRetrievalListener {
-    public void messageRetrieved(Message message);
+    void messageRetrieved(Message message);
   }
 
   private void destroyResponses() {
@@ -151,7 +154,7 @@
 
   String[] getSearchUids(List<ImapResponse> responses) {
     // S: * SEARCH 2 3 6
-    final ArrayList<String> uids = new ArrayList<String>();
+    final ArrayList<String> uids = new ArrayList<>();
     for (ImapResponse response : responses) {
       if (!response.isDataResponse(0, ImapConstants.SEARCH)) {
         continue;
@@ -167,7 +170,6 @@
     return uids.toArray(Utility.EMPTY_STRINGS);
   }
 
-  @VisibleForTesting
   String[] searchForUids(String searchCriteria) throws MessagingException {
     checkOpen();
     try {
@@ -203,7 +205,6 @@
     return null;
   }
 
-  @VisibleForTesting
   protected static boolean isAsciiString(String str) {
     int len = str.length();
     for (int i = 0; i < len; i++) {
@@ -221,7 +222,7 @@
   }
 
   public Message[] getMessagesInternal(String[] uids) {
-    final ArrayList<Message> messages = new ArrayList<Message>(uids.length);
+    final ArrayList<Message> messages = new ArrayList<>(uids.length);
     for (int i = 0; i < uids.length; i++) {
       final String uid = uids[i];
       final ImapMessage message = new ImapMessage(uid, this);
@@ -246,7 +247,7 @@
       return;
     }
     checkOpen();
-    ArrayMap<String, Message> messageMap = new ArrayMap<String, Message>();
+    ArrayMap<String, Message> messageMap = new ArrayMap<>();
     for (Message m : messages) {
       messageMap.put(m.getUid(), m);
     }
@@ -262,7 +263,7 @@
      * Part      - UID FETCH (BODY.PEEK[ID]) where ID = mime part ID
      */
 
-    final LinkedHashSet<String> fetchFields = new LinkedHashSet<String>();
+    final LinkedHashSet<String> fetchFields = new LinkedHashSet<>();
 
     fetchFields.add(ImapConstants.UID);
     if (fp.contains(FetchProfile.Item.FLAGS)) {
@@ -301,7 +302,7 @@
               Locale.US,
               ImapConstants.UID_FETCH + " %s (%s)",
               ImapStore.joinMessageUids(messages),
-              Utility.combine(fetchFields.toArray(new String[fetchFields.size()]), ' ')),
+              Utility.combine(fetchFields.toArray(new String[0]), ' ')),
           false);
       ImapResponse response;
       do {
@@ -651,7 +652,7 @@
         } else if (part instanceof MimeBodyPart) {
           ((MimeBodyPart) part).setSize(size);
         } else {
-          throw new MessagingException("Unknown part type " + part.toString());
+          throw new MessagingException("Unknown part type " + part);
         }
       }
       part.setHeader(MimeHeader.HEADER_ANDROID_ATTACHMENT_STORE_DATA, id);
@@ -744,7 +745,7 @@
     exists = true;
   }
 
-  public class Quota {
+  public static class Quota {
 
     public final int occupied;
     public final int total;
diff --git a/java/com/android/voicemail/impl/mail/store/ImapStore.java b/java/com/android/voicemail/impl/mail/store/ImapStore.java
index 44b78be..cf86acd 100644
--- a/java/com/android/voicemail/impl/mail/store/ImapStore.java
+++ b/java/com/android/voicemail/impl/mail/store/ImapStore.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,14 +19,17 @@
 
 import android.content.Context;
 import android.net.Network;
+
 import com.android.voicemail.impl.imap.ImapHelper;
 import com.android.voicemail.impl.mail.MailTransport;
 import com.android.voicemail.impl.mail.Message;
 import com.android.voicemail.impl.mail.MessagingException;
 import com.android.voicemail.impl.mail.internet.MimeMessage;
+
+import org.apache.james.mime4j.MimeException;
+
 import java.io.IOException;
 import java.io.InputStream;
-import org.apache.james.mime4j.MimeException;
 
 public class ImapStore {
   /**
@@ -101,7 +105,7 @@
   }
 
   static class ImapMessage extends MimeMessage {
-    private ImapFolder folder;
+    private final ImapFolder folder;
 
     ImapMessage(String uid, ImapFolder folder) {
       this.uid = uid;
diff --git a/java/com/android/voicemail/impl/mail/store/imap/DigestMd5Utils.java b/java/com/android/voicemail/impl/mail/store/imap/DigestMd5Utils.java
index 6607160..067ab8f 100644
--- a/java/com/android/voicemail/impl/mail/store/imap/DigestMd5Utils.java
+++ b/java/com/android/voicemail/impl/mail/store/imap/DigestMd5Utils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,16 +17,16 @@
 
 package com.android.voicemail.impl.mail.store.imap;
 
-import android.annotation.TargetApi;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
 import android.util.ArrayMap;
 import android.util.Base64;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.mail.MailTransport;
 import com.android.voicemail.impl.mail.MessagingException;
 import com.android.voicemail.impl.mail.store.ImapStore;
+
 import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
@@ -33,7 +34,6 @@
 import java.util.Map;
 
 /** Utilities for DIGEST-MD5. */
-@TargetApi(VERSION_CODES.O)
 public class DigestMd5Utils {
 
   private static final String TAG = "DigestMd5Utils";
@@ -56,19 +56,14 @@
 
     private static final String CHARSET = "utf-8";
 
-    public String username;
-    public String password;
-    public String realm;
-    public String nonce;
-    public String nc;
-    public String cnonce;
-    public String digestUri;
-    public String qop;
-
-    @VisibleForTesting
-    Data() {
-      // Do nothing
-    }
+    public final String username;
+    public final String password;
+    public final String realm;
+    public final String nonce;
+    public final String nc;
+    public final String cnonce;
+    public final String digestUri;
+    public final String qop;
 
     public Data(ImapStore imapStore, MailTransport transport, Map<String, String> challenge) {
       username = imapStore.getUsername();
@@ -121,7 +116,7 @@
 
     private static class ResponseBuilder {
 
-      private StringBuilder builder = new StringBuilder();
+      private final StringBuilder builder = new StringBuilder();
 
       public ResponseBuilder appendQuoted(String key, String value) {
         if (builder.length() != 0) {
@@ -154,7 +149,6 @@
   * @param isResponseAuth is the response the one the server is returning us. response-auth has
   * different a2 format.
   */
-  @VisibleForTesting
   static String getResponse(Data data, boolean isResponseAuth) {
     StringBuilder a1 = new StringBuilder();
     a1.append(
@@ -231,7 +225,7 @@
 
     private final String message;
     private int position = 0;
-    private Map<String, String> result = new ArrayMap<>();
+    private final Map<String, String> result = new ArrayMap<>();
 
     public DigestMessageParser(String message) {
       this.message = message;
diff --git a/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java b/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java
index 2dc2254..d5f70b0 100644
--- a/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java
+++ b/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.voicemail.impl.mail.store.imap;
 
 import com.android.voicemail.impl.mail.store.ImapStore;
+
 import java.util.Locale;
 
 public final class ImapConstants {
diff --git a/java/com/android/voicemail/impl/mail/store/imap/ImapList.java b/java/com/android/voicemail/impl/mail/store/imap/ImapList.java
index a72883f..a5c7f15 100644
--- a/java/com/android/voicemail/impl/mail/store/imap/ImapList.java
+++ b/java/com/android/voicemail/impl/mail/store/imap/ImapList.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -35,7 +36,7 @@
         }
       };
 
-  private ArrayList<ImapElement> list = new ArrayList<ImapElement>();
+  private ArrayList<ImapElement> list = new ArrayList<>();
 
   /* package */ void add(ImapElement e) {
     if (e == null) {
@@ -176,11 +177,6 @@
     return list.toString();
   }
 
-  /** Return the text representations of the contents concatenated with ",". */
-  public final String flatten() {
-    return flatten(new StringBuilder()).toString();
-  }
-
   /**
    * Returns text representations (i.e. getString()) of contents joined together with "," as the
    * separator.
@@ -190,7 +186,7 @@
    * <p>We can't use toString(), because it's for debugging (meaning the format may change any
    * time), and it won't expand literals.
    */
-  private final StringBuilder flatten(StringBuilder sb) {
+  private StringBuilder flatten(StringBuilder sb) {
     sb.append('[');
     for (int i = 0; i < list.size(); i++) {
       if (i > 0) {
diff --git a/java/com/android/voicemail/impl/mail/store/imap/ImapMemoryLiteral.java b/java/com/android/voicemail/impl/mail/store/imap/ImapMemoryLiteral.java
index 46f3fc5..8c569f7 100644
--- a/java/com/android/voicemail/impl/mail/store/imap/ImapMemoryLiteral.java
+++ b/java/com/android/voicemail/impl/mail/store/imap/ImapMemoryLiteral.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,10 +19,11 @@
 
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.mail.FixedLengthInputStream;
+
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 
 /** Subclass of {@link ImapString} used for literals backed by an in-memory byte array. */
 public class ImapMemoryLiteral extends ImapString {
@@ -53,12 +55,7 @@
 
   @Override
   public String getString() {
-    try {
-      return new String(data, "US-ASCII");
-    } catch (UnsupportedEncodingException e) {
-      VvmLog.e(TAG, "Unsupported encoding: ", e);
-    }
-    return null;
+    return new String(data, StandardCharsets.US_ASCII);
   }
 
   @Override
diff --git a/java/com/android/voicemail/impl/mail/store/imap/ImapResponseParser.java b/java/com/android/voicemail/impl/mail/store/imap/ImapResponseParser.java
index 68d6bab..4c1bf7e 100644
--- a/java/com/android/voicemail/impl/mail/store/imap/ImapResponseParser.java
+++ b/java/com/android/voicemail/impl/mail/store/imap/ImapResponseParser.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,10 +18,12 @@
 package com.android.voicemail.impl.mail.store.imap;
 
 import android.text.TextUtils;
+
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.mail.FixedLengthInputStream;
 import com.android.voicemail.impl.mail.MessagingException;
 import com.android.voicemail.impl.mail.PeekableInputStream;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -47,7 +50,7 @@
    * We store all {@link ImapResponse} in it. {@link #destroyResponses()} must be called from time
    * to time to destroy them and clear it.
    */
-  private final ArrayList<ImapResponse> responsesToDestroy = new ArrayList<ImapResponse>();
+  private final ArrayList<ImapResponse> responsesToDestroy = new ArrayList<>();
 
   /**
    * Exception thrown when we receive BYE. It derives from IOException, so it'll be treated in the
diff --git a/java/com/android/voicemail/impl/mail/store/imap/ImapSimpleString.java b/java/com/android/voicemail/impl/mail/store/imap/ImapSimpleString.java
index 76d3c6e..77362c4 100644
--- a/java/com/android/voicemail/impl/mail/store/imap/ImapSimpleString.java
+++ b/java/com/android/voicemail/impl/mail/store/imap/ImapSimpleString.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,14 +17,13 @@
 
 package com.android.voicemail.impl.mail.store.imap;
 
-import com.android.voicemail.impl.VvmLog;
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 
 /** Subclass of {@link ImapString} used for non literals. */
 public class ImapSimpleString extends ImapString {
-  private final String TAG = "ImapSimpleString";
+  private static final String TAG = "ImapSimpleString";
   private String string;
 
   /* package */ ImapSimpleString(String string) {
@@ -43,12 +43,7 @@
 
   @Override
   public InputStream getAsStream() {
-    try {
-      return new ByteArrayInputStream(string.getBytes("US-ASCII"));
-    } catch (UnsupportedEncodingException e) {
-      VvmLog.e(TAG, "Unsupported encoding: ", e);
-    }
-    return null;
+    return new ByteArrayInputStream(string.getBytes(StandardCharsets.US_ASCII));
   }
 
   @Override
diff --git a/java/com/android/voicemail/impl/mail/store/imap/ImapString.java b/java/com/android/voicemail/impl/mail/store/imap/ImapString.java
index 099e569..cb032b9 100644
--- a/java/com/android/voicemail/impl/mail/store/imap/ImapString.java
+++ b/java/com/android/voicemail/impl/mail/store/imap/ImapString.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.voicemail.impl.mail.store.imap;
 
 import com.android.voicemail.impl.VvmLog;
+
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.text.ParseException;
diff --git a/java/com/android/voicemail/impl/mail/store/imap/ImapTempFileLiteral.java b/java/com/android/voicemail/impl/mail/store/imap/ImapTempFileLiteral.java
index f452c9d..b742164 100644
--- a/java/com/android/voicemail/impl/mail/store/imap/ImapTempFileLiteral.java
+++ b/java/com/android/voicemail/impl/mail/store/imap/ImapTempFileLiteral.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,15 +20,17 @@
 import com.android.voicemail.impl.mail.TempDirectory;
 import com.android.voicemail.impl.mail.utils.LogUtils;
 import com.android.voicemail.impl.mail.utils.Utility;
+
+import org.apache.commons.io.IOUtils;
+
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import org.apache.commons.io.IOUtils;
+import java.nio.file.Files;
 
 /** Subclass of {@link ImapString} used for literals backed by a temp file. */
 public class ImapTempFileLiteral extends ImapString {
@@ -46,7 +49,7 @@
     // so it'd simply cause a memory leak.
     // deleteOnExit() simply adds filenames to a static list and the list will never shrink.
     // mFile.deleteOnExit();
-    OutputStream out = new FileOutputStream(file);
+    OutputStream out = Files.newOutputStream(file.toPath());
     IOUtils.copy(stream, out);
     out.close();
   }
@@ -112,8 +115,4 @@
   public String toString() {
     return String.format("{%d byte literal(file)}", size);
   }
-
-  public boolean tempFileExistsForTest() {
-    return file.exists();
-  }
 }
diff --git a/java/com/android/voicemail/impl/mail/store/imap/ImapUtility.java b/java/com/android/voicemail/impl/mail/store/imap/ImapUtility.java
index a325cc2..596d84d 100644
--- a/java/com/android/voicemail/impl/mail/store/imap/ImapUtility.java
+++ b/java/com/android/voicemail/impl/mail/store/imap/ImapUtility.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +17,9 @@
 package com.android.voicemail.impl.mail.store.imap;
 
 import com.android.voicemail.impl.mail.utils.LogUtils;
+
 import java.util.ArrayList;
+import java.util.Arrays;
 
 /** Utility methods for use with IMAP. */
 public class ImapUtility {
@@ -60,7 +63,7 @@
    * </pre>
    */
   public static String[] getImapSequenceValues(String set) {
-    ArrayList<String> list = new ArrayList<String>();
+    ArrayList<String> list = new ArrayList<>();
     if (set != null) {
       String[] setItems = set.split(",");
       for (String item : setItems) {
@@ -74,9 +77,7 @@
           }
         } else {
           // range
-          for (String rangeItem : getImapRangeValues(item)) {
-            list.add(rangeItem);
-          }
+          list.addAll(Arrays.asList(getImapRangeValues(item)));
         }
       }
     }
@@ -95,7 +96,7 @@
    * </pre>
    */
   public static String[] getImapRangeValues(String range) {
-    ArrayList<String> list = new ArrayList<String>();
+    ArrayList<String> list = new ArrayList<>();
     try {
       if (range != null) {
         int colonPos = range.indexOf(':');
diff --git a/java/com/android/voicemail/impl/mail/utils/LogUtils.java b/java/com/android/voicemail/impl/mail/utils/LogUtils.java
index 772048d..f675e3a 100644
--- a/java/com/android/voicemail/impl/mail/utils/LogUtils.java
+++ b/java/com/android/voicemail/impl/mail/utils/LogUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
  * except in compliance with the License. You may obtain a copy of the License at
@@ -14,10 +15,11 @@
 package com.android.voicemail.impl.mail.utils;
 
 import android.net.Uri;
-import android.support.annotation.VisibleForTesting;
 import android.text.TextUtils;
 import android.util.Log;
+
 import com.android.voicemail.impl.VvmLog;
+
 import java.util.List;
 
 public class LogUtils {
@@ -46,20 +48,7 @@
    */
   private static final int MAX_ENABLED_LOG_LEVEL = DEBUG;
 
-  private static Boolean debugLoggingEnabledForTests = null;
-
-  /** Enable debug logging for unit tests. */
-  @VisibleForTesting
-  public static void setDebugLoggingEnabledForTests(boolean enabled) {
-    setDebugLoggingEnabledForTestsInternal(enabled);
-  }
-
-  protected static void setDebugLoggingEnabledForTestsInternal(boolean enabled) {
-    debugLoggingEnabledForTests = Boolean.valueOf(enabled);
-  }
-
   /** Returns true if the build configuration prevents debug logging. */
-  @VisibleForTesting
   public static boolean buildPreventsDebugLogging() {
     return MAX_ENABLED_LOG_LEVEL > VERBOSE;
   }
@@ -69,9 +58,6 @@
     if (buildPreventsDebugLogging()) {
       return false;
     }
-    if (debugLoggingEnabledForTests != null) {
-      return debugLoggingEnabledForTests.booleanValue();
-    }
     return Log.isLoggable(tag, Log.DEBUG) || Log.isLoggable(TAG, Log.DEBUG);
   }
 
diff --git a/java/com/android/voicemail/impl/mail/utils/Utility.java b/java/com/android/voicemail/impl/mail/utils/Utility.java
index 4db1681..2dbd773 100644
--- a/java/com/android/voicemail/impl/mail/utils/Utility.java
+++ b/java/com/android/voicemail/impl/mail/utils/Utility.java
@@ -17,10 +17,11 @@
 import java.nio.ByteBuffer;
 import java.nio.CharBuffer;
 import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 
 /** Simple utility methods used in email functions. */
 public class Utility {
-  public static final Charset ASCII = Charset.forName("US-ASCII");
+  public static final Charset ASCII = StandardCharsets.US_ASCII;
 
   public static final String[] EMPTY_STRINGS = new String[0];
 
diff --git a/java/com/android/voicemail/impl/protocol/CvvmProtocol.java b/java/com/android/voicemail/impl/protocol/CvvmProtocol.java
index a4b54f6..548d67b 100644
--- a/java/com/android/voicemail/impl/protocol/CvvmProtocol.java
+++ b/java/com/android/voicemail/impl/protocol/CvvmProtocol.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.content.Context;
 import android.telecom.PhoneAccountHandle;
+
 import com.android.voicemail.impl.OmtpConstants;
 import com.android.voicemail.impl.sms.OmtpCvvmMessageSender;
 import com.android.voicemail.impl.sms.OmtpMessageSender;
@@ -29,9 +31,9 @@
  */
 public class CvvmProtocol extends VisualVoicemailProtocol {
 
-  private static String IMAP_CHANGE_TUI_PWD_FORMAT = "CHANGE_TUI_PWD PWD=%1$s OLD_PWD=%2$s";
-  private static String IMAP_CHANGE_VM_LANG_FORMAT = "CHANGE_VM_LANG Lang=%1$s";
-  private static String IMAP_CLOSE_NUT = "CLOSE_NUT";
+  private static final String IMAP_CHANGE_TUI_PWD_FORMAT = "CHANGE_TUI_PWD PWD=%1$s OLD_PWD=%2$s";
+  private static final String IMAP_CHANGE_VM_LANG_FORMAT = "CHANGE_VM_LANG Lang=%1$s";
+  private static final String IMAP_CLOSE_NUT = "CLOSE_NUT";
 
   @Override
   public OmtpMessageSender createMessageSender(
@@ -45,14 +47,13 @@
 
   @Override
   public String getCommand(String command) {
-    if (command == OmtpConstants.IMAP_CHANGE_TUI_PWD_FORMAT) {
-      return IMAP_CHANGE_TUI_PWD_FORMAT;
-    }
-    if (command == OmtpConstants.IMAP_CLOSE_NUT) {
-      return IMAP_CLOSE_NUT;
-    }
-    if (command == OmtpConstants.IMAP_CHANGE_VM_LANG_FORMAT) {
-      return IMAP_CHANGE_VM_LANG_FORMAT;
+    switch (command) {
+      case OmtpConstants.IMAP_CHANGE_TUI_PWD_FORMAT:
+        return IMAP_CHANGE_TUI_PWD_FORMAT;
+      case OmtpConstants.IMAP_CLOSE_NUT:
+        return IMAP_CLOSE_NUT;
+      case OmtpConstants.IMAP_CHANGE_VM_LANG_FORMAT:
+        return IMAP_CHANGE_VM_LANG_FORMAT;
     }
     return super.getCommand(command);
   }
diff --git a/java/com/android/voicemail/impl/protocol/OmtpProtocol.java b/java/com/android/voicemail/impl/protocol/OmtpProtocol.java
index 971edcf..86ad10e 100644
--- a/java/com/android/voicemail/impl/protocol/OmtpProtocol.java
+++ b/java/com/android/voicemail/impl/protocol/OmtpProtocol.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.content.Context;
 import android.telecom.PhoneAccountHandle;
+
 import com.android.voicemail.impl.OmtpConstants;
 import com.android.voicemail.impl.sms.OmtpMessageSender;
 import com.android.voicemail.impl.sms.OmtpStandardMessageSender;
diff --git a/java/com/android/voicemail/impl/protocol/ProtocolHelper.java b/java/com/android/voicemail/impl/protocol/ProtocolHelper.java
index 4d2e7cc..72ee5cb 100644
--- a/java/com/android/voicemail/impl/protocol/ProtocolHelper.java
+++ b/java/com/android/voicemail/impl/protocol/ProtocolHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.voicemail.impl.protocol;
 
 import android.text.TextUtils;
+
 import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.sms.OmtpMessageSender;
diff --git a/java/com/android/voicemail/impl/protocol/VisualVoicemailProtocol.java b/java/com/android/voicemail/impl/protocol/VisualVoicemailProtocol.java
index a2e94ed..cfd99ab 100644
--- a/java/com/android/voicemail/impl/protocol/VisualVoicemailProtocol.java
+++ b/java/com/android/voicemail/impl/protocol/VisualVoicemailProtocol.java
@@ -19,8 +19,10 @@
 import android.app.PendingIntent;
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.impl.ActivationTask;
 import com.android.voicemail.impl.DefaultOmtpEventHandler;
 import com.android.voicemail.impl.OmtpConstants;
diff --git a/java/com/android/voicemail/impl/protocol/VisualVoicemailProtocolFactory.java b/java/com/android/voicemail/impl/protocol/VisualVoicemailProtocolFactory.java
index ef27c22..57f1e1f 100644
--- a/java/com/android/voicemail/impl/protocol/VisualVoicemailProtocolFactory.java
+++ b/java/com/android/voicemail/impl/protocol/VisualVoicemailProtocolFactory.java
@@ -17,8 +17,10 @@
 package com.android.voicemail.impl.protocol;
 
 import android.content.res.Resources;
-import android.support.annotation.Nullable;
 import android.telephony.TelephonyManager;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.VisualVoicemailTypeExtensions;
 import com.android.voicemail.impl.VvmLog;
 
@@ -37,6 +39,7 @@
       case TelephonyManager.VVM_TYPE_CVVM:
         return new CvvmProtocol();
       case VisualVoicemailTypeExtensions.VVM_TYPE_VVM3:
+      case VisualVoicemailTypeExtensions.VVM_TYPE_ADVVM:
         return new Vvm3Protocol();
       default:
         VvmLog.e(TAG, "Unexpected visual voicemail type: " + type);
diff --git a/java/com/android/voicemail/impl/protocol/Vvm3EventHandler.java b/java/com/android/voicemail/impl/protocol/Vvm3EventHandler.java
index 74ba8dd..8502857 100644
--- a/java/com/android/voicemail/impl/protocol/Vvm3EventHandler.java
+++ b/java/com/android/voicemail/impl/protocol/Vvm3EventHandler.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,8 +19,10 @@
 
 import android.content.Context;
 import android.provider.VoicemailContract.Status;
-import android.support.annotation.IntDef;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.IntDef;
+
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.DefaultOmtpEventHandler;
 import com.android.voicemail.impl.OmtpEvents;
@@ -27,6 +30,7 @@
 import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
 import com.android.voicemail.impl.VoicemailStatus;
 import com.android.voicemail.impl.VvmLog;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -67,7 +71,8 @@
     VMG_COMMUNICATION_ERROR,
     SPG_URL_NOT_FOUND,
     VMG_UNKNOWN_ERROR,
-    PIN_NOT_SET
+    PIN_NOT_SET,
+    SUBSCRIBER_UNKNOWN
   })
   public @interface ErrorCode {}
 
diff --git a/java/com/android/voicemail/impl/protocol/Vvm3Protocol.java b/java/com/android/voicemail/impl/protocol/Vvm3Protocol.java
index 5e7b592..4ae6542 100644
--- a/java/com/android/voicemail/impl/protocol/Vvm3Protocol.java
+++ b/java/com/android/voicemail/impl/protocol/Vvm3Protocol.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,16 +17,15 @@
 
 package com.android.voicemail.impl.protocol;
 
-import android.annotation.TargetApi;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.net.Network;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.text.TextUtils;
-import com.android.dialer.logging.DialerImpression;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.PinChanger;
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.ActivationTask;
@@ -45,7 +45,7 @@
 import com.android.voicemail.impl.sync.VvmNetworkRequest;
 import com.android.voicemail.impl.sync.VvmNetworkRequest.NetworkWrapper;
 import com.android.voicemail.impl.sync.VvmNetworkRequest.RequestFailedException;
-import com.android.voicemail.impl.utils.LoggerUtils;
+
 import java.io.IOException;
 import java.security.SecureRandom;
 import java.util.Locale;
@@ -55,7 +55,6 @@
  *
  * <p>Used by carriers such as Verizon Wireless
  */
-@TargetApi(VERSION_CODES.O)
 public class Vvm3Protocol extends VisualVoicemailProtocol {
 
   private static final String TAG = "Vvm3Protocol";
@@ -126,8 +125,6 @@
       return;
     }
 
-    LoggerUtils.logImpressionOnMainThread(
-        config.getContext(), DialerImpression.Type.VVM_PROVISIONING_STARTED);
     if (OmtpConstants.SUBSCRIBER_UNKNOWN.equals(message.getProvisioningStatus())) {
       VvmLog.i(TAG, "Provisioning status: Unknown");
       if (VVM3_UNKNOWN_SUBSCRIBER_CAN_SUBSCRIBE_RESPONSE_CODE.equals(message.getReturnCode())) {
@@ -240,8 +237,6 @@
           // Only close new user tutorial if the PIN has been changed.
           helper.closeNewUserTutorial();
           VvmLog.i(TAG, "new user: NUT closed");
-          LoggerUtils.logImpressionOnMainThread(
-              config.getContext(), DialerImpression.Type.VVM_PROVISIONING_COMPLETED);
           config.requestStatus(null);
         }
       } catch (InitializingException | MessagingException | IOException e) {
diff --git a/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java b/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java
index 41598e0..c2c42f7 100644
--- a/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java
+++ b/java/com/android/voicemail/impl/protocol/Vvm3Subscriber.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,22 +17,19 @@
 
 package com.android.voicemail.impl.protocol;
 
-import android.annotation.TargetApi;
-import android.content.Context;
 import android.net.Network;
 import android.os.Build;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
 import android.text.Html;
 import android.text.Spanned;
 import android.text.style.URLSpan;
 import android.util.ArrayMap;
-import com.android.dialer.configprovider.ConfigProviderComponent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+
 import com.android.voicemail.impl.ActivationTask;
 import com.android.voicemail.impl.Assert;
 import com.android.voicemail.impl.OmtpEvents;
@@ -48,6 +46,10 @@
 import com.android.volley.toolbox.RequestFuture;
 import com.android.volley.toolbox.StringRequest;
 import com.android.volley.toolbox.Volley;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+
 import java.io.IOException;
 import java.net.CookieHandler;
 import java.net.CookieManager;
@@ -63,8 +65,6 @@
 import java.util.concurrent.TimeoutException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import org.json.JSONArray;
-import org.json.JSONException;
 
 /**
  * Class to subscribe to basic VVM3 visual voicemail, for example, Verizon. Subscription is required
@@ -81,7 +81,6 @@
  * <p>After the process is completed, the carrier should send us another STATUS SMS with a new or
  * ready user.
  */
-@TargetApi(VERSION_CODES.O)
 public class Vvm3Subscriber {
 
   private static final String TAG = "Vvm3Subscriber";
@@ -119,10 +118,6 @@
   private static final String SPG_LANGUAGE_PARAM = "SPG_LANGUAGE_PARAM";
   private static final String SPG_LANGUAGE_EN = "ENGLISH";
 
-  @VisibleForTesting
-  static final String VVM3_SUBSCRIBE_LINK_PATTERNS_JSON_ARRAY =
-      "vvm3_subscribe_link_pattern_json_array";
-
   private static final String VVM3_SUBSCRIBE_LINK_DEFAULT_PATTERNS =
       "["
           + "\"(?i)Subscribe to Basic Visual Voice Mail\","
@@ -141,7 +136,6 @@
 
   private RequestQueue requestQueue;
 
-  @VisibleForTesting
   static class ProvisioningException extends Exception {
 
     public ProvisioningException(String message) {
@@ -219,7 +213,7 @@
       String gatewayUrl = getSelfProvisioningGateway();
       String selfProvisionResponse = getSelfProvisionResponse(gatewayUrl);
       String subscribeLink =
-          findSubscribeLink(getSubscribeLinkPatterns(helper.getContext()), selfProvisionResponse);
+          findSubscribeLink(getSubscribeLinkPatterns(), selfProvisionResponse);
       clickSubscribeLink(subscribeLink);
     } catch (ProvisioningException e) {
       VvmLog.e(TAG, e.toString());
@@ -323,13 +317,8 @@
     }
   }
 
-  @VisibleForTesting
-  static List<Pattern> getSubscribeLinkPatterns(Context context) {
-    String patternsJsonString =
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getString(
-                VVM3_SUBSCRIBE_LINK_PATTERNS_JSON_ARRAY, VVM3_SUBSCRIBE_LINK_DEFAULT_PATTERNS);
+  static List<Pattern> getSubscribeLinkPatterns() {
+    String patternsJsonString = VVM3_SUBSCRIBE_LINK_DEFAULT_PATTERNS;
     List<Pattern> patterns = new ArrayList<>();
     try {
       JSONArray patternsArray = new JSONArray(patternsJsonString);
@@ -342,7 +331,6 @@
     return patterns;
   }
 
-  @VisibleForTesting
   static String findSubscribeLink(@NonNull List<Pattern> patterns, String response)
       throws ProvisioningException {
     if (patterns.isEmpty()) {
diff --git a/java/com/android/voicemail/impl/res/values/attrs.xml b/java/com/android/voicemail/impl/res/values/attrs.xml
deleted file mode 100644
index a1195c7..0000000
--- a/java/com/android/voicemail/impl/res/values/attrs.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2006 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-
-  <attr name="preferenceBackgroundColor" format="color"/>
-</resources>
diff --git a/java/com/android/voicemail/impl/scheduling/BaseTask.java b/java/com/android/voicemail/impl/scheduling/BaseTask.java
index 0b70758..44db358 100644
--- a/java/com/android/voicemail/impl/scheduling/BaseTask.java
+++ b/java/com/android/voicemail/impl/scheduling/BaseTask.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,15 +21,16 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.SystemClock;
-import android.support.annotation.CallSuper;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.WorkerThread;
+
 import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.Assert;
-import com.android.voicemail.impl.NeededForTesting;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -39,7 +41,6 @@
 @UsedByReflection(value = "Tasks.java")
 public abstract class BaseTask implements Task {
 
-  @VisibleForTesting
   public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "extra_phone_account_handle";
 
   private static final String EXTRA_EXECUTION_TIME = "extra_execution_time";
@@ -54,12 +55,11 @@
   private boolean hasStarted;
   private volatile boolean hasFailed;
 
-  @NonNull private final List<Policy> policies = new ArrayList<>();
+  @NonNull
+  private final List<Policy> policies = new ArrayList<>();
 
   private long executionTime;
 
-  private static Clock clock = new Clock();
-
   protected BaseTask(int id) {
     this.id = id;
     executionTime = getTimeMillis();
@@ -123,7 +123,7 @@
   }
 
   public long getTimeMillis() {
-    return clock.getTimeMillis();
+    return SystemClock.elapsedRealtime();
   }
 
   /**
@@ -161,7 +161,7 @@
   public void onCreate(Context context, Bundle extras) {
     this.context = context;
     this.extras = extras;
-    phoneAccountHandle = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE);
+    phoneAccountHandle = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE, PhoneAccountHandle.class);
     for (Policy policy : policies) {
       policy.onCreate(this, extras);
     }
@@ -209,18 +209,4 @@
       policy.onDuplicatedTaskAdded();
     }
   }
-
-  @NeededForTesting
-  static class Clock {
-
-    public long getTimeMillis() {
-      return SystemClock.elapsedRealtime();
-    }
-  }
-
-  /** Used to replace the clock with an deterministic clock */
-  @NeededForTesting
-  static void setClockForTesting(Clock clock) {
-    BaseTask.clock = clock;
-  }
 }
diff --git a/java/com/android/voicemail/impl/scheduling/BlockerTask.java b/java/com/android/voicemail/impl/scheduling/BlockerTask.java
index 1c8bada..27d48bc 100644
--- a/java/com/android/voicemail/impl/scheduling/BlockerTask.java
+++ b/java/com/android/voicemail/impl/scheduling/BlockerTask.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.content.Context;
 import android.os.Bundle;
+
 import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.VvmLog;
 
diff --git a/java/com/android/voicemail/impl/scheduling/MinimalIntervalPolicy.java b/java/com/android/voicemail/impl/scheduling/MinimalIntervalPolicy.java
index 6d6a0a1..0ebcb22 100644
--- a/java/com/android/voicemail/impl/scheduling/MinimalIntervalPolicy.java
+++ b/java/com/android/voicemail/impl/scheduling/MinimalIntervalPolicy.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +19,7 @@
 
 import android.content.Intent;
 import android.os.Bundle;
+
 import com.android.voicemail.impl.scheduling.Task.TaskId;
 
 /**
@@ -29,7 +31,7 @@
 
   BaseTask task;
   TaskId id;
-  int blockForMillis;
+  final int blockForMillis;
 
   public MinimalIntervalPolicy(int blockForMillis) {
     this.blockForMillis = blockForMillis;
diff --git a/java/com/android/voicemail/impl/scheduling/PostponePolicy.java b/java/com/android/voicemail/impl/scheduling/PostponePolicy.java
index 8ff1478..a7d9982 100644
--- a/java/com/android/voicemail/impl/scheduling/PostponePolicy.java
+++ b/java/com/android/voicemail/impl/scheduling/PostponePolicy.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,6 +18,7 @@
 package com.android.voicemail.impl.scheduling;
 
 import android.os.Bundle;
+
 import com.android.voicemail.impl.VvmLog;
 
 /**
diff --git a/java/com/android/voicemail/impl/scheduling/RetryPolicy.java b/java/com/android/voicemail/impl/scheduling/RetryPolicy.java
index ec4d72d..d163072 100644
--- a/java/com/android/voicemail/impl/scheduling/RetryPolicy.java
+++ b/java/com/android/voicemail/impl/scheduling/RetryPolicy.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,6 +20,7 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.telecom.PhoneAccountHandle;
+
 import com.android.voicemail.impl.VoicemailStatus;
 import com.android.voicemail.impl.VvmLog;
 
diff --git a/java/com/android/voicemail/impl/scheduling/Task.java b/java/com/android/voicemail/impl/scheduling/Task.java
index 484a626..ae36196 100644
--- a/java/com/android/voicemail/impl/scheduling/Task.java
+++ b/java/com/android/voicemail/impl/scheduling/Task.java
@@ -18,9 +18,11 @@
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.MainThread;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.WorkerThread;
+
 import java.util.Objects;
 
 /**
diff --git a/java/com/android/voicemail/impl/scheduling/TaskExecutor.java b/java/com/android/voicemail/impl/scheduling/TaskExecutor.java
index afa77c5..f572190 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskExecutor.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskExecutor.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,23 +17,22 @@
 
 package com.android.voicemail.impl.scheduling;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Looper;
 import android.os.Message;
-import android.support.annotation.MainThread;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.voicemail.impl.Assert;
-import com.android.voicemail.impl.NeededForTesting;
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.scheduling.TaskQueue.NextTask;
+
 import java.util.List;
 
 /**
@@ -69,7 +69,6 @@
  *   <li>A job cannot be mutated to store information such as retry count.
  * </ul>
  */
-@TargetApi(VERSION_CODES.O)
 final class TaskExecutor {
 
   /**
@@ -121,12 +120,6 @@
 
   private static TaskExecutor instance;
 
-  /**
-   * Used by tests to turn task handling into a single threaded process by calling {@link
-   * Handler#handleMessage(Message)} directly
-   */
-  private MessageSender messageSender = new MessageSender();
-
   private final MainThreadHandler mainThreadHandler;
 
   private final Context appContext;
@@ -140,19 +133,14 @@
 
   private Job job;
 
-  private final Runnable stopServiceWithDelay =
-      new Runnable() {
-        @MainThread
-        @Override
-        public void run() {
-          VvmLog.i(TAG, "Stopping service");
-          if (!isJobRunning() || isTerminating()) {
-            VvmLog.e(TAG, "Service already stopped");
-            return;
-          }
-          scheduleJobAndTerminate(0, true);
-        }
-      };
+  private final Runnable stopServiceWithDelay = () -> {
+    VvmLog.i(TAG, "Stopping service");
+    if (!isJobRunning() || isTerminating()) {
+      VvmLog.e(TAG, "Service already stopped");
+      return;
+    }
+    scheduleJobAndTerminate(0, true);
+  };
 
   /**
    * Reschedule the {@link TaskSchedulerJobService} and terminate the executor when the {@link Job}
@@ -188,13 +176,9 @@
       VvmLog.w("JobFinishedPoller.run", "Job still running");
       mainThreadHandler.postDelayed(this, TERMINATE_POLLING_INTERVAL_MILLISECONDS);
     }
-  };
-
-  /** Should attempt to run the next task when a task has finished or been added. */
-  private boolean taskAutoRunDisabledForTesting = false;
+  }
 
   /** Handles execution of the background task in teh worker thread. */
-  @VisibleForTesting
   final class WorkerThreadHandler extends Handler {
 
     public WorkerThreadHandler(Looper looper) {
@@ -214,12 +198,11 @@
 
       Message schedulerMessage = mainThreadHandler.obtainMessage();
       schedulerMessage.obj = task;
-      messageSender.send(schedulerMessage);
+      schedulerMessage.sendToTarget();
     }
   }
 
   /** Handles completion of the background task in the main thread. */
-  @VisibleForTesting
   final class MainThreadHandler extends Handler {
 
     public MainThreadHandler(Looper looper) {
@@ -267,7 +250,6 @@
     mainThreadHandler = new MainThreadHandler(Looper.getMainLooper());
   }
 
-  @VisibleForTesting
   void terminate() {
     VvmLog.i(TAG, "terminated");
     Assert.isMainThread();
@@ -287,7 +269,6 @@
   }
 
   @MainThread
-  @VisibleForTesting
   TaskQueue getTasks() {
     Assert.isMainThread();
     return tasks;
@@ -300,16 +281,10 @@
     if (isWorkerThreadBusy) {
       return;
     }
-    if (taskAutoRunDisabledForTesting) {
-      // If taskAutoRunDisabledForTesting is true, runNextTask() must be explicitly called
-      // to run the next task.
-      return;
-    }
 
     runNextTask();
   }
 
-  @VisibleForTesting
   @MainThread
   void runNextTask() {
     Assert.isMainThread();
@@ -324,11 +299,11 @@
       Message message = workerThreadHandler.obtainMessage();
       message.obj = nextTask.task;
       isWorkerThreadBusy = true;
-      messageSender.send(message);
+      message.sendToTarget();
       return;
     }
     VvmLog.i(TAG, "minimal wait time:" + nextTask.minimalWaitTimeMillis);
-    if (!taskAutoRunDisabledForTesting && nextTask.minimalWaitTimeMillis != null) {
+    if (nextTask.minimalWaitTimeMillis != null) {
       // No tasks are currently ready. Sleep until the next one should be.
       // If a new task is added during the sleep the service will wake immediately.
       sleep(nextTask.minimalWaitTimeMillis);
@@ -339,14 +314,7 @@
   private void sleep(long timeMillis) {
     VvmLog.i(TAG, "sleep for " + timeMillis + " millis");
     if (timeMillis < SHORT_SLEEP_THRESHOLD_MILLISECONDS) {
-      mainThreadHandler.postDelayed(
-          new Runnable() {
-            @Override
-            public void run() {
-              maybeRunNextTask();
-            }
-          },
-          timeMillis);
+      mainThreadHandler.postDelayed(() -> maybeRunNextTask(), timeMillis);
       return;
     }
     scheduleJobAndTerminate(timeMillis, false);
@@ -365,24 +333,6 @@
     mainThreadHandler.postDelayed(stopServiceWithDelay, STOP_DELAY_MILLISECONDS);
   }
 
-  @NeededForTesting
-  static class MessageSender {
-
-    public void send(Message message) {
-      message.sendToTarget();
-    }
-  }
-
-  @NeededForTesting
-  void setTaskAutoRunDisabledForTest(boolean value) {
-    taskAutoRunDisabledForTesting = value;
-  }
-
-  @NeededForTesting
-  void setMessageSenderForTest(MessageSender sender) {
-    messageSender = sender;
-  }
-
   /**
    * The {@link TaskSchedulerJobService} has started and all queued task should be executed in the
    * worker thread.
@@ -418,7 +368,6 @@
    * @param isNewJob a new job will be requested to run immediately, bypassing all requirements.
    */
   @MainThread
-  @VisibleForTesting
   void scheduleJobAndTerminate(long delayMillis, boolean isNewJob) {
     Assert.isMainThread();
     finishJobAsync();
diff --git a/java/com/android/voicemail/impl/scheduling/TaskQueue.java b/java/com/android/voicemail/impl/scheduling/TaskQueue.java
index 6afcf00..075d6f6 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskQueue.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskQueue.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,12 +19,15 @@
 
 import android.content.Context;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.impl.Assert;
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.scheduling.Task.TaskId;
 import com.android.voicemail.impl.scheduling.Tasks.TaskCreationException;
+
 import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -104,7 +108,8 @@
    * tasks at all both will be {@code null}.
    */
   static final class NextTask {
-    @Nullable final Task task;
+    @Nullable
+    final Task task;
     @Nullable final Long minimalWaitTimeMillis;
 
     NextTask(@Nullable Task task, @Nullable Long minimalWaitTimeMillis) {
diff --git a/java/com/android/voicemail/impl/scheduling/TaskReceiver.java b/java/com/android/voicemail/impl/scheduling/TaskReceiver.java
index b9fd272..549d083 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskReceiver.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,14 +17,14 @@
 
 package com.android.voicemail.impl.scheduling;
 
-import android.annotation.TargetApi;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
+
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.scheduling.Tasks.TaskCreationException;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -34,7 +35,6 @@
  * Tasks#createIntent(Context, Class)}). The task will be queued directly in {@link TaskExecutor} if
  * it is already running, or in {@link TaskSchedulerJobService} if not.
  */
-@TargetApi(VERSION_CODES.O)
 public class TaskReceiver extends BroadcastReceiver {
 
   private static final String TAG = "VvmTaskReceiver";
diff --git a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
index 77a0d25..8ad0d66 100644
--- a/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
+++ b/java/com/android/voicemail/impl/scheduling/TaskSchedulerJobService.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +17,6 @@
 
 package com.android.voicemail.impl.scheduling;
 
-import android.annotation.TargetApi;
 import android.app.job.JobInfo;
 import android.app.job.JobParameters;
 import android.app.job.JobScheduler;
@@ -24,21 +24,21 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.Parcelable;
-import android.preference.PreferenceManager;
-import android.support.annotation.MainThread;
+
+import androidx.annotation.MainThread;
+import androidx.preference.PreferenceManager;
+
 import com.android.dialer.constants.ScheduledJobIds;
-import com.android.dialer.strictmode.StrictModeUtils;
 import com.android.voicemail.impl.Assert;
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.scheduling.Tasks.TaskCreationException;
+
 import java.util.ArrayList;
 import java.util.List;
 
 /** A {@link JobService} that will trigger the background execution of {@link TaskExecutor}. */
-@TargetApi(VERSION_CODES.O)
 public class TaskSchedulerJobService extends JobService implements TaskExecutor.Job {
 
   private static final String TAG = "TaskSchedulerJobService";
@@ -59,9 +59,8 @@
   @MainThread
   public boolean onStartJob(JobParameters params) {
     int jobId = params.getTransientExtras().getInt(EXTRA_JOB_ID);
-    int expectedJobId =
-        StrictModeUtils.bypass(
-            () -> PreferenceManager.getDefaultSharedPreferences(this).getInt(EXPECTED_JOB_ID, 0));
+    int expectedJobId = PreferenceManager.getDefaultSharedPreferences(this)
+            .getInt(EXPECTED_JOB_ID, 0);
     if (jobId != expectedJobId) {
       VvmLog.e(
           TAG, "Job " + jobId + " is not the last scheduled job " + expectedJobId + ", ignoring");
@@ -131,7 +130,7 @@
         .apply();
 
     extras.putParcelableArray(
-        EXTRA_TASK_EXTRAS_ARRAY, pendingTasks.toArray(new Bundle[pendingTasks.size()]));
+        EXTRA_TASK_EXTRAS_ARRAY, pendingTasks.toArray(new Bundle[0]));
     JobInfo.Builder builder =
         new JobInfo.Builder(
                 ScheduledJobIds.VVM_TASK_SCHEDULER_JOB,
diff --git a/java/com/android/voicemail/impl/scheduling/Tasks.java b/java/com/android/voicemail/impl/scheduling/Tasks.java
index 0333e16..bdc03de 100644
--- a/java/com/android/voicemail/impl/scheduling/Tasks.java
+++ b/java/com/android/voicemail/impl/scheduling/Tasks.java
@@ -20,7 +20,9 @@
 import android.content.Intent;
 import android.os.BadParcelableException;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+
 import com.android.voicemail.impl.VvmLog;
 
 /** Common operations on {@link Task} */
diff --git a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
index 3acf60d..bb51b1b 100644
--- a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
+++ b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,19 +16,14 @@
  */
 package com.android.voicemail.impl.settings;
 
-import android.content.ContentValues;
 import android.content.Context;
-import android.provider.CallLog;
-import android.provider.CallLog.Calls;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccountHandle;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.database.Selection;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
 import com.android.voicemail.impl.VisualVoicemailPreferences;
@@ -37,10 +33,8 @@
 /** Save whether or not a particular account is enabled in shared to be retrieved later. */
 public class VisualVoicemailSettingsUtil {
 
-  @VisibleForTesting public static final String IS_ENABLED_KEY = "is_enabled";
+  private static final String IS_ENABLED_KEY = "is_enabled";
   private static final String ARCHIVE_ENABLED_KEY = "archive_is_enabled";
-  private static final String TRANSCRIBE_VOICEMAILS_KEY = "transcribe_voicemails";
-  private static final String DONATE_VOICEMAILS_KEY = "donate_voicemails";
 
   public static void setEnabled(
       Context context, PhoneAccountHandle phoneAccount, boolean isEnabled) {
@@ -84,52 +78,6 @@
         .apply();
   }
 
-  public static void setVoicemailTranscriptionEnabled(
-      Context context, PhoneAccountHandle phoneAccount, boolean isEnabled) {
-    Assert.checkArgument(
-        VoicemailComponent.get(context)
-            .getVoicemailClient()
-            .isVoicemailTranscriptionAvailable(context, phoneAccount));
-    new VisualVoicemailPreferences(context, phoneAccount)
-        .edit()
-        .putBoolean(TRANSCRIBE_VOICEMAILS_KEY, isEnabled)
-        .apply();
-
-    if (!isEnabled) {
-      VvmLog.i(
-          "VisualVoicemailSettingsUtil.setVoicemailTranscriptionEnabled",
-          "clear all Google transcribed voicemail.");
-      DialerExecutorComponent.get(context)
-          .dialerExecutorFactory()
-          .createNonUiTaskBuilder(new ClearGoogleTranscribedVoicemailTranscriptionWorker(context))
-          .onSuccess(
-              (result) ->
-                  VvmLog.i(
-                      "VisualVoicemailSettingsUtil.setVoicemailTranscriptionEnabled",
-                      "voicemail transciptions cleared successfully"))
-          .onFailure(
-              (throwable) ->
-                  VvmLog.e(
-                      "VisualVoicemailSettingsUtil.setVoicemailTranscriptionEnabled",
-                      "unable to clear Google transcribed voicemails",
-                      throwable))
-          .build()
-          .executeParallel(null);
-    }
-  }
-
-  public static void setVoicemailDonationEnabled(
-      Context context, PhoneAccountHandle phoneAccount, boolean isEnabled) {
-    Assert.checkArgument(
-        VoicemailComponent.get(context)
-            .getVoicemailClient()
-            .isVoicemailTranscriptionAvailable(context, phoneAccount));
-    new VisualVoicemailPreferences(context, phoneAccount)
-        .edit()
-        .putBoolean(DONATE_VOICEMAILS_KEY, isEnabled)
-        .apply();
-  }
-
   public static boolean isEnabled(Context context, PhoneAccountHandle phoneAccount) {
     if (phoneAccount == null) {
       LogUtil.i("VisualVoicemailSettingsUtil.isEnabled", "phone account is null");
@@ -152,36 +100,6 @@
     return prefs.getBoolean(ARCHIVE_ENABLED_KEY, false);
   }
 
-  public static boolean isVoicemailTranscriptionEnabled(
-      Context context, PhoneAccountHandle phoneAccount) {
-    Assert.isNotNull(phoneAccount);
-
-    VisualVoicemailPreferences prefs = new VisualVoicemailPreferences(context, phoneAccount);
-    return prefs.getBoolean(TRANSCRIBE_VOICEMAILS_KEY, false);
-  }
-
-  public static boolean isVoicemailDonationEnabled(
-      Context context, PhoneAccountHandle phoneAccount) {
-    Assert.isNotNull(phoneAccount);
-
-    VisualVoicemailPreferences prefs = new VisualVoicemailPreferences(context, phoneAccount);
-    return prefs.getBoolean(DONATE_VOICEMAILS_KEY, false);
-  }
-
-  /**
-   * Whether the client enabled status is explicitly set by user or by default(Whether carrier VVM
-   * app is installed). This is used to determine whether to disable the client when the carrier VVM
-   * app is installed. If the carrier VVM app is installed the client should give priority to it if
-   * the settings are not touched.
-   */
-  public static boolean isEnabledUserSet(Context context, PhoneAccountHandle phoneAccount) {
-    if (phoneAccount == null) {
-      return false;
-    }
-    VisualVoicemailPreferences prefs = new VisualVoicemailPreferences(context, phoneAccount);
-    return prefs.contains(IS_ENABLED_KEY);
-  }
-
   /** Delete all the voicemails whose source_package field matches this package */
   private static class VoicemailDeleteWorker implements Worker<Void, Void> {
     private final Context context;
@@ -201,45 +119,4 @@
       return null;
     }
   }
-
-  /**
-   * Clears all the voicemail transcripts in the call log whose source_package field matches this
-   * package
-   */
-  private static class ClearGoogleTranscribedVoicemailTranscriptionWorker
-      implements Worker<Void, Void> {
-    private final Context context;
-
-    ClearGoogleTranscribedVoicemailTranscriptionWorker(Context context) {
-      this.context = context;
-    }
-
-    @Override
-    public Void doInBackground(Void unused) {
-      ContentValues contentValues = new ContentValues();
-      contentValues.putNull(Voicemails.TRANSCRIPTION);
-      contentValues.put(
-          VoicemailCompat.TRANSCRIPTION_STATE, VoicemailCompat.TRANSCRIPTION_NOT_STARTED);
-
-      Selection selection =
-          Selection.builder()
-              .and(Selection.column(CallLog.Calls.TYPE).is("=", Calls.VOICEMAIL_TYPE))
-              .and(Selection.column(Voicemails.SOURCE_PACKAGE).is("=", context.getPackageName()))
-              .build();
-
-      int cleared =
-          context
-              .getContentResolver()
-              .update(
-                  Calls.CONTENT_URI_WITH_VOICEMAIL,
-                  contentValues,
-                  selection.getSelection(),
-                  selection.getSelectionArgs());
-
-      VvmLog.i(
-          "VisualVoicemailSettingsUtil.doInBackground",
-          "cleared " + cleared + " voicemail transcription");
-      return null;
-    }
-  }
 }
diff --git a/java/com/android/voicemail/impl/sms/AdvvmSmsReceiver.java b/java/com/android/voicemail/impl/sms/AdvvmSmsReceiver.java
new file mode 100644
index 0000000..384b8ce
--- /dev/null
+++ b/java/com/android/voicemail/impl/sms/AdvvmSmsReceiver.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2024 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.voicemail.impl.sms;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.Telephony;
+import android.telephony.SmsMessage;
+import com.android.dialer.telecom.TelecomUtil;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import com.android.voicemail.impl.sync.SyncTask;
+
+/** Receive data SMS messages for the ADVVM protocol used by AT&T and others. */
+public class AdvvmSmsReceiver extends BroadcastReceiver {
+
+  private static final String TAG = "AdvvmSmsReceiver";
+
+  @Override
+  public void onReceive(Context context, Intent intent) {
+    SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
+    for (SmsMessage msg: messages) {
+      // in order to query parameters we need to have a `scheme://`
+      Uri bodyUri = Uri.parse("advvm://" + msg.getMessageBody());
+      // TODO: once AT&T's protocol is better understood, we probably will need
+      // to handle the actual parameters of this. For now, just trigger a sync
+      // since that is apparently the only time we will receive these messages
+      // currently.
+      PhoneAccountHandle phone =
+          TelecomUtil.getDefaultOutgoingPhoneAccount(context, PhoneAccount.SCHEME_VOICEMAIL);
+      SyncTask.start(context, phone);
+    }
+  }
+}
diff --git a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
index 5a16f86..6c28fc7 100644
--- a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
+++ b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
@@ -16,16 +16,17 @@
 
 package com.android.voicemail.impl.sms;
 
-import android.annotation.TargetApi;
+import android.annotation.SuppressLint;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
 import android.telephony.VisualVoicemailSms;
+
+import androidx.annotation.Nullable;
+
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.precall.PreCall;
@@ -39,7 +40,6 @@
  *
  * @see OmtpVvmCarrierConfigHelper#isLegacyModeEnabled()
  */
-@TargetApi(VERSION_CODES.O)
 public class LegacyModeSmsHandler {
 
   private static final String TAG = "LegacyModeSmsHandler";
@@ -134,6 +134,7 @@
     context.sendBroadcast(intent);
   }
 
+  @SuppressLint("MissingPermission")
   @Nullable
   private static String getVoicemailNumber(Context context, PhoneAccountHandle phoneAccountHandle) {
     TelephonyManager telephonyManager =
diff --git a/java/com/android/voicemail/impl/sms/OmtpCvvmMessageSender.java b/java/com/android/voicemail/impl/sms/OmtpCvvmMessageSender.java
index 0df639f..500c61c 100644
--- a/java/com/android/voicemail/impl/sms/OmtpCvvmMessageSender.java
+++ b/java/com/android/voicemail/impl/sms/OmtpCvvmMessageSender.java
@@ -17,8 +17,10 @@
 
 import android.app.PendingIntent;
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.impl.OmtpConstants;
 
 /** An implementation of the OmtpMessageSender for T-Mobile. */
diff --git a/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java b/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
index 0f22c3d..98fd372 100644
--- a/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
+++ b/java/com/android/voicemail/impl/sms/OmtpMessageReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,17 +16,16 @@
  */
 package com.android.voicemail.impl.sms;
 
-import android.annotation.TargetApi;
 import android.content.BroadcastReceiver;
 import android.content.ContentUris;
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.UserManager;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.VisualVoicemailSms;
+
 import com.android.voicemail.impl.ActivationTask;
 import com.android.voicemail.impl.OmtpConstants;
 import com.android.voicemail.impl.OmtpService;
@@ -42,7 +42,6 @@
 import com.android.voicemail.impl.utils.VoicemailDatabaseUtil;
 
 /** Receive SMS messages and send for processing by the OMTP visual voicemail source. */
-@TargetApi(VERSION_CODES.O)
 public class OmtpMessageReceiver extends BroadcastReceiver {
 
   private static final String TAG = "OmtpMessageReceiver";
@@ -52,8 +51,9 @@
   @Override
   public void onReceive(Context context, Intent intent) {
     this.context = context;
-    VisualVoicemailSms sms = intent.getExtras().getParcelable(OmtpService.EXTRA_VOICEMAIL_SMS);
-    PhoneAccountHandle phone = sms.getPhoneAccountHandle();
+    VisualVoicemailSms sms = intent.getExtras().getParcelable(OmtpService.EXTRA_VOICEMAIL_SMS,
+            VisualVoicemailSms.class);
+    PhoneAccountHandle phone = sms != null ? sms.getPhoneAccountHandle() : null;
 
     if (phone == null) {
       // This should never happen
diff --git a/java/com/android/voicemail/impl/sms/OmtpMessageSender.java b/java/com/android/voicemail/impl/sms/OmtpMessageSender.java
index 8b9e049..aa8e043 100644
--- a/java/com/android/voicemail/impl/sms/OmtpMessageSender.java
+++ b/java/com/android/voicemail/impl/sms/OmtpMessageSender.java
@@ -15,14 +15,14 @@
  */
 package com.android.voicemail.impl.sms;
 
-import android.annotation.TargetApi;
 import android.app.PendingIntent;
 import android.content.Context;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.SmsManager;
 import android.telephony.TelephonyManager;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.impl.OmtpConstants;
 import com.android.voicemail.impl.VvmLog;
 
@@ -35,7 +35,6 @@
  *
  * <p>Provides simple APIs to send different types of mobile originated OMTP SMS to the VVM server.
  */
-@TargetApi(VERSION_CODES.O)
 public abstract class OmtpMessageSender {
   protected static final String TAG = "OmtpMessageSender";
   protected final Context context;
diff --git a/java/com/android/voicemail/impl/sms/OmtpStandardMessageSender.java b/java/com/android/voicemail/impl/sms/OmtpStandardMessageSender.java
index a8d27ff..83d1710 100644
--- a/java/com/android/voicemail/impl/sms/OmtpStandardMessageSender.java
+++ b/java/com/android/voicemail/impl/sms/OmtpStandardMessageSender.java
@@ -17,9 +17,11 @@
 
 import android.app.PendingIntent;
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.impl.OmtpConstants;
 
 /** A implementation of the OmtpMessageSender using the standard OMTP sms protocol. */
diff --git a/java/com/android/voicemail/impl/sms/StatusMessage.java b/java/com/android/voicemail/impl/sms/StatusMessage.java
index 7fd2966..0226e6f 100644
--- a/java/com/android/voicemail/impl/sms/StatusMessage.java
+++ b/java/com/android/voicemail/impl/sms/StatusMessage.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +17,7 @@
 package com.android.voicemail.impl.sms;
 
 import android.os.Bundle;
-import com.android.voicemail.impl.NeededForTesting;
+
 import com.android.voicemail.impl.OmtpConstants;
 import com.android.voicemail.impl.VisualVoicemailPreferences;
 import com.android.voicemail.impl.VvmLog;
@@ -34,16 +35,10 @@
 
   private final String provisioningStatus;
   private final String statusReturnCode;
-  private final String subscriptionUrl;
   private final String serverAddress;
-  private final String tuiAccessNumber;
-  private final String clientSmsDestinationNumber;
   private final String imapPort;
   private final String imapUserName;
   private final String imapPassword;
-  private final String smtpPort;
-  private final String smtpUserName;
-  private final String smtpPassword;
   private final String tuiPasswordLength;
 
   @Override
@@ -52,26 +47,14 @@
         + provisioningStatus
         + ", mStatusReturnCode="
         + statusReturnCode
-        + ", mSubscriptionUrl="
-        + subscriptionUrl
         + ", mServerAddress="
         + serverAddress
-        + ", mTuiAccessNumber="
-        + tuiAccessNumber
-        + ", mClientSmsDestinationNumber="
-        + clientSmsDestinationNumber
         + ", mImapPort="
         + imapPort
         + ", mImapUserName="
         + imapUserName
         + ", mImapPassword="
         + VvmLog.pii(imapPassword)
-        + ", mSmtpPort="
-        + smtpPort
-        + ", mSmtpUserName="
-        + smtpUserName
-        + ", mSmtpPassword="
-        + VvmLog.pii(smtpPassword)
         + ", mTuiPasswordLength="
         + tuiPasswordLength
         + "]";
@@ -80,17 +63,10 @@
   public StatusMessage(Bundle wrappedData) {
     provisioningStatus = unquote(getString(wrappedData, OmtpConstants.PROVISIONING_STATUS));
     statusReturnCode = getString(wrappedData, OmtpConstants.RETURN_CODE);
-    subscriptionUrl = getString(wrappedData, OmtpConstants.SUBSCRIPTION_URL);
     serverAddress = getString(wrappedData, OmtpConstants.SERVER_ADDRESS);
-    tuiAccessNumber = getString(wrappedData, OmtpConstants.TUI_ACCESS_NUMBER);
-    clientSmsDestinationNumber =
-        getString(wrappedData, OmtpConstants.CLIENT_SMS_DESTINATION_NUMBER);
     imapPort = getString(wrappedData, OmtpConstants.IMAP_PORT);
     imapUserName = getString(wrappedData, OmtpConstants.IMAP_USER_NAME);
     imapPassword = getString(wrappedData, OmtpConstants.IMAP_PASSWORD);
-    smtpPort = getString(wrappedData, OmtpConstants.SMTP_PORT);
-    smtpUserName = getString(wrappedData, OmtpConstants.SMTP_USER_NAME);
-    smtpPassword = getString(wrappedData, OmtpConstants.SMTP_PASSWORD);
     tuiPasswordLength = getString(wrappedData, OmtpConstants.TUI_PASSWORD_LENGTH);
   }
 
@@ -115,35 +91,12 @@
   }
 
   /**
-   * @return the URL of the voicemail server. This is the URL to send the users to for subscribing
-   *     to the visual voicemail service.
-   */
-  @NeededForTesting
-  public String getSubscriptionUrl() {
-    return subscriptionUrl;
-  }
-
-  /**
    * @return the voicemail server address. Either server IP address or fully qualified domain name.
    */
   public String getServerAddress() {
     return serverAddress;
   }
 
-  /**
-   * @return the Telephony User Interface number to call to access voicemails directly from the IVR.
-   */
-  @NeededForTesting
-  public String getTuiAccessNumber() {
-    return tuiAccessNumber;
-  }
-
-  /** @return the number to which client originated SMSes should be sent to. */
-  @NeededForTesting
-  public String getClientSmsDestinationNumber() {
-    return clientSmsDestinationNumber;
-  }
-
   /** @return the IMAP server port to talk to. */
   public String getImapPort() {
     return imapPort;
@@ -159,24 +112,6 @@
     return imapPassword;
   }
 
-  /** @return the SMTP server port to talk to. */
-  @NeededForTesting
-  public String getSmtpPort() {
-    return smtpPort;
-  }
-
-  /** @return the SMTP user name to be used for SMTP authentication. */
-  @NeededForTesting
-  public String getSmtpUserName() {
-    return smtpUserName;
-  }
-
-  /** @return the SMTP password to be used for SMTP authentication. */
-  @NeededForTesting
-  public String getSmtpPassword() {
-    return smtpPassword;
-  }
-
   public String getTuiPasswordLength() {
     return tuiPasswordLength;
   }
diff --git a/java/com/android/voicemail/impl/sms/StatusSmsFetcher.java b/java/com/android/voicemail/impl/sms/StatusSmsFetcher.java
index dd945e9..8b3e845 100644
--- a/java/com/android/voicemail/impl/sms/StatusSmsFetcher.java
+++ b/java/com/android/voicemail/impl/sms/StatusSmsFetcher.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,27 +17,28 @@
 
 package com.android.voicemail.impl.sms;
 
-import android.annotation.TargetApi;
 import android.app.Activity;
 import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
-import android.support.annotation.MainThread;
-import android.support.annotation.Nullable;
-import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.SmsManager;
 import android.telephony.VisualVoicemailSms;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
 import com.android.voicemail.impl.Assert;
 import com.android.voicemail.impl.OmtpConstants;
 import com.android.voicemail.impl.OmtpService;
 import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.protocol.VisualVoicemailProtocol;
+
 import java.io.Closeable;
 import java.io.IOException;
 import java.util.concurrent.CancellationException;
@@ -46,7 +48,6 @@
 import java.util.concurrent.TimeoutException;
 
 /** Intercepts a incoming STATUS SMS with a blocking call. */
-@TargetApi(VERSION_CODES.O)
 public class StatusSmsFetcher extends BroadcastReceiver implements Closeable {
 
   private static final String TAG = "VvmStatusSmsFetcher";
@@ -61,7 +62,7 @@
 
   private static final int ACTION_REQUEST_SENT_REQUEST_CODE = 0;
 
-  private CompletableFuture<Bundle> future = new CompletableFuture<>();
+  private final CompletableFuture<Bundle> future = new CompletableFuture<>();
 
   private final Context context;
   private final PhoneAccountHandle phoneAccountHandle;
@@ -71,7 +72,8 @@
     this.phoneAccountHandle = phoneAccountHandle;
     IntentFilter filter = new IntentFilter(ACTION_REQUEST_SENT_INTENT);
     filter.addAction(OmtpService.ACTION_SMS_RECEIVED);
-    context.registerReceiver(this, filter, PERMISSION_DIALER_ORIGIN, /* scheduler= */ null);
+    context.registerReceiver(this, filter, PERMISSION_DIALER_ORIGIN, /* scheduler= */ null,
+            Context.RECEIVER_NOT_EXPORTED);
   }
 
   @Override
@@ -116,9 +118,14 @@
       return;
     }
 
-    VisualVoicemailSms sms = intent.getExtras().getParcelable(OmtpService.EXTRA_VOICEMAIL_SMS);
+    if (intent.getExtras() == null) {
+      return;
+    }
 
-    if (!phoneAccountHandle.equals(sms.getPhoneAccountHandle())) {
+    VisualVoicemailSms sms = intent.getExtras().getParcelable(OmtpService.EXTRA_VOICEMAIL_SMS,
+            VisualVoicemailSms.class);
+
+    if (sms == null || !phoneAccountHandle.equals(sms.getPhoneAccountHandle())) {
       return;
     }
     String eventType = sms.getPrefix();
diff --git a/java/com/android/voicemail/impl/sms/SyncMessage.java b/java/com/android/voicemail/impl/sms/SyncMessage.java
index de5b3ce..261ad9d 100644
--- a/java/com/android/voicemail/impl/sms/SyncMessage.java
+++ b/java/com/android/voicemail/impl/sms/SyncMessage.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,9 +17,11 @@
 package com.android.voicemail.impl.sms;
 
 import android.os.Bundle;
-import android.support.annotation.Nullable;
-import com.android.voicemail.impl.NeededForTesting;
+
+import androidx.annotation.Nullable;
+
 import com.android.voicemail.impl.OmtpConstants;
+
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Locale;
@@ -93,7 +96,6 @@
   }
 
   /** @return the number of new messages stored on the voicemail server. */
-  @NeededForTesting
   public int getNewMessageCount() {
     return newMessageCount;
   }
@@ -110,7 +112,6 @@
    * @return the content type of the new message.
    *     <p>Expected to be set only for {@link OmtpConstants#NEW_MESSAGE}
    */
-  @NeededForTesting
   public String getContentType() {
     return contentType;
   }
diff --git a/java/com/android/voicemail/impl/sms/Vvm3MessageSender.java b/java/com/android/voicemail/impl/sms/Vvm3MessageSender.java
index 1f17692..fd61c1b 100644
--- a/java/com/android/voicemail/impl/sms/Vvm3MessageSender.java
+++ b/java/com/android/voicemail/impl/sms/Vvm3MessageSender.java
@@ -17,9 +17,10 @@
 
 import android.app.PendingIntent;
 import android.content.Context;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
 
+import androidx.annotation.Nullable;
+
 public class Vvm3MessageSender extends OmtpMessageSender {
 
   /**
diff --git a/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java b/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
index 1b59ecc..6dc8130 100644
--- a/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
+++ b/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,22 +17,26 @@
 
 package com.android.voicemail.impl.sync;
 
+import android.annotation.SuppressLint;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.provider.VoicemailContract;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
+
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.ActivationTask;
 import com.android.voicemail.impl.VvmLog;
 import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
+
 import java.util.List;
 
 public class OmtpVvmSyncReceiver extends BroadcastReceiver {
 
   private static final String TAG = "OmtpVvmSyncReceiver";
 
+  @SuppressLint("MissingPermission")
   @Override
   public void onReceive(final Context context, Intent intent) {
     if (!VoicemailComponent.get(context).getVoicemailClient().isVoicemailModuleEnabled()) {
diff --git a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
index cf2763b..822a177 100644
--- a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
+++ b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,16 +16,13 @@
  */
 package com.android.voicemail.impl.sync;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.net.Network;
 import android.net.Uri;
-import android.os.Build.VERSION_CODES;
-import android.support.v4.os.BuildCompat;
 import android.telecom.PhoneAccountHandle;
 import android.text.TextUtils;
 import android.util.ArrayMap;
-import com.android.dialer.logging.DialerImpression;
+
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.ActivationTask;
 import com.android.voicemail.impl.Assert;
@@ -41,14 +39,13 @@
 import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
 import com.android.voicemail.impl.sync.VvmNetworkRequest.NetworkWrapper;
 import com.android.voicemail.impl.sync.VvmNetworkRequest.RequestFailedException;
-import com.android.voicemail.impl.utils.LoggerUtils;
 import com.android.voicemail.impl.utils.VoicemailDatabaseUtil;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
 /** Sync OMTP visual voicemail. */
-@TargetApi(VERSION_CODES.O)
 public class OmtpVvmSyncService {
 
   private static final String TAG = "OmtpVvmSyncService";
@@ -89,7 +86,6 @@
     }
 
     OmtpVvmCarrierConfigHelper config = new OmtpVvmCarrierConfigHelper(context, phoneAccount);
-    LoggerUtils.logImpressionOnMainThread(context, DialerImpression.Type.VVM_SYNC_STARTED);
     // DATA_IMAP_OPERATION_STARTED posting should not be deferred. This event clears all data
     // channel errors, which should happen when the task starts, not when it ends. It is the
     // "Sync in progress..." status, which is currently displayed to the user as no error.
@@ -126,7 +122,6 @@
         imapHelper.updateQuota();
         autoDeleteAndArchiveVM(imapHelper, phoneAccount);
         imapHelper.handleEvent(OmtpEvents.DATA_IMAP_OPERATION_COMPLETED);
-        LoggerUtils.logImpressionOnMainThread(context, DialerImpression.Type.VVM_SYNC_COMPLETED);
       } else {
         task.fail();
       }
@@ -144,14 +139,10 @@
       ImapHelper imapHelper, PhoneAccountHandle phoneAccountHandle) {
     if (!isArchiveAllowedAndEnabled(context, phoneAccountHandle)) {
       VvmLog.i(TAG, "autoDeleteAndArchiveVM is turned off");
-      LoggerUtils.logImpressionOnMainThread(
-          context, DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETE_TURNED_OFF);
       return;
     }
     Quota quotaOnServer = imapHelper.getQuota();
     if (quotaOnServer == null) {
-      LoggerUtils.logImpressionOnMainThread(
-          context, DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETE_FAILED_DUE_TO_FAILED_QUOTA_CHECK);
       VvmLog.e(TAG, "autoDeleteAndArchiveVM failed - Can't retrieve Imap quota.");
       return;
     }
@@ -160,8 +151,6 @@
         > AUTO_DELETE_ARCHIVE_VM_THRESHOLD) {
       deleteAndArchiveVM(imapHelper, quotaOnServer);
       imapHelper.updateQuota();
-      LoggerUtils.logImpressionOnMainThread(
-          context, DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETED_VM_FROM_SERVER);
     } else {
       VvmLog.i(TAG, "no need to archive and auto delete VM, quota below threshold");
     }
@@ -188,9 +177,6 @@
   }
 
   private void deleteAndArchiveVM(ImapHelper imapHelper, Quota quotaOnServer) {
-    // Archive column should only be used for 0 and above
-    Assert.isTrue(BuildCompat.isAtLeastO());
-
     // The number of voicemails that exceed our threshold and should be deleted from the server
     int numVoicemails =
         quotaOnServer.occupied - (int) (AUTO_DELETE_ARCHIVE_VM_THRESHOLD * quotaOnServer.total);
@@ -259,8 +245,6 @@
 
         if (!TextUtils.isEmpty(remoteVoicemail.getTranscription())
             && TextUtils.isEmpty(localVoicemail.getTranscription())) {
-          LoggerUtils.logImpressionOnMainThread(
-              context, DialerImpression.Type.VVM_TRANSCRIPTION_DOWNLOADED);
           queryHelper.updateWithTranscription(localVoicemail, remoteVoicemail.getTranscription());
         }
       }
@@ -279,10 +263,6 @@
     // The leftover messages are messages that exist on the server but not locally.
     boolean prefetchEnabled = shouldPerformPrefetch(account, imapHelper);
     for (Voicemail remoteVoicemail : remoteMap.values()) {
-      if (!TextUtils.isEmpty(remoteVoicemail.getTranscription())) {
-        LoggerUtils.logImpressionOnMainThread(
-            context, DialerImpression.Type.VVM_TRANSCRIPTION_DOWNLOADED);
-      }
       Uri uri = VoicemailDatabaseUtil.insert(context, remoteVoicemail);
       if (prefetchEnabled) {
         VoicemailFetchedCallback fetchedCallback =
@@ -314,7 +294,7 @@
 
   /** Builds a map from provider data to message for the given collection of voicemails. */
   private Map<String, Voicemail> buildMap(List<Voicemail> messages) {
-    Map<String, Voicemail> map = new ArrayMap<String, Voicemail>();
+    Map<String, Voicemail> map = new ArrayMap<>();
     for (Voicemail message : messages) {
       map.put(message.getSourceData(), message);
     }
@@ -324,8 +304,8 @@
   /** Callback for {@link ImapHelper#fetchTranscription(TranscriptionFetchedCallback, String)} */
   public static class TranscriptionFetchedCallback {
 
-    private Context context;
-    private Voicemail voicemail;
+    private final Context context;
+    private final Voicemail voicemail;
 
     public TranscriptionFetchedCallback(Context context, Voicemail voicemail) {
       this.context = context;
diff --git a/java/com/android/voicemail/impl/sync/SyncOneTask.java b/java/com/android/voicemail/impl/sync/SyncOneTask.java
index 2f0b23f..7452e14 100644
--- a/java/com/android/voicemail/impl/sync/SyncOneTask.java
+++ b/java/com/android/voicemail/impl/sync/SyncOneTask.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,13 +21,12 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.telecom.PhoneAccountHandle;
-import com.android.dialer.logging.DialerImpression;
+
 import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.Voicemail;
 import com.android.voicemail.impl.VoicemailStatus;
 import com.android.voicemail.impl.scheduling.BaseTask;
 import com.android.voicemail.impl.scheduling.RetryPolicy;
-import com.android.voicemail.impl.utils.LoggerUtils;
 
 /**
  * Task to download a single voicemail from the server. This task is initiated by a SMS notifying
@@ -59,8 +59,8 @@
   @Override
   public void onCreate(Context context, Bundle extras) {
     super.onCreate(context, extras);
-    phone = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE);
-    voicemail = extras.getParcelable(EXTRA_VOICEMAIL);
+    phone = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE, PhoneAccountHandle.class);
+    voicemail = extras.getParcelable(EXTRA_VOICEMAIL, Voicemail.class);
   }
 
   @Override
@@ -71,7 +71,6 @@
 
   @Override
   public Intent createRestartIntent() {
-    LoggerUtils.logImpressionOnMainThread(getContext(), DialerImpression.Type.VVM_AUTO_RETRY_SYNC);
     Intent intent = super.createRestartIntent();
     intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phone);
     intent.putExtra(EXTRA_VOICEMAIL, voicemail);
diff --git a/java/com/android/voicemail/impl/sync/SyncTask.java b/java/com/android/voicemail/impl/sync/SyncTask.java
index 06a5e9e..501feba 100644
--- a/java/com/android/voicemail/impl/sync/SyncTask.java
+++ b/java/com/android/voicemail/impl/sync/SyncTask.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,12 +21,11 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.telecom.PhoneAccountHandle;
-import com.android.dialer.logging.DialerImpression;
+
 import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.scheduling.BaseTask;
 import com.android.voicemail.impl.scheduling.MinimalIntervalPolicy;
 import com.android.voicemail.impl.scheduling.RetryPolicy;
-import com.android.voicemail.impl.utils.LoggerUtils;
 
 /** System initiated sync request. */
 @UsedByReflection(value = "Tasks.java")
@@ -58,7 +58,7 @@
   @Override
   public void onCreate(Context context, Bundle extras) {
     super.onCreate(context, extras);
-    phone = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE);
+    phone = extras.getParcelable(EXTRA_PHONE_ACCOUNT_HANDLE, PhoneAccountHandle.class);
   }
 
   @Override
@@ -69,7 +69,6 @@
 
   @Override
   public Intent createRestartIntent() {
-    LoggerUtils.logImpressionOnMainThread(getContext(), DialerImpression.Type.VVM_AUTO_RETRY_SYNC);
     Intent intent = super.createRestartIntent();
     intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phone);
     return intent;
diff --git a/java/com/android/voicemail/impl/sync/UploadTask.java b/java/com/android/voicemail/impl/sync/UploadTask.java
index d8f06db..03f0b22 100644
--- a/java/com/android/voicemail/impl/sync/UploadTask.java
+++ b/java/com/android/voicemail/impl/sync/UploadTask.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.telecom.PhoneAccountHandle;
+
 import com.android.dialer.proguard.UsedByReflection;
 import com.android.voicemail.impl.VoicemailStatus;
 import com.android.voicemail.impl.VvmLog;
diff --git a/java/com/android/voicemail/impl/sync/VoicemailProviderChangeReceiver.java b/java/com/android/voicemail/impl/sync/VoicemailProviderChangeReceiver.java
index 7fde1fe..4bf7ea8 100644
--- a/java/com/android/voicemail/impl/sync/VoicemailProviderChangeReceiver.java
+++ b/java/com/android/voicemail/impl/sync/VoicemailProviderChangeReceiver.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
 import android.content.Intent;
 import android.provider.VoicemailContract;
 import android.telecom.PhoneAccountHandle;
+
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
 
diff --git a/java/com/android/voicemail/impl/sync/VoicemailStatusQueryHelper.java b/java/com/android/voicemail/impl/sync/VoicemailStatusQueryHelper.java
index 259d79b..4cdf330 100644
--- a/java/com/android/voicemail/impl/sync/VoicemailStatusQueryHelper.java
+++ b/java/com/android/voicemail/impl/sync/VoicemailStatusQueryHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -39,9 +40,9 @@
   public static final int NOTIFICATION_CHANNEL_STATE = 2;
   public static final int SOURCE_PACKAGE = 3;
 
-  private Context context;
-  private ContentResolver contentResolver;
-  private Uri sourceUri;
+  private final Context context;
+  private final ContentResolver contentResolver;
+  private final Uri sourceUri;
 
   public VoicemailStatusQueryHelper(Context context) {
     this.context = context;
diff --git a/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java b/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
index d0c2ccf..5cb0363 100644
--- a/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
+++ b/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,10 +24,13 @@
 import android.net.Uri;
 import android.provider.VoicemailContract;
 import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.NonNull;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.voicemail.impl.Voicemail;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -50,9 +54,9 @@
   static final String DELETED_SELECTION = Voicemails.DELETED + "=1";
   static final String ARCHIVED_SELECTION = Voicemails.ARCHIVED + "=0";
 
-  private Context context;
-  private ContentResolver contentResolver;
-  private Uri sourceUri;
+  private final Context context;
+  private final ContentResolver contentResolver;
+  private final Uri sourceUri;
 
   public VoicemailsQueryHelper(Context context) {
     this.context = context;
@@ -87,13 +91,13 @@
    * @return A list of voicemails according to the selection statement.
    */
   private List<Voicemail> getLocalVoicemails(
-      @NonNull PhoneAccountHandle unusedPhoneAccountHandle, String selection) {
+          @NonNull PhoneAccountHandle unusedPhoneAccountHandle, String selection) {
     Cursor cursor = contentResolver.query(sourceUri, PROJECTION, selection, null, null);
     if (cursor == null) {
       return null;
     }
     try {
-      List<Voicemail> voicemails = new ArrayList<Voicemail>();
+      List<Voicemail> voicemails = new ArrayList<>();
       while (cursor.moveToNext()) {
         final long id = cursor.getLong(_ID);
         final String sourceData = cursor.getString(SOURCE_DATA);
@@ -132,7 +136,7 @@
       sb.append(voicemails.get(i).getId());
     }
 
-    String selectionStatement = String.format(Voicemails._ID + " IN (%s)", sb.toString());
+    String selectionStatement = String.format(Voicemails._ID + " IN (%s)", sb);
     return contentResolver.delete(Voicemails.CONTENT_URI, selectionStatement, null);
   }
 
@@ -207,7 +211,7 @@
       String phoneAccountComponentName = phoneAccount.getComponentName().flattenToString();
       String phoneAccountId = phoneAccount.getId();
       String sourceData = voicemail.getSourceData();
-      if (phoneAccountComponentName == null || phoneAccountId == null || sourceData == null) {
+      if (phoneAccountId == null || sourceData == null) {
         return true;
       }
       try {
@@ -220,11 +224,7 @@
                 + "=?";
         String[] whereArgs = {phoneAccountComponentName, phoneAccountId, sourceData};
         cursor = contentResolver.query(sourceUri, PROJECTION, whereClause, whereArgs, null);
-        if (cursor.getCount() == 0) {
-          return true;
-        } else {
-          return false;
-        }
+        return cursor.getCount() == 0;
       } finally {
         if (cursor != null) {
           cursor.close();
diff --git a/java/com/android/voicemail/impl/sync/VvmAccountManager.java b/java/com/android/voicemail/impl/sync/VvmAccountManager.java
index e7f2eef..90abda7 100644
--- a/java/com/android/voicemail/impl/sync/VvmAccountManager.java
+++ b/java/com/android/voicemail/impl/sync/VvmAccountManager.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,16 +16,16 @@
  */
 package com.android.voicemail.impl.sync;
 
-import android.annotation.TargetApi;
+import android.annotation.SuppressLint;
 import android.content.Context;
-import android.os.Build.VERSION_CODES;
 import android.os.UserManager;
-import android.support.annotation.MainThread;
-import android.support.annotation.NonNull;
-import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.util.ArraySet;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.PerAccountSharedPreferences;
 import com.android.dialer.common.concurrent.ThreadUtil;
@@ -34,6 +35,7 @@
 import com.android.voicemail.impl.VisualVoicemailPreferences;
 import com.android.voicemail.impl.VoicemailStatus;
 import com.android.voicemail.impl.sms.StatusMessage;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
@@ -47,11 +49,10 @@
  * #removeAccount(Context, PhoneAccountHandle)} should be called to clear the connection information
  * and allow reactivation.
  */
-@TargetApi(VERSION_CODES.O)
 public class VvmAccountManager {
   public static final String TAG = "VvmAccountManager";
 
-  @VisibleForTesting static final String IS_ACCOUNT_ACTIVATED = "is_account_activated";
+  private static final String IS_ACCOUNT_ACTIVATED = "is_account_activated";
 
   private static final Set<ActivationStateListener> listeners = new ArraySet<>();
 
@@ -95,6 +96,7 @@
     return preferences.getBoolean(IS_ACCOUNT_ACTIVATED, false);
   }
 
+  @SuppressLint("MissingPermission")
   @NonNull
   public static List<PhoneAccountHandle> getActiveAccounts(Context context) {
     List<PhoneAccountHandle> results = new ArrayList<>();
diff --git a/java/com/android/voicemail/impl/sync/VvmNetworkRequest.java b/java/com/android/voicemail/impl/sync/VvmNetworkRequest.java
index a7d578d..a342efa 100644
--- a/java/com/android/voicemail/impl/sync/VvmNetworkRequest.java
+++ b/java/com/android/voicemail/impl/sync/VvmNetworkRequest.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,14 +17,15 @@
 
 package com.android.voicemail.impl.sync;
 
-import android.annotation.TargetApi;
 import android.net.Network;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.NonNull;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.NonNull;
+
 import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
 import com.android.voicemail.impl.VoicemailStatus;
 import com.android.voicemail.impl.VvmLog;
+
 import java.io.Closeable;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
@@ -33,7 +35,6 @@
  * Class to retrieve a {@link Network} synchronously. {@link #getNetwork(OmtpVvmCarrierConfigHelper,
  * PhoneAccountHandle)} will block until a suitable network is retrieved or it has failed.
  */
-@TargetApi(VERSION_CODES.O)
 public class VvmNetworkRequest {
 
   private static final String TAG = "VvmNetworkRequest";
diff --git a/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java b/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
index 5762a09..d19dae7 100644
--- a/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
+++ b/java/com/android/voicemail/impl/sync/VvmNetworkRequestCallback.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,7 +16,6 @@
  */
 package com.android.voicemail.impl.sync;
 
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.net.ConnectivityManager;
 import android.net.InetAddresses;
@@ -24,12 +24,13 @@
 import android.net.NetworkCapabilities;
 import android.net.NetworkRequest;
 import android.os.ConditionVariable;
-import android.os.Build.VERSION_CODES;
 import android.os.Handler;
 import android.os.Looper;
-import android.support.annotation.CallSuper;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.TelephonyManager;
+
+import androidx.annotation.CallSuper;
+
 import com.android.dialer.common.Assert;
 import com.android.voicemail.impl.OmtpEvents;
 import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
@@ -40,7 +41,6 @@
  * Base class for network request call backs for visual voicemail syncing with the Imap server. This
  * handles retries and network requests.
  */
-@TargetApi(VERSION_CODES.O)
 public abstract class VvmNetworkRequestCallback extends ConnectivityManager.NetworkCallback {
 
   private static final String TAG = "VvmNetworkRequest";
@@ -51,9 +51,9 @@
   public static final String NETWORK_REQUEST_FAILED_TIMEOUT = "timeout";
   public static final String NETWORK_REQUEST_FAILED_LOST = "lost";
 
-  protected Context context;
-  protected PhoneAccountHandle phoneAccount;
-  protected NetworkRequest networkRequest;
+  protected final Context context;
+  protected final PhoneAccountHandle phoneAccount;
+  protected final NetworkRequest networkRequest;
   private ConnectivityManager connectivityManager;
   private final OmtpVvmCarrierConfigHelper carrierConfigHelper;
   private final VoicemailStatus.Editor status;
@@ -152,7 +152,7 @@
   }
 
   public void requestNetwork() {
-    if (requestSent == true) {
+    if (requestSent) {
       VvmLog.e(TAG, "requestNetwork() called twice");
       return;
     }
@@ -164,15 +164,11 @@
      */
     Handler handler = new Handler(Looper.getMainLooper());
     handler.postDelayed(
-        new Runnable() {
-          @Override
-          public void run() {
-            if (resultReceived == false) {
-              onFailed(NETWORK_REQUEST_FAILED_TIMEOUT);
-            }
-          }
-        },
-        NETWORK_REQUEST_TIMEOUT_MILLIS);
+            () -> {
+              if (!resultReceived) {
+                onFailed(NETWORK_REQUEST_FAILED_TIMEOUT);
+              }},
+            NETWORK_REQUEST_TIMEOUT_MILLIS);
   }
 
   public void releaseNetwork() {
diff --git a/java/com/android/voicemail/impl/transcribe/GetTranscriptReceiver.java b/java/com/android/voicemail/impl/transcribe/GetTranscriptReceiver.java
deleted file mode 100644
index 5c5bae5..0000000
--- a/java/com/android/voicemail/impl/transcribe/GetTranscriptReceiver.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe;
-
-import android.app.AlarmManager;
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.SystemClock;
-import android.support.annotation.Nullable;
-import android.telecom.PhoneAccountHandle;
-import android.util.Pair;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.backoff.ExponentialBaseCalculator;
-import com.android.dialer.common.concurrent.DialerExecutor.Worker;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.voicemail.impl.VvmLog;
-import com.android.voicemail.impl.transcribe.grpc.GetTranscriptResponseAsync;
-import com.android.voicemail.impl.transcribe.grpc.TranscriptionClient;
-import com.android.voicemail.impl.transcribe.grpc.TranscriptionClientFactory;
-import com.google.internal.communications.voicemailtranscription.v1.GetTranscriptRequest;
-import com.google.internal.communications.voicemailtranscription.v1.TranscriptionStatus;
-import java.util.List;
-
-/**
- * This class uses the AlarmManager to poll for the result of a voicemail transcription request.
- * Initially it waits for the estimated transcription time, and if the result is not available then
- * it polls using an exponential backoff scheme.
- */
-public class GetTranscriptReceiver extends BroadcastReceiver {
-  private static final String TAG = "GetTranscriptReceiver";
-  static final String EXTRA_IS_INITIAL_ESTIMATED_WAIT = "extra_is_initial_estimated_wait";
-  static final String EXTRA_VOICEMAIL_URI = "extra_voicemail_uri";
-  static final String EXTRA_TRANSCRIPT_ID = "extra_transcript_id";
-  static final String EXTRA_DELAY_MILLIS = "extra_delay_millis";
-  static final String EXTRA_BASE_MULTIPLIER = "extra_base_multiplier";
-  static final String EXTRA_REMAINING_ATTEMPTS = "extra_remaining_attempts";
-  static final String EXTRA_PHONE_ACCOUNT = "extra_phone_account";
-  static final String POLL_ALARM_ACTION =
-      "com.android.voicemail.impl.transcribe.GetTranscriptReceiver.POLL_ALARM";
-
-  // Schedule an initial alarm to begin checking for a voicemail transcription result.
-  static void beginPolling(
-      Context context,
-      Uri voicemailUri,
-      String transcriptId,
-      long estimatedTranscriptionTimeMillis,
-      TranscriptionConfigProvider configProvider,
-      PhoneAccountHandle account) {
-    Assert.checkState(!hasPendingAlarm(context));
-    long initialDelayMillis = configProvider.getInitialGetTranscriptPollDelayMillis();
-    long maxBackoffMillis = configProvider.getMaxGetTranscriptPollTimeMillis();
-    int maxAttempts = configProvider.getMaxGetTranscriptPolls();
-    double baseMultiplier =
-        ExponentialBaseCalculator.findBase(initialDelayMillis, maxBackoffMillis, maxAttempts);
-    Intent intent =
-        makeAlarmIntent(
-            context,
-            voicemailUri,
-            transcriptId,
-            initialDelayMillis,
-            baseMultiplier,
-            maxAttempts,
-            account);
-    // Add an extra to distinguish this initial estimated transcription wait from subsequent backoff
-    // waits
-    intent.putExtra(EXTRA_IS_INITIAL_ESTIMATED_WAIT, true);
-    VvmLog.i(
-        TAG,
-        String.format(
-            "beginPolling, check in %d millis, for: %s",
-            estimatedTranscriptionTimeMillis, transcriptId));
-    scheduleAlarm(context, estimatedTranscriptionTimeMillis, intent);
-  }
-
-  static boolean hasPendingAlarm(Context context) {
-    Intent intent = makeBaseAlarmIntent(context);
-    return getPendingIntent(context, intent, PendingIntent.FLAG_NO_CREATE) != null;
-  }
-
-  // Alarm fired, poll for transcription result on a background thread
-  @Override
-  public void onReceive(Context context, Intent intent) {
-    if (intent == null || !POLL_ALARM_ACTION.equals(intent.getAction())) {
-      return;
-    }
-    String transcriptId = intent.getStringExtra(EXTRA_TRANSCRIPT_ID);
-    VvmLog.i(TAG, "onReceive, for transcript id: " + transcriptId);
-    DialerExecutorComponent.get(context)
-        .dialerExecutorFactory()
-        .createNonUiTaskBuilder(new PollWorker(context))
-        .onSuccess(this::onSuccess)
-        .onFailure(this::onFailure)
-        .build()
-        .executeParallel(intent);
-  }
-
-  private void onSuccess(Void unused) {
-    VvmLog.i(TAG, "onSuccess");
-  }
-
-  private void onFailure(Throwable t) {
-    VvmLog.e(TAG, "onFailure", t);
-  }
-
-  private static void scheduleAlarm(Context context, long delayMillis, Intent intent) {
-    PendingIntent alarmIntent =
-        getPendingIntent(context, intent, PendingIntent.FLAG_UPDATE_CURRENT);
-    AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
-    alarmMgr.set(
-        AlarmManager.ELAPSED_REALTIME_WAKEUP,
-        SystemClock.elapsedRealtime() + delayMillis,
-        alarmIntent);
-  }
-
-  private static boolean cancelAlarm(Context context, Intent intent) {
-    PendingIntent alarmIntent = getPendingIntent(context, intent, PendingIntent.FLAG_NO_CREATE);
-    if (alarmIntent != null) {
-      AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
-      alarmMgr.cancel(alarmIntent);
-      alarmIntent.cancel();
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  private static Intent makeAlarmIntent(
-      Context context,
-      Uri voicemailUri,
-      String transcriptId,
-      long delayMillis,
-      double baseMultiplier,
-      int remainingAttempts,
-      PhoneAccountHandle account) {
-    Intent intent = makeBaseAlarmIntent(context);
-    intent.putExtra(EXTRA_VOICEMAIL_URI, voicemailUri);
-    intent.putExtra(EXTRA_TRANSCRIPT_ID, transcriptId);
-    intent.putExtra(EXTRA_DELAY_MILLIS, delayMillis);
-    intent.putExtra(EXTRA_BASE_MULTIPLIER, baseMultiplier);
-    intent.putExtra(EXTRA_REMAINING_ATTEMPTS, remainingAttempts);
-    intent.putExtra(EXTRA_PHONE_ACCOUNT, account);
-    return intent;
-  }
-
-  private static Intent makeBaseAlarmIntent(Context context) {
-    Intent intent = new Intent(context.getApplicationContext(), GetTranscriptReceiver.class);
-    intent.setAction(POLL_ALARM_ACTION);
-    return intent;
-  }
-
-  private static PendingIntent getPendingIntent(Context context, Intent intent, int flags) {
-    return PendingIntent.getBroadcast(context.getApplicationContext(), 0, intent, flags);
-  }
-
-  private static class PollWorker implements Worker<Intent, Void> {
-    private final Context context;
-
-    PollWorker(Context context) {
-      this.context = context;
-    }
-
-    @Override
-    public Void doInBackground(Intent intent) {
-      String transcriptId = intent.getStringExtra(EXTRA_TRANSCRIPT_ID);
-      VvmLog.i(TAG, "doInBackground, for transcript id: " + transcriptId);
-      Pair<String, TranscriptionStatus> result = pollForTranscription(transcriptId);
-      if (result.first == null && result.second == null) {
-        // No result, try again if possible
-        Intent nextIntent = getNextAlarmIntent(intent);
-        if (nextIntent == null) {
-          VvmLog.i(TAG, "doInBackground, too many failures for: " + transcriptId);
-          result = new Pair<>(null, TranscriptionStatus.FAILED_NO_RETRY);
-        } else {
-          long nextDelayMillis = nextIntent.getLongExtra(EXTRA_DELAY_MILLIS, 0L);
-          VvmLog.i(
-              TAG,
-              String.format(
-                  "doInBackground, check again in %d, for: %s", nextDelayMillis, transcriptId));
-          scheduleAlarm(context, nextDelayMillis, nextIntent);
-          return null;
-        }
-      }
-
-      // Got transcript or failed too many times
-      Uri voicemailUri = intent.getParcelableExtra(EXTRA_VOICEMAIL_URI);
-      TranscriptionDbHelper dbHelper = new TranscriptionDbHelper(context, voicemailUri);
-      TranscriptionTask.recordResult(context, result, dbHelper);
-
-      // Check if there are other pending transcriptions
-      PhoneAccountHandle account = intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT);
-      processPendingTranscriptions(account);
-      return null;
-    }
-
-    private void processPendingTranscriptions(PhoneAccountHandle account) {
-      TranscriptionDbHelper dbHelper = new TranscriptionDbHelper(context);
-      List<Uri> inProgress = dbHelper.getTranscribingVoicemails();
-      if (!inProgress.isEmpty()) {
-        Uri uri = inProgress.get(0);
-        VvmLog.i(TAG, "getPendingTranscription, found pending transcription " + uri);
-        if (hasPendingAlarm(context)) {
-          // Cancel the current alarm so that the next transcription task won't be postponed
-          cancelAlarm(context, makeBaseAlarmIntent(context));
-        }
-        ThreadUtil.postOnUiThread(
-            () -> {
-              TranscriptionService.scheduleNewVoicemailTranscriptionJob(
-                  context, uri, account, true);
-            });
-      } else {
-        VvmLog.i(TAG, "getPendingTranscription, no more pending transcriptions");
-      }
-    }
-
-    private Pair<String, TranscriptionStatus> pollForTranscription(String transcriptId) {
-      VvmLog.i(TAG, "pollForTranscription, transcript id: " + transcriptId);
-      GetTranscriptRequest request = getGetTranscriptRequest(transcriptId);
-      TranscriptionClientFactory factory = null;
-      try {
-        factory = getTranscriptionClientFactory(context);
-        TranscriptionClient client = factory.getClient();
-        Logger.get(context).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_POLL_REQUEST);
-        GetTranscriptResponseAsync response = client.sendGetTranscriptRequest(request);
-        if (response == null) {
-          VvmLog.i(TAG, "pollForTranscription, no transcription result.");
-          return new Pair<>(null, null);
-        } else if (response.isTranscribing()) {
-          VvmLog.i(TAG, "pollForTranscription, transcribing");
-          return new Pair<>(null, null);
-        } else if (response.hasFatalError()) {
-          VvmLog.i(TAG, "pollForTranscription, fail. " + response.getErrorDescription());
-          return new Pair<>(null, response.getTranscriptionStatus());
-        } else {
-          VvmLog.i(TAG, "pollForTranscription, got transcription");
-          return new Pair<>(response.getTranscript(), TranscriptionStatus.SUCCESS);
-        }
-      } finally {
-        if (factory != null) {
-          factory.shutdown();
-        }
-      }
-    }
-
-    private GetTranscriptRequest getGetTranscriptRequest(String transcriptionId) {
-      Assert.checkArgument(transcriptionId != null);
-      return GetTranscriptRequest.newBuilder().setTranscriptionId(transcriptionId).build();
-    }
-
-    private @Nullable Intent getNextAlarmIntent(Intent previous) {
-      int remainingAttempts = previous.getIntExtra(EXTRA_REMAINING_ATTEMPTS, 0);
-      double baseMultiplier = previous.getDoubleExtra(EXTRA_BASE_MULTIPLIER, 0);
-      long nextDelay = previous.getLongExtra(EXTRA_DELAY_MILLIS, 0);
-      if (!previous.getBooleanExtra(EXTRA_IS_INITIAL_ESTIMATED_WAIT, false)) {
-        // After waiting the estimated transcription time, start decrementing the remaining attempts
-        // and incrementing the backoff time delay
-        remainingAttempts--;
-        if (remainingAttempts <= 0) {
-          return null;
-        }
-        nextDelay = (long) (nextDelay * baseMultiplier);
-      }
-      return makeAlarmIntent(
-          context,
-          previous.getParcelableExtra(EXTRA_VOICEMAIL_URI),
-          previous.getStringExtra(EXTRA_TRANSCRIPT_ID),
-          nextDelay,
-          baseMultiplier,
-          remainingAttempts,
-          previous.getParcelableExtra(EXTRA_PHONE_ACCOUNT));
-    }
-  }
-
-  private static TranscriptionClientFactory transcriptionClientFactoryForTesting;
-
-  static void setTranscriptionClientFactoryForTesting(TranscriptionClientFactory factory) {
-    transcriptionClientFactoryForTesting = factory;
-  }
-
-  static TranscriptionClientFactory getTranscriptionClientFactory(Context context) {
-    if (transcriptionClientFactoryForTesting != null) {
-      return transcriptionClientFactoryForTesting;
-    }
-    return new TranscriptionClientFactory(context, new TranscriptionConfigProvider(context));
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java b/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java
deleted file mode 100644
index 8fc40ee..0000000
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe;
-
-import android.app.job.JobInfo;
-import android.app.job.JobScheduler;
-import android.app.job.JobWorkItem;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.annotation.WorkerThread;
-import android.support.v4.app.JobIntentService;
-import android.support.v4.os.BuildCompat;
-import android.telecom.PhoneAccountHandle;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.constants.ScheduledJobIds;
-import java.util.List;
-
-/**
- * JobScheduler service for transcribing old voicemails. This service does a database scan for
- * un-transcribed voicemails and schedules transcription tasks for them, once we have an un-metered
- * network connection.
- */
-public class TranscriptionBackfillService extends JobIntentService {
-
-  /** Schedule a task to scan the database for untranscribed voicemails */
-  public static boolean scheduleTask(Context context, PhoneAccountHandle account) {
-    if (BuildCompat.isAtLeastO()) {
-      LogUtil.enterBlock("TranscriptionBackfillService.transcribeOldVoicemails");
-      ComponentName componentName = new ComponentName(context, TranscriptionBackfillService.class);
-      JobInfo.Builder builder =
-          new JobInfo.Builder(ScheduledJobIds.VVM_TRANSCRIPTION_BACKFILL_JOB, componentName)
-              .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
-      JobScheduler scheduler = context.getSystemService(JobScheduler.class);
-      return scheduler.enqueue(builder.build(), makeWorkItem(account))
-          == JobScheduler.RESULT_SUCCESS;
-    } else {
-      LogUtil.i("TranscriptionBackfillService.transcribeOldVoicemails", "not supported");
-      return false;
-    }
-  }
-
-  private static JobWorkItem makeWorkItem(PhoneAccountHandle account) {
-    Intent intent = new Intent();
-    intent.putExtra(TranscriptionService.EXTRA_ACCOUNT_HANDLE, account);
-    return new JobWorkItem(intent);
-  }
-
-  @Override
-  @WorkerThread
-  protected void onHandleWork(Intent intent) {
-    LogUtil.enterBlock("TranscriptionBackfillService.onHandleWork");
-
-    Bundle bundle = intent.getExtras();
-    final PhoneAccountHandle account =
-        (PhoneAccountHandle) bundle.get(TranscriptionService.EXTRA_ACCOUNT_HANDLE);
-
-    TranscriptionDbHelper dbHelper = new TranscriptionDbHelper(this);
-    List<Uri> untranscribed = dbHelper.getUntranscribedVoicemails();
-    LogUtil.i(
-        "TranscriptionBackfillService.onHandleWork",
-        "found " + untranscribed.size() + " untranscribed voicemails");
-    // TODO(mdooley): Consider doing the actual transcriptions here instead of scheduling jobs.
-    for (Uri uri : untranscribed) {
-      ThreadUtil.postOnUiThread(
-          () -> {
-            TranscriptionService.scheduleNewVoicemailTranscriptionJob(this, uri, account, false);
-          });
-    }
-  }
-
-  @Override
-  public void onDestroy() {
-    LogUtil.enterBlock("TranscriptionBackfillService.onDestroy");
-    super.onDestroy();
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java b/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
deleted file mode 100644
index 66bf16c..0000000
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe;
-
-import android.content.Context;
-import android.os.Build;
-import com.android.dialer.configprovider.ConfigProviderComponent;
-import java.util.concurrent.TimeUnit;
-
-/** Provides configuration values needed to connect to the transcription server. */
-public class TranscriptionConfigProvider {
-  private final Context context;
-
-  public TranscriptionConfigProvider(Context context) {
-    this.context = context;
-  }
-
-  public boolean isVoicemailTranscriptionAvailable() {
-    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
-        && ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getBoolean("voicemail_transcription_available", false);
-  }
-
-  public String getServerAddress() {
-    // Private voicemail transcription service
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getString(
-            "voicemail_transcription_server_address", "voicemailtranscription-pa.googleapis.com");
-  }
-
-  public String getApiKey() {
-    // Android API key restricted to com.google.android.dialer
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getString(
-            "voicemail_transcription_client_api_key", "AIzaSyAXdDnif6B7sBYxU8hzw9qAp3pRPVHs060");
-  }
-
-  public String getAuthToken() {
-    return null;
-  }
-
-  public boolean shouldUsePlaintext() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("voicemail_transcription_server_use_plaintext", false);
-  }
-
-  public boolean shouldUseSyncApi() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("voicemail_transcription_server_use_sync_api", false);
-  }
-
-  public long getMaxTranscriptionRetries() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getLong("voicemail_transcription_max_transcription_retries", 2L);
-  }
-
-  public int getMaxGetTranscriptPolls() {
-    return (int)
-        ConfigProviderComponent.get(context)
-            .getConfigProvider()
-            .getLong("voicemail_transcription_max_get_transcript_polls", 20L);
-  }
-
-  public long getInitialGetTranscriptPollDelayMillis() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getLong(
-            "voicemail_transcription_get_initial_transcript_poll_delay_millis",
-            TimeUnit.SECONDS.toMillis(1));
-  }
-
-  public long getMaxGetTranscriptPollTimeMillis() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getLong(
-            "voicemail_transcription_get_max_transcript_poll_time_millis",
-            TimeUnit.MINUTES.toMillis(20));
-  }
-
-  public boolean isVoicemailDonationAvailable() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("voicemail_transcription_donation_available", false);
-  }
-
-  public boolean useClientGeneratedVoicemailIds() {
-    return ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("voicemail_transcription_client_generated_voicemail_ids", false);
-  }
-
-  @Override
-  public String toString() {
-    return String.format(
-        "{ address: %s, api key: %s, auth token: %s, plaintext: %b, sync: %b, retries: %d, polls:"
-            + " %d, poll ms: %d }",
-        getServerAddress(),
-        getApiKey(),
-        getAuthToken(),
-        shouldUsePlaintext(),
-        shouldUseSyncApi(),
-        getMaxTranscriptionRetries(),
-        getMaxGetTranscriptPolls(),
-        getMaxGetTranscriptPollTimeMillis());
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java b/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java
deleted file mode 100644
index 6ffb848..0000000
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe;
-
-import android.annotation.TargetApi;
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Build;
-import android.provider.VoicemailContract.Voicemails;
-import android.support.annotation.VisibleForTesting;
-import android.support.annotation.WorkerThread;
-import android.util.Pair;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import java.util.ArrayList;
-import java.util.List;
-
-/** Helper class for reading and writing transcription data in the database */
-@TargetApi(Build.VERSION_CODES.O)
-public class TranscriptionDbHelper {
-  @VisibleForTesting
-  static final String[] PROJECTION =
-      new String[] {
-        Voicemails._ID, // 0
-        Voicemails.TRANSCRIPTION, // 1
-        VoicemailCompat.TRANSCRIPTION_STATE // 2
-      };
-
-  static final int ID = 0;
-  static final int TRANSCRIPTION = 1;
-  static final int TRANSCRIPTION_STATE = 2;
-
-  private final ContentResolver contentResolver;
-  private final Uri uri;
-
-  TranscriptionDbHelper(Context context, Uri uri) {
-    Assert.isNotNull(uri);
-    this.contentResolver = context.getContentResolver();
-    this.uri = uri;
-  }
-
-  TranscriptionDbHelper(Context context) {
-    this(context, Voicemails.buildSourceUri(context.getPackageName()));
-  }
-
-  @WorkerThread
-  Pair<String, Integer> getTranscriptionAndState() {
-    Assert.checkState(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O);
-    Assert.isWorkerThread();
-    try (Cursor cursor = contentResolver.query(uri, PROJECTION, null, null, null)) {
-      if (cursor == null) {
-        LogUtil.e("TranscriptionDbHelper.getTranscriptionAndState", "query failed.");
-        return null;
-      }
-
-      if (cursor.moveToFirst()) {
-        String transcription = cursor.getString(TRANSCRIPTION);
-        int transcriptionState = cursor.getInt(TRANSCRIPTION_STATE);
-        return new Pair<>(transcription, transcriptionState);
-      }
-    }
-    LogUtil.i("TranscriptionDbHelper.getTranscriptionAndState", "query returned no results");
-    return null;
-  }
-
-  @WorkerThread
-  List<Uri> getUntranscribedVoicemails() {
-    Assert.checkState(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O);
-    Assert.isWorkerThread();
-    List<Uri> untranscribed = new ArrayList<>();
-    String whereClause =
-        "("
-            + Voicemails.TRANSCRIPTION
-            + " is NULL OR "
-            + Voicemails.TRANSCRIPTION
-            + " = '')"
-            + " AND "
-            + VoicemailCompat.TRANSCRIPTION_STATE
-            + "=?";
-    String[] whereArgs = {String.valueOf(VoicemailCompat.TRANSCRIPTION_NOT_STARTED)};
-    try (Cursor cursor = contentResolver.query(uri, PROJECTION, whereClause, whereArgs, null)) {
-      if (cursor == null) {
-        LogUtil.e("TranscriptionDbHelper.getUntranscribedVoicemails", "query failed.");
-      } else {
-        while (cursor.moveToNext()) {
-          untranscribed.add(ContentUris.withAppendedId(uri, cursor.getLong(ID)));
-        }
-      }
-    }
-    return untranscribed;
-  }
-
-  @WorkerThread
-  List<Uri> getTranscribingVoicemails() {
-    Assert.checkState(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O);
-    Assert.isWorkerThread();
-    List<Uri> inProgress = new ArrayList<>();
-    String whereClause = VoicemailCompat.TRANSCRIPTION_STATE + "=?";
-    String[] whereArgs = {String.valueOf(VoicemailCompat.TRANSCRIPTION_IN_PROGRESS)};
-    try (Cursor cursor = contentResolver.query(uri, PROJECTION, whereClause, whereArgs, null)) {
-      if (cursor == null) {
-        LogUtil.e("TranscriptionDbHelper.getTranscribingVoicemails", "query failed.");
-      } else {
-        while (cursor.moveToNext()) {
-          inProgress.add(ContentUris.withAppendedId(uri, cursor.getLong(ID)));
-        }
-      }
-    }
-    return inProgress;
-  }
-
-  @WorkerThread
-  void setTranscriptionState(int transcriptionState) {
-    Assert.isWorkerThread();
-    LogUtil.i(
-        "TranscriptionDbHelper.setTranscriptionState",
-        "uri: " + uri + ", state: " + transcriptionState);
-    ContentValues values = new ContentValues();
-    values.put(VoicemailCompat.TRANSCRIPTION_STATE, transcriptionState);
-    updateDatabase(values);
-  }
-
-  @WorkerThread
-  void setTranscriptionAndState(String transcription, int transcriptionState) {
-    Assert.isWorkerThread();
-    LogUtil.i(
-        "TranscriptionDbHelper.setTranscriptionAndState",
-        "uri: " + uri + ", state: " + transcriptionState);
-    ContentValues values = new ContentValues();
-    values.put(Voicemails.TRANSCRIPTION, transcription);
-    values.put(VoicemailCompat.TRANSCRIPTION_STATE, transcriptionState);
-    updateDatabase(values);
-  }
-
-  private void updateDatabase(ContentValues values) {
-    int updatedCount = contentResolver.update(uri, values, null, null);
-    if (updatedCount != 1) {
-      LogUtil.e(
-          "TranscriptionDbHelper.updateDatabase",
-          "Wrong row count, should have updated 1 row, was: " + updatedCount);
-    }
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionRatingHelper.java b/java/com/android/voicemail/impl/transcribe/TranscriptionRatingHelper.java
deleted file mode 100644
index b721ba5..0000000
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionRatingHelper.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe;
-
-import android.content.Context;
-import android.net.Uri;
-import com.android.dialer.common.concurrent.DialerExecutor;
-import com.android.dialer.common.concurrent.DialerExecutorComponent;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackRequest;
-import com.google.internal.communications.voicemailtranscription.v1.TranscriptionRating;
-import com.google.internal.communications.voicemailtranscription.v1.TranscriptionRatingValue;
-import com.google.protobuf.ByteString;
-
-/**
- * Send voicemail transcription rating feedback to the server and record the fact that feedback was
- * provided in the local database.
- */
-public class TranscriptionRatingHelper {
-
-  /** Callback invoked after the feedback has been recorded locally */
-  public interface SuccessListener {
-    void onRatingSuccess(Uri voicemailUri);
-  }
-
-  /** Callback invoked if there was an error recording the feedback */
-  public interface FailureListener {
-    void onRatingFailure(Throwable t);
-  }
-
-  /**
-   * Method for sending a user voicemail transcription feedback rating to the server and recording
-   * the fact that the voicemail was rated in the local database.
-   */
-  public static void sendRating(
-      Context context,
-      TranscriptionRatingValue ratingValue,
-      Uri voicemailUri,
-      SuccessListener successListener,
-      FailureListener failureListener) {
-    DialerExecutorComponent.get(context)
-        .dialerExecutorFactory()
-        .createNonUiTaskBuilder(new RatingWorker(context, ratingValue, voicemailUri))
-        .onSuccess(output -> successListener.onRatingSuccess(voicemailUri))
-        .onFailure(e -> failureListener.onRatingFailure(e))
-        .build()
-        .executeParallel(null);
-  }
-
-  /** Worker class used to record a user's quality rating of a voicemail transcription. */
-  private static class RatingWorker implements DialerExecutor.Worker<Void, Void> {
-    private final Context context;
-    private final TranscriptionRatingValue ratingValue;
-    private final Uri voicemailUri;
-
-    private RatingWorker(Context context, TranscriptionRatingValue ratingValue, Uri voicemailUri) {
-      this.context = context;
-      this.ratingValue = ratingValue;
-      this.voicemailUri = voicemailUri;
-    }
-
-    @Override
-    public Void doInBackground(Void input) {
-      // Schedule a task to upload the feedback (requires network connectivity)
-      TranscriptionRatingService.scheduleTask(context, getFeedbackRequest());
-
-      // Record the fact that the transcription has been rated
-      TranscriptionDbHelper dbHelper = new TranscriptionDbHelper(context, voicemailUri);
-      dbHelper.setTranscriptionState(VoicemailCompat.TRANSCRIPTION_AVAILABLE_AND_RATED);
-      return null;
-    }
-
-    private SendTranscriptionFeedbackRequest getFeedbackRequest() {
-      ByteString audioData = TranscriptionUtils.getAudioData(context, voicemailUri);
-      String salt = voicemailUri.toString();
-      String voicemailId = TranscriptionUtils.getFingerprintFor(audioData, salt);
-      TranscriptionRating rating =
-          TranscriptionRating.newBuilder()
-              .setTranscriptionId(voicemailId)
-              .setRatingValue(ratingValue)
-              .build();
-      return SendTranscriptionFeedbackRequest.newBuilder().addRating(rating).build();
-    }
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionRatingService.java b/java/com/android/voicemail/impl/transcribe/TranscriptionRatingService.java
deleted file mode 100644
index cff2c6d..0000000
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionRatingService.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe;
-
-import android.app.job.JobInfo;
-import android.app.job.JobScheduler;
-import android.app.job.JobWorkItem;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Build;
-import android.support.annotation.WorkerThread;
-import android.support.v4.app.JobIntentService;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.constants.ScheduledJobIds;
-import com.android.voicemail.impl.transcribe.grpc.TranscriptionClientFactory;
-import com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackRequest;
-import com.google.protobuf.InvalidProtocolBufferException;
-
-/**
- * JobScheduler service for uploading transcription feedback. This service requires a network
- * connection.
- */
-public class TranscriptionRatingService extends JobIntentService {
-  private static final String FEEDBACK_REQUEST_EXTRA = "feedback_request_extra";
-
-  /** Schedule a task to upload transcription rating feedback */
-  public static boolean scheduleTask(Context context, SendTranscriptionFeedbackRequest request) {
-    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-      LogUtil.enterBlock("TranscriptionRatingService.scheduleTask");
-      ComponentName componentName = new ComponentName(context, TranscriptionRatingService.class);
-      JobInfo.Builder builder =
-          new JobInfo.Builder(ScheduledJobIds.VVM_TRANSCRIPTION_RATING_JOB, componentName)
-              .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
-      JobScheduler scheduler = context.getSystemService(JobScheduler.class);
-      return scheduler.enqueue(builder.build(), makeWorkItem(request))
-          == JobScheduler.RESULT_SUCCESS;
-    } else {
-      LogUtil.i("TranscriptionRatingService.scheduleTask", "not supported");
-      return false;
-    }
-  }
-
-  public TranscriptionRatingService() {}
-
-  private static JobWorkItem makeWorkItem(SendTranscriptionFeedbackRequest request) {
-    Intent intent = new Intent();
-    intent.putExtra(FEEDBACK_REQUEST_EXTRA, request.toByteArray());
-    return new JobWorkItem(intent);
-  }
-
-  @Override
-  @WorkerThread
-  protected void onHandleWork(Intent intent) {
-    LogUtil.enterBlock("TranscriptionRatingService.onHandleWork");
-
-    TranscriptionConfigProvider configProvider = new TranscriptionConfigProvider(this);
-    TranscriptionClientFactory factory = new TranscriptionClientFactory(this, configProvider);
-    try {
-      // Send rating to server
-      SendTranscriptionFeedbackRequest request =
-          SendTranscriptionFeedbackRequest.parseFrom(
-              intent.getByteArrayExtra(FEEDBACK_REQUEST_EXTRA));
-      factory.getClient().sendTranscriptFeedbackRequest(request);
-    } catch (InvalidProtocolBufferException e) {
-      LogUtil.e("TranscriptionRatingService.onHandleWork", "failed to send feedback", e);
-    } finally {
-      factory.shutdown();
-    }
-  }
-
-  @Override
-  public void onDestroy() {
-    LogUtil.enterBlock("TranscriptionRatingService.onDestroy");
-    super.onDestroy();
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionService.java b/java/com/android/voicemail/impl/transcribe/TranscriptionService.java
deleted file mode 100644
index 781e347..0000000
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionService.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe;
-
-import android.app.job.JobInfo;
-import android.app.job.JobParameters;
-import android.app.job.JobScheduler;
-import android.app.job.JobService;
-import android.app.job.JobWorkItem;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Build;
-import android.support.annotation.MainThread;
-import android.support.annotation.VisibleForTesting;
-import android.telecom.PhoneAccountHandle;
-import android.text.TextUtils;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.dialer.constants.ScheduledJobIds;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.voicemail.CarrierConfigKeys;
-import com.android.voicemail.VoicemailClient;
-import com.android.voicemail.VoicemailComponent;
-import com.android.voicemail.impl.transcribe.grpc.TranscriptionClientFactory;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-/**
- * Job scheduler callback for launching voicemail transcription tasks. The transcription tasks will
- * run in the background and will typically last for approximately the length of the voicemail audio
- * (since thats how long the backend transcription service takes to do the transcription).
- */
-public class TranscriptionService extends JobService {
-  @VisibleForTesting static final String EXTRA_VOICEMAIL_URI = "extra_voicemail_uri";
-  @VisibleForTesting static final String EXTRA_ACCOUNT_HANDLE = "extra_account_handle";
-
-  private ExecutorService executorService;
-  private JobParameters jobParameters;
-  private TranscriptionClientFactory clientFactory;
-  private TranscriptionConfigProvider configProvider;
-  private TranscriptionTask activeTask;
-  private boolean stopped;
-
-  /** Callback used by a task to indicate it has finished processing its work item */
-  interface JobCallback {
-    void onWorkCompleted(JobWorkItem completedWorkItem);
-  }
-
-  // Schedule a task to transcribe the indicated voicemail, return true if transcription task was
-  // scheduled.
-  @MainThread
-  public static boolean scheduleNewVoicemailTranscriptionJob(
-      Context context, Uri voicemailUri, PhoneAccountHandle account, boolean highPriority) {
-    Assert.isMainThread();
-    if (!canTranscribeVoicemail(context, account)) {
-      return false;
-    }
-
-    LogUtil.i(
-        "TranscriptionService.scheduleNewVoicemailTranscriptionJob", "scheduling transcription");
-    Logger.get(context).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_VOICEMAIL_RECEIVED);
-
-    ComponentName componentName = new ComponentName(context, TranscriptionService.class);
-    JobInfo.Builder builder =
-        new JobInfo.Builder(ScheduledJobIds.VVM_TRANSCRIPTION_JOB, componentName);
-    if (highPriority) {
-      builder
-          .setMinimumLatency(0)
-          .setOverrideDeadline(0)
-          .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
-    } else {
-      builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
-    }
-    JobScheduler scheduler = context.getSystemService(JobScheduler.class);
-    JobWorkItem workItem = makeWorkItem(voicemailUri, account);
-    return scheduler.enqueue(builder.build(), workItem) == JobScheduler.RESULT_SUCCESS;
-  }
-
-  private static boolean canTranscribeVoicemail(Context context, PhoneAccountHandle account) {
-    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
-      LogUtil.i("TranscriptionService.canTranscribeVoicemail", "not supported by sdk");
-      return false;
-    }
-    VoicemailClient client = VoicemailComponent.get(context).getVoicemailClient();
-    if (!client.isVoicemailTranscriptionEnabled(context, account)) {
-      LogUtil.i("TranscriptionService.canTranscribeVoicemail", "transcription is not enabled");
-      return false;
-    }
-    if (!client.hasAcceptedTos(context, account)) {
-      LogUtil.i("TranscriptionService.canTranscribeVoicemail", "hasn't accepted TOS");
-      return false;
-    }
-    if (!Boolean.parseBoolean(
-        client.getCarrierConfigString(
-            context, account, CarrierConfigKeys.VVM_CARRIER_ALLOWS_OTT_TRANSCRIPTION_STRING))) {
-      LogUtil.i(
-          "TranscriptionService.canTranscribeVoicemail", "carrier doesn't allow transcription");
-      return false;
-    }
-    return true;
-  }
-
-  // Cancel all transcription tasks
-  @MainThread
-  public static void cancelTranscriptions(Context context) {
-    Assert.isMainThread();
-    LogUtil.enterBlock("TranscriptionService.cancelTranscriptions");
-    JobScheduler scheduler = context.getSystemService(JobScheduler.class);
-    scheduler.cancel(ScheduledJobIds.VVM_TRANSCRIPTION_JOB);
-  }
-
-  @MainThread
-  public TranscriptionService() {
-    Assert.isMainThread();
-  }
-
-  @VisibleForTesting
-  TranscriptionService(
-      ExecutorService executorService,
-      TranscriptionClientFactory clientFactory,
-      TranscriptionConfigProvider configProvider) {
-    this.executorService = executorService;
-    this.clientFactory = clientFactory;
-    this.configProvider = configProvider;
-  }
-
-  @Override
-  @MainThread
-  public boolean onStartJob(JobParameters params) {
-    Assert.isMainThread();
-    LogUtil.enterBlock("TranscriptionService.onStartJob");
-    if (!getConfigProvider().isVoicemailTranscriptionAvailable()) {
-      LogUtil.i("TranscriptionService.onStartJob", "transcription not available, exiting.");
-      return false;
-    } else if (TextUtils.isEmpty(getConfigProvider().getServerAddress())) {
-      LogUtil.i("TranscriptionService.onStartJob", "transcription server not configured, exiting.");
-      return false;
-    } else {
-      LogUtil.i(
-          "TranscriptionService.onStartJob",
-          "transcription server address: " + configProvider.getServerAddress());
-      jobParameters = params;
-      return checkForWork();
-    }
-  }
-
-  @Override
-  @MainThread
-  public boolean onStopJob(JobParameters params) {
-    Assert.isMainThread();
-    LogUtil.i("TranscriptionService.onStopJob", "params: " + params);
-    stopped = true;
-    Logger.get(this).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_JOB_STOPPED);
-    if (activeTask != null) {
-      LogUtil.i("TranscriptionService.onStopJob", "cancelling active task");
-      activeTask.cancel();
-      Logger.get(this).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_TASK_CANCELLED);
-    }
-    return true;
-  }
-
-  @Override
-  @MainThread
-  public void onDestroy() {
-    Assert.isMainThread();
-    LogUtil.enterBlock("TranscriptionService.onDestroy");
-    cleanup();
-  }
-
-  private void cleanup() {
-    if (clientFactory != null) {
-      clientFactory.shutdown();
-      clientFactory = null;
-    }
-    if (executorService != null) {
-      executorService.shutdownNow();
-      executorService = null;
-    }
-  }
-
-  @MainThread
-  private boolean checkForWork() {
-    Assert.isMainThread();
-    if (stopped) {
-      LogUtil.i("TranscriptionService.checkForWork", "stopped");
-      return false;
-    }
-    JobWorkItem workItem = jobParameters.dequeueWork();
-    if (workItem != null) {
-      Assert.checkState(activeTask == null);
-      activeTask =
-          configProvider.shouldUseSyncApi()
-              ? new TranscriptionTaskSync(
-                  this, new Callback(), workItem, getClientFactory(), configProvider)
-              : new TranscriptionTaskAsync(
-                  this, new Callback(), workItem, getClientFactory(), configProvider);
-      getExecutorService().execute(activeTask);
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  static Uri getVoicemailUri(JobWorkItem workItem) {
-    return workItem.getIntent().getParcelableExtra(EXTRA_VOICEMAIL_URI);
-  }
-
-  static PhoneAccountHandle getPhoneAccountHandle(JobWorkItem workItem) {
-    return workItem.getIntent().getParcelableExtra(EXTRA_ACCOUNT_HANDLE);
-  }
-
-  private ExecutorService getExecutorService() {
-    if (executorService == null) {
-      // The common use case is transcribing a single voicemail so just use a single thread executor
-      // The reason we're not using DialerExecutor here is because the transcription task can be
-      // very long running (ie. multiple minutes).
-      executorService = Executors.newSingleThreadExecutor();
-    }
-    return executorService;
-  }
-
-  private class Callback implements JobCallback {
-    @Override
-    @MainThread
-    public void onWorkCompleted(JobWorkItem completedWorkItem) {
-      Assert.isMainThread();
-      LogUtil.i("TranscriptionService.Callback.onWorkCompleted", completedWorkItem.toString());
-      activeTask = null;
-      if (stopped) {
-        LogUtil.i("TranscriptionService.Callback.onWorkCompleted", "stopped");
-      } else {
-        jobParameters.completeWork(completedWorkItem);
-        checkForWork();
-      }
-    }
-  }
-
-  private static JobWorkItem makeWorkItem(Uri voicemailUri, PhoneAccountHandle account) {
-    Intent intent = new Intent();
-    intent.putExtra(EXTRA_VOICEMAIL_URI, voicemailUri);
-    if (account != null) {
-      intent.putExtra(EXTRA_ACCOUNT_HANDLE, account);
-    }
-    return new JobWorkItem(intent);
-  }
-
-  private TranscriptionConfigProvider getConfigProvider() {
-    if (configProvider == null) {
-      configProvider = new TranscriptionConfigProvider(this);
-    }
-    return configProvider;
-  }
-
-  private TranscriptionClientFactory getClientFactory() {
-    if (clientFactory == null) {
-      clientFactory = new TranscriptionClientFactory(this, getConfigProvider());
-    }
-    return clientFactory;
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionTask.java b/java/com/android/voicemail/impl/transcribe/TranscriptionTask.java
deleted file mode 100644
index ca3320f..0000000
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionTask.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe;
-
-import android.app.job.JobWorkItem;
-import android.content.Context;
-import android.net.Uri;
-import android.support.annotation.MainThread;
-import android.support.annotation.VisibleForTesting;
-import android.telecom.PhoneAccountHandle;
-import android.util.Pair;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-import com.android.voicemail.impl.VvmLog;
-import com.android.voicemail.impl.transcribe.TranscriptionService.JobCallback;
-import com.android.voicemail.impl.transcribe.grpc.TranscriptionClient;
-import com.android.voicemail.impl.transcribe.grpc.TranscriptionClientFactory;
-import com.android.voicemail.impl.transcribe.grpc.TranscriptionResponse;
-import com.google.internal.communications.voicemailtranscription.v1.AudioFormat;
-import com.google.internal.communications.voicemailtranscription.v1.TranscriptionStatus;
-import com.google.protobuf.ByteString;
-
-/**
- * Background task to get a voicemail transcription and update the database.
- *
- * <pre>
- * This task performs the following steps:
- *   1. Update the transcription-state in the database to 'in-progress'
- *   2. Create grpc client and transcription request
- *   3. Make synchronous or asynchronous grpc transcription request to backend server
- *     3a. On response
- *       Update the database with transcription (if successful) and new transcription-state
- *     3b. On network error
- *       If retry-count < max then increment retry-count and retry the request
- *       Otherwise update the transcription-state in the database to 'transcription-failed'
- *   4. Notify the callback that the work item is complete
- * </pre>
- */
-public abstract class TranscriptionTask implements Runnable {
-  private static final String TAG = "TranscriptionTask";
-
-  private final JobCallback callback;
-  private final JobWorkItem workItem;
-  private final TranscriptionClientFactory clientFactory;
-  protected final Context context;
-  protected final Uri voicemailUri;
-  protected final PhoneAccountHandle phoneAccountHandle;
-  protected final TranscriptionConfigProvider configProvider;
-  protected final TranscriptionDbHelper dbHelper;
-  protected ByteString audioData;
-  protected AudioFormat encoding;
-  protected volatile boolean cancelled;
-
-  /** Functional interface for sending requests to the transcription server */
-  public interface Request {
-    TranscriptionResponse getResponse(TranscriptionClient client);
-  }
-
-  TranscriptionTask(
-      Context context,
-      JobCallback callback,
-      JobWorkItem workItem,
-      TranscriptionClientFactory clientFactory,
-      TranscriptionConfigProvider configProvider) {
-    this.context = context;
-    this.callback = callback;
-    this.workItem = workItem;
-    this.clientFactory = clientFactory;
-    this.voicemailUri = TranscriptionService.getVoicemailUri(workItem);
-    this.phoneAccountHandle = TranscriptionService.getPhoneAccountHandle(workItem);
-    this.configProvider = configProvider;
-    dbHelper = new TranscriptionDbHelper(context, voicemailUri);
-  }
-
-  @MainThread
-  void cancel() {
-    Assert.isMainThread();
-    VvmLog.i(TAG, "cancel");
-    cancelled = true;
-  }
-
-  @Override
-  public void run() {
-    VvmLog.i(TAG, "run");
-    if (readAndValidateAudioFile()) {
-      updateTranscriptionState(VoicemailCompat.TRANSCRIPTION_IN_PROGRESS);
-      transcribeVoicemail();
-    } else {
-      if (AudioFormat.AUDIO_FORMAT_UNSPECIFIED.equals(encoding)) {
-        Logger.get(context)
-            .logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_VOICEMAIL_FORMAT_NOT_SUPPORTED);
-      } else {
-        Logger.get(context)
-            .logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_VOICEMAIL_INVALID_DATA);
-      }
-      updateTranscriptionState(VoicemailCompat.TRANSCRIPTION_FAILED);
-    }
-    ThreadUtil.postOnUiThread(
-        () -> {
-          callback.onWorkCompleted(workItem);
-        });
-  }
-
-  protected abstract Pair<String, TranscriptionStatus> getTranscription();
-
-  protected abstract DialerImpression.Type getRequestSentImpression();
-
-  private void transcribeVoicemail() {
-    VvmLog.i(TAG, "transcribeVoicemail");
-    recordResult(context, getTranscription(), dbHelper, cancelled);
-  }
-
-  protected TranscriptionResponse sendRequest(Request request) {
-    VvmLog.i(TAG, "sendRequest");
-    TranscriptionClient client = clientFactory.getClient();
-    for (int i = 0; i < configProvider.getMaxTranscriptionRetries(); i++) {
-      if (cancelled) {
-        VvmLog.i(TAG, "sendRequest, cancelled");
-        return null;
-      }
-
-      VvmLog.i(TAG, "sendRequest, try: " + (i + 1));
-      if (i == 0) {
-        Logger.get(context).logImpression(getRequestSentImpression());
-      } else {
-        Logger.get(context).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_REQUEST_RETRY);
-      }
-
-      TranscriptionResponse response = request.getResponse(client);
-      if (cancelled) {
-        VvmLog.i(TAG, "sendRequest, cancelled");
-        return null;
-      } else if (response.hasRecoverableError()) {
-        Logger.get(context)
-            .logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_RECOVERABLE_ERROR);
-        backoff(i);
-      } else {
-        return response;
-      }
-    }
-
-    Logger.get(context)
-        .logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_TOO_MANY_ERRORS);
-    return null;
-  }
-
-  private static void backoff(int retryCount) {
-    VvmLog.i(TAG, "backoff, count: " + retryCount);
-    long millis = (1L << retryCount) * 1000;
-    sleep(millis);
-  }
-
-  protected static void sleep(long millis) {
-    try {
-      Thread.sleep(millis);
-    } catch (InterruptedException e) {
-      VvmLog.e(TAG, "interrupted", e);
-      Thread.currentThread().interrupt();
-    }
-  }
-
-  protected void updateTranscriptionState(int newState) {
-    dbHelper.setTranscriptionState(newState);
-  }
-
-  protected void updateTranscriptionAndState(String transcript, int newState) {
-    dbHelper.setTranscriptionAndState(transcript, newState);
-  }
-
-  static void recordResult(
-      Context context, Pair<String, TranscriptionStatus> result, TranscriptionDbHelper dbHelper) {
-    recordResult(context, result, dbHelper, false);
-  }
-
-  static void recordResult(
-      Context context,
-      Pair<String, TranscriptionStatus> result,
-      TranscriptionDbHelper dbHelper,
-      boolean cancelled) {
-    if (result.first != null) {
-      VvmLog.i(TAG, "recordResult, got transcription");
-      dbHelper.setTranscriptionAndState(result.first, VoicemailCompat.TRANSCRIPTION_AVAILABLE);
-      Logger.get(context).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_SUCCESS);
-    } else if (result.second != null) {
-      VvmLog.i(TAG, "recordResult, failed to transcribe, reason: " + result.second);
-      switch (result.second) {
-        case FAILED_NO_SPEECH_DETECTED:
-          dbHelper.setTranscriptionState(VoicemailCompat.TRANSCRIPTION_FAILED_NO_SPEECH_DETECTED);
-          Logger.get(context)
-              .logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_NO_SPEECH_DETECTED);
-          break;
-        case FAILED_LANGUAGE_NOT_SUPPORTED:
-          dbHelper.setTranscriptionState(
-              VoicemailCompat.TRANSCRIPTION_FAILED_LANGUAGE_NOT_SUPPORTED);
-          Logger.get(context)
-              .logImpression(
-                  DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_LANGUAGE_NOT_SUPPORTED);
-          break;
-        case EXPIRED:
-          dbHelper.setTranscriptionState(VoicemailCompat.TRANSCRIPTION_FAILED);
-          Logger.get(context)
-              .logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_EXPIRED);
-          break;
-        default:
-          dbHelper.setTranscriptionState(
-              cancelled
-                  ? VoicemailCompat.TRANSCRIPTION_NOT_STARTED
-                  : VoicemailCompat.TRANSCRIPTION_FAILED);
-          Logger.get(context).logImpression(DialerImpression.Type.VVM_TRANSCRIPTION_RESPONSE_EMPTY);
-          break;
-      }
-    }
-  }
-
-  private boolean readAndValidateAudioFile() {
-    if (voicemailUri == null) {
-      VvmLog.i(TAG, "Transcriber.readAndValidateAudioFile, file not found.");
-      return false;
-    } else {
-      VvmLog.i(TAG, "Transcriber.readAndValidateAudioFile, reading: " + voicemailUri);
-    }
-
-    audioData = TranscriptionUtils.getAudioData(context, voicemailUri);
-    if (audioData != null) {
-      VvmLog.i(TAG, "readAndValidateAudioFile, read " + audioData.size() + " bytes");
-    } else {
-      VvmLog.i(TAG, "readAndValidateAudioFile, unable to read audio data for " + voicemailUri);
-      return false;
-    }
-
-    encoding = TranscriptionUtils.getAudioFormat(audioData);
-    if (encoding == AudioFormat.AUDIO_FORMAT_UNSPECIFIED) {
-      VvmLog.i(TAG, "Transcriber.readAndValidateAudioFile, unknown encoding");
-      return false;
-    }
-
-    return true;
-  }
-
-  @VisibleForTesting
-  void setAudioDataForTesting(ByteString audioData) {
-    this.audioData = audioData;
-    encoding = TranscriptionUtils.getAudioFormat(audioData);
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionTaskAsync.java b/java/com/android/voicemail/impl/transcribe/TranscriptionTaskAsync.java
deleted file mode 100644
index 034af6b..0000000
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionTaskAsync.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe;
-
-import android.app.job.JobWorkItem;
-import android.content.Context;
-import android.support.annotation.VisibleForTesting;
-import android.util.Pair;
-import com.android.dialer.logging.DialerImpression;
-import com.android.voicemail.VoicemailComponent;
-import com.android.voicemail.impl.VvmLog;
-import com.android.voicemail.impl.transcribe.TranscriptionService.JobCallback;
-import com.android.voicemail.impl.transcribe.grpc.TranscriptionClientFactory;
-import com.android.voicemail.impl.transcribe.grpc.TranscriptionResponseAsync;
-import com.google.internal.communications.voicemailtranscription.v1.DonationPreference;
-import com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncRequest;
-import com.google.internal.communications.voicemailtranscription.v1.TranscriptionStatus;
-
-/**
- * Background task to get a voicemail transcription using the asynchronous API. The async API works
- * as follows:
- *
- * <ol>
- *   <li>client uploads voicemail data to the server
- *   <li>server responds with a transcription-id and an estimated transcription wait time
- *   <li>client waits appropriate amount of time then begins polling for the result
- * </ol>
- *
- * This implementation blocks until the response or an error is received, even though it is using
- * the asynchronous server API.
- */
-public class TranscriptionTaskAsync extends TranscriptionTask {
-  private static final String TAG = "TranscriptionTaskAsync";
-
-  public TranscriptionTaskAsync(
-      Context context,
-      JobCallback callback,
-      JobWorkItem workItem,
-      TranscriptionClientFactory clientFactory,
-      TranscriptionConfigProvider configProvider) {
-    super(context, callback, workItem, clientFactory, configProvider);
-  }
-
-  @Override
-  protected Pair<String, TranscriptionStatus> getTranscription() {
-    VvmLog.i(TAG, "getTranscription");
-
-    if (GetTranscriptReceiver.hasPendingAlarm(context)) {
-      // Don't start a transcription while another is still active
-      VvmLog.i(
-          TAG,
-          "getTranscription, pending transcription, postponing transcription of: " + voicemailUri);
-      return new Pair<>(null, null);
-    }
-
-    TranscribeVoicemailAsyncRequest uploadRequest = getUploadRequest();
-    VvmLog.i(
-        TAG,
-        "getTranscription, uploading voicemail: "
-            + voicemailUri
-            + ", id: "
-            + uploadRequest.getTranscriptionId());
-    TranscriptionResponseAsync uploadResponse =
-        (TranscriptionResponseAsync)
-            sendRequest((client) -> client.sendUploadRequest(uploadRequest));
-
-    if (cancelled) {
-      VvmLog.i(TAG, "getTranscription, cancelled.");
-      return new Pair<>(null, TranscriptionStatus.FAILED_NO_RETRY);
-    } else if (uploadResponse == null) {
-      VvmLog.i(TAG, "getTranscription, failed to upload voicemail.");
-      return new Pair<>(null, TranscriptionStatus.FAILED_NO_RETRY);
-    } else if (uploadResponse.isStatusAlreadyExists()) {
-      VvmLog.i(TAG, "getTranscription, transcription already exists.");
-      GetTranscriptReceiver.beginPolling(
-          context,
-          voicemailUri,
-          uploadRequest.getTranscriptionId(),
-          0,
-          configProvider,
-          phoneAccountHandle);
-      return new Pair<>(null, null);
-    } else if (uploadResponse.getTranscriptionId() == null) {
-      VvmLog.i(TAG, "getTranscription, upload error: " + uploadResponse.status);
-      return new Pair<>(null, TranscriptionStatus.FAILED_NO_RETRY);
-    } else {
-      VvmLog.i(TAG, "getTranscription, begin polling for: " + uploadResponse.getTranscriptionId());
-      GetTranscriptReceiver.beginPolling(
-          context,
-          voicemailUri,
-          uploadResponse.getTranscriptionId(),
-          uploadResponse.getEstimatedWaitMillis(),
-          configProvider,
-          phoneAccountHandle);
-      // This indicates that the result is not available yet
-      return new Pair<>(null, null);
-    }
-  }
-
-  @Override
-  protected DialerImpression.Type getRequestSentImpression() {
-    return DialerImpression.Type.VVM_TRANSCRIPTION_REQUEST_SENT_ASYNC;
-  }
-
-  @VisibleForTesting
-  TranscribeVoicemailAsyncRequest getUploadRequest() {
-    TranscribeVoicemailAsyncRequest.Builder builder =
-        TranscribeVoicemailAsyncRequest.newBuilder()
-            .setVoicemailData(audioData)
-            .setAudioFormat(encoding)
-            .setDonationPreference(
-                isDonationEnabled() ? DonationPreference.DONATE : DonationPreference.DO_NOT_DONATE);
-    // Generate the transcript id locally if configured to do so, or if voicemail donation is
-    // available (because rating donating voicemails requires locally generated voicemail ids).
-    if (configProvider.useClientGeneratedVoicemailIds()
-        || VoicemailComponent.get(context)
-            .getVoicemailClient()
-            .isVoicemailDonationAvailable(context, phoneAccountHandle)) {
-      // The server currently can't handle repeated transcription id's so if we add the Uri to the
-      // fingerprint (which contains the voicemail id) which is different each time a voicemail is
-      // downloaded.  If this becomes a problem then it should be possible to change the server
-      // behavior to allow id's to be re-used, a bug
-      String salt = voicemailUri.toString();
-      builder.setTranscriptionId(TranscriptionUtils.getFingerprintFor(audioData, salt));
-    }
-    return builder.build();
-  }
-
-  private boolean isDonationEnabled() {
-    return phoneAccountHandle != null
-        && VoicemailComponent.get(context)
-            .getVoicemailClient()
-            .isVoicemailDonationEnabled(context, phoneAccountHandle);
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionTaskSync.java b/java/com/android/voicemail/impl/transcribe/TranscriptionTaskSync.java
deleted file mode 100644
index bee6859..0000000
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionTaskSync.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe;
-
-import android.app.job.JobWorkItem;
-import android.content.Context;
-import android.util.Pair;
-import com.android.dialer.logging.DialerImpression;
-import com.android.voicemail.impl.VvmLog;
-import com.android.voicemail.impl.transcribe.TranscriptionService.JobCallback;
-import com.android.voicemail.impl.transcribe.grpc.TranscriptionClientFactory;
-import com.android.voicemail.impl.transcribe.grpc.TranscriptionResponseSync;
-import com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest;
-import com.google.internal.communications.voicemailtranscription.v1.TranscriptionStatus;
-
-/** Background task to get a voicemail transcription using the synchronous API */
-public class TranscriptionTaskSync extends TranscriptionTask {
-  private static final String TAG = "TranscriptionTaskSync";
-
-  public TranscriptionTaskSync(
-      Context context,
-      JobCallback callback,
-      JobWorkItem workItem,
-      TranscriptionClientFactory clientFactory,
-      TranscriptionConfigProvider configProvider) {
-    super(context, callback, workItem, clientFactory, configProvider);
-  }
-
-  @Override
-  protected Pair<String, TranscriptionStatus> getTranscription() {
-    VvmLog.i(TAG, "getTranscription");
-
-    TranscriptionResponseSync response =
-        (TranscriptionResponseSync)
-            sendRequest((client) -> client.sendSyncRequest(getSyncRequest()));
-    if (response == null) {
-      VvmLog.i(TAG, "getTranscription, failed to transcribe voicemail.");
-      return new Pair<>(null, TranscriptionStatus.FAILED_NO_RETRY);
-    } else {
-      VvmLog.i(TAG, "getTranscription, got transcription");
-      return new Pair<>(response.getTranscript(), TranscriptionStatus.SUCCESS);
-    }
-  }
-
-  @Override
-  protected DialerImpression.Type getRequestSentImpression() {
-    return DialerImpression.Type.VVM_TRANSCRIPTION_REQUEST_SENT;
-  }
-
-  private TranscribeVoicemailRequest getSyncRequest() {
-    return TranscribeVoicemailRequest.newBuilder()
-        .setVoicemailData(audioData)
-        .setAudioFormat(encoding)
-        .build();
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionUtils.java b/java/com/android/voicemail/impl/transcribe/TranscriptionUtils.java
deleted file mode 100644
index 8611e80..0000000
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionUtils.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe;
-
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.net.Uri;
-import android.os.Build.VERSION_CODES;
-import android.support.annotation.Nullable;
-import android.util.Base64;
-import com.android.dialer.common.Assert;
-import com.google.internal.communications.voicemailtranscription.v1.AudioFormat;
-import com.google.protobuf.ByteString;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-
-/** Utility methods used by this transcription package. */
-public class TranscriptionUtils {
-  static final String AMR_PREFIX = "#!AMR\n";
-
-  static ByteString getAudioData(Context context, Uri voicemailUri) {
-    try (InputStream in = context.getContentResolver().openInputStream(voicemailUri)) {
-      return ByteString.readFrom(in);
-    } catch (IOException e) {
-      return null;
-    }
-  }
-
-  static AudioFormat getAudioFormat(ByteString audioData) {
-    return audioData != null && audioData.startsWith(ByteString.copyFromUtf8(AMR_PREFIX))
-        ? AudioFormat.AMR_NB_8KHZ
-        : AudioFormat.AUDIO_FORMAT_UNSPECIFIED;
-  }
-
-  @TargetApi(VERSION_CODES.O)
-  static String getFingerprintFor(ByteString data, @Nullable String salt) {
-    Assert.checkArgument(data != null);
-    try {
-      MessageDigest md = MessageDigest.getInstance("MD5");
-      if (salt != null) {
-        md.update(salt.getBytes());
-      }
-      byte[] md5Bytes = md.digest(data.toByteArray());
-      return Base64.encodeToString(md5Bytes, Base64.DEFAULT);
-    } catch (NoSuchAlgorithmException e) {
-      Assert.fail(e.toString());
-    }
-    return null;
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/grpc/GetTranscriptResponseAsync.java b/java/com/android/voicemail/impl/transcribe/grpc/GetTranscriptResponseAsync.java
deleted file mode 100644
index f979d69..0000000
--- a/java/com/android/voicemail/impl/transcribe/grpc/GetTranscriptResponseAsync.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe.grpc;
-
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import com.android.dialer.common.Assert;
-import com.google.internal.communications.voicemailtranscription.v1.GetTranscriptResponse;
-import com.google.internal.communications.voicemailtranscription.v1.TranscriptionStatus;
-import io.grpc.Status;
-
-/** Container for response and status objects for an asynchronous get-transcript request */
-public class GetTranscriptResponseAsync extends TranscriptionResponse {
-  @Nullable private final GetTranscriptResponse response;
-
-  @VisibleForTesting
-  public GetTranscriptResponseAsync(GetTranscriptResponse response) {
-    Assert.checkArgument(response != null);
-    this.response = response;
-  }
-
-  @VisibleForTesting
-  public GetTranscriptResponseAsync(Status status) {
-    super(status);
-    this.response = null;
-  }
-
-  public @Nullable String getTranscript() {
-    if (response != null) {
-      return response.getTranscript();
-    }
-    return null;
-  }
-
-  public @Nullable String getErrorDescription() {
-    if (!hasRecoverableError() && !hasFatalError()) {
-      return null;
-    }
-    if (status != null) {
-      return "Grpc error: " + status;
-    }
-    if (response != null) {
-      return "Transcription error: " + response.getStatus();
-    }
-    Assert.fail("Impossible state");
-    return null;
-  }
-
-  public TranscriptionStatus getTranscriptionStatus() {
-    if (response == null) {
-      return TranscriptionStatus.TRANSCRIPTION_STATUS_UNSPECIFIED;
-    } else {
-      return response.getStatus();
-    }
-  }
-
-  public boolean isTranscribing() {
-    return response != null && response.getStatus() == TranscriptionStatus.PENDING;
-  }
-
-  @Override
-  public boolean hasRecoverableError() {
-    if (super.hasRecoverableError()) {
-      return true;
-    }
-
-    if (response != null) {
-      return response.getStatus() == TranscriptionStatus.EXPIRED
-          || response.getStatus() == TranscriptionStatus.FAILED_RETRY;
-    }
-
-    return false;
-  }
-
-  @Override
-  public boolean hasFatalError() {
-    if (super.hasFatalError()) {
-      return true;
-    }
-
-    if (response != null) {
-      return response.getStatus() == TranscriptionStatus.FAILED_NO_RETRY
-          || response.getStatus() == TranscriptionStatus.FAILED_LANGUAGE_NOT_SUPPORTED
-          || response.getStatus() == TranscriptionStatus.FAILED_NO_SPEECH_DETECTED;
-    }
-
-    return false;
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionClient.java b/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionClient.java
deleted file mode 100644
index 381cb32..0000000
--- a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionClient.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe.grpc;
-
-import android.support.annotation.WorkerThread;
-import com.google.internal.communications.voicemailtranscription.v1.GetTranscriptRequest;
-import com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackRequest;
-import com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncRequest;
-import com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest;
-import com.google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionServiceGrpc;
-import io.grpc.StatusRuntimeException;
-
-/** Wrapper around Grpc transcription server stub */
-public class TranscriptionClient {
-
-  private final VoicemailTranscriptionServiceGrpc.VoicemailTranscriptionServiceBlockingStub stub;
-
-  TranscriptionClient(
-      VoicemailTranscriptionServiceGrpc.VoicemailTranscriptionServiceBlockingStub stub) {
-    this.stub = stub;
-  }
-
-  @WorkerThread
-  public TranscriptionResponseSync sendSyncRequest(TranscribeVoicemailRequest request) {
-    try {
-      return new TranscriptionResponseSync(stub.transcribeVoicemail(request));
-    } catch (StatusRuntimeException e) {
-      return new TranscriptionResponseSync(e.getStatus());
-    }
-  }
-
-  @WorkerThread
-  public TranscriptionResponseAsync sendUploadRequest(TranscribeVoicemailAsyncRequest request) {
-    try {
-      return new TranscriptionResponseAsync(stub.transcribeVoicemailAsync(request));
-    } catch (StatusRuntimeException e) {
-      return new TranscriptionResponseAsync(e.getStatus());
-    }
-  }
-
-  @WorkerThread
-  public GetTranscriptResponseAsync sendGetTranscriptRequest(GetTranscriptRequest request) {
-    try {
-      return new GetTranscriptResponseAsync(stub.getTranscript(request));
-    } catch (StatusRuntimeException e) {
-      return new GetTranscriptResponseAsync(e.getStatus());
-    }
-  }
-
-  @WorkerThread
-  public TranscriptionFeedbackResponseAsync sendTranscriptFeedbackRequest(
-      SendTranscriptionFeedbackRequest request) {
-    try {
-      return new TranscriptionFeedbackResponseAsync(stub.sendTranscriptionFeedback(request));
-    } catch (StatusRuntimeException e) {
-      return new TranscriptionFeedbackResponseAsync(e.getStatus());
-    }
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionClientFactory.java b/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionClientFactory.java
deleted file mode 100644
index c57b01f..0000000
--- a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionClientFactory.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe.grpc;
-
-import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.text.TextUtils;
-import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
-import com.android.voicemail.impl.transcribe.TranscriptionConfigProvider;
-import com.google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionServiceGrpc;
-import io.grpc.CallOptions;
-import io.grpc.Channel;
-import io.grpc.ClientCall;
-import io.grpc.ClientInterceptor;
-import io.grpc.ClientInterceptors;
-import io.grpc.ForwardingClientCall;
-import io.grpc.ManagedChannel;
-import io.grpc.ManagedChannelBuilder;
-import io.grpc.Metadata;
-import io.grpc.MethodDescriptor;
-import io.grpc.okhttp.OkHttpChannelBuilder;
-import java.security.MessageDigest;
-
-/**
- * Factory for creating grpc clients that talk to the transcription server. This allows all clients
- * to share the same channel, which is relatively expensive to create.
- */
-public class TranscriptionClientFactory {
-  private static final String DIGEST_ALGORITHM_SHA1 = "SHA1";
-  private static final char[] HEX_UPPERCASE = {
-    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
-  };
-
-  private final TranscriptionConfigProvider configProvider;
-  private final ManagedChannel originalChannel;
-  private final String packageName;
-  private final String cert;
-
-  public TranscriptionClientFactory(Context context, TranscriptionConfigProvider configProvider) {
-    this(context, configProvider, getManagedChannel(configProvider));
-  }
-
-  public TranscriptionClientFactory(
-      Context context, TranscriptionConfigProvider configProvider, ManagedChannel managedChannel) {
-    this.configProvider = configProvider;
-    this.packageName = context.getPackageName();
-    this.cert = getCertificateFingerprint(context);
-    originalChannel = managedChannel;
-  }
-
-  public TranscriptionClient getClient() {
-    LogUtil.enterBlock("TranscriptionClientFactory.getClient");
-    Assert.checkState(!originalChannel.isShutdown());
-    Channel channel =
-        ClientInterceptors.intercept(
-            originalChannel,
-            new Interceptor(
-                packageName, cert, configProvider.getApiKey(), configProvider.getAuthToken()));
-    return new TranscriptionClient(VoicemailTranscriptionServiceGrpc.newBlockingStub(channel));
-  }
-
-  public void shutdown() {
-    LogUtil.enterBlock("TranscriptionClientFactory.shutdown");
-    if (!originalChannel.isShutdown()) {
-      originalChannel.shutdown();
-    }
-  }
-
-  private static ManagedChannel getManagedChannel(TranscriptionConfigProvider configProvider) {
-    ManagedChannelBuilder<OkHttpChannelBuilder> builder =
-        OkHttpChannelBuilder.forTarget(configProvider.getServerAddress());
-    // Only use plaintext for debugging
-    if (configProvider.shouldUsePlaintext()) {
-      // Just passing 'false' doesnt have the same effect as not setting this field
-      builder.usePlaintext(true);
-    }
-    return builder.build();
-  }
-
-  private static String getCertificateFingerprint(Context context) {
-    try {
-      PackageInfo packageInfo =
-          context
-              .getPackageManager()
-              .getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
-      if (packageInfo != null
-          && packageInfo.signatures != null
-          && packageInfo.signatures.length > 0) {
-        MessageDigest messageDigest = MessageDigest.getInstance(DIGEST_ALGORITHM_SHA1);
-        if (messageDigest == null) {
-          LogUtil.w(
-              "TranscriptionClientFactory.getCertificateFingerprint", "error getting digest.");
-          return null;
-        }
-        byte[] bytes = messageDigest.digest(packageInfo.signatures[0].toByteArray());
-        if (bytes == null) {
-          LogUtil.w(
-              "TranscriptionClientFactory.getCertificateFingerprint", "empty message digest.");
-          return null;
-        }
-
-        int length = bytes.length;
-        StringBuilder out = new StringBuilder(length * 2);
-        for (int i = 0; i < length; i++) {
-          out.append(HEX_UPPERCASE[(bytes[i] & 0xf0) >>> 4]);
-          out.append(HEX_UPPERCASE[bytes[i] & 0x0f]);
-        }
-        return out.toString();
-      } else {
-        LogUtil.w(
-            "TranscriptionClientFactory.getCertificateFingerprint",
-            "failed to get package signature.");
-      }
-    } catch (Exception e) {
-      LogUtil.e(
-          "TranscriptionClientFactory.getCertificateFingerprint",
-          "error getting certificate fingerprint.",
-          e);
-    }
-
-    return null;
-  }
-
-  private static final class Interceptor implements ClientInterceptor {
-    private final String packageName;
-    private final String cert;
-    private final String apiKey;
-    private final String authToken;
-
-    private static final Metadata.Key<String> API_KEY_HEADER =
-        Metadata.Key.of("X-Goog-Api-Key", Metadata.ASCII_STRING_MARSHALLER);
-    private static final Metadata.Key<String> ANDROID_PACKAGE_HEADER =
-        Metadata.Key.of("X-Android-Package", Metadata.ASCII_STRING_MARSHALLER);
-    private static final Metadata.Key<String> ANDROID_CERT_HEADER =
-        Metadata.Key.of("X-Android-Cert", Metadata.ASCII_STRING_MARSHALLER);
-    private static final Metadata.Key<String> AUTHORIZATION_HEADER =
-        Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER);
-
-    public Interceptor(String packageName, String cert, String apiKey, String authToken) {
-      this.packageName = packageName;
-      this.cert = cert;
-      this.apiKey = apiKey;
-      this.authToken = authToken;
-    }
-
-    @Override
-    public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
-        MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {
-      LogUtil.enterBlock(
-          "TranscriptionClientFactory.interceptCall, intercepted " + method.getFullMethodName());
-      ClientCall<ReqT, RespT> call = next.newCall(method, callOptions);
-
-      call =
-          new ForwardingClientCall.SimpleForwardingClientCall<ReqT, RespT>(call) {
-            @Override
-            public void start(Listener<RespT> responseListener, Metadata headers) {
-              if (!TextUtils.isEmpty(packageName)) {
-                LogUtil.i(
-                    "TranscriptionClientFactory.interceptCall",
-                    "attaching package name: " + packageName);
-                headers.put(ANDROID_PACKAGE_HEADER, packageName);
-              }
-              if (!TextUtils.isEmpty(cert)) {
-                LogUtil.i("TranscriptionClientFactory.interceptCall", "attaching android cert");
-                headers.put(ANDROID_CERT_HEADER, cert);
-              }
-              if (!TextUtils.isEmpty(apiKey)) {
-                LogUtil.i("TranscriptionClientFactory.interceptCall", "attaching API Key");
-                headers.put(API_KEY_HEADER, apiKey);
-              }
-              if (!TextUtils.isEmpty(authToken)) {
-                LogUtil.i("TranscriptionClientFactory.interceptCall", "attaching auth token");
-                headers.put(AUTHORIZATION_HEADER, "Bearer " + authToken);
-              }
-              super.start(responseListener, headers);
-            }
-          };
-      return call;
-    }
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionFeedbackResponseAsync.java b/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionFeedbackResponseAsync.java
deleted file mode 100644
index bc6155b..0000000
--- a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionFeedbackResponseAsync.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe.grpc;
-
-import android.support.annotation.VisibleForTesting;
-import com.android.dialer.common.Assert;
-import com.google.internal.communications.voicemailtranscription.v1.SendTranscriptionFeedbackResponse;
-import io.grpc.Status;
-
-/** Container for response and status objects for an asynchronous transcription feedback request */
-public class TranscriptionFeedbackResponseAsync extends TranscriptionResponse {
-
-  @VisibleForTesting
-  public TranscriptionFeedbackResponseAsync(SendTranscriptionFeedbackResponse response) {
-    Assert.checkArgument(response != null);
-  }
-
-  @VisibleForTesting
-  public TranscriptionFeedbackResponseAsync(Status status) {
-    super(status);
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionResponse.java b/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionResponse.java
deleted file mode 100644
index bd65abe..0000000
--- a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionResponse.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe.grpc;
-
-import android.support.annotation.Nullable;
-import com.android.dialer.common.Assert;
-import io.grpc.Status;
-import io.grpc.Status.Code;
-
-/**
- * Base class for encapulating a voicemail transcription server response. This handles the Grpc
- * status response, subclasses will handle request specific responses.
- */
-public abstract class TranscriptionResponse {
-  @Nullable public final Status status;
-
-  TranscriptionResponse() {
-    this.status = null;
-  }
-
-  TranscriptionResponse(Status status) {
-    Assert.checkArgument(status != null);
-    this.status = status;
-  }
-
-  public boolean hasRecoverableError() {
-    if (status != null) {
-      return status.getCode() == Status.Code.UNAVAILABLE;
-    }
-
-    return false;
-  }
-
-  public boolean isStatusAlreadyExists() {
-    if (status != null) {
-      return status.getCode() == Code.ALREADY_EXISTS;
-    }
-
-    return false;
-  }
-
-  public boolean hasFatalError() {
-    if (status != null) {
-      return status.getCode() != Status.Code.OK && status.getCode() != Status.Code.UNAVAILABLE;
-    }
-
-    return false;
-  }
-
-  @Override
-  public String toString() {
-    return "status: " + status;
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionResponseAsync.java b/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionResponseAsync.java
deleted file mode 100644
index bd56794..0000000
--- a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionResponseAsync.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe.grpc;
-
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import com.android.dialer.common.Assert;
-import com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailAsyncResponse;
-import io.grpc.Status;
-
-/** Container for response and status objects for an asynchronous transcription upload request */
-public class TranscriptionResponseAsync extends TranscriptionResponse {
-  @Nullable private final TranscribeVoicemailAsyncResponse response;
-
-  @VisibleForTesting
-  public TranscriptionResponseAsync(TranscribeVoicemailAsyncResponse response) {
-    Assert.checkArgument(response != null);
-    this.response = response;
-  }
-
-  @VisibleForTesting
-  public TranscriptionResponseAsync(Status status) {
-    super(status);
-    this.response = null;
-  }
-
-  public @Nullable String getTranscriptionId() {
-    if (response != null) {
-      return response.getTranscriptionId();
-    }
-    return null;
-  }
-
-  public long getEstimatedWaitMillis() {
-    if (response != null) {
-      return response.getEstimatedWaitSecs() * 1_000L;
-    }
-    return 0;
-  }
-
-  @Override
-  public String toString() {
-    return super.toString() + ", response: " + response;
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionResponseSync.java b/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionResponseSync.java
deleted file mode 100644
index 382bd1a..0000000
--- a/java/com/android/voicemail/impl/transcribe/grpc/TranscriptionResponseSync.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.voicemail.impl.transcribe.grpc;
-
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import com.android.dialer.common.Assert;
-import com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse;
-import io.grpc.Status;
-
-/** Container for response and status objects for a synchronous transcription request */
-public class TranscriptionResponseSync extends TranscriptionResponse {
-  @Nullable private final TranscribeVoicemailResponse response;
-
-  @VisibleForTesting
-  public TranscriptionResponseSync(Status status) {
-    super(status);
-    this.response = null;
-  }
-
-  @VisibleForTesting
-  public TranscriptionResponseSync(TranscribeVoicemailResponse response) {
-    Assert.checkArgument(response != null);
-    this.response = response;
-  }
-
-  public @Nullable String getTranscript() {
-    return (response != null) ? response.getTranscript() : null;
-  }
-
-  @Override
-  public String toString() {
-    return super.toString() + ", response: " + response;
-  }
-}
diff --git a/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto b/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto
deleted file mode 100644
index 117efae..0000000
--- a/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto
+++ /dev/null
@@ -1,191 +0,0 @@
-
-
-syntax = "proto2";
-
-package google.internal.communications.voicemailtranscription.v1;
-
-option java_multiple_files = true;
-
-option java_package = "com.google.internal.communications.voicemailtranscription.v1";
-
-// Enum that specifies supported audio formats.
-enum AudioFormat {
-  // Default but invalid value.
-  AUDIO_FORMAT_UNSPECIFIED = 0;
-
-  // Adaptive Multi-Rate Narrowband, 8kHz sampling frequency.
-  // https://en.wikipedia.org/wiki/Adaptive_Multi-Rate_audio_codec
-  AMR_NB_8KHZ = 1;
-}
-
-// Enum that describes the status of the transcription process.
-enum TranscriptionStatus {
-  // Default but invalid value.
-  TRANSCRIPTION_STATUS_UNSPECIFIED = 0;
-
-  // Transcription was successful and the transcript is present.
-  SUCCESS = 1;
-
-  // Transcription is progress. Check again later.
-  PENDING = 2;
-
-  // Transcription was successful, but the expiration period has passed, which
-  // means that the sensative data (including the transcript) has been deleted.
-  // Resend the voicemail through TranscribeVoicemailAsync to retry.
-  EXPIRED = 3;
-
-  // Internal error encountered during the transcription.
-  // Resend the voicemail through TranscribeVoicemailAsync to retry.
-  // This is a catch-all status for all retriable errors that aren't captured by
-  // a more specfic status.
-  FAILED_RETRY = 4;
-
-  // Internal error encountered during the transcription.
-  // Do not resend the voicemail.
-  // This is a catch-all status for all non-retriable errors that aren't
-  // captured by a more specfic status.
-  FAILED_NO_RETRY = 5;
-
-  // The language detected is not yet supported by this service.
-  // Do not resend the voicemail.
-  FAILED_LANGUAGE_NOT_SUPPORTED = 6;
-
-  // No speech was detected in the voicemail.
-  // Do not resend the voicemail.
-  FAILED_NO_SPEECH_DETECTED = 7;
-}
-
-// Enum that specifies the user's consent to donate a specific voicemail.
-enum DonationPreference {
-  // Default but invalid value.
-  USER_PREFERENCE_UNSPECIFIED = 0;
-
-  // User does not consent to donating this voicemail.
-  DO_NOT_DONATE = 1;
-
-  // User consents to donating this voicemail.
-  DONATE = 2;
-}
-
-// Enum that specifies the user's rating for a voicemail transcription.
-enum TranscriptionRatingValue {
-  // Default but invalid value.
-  TRANSCRIPTION_RATING_VALUE_UNSPECIFIED = 0;
-
-  // User indicated that the transcription was good.
-  GOOD_TRANSCRIPTION = 1;
-
-  // User indicated that the transcription was bad.
-  BAD_TRANSCRIPTION = 2;
-}
-
-// Request for synchronous voicemail transcription.
-message TranscribeVoicemailRequest {
-  // Voicemail audio file containing the raw bytes we receive from the carrier.
-  optional bytes voicemail_data = 1;
-
-  // Audio format of the voicemail file.
-  optional AudioFormat audio_format = 2;
-}
-
-// Response for synchronous voicemail transcription.
-message TranscribeVoicemailResponse {
-  // The transcribed text of the voicemail.
-  optional string transcript = 1;
-}
-
-// Request for asynchronous voicemail transcription.
-message TranscribeVoicemailAsyncRequest {
-  // Voicemail audio data encoded in the format specified by audio_format.
-  optional bytes voicemail_data = 1;
-
-  // Audio format of the voicemail file.
-  optional AudioFormat audio_format = 2;
-
-  // The client may provide their own unique ID for this transcription. It
-  // should be globally unique across all voicemails from all users.
-  // If the given transcription_id is not unique, an ALREADY_EXISTS (409) error
-  // will be returned.
-  // If no transcription_id is provided, one will be generated by the server.
-  optional string transcription_id = 3;
-
-  // User's donation preference.
-  optional DonationPreference donation_preference = 4;
-}
-
-// Response for asynchronous voicemail transcription containing information
-// needed to fetch the transcription results through the GetTranscript method.
-message TranscribeVoicemailAsyncResponse {
-  // Unique ID for the transcription. This ID is used for retrieving the
-  // voicemail transcript later.
-  optional string transcription_id = 1;
-
-  // The estimated amount of time in seconds before the transcription will be
-  // available.
-  // The client should not call GetTranscript until this time has elapsed, but
-  // the transcript is not guaranteed to be ready by this time.
-  optional int64 estimated_wait_secs = 2;
-}
-
-// Request for retrieving an asynchronously generated transcript.
-message GetTranscriptRequest {
-  // Unique ID for the transcription. This ID was returned by
-  // TranscribeVoicemailAsync.
-  optional string transcription_id = 1;
-}
-
-// Response for retrieving an asynchronously generated transcript.
-message GetTranscriptResponse {
-  // Status of the trascription process.
-  optional TranscriptionStatus status = 1;
-
-  // The transcribed text of the voicemail. This is only present if the status
-  // is SUCCESS.
-  optional string transcript = 2;
-}
-
-// The rating for a single voicemail transcription.
-message TranscriptionRating {
-  // The id of the voicemail transcription.
-  optional string transcription_id = 1;
-
-  // The user's rating of the voicemail transcription.
-  optional TranscriptionRatingValue rating_value = 2;
-}
-
-// Request for uploading transcription ratings.
-message SendTranscriptionFeedbackRequest {
-  // User feedback indicating the transcription quality for one or more
-  // voicemails
-  repeated TranscriptionRating rating = 1;
-}
-
-// Response for uploading transcription ratings
-message SendTranscriptionFeedbackResponse {
-}
-
-// RPC service for transcribing voicemails.
-service VoicemailTranscriptionService {
-  // Returns a transcript of the given voicemail.
-  rpc TranscribeVoicemail(TranscribeVoicemailRequest)
-      returns (TranscribeVoicemailResponse) {}
-
-  // Schedules a transcription of the given voicemail. The transcript can be
-  // retrieved using the returned ID.
-  rpc TranscribeVoicemailAsync(TranscribeVoicemailAsyncRequest)
-      returns (TranscribeVoicemailAsyncResponse) {
-  }
-
-  // Returns the transcript corresponding to the given ID, which was returned
-  // by TranscribeVoicemailAsync.
-  rpc GetTranscript(GetTranscriptRequest) returns (GetTranscriptResponse) {
-  }
-
-  // Uploads user's transcription feedback. Feedback will only be collected from
-  // user's who have consented to donate their voicemails.
-  rpc SendTranscriptionFeedback(SendTranscriptionFeedbackRequest)
-      returns (SendTranscriptionFeedbackResponse) {
-  }
-}
-
-
diff --git a/java/com/android/voicemail/impl/utils/IndentingPrintWriter.java b/java/com/android/voicemail/impl/utils/IndentingPrintWriter.java
index b72aece..cad7bd0 100644
--- a/java/com/android/voicemail/impl/utils/IndentingPrintWriter.java
+++ b/java/com/android/voicemail/impl/utils/IndentingPrintWriter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -33,7 +34,7 @@
   private final int wrapLength;
 
   /** Mutable version of current indent */
-  private StringBuilder indentBuilder = new StringBuilder();
+  private final StringBuilder indentBuilder = new StringBuilder();
   /** Cache of current {@link #indentBuilder} value */
   private char[] currentIndent;
   /** Length of current line being built, excluding any indent */
@@ -45,7 +46,7 @@
    */
   private boolean emptyLine = true;
 
-  private char[] singleChar = new char[1];
+  private final char[] singleChar = new char[1];
 
   public IndentingPrintWriter(Writer writer, String singleIndent) {
     this(writer, singleIndent, -1);
@@ -68,7 +69,7 @@
   }
 
   public void printPair(String key, Object value) {
-    print(key + "=" + String.valueOf(value) + " ");
+    print(key + "=" + value + " ");
   }
 
   public void printPair(String key, Object[] value) {
diff --git a/java/com/android/voicemail/impl/utils/LoggerUtils.java b/java/com/android/voicemail/impl/utils/LoggerUtils.java
deleted file mode 100644
index 070772f..0000000
--- a/java/com/android/voicemail/impl/utils/LoggerUtils.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.voicemail.impl.utils;
-
-import android.content.Context;
-import android.support.annotation.AnyThread;
-import com.android.dialer.common.concurrent.ThreadUtil;
-import com.android.dialer.logging.DialerImpression;
-import com.android.dialer.logging.Logger;
-
-/** Common utility method when using {@link Logger} */
-public class LoggerUtils {
-
-  /** Posts the impression logging to the main thread so it will be thread safe. */
-  @AnyThread
-  public static void logImpressionOnMainThread(Context context, DialerImpression.Type impression) {
-    ThreadUtil.postOnUiThread(() -> Logger.get(context).logImpression(impression));
-  }
-}
diff --git a/java/com/android/voicemail/impl/utils/VoicemailDatabaseUtil.java b/java/com/android/voicemail/impl/utils/VoicemailDatabaseUtil.java
index 711d6a8..2cce2b9 100644
--- a/java/com/android/voicemail/impl/utils/VoicemailDatabaseUtil.java
+++ b/java/com/android/voicemail/impl/utils/VoicemailDatabaseUtil.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,7 +23,9 @@
 import android.net.Uri;
 import android.provider.VoicemailContract.Voicemails;
 import android.telecom.PhoneAccountHandle;
+
 import com.android.voicemail.impl.Voicemail;
+
 import java.util.List;
 
 public class VoicemailDatabaseUtil {
diff --git a/java/com/android/voicemail/impl/utils/VvmDumpHandler.java b/java/com/android/voicemail/impl/utils/VvmDumpHandler.java
deleted file mode 100644
index 5290f2c..0000000
--- a/java/com/android/voicemail/impl/utils/VvmDumpHandler.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.voicemail.impl.utils;
-
-import android.content.Context;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
-import com.android.voicemail.impl.VvmLog;
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-
-public class VvmDumpHandler {
-
-  public static void dump(Context context, FileDescriptor fd, PrintWriter writer, String[] args) {
-    IndentingPrintWriter indentedWriter = new IndentingPrintWriter(writer, "  ");
-    indentedWriter.println("******* OmtpVvm *******");
-    indentedWriter.println("======= Configs =======");
-    indentedWriter.increaseIndent();
-    for (PhoneAccountHandle handle :
-        context.getSystemService(TelecomManager.class).getCallCapablePhoneAccounts()) {
-      OmtpVvmCarrierConfigHelper config = new OmtpVvmCarrierConfigHelper(context, handle);
-      indentedWriter.println(config.toString());
-    }
-    indentedWriter.decreaseIndent();
-    indentedWriter.println("======== Logs =========");
-    VvmLog.dump(fd, indentedWriter, args);
-  }
-}
diff --git a/java/com/android/voicemail/impl/utils/XmlUtils.java b/java/com/android/voicemail/impl/utils/XmlUtils.java
index f5703f3..d10c444 100644
--- a/java/com/android/voicemail/impl/utils/XmlUtils.java
+++ b/java/com/android/voicemail/impl/utils/XmlUtils.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,15 +18,17 @@
 package com.android.voicemail.impl.utils;
 
 import android.util.ArrayMap;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
+
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
 public class XmlUtils {
 
-  public static final ArrayMap<String, ?> readThisArrayMapXml(
+  public static ArrayMap<String, ?> readThisArrayMapXml(
       XmlPullParser parser, String endTag, String[] name, ReadMapCallback callback)
       throws XmlPullParserException, java.io.IOException {
     ArrayMap<String, Object> map = new ArrayMap<>();
@@ -57,7 +60,7 @@
    * @param name An array of one string, used to return the name attribute of the list's tag.
    * @return HashMap The newly generated list.
    */
-  public static final ArrayList readThisListXml(
+  public static ArrayList readThisListXml(
       XmlPullParser parser,
       String endTag,
       String[] name,
@@ -197,8 +200,8 @@
     throw new XmlPullParserException("Unexpected end of document in <" + tagName + ">");
   }
 
-  private static final Object readThisPrimitiveValueXml(XmlPullParser parser, String tagName)
-      throws XmlPullParserException, java.io.IOException {
+  private static Object readThisPrimitiveValueXml(XmlPullParser parser, String tagName)
+      throws XmlPullParserException {
     try {
       if (tagName.equals("int")) {
         return Integer.parseInt(parser.getAttributeValue(null, "value"));
diff --git a/java/com/android/voicemail/stub/StubVoicemailClient.java b/java/com/android/voicemail/stub/StubVoicemailClient.java
index 0a1d553..d1bb277 100644
--- a/java/com/android/voicemail/stub/StubVoicemailClient.java
+++ b/java/com/android/voicemail/stub/StubVoicemailClient.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,13 +19,17 @@
 
 import android.content.Context;
 import android.os.PersistableBundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.telecom.PhoneAccountHandle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.dialer.common.Assert;
 import com.android.voicemail.PinChanger;
 import com.android.voicemail.VoicemailClient;
+
 import java.util.List;
+
 import javax.inject.Inject;
 
 /**
@@ -71,35 +76,6 @@
       Context context, PhoneAccountHandle phoneAccountHandle, boolean value) {}
 
   @Override
-  public boolean isVoicemailTranscriptionAvailable(
-      Context context, PhoneAccountHandle phoneAccountHandle) {
-    return false;
-  }
-
-  @Override
-  public boolean isVoicemailTranscriptionEnabled(Context context, PhoneAccountHandle account) {
-    return false;
-  }
-
-  @Override
-  public boolean isVoicemailDonationAvailable(Context context, PhoneAccountHandle account) {
-    return false;
-  }
-
-  @Override
-  public boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account) {
-    return false;
-  }
-
-  @Override
-  public void setVoicemailTranscriptionEnabled(
-      Context context, PhoneAccountHandle phoneAccountHandle, boolean enabled) {}
-
-  @Override
-  public void setVoicemailDonationEnabled(
-      Context context, PhoneAccountHandle phoneAccountHandle, boolean enabled) {}
-
-  @Override
   public boolean isActivated(Context context, PhoneAccountHandle phoneAccountHandle) {
     return false;
   }
@@ -109,7 +85,7 @@
 
   @Override
   public PersistableBundle getConfig(
-      @NonNull Context context, @Nullable PhoneAccountHandle phoneAccountHandle) {
+          @NonNull Context context, @Nullable PhoneAccountHandle phoneAccountHandle) {
     return new PersistableBundle();
   }
 
diff --git a/java/com/android/voicemail/stub/StubVoicemailModule.java b/java/com/android/voicemail/stub/StubVoicemailModule.java
index efcb4cf..6f60d7a 100644
--- a/java/com/android/voicemail/stub/StubVoicemailModule.java
+++ b/java/com/android/voicemail/stub/StubVoicemailModule.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2023 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,17 +17,16 @@
 
 package com.android.voicemail.stub;
 
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.InstallIn;
 import com.android.voicemail.VoicemailClient;
+
+import javax.inject.Singleton;
+
 import dagger.Binds;
 import dagger.Module;
-import javax.inject.Singleton;
 
 /**
  * A no-op version of the voicemail module for build targets that don't support the new OTMP client.
  */
-@InstallIn(variants = {DialerVariant.DIALER_TEST})
 @Module
 public abstract class StubVoicemailModule {
 
diff --git a/packages.mk b/packages.mk
deleted file mode 100644
index 936fc3d..0000000
--- a/packages.mk
+++ /dev/null
@@ -1,111 +0,0 @@
-# Update this when adding a new AndroidManifest.xml.
-LOCAL_AAPT_FLAGS := \
-	com.android.assets.product \
-	com.android.assets.quantum \
-	com.android.bubble \
-	com.android.contacts.common \
-	com.android.dialer.about \
-	com.android.dialer.app \
-	com.android.dialer.app.manifests.activities \
-	com.android.dialer.assisteddialing \
-	com.android.dialer.assisteddialing.ui \
-	com.android.dialer.backup \
-	com.android.dialer.binary.aosp.testing \
-	com.android.dialer.binary.google \
-	com.android.dialer.blocking \
-	com.android.dialer.blockreportspam \
-	com.android.dialer.callcomposer \
-	com.android.dialer.callcomposer.camera \
-	com.android.dialer.callcomposer.camera.camerafocus \
-	com.android.dialer.callcomposer.cameraui \
-	com.android.dialer.calldetails \
-	com.android.dialer.calllog.config \
-	com.android.dialer.calllog.database \
-	com.android.dialer.calllog.ui \
-	com.android.dialer.calllog.ui.menu \
-	com.android.dialer.calllogutils \
-	com.android.dialer.clipboard \
-	com.android.dialer.commandline \
-	com.android.dialer.common \
-	com.android.dialer.common.concurrent.testing \
-	com.android.dialer.common.preference \
-	com.android.dialer.configprovider \
-	com.android.dialer.contacts.displaypreference \
-	com.android.dialer.contacts.resources \
-	com.android.dialer.contactphoto \
-	com.android.dialer.contactsfragment \
-	com.android.dialer.databasepopulator \
-	com.android.dialer.dialpadview \
-	com.android.dialer.dialpadview.theme \
-	com.android.dialer.enrichedcall.simulator \
-	com.android.dialer.feedback \
-	com.android.dialer.glidephotomanager.impl \
-  com.android.dialer.historyitemactions \
-	com.android.dialer.interactions \
-	com.android.dialer.lettertile \
-	com.android.dialer.location \
-	com.android.dialer.main.impl \
-	com.android.dialer.main.impl.toolbar \
-	com.android.dialer.main.impl.bottomnav \
-	com.android.dialer.notification \
-	com.android.dialer.oem \
-	com.android.dialer.phonelookup.database \
-	com.android.dialer.phonenumberutil \
-	com.android.dialer.postcall \
-	com.android.dialer.precall.impl \
-	com.android.dialer.precall.externalreceiver \
-	com.android.dialer.preferredsim.impl \
-	com.android.dialer.preferredsim.suggestion \
-	com.android.dialer.promotion.impl \
-	com.android.dialer.rtt \
-	com.android.dialer.searchfragment.common \
-	com.android.dialer.searchfragment.cp2 \
-	com.android.dialer.searchfragment.directories \
-	com.android.dialer.searchfragment.list \
-	com.android.dialer.searchfragment.nearbyplaces \
-	com.android.dialer.searchfragment.remote \
-	com.android.dialer.shortcuts \
-	com.android.dialer.simulator.impl \
-	com.android.dialer.simulator.service \
-	com.android.dialer.spam.promo \
-	com.android.dialer.speeddial \
-	com.android.dialer.spannable \
-	com.android.dialer.theme \
-	com.android.dialer.theme.base \
-	com.android.dialer.theme.base.impl \
-	com.android.dialer.theme.common \
-	com.android.dialer.theme.hidden \
-	com.android.dialer.util \
-	com.android.dialer.voicemail.listui \
-	com.android.dialer.voicemail.listui.error \
-	com.android.dialer.voicemail.listui.menu \
-	com.android.dialer.voicemail.settings \
-	com.android.dialer.voicemailstatus \
-	com.android.dialer.widget \
-	com.android.incallui \
-	com.android.incallui.answer.impl.affordance \
-	com.android.incallui.answer.impl \
-	com.android.incallui.answer.impl.answermethod \
-	com.android.incallui.answer.impl.hint \
-	com.android.incallui.audioroute \
-	com.android.incallui.autoresizetext \
-	com.android.incallui.calllocation.impl \
-	com.android.incallui.callpending \
-	com.android.incallui.commontheme \
-	com.android.incallui.contactgrid \
-	com.android.incallui.disconnectdialog \
-	com.android.incallui.hold \
-	com.android.incallui.incall.impl \
-	com.android.incallui.rtt.impl \
-	com.android.incallui.rtt.protocol \
-  com.android.incallui.speakeasy \
-	com.android.incallui.sessiondata \
-	com.android.incallui.spam \
-	com.android.incallui.speakerbuttonlogic \
-	com.android.incallui.telecomeventui \
-	com.android.incallui.video.impl \
-	com.android.incallui.video.protocol \
-	com.android.phoneapphelper \
-	com.android.voicemail \
-	com.android.voicemail.impl \
-	com.android.voicemail.impl.configui \
diff --git a/prebuilts/Android.bp b/prebuilts/Android.bp
new file mode 100644
index 0000000..1e6f6b6
--- /dev/null
+++ b/prebuilts/Android.bp
@@ -0,0 +1,34 @@
+//
+// SPDX-FileCopyrightText: 2023 The LineageOS Project
+// SPDX-License-Identifier: Apache-2.0
+//
+
+java_import {
+    name: "dialer-apache-mime4j-core",
+    apex_available: [
+        "//apex_available:platform",
+        "//apex_available:anyapex",
+    ],
+    jars: ["apache-mime4j-core-0.8.9.jar"],
+    sdk_version: "current",
+}
+
+java_import {
+    name: "dialer-apache-mime4j-dom",
+    apex_available: [
+        "//apex_available:platform",
+        "//apex_available:anyapex",
+    ],
+    jars: ["apache-mime4j-dom-0.8.9.jar"],
+    sdk_version: "current",
+}
+
+java_import {
+    name: "dialer-commons-io",
+    apex_available: [
+        "//apex_available:platform",
+        "//apex_available:anyapex",
+    ],
+    jars: ["commons-io-2.13.0.jar"],
+    sdk_version: "current",
+}
diff --git a/prebuilts/apache-mime4j-core-0.8.9.jar b/prebuilts/apache-mime4j-core-0.8.9.jar
new file mode 100644
index 0000000..6d09681
--- /dev/null
+++ b/prebuilts/apache-mime4j-core-0.8.9.jar
Binary files differ
diff --git a/prebuilts/apache-mime4j-dom-0.8.9.jar b/prebuilts/apache-mime4j-dom-0.8.9.jar
new file mode 100644
index 0000000..ce90724
--- /dev/null
+++ b/prebuilts/apache-mime4j-dom-0.8.9.jar
Binary files differ
diff --git a/prebuilts/commons-io-2.13.0.jar b/prebuilts/commons-io-2.13.0.jar
new file mode 100644
index 0000000..eb316f4
--- /dev/null
+++ b/prebuilts/commons-io-2.13.0.jar
Binary files differ
diff --git a/privapp_whitelist_com.android.dialer-ext.xml b/privapp_whitelist_com.android.dialer-ext.xml
new file mode 100644
index 0000000..c13d9c7
--- /dev/null
+++ b/privapp_whitelist_com.android.dialer-ext.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2019-2024 The LineageOS Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<permissions>
+    <!-- Additional permissions on top of privapp_whitelist_com.android.dialer.xml -->
+    <privapp-permissions package="com.android.dialer">
+        <permission name="android.permission.CAPTURE_AUDIO_OUTPUT"/>
+        <permission name="android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS"/>
+        <permission name="android.permission.RECEIVE_SMS"/>
+    </privapp-permissions>
+</permissions>
diff --git a/proguard.flags b/proguard.flags
index 160020b..cb80337 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -1,4 +1,8 @@
 # These are referenced by com.google.common.util.concurrent and
 # com.google.errorprone.annotations but don't exist on Android.
 -dontwarn java.lang.ClassValue
--dontwarn javax.lang.model.element.Modifier
\ No newline at end of file
+-dontwarn javax.lang.model.element.Modifier
+
+-keep public class * extends android.app.Fragment {
+  public <init>();
+}
